.. _Glossary:

--------
Glossary
--------

This section of the manual presents brief definitions of acronyms and terms used
by QEMU developers.

Accelerator
-----------

A specific API used to accelerate execution of guest instructions. It can be
hardware-based, through a virtualization API provided by the host OS (kvm, hvf,
whpx, ...), or software-based (tcg). See this description of `supported
accelerators<Accelerators>`.

Board
-----

Another name for :ref:`machine`.

Block
-----

Block drivers are the available `disk formats and front-ends
<block-drivers>` available, and block devices `(see Block device section on
options page)<sec_005finvocation>` are using them to implement disks for a
virtual machine.

CFI
---

Control Flow Integrity is a hardening technique used to prevent exploits
targeting QEMU by detecting unexpected branches during execution. QEMU `actively
supports<cfi>` being compiled with CFI enabled.

Device
------

In QEMU, a device is a piece of hardware visible to the guest. Examples include
UARTs, PCI controllers, PCI cards, VGA controllers, and many more.

QEMU is able to emulate a CPU, and all the hardware interacting with it,
including `many devices<device-emulation>`. When QEMU runs a virtual machine
using a hardware-based accelerator, it is responsible for emulating, using
software, all devices.

EDK2
----

EDK2, as known as `TianoCore <https://www.tianocore.org/>`_, is an open source
implementation of UEFI standard. QEMU virtual machines that boot a UEFI firmware
usually use EDK2.

gdbstub
-------

QEMU implements a `gdb server <GDB usage>`, allowing gdb to attach to it and
debug a running virtual machine, or a program in user-mode. This allows
debugging the guest code that is running inside QEMU.

glib2
-----

`GLib2 <https://docs.gtk.org/glib/>`_ is one of the most important libraries we
are using through the codebase. It provides many data structures, macros, string
and thread utilities and portable functions across different OS. It's required
to build QEMU.

Guest agent
-----------

The `QEMU Guest Agent <qemu-ga>` is a daemon intended to be run within virtual
machines. It provides various services to help QEMU to interact with it.

.. _guest:

Guest
-----

Guest is the architecture of the virtual machine, which is emulated.
See also :ref:`host`.

Sometimes this is called the :ref:`target` architecture, but that term
can be ambiguous.

.. _host:

Host
----

Host is the architecture on which QEMU is running on, which is native.
See also :ref:`guest`.

Hypervisor
----------

The formal definition of an hypervisor is a program or API than can be used to
manage a virtual machine. QEMU is a virtualizer, that interacts with various
hypervisors.

In the context of QEMU, an hypervisor is an API, provided by the Host OS,
allowing to execute virtual machines. Linux implementation is KVM (and supports
Xen as well). For MacOS, it's HVF. Windows defines WHPX. And NetBSD provides
NVMM.

.. _machine:

Machine
-------

QEMU's system emulation models many different types of hardware. A machine model
(sometimes called a board model) is the model of a complete virtual system with
RAM, one or more CPUs, and various devices. It can be selected with the option
``-machine`` of qemu-system. Our machine models can be found on this `page
<system-targets-ref>`.

Migration
---------

QEMU can save and restore the execution of a virtual machine between different
host systems. This is provided by the :ref:`Migration framework<migration>`.

NBD
---

The `QEMU Network Block Device server <qemu-nbd>` is a tool that can be used to
mount and access QEMU images, providing functionality similar to a loop device.

Mailing List
------------

This is `where <https://wiki.qemu.org/Contribute/MailingLists>`_ all the
development happens! Changes are posted as series, that all developers can
review and share feedback for.

For reporting issues, our `GitLab
<https://gitlab.com/qemu-project/qemu/-/issues>`_ tracker is the best place.

.. _softmmu:

MMU / softmmu
-------------

The Memory Management Unit is responsible for translating virtual addresses to
physical addresses and managing memory protection. QEMU system mode is named
"softmmu" precisely because it implements this in software, including a TLB
(Translation lookaside buffer), for the guest virtual machine.

