Интернет магазин китайских планшетных компьютеров



Компьютеры - Дескриптор сегмента

23 января 2011





служебная структура в памяти, которая определяет сегмент. Длина дескриптора равна восьми байтам.

Структура сегментного дескриптора
  • База — начало сегмента в линейной памяти
  • Лимит —-1
  • Права доступа — флаги, определяющие наличие сегмента в памяти, уровень защиты, тип, разрядность + один пользовательский флаг

Байт прав доступа:

  • Бит P определяет доступность сегмента. При обращении к сегменту со сброшенным битом P происходит исключение #NP, обработчик которого может загрузить/создать сегмент.
  • Номер привилегий DPL содержит 2-битный номер, определяющий, к какому уровню защиты относится этот сегмент.
  • Тип сегмента. Старший бит определяет сегмент как системный или пользовательский. Значение прочих бит для системных и пользовательских сегментов описано в таблице:
Типы системных сегментов
Биты 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 пользовательских сегментов можно использовать для сбора статистики о сегменте. При первом же обращении к сегменту он устанавливается процессором в 1.

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


Просмотров: 1717


<<< Блок управления памятью