A virtual machine (VM) is software that runs programs or applications without being tied to a physical machine. In a VM instance, one or more guest machines can run on a host computer.
Each VM has its own operating system, and functions separately from other VMs, even if they are located on the same physical host. VMs generally run on servers, but they can also be run on desktop systems, or even embedded platforms. Multiple VMs can share resources from a physical host, including CPU cycles, network bandwidth and memory.
VMs trace their origins to the early days of computing in the 1960s when time sharing for mainframe users was used to separate software from a physical host system. A virtual machine was defined in the early 1970s as “an efficient, isolated duplicate of a real computer machine.”
VMs as we know them today have gained steam over the past 20 years as companies adopted server virtualization in order to utilize the compute power of their physical servers more efficiently, reducing the number of physical servers and saving space in the data center. Because apps with different OS requirements could run on a single physical host, different server hardware was not required for each one.
How do VMs work?
In general, there are two types of VMs: Process VMs, which separate a single process, and system VMs, which offer a full separation of the operating system and applications from the physical computer. Examples of process VMs include the Java Virtual Machine, the .NET Framework and the Parrot virtual machine.
System VMs rely on hypervisors as a go-between that give software access to the hardware resources. The hypervisor emulates the computer’s CPU, memory, hard disk, network and other hardware resources, creating a pool of resources that can be allocated to the individual VMs according to their specific requirements. The hypervisor can support multiple virtual hardware platforms that are isolated from each other, enabling VMs to run Linux and Windows Server OSes on the same physical host.
Big names in the hypervisor space include VMware (ESX/ESXi), Intel/Linux Foundation (Xen), Oracle (MV Server for SPARC and Oracle VM Server for x86) and Microsoft (Hyper-V).
Desktop computer systems can also utilize virtual machines. An example here would be a Mac user running a virtual Windows instance on their physical Mac hardware.