Friday, May 18th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Управление памятью Отображения и подотображения ядра

Отображения и подотображения ядра

При загрузке системы первой задачей, которую должно выполнить ядро, является установка структур данных для описания и управления его адресным пространством. Подобно любому процессу, у ядра есть vmjnap с соответствующим набором структур vmjnapjentry, описывающих использование диапазона адресов. Подотображения (submaps) являются особыми конструкциями, которые используются только ядром для изоляции и ограничения выделения адресного пространства для подсистем ядра. Одним из применений являются подотображения, которым требуются смежные участки адресного пространства ядра. Чтобы избежать перемешивания в диапазоне адресов не связанных друг с другом выделений, этот диапазон охватывается подотображением, и выделять из этого отображения может лишь соответствующая подсистема. Например, несколько макросов манипулирования сетевым буфером (mbuf) используют для генерирования уникальных индексов арифметику адресов, требуя тем самым смежности областей буфера. Частям ядра могут также требоваться адреса с определенным выравниванием или даже с особыми адресами. Обе эти задачи можно выполнить с использованием под отображений. Наконец, подотображения можно использовать для статического ограничения размера адресного пространства и тем самым физической памяти, потребляемой подсистемой.

Адресное пространство ядра описывается структурой vmjnap, показанной в верхнем левом углу рисунка. Части адресного пространства описываются структурами vmmapentry, которые связаны в восходящем порядке адресов от К0 до К8 в структуре vmjnap. Здесь в диапазоне от К0 до К1 находятся код ядра, инициализированные данные, неинициализированные данные и первоначально выделенные структуры данных; они представлены первой vmjnap entry. Следующая vmmapentry связана с диапазоном адресов от К2 до К6. Эта часть адресного пространства ядра управляется посредством подотображения, имеющего в качестве заголовка указанную структуру vmjnap. В настоящее время у этого подотображения используются две части его адресного пространства: диапазон адресов от К2 до К3 и диапазон адресов от К4 до К5. Эти два подотображения представляют арену malloc и арену сетевого буфера соответственно. Заключительная часть адресного пространства ядра управляется в главном отображении ядра, диапазоне адресов от К7 до К8, представляющем область подготовки ввода/вывода ядра.


Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 57 гостей онлайн

Реклама на сайте: