Hypervisors, in general, are historically classified in two types:
- Type 1 hypervisor (Bare-Metal Architecture) – This is a hypervisor that runs directly on a given hardware platform. A Guest OS then runs at the second level above the hardware. This model represents the classic implementation of virtual machine architectures. The original hypervisors, SIMMON and CP/CMS, both developed at IBM in the 1960s. Modern equivalents of this are Oracle VM Server for SPARC, Oracle VM Server for x86, XenServer, VMware ESX/ESXi, KVM, and Microsoft Hyper-V hypervisor.
- Type 2 hypervisor (Hosted Architecture) – This is a hypervisor that runs within an OS environment. A Guest OS then runs at the third level above the hardware. Some examples of this type of system include BHyVe, VMware Workstation and VirtualBox.
If we look more closely at x86 style architecture we see that it is divided into 4 hardware resource privilege levels or rings. The operating system kernel runs in privilege level 0 or ring 0 giving it complete control over the system. In the case of Linux, ring 0 is also known as kernel space, with user mode being in ring 3.
So where does the hypervisor and virtualization fit into this?
Virtualization effectively puts the hypervisor into
Ring 0 which then in turn presents a
Ring 0 lookalike to the guest operating systems thereby fooling them into believing they are running on the native hardware.
If you would like to learn more about Virtual I/O Devices which create ring buffers and communication layers between guests and the hypervisor see “virtio: Towards a De-Facto Standard For Virtual I/O Devices by Rusty Russell at IBM OzLabs”