Virtual machine

virtual machinesVMvirtual servervirtualizationprocess virtual machinevirtualvirtual platformVMsvirtual computervirtual environment
In computing, a virtual machine (VM) is an emulation of a computer system.wikipedia
832 Related Articles

System virtual machine

In computing, a system virtual machine is a virtual machine provides a complete system platform which supports the execution of a complete operating system (OS).

Hypervisor

hypervisorsvirtual machine monitorhost machine
This evolved into virtual machines, notably via IBM's research systems: the M44/44X, which used partial virtualization, and the CP-40 and SIMMON, which used full virtualization, and were early examples of hypervisors.
A hypervisor (or virtual machine monitor, VMM) is a computer software, firmware or hardware that creates and runs virtual machines.

Full virtualization

virtualization
This evolved into virtual machines, notably via IBM's research systems: the M44/44X, which used partial virtualization, and the CP-40 and SIMMON, which used full virtualization, and were early examples of hypervisors. IBM's CP/CMS, the first systems to allow full virtualization, implemented time sharing by providing each user with a single-user operating system, the Conversational Monitor System (CMS).
Virtualization employs techniques used to create instances of an environment, as opposed to simulation, which models the environment; or emulation, which replicates the target environment such as certain kind of virtual machine environment.

Hardware-assisted virtualization

virtualizationaccelerateshardware assists
Full virtualization is used to simulate a complete hardware environment, or virtual machine, in which an unmodified guest operating system (using the same instruction set as the host machine) effectively executes in complete isolation.

OS-level virtualization

operating-system-level virtualizationcontainersoperating system-level virtualization
Operating-system-level virtualization allows the resources of a computer to be partitioned via the kernel.
The term "container," while most popularly referring to OS-level virtualization systems, is sometimes ambiguously used to refer to fuller virtual machine environments operating in varying degrees of concert with the host OS, e.g.

Popek and Goldberg virtualization requirements

Popek and Goldbergcritical operationsPopek and Goldberg requirements
A "virtual machine" was originally defined by Popek and Goldberg as "an efficient, isolated duplicate of a real computer machine."
System virtual machines are capable of virtualizing a full set of hardware resources, including a processor (or processors), memory and storage resources and peripheral devices.

Conversational Monitor System

CMSVM/CMSCambridge Monitor System
IBM's CP/CMS, the first systems to allow full virtualization, implemented time sharing by providing each user with a single-user operating system, the Conversational Monitor System (CMS).
CMS runs as a "guest" operating system in a private virtual machine created by the VM control program.

CP/CMS

CP-40 CP[-67]/CMSCMS
IBM's CP/CMS, the first systems to allow full virtualization, implemented time sharing by providing each user with a single-user operating system, the Conversational Monitor System (CMS).

Operating system

operating systemsOScomputer operating system
The alternative CP-67 system for the S/360-67 started a whole line of IBM operating systems focused on the concept of virtual machines.

Emulator

emulationemulatedemulate
In computing, a virtual machine (VM) is an emulation of a computer system.

Virtual memory

virtual storagememoryswap
In some respects, a system virtual machine can be considered a generalization of the concept of virtual memory that historically preceded it.
While not necessary, emulators and virtual machines can employ hardware support to increase performance of their virtual memory implementations.

Java virtual machine

JVMJava Runtime EnvironmentJRE
This type of VM has become popular with the Java programming language, which is implemented using the Java virtual machine.
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode.

Parrot virtual machine

Parrota projectParrot BASIC
Other examples include the Parrot virtual machine and the .NET Framework, which runs on a VM called the Common Language Runtime.
Parrot is a register-based process virtual machine designed to run dynamic languages efficiently.

Common Language Runtime

CLR.NET CLR.NET CLR paradigm
Other examples include the Parrot virtual machine and the .NET Framework, which runs on a VM called the Common Language Runtime.
The Common Language Runtime (CLR), the virtual machine component of Microsoft .NET framework, manages the execution of .NET programs.

.NET Framework

.NETMicrosoft .NET FrameworkMicrosoft .NET
Other examples include the Parrot virtual machine and the .NET Framework, which runs on a VM called the Common Language Runtime.
The CLR is an application virtual machine that provides services such as security, memory management, and exception handling.

Computing platform

platformplatformssoftware platform
Its purpose is to provide a platform-independent programming environment that abstracts away details of the underlying hardware or operating system and allows a program to execute in the same way on any platform.

History of CP/CMS

time-sharing operating systems
The first widely available virtual machine architecture was the CP-67/CMS (see History of CP/CMS for details).
This article covers the History of CP/CMS — the historical context in which the IBM time-sharing virtual machine operating system was built.

IBM CP-40

CP-40CP-40/CMS
This evolved into virtual machines, notably via IBM's research systems: the M44/44X, which used partial virtualization, and the CP-40 and SIMMON, which used full virtualization, and were early examples of hypervisors.
CP-40 was a research precursor to CP-67, which in turn was part of IBM's then-revolutionary [[CP/CMS|CP[-67]/CMS]] – a virtual machine/virtual memory time-sharing operating system for the IBM System/360 Model 67, and the parent of IBM's VM family.

Java (programming language)

JavaJava programming languageJava language
This type of VM has become popular with the Java programming language, which is implemented using the Java virtual machine.
Java bytecode instructions are analogous to machine code, but they are intended to be executed by a virtual machine (VM) written specifically for the host hardware.

Intermediate representation

intermediate languageILIntermediate form
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 1966.
An Intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code.

Hardware virtualization

virtualizationplatform virtualizationguest operating system
This evolved into virtual machines, notably via IBM's research systems: the M44/44X, which used partial virtualization, and the CP-40 and SIMMON, which used full virtualization, and were early examples of hypervisors.
The term "virtualization" was coined in the 1960s to refer to a virtual machine (sometimes called "pseudo machine"), a term which itself dates from the experimental IBM M44/44X system.

Just-in-time compilation

JITjust-in-time compilerjust-in-time
Process VMs are implemented using an interpreter; performance comparable to compiled programming languages can be achieved by the use of just-in-time compilation.
A common implementation of JIT compilation is to first have AOT compilation to bytecode (virtual machine code), known as bytecode compilation, and then have JIT compilation to machine code (dynamic compilation), rather than interpretation of the bytecode.

CP-67

The first widely available virtual machine architecture was the CP-67/CMS (see History of CP/CMS for details).
CP-67 was the control program portion of CP/CMS, a virtual machine operating system developed for the IBM System/360-67 by IBM's Cambridge Scientific Center.

Kernel same-page merging

Kernel SamePage MergingKSM
It may be possible to share memory pages that have identical contents among multiple virtual machines that run on the same physical machine, what may result in mapping them to the same physical page by a technique termed kernel same-page merging (KSM).
While not directly linked, Kernel-based Virtual Machine (KVM) can use KSM to merge memory pages occupied by virtual machines.

P-code machine

p-codeP-machinevirtual instruction set
This was popularized around 1970 by Pascal, notably in the Pascal-P system (1973) and Pascal-S compiler (1975), in which it was termed p-code and the resulting machine as a p-code machine.
In computer programming, a p-code machine, or portable code machine is a virtual machine designed to execute p-code (the assembly language of a hypothetical CPU).