· При появлении других привилегированных команд (LLDT, SIDT, LTR, STR, LAR, LSL, ARPL, VERR, VERW) возникает прерывание типа 6 (неразрешенный код команды).
В задачу, работающую в виртуальном режиме можно войти двумя основными способами:
1. Выполнив команду CALL или JMP к TSS, у которого установлен в единичное состояние бит VM (Virtual Machine) в копии регистра EFLAGS, т.е. осуществить операцию переключения задач.
2. При возврате из прерывания, с использованием команды IRET в ходе выполнения программы с CPL=0, если в загружаемом при этом из стека содержимом регистра EFLAGS, бит VM установлен в 1.
Выход процессора из режима V86 может произойти только при обработке прерываний или исключений, когда:
1. В результате прерывания происходит переход на процедуру с высшим уровнем привилегий (с CPL=0). При этом текущее состояние регистра EFLAGS заносится в стек, а бит VM сбрасывается в 0. То есть, вызванная процедура будет выполняться в защищенном режиме.
2. Прерывание вызывает переключение задачи командой JMP на задачу с TSS, в котором значение бита VM, в поле EFLAGS, равно нулю.
Следует заметить, что в процессорах определен также расширенный виртуальный режим EV86 (Extended V86), который включается дополнительной установкой в единичное состояние бита VME в управляющем регистре CR4. В этом режиме процессор имеет возможность управлять флагом IF (с помощью инструкций CLI и STI) не только при IOPL=3, но и при IOPL<3. В этом режиме IOPL – чувствительные инструкции не вызывают особого случая – отказа, а воздействуют на виртуальную версию флага VIF в регистре EFLAGS. Этот флаг не влияет на восприятие процессором внешних (маскируемых) прерываний, а лишь указывает на состояние задачи EV86 – разрешила или запретила она обработку прерываний. При этом, во-первых, повышается производительность – инструкции CLI и STI теперь не приводят к отказам, а во-вторых, упрощается монитор, обеспечивающий программную виртуализацию флага прерываний (в V86 монитор должен был отслеживать все инструкции, влияющие на IF – CLI, STI, PUSHF, POPF, INT и IRET). Аппаратная виртуализация флага приводит к значительному повышению производительности. В режиме EV86 сегмент состояния задачи TSS приобретает новую 32–байтную структуру – карту перенаправления прерываний (смотри раздел о многозадачном режиме работы). Каждый бит карты перенаправления соответствует одному из 256 (32×8) программных прерываний, вызываемых инструкцией INTn. Если этот бит установлен (равен 1), то соответствующее прерывание вызовет особый случай – отказ с выходом из EV86 в монитор. Если же он сброшен, то прерывание обрабатывается процедурой реального режима без выхода из EV86.
На программные прерывания, вызываемые иным образом, а также особые случаи и внешние аппаратные прерывания карта перенаправления действия не оказывает.
В заключение приведем таблицу возможностей рассмотренных режимов работы процессоров i386+, при выполнении задач (табл.IX.1).
Табл.IX.1.
Возможности различных режимов процессоров i386+.
Возможности |
Реальный режим (PE = 0) |
Защищенный режим (PE=1) |
|
V – режим (VM=1) |
P- режим (VM=0) |
||
32-битные регистры общего назначения |
Доступны |
Недоступны |
Доступны |
Многозадачность |
Нет |
Нет |
Возможна |
Защита: - сегментов - страниц - ввода/вывода |
Нет |
Нет |
Есть |
Нет |
Есть |
Есть |
|
Нет |
Возможна |
Есть |
|
Уровни привилегий |
0 |
3 |
0, 1, 2, 3 |
Доступность команд МП i386+ |
Не все |
Не все |
Все |
Память: - общий объем - размер сегмента - страничный механизм - виртуальная память |
|||
До 1 Мбайт |
До 1 Мбайт |
До 4 (64) Гбайт |
|
До 64 Кбайт |
До 64 Кбайт |
До 4 Гбайт |
|
Нет |
Возможен |
Возможен |
|
Нет |
Нет |
Возможна |
5. Режим SMM
Как было уже упомянуто выше, кроме рассмотренных трех основных рабочих режимов работы процессоров семейства Х86, начиная с некоторых модификаций процессоров i486, введен дополнительный специальный режим системного управления SMM (SystemManagementMode). Этот режим работы независим от программ пользователя и даже самой операционной системы и предназначен для выполнения некоторых автономных действий. Главной его задачей является обеспечение управления энергопотреблением. В режим SMM процессор может войти только при поступлении на его вход SMI (SystemManagementInterrupt), сигнала немаскируемого прерывания с наивысшим приоритетом - SMI#. Процессор подтверждает приход прерывания SMI специальным циклом шины (цикл подтверждения SMI).
Процессоры Pentium Pro и все более поздние модели процессоров семейства Х86, т.е. процессоры 6 поколения семейства, могут войти в режим SMM также и при приеме соответствующего сообщения по шине APIC (AdvancedPeripheralInterruptController– усовершенствованного контроллера прерываний). Этот контроллер разработан специально для использования в многопроцессорных системах, в которых могут работать процессоры 6 поколения.
Поскольку режим SMM является автономным режимом, при входе в него, после выполнения текущей команды, процессор в специальной энергонезависимой памяти SMRAM (SystemManagementRAM) запоминает свой контекст. В контекст включаются состояние практически всех его основных регистров на момент перехода в режим SMM, включая программно-невидимые регистры CR1, CR2 и CR4, а также теневые регистры дескрипторов для CS, DS, ES, FS, GS и SS. Автоматическое сохранение содержимого регистров DR5…DR0, TR7…TR3 и регистров FPU не производится. Память SMRAM представляет память, объемом от 32 Кбайт (минимальный объем) до 4 Гбайт, и начинается она с физического адреса SMBASE (по умолчанию 30000h), значение которого хранится во внутреннем регистре процессора. Кроме области сохранения контекста процессора, она включает в себя область размещения подпрограмм обработки запросов SMI. После сохранения контекста процессор переходит к выполнению обработчика SMI (см. рис.IX.1).
Рис.IX.1. Распределение адресного пространства SMRAM.
Обработчик представляет собой последовательность обычных инструкций, исполняемых процессором в режиме, напоминающем реальный. При входе в режим SMM автоматически запрещаются аппаратные прерывания (и даже немаскируемые), и не генерируются особые случаи, так что действия процессора однозначно определяются программой обработчика SMI (Как правило, процедуры сохранение системы в критических ситуациях, например, при отключении электроэнергии). Программа обработчика завершается инструкцией RSM(Reset system Management), которая выполняется только в режиме SMM. Выполнение команды RSM приводит к восстановлению контекста процессора из образа, хранившегося в SMRAM, т.е. восстановлению регистров процессора, и его переключение в исходный режим. Далее процессор продолжает выполнение прерванной программы.
Для более четкого усвоения вышеизложенного, на рисунке IX.2 приведена схема переходов между различными режимами работы процессоров i486+ с указанием сигналов, инициирующих эти переходы.
Рис IX.2. Схема переходов между режимами работы процессоров
семейства Х86 и сигналы, инициирующие эти переходы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.