06-09-2012, 10:24 AM
Virtualization and Virtual Machines (VM)
19virtualizationppt2550.ppt (Size: 2.34 MB / Downloads: 54)
What is it?
Virtualization is a framework or methodology of dividing the resources of a computer into multiple execution environments,
Done by applying one or more concepts or technologies such as:
hardware and software partitioning,
time-sharing,
partial or complete machine simulation,
emulation,
quality of service,
and many others.
“Virtualization is an abstraction layer that decouples the physical hardware from the operating system to deliver greater IT resource utilization and flexibility.” – www.vmware.com
A Brief History
Not a new concept
1960’s at IBM:
M44/44X Project, the goal of which was being to evaluate the then emerging time sharing system concepts
The architecture was based on virtual machines: the main machine was an IBM 7044 (M44) and each virtual machine was an experimental image of the main machine (44X)
IBM and MIT headed research through the years and eventually developed the idea of a Virtual Machine Monitor (VMM)
Different Types of Virtual Machines
Modern computer systems are composed of various hardware and software layers
Virtualization inserts a software layer (VMM) at different points in this architecture, comes in three variants:
hardware-level virtualization
operating system-level
high-level language virtual machines
Attributes of All Virtual Machines (1/2)
Software Compatibility
VM provides compatible abstraction so all software written for the machine that VM is virtualizing will run on it
Java: “write once, run anywhere”
Isolation
All software running on the virtual machine is contained within it and can’t affect other VM’s or processes
Attributes of All Virtual Machines (2/2)
Encapsulation
Virtual machines provide a level of indirection. Any software running within them can be controlled and manipulated.
Can act like putting a filter on a print service to monitor content or perform additional book keeping.
Java VM for example can perform run time error checking and garbage collection that C++ compiled code can’t do running directly on the hardware
Performance
Any new software layer adds overhead to system
Hardware Level VMM Attributes
Software Compatibility
Only needs to match the hardware interface which evolves much slower than software interfaces
Isolation Capability
Use the hardware (MMU amongst others) of the system to control access of the software running on the VM’s
Isolation is often comparable to if you were actually running separate physical machines
Isolation code of VMM much more manageable (10kloc) than that of modern operating system (100’skloc)