logo
Методичка

4.3.3 Дескриптор

Дескриптор несёт в себе полную информацию о сегменте: местоположение, уровень доступа, размер, принадлежность и т.д. Длина дескриптора равна восьми байтам. По информации, находящейся в дескрипторе, операционная система определяет линейные адреса сегментов программы. Структура дескриптора изображена на рисунке 4.2.

Биты поля доступа имеют следующий смысл:

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

Таблица 4.1. Типы системных сегментов

Типы системных сегментов (при S=0)

Биты AR

Описание

3

2

1

0

0

0

0

0

Зарезервировано

0

0

0

1

Свободный 16-битный TSS

0

0

1

0

LDT

0

0

1

1

Занятый 16-битный TSS

0

1

0

0

16-битный шлюз вызова

0

1

0

1

Шлюз задачи

0

1

1

0

16-битный шлюз прерывания

0

1

1

1

16-битный шлюз ловушки

1

0

0

0

Зарезервировано

1

0

0

1

Свободный 32-битный TSS

1

0

1

0

Зарезервировано

1

0

1

1

Занятый 32-битный TSS

1

1

0

0

32-битный шлюз вызова

1

1

0

1

Зарезервировано

1

1

1

0

32-битный шлюз прерывания

1

1

1

1

32-битный шлюз ловушки

Таблица 4.2. Типы пользовательских сегментов

Биты AR

Описание

3

2

1

0

0

0

Сегмент данных только для чтения

0

0

1

Сегмент данных для чтения/записи

0

1

0

Сегмент данных только для чтения, растёт вниз

0

1

1

Сегмент данных для чтения/записи, растёт вниз

1

0

0

Сегмент кода только для выполнения

1

0

1

Сегмент кода для выполнения/чтения

1

1

0

Подчинённый сегмент кода только для выполнения

1

1

1

Подчинённый сегмент кода для выполнения/чтения