logo search
АВМиС - бывшее АПЭВМ / apvem / всякаявсячина

33.Таблицы локальных и глобальных дескрипторов

Две таблицы дескрипторов, называемых дескрипторными таблицами (рис3.30), содержат все типы дескрипторов, доступных задаче. Дескрипторные таблицы содержат до 8192 дескрипторов. Старшие 13 рарядов селектора сегмента представляют собой индекс дескрипторной таблицы. Каждая таблица имеет в CPU 24-разрядный (МП 80286) или 32-разрядный (МП 80386) регистр указателя базы для размещения дескрипторной таблицы в физической памяти и 16-разрядный регистр указателя предела, ограничивающий доступ к дескрипторам в отведенных таблице границах. При попытке обращения к дескриптору, находящемуся за пределами, отведенными таблице, происходит прерывание по исключительной ситуации 13.

Одна таблица, под названием "Таблица глобальных дескрипторов" (GDT), содержит дескрипторы, доступные всем задачам. Другая таблица, под названием "Локальная дескрипторная таблица" (LDT), содержит дескрипторы, принадлежащие отдельной задаче. Каждая задача может иметь свою собственную (частную) LDT. GDT может содержать все типы дескрипторов за исключением дескрипторов прерываний и ловушек. LDT может содержать только дескрипторы сегментов, шлюзов задач и шлюзов вызовов. Сегмент не может быть доступен задаче, если при обращении к сегменту дескриптор сегмента не находится в одной из дескрипторных таблиц.

Команды LGDT и LLDT загружают базу и пределы глобальной или локальной дескрипторных таблиц в регистры GDTR и LDTR соответственно. LGDT и LLDT являются привилегированными командами, то есть они могут выполнять необходимые операции только на нулевом уровне. Команда LGDT загружает шестибайтовоее значение дескриптора, содержащее 16-разрядный предел, и 24-разрядный (МП 80286) или 32-разрядный (МП 80386) физический базовый адрес глобальной таблицы дескрипторов из памяти в регистр GDTR. Команда LLDT загружает селектор локальной дескрипторной таблицы в регистр локальной дескрипторной таблицы (LDTR).