In previously publications, we have discussed KVM virtualization, QEMU, Virtualization Capable Processors as separate articles. What is the Difference Between KVM and QEMU? KVM gives a window to access to the CPU and memory whereas QEMU emulates the hardware resources. That is in short and the fact.
What is the Difference Between KVM and QEMU?
QEMU is a software to emulate machines in a flexible and portable way. QEMU has a long list of peripheral emulators including disk, network, VGA, PCI, USB, serial ports. parallel ports and so on. QEMU resides in the user space and provides system emulation (including processor and various peripherals). Usually, QEMU is deployed along with KVM as an in-kernel accelerator. QEMU usually made to emulate the peripherals needed by the guest OS. QEMU is Type 2 hypervisor.
VM is essentially a process. KVM executes most of the guest code natively. KVM virtualization uses the Linux kernel as its hypervisor. KVM is two things at the same time. One part is that it is a Linux kernel module. Second part is that, KVM is a fork of the QEMU executable. KVM resides in the Linux kernel as a loadable module. Once loaded, KVM converts the Linux kernel into a Type 1 hypervisor (bare-metal hypervisor) depending on the Intel-VT and AMD-V virtualization extensions for hardware assistance to enable virtualization.
KVM is a fork of QEMU. QEMU is used to emulate another processor architecture. QEMU runs on any processor without the need for hardware virtualization extension like Intel VT/VT-d, AMD-V while KVM needs to use them. Hardware virtualization extensions let us directly access the hardware on the physical machine but that KVM code base ca not emulate another processor architecture or peripherals. If we run KVM is on a machine without any hardware virtualization extension, then it will fall back to QEMU to run the VM.