Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ПЭВМ.doc
Скачиваний:
19
Добавлен:
23.04.2019
Размер:
10.46 Mб
Скачать

3) Права доступа сегмента ar

Возможность доступа к сегменту определяет бит присутствия P.

а) P=0. МП отвергает все попытки использовать сегмент, описываемый данным дескриптором, так как это адресное пространство для МП пропадает. МП игнорирует все поля, кроме поля AR и формат дескриптора неприсутствующего сегмента выглядит так:

Рисунок 43 Права доступа при P=0

б) P=1.

7

6

5

4

3

2

1

0

P

DPL

1

1

C

R

A

Сегмент кода

P

DPL

1

0

ED

W

A

Сегмент данных

P

DPL

0

X

X

X

X

Системный объект

Рисунок 44 - Формат байта прав доступа

Бит R – read. Показывает возможность считывания сегмента.

W – запись в сегмент.

ED – Expand down. Различает сегменты стека (ed=1) или сегмент данных (ed=0).

C – подчинение (conforming)

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

Рисунок 45 - Дескрипторные таблицы и системные регистры

Для удобства работы МП с информацией о сегментах все дескрипторы собраны в одном месте – в дескрипторной таблице. Порядок размещения дескрипторов в таблице не играет роли. А максимальное число дескрипторов равно 8192, так как максимальный размер таблицы дескрипторов 64К, а размер дескриптора 8 байт. Микропроцессором используются таблицы трёх типов: GDT – глобальная дескрипторная таблица – это главная общесистемная таблица, которую используют все задачи, так как GDT хранит дескрипторы всех, имеющихся в ОП сегментов. Для локализации таблицы GDT используется 48 разрядный регистр GDTR (см. выше), в котором находится 32 битное поле базового адреса таблицы и 16 битное поле предела таблицы.

IDT – таблица дескрипторов прерываний. Общесистемная таблица, но содержит дескрипторы специальных системных объектов – прерываний,

называемых шлюзами, которые определяют точки входа процедур обработки прерываний. Таблица IDT служит заменой таблицы векторов прерываний МП 8086. Для локализации таблицы IDT используется регистр IDTR, формат которого аналогичен регистру GDTR.

LDT – локальная таблица дескрипторов. Для каждой задачи в дополнение к GDT можно построить LDT, которая будет определять сегменты, только доступные этой конкретной задаче. Для локализации LDT используется 16 битный LDTR, который содержит только селектор, выбирающий из таблицы GDT специальный дескриптор, описывающий вновь созданную LDT. Если регистры GDTR и IDTR загружаются в самом начале работы системы и далее не меняются, то таблицы LDT создаются по мере необходимости. Причём в любом свободном сегменте физической ОП. Для доступа к этим регистрам введены специальные команды, которые доступны программам с наивысшем уровнем привилегии (процедурам ОС):

LGDT mem48

загрузить регистры для определения таблиц GDT и IDT

LIDT mem48

SGDT mem48

сохранить содержимое регистров в памяти

SIDT mem48

Рисунок 46 - Специальные команды для доступа к регистрам

LLDT reg16/mem16 – загрузить селектор в LDTR для определения новой LDT

SLDT reg16/mem16 – сохранить селектор из LDTR в указанном получателе