Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс шпоры.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.62 Mб
Скачать

23. Режим виртуального микропроцессора 8086 (v86)

Прикладные программы для 8086 микропроцессора могут исполняться на 32-разрядных процессорах как в реальном режи­ме, так и в режиме виртуального 8086 (V86), который является особым состоянием задачи защищенного режима. Режим V86 более привлекателен своими возможностями и гибкостью:

- в этом режиме работает защита и механизм страничной Переадресации, позволяющий адресоваться к любой области 4-гигабайтного пространства памяти;

- выполнение приложений 8086 в среде V86 возможно па­раллельно с приложениями защищенного режима;

- несколько задач в режиме V86 совместно могут исполь­зовать общие области кода операционной системы.

Все программы, выполняемые в режиме V86, имеют уро­вень привилегий 3, т.е. минимальные привилегии (реальный ре­жим подразумевает уровень привилегий 0). Таким образом, про­граммы в V86 выполняются со всеми проверками защиты. По­пытка выполнения привилегированных инструкций вызывает исключение. Попытка выполнения инструкций, допустимых только для защищенного режима, также вызовет исключение.

Прерывания в V86 для полной эмуляции машины на 8086 обрабатываются особым образом. Все прерывания и исключения влекут за собой смену уровня привилегий обратно к уровню операционной системы защищенного режима. Эта ОС может распознать, что прерывание пришло из V86, по образу регистра флагов в стеке. Далее ОС может либо обработать это прерывание самостоятельно, либо переслать его к ОС реального режима, ра­ботающей в V86.

В конечном итоге ОС защищенного режима может совер­шенно прозрачно для приложения 8086, работающего в V86, эмулировать окружение обычной машины 8086, включая преры­вания и перехватывая обращения к портам.

Вход в режим V86 - установка бита VM в регистре флагов - возможен одним из двух способов:

- выполнение инструкции возврата в 32-битном режиме, когда образ регистра флагов сохранен в стеке с установленным битом VM (при CPL = 0, иначе бит VM не установится);

- переключение на задачу, у которой в TSS образ регистра флагов имеет установленный бит VM.

Выход из режима V86 возможен только при обработке пре­рывания. Если вызываемая процедура имеет CPL = 0, то бит VM будет сброшен, и она будет выполняться в защищенном режиме. Если ее CPL > 0, произойдет нарушение защиты. Если прерыва­ние вызывает переключение задач, состояние регистров с уста­новленным флагом VM сохранится в TSS старой задачи, к кото­рой можно будет вернуться. Новый режим (защищенный или V86) установится в соответствии с TSS новой задачи. ,

Значение бита VM не может быть изменено никакими дру­гими способами; кроме того, его значение не может быть и про­читано - при любом программном сохранении регистра флагов значение VM всегда показывается нулевым. Так что приложе­ние, выполняемое в среде V86, никак не может ни переключить режим процессора, ни распознать, в каком режиме - реальном или виртуальном - оно исполняется.

24. Режим системного управления sмм.

Соврем. модели 32-разрядных МП, кроме обычных режимов - реального, защищенного и режима V86, - имеют доп. режим сист. упр. SMM (System Management Mode). Этот режим предназн. для вып. некоторых действий с возможностью их полной изоляции от приклад. прогр. обеспеч. и даже ОС. Глав. образом этот режим предназн. для реализации системы управл. энергопотреблением. В режим SMM процессор может войти только по сигналу на входе SM1# (System Management Interrupt). Сигнал SMI# для процессора является запросом прерывания с наивысшим приоритетом. Обнаружив активный сигнал (низкий уровень) SMI#, процессор по завершении текущей инструкции и выгрузки буферов записи перекл. в режим SMM. Сразу при входе в SMM процессор сохраняет свой контекст - почти все регистры - в спец. памяти SMRAM. Эта память явл. выдел. областью физической памяти, доступ к которой обеспеч. внешними схемами в шинных циклах обращения к памяти только при наличии соответствующего сигнала. После сохранения контекста процессор переходит к вып. обработчика SMI, который расположен в той же памяти SMRAM. Обработчик представляет собой последов. обычных инструкций, исполняемых процессором в режиме, напоминающем реальный. При входе в режим SMM автоматически запрещаются аппаратные прерывания (включая и немаскируемые) и не генерируются исключения, так что действия процессора однозначно определяются программой обработчика SMI. Процедура обработчика завершается инструкцией возврата, по которой процессор восст. свой контекст из образа, хранившегося в SMRAM, и возвращается в обычный режим работы.

При возврате из SMM возможны некоторые варианты, заказанные обработчиком (в пределах возможности SMM данного процессора). Во-первых, обработчик может программно внести изменения в образ контекста процессора, и при его восст. процессор может вернуться не в то состояние, в котором произошло SMI. Во-вторых, возможен выбор варианта для случая, когда прерывание SMI возникло во время останова процессора по инструкции HALT: можно вернуться снова на инструкцию останова, а можно перейти к вып. след. за ней инструкции. В-третьих, возможен рестарт (повторное выполнение) инструкции ввода-вывода, предшествующей появлению сигнала SMI. Обработчик SMI «разбудит» устройство, после чего операция ввода-вывода рестартует, и прикладное ПО (или драйвер) «не заметит», что устройство пребывало в спячке. Таким образом, управл. потреблением может быть организовано на уровне BIOS способом, совершенно «прозрачным» для программного обеспечения (в том числе и ОС). Прозрачность SMM обеспечивается следующими свойствами режима:

- возможностью только аппаратного входа в SMM;

- исполнением кода SMM в отдельном адресном пространстве;

- полным сохранением состояния прерванной программы в области SMRAM;

- запретом обычных прерываний;

- восстановлением состояния прерванной задачи по выходу из режима SMM.

Память SMRAM должна быть физически или логически выделенной областью размером от 32 Кб (минимальные потребности SMM) до 4 Гб. SMRAM располагается, начиная с адреса SMIBASE (по умолчанию 3000h).

Если режим SMM используется для отключения питания процессора с возможностью быстрого «пробуждения», память SMRAM, хранящая контекст процессора, должна быть энергонезависимой. Память SMRAM должна быть схемотехнически защищена от доступа прикладных программ. Процессор генерирует специальный вых. сигнал, который и должен явиться «ключом» доступа к этой памяти. В режиме SMM исп. прерываний возможно, однако предвар. необходимо позаботиться о корректной инициализации таблицы прерываний, по крайней мере, для исп. векторов. Маскируемые аппаратные прерывания могут быть разрешены просто установкой флага IF, немаскируемое прерывание разрешается программным вызовом его обработчика.

Контекст математического сопроцессора (и регистры ММХ) при SMI автоматически не сохраняется, поскольку операции с плавающей точкой в режиме SMM вряд ли кому-либо потребуются. Однако если SMI используется для выключения процессора, контекст блока FPU может быть программно сохранен обработчиком.

Значение 3000h базового адреса SMRAM, устанавливаемое по аппаратному сбросу (сигналу RESET) процессора, может быть программно изменено на другое, выровненное по границе 32 Кб, во время исполнения обработчика SMI.