Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPT_otvety_na_ekzamen.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
417 Кб
Скачать
☆

4. Виртуальный режим (v86)

При виртуальном режиме происходит эмуляция (моделирование) функционирования процессора 8086 в операционной среде основного процессора i386+, работающего в многозадачном режиме, как одной из его возможных задач. При этом обеспечивается ряд средств защиты и возможность страничной организации памяти. Поэтому, часто говорят, что в режиме V86 микропроцессор работает как виртуальный процессор 8086, состоящий из аппаратных средств основного процессора i386+, системного программного обеспечения, представляющего собой специальную программу – монитор V86 в среде основной ОС и прикладного программного обеспечения, разработанного для 8086. Сам же монитор V- режима (V86) представляет собой программу Р - режима, которая выполняется на уровне привилегий 0.

Таким образом, задача в виртуальном режиме имеет сложную структуру: обычная пользовательская программа 8086, вложена в программу-монитор V86, которая, в свою очередь, является задачей защищенного режима базового процессора i386+, выполняемой на уровне привилегий 0. Но программа-монитор V86 может, например, эмулировать средства MS-DOS. В этом случае структура задачи получается еще более сложной: обычная задача 8086 вкладывается в MS-DOS, а сама MS-DOS – в монитор V86.

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

  • При использовании страничной организации памяти, в случае нарушения правил доступа к странице, реализуется прерывание типа 14 (отказ страницы).

  • При появлении привилегированных команд, которые выполняются в защищенном режиме только при CPL = 0 (команды LIDT, LGDT, LMSW, CLTS, HLT, а также команда MOV при обращении к регистрам управления, тестирования и отладки), возникает прерывание типа 13 (нарушение защиты).

  • При появлении других привилегированных команд (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 Гбайт

Нет

Возможен

Возможен

Нет

Нет

Возможна

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]