The Virtualization enables one computer to carry out the job of multiple computers, with the help of sharing resources of single hardware across several environs. The full virtualization and paravirtualization are categorized under CPU virtualization. These are mainly distinguished by the fact that in full virtualization the unmodified OS is not awared about the virtualization and it uses binary translation to trap the OS calls at the run time. Conversely, in paravirtualization, the hypercalls are used in place of non-virtualizable OS instructions and this whole process takes place at the compile time where these instructions are handled.
Before understanding the terminologies in detail we must consider understanding the term like hypervisor and how these concepts are generated. In cloud services such as IaaS (Infrastructure as a service), virtualization plays a crucial role in providing the services from the cloud provider end to the cloud subscriber. Cloud provider has a set of virtual machines which are allocated to the clients. Iaas component stack contains various layers such as hardware, operating system, middleware, and application. Among all these layers the operating system layer is divided into two parts – Lower layer and higher layer.
The lower layer is utilized by the VMM (Virtual Machine Monitor or Hypervisor) while, the higher layer is captured by an operating system running inside a VM referred to as a guest operating system. Hypervisor or Virtual Machine Monitor located just over the hardware, intended to manage all the hardware resources. So, a hypervisor is accountable for running the guest OS directly on the CPU. This only functions well if the guest OS is running on the same instruction set as of the host OS; otherwise, an instruction translation takes place.
Content: Full Virtualization and Paravirtualization
|Basis for comparison
|Binary translation and direct execution
|Unmodified guest OS and excellent compatibility.
|Guest OS codified to issue hypercalls so it.
|VMware, Microsoft, Parallels
|Guest OS hypervisor independent
|Not completely dependent, both conditions are possible.
Definition of Full Virtualization
Full virtualization is the first generation of the software solution regarding server virtualization and developed in the year of 1966 by IBM. It works by merging the binary translation and the direct execution where the guest OS is entirely separated from the elementary hardware and virtualization layer. Therefore, whatever the virtual machines are producing a dynamic translator rewrites to the underlining hardware. It involves a lack of awareness at the guest OS end about its virtualization and modification is inevitable.
The technologies provide full virtualization support are VMWare, ESXi and Microsoft virtual servers. Each time an OS instruction is generated the hypervisor translates it during run-time quickly and caches the outcome for the future references. While the user-level instructions are executed without modification at native speed. However, the storage of the translated instructions during the binary translation is intended to improve performance but this result in an increase in the cost of memory consumption.
Another demerit of the full virtualization is binary translation also takes much time and can achieve a huge performance overhead. I/O intensive applications are very challenging to employ full virtualization.
Definition of Paravirtualization
Paravirtualization is nothing but the interaction of the guest OS to the hypervisor in order to boost performance and productivity. Unlike full virtualization, paravirtualization does not implement complete isolation; instead, partial isolation is implemented in the approach. It also alters OS kernel to substitute the hypercalls in place of non-virtualizable instructions. The purpose of hypercalls is to interact with the virtualization layer hypervisor directly.
In paravirtualization, there are various functions performed by hypervisor such as the arrangement of hypercalls interface for other crucial kernel functions like memory management, time keeping and interrupt handling. The major merit of paravirtualization is that it can easily reduce the virtualization overhead. However, most userspace workloads gain very less, and close native performance which is not obtained for all workloads.
Furthermore, it is less compatible and portable as it does not support the unmodified OS. It could also arise some crucial support and maintainability problems in the production environ due to the need for deep OS kernel modifications.
Key Differences Between Full Virtualization and Paravirtualization
- Full virtualization virtual machine simulates sufficient peripherals to permit the execution of the instructions in isolation of an unmodified guest OS. In contrast, in paravirtualization the virtual machine does not essentially simulate hardware but rather provides a specific API which is only utilized when the guest OS is subjected to modification.
- The full virtualization uses binary translation and direct approach. On the contrary, paravirtualization utilizes hypercalls for its operations.
- Paravirtualization is compelled by the aleration in the guest OS code for the generation of hypercalls. As against, in full virtualization, no modification in guest OS is required.
- The speed, performance in terms of overhead produced and security of paravirtualization is a way better than the full virtualization. However, it is not that much compatible and portable relative to full-virtualization.
- There are very few examples of paravirtualization such as VMware and Xen. Conversely, full virtualization is implemented in VMware, Microsoft and Parallels systems.
- In full virtualization, the guest OS entirely relies on the hypervisor while this isn’t the case in paravirtualization.
The full virtualization is different from para-virtualization because in full virtualization the unmodified OS runs in a complete isolated way. On the other hand, in the paravirtualization, the Virtual machine does not completely isolate the OS but modifies it in order to make it compatible with the certain API’s.