You are previewing Virtual Machines.
O'Reilly logo
Virtual Machines

Book 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.

* 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.

Table of Contents

  1. Cover
  2. Title Page
  3. Dedication
  4. Copyright
  5. Foreword
  6. Preface
  7. Table of Contents
  8. Chapter 1: Introduction to Virtual Machines
    1. 1.1 Computer Architecture
    2. 1.1 Computer Architecture
    3. 1.3 Process Virtual Machines
    4. 1.4 System Virtual Machines
    5. 1.5 A Taxonomy
    6. 1.6 Summary: The Versatility of Virtual Machines
    7. 1.7 The Rest of the Book
  9. Chapter 2: Emulation
    1. 2.1 Basic Interpretation
    2. 2.2 Threaded Interpretation
    3. 2.3 Predecoding and Direct Threaded Interpretation
    4. 2.4 Interpreting a Complex Instruction Set
    5. 2.5 Binary Translation
    6. 2.6 Code Discovery and Dynamic Translation
    7. 2.7 Control Transfer Optimizations
    8. 2.8 Instruction Set Issues
    9. 2.9 Case Study: Shade and the Role of Emulation During Simulation
    10. 2.10 Summary: Performance Tradeoffs
  10. Chapter 3: Process Virtual Machines
    1. 3.1 Virtual Machine Implementation
    2. 3.2 Compatibility
    3. 3.3 State Mapping
    4. 3.4 Memory Architecture Emulation
    5. 3.5 Instruction Emulation
    6. 3.6 Exception Emulation
    7. 3.7 Operating System Emulation
    8. 3.8 Code Cache Management
    9. 3.9 System Environment
    10. 3.10 Case Study: FX!32
    11. 3.11 Summary
  11. Chapter 4: Dynamic Binary Optimization
    1. 4.1 Dynamic Program Behavior
    2. 4.2 Profiling
    3. 4.3 Optimizing Translation Blocks
    4. 4.4 Optimization Framework
    5. 4.5 Code Reordering
    6. 4.6 Code Optimizations
    7. 4.7 Same-ISA Optimization Systems: Special-Case Process Virtual Machines
    8. 4.8 Summary
  12. Chapter 5: High-Level Language Virtual Machine Architecture
    1. 5.1 The Pascal P-Code Virtual Machine
    2. 5.2 Object-Oriented High-Level Language Virtual Machines
    3. 5.3 The Java Virtual Machine Architecture
    4. 5.4 Completing the Platform: APIs
    5. 5.5 The Microsoft Common Language Infrastructure: A Flexible High-Level Language Virtual Machine
    6. 5.6 Summary: Virtual ISA Features
  13. Chapter 6: High-Level Language Virtual Machine Implementation
    1. 6.1 Dynamic Class Loading
    2. 6.2 Implementing Security
    3. 6.3 Garbage Collection
    4. 6.4 Java Native Interface
    5. 6.5 Basic Emulation
    6. 6.6 High-Performance Emulation
    7. 6.7 Case Study: The Jikes Research Virtual Machine
    8. 6.8 Summary
  14. Chapter 7: Codesigned Virtual Machines
    1. 7.1 Memory and Register State Mapping
    2. 7.2 Self-Modifying and Self-Referencing Code
    3. 7.3 Support for Code Caching
    4. 7.4 Implementing Precise Traps
    5. 7.5 Input/Output
    6. 7.6 Applying Codesigned Virtual Machines
    7. 7.7 Case Study: Transmeta Crusoe
    8. 7.8 Case Study: IBM AS/400
    9. 7.9 Summary
  15. Chapter 8: System Virtual Machines
    1. 8.1 Key Concepts
    2. 8.2 Resource Virtualization—Processors
    3. 8.3 Resource Virtualization—Memory
    4. 8.4 Resource Virtualization—Input/Output
    5. 8.5 Performance Enhancement of System Virtual Machines
    6. 8.6 Case Study: VMware Virtual Platform
    7. 8.7 Case Study: The Intel VT-x (Vanderpool) Technology
    8. 8.8 Summary
  16. Chapter 9: Multiprocessor Virtualization
    1. 9.1 Partitioning of Multiprocessor Systems
    2. 9.2 Physical Partitioning
    3. 9.3 Logical Partitioning
    4. 9.4 Case Study: Cellular Disco System Virtual Machine-Based Partitioning
    5. 9.5 Virtualization with Different Host and Guest ISAs
    6. 9.6 Summary
  17. Chapter 10: Emerging Applications
    1. 10.1 Security
    2. 10.2 Migration of Computing Environments
    3. 10.3 Grids: Virtual Organizations
    4. 10.4 Summary
  18. Appendix A: Real Machines
    1. A.1 Computer System Hardware
    2. A.2 The User ISA: Computation
    3. A.3 The System ISA: Resource Management
    4. A.4 Operating System Organization
    5. A.5 The Operating System Interface
    6. A.6 System Initialization
    7. A.7 Multiprocessor Architecture
    8. A.8 Example Instruction Set Architectures
  19. References
  20. Index
  21. Instructions for online access