X86-Virtualisierung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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

  • 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