Kapitel Adaptivität fertig
@ -2872,7 +2872,7 @@ Architekturvarianten - drei unterschiedliche Prinzipien:
|
||||
- ✓ Anwendungen isolierbar
|
||||
|
||||
Hardware-Voraussetzungen
|
||||
- Voraussetzungen zum Einsatz von Typ- 1 - HV
|
||||
- Voraussetzungen zum Einsatz von Typ-1-HV
|
||||
- Ziel: Nutzung von Virtualisierung auf PC-Hardware
|
||||
- systematische Untersuchung der Virtualisierbarkeit von Prozessoren bereits 1974 durch Popek & Goldberg [Popek&Goldberg74]
|
||||
- Ergebnis:
|
||||
@ -2944,6 +2944,259 @@ Intel-Architektur ab 386
|
||||
- erste virtualisierungsfähige Intel-Prozessorenfamilie (s. [Adams2006] ): VT, VT-x® (2005)
|
||||
- dito für AMD: SVM, AMD-V® (auch 2005)
|
||||
|
||||
Forschungsarbeit 1990er Jahre
|
||||
- verschiedene akademische Projekte zur Virtualisierung bisher nicht virtualisierbarer Prozessoren
|
||||
- erstes und vermutlich bekanntestes: DISCO- Projekt der University of Stanford
|
||||
- Resultat: letztlich VMware (heute kommerziell) und Typ-2-Hypervisors...
|
||||
|
||||
### Typ-2-Hypervisor
|
||||

