Virtual Machine Article Index for
Virtual
Website Links For
Virtual Machine
 

Information About

Virtual Machine





DEFINITIONS

Specifically, the term virtual machine has several distinct meanings:


Hardware virtual machine

See Also: Virtualization
Comparison of virtual machines


The original meaning of virtual machine, sometimes called a '''hardware virtual machine''', is that of a number of discrete identical execution environments on a single computer, each of which runs an Operating System (OS). This can allow applications written for one OS to be executed on a machine which runs a different OS, or provide execution " Sandboxes " which provide a greater level of isolation between processes than is achieved when running multiple processes on the same instance of an OS. One use is to provide multiple users the illusion of having an entire computer, one that is their "private" machine, isolated from other users, all on a single physical machine. Another advantage is that Booting and restarting a virtual machine can be much faster than with a physical machine, since it may be possible to skip tasks such as hardware initialization. {Link without Title}

Such software is now often referred to with the terms Virtualization and Virtual Server s. The host software which provides this capability is often referred to as a virtual machine monitor or ''' Hypervisor '''.

Software virtualization can be done in three major ways:
  • Emulation , Full System Simulation , or "full virtualization with dynamic recompilation" — the virtual machine simulates the complete hardware, allowing an unmodified OS for a completely different CPU to be run.

  • Paravirtualization — the virtual machine does not simulate hardware but instead offers a special API that requires OS modifications. An example of this is XenSource's XenEnterprise (www.xensource.com)

  • Native Virtualization and "full virtualization" — the virtual machine only partially simulates enough hardware to allow an unmodified OS to be run in isolation, but the guest OS must be designed for the same type of CPU. The term ''native virtualization'' is also sometimes used to designate that hardware assistance through Virtualization Technology is used.



Application virtual machine

Another 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 Platform s, 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 . One of the best known examples of an application virtual machine is Sun Microsystem 's Java Virtual Machine .
See Also: Comparison of Application Virtual Machines




Virtual environment

A virtual environment (otherwise referred to as Virtual Private Server ) is another kind of a virtual machine. In fact, it is a virtualized environment for running user-level programs (i.e. not the Operating System Kernel and drivers, but applications). Virtual environments are created using the software implementing Operating System-level Virtualization approach, such as Virtuozzo , FreeBSD Jail s, Linux-VServer , Solaris Containers , Chroot Jail and OpenVZ .


Machine aggregation

A less common use of the term is to refer to a Computer Cluster consisting of many computers that have been aggregated together as a larger and more powerful "virtual" machine. In this case, the 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.

PVM ( Parallel Virtual Machine )and MPI ( Message Passing Interface ) are two common software packages that permit a heterogeneous collection of networked Unix and/or Windows computers to be used as a single, large, parallel computer. Thus large computational problems can be solved more cost effectively by using the aggregate power and memory of many computers than with a traditional supercomputer.

The Plan9 Operating System from Bell Labs uses this approach.

Boston Circuits had released the gCore (grid-on-chip) Central Processing Unit (CPU) with 16 ARC 750D cores and a Time-machine hardware module to provide a virtual machine that uses this approach.


TECHNIQUES


Emulation of the underlying raw hardware (native execution)


This approach is described as Full Virtualization of the hardware, and can be implemented using a Type 1 or Type 2 Hypervisor . (A Type 1 hypervisor runs directly on the hardware; a Type 2 hypervisor runs on another operating system, such as Linux .) Each virtual machine can run any operating system supported by the underlying hardware. Users can thus run two or more different "guest" operating systems simultaneously, in separate "private" virtual computers.

The pioneer system using this concept was IBM's CP-40 , the first (1967) version of IBM's CP/CMS (1967-1972) and the precursor to IBM's VM Family (1972-present). With the VM architecture, most users run a relatively simple Interactive Computing single-user operating system, CMS , as a "guest" on top of the VM control program ( VM-CP ). This approach kept the CMS design simple, as if it were running alone; the control program quietly provides multitasking and resource management services "behind the scenes". In addition to CMS, VM users can run any of the other IBM operating systems, such as MVS or Z/OS . Z/VM is the current version of VM, and is used to support hundreds or thousands of virtual machines on a given mainframe. Some installations use Linux For ZSeries to run Web Server s, where Linux runs as the operating system within many virtual machines.

