Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 93

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 87 88 89 90 91 92 < 93 > 94 95 96 97 98 99 .. 528 >> Следующая

GDT
1IL*_0L
Граница G DT
Дескриптор
сегмента
Дескриптор LDT
Начало GDT
LDT
(TI = 1)
Граница LDT
Дескриптор
сегмента
Начало LDT
GDTR
15
3 2
Селектор LDT 1
O'
INDEX
DPL
Атрибуты Граница [ Базовый I сегмента юегмента адрес сегмента I
___________I_________L________________I
"Теневой регистр" LDTR
LDTR
Рис. 2.40. Выборка дескрипторов из таблиц GDT и LDT
РАБОТА ПРОЦЕССОРА В ЗАЩИЩЕННОМ И РЕАЛЬНОМ РЕЖИМАХ
(т. е. умноженный на 8 - число байтов в дескрипторе), служит в качестве
относительного адреса (смещения) для формирования адреса дескриптора в
данной таблице (рис. 2.40). Это смещение сравнивается с границей таблицы,
хранящейся в GDTR или "теневом" регистре LDTR. Если смещение превышает
границу, т. е. выходит за пределы таблицы GDT, то вырабатывается
прерывание типа #GP ("нарушение защиты"). Если нарушения границы нет, то
смещение прибавляется к содержащемуся в GDTR базовому адресу, в
результате чего образуется адрес младшего байта выбираемого дескриптора.
При обращении к таблице LDT проверяются также права доступа к данной
таблице, которые устанавливаются также, как для выбираемых сегментов.
Селектор с нулевым значением полей INDEX и TI (разряды 2-15, рис. 2.39)
называется нуль-индикатором. Он обеспечивает обращение к первому
дескриптору в таблице GDT (нуль-дескриптор). Загрузка такого селектора в
регистр CS или SS для выборки сегмента команд или стека вызывает
исключение типа #GP ("нарушение общей защиты"). Так как при инициализации
системы обычно производится установка нулевых начальных значений
дескрипторов и селекторов, то данное исключение предотвращает возможность
запуска рабочих программ до загрузки операционной системой необходимых
сегментов и дескрипторов.
Таким образом, в защищенном режиме программно задается логический адрес
ячеек памяти, хранящих команды или данные, который состоит из селектора и
относительного адреса. С помощью селектора и таблиц GDT, LDT процессор
производит выборку соответствующего дескриптора. Затем формируется
линейный адрес ячейки памяти путем сложения базового адреса,
содержащегося в дескрипторе, и относительного адреса, образуемого в
соответствии с используемым способом адресации (рис. 2.41). Линейный
адрес определяет местоположение ячейки в линейном адресном пространстве,
которое может быть разбито на отдельные страницы при введении страничной
организации памяти.
Логический адрес
15 0 31/15 0
Селектор Относительный
сегмента адрес Выбранный
сегмент
Дескриптор сегмента
Правила доступа
Базовый адрес
Граница сегмента
Линейный адрес t
Граница
сегмента
Выбираемый
операнд
(команда)
Начало
сегмента
Рис. 2.41. Формирование линейного адреса
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Если при работе процессора не используется страничная организация памяти
(бит 32 в регистре управления CRO сброшен: PG = 0), то полученный
линейный адрес является физическим адресом для выбора требуемой ячейки
памяти.
При выполнении программ, написанных для процессоров 80386,80486, Pentium,
Р6, базовый и относительный адреса содержат по 32 разряда. При работе в
режиме виртуального 8086 в качестве базового адреса используется
селектор, сдвинутый влево на 4 разряда. Таким образом, базовый адрес
имеет 20 разрядов. В этом режиме используется 16-разряд-ный относительный
адрес, а формируемый линейный адрес содержит 20 разрядов.
Иногда при работе микропроцессорной системы сегментации памяти не
требуется. В этом случае необходимо загрузить все регистры сегментов
селекторами дескрипторов, имеющих нулевые базовые адреса и задающие
размеры сегментов по 4 Гбайт. В результате каждый из сегментов использует
полное адресное пространство, т. е. сегментация подавляется. При этом
может быть реализована страничная организация памяти.
В таблицах GDT, LDT могут размещаться следующие виды дескрипторов:
• дескрипторы сегментов команд;
• дескрипторы сегментов данных;
• системные дескрипторы.
В общем виде формат дескриптора представлен на рис. 2.42, где 32-
разрядный базовый адрес сегмента (база ВА31-0) и 20-разрядная граница
сегмента (L19-0) размещены по частям в различных байтах дескриптора.
Граница сегмента L указывает максимальное допустимое значение
относительного адреса, которое может использоваться при обращении к
сегменту. Величина (L+1) определяет размер сегмента в байтах или
страницах. Обращение к ячейке памяти, находящейся за границей данного
сегмента, вызывает исключение типа #GP.
Помимо базового адреса и границы сегмента дескрипторы задают ряд других
важных его атрибутов, состав которых зависит от вида сегмента. Отдельные
биты байта 6 дескриптора определяют следующие атрибуты сегмента.
Бит дробности G указывает, в каких единицах задан размер сегмента: в
байтах при G = 0 или страницах объемом по 4 Кбайт при G = 1. Таким
образом, сегмент может иметь размер до 220 = 1 Мбайт при G = 0 или до 232
= 4 Гбайта при G = 1.
Бит разрядности по умолчанию D/В для сегментов команд определяет
Предыдущая << 1 .. 87 88 89 90 91 92 < 93 > 94 95 96 97 98 99 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed