X86-Virtualisierung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 8: Zeile 8:
 
=VT Modell=
 
=VT Modell=
 
{{#drawio:vt-ring}}
 
{{#drawio:vt-ring}}
=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=
 
=Thread 2=
 
*VT-x ist eine CPU-Virtualisierung für die Intel 64- und IA-32-Architektur.  
 
*VT-x ist eine CPU-Virtualisierung für die Intel 64- und IA-32-Architektur.  

Version vom 23. März 2022, 08:49 Uhr

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 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

Links