|
Xen* is an open source virtual machine monitor (VMM) that allows the hardware resources of a machine to be virtualized
and dynamically shared between OSs running on top of it [1]. Each virtual machine (VM) is called a Domain, in Xen
terminology. Xen provides isolated execution for each domain, preventing failures or malicious activities in one domain
from impacting another domain. The Xen hypervisor and Domain0 (Dom0) are a required part of any Xen-based server.
Multiple user domains, called DomainU in Xen terminology, can be created to run guest OSs.
Unlike the full virtualization solutions offered by the IBM VM/370*, or VMware's ESX* and Microsoft's Virtual PC
product*, Xen began life as a VMM for guest OSs that have been modified to run on the Xen hypervisor. User applications
within these OSs run as is, i.e., unmodified. This technique is called "paravirtualization," and it delivers near native
performance for the guest OS, only if the guest OSs source code can be modified.
Xen versions 1.0 and 2.0 use paravirtualization techniques to support 32-bit platforms and Linux* guests. They use the
standard IA-32 protection and segmentation architecture for system resource virtualization. The hypervisor runs in the
highest privilege level ring 0 and has full access to all memory on the system. Guest OSs use privilege levels 1, 2, and
3 as they see fit. Segmentation is used to prevent the guest OS from accessing the Xen address space.
Xen 3.0 is the first open-source VMM that uses Intel® Virtualization Technology (VT) to support unmodified guest OSs as
well as paravirtualized guest OSs. Xen 3.0 also added support for 64-bit platforms and 64-bit guests [9]. Page-level
protection is used to protect the 64-bit hypervisor from the guest.
In this paper, we begin with a brief overview of Intel VT and then we explain how we extended Xen to take advantage of
VT. We highlight key virtualization issues for IA-32, Intel® EM64TΦ, and Itanium® processors and explain how they are
addressed in Xen 3.0. Finally, we highlight some of the changes that have been made to the hypervisor and the device
models to improve performance.
|