к содержанию |
Обычно мультизадачные операционные системы предоставляют для выполнения i8086-программ "виртуальные машины i8086". Эти виртуальные машины реализуются при помощи задач виртуального режима.
Операционная система может виртуализовать ресурсы компьютера - память, порты ввода/вывода, систему обработки прерываний. При этом программа, ориентированная на реальный режим MS-DOS получает в своё распоряжение ресурсы, которые она воспринимает как физические.
Виртуализация памяти заключается в преобразовании адреса формата реального режима <сегмент:смещение> в линейный, а затем и физический с использованием схемы преобразования адресов защищённого режима. В этом случае программе предоставляется 1 мегабайт памяти, который может быть расположен в любом месте физической памяти компьютера и может подвергаться свопингу на диск для реализации виртуальной оперативной памяти. С точки зрения программы, работающей на виртуальной машине, адреса отображаются на этот 1 мегебайт памяти так, как будто бы это была физическая память компьютера.
Виртуализация ввода/вывода основана на том, что такие команды, как IN, OUT, INS, OUTS, CLI, STI чувствительны к текущему уровню IOPL. Так как обычно виртуальная машина работает в непривилегированном третьем кольце защиты, выдача этих команд программой в виртуальном режиме приводит к исключению. Операционная система может эмулировать действие этих команд безопасным для себя образом, что однако может привести к существенному замедлению работы виртуальной машины.
Виртуализация прерываний основана на выходе процессора из виртуального режима и возврате в защищённый при возникновении прерываний. При возникновении прерывания управление получает обработчик защищённого режима, установленный операционной системой. Операционная система может эмулировать функции соответствующего обработчика реального режима, например, функции обработчика прерывания INT 21h MS-DOS или BIOS.
к содержанию |