ffqqqq

Embed Size (px)

Citation preview

  • 7/29/2019 ffqqqq

    1/2

    multiple VMs are concurrently running on the same physical host, each VM mayexhibit a varying and unstable performance (Speed of Execution, and not results), which highly depends on the workload imposed on the system by other VMs, unless proper techniques are used for temporal isolation among virtual machines.

    Multiple VMs each running its own operating system (called guest operating system) are frequently used in server consolidation, where different services that used to run on individual machines to avoid interference are instead run in separate VMs on the same physical machine.

    The desire to run multiple operating systems was the original motivation for virtual machines, as it allowed time-sharing a single computer between several single-tasking Operation Systems. In some respects, a system virtual machine can beconsidered a generalization of the concept of virtual memory that historically preceded it. 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 CMS. Unlike virtual memory, a system virtual machine allowed the user to useprivileged instructions in his code. This approach had certain advantages, for instance it allowed users to add input/output devices not allowed by the standardsystem.[4]

    As technology evolves virtual memory, in respect to virtualization, will utilizethe technologies of memory overcommitment to manage the memory sharing betweenmultiple virtual machines on one physical computer. On a related note, sometimes

    it is possible to share those memory pages that have identical contents among multiple virtual machines running on the same physical machine, mapping them to the same physical page, by a technique known as Kernel SamePage Merging. This isparticularly useful for read-only pages, such as those ones containing code segments, especially in the case of multiple virtual machines running the same or similar software, such as the Operating System, software libraries, web server, middleware components, etc..

    The guest OSes do not have to be compliant with the hardware making it possibleto run different OSes on the same computer (e.g., Microsoft Windows and Linux, or older versions of an OS to support software that has not yet been ported to the latest version). The use of virtual machines to support different guest OSes is becoming popular in embedded systems; a typical use is to support a real-time

    operating system at the same time as a high-level OS such as Linux or Windows.

    Another use is to sandbox an OS that is not trusted, possibly because it is a system under development. Virtual machines have other advantages for OS development, including better debugging access and faster reboots.[5]Process virtual machinesSee also: Application virtualization, Run-time system, and Comparison of application virtual machines

    A process VM, sometimes called an application virtual machine, runs as a normalapplication inside a host OS and supports a single process. It is created when that process is started and destroyed when it exits. Its purpose is to provide aplatform-independent programming environment that abstracts away details of the

    underlying hardware or operating system, and allows a program to execute in thesame way on any platform.

    A process VM provides a high-level abstraction that of a high-level programminglanguage (compared to the low-level ISA abstraction of the system VM). Process VMs are implemented using an interpreter; performance comparable to compiled programming languages is achieved by the use of just-in-time compilation.

    This type of VM has become popular with the Java programming language, which isimplemented using the Java virtual machine. Other examples include the Parrot vi

  • 7/29/2019 ffqqqq

    2/2

    rtual machine, which serves as an abstraction layer for several interpreted languages, and the .NET Framework, which runs on a VM called the Common Language Runtime.

    A special case of process VMs are systems that abstract over the communication mechanisms of a (potentially heterogeneous) computer cluster. Such a VM does notconsist of a single process, but one process per physical machine in the cluster. They are designed to ease the task of programming parallel applications by letting the programmer focus on algorithms rather than the communication mechanismsprovided 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 parallel machine.

    Unlike other process VMs, these systems do not provide a specific programming language, but are embedded in an existing language; typically such a system provides bindings for several languages (e.g., C and FORTRAN). Examples are PVM (Parallel Virtual Machine) and MPI (Message Passing Interface). They are not strictlyvirtual machines, as the applications running on top still have access to all OSservices, and are therefore not confined to the system model provided by the "VM"