Exokernel
This commit is contained in:
		
							parent
							
								
									bdd5ea9638
								
							
						
					
					
						commit
						684c1795d3
					
				
							
								
								
									
										
											BIN
										
									
								
								Advanced Operating Systems - Cheatsheet.pdf
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Advanced Operating Systems - Cheatsheet.pdf
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -2562,171 +2562,98 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Secure Binding}
 | 
			
		||||
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item Schutzmechanismus, der Autorisierung ( $\rightarrow$
 | 
			
		||||
        Library-BS)zur Benutzung einer Ressource von tatsächlicher Benutzung
 | 
			
		||||
        ( $\rightarrow$ Exokernel) trennt
 | 
			
		||||
        \item implementiert für den Exokernelerforderliches Zuordnungswissenvon
 | 
			
		||||
        (HW-)Ressource zu Mangement-Code (der im Library-BS implementiert ist)
 | 
			
		||||
        \item $\rightarrow$ ''Binding'' in Aegis implementiert als
 | 
			
		||||
        Unix-Hardlinkauf Metadatenstruktur zu einem Gerät im Kernelspeicher (
 | 
			
		||||
        ,,remember: everythingisa file...'' )
 | 
			
		||||
        \item Zur Implementierung benötigt:
 | 
			
		||||
        \item Schutzmechanismus, trennt Autorisierung zur Benutzung einer Ressource von tatsächlicher Benutzung
 | 
			
		||||
        \item implementiert für Exokernel erforderliches Zuordnungswissen von (HW-)Ressource zu Mangement-Code
 | 
			
		||||
        \item $\rightarrow$ ''Binding'' in Aegis implementiert als Unix-Hardlink auf Metadatenstruktur zu einem Gerät im Kernelspeicher
 | 
			
		||||
        \item Zur Implementierung benötigt
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Hardware-Unterstützung zur effizienten Rechteprüfung (insbes. HW-Caching)
 | 
			
		||||
            \item Software-Caching von Autorisierungsentscheidungen im Kernel (bei Nutzung durch verschiedene Library-BS)
 | 
			
		||||
            \item Downloadingvon Applikationscode in Kernel zur effizienten Durchsetzung (quasi: User-Space-Implementierung von Systemaufrufcode)
 | 
			
		||||
            \item Hardware-Unterstützung zur effizienten Rechteprüfung (HW-Caching)
 | 
			
		||||
            \item Software-Caching von Autorisierungsentscheidungen im Kernel
 | 
			
		||||
            \item Downloading von Applikationscode in Kernel zur effizienten Durchsetzung
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item einfach ausgedrückt: ,,Secure Binding'' erlaubt einem ExokernelSchutz
 | 
			
		||||
        von Ressourcen, ohne deren Semantik verstehen zu müssen.
 | 
			
		||||
        \item ,,Secure Binding'' erlaubt Exokernel Schutz von Ressourcen ohne deren Semantik verstehen zu müssen
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Visible Resource
 | 
			
		||||
        Revocation}
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Visible Resource Revocation}
 | 
			
		||||
    monolithische BS: entziehen Ressourcen ,,unsichtbar'', d.h. transparent für Anwendungen
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item monolithische Betriebssysteme: entziehen Ressourcen ,,unsichtbar''
 | 
			
		||||
        (invisible), d.h. transparent für Anwendungen
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Vorteil: im allgemeinen geringere Latenzzeiten, einfacheres und komfortableres Programmiermodell
 | 
			
		||||
            \item Nachteil: Anwendungen(hier: die eingebetteten Library-BS) erhalten keine Kenntnis über Entzug,bspw. aufgrund von Ressourcenknappheit etc.
 | 
			
		||||
            \item[$\rightarrow$] erforderliches Wissen für Management-Strategien!
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item Exokernel-Betriebssysteme: entziehen(überwiegend) Ressourcen
 | 
			
		||||
        ,,sichtbar'' $\rightarrow$ Dialog zwischen Exokernel
 | 
			
		||||
        und Library-BS
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Vorteil: effizientes Management durch Library-BS möglich (z.B. Prozessor: nur tatsächlich benötigte Register werden bei Entzug gespeichert)
 | 
			
		||||
            \item Nachteil : Performanz bei sehr häufigem Entzug, Verwaltungs-und Fehlerbehandlungsstrategien zwischen verschiedenen Library-BS müssen korrekt und untereinander kompatibelsein...
 | 
			
		||||
            \item[$\rightarrow$] Abort - Protokoll notwendig, falls dies nicht gegeben ist
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item Vorteil: im allgemeinen geringere Latenzzeiten, einfacheres und komfortableres Programmiermodell
 | 
			
		||||
        \item Nachteil: Anwendungen erhalten keine Kenntnis über Entzug
 | 
			
		||||
        \item[$\rightarrow$] erforderliches Wissen für Management-Strategien
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
    Exokernel-BS: entziehen Ressourcen ,,sichtbar'' $\rightarrow$ Dialog zwischen Exokernel und Library-BS
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item Vorteil: effizientes Management durch Library-BS möglich %(z.B. Prozessor: nur tatsächlich benötigte Register werden bei Entzug gespeichert)
 | 
			
		||||
        \item Nachteil: Performanz bei sehr häufigem Entzug, Verwaltungs-und Fehlerbehandlungsstrategien zwischen verschiedenen Library-BS müssen korrekt und untereinander kompatibel sein...
 | 
			
		||||
        \item[$\rightarrow$] Abort-Protokoll notwendig, falls dies nicht gegeben ist
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Abort - Protokoll}
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Abort-Protokoll}
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item Ressourcenentzug bei unkooperativen Library-Betriebssystemen (
 | 
			
		||||
        Konflikt mit Anforderung durch andere Anwendung/deren Library-BS:
 | 
			
		||||
        Verweigerung der Rückgabe, zu späte Rückgabe, ...)
 | 
			
		||||
        \item Ressourcenentzug bei unkooperativen Library-Betriebssystemen
 | 
			
		||||
        \item notwendig aufgrund von Visible Ressource Revocation
 | 
			
		||||
        \item Dialog:
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Exokernel: ,,Bitte Seitenrahmen x freigeben.''
 | 
			
		||||
            \item Library-BS: ,,...''
 | 
			
		||||
            \item Exokernel: ,,Seitenrahmen x innerhalb von 50 $\mu$s freigeben!''
 | 
			
		||||
            \item Exokernel: ,,Seitenrahmen x innerhalb von 50 $\mu$s freigeben''
 | 
			
		||||
            \item Library-BS: ,,...''
 | 
			
		||||
            \item Exokernel: (führt Abort-Protokoll aus)
 | 
			
		||||
            \item Library-BS: X (,,Abort'' in diesem Bsp. = Anwendungsprozess terminieren)
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item In der Praxis:
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item harte Echtzeit-Fristen (,, innerhalb von 50 $\mu$s'' ) in den wenigsten Anwendungen berücksichtigt \begin{itemize*} \item[$\rightarrow$] Abort = lediglich Widerruf aller Secure Bindings der jeweiligen Ressource für die unkooperativeAnwendung, nicht deren Terminierung (= unsichtbarerRessourcenentzug) \item[$\rightarrow$] anschließend: Informieren des entsprechenden Library-BS \end{itemize*}
 | 
			
		||||
            \item ermöglicht sinnvolle Reaktion des Library-BS (in Library-BS wird ,,Repossession''-Exceptionausgelöst, so dass auf Entzug geeignet reagiert werden kann)
 | 
			
		||||
            \item bei zustandsbehafteten Ressourcen ( $\rightarrow$ CPU): Exokernelkann diesen Zustand auf Hintergrundspeicher sichern $\rightarrow$ Management-Informationen zum Aufräumen durch Library-BS
 | 
			
		||||
            \item Library-BS: X (,,Abort'' hier Prozess terminieren)
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item harte Echtzeit-Fristen in wenigsten Anwendungen berücksichtigt
 | 
			
		||||
        \item[$\rightarrow$] Abort = nur Widerruf der Secure Bindings, nicht Terminierung% der jeweiligen Ressource für die unkooperative Anwendung, nicht deren Terminierung (= unsichtbarer Ressourcenentzug) 
 | 
			
		||||
        \item[$\rightarrow$] anschließend: Informieren des entsprechenden Library-BS
 | 
			
		||||
        \item ermöglicht sinnvolle Reaktion des Library-BS %(in Library-BS wird ,,Repossession''-Exception ausgelöst, so dass auf Entzug geeignet reagiert werden kann)
 | 
			
		||||
        \item bei zustandsbehafteten Ressourcen: Exokernel kann Zustand auf Hintergrundspeicher sichern $\rightarrow$ Management-Informationen zum Aufräumen durch Library-BS
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Exokernelperformanz}
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Aegis mit Library-OS ExOS}
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item Was macht Exokern-Architekturen adaptiv(er)?
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Abstraktionen und Mechanismen des Betriebssystems können den Erfordernissen der Anwendungen angepasst werden
 | 
			
		||||
            \item (erwünschtes) Ergebnis: beträchtliche Performanzsteigerungen (vgl. komplementäre Ziel-NFE: Performanz, Echtzeitfähigkeit, Wartbarkeit, Sparsamkeit )
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item sehr effiziente Exokerne, begrenzte Anzahl einfacher Systemaufrufe (~10) und Kernel-interne Primitiven
 | 
			
		||||
        \item sicheres Hardware-Multiplexing auf niedriger Abstraktionsebene (,,low-level'') mit geringem Overhead
 | 
			
		||||
        \item trad. Abstraktionen (VMM, IPC) auf Anwendungsebene effizient implementierbar $\rightarrow$ einfache Erweiter-/Spezialisierbarkeit %bzw. Ersetzbarkeit dieser Abstraktionen
 | 
			
		||||
        \item hochspezialisierte Implementierungen von Abstraktionen generierbar%, die genau auf Funktionalität und Performanz-Anforderungen dieser Anwendung zugeschnitten
 | 
			
		||||
        \item geschützte Kontrollflussübergabe: als IPC-Primitive im Aegis-Kernel, 7-mal schneller als zuvor %damals beste Implementierung
 | 
			
		||||
        \item Ausnahmebehandlung bei Aegis: 5-mal schneller als bei damals bester Implementierung
 | 
			
		||||
        \item durch Aegis: Flexibilität von ExOS, mit Mikrokernel nicht erreichbar
 | 
			
		||||
        \item Aegis erlaubt Anwendungen Konstruktion effizienter IPC-Primitiven ($\Delta \mu$Kernel: nicht vertrauenswürdige Anwendungen können keinerlei spezialisierte IPC-Primitiven nutzen)
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
 | 
			
		||||
    Performanzstudien
 | 
			
		||||
 | 
			
		||||
    \begin{enumerate*}
 | 
			
		||||
        \item Aegis mit Library-BS ExOS (MIT: Dawson Engler, Frans Kaashoek)
 | 
			
		||||
        \item Xok mit Library-BS ExOS (MIT)
 | 
			
		||||
        \item Nemesis (Pegasus-Projekt, EU)
 | 
			
		||||
        \item XOmB (U Pittsburgh)
 | 
			
		||||
        \item ...
 | 
			
		||||
    \end{enumerate*}
 | 
			
		||||
 | 
			
		||||
    Aegis/ExOSals erweiterte Machbarkeitsstudie [Engler+95]
 | 
			
		||||
 | 
			
		||||
    \begin{enumerate*}
 | 
			
		||||
        \item machbar: sehr effiziente Exokerne
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Grundlage: begrenzte Anzahl einfacher Systemaufrufe (Größenordnung ~10) und Kernel-interne Primitiven (,,Pseudo-Maschinenanweisungen''), die enthalten sein müssen
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item machbar: sicheres Hardware-Multiplexing auf niedriger
 | 
			
		||||
        Abstraktionsebene (,,low-level'') mit geringem Overhead
 | 
			
		||||
        \item traditionelle Abstraktionen (VMM, IPC) auf Anwendungsebene effizient
 | 
			
		||||
        implementierbar $\rightarrow$ einfache
 | 
			
		||||
        Erweiterbarkeit, Spezialisierbarkeitbzw. Ersetzbarkeit dieser
 | 
			
		||||
        Abstraktionen
 | 
			
		||||
        \item für Anwendungen: hochspezialisierte Implementierungen von
 | 
			
		||||
        Abstraktionen generierbar, die genau auf Funktionalität und
 | 
			
		||||
        Performanz-Anforderungen dieser Anwendung zugeschnitten
 | 
			
		||||
        \item geschützte Kontrollflussübergabe: als IPC-Primitive im Aegis-Kernel,
 | 
			
		||||
        7-mal schnellerals damals beste Implementierung (vgl. [Liedtke95],
 | 
			
		||||
        Kap. 3)
 | 
			
		||||
        \item Ausnahmebehandlung bei Aegis: 5-mal schneller als bei damals bester
 | 
			
		||||
        Implementierung
 | 
			
		||||
        \item durch Aegis möglich: Flexibilität von ExOS, die mit
 | 
			
		||||
        Mikrokernel-Systemen nicht erreichbar ist:
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Bsp. VMM: auf Anwendungsebene implementiert, wo diese sehr einfach mit DSM-Systemen u. Garbage-Kollektoren verknüpfbar
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item Aegis erlaubt Anwendungen Konstruktion effizienter IPC-Primitiven ($\Delta \mu$Kernel: nicht vertrauenswürdige Anwendungen können keinerlei spezialisierte IPC-Primitiven nutzen, geschweige denn selbst implementieren)
 | 
			
		||||
    \end{enumerate*}
 | 
			
		||||
 | 
			
		||||
    Xok/ExOS
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Xok mit Library-OS ExOS}
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item praktische Weiterentwicklung von Aegis: Xok
 | 
			
		||||
        \item für x86-Hardware implementiert
 | 
			
		||||
        \item Kernel-Aufgaben (wie gehabt): Multiplexing von Festplatte, Speicher,
 | 
			
		||||
        Netzwerkschnittstellen, ...
 | 
			
		||||
        \item Standard Library-BS (wie bei Aegis): ExOS
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item ,,Unix as a Library''
 | 
			
		||||
            \item Plattform für unmodifizierte Unix-Anwendungen (csh, perl, gcc, telnet, ftp, ...)
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item z.B. Library-BS zum Dateisystem-Management: C-FFS
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item hochperformant (im Vergleich mit Makrokernel-Dateisystem-Management)
 | 
			
		||||
            \item Abstraktionen und Operationen auf Exokernel-Basis (u.a.): Inodes, Verzeichnisse, physische Dateirelokation( $\rightarrow$ zusammenhängendes Lesen)
 | 
			
		||||
            \item Secure Bindings für Metadaten-Modifikation
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item Forschungsziele:
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Aegis: Proof-of-Concept
 | 
			
		||||
            \item XOK: Proof-of-Feasibility (Performanz)
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item Kernel-Aufgaben: Multiplexing von Festplatte, Speicher, Netzwerk,...
 | 
			
		||||
        \item Standard Lib-BS (wie Aegis): ExOS ,,Unix as a Library''
 | 
			
		||||
        \item hochperformant
 | 
			
		||||
        \item Abstraktionen und Operationen auf Exokernel-Basis %Inodes, Verzeichnisse, physische Dateirelokation ($\rightarrow$ zusammenhängendes Lesen)
 | 
			
		||||
        \item Secure Bindings für Metadaten-Modifikation
 | 
			
		||||
        %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-exos.png}
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
 | 
			
		||||
    Zwischenfazit: Exokernelarchitektur
 | 
			
		||||
 | 
			
		||||
    \subsubsection{Fazit Exokernelarchitektur}
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item Ziele:
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item Performanz, Sparsamkeit: bei genauer Kenntnis der Hardware ermöglicht deren direkte BenutzungAnwendungsentwicklern Effizienzoptimierung
 | 
			
		||||
            \item Wartbarkeit: Hardwareabstraktionen sollen flexibel an Anwendungsdomänen anpassbar sein, ohne das BS modifizieren/wechseln zu müssen
 | 
			
		||||
            \item Echtzeitfähigkeit: Zeitverhaltendes Gesamtsystems durch direkte Steuerung der Hardware weitestgehend durch (Echtzeit-) Anwendungen kontrollierbar
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item Idee:
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item User-Space:anwendungsspezifische Hardwareabstraktionen im User-Space implementiert
 | 
			
		||||
            \item Kernel-Space:nur Multiplexing und Schutz der HW-Schnittstellen
 | 
			
		||||
            \item in der Praxis: kooperativer Ressourcenentzug zwischen Kernel, Lib. OS
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item Ergebnisse:
 | 
			
		||||
        \begin{itemize*}
 | 
			
		||||
            \item hochperformanteHardwarebenutzung durch spezialisierte Anwendungen
 | 
			
		||||
            \item funktional kleiner Exokernel( $\rightarrow$ Sparsamkeit, Korrektheit des Kernelcodes )
 | 
			
		||||
            \item flexible Nutzung problemgerechterHW-Abstraktionen ( readymade Lib. OS)
 | 
			
		||||
            \item keine Isolation von Anwendungen ( $\rightarrow$ Parallelisierbarkeit: teuer und mit schwachen Garantien; $\rightarrow$ Robustheit und Sicherheit der Anwendungen: nicht umsetzbar)
 | 
			
		||||
        \end{itemize*}
 | 
			
		||||
        \item Abstraktionen und Mechanismen des Betriebssystems können den Erfordernissen der Anwendungen angepasst werden
 | 
			
		||||
        \item[$\rightarrow$] Ergebnis: beträchtliche Performanzsteigerungen
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
    \begin{description*}
 | 
			
		||||
        \item[Performanz, Sparsamkeit] ermöglicht direkte HW-Benutzung und Effizienzoptimierung
 | 
			
		||||
        \item[Wartbarkeit] Hardwareabstraktionen flexibel an Anwendungsdomänen anpassbar, ohne BS modifizieren/wechseln
 | 
			
		||||
        \item[Echtzeitfähigkeit] Zeitverhalten des Gesamtsystems durch direkte Steuerung der Hardware weitestgehend kontrollierbar
 | 
			
		||||
    \end{description*}
 | 
			
		||||
    Idee
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item User-Space: anwendungsspezifische Hardwareabstraktionen
 | 
			
		||||
        \item Kernel-Space: nur Multiplexing und Schutz der HW-Schnittstellen
 | 
			
		||||
        \item Praxis: kooperativer Ressourcenentzug zwischen Kernel, Lib. OS
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
    Ergebnisse
 | 
			
		||||
    \begin{itemize*}
 | 
			
		||||
        \item hochperformante Hardwarebenutzung durch spez. Anwendungen
 | 
			
		||||
        \item funktional kleiner Exokernel ($\rightarrow$ Sparsamkeit, Korrektheit)
 | 
			
		||||
        \item flexible Nutzung problemgerechter HW-Abstraktionen
 | 
			
		||||
        \item keine Isolation von Anwendungen $\rightarrow$ Parallelisierbarkeit: teuer und schwach$\rightarrow$ keine Robustheit und Sicherheit der Anwendungen
 | 
			
		||||
    \end{itemize*}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user