4. Управление памятью в защищенном режиме    
 СОДЕРЖАНИЕ
 Введение
 1. Развитие архитектуры
 2. Структура МП
 3. Ресурсы МП
 4. Управление памятью
 5. Защита
 6. Многозадачность
 7. Прерывания и исключения
 8. Инициализация МП
 9. Эмуляция 8086
 Глоссарий
 ПРАКТИКА
 1. Семантический разрыв
 2. CPUID
 3. Защищенный режим
 Вопросы и задания

4.3. Страничная трансляция

Механизм сегментации обеспечивает превосходную защиту, но он не очень удобен для реализации виртуальной памяти (подкачки). В дескрипторе сегмента есть бит присутствия, по нему процессор определяет, находится ли данный сегмент в физической памяти или он находится на внешнем запоминающем устройстве (на винчестере). В последнем случае генерируется исключение #11, обработчик которого может подгрузить сегмент в память. Неудобство заключается в том, что различные сегменты могут иметь различную длину. Этого можно избежать, если механизм подкачки реализовывать на основе страничного преобразования. Особенностью этого преобразования является то, что процессор в этом случае оперирует с блоками физической памяти равной длины (4Кбайт) - страницами. Страницы не имеют непосредственного отношения к логической структуре программы.

Страничное преобразование действует только в защищенном режиме и включается установкой в 1 бита PG в регистре CR0.

В страничном преобразовании участвуют два типа структур: каталоги таблиц (Page Directory) и таблицы страниц (Page Table). Эти структуры состоят из 1024 32-битных элементов. Элементы содержат старшие 20 бит физического адреса адресуемых объектов. Элементы таблицы страниц (Page Table Entry - PTE) адресуют страницы, а элементы каталога таблиц (Page Directory Entry - PDE) адресуют таблицы страниц. Старшие 20 бит физического адреса каталога таблиц хранится в регистре CR3 (Page Directory Base Register - PDBR). (Это единственный регистр процессора, который содержит физический адрес памяти). Все структуры выравниваются по границе страницы.

Страничная трансляция (4К)

В процессе страничной трансляции адресов полученный линейный адрес разбивается на три части. Старшие десять бит (Directory) линейного адреса являются индексом элемента из каталога таблиц. По этому элементу определяется физический адрес таблицы страниц. Биты 21-12 (Table) линейного адреса выбирают элемент из этой таблицы страниц. Выбранный элемент определяет физический адрес страницы. Младшие 12 бит (Offset) линейного адреса определяют смещение от начала страницы.

Страницы начинаются на границах 4Кбайт областей памяти, поэтому младшие 12 бит адреса страницы всегда равны нулю. В каталоге таблиц элементы хранят физические адреса таблиц страниц. В таблице страниц элементы хранят физические адреса самих страниц.

Элементы каталогов таблиц и таблиц страниц в битах 12-31 содержат старшие 20 бит физического адреса объекта (для PDE - таблицы страниц, для PTE - страницы). Биты 9-11 системный программист может использовать по своему усмотрению. Остальные биты имеют следующие значения:

Формат элемента PDE/PTE (4K)

Бит изменения (D) и бит обращения (A) содержат информацию об использовании страницы и устанавливаются аппаратно. Процессор устанавливает биты доступа в таблицах обоих уровней перед операцией чтения или записи страницы. Затем процессор устанавливает бит изменения в таблице страниц второго уровня перед операцией записи по адресу, соответствующему элементу этой таблицы. Бит изменения в элементах каталога таблиц не используется.

В операционной системе, которая поддерживает страничную виртуальную память, эти биты используются для определения тех страниц, которые могут быть удалены из физической памяти в случае, когда требуется больший объем, чем размер доступной в данный момент физической памяти. Ответственность за проверку и очистку этих двух битов лежит на операционной системе.

В процессорах Pentium фирма Intel реализовала новую возможность - расширение размера страниц (Page Size Extension - PSE). PSE позволяет использовать страницы размером 4Мбайт и одноуровневый механизм страничной трансляции.

В подсемействе P6 шина адреса была расширена до 36 бит. Соответственно, процессоры Pentium Pro, Pentium II, Pentium III и более поздние способны адресовать до 64 Гбайт физической памяти. Эта возможность называется расширением физического адреса (Physical Address Extension - PAE) и доступна только при использовании страничной трансляции.

Использование PSE и PAE следующим образом влияет на страничное преобразование:

CR0.PGCR4.PAECR4.PSEPDE.PS Размер страницыРазрядность физ.адреса
0xxx-32 бит
100x4K32 бит
10104K32 бит
10114M32 бит
11x04K36 бит
11x12M36 бит