Итак, сначала давайте уточним некоторые вещи:
- В случае архитектуры x86, не операционная система определяет политику подкачки, это ЦП (точнее, MMU),То, как операционная система рассматривает систему подкачки, не зависит от того, как она реализована.Как правильно заметил комментатор, в моделях подкачки есть специальный компонент ОС.Это зависит от способа работы оборудования.
- 32-битные и 64-битные процессоры x86 имеют разные схемы разбиения на страницы, поэтому вы не можете говорить о модели разбиения на x86 без указания размера слова процессора.
Ниже приведена сжатая версия 32-битной модели подкачки x86, использующая простейшую версию.Существует множество дополнительных настроек, и я знаю, что их используют различные ОС.Я не буду вдаваться в подробности, потому что я не очень хорошо знаком с внутренностями большинства ОС и потому что вам действительно не стоит углубляться в это, пока вы не разберетесь в более простых вещах.Если вы хотите узнать все удивительные особенности модели подкачки x86, вы можете обратиться к документации Intel: Руководство по системному программированию Intel
В простейшей модели подкачки пространство памятиразделен на блоки по 4 КБ, называемые страницами.Непрерывный кусок из 1024 из них сопоставлен с таблицей страниц (которая также имеет размер 4 КБ).Для дальнейшего уровня косвенности все 1024-страничные таблицы отображаются в каталог страниц размером 4 КБ, а база этого каталога находится в специальном регистре %cr3
в процессоре.Эта двухуровневая структура имеет место, потому что большинство областей памяти в ОС разрежено , что означает, что большая часть из них не используется.Вы не хотите хранить кучу таблиц страниц для памяти, которая не затрагивается.
Когда вы получаете адрес памяти, самый значительный 10-битный индекс в каталоге страниц, который дает вам базутаблицы страниц.Следующие 10 битов заносятся в таблицу страниц, чтобы дать вам основу физической страницы (также называемой физическим фреймом).Наконец, последние 12 битов указываются в кадре.MMU делает все это за вас, при условии, что вы установили %cr3
на правильное значение.
64-битные системы имеют систему подкачки 4 уровня , поскольку их области памяти намного большескудны.Кроме того, возможны страницы размером не 4 КБ.
Чтобы на самом деле получить ответы на свои вопросы:
- Вся эта информация подкачки (таблицы, каталоги и т. Д.) Находится в памяти ядра.,Обратите внимание, что память ядра - это один большой кусок, и не существует понятия, что память ядра для одного процесса.
- Существует только одна страница директория на процесс.Это связано с тем, что каталог страниц определяет пространство памяти, а каждый процесс имеет ровно одно пространство памяти.
- В последнем абзаце приведен способ выделения адреса.
Редактировать:Очистка и незначительные модификации.