ICT-Virtualisierung

Text
Read preview
Mark as finished
How to read the book after purchase
Font:Smaller АаLarger Aa

1.3 Die PC-Hardware

Eine typische von Neumann Maschine ist in den PCs umgesetzt und steht heute weit verbreitet im Einsatz. (Bild 4, 2019, Intel)


Nicht nur PCs besitzen einen Aufbau der mehr oder weniger jenem der von Neumann‘schen Rechenmaschine nachgebaut ist, sondern jedes elektronische, digitale Gerät ist ähnlich aufgebaut. So sind auch Router, Handys, Waschmaschinen und andere Alltagsgeräte heute mit den beschriebenen Zentralrecheneinheiten (CPU) ausgerüstet und besitzen die genannten Busse in der einen oder anderen Form.

Der Betrieb der unterschiedlichsten Anwenderprogramme16 auf all den vielen Hardware-Konzepten verlangt von der Hardware einheitliche Schnittstellen für die Kommunikation mit den Betriebssystemen. Damit diese Schnittstellen von der Hardware bereitgestellt werden können, werden logische und virtuelle Geräte definiert.

1.4 Logische und virtuelle Geräte

Damit ein Betriebssystem die Hardware überhaupt benutzen kann, muss diese derart standardisiert werden, dass der Austausch von Daten und Kontrollfunktionen zwischen der Hardware und dem Betriebssystem einheitlich wird.

Man erreicht dies, indem man das physische Gerät17 mit Hilfe von speziellen Hardwaretreibern18 mit einem logischen Gerät verbindet.

Eine physische Harddisk19 besteht im wesentlichen aus mehreren rotierenden, magnetisierbaren Scheiben. Die digitale Information wird mit Hilfe von Schreib/ Leseköpfen auf die Scheiben geschrieben und kann anschliessend wieder gelesen werden.

Die Information ist in der magnetischen Schicht gespeichert. Das entsprechende magnetische Muster befindet sich unterhalb einer sehr dünnen Schutzschicht. Das Bild 5 zeigt die Struktur in der Magnetschicht. Es lassen sich deutlich schmalere und breitere Linien erkennen20, welche die gespeicherten Einsen und Nullen darstellen. Das Bild wurde mit einem magnetischen Kraftmikroskop aufgenommen.

Ebenfalls erkennen lässt sich eine übergeordnete Struktur, die sogenannten Spuren oder Zylinder (Im Bild diagonal von links unten nach rechts oben verlaufend). Diese Zylinder sind als konzentrische „Kreise“ auf der Platte organisiert (Bild 5).

Ein Betriebssystem, das von einem Anwenderprogramm die Anweisung erhält, dass es eine Datei auf der Platte abspeichern soll, hat nun das Problem, dass es sich die genaue Lage der geschriebenen Bits auf der Platte merken muss.


Das heisst, das Betriebssystem muss in diesem Fall eine Liste führen, welche angibt, welches Bit in welchem Zylinder und in welchem Sektor geschrieben wurde. Es spielen dabei noch weitere Parameter eine Rolle, wie zum Beispiel die Schreib-/ Lese-Kopf-Position und die Positions-Korrektur, welche notwendig ist wegen der Wärmedehnung der Platten! Ein Betriebssystem, das sich all diese Parameter merken muss, kann nicht mehr effizient arbeiten. Zudem wäre es notwendig, dass die Hardware vom Betriebssystem abhängig gebaut würde. Eine Harddisk, welche unter Windows NT läuft würde unter Windows 10 oder Linux versagen!

Damit dieses Problem nicht auftaucht, wird die Platte mit einem Controller (Hardwaretreiber) ausgerüstet. Diese Treiber sitzen in der Regel fest einprogrammiert in einem Chip auf der Hardware (Harddisk) und müssen unter anderem festlegen, wie die Köpfe die Daten, welche z. B. via IDE oder SCSI-Bus21 zum Controller gelangen, auf die Platte schreiben sollen.

Ein Betriebssystem könnte nun Daten über den erwähnten IDE oder SCSI Bus an den Controller übergeben. Dieser schreibt die Daten auf einen bestimmten Zylinder in einem bestimmten Sektor, merkt sich diese Information, kann die Daten anschliessend wieder finden und dem Betriebssystem übergeben.

Aus praktischen Gründen geht man jedoch noch einen Schritt weiter und ergänzt diese logische Festplatte mit einem Verwaltungstreiber. Dieser kann ebenfalls auf der Harddisk zu finden oder aber auf dem PC Motherboard als Software-Treiber im RAM abgelegt sein22.

