Robustheit gekürzt

This commit is contained in:
WieErWill 2022-03-22 14:54:26 +01:00
parent 1985c9d835
commit ccb8f75128
2 changed files with 37 additions and 72 deletions

Binary file not shown.

View File

@ -823,10 +823,6 @@
\item hochsicherheitskritische Systeme (Finanz, Cloud Dienste) \item hochsicherheitskritische Systeme (Finanz, Cloud Dienste)
\item hochverfügbare System (öffentliche Infrastruktur, Strom) \item hochverfügbare System (öffentliche Infrastruktur, Strom)
%\item HPC (high performance computing) %\item HPC (high performance computing)
\end{itemize*}
Allgemeine Begriffe
\begin{itemize*}
\item \textbf{Verlässlichkeit} Fähigkeit, eine Leistung zu erbringen, der man berechtigterweise vertrauen kann \item \textbf{Verlässlichkeit} Fähigkeit, eine Leistung zu erbringen, der man berechtigterweise vertrauen kann
\item Untereigenschaften \item Untereigenschaften
\begin{enumerate*} \begin{enumerate*}
@ -856,14 +852,12 @@
\end{itemize*} \end{itemize*}
\item[fehlerhafter Zustand] (error) notwendige Ursache eines Ausfalls (nicht jeder error muss zu failure führen) \item[fehlerhafter Zustand] (error) notwendige Ursache eines Ausfalls (nicht jeder error muss zu failure führen)
\begin{itemize*} \begin{itemize*}
\item Maskierung, Redundanz \item Maskierung, Redundanz, Isolation von Subsystemen
\item Isolation von Subsystemen
\item[$\rightarrow$] Isolationsmechanismen \item[$\rightarrow$] Isolationsmechanismen
\end{itemize*} \end{itemize*}
\item[Fehler] (fault) Ursache für fehlerhaften Systemzustand (error)%, z.B. Programmierfehler \item[Fehler] (fault) Ursache für fehlerhaften Systemzustand (error)%, z.B. Programmierfehler
\begin{itemize*} \begin{itemize*}
\item Ausfallverhalten spezifizieren \item Ausfallverhalten spezifizieren, zur Laufzeit erkennen und Folgen beheben%, abschwächen...
\item Ausfälle zur Laufzeit erkennen und Folgen beheben%, abschwächen...
\item[$\rightarrow$] Micro-Reboots \item[$\rightarrow$] Micro-Reboots
\end{itemize*} \end{itemize*}
\end{description*} \end{description*}
@ -871,7 +865,7 @@
\subsection{Fehlerhafter Zustand} \subsection{Fehlerhafter Zustand}
%interner und externer Zustand (internal \& external state) %interner und externer Zustand (internal \& external state)
\begin{description*} \begin{description*}
\item[externer Zustand] der Teil des Gesamtzustands, der an externer Schnittstelle sichtbar wird \item[externer Zustand] Teil des Gesamtzustands, an externer Schnittstelle sichtbar
\item[interner Zustand] restlicher Teilzustand \item[interner Zustand] restlicher Teilzustand
\item[erbrachte Leistung] zeitliche Folge externer Zustände \item[erbrachte Leistung] zeitliche Folge externer Zustände
\end{description*} \end{description*}
@ -962,22 +956,18 @@
\item[\cmark] nichtvertrauenswürdiger Code kann keine beliebigen physischen Adressen schreiben \item[\cmark] nichtvertrauenswürdiger Code kann keine beliebigen physischen Adressen schreiben
\item[\cmark] Kommunikation zwischen nvw. Code muss durch IPC-Mechanismen explizit hergestellt werden $\rightarrow$ Überwachung und Validierung zur Laufzeit möglich \item[\cmark] Kommunikation zwischen nvw. Code muss durch IPC-Mechanismen explizit hergestellt werden $\rightarrow$ Überwachung und Validierung zur Laufzeit möglich
\item[\cmark] Kontrollfluss begrenzen: Funktionsaufrufe können i.A. keine AR-Grenzen überschreiten \item[\cmark] Kontrollfluss begrenzen: Funktionsaufrufe können i.A. keine AR-Grenzen überschreiten
\begin{itemize*} %\begin{itemize*}
\item[$\rightarrow$] BS-Zugriffssteuerung kann nicht durch Taskfehler ausgehebelt werden %\item[$\rightarrow$] BS-Zugriffssteuerung kann nicht durch Taskfehler ausgehebelt werden
\item[$\rightarrow$] unabsichtliche Terminierungsfehler(unendliche Rekursion) erschwert ... %\item[$\rightarrow$] unabsichtliche Terminierungsfehlererschwert ...%(unendliche Rekursion)
\end{itemize*} %\end{itemize*}
\item keine Isolation zwischen Fehlern innerhalb des Kernels \item keine Isolation zwischen Fehlern innerhalb des Kernels
\end{itemize*} \end{itemize*}
\subsection{Mikrokernelarchitektur} \subsection{Mikrokernelarchitektur}
Fortschritt ggü. Makrokernel
\begin{itemize*} \begin{itemize*}
\item Strukturierungskonzept
\begin{itemize*}
\item strenger durchgesetzt durch konsequente Isolation voneinander unabhängiger Kernel-Subsysteme \item strenger durchgesetzt durch konsequente Isolation voneinander unabhängiger Kernel-Subsysteme
\item zur Laufzeit durchgesetzt $\rightarrow$ Reaktion auf fehlerhafte Zustände möglich! \item zur Laufzeit durchgesetzt $\rightarrow$ Reaktion auf fehlerhafte Zustände möglich
\end{itemize*} \item zusätzlich zu vertikaler Strukturierung: horizontal
\item zusätzlich zu vertikaler Strukturierung des Kernels: horizontale Strukturierung eingeführt
\begin{itemize*} \begin{itemize*}
\item[$\rightarrow$] funktionale Einheiten: vertikal (Schichten) \item[$\rightarrow$] funktionale Einheiten: vertikal (Schichten)
\item[$\rightarrow$] isolierte Einheiten: horizontal (private vAR) \item[$\rightarrow$] isolierte Einheiten: horizontal (private vAR)
@ -990,9 +980,8 @@
\subsubsection{Modularer Makrokernel vs. Mikrokernel} \subsubsection{Modularer Makrokernel vs. Mikrokernel}
\begin{itemize*} \begin{itemize*}
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-modularer-makrokernel.png}
\item minimale Kernelfunktionalität \item minimale Kernelfunktionalität
\item keine Dienste, nur allgemeine Schnittstellenfür diese \item keine Dienste, nur allgemeine Schnittstellen für diese
\item keine Strategien, nur grundlegende Mechanismen zur Ressourcenverwaltung \item keine Strategien, nur grundlegende Mechanismen zur Ressourcenverwaltung
\item neues Problem: minimales Mikrokerneldesign \item neues Problem: minimales Mikrokerneldesign
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-modularer-makrokernel-2.png} %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-modularer-makrokernel-2.png}
@ -1000,20 +989,18 @@
\paragraph{Robustheit von Mikrokernen} \paragraph{Robustheit von Mikrokernen}
\begin{itemize*} \begin{itemize*}
\item = Gewinn durch Adressraumisolation innerhalb des Kernels \item[=] Gewinn durch Adressraumisolation innerhalb des Kernels
\item[\cmark] kein nichtvertrauenswürdiger Code im Kernelspace, der dort beliebige physische Adressen manipulieren kann \item[\cmark] kein nichtvertrauenswürdiger Code im Kernelspace, der dort beliebige physische Adressen manipulieren kann
\item[\cmark] Kommunikation zwischen nvw. Code (nicht zur zwischen Anwendungstasks)muss durch IPC explizit hergestellt werden $\rightarrow$ Überwachung und Validierung zur Laufzeit \item[\cmark] Kommunikation zwischen nvw. Code muss durch IPC explizit hergestellt werden $\rightarrow$ Überwachung und Validierung zur Laufzeit
\item[\cmark] Kontrollfluss begrenzen: Zugriffssteuerung auch zwischen Serverprozessen, zur Laufzeit unabhängiges Teilmanagement von Code (Kernelcode) möglich (z.B.: Nichtterminierung erkennen) \item[\cmark] Kontrollfluss begrenzen: Zugriffssteuerung auch zwischen Serverprozessen, zur Laufzeit unabhängiges Teilmanagement von Code möglich %(z.B.: Nichtterminierung erkennen)
\item Neu: \item Neu:
\item[\cmark] nvw. BS-Code muss nicht mehr im Kernelspace laufen \item[\cmark] nvw. BS-Code muss nicht mehr im Kernelspace laufen
\item[\cmark] verbleibender Kernel: klein, funktional weniger komplex, leichter zu entwickeln, zu testen, evtl. formal zu verifizieren \item[\cmark] Kernel: klein, funktional weniger komplex, leichter zu entwickeln, zu testen, evtl. formal zu verifizieren
\item[\cmark] daneben: Adaptivität durch konsequentere Modularisierung des Kernels gesteigert \item[\cmark] Adaptivität durch konsequentere Modularisierung des Kernels
\end{itemize*} \end{itemize*}
\subsubsection{Mikrokernel: Mach} \subsubsection{Mikrokernel: Mach}
\begin{itemize*} \begin{itemize*}
\item 1975: Aleph (BS des ,,Rochester Intelligent Gateway'')
\item 1979/81: Accent (verteiltes BS), CMU
\item Mach 3.0 (1989): einer der ersten praktisch nutzbaren $\mu$Kerne \item Mach 3.0 (1989): einer der ersten praktisch nutzbaren $\mu$Kerne
\item Ziel: API-Emulation ($\not=$ Virtualisierung) von UNIX und -Derivaten auf unterschiedlichen Prozessorarchitekturen \item Ziel: API-Emulation ($\not=$ Virtualisierung) von UNIX und -Derivaten auf unterschiedlichen Prozessorarchitekturen
\item mehrere unterschiedliche Emulatoren gleichzeitig lauffähig \item mehrere unterschiedliche Emulatoren gleichzeitig lauffähig
@ -1035,40 +1022,24 @@
\begin{enumerate*} \begin{enumerate*}
\item Prozesse, Threads, Speicherobjekte \item Prozesse, Threads, Speicherobjekte
\item Ports (generisches, ortstransparentes Adressierungskonzept) \item Ports (generisches, ortstransparentes Adressierungskonzept)
\item Botschaften, ... (sekundäre, von den obigen genutzte Abstraktionen) \item Botschaften, ... (sekundäre, von obigen genutzte Abstraktionen)
\end{enumerate*} \end{enumerate*}
Architektur Architektur: Bewertung aus heutiger Sicht
\begin{itemize*}
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-mach-architektur.png}
\item Systemaufrufkosten:
\begin{itemize*}
\item IPC-Benchmark (1995): i486 Prozessor, 50 MHz
\item Messung mit verschiedenen Botschaftenlängen( x - Werte)
\item ohne Nutzdaten (0 Byte Botschaftenlänge): 115 $\mu$s (Tendenz unfreundlich ...)
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-mach-systemaufruf.png}
\end{itemize*}
\item Bewertung aus heutiger Sicht:
\begin{itemize*} \begin{itemize*}
\item funktional komplex \item funktional komplex
\item 153 Systemaufrufe \item 153 Systemaufrufe
\item mehrere Schnittstellen, parallele Implementierungen für eine Funktion \item mehrere Schnittstellen, parallele Implementierungen für eine Funktion
\item[$\rightarrow$] Adaptivität (Auswahl durch Programmierer) \item[$\rightarrow$] Adaptivität (Auswahl durch Programmierer)
\end{itemize*} \end{itemize*}
\item Fazit:
\begin{itemize*}
\item zukunftsweisender Ansatz
\item langsame und ineffiziente Implementierung
\end{itemize*}
\end{itemize*}
Lessons Learned Lessons Learned
\begin{itemize*} \begin{itemize*}
\item Umsetzung: Designkriterien weitgehend unbekannt \item Umsetzung: Designkriterien weitgehend unbekannt
\item Folgen für Performanz und Programmierkomfort: [Heis19] \item Folgen für Performanz und Programmierkomfort
\item[\xmark] ,,complex'', ,,inflexible'', ,,slow'' \item[\xmark] ,,complex'', ,,inflexible'', ,,slow''
\item wissen etwas über Kosten: IPC-Performanz, Kernelabstraktionen \item wissen etwas über Kosten: IPC-Performanz, Kernelabstraktionen
\item wissen nichts über guten $\mu$Kern-Funktionsumfang und gute Schnittstellen \item wissen nichts über guten $\mu$Kern-Funktionsumfang und Schnittstellen
\end{itemize*} \end{itemize*}
\subsubsection{L4} \subsubsection{L4}
@ -1097,7 +1068,6 @@
\subsubsection{Mikrokernel - Designprinzipien} \subsubsection{Mikrokernel - Designprinzipien}
\begin{itemize*} \begin{itemize*}
\item Was gehört in einen Mikrokern?
\item Konzeptsicht $\rightarrow$ Funktionalität \item Konzeptsicht $\rightarrow$ Funktionalität
\item Implementierungssicht $\rightarrow$ Performanz \item Implementierungssicht $\rightarrow$ Performanz
\item[$\rightarrow$] 1. Generation: durch Performanzentscheidungen aufgeweicht \item[$\rightarrow$] 1. Generation: durch Performanzentscheidungen aufgeweicht
@ -1106,11 +1076,10 @@
Designprinzipien für Mikrokernel-Konzept Designprinzipien für Mikrokernel-Konzept
\begin{enumerate*} \begin{enumerate*}
\item System interaktive und nicht vollständig vertrauenswürdige Applikationen unterstützen ( $\rightarrow$ HW-Schutz,-Multiplexing), \item System interaktive und nicht vollständig vertrauenswürdige Applikationen unterstützen ($\rightarrow$ HW-Schutz,-Multiplexing)
\item Hardware mit virtueller Speicherverwaltung und Paging \item Hardware mit virtueller Speicherverwaltung und Paging
\end{enumerate*} \end{enumerate*}
Designprinzipien
\begin{description*} \begin{description*}
\item[Autonomie] Subsystem muss so implementiert werden, dass es von keinem anderen Subsystem gestört oder korrumpiert werden kann \item[Autonomie] Subsystem muss so implementiert werden, dass es von keinem anderen Subsystem gestört oder korrumpiert werden kann
\item[Integrität] Subsystem $S_1$ muss sich auf Garantien von $S_2$ verlassen können. D.h. beide Subsysteme müssen miteinander kommunizieren können, ohne dass ein drittes Subsystem diese Kommunikation stören, fälschen oder abhören kann. \item[Integrität] Subsystem $S_1$ muss sich auf Garantien von $S_2$ verlassen können. D.h. beide Subsysteme müssen miteinander kommunizieren können, ohne dass ein drittes Subsystem diese Kommunikation stören, fälschen oder abhören kann.
@ -1118,9 +1087,9 @@
L4: Speicherabstraktion L4: Speicherabstraktion
\begin{itemize*} \begin{itemize*}
\item Adressraum: Abbildung, die jede virtuelle Seite auf einen physischen Seitenrahmen abbildet oder als ,,nicht zugreifbar'' markiert \item Adressraum: Abbildung, die jede virtuelle Seite auf einen physischen Seitenrahmen abbildet oder ,,nicht zugreifbar'' markiert
\item Implementierung über Seitentabellen, unterstützt durch MMU-Hardware \item Implementierung über Seitentabellen, unterstützt durch MMU
\item Aufgabe des Mikrokernels (Schicht aller Subsysteme): muss Hardware-Konzept des Adressraums verbergen und durch eigenes Adressraum-Konzept überlagern \item Aufgabe des Mikrokernels: muss Hardware-Konzept des Adressraums verbergen und durch eigenes Adressraum-Konzept überlagern
\item Mikrokernel-Konzept des Adressraums: \item Mikrokernel-Konzept des Adressraums:
\begin{itemize*} \begin{itemize*}
\item muss Implementierung von beliebigen virtuellen Speicherverwaltungs-und -schutzkonzepten oberhalb des Mikrokernels (d.h. in den Subsystemen) erlauben \item muss Implementierung von beliebigen virtuellen Speicherverwaltungs-und -schutzkonzepten oberhalb des Mikrokernels (d.h. in den Subsystemen) erlauben
@ -1186,7 +1155,7 @@
\begin{itemize*} \begin{itemize*}
\item müssen vertrauenswürdig vergeben und verwaltet werden \item müssen vertrauenswürdig vergeben und verwaltet werden
\item[$\rightarrow$] essenziell für (sinnvolles) Multitasking und -threading \item[$\rightarrow$] essenziell für (sinnvolles) Multitasking und -threading
\item[$\rightarrow$] essenziell für vertrauenswürdige Kernel-/Server-Schnittstellen \item[$\rightarrow$] essenziell für vertrauensw. Kernel-/Server-Schnittstellen
\end{itemize*} \end{itemize*}
\item Designentscheidung \item Designentscheidung
\begin{itemize*} \begin{itemize*}
@ -1214,16 +1183,16 @@
\item Konsequenzen für Mikrokernel-Implementierung \item Konsequenzen für Mikrokernel-Implementierung
\begin{itemize*} \begin{itemize*}
\item müssen für jeden Prozessortyp neu implementiert werden \item müssen für jeden Prozessortyp neu implementiert werden
\item deshalb prinzipiell nicht portierbar $\rightarrow$ L3-/L4-Prototypen: 99\% Assemblercode \item deshalb prinzipiell nicht portierbar %$\rightarrow$ L3-/L4-Prototypen: 99\% Assemblercode
\end{itemize*} \end{itemize*}
\item innerhalb eines Mikrokernels sind von Prozessorhardware abhängig \item innerhalb eines Mikrokernels von Prozessorhardware abhängig
\begin{enumerate*} \begin{enumerate*}
\item grundlegende Implementierungsentscheidungen \item grundlegende Implementierungsentscheidungen
\item meiste Algorithmen u. Datenstrukturen \item meiste Algorithmen u. Datenstrukturen
\end{enumerate*} \end{enumerate*}
\item Fazit: Mikrokernel mit akzeptabler Performanz hardwarespezifische Implementierung minimal erforderlicher vom Prozessortyp unabhängiger Abstraktionen %\item Mikrokernel mit akzeptabler Performanz hardwarespezifische Implementierung minimal erforderlicher vom Prozessortyp unabhängiger Abstraktionen
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-l4-ipc-performance.png} %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-l4-ipc-performance.png}
\item L4 heute: Spezifikation Mikrokernels (nicht Implementierung) %\item L4 heute: Spezifikation Mikrokernels (nicht Implementierung)
\end{enumerate*} \end{enumerate*}
%Einige Weiterentwicklungen: %Einige Weiterentwicklungen:
@ -1261,12 +1230,8 @@
\item[$\rightarrow$] BS-Code in Serverprozessen: verbleibendes Risiko unabhängiger Teilausfälle von BS-Funktionalität \item[$\rightarrow$] BS-Code in Serverprozessen: verbleibendes Risiko unabhängiger Teilausfälle von BS-Funktionalität
\item Ergänzung zu Isolationsmechanismen notwendig \item Ergänzung zu Isolationsmechanismen notwendig
\item Mechanismen zur Behandlung von Subsystem-Ausfällen \item Mechanismen zur Behandlung von Subsystem-Ausfällen
\item[=] Mechanismen zur Behandlung Anwendungs-, Server- und Gerätetreiberfehlen %\item[=] Mechanismen zur Behandlung Anwendungs-, Server- und Gerätetreiberfehlen
\item[$\rightarrow$] Micro-Reboots \item[$\rightarrow$] Micro-Reboots
\end{itemize*}
Ansatz
\begin{itemize*}
\item kleinen (als fehlerfrei angenommenen) $\mu$Kernel \item kleinen (als fehlerfrei angenommenen) $\mu$Kernel
\item BS-Funktionalität in bedingt vertrauenswürdigen Serverprozessen %(kontrollierbare, aber wesentlich größere Codebasis) \item BS-Funktionalität in bedingt vertrauenswürdigen Serverprozessen %(kontrollierbare, aber wesentlich größere Codebasis)
\item Treiber/Anwendungen in nicht vertrauenswürdigen Prozessen %(nicht kontrollierbare Codebasis) \item Treiber/Anwendungen in nicht vertrauenswürdigen Prozessen %(nicht kontrollierbare Codebasis)
@ -1295,18 +1260,18 @@
\begin{itemize*} \begin{itemize*}
\item Ziel: robustes Betriebssystems \item Ziel: robustes Betriebssystems
\item[$\rightarrow$] Schutz gegen Sichtbarwerden von Fehlern(= Ausfälle) für Nutzer \item[$\rightarrow$] Schutz gegen Sichtbarwerden von Fehlern(= Ausfälle) für Nutzer
\item Fokus auf Anwendungsdomänen: Einzelplatzrechner und eingebettete Systeme \item Fokus auf Anwendungsdomänen: Einzelplatzrechner, Embedded
\item Anliegen: Robustheit \textgreater{} Verständlichkeit \textgreater{} geringer HW-Bedarf \item Anliegen: Robustheit \textgreater{} Verständlichkeit \textgreater{} geringer HW-Bedarf
\end{itemize*} \end{itemize*}
Architektur Architektur
\begin{itemize*} \begin{itemize*}
\item \includegraphics[width=.8\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur.png} \item \includegraphics[width=.7\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur.png}
\item Anwendungen (weiß): Systemaufrufe im POSIX-Standard \item Anwendungen (weiß): Systemaufrufe im POSIX-Standard
\item Serverprozesse (grau): IPC (botschaftenbasiert), mit Kernel: spezielle MINIX-API (kernel calls), für Anwendungsprozesse gesperrt \item Serverprozesse (grau): IPC (botschaftenbasiert), mit Kernel: spezielle MINIX-API (kernel calls), für Anwendungsprozesse gesperrt
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur-bs.png} %\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-minix-architektur-bs.png}
\item Betriebssystem-Serverprozesse: Dateisystem (FS), Prozessmanagement (PM), Netzwerkmanagement (Net) \item Betriebssystem-Serverprozesse: Dateisystem (FS), Prozessmanagement (PM), Netzwerkmanagement (Net)
\item Reincarnation Server (RS) $\rightarrow$ Micro-Reboots jeglicher Serverprozesse \item Reincarnation Server (RS) $\rightarrow$ Micro-Reboots der Serverprozesse
\item Kernelprozesse: systemtask, clocktask \item Kernelprozesse: systemtask, clocktask
\end{itemize*} \end{itemize*}
@ -1326,7 +1291,7 @@
\begin{itemize*} \begin{itemize*}
\item komplementäre NFE zu Robustheit: Verfügbarkeit ( availability ) \item komplementäre NFE zu Robustheit: Verfügbarkeit ( availability )
\item Verbesserung von Robustheit $\rightarrow$ Verbesserung von Verfügbarkeit \item Verbesserung von Robustheit $\rightarrow$ Verbesserung von Verfügbarkeit
\item Robustheitsmaßnahmen hinreichend , nicht notwendig %(hochverfügbare Systeme können sehr wohl von Ausfällen betroffen sein...) \item Robustheitsmaßnahmen hinreichend, nicht notwendig %(hochverfügbare Systeme können sehr wohl von Ausfällen betroffen sein...)
\item weitere komplementäre NFE: Robustheit $\rightarrow$ Sicherheit (security) \item weitere komplementäre NFE: Robustheit $\rightarrow$ Sicherheit (security)
\item Definition: Grad, zu welchem ein System oder eine Komponente funktionsfähig und zugänglich (erreichbar) ist, wann immer seine Nutzung erforderlich ist (IEEE) \item Definition: Grad, zu welchem ein System oder eine Komponente funktionsfähig und zugänglich (erreichbar) ist, wann immer seine Nutzung erforderlich ist (IEEE)
\item Anteil an Laufzeit eines Systems, in dem dieses seine spezifizierte Leistung erbringt \item Anteil an Laufzeit eines Systems, in dem dieses seine spezifizierte Leistung erbringt
@ -1354,10 +1319,10 @@
\item primäres Einsatzfeld: eingebettete Systeme, z.B. Automobilbau \item primäres Einsatzfeld: eingebettete Systeme, z.B. Automobilbau
\item Mikrokernarchitektur mit Adressraumisolation für Gerätetreiber \item Mikrokernarchitektur mit Adressraumisolation für Gerätetreiber
\item (begrenzt) dynamische Micro-Rebootsmöglich \item (begrenzt) dynamische Micro-Rebootsmöglich
\item $\rightarrow$ Maximierung der Uptime des Gesamtsystems \item[$\rightarrow$] Maximierung der Uptime des Gesamtsystems
\end{itemize*} \end{itemize*}
\begin{description*} \begin{description*}
\item[High-Avalability-Manager] Laufzeit-Monitor der Systemdienste/Anwendungsprozesse überwacht und neustartet $\rightarrow$ $\mu$Reboot-Server \item[High-Avalability-Manager] Laufzeit-Monitor der Systemdienste/ Anwendungsprozesse überwacht und neustartet $\rightarrow$ $\mu$Reboot-Server
\item[High-Availability-Client-Libraries] Funktionen zur transparenten automatischen Reboot für ausgefallene Server-Verbindungen \item[High-Availability-Client-Libraries] Funktionen zur transparenten automatischen Reboot für ausgefallene Server-Verbindungen
\end{description*} \end{description*}