A synonym for a language interpreter. See interpreter
, Java Virtual Machine
A virtual machine (VM) is an operating system plus one or more apps running in an isolated partition within the computer. Depending on the size of the hardware, any number of VMs can be running. The more cores the CPU has, the more simultaneity (see multicore
Dating back to the 1960s, virtual machines (VMs) are widely used to run multiple instances of the same OS, each running a different set of applications. The separate instances prevent apps from interfering with one another after a crash, especially when testing new software. Virtual machines are also widely used to run different operating systems in the same machine.
The Heart of Cloud Computing
Without virtual machines, cloud computing would never have taken off. When cloud computing is used, it is a virtual machine in a server that the customer is actually renting most of the time. Depending on server size and workloads, virtual machines allow dozens of customers to run on a single server. See cloud computing
Not Dual Boot or Multiboot
VMs are not a dual-boot or multiboot environment, whereby at startup the first thing a user has to do is select which OS to use (see dual-boot
). See thin client
, virtual machine monitor
, application virtualization
and OS virtualization
Non-Virtual vs. Virtual
Advantages of Virtualization
#1 - Migration and Cloning
VMs are "self-contained packages" that are decoupled from the hardware. It is relatively easy to move a VM instance from one server to another to balance the workload, migrate to faster hardware or to recover from hardware failure.
#2 - Consolidation
Different operating systems can run in the same server, eliminating the need to dedicate a single machine to each OS. New OS versions can be tested without adding hardware, and developers can test their programs in different OS environments on the same machine. In the datacenter, multicore servers with many threads of execution save space and power.
#3 - Stability and Security
Troubleshooting can be daunting when conflicts arise in supposedly stable apps. Prior to virtualization, cautious system administrators hosted each type of application in a separate server even if the hardware was grossly underutilized. However, because VMs are isolated from each other, a security breach in one does not affect the others.