While mainframes and other systems were designed as far back as the mid-1960s to support virtual machine technology effectively, the x86 architecture was designed in ways that made virtualization difficult. As implemented through multiple generations from multiple vendors, x86 design made it impossible to keep the contexts and resources of separate virtual environments apart from each other, or to perform privileged operations safely on behalf of multiple environments.
The first makers of virtualization technology for x86 systems met these challenges by building an environment that fully emulated a physical machine, from processor to memory to I/O devices, and then by optimizing processing and memory access (directly executing instructions without emulation) where they knew it was safe to do so. This provides a much faster environment than previous emulators, but still suffers from complexity of engineering and inefficiency of processing: the software needs to monitor all executing instructions, trapping potentially unsafe ones and translating them into virtualization-safe equivalent sequences.
The market success of virtualization brought along two types of change that indicated the importance of the technology to major players who were sitting on the sidelines and waiting to see user acceptance: operating system suppliers and CPU makers.
The first major change came along first from the open source community and then from commercial operating system vendors. What if operating systems could be modified so that, instead of executing virtualization-unsafe instructions, they were hardwired to understand when they were running in a virtual environment and could directly call the virtualization-safe code sequence that older systems needed to trap and emulate?
This approach, often called "paravirtualization" or "operating system enlightenment," was used by the researchers at the University of Cambridge who developed Xen. They modified the operating systems available to them in source form (initially, the Linux and BSD kernels) to call their Xen virtualization engine directly, saving trap and translation overhead.
As this approach was proven successful and efficient, it was picked up by commercial operating system providers, including Linux distribution vendors and, in a post-release update to the upcoming Windows Server 2008, by Microsoft. This allows out-of-the-box operating systems to use virtualization more simply and effectively.
The second major area of advancement came from Intel and AMD, the major x86 processor makers. They began the process of implementing extensions to the x86 architecture to make it more friendly to virtualization. The concept of the first portion of their extensions (known as "Intel Virtualization Technology" or "Intel VT" and "AMD Virtualization" or "AMD-V" respectively) is to let the virtualization engine tell the CPU when it is running in a virtualized context. The virtualization engine also presents the CPU with a list of its routines that can be called to support virtualization-unsafe operations.
When a virtualization-unsafe instruction is executed, what the CPU does is dependent on whether or not it is running in virtualization mode. If it is running without virtualization, the instruction is executed normally. If virtualization is enabled, instead of executing the instruction, the CPU instead calls the routine it has been told is safe to execute.
Unlike the first-generation solution, the complexity of determining when and how to translate unsafe instructions is handed off to hardware, not software. This leaves the software code paths lean and easily maintainable, while taking advantage of increases in hardware efficiency.
In both cases - virtualization-ready operating systems and processors - the success of virtualization has driven vendors to build technology that is optimized for virtualization. The Xen virtualization engine, or "hypervisor," is designed to make efficient use of these advances to run efficiently and to be easy to maintain and enhance. As further enhancements, such as virtualized I/O optimization, come along in later versions of virtualization assist technologies, Xen will take advantage of their capabilities.