Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Реальный и защищённый режимы работы процессора
Широко известно, что первым микропроцессором, на базе которого была создана IBM PC, был Intel 8088. Этот микропроцессор отличался от первого 16-разрядного микропроцессора фирмы Intel – 8086 – прежде всего тем, что у него была 8-битовая шина данных, а не 16-битовая (как у 8086). Оба эти микропроцессора предназначались для создания вычислительных устройств, которые бы работали в однозадачном режиме, то есть специальных аппаратных средств для поддержки надёжных и эффективных мультипрограммных ОС в них не было. Однако к тому времени, когда разработчики осознали необходимость включения в микропроцессор специальной аппаратной поддержки для мультипрограммных вычислений, уже было создано очень много программных продуктов. Поэтому для совместимости с первыми компьютерами в последующих версиях микропроцессоров была реализована возможность использовать их в двух режимах – реальном (real mode – так назвали режим работы первых 16-битовых микропроцессоров) и защищённом (protected mode – означает, что параллельные вычисления могут быть защищёны аппаратно-программными механизмами). Подробно рассматривать архитектуру первых 16-битовых микропроцессоров i8086/i8088 мы не будем, поскольку этот материал должен изучаться в предыдущих дисциплинах учебного плана. Для тех же, кто с ним не знаком, можно рекомендовать такие книги, как [52, 73], и многие другие. Однако напомним, что в этих микропроцессорах (а значит, и в остальных микропроцессорах семейства i80x86 при работе их в реальном режиме) обращение к памяти с возможным адресным пространством в 1 Мбайт осуществляется посредством механизма сегментной адресации (рис. 3.1). Этот механизм был использован для увеличения количества разрядов, участвующих в указании адреса ячейки памяти, с которой в данный момент осуществляется работа, с 16 до 20 и тем самым увеличения объёма памяти. Конкретизируем задачу и ограничимся рассмотрением определения адреса команды. Для адресации операндов используется аналогичный механизм, только участвуют в этом случае другие сегментные регистры. Напомним, что для определения физического адреса команды содержимое сегментного регистра CS (code segment) умножается на 16 за счёт добавления справа (к младшим битам) четырех нулей, после чего к полученному значению прибавляется содержимое указателя команд (регистр IP, instruction pointer). Получается двадцатибитовое значение, которое и позволяет указать любой байт из 220.1
Рис. 3.1. Схема определения физического адреса для процессора 8086 В защищённом режиме работы определение физического адреса осуществляется совершенно иначе. Прежде всего используется сегментный механизм для организации виртуальной памяти. При этом адреса задаются 32-битовыми значениями. Кроме этого, возможна страничная трансляция адресов, также с 32-битовыми значениями. Наконец, при работе в защищённом режиме, который по умолчанию предполагает 32-битовый код, возможно исполнение двоичных программ, созданных для работы микропроцессора в 16-битовом режиме. Для этого введён режим виртуальной 16-битовой машины и 20-битовые адреса реального режима транслируются с помощью страничного механизма в 32-битовые значения защищённого режима. Наконец, есть ещё один режим – 16-битовый защищённый, позволяющий 32-битовым микропроцессорам выполнять защищённый 16-битовый код, который был характерен для микропроцессора 80286. Правда, следует отметить, что этот последний режим практически не используется, поскольку программ, созданных для него, не так уж и много. Для изучения этих возможностей рассмотрим сначала новые архитектурные возможности микропроцессоров i80x86. Новые системные регистры Микропроцессоров i80x86 Основные регистры микропроцессора i80x86, знание которых необходимо для понимания защищённого режима работы, приведены на рис. 3.2. Следует обратить внимание на следующее: ¨ указатель команды EIP – 32 битовый регистр, младшие 16 разрядов этого регистра есть регистр IP; ¨ регистр флагов EFLAGS – 32 бита, младшие 16 разрядов представляют регистр FLAGS; ¨ регистры общего назначения ЕАХ, ЕВХ. ЕСХ, EDX, а также ESP, ЕВР, ESI, EDI – 32-битовые, однако их младшие 16 разрядов представляют собой известные регистры AX, BX, CX, DX, SP, ВР, SI, DI; ¨ сегментные регистры CS, SS, DS, ES, FS, GS – 16-битовые. При каждом из регистров CS, SS, DS, ES, FS, GS изображены пунктиром скрытые от программистов (недоступны никому, кроме собственно микропроцессора) 64-битовые регистры, в которые загружаются дескрипторы соответствующих сегментов; ¨ регистр-указатель на локальную таблицу сегментов текущей задачи – LDTR (16 битов). При этом регистре также имеется «теневой» (скрытый от программиста) 64-битовый регистр, в который микропроцессор заносит дескриптор, указывающий на таблицу дескрипторов сегментов задачи, описывающих её локальное виртуальное адресное пространство; ¨ регистр-указатель задачи TR1 (16 битов). Указывает на дескриптор в глобальной таблице дескрипторов, позволяющий получить доступ к дескриптору задачи TSS2 – информационной структуре, которую поддерживает микропроцессор для управления задачами; ¨ регистр GDTR1 (48 битов) глобальной таблицы GDT, содержащей как дескрипторы общих сегментов, так и специальные системные дескрипторы. В частности, в GDTR находятся дескрипторы, с помощь которых можно получить доступ к сегментам TSS; ¨ регистр IDTR (48 битов) таблицы дескрипторов прерываний. Содержит информацию, необходимую для доступа к «таблице прерываний» IDT; ¨ управляющие регистры CR0 – CR3 (32-битовые) и некоторые другие регистры. Управляющий регистр CR0 содержит целый ряд флагов, которые определяют режимы работы микропроцессора. Подробно об этих флагах можно прочитать в книгах [2, 22, 48]. Мы же просто ограничимся тем фактом, что самый младший бит (РЕ, protect enable) этого регистра определяет режим работы процессора. При РЕ=0 процессор функционирует в реальном режиме работы, а при единичном значении микропроцессор переключается в защищённый режим. Самый старший бит регистра CR0 (бит PG, paging) определяет, включен (PG=l) или нет (PG=0) режим страничного преобразования адресов. Регистр CR2 предназначен для размещения в нем адреса подпрограммы обработки страничного исключения, то есть в случае использования страничного механизма отображения памяти обращение к отсутствующей странице будет вызывать переход на соответствующую подпрограмму диспетчера памяти, и для определения этой подпрограммы будет задействован регистр CR2. Регистр CR3 содержит номер физической страницы, в которой располагается таблица каталогов таблиц страниц текущей задачи. Очевидно, что, приписав к этому номеру нули, мы попадем на начало этой страницы. Популярное:
|
Последнее изменение этой страницы: 2016-05-29; Просмотров: 1509; Нарушение авторского права страницы