# Virtual Machines Virtual machines abstract the hardware of a single computer into several different execution environments. VM's involve several components: * host: hardware system that runs the VM's * Virtual Machine Manager (VMM) aka hypervisor: creates an runs VM's * guest: process provided with a virtual copy of the host. ```plaintext |-----------| |------------------------------------| | | | processes | | | | | | | processes | | | processes | | | | processes | | | | | | | | | |-----------|-----------|------------| |-----------| | kernel | kernel | kernel | | kernel | |-----------|-----------|------------| |-----------| | VM1 | VM2 | VM3 | | hardware | |------------------------------------| |-----------| | hypervisor | |------------------------------------| | hardware | |------------------------------------| ``` Hypervisor implementations vary: * type 0 hypervisor: hardware based solutions that provide support at the firmware level. * type 1 hypervisor: OS like software built to provide virtualization. * type 2 hypervisor: are applications that run on other operating systems, which do not know that virtualization is taking place. VCPU: virtual CPU. does not execute code but represents the state of the CPU as the guest machine believes it to be. ## Summary Virtualization is a method of providing a guest with a duplicate of a system's underlying hardware. Multiple guests can run on a given syste, each believing it is the native operating system in full control of the system.