Skip to content

Introduction to Virtualization

Definition of Virtualization

Virtualization is a set of techniques that allow creating one or more “virtual” computers within a real computer. A virtual machine (VM) can be defined as a software implementation of a physical machine, that is, a “software” computer that behaves practically the same as a real computer.

Host OS

It is the OS of the real machine. The host runs the virtualization application that allows creating VMs.

Guest OS

It is the OS of the virtual machine. This guest can run virtualization add-ons to improve integration with the host.

Hypervisor

It is the platform that allows applying virtualization techniques and using different VMs on the same real machine.

Most Known Hypervisors

  • VMware
  • VirtualBox
  • Hyper-V
  • Parallels (for smaller OS)
  • QEMU

Utility of Virtualization

  • Allows testing SW without installing it on the real machine
  • Allows testing new OS without formatting the real machine
  • Protection against malware during testing
  • Run programs not compatible with modern OS
  • “Duplicable”, “freezable” and recoverable system
  • Ideal for educational environments

Practical Aspects

Hardware Considerations

  • Memory is usually the most limiting resource
  • Virtualization is supported by hardware in modern processors
    • Intel: VT-x
    • AMD: AMD-V
  • BIOS/UEFI configuration required to enable these features

Types of Hypervisors

Type 1 (Native)

Runs directly on hardware

Advantages:

  • Better performance

Examples:

  • VMware ESXi
  • Citrix XenServer
  • Hyper-V

Type 2 (Hosted)

Runs on the host OS

Advantages:

  • Greater flexibility
  • Support for different architectures

Examples:

  • VMware Player
  • VirtualBox
  • QEMU

Hypervisor-Types

Paravirtualization

Paravirtualization is a technique that seeks to increase performance by modifying the OS kernel to be aware that it is being virtualized.

Advantages

  • Better performance than full virtualization
  • Lighter hypervisor
  • More efficient communication between systems