It provides a variety of hardware and device models for the virtual machine, enabling it to run different guest operating systems.
QEMU can be used with a Kernel-based Virtual Machine (KVM) to emulate hardware at near-native speeds.
Additionally, it supports user-level processes, allowing applications compiled for one processor architecture to run on another.
[5] QEMU has multiple operating modes:[6] QEMU supports the emulation of various architectures, including x86, MIPS64 (up to Release 6),[9] SPARC (sun4m and sun4u), ARM (Integrator/CP and Versatile/PB), SuperH, PowerPC (PReP and Power Macintosh), ETRAX CRIS, MicroBlaze, and RISC-V.
Guest operating systems do not need patching to run inside QEMU.
QCOW images only occupy the actual used disk space, not the full configured capacity.
QEMU does not require administrative rights to run unless additional kernel modules are used to improve speed (like KQEMU) or certain modes of its network connectivity model are utilized.
The whole translation task thus consists of two parts: basic blocks of target code (TBs) being rewritten in TCG ops – a kind of machine-independent intermediate notation, and subsequently this notation being compiled for the host's architecture by TCG.
[10][11] KQEMU was a Linux kernel module, also written by Fabrice Bellard, which notably sped up emulation of x86 or x86-64 guests on platforms with the same CPU architecture.
KQEMU could execute code from many guest operating systems even if the host CPU did not support hardware-assisted virtualization.
KQEMU was initially a closed-source product available free of charge but starting from version 1.3.0pre10 (February 2007),[12] it was relicensed under the GNU General Public License.
QEMU versions starting with 0.12.0 (as of August 2009[update]) support large memory which makes them incompatible with KQEMU.
This depends on the guest being updated to support parallel system emulation, currently ARM, Alpha, HP-PA, PowerPC, RISC-V, s390x, x86, and Xtensa.
Otherwise, a single thread is used to emulate all virtual CPUs (vCPUs), which executes each vCPU in a round-robin manner.
[21] In addition, VirtualBox did a lot of code analysis and patching using a built-in disassembler to minimize recompilation.
Hardware is emulated through a QEMU "device model" daemon running as a backend in Dom0.
In early 2005, Win4Lin introduced Win4Lin Pro Desktop, based on a 'tuned' version of QEMU and KQEMU and it hosts NT-versions of Windows.
In September 2006, Win4Lin announced a change of the company name to Virtual Bridges with the release of Win4BSD Pro Desktop, a port of the product to FreeBSD and PC-BSD.
Unlike QEMU, Unicorn focuses on the CPU only: no emulation of any peripherals is provided and raw binary code (outside of the context of an executable file or a system image) can be run directly.
It is more popular in developing countries in Asia such as India, Malaysia, and Thailand on YouTube due to the high usage of the Android Operating System.
Besides the CPU[37] (which is also configurable and can emulate a number of Intel CPU models including as of 3 March 2018 Sandy Bridge,[38] Ivy Bridge,[39] Haswell,[40] Broadwell[41][42] and Skylake[40]), the following devices are emulated: The BIOS implementation used by QEMU starting from version 0.12 is SeaBIOS.
Starting from version 2.0.0 of their Bada SDK, Samsung has chosen QEMU to help development on emulated 'Wave' devices.