2013-10-25 6 views
1

Я работаю над домашней работой курса в виртуальной файловой системе 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. Может ли кто-нибудь указать мне в правильном направлении?

ответ

0

Я не совсем уверен, поскольку я не вижу практического использования вопроса, это действительно своего рода академическое исследование ... и то, чего вы пытаетесь достичь, достижимо, полностью отключив чередование памяти. Думаю, после того, как вы отключите чередование, вы также увидите правильную «картинку» в sysfs.

Другими словами - не требуется кодирование, просто изменение конфигурации.

+0

Hi Anton! Спасибо за ответ. Не могли бы вы сообщить мне, где именно я могу изменить конфигурацию? Я имею в виду, это связано с изменением настроек в BIOS или аппаратном обеспечении? Я на самом деле делаю это, загружая ядро ​​Linux на Qemu. Не могли бы вы указать мне, как изменить конфигурацию в ядре linux? Также есть ли там, где происходит чередование в моей системе? Если да, не могли бы вы рассказать мне, как я могу видеть это в терминале? –

0

Ознакомьтесь с параметрами чередования памяти в BIOS. Вот post, которые описывают, как это сделать на нескольких платформах.