Navigation
  • Home
  • Recent
  • Most Active
  • Popular
  • Blog
  • Credits
  • RSS
  •   Interaction
  • Register
  • Statistics
  •   Help
  • Suggestions
  • Contact Us
  • How to Edit
  • Help



  • [Edit]


    In computer science, a virtual machine is software that creates a virtualized environment between the computer platform so that the end user can operate software.

        Virtual machine
            Definitions
                Hardware virtual machine
                Application virtual machine
                Virtual environment
                Machine aggregation
                Emulation of the underlying raw hardware (native execution)
                Emulation of a non-native system
                Operating system-level virtualization
            List of hardware with virtual machine support
            List of virtual machine software
                Extended descriptions of selected virtualization software
            Books
            See also

    top

    Definitions
    Specifically, the term virtual machine has several distinct meanings:

    top

    Hardware virtual machine

    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. 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.*

    Such software is now often referred to with the terms virtualization and virtual servers. The host software which provides this capability is often referred to as a virtual machine monitor or hypervisor.

    Software virtualization can be done in four 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.
      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.

    top

    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 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. One of the best known examples of an application virtual machine is Sun Microsystem's Java Virtual Machine.
    .

    top

    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 FreeBSD Jails, Linux-VServer, Solaris Containers, and OpenVZ.

    top

    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 permits a heterogeneous collection of Unix and/or Windows computers hooked together by a network and 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.

    Plan9 Operating System from Bell Labs use this approach.

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

    top

    Emulation of the underlying raw hardware (native execution)

    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 running in each of many virtual machines is Linux.

    The VMware, Parallels Workstation, and SVISTA packages do the same thing on modern PCs, trapping all hardware accesses and simulating all of a motherboard except for the processor.

    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.

    The 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. As a result, VMware and similar virtualization software for the x86 must dynamically recompile privileged mode code. This technique incurs some performance overhead as compared to a VM running on a natively virtualizable architecture such as the IBM System/370 or Motorola MC68020. Intel and AMD have each announced plans to add hardware features for x86 virtualization to future x86 processors.

    top

    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:

      One of the first was the p-Code machine specification, which allowed programmers to write Pascal programs that would run on any computer running virtual machine software that correctly implemented the specification.

    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.

    top

    Operating system-level virtualization
    Operating System-level Virtualization is a server virtualization technology which virtualizes servers on an operating system (kernel) layer. It can be thought of as partitioning: a single physical server is sliced into multiple small partitions (otherwise called virtual environments (VE), virtual private servers (VPS), guests, zones etc); each such partition looks and feels like a real server, from the point of view of its owner.

    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 servers on a single physical server. In contrast, approaches such as emulation (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.



    top

    List of hardware with virtual machine support

      Boston Circuits gCore (grid-on-chip) with 16 ARC 750D cores and Time-machine hardware virtualization module.


    top

    List of virtual machine software

    Application virtual machine software

      Waba - Virtual machine for small devices, similar to Java

    Hardware virtual machine software

      Bochs, portable open source x86 and AMD64 PCs emulator
      CoLinux Open Source Linux inside Windows
      Denali, uses paravirtualization of x86 for running unmodified PC operating systems.
      QEMU, is a simulator based on a virtual machine.
      VM from IBM, apparently the first true virtual machine system and still in wide use today.
      VMware (ESX Server, Virtual Server, Workstation, Player and ACE)

    OS-level virtualization software



    top

    Extended descriptions of selected virtualization software

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


      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.

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

      Parallels provides virtualization of x86 for running unmodified PC operating systems. It also uses the technology of lightweight hypervisor 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.

      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. Xen trades full OS binary compatibility for comparative simplicity and improved performance. VMware is by far the most popular VM for Windows virtualization.

      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.

    top

    Books
      Jim, Jr. Smith, Ravi Nair, James E. Smith , Virtual Machines: Versatile Platforms For Systems And Processes, Publisher Morgan Kaufmann Publishers, May 2005, ISBN 1558609105, 656 pages

    top

    See also
      Gerrit Blaauw (A significant designer of the IBM/360, an early virtual computing architecture)
      Threaded code (A common implementation technique for application virtual machines)
     
    Search more:
     

       
    Source Privacy License Download Contact Us Atlas
    Scientus.org Dictionary (Yet Another Wiki) RC : 1.39
    This article is licensed under the GNU Free Documentation License [copyleft]. It uses material from the Wikipedia article "Virtual machine". link