Interested Article - Дескриптор сегмента

Дескриптор сегмента (в архитектуре x86 ) — служебная структура в памяти, которая определяет сегмент . Длина дескриптора равна 8 байт .

Структура сегментного дескриптора

Байт прав доступа (AR, англ. Access Rights , биты 8-15 на рисунке ):

Типы системных сегментов
Биты AR Описание
3 2 1 0
0 0 0 0 0 Запрещенное значение
1 0 0 0 1 Свободный 16- битный TSS
2 0 0 1 0 LDT
3 0 0 1 1 Занятый 16- битный TSS
4 0 1 0 0 16- битный шлюз вызова
5 0 1 0 1 Шлюз задачи
6 0 1 1 0 16- битный шлюз прерывания
7 0 1 1 1 16- битный шлюз ловушки
8 1 0 0 0 Запрещенное значение
9 1 0 0 1 Свободный 32- битный TSS
A 1 0 1 0 Зарезервировано
B 1 0 1 1 Занятый 32- битный TSS
C 1 1 0 0 32- битный шлюз вызова
D 1 1 0 1 Зарезервировано
E 1 1 1 0 32- битный шлюз прерывания
F 1 1 1 1 32- битный шлюз ловушки
Типы пользовательских сегментов
Биты AR Описание
3 2 1
0 0 0 0 Сегмент данных только для чтения
2 0 0 1 Сегмент данных для чтения/записи
4 0 1 0 Сегмент данных только для чтения, растёт вниз
6 0 1 1 Сегмент данных для чтения/записи, растёт вниз
8 1 0 0 Сегмент кода только для выполнения
A 1 0 1 Сегмент кода для выполнения/чтения
C 1 1 0 Подчинённый сегмент кода только для выполнения
E 1 1 1 Подчинённый сегмент кода для выполнения/чтения

Младший бит байта AR пользовательских сегментов (A, англ. Accessed , бит 8 на рисунке) можно использовать для сбора статистики о сегменте . При первом же обращении к сегменту (чтение, запись, выполнение) он устанавливается процессором в 1.

  • Флаг гранулярности G определяет лимит сегмента : при G=0 лимит равен значению соответствующего поля в дескрипторе, а при G=1 лимит равен полю дескриптора, умноженному на (2 12 = 4096). Таким образом при G=0 максимальный размер сегмента 1 М Байт , а при G=1 4 Г Байт .
  • Флаг разрядности DB ( бит 22 на рисунке ) актуален для пользовательских сегментов кода и стека . Определяет разрядность в 16 бит при нулевом и 32 бит при единичном значении.
  • Зарезервированный флаг (серое поле) должен всегда равняться нулю в 32 битных дескрипторах и режиме совместимости, одному для 64 битного режима.
  • Пользовательский флаг AVL (A, бит 20 на рисунке ) отдан операционной системе. Его состояние никак не влияет на работу с сегментом .

См. также

Примечания

  1. Разорванность полей дескриптора объясняется эволюционированием процессоров.

Ссылки

Источник —

Same as Дескриптор сегмента