4. Конфигурирование системной памяти |
Предыдущая Содержание Следующая |
Ожидается, что загрузчик найдёт и проинициализирует всю память, которую ядро будет использовать для хранения в системе изменяющихся данных. Он выполняет это машинно-зависимым способом. Он может использовать внутренние алгоритмы для автоматического обнаружения и измерения всей оперативной памяти, или может использовать знания о памяти машины, или любой другой метод по усмотрению разработчика загрузчика.
Во всех случаях следует отметить, что все установки выполняются загрузчиком. Ядро не имеет никаких знаний по установке или конфигурации памяти в системе, помимо предусмотренной в загрузчике. Использование machine_fixup() внутри ядра определённо не самое правильное место для этого. Существует чёткое различие в этой области между ответственностью загрузчика и ядром.
Физическое распределение памяти передаётся в ядро с помощью параметра ATAG_MEM. Память не обязательно должны быть полностью непрерывной, хотя и предпочтительно минимальное количество фрагментов. Разрешается иметь несколько блоков ATAG_MEM для нескольких областей памяти. Ядро будет объединять блоки, пришедшие к нему, если они являются смежными физическими областями. Загрузчик может манипулировать памятью с помощью командной строки ядра, используя параметр 'mem=', опции для этого параметра полностью документированы в linux/Documentation/kernel-parameters.txt.
Командная строчка ядра 'mem=' имеет синтаксис mem=<size>[KM][,@<phys_offset>], который позволяет задать размер и расположение физической памяти для определённой области памяти. Это позволяет указать несколько раздельных блоков памяти с разными смещениями, указывая параметр mem= несколько раз. |
Предыдущая Содержание Следующая |