Virtualization is a technique in which all the capabilities of a piece of hardware are faithfully reproduced in a software program.
virtualization can be divided into five categories :
1. Application-level :
Systems like Wine Is Not an Emulator (WINE) support the installation of a single application. In this case, WINE allows an application designed for Microsoft Windows to be installed on Linux. Loosely, that is one example of an application configured in a VM.
2. Platform-level VM's :
Applications such as VMware Player and Virtualbox are open-source edition examples of platform-level VMs that emulate a complete computer system for the installation of a separate operating system.
3. Paravirtualization :
While it’s functionally similar to a platform-level VM, it works with fewer resources and usually requires a specialized kernel such as Xen.
4. Hardware-assisted virtualization :
A hardware interface where VMs have access to the hardware features of a CPU, such as those described earlier with vmx or svm flags in the /proc/cpuinfo file.
5. Bare-metal virtualization :
Some VM systems include a minimal operating system dedicated to VM operation. Two examples of bare-metal virtualization systems are VMware ESX and Citrix XenServer.