Виртуализация | VMware: полная виртуализация

Опубликовано: 9 Июля, 2021

Предварительные требования - Введение в виртуализацию, эталонная модель виртуализации на компьютере
При полной виртуализации первичное оборудование реплицируется и становится доступным для гостевой операционной системы, которая работает, не зная о такой абстракции и не требующих изменения. Технология VMware основана на ключевой концепции полной виртуализации. Либо в настольной среде с помощью гипервизора типа II, либо в серверной среде с помощью гипервизора типа I VMware реализует полную виртуализацию. В обоих случаях возможна полная виртуализация посредством прямого выполнения нечувствительных инструкций и двоичной трансляции чувствительных инструкций или аппаратных ловушек, что позволяет виртуализовать архитектуру, подобную x86.

Полная виртуализация и двоичный перевод -
VMware широко используется, поскольку она стремится виртуализировать архитектуры x86, которые работают без изменений поверх своих гипервизоров. С внедрением аппаратной виртуализации можно достичь полной виртуализации за счет поддержки оборудования. Но раньше гостевые операционные системы x86, не модифицированные в виртуализированной среде, могли выполняться только с использованием динамической двоичной трансляции.

Поскольку набор чувствительных инструкций не является подмножеством привилегированных инструкций, архитектура архитектуры x86 не удовлетворяет первой теореме виртуализации. Из-за этого отличается поведение, когда такие инструкции не выполняются в кольце 0, что является нормальным в среде виртуализации, где гостевая ОС работает в кольце 1. В основном создается ловушка и метод, с помощью которого она управляет дифференциацией решение, в котором применяется виртуализация для x86. При динамической двоичной трансляции ловушка обнаруживает трансляцию прерываний или инструкций-нарушителей в соответствующий набор инструкций, который устанавливает ту же цель без создания исключений. Кроме того, для увеличения производительности соответствующий набор инструкций кэшируется, поэтому перевод больше не важен для дальнейших встреч с теми же инструкциями. Ниже приведен рисунок, который это демонстрирует.


Рисунок - Эталонная модель полной виртуализации

Основным преимуществом этого подхода является то, что гости могут работать без изменений в виртуализированной среде, что является важной функцией для операционной системы, исходный код которой не существует. Двоичная трансляция переносима для полной виртуализации. Так же, как и перевод инструкций во время выполнения, возникают дополнительные накладные расходы, которых нет в других методах, таких как паравиртуализация или виртуализация с аппаратной поддержкой. Напротив, двоичная трансляция реализуется только для подмножества набора команд, в то время как остальные управляются посредством прямого выполнения на основном оборудовании. Это каким-то образом снижает влияние на производительность двоичной трансляции.

Преимущества двоичного перевода -

  1. Этот вид виртуализации обеспечивает лучшую изоляцию и безопасность виртуальной машины.
  2. По-настоящему изолированные многочисленные гостевые ОС могут работать одновременно на одном оборудовании.
  3. Это единственная реализация, которая не требует аппаратной поддержки или поддержки операционной системы для виртуализации чувствительных инструкций, а также привилегированных инструкций.

Недостатки двоичного перевода -

  1. Это занимает много времени во время выполнения.
  2. Это требует больших накладных расходов на производительность.
  3. Он использует кеш кода для хранения переведенных наиболее часто используемых инструкций для повышения производительности, но увеличивает использование памяти наряду с затратами на оборудование.
  4. Производительность полной виртуализации на архитектуре x86 составляет от 80 до 95 процентов производительности хост-машины.