By
Jim Smith, University of Wisconsin
Ravi Nair, IBM, Thomas J. Watson Research Center, New York
Description
Virtual Machine technology applies the concept of virtualization to an entire machine, circumventing real machine compatibility constraints
and hardware resource constraints to enable a higher degree of software portability and flexibility. Virtual machines are rapidly becoming
an essential element in computer system design. They provide system security, flexibility, cross-platform compatibility, reliability,
and resource efficiency. Designed to solve problems in combining and using major computer system components, virtual machine technologies
play a key role in many disciplines, including operating systems, programming languages, and computer architecture. For example, at
the process level, virtualizing technologies support dynamic program translation and platform-independent network computing. At the
system level, they support multiple operating system environments on the same hardware platform and in servers.
Historically, individual
virtual machine techniques have been developed within the specific disciplines that employ them (in some cases they aren’t even referred
to as “virtual machines”), making it difficult to see their common underlying relationships in a cohesive way. In this text, Smith and
Nair take a new approach by examining virtual machines as a unified discipline. Pulling together cross-cutting technologies allows virtual
machine implementations to be studied and engineered in a well-structured manner. Topics include instruction set emulation, dynamic
program translation and optimization, high level virtual machines (including Java and CLI), and system virtual machines for both single-user
systems and servers.
Audience:
Designers and developers in OS, Programming languages, and architecture; researchers in academia and industry; and graduate students in computer science and engineering