This post is an attempt to gather common terms, and provide links for more reading (mainly to wikipedia) about virtualization et al.
Virtualization term has been coined in 1960s to describe virtual machine. Right now, virtualization can also describe other areas like: software, memory, storage, data, network and hardware. However, in the common understanding, virtualization means hardware virtualization. It refers to the creation of virtual machine htat acts like a real computer with an operating system.
Hardware Virtualization can be divided into two main types:
- full virtualization - completely simulates the actual hardware, guest system can run unmodified.
- paravirtualization - uses software interface which is similar, but not identical to the underlying hardware.
Virtual machine simulates hardware to allow an unmodified guest OS to be run in isolation.
- Software-assisted - completely relies on binary translation to virtualize the execution of sensitive, non-virtualizable instruction sets. It emulates the hardware using the software instruction sets. Due to binary translation, it is often criticized for performance issue: Eg. VirtualBox, VMware workstation, Virtual PC
- Hardware-assisted - it eliminates the binary translation and it directly interrupts with hardware using the virtualization technology which has been integrated on processors. Guest OS's instructions might allow a virtual context execute privileged instructions directly on the processor, even thought it is virtualized. Eg. VMware ESXi, KVM, Hyper-V, Xen.
It requires the guest operating system to be explicitly ported for the para-API, conventional OS distribution that is not paravirtualization-aware cannot be run on top of a paravirtualizing VVM.
Hypervisor (virtual machine monitor, VMM) is computer software, firmare or hardware that runs virtual machines. A computer on which a hypervisor runs one or more virtual machines is called a host machine, and each virtual machine is called a guest machine. There are two types of hypervisors:
- Type-1, native or bare-metal hypervisors
- Type-2 or hosted hypervisors
Type-1 hypervisor is very basic OS on top of which there can be run virtual machines. The physical machine the hypervisor is running on serves virtualization purpose only. It is mainly found in enterprise environments. Due to its simplicity, it doesn't offer many functionalities. Examples:
- VMware ESX/ESXi
- KVM (it oftentimes can be categorized as type-2 hypervisor)
- Oracle VM
This type of hypervisor runs on a conventional OS as an another program. Examples:
- VMware Workstation
- Windows Virtual PC
- Parallels Desktop