(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.
Virtual machines (VMs) are also widely used to run multiple instances of the same operating system, each running the same set or a different set of applications. The separate VM instances prevent applications from interfering with each other. If one app crashes, it does not affect the programs in the other VMs. This approach 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 in the same computer run simultaneously.
VMs Are Like Machines Within the Machine
Each virtual machine functions as if it owned the entire computer. The operating systems in each VM partition are called "guest operating systems," and they communicate with the hardware via the virtual machine monitor (VMM) control program. The VMM "virtualizes" the hardware for each VM (for details, see virtual machine monitor).
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). See virtualization, application virtualization and OS virtualization.
Non-Virtual Versus Virtual
This shows three applications running in a regular computer versus a virtualized computer. In the VM example, the guest operating systems may be the same or different.
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 computer 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 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 desktop to the datacenter (see thin client
). See virtual machine monitor
, application virtualization
and OS virtualization