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

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