Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Процессор х86.docx
Скачиваний:
21
Добавлен:
23.04.2019
Размер:
725.45 Кб
Скачать
  1. Сегменты реального и защищенного режима. Глобальная и локальная таблицы дескрипторов.

Пространство памяти (memory space) предназначено для хранения кодов инструкций и данных, для доступа к которым имеется богатый выбор способов адресации (24 режима). Память может логически организовываться в виде одного или множества сегментов произвольной длины (в реальном режиме — фиксированной). Сегментация является средством организации логической памяти на прикладном уровне.

В режиме реальной адресации каждый сегмент памяти может быть считан, записан или изменен. Если в режиме реальной адресации информация, содержащаяся в сегменте, не использует все пространство, то неиспользуемое может быть предоставлено другому сегменту в целях экономии физической памяти.

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

Микропроцессор аппаратно поддерживает три типа дескрипторных таблиц:

· глобальная дескрипторная таблица (GDT);

· локальная дескрипторная таблица (LDT);

· таблица дескрипторов прерываний (IDT).

1. Таблица GDT (Global Descriptor Table) — глобальная дескрипторная таблица. Это основная общесистемная таблица, к которой допускается обращение со стороны программ, обладающих достаточными привилегиями. Расположение таблицы GDT в памяти произвольно; оно локализуется с помощью специального регистра gdtr (48 бит). В таблице GDT могут содержаться следующие типы дескрипторов:

· дескрипторы сегментов кодов программ;

· дескрипторы сегментов данных программ;

· дескрипторы стековых сегментов программ;

· дескрипторы TSS (Task Segment Status) — специальные системные объекты, называемые сегментами состояния задач;

· дескрипторы для таблиц LDT;

· шлюзы вызова;

· шлюзы задач.

2. Таблица LDT (Local Descriptor Table) — локальная дескрипторная таблица. Для любой задачи в системе может быть создана своя дескрипторная таблица подобно общесистемной GDT. Для связи между таблицами GDT и LDT в таблице GDT создается дескриптор, описывающий область памяти, в которой находится LDT. Расположение таблицы LDT в памяти также произвольно и локализуется с помощью специального регистра ldtr (16 бит). В таблице LDT могут содержаться следующие типы дескрипторов:

· дескрипторы сегментов кодов программ;

· дескрипторы сегментов данных программ;

· дескрипторы стековых сегментов программ;

· шлюзы вызова;

· шлюзы задач.

3. Таблица IDT (Interrupt Descriptor Table) — дескрипторная таблица прерываний. Данная таблица также является общесистемной и содержит дескрипторы специального типа, которые определяют местоположение программ обработчиков всех видов прерываний. В качестве аналогии можно привести таблицу векторов прерываний реального режима. Расположение таблицы IDT в памяти произвольно и локализуется с помощью специального регистра idtr (48 бит). Элементы данной таблицы называются шлюзами. Отметим, что эти шлюзы бывают трех типов:

· шлюзы задач;

· шлюзы прерываний;

· шлюзы ловушек.

Каждая из дескрипторных таблиц может содержать до 8192 (213) дескрипторов.

В защищенном режиме иначе интерпретируется содержимое сегментных регистров.

Теперь в них содержатся не адреса начала сегмента, а номер соответствующего сегмента (индекс, или селектор) в таблице дескрипторов сегментов. Поэтому теперь сегментные регистры называются селекторами сегментов.

Каждый регистр разбивается на три поля:

· индекс (старшие 13 битов) - Index. Определяет номер сегмента (индекс) в соответствующей таблице дескрипторов.

· индикатор таблицы сегментов - TI (бит 2). Определяет в глобальной или локальной таблице находится дескриптор сегмента: TI=0 - в глобальной, TI=1 - в локальной.

· Уровень привилегий (биты 0 и 1). Указывает запрашиваемый уровень привилегий.