QEMU
QEMU est un émulateur de processeur, qui permet d'exécuter des programmes destinés à un système d'exploitation différent de celui de l'hôte. Cela permet par exemple d'exécuter un système d'exploitation destiné à une architecture matérielle différente (par exemple un système d'exploitation destiné à une architecture ARM sur un ordinateur x86), ou encore de tester une nouvelle version d'un système d'exploitation sans avoir à l'installer directement sur un ordinateur.
QEMU fonctionne en émulant les instructions du processeur de la machine cible, en utilisant la traduction binaire dynamique (dynamic binary translation). Cela signifie que les instructions du processeur sont traduites en temps réel en instructions équivalentes pour l'hôte. Cette technique permet à QEMU de simuler les périphériques de la machine cible (disques, réseau, etc.) et de gérer l'interaction entre le système d'exploitation invité et le matériel hôte.
QEMU peut être utilisé avec diverses architectures de processeurs, tels que x86, ARM, MIPS, PowerPC, etc. Il est également compatible avec plusieurs systèmes d'exploitation invités, tels que Linux, Windows, FreeBSD, etc.
QEMU offre également une fonctionnalité de virtualisation, qui permet d'exécuter des systèmes d'exploitation invités de manière plus performante en utilisant les extensions de virtualisation du processeur hôte. Cette technique permet à QEMU d'exécuter des machines virtuelles à des performances proches de celles d'une machine physique, en évitant la traduction binaire dynamique à chaque instruction.
Bien que QEMU soit un émulateur de processeur puissant et flexible, il présente certains inconvénients par rapport à la solution de virtualisation KVM (Kernel-based Virtual Machine) :
- Performances : Comme QEMU utilise la traduction binaire dynamique pour émuler les instructions du processeur, cela peut entraîner une surcharge importante, ce qui peut entraîner des performances plus faibles que celles obtenues avec KVM. En revanche, KVM utilise la virtualisation matérielle pour exécuter les machines virtuelles, ce qui lui permet d'obtenir des performances très proches de celles d'une machine physique.
- Gestion de la mémoire : QEMU utilise une gestion de la mémoire traditionnelle, qui peut être moins efficace que celle utilisée par KVM, qui utilise la virtualisation assistée par le matériel pour optimiser l'utilisation de la mémoire.
- Sécurité : Étant donné que QEMU utilise la traduction binaire dynamique pour émuler les instructions du processeur, cela peut poser des problèmes de sécurité potentiels, car un code malveillant pourrait exploiter les vulnérabilités de cette technique. En revanche, KVM utilise des extensions de virtualisation matérielle pour isoler les machines virtuelles les unes des autres et du système hôte, ce qui améliore la sécurité.
— CPT