A hypervisor is a unique type of software that allows a computer to run more than one operating system (OS). Through a process known as virtualization, the software tricks each OS into thinking it has exclusive access to a particular set of hardware. It sits between the physical hardware and the OS and presents a virtual set of hardware to all other software running on the machine. It also manages the flow of information between software, the virtualized hardware, and the physical hardware. This type of software is used in both consumer and enterprise settings.
In most instances, a computer’s OS runs in a highly privileged state where it has unfettered access to the machine’s hardware while applications run at a less privileged state and must rely on the OS. These different levels of hardware access privileges are known as rings, with the OS traditionally running in ring 0; user applications run in rings 1–3, which have fewer privileges. This model works fine most of the time, but falls apart completely when trying to run more than one OS on a single computer simultaneously. A hypervisor solves this problem by using a technique called virtualization.
Virtualization isn’t a new idea, but it’s become something of a buzzword since the mid-2000s as corporations and the information technology (IT) industry have realized its potential to lower costs and increase efficiency. There are many different approaches to virtualization, but the basic idea is to create simulated sets of hardware which are often known as virtual machines. In the case of a hypervisor, which may also be called a virtual machine monitor, each virtual machine contains a “guest” OS. The hypervisor itself can run directly on the physical hardware, in which case it’s known as a “bare metal” type or within a host operating system as a “software” hypervisor.
Hypervisors must use some very sophisticated techniques to manage their guest operating systems and ensure they don’t conflict with one another. Since an OS inside a virtual machine is unaware that it’s been deprived of ring 0 privileges, it may attempt to perform restricted functions without permission. In these cases, the hypervisor may intercept a function before it reaches the hardware, execute the instructions in a way that will cause no harm to other operating systems running on the hardware, and return the result to the original OS. Known as a “trap and emulate” technique, this is just one of many advanced concepts unique to the world of virtualization.
As this type of software has become more important and lucrative, more companies have looked for ways to ease the load on a hypervisor and provide increased performance. Software vendors have modified their operating systems to be aware of the virtual machines they’re running on, which means fewer trap-and-emulate types of scenarios. Hardware vendors have added support for a new level of privileges sometimes known as ring -1. Newer software programs can take advantage of one or both of these techniques to increase performance.
Hypervisors can now be found in a variety of products at both consumer and enterprise levels. Consumer products that allow one operating system to run within another often use a software-type hypervisor. In the enterprise space, the software allows underused servers running different operating systems to be consolidated. Software developers might use this approach to run multiple instances of similar or even identical operating systems in order to test for compatibility issues.