The term virtualization has many meanings, and aspects of virtualization
permeate all aspects of computing. Virtual machines are one instance of
this trend. Generally, with a virtual machine, guest operating systems and
applications run in an environment that appears to them to be native hardware
and that behaves toward them as native hardware would but that also protects,
manages, and limits them.
This chapter delves into the uses, features, and implementation of virtual
machines. Virtual machines can be implemented in several ways, and this
chapter describes these options. One option is to add virtual machine support
to the kernel. Because that implementation method is the most pertinent to this
book, we explore it most fully. Additionally, hardware features provided by
the CPU and even by I/O devices can support virtual machine implementation,
so we discuss how those features are used by the appropriate kernel modules.