


Virtualization is a powerful strategy for managing applications on a single PC or server, enabling multiple operating systems or sessions to run simultaneously. The host operating system can support multiple virtual machines (VMs), each with its own characteristics and hardware platform. The virtual machine monitor (VMM) or hypervisor runs on top of or is incorporated into the host OS. The VMM supports VMs, which are emulated hardware devices, and handles communication with the processor, storage medium, and network. Most VMs use virtualized network connections to communicate with one another. The key to the success of this approach is that the VMM provides a programmable, transparent layer between software environments and the underlying hardware and host OS, ensuring efficient use of the hardware below it.
From the perspective of an application, the machine characteristics are specified by high-level language capabilities and OS and system library calls. The API defines the machine for an application, while the operating system defines the system that supports the operation of the OS and the numerous processes that execute concurrently. From the OS perspective, the interface between the system and the machine is provided by the ISA.
There are two architectural approaches to implementing virtual machines: process VMs and system VMs. Process VMs are virtual platforms for executing a single process, converting OS and user-level instructions from one platform to another. The ABI specification is designed to support a given HLL or set of HLLs and be easily portable to various ISAs. The HLL VM includes a front-end compiler that generates a virtual binary code for execution or interpretation, which can be executed on any machine with the process VM implemented.
System VMs are virtualizing software that translates the ISA used by one hardware platform to that of another. In the process VM approach, the virtualizing software uses the services of the host OS, while in the system VM approach, there is no separate host OS, as the host system OS incorporates the VM capability. This approach offers benefits such as application portability, support for legacy systems without the need to maintain legacy hardware, and security by isolating each guest OS environment from other guest environments.