summaryrefslogtreecommitdiff
path: root/doc/16.md
blob: 6bfdc5485a30b0e07ac47daf8b2c9261ff7a59b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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.