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

5) Селекторы сегментов

15 3 2 1 0

Index (13 бит)

TI

RPL

Рисунок 47 – Селекторы сегментов

Селекторы сегментов косвенно через таблицу дескрипторов определяют сегменты памяти. RPL – 2 бита, запрашиваемый уровень привилегий. Это поле не участвует в выборе конкретного дескриптора, а привлекается для контроля привилегий в механизме защиты.

TI – индикатор таблицы. Показывает, из какой дескрипторной таблицы выбирается дескриптор. При TI = 0 – из GDT, TI=1 – из LDT.

Поле Index определяет нужный дескриптор в таблице дескрипторов.

6) Образование линейного адреса

Рисунок 48 Формирование линейного адреса

Для образования линейного адреса нужно к сформированному эффективному адресу прибавить базовый адрес сегмента, взятый из дескриптора. В нашем случае бит TI равен 0, поэтому дескриптор берём из таблицы GDT, а по значению Index селектора выбираем из GDT нужный дескриптор. При каждом обращении к сегменту требуется считывать дескриптор из памяти. В том числе при выборке каждой команды. Производительность МП резко падает. Поэтому применяется кэширование дескриптора, то есть с каждым сегментным регистром МП ассоциируется «теневой» регистр в кэш L1, называемый кэш регистром (программно не доступны). Когда программа загружает селектор в сегментный регистр, МП автоматически кэширует нужный дескриптор в соответствующий теневой регистр. Теперь дескриптор находится внутри МП и для получения линейного адреса нужно сформировать эффективный адрес, а базовый адрес сегмента взять из теневого регистра и просуммировать с эффективным.

15 0 63 0

Сегментный регистр

(15-0)

Теневой регистр (63-0)

CS, SS, DS, ES, FS, GS

База

Права доступа

Предел

Рисунок 49 Образование линейного адреса

Задачи

1) Определить базовый адрес и предел дескрипторных таблиц GDT и IDT, если содержимое регистров GDTR=003BC01403FF, IDTR=000F548B00FF

GDTR

Base: 003BC014

Предел: 03FF

03FF = 0000 0011 1111 1111

1Кб – размер GDT - (2 10)

IDTR

Base: 000F548B

Предел: 00FF

00FF = 0000 0000 1111 1111

256б – размер IDT- (2 8)

2) Составить дескриптор кода на выполнение с базовым адресом 00F3AC36h, размер 1 сегмента 4 Мб со страничной гранулярностью (G=1), DPL=2, и P=1 (физическая ОП). 4Мб, 210 = 03FF.

База (31-24)

00

G=1

D=1

X=0

U=0

Предел (19-16)

00

P=1

DPL=10

S=1

Type=100

A=1

База (16-23)

F3

Базовый адрес (15-0) AC36

Предел (15-0) 03FF

0000 0000 1100 0000 0000 1101 1001 1111 0011 1010 1100 0011 0110 0000 0011 1111 1111

Рисунок 50 – Решение задачи

3) Составить селектор сегмента кода, выбирающий 5 дескриптор в таблице GDT на втором уровне привилегий

15 3 2 1 0

Index (13 бит) (15-3)

0 0000 0000 0101

TI(2)

0

RPL(1-0)

10

Рисунок 51 - Задача

4) Рассказать о состоянии вычислительной системы на базе МП i486, если в управляющий регистр CR0 загружены следующие данные:

100 xxxxxxxxxx 1x1 xxxxxxxxxx 11 1111