diff --git a/Advanced Operating Systems - Cheatsheet.pdf b/Advanced Operating Systems - Cheatsheet.pdf index 59c8b58..21cd82f 100644 --- a/Advanced Operating Systems - Cheatsheet.pdf +++ b/Advanced Operating Systems - Cheatsheet.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:006903e86f59cb2174026e6e6130fb51835b89c74b985a5e8f8ea80353bac6b1 -size 679585 +oid sha256:3ea01f862878180fb970533bbd442320c4d285edd6b9411590313ab94b62858d +size 723991 diff --git a/Advanced Operating Systems - Cheatsheet.tex b/Advanced Operating Systems - Cheatsheet.tex index 4271575..06b7ab9 100644 --- a/Advanced Operating Systems - Cheatsheet.tex +++ b/Advanced Operating Systems - Cheatsheet.tex @@ -2790,81 +2790,52 @@ \item Diese Architekturprobleme (bekannt seit 1974) wurden 20 Jahre lang im Sinne von Rückwärtskompatibilität auf Nachfolgeprozessoren übertragen ... \end{itemize*} - \subsubsection{Typ-2-Hypervisor} + \begin{center} + \includegraphics[width=.6\linewidth]{Assets/AdvancedOperatingSystems-typ-2-hypervisor.png} + \end{center} - %\includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-typ-2-hypervisor.png} - - Virtualisierung ohne Hardwareunterstützung: - + Virtualisierung ohne Hardwareunterstützung, keine Möglichkeit... \begin{itemize*} - \item keine Möglichkeit, trap-and-emulate zu nutzen - \item keine Möglichkeit, um - \begin{enumerate*} - - \item korrekt (bei sensiblen Instruktionen im Gast-Kernel) den Privilegierungsmodus zu wechseln - \item den korrekten Code im HV auszuführen - \end{enumerate*} + \item trap-and-emulate zu nutzen + \item um korrekt den Privilegierungsmodus zu wechseln + \item den korrekten Code im HV auszuführen \end{itemize*} - Übersetzungsstrategie in Software: - + Übersetzungsstrategie in Software \begin{itemize*} - \item vollständige Übersetzung des Maschinencodes, der in VM ausgeführt - wird, in Maschinencode, der im HV ausgeführt wird - \item praktische Forderung: HV sollte selbst abstrahierte HW-Schnittstelle - zur Ausführung des (komplexen!) Übersetzungscodes zur Verfügung haben - (z.B. Nutzung von Gerätetreibern) - \item $\rightarrow$ Typ-2-HV als Kompromiss: - \begin{itemize*} + \item vollständige Übersetzung des Maschinencodes, der in VM ausgeführt wird, in Maschinencode, der im HV ausgeführt wird + \item praktische Forderung: HV sollte selbst abstrahierte HW-Schnittstelle zur Ausführung des (komplexen!) Übersetzungscodes zur Verfügung haben + \item[$\rightarrow$] Typ-2-HV als Kompromiss \item korrekte Ausführung von virtualisierter Software auf virtualisierter HW \item beherrschbare Komplexität der Implementierung - \end{itemize*} \end{itemize*} aus Nutzersicht - \begin{itemize*} - \item läuft als gewöhnlicher Nutzer-Prozess auf Host-Betriebssystem (z.B. - Windows oder Linux) - \item VMware bedienbarwie physischer Rechner (bspw. erwartet Bootmedium in - virtueller Repräsentation eines physischen Laufwerks) - \item persistente Daten des Gast-BS auf virtuellem Speichermedium ( - tatsächlich: Image-Datei aus Sicht des Host-Betriebssystems) + \item läuft als gewöhnlicher Nutzer-Prozess auf Host-Betriebssystem + \item VMware bedienbar wie physischer Rechner + \item persistente Daten des Gast-BS auf virtuellem Speichermedium \end{itemize*} Mechanismus: Code-Inspektion - \begin{itemize*} - \item 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 - \begin{itemize*} - \item 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. - \end{itemize*} + \item Bei Ausführung eines Binärprogramms in der virtuellen Maschine: zunächst inspiziert Typ-2-HV den Code nach Basisblöcken + \item Basisblock: Befehlsfolge, die mit privilegierten Befehlen oder solchen Befehlen abgeschlossen ist, die den Kontrollfluss ändern%, z.B. jmp, call, ret \item Basisblöcke werden nach sensiblen Instruktionen abgesucht - \item diese werden jeweils durchAufruf einer HV-Prozedur ersetzt, die - jeweilige Instruktion behandelt - \item gleiche Verfahrensweise mit letzter Instruktion eines Basis-Blocks + \item diese werden jeweils durch Aufruf einer HV-Prozedur ersetzt, die jeweilige Instruktion behandelt \end{itemize*} Mechanismus: Binary Translation (Binärcodeübersetzung) - \begin{itemize*} - \item modifizierter Basisblock: wird innerhalbdes HVin Cachegespeichert und - ausgeführt - \item 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) - \item sensible Instruktionen: nach dargestellter Methode abgefangen und - emuliert $\rightarrow$ dabei hilft jetzt das Host-BS - (z.B. durch eigene Systemaufrufe, Gerätetreiberschnittstellen) + \item modifizierter Basisblock: wird innerhalb des HV in Cache gespeichert und ausgeführt + \item 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) + \item sensible Instruktionen: nach dargestellter Methode abgefangen und emuliert $\rightarrow$ dabei hilft das Host-BS (z.B. durch eigene Systemaufrufe) % Gerätetreiberschnittstellen) \end{itemize*} Mechanismus: Caching von Basisblöcken - \begin{itemize*} - \item HV nutzt zwei parallel arbeitende Module (Host-BS-Threads!): + \item HV nutzt zwei parallel arbeitende Module \begin{itemize*} \item Translator: Code-Inspektion, Binary Translation \item Dispatcher: Basisblock-Ausführung @@ -2874,37 +2845,23 @@ Befehlsadresse im Cache; falls miss $\rightarrow$ suspendieren (zugunsten Translator) \item Translator: schreibt Basisblöcke in Basisblock-Cache - \item Annahme: irgendwann ist Großteil des Programms im Cache, dieses läuft - dann mit nahezu Original-Geschwindigkeit (theoretisch) + \item Annahme: irgendwann ist Großteil des Programms im Cache, dieses läuft dann mit nahezu Original-Geschwindigkeit (Theorie) \end{itemize*} Performanzmessungen - \begin{itemize*} - \item zeigen gemischtes Bild: Typ2-HV keinesfalls so schlecht, wie einst - erwartet wurde - \item qualitativer Vergleich mit virtualisierbarer Hardware - (Typ1-Hypervisor): - \item ,,trap-and-emulate,,: erzeugt Vielzahl von Traps - $\rightarrow$ Kontextwechsel zwischen jeweiliger VM - und HV - \item insbesondere bei Vielzahl an VMs sehr teuer: CPU-Caches, TLBs, - Heuristiken zur spekulativen Ausführung werden verschmutzt - \item wenn andererseits sensible Instruktionen durch Aufruf von - VMware-Prozeduren innerhalb des ausführenden Programms ersetzt: keine - Kontextwechsel-Overheads + \item Typ2-HV keinesfalls so schlecht, wie einst erwartet wurde + \item ,,trap-and-emulate,, erzeugt Vielzahl von Traps $\rightarrow$ Kontextwechsel zwischen jeweiliger VM und HV + \item insbesondere bei Vielzahl an VMs sehr teuer: CPU-Caches, TLBs, Heuristiken zur spekulativen Ausführung werden verschmutzt + \item wenn sensible Instruktionen durch VMware-Prozeduren innerhalb des Programms ersetzt: keine Kontextwechsel-Overheads \end{itemize*} - Studie: (von Vmware) [Adams\&Agesen06] - + Studie (von Vmware) \begin{itemize*} - \item last-und anwendungsabhängig kann Softwarelösung sogar Hardwarelösung - übertreffen - \item Folge: viele moderne Typ1-HV benutzen aus Performanzgründen ebenfalls - Binary Translation + \item last-und anwendungsabhängig kann Softwarelösung sogar Hardwarelösung übertreffen + \item viele moderne Typ1-HV benutzen aus Performanzgründen ebenfalls Binary Translation \end{itemize*} - \subsubsection{Paravirtualisierung} Funktionsprinzip