Дескрипторные таблицы

В системах на базе процессора IA32 допускается создание практически любого числа сегментов и описывающих их дескрипторов. Чтобы процессор мог следить за информацией о сегментах, целесообразно собрать дескрипторы всех существующих в системе сегментов в одном месте. Конечно, было бы желательно хранить дескрипторы внутри процессора, но значительный объем информации позволяет разместить дескрипторы только в памяти. Такая область памяти, предназначенная для хранения 8-байтных дескрипторов называется дескрипторной таблицей (descriptor table). Она представляет собой массив из 8-байтных элементов — дескрипторов. (В переводной литературе для элементов таблиц довольно часто применяется неудобный термин «вход», который появился при буквальном переводе английского термина entry). Порядок размещения дескрипторов в таблице не играет роли, а максимальное число дескрипторов составляет 8192, т.е. максимальный размер дескрипторной таблицы равен 8 х 8192 = 64 Кбайт. В процессоре предусмотрено использование дескрипторных таблиц трех типов (см. рис. 2.6), поэтому при создании сегментов приходится определять, в какую из таблиц поместить его дескриптор. Выбор таблицы зависит от целевого назначения сегмента.

ГЛОБАЛЬНАЯ ДЕСКРИПТОРНАЯ ТАБЛИЦА.Главной общесистемной таблицей дескрипторов является глобальная дескрипторная таблица (Global Descriptor Table GDT). Все программы (задачи), выполняющиеся в системе, могут использовать эту таблицу для обращения к сегментам памяти; говорят еще, что таблицу GDT разделяют («коллективно используют») все задачи. Для локализации таблицы GDT предназначен специальный регистр GDTR, в котором находятся 32-битное поле линейного базового адреса таблицы и 16-битное поле предела с байтной грануляцией. Значение предела L связано с числом N дескрипторов в таблице простым соотношением L = 8 х N — 1.

ДЕСКРИПТОРНАЯ ТАБЛИЦА ПРЕРЫВАНИЙ.Общесистемной является также дескрипторная таблица прерываний (Interrupt Descriptor Table IDT). Она содержит дескрипторы специальных системных объектов (напомним про бит S = 0 в дескрипторе). Эти объекты называются шлюзами (gate) и определяют точки входа процедур обработки прерываний и особых случаев. Другими словами, таблица IDT служит заменой таблицы векторов прерываний процессора 8086. Для локализации таблицы IDT служит системный регистр IDTR, формат которого аналогичен формату регистра GDTR. Подчеркнем, что до перевода процессора i486 в Р-режим необходимо создать таблицы GDT и IDT и соответственно инициализировать регистры GDTR и IDTR

 


 

Память

Рис.2.6. Дескрипторные таблицы и системные регистры

ЛОКАЛЬНАЯ ДЕСКРИПТОРНАЯ ТАБЛИЦА.В мультизадачной системе для каждой задачи в дополнение к таблице GDT можно построить свою локальную дескрипторную таблицу (Local) GDT, а все аппаратные и программные прерывания выбирают шлюзы в новой таблице LDT.

Команды SGDT mem48 и SIDT mem48 предназначены для сохранения содержимого регистров GDTR и IDTR в памяти.

Привилегированная команда LLDT regl6/meml6 загружает селектор в регистр LDTR и определяет новую таблицу LDT. Операнд команды должен содержать правильный селектор LDT или пустой селектор (0000Н). При этом дескрипторы в старой таблице LDT не модифицируются, но все последующие обращения к селекторам сегментов инициируют загрузку дескрипторов из новой таблицы LDT. Если в регистр LDTR загружается пустой селектор (см, след. разд.), то последующие обращения к памяти через дескрипторы из таблицы LDT вызывают нарушение общей защиты.

Команда SLDT regl6/meml6 сохраняет селектор из регистра LDTR в указанном получателе.








Дата добавления: 2015-06-05; просмотров: 2163;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.