(1) The name given to various programming language interpreters. See Java Virtual Machine and Python.|
(2) One instance of an operating system along with one or more applications running in an isolated partition within the computer. It enables different operating systems to run in the same computer at the same time as well as prevents applications from interfering with each other. This differs from a dual-boot or multiboot environment, in which the user has to choose only one OS at startup (see dual-boot). All virtual machines run simultaneously.
Each virtual machine is like a "machine within the machine" and functions as if it owned the entire computer. The operating systems in each virtual machine partition are called "guest operating systems," and they communicate with the hardware via the virtual machine control program called a "virtual machine monitor" (VMM). The VMM "virtualizes" the hardware for each virtual machine.
Although a hot topic in the IT world, virtual machine technology dates back to the 1960s (see VM). The terms "virtual machine" and "virtualization" are used synonymously; however, virtualization also refers to other techniques (see virtualization).
The following illustration shows a simple comparison of three applications running in a regular computer versus a virtualized computer. In the VMM example, the guest operating systems may be the same or different. For more details about the VMM, see virtual machine monitor. See virtualization, application virtualization and OS virtualization.
Paravirtualization and Hardware
Guest operating systems can run in a virtual machine with or without modification. If changes are made to the OS to recognize the VMM, it is said to be "paravirtualized." For example, Linux and various Unix versions have been paravirtualized to run in the Xen VM environment. However, if the CPU hardware supports virtualization, Xen can run guest operating systems unmodified. In 2004 and 2006, Intel and AMD added virtualization to their CPUs, which traps the calls to the x86 hardware, making it easier to develop VMMs that run ordinary non-paravirtualized guest operating systems (see hardware virtualization).
Advantages of Virtualization
#1 - Consolidation
Multiple operating systems can run in the same server, eliminating the need to dedicate a single machine to one application. Old and new applications can run simultaneously with their respective operating systems in multicore servers with many threads of execution, saving space and power consumption in the datacenter. New versions of an OS and new applications can be deployed without purchasing new hardware.
#2 - Stability and Security
Conflicts can arise between supposedly stable applications, and troubleshooting can be daunting. As a result, cautious system administrators often host each type of application in a separate server even if the server is grossly underutilized. Multiple virtual machines running bread and butter applications are kept safely separated from each other. In addition, since each VM is isolated from the rest, a security breach in one does not affect the others. The fault tolerance and security brought about by the isolation of each virtual machine is a major benefit of virtualization.
#3 - Development Flexibility
A virtualized machine can host numerous versions of an operating system, allowing developers to test their programs in different OS environments on the same machine. In addition, with each application running in its own virtual partition, crashing in one virtual machine will not bring down the system.
#4 - Migration and Cloning
Virtual machines, each with their own OS and applications, function like self-contained packages that are said to be "decoupled from the hardware." It is relatively easy to move a VM from one server to another to balance the workload, to migrate to faster hardware, as well as to recover from hardware failure. VMs can also be quickly cloned and deployed.
#5 - Desktop Virtualization
An increasing trend is to store a user's desktop (OS and applications) in a separate virtual machine in the server and use the PC or a dedicated terminal as a "thin client" to the server. Each user is isolated from all other users, due to the virtual machine technology, and the maintenance of the applications is shifted from each user's office to the datacenter (see thin client). See virtual machine monitor, virtualization, application virtualization and OS virtualization.