Архитектура памяти
Организация памяти в защищенном режиме работы процессора
Ранее мы кратко рассмотрели работу процессоров серии 1386 и выше в защищенном режиме, использующем организацию памяти, при которой используются два механизма преобразования памяти:
- сегментация;
- разбиение на страницы.
ОС NT в различной мере использует оба этих механизма.
Как уже говорилось, в защищенном режиме может быть определено до 213 (8192) сегментов. Каждый сегмент может иметь размер до 4 Гб (232 байт). Таким образом, максимальный размер виртуального адресного пространства составляет 64 Тб.
Каждый сегмент описывается 8-байтной структурой данных – дескриптором сегмента. Дескрипторы находятся в специальной таблице дескрипторов (GDT, см. рис. 5). Для указания конкретного сегмента используется 16-битный селектор. Он является индексом внутри таблицы дескрипторов. Младшие 2 бита селектора определяют номер привилегированного режима (DPL – уровень привилегий дескриптора), который может воспользоваться данным селектором для доступа к дескриптору, третий бит определяет локальную/глобальную дескрипторную таблицу, (отсюда максимальное число селекторов 213).
ОС NT, хотя и использует селекторы, но использует их в минимальной степени. NT реализует плоскую 32-разрядную модель памяти с размером линейного адресного пространства 4 Гб (232 байт). Это сделано следующим образом:
Рис. 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.