A data processing system may include hardware resources, such as a central processing unit (CPU), random access memory (RAM), read-only memory (ROM), etc. The processing system may also include software resources, such as a basic input/output system (BIOS), a virtual machine monitor (VMM), and one or more operating systems (OSs). When the computer system is started or reset, it may load the BIOS, and then the VMM. The VMM may include the control logic necessary for interacting with hardware without an underlying host OS. Alternatively, a host OS may be started, and then the VMM may be launched on top of the host OS. The VMM may create and manage one or more virtual machines (VMs), and the VMs may boot to different guest OSs or to different instances of the same guest OS. One or more guest VMs may provide the VMM with facilities for managing certain aspects of the processing system pertaining to virtualization. Such a guest VM may be referred to as a service VM, and the OS in a service VM may be referred to as a service OS.
Thus, a VMM may allow multiple OSs and applications to run in independent partitions or execution environments. The article entitled “Intel® Virtualization Technology for Directed I/O,” in issue no, 03, volume no. 10, of the Intel® Technology Journal (the “VT-d article”) provides additional information about some virtualization frameworks. The VT-d article is currently available from the Internet at http://down load.intel.com/technology/itj/2006/v10i3/v10-i3-art02.pdf.
The CPU in a data processing system may provide hardware support (e.g., instructions and data structures) for virtualization. Additional details about virtualization may be found in reference manuals such as (a) Intel® Virtualization Technology Specification for the IA-32 Intel® Architecture, dated April 2005 (the VT-x specification”); and (b) IA-32 Intel® Architecture Software Developer's Manual, Volume 2B: Instruction Set Reference, N-Z, dated June 2006. Furthermore, different types of processors may provide different features for supporting virtualization.