Intels Vanderpool virtualisiert CPUs

Virtueller Prozessor

Die CPU ist der Hauptbestandteil des echten und des virtuellen PCs. Intels IA32- sowie auch AMDs AMD64-Architektur haben allerdings hinsichtlich der Abbildung virtueller Maschinen gegenüber den Mainframes einige Schwächen. Letztere sind schon architektonisch auf virtuelle Maschinen ausgelegt.

Intels Prozessoren mit IA-32-Architektur bieten vier verschiedene Privilegien an, mit denen dem Betriebssystem sowie den Treibern und Programmen unterschiedliche Rechte zugewiesen werden können. Normalerweise laufen das Betriebssystem und die Treiber im so genannten Ring 0 (Kernel Mode) und Applikationen im Ring 3 (User Mode). Diese "Current Privilege Levels" werden auch mit CPL 0 beziehungsweise CPL 3 bezeichnet. Der Trick beim Erzeugen eines virtuellen Systems besteht darin, dieses mit CPL 3 ablaufen zu lassen.

Wenn das Betriebssystem des virtuellen Rechners nun einen Befehl ausführen will, der nur im Ring 0 (CPL 0) gestattet ist, löst der Prozessor eine Exception aus. Routinen zur Behandlung dieser Ausnahmen können dann den privilegierten Befehl emulieren. Dabei behält das Wirtsystem die volle Kontrolle über das System. Die wichtigste Voraussetzung für das Funktionieren dieses Ansatzes ist, dass der Prozessor bei jeder unberechtigt durchgeführten privilegierten Anweisung eine Exception auslöst.

Leider sind die x86-Prozessoren nicht ganz so gründlich bei den Exceptions. Beispielsweise werden Speicherzugriffe beim x86 über eine GDT (Global Descriptor Table) abgewickelt. Diese GDT ist eine globale Ressource und wird vom Betriebssystem verwaltet. Eigentlich müsste jeder direkte Zugriff auf diese Ressource als privilegierte Handlung angesehen werden und dementsprechend im User Mode nicht erlaubt sein. Der x86 behandelt die LGDT-Anweisung (Load Global Descriptor Table) auch als privilegiert. Allerdings führt SGDT (Store Global Descriptor Table) nicht zu einer Schutzverletzung. Allein diese Inkonsistenz verhindert es, die GDT zu "virtualisieren".

Intels Vanderpool-Technologie greift hier ein und erleichtert unter anderem auch das Exceptions-Handling. VM-Software mit Vanderpool-Support lässt sich somit einfacher programmieren - bei gleichzeitig höherer Betriebssicherheit.