
- •Раздел 1. Общие принципы построения эвм
- •Тема 1.1 История и тенденции развития вычислительной техники. Поколения эвм
- •Тема 1.2. Основные характеристики и классификация эвм
- •Тема 1.3. Архитектура эвм
- •Тема 1.4. Структурные схемы и взаимодействие устройств эвм
- •Тема 1.5. Структурная схема и устройства пк
- •Тема 1.6. Микросхемы системной логики Chipset
- •Тема 1.7. Представление информации в компьютере, единицы измерения информации
- •Раздел 2. Программное обеспечение эвм
- •Тема 2.1. Структура программного обеспечения пк
- •Тема 2.2. Операционные системы
- •Тема 2.3. Файл и файловая система
- •Тема 2.4. Функции и характеристики сетевых ос
- •Тема 2.5. Эволюция режимов работы эвм
- •Раздел 3. Структура базового микропроцессора эвм
- •Тема 3.1. Классификация микропроцессоров
- •1. По числу бис:
- •2. По назначению:
- •3. По виду обрабатываемых сигналов:
- •4. По количеству выполняемых программ:
- •5. По характеру временной организации работы:
- •6. По объему набора инструкций:
- •Тема 3.2. Основные характеристики микропроцессоров
- •1.Разрядность регистров микропроцессора;
- •2.Разрядность шины данных;
- •Тема 3.3. Архитектура микропроцессора
- •Тема 3.4. Структура базового микропроцессора
- •Тема 3.5. Блок внутренних регистров базового микропроцессора
- •Тема 3.6. Сегментные регистры, регистр указателя команд и регистры флагов
- •Тема 3.7. Назначение и классификация уу
- •Тема 3.8. Назначение и классификация алу
- •1. По способу представления чисел:
- •2. По способу действия над операндами:
- •3. По выполняемым функциям алу подразделяются на:
- •4. По структурной организации алу подразделяются на устройства, имеющие:
- •Тема 3.9. Исполнение программного кода
- •Тема 3.10. Сегментная структура программ
- •Раздел 4. Основы программирования на ассемблере
- •Тема 4.1. Этапы создания программы на ассемблере
- •Тема 4.2. Формат команд и их классификация
- •Тема 4.3. Классификация операндов
- •Тема 4.4. Виды команд ассемблера
- •Раздел 5. Защищенный режим работы микропроцессора
- •Тема 5.1. Режимы работы микропроцессора
- •Тема 5.2. Адресация памяти в защищенном режиме
- •Тема 5.3. Дескрипторы и таблицы
- •Тема 5.5. Архитектурные особенности современных микропроцессоров
- •Тема 5.4. Суперскалярная архитектура
- •Принципы построения устройств внутренней памяти
- •4.1. Структура памяти эвм
- •3.2 Представление данных в памяти
- •3.3 Типы данных
- •Тема 6.2. Режимы адресации данных памяти
- •8.1. Общие принципы организации вв
- •10.1. Локальная системная шина
- •10.2. Шина расширения
- •11.1. Способы организации доступа к системной магистрали
- •11.2. Возможные структуры систем пдп
- •6.1. Характеристики систем прерывания
- •6.2. Возможные структуры систем прерывания
- •6.3. Организация перехода к прерывающей программе
Тема 5.3. Дескрипторы и таблицы
Дескрипторы и привилегии являются основой системы защиты: дескрипторы определяют структуры программных элементов (без которых эти элементы невозможно использовать), а привилегии определяют возможность доступа к дескрипторам и выполнения привилегированных инструкций. Любое нарушение защиты приводит к возникновению специальных исключений, обрабатываемых ядром операционной системы.
Существуют три типа таблиц дескрипторов – локальная таблица дескрипторов LDT (Local Descriptor Table), глобальная таблица дескрипторов GDT (Global Descriptor Table) и таблица дескрипторов прерываний IDT (Interrupt Descriptor Table). Размеры таблиц могут находиться в пределах от 8 байт до 64К-байт, что соответствует числу элементов в таблице от 1 до 8К.
С каждой из этих таблиц связан соответствующий регистр процессора. Регистры GDTR и IDTR имеют программно-доступное 16-битное поле лимита, задающее размер таблицы, и 32-битное поле базового адреса, определяющее положение таблицы в пространстве линейных адресов памяти. У регистра LDTR программно доступно только 16-битное поле селектора, по которому из GDT автоматически загружаются программно-недоступные и невидимые поля базового адреса и границы. Схема выборки дескрипторов показана на рис. 24.
Селектор сегмента (CS…GS) |
Дескриптор сегмента теневая часть регистра (CS…GS) |
|||||||||||||||||||||||||||||||||||||||
15 |
3 |
2 |
1 |
0 |
||||||||||||||||||||||||||||||||||||
INDEX |
TI |
DPL |
Атрибуты сегмента |
Граница сегмента |
Базовый адрес сегмента |
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
G |
(TI=0) |
|
|
|
|
L DT |
(TI=1) |
|
||||||||||||||||||||||||||||
|
|
|
|
|
Граница GDT |
|
|
|
|
Граница LDT |
|
|||||||||||||||||||||||||||||
|
|
|
|
|
. . . |
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
. . . |
|
||||||||||||||||||||||||||||||
|
|
|
+ |
|
|
Дескриптор сегмента |
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
. . . |
+ |
|
|
|
Дескриптор |
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
сегмента |
|
||||||||||||||||||||||||||||||
|
|
|
+ |
|
Дескриптор LDT |
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
. . . |
|
|
|
|
. . . |
|
|||||||||||||||||||||||||||||
15 |
0 |
31 |
16 |
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
Граница GDT |
Базовый адрес GDT |
|
Начало GDT |
|
|
|
|
Начало LDT |
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
Регистр GDTR |
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
Регистр LDTR |
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
15 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||
INDEX |
0 |
DPL |
Атрибуты LDT |
Граница LDT |
Базовый адрес LDT |
|
||||||||||||||||||||||||||||||||||
Селектор LDT |
теневая часть регистра LDTR |
|
Рис. 34 Схема выборки дескрипторов из таблиц GDT и LDT
Инструкции загрузки регистров таблиц LGDT, LIDT и LLDT являются привилегированными (выполняются только на уровне привилегий 0). Инструкции LGDT и LIDT загружают из памяти 6-байтное поле, содержащее базовый адрес и лимит локальной таблицы. Инструкция LLDT загружает только селектор, ссылающийся на дескриптор, содержащий базовый адрес и границу локальной таблицы дескрипторов.
Глобальная таблица (GDT) содержит дескрипторы, доступные всем задачам. Она может содержать дескрипторы любых типов, кроме дескрипторов прерываний и ловушек. Нулевой элемент этой таблицы процессором не используется. Локальная таблица (LDT) может быть собственной для каждой задачи и содержит только дескрипторы сегментов, шлюзы задач и вызовов. Сегмент недоступен задаче, если его дескриптора нет в текущий момент ни в GDT, ни в LDT.
Выбор таблицы (локальная или глобальная) определяется по значению бита TI селектора, а положение (номер) дескриптора задается 13-битным полем INDEX селектора. При ссылке на дескриптор, выходящий за лимит таблицы, возникает исключение #GP.
Таблица дескрипторов прерываний, используемая в защищенном режиме, может содержать описания до 256 прерываний. Таблица может содержать только шлюзы задач, прерываний и ловушек. Базовый адрес и лимит таблицы загружается привилегированной инструкцией LIDT (аналогично LGDT). Размер IDT должен быть не менее 256 байт, чтобы в нее поместились все зарезервированные прерывания процессора. Ссылка на элементы IDT происходит по инструкциям INT, аппаратным прерываниям и исключениям процессора. При возникновении прерывания или исключения, дескриптор которого выходит за лимит таблицы, вырабатывается исключение #DF.
В общем виде формат дескриптора представлен на рис. 25, где 32-разрядный базовый адрес сегмента (база ВА[31:0]) и 20-разрядная граница сегмента (L[19:0]) размещены по частям в различных байтах дескриптора.
Граница сегмента L указывает максимальное допустимое значение относительного адреса, которое может использоваться при обращении к сегменту. Величина (L+1) определяет размер сегмента в байтах или страницах. Обращение к ячейке памяти, находящейся за границей данного сегмента, вызывает исключение типа #GP.
Помимо базового адреса и границы сегмента дескрипторы задают ряд других важных его атрибутов, состав которых зависит от вида сегмента. Отдельные биты байта 6 дескриптора определяют следующие атрибуты сегмента.
Байт 7 |
Байт 6 |
Байт 5 |
Байт 4 |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
31 |
24 |
23 |
22 |
21 |
20 |
19 |
16 |
15 |
14 |
13 |
12 |
11 |
8 |
7 |
|
|
0 |
|
||||||||||||
BA[31:24] |
G |
D/B |
0 |
Avail |
Граница L[19:16] |
P |
DPL |
S |
TYPE |
Базовый адрес BA[23:16] |
||||||||||||||||||||
Базовый адрес BA[15:0] |
Граница сегмента L[15:0] |
|||||||||||||||||||||||||||||
31 |
16 |
15 |
0 |
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||
Байты 3,2 |
Байты 1,0 |
|
Рис. 35. Общий формат дескриптора
Дескриптор таблицы LDT обеспечивает обращение к локальной таблице дескрипторов для выбора сегментов, используемых при выполнении текущей программы.