X86-Virtualisierung
Was ist x86-Virtualisierung?
- hardware- und softwarebasierte Mechanismen zur Unterstützung der Virtualisierung für Prozessoren, die auf der x86-Architektur basieren.
- Unter Verwendung eines Hypervisors kann man mehrere Betriebssysteme parallel auf einem x86-Prozessor auszuführen
- Man kann die Ressourcen isoliert und effizient zwischen den parallel ausgeführten Betriebssystemen aufteilen.
- Die (Gast-)Betriebssysteme sollten keinen Unterschied zwischen virtualisiertem und den Betrieb direkt auf der Hardware erkennen können.
Ring Model
VT Modell
Thread 1
- KVM, das für Kernel-basierte Virtualisierung steht, ist ein Linux-Kernel, der in Kombination mit dem kvm-Kernelmodul den üblichen Linux-Kernel in einen Bare-Metal-Hypervisor verwandelt.
- Sobald KVM im Kernel installiert ist, können wir virtuelle Maschinen darin erstellen und sie mit verschiedenen Userspace-Tools wie qemu, libvirt oder virsh steuern.
- CPU-Virtualisierung: Um die CPU zu virtualisieren, nutzt KVM die Hardwarelösung, d. h. CPUs, in die Virtualisierungsanweisungen integriert sind.
- Intel nennt dies VT-X und AMD nennt es AMD-V.
- Die traditionelle Architektur von CPUs hatte den standardmäßigen ringbasierten Betrieb, wie unten gezeigt.
- Das Betriebssystem würde die privilegierten Befehle im Ring 0 ausführen und die Benutzerraumanwendungen würden im Ring 3 ausgeführt.
- Die Einführung der Virtualisierung erforderte das Vorhandensein einer neuen Schicht zwischen der Hardware und dem Betriebssystem.
- Dies hätte auf zwei Arten erreicht werden können: 0/1/3-Modell, bei dem das Betriebssystem in Ring 1 verschoben und der Hypervisor in Ring 0 ausgeführt wird
- 0/3/3-Modell, bei dem das Betriebssystem und die Anwendungen beide im Ring3 ausgeführt werden und der Hypervisor im Ring 0 ausgeführt wird.
- Beide Modelle, die das Betriebssystem von Ring 0 wegbewegen, führen zu mehreren Problemen, da das Betriebssystem so konzipiert ist, dass es immer in Ring 0 ausgeführt wird.
- Die Softwarelösungen wie binäre Übersetzung und Paravirtualisierung versuchen, die Probleme aufgrund dieser Änderung des Betriebsrings anzugehen das Betriebssystem.
- Die von Intel und AMD-V eingeführte Hardwarelösung löst dies, indem sie neue Betriebsmodi in der CPU einführt.
- Die für die Intel-Virtualisierung aktivierte Hardware verfügt über die neuen Betriebsmodi VMX Root und VMX Non Root.
- Die VMX-Root-Operation wird verwendet, um den Hypervisor auszuführen, und die VMX-Non-Root-Operation wird verwendet, um die VM selbst auszuführen
- Jeder dieser CPU-Modi hat Ring 0,1,2,3.
- Somit kann das Betriebssystem weiterhin in ring0 im VMX-Non-Root-Modus arbeiten und somit seine gesamte Kontrolle über die Hardware wie bei einem herkömmlichen Betriebssystem behalten.
- Der Hypervisor hingegen wird im VMX-Root-Modus in Ring 0 ausgeführt.
- Somit erhält sogar der Hypervisor die vollständige Kontrolle über die Hardware, indem er im ring0 vorhanden ist.
- Aber zu jedem beliebigen Zeitpunkt würde entweder die andere VM oder der Hypervisor im Ring-0-Modus arbeiten.
- Dies löst eine Reihe von Problemen, die in den Softwarelösungen der Virtualisierung bestehen, und macht die Virtualisierung viel schneller,
- Die VM während des normalen Betriebs ohne Eingriff des Hypervisors direkt auf der Hardware arbeiten kann.
- Die Steuerung verlagert sich aus der VM nur bei einer E/A, die von der im Host-Kernel laufenden Userspace-Anwendung gehandhabt wird, und bei Interrupts oder anderen Signalen, die vom Hypervisor gehandhabt werden.
- KVM nutzt diese Hardwarefunktion, während die virtuellen Maschinen ausgeführt werden.
- Somit gibt es neben dem traditionellen Kernel-Space und User-Space einen neuen Modus, der als Gast-Betriebsmodus im Kernel bezeichnet wird.
- Die VM arbeitet in diesem Gastmodus, der den VMX-Nicht-Root-Modus nutzt.
- Das Gastbetriebssystem arbeitet im Ring 0 des VMX-Non-Root-Modus und die Anwendungen im Gastbetriebssystem im Ring 3 des VMX-Non-Root-Modus.
- Der KVM-Kernel hingegen arbeitet im Ring 0 des VMX-Root-Modus.
- Der Kernel, der als Hypervisor fungiert, wird im Kernelraum des vmx-Root-Modus ausgeführt.
Thread 2
- VT-x ist eine CPU-Virtualisierung für die Intel 64- und IA-32-Architektur.
- Für Intels Itanium gibt es VT-I.
- Für die I/O-Virtualisierung gibt es VT-d.
- Unter VT-x arbeitet eine CPU in einem von zwei Modi: Root und Nicht-Root.
- Diese Modi sind orthogonal zu Real, Protected, Long usw. und auch orthogonal zu Privileg-Ringen (0–3).
- Sie bilden sozusagen eine neue „Ebene“.
- Hypervisor wird im Root-Modus ausgeführt und VMs werden im Nicht-Root-Modus ausgeführt.
- Im Nicht-Root-Modus wird CPU-gebundener Code meistens genauso ausgeführt wie im Root-Modus,
- Was bedeutet, dass die CPU-gebundenen Operationen der VM größtenteils mit nativer Geschwindigkeit ausgeführt werden.
- Es hat jedoch keine volle Freiheit.
- Privilegierte Befehle bilden eine Teilmenge aller verfügbaren Befehle auf einer CPU.
- Dies sind Anweisungen, die nur ausgeführt werden können, wenn sich die CPU in einem höher privilegierten Zustand befindet,
- z. aktuelle Berechtigungsebene (CPL) 0 (wobei CPL 3 am wenigsten privilegiert ist).
- Eine Teilmenge dieser privilegierten Anweisungen können wir „globale zustandsändernde“ Anweisungen nennen – diejenigen, die den Gesamtzustand der CPU beeinflussen.
- Beispiele sind solche Befehle, die Takt- oder Interrupt-Register modifizieren oder auf eine Weise in Steuerregister schreiben, die den Betrieb des Root-Modus ändern.
- Diese kleinere Teilmenge sensibler Anweisungen kann der Nicht-Root-Modus nicht ausführen.
Softwarebasierte Virtualisierung
- Es darf nur dem Hypervisor direkter Zugriff auf die Prozessor-Hardware gewährt werden
- Gastsysteme wie alle anderen Applikationen dürfen nur eingeschränkte Zugriffsrechte auf die Hardware haben.
- Gastsysteme dürfen keine Speicherbereiche sehen bzw. ändern können, die der Hypervisor zur Verwaltung benötigt.
Protected Mode
- Es gibt vier verschiedene als Ringe bezeichnete Schutzebenen bzw. Befugnisstufen
- Ablaufenden Codesegmenten wird unterschiedliche Rechte gewährt.
- Im Protected Mode läuft der Betriebssystem-Kernel in einem höher privilegierten Modus, der als Ring 0 bezeichnet wird
- Applikationen in einem weniger privilegierten Modus, in der Regel entweder Ring 1 oder Ring 3.
- Hypervisor bzw. das Hostbetriebssystem werden aufgrund ihrer privilegierten Stellung bei der Ressourcenverwaltung mit Ring-0-Berechtigung ausgeführt.
- Gastsysteme müssen, um den Schutz der Hypervisor-Ressourcen zu gewährleisten, folglich entweder auf Berechtigungslevel Ring 1 oder Ring 3 ausgeführt werden.
Deprivilegierung
- x86-Betriebssysteme sind so implementiert, dass sie von der Ring-0-Berechtigung ausgehen
- Um in einer Virtualisierungslösung zu funktionieren müssen zwei Features implementiert sein
- Ring-Deprivilegierung
- Sie sorgt dafür, dass das Gastsystem alle Befehle so ausführen kann, als hätte es Ring-0-Berechtigungen auf der Hardware
- Obwohl es durch die Virtualisierung weniger privilegierte Berechtigungen hat.
- Ring Aliasing
- Es sorgt dafür, dass das Gastsystem, wenn es eine Aktion ausführt, immer die Antwort erhält, die es erhalten würde, wenn der Befehl mit Ring-0-Berechtigungen ausgeführt worden wäre.
- Beispielsweise existiert ein Befehl zur Abfrage des Privilegierungslevels, der mit allen Berechtigungsleveln aufgerufen werden darf.
- Würde ein Gastsystem diesen Befehl ohne Ring Aliasing aufrufen, würde es Ring 1 oder 3 als Antwort erhalten, mit Ring Aliasing erhält es Ring 0
Prozessor Erweiterungen
Intel-Virtualisierungstechnologie (VT-x)
- Codenamen „Vanderpool“ geführt, stellt die schließlich „VT-x“ genannte Technologie Hardwareunterstützung für die Virtualisierung auf Intel-x86-Prozessoren bereit.
- Ring Aliasing
- Ring Deprevilegierung
- Neuerungen durch VT-x ist die Einführung eines weiteren, ausschließlich für die Virtualisierung gedachten Berechtigungskonzepts
- Es werden zwei neue Berechtigungslevels „VMX Root Operation“ und „VMX non Root Operation“ eingeführt.
- Der Hypervisor wird im „VMX Root Operation“ ausgeführt, VMs dagegen im „VMX non Root Operation“.
- In beiden Modi sind Ring-0 bis Ring-3 als Berechtigungen vorhanden
- Jedoch können Ring-0-Instruktionen, die im „VMX non Root Operation“ durch VMs ausgeführt werden, nun durch den Hypervisor im „VMX Root Operation“ gefangen werden
- Es handelt sich also um eine Implementierung des „trap-and-emulate“-Verfahrens.
- Damit ist das Problem der Deprivilegierung gelöst und muss nicht mehr über Binär-Translation softwareseitig implementiert werden.
AMD-Virtualisierung (AMD-V)
- AMD entwickelte die erste Generation von Befehlssatzerweiterungen für die Virtualisierungsunterstützung unter dem Namen „Pacifica“
- Ring Aliasing
- Ring Deprevilegierung

