Страничная память: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 38:
Исторически x86 использует 32-битные PTE, 32-битные виртуальные адреса, 4KB-страницы, 1024 записи в таблице, двухуровневые таблицы, старшие 10 бит виртуального адреса — номер записи в директории, следующие 10 — номер записи в таблице, младшие 12 — адрес внутри страницы. Начиная с Pentium Pro, процессор поддерживает страницы размером 4Мб.
 
Процессор x86 в режиме [[PAE]] (Physical Address Extension) и в режиме x86_64 (long mode) использует 64-битные PTE (из них реально задействованы не все биты физического адреса, от 36 в PAE до 48 в некоторых x86_64), 32-битные виртуальные адреса, 4KB -страницы, 512 записей в таблице, трехуровневые таблицы с 4 директориями и 4 записями в супер-директории, старшие 2 бита виртуального адреса — номер записи в супер-директории, следующие 9 — в директории, следующие 9 — в таблице.
<!-- картинки из http://en.wikipedia.org/wiki/Physical_Address_Extension -->
<!-- long mode надо отдельно описать, там 2мб страницы -->
Строка 62:
Каждый процесс имеет свой собственный набор таблиц страниц. Регистр «директория страниц» перегружается при каждом [[Переключение контекста|переключении контекста]] процесса. Также необходимо сбросить ту часть TLB, которая относится к данному процессу.
 
В большинстве случаев ядро ОС помещается в то же адресное пространство, что и процессы, для него резервируются верхние 1-21—2 гигабайта 32-битного адресного пространства каждого процесса. Это делается с целью избежать переключения таблиц страниц при входе в ядро и выходе из него. Страницы ядра помечаются как недоступные для кода режима пользователя.
 
Память региона ядра часто совершенно одинакова для всех процессов, однако некоторые подрегионы региона ядра (например, регион Windows, где находится подсистема графики и драйвер видео) могут быть различными для разных групп процессов (сессий).