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.
Examines virtual machine technologies across the disciplines that use them-operating systems, programming languages and computer architecture-defining a new and unified discipline.
Reviewed by principle researchers at Microsoft, HP, and by other industry research groups.
Written by two authors who combine several decades of expertise in computer system research and development, both in academia and industry.
Chapter 1: Introduction to Virtual Machines
Chapter 2: Emulation: Interpretation and Binary Translation
Chapter 3: Process Virtual Machines
Chapter 4: Dynamic Binary Optimization
Chapter 5: High-Level Language Virtual Machine Architecture
Chapter 6: High-Level virtual Machine Implementation
Chapter 7: Codesigned Virtual Machines
Chapter 8: System Virtual Machines
Chapter 9: Multiprocessor Virtualization
Chapter 10: Emerging Applications
Appendix A: Real Machines