The fundamental idea behind a virtual machine is to remove the hardware of a single computer and make it a self-contained operating environment that behaves as it is a separate computer. Essentially, the virtual machine is software that executes an application and isolates it from the actual operating system and hardware. CPU scheduling and virtual-memory techniques are used so that an operating system can create the illusion that a process has its own processor with its own (virtual) memory. The virtual machine provides the ability to share the same hardware yet run several different operating systems concurrently, as shown in Figure 2-11.
Figure 2-11: Virtual machine concept
A major difficulty with the virtual machine involves disk systems. For instance, the physical machine has two disk drives but wants to support five virtual machines. The physical machine is unable to allocate a disk drive to each virtual machine because the virtual machine software itself will need substantial disk space to provide virtual memory and spooling. To solve this dilemma, virtual drives that are identical in all respects except for size are provided. The system implements each virtual disk by allocating as many tracks on the physical disks as the virtual disk needs.
Implementation of the virtual machine is difficult. A lot of work is required to provide an exact duplicate of the underlying machine, which has both the user mode and kernel mode. The virtual machine software can run in kernel mode since it is the operating system, where the virtual machine itself can only execute in user mode. In a virtual machine implementation, there must be a virtual user mode and a virtual kernel mode, both of which run in a physical user mode. The operations that cause a transfer from user mode to kernel mode on the physical machine must also cause a transfer from virtual user mode to virtual kernel mode on a virtual machine.
There are several advantages with the virtual machine concept. In this environment, the various system resources have complete protection. Each virtual machine is completely isolated from all other virtual machines, so there are no protection problems because there is no sharing of resources. Two approaches have been implemented to provide sharing. First, it is possible to share a virtual disk to share files. This is modeled after a shared physical disk is implemented by software. Second, it is possible to define a network of virtual machines, each virtual machine sending information over the virtual network. This is modeled after physical networks, but is implemented in software.
The virtual machine system is perfect for operating system research and development. Typically, changing an operating system is a difficult and time consuming task. This is because operating systems are quite large and complex programs and it is difficult to be sure that a change in one part of the system will not cause problems (or bugs) in another...