QEMU user-mode does not implement a full software MMU, but "simply" translates
virtual addresses by adding a specific offset, and relying on host MMU/OS
instead.

Monitor / QMP / HMP
-------------------

The `QEMU Monitor <QEMU monitor>` is a text interface which can be used to interact
with a running virtual machine.

QMP stands for QEMU Monitor Protocol and is a json based interface.
HMP stands for Human Monitor Protocol and is a set of text commands available
for users who prefer natural language to json.

MTTCG
-----

Multiple CPU support was first implemented using a round-robin algorithm
running on a single thread. Later on, `Multi-threaded TCG <mttcg>` was developed
to benefit from multiple cores to speed up execution.

Plugins
-------

`TCG Plugins <TCG Plugins>` is an API used to instrument guest code, in system
and user mode. The end goal is to have a similar set of functionality compared
to `DynamoRIO <https://dynamorio.org/>`_ or `valgrind <https://valgrind.org/>`_.

One key advantage of QEMU plugins is that they can be used to perform
architecture agnostic instrumentation.

Patchew
-------

`Patchew <https://patchew.org/QEMU/>`_ is a website that tracks patches on the
Mailing List.

PR
--

Once a series is reviewed and accepted by a subsystem maintainer, it will be
included in a PR (Pull Request) that the project maintainer will merge into QEMU
main branch, after running tests.

The QEMU project doesn't currently expect most developers to directly submit
pull requests.

QCOW2
-----

QEMU Copy On Write is a disk format developed by QEMU. It provides transparent
compression, automatic extension, and many other advantages over a raw image.

qcow2 is the recommended format to use.

QEMU
----

`QEMU (Quick Emulator) <https://www.qemu.org/>`_ is a generic and open source
machine emulator and virtualizer.

QOM
---

:ref:`QEMU Object Model <qom>` is an object oriented API used to define
various devices and hardware in the QEMU codebase.

Record/replay
-------------

:ref:`Record/replay <replay>` is a feature of QEMU allowing to have a
deterministic and reproducible execution of a virtual machine.

Rust
----

`A new programming language <https://www.rust-lang.org/>`_, memory safe by
default. There is a work in progress to integrate it in QEMU codebase for
various subsystems.

System mode
-----------

QEMU System mode provides a virtual model of an entire machine (CPU, memory and
emulated devices) to run a guest OS. In this mode the CPU may be fully emulated,
or it may work with a hypervisor such as KVM, Xen or Hypervisor.Framework to
allow the guest to run directly on the host CPU.

QEMU System mode is called :ref:`softmmu <softmmu>` as well.

.. _target:

Target
------

The term "target" can be ambiguous. In most places in QEMU it is used as a
synonym for :ref:`guest`. For example the code for emulating Arm CPUs is in
``target/arm/``. However in the :ref:`TCG subsystem <tcg>` "target" refers to the
architecture which QEMU is running on, i.e. the :ref:`host`.

TCG
---

TCG is the QEMU `Tiny Code Generator <tcg>`. It is the JIT (just-in-time)
compiler we use to emulate a guest CPU in software.

It is one of the accelerators supported by QEMU, and supports a lot of
guest/host architectures.

User mode
---------

QEMU User mode can launch processes compiled for one CPU on another CPU. In this
mode the CPU is always emulated. In this mode, QEMU translate system calls from
guest to host kernel. It is available for Linux and BSD.

VirtIO
------

VirtIO is an open standard used to define and implement virtual devices with a
minimal overhead, defining a set of data structures and hypercalls (similar to
system calls, but targeting an hypervisor, which happens to be QEMU in our
case). It's designed to be more efficient than emulating a real device, by
minimizing the amount of interactions between a guest VM and its hypervisor.

vhost-user
----------

`Vhost-user <vhost_user>` is an interface used to implement VirtIO devices
outside of QEMU itself.
