Recent from talks
Nothing was collected or created yet.
Virtualization
View on Wikipedia
In computing, virtualization (abbreviated v12n) is a series of technologies that allows dividing of physical computing resources into a series of virtual machines, operating systems, processes or containers.[1] Virtualization began in the 1960s with IBM CP/CMS.[1] The control program CP provided each user with a simulated stand-alone System/360 computer.
In hardware virtualization, the host machine is the machine that is used by the virtualization and the guest machine is the virtual machine. The words host and guest are used to distinguish the software that runs on the physical machine from the software that runs on the virtual machine. The software or firmware that creates a virtual machine on the host hardware is called a hypervisor or virtual machine monitor.[2] Hardware virtualization is not the same as hardware emulation. Hardware-assisted virtualization facilitates building a virtual machine monitor and allows guest OSes to be run in isolation.
Desktop virtualization is the concept of separating the logical desktop from the physical machine.
Operating-system-level virtualization, also known as containerization, refers to an operating system feature in which the kernel allows the existence of multiple isolated user-space instances.
The usual goal of virtualization is to centralize administrative tasks while improving scalability and overall hardware-resource utilization.
History
[edit]A form of virtualization was first demonstrated with IBM's CP-40 research system in 1967, then distributed via open source in CP/CMS in 1967–1972, and re-implemented in IBM's VM family from 1972 to the present. Each CP/CMS user was provided a simulated, stand-alone computer. Each such virtual machine had the complete capabilities of the underlying machine, and (for its user) the virtual machine was indistinguishable from a private system. This simulation was comprehensive, and was based on the Principles of Operation manual for the hardware. It thus included such elements as an instruction set, main memory, interrupts, exceptions, and device access. The result was a single machine that could be multiplexed among many users.
Hardware-assisted virtualization first appeared on the IBM System/370 in 1972, for use with VM/370, the first virtual machine operating system. IBM added virtual memory hardware to the System/370 series in 1972 which is not the same as Intel VT-x Rings providing a higher privilege level for Hypervisor to properly control Virtual Machines requiring full access to Supervisor and Program or User modes.
With the increasing demand for high-definition computer graphics (e.g. CAD), virtualization of mainframes lost some attention in the late 1970s, when the upcoming minicomputers fostered resource allocation through distributed computing, encompassing the commoditization of microcomputers.
The increase in compute capacity per x86 server (and in particular the substantial increase in modern networks' bandwidths) rekindled interest in data-center based computing which is based on virtualization techniques. The primary driver was the potential for server consolidation: virtualization allowed a single server to cost-efficiently consolidate compute power on multiple underutilized dedicated servers. The most visible hallmark of a return to the roots of computing is cloud computing, which is a synonym for data center based computing (or mainframe-like computing) through high bandwidth networks. It is closely connected to virtualization.
The initial implementation x86 architecture did not meet the Popek and Goldberg virtualization requirements to achieve "classical virtualization":
- equivalence: a program running under the virtual machine monitor (VMM) should exhibit a behavior essentially identical to that demonstrated when running on an equivalent machine directly
- resource control (also called safety): the VMM must be in complete control of the virtualized resources
- efficiency: a statistically dominant fraction of machine instructions must be executed without VMM intervention
This made it difficult to implement a virtual machine monitor for this type of processor. Specific limitations included the inability to trap on some privileged instructions.[3] Therefore, to compensate for these architectural limitations, designers accomplished virtualization of the x86 architecture through two methods: full virtualization or paravirtualization.[4] Both create the illusion of physical hardware to achieve the goal of operating system independence from the hardware but present some trade-offs in performance and complexity.
Full virtualization was not fully available on the x86 platform prior to 2005. Many platform hypervisors for the x86 platform came very close and claimed full virtualization (such as Adeos, Mac-on-Linux, Parallels Desktop for Mac, Parallels Workstation, VMware Workstation, VMware Server (formerly GSX Server), VirtualBox, Win4BSD, and Win4Lin Pro).
In 2005 and 2006, Intel and AMD (working independently) created new processor extensions to the x86 architecture called Intel VT-x and AMD-V, respectively. On the Itanium architecture, hardware-assisted virtualization is known as VT-i. The first generation of x86 processors to support these extensions were released in late 2005 early 2006:
- On November 13, 2005, Intel released two models of Pentium 4 (Model 662 and 672) as the first Intel processors to support VT-x.
- On May 23, 2006, AMD released the Athlon 64 ("Orleans"), the Athlon 64 X2 ("Windsor") and the Athlon 64 FX ("Windsor") as the first AMD processors to support this technology.
Hardware virtualization
[edit]Hardware virtualization (or platform virtualization) pools computing resources across one or more virtual machines. A virtual machine implements functionality of a (physical) computer with an operating system. The software or firmware that creates a virtual machine on the host hardware is called a hypervisor or virtual machine monitor.[2]
Software executed on these virtual machines is separated from the underlying hardware resources. For example, a computer that is running Arch Linux may host a virtual machine that looks like a computer with the Microsoft Windows operating system; Windows-based software can be run on the virtual machine.[5][6]
Different types of hardware virtualization include:
- Full virtualization – Almost complete virtualization of the actual hardware to allow software environments, including a guest operating system and its apps, to run unmodified.
- Paravirtualization – The guest apps are executed in their own isolated domains, as if they are running on a separate system, but a hardware environment is not simulated. Guest programs need to be specifically modified to run in this environment.
- Hybrid virtualization – Mostly full virtualization but utilizes paravirtualization drivers to increase virtual machine performance.
Full virtualization
[edit]
Full virtualization employs techniques that pools physical computer resources into one or more instances; each running a virtual environment where any software or operating system capable of execution on the raw hardware can be run in the virtual machine. Two common full virtualization techniques are typically used: (a) binary translation and (b) hardware-assisted full virtualization.[1] Binary translation automatically modifies the software on-the-fly to replace instructions that "pierce the virtual machine" with a different, virtual machine safe sequence of instructions.[7] Hardware-assisted virtualization allows guest operating systems to be run in isolation with virtually no modification to the (guest) operating system.
Full virtualization requires that every salient feature of the hardware be reflected into one of several virtual machines – including the full instruction set, input/output operations, interrupts, memory access, and whatever other elements are used by the software that runs on the bare machine, and that is intended to run in a virtual machine.
This approach was pioneered in 1966 with the IBM CP-40 and CP-67, predecessors of the VM family.
Binary translation
[edit]In binary translation, instructions are translated to match the emulated hardware architecture, if the virtual machine implements a different instruction set architecture from that of the hardware on which the virtual machine is being run, or to allow the hypervisor to catch hardware references that it must emulate, if the virtual machine implements the same instruction set architecture as the hardware on which the virtual machine is being run.[1] The hypervisor, in this case, translates (if emulating a different instruction set architecture) instructions, or replaces (if emulating the host architecture) some OS instructions with safer equivalents, during runtime. On the other hand, in hardware-assisted virtualization, the hypervisor configures the CPU to use the hardware's virtualization mechanism. Furthermore, a hypervisor is not the same as an emulator; both are computer programs that imitate hardware, but their domain of use in language differs.[8]
Hardware-assisted
[edit]Hardware-assisted virtualization (or accelerated virtualization; Xen calls it hardware virtual machine (HVM), and Virtual Iron calls it native virtualization) is a way of improving overall efficiency of hardware virtualization using help from the host processors. A full virtualization is used to emulate a complete hardware environment, or virtual machine, in which an unmodified guest operating system (using the same instruction set as the host machine) effectively executes in complete isolation.
Hardware-assisted virtualization was first introduced on the IBM 308X processors in 1980, with the Start Interpretive Execution (SIE) instruction.[9] It was added to x86 processors (Intel VT-x, AMD-V or VIA VT) in 2005, 2006 and 2010[10] respectively.
IBM offers hardware virtualization for its IBM Power Systems hardware for AIX, Linux and IBM i, and for its IBM Z mainframes. IBM refers to its specific form of hardware virtualization as "logical partition", or more commonly as LPAR.
Hardware-assisted virtualization reduces the maintenance overhead of binary translation based virtualization as it reduces (ideally, eliminates) the code that needs to be translated in the guest operating system. It is also considerably easier to obtain better performance.
Paravirtualization
[edit]Paravirtualization is a virtualization technique that presents a software interface to the virtual machines which is similar, yet not identical, to the underlying hardware–software interface. Paravirtualization improves performance and efficiency, compared to full virtualization, by having the guest operating system communicate with the hypervisor. By allowing the guest operating system to indicate its intent to the hypervisor, each can cooperate to obtain better performance when running in a virtual machine.
The intent of the modified interface is to reduce the portion of the guest's execution time spent performing operations which are substantially more difficult to run in a virtual environment compared to a non-virtualized environment. The paravirtualization provides specially defined 'hooks' to allow the guest(s) and host to request and acknowledge these tasks, which would otherwise be executed in the virtual domain (where execution performance is worse). A successful paravirtualized platform may allow the virtual machine monitor (VMM) to be simpler (by relocating execution of critical tasks from the virtual domain to the host domain), and/or reduce the overall performance degradation of machine execution inside the virtual guest.
Paravirtualization requires the guest operating system to be explicitly ported for the para-API – a conventional OS distribution that is not paravirtualization-aware cannot be run on top of a paravirtualizing VMM. However, even in cases where the operating system cannot be modified, components may be available that enable many of the significant performance advantages of paravirtualization. For example, the Xen Windows GPLPV project provides a kit of paravirtualization-aware device drivers, that are intended to be installed into a Microsoft Windows virtual guest running on the Xen hypervisor.[11] Such applications tend to be accessible through the paravirtual machine interface environment. This ensures run-mode compatibility across multiple encryption algorithm models, allowing seamless integration within the paravirtual framework.[12]
History
[edit]The term "paravirtualization" was first used in the research literature in association with the Denali Virtual Machine Manager.[13] The term is also used to describe the Xen, L4, TRANGO, VMware, Wind River and XtratuM hypervisors. All these projects use or can use paravirtualization techniques to support high performance virtual machines on x86 hardware by implementing a virtual machine that does not implement the hard-to-virtualize parts of the actual x86 instruction set.[14]
In 2005, VMware proposed a paravirtualization interface, the Virtual Machine Interface (VMI), as a communication mechanism between the guest operating system and the hypervisor. This interface enabled transparent paravirtualization in which a single binary version of the operating system can run either on native hardware or on a hypervisor in paravirtualized mode.
The first appearance of paravirtualization support in Linux occurred with the merge of the ppc64 port in 2002,[15] which supported running Linux as a paravirtualized guest on IBM pSeries (RS/6000) and iSeries (AS/400) hardware.
At the USENIX conference in 2006 in Boston, Massachusetts, a number of Linux development vendors (including IBM, VMware, Xen, and Red Hat) collaborated on an alternative form of paravirtualization, initially developed by the Xen group, called "paravirt-ops".[16] The paravirt-ops code (often shortened to pv-ops) was included in the mainline Linux kernel as of the 2.6.23 version, and provides a hypervisor-agnostic interface between the hypervisor and guest kernels. Distribution support for pv-ops guest kernels appeared starting with Ubuntu 7.04 and RedHat 9. Xen hypervisors based on any 2.6.24 or later kernel support pv-ops guests, as does VMware's Workstation product beginning with version 6.[17]
Hybrid virtualization
[edit]Hybrid virtualization combines full virtualization techniques with paravirtualized drivers to overcome limitations with hardware-assisted full virtualization.[18]
A hardware-assisted full virtualization approach uses an unmodified guest operating system that involves many VM traps producing high CPU overheads limiting scalability and the efficiency of server consolidation.[19] The hybrid virtualization approach overcomes this problem.
Desktop virtualization
[edit]Desktop virtualization separates the logical desktop from the physical machine.
One form of desktop virtualization, virtual desktop infrastructure (VDI), can be thought of as a more advanced form of hardware virtualization. Rather than interacting with a host computer directly via a keyboard, mouse, and monitor, the user interacts with the host computer using another desktop computer or a mobile device by means of a network connection, such as a LAN, Wireless LAN or even the Internet. In addition, the host computer in this scenario becomes a server computer capable of hosting multiple virtual machines at the same time for multiple users.[20]
Companies like HP and IBM provide a hybrid VDI model with a range of virtualization software and delivery models to improve upon the limitations of distributed client computing.[21] Selected client environments move workloads from PCs and other devices to data center servers, creating well-managed virtual clients, with applications and client operating environments hosted on servers and storage in the data center. For users, this means they can access their desktop from any location, without being tied to a single client device. Since the resources are centralized, users moving between work locations can still access the same client environment with their applications and data.[21] For IT administrators, this means a more centralized, efficient client environment that is easier to maintain and able to more quickly respond to the changing needs of the user and business.[22] Another form, session virtualization, allows multiple users to connect and log into a shared but powerful computer over the network and use it simultaneously. Each is given a desktop and a personal folder in which they store their files.[20] With multiseat configuration, session virtualization can be accomplished using a single PC with multiple monitors, keyboards, and mice connected.
Thin clients, which are seen in desktop virtualization, are simple and/or cheap computers that are primarily designed to connect to the network. They may lack significant hard disk storage space, RAM or even processing power, but many organizations are beginning to look at the cost benefits of eliminating "thick client" desktops that are packed with software (and require software licensing fees) and making more strategic investments.[23]
Desktop virtualization simplifies software versioning and patch management, where the new image is simply updated on the server, and the desktop gets the updated version when it reboots. It also enables centralized control over what applications the user is allowed to have access to on the workstation.
Moving virtualized desktops into the cloud creates hosted virtual desktops (HVDs), in which the desktop images are centrally managed and maintained by a specialist hosting firm. Benefits include scalability and the reduction of capital expenditure, which is replaced by a monthly operational cost.[24]
Containerization
[edit]Operating-system-level virtualization, also known as containerization, refers to an operating system feature in which the kernel allows the existence of multiple isolated user-space instances. Such instances, called containers,[25] partitions, virtual environments (VEs) or jails (FreeBSD jail or chroot jail), may look like (physical) computers from the point of view of programs running in them. A computer program running on an ordinary operating system can see all resources (connected devices, files and folders, network shares, CPU power, quantifiable hardware capabilities) of that computer. However, programs running inside a container can only see the container's contents and devices assigned to the container.
This provides many of the benefits that virtual machines have such as standardization and scalability, while using less resources as the kernel is shared between containers.[26]
Containerization started gaining prominence in 2014, with the introduction of Docker.[27][28]
Miscellaneous types
[edit]- Software
- Application virtualization and workspace virtualization: isolating individual apps from the underlying OS and other apps; closely associated with the concept of portable applications
- Service virtualization: emulating the behavior of specific components in heterogeneous component-based applications such as API-driven applications, cloud-based applications and service-oriented architectures
- Memory
- Memory virtualization: Aggregating RAM resources from multiple networked systems into a single unified memory pool is a concept often referred to as disaggregated memory, memory pooling, or remote memory access. This architecture aims to overcome the traditional memory limitations of a single system by enabling multiple computers or nodes to share their memory in a high-performance, low-latency manner.
- Virtual memory: giving an app the impression that it has contiguous working memory, isolating it from the underlying physical memory implementation
- Storage
- Storage virtualization: the process of completely abstracting logical storage from physical storage
- Distributed file system: any file system that allows access to files from multiple hosts sharing via a computer network
- Virtual file system: an abstraction layer on top of a more concrete file system, allowing client applications to access different types of concrete file systems in a uniform way
- Storage hypervisor: the software that manages storage virtualization and combines physical storage resources into one or more flexible pools of logical storage[29]
- Virtual disk: a computer program that emulates a disk drive such as a hard disk drive or optical disk drive (see comparison of disc image software)
- Data
- Data virtualization: the presentation of data as an abstract layer, independent of underlying database systems, structures and storage
- Database virtualization: the decoupling of the database layer, which lies between the storage and application layers within the application stack over all
- Network
- Network virtualization: creation of a virtualized network addressing space within or across network subnets
- Virtual private network (VPN): a network protocol that replaces the actual wire or other physical media in a network with an abstract layer, allowing a network to be created over the Internet
- Network Protocol Virtualization: decoupling networking layers in order to accelerate the deployment and management of networks
Benefits and disadvantages
[edit]Virtualization, in particular, full virtualization has proven beneficial for:
- sharing a computer system among multiple users;
- isolating users from each other (and from the control program);
- emulating new hardware to achieve improved reliability, security, and productivity.
A common goal of virtualization is to centralize administrative tasks while improving scalability and overall hardware-resource utilization. With virtualization, several operating systems can be run in parallel on a single central processing unit (CPU). This parallelism tends to reduce overhead costs and differs from multitasking, which involves running several programs on the same OS. Using virtualization, an enterprise can better manage updates and rapid changes to the operating system and applications without disrupting the user. "
Ultimately, virtualization dramatically improves the efficiency and availability of resources and applications in an organization. Instead of relying on the old model of "one server, one application" that leads to underutilized resources, virtual resources are dynamically applied to meet business needs without any excess fat".[30]
Virtual machines running proprietary operating systems require licensing, regardless of the host machine's operating system. For example, installing Microsoft Windows into a VM guest requires its licensing requirements to be satisfied.[31][32][33]
See also
[edit]- AI-assisted virtualization software
- Timeline of virtualization development
- Network function virtualization
- Digital twin
- Emulation (computing)
- Computer simulation
- Containerization
- Consolidation ratio
- I/O virtualization
- Application checkpointing
- Virtual art
- OS virtualization and emulation on Android
- Application virtualization
- User virtualization
References
[edit]- ^ a b c d Rodríguez-Haro, Fernando; Freitag, Felix; Navarro, Leandro; Hernánchez-sánchez, Efraín; Farías-Mendoza, Nicandro; Guerrero-Ibáñez, Juan Antonio; González-Potes, Apolinar (2012-01-01). "A summary of virtualization techniques". Procedia Technology. The 2012 Iberoamerican Conference on Electronics Engineering and Computer Science. 3: 267–272. doi:10.1016/j.protcy.2012.03.029. ISSN 2212-0173.
- ^ a b Turban, E; King, D.; Lee, J.; Viehland, D. (2008). "19". Electronic Commerce A Managerial Perspective (PDF) (5th ed.). Prentice-Hall. p. 27. Archived from the original (PDF) on 2009-05-21. Retrieved 2023-05-27.
- ^ Adams, Keith. "A Comparison of Software and Hardware Techniques for x86 Virtualization" (PDF). Archived from the original (PDF) on 20 August 2010. Retrieved 20 January 2013.
- ^ Chris Barclay, New approach to virtualizing x86s, Network World, 20 October 2006
- ^ Turban, E; King, D; Lee, J; Viehland, D (2008). "Chapter 19: Building E-Commerce Applications and Infrastructure". Electronic Commerce A Managerial Perspective. Prentice-Hall. p. 27.
- ^ "Virtualization in education" (PDF). IBM. October 2007. Retrieved 6 July 2010.
A virtual computer is a logical representation of a computer in software. By decoupling the physical hardware from the operating system, virtualization provides more operational flexibility and increases the utilization rate of the underlying physical hardware.
- ^ VMware (11 Sep 2007). "Understanding Full Virtualization, Paravirtualization, and Hardware Assist" (PDF). VMware. Archived from the original (PDF) on 2008-05-11. Retrieved 2021-05-20.
- ^ Creasy, R.J. (1981). "The Origin of the VM/370 Time-sharing System" (PDF). IBM. Retrieved 26 February 2013.
- ^ IBM System/370 Extended Architecture Interpretive Execution (PDF) (First ed.). IBM. January 1984. SA22-7095-0. Retrieved October 27, 2022.
- ^ "VIA Introduces New VIA Nano 3000 Series Processors". www.via.com.tw (Press release). Archived from the original on 22 January 2013. Retrieved 10 October 2022.
- ^ "Installing signed GPLPV drivers in Windows Xen instances". Univention Wiki. Retrieved 2013-04-10.
The GPLPV driver is a driver for Microsoft Windows, which enables Windows DomU systems virtualised in Xen to access the network and block drivers of the Xen Dom0. This provides a significant performance and reliability gain over the standard devices emulated by Xen/Qemu/Kvm.
- ^ Armstrong, D (2011). "Performance issues in clouds: An evaluation of virtual image propagation and I/O paravirtualization". The Computer Journal. 54 (6): 836–849. doi:10.1093/comjnl/bxr011.
- ^ A. Whitaker; M. Shaw; S. D. Gribble (2002). "Denali: Lightweight Virtual Machines for Distributed and Networked Applications". University of Washington Technical Report. Archived from the original on 2008-01-14. Retrieved 2006-12-09.
- ^ Strobl, Marius (2013). Virtualization for Reliable Embedded Systems. Munich: GRIN Publishing GmbH. p. 54,63. ISBN 978-3-656-49071-5.
- ^ Anton Blanchard. "Add ppc64 support". kernel.org. Retrieved 2024-04-24.
- ^ "XenParavirtOps – Xen". Wiki.xenproject.org. Retrieved 2017-03-03.
- ^ "VMware Introduces Support for Cross-Platform Paravirtualization – VMware". VMware. 16 May 2008. Archived from the original on 13 April 2011.
- ^ Jun Nakajima and Asit K. Mallick, "Hybrid-Virtualization—Enhanced Virtualization for Linux" Archived 2009-01-07 at the Wayback Machine, in Proceedings of the Linux Symposium, Ottawa, June 2007.
- ^ See "Hybrid Virtualization: The Next Generation of XenLinux". Archived March 20, 2009, at the Wayback Machine
- ^ a b "Strategies for Embracing Consumerization" (PDF). Microsoft Corporation. April 2011. p. 9. Archived from the original (PDF) on 15 August 2011. Retrieved 22 July 2011.
- ^ a b Chernicoff, David (August 19, 2011). "HP VDI Moves to Center Stage". ZDNet.
- ^ Baburajan, Rajani (August 24, 2011). "The Rising Cloud Storage Market Opportunity Strengthens Vendors". infoTECH. Archived from the original on 2012-01-06. Retrieved 2011-08-24.
- ^ "Desktop Virtualization Tries to Find Its Place in the Enterprise". Dell.com. Retrieved 2012-06-19.
- ^ "HVD: the cloud's silver lining" (PDF). Intrinsic Technology. Archived from the original (PDF) on 2 October 2012. Retrieved 30 August 2012.
- ^ Hogg, Scott (2014-05-26). "Software Containers: Used More Frequently than Most Realize". Network World. Network World, Inc. Retrieved 2015-07-09.
- ^ Gandhi, Rajeev (2019-02-06). "The Benefits of Containerization and What It Means for You". IBM Blog. Retrieved 2024-03-15.
- ^ Vaughan-Nichols, Steven J. (21 March 2018). "What is Docker and why is it so darn popular?". ZDNet. CBS Interactive.
- ^ Butler, Brandon (10 June 2014). "Docker 101: What it is and why it's important". Network World. IDG.
- ^ "Enterprise Systems Group White paper, Page 5" (PDF). Enterprise Strategy Group White Paper written and published on August 20, 2011 by Mark Peters. Archived from the original (PDF) on March 30, 2012. Retrieved July 18, 2013.
- ^ "Virtualization in education" (PDF). IBM. October 2007. Retrieved 6 July 2010.
- ^ Foley, Mary Jo (5 July 2012). "Microsoft goes public with Windows Server 2012 versions, licensing". ZDNet. CBS Interactive.
Finn explained that Standard covers 2 CPUs in a host, and goes from one VOSE (virtual operating system environment - 1 free Std install in a VM on that host) to two, and 'now has all the features and scalability of Datacenter.' He noted there will be a small price increase, but said he thought that wouldn't matter, as it 'should be virtualized anyway and the VOSE rights doubling will compensate. Windows Server Datacenter was a minimum of two 1-CPU licenses with unlimited VOSEs. 'Now it is a simpler SKU that covers two CPUs in a host with unlimited VOSEs,' Finn said.
- ^ "Windows Server 2012 Licensing and Pricing FAQ" (PDF). Microsoft. Retrieved 5 July 2012.
- ^ "Licensing Windows desktop operating system for use with virtual machines" (PDF). microsoft.com. Microsoft. Retrieved 22 December 2018.
External links
[edit]- An Introduction to Virtualization Archived 2020-10-22 at the Wayback Machine, January 2004, by Amit Singh
Virtualization
View on GrokipediaFundamentals
Definition and Core Principles
Virtualization is a computing technology that creates simulated versions of hardware platforms, operating systems, or storage devices, enabling multiple isolated environments to run on a single physical machine. This approach abstracts the underlying physical resources, allowing for the efficient allocation of computing power without the need for dedicated hardware for each instance. At its core, virtualization relies on several key principles: abstraction, which hides the complexities of physical hardware from virtual instances; resource sharing, which multiplexes limited physical resources among multiple users or applications; isolation, ensuring that activities in one virtual environment do not affect others; and emulation, which simulates the behavior of hardware or software components to provide a consistent interface.[10] These principles enable the creation of virtual instances that operate independently while optimizing overall system utilization.[11] Fundamental to virtualization are virtual machines (VMs), which are software-based emulations of physical computers that include their own operating systems and applications.[12] VMs are managed by a hypervisor, also known as a virtual machine monitor (VMM), which orchestrates the allocation of physical resources to virtual instances. Hypervisors are classified into two types: Type 1 (bare-metal), which runs directly on the host hardware without an intervening operating system for better performance and security; and Type 2 (hosted), which operates on top of a host operating system, offering greater flexibility but with added overhead.[13] Through these mechanisms, virtualization facilitates the multiplexing of physical resources, allowing a single host to support numerous VMs simultaneously.[14] Virtualization applies these principles to specific resources, such as the CPU, where time-sharing and scheduling emulate multiple processors; memory, through techniques that map virtual address spaces to physical memory while preventing interference; storage, by presenting virtual disks that abstract physical storage pools; and I/O devices, where virtual interfaces simulate hardware like network cards to enable shared access without direct physical attachment.[15] Early time-sharing systems in computing history exemplified resource sharing principles that later influenced modern virtualization.[16]Key Components and Terminology
Virtualization systems rely on several core architectural elements to enable the creation and management of multiple isolated environments on shared physical hardware. The Virtual Machine Monitor (VMM), also known as a hypervisor, serves as the foundational software layer that partitions and allocates physical resources to virtual machines while enforcing isolation between them.[17] It intercepts and manages interactions between virtual machines and the underlying hardware, ensuring that each virtual instance operates independently without interference.[18] The host operating system (OS) runs directly on the physical machine, providing a platform for the hypervisor in certain configurations, whereas the guest OS executes within each virtual machine, unaware of the virtualization layer and interacting only with emulated resources.[3] Virtual hardware components, such as virtual CPUs (vCPUs) and virtual memory, are abstracted representations of physical hardware provided to guest OSes, allowing them to function as if running on dedicated machines.[19] In virtualization terminology, the host refers to the physical machine that supplies the underlying computing resources, while a guest denotes a virtual instance running on that host, encapsulating its own OS and applications.[2] Overcommitment occurs when the total resources allocated to guests exceed the host's physical capacity, a technique that maximizes utilization but requires careful management to avoid performance degradation.[20] Snapshots capture the complete state of a virtual machine—including its memory, disk, and configuration—at a specific point in time, enabling quick reversion to that state for testing or recovery purposes.[21] Migration involves transferring a virtual machine between hosts; live migration maintains the VM's running state with minimal downtime, whereas offline migration requires the VM to be powered off first. Hypervisors are classified into two primary types based on their deployment model. Type 1 hypervisors operate directly on the host hardware without an intervening OS, offering higher efficiency and security for enterprise environments; examples include Xen, which runs as a bare-metal hypervisor to support multiple guest OSes.[22] In contrast, Type 2 hypervisors execute as applications atop a host OS, providing flexibility for development and testing; VMware Workstation exemplifies this type, leveraging the host OS for resource access while managing guest VMs.[23][17] Resource management in virtualization involves techniques for dynamically allocating and reclaiming resources among components to support overcommitment and maintain performance. For instance, memory ballooning allows the hypervisor to reclaim unused memory from idle guests by inflating a balloon driver within the guest OS, which pressures the guest to release pages deemed least valuable, thereby making them available to other VMs or the host without significant overhead.[24] This mechanism, integrated into the VMM, facilitates efficient sharing of physical memory across multiple guests while preserving isolation.[25]Historical Development
Early Concepts and Precursors
The theoretical foundations of virtualization can be traced to early computing concepts in the 1940s and 1950s, where pioneers like John von Neumann explored abstractions of computational resources to enable flexible program execution independent of specific hardware configurations. Von Neumann's 1945 EDVAC report emphasized a stored-program architecture that separated logical instructions from physical implementation, laying groundwork for later resource partitioning ideas essential to virtual environments. Precursors to virtualization emerged prominently in the early 1960s through time-sharing systems, which aimed to multiplex hardware resources among multiple users to simulate concurrent access. The Compatible Time-Sharing System (CTSS), developed at MIT's Computation Center, was first demonstrated in November 1961 on a modified IBM 709, introducing interactive computing by rapidly switching between user processes on a single machine. This approach addressed the inefficiencies of batch processing by providing the illusion of dedicated resources, a core principle later refined in virtualization.[26][27] The Multics project, initiated in 1964 as a collaboration between MIT, Bell Labs, and General Electric, further influenced virtualization by pioneering virtual memory techniques that abstracted physical storage into a uniform address space. Multics implemented segmented memory management, allowing processes to reference information symbolically without regard to its physical location, which facilitated secure resource sharing among users and foreshadowed virtual machine isolation. These innovations in time-sharing and memory abstraction directly informed subsequent virtualization efforts by demonstrating feasible software-based resource multiplexing on early mainframes.[28][29] The first practical implementation of virtualization arrived in the mid-1960s with IBM's CP/CMS system, designed to enhance time-sharing on mainframe computers. Developed as the CP-40 project starting in 1964 on the IBM System/360 Model 40, CP-40 introduced a control program (CP) that created virtual machines by emulating hardware instructions in software, allowing multiple instances of the Cambridge Monitor System (CMS) to run concurrently as isolated environments. This marked the debut of full virtualization for time-sharing, enabling efficient resource utilization on expensive hardware without specialized processors. By 1967, CP/CMS was adapted for the IBM System/360 Model 67, supporting up to 32 virtual machines and proving the viability of software-driven virtualization for multi-user computing.[2][30] Early virtualization faced significant challenges due to the absence of dedicated hardware support, relying entirely on software emulation that imposed substantial performance overheads. Without instructions for trap handling or direct memory access in processors like the IBM System/360, systems like CP-40 had to interpret privileged operations through slow, interpretive layers, limiting scalability to a few dozen virtual machines and complicating I/O management. These software-only approaches, while innovative, highlighted the need for future hardware accelerations to reduce emulation costs and enable broader adoption.[31][32]Key Milestones in Hardware and Software
In the early 1970s, IBM advanced virtualization through the development and release of VM/370 for the System/370 mainframe, announced on August 2, 1972, which enabled multiple virtual machines to run concurrently on a single physical system using a control program hypervisor.[33] This built briefly on the experimental CP/CMS system from the late 1960s at IBM's Cambridge Scientific Center, which introduced foundational time-sharing and virtual machine concepts for the System/360.[34] A pivotal theoretical contribution came in 1974 with Gerald J. Popek and Robert P. Goldberg's paper, which formalized the requirements for efficient full virtualization on third-generation architectures, specifying that sensitive instructions must either trap or behave identically in user and supervisor modes to enable trap-based virtualization without performance-degrading emulation.[35] During the 1970s and 1980s, research began exploring concepts akin to paravirtualization, where guest operating systems are modified to interact more efficiently with the hypervisor by avoiding problematic instructions, as seen in early academic studies on optimizing virtual machine interfaces for mainframe-like systems.[36] The 1990s marked a resurgence in x86 virtualization with the founding of VMware in 1998 and the release of VMware Workstation in May 1999, the first commercial hosted hypervisor that allowed multiple operating systems to run on a single x86 PC through software-based techniques like binary translation.[37] In the 2000s, open-source efforts gained traction with the Xen Project, initiated at the University of Cambridge and first publicly released in 2003, introducing paravirtualization for x86 systems where guest kernels were aware of the hypervisor to reduce overhead.[38] Hardware support accelerated adoption, as Intel launched Virtualization Technology (VT-x) in November 2005 with processors like the Pentium D, providing direct execution of guest code and ring transitions to simplify hypervisor design. AMD followed in May 2006 with Secure Virtual Machine (SVM), or AMD-V, offering similar extensions including nested paging for efficient memory management in virtual environments. Amazon Web Services further integrated virtualization into cloud computing by launching Elastic Compute Cloud (EC2) in beta on August 25, 2006, using Xen-based hypervisors to provision scalable virtual servers.[39] The 2010s and 2020s emphasized lightweight and secure virtualization, highlighted by Docker's initial open-source release in March 2013, which popularized OS-level containerization for application isolation without full VM overhead.[40] Recent hardware innovations include Intel's Trust Domain Extensions (TDX), detailed in a February 2022 whitepaper and enabled in 4th-generation Xeon Scalable processors, providing hardware-enforced memory encryption and isolation for confidential computing in multi-tenant clouds.[41]Types of Virtualization
Hardware Virtualization
Hardware virtualization involves the creation of virtual hardware platforms that emulate the behavior of physical computer systems, allowing multiple unmodified guest operating systems to run concurrently on a single host machine. This is typically achieved through a hypervisor, or virtual machine monitor (VMM), which intercepts and manages access to the underlying physical hardware resources such as CPU, memory, and peripherals. The primary goal is to provide each guest OS with the illusion of dedicated hardware, enabling isolation, resource sharing, and efficient utilization without requiring modifications to the guest software.[42] Central to hardware virtualization is CPU virtualization, which handles the execution of privileged instructions issued by guest operating systems. These instructions, which control critical system functions like memory management and interrupts, must be trapped and emulated by the hypervisor to prevent guests from directly accessing host resources. The Popek-Goldberg theorem classifies instructions into sensitive and non-sensitive categories: sensitive instructions alter the system's configuration or resources in ways that affect multiple users, requiring trapping for proper virtualization, while non-sensitive instructions can execute directly on the hardware without intervention. Architectures satisfying this theorem, termed virtualizable, support efficient full virtualization where guest OSes run unmodified, as the set of sensitive instructions is sufficiently small and trapable.[18] I/O and device virtualization extend this emulation to peripherals such as disks, network interfaces, and graphics cards, ensuring guests perceive complete hardware environments. Common techniques include software emulation, where the hypervisor simulates device behavior entirely in software, and direct device assignment or passthrough, which grants a guest exclusive access to a physical device via hardware mechanisms like IOMMU for secure isolation. Emulation provides flexibility and sharing among multiple guests but incurs higher latency due to the involvement of the hypervisor in every I/O operation, whereas passthrough offers near-native performance by bypassing the hypervisor for data transfer. For instance, network virtualization might use emulated virtual NICs for basic connectivity or SR-IOV for high-throughput passthrough in multi-queue scenarios.[43] Performance in hardware virtualization is influenced by overheads from frequent context switches and instruction trapping, which can degrade guest execution speed compared to bare-metal runs. Each trap to the hypervisor for handling privileged operations or I/O requests introduces latency from mode switches between guest and host contexts, potentially reducing throughput by 5-20% in CPU-bound workloads without optimizations. Hardware extensions like Intel VT-x mitigate this by providing dedicated instructions for VM entry and exit, reducing the number of traps and enabling direct execution of most non-privileged code, thus lowering overhead to under 5% in many cases and improving scalability for multi-tenant environments. A prominent example of hardware virtualization is the Kernel-based Virtual Machine (KVM) on Linux, which leverages hardware assists like VT-x or AMD-V to create efficient virtual machines. KVM integrates as a kernel module, using the Linux scheduler for vCPU management and QEMU for device emulation, allowing unmodified guest OSes to run with minimal overhead while supporting features like live migration and overcommitment. This combination has made KVM a foundation for enterprise deployments, powering platforms like OpenStack and Red Hat Virtualization.[44][45]Operating System-Level Virtualization
Operating system-level virtualization is an operating system paradigm that enables the kernel to support multiple isolated user-space instances, referred to as containers, which share the host kernel while providing the appearance of independent environments. This approach partitions the OS to create virtual environments with their own processes, networking, file systems, and resources, without emulating hardware or a separate kernel.[46] In contrast to hardware virtualization, OS-level virtualization offers lighter-weight operation with significantly lower overhead and faster startup times—often milliseconds rather than seconds—due to the absence of full OS emulation, but it restricts guests to OS variants compatible with the host kernel, such as Linux distributions on a Linux host.[47][48] Central to this virtualization are kernel features like Linux namespaces and control groups (cgroups). Namespaces deliver resource isolation by creating separate views of system elements, including process ID (PID) spaces to segregate process trees, network namespaces for independent stack configurations like routing tables and interfaces, mount namespaces for isolated file system hierarchies, and user namespaces for mapping user and group IDs.[49] Complementing this, cgroups provide hierarchical resource accounting and control, limiting usage of CPU, memory, I/O, and other hardware to prevent one container from monopolizing host resources; for example, the memory controller sets limits via parameters likememory.limit_in_bytes.[49] These mechanisms, integrated into the Linux kernel progressively from 2002 to 2013 for namespaces and 2008 for cgroups v1, form the foundation for efficient, kernel-shared isolation.[49]
Early commercial implementations include Solaris Zones, released with Solaris 10 in 2005, which partition the OS into non-privileged zones sharing the global zone's kernel while enforcing isolation through branded zones for application compatibility and resource caps via the resource manager.[50] The security model depends on kernel enforcement for isolation, using namespaces to delineate resource views (e.g., disjoint IPC objects or exclusive device access via cgroups) and capabilities like seccomp for syscall filtering, rather than hardware traps that intercept guest instructions in full virtualization setups.[48] This kernel-centric approach enhances efficiency but requires robust host kernel security, as a vulnerability could compromise all containers sharing it.[48]
A seminal open-source example is LXC (Linux Containers), initiated around 2008 by IBM engineers, which leverages namespaces, cgroups, chroots, and security profiles like AppArmor to manage system or application containers, bridging traditional chroot jails and full VMs as a precursor to subsequent container frameworks.[51] LXC provides an API and tools for creating near-native Linux environments, emphasizing lightweight virtualization for server consolidation and development isolation.[51]
