To understand how Xen works, you should know a little bit about virtualization methods. The first method is known as full virtualization. In a full virtualization environment, the virtualization software emulates a complete machine, including all the hardware resources. The operating system running in a full virtualization environment can communicate to the virtual hardware directly, and it isn't aware that it is running in a virtual environment. However, when working with this virtualized hardware, you have to pay a performance price. When using the proper hardware, Xen supports full virtualization. The advantage is that with full virtualization, Xen can run unmodified operating systems (although slower).
Tip Those special extensions needed to support full virtualization sound expensive, don't they? They aren't. Most recent CPUs just have them—on Intel as well as on AMD processors. The Dell laptop I bought in May 2006 is perfectly capable of running in full virtualization mode. If you can choose full virtualization when creating the virtual machine (see "Installing the First Virtual Machine" later in this chapter), your hardware supports it. You may, however, still need to activate it in your system BIOS (check for the Virtualization option).
The alternative to full virtualization is paravirtualization. In such an environment, the operating system in the virtual machine needs an application programming interface (API) to get access to the hardware. That is, the operating system in that case is aware that it isn't addressing hardware directly and needs to be modified. For that reason, you may have problems running most non-open source operating systems in such a virtual environment. Currently, only some Linux distributions and Novell's NetWare are modified to run in a paravirtualization environment. Xen can use paravirtualization as well.
The advantage of working with paravirtualization is that it's not necessary to create virtual drivers for all hardware; hardware can be addressed directly, and therefore paravirtualization offers a better performance than full virtualization. Also, the software in a paravirtualization environment communicates directly with the virtual hardware, which makes it possible to adjust hardware parameters without even rebooting the machine. For example, you can add or remove 128MB of memory to an operating system running in a paravirtualization environment without even rebooting it.
Was this article helpful?