|
||||
|
||||
Virtualisierung ohne Hardwareunterstützung:
|
||||
- keine Möglichkeit, trap-and-emulate zu nutzen
|
||||
- keine Möglichkeit, um
|
||||
1. korrekt (bei sensiblen Instruktionen im Gast-Kernel) den Privilegierungsmodus zu wechseln
|
||||
2. den korrekten Code im HV auszuführen
|
||||
|
||||
Übersetzungsstrategie in Software:
|
||||
- vollständige Übersetzung des Maschinencodes, der in VM ausgeführt wird, in Maschinencode, der im HV ausgeführt wird
|
||||
- praktische Forderung: HV sollte selbst abstrahierte HW-Schnittstelle zur Ausführung des (komplexen!) Übersetzungscodes zur Verfügung haben (z.B. Nutzung von Gerätetreibern)
|
||||
- $\rightarrow$ Typ-2-HV als Kompromiss:
|
||||
- korrekte Ausführung von virtualisierter Software auf virtualisierter HW
|
||||
- beherrschbare Komplexität der Implementierung
|
||||
|
||||
aus Nutzersicht
|
||||
- läuft als gewöhnlicher Nutzer-Prozess auf Host-Betriebssystem (z.B. Windows oder Linux)
|
||||
- VMware bedienbarwie physischer Rechner (bspw. erwartet Bootmedium in virtueller Repräsentation eines physischen Laufwerks)
|
||||
- persistente Daten des Gast-BS auf virtuellem Speichermedium ( tatsächlich: Image-Datei aus Sicht des Host-Betriebssystems)
|
||||
|
||||
Mechanismus: Code-Inspektion
|
||||
- Bei Ausführung eines Binärprogramms in der virtuellen Maschine (egal ob Bootloader, Gast-BS-Kernel, Anwendungsprogramm): zunächst inspiziert Typ-2-HV den Code nach Basisblöcken
|
||||
- Basisblock: Befehlsfolge, die mit privilegierten Befehlen oder solchen Befehlen abgeschlossen ist, die den Kontrollfluss ändern (sichtbar an Manipulation des Programm-Zählers eip), z.B. jmp, call, ret.
|
||||
- Basisblöcke werden nach sensiblen Instruktionen abgesucht
|
||||
- diese werden jeweils durchAufruf einer HV-Prozedur ersetzt, die jeweilige Instruktion behandelt
|
||||
- gleiche Verfahrensweise mit letzter Instruktion eines Basis-Blocks
|
||||
|
||||
Mechanismus: Binary Translation (Binärcodeübersetzung)
|
||||
- modifizierter Basisblock: wird innerhalbdes HVin Cachegespeichert und ausgeführt
|
||||
- Basisblock ohne sensible Instruktionen: läuft unter Typ-2-HV exakt so schnell wie unmittelbar auf Hardware (weil er auch tatsächlich unmittelbar auf der Hardware läuft, nur eben im HV-Kontext)
|
||||
- sensible Instruktionen: nach dargestellter Methode abgefangen und emuliert $\rightarrow$ dabei hilft jetzt das Host-BS (z.B. durch eigene Systemaufrufe, Gerätetreiberschnittstellen)
|
||||
|
||||
Mechanismus: Caching von Basisblöcken
|
||||
- HV nutzt zwei parallel arbeitende Module (Host-BS-Threads!):
|
||||
- Translator: Code-Inspektion, Binary Translation
|
||||
- Dispatcher: Basisblock-Ausführung
|
||||
- zusätzliche Datenstruktur: Basisblock-Cache
|
||||
- Dispatcher: sucht Basisblock mit jeweils nächster auszuführender Befehlsadresse im Cache; falls miss $\rightarrow$ suspendieren (zugunsten Translator)
|
||||
- Translator: schreibt Basisblöcke in Basisblock-Cache
|
||||
- Annahme: irgendwann ist Großteil des Programms im Cache, dieses läuft dann mit nahezu Original-Geschwindigkeit (theoretisch)
|
||||
|
||||
Performanzmessungen
|
||||
- zeigen gemischtes Bild: Typ2-HV keinesfalls so schlecht, wie einst erwartet wurde
|
||||
- qualitativer Vergleich mit virtualisierbarer Hardware (Typ1-Hypervisor):
|
||||
- „trap-and-emulate,,: erzeugt Vielzahl von Traps $\rightarrow$ Kontextwechsel zwischen jeweiliger VM und HV
|
||||
- insbesondere bei Vielzahl an VMs sehr teuer: CPU-Caches, TLBs, Heuristiken zur spekulativen Ausführung werden verschmutzt
|
||||
- wenn andererseits sensible Instruktionen durch Aufruf von VMware-Prozeduren innerhalb des ausführenden Programms ersetzt: keine Kontextwechsel-Overheads
|
||||
|
||||
Studie: (von Vmware) [Adams&Agesen06]
|
||||
- last-und anwendungsabhängig kann Softwarelösung sogar Hardwarelösung übertreffen
|
||||
- Folge: viele moderne Typ1-HV benutzen aus Performanzgründen ebenfalls Binary Translation
|
||||
|
||||
### Paravirtualisierung
|
||||
Funktionsprinzip
|
||||
- ... unterscheidet sich prinzipiell von Typ-1/2-Hypervisor
|
||||
- wesentlich: Quellcode des Gast-Betriebssystems modifiziert
|
||||
- sensible Instruktionen: durch Hypervisor-Calls ersetzt
|
||||
- Folge: Gast-Betriebssystem arbeitet jetzt vollständig wie Nutzerprogramm, welches Systemaufrufe zum Betriebssystem (hier dem Hypervisor) ausführt
|
||||
- dazu:
|
||||
- Hypervisor: muss geeignetes Interface definieren (HV-Calls)
|
||||
- $\rightarrow$ Menge von Prozedur-Aufrufen zur Benutzung durch Gast-Betriebssystem
|
||||
- bilden eine HV-API als Schnittstelle für Gast-Betriebssysteme (nicht für Nutzerprogramme!)
|
||||
- mehr dazu: Xen
|
||||
|
||||
Verwandtschaft mit Mikrokernel-Architekturen
|
||||
- Geht man vom Typ-1-HV noch einen Schritt weiter ...
|
||||
- und entfernt alle sensiblen Instruktionen aus Gast-Betriebssystem ...
|
||||
- und ersetzt diese durch Hypervisor-Aufrufe, um Systemdienste wie E/A zu benutzen, ...
|
||||
- hat man praktisch den Hypervisor in Mikrokernel transformiert.
|
||||
- ... und genau das wird auch schon gemacht: $L^4$Linux (TU Dresden)
|
||||
- Basis: stringente $L^4\mu$ Kernel-Implementierung (Typ-1-HV-artiger Funktionsumfang)
|
||||
- Anwendungslaufzeitumgebung: paravirtualisierter Linux-Kernel als Serverprozess
|
||||
- Ziele: Isolation (Sicherheit, Robustheit), Echtzeitfähigkeit durch direktere HW-Interaktion (vergleichbar Exokernel-Ziel)
|
||||
|
||||
Zwischenfazit Virtualisierung
|
||||
- Ziele: Adaptivität komplementär zu...
|
||||
- Wartbarkeit : ökonomischer Betrieb von Cloud-und Legacy-Anwendungen ohne dedizierte Hardware
|
||||
- Sicherheit : sicherheitskritische Anwendungen können vollständig von nichtvertrauenswürdigen Anwendungen (und untereinander) isoliert werden
|
||||
- Robustheit : Fehler in VMs (= Anwendungsdomänen) können nicht andere VMs beeinträchtigen
|
||||
- Idee: drei gängige Prinzipien:
|
||||
- Typ-1-HV: unmittelbares HW-Multiplexing, trap-and-emulate
|
||||
- Typ-2-HV: HW-Multiplexing auf Basis eines Host-OS, binarytranslation
|
||||
- Paravirtualisierung: Typ-1-HV für angepasstes Gast-OS, kein trap-and-emulate nötig $\rightarrow$ HV ähnelt $\mu$Kern
|
||||
- Ergebnisse:
|
||||
- ✓ VMs mit individuell anpassbarer Laufzeitumgebung
|
||||
- ✓ isolierteVMs
|
||||
- ✓ kontrollierbare VM-Interaktion (untereinander und mit HW)
|
||||
- ✗ keine hardwarespezifischen Optimierungen aus VM heraus möglich $\rightarrow$ Performanz, Echtzeitfähigkeit, Sparsamkeit!
|
||||
|
||||
## Container
|
||||
Ziele:
|
||||
- Adaptivität , im Dienste von ...
|
||||
- ... Wartbarkeit: einfachen Entwicklung, Installation, Rekonfiguration durch Kapselung von
|
||||
- Anwendungsprogrammen
|
||||
- + durch sie benutzte Bibliotheken
|
||||
- + Instanzen bestimmter BS-Ressourcen
|
||||
- ... Portabilität: Betrieb von Anwendungen, die lediglich von einem bestimmten BS-Kernel abhängig sind (nämlich ein solcher, der Container unterstützt); insbesondere hinsichtlich:
|
||||
- Abhängigkeitskonflikten (Anwendungen und Bibliotheken)
|
||||
- fehlenden Abhängigkeiten (Anwendungen und Bibliotheken)
|
||||
- Versions-und Namenskonflikten
|
||||
- ... Sparsamkeit: problemgerechtes „Packen,, von Anwendungen in Container $\rightarrow$ Reduktion an Overhead: selten (oder gar nicht) genutzter Code, Speicherbedarf, Hardware, ...
|
||||
|
||||
Idee:
|
||||
- private Sichten (Container) bilden = private User-Space-Instanzen für
|
||||
verschiedene Anwendungsprogramme
|
||||
- Kontrolle dieser Container i.S.v. Multiplexing, Unabhängigkeit und API: BS-Kernel
|
||||
- somit keine Form der BS-Virtualisierung, eher: „User-Space-Virtualisierung,,
|
||||
|
||||

