Технологии виртуализации вчера, сегодня, завтра


Виртуализация сегодня и завтра: Intel VT и AMD «Pacifica» - часть 3


Вот и вся технология виртуализации VT-x - мы просто переводим наш процессор в такой режим, когда он перехватывает некоторые (определенные нами) события и передаёт их в специальную программу - менеджер виртуальной машины. И никакой сложной бинарной трансляции!

Всего в VT-x десять новых инструкций:

  • VMXON и VMXOFF включают и выключают режим VMX.
  • VMWRITE позволяет программисту записывать данные в структуру VMCS, описывающую виртуальную машину; VMREAD - аналогично читать данные из VMCS. Собственно формат структуры VMCS официально неизвестен, и каким образом и что там, вообще говоря, сохраняется - одна Intel знает. Заметим, также, что сама структура VMCS относительно невелика по размерам (единицы килобайт) и не хранит в себе, к примеру, данных о виртуальной памяти, образующей физическую память «виртуального компьютера», - эти данные менеджер VMM поддерживает (загружает и сохраняет) для виртуальных машин самостоятельно.
  • VMPTRLD позволяет выбрать текущую виртуальную машину (указатель на VMCS). VMPTRST, аналогично, сохранить указатель на текущую виртуальную машину.
  • VMLAUNCH позволяет запустить выбранную виртуальную машину (описывающуюся ранее установленным указателем на корректную текущую VMCS).
  • Исполнение кода работающей виртуальной машины прерывает либо наступление указанного в VMCS события (внешнего прерывания, попытки выполнить ту или иную инструкцию), либо выполнение инструкции VMCALL (если она разрешена в настройках VMCS).
  • VMRESUME позволяет продолжить прерванное событием выполнение кода на виртуальной машине.
  • VMCLEAR используется для инициализации пустой структуры VMCS и для перевода выбранной виртуальной машины в «остановленное» состояние (с сохранением данных VMCS).

Доступ к инструкциям VT-x по умолчанию заблокирован; для их включения требуется «включить» бит 4 в четвёртом контрольном регистре процессора (CR4.VMXE=1) и «включить» биты 0 и 2 в MSR-регистре 3Ah. На виртуальной машине, эмулируемой с помощью VT-x, можно замаскировать поддержку VT-x, сообщаемую инструкцией CPUID, и принудительно заблокировать любую возможность использования в виртуальной машине инструкций данного семейства.


Начало  Назад  Вперед



Книжный магазин