Full virtualization is particularly helpful in operating system development, when experimental new code can be run at the same time as older, more stable, versions, each in separate virtual machines. (The process can even be debugged new versions of its virtual machine operating system, VM , in a virtual machine running under an older version of VM, and even used this technique to simulate new hardware.See History Of CP/CMS for IBM's use of virtual machines for operating system development and simulation of new hardware)

The standard X86 Processor Architecture as used in modern PCs does not actually meet the Popek And Goldberg Virtualization Requirements . Notably, there is no execution mode where all sensitive machine instructions always trap, which would allow per-instruction virtualization.

Despite these limitations, several software packages have managed to provide Virtualization On The X86 Architecture , even though Dynamic Recompilation of privileged code, as first implemented by VMware , incurs some performance overhead as compared to a VM running on a natively virtualizable architecture such as the IBM System/370 or Motorola MC68020 . By now, several other software packages such as Virtual PC , VirtualBox , Parallels Workstation and Virtual Iron manage to implement virtualization on x86 hardware.

On the other hand, Plex86 can run only Linux under Linux using a specific patched kernel. It does not emulate a processor, but uses Bochs for emulation of motherboard devices.

Intel and AMD have introduced features to their x86 processors to enable virtualization in hardware.


Emulation of a non-native system

Virtual machines can also perform the role of an Emulator , allowing software applications and Operating Systems written for another Computer Processor architecture to be run.

Some virtual machines emulate hardware that only exists as a detailed specification. For example:


This technique allows diverse computers to run any software written to that specification; only the virtual machine software itself must be written separately for each type of computer on which it runs.


Operating system-level virtualization

''Operating System-level Virtualization'' is a server s (VPS), guests, zones etc); each such partition looks and feels like a real server, from the point of view of its users.

The operating system level architecture has low overhead that helps to maximize efficient use of server resources. The virtualization introduces only a negligible overhead and allows running hundreds of Virtual Private Server s on a single physical server. In contrast, approaches such as Virtualisation (like VMware ) and Paravirtualization (like Xen or UML ) cannot achieve such level of density, due to overhead of running multiple kernels. From the other side, operating system-level virtualization does not allow running different operating systems (i.e. different kernels), although different libraries, distributions etc. are possible.

See Also: operating system-level virtualization




LIST OF HARDWARE WITH VIRTUAL MACHINE SUPPORT





LIST OF VIRTUAL MACHINE SOFTWARE


;Application virtual machine software

;Hardware virtual machine software

; OS-level virtualization software



Extended descriptions of selected virtualization software


The following software products are able to virtualize the hardware so that several operating systems can share it.

  • Adeos is a Hardware Abstraction Layer that can be loaded as a Kernel Module in Linux . It allows the loading of a real-time kernel as a module, at the same time as Linux but with higher priority.

  • Denali uses Paravirtualisation to provide high-performance virtual machines on x86 computers. Denali's virtual machines support specialised minimal OSs for Internet services. The system can scale to thousands of virtual machines. Denali does not preserve the application binary interface (ABI), and so applications must be recompiled to run within a library operating system; in this sense it is similar to the Exokernel .

  • OKL4 uses the open-source L4 Microkernel as a hypervisor to provide a high-performance virtualization solution for embedded systems

  • OpenVZ - Operating System-level server virtualization solution, built on Linux.

  • Parallels provides virtualization of x86 for running unmodified PC operating systems. It also uses a lightweight hypervisor technology in order to improve security and to increase the efficiency. Parallels has become popular for its ability to run Windows as a guest under Mac OS X on the Apple-Intel Architecture .

  • QEMU is a simulator based on a virtual machine, which gives it the ability to emulate a variety of guest CPU architectures on many different host platforms.

  • Virtual Iron provides virtual machines for x86 that run unmodified operating systems, such as Windows, RedHat and Suse. Virtual Iron open source virtualization technology implements Native Virtualization , which delivers near-native performance for x86 operating systems.

  • Virtuozzo replaces the hardware abstraction layer with a modified version enabling it to run with better performance of the OS, but forces all the VMs on a hardware box to all run the same OS, with some flexibility to support various Linux distributions on the same server. Currently they have a version for Windows 2003 and for Linux. OpenVZ is a related open-source project providing similar functionality for Linux.

  • VMware provides virtual machines for x86 that can run unmodified PC operating systems. The technology involved in doing this is complex and also incurs (sometimes significant) performance overheads with hosted VMware products (VM Server and Workstation). ESX server provides near-native performance and a fully virtualized option (along with para-virtualization of some hardware components). Xen trades running of existing operating systems for running modified (paravirtualized) operating systems with improved performance. Virtual Iron provides full OS compatibility for existing or new OSes with near-native performance without the perfrormance trade-offs between paravirualization and binary translation.

  • Xen Virtualization system whose motivation differs from that of Denali in that it is intended to run a moderate number of full-featured operating systems, rather than a large number of specialised, lightweight ones.

  • KVM is a Linux Kernel module that enables a modified QEMU program to use hardware virtualization.



BOOKS

  • Jim, Jr. Smith, Ravi Nair, James E. Smith , Virtual Machines: Versatile Platforms For Systems And Processes, Publisher Morgan Kaufmann Publishers, May 2005, ISBN 1-55860-910-5, 656 pages



REFERENCES



SEE ALSO



EXTERNAL LINKS