Clemson University -- CPSC 231 -- Spring 2010 Virtual machines benefits mutliple flavors - run a different OS in each VM - provide for user preference - legacy OS/application (run one VM with old OS/app to avoid porting) fault isolation / security - OS in one VM crashes without taking the whole system down development/testing - develop/test in one VM without affecting others migration - move a VM from one physical server to another - load balancing - fault recovery approaches bare metal approach | user apps | user apps | user apps | user apps | | client OS | client OS | client OS | client OS | +-----------+-----------+-----------+-----------+ | VM | VM | VM | VM | +-----------+-----------+-----------+-----------+ | virtual machine monitor (hypervisor) | +-----------------------------------------------+ | hardware | +-----------------------------------------------+ hosted approach | user apps | user apps | | client OS | client OS | +-----------+-----------+ | VM | VM | +-----------+-----------+ | VM monitor | user app ... user app | +-----------------------------------------------+ | host OS | +-----------------------------------------------+ | hardware | +-----------------------------------------------+ also: dynamic recompilation of user and target OS code modify client OS to work with VMM (paravirtualization) VM should mimic I/O, interrupts, etc. - but should run w/ limited privileges 1) software simulate the actual machine => slow 2) run directly on hardware but each privileged operation is trapped and simulated 3) code VM with special assists history 1964 - work starts on IBM CP-40 (control program for S/360 Model 40) 1966 - IBM CP-67 (control program for S/360 Model 67, virtual memory) 1972 - IBM VM/370 for S/370 computers 1988 - SoftPC for Apple and Sun systems 1999 - VMware today - Microsoft Virtual PC, VMware, and Xen are but three among many AMD provides AMD-V and Intel provides Intel-VT (will allow Xen to host Windows)