|
In general terms, a virtual machine in computer
science is software that creates an environment between the computer platform and the end
user in which the end user can operate software.
Specifically, the term virtual machine has several distinct meanings:
Definitions
Original meaning
The original meaning of virtual machine is the creation of a number of different identical execution
environments on a single computer, each of which exactly emulates the host computer. This provides each user with the illusion of
having an entire computer, but one that is their "private" machine, isolated from
other users, all on a single physical machine.
Application virtual machine
The second, and now more common, meaning of virtual machine is a piece of computer software that isolates the
application being used by the user from the computer. Because versions of the virtual machine are written for various computer platforms, any application written for the virtual machine can be operated on any of the
platforms, instead of having to produce separate versions of the application for each computer and operating system. The
application is run on the computer using an interpreter or Just In Time compilation.
Operating system virtual machine
The term virtual machine is now also used to refer to the environment created by an emulator, where software is used to emulate an operating system for the end user, while the computer runs
its own native operating system.
Parallel virtual machine
More recently, the term virtual machine is also used to refer to a Parallel Virtual Machine (PVM). In this case, the virtual machine software allows a single
environment to be created spanning multiple computers, so that the end user appears to be using only one computer rather than
several.
Techniques
Emulation of the underlying raw hardware
Since each user can run whatever operating system they want, this type of virtual machine allows users to do things like run
two different operating systems (sometimes referred to as "guests") on their "private" virtual computers. Also, experimental new
versions of operating systems can be run at the same time as older, more stable, versions, each in a separate virtual machine.
The process can even be recursive; IBM
debugged new versions of its virtual machine operating system, VM, in a virtual machine running under an older version of VM.
One early user of this concept was the IBM VM/CMS time-sharing product, which used a relatively simple interactive computing
single-user operating system, CMS, which
ran on top of VM. In that way, CMS could be written simply, as if it were running alone, and the VM operating system quietly
provided multitasking and resource management services behind the scenes.
Not all VM users had to run CMS, though; some preferred to run some form of OS/360
(or eventually MVS) in one or more virtual machines, to provide traditional batch processing services to those users who wanted that. VM is still used
today on IBM mainframes, and in some which are used as Web servers, the operating system run
in each of many virtual machines is Linux.
The plex86 and VMware packages do the same
thing on modern PCs, trapping all hardware accesses and simulating all of a motherboard except for the processor.
Emulation of a non-native system
Some of this class of virtual machines are emulators; these allow software
written for one machine to run on another. Please note that emulation for computer systems can include emulation for both
different machine architectures, and operating systems.
Others produce behaviors and capabilities of a machine that doesn't necessarily exist as an actual piece of hardware but may
only be a detailed specification. For example, the p-Code machine
specification (one of the first, used for support of Pascal) was a description of a specific set of capabilities and behaviors that programmers
could use to write programs that would run on any computer running virtual machine software that correctly implemented the
specification.
More modern examples include the specification of the Java virtual machine and the Common Language Infrastructure virtual machine at the heart of the Microsoft .NET initiative.
These allow diverse computers all to run software written to that specification; the virtual machine software itself must be
written separately for each type of computer on which it runs.
List of virtual machines
See also
External link
|