Diese neue Kombination zwischen logischer Harddisk und Verwaltungstreiber (oft einfach „Treiber“ oder „Modul“ genannt) wird nun „virtuelle Harddisk“ genannt.

Diese virtuelle Harddisk ist auf der dafür bestimmten Hardware-Plattform (z.B. MAC, PC) herstellerneutral. Zu beachten ist, dass daraus auch folgt, dass eine PC-Harddisk nicht in einem System ohne IDE oder SCSI-Bus eingesetzt werden kann (z.B. AS/400). Zudem kann es vorkommen, dass auch in Systemen mit SCSI-Bus, wie z.B. Postscript-Druckern, gewisse SCSI-Bus-Harddisks, die für PCs gebaut wurden, nicht laufen!


Mit Hilfe der erwähnten Verwaltungstreiber ist es möglich, die Festplatten als sequenzielles Feld von Speicherblöcken anzusprechen. Die Betriebssysteme stellen dem Benutzer bestimmte Werkzeuge (Tools) zur Verfügung, um die Platten zu partitionieren23 und zu formatieren24.

Ein logisches Gerät ist somit das physische Gerät, ergänzt mit Hardwaretreibern. Ein virtuelles Gerät erhält man durch die weitere Ausstattung dieser logischen Geräte mit Verwaltungstreibern (siehe Bild 6).

Ob ein Betriebssystem die logischen oder die virtuellen Geräte ansprechen soll, hängt vom Einsatzgebiet der Hardware ab. PC Betriebssysteme sprechen in der Regel virtuelle Geräte an, bei den embedded systems existieren aber auch Betriebssystem-Varianten, die einen Massenspeicher (z.B. eine Harddisk) als logisches Gerät ansprechen (z.B. Harddisk in Postscript-Druckern).

Diese seit langem bekannte und eingesetzte Form der Virtualisierung wird heute in allen virtuellen Maschinen weiter entwickelt eingesetzt. In heutigen virtuellen Umgebungen spielt es keine Rolle mehr, woraus der Speicher wirklich (physisch) besteht. Es können Harddisks, Flashmemories, hybride Speicher, optische Speicher und andere Formen von Speichern sein.

Eine virtuelle Maschine stellt somit dem Gastbetriebssystem ein normiertes virtuelles Speichermedium zur Verfügung und sorgt für die korrekte Ablage und Speicherung der Daten auf den physischen Medien.

1.5 Aufbau von Betriebssystemen

Der Aufbau von Betriebssystemen kann in der Realität sehr kompliziert sein. Es existieren daher sehr verschiedene Modelle, um die verschiedenen Sachverhalte zum Aufbau der Betriebssysteme darzustellen.

Abgeleitet von unserer Definition des Begriffs „Betriebssystem“ (das Betriebssystem sei eine Verbindung zwischen der Hardware und den Anwendungen, respektive den Benutzern) existieren Modelle, die diesen Sachverhalt aufzeigen. Diese Modelle sind nicht eigentlich Modelle von Betriebssystemen, als vielmehr Modelle von Computern. Es werden an dieser Stelle die beiden häufigsten vorgestellt, das Schalenund das Schichten-Modell.

Unter Einbezug der verschiedenen virtuellen Geräte, der wichtigsten Betriebssystem-Funktionen, der Schnittstellen, der Anwender-Programme und der Kommunikations-Protokollen des ISO/OSI-Modelles wird anschliessend ein generisches Modell eines Betriebssystems vorgestellt.

1.5.1 Modelle von Computern

Die Zuordnung der Betriebssysteme als Verbindung zwischen Hardware und Anwendersoftware kann grundsätzlich auf zwei unterschiedliche Arten geschehen. Einerseits wird das Schalenmodell verwendet und andererseits findet man häufig die Darstellung als Schichtenmodell. Die beiden Modelle werden in der Folge kurz dargestellt.

1.5.2 Schalenmodell

Dieses Modell stellt das Betriebssystem als eine die Hardware (HW) umschliessende Schale dar. Die Anwenderprogramme umschliessen wiederum das Betriebssystem und die Benutzerzugriffe erfolgen über eine alles umschliessende äusserste Schale.


Bild 7 zeigt das Schalenmodell, wie es in vielen Büchern und wissenschaftlichen Veröffentlichungen über Betriebssysteme anzutreffen ist.

1.5.3 Schichtenmodell

