QEMU is an open-source program that emulates and virtualizes whole computers. Its own documentation describes it plainly: “QEMU is a generic and open source machine emulator and virtualizer.” That dual nature is the key to its usefulness: it can pretend to be an entire machine in software, or it can hand work off to a hardware hypervisor for speed.
In pure emulation mode QEMU can stand in for a different processor and its devices, so software built for one CPU architecture can run on another. This is built on dynamic binary translation, the technique Fabrice Bellard described in his 2005 paper “QEMU, a Fast and Portable Dynamic Translator,” which translates guest machine instructions into host instructions on the fly.
QEMU also works as a virtualizer when the host and guest share the same architecture. The documentation notes that in system emulation “it may work with a hypervisor such as KVM, Xen or Hypervisor.Framework to allow the guest to run directly on the host CPU,” achieving near-native performance instead of translating every instruction.
This pairing made QEMU the device-and-machine half of the dominant Linux virtualization stack. While KVM provides CPU and memory virtualization inside the kernel, QEMU emulates the disks, network cards, and other hardware that a guest operating system expects, so the two are almost always deployed together.