Модификаторы страничного механизма IA-32

Продолжаю перевод 4 главы «PAGING» руководства “Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3 (3A & 3B):System Programming Guide”

Другие главы

Детали работы страничного режима определяются следующими управляющими битами:

  • Флаг WP в регистре CR0 (бит 16).
  • Флаги PSE, PGE и PGIDE в CR4 (биты 4, 7 и 17 соответственно).
  • Флаг NXE в IA32_EFER MSR (бит 11).

Флаг CR0.WP позволяет страницам быть защищенными от записи из режима супервизора. Если CR0.WP = 0, программное обеспечение работающее с уровнем привелегий CPL < 3 (режим супервизора) может писать в линейные адреса с read-only правами доступа; если CR0.WP =1, тогда запись в read-only области запрещена всем. (Программное обеспечение с уровнем привелегий 3 CPL = 3 — пользовательский режим — не может писать в линейный адрес с read-only правами доступа не зависимо от значения регистра CR0.WP). Раздел 4.6 объясняет как задаются права доступа.

Флаг CR4.PSE включает 4-MByte страницы для 32-bit страничного режима. Если CR4.PSE = 0, 32-битный страничный режим может использовать только 4-KByte страницы; Если CR4.PSE = 1, 32-bit страничный режим может использовать любые 4-KByte или 4-MByte страницы. См. раздел 4.3 для большей информации. (PAE страничный режим и IA-32e страничный режим могут использовать различные размеры страниц не зависимо от значения CR4.PSE.)

CR4.PGE включает глобальные страницы. Если CR4.PGE = 0, нет разделения трансляций между адресными пространствами. Если CR4.PGE = 1, определённые трансляции могут разделяться между адресными пространствами. См. раздел 4.10.2.4 для большей информации.

CR4.PCIDE включает идентификаторы контекста процесса process-context identifiers (PCIDs) для IA-32e страничного режима (CR4.PCIDE может быть 1 только при включенном IA-32e режиме). PCIDs позволяют логическому процессору кешировать информацию для множества линейных адресных пространств. См. раздел 4.10.1 для большей информации.

IA32_EFER.NXE включает контроль прав доступа «запрет выполнения» для for PAE режима и IA-32e режима. Если IA32_EFER.NXE = 0, программное обеспечение может выполнять инструкции из любого линейного адреса который позволяется быть прочитанным; Если IA32_EFER.NXE = 1, выборка инструкций может быть предотвращена из указанных линейных адресов (даже если чтение данных из этих адресов разрешено). Раздел 4.6 объясняет как права доступа определяются. (32-битный страничный механизм всегда позволяет программному обеспечению выполнение инструкций из любого линейного адреса, который может быть прочитан; Флаг IA32_EFER.NXE не влияет на 32-битный страничный режим. Программное обеспечение, которое желает ограничить выборку инструкций из читаемых страниц должно использовать либо PAE страничный режим либо IA-32e страничный режим.)

Оставьте комментарий