The concept of the virtual machine was invented by IBM as a method of time-sharing extremely expensive mainframe hardware [4,5]. As defined by IBM, a ``virtual machine'' is a fully protected and isolated copy of the underlying physical machine's hardware. Thus, each virtual machine user is given the illusion of having a dedicated physical machine. Software developers can also write and test programs without fear of crashing the physical machine and affecting the other users.
Figure 1 illustrates the traditional organization of a virtual machine system. A software layer called a virtual machine monitor (VMM) takes complete control of the machine hardware and creates virtual machines, each of which behaves like a complete physical machine that can run its own operating system (OS). Contrast this with a normal system where a single operating system is in control of the machine.
To maximize performance, the monitor gets out of the way whenever possible and allows the virtual machine to execute directly on the hardware, albeit in a non-privileged mode. The monitor regains control whenever the virtual machine tries to perform an operation that may affect the correct operation of other virtual machines or of the hardware. The monitor safely emulates the operation before returning control to the virtual machine. This direct execution property allows mainframe-class virtual machines to achieve close to native performance and sets the technology apart from machine emulators that always impose an extra layer of interpretation on the emulated machine.
The result of a complete machine virtualization is the creation of a set of virtual computers that runs on a physical computer. Different operating systems, or separate instances of the same operating system, can run in each virtual machine. The operating systems that run in virtual machines are termed guest operating systems. Since virtual machines are isolated from each other, a guest operating system crash does not affect the other virtual machines. Users in different virtual machines cannot affect each other catastrophically.
Most of the benefits of mainframe virtual machines apply to the PC platform, and several new ones have emerged. On mainframes, virtual machines have been used for timesharing, for partitioning machine resources among different OSes and applications, as well as for OS and software development and easing system migration. On a desktop or workstation PC there is a need to run different operating systems - primarily the various flavors of Microsoft and UNIX -based operating systems. Virtual machines allow these OSes to be run simultaneously on a single computer.
Intel -based PCs are also increasingly being used as servers by traditional enterprises and service providers to host applications. Frequently, an entire machine is dedicated to a particular service, application or customer in order to provide fault isolation and performance guarantees. In this arena, virtual machines can be used to host applications, provide better resource utilization, and ease system manageability. Virtual machines can also be easily migrated and replicated across machines to aid in service provisioning. Virtual machines can contain identical virtual hardware, even on hosts with different native hardware, making virtual machines freely portable between different physical machines.