Virtualization | VMware: Full Virtualization
Prerequisites – Introduction to Virtualization, Machine Reference Model of Virtualization
In full virtualization primary hardware is replicated and made available to the guest operating system, which executes unaware of such abstraction and no requirements to modify. Technology of VMware is based on the key concept of Full Virtualization. Either in desktop environment, with the help of type-II hypervisor, or in server environment, through type-I hypervisor, VMware implements full virtualization. In both the cases, full virtualization is possible through the direct execution for non-sensitive instructions and binary translation for sensitive instructions or hardware traps, thus enabling the virtualization of architecture like x86.
Full Virtualization and Binary Translation –
VMware is widely used as it tends to virtualize x86 architectures, which executes unmodified on-top of their hypervisors. With the introduction of hardware-assisted virtualization, full virtualization is possible to achieve by support of hardware. But earlier, x86 guest operating systems unmodified in a virtualized environment could be executed only with the use of dynamic binary translation.
Since the set of sensitive instruction is not a subset of privileged instruction, x86 architecture design is not satisfy the first theorem of virtualization. Due to this different behaviour occurs while such instructions are not run in the Ring 0, which is normal in a virtualization environment where the guest OS is run in Ring 1. Basically, a trap is created, and the method in which it manages differentiation of the solution in which virtualization is applied for x86. In dynamic binary translation, the trap encounters the translation of interrupts or offending instructions into a corresponding set of instructions that establishes the same target without making exceptions. In addition, to expand performance, the corresponding set of instruction is cached, so the translation is not important anymore for further encounters of the same instructions. Below is the figure which demonstrates it.
Figure – Full Virtualization Reference Model
The major benefit of this approach is that guests can run unmodified in a virtualized environment, which is an important feature for operating system whose source code does not existed. Binary translation is portable for full virtualization. As well as translation of instructions at runtime presents an additional overhead that is not existed in other methods like paravirtualization or hardware-assisted virtualization. Contradict, binary translation is only implemented to a subset of the instruction set, while the others are managed through direct execution on the primary hardware. This depletes somehow the impact on performance of binary translation.
Advantages of Binary Translation –
- This kind of virtualization delivers the best isolation and security for Virtual Machine.
- Truly isolated numerous guest OS can execute concurrently on the same hardware.
- It is only implementation that needs no hardware assist or operating system assist to virtualize sensitive instruction as well as privileged instruction.
Disadvantages of Binary Translation –
- It is time consuming at run-time.
- It acquires a large performance overhead.
- It employs a code cache to stock the translated most used instructions to enhance the performance, but it increases memory utilization along with the hardware cost.
- The performance of full virtualization on the x86 architecture is 80 to 95 percent that of the host machine.