Untitled document

A virtual machine was originally defined by Popek and Goldberg as an efficient, isolated duplicate of a real machine. Current use includes virtual machines which have no direct correspondence to any real hardware.

Example: A program written in Java would receive services from the Java Runtime Environment software by issuing commands from which the expected result is returned by the Java software. By providing these services to the program, the Java software is acting as a "virtual machine," taking the place of the operating system or hardware for which the program would ordinarily have had to have been specifically written.

Virtual machines are separated in two major categories, based on their use and degree of correspondence to any real machine. A system virtual machine provides a complete system platform which supports the execution of a complete operating system (OS). In contrast, a process virtual machine is designed to run a single program, which means that it supports a single process. An essential characteristic of a virtual machine is that the software running inside is limited to the resources and abstractions provided by the virtual machine -- it cannot break out of its virtual world.

System virtual machines

See also: Virtualization and Comparison of virtual machines

System virtual machines (sometimes called hardware virtual machines) allow multiplexing the underlying physical machine between different virtual machines, each running its own operating system. The software layer providing the virtualization is called a virtual machine monitor or hypervisor. A hypervisor can run on bare hardware (Type 1 or native VM) or on top of an operating system (Type 2 or hosted VM).

The main advantages of system VMs are:

* multiple OS environments can co-exist on the same computer, in strong isolation from each other;
* the virtual machine can provide an instruction set architecture (ISA) that is somewhat different from that of the real machine.

Multiple VMs each running their own operating system (called guest operating system) are frequently used in server consolidation, where different services that used to run on individual machines in order to avoid interference, are instead run in separate VMs on the same physical machine. This use is frequently called quality-of-service isolation (QoS isolation).

The desire to run multiple operating systems was the original motivation for virtual machines, as it allowed time-sharing a single computer between several single-tasking OSes.

The guest OSes do not have to be all the same, making it possible to run different OSes on the same computer (e.g. Microsoft Windows and Linux, or older versions of an OS in order to support software that has not yet been ported to the latest version.) The use of virtual machines to support different guest OSes is becoming popular in embedded systems; a typical use is to support a real-time operating system at the same time as a high-level OS such as Linux or Windows.

Another use is to sandbox an OS that is not trusted, possibly because it is a system under development. Virtual machines have other advantages for OS development, including better debugging access and faster reboots.

The popularity of VMs for QoS isolation is a result of incomplete resource isolation provided by most contemporary operating systems. Solaris Zones are an alternative that provide strong resource isolation within a single operating system. Zones are not virtual machines, but an example of "operating-system virtualization". This includes other "virtual environments" (also called "virtual servers") such as Virtuozzo, FreeBSD Jails, Linux-VServer, chroot jail and OpenVZ. These provide some form of encapsulation of processes within an operating system. These technologies have the advantage of being more resource efficient than full virtualization; the disadvantage is that they can only run a single operating system and a single version/patchlevel of that operating system - so, for example, they cannot be used to run two applications, one of which only supports a newer OS version and the other only supporting an older OS version on the same hardware.

Virtual hosting
Domain name system
Shared web hosting service
Virtual private server
Dns works in practice
Untitled document
Standalone server
Process virtual machine
How dns works in theory
Emulation of the underlying raw hardware