x86 virtualization

From Wikipedia, the free encyclopedia

ubuntu running on Windows Vista, an example of virtualization
ubuntu running on Windows Vista, an example of virtualization

x86 virtualization is the method by which x86-based "guest" operating systems are run under another "host" x86 operating system, with little or no modification of the guest OS. The x86 processor architecture did not originally meet the Popek and Goldberg virtualization requirements. As a result, it was very difficult to implement a general virtual machine on an x86 processor. In 2005 and 2006, extensions to their respective x86 architectures by Intel and AMD resolved this and other virtualization difficulties.

Contents

[edit] Software techniques

On February 8, 1999, VMware introduced the first x86 virtualization product, "VMware Virtual Platform", based on earlier research by its founders at Stanford University. VMware filed for a patent on their techniques in October 1998, which was granted as U.S. Patent 6,397,242  on May 28, 2002. VMware and similar virtualization software for the x86 must employ very sophisticated techniques to trap and virtualize the execution of certain instructions. These techniques incur some performance overhead as compared to a VM running on a natively virtualizable architecture such as the IBM System/370 or Motorola MC68020.

Kevin Lawton started the Plex86 project (originally called "freemware") to create Free software for x86 virtualization. The focus of this project has since changed to support only Linux as a guest operating system, but prior to that Mr. Lawton published the paper Running multiple operating systems concurrently on an IA32 PC using virtualization techniques, which gives an analysis of what aspects of the x86 architecture are hard to virtualize and some techniques to overcome these difficulties.

Microsoft offers two Windows-based x86 virtualization products, Microsoft Virtual PC and Microsoft Virtual Server, based on technology they acquired from Connectix.

Open source alternatives include QEMU and VirtualBox.

The research systems Denali, L4, and Xen explored ways to provide high performance virtualization of x86 by implementing a virtual machine that differs from the raw hardware. Operating systems are ported to run on the resulting virtual machine, which does not implement the hard-to-virtualize parts of the actual x86 instruction set. This technique is known as paravirtualization. As of 3.0 Xen also now supports full virtualization with an unmodified guest OS provided hardware virtualisation support (i.e., Intel VT or AMD-V) is available.

[edit] Hardware support

Intel and AMD have independently developed virtualization extensions to the x86 architecture. They are not directly compatible with each other, but serve largely the same functions. Either will allow a virtual machine hypervisor to run an unmodified guest operating system without incurring significant emulation performance penalties.

[edit] AMD virtualization (AMD-V)

AMD's virtualization extensions to the 64-bit x86 architecture is named AMD Virtualization, abbreviated AMD-V. It is still referred to as "Pacifica", the AMD internal project code name.

AMD-V is present in AMD Athlon 64 with family "F" and "G" on socket AM2 not 939, Athlon 64 X2 with family "F" and "G", Turion 64 X2, Opteron 2nd generation[1] and 3rd generation[2], Phenom, and all newer processors.[citation needed]

AMD has published a specification for a technology named IO Memory Management Unit (IOMMU) to AMD-V. This provides a way of configuring interrupt delivery to individual virtual machines and an IO memory translation unit for preventing a virtual machine from using DMA to break isolation. The IOMMU also plays an important role in advanced operating systems (absent virtualization) and the AMD Torrenza architecture.

[edit] Intel VT (IVT)

Intel's virtualization extension for 32-bit and 64-bit x86 architecture is named IVT (short for Intel Virtualization Technology), and is sometimes referred to by the development code name "Vanderpool". The 32-bit or IA-32 IVT extensions are referred to as VT-x.[3] Intel has also published specifications for IVT for the IA-64 (Itanium) processors which are referred to as VT-i;[3] formerly the IA-64 virtualization was code-named "Silvervale".

Intel VT was officially launched at the Intel Developer Forum Spring 2005. It is available on certain Pentium 4 6x1 and 6x2 models,[4] Pentium D 9x0[5], Xeon 3xxx/5xxx/7xxx, Core Duo[6] (excluding the T2300E and T2x50 models) and Core 2 Duo[7] processors (excluding the T52x0, T5300, T54x0, T5500 with stepping "B2", E2xx0, E4x00, E7200 and E8190 models). On some implementations, IVT support may be switched off in the Firmware. This can be determined by checking if the VMX flag is enabled by the Feature Control MSR.

Documentation on the Intel website has stated that VT requires not only support from the processor, but also support from the chipset, BIOS, and perhaps software.[8][9]

Intel plans to add a technology named Virtualization for Directed I/O (VT-d) to VT. This provides a way of configuring interrupt delivery to individual virtual machines and an IOMMU for preventing a virtual machine from using DMA to break isolation.

[edit] Software using AMD-V and/or Intel-VT

The following software is known to conditionally make use of virtualization technology features:

[edit] Performance

Standard Performance Evaluation Corporation (SPEC) has created a working group to address the development of a set of industry standard methods to compare performance of virtualization technologies. Current members of the working group include AMD, Dell, Fujitsu Siemens, Hewlett-Packard, Intel, IBM, Sun Microsystems, SWsoft(Now Parallels) and VMware. SPEC is currently seeking information from the IT community to better understand the types of information that would provide the best industry benchmarks.

[edit] Windows Vista

Originally Windows Vista Home Basic and Home Premium's End User License Agreements stated that they may not be installed or run inside of a virtual machine, despite no technological barriers existing to prevent a user from doing so. The ban was reversed in January 2008.

Here is the Windows Vista SP1 supplement:

    "MICROSOFT SOFTWARE SUPPLEMENTAL LICENSE TERMS

    WINDOWS VISTA HOME BASIC, HOME PREMIUM, BUSINESS, ULTIMATE, AND THEIR SERVICE PACK 1 VERSIONS

    If you are licensed to use Microsoft Windows Vista Home Basic, Home Premium, Business, or Ultimate, 
    or Service Pack 1 of any of these Windows Vista editions (the “software”), you have the following
    license right. If there is a conflict with any past or future license terms for the software, this 
    supplemental license term applies.
    
    Use with Virtualization Technologies. Instead of using the software directly on the licensed 
    device, you may install and use the software within only one virtual (or otherwise emulated) hardware 
    system on the licensed device. When used in a virtualized environment, content protected by digital 
    rights management technology, BitLocker or any full volume disk drive encryption technology may not 
    be as secure as protected content not in a virtualized environment. You should comply with all 
    domestic and international laws that apply to such protected content."

[14]

[edit] See also

[edit] References