Virtual Machine

A virtual machine is a software re-creation of an entire computer. It presents a guest operating system with what looks like real hardware: a processor, memory, disks, and network interfaces. The guest boots and runs as though it owned the machine, unaware that it is one of several such guests sharing a single physical computer. This is the unit that cloud providers rent out by the hour, and the abstraction that lets one server safely host many customers.

The formal idea was set out by Gerald Popek and Robert Goldberg in their 1974 paper “Formal Requirements for Virtualizable Third Generation Architectures.” They defined a virtual machine as an efficient, isolated duplicate of a real machine, and argued that a virtual machine environment should be essentially equivalent to running directly on the hardware, with at most minor differences in timing and resource availability.

A virtual machine of this kind, often called a system virtual machine, is different from a language virtual machine such as the Java Virtual Machine or the .NET runtime. A system VM emulates real hardware so that an unmodified operating system can run on it; a language VM defines an abstract instruction set for one programming language and executes that language’s bytecode. They share the word “virtual” but solve different problems.

The Xen team’s 2003 paper “Xen and the Art of Virtualization” describes the practical goal that makes system VMs valuable: hosting many operating-system instances on one physical machine while keeping each one isolated from the others, so that a fault or a hostile tenant in one virtual machine cannot reach into another. That isolation, multiplied across data centers, is the foundation of modern cloud computing.