Я работаю над домашней работой курса в виртуальной файловой системе sysfs в ядре Linux. Являясь частью настройки виртуальной файловой системы sysfs, ядро Linux организует физическую память для блокировки и далее в разделы в этом руководстве sys/devices/system/memory. В этом каталоге куски памяти будут представлены как memory0, meomory1, memory2 и т. Д.Где чередование памяти и разделение памяти на ранжирование в ядре Linux?
После того, как я раскопал ядро Linux, я обнаружил, что память разбивается на 128 МБ блоков, а затем далее на разделы памяти и найдена код, который делает это в файле C здесь: Memory.c. В вышеприведенном файле C метод memory_dev_init() имеет логику для разделения целых блоков памяти и разделения на разделы (или это то, что я понял :)). По моему профессору, память в Linux разбиваются на ряды и ряды содержат перемежаются адреса памяти, как показано ниже:
rank0: [0-512KB] [2048KB-2560KB] [4096KB-4608KB] ...
rank1: [512KB-1024KB] [2560KB-3072KB] [4608KB-5120KB] ...
rank2: [1024KB-1536KB] [3072KB-3584KB] [5120KB-...
rank3: [1536KB-2048KB] [3584KB-4096KB] ...
Как часть моего домашней работы, я хочу, чтобы изменить формат ранг в это так, что я могу получить смежные блоки памяти:
rank0: [0-512KB] [512KB-1024KB] [1024KB-1536KB]...
rank1: [1536KB-2048KB] [2048KB-2560KB] [2560KB-3072KB]...
rank2: [3072KB-3584KB] [3584KB-4096KB] [4096KB-4608KB]...
rank3: [4608KB-5120KB] ...
Так что я просто хочу знать, где именно это чередование памяти происходит и существующее ранжирование происходит в текущем ядре Linux. Может ли кто-нибудь указать мне в правильном направлении?
Hi Anton! Спасибо за ответ. Не могли бы вы сообщить мне, где именно я могу изменить конфигурацию? Я имею в виду, это связано с изменением настроек в BIOS или аппаратном обеспечении? Я на самом деле делаю это, загружая ядро Linux на Qemu. Не могли бы вы указать мне, как изменить конфигурацию в ядре linux? Также есть ли там, где происходит чередование в моей системе? Если да, не могли бы вы рассказать мне, как я могу видеть это в терминале? –