Технология VMware основана на ключевой концепции полной виртуализации. Либо в среде рабочего стола с помощью гипервизора типа II , либо в серверной среде с помощью гипервизора типа I VMware реализует полную виртуализацию. В обоих случаях возможна полная виртуализация посредством прямого выполнения нечувствительных инструкций и двоичной трансляции чувствительных инструкций или аппаратных ловушек, что позволяет виртуализовать архитектуру, подобную x86.
Полная виртуализация и двоичная трансляция
Широко используется VMware, поскольку она стремится виртуализировать архитектуры x86, которые работают без изменений поверх своих гипервизоров. С внедрением аппаратной виртуализации полная виртуализация становится возможной за счёт поддержки оборудования. Но раньше гостевые операционные системы x86, не модифицированные в виртуализированной среде, могли выполняться только с использованием динамической двоичной трансляции.
Поскольку набор чувствительных инструкций не является подмножеством привилегированных инструкций, архитектура архитектуры x86 не удовлетворяет первой теореме виртуализации. Из-за этого отличается поведение, когда такие инструкции не выполняются в кольце 0, что является нормальным для среды виртуализации, где гостевая ОС работает в кольце 1. В основном создаётся ловушка и метод, с помощью которого она управляет дифференциацией решение, в котором применяется виртуализация для x86. При динамической двоичной трансляции ловушка обнаруживает трансляцию прерываний или инструкций-нарушителей в соответствующий набор инструкций, который устанавливает ту же цель без создания исключений. Кроме того, для увеличения производительности соответствующий набор инструкций кэшируется, поэтому перевод больше не важен для дальнейших встреч с теми же инструкциями.
Рисунок — Эталонная модель полной виртуализации
Основное преимущество этого подхода заключается в том, что гости могут работать в виртуализированной среде без изменений, что является важной функцией для операционной системы, исходный код которой не существует. Двоичный перевод переносим для полной виртуализации. Так же, как и перевод инструкций во время выполнения, возникают дополнительные накладные расходы, которых нет в других методах, таких как паравиртуализация или виртуализация с аппаратной поддержкой. Напротив, двоичная трансляция осуществляется только для подмножества набора инструкций, в то время как остальные управляются посредством прямого выполнения на основном оборудовании. Это каким-то образом снижает влияние на производительность двоичной трансляции.
Преимущества двоичного перевода
- Этот вид виртуализации обеспечивает лучшую изоляцию и безопасность виртуальной машины.
- По-настоящему изолированные многочисленные гостевые ОС могут работать одновременно на одном оборудовании.
- Это единственная реализация, которая не требует аппаратной поддержки или поддержки операционной системы для виртуализации чувствительных инструкций, а также привилегированных инструкций.
Недостатки двоичного перевода
- Во время выполнения это требует много времени.
- Это требует больших накладных расходов на производительность.
- Он использует кеш кода для хранения переведённых наиболее часто используемых инструкций для повышения производительности, но увеличивает использование памяти вместе с затратами на оборудование.
- Производительность полной виртуализации на архитектуре x86 составляет от 80 до 95 процентов производительности хост-машины.