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-Komponenten 25:
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.
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 stellen 26. 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.
1Siehe ISO-Website: http://www.iso.org/iso/home/search.htm?qt=2382&sort=rel&type=simple&published=on
2Das 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.
3Zum Beispiel Stackrechner, Rechner mit Assoziativspeicher oder Parallelrechner
4Der Prozessor wird oft fälschlicherweise CPU genannt – die CPU besteht aus Prozessor (Steuer- und Rechenwerk), Speicherwerk und Ein-/Ausgabewerk.
5Die 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.
Читать дальше