FeaturesΒΆ

QEMU is a FAST! processor emulator using dynamic translation to achieve good emulation speed.

operating modes

QEMU has two operating modes:

  • system emulation

    Full system emulation. In this mode, QEMU emulates a full system (for example a PC), including one or several processors and various peripherals. It can be used to launch different Operating Systems without rebooting the PC or to debug system code.

  • user mode emulation

    User mode emulation. In this mode, QEMU can launch processes compiled for one CPU on another CPU. It can be used to launch the Wine Windows API emulator (http://www.winehq.org) or to ease cross-compilation and cross-debugging.

QEMU has the following features:

  • QEMU can run without a host kernel driver and yet gives acceptable performance. It uses dynamic translation to native code for reasonable speed, with support for self-modifying code and precise exceptions.
  • It is portable to several operating systems (GNU/Linux, *BSD, Mac OS X, Windows) and architectures.
  • It performs accurate software emulation of the FPU.

QEMU user mode emulation has the following features:

  • Generic Linux system call converter, including most ioctls.
  • clone() emulation using native CPU clone() to use Linux scheduler for threads.
  • Accurate signal handling by remapping host signals to target signals.

QEMU full system emulation has the following features:

  • QEMU uses a full software MMU for maximum portability.
  • QEMU can optionally use an in-kernel accelerator, like kvm. The accelerators execute most of the guest code natively, while continuing to emulate the rest of the machine.
  • Various hardware devices can be emulated and in some cases, host devices (e.g. serial and parallel ports, USB, drives) can be used transparently by the guest Operating System. Host device passthrough can be used for talking to external physical peripherals (e.g. a webcam, modem or tape drive).
  • Symmetric multiprocessing (SMP) support. Currently, an in-kernel accelerator is required to use more than one host CPU for emulation.