Exokernel

This commit is contained in:
WieErWill 2022-03-01 10:27:53 +01:00
parent bdd5ea9638
commit 684c1795d3
2 changed files with 66 additions and 139 deletions

Binary file not shown.

View File

@ -2562,171 +2562,98 @@
\subsubsection{Secure Binding} \subsubsection{Secure Binding}
\begin{itemize*} \begin{itemize*}
\item Schutzmechanismus, der Autorisierung ( $\rightarrow$ \item Schutzmechanismus, trennt Autorisierung zur Benutzung einer Ressource von tatsächlicher Benutzung
Library-BS)zur Benutzung einer Ressource von tatsächlicher Benutzung \item implementiert für Exokernel erforderliches Zuordnungswissen von (HW-)Ressource zu Mangement-Code
( $\rightarrow$ Exokernel) trennt \item $\rightarrow$ ''Binding'' in Aegis implementiert als Unix-Hardlink auf Metadatenstruktur zu einem Gerät im Kernelspeicher
\item implementiert für den Exokernelerforderliches Zuordnungswissenvon \item Zur Implementierung benötigt
(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:
\begin{itemize*} \begin{itemize*}
\item Hardware-Unterstützung zur effizienten Rechteprüfung (insbes. HW-Caching) \item Hardware-Unterstützung zur effizienten Rechteprüfung (HW-Caching)
\item Software-Caching von Autorisierungsentscheidungen im Kernel (bei Nutzung durch verschiedene Library-BS) \item Software-Caching von Autorisierungsentscheidungen im Kernel
\item Downloadingvon Applikationscode in Kernel zur effizienten Durchsetzung (quasi: User-Space-Implementierung von Systemaufrufcode) \item Downloading von Applikationscode in Kernel zur effizienten Durchsetzung
\end{itemize*} \end{itemize*}
\item einfach ausgedrückt: ,,Secure Binding'' erlaubt einem ExokernelSchutz \item ,,Secure Binding'' erlaubt Exokernel Schutz von Ressourcen ohne deren Semantik verstehen zu müssen
von Ressourcen, ohne deren Semantik verstehen zu müssen.
\end{itemize*} \end{itemize*}
\subsubsection{Visible Resource Revocation}
\subsubsection{Visible Resource monolithische BS: entziehen Ressourcen ,,unsichtbar'', d.h. transparent für Anwendungen
Revocation}
\begin{itemize*} \begin{itemize*}
\item monolithische Betriebssysteme: entziehen Ressourcen ,,unsichtbar'' \item Vorteil: im allgemeinen geringere Latenzzeiten, einfacheres und komfortableres Programmiermodell
(invisible), d.h. transparent für Anwendungen \item Nachteil: Anwendungen erhalten keine Kenntnis über Entzug
\begin{itemize*} \item[$\rightarrow$] erforderliches Wissen für Management-Strategien
\item Vorteil: im allgemeinen geringere Latenzzeiten, einfacheres und komfortableres Programmiermodell \end{itemize*}
\item Nachteil: Anwendungen(hier: die eingebetteten Library-BS) erhalten keine Kenntnis über Entzug,bspw. aufgrund von Ressourcenknappheit etc. Exokernel-BS: entziehen Ressourcen ,,sichtbar'' $\rightarrow$ Dialog zwischen Exokernel und Library-BS
\item[$\rightarrow$] erforderliches Wissen für Management-Strategien! \begin{itemize*}
\end{itemize*} \item Vorteil: effizientes Management durch Library-BS möglich %(z.B. Prozessor: nur tatsächlich benötigte Register werden bei Entzug gespeichert)
\item Exokernel-Betriebssysteme: entziehen(überwiegend) Ressourcen \item Nachteil: Performanz bei sehr häufigem Entzug, Verwaltungs-und Fehlerbehandlungsstrategien zwischen verschiedenen Library-BS müssen korrekt und untereinander kompatibel sein...
,,sichtbar'' $\rightarrow$ Dialog zwischen Exokernel \item[$\rightarrow$] Abort-Protokoll notwendig, falls dies nicht gegeben ist
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*}
\end{itemize*} \end{itemize*}
\subsubsection{Abort-Protokoll}
\subsubsection{Abort - Protokoll}
\begin{itemize*} \begin{itemize*}
\item Ressourcenentzug bei unkooperativen Library-Betriebssystemen ( \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 notwendig aufgrund von Visible Ressource Revocation \item notwendig aufgrund von Visible Ressource Revocation
\item Dialog: \item Dialog:
\begin{itemize*} \begin{itemize*}
\item Exokernel: ,,Bitte Seitenrahmen x freigeben.'' \item Exokernel: ,,Bitte Seitenrahmen x freigeben.''
\item Library-BS: ,,...'' \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 Library-BS: ,,...''
\item Exokernel: (führt Abort-Protokoll aus) \item Exokernel: (führt Abort-Protokoll aus)
\item Library-BS: X (,,Abort'' in diesem Bsp. = Anwendungsprozess terminieren) \item Library-BS: X (,,Abort'' hier Prozess 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
\end{itemize*} \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*} \end{itemize*}
\subsubsection{Aegis mit Library-OS ExOS}
\subsubsection{Exokernelperformanz}
\begin{itemize*} \begin{itemize*}
\item Was macht Exokern-Architekturen adaptiv(er)? \item sehr effiziente Exokerne, begrenzte Anzahl einfacher Systemaufrufe (~10) und Kernel-interne Primitiven
\begin{itemize*} \item sicheres Hardware-Multiplexing auf niedriger Abstraktionsebene (,,low-level'') mit geringem Overhead
\item Abstraktionen und Mechanismen des Betriebssystems können den Erfordernissen der Anwendungen angepasst werden \item trad. Abstraktionen (VMM, IPC) auf Anwendungsebene effizient implementierbar $\rightarrow$ einfache Erweiter-/Spezialisierbarkeit %bzw. Ersetzbarkeit dieser Abstraktionen
\item (erwünschtes) Ergebnis: beträchtliche Performanzsteigerungen (vgl. komplementäre Ziel-NFE: Performanz, Echtzeitfähigkeit, Wartbarkeit, Sparsamkeit ) \item hochspezialisierte Implementierungen von Abstraktionen generierbar%, die genau auf Funktionalität und Performanz-Anforderungen dieser Anwendung zugeschnitten
\end{itemize*} \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*} \end{itemize*}
Performanzstudien \subsubsection{Xok mit Library-OS ExOS}
\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
\begin{itemize*} \begin{itemize*}
\item praktische Weiterentwicklung von Aegis: Xok
\item für x86-Hardware implementiert \item für x86-Hardware implementiert
\item Kernel-Aufgaben (wie gehabt): Multiplexing von Festplatte, Speicher, \item Kernel-Aufgaben: Multiplexing von Festplatte, Speicher, Netzwerk,...
Netzwerkschnittstellen, ... \item Standard Lib-BS (wie Aegis): ExOS ,,Unix as a Library''
\item Standard Library-BS (wie bei Aegis): ExOS \item hochperformant
\begin{itemize*} \item Abstraktionen und Operationen auf Exokernel-Basis %Inodes, Verzeichnisse, physische Dateirelokation ($\rightarrow$ zusammenhängendes Lesen)
\item ,,Unix as a Library'' \item Secure Bindings für Metadaten-Modifikation
\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 \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-exos.png} %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-exos.png}
\end{itemize*} \end{itemize*}
Zwischenfazit: Exokernelarchitektur \subsubsection{Fazit Exokernelarchitektur}
\begin{itemize*} \begin{itemize*}
\item Ziele: \item Abstraktionen und Mechanismen des Betriebssystems können den Erfordernissen der Anwendungen angepasst werden
\begin{itemize*} \item[$\rightarrow$] Ergebnis: beträchtliche Performanzsteigerungen
\item Performanz, Sparsamkeit: bei genauer Kenntnis der Hardware ermöglicht deren direkte BenutzungAnwendungsentwicklern Effizienzoptimierung \end{itemize*}
\item Wartbarkeit: Hardwareabstraktionen sollen flexibel an Anwendungsdomänen anpassbar sein, ohne das BS modifizieren/wechseln zu müssen \begin{description*}
\item Echtzeitfähigkeit: Zeitverhaltendes Gesamtsystems durch direkte Steuerung der Hardware weitestgehend durch (Echtzeit-) Anwendungen kontrollierbar \item[Performanz, Sparsamkeit] ermöglicht direkte HW-Benutzung und Effizienzoptimierung
\end{itemize*} \item[Wartbarkeit] Hardwareabstraktionen flexibel an Anwendungsdomänen anpassbar, ohne BS modifizieren/wechseln
\item Idee: \item[Echtzeitfähigkeit] Zeitverhalten des Gesamtsystems durch direkte Steuerung der Hardware weitestgehend kontrollierbar
\begin{itemize*} \end{description*}
\item User-Space:anwendungsspezifische Hardwareabstraktionen im User-Space implementiert Idee
\item Kernel-Space:nur Multiplexing und Schutz der HW-Schnittstellen \begin{itemize*}
\item in der Praxis: kooperativer Ressourcenentzug zwischen Kernel, Lib. OS \item User-Space: anwendungsspezifische Hardwareabstraktionen
\end{itemize*} \item Kernel-Space: nur Multiplexing und Schutz der HW-Schnittstellen
\item Ergebnisse: \item Praxis: kooperativer Ressourcenentzug zwischen Kernel, Lib. OS
\begin{itemize*} \end{itemize*}
\item hochperformanteHardwarebenutzung durch spezialisierte Anwendungen Ergebnisse
\item funktional kleiner Exokernel( $\rightarrow$ Sparsamkeit, Korrektheit des Kernelcodes ) \begin{itemize*}
\item flexible Nutzung problemgerechterHW-Abstraktionen ( readymade Lib. OS) \item hochperformante Hardwarebenutzung durch spez. Anwendungen
\item keine Isolation von Anwendungen ( $\rightarrow$ Parallelisierbarkeit: teuer und mit schwachen Garantien; $\rightarrow$ Robustheit und Sicherheit der Anwendungen: nicht umsetzbar) \item funktional kleiner Exokernel ($\rightarrow$ Sparsamkeit, Korrektheit)
\end{itemize*} \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*} \end{itemize*}