Sei sulla pagina 1di 2

multiple VMs are concurrently running on the same physical host, each VM may exhibit a varying and unstable

performance (Speed of Execution, and not results ), which highly depends on the workload imposed on the system by other VMs, unle ss proper techniques are used for temporal isolation among virtual machines. Multiple VMs each running its own operating system (called guest operating syste m) are frequently used in server consolidation, where different services that us ed to run on individual machines to avoid interference are instead run in separa te VMs on the same physical machine. The desire to run multiple operating systems was the original motivation for vir tual machines, as it allowed time-sharing a single computer between several sing le-tasking Operation Systems. In some respects, a system virtual machine can be considered a generalization of the concept of virtual memory that historically p receded it. IBM's CP/CMS, the first systems to allow full virtualization, implem ented time sharing by providing each user with a single-user operating system, t he CMS. Unlike virtual memory, a system virtual machine allowed the user to use privileged instructions in his code. This approach had certain advantages, for i nstance it allowed users to add input/output devices not allowed by the standard system.[4] As technology evolves virtual memory, in respect to virtualization, will utilize the technologies of memory overcommitment to manage the memory sharing between multiple virtual machines on one physical computer. On a related note, sometimes it is possible to share those memory pages that have identical contents among m ultiple virtual machines running on the same physical machine, mapping them to t he same physical page, by a technique known as Kernel SamePage Merging. This is particularly useful for read-only pages, such as those ones containing code segm ents, especially in the case of multiple virtual machines running the same or si milar software, such as the Operating System, software libraries, web server, mi ddleware components, etc.. The guest OSes do not have to be compliant with the hardware making it possible to run different OSes on the same computer (e.g., Microsoft Windows and Linux, o r older versions of an OS to support software that has not yet been ported to th e latest version). The use of virtual machines to support different guest OSes i s 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 sy stem under development. Virtual machines have other advantages for OS developmen t, including better debugging access and faster reboots.[5] Process virtual machines See also: Application virtualization, Run-time system, and Comparison of applica tion virtual machines A process VM, sometimes called an application virtual machine, runs as a normal application inside a host OS and supports a single process. It is created when t hat process is started and destroyed when it exits. 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. that of a high-level programming A process VM provides a high-level abstraction language (compared to the low-level ISA abstraction of the system VM). Process V Ms are implemented using an interpreter; performance comparable to compiled prog ramming languages is achieved by the use of just-in-time compilation. This type of VM has become popular with the Java programming language, which is implemented using the Java virtual machine. Other examples include the Parrot vi

rtual machine, which serves as an abstraction layer for several interpreted lang uages, and the .NET Framework, which runs on a VM called the Common Language Run time. A special case of process VMs are systems that abstract over the communication m echanisms of a (potentially heterogeneous) computer cluster. Such a VM does not consist 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 let ting the programmer focus on algorithms rather than the communication mechanisms provided by the interconnect and the OS. They do not hide the fact that communi cation takes place, and as such do not attempt to present the cluster as a singl e parallel machine. Unlike other process VMs, these systems do not provide a specific programming la nguage, but are embedded in an existing language; typically such a system provid es bindings for several languages (e.g., C and FORTRAN). Examples are PVM (Paral lel Virtual Machine) and MPI (Message Passing Interface). They are not strictly virtual machines, as the applications running on top still have access to all OS services, and are therefore not confined to the system model provided by the "V M"

Potrebbero piacerti anche