Das zweite häufig anzutreffende Modell ist das Schichtenmodell (Bild 8).


Das Schichtenmodell kann man in der Literatur in verschiedenen Varianten antreffen. Je nach Hardware (virtuelle Maschinen) werden die Schichten mit unterschiedlichem Detaillierungsgrad dargestellt. Wir werden in diesem Buch einige der gängigen Betriebssysteme mit Hilfe dieses Modells darstellen und dabei die unterschiedlichsten Darstellungsformen aufzeigen.

1.5.4 Universelles Modell eines Betriebssystems

Als universelles Modell eines Betriebssystems und als Grundlage für weitere Überlegungen in diesem Werk wird das in Bild 9 dargestellte Modell angenommen.

 

Dieses Modell hat den Vorteil, dass es alle virtuellen Maschinen (Hardware) mit den dazugehörenden Betriebssystem-Grund-Komponenten zeigt. Dieses generische Modell zeigt auch die Zusammenhänge der Betriebssystem-Grund-Komponenten mit den Netzwerkkomponenten gemäss ISO/OSI-Modell und die Interaktion der Anwenderprogramme mit den Netzwerk-Komponenten auf.

Als virtuelle Geräte werden hier folgende Komponenten zu Grunde gelegt:

 Massenspeicher (z.B. Harddisk, Flashspeicher)

 Zentralrecheneinheit (Central Processing Unit, CPU, Prozesor)

 Nur Lese-Speicher (Read Only Memory, ROM)

 Arbeitsspeicher (Random Access Memory, RAM)

 Ein/Ausgabe-Einheiten (Input / Output Devices, I/O)

 Netzwerkkomponenten (Network Devices)

Diese virtuellen Geräte sind als virtuelle Maschine zusammengefasst und diese wiederum benötigt die folgenden Betriebssystem Grund-Komponenten25:

 Datei-Verwaltung (File-Management) für die Massenspeicher

 Prozess-Verwaltung (Process Management) für die im Arbeitsspeicher ablaufenden Prozesse (genaue Erklärung folgt weiter hinten)

 Speicher-Verwaltung (Memory Management) für die Nutzung der Speicher

 I/O-Verwaltung (I/O-Management) für alle Schnittstellen zu den Peripheriegeräten

 Netzwerk-Verwaltung (Network Management) (rechte Hälfte des Bildes 9) welche die Funktionen des ISO/OSI-Modelles integriert.

Wer sich vertiefter mit den Betriebssystemen auseinandersetzen will oder muss, kann das Buch „Betriebssysteme“ beim Autor beziehen (vergriffen) oder sich beim Autor das PDF des Buches anschaffen.


1.6 Die x.86 Architektur

Greifen wir nun zurück auf die Grundlagen der Betriebssysteme. Wir haben dort die beiden Modi, Kernelmode und Usermode kennengelernt. Die modernen Maschinen, welche auf Intel oder AMD Prozessoren beruhen, benutzen eine x86-Architektur (eine Art der von Neumann Maschine). Diese x86-Architektur weist aber noch 2 Modi mehr auf. In Wirklichkeit sieht das Modell vier Ringe vor, wobei eben nur zwei genutzt werden (Ring 0 und Ring 3):

Bild 10 zeigt: x86-CPUs weisen vier Privilegienstufen auf, die als Schutzkonzept der Speicherzugriffe dienen und die Stabilität und Sicherheit des Betriebes eines Computers sicher stellen26. Ein Prozess kann immer nur in einem einzelnen Ring ausgeführt werden und ist nicht in der Lage diesen zu verlassen.


Prozesse welche in Ring 0 laufen haben vollen Zugriff auf die Hardware und dürfen den vollständigen Befehlssatz der CPU nutzen. Ring 0 wird auch als Kernel-Bereich (Kernel-Space, Kernel-Mode) bezeichnet. In Ring 0 läuft nur der Betriebssystemkern (Kernel) und die zum Start des Betriebssystems notwendigen Hardwaretreiber. In Ring 3 laufen die Anwendungen. Ring 3 wird auch als Benutzerbereich (User-Space, User-Mode) bezeichnet.

Die Regel der Ringbenutzung ist wie folgt: Ruft ein Prozess in einem weniger privilegierten Ring eine privilegierte Operation (Befehl) auf, erzeugt die CPU eine Ausnahme (Exception). Die Exception wird im benachbarten privilegierteren Ring abgefangen und dort behandelt. Ausnahmen, die nicht abgefangen werden können, verursachen eine allgemeine Schutzverletzung (General Protection Fault) – als Folge davon stürzt der aufrufende Prozess ab – handelt es sich dabei um einen Prozess im Kernel, stürzt das System ab.

