VMware's Virtual Machines for the x86 Architecture
Geoff Pike, VMware Inc.
Virtual machines (VMs) alter the conventional notion of a close coupling between an operating system and physical hardware. Instead of a single OS having total control over all machine resources, an OS in a VM (the "guest") runs on a virtual hardware layer, independent of the actual ("host") OS. For example, Linux and Solaris VMs may run, simultaneously, on a Windows box. Additionally, by encapsulating virtual machine state, we implicitly gain the ability to checkpoint and migrate any operating system.
Virtual machines have been around since the '60s (for example, on IBM mainframes). Their implementation has generally assumed an architecture specifically designed for virtualization. For example, hardware can be designed such that jumping directly to "guest" code is safe because the virtual machine layer will automatically regain control if any "dangerous" operations are attempted. Because x86 CPUs are not designed that way, VMware's task is more difficult.
This talk describes VMware's approach to virtualizing an x86 CPU. As with most system software challenges, getting it to work is theoretically no problem, so performance issues are key.
We will also briefly touch on para-virtualization and on proposals by Intel and AMD to make future systems easier to virtualize.
Speaker Bio: Geoff Pike graduated from Harvard College in 1992, and completed his doctorate at UC Berkeley in 2002, specializing in compilers. After stints at a dot-com, a postdoc at UC Berkeley, and USC, he joined VMware in May, 2004. VMware is currently the fastest growing software company of those with annual sales at least $100 million.