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

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

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

быстрого выполнения программ, написанных для микропроцессоров 8086,80186.
По сравнению с ними процессоры Р6 в реальном режиме имеют более широкий
набор выполняемых команд и обеспечивают обработку 32-разрядных операндов.
РАБОТА ПРОЦЕССОРА В ЗАЩИЩЕННОМ И РЕАЛЬНОМ РЕЖИМАХ
Быстрое выполнение программ, написанных для микропроцессоров 8086, вместе
собес-печением защиты памяти, страничной организации и многозадачности
достигается при работе процессора в режиме виртуального 8086, который
является вариантом защищенного режима.
В настоящей главе подробно рассматривается функционирование процессоров
Р6 в защищенном режиме (сегментация, страничная организация памяти,
многозадачность), особенности реализации реального режима и режима
виртуального 8086.
2.7.1. СЕГМЕНТАЦИЯ ПАМЯТИ В ЗАЩИЩЕННОМ РЕЖИМЕ
При работе процессора в защищенном режиме каждый из сегментов команд,
данных, стека характеризуется соответствующими параметрами, которые
определяют локализацию данного сегмента в общем пространстве адресуемой
памяти и правила обращения к нему. Параметры сегмента представляются в
виде 8-байтной структуры данных, называемой дескриптором. При адресации
памяти процессор использует дескриптор для того, чтобы определить
разрешено ли обращение к данному сегменту, вычислить адрес ячейки памяти
и проверить, находится ли этот адрес в пределах выбранного сегмента.
Дескрипторы сегментов хранятся в памяти в виде массивов данных, которые
сформированы в виде таблиц. Таблицы могут иметь размеры от 8 байт до 64
Кбайт, т. е. содержать до 8192 дескрипторов. Имеется три типа таблиц
дескрипторов:
GDT - глобальная таблица дескрипторов;
LDT - локальная таблица дескрипторов;
ЮТ - таблица дескрипторов прерываний.
Таблица GDT содержит дескрипторы, которые могут использоваться системой
при выполнении различных задач. Таблицы LDT содержат дескрипторы
сегментов, используемых при решении данной задачи. Количество создаваемых
таблиц LDT определяется операционной системой и зависит от числа
выполняемых задач. Общее количество таблиц LDT может достигать 8192. В
принципе, каждая задача может иметь отдельную LDT, которая включает
дескрипторы сегментов, используемых при ее решении. В случае совместного
использования сегментов таблицы LDT могут полностью или частично
перекрывать друг друга. Таблица ЮТ обеспечивает выполнение процедур
обслуживания исключений (прерываний), которые будут рассмотрены в гл. 8.
В данной главе описывается адресация памяти в защищенном режиме, которая
обеспечивается с помощью таблиц GDT и LDT.
Обращение к необходимому дескриптору в таблице осуществляется с помощью
селектора, загружаемого в соответствующий сегментный регистр: CS, DS, SS,
ES, FS или GS. Селектор представляет собой 16-разрядный указатель,
который имеет три поля (рис. 2.39).
Поле RPL (биты 0-1) определяет уровень привилегий запроса (request
privilege level). Это двухразрядный код, указывающий допустимый уровень
защиты сегмента, который может быть выбран с помощью данного селектора.
Поле TI (бит 2) служит индикатором таблицы. Его значение указывает
выбираемую таблицу: GDT при TI = 0, LDT при TI = 1.
Поле INDEX (биты 3-15) служит индексом для выбора одного из 8192
дескрипторов, содержащихся в таблице.
15 3210
| INDEX | TI | PRL |
Рис. 2.39. Формат селектора
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
""Регистр LDTR (см. рис. 2.6) содержит 16-разрядный селектор,
определяющий размещение в GDT дескриптора используемой таблицы LDT. Поле
INDEX в этом указателе содержит смещение, которое используется для
формирования адреса дескриптора таблицы LDT, выбираемого из GDT.
Дескриптор LDT содержит 32-разрядный базовый адрес используемой LDT, ее
16-разрядную границу и атрибуты, определяющие права доступа к таблице.
При загрузке в LDTR селектора таблицы LDT соответствующий дескриптор
выбирается из GDT и хранится во внутреннем программно недоступном
регистре процессора - "теневом" регистре LDTR (рис. 2.40).
Загрузка регистров GDTR, LDTR из памяти, а также сохранение в памяти их
содержимого реализуется с помощью команд LGDT, LLDT и SGDT, SLDT.
Загрузка селекторов в регистры сегментов данных DS, ES, FS, GS, SS
производится командами LDS, LES, LFS, LGS, LSS. Регистр CS является
программно недоступным, поэтому прямая загрузка в него (или выгрузка)
селекторов для выбора сегментов программ невозможна. Начальное содержимое
CS устанавливается при инициализации системы и затем изменяется
программно при выполнении команд межсегментных вызовов и переходов CALL,
JUMP и при переключении задач.
Если селектор, загруженный в сегментный регистр CS, SS, DS, ES, FS или
GS, обращается к таблице GDT (бит TI = 0) или LDT (бит TI = 1), то его
индекс, сдвинутый на три разряда влево
Селектор сегмента
(CS ... GS)
Дескриптор сегмента ("Теневой регистр" CS ... GS)
15
15
2 1
INDEX
О 31
Граница Базовый
GDT адрес GOT
DPL
Атрибуты Т Граница Г"
Базовый
сегмента | адрес сегмента j
Предыдущая << 1 .. 86 87 88 89 90 91 < 92 > 93 94 95 96 97 98 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed