Introduction to Virtual Machines
• Introduction
• Abstraction and interfaces
• Virtualization
• Computer system architecture
• Process virtual machines
• System virtual machines
EECS 768 Virtual Machines 1
Abstraction
• Mechanism to manage complexity in computer
systems.
• Mechanism consists of
– partition the design of a system into levels
– allow higher levels to ignore the implementation
details of lower levels
• In computer systems, lower levels are
implemented in hardware, and higher levels in
software.
EECS 768 Virtual Machines 2
Interfaces
• An interface defines the communication
boundary between two entities
– hierarchical relationship
– linear relationship
• Software can run on any machine supporting a
compatible interface
MacIntosh apps. Windows apps. Linux apps
MacOS Windows Linux
PowerPC x86 x86
EECS 768 Virtual Machines 3
Interfaces – Advantages
• Allows de-coupling of computer design tasks
– each component provides an abstraction of itself to the
outside world
• Work on different components can progress
independently
• Helps manage system complexity
EECS 768 Virtual Machines 4
Interface – Disadvantages
• Software compiled for one ISA will not run on
hardware with a different ISA
– powerPC binaries on an x86 machine ?
• Even if ISA's are same Oses may differ
– MS–Windows applications Sun Solaris ?
MacIntosh apps Windows apps.
MacOS
Linux
x86 x86
EECS 768 Virtual Machines 5
Interface – Disadvantages (2)
• Binaries may not be optimized for the platform
they run on
– Intel Pentium binaries on AMD Athlon ?
• Innovation may be inhibited by a fixed ISA
– hard to change instruction sets
• Application software cannot directly exploit
microprocessor implementation features
– software supposed to be implementation-neutral !
EECS 768 Virtual Machines 6
Virtualization
• Removes some constraints imposed by system
interfaces, and increases flexibility
– improves availability of application software
– removes the assumption of a single management
regime, improving security and failure isolation
• Provide a different view to a particular computer
resource
– not necessarily a simpler view
EECS 768 Virtual Machines 7
Virtualization (2)
• Virtualization constructs an isomorphism that
maps a virtual guest system to a real host.
e(Si )
Si Sj
Guest
V(Si ) V(Sj )
e'(Si')
Si' Sj'
Host
EECS 768 Virtual Machines 8
Virtualization (3)
• Virtualization Vs. abstraction
– virtualization does not necessarily hide details
virtualization
file
file
EECS 768 Virtual Machines 9
Virtual Machines
• Concept of virtualization applied to the entire
machine.
• A virtual machine is implemented by adding a
layer of software to a real machine to support
the desired virtual machine’s architecture.
• Virtualization
– mapping of virtual resources or state to real
resources
– use of real machine instructions to carry out actions
specified by the virtual machine instructions
EECS 768 Virtual Machines 10
Some Benefits of VMs
• Flexibility
• Portability
• Isolation
• Security
EECS 768 Virtual Machines 11
Computer System Architecture
• Architecture – functionality and appearance of a
computer system, but not the details of its
implementation
• Implementation – the actual embodiment of an
architecture
EECS 768 Virtual Machines 12
Computer Architecture (2)
Software
• Computer systems are Application
built of levels of Programs
Libraries
abstraction Operating System
– hierarchical abstraction Drivers
Memory
Scheduler
Manager
– well-defined interfaces Execution Hardware
Memory
Translation
System Interconnect
(bus)
Controllers Controllers
I/O devices
Main
and
Memory
Networking
Hardware
EECS 768 Virtual Machines 13
The ISA Interface
• Interface between Application
Programs
hardware and software Libraries
• Important for
Operating System
– OS developer
Execution Hardware
Memory
Translation
System Interconnect
(bus)
I/O devices
Main
and
Memory
Networking
EECS 768 Virtual Machines 14
The ABI Interface
• Application Binary Application
Programs
Interface (ABI) Libraries
– user ISA + system calls
Operating System
• Important for
– compiler writers Execution Hardware
Memory
Translation
System Interconnect
(bus)
I/O devices
Main
and
Memory
Networking
EECS 768 Virtual Machines 15
The API Interface
• Application Application
Programs
Programming Libraries
Interface (API)
– user ISA + Operating System
library calls
Execution Hardware
• Important for
Memory
– application System Interconnect
Translation
programmers (bus)
I/O devices
Main
and
Memory
Networking
EECS 768 Virtual Machines 16
Major Program Interfaces
• ISA – supports all conventional software
Application Software
System Calls
Operating System
System ISA User ISA
ISA
• ABI – supports application software only
Application Software
System Calls
Operating System
System ISA User ISA
ABI
EECS 768 Virtual Machines 17
Process Virtual Machines
• Process virtual machine is capable of
supporting an individual process
– different guest and host ISA
– couple at ABI level via runtime system
Guest Application Process Application Process
Runtime Virtualizing
Software
OS Virtual
Machine
Host Machine
Hardware
EECS 768 Virtual Machines 18
Process Virtual Machines (2)
• Constructed at ABI level
• Runtime manages guest process
host guest
• Runtime communicates with process process
host OS runtime
• Guest processes may guest guest
host
intermingle with host processes process process
process
• As a practical matter, binaries runtime
runtime
built for same OS create
• Dynamic optimizers are a HOST OS
special case
file sharing
• Examples: IA-32 EL, FX!32, Disk
Dynamo network communication
EECS 768 Virtual Machines 19
System Virtual Machines
• System Virtual Machine capable of supporting
an OS with potentially many user processes
– couple at ISA level
– eg., IBM VM/360, VMWare, Transmeta Crusoe
Applications Applications
Guest
OS OS
Virtualizing
VMM Software
Virtual
Machine
Hardware
Host "Machine"
EECS 768 Virtual Machines 20
PVM – Multiprogramming
• PVM provided by a multi-process OS for each
concurrently executing application.
• Combination of the OS system call interface,
and the user-level ISA.
• Each process is given the illusion of having the
complete machine to itself.
EECS 768 Virtual Machines 21
PVM – Emulators
• Execute binaries compiled to a different
instruction set than that executed by the host’s
hardware.
• Interpretation
– low startup overhead
– high steady-state per instruction emulation overhead
EECS 768 Virtual Machines 22
PVM – Dynamic Translators
• Run-time translation of blocks of source
instructions to equivalent target instructions.
– high start-up translation overhead
– fast steady-state execution
• Uses a code cache to HP Apps
store translated blocks
of code for reuse. UNIX
• e.g., Digital’s FX!32
system, Aries system,
HP PA
Intel IA-32 EL system
EECS 768 Virtual Machines 23
PVM – Same ISA Binary Optimizers
• Same source and target ISAs.
• Main task is the optimization of the source
binary
– ABI level optimization
– may also collect performance profiles
– may also enhance security
• e.g., Dynamo system, developed at Hewlett-
Packard.
EECS 768 Virtual Machines 24
PVM – High Level Language VM
• A HLL is designed for VM execution
– minimize hardware-specific and OS-specific
features that could compromise portability
HLL Program HLL
Program
Compiler front-end Compiler
Intermediate Code Portable Code
(Virtual ISA )
Compiler back-end
Object Code VM loader
(ISA) Virt. Mem. Image
Loader VM Interpreter/Translator
Memory Image Host Instructions
Traditional HLL VM
EECS 768 Virtual Machines 25
PVM – High Level Language VM
• Binary class files are distributed
– ISA part of class file (no real implementation)
• OS interaction via API
• e.g., Java, Microsoft CLI
Java Binary Classes
Java VM
Architecture
VM VM VM
implementation implementation implementation
Sparc x86 Apple
Workstation PC Mac
EECS 768 Virtual Machines 26
Classic System Virtual Machine
• Original meaning of the term virtual machine
– all guest and host software use the same ISA
– VMM runs on bare hardware (most privileged mode)
– VMM intercepts and implements all the privileged
operations for the guest OS.
Win Win Win Linux Linux Linux
process process process process process process
Guest OS (Windows) Guest OS2 (Linux)
VMM
HOST PLATFORM
virtual
network communication
EECS 768 Virtual Machines 27
Hosted System Virtual Machine
• Virtualizing software is built on top of an
existing host OS.
• Advantages
– installation is like installing application programs
– host OS provides device driver support
• Drawbacks
– less efficient
EECS 768 Virtual Machines 28
Whole System VMs
• Different ISA for guest and host systems.
– both application and OS code require emulation
• Implemented by placing the VMM and the
guest software on top of a conventional host OS
running on the hardware
• e.g., Virtual PC
EECS 768 Virtual Machines 29
Codesigned Virtual Machines
• VMs designed to enable innovative ISAs and/or
hardware implementations for improved
performance, power efficiency, etc.
• Similar hardware virtualization is common for
microprocessors, such as Pentium IV.
• Software VM is part of the hardware design
– applications/OS never directly execute native ISA
instructions
• e.g., Transmeta Crusoe processor
EECS 768 Virtual Machines 30
VM Taxonomy
Process VMs System VMs
different different
same ISA same ISA
ISA ISA
Dynamic Classic System Whole System
Multiprogrammed Translators VM VM
Systems IA-32EL, FX!32 IBM VM/370 Virtual PC for Mac
Dynamic Hosted VM
Binary VMware Codesigned
HLL VM VM
Optimizers Java VM
Dynamo Transmeta
MS CLI Crusoe
EECS 768 Virtual Machines 31