ACMQueue Sat, Aug 14, 2004    
Developer Tools
Sponsored by Security Innovation
Open Source
Sponsored by ActiveState
Enterprise Search
Sponsored by Convera
Data Management
Virtual Machines
Sponsored by VMware
      free subscription       back issues       news       forums       advertise with queue       advisory board       Search
Queue Partners
Tips to Deploy Web Services Security
Reactivity WhitePaper
we make data work!
sponsored links
Free Subscription!
Get Queue in Print
What's on
Your Hard Drive?
Tell us about your dev tools and you may win a Queue T-shirt!
What's New
on ACM Queue
·Without a NULL That String Would Never End
·Security Is Harder Than You Think
·A Conversation with James Gosling
·Simulators: Virtual Machines of the Past (and Future)
·Samba Does Windows-to-Linux Dance
go to issue index
Free Email Newsletter
Newsletter Information
privacy policy
Most Popular Articles
1Game Development: Harder Than You Think
2You Don't Know Jack about Disks
3Death by UML Fever
4A Conversation with Dan Dobberpuhl
5Gaming Graphics: Road to Revolution
Latest Developer Headlines
·Plastic Dummy Testing Handset Technology (CNN)
·Japanese Get First Mobile Wallets (BBC)
·Microsoft Prepares Largest Ever Software Upgrade (New Scientist)
·Nasa Powers Up with Supercomputer (BBC)
·Trojan Horse Charges PDAs (InternetNews)
submit | more ...
Latest Forum Threads
·re: Without a NULL That String Would Never End
·It's not just punctuation that's suffering
·Obviously no programming experience
·IBM Mainframes
·Serial Commas
go to forums

sections in this article
1: The Virtual Machines
2: Virtual Machine Monitors
3: Past and Future

Virtual Machines -> Features -> Virtual Machines issue
The Reincarnation of Virtual Machines

FREE trial of VMware Workstation 4 Click here! sponsored by VMware

ACM Queue vol. 2, no. 5 - July/August 2004
by Mendel Rosenblum, Standford University and VMWare
  printer-friendly format
  recommend to a colleague

Virtualization makes a comeback.

The Virtual Machines

The term virtual machine initially described a 1960s operating system concept: a software abstraction with the looks of a computer system's hardware (real machine). Forty years later, the term encompasses a large range of abstractions—for example, Java virtual machines that don't match an existing real machine. Despite the variations, in all definitions the virtual machine is a target for a programmer or compilation system. In other words, software is written to run on the virtual machine.


One way to view the different virtual machine abstractions is as "slices" of the hardware/software stack. A modern computer system is composed of layers, beginning with the hardware and including layers of an operating system and application programs running on top of the operating system (see figure 1). Virtualization software abstracts virtual machines by interposing a layer at various places in the system. Three examples of these virtualization layers include hardware-level virtualization, operating system–level virtualization, and high-level language virtual machines.

Hardware-level virtualization. Here the virtualization layer sits right on top of the hardware exporting the virtual machine abstraction. Because the virtual machine looks like the hardware, all the software written for it will run in the virtual machine. This is actually the original virtual machine definition from the 1960s, including older technology such as VM/370 on IBM mainframes—as well as VMware virtualization technology on x86-based machines, as illustrated in Figure 2. (For more on this, see Bob Supnik's "Simulators: Virtual Machines of the Past {and Future]" on page 52 of this issue.)

Operating system–level virtualization. In this case the virtualization layer sits between the operating system and the application programs that run on the operating system. The virtual machine runs applications, or sets of applications, that are written for the particular operating system being virtualized. FreeBSD Jails are an example of this technology (For more on this, see Poul-Henning Kamp and Robert Watson's "Building Systems to Be Shared" on page 42 of this issue.)

High-level language virtual machines. In high-level language virtual machines, the virtualization layer sits as an application program on top of an operating system. The layer exports an abstraction of the virtual machine that can run programs written and compiled to the particular abstract machine definition. Any program written in the high-level language and compiled for this virtual machine will run in it. Smalltalk and Java are two examples of this kind of virtual machine (For more on this, see "Interview: James Gosling" on page 24 of this issue.)


Although the chief attractions for running in a virtual machine environment differ among the various types, all share a common set of attributes.

Software compatibility. The virtual machine provides a compatible abstraction so that all software written for it will run on it. For example, a hardware-level virtual machine will run all the software, operating systems, and applications written for the hardware. Similarly, an operating system–level virtual machine will run applications for that particular operating system, and a high-level virtual machine will run programs written in the high-level language.

The virtual machine abstraction frequently can mask differences in the hardware and software layers below the virtual machine. One example is Java's claim that you can "write once, run anywhere."

Isolation. The virtual machine abstraction isolates the software running in the virtual machine from other virtual machines and real machines. This isolation provides that bugs or hackers can be contained within the virtual machine and thus not adversely affect other parts of the system. In addition to data isolation, the virtualization layer can execute performance isolation so that resources consumed by one virtual machine do not necessarily harm the performance of other virtual machines. Traditionally, operating systems are not as fair in performing resource balancing and starvation prevention as virtual machine environments tend to be.

Encapsulation. The software layer exporting the virtual machine abstraction is an example of what is known as a level of indirection. This layer can be used to manipulate and control the execution of the software in the virtual machine. It can also use this indirection to enhance the software or to provide a better execution environment. For example, virtual machines for high-level languages typically support runtime checks that can reduce a class of programming errors. These include type-safe, memory-safe, and garbage-collected memory management. Overall, the layer provides a better execution environment for the programming.

Performance. Adding a layer of software to a system adds overhead, which can adversely affect the performance of the software running in the virtual machine. The benefits of successful virtual machine systems far outweigh any overhead that they introduce.

MENDEL ROSENBLUM, associate professor in the computer science department at Stanford University, cofounded VMware in 1998 and serves as its chief scientist. He received a B.A. in mathematics from the University of Virginia (1984) and an M.S. (1989) and Ph.D. (1992) in computer science from the University of California at Berkeley. He was recipient of the 1992 National Science Foundation's National Young Investigator award, the 1994 Alfred P. Sloan Foundation Research Fellowship, and was a cowinner of the 1992 ACM Doctoral Dissertation Award and the 2002 ACM/SIGOPS Mark Weiser Award for creativity and innovation in operating systems research. His research interests include system software, distributed systems, and computer architecture. Rosenblum has published material on disk storage management, computer simulation techniques, scalable operating system structure, virtualization computer security, and mobility.

next page (2/3)
Virtual Machine Monitors

Comment on this Article in the ACM Queue Forums

More articles from our issue on Virtual Machines

Without a NULL That String Would Never End
    N-streak, 1-streak, worra streak
Security Is Harder Than You Think
    Still waiting for your set-it-and-forget-it fantasy about SSL to become reality?
A Conversation with James Gosling
    James Gosling talks about virtual machines, security, and of course, Java.
Simulators: Virtual Machines of the Past (and Future)
    Why would anyone ever want to write software for machines that no longer exist - and even if they did want to, how would they go about it?
Samba Does Windows-to-Linux Dance
    Mounting remote Linux drives under Windows is easier than you think.
Building Systems to be Shared Securely
    Running multiple virtual servers on one machine makes sense, but what happens when not everyone plays nice?
For Want of a Comma, the Meaning Was Lost
    What does punctuation have to do with software development?
The Reincarnation of Virtual Machines
    Like the best of the 1970s and 1980s, VMs have returned to the scene -- and they're a lot cooler than polyester pants.
Virtually Yours
    Virtual Machines are back in style.
Recent Issues

Virtual Machines
Open Source
Enterprise Search
Game Development
Distributed Development
Instant Messaging

ACM home
about queue | contact us | privacy policy | advisory board | writer faq | RSS feed
© 2004 ACM, Inc. All rights reserved.