OS Virtualization

In computer science, virtualization refers to the replication of a hardware or software object by a similar object of the same type using an abstraction layer. This allows virtual (i.e. non-physical) devices or services such as emulated hardware, operating systems, data storage or network resources to be created. This allows, for example, computer resources (especially in the server area) to be transparently combined or divided, or one operating system to be run within another.

KVM was first developed for the x86 platform and consists for this of the kernel module kvm.ko as well as the hardware-specific modules kvm-intel.ko (for Intel processors) or kvm-amd.ko (for AMD processors). In the meantime, KVM is also available for other platforms such as PowerPC, System z and ARM. KVM itself does not perform emulation, but only provides the infrastructure for it; QEMU is currently the only way to use it. For this purpose, QEMU provides the necessary devices such as hard disks, network, sound and graphics cards for virtualized guest systems. After loading the module, the Linux kernel itself works as a hypervisor for virtual machines. As guest systems, KVM supports Linux (32 and 64 bit), Windows (32 and 64 bit), Haiku, AROS, ReactOS, FreeDOS, Solaris and various BSD derivatives. KVM also runs on SMP host systems, SMP guest systems are also possible. Support for paravirtualization is now available in KVM and is provided under Linux by means of the Virtio paravirtualization interface (included in the kernel since kernel 2.6.25) for hard disk and network device drivers. Paravirtualized device drivers also exist for Windows. The advantages are lower overhead and increased performance, since the guest system "knows" that it is running on virtualized hardware and cooperates with the hypervisor. Since kernel 3.1, KVM supports nested virtualization on Intel CPUs. For AMD CPUs this is already available from version 2.6.30. Nested Virtualization allows host systems to make the virtualization support of the CPU available to guest systems, which in turn can virtualize "sub" guests.
Kernel Virtual Machine

QEMU (Quick Emulator) is a free virtualization software that emulates the entire hardware of a computer and achieves very good execution speed by dynamically translating the processor instructions of the guest processor into instructions for the host processor. QEMU emulates systems with the following processor architectures: x86, x64, PowerPC (32- and 64-bit), ARM (32- and 64-bit), Alpha, CRIS, HPPA, LatticeMico32, m68k or Coldfire, MicroBlaze, MIPS, Moxie, Nios II, SH-4, S/390, Sparc32/64, TILE-Gx, TriCore, OpenRISC, RISC-V, Unicore and Xtensa.
the FAST! processor emulator

libvirt is a collection of open source tools for managing virtual machines on a host system. This consists of an application programming interface (API), a daemon (libvirtd) and a command line program (virsh). With the aid of libvirt, it is possible to control hypervisor technologies from different manufacturers, such as KVM/QEMU, Xen, VMware, VirtualBox or Hyper-V, and to operate them via a uniform interface.
libvirt: virtualization API