Virtualization
Steven J Zeil
Last modified: Dec 9, 2020
Abstract
Virtualization refers to the use of software to simulate portions of a computer system.
1 Virtualization
Virtualization presents the simulation of a guest machine via special software running on a host machine.
Forms of virtualization:
- Full virtualization (a.k.a. emulation)
- Paravirtualization, OS Virtualization
- Container virtualization
1.1 Full Virtualization
a.k.a., emulation
- The host simulates everything down to and including the CPU level of the guest.
- The guest CPU can be different from that of the host.
These include the first virtualization systems (IBM 1966), often used to avoid/delay porting large application systems.
More modern instances:
- The Java Virtual Machine
- Game system emulators
- Parallels
1.2 Paravirtualization
a.k.a., OS-assisted virtualization, a.k.a., hypervisors
- CPU is not emulated, but OS is
- Allows code between OS calls to run natively
- Many devices are simulated
- Guest CPU must be same as on host
- Guest OS can be different from that of host
Architectures:
- Hosted
- Hypervisor
1.2.1 Hosted Paravirtualization
a.k.a., type 2 hypervisor, client hypervisor
Runs the simulation as a host OS application.
- Examples:
- VMWare
- VirtualBox
1.2.2 Hypervisor Paravirtualization
a.k.a. type 1 hypervisor, bare metal hypervisor
The simulator is a “thin” OS sitting on top of the hardware.
- Examples
- Xen
- Hyper-V
- VMWare
1.3 Containers
- Guest CPU is same as host’s
- Guest OS is same family as host’s
- A thin OS simulation passes OS functions down to host.
- Applications are simulated
Instances:
- Docker
- builds on OS support such as
chroot
- Oddly,
docker
hosted on Windows can virutalize wither Linux or Windows (but not both)
- builds on OS support such as