ВУЗ:
Составители:
23
Процессы, запущенные в виртуальной машине выполняются с
привилегиями кольца 3 (наименьшие привилегии). Код, выполняемый в
кольце 3, вызывает генерацию исключений при выполнении любой из этих
"привилегированных" инструкций. Когда это исключение сгенерировано,
процессор переключается в кольцо 0 и затем передает управление
соответствующему обработчику.
Более точно, каждый сегмент имеет связанный с ним
Дескрипторный уровень привилегий (DPL).
Этот сегментный уровень
привилегий определяет уровень привилегий большинства инструкций
(например, LLDT, LGDT). Однако, некоторые инструкции (те, которые
воздействуют на флаг разрешения прерываний процессора) получают свой
уровень привилегий из IOPL, а не из DPL. Если, например, процесс в
кольце 3 выполняет инструкцию STI или CLI, процессор генерирует
исключение, только если CPL > IOPL.
Более существенные различия между окружением
системной
виртуальной машины и окружением виртуальной машины DOS касаются
этих привилегий, обусловленных lOPL. В то время, как архитектура 80386
поддерживает перехват CLI и STI в обоих защищенных режимах и в
режиме V86, Windows 95 не перехватывает инструкции STI и CLI в
режиме V86. Менеджер виртуальных машин VMM преднамеренно
устанавливает CPL = IOPL для приложения DOS, так что инструкции CLI и
STI не вызывают
исключения. Более того, хотя Windows 95 управляют
приложениями Win16 и Win32 с CPL > I0PL так, чтобы CLI/STI вызывали
исключения для приложений Windows, обработчик исключений менеджера
виртуальных машин идет вперед и выполняет инструкцию, позволяя или
запрещая прерывание от имени приложения. Очевидно, разработчики
решили, что накладные расходы на перехват инструкций STI и CLI были
бы большей платой за быстродействие,
чем они могли бы заплатить.
23
Процессы, запущенные в виртуальной машине выполняются с
привилегиями кольца 3 (наименьшие привилегии). Код, выполняемый в
кольце 3, вызывает генерацию исключений при выполнении любой из этих
"привилегированных" инструкций. Когда это исключение сгенерировано,
процессор переключается в кольцо 0 и затем передает управление
соответствующему обработчику.
Более точно, каждый сегмент имеет связанный с ним
Дескрипторный уровень привилегий (DPL). Этот сегментный уровень
привилегий определяет уровень привилегий большинства инструкций
(например, LLDT, LGDT). Однако, некоторые инструкции (те, которые
воздействуют на флаг разрешения прерываний процессора) получают свой
уровень привилегий из IOPL, а не из DPL. Если, например, процесс в
кольце 3 выполняет инструкцию STI или CLI, процессор генерирует
исключение, только если CPL > IOPL.
Более существенные различия между окружением системной
виртуальной машины и окружением виртуальной машины DOS касаются
этих привилегий, обусловленных lOPL. В то время, как архитектура 80386
поддерживает перехват CLI и STI в обоих защищенных режимах и в
режиме V86, Windows 95 не перехватывает инструкции STI и CLI в
режиме V86. Менеджер виртуальных машин VMM преднамеренно
устанавливает CPL = IOPL для приложения DOS, так что инструкции CLI и
STI не вызывают исключения. Более того, хотя Windows 95 управляют
приложениями Win16 и Win32 с CPL > I0PL так, чтобы CLI/STI вызывали
исключения для приложений Windows, обработчик исключений менеджера
виртуальных машин идет вперед и выполняет инструкцию, позволяя или
запрещая прерывание от имени приложения. Очевидно, разработчики
решили, что накладные расходы на перехват инструкций STI и CLI были
бы большей платой за быстродействие, чем они могли бы заплатить.
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »
