X86-Virtualisierung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 6: Zeile 6:
 
=VT Modell=
 
=VT Modell=
 
{{#drawio:vt-ring}}
 
{{#drawio:vt-ring}}
=Thread 2=
+
== Vorstellung der Hauptkomponenten der modernen Virtualisierungsarchitektur ==
*VT-x ist eine CPU-Virtualisierung für die Intel 64- und IA-32-Architektur.  
+
 
*Für Intels Itanium gibt es VT-I.  
+
=== VMX Root Operation (für den Hypervisor) ===
*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.
+
* Der Hypervisor läuft in diesem Modus:
*Diese Modi sind orthogonal zu Real, Protected, Long usw. und auch orthogonal zu Privileg-Ringen (0–3).
+
** Der Hypervisor ist eine spezielle Software-Schicht, die direkt auf der Hardware läuft.
*Sie bilden sozusagen eine neue „Ebene“.
+
** In diesem Modus hat der Hypervisor die höchste Kontrollstufe über das System.
*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,  
+
* Vollständiger Zugriff auf die Hardware:
*Was bedeutet, dass die CPU-gebundenen Operationen der VM größtenteils mit nativer Geschwindigkeit ausgeführt werden.
+
** Der Hypervisor kann alle Hardware-Komponenten direkt ansprechen und kontrollieren, z.B. CPU, Speicher, Netzwerkschnittstellen.
*Es hat jedoch keine volle Freiheit.
+
** Er verwaltet die Zuweisung dieser Ressourcen an die virtuellen Maschinen.
*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,
+
* Ausführen privilegierter Befehle:
*z. aktuelle Berechtigungsebene (CPL) 0 (wobei CPL 3 am wenigsten privilegiert ist).  
+
** Privilegierte Befehle sind solche, die spezielle Zugriffsrechte erfordern, wie z.B. Änderungen an den Systemeinstellungen oder direkten Hardwarezugriff.
*Eine Teilmenge dieser privilegierten Anweisungen können wir „globale zustandsändernde“ Anweisungen nennen – diejenigen, die den Gesamtzustand der CPU beeinflussen.
+
** Im Root-Modus kann der Hypervisor alle diese Befehle uneingeschränkt ausführen.
*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.
+
=== VMX Non-Root Operation (für virtuelle Maschinen) ===
 +
 
 +
* Virtuelle Maschinen (VMs) laufen in diesem Modus:
 +
** Jede VM läuft in einer isolierten Umgebung im Non-Root-Modus.
 +
** VMs sind in der Lage, Betriebssysteme und Anwendungen so auszuführen, als würden sie auf einer eigenen, physischen Hardware laufen.
 +
 
 +
* Nahezu native Geschwindigkeit:
 +
** Die meisten Operationen, die eine VM durchführt, laufen direkt auf der Hardware ab, was zu einer sehr hohen Ausführungsgeschwindigkeit führt.
 +
** Dadurch fühlen sich die Anwendungen in der VM an, als würden sie direkt auf der Hardware laufen.
 +
 
 +
* Abfangen und Emulieren privilegierter Befehle:
 +
** Wenn eine VM einen privilegierten Befehl ausführt, wird dieser Befehl vom Hypervisor abgefangen (Trap).
 +
** Der Hypervisor überprüft und emuliert dann die Ausführung dieses Befehls, um sicherzustellen, dass er keine negativen Auswirkungen auf andere VMs oder das Host-System hat (Emulate).
 +
 
 +
== Visualisierung der Funktionsweise ==
 +
 
 +
Stellen Sie sich einen modernen Computer vor, der mehrere Betriebssysteme gleichzeitig ausführt.
 +
 
 +
* Hypervisor (im Root-Modus):
 +
** Er ist der „Manager“ des Systems, der darüber entscheidet, wie die Hardware-Ressourcen aufgeteilt werden.
 +
** Er hat die volle Kontrolle und kann alles ändern und verwalten.
 +
 
 +
* Virtuelle Maschinen (im Non-Root-Modus):
 +
** Jede VM ist wie ein eigenständiger Computer, der auf der vom Hypervisor zugewiesenen Hardware läuft.
 +
** Wenn die VM normale Aufgaben ausführt (z.B. eine Datei lesen), geschieht dies fast so schnell wie auf einem echten Computer.
 +
** Wenn die VM versucht, etwas Kritisches oder Gefährliches zu tun (z.B. den CPU-Zustand ändern), wird dies vom Hypervisor überprüft und sicher ausgeführt.
 +
 
 +
Diese Trennung stellt sicher, dass die VMs sicher und effizient laufen, ohne sich gegenseitig zu beeinflussen, während der Hypervisor die volle Kontrolle über das Gesamtsystem behält.
  
 
=Softwarebasierte Virtualisierung=
 
=Softwarebasierte Virtualisierung=

Version vom 4. Juli 2024, 09:11 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.

VT Modell

Vorstellung der Hauptkomponenten der modernen Virtualisierungsarchitektur

VMX Root Operation (für den Hypervisor)

  • Der Hypervisor läuft in diesem Modus:
    • Der Hypervisor ist eine spezielle Software-Schicht, die direkt auf der Hardware läuft.
    • In diesem Modus hat der Hypervisor die höchste Kontrollstufe über das System.
  • Vollständiger Zugriff auf die Hardware:
    • Der Hypervisor kann alle Hardware-Komponenten direkt ansprechen und kontrollieren, z.B. CPU, Speicher, Netzwerkschnittstellen.
    • Er verwaltet die Zuweisung dieser Ressourcen an die virtuellen Maschinen.
  • Ausführen privilegierter Befehle:
    • Privilegierte Befehle sind solche, die spezielle Zugriffsrechte erfordern, wie z.B. Änderungen an den Systemeinstellungen oder direkten Hardwarezugriff.
    • Im Root-Modus kann der Hypervisor alle diese Befehle uneingeschränkt ausführen.

VMX Non-Root Operation (für virtuelle Maschinen)

  • Virtuelle Maschinen (VMs) laufen in diesem Modus:
    • Jede VM läuft in einer isolierten Umgebung im Non-Root-Modus.
    • VMs sind in der Lage, Betriebssysteme und Anwendungen so auszuführen, als würden sie auf einer eigenen, physischen Hardware laufen.
  • Nahezu native Geschwindigkeit:
    • Die meisten Operationen, die eine VM durchführt, laufen direkt auf der Hardware ab, was zu einer sehr hohen Ausführungsgeschwindigkeit führt.
    • Dadurch fühlen sich die Anwendungen in der VM an, als würden sie direkt auf der Hardware laufen.
  • Abfangen und Emulieren privilegierter Befehle:
    • Wenn eine VM einen privilegierten Befehl ausführt, wird dieser Befehl vom Hypervisor abgefangen (Trap).
    • Der Hypervisor überprüft und emuliert dann die Ausführung dieses Befehls, um sicherzustellen, dass er keine negativen Auswirkungen auf andere VMs oder das Host-System hat (Emulate).

Visualisierung der Funktionsweise

Stellen Sie sich einen modernen Computer vor, der mehrere Betriebssysteme gleichzeitig ausführt.

  • Hypervisor (im Root-Modus):
    • Er ist der „Manager“ des Systems, der darüber entscheidet, wie die Hardware-Ressourcen aufgeteilt werden.
    • Er hat die volle Kontrolle und kann alles ändern und verwalten.
  • Virtuelle Maschinen (im Non-Root-Modus):
    • Jede VM ist wie ein eigenständiger Computer, der auf der vom Hypervisor zugewiesenen Hardware läuft.
    • Wenn die VM normale Aufgaben ausführt (z.B. eine Datei lesen), geschieht dies fast so schnell wie auf einem echten Computer.
    • Wenn die VM versucht, etwas Kritisches oder Gefährliches zu tun (z.B. den CPU-Zustand ändern), wird dies vom Hypervisor überprüft und sicher ausgeführt.

Diese Trennung stellt sicher, dass die VMs sicher und effizient laufen, ohne sich gegenseitig zu beeinflussen, während der Hypervisor die volle Kontrolle über das Gesamtsystem behält.

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