Die Anwendungen die im Ring 3 laufen (im User-Mode) können die Kernel-Ressourcen (Kernel-Prozesse) nutzen, indem sie system calls (Betriebssystemaufrufe) benutzen. Will eine Anwendung eine Datei auf der Festplatte speichern, so wird sie dies dem Kernel mit Hilfe eines system calls mitteilen und dieser wird die Ressource „Memory-Management” mit dem nötigen Prozess zur Verfügung stellen.

Die x.86 Architektur hat zwar 4 Ringe vorgesehen, es werden aber nur Ring 0 (Kernel-Mode) und Ring 3 (User-Mode) benutzt. Insbesondere die x.86/64bit Architektur benutzt nur noch 2 Ringe.

1.6.Aufruf von Prozessor-Befehlen

Es gibt nicht privilegierte und privilegierte Befehle im Befehlssatz von Prozessoren. Der Aufruf von privilegierten Befehlen muss einen Sprung ins Betriebssystem (Trap, Unterbrechung) auslösen. Es gibt privilegierte Befehle, die dürfen nur im Kernelmodus ausgeführt werden, wobei diese einen Trap ins Betriebssystem bewirken.

Es gibt in Prozessoren noch eine Kategorie „sensitiven Befehle” welche zustandsverändernd (z.B. Zugriff auf I/O-Geräte oder die MMU oder auf Statusregister) sind und auch nur im Kernelmodus ausgeführt werden.

Kritische Befehle sind privilegierte Befehle, die im Usermodus keinen Trap (Ausnahme) auslösen

In der x.86 Architektur gibt es ca. 17 von 250 Befehlen, die bezüglich der Virtualisierung als kritisch zu bezeichnen sind. Dies sind zum Beispiel:

 GDT (Store Global Descriptior Table)

 Stackzugriff mit PUSHF und POPF, usw

Um sicher zu stellen, dass insbesondere in virtualisierten Umgebungen nicht dauernd das System stürzt, wird das sogenannte „Code Patching” oder Binärübersetzung (Binary Translation) eingesetzt. Das heisst, dass kritische Befehle vor der Ausführung, also z.B. beim Starten eines Programms durch den Hypervisor erkannt und ausgetauscht werden. Diese ausgetauschten Befehle führen einen Sprung in den Hypervisor aus, wo eine Emulation der kritischen Befehle erfolgen kann, wodurch trotz der Schwächen der x86-Architektur eine vollständige Virtualisierung erreicht werden kann.

Mit diesem Wissen untersuchen wir nun die verschiedenen Virtualisierungsansätze und Konzepte: Vollständige Virtualisierung, Paravirtualisierung, Hardware-Virtualisierung, Betriebssystem-Virtualisierung, Speicher-Virtualisierung, Netzwerk-Virtualisierung.

1 Siehe ISO-Website: http://www.iso.org/iso/home/search.htm?qt=2382&sort=rel&type=simple&published=on

2 Das Konzept der Maschine des Herrn von Neumann findet sich auch in “Embedded Systems” wie Waschmaschinensteuerungen, Industriecomputern oder in Routern, Switches und anderen modernen Computern. Selbstverständlich ist diese heute im Einsatz stehende Hardware stark weiterentwickelt worden. Von Neumann Maschinen sind Single Instruction, Single Data Architekturen.

3 Zum Beispiel Stackrechner, Rechner mit Assoziativspeicher oder Parallelrechner

4 Der Prozessor wird oft fälschlicherweise CPU genannt – die CPU besteht aus Prozessor (Steuer- und Rechenwerk), Speicherwerk und Ein-/Ausgabewerk.

5 Die ersten PCs arbeiteten mit 8 Bit Worten. Neuere Rechner (und somit auch die Betriebssysteme) arbeiten mit 64 Bit Worten. Die Busse dieser Maschinen müssen demnach auch entsprechend breit ausgelegt sein und bestehen heute aus 64 parallelen Datenleitungen.

6 Der Prozessor muss deshalb so genau beschrieben werden, weil sich die Befehle der einzelnen Prozessoren in der Regel voneinander unterscheiden. Der Befehlssatz des Z80 oder 8080 ist somit nicht ganz genau gleich wie derjenige des proprietären Game Boy Prozessors.

7 ASSEMBLER wird benutzt, um sehr schnelle aber einfache Programme zu schreiben. ASSEMBLER ist schwierig zu benutzen, weil keine einfachen Entwicklungsumgebungen eingesetzt werden können.

8 Befehlsphase, instruction fetch.

9 Befehlsausführungsphase, instruction execution

10 Z.B. das Berechnen von Werten aus Messresultaten, Schreiben eines Textes und Darstellen in einem bestimmten Format, Zeichnen einer Linie und Ausgeben auf einem Drucker.

11 Hier ist mit Editor ein Texteditor gemeint, der es erlaubt, einen einfachen, unformatierten Text abzuspeichern.

12 Die Rolle des Betriebssystems als Zwischenglied zwischen den Anwenderprogrammen und der Hardware wird an dieser Stelle aus Gründen der Anschaulichkeit weggelassen und erst weiter hinten erklärt.

13 Eingabewerte können Tastatureingaben, Werte aus Tabellen oder Mausklicks sein.

14 Eine genauere Betrachtung einer weiteren Variante, den Interpretern, folgt weiter hinten.

15 Es ist nicht möglich, dass ein Compiler für den Motorola Prozessor im Macintosh Rechner einen Code erzeugt, der auch auf Intel basierten Rechnern lauffähig ist.

16 z.B. Textprogramme auf PCs, Wachmaschinen-Ablaufprogramme, Handy-Benutzerfunktionen

17 Beispielsweise die oben dargestellte PC Platine in Bild 4.

18 Kleine Programme, die es dem Betriebssystem oder der Applikation ermöglichen die Funktionen der Hardware anzusprechen.

19 Zur Klärung der Begriffe wird wird hier die Harddisk mit den dazugehörenden Treibern verwendet.

20 Die sogenannten magnetischen Domänen.

21 IDE: Integrated Device Electronics Bus, ein PC- (und Workstation-) Interface, für den Anschluss von Harddisks.

SCSI: Small Computer Systems Interface, eine PC und Workstation-Schnittstelle zum Anschluss von Harddisks aber auch Scannern und anderen Peripheriegeräten.

22 Dies wären z.B. die IDE oder SCSI-Treiber.

23 Logische Unterteilung der Platten. Den logischen Partitionen werden die Laufwerksbuchstaben C:, D:, ... (DOS, Windows) oder hda1, sda1, ... in Unix zugeordnet. Für praxisorientierte Angaben soll der geneigte Leser im Internet oder der einschlägigen Fachliteratur nachschauen.

24 Schreibbar machen der Partitionen. Es wird dabei das Dateisystem erstellt (z.B. FAT32, NTFS bei Windows oder ext2, Reiser, Journaling FS unter Linux)

25 Diese Betriebssystemkomponenten liegen als Software vor. Man nennt diese Software auch Kernel. Ein Kernel besteht aus einigen oder allen der hier genannten Grund-Komponenten. Die verschiedenen Ausprägungen der Kernel in den verschiedenen Betriebssystemen werden weiter hinten genauer beschrieben.

26 Dies fehlte bei der von Neumann Maschine und stellt einen grosen Nachteil dieser Maschine dar. Nur das OS/2 von IBM nutzt noch den Ring 2 für hardwarenahe Geräte wie z.B. Grafikkarten, respektive deren Treiber – alle anderen Betriebssysteme nutzen nur die Ringe 0 und 3.

2. Virtualisierungsmodelle und Technologien

In diesem zweiten Kapitel befassen wir uns mit den Virtualisierungsmodellen und deren Technologien. Die Studierenden werden in die Lage versetzt, die unterschiedlichen Modelle zur Virtualisierung zu erklären sowie Vor- und Nachteile für eine zu wählende Lösung im Unternehmen zu bestimmen und die verschiedenen Arten, auf welche die einzelnen Elemente virtualisiert werden können zu erläutern.

 

Die Auswirkungen der verschiedenen Virtualisierungsansätze auf die betrieblichen Prozesse zu benennen und die betrieblichen Anforderungen an eine neue Umgebung und bestehende Vorgaben zusammen zu stellen und wissen, wie daraus ein Kriterienkatalog zu erarbeiten ist, ergänzen die Ausführungen in diesem Kapitel.

Die in Frage kommenden Virtualisierungsansätze mit dem Geschäftsumfeld, den bestehenden Rahmenbedingungen und den betrieblichen Vorgaben sind in Zusammenhang zu bringen und die Konsequenzen zu bewerten.

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

You have finished the free preview. Would you like to read more?