Читать книгу ICT-Virtualisierung - Johann Widmer - Страница 24
2.1 Was ist Virtualisierung?
ОглавлениеWie wir im letzten Kapitel gesehen haben ist die Virtualisierung von Hardware nichts neues. Jedes moderne Betriebssystem greift auf virtualisierte Geräte zurück. Es wird daher definiert:
„Virtualisierung bezeichnet in der Informatik die Nachbildung eines Hard- oder Software-‘Objekts‘ durch ein ähnliches Objekt vom selben Typ mit Hilfe einer Software-Schicht. Dadurch lassen sich virtuelle (d. h. nicht-physische) Dinge wie emulierte Hardware, Betriebssysteme, Datenspeicher oder Netzwerkressourcen erzeugen. Dies erlaubt es etwa, Computer-Ressourcen (insbesondere im Server-Bereich) transparent zusammenzufassen oder aufzuteilen, oder ein Betriebssystem innerhalb eines anderen auszuführen.“ [https://de.wikipedia.org/wiki/Virtualisierung_(Informatik)]
Die Idee der Virtualisierung ist schon über 50 Jahre alt. Bereits 1959 veröffentlichte Christopher Strachey „Time Sharing in Large Fast Computers“. In den 50-iger Jahren befasste man sich am Massachusetts Institute of Technology (MIT), Boston, mit dem Konzept zur gleichzeitigen Bedienung von Rechnern, welches ohne Leistungseinbussen funktionieren soll. Dies wurde „Time Stealing“ genannt. Damit waren die ersten Konzepte zur CPU-Virtualisierung geboren.
Vor über 30 Jahren haben Gerald J. Popek und Robert P. Goldberg die Anforderungen an die Rechnerarchitekturen festgelegt, damit diese überhaupt virtualisierbar sind1.
Die beiden Forscher definierten die drei folgenden Charakteristiken für die Virtualisierbarkeit (siehe dazu auch [5]):
Äquivalenz: Läuft ein Programm in einer virtuellen Maschine, so soll diese ein essentiell identisches („essentially identical“) Verhalten aufweisen, wie wenn das Programm direkt auf der physischen Maschine laufen würde. Es werden aber mögliche Ausnahmen erlaubt: Differenzen welche durch die Verfügbarkeit der System Ressourcen entstehen und Unterschiede zwischen der virtuellen und der physischen Maschine durch zeitliche Abhängigkeiten.
Ressourcen-Kontrolle: Der Virtual Machine Monitor (VMM)2 hat die permanente und vollständige Kontrolle über die System Ressourcen. Somit dürfen Programme, die in einem virtualisierten Umfeld (virtuellen Maschine) laufen, keine Ressourcen beanspruchen, die nicht explizit für sie zugeteilt wurden. Jeder privilegierte Befehl muss vom VMM abgefangen werden.
Effizienz: In einem virtualisierten Umfeld weisen Prozesse nur geringe Geschwindigkeitseinbussen auf. Dies erreicht man, indem alle harmlosen, nicht privilegierten Anweisungen (die einen hohen Prozentsatz aller Instruktionen aufweisen) von der Hardware direkt ausgeführt werden. Sie erfolgen somit ohne die Intervention des Virtual Machine Monitors (VMM).
Der Artikel von Popek und Goldberg bezieht sich also nicht mehr auf die Virtualisierung der Maschine durch ein Betriebssystem, sondern geht schon einen Schritt weiter, und beschreibt die Virtualisierung einer Maschine inklusive Betriebssystem
Bei dieser Virtualisierungsform, wo mehrere Betriebssysteme „unwissentlich“ nebeneinander auf einem Rechner laufen, findet das Popek-Goldberg-Kriterium Äquivalenz besonderes Augenmerk. Bereits kleine Abweichungen vom Verhalten bestimmter Operationen können dazu führen, dass bestimmte Betriebssysteme innerhalb einer VM nicht mehr funktionieren.
Der Punkt der Effizienz ist wichtig und unterscheidet die Virtualisierung von der Emulation. Jede Plattform liesse sich durch eine Emulation „virtualisieren”. Der VMM wäre dann ein Programm, das jeden Befehl der Software in der virtuellen Maschine analysiert und ausführt, was aber alles andere als effizient ist.
Um diese Performanceeinbussen zu vermeiden, werden bei der Virtualisierung die meisten CPU-Befehle nativ (direkt als Maschinenbefehl auf der CPU) ausgeführt.
Popek und Goldberg führten dazu eine dreier Klassifikation der Instruktionen des ISA-Befehlssatzes (ISA, Instruction Set Architecture) ein:
Privilegierte Anweisungen (privileged instructions) lösen nur dann einen Trap aus, sofern sich der Prozessor im User Mode befindet – im Kernel Mode lösen sie keinen Trap aus.
Vertrauliche Anweisungen (sensitive instructions) können die Konfiguration der Ressourcen verändern.
Verhaltensabhängige, vertrauliche Anweisungen (behavior sensitive instructions) zeigen eine Verhaltensweise oder ein Ergebnis abhängig von der Konfiguration der Ressource (vom Inhalt des Relocation Registers oder dem Prozessor Mode)3.
Wie die 4 Prioritätsstufen bei den i386-CPU`s im Protected Mode (geschützten Modus) Ring 0 bis 3) benutzt werden wurde im Kapitel 1.6 erläutert.
1 Gerald J. Popek, Robert P. Goldberg: Formal Requirements for Virtualizable Third Generation Architectures. In: Communications of the ACM. 17, Nr. 7, 1974
2 Der Virtual Machine Monitor (VMM) wird weiter unten erklärt. Ein VMM ist ein Stück Software, das allen, virtuell auf einer Hardware vorhandenen, Betriebssystemen vorgaukelt, dass sie alle eine definierte Hardware zur Verfügung haben. Der VMM wird auch Hypervisor genannt.
3 Vergleiche dazu Kapitel 1.6.1