|
||||
|
||||
Anwendungsfälle für Container
|
||||
- Anwendungsentwicklung:
|
||||
- konfliktfreies Entwickeln und Testen unterschiedlicher Software, für unterschiedliche Zielkonfigurationen BS-User-Space
|
||||
- Anwendungsbetrieb und -administration:
|
||||
- Entschärfung von „dependency hell,,
|
||||
- einfache Migration, einfaches Backup von Anwendungen ohne den (bei Virtualisierungsimages als Ballast auftretenden) BS-Kernel
|
||||
- einfache Verteilung generischer Container für bestimmte Aufgaben
|
||||
- = Kombinationen von Anwendungen
|
||||
- Anwendungsisolation? $\rightarrow$ Docker
|
||||
|
||||
Zwischenfazit: Container
|
||||
- Ziele: Adaptivität komplementär zu...
|
||||
- Wartbarkeit : Vermeidung von Administrationskosten für Laufzeitumgebung von Anwendungen
|
||||
- Portabilität : Vereinfachung von Abhängigkeitsverwaltung
|
||||
- Sparsamkeit : Optimierung der Speicher-und Verwaltungskosten für Laufzeitumgebung von Anwendungen
|
||||
- Idee:
|
||||
- unabhängige User-Space-Instanz für jeden einzelnen Container
|
||||
- Aufgaben des Kernels: Unterstützung der Containersoftware bei Multiplexing und Herstellung der Unabhängigkeitdieser Instanzen
|
||||
- Ergebnisse:
|
||||
- ✓ vereinfachte Anwendungsentwicklung
|
||||
- ✓ vereinfachter Anwendungsbetrieb
|
||||
- ✗ Infrastruktur nötig über (lokale) Containersoftware hinaus, um Containern zweckgerecht bereitzustellen und zu warten
|
||||
- ✗ keine vollständige Isolationmöglich
|
||||
|
||||
Beispielsysteme (Auswahl)
|
||||
- Virtualisierung: VMware, VirtualBox
|
||||
- Paravirtualisierung: Xen
|
||||
- Exokernel: Nemesis, MirageOS, RustyHermit
|
||||
- Container: Docker, LupineLinux
|
||||
|
||||
### Hypervisor
|
||||
#### VMware
|
||||
- " ... ist Unternehmenin PaloAlto, Kalifornien (USA)
|
||||
- gegründet 1998 von 5 Informatikern
|
||||
- stellt verschiedene Virtualisierungs-Softwareprodukte her:
|
||||
1. VMware Workstation
|
||||
- war erstes Produkt von VMware (1999)
|
||||
- mehrere unabhängige Instanzen von x86- bzw. x86-64-Betriebssystemen auf einer Hardware betreibbar
|
||||
2. VMware Fusion: ähnliches Produkt für Intel Mac-Plattformen
|
||||
3. VMware Player: (eingestellte) Freeware für nichtkommerziellen Gebrauch
|
||||
4. VMware Server (eingestellte Freeware, ehem. GSX Server)
|
||||
5. VMware vSphere (ESXi)
|
||||
- Produkte 1 ... 3: für Desktop-Systeme
|
||||
- Produkte 4 ... 5: für Server-Systeme
|
||||
- Produkte 1 ... 4: Typ-2-Hypervisor
|
||||
- bei VMware-Installation: spezielle vm- Treiber in Host-Betriebssystem eingefügt
|
||||
- diese ermöglichen: direkten Hardware-Zugriff
|
||||
- durch Laden der Treiber: entsteht ,,Virtualisierungsschicht'' (VMware-Sprechweise)
|
||||
|
||||
- 
|
||||
- 
|
||||
- Typ1- Hypervisor- Architektur
|
||||
- Anwendung nur bei VMware ESXi
|
||||
- 
|
||||
- Entsprechende Produkte in Vorbereitung
|
||||
|
||||
#### VirtualBox
|
||||
- Virtualisierungs-Software für x86- bzw. x86-64-Betriebssysteme für Industrie und ,,Hausgebrauch'' (ursprünglich: Innotek , dann Sun , jetzt Oracle )
|
||||
- frei verfügbare professionelle Lösung, als Open Source Software unter GNU General Public License(GPL) version 2. ...
|
||||
- (gegenwärtig) lauffähig auf Windows, Linux, Macintosh und Solaris Hosts
|
||||
- unterstützt große Anzahl von Gast-Betriebssystemen: Windows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7), DOS/Windows 3.x, Linux (2.4 and 2.6), Solaris and OpenSolaris , OS/2 , and OpenBSD u.a.
|
||||
- reiner Typ-2-Hypervisor
|
||||
|
||||
### Paravirutalisierung: Xen
|
||||
- entstanden als Forschungsprojekt der University of Cambridge (UK), dann XenSource Inc., danach Citrix, jetzt: Linux Foundation (,,self-governing'')
|
||||
- frei verfügbar als Open Source Software unter GNU General Public License (GPL)
|
||||
- lauffähig auf Prozessoren der Typen x86, x86-64, PowerPC, ARM, MIPS
|
||||
- unterstützt große Anzahl von Gast-Betriebssystemen: FreeBSD, GNU/Hurd/Mach, Linux, MINIX, NetBSD, Netware, OpenSolaris, OZONE, Plan 9
|
||||
- ,,Built for the cloud before it was called cloud.'' (Russel Pavlicek, Citrix)
|
||||
- bekannt für Paravirtualisierung
|
||||
- unterstützt heute auch andere Virtualisierungs-Prinzipien
|
||||
|
||||
Xen : Architektur
|
||||
- Gast-BSe laufen in Xen Domänen (,,$dom_i$'', analog $VM_i$)
|
||||
- es existiert genau eine, obligatorische, vertrauenswürdige Domäne: $dom_0$
|
||||
- Aufgaben (Details umseitig):
|
||||
- Bereitstellen und Verwalten der virtualisierten Hardware für andere Domänen (Hypervisor-API, Scheduling-Politiken für Hardware-Multiplexing)
|
||||
- Hardwareverwaltung/-kommunikation für paravirtualisierte Gast-BSe (Gerätetreiber)
|
||||
- Interaktionskontrolle (Sicherheitspolitiken)
|
||||
- $dom_0$ im Detail: ein separates, hochkritisch administriertes, vertrauenswürdiges BS mit eben solchen Anwendungen (bzw. Kernelmodulen) zur Verwaltung des gesamten virtualisierten Systems
|
||||
- es existieren hierfür spezialisierte Variantenvon Linux, BSD, GNU Hurd
|
||||
- 
|
||||
|
||||
Xen : Sicherheit
|
||||
- Sicherheitsmechanismusin Xen: Xen Security Modules (XSM)
|
||||
- illustriert, wie (Para-) Typ-1-Virtualisierung von BS die NFE Sicherheit unterstützt
|
||||
- PDP: Teil des vertrauenswürdigen BS in $dom_0$, PEPs: XSMs im Hypervisor
|
||||
- Beispiel: Zugriff auf Hardware
|
||||
- Sicherheitspolitik-Integration, Administration, Auswertung: $dom_0$
|
||||
- 
|
||||
- Beispiel: Inter-Domänen-Kommunikation
|
||||
- Interaktionskontrolle (Aufgaben wie oben): $dom_0$
|
||||
- Beispiel: [VisorFlow](https://www.flyn.org/projects/VisorFlow/)
|
||||
- selber XSM kontrolliert Kommunikation für zwei Domänen
|
||||
|
||||
### Exokernel
|
||||
Nemesis
|
||||
- Betriebssystemaus EU-Verbundprojekt „Pegasus,, zur Realisierung eines verteilten multimediafähigen Systems (1. Version: 1994/95)
|
||||
- Entwurfsprinzipien:
|
||||
1. Anwendungen: sollen Freiheit haben, Betriebsmittel in für sie geeignetster Weise zu nutzen (= Exokernel-Prinzip)
|
||||
2. Realisierung als sog. vertikal strukturiertes Betriebssystem:
|
||||
- weitaus meiste Betriebssystem-Funktionalität innerhalb der Anwendungen ausgeführt (= Exokernel-Prinzip)
|
||||
- Echtzeitanforderungen durch Multimedia $\rightarrow$ Vermeidung von Client-Server-Kommunikationsmodell wegen schlecht beherrschbarer zeitlicher Verzögerungen (neu)
|
||||
- 
|
||||
|
||||
MirageOS + Xen
|
||||
- Spezialfall: Exokernel als paravirtualisiertes BS auf Xen
|
||||
- Ziele : Wartbarkeit (Herkunft: Virtualisierungsarchitekturen ...)
|
||||
- ökonomischer HW-Einsatz
|
||||
- Unterstützung einfacher Anwendungsentwicklung
|
||||
- nicht explizit: Unterstützung von Legacy-Anwendungen!
|
||||
- Idee: ,,Unikernel'' $\rightarrow$ eine Anwendung, eine API, ein Kernel
|
||||
- umfangreiche Dokumentation, Tutorials, ... $\rightarrow$ [ausprobieren](https://mirage.io/wiki/learning)
|
||||
- Unikernel - Idee
|
||||
- Architekturprinzip: 
|
||||
- in MirageOS: 
|
||||
- Ergebnis: Kombination von Vorteilen zweier Welten
|
||||
- Virtualisierungs vorteile: Sicherheit, Robustheit ($\rightarrow$ Xen - Prinzip genau einer vertrauenswürdigen, isolierten Domäne $dom_0$)
|
||||
- Exokernelvorteile: Wartbarkeit, Sparsamkeit
|
||||
- nicht: Exokernelvorteil der hardwarenahen Anwendungsentwicklung... ($\rightarrow$ Performanz und Echzeitfähigkeit )
|
||||
|
||||
### Container: Docker
|
||||
- Idee: Container für einfache Wartbarkeit von Linux-Anwendungsprogrammen ...
|
||||
- ... entwickeln
|
||||
- ... testen
|
||||
- ... konfigurieren
|
||||
- ... portieren $\rightarrow$ Portabilität
|
||||
- Besonderheit: Container können - unabhängig von ihrem Einsatzzweck - wie Software-Repositories benutzt, verwaltet, aktualisiert, verteilt ... werden
|
||||
- Management von Containers: Docker Client $\rightarrow$ leichtgewichtiger Ansatz zur Nutzung der Wartbarkeitsvorteile von Virtualisierung
|
||||
- Forsetzung unter der OCI (Open Container Initiative)
|
||||
- ,,Docker does a nice job [...] for a focused purpose, namely the lightweight packaging and deployment of applications.'' (Dirk Merkel, Linux Journal)
|
||||
- Implementierung der Containertechnik basierend auf Linux-Kernelfunktionen:
|
||||
- Linux Containers (LXC): BS-Unterstützung für Containermanagement
|
||||
- cgroups: Accounting/Beschränkung der Ressourcenzuordnung
|
||||
- union mounting: Funktion zur logischen Reorganisation hierarchischer Dateisysteme
|
||||
- 
|
||||
|
||||
# Performanz und Parallelität
|
||||
# Zusammenfassung
|
||||
|
||||
|
BIN
Assets/AdvancedOperatingSystems-Nemesis-struktur.png
Normal file
After Width: | Height: | Size: 137 KiB |
BIN
Assets/AdvancedOperatingSystems-Xen-architektur.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
Assets/AdvancedOperatingSystems-Xen-sicherheit.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
Assets/AdvancedOperatingSystems-container.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
Assets/AdvancedOperatingSystems-docker.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
Assets/AdvancedOperatingSystems-edf-prioritätsumkehr.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
Assets/AdvancedOperatingSystems-mirageOs-architektur.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
Assets/AdvancedOperatingSystems-typ-2-hypervisor.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
Assets/AdvancedOperatingSystems-unikernel-architektur.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
Assets/AdvancedOperatingSystems-vmware-bare-metal.png
Normal file
After Width: | Height: | Size: 182 KiB |
After Width: | Height: | Size: 218 KiB |
BIN
Assets/AdvancedOperatingSystems-vmware-paravirtualisierung.png
Normal file
After Width: | Height: | Size: 191 KiB |