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