Virtual machine

Virtual machines have other advantages for operating system development and may include improved debugging access and faster reboots.

[4] Multiple VMs running their own guest operating system are frequently engaged for server consolidation.

Other examples include the Parrot virtual machine and the .NET Framework, which runs on a VM called the Common Language Runtime.

[citation needed] A special case of process VMs are systems that abstract over the communication mechanisms of a (potentially heterogeneous) computer cluster.

They are designed to ease the task of programming concurrent applications by letting the programmer focus on algorithms rather than the communication mechanisms provided by the interconnect and the OS.

They do not hide the fact that communication takes place, and as such do not attempt to present the cluster as a single machine.

[citation needed] Examples are Parallel Virtual Machine (PVM) and Message Passing Interface (MPI).

Process virtual machines arose originally as abstract platforms for an intermediate language used as the intermediate representation of a program by a compiler; early examples date to around 1964 with the META II compiler-writing system using it for both syntax description and target code generation.

In addition to being an intermediate language, Pascal p-code was also executed directly by an interpreter implementing the virtual machine, notably in UCSD Pascal (1978); this influenced later interpreters, notably the Java virtual machine (JVM).

Process virtual machines were a popular approach to implementing early microcomputer software, including Tiny BASIC and adventure games, from one-off implementations such as Pyramid 2000 to a general-purpose engine like Infocom's z-machine, which Graham Nelson argues is "possibly the most portable virtual machine ever created".

Sun Microsystems (now Oracle Corporation) added similar features in their UltraSPARC T-Series processors in 2005.

Examples of virtualization platforms adapted to such hardware include KVM, VMware Workstation, VMware Fusion, Hyper-V, Windows Virtual PC, Xen, Parallels Desktop for Mac, Oracle VM Server for SPARC, VirtualBox and Parallels Workstation.

In 2006, first-generation 32- and 64-bit x86 hardware support was found to rarely offer performance advantages over software virtualization.

A snapshot is a state of a virtual machine, and generally its storage devices, at an exact point in time.

Any requests by the VM for a location on its physical disk are transparently translated into an operation on the corresponding file.

Once such a translation layer is present, however, it is possible to intercept the operations and send them to different files, depending on various criteria.

[citation needed] Similar to the migration mechanism described above, failover allows the VM to continue operations if the host fails.

If a particular architecture does not provide hardware support required for nested virtualization, various software techniques are employed to enable it.

[23] Over time, more architectures gain required hardware support; for example, since the Haswell microarchitecture (announced in 2013), Intel started to include VMCS shadowing as a technology that accelerates nested virtualization.

VirtualBox on Ubuntu , running the Fedora operating system in a window
Logical diagram of full virtualization