|
|
О виртуализации
Как известно, современные процессоры Intel и AMD поддерживают технологии виртуализации, позволяющие использовать один компьютер как несколько виртуальных машин, на каждой из которых работает своя операционная система.
Уместно вспомнить, что для архитектуры x86, идея виртуализации процессора и системных ресурсов не является чем-то принципиально новым. Еще около двух десятилетий назад, в процессоре 80386 впервые был предусмотрен режим виртуального процессора 8086, который позволял программе, работающей в защищенном режиме, запустить некоторую дочернюю задачу, написанную для выполнения в реальном режиме. При этом процессор обеспечивает перехват обращений дочерней задачи к заданным областям памяти, портам ввода-вывода и системным регистрам процессора. При попытке дочерней задачи сделать что-то непозволительное управление передается программе-супервизору для выполнения эмуляции по заданному сценарию или вывода сообщения об ошибке. При запуске сеанса DOS в среде Windows используется именно этот режим.
Современные технологии Intel Virtualization Technology и AMD Virtualization Technology используют тот же принцип, но если 32-битный 80386 позволял виртуализировать только 16-битный 8086, работающий в реальном режиме, то сегодня объектом виртуализации может быть полнофункциональный 64-битный процессор. Технологии виртуализации от Intel и AMD достаточно похожи, но на уровне машинного кода несовместимы.
О готовых программных продуктах, использующих виртуализацию, сказано немало. Предлагаемый материал имеет несколько иную направленность. Он предназначен для специалистов, желающих изучить данный вопрос изнутри, то есть на уровне ассемблерного кода и поэкспериментировать с написанием собственных программ, использующих эти технологии. Материал дополнен исходными текстами простейшего монитора виртуального режима на ассемблере, способного разрешать и запрещать обращения "гостевых" процедур к заданным аппаратным ресурсам.
|
|