• Иллюстрированный самоучитель по программированию систем защиты

    Архитектура памяти

    Организация памяти в защищенном режиме работы процессора

    Ранее мы кратко рассмотрели работу процессоров серии 1386 и выше в защищенном режиме, использующем организацию памяти, при которой используются два механизма преобразования памяти:

    • сегментация;
    • разбиение на страницы.

    ОС NT в различной мере использует оба этих механизма.

    Как уже говорилось, в защищенном режиме может быть определено до 213 (8192) сегментов. Каждый сегмент может иметь размер до 4 Гб (232 байт). Таким образом, максимальный размер виртуального адресного пространства составляет 64 Тб.

    Каждый сегмент описывается 8-байтной структурой данных – дескриптором сегмента. Дескрипторы находятся в специальной таблице дескрипторов (GDT, см. рис. 5). Для указания конкретного сегмента используется 16-битный селектор. Он является индексом внутри таблицы дескрипторов. Младшие 2 бита селектора определяют номер привилегированного режима (DPL – уровень привилегий дескриптора), который может воспользоваться данным селектором для доступа к дескриптору, третий бит определяет локальную/глобальную дескрипторную таблицу, (отсюда максимальное число селекторов 213).

    ОС NT, хотя и использует селекторы, но использует их в минимальной степени. NT реализует плоскую 32-разрядную модель памяти с размером линейного адресного пространства 4 Гб (232 байт). Это сделано следующим образом:

    Иллюстрированный самоучитель по программированию систем защиты › Общая архитектура Windows NT › Архитектура памяти
    Рис. 5. Таблица дескрипторов GDT

    В NT определено 11 селекторов, из которых нас будут интересовать всего 4:

    Селектор Hex (bin] Назначение База Предел DPL Тип
    08 (001000) Code32 00000000 FFFFFFFF 0 RE
    10() Data32 00000000 FFFFFFFF 0 RW
    lb (011011) Code32 00000000 FFFFFFFF 3 RE
    23 (100011) Data32 00000000 FFFFFFFF 3 RW

    Эти четыре селектора позволяют адресовать все 4Гб линейного адресного пространства, причем для всех селекторов при фиксированном контексте памяти производится трансляция в одни и те же физические адреса. Разница только в режиме доступа.

    Первые два селектора имеют DPL=0 и используются драйверами и системными компонентами для доступа к системному коду, данным и стеку. Вторые два селектора используются кодом пользовательского режима для доступа к коду, данным и стеку пользовательского режима. Эти селекторы являются константами для ОС NT.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.