Advanced Operating Systems - tu-ilmenau.de · § externer Zustand (einer Systems oder Subsystems):...

73
- Peter Amthor Fak. IA / FG VSBS Technische Universität Ilmenau www.tu-ilmenau.de/vsbs Advanced Operating Systems Kapitel 3: Robustheit und Verfügbarkeit Peter Amthor Wintersemester 2018/19

Transcript of Advanced Operating Systems - tu-ilmenau.de · § externer Zustand (einer Systems oder Subsystems):...

  • -

    Peter Amthor Fak. IA / FG VSBS Technische Universität Ilmenau www.tu-ilmenau.de/vsbs

    Advanced Operating Systems

    Kapitel 3: Robustheit und Verfügbarkeit

    Peter Amthor Wintersemester 2018/19

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–2

    2nd Winter School on Operating Systems (Firmen vor Ort, Verbindung von Theorie und Praxis!)

    24.02.-01.03.2019, Web: WSOS 2019

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–3

    3.1 Motivation

    ■  allgemein: verlässlichkeitskritische Anwendungsszenarien ◆  Forschung in garstiger Umwelt ◆  Weltraumerkundung ◆  hochsicherheitskritische Systeme:

    •  Rechenzentren von Finanzdienstleistern •  Rechenzentren von Cloud-Dienstleistern

    ◆  hochverfügbare System: •  all das bereits genannte •  öffentliche Infrastruktur (Strom, Fernwärme, ...)

    ◆  HPC (high performance computing)

    Deep Space 1 (NASA, seit 1998): „Debugging a program running on a $100M piece of hardware that is 100 million miles away is an interesting experience.“ [Garret02]

    3.1 Motivation

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–4

    Warum Betriebssysteme verlässlich sein sollten ...

    ... nach Andrew Tanenbaum:

    https://www.youtube.com/watch?v=bx3KuE7UjGA&t=4m16s

    3.1 Motivation

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–5

    ■  Verlässlichkeit (dependability) ◆  übergeordnete Eigenschaft eines Systems [Laprie+04b] ◆  Fähigkeit, eine Leistung zu erbringen, der man berechtigterweise vertrauen

    kann

    Taxonomie: umfasst entsprechend Definition die Untereigenschaften

    1.  Verfügbarkeit (availability) 2.  Robustheit (robustness, reliability) 3.  Sicherheit im Sinne von safety (safety) 4.  Vertraulichkeit (confidentiality) 5.  Integrität (integrity) 6.  Wartbarkeit (maintainability)

    Ø  nicht für alle Anwendungen sind alle Untereigenschaften erforderlich

    auch Untereigenschaften

    von IT-Sicherheit

    (vgl.: evolutionäre Eigenschaften)

    3.2 Allgemeine Begriffe

    3.2 Allgemeine Begriffe

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–6

    ■  Teil der primären Untereigenschaften von Verlässlichkeit:

    ■  Robustheit: Zuverlässigkeit unter Anwesenheit externer Ausfälle

    ■  im Folgenden: kurze Systematik der Ausfälle...

    1.  Verfügbarkeit (availability) 2.  Robustheit (robustness, reliability) 3.  Sicherheit im Sinne von safety (safety) 4.  Vertraulichkeit (confidentiality) 5.  Integrität (integrity) 6.  Wartbarkeit (maintainability)

    Robustheitsbegriff

    3.2 Allgemeine Begriffe

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–7

    ■  Fehler à fehlerhafter Zustand à Ausfall ◆  grundlegende Definitionen dieser Begriffe (ausführlich: [Laprie+04a], [Laprie+04b]):

    §  Ausfall (failure): liegt vor, wenn tatsächliche Leistung(en), die ein System erbringt, von als korrekt spezifizierter Leistung abweichen

    §  fehlerhafter Zustand (error): notwendige Ursache eines Ausfalls (nicht jeder error muss zu failure führen)

    §  Fehler (fault): Ursache für fehlerhaften Systemzustand (error), z.B. Programmierfehler

    Fehler und Ausfälle ...

    3.2 Allgemeine Begriffe

    fault error failure Aktivierung (activation)

    Ausbreitung (propagation)

    Fehler fehlerhafter Zustand Ausfall

    ✗ ✗

    sekundäre Ausfälle

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–8

    ■  Umgang mit ... ◆  faults:

    •  Korrektheit testen •  Korrektheit beweisen (à formale Verifikation)

    ◆  errors: •  Isolation von Subsystemen

    à Abschnitt 3.3: Isolationsmechanismen ◆  failures:

    •  Ausfallverhalten (neben korrektem Verhalten) spezifizieren •  Ausfälle zur Laufzeit erkennen und Folgen beheben, abschwächen...

    à Abschnitt 3.5: Micro-Reboots

    ... und ihre Vermeidung

    3.2 Allgemeine Begriffe

    fault error failure

    Aktivierung (activation)

    Ausbreitung (propagation)

    Fehler fehlerhafter Zustand Ausfall

    ✗ ✗

    sekundäre Ausfälle

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–9

    ■  interner und externer Zustand (internal & external state) §  externer Zustand (einer Systems oder Subsystems):

    der Teil des Gesamtzustands, der an externer Schnittstelle (also für das umgebende (Sub-) System) sichtbar wird

    §  interner Zustand: restlicher Teilzustand §  (tatsächlich) erbrachte Leistung: zeitliche Folge externer Zustände

    ■  Beispiele für das System (Betriebssystem-) Kernel: ◆  Subsysteme: Dateisystem, Scheduler, E/A, IPC, ..., Gerätetreiber ◆  fault: Programmierfehler im Gerätetreiber ◆  externer Zustand des Treibers (oder des Dateisystems, Schedulers, E/A, IPC, ...)

    ⊂ interner Zustand des Kernels

    Fehlerhafter Zustand

    Kernel

    IPC FS Treiber IPC IPC ...

    3.2 Allgemeine Begriffe

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–10

    à Robustheit: Isolationsmechanismen

    externer Ausfall (aus Sicht des FS)

    Fehlerausbreitung und (externer) Ausfall

    ■  Wirkungskette: Treiber-Programmierfehler (fault)

    Kernel

    IPC FS Treiber ✗ ✗ ✗

    3.2 Allgemeine Begriffe

    Ausbreitung dieses Fehlers (failure des Treibers) = fehlerhafter externer Zustand des Treibers = fehlerhafter interner Zustand des Kernels (error) = Kernelausfall! (failure)

    ✗ fehlerhafter interner Zustand des Treibers (error)

    ✗ Auswirkung: fehlerhafter interner Zustand eines weiteren Kernel-Subsystems (z.B. error des Dateisystems)

    IPC IPC ...

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–11

    3.3 Isolationsmechanismen (Teil I)

    ■  im Folgenden: Isolationsmechanismen für robuste Betriebssysteme ◆  durch strukturierte Programmierung (3.3.1) ◆  durch Adressraumisolation (3.3.2)

    ■  es gibt noch mehr: Isolationsmechanismen für sichere Betriebssysteme ◆  all die obigen... ◆  durch kryptografische Hardwareunterstützung: Enclaves (Kap. 4) ◆  durch streng typisierte Sprachen und managed code (Kap. 4) ◆  durch isolierte Laufzeitumgebungen: Virtualisierung (Kap. 6) (à Teil II)

    3.3 Isolationsmechanismen

    fault error

    Aktivierung (activation)

    Ausbreitung (propagation)

    Fehler fehlerhafter Zustand Ausfall

    ✗ ✗

    failure

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–12

    3.3.1 Strukturierte Programmierung

    3.3.1 Strukturierte Programmierung

    Monolithisches Betriebssystem

    ■  Anwendungen ■  Kernel

    ◆  gesamte BS-Funktionalität ◆  programmiert als

    Sammlung von Prozeduren ◆  jede darf jede davon

    aufrufen ◆  keine Modularisierung ◆  keine definierten internen

    Schnittstellen

    (Abb.: [Preikschat97], S. 3)

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–13

    Monolithisches Prinzip

    ■  Ziel: Isolation zwischen Anwendungen und Betriebssystem ■  Mechanismus: Prozessor-Privilegierungsebenen (user mode und

    kernel mode) ■  Konsequenz für Strukturierung des Kernels:

    Es gibt keine Strukturierung des Kernels ...

    ■  ... jedenfalls fast: Ablauf eines Systemaufrufs (Erinnerung)

    3.3.1 Strukturierte Programmierung

    Kernel-code

    App

    main

    user mode

    kernel mode syscall handler utility

    trap

    dispatching

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–14

    Strukturierte Makrokernarchitektur

    ■  Resultat: schwach strukturierter (monolithischer) Makrokernel

    3.3.1 Strukturierte Programmierung

    main-Prozedur

    handler-Prozeduren

    utility-Prozeduren

    (Abb. nach [Tanenbaum06], S. 45)

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–15

    Strukturierte Makrokernarchitektur

    ■  Resultat: schwach strukturierter (monolithischer) Makrokernel

    3.3.1 Strukturierte Programmierung

    main-Prozedur fixer Einstiegspunkt für sämtliche Anwendungs-Kernel-Kommunikation

    handler-Prozeduren Implementierung des jeweiligen BS-Dienstes für jeden Systemaufruf

    utility-Prozeduren Implementierung von BS-Hintergrunddiensten, die von Systemaufrufimplementierung genutzt werden (z.B. Speicheradressen lesen/schreiben)

    (Abb. nach [Tanenbaum06], S. 45)

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–16

    Modularer Makrokernarchitektur

    ■  Weiterentwicklung: ◆  Schichtendifferenzierung (layered operating system) ◆  Modularisierung (Bsp.: Linux-Kernel)

    3.3.1 Strukturierte Programmierung

    VFS

    IPC, Dateisystem

    Scheduler, VMM

    Dispatcher, Gerätetreiber

    Kernelcode

    ■  Modularer Makrokernel: ◆  alle Kernelfunktionen in Module unterteilt (z.B. verschiedene Dateisysteme)

    à Erweiterbarkeit, Wartbarkeit, Portierbarkeit ◆  klar definierte Modulschnittstellen (z.B. virtual file system, VFS) ◆  live updates: Module zur Kernellaufzeit dynamisch einbindbar (à Adaptivität)

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–17

    Fehlerausbreitung beim Makrokernel

    3.3.1 Strukturierte Programmierung

    ■  strukturierte Programmierung: ✓ Wartbarkeit ✓ Portierbarkeit ✓ Erweiterbarkeit O (begrenzt) Adaptivität O (begrenzt) Schutz gegen statische Programmierfehler: nur durch Compiler

    (z.B. C private, public) ✗ kein Schutz gegen dynamische Fehler à Robustheit...?

    ■  nächstes Ziel: Schutz gegen Laufzeitfehler ...

    à Laufzeitmechanismen

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–18

    3.3.2 Adressraumisolation

    ■  zur Erinnerung: private virtuelle Adressräume zweier Tasks (i ≠ j)

    3.3.2 Adressraumisolation

    pAR

    Kernel

    vAR (Taskj ) vAR (Taski )

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–19

    Adressraumisolation

    ■  private virtuelle vs. physischer Adresse

    3.3.2 Adressraumisolation

    pAR

    Kernel

    vAR (Taskj ) vAR (Taski )

    int *x = (int *)0x2800f2;*x = 42;

    int *y = (int *)0x2800f2;*y = 9 * 6;

    54 42

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–20

    Private virtuelle Adressräume und Fehlerausbreitung

    ■  korrekte private vAR ~ kollisionsfreie Seitenabbildung! ■  Magie in Hardware: MMU (BS steuert und verwaltet...) Robustheit: Was haben wir von privaten vAR?

    ✓  nichtvertrauenswürdiger (i.S.v. potenziell nicht korrekter) Code kann keine beliebigen physischen Adressen schreiben (er erreicht sie ja nicht mal...)

    ✓  Kommunikation zwischen nvw. Code (z.B. Anwendungstasks) muss durch IPC-Mech. explizit hergestellt werden (u.U. auch shared memory) à Überwachung und Validierung zur Laufzeit möglich

    ✓  Kontrollfluss begrenzen: Funktionsaufrufe können i.A. (Ausnahme: RPC) keine AR-Grenzen überschreiten à BS-Zugriffssteuerung kann nicht durch Taskfehler ausgehebelt

    werden (vgl. Kap. 4) à unabsichtliche Terminierungsfehler (unendliche Rekursion)

    erschwert .... 3.3.2 Adressraumisolation

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–21

    Was das für den Kernel bedeutet

    ■  private virtuelle Adressräume ◆  gibt es schon so lange wie VMM ◆  gab es lange nur auf Anwendungsebene ◆  à keine Isolation zwischen Fehlern innerhalb des Kernels!

    ■  nächstes Ziel: Schutz gegen Kernelfehler (Gerätetreiber!) ... à BS-Architektur

    Kernel

    3.3.2 Adressraumisolation

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–22

    3.4 Mikrokernelarchitektur

    ■  Fortschritt ggü. Makrokernel: ◆  Strukturierungskonzept:

    strenger durchgesetzt durch konsequente Zerlegung in voneinander unabhängige Teilsysteme

    ◆  zusätzlich zu vertikaler Strukturierung des Kernels: senkrechte Strukturierung eingeführt à funktionale Einheiten: senkrecht (Schichten) à isolierte Einheiten: waagerecht (private vAR)

    ■  Idee: ◆  Kernel (alle BS-Funktionalität) à µKernel (minimale BS-Funktionalität) ◆  Rest (insbes. Treiber): „gewöhnliche“ Anwendungsprozesse mit

    Adressraumisolation ◆  Kommunikation: botschaftenbasierte IPC (auch client-server operating

    system) ◆  Nomenklatur: Mikrokernel und Serverprozesse

    3.4 Mikrokernelarchitektur

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–23

    Modularer Makrokernel vs. Mikrokernel

    3.4 Mikrokernelarchitektur

    VFS

    IPC, Dateisystem

    Scheduler, VMM

    Dispatcher, Gerätetreiber

    ■  minimale Kernelfunktionalität: ◆  keine Dienste, nur allgemeine Schnittstellen ◆  keine Strategien, nur Mechanismen

    ■  neues Problem: Mikrokerneldesign ◆  „Wir haben 100 Leute gefragt...“: Wie entscheide ich das??? (3.4.2)

    IPC, VMM

    App App

    Dateisystem-Server

    Treiber1

    Scheduler-Server

    Treiber2 Treiber3

    ...

    user mode

    kernel mode

    (Abb. nach [Heiser14])

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–24

    Modularer Makrokernel vs. Mikrokernel

    3.4 Mikrokernelarchitektur

    VFS

    IPC, Dateisystem

    Scheduler, VMM

    Dispatcher, Gerätetreiber

    ■  Ablauf eines Systemaufrufs: (vgl. F. 3-13) ◆  schwarz: unprivilegierte Instruktionen ◆  blau: privilegierte Instruktionen ◆  rot: Übergang zwischen beidem (à Kontextwechsel!)

    IPC, VMM

    App App

    Dateisystem-Server

    Treiber1

    Scheduler-Server

    Treiber2 Treiber3

    ...

    user mode

    kernel mode

    (Abb. nach [Heiser14])

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–25

    Robustheit von Mikrokernen

    ■  = Gewinn durch Adressraumisolation innerhalb des Kernels (vgl. F. 3-20): ✓  nichtvertrauenswürdiger Code im kernel mode kann keine beliebigen

    physischen Adressen schreiben ✓  Kommunikation zwischen nvw. Code (nicht zur zwischen Anwendungstasks)

    muss durch IPC explizit hergestellt werden à Überwachung und Validierung zur Laufzeit

    ✓  Kontrollfluss begrenzen: Zugriffssteuerung auch zwischen Serverprozessen, zur Laufzeit unabhängiges Teilmanagement von Code (Kernelcode) möglich (z.B.: Nichtterminierung erkennen)

    3.4 Mikrokernelarchitektur

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–26

    Robustheit von Mikrokernen

    ■  = Gewinn durch Adressraumisolation innerhalb des Kernels (vgl. F. 3-20): ✓  nichtvertrauenswürdiger Code im kernel mode kann keine beliebigen

    physischen Adressen schreiben ✓  Kommunikation zwischen nvw. Code (nicht zur zwischen Anwendungstasks)

    muss durch IPC explizit hergestellt werden à Überwachung und Validierung zur Laufzeit

    ✓  Kontrollfluss begrenzen: Zugriffssteuerung auch zwischen Serverprozessen, zur Laufzeit unabhängiges Teilmanagement von Code (Kernelcode) möglich (z.B.: Nichtterminierung erkennen)

    ■  Neu: ✓  nvw. Kernelcode muss nicht mehr im kernel mode (= höchste

    Prozessorprivilegierung) laufen ✓  verbleibender Kernel (dessen Korrektheit wir annehmen müssen): klein,

    funktional weniger komplex, leichter zu entwickeln, zu testen, evtl. formal zu verifizieren

    ✓  daneben: Adaptivität durch konsequentere Modularisierung des Kernels gesteigert

    3.4 Mikrokernelarchitektur

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–27

    3.4.1 Mach

    3.4.1 Mach

    Mikrokernel-Design: Erster Versuch

    Carnegie Mellon University (CMU), School of Computer Science 1985 – 1994

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–28

    Ein wenig Historie

    System V

    Mac OS X (Apple)

    R. Rashid

    S. Jobs

    R. Stallman

    3.4.1 Mach

    1970

    1980

    GNU Hurd (FSF)

    1990

    K. Thompson D. Ritchie

    W. Joy

    NeXTSTEP (NeXT)

    UNIX (Bell Labs)

    BSD (U Berkeley)

    Mach (CMU)

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–29

      Entwicklungshistorie ◆  entwickelt auf Grundlage älterer Systeme:

    •  1975: Aleph (BS des „Rochester Intelligent Gateway“), U Rochester

    •  1979/81: Accent (verteiltes BS), CMU

    ◆  Entwicklung stark gefördert durch DARPA (SCI) •  DARPA: Defense Advanced Research Projects Agency •  SCI: Strategic Computing Initiative

    ◆  1986: Mach 1.0 – Multiprozessor-Betriebssystem ◆  1988: Mach 2.5 – noch kein Mikro-Kern; viel BSD-UNIX-Code ◆  1989: Mach 3.0 – Mikrokernversion

    •  Grundlage für weitere Entwicklungen, insbesondere verteilte Systeme

    Entwickler: Richard Rashid

    Mach: Entstehung

    3.4.1 Mach

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–30

      Mach-Mikrokernel ◆  einer der ersten praktisch nutzbaren µKerne

    ◆  entwickelt als Basis zur Emulation (∆ zu Virtualisierung!) von UNIX und

    Derivaten u  mehrere unterschiedliche Emulatoren gleichzeitig lauffähig (s. F. 3-31)

    •  Emulation außerhalb des Kernels •  jeder Emulator:

    –  Komponente im Adressraum des Applikationsprogramms –  1 … n Server, die unabhängig von Applikationsprogramm laufen

    Mach: Ziele

    3.4.1 Mach

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–31

    ([Tanenbaum92], Abb. 15-1, S. 639)

    Emulation von UNIX-Systemen mittels Mach-Serverprozessen

    Mach-Server zur Emulation

    3.4.1 Mach

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–32

      Komponenten innerhalb des µKernels:

    1.  Prozessverwaltung 2.  Speicherverwaltung 3.  IPC- und E/A-Dienste

    einschließlich Gerätetreiber

      unterstützte Abstraktionen (à API, Systemaufrufe): 1.  Prozesse 2.  Threads 3.  Speicherobjekte 4.  Ports

    (generisches, ortstransparentes Adressierungskonzept; vgl. UNIX „everything is a file“)

    6.  Botschaften 7.  [sekundäre, von den obigen genutzte Abstraktionen]

    Mach

    3.4.1 Mach

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–33

    (Abb. nach [Heiser14])

    Mach: Architektur

    3.4.1 Mach

    µKernel

    Basis-FS

    App1 App2 App3

    Swapping

    (UNIX-Emulatoren)

    ...

    User Space

    Kernel Space Gerätetreiber

    Scheduling IPC VMM

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–34

    ■  Bewertung aus heutiger Sicht: §  funktional komplex §  153 Systemaufrufe §  mehrere Schnittstellen, parallele Implementierungen für eine Funktion

    à Adaptivität (Auswahl durch Programmierer)

    Mach: Bewertung

    3.4.1 Mach

    ■  Fazit: ◆  zukunftsweisender Ansatz ◆  langsame und ineffiziente Implementierung

    ■  Systemaufrufkosten: §  Benchmark (1995): i486

    Prozessor, 50 MHz §  Messung mit verschiedenen

    Botschaftenlängen (x-Werte) §  ohne Nutzdaten (0 Byte

    Botschaftenlänge): 115 µs (Tendenz unfreundlich ...)

    0

    100

    200

    300

    400

    500

    0 1000 2000 3000 4000

    Mach-Systemaufrufperformanz

    (nach [Heiser14])

    [B]

    [µs]

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–35

    Mach: Lessons Learned

    ■  erster Versuch: ◆  Idee des Mikrokernels bekannt ◆  Umsetzung: Designkriterien weitgehend unbekannt

    ■  Folgen für Performanz und Programmierkomfort (s.a. [Heiser14]): ✗  „complex“ ✗  „inflexible“ ✗  „slow“

    3.4.1 Mach

    µKernel

    ■  Lessons Learned: ◆  wir wissen etwas über Kosten: IPC-Performanz ◆  wir wissen noch nichts über guten µKern-

    Funktionsumfang und gute Schnittstellen...

    à nächstes Ziel!

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–36

    3.4.2 L4

    3.4.2 L4

    ■  Made in Germany: ◆  Jochen Liedtke (GMD, „Gesellschaft für Mathematik

    und Datenverarbeitung“), Betriebssystemgruppe (u.a.): J. Liedtke, H. Härtig, W. Kühnhauser

    ◆  Symposium on Operating Systems Principles 1995 (SOSP’95): „On µ-Kernel Construction“ [Liedtke95]

    ■  Analyse des Mach-Kernels: 1.  falsche Abstraktionen 2.  unperformante Implementierung 3.  prozessorunabhängige Implementierung

    •  Letzteres: effizienzschädliche Eigenschaft eines Mikrokernels •  Neuimplementierung eines (konzeptionell sauberen!) µ-Kerns kaum teurer

    als Portierung auf andere Prozessorarchitektur

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–37

    ■  Mikrokerne der 2. Generation ◆  zunächst L3, insbesondere Nachfolger L4: erste Mikrokerne der 2.

    Generation •  vollständige Überarbeitung des Mikrokernkonzepts: wesentliche

    Probleme der 1. Generation (z.B. Mach) vermieden •  Bsp.: durchschnittliche Performanz von User-Mode IPC in L3 ggü. Mach:

    Faktor 22 zugunsten L3 ◆  heute:

    §  verschiedene Weiterentwicklungen von L4 (bezeichnet heute Familie ähnlicher Mikrokerne)

    L3 und L4

    3.4.2 L4

    COMP9242 Advanced Operating Systems

    S2/2014 Week 1: Introduction to seL4

    COMP9242 S2/2014 W01 ©2011 Gernot Heiser UNSW/NICTA. Distributed under Creative Commons Attribution License 2

    Copyright Notice

    These slides are distributed under the Creative Commons Attribution 3.0 License

    •  You are free: –  to share—to copy, distribute and transmit the work –  to remix—to adapt the work

    •  under the following conditions: –  Attribution: You must attribute the work (but not in any way that

    suggests that the author endorses you or your use of the work) as follows:

    •  “Courtesy of Gernot Heiser, [Institution]”, where [Institution] is one of “UNSW” or “NICTA”

    The complete license text can be found at http://creativecommons.org/licenses/by/3.0/legalcode

    COMP9242 S2/2014 W01

    ©2011 Gernot Heiser UNSW/NICTA. Distributed under Creative Commons Attribution License 3

    Monolithic Kernels vs Microkernels

    •  Idea of microkernel: –  Flexible, minimal platform –  Mechanisms, not policies –  Goes back to Nucleus [Brinch Hansen, CACM’70]

    COMP9242 S2/2014 W01

    Hardware

    VFS

    IPC, file system

    Scheduler, virtual memory

    Device drivers, dispatcher

    Hardware

    IPC, virtual memory

    Application

    Application

    Unix Server

    File Server Device

    Driver

    Syscall

    IPC

    Kernel Mode

    User Mode

    ©2011 Gernot Heiser UNSW/NICTA. Distributed under Creative Commons Attribution License 4

    Microkernel Evolution

    First generation

    •  Eg Mach [’87]

    •  180 syscalls •  100 kLOC •  100 µs IPC

    Third generation

    •  seL4 [’09]

    •  ~3 syscalls •  9 kLOC •  0.2–1 µs IPC

    COMP9242 S2/2014 W01

    IPC, MMU abstr. Scheduling

    Kernel memory Devices

    Low-level FS, Swapping

    Memory Objects

    Second generation

    IPC, MMU abstr. Scheduling

    Memory- mangmt library

    •  Eg L4 [’95]

    •  ~7 syscalls •  ~10 kLOC •  ~ 1 µs IPC

    IPC, MMU abstr. Scheduling

    Kernel memory

    (Abb.: [Heiser14])

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–38

    ■  Was gehört in einen Mikrokern? ◆  Liedtke: Unterscheidung zwischen Konzepten und deren Implementierung ◆  bestimmende Anforderungen an beide:

    Konzeptsicht à Funktionalität, Implementierungssicht à Performanz

    Ø  1. µKernel-Generation: Konzept durch Performanzentscheidungen aufgeweicht

    Ø  Effekt in der Praxis genau gegenteilig: schlechte (IPC-) Performanz!

    Mikrokernel-Designprinzipien

    3.4.2 L4

    „The determining criterion used is functionality, not performance. More precisely, a concept is tolerated inside the µ-kernel only if moving it outside the kernel, i.e. permitting competing implementations, would prevent the implementation of the systems‘s required functionality.“

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–39

    ■  Designprinzipien für Mikrokernel-Konzept: Ø  Annahmen hinsichtlich der funktionalen Anforderungen:

    1.  System interaktive und nicht vollständig vertrauenswürdige Applikationen unterstützen (à HW-Schutz, -Multiplexing),

    2.  Hardware mit virtueller Speicherverwaltung und Paging

    Designprinzipien: 1.  Autonomie:

    „Ein Subsystem (Server) muss so implementiert werden können, dass es von keinem anderen Subsystem gestört oder korrumpiert werden kann.“

    2.  Integrität: „Subsystem (Server) S₁ muss sich auf Garantien von S₂ 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.“

    Mikrokernel-Designprinzipien

    3.4.2 L4

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–40

    ■  Adressraum: Abbildung, die jede virtuelle Seite auf einen physischen Seitenrahmen abbildet oder als „nicht zugreifbar“ markiert

    ■  Implementierung über Seitentabellen, unterstützt durch MMU-Hardware

    ■  Aufgabe des Mikrokernels (als gemeinsame obligatorische Schicht aller Subsysteme): muss Hardware-Konzept des Adressraums verbergen und durch eigenes Adressraum-Konzept überlagern (sonst Implementierung von VMM-Mechanismen durch Server unmöglich)

    ■  Mikrokernel-Konzept des Adressraums: ◆  muss Implementierung von beliebigen virtuellen Speicherverwaltungs- und

    -schutzkonzepten oberhalb des Mikrokernels (d.h. in den Subsystemen) erlauben

    ◆  sollte einfach und dem Hardware-Konzept ähnlich sein

    L4: Speicherabstraktion

    3.4.2 L4 | Speicherabstraktion

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–41

    ■  Idee: abstrakte Speicherverwaltung ◆  rekursive Konstruktion und Verwaltung der Adressräume auf

    Benutzer- (Server-) Ebene ◆  Mikrokernel stellt dafür genau drei Operationen bereit:

    1.  map

    2.  flush

    3.  grant

    L4: Speicherabstraktion

    3.4.2 L4 | Speicherabstraktion

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–42

    ■  Rekursive Konstruktion der Adressraumhiearchie ◆  Server und Anwendungen können damit ihren Klienten Seiten des eigenen

    Adressraumes zur Verfügung stellen ◆  Realspeicher: Ur-Adressraum, vom µKernel verwaltet ◆  Speicherverwaltung(en), Paging usw.: vollständig außerhalb des µ-Kernels

    realisiert

    Realspeicher

    Pager 2 Pager 1

    Pager 3

    Pager 4

    Anwendung Anwendung

    Anwendung Anwendung

    3.4.2 L4 | Speicherabstraktion

    Hierarchische Adressräume

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–43

    ■  grant(x)

    §  Eigentümer S eines Adressraumes gibt beliebige Seite x an Adressraum von Empfänger S‘ weiter

    §  Voraussetzungen: -  S‘ stimmt zu -  S selbst darf auf x zugreifen (à Grundlage der Isolation)

    §  weitergegebene Seite x: -  aus Adressraum von S entfernt -  in Adressraum von S‘ eingefügt

    3.4.2 L4 | Speicherabstraktion

    grant-Operation

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–44

    ■  map(x)

    §  Eigentümer S eines Adressraumes bildet beliebige Seite x in Adressraum von Empfänger S‘ ab

    §  Voraussetzungen: -  S‘ stimmt zu -  S selbst darf auf x zugreifen (à Grundlage der Isolation)

    §  abgebildete Seite x: -  in Adressraum von S‘ eingefügt -  in Adressräumen von S und S‘ zugreifbar

    3.4.2 L4 | Speicherabstraktion

    map-Operation

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–45

    ■  flush(x)

    §  Eigentümer S eines Adressraumes flusht (revoziert) beliebige Seite x §  Voraussetzung: -  S selbst darf auf x zugreifen

    §  geflushte Seite x: -  bleibt in Adressraum von S zugreifbar -  wird aus den Adressräumen aller S‘, welche auf x durch ein grant oder

    map von S Zugriff erhalten haben, entfernt §  alle S‘ müssen nicht zustimmen

    Ø  flush ist nicht autonomieschädlich, obwohl explizite Zustimmung betroffener Adressräume nicht erforderlich ist:

    •  flushbar: nur eigene Seiten •  betroffene Adressräume haben potentiellem flush bei Akzeptieren von

    map- oder grant-Operation bereits zugestimmt

    3.4.2 L4 | Speicherabstraktion

    flush-Operation

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–46

    ■  Thread ◆  innerhalb eines Adressraumes ablaufende Aktivität ◆  à Adressraumzuordnung ist essenziell für Threadkonzept (Code + Daten)

    •  Bindung an Adressraum: dynamisch oder fest •  Änderung einer dynamischen Zuordnung: darf nur unter

    vertrauenswürdiger Kontrolle erfolgen (sonst: fremde Adressräume les- und korrumpierbar)

    ■  Designentscheidung Ø  Autonomieprinzip Ø  Konsequenz: Adressraumisolation Ø  entscheidender Grund zur Realisierung des Thread-Konzepts innerhalb

    des Mikrokernels

    3.4.2 L4 | Threadabstraktion

    L4: Threadabstraktion

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–47

    ■  Interprozess-Kommunikation ◆  Kommunikation über Adressraumgrenzen: vertrauenswürdig kontrollierte

    Aufhebung der Isolation ◆  à essenziell für (sinnvolles) Multitasking und –threading

    ■  Designentscheidung

    Ø  Integritätsprinzip Ø  wir haben schon: vertrauenswürdige Adressraumisolation im µKernel Ø  grundlegendes IPC-Konzepts innerhalb des Mikrokernels (flexibel und

    dynamisch durch Server erweiterbar, analog Adressraumhierarchie)

    IPC

    3.4.2 L4 | Threadabstraktion

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–48

    Identifikatoren

    3.4.2 L4 | Threadabstraktion

    ■  Thread- und Ressourcenbezeichner ◆  müssen vertrauenswürdig vergeben (authentisch und i.A. persistent) und

    verwaltet (eindeutig und korrekt referenzierbar) werden ◆  à essenziell für (sinnvolles) Multitasking und –threading ◆  à essenziell für vertrauenswürdige Kernel- und Server-Schnittstellen

    ■  Designentscheidung

    Ø  Integritätsprinzip Ø  ID-Konzept innerhalb des Mikrokernels (wiederum: durch Server erweiterbar)

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–49

    1.  Ein minimaler Mikrokernel §  soll in darauf implementierten Subsystemen Minimalmenge an geeigneten

    Abstraktionen zur Verfügung stellen, •  die flexibel genug, um Implementierung beliebiger Betriebssysteme zu

    ermöglichen •  u. Nutzung umfangreicher Menge verschiedener Hardware-Plattformen

    gestattet

    2.  Geeignete, funktional minimale Mechanismen: §  Adressraum mit map-, flush- u. grant-Operation §  Threads inklusive IPC §  eindeutige Identifikatoren sind solche Basis

    3.  Wahl der geeigneten Abstraktionen: §  kritisch, für Flexibilität, Verifizierbarkeit und Performanz des Mikrokerns

    L4: Lessons Learned

    3.4.2 L4

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–50

    4.  Bisherigen µ-Kernel-Abstraktionskonzepte: 1.  ungeeignete 2.  zu viele 3.  zu spezialisierte u. inflexible Abstraktionen

    5.  Konsequenzen für Mikrokernel-Implementierung: §  müssen für jeden Prozessortyp neu implementiert werden §  sind deshalb prinzipiell nicht portierbar

    6.  innerhalb eines Mikrokernels sind 1.  grundlegende Implementierungsentscheidungen 2.  meiste Algorithmen u. Datenstrukturen

    von Prozessorhardware abhängig

    L4: Lessons Learned

    3.4.2 L4

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–51

    7.  Ihr Entwurf muss durch Performanz-Vorhersagen u. -Analysen diktiert werden.

    8.  Neben ungeeigneten Basis-Abstraktionen, häufigste Fehler durch unzureichendes Verständnis des kombinierten Hardware-Software-Systems oder ineffiziente Implementierungen.

    à L3- und L4-Prototypen by J. Liedtke: 99% Assemblercode

    (Zur weiteren Lektüre: J. Liedtke. 1995. On µ-Kernel Construction. SIGOPS Operating Systems Review 29, 5 (Dec. 1995), S. 237-250.)

    L4: Lessons Learned

    3.4.2 L4

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–52

    ■  Fazit: ◆  Mikrokernel mit akzeptabler Performanz: hardwarespezifische

    Implementierung minimal erforderlicher, vom Prozessortyp unabhängiger Abstraktionen

    L4: Lessons Learned

    3.4.2 L4

    0

    100

    200

    300

    400

    500

    0 1000 2000 3000 4000

    Systemaufrufperformanz

    Mach L4

    (nach [Heiser14])

    [B]

    [µs]

    115 µs

    5 µs

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–53

    ■  nach Tod von J. Liedtke (2001) auf Basis von L4 zahlreiche moderne BS ■  L4 heute: Spezifikation eines Mikrokernels (nicht Implementierung)

    L4: Heutige Bedeutung

    3.4.2 L4

    ©2012 Gernot Heiser, UNSW/NICTA. Distributed under Creative Commons Attribution License 5

    0

    100

    200

    300

    400

    0 2000 4000 6000 Message Length [B]

    Mach [µs]

    0

    100

    200

    300

    400

    0 2000 4000 6000 Message Length [B]

    Mach

    L4

    [µs]

    1993 “Microkernel” IPC Performance

    COMP9242 S2/2014

    115 µs

    5 µs

    i486 @ 50 MHz

    Culprit: Cache footprint [SOSP’95] raw copy

    ©2012 Gernot Heiser, UNSW/NICTA. Distributed under Creative Commons Attribution License 6

    L4 IPC Performance over 20 Years

    Name Year Processor MHz Cycles µs Original 1993 i486 50 250 5.00 Original 1997 Pentium 160 121 0.75 L4/MIPS 1997 R4700 100 86 0.86 L4/Alpha 1997 21064 433 45 0.10 Hazelnut 2002 Pentium 4 1,400 2,000 1.38 Pistachio 2005 Itanium 1,500 36 0.02 OKL4 2007 XScale 255 400 151 0.64 NOVA 2010 i7 Bloomfield (32-bit) 2,660 288 0.11 seL4 2013 i7 Haswell (32-bit) 3,400 301 0.09 seL4 2013 ARM11 532 188 0.35 seL4 2013 Cortex A9 1,000 316 0.32

    COMP9242 S2/2014

    ©2012 Gernot Heiser, UNSW/NICTA. Distributed under Creative Commons Attribution License 7

    Minimality: Source Code Size

    Name Architecture C/C++ asm total kSLOC Original i486 0 6.4 6.4 L4/Alpha Alpha 0 14.2 14.2 L4/MIPS MIPS64 6.0 4.5 10.5 Hazelnut x86 10.0 0.8 10.8 Pistachio x86 22.4 1.4 23.0 L4-embedded ARMv5 7.6 1.4 9.0 OKL4 3.0 ARMv6 15.0 0.0 15.0 Fiasco.OC x86 36.2 1.1 37.6 seL4 ARMv6 9.7 0.5 10.2

    COMP9242 S2/2014 ©2012 Gernot Heiser, UNSW/NICTA. Distributed under Creative Commons Attribution License 8

    93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13

    L3→L4 “X” Hazelnut Pistachio

    L4/Alpha

    L4/MIPS

    seL4

    OKL4-µKernel

    OKL4-Microvisor

    Codezero

    P4 → PikeOS

    Fiasco Fiasco.OC

    L4-embed.

    Nova GMD/IBM/Karlsruhe

    UNSW/NICTA

    Dresden

    L4 Family Tree

    Assember

    C++

    C

    Asm+C

    C++

    C C

    Portable

    Caps

    Verified

    COMP9242 S2/2014

    API Inheritance

    Code Inheritance

    (Abb.: [Heiser14])

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–54

    ■  Einige Weiterentwicklungen:

    §  TU Dresden (Hermann Härtig): Neuimplementierung in C++ (L4/Fiasco), Basis des Echtzeit-Betriebssystems DROPS, der Virtualisierungsplattform NOVA (genauer: Hypervisor, à Kap. 6) und des adaptiven BS-Kernels Fiasco.OC

    §  University of New South Wales (UNSW), Australien (Gernot Heiser): •  Implementierung von L4 auf verschiedenen 64-Bit-Plattformen,

    bekannt als L4/MIPS, L4/Alpha •  Implementierung in C (Wartbarkeit, Performanz) •  Mit L4Ka::Pistachio bisher schnellste Implementierung von

    botschaftenbasierter IPC (2005: 36 Zyklen auf Itanium-Architektur) •  seit 2009: seL4, erster formal verifizierter BS-Kernel

    (d.h. mathematisch bewiesen, dass Implementierung funktional korrekt ist und nachweislich keinen Entwurfsfehler enthält)

    L4: Heutige Bedeutung

    3.4.2 L4

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–55

    Zwischenfazit

    ■  Begrenzung von Fehlerausbreitung (à Folgen von errors): ◆  konsequent modularisierte Architektur aus Subsystemen ◆  Isolationsmechanismen zwischen Subsystemen

    ■  Konsequenzen für BS-Kernel: ◆  statische Isolation auf Quellcodeebene à strukturierte Programmierung ◆  dynamische Isolation zur Laufzeit à private virtuelle Adressräume ◆  Architektur, welche diese Mechanismen komponiert: Mikrokernel

    ■  Was haben wir gewonnen? ✓  Adressraumisolation für sämtlichen nichtvertrauenswürdigen Code ✓  keine privilegierten Instruktionen in nvw. Code (Serverprozesse) ✓  geringe Größe (potenziell: Verifizierbarkeit) des Kernels ✓  neben Robustheit: Modularität und Adaptivität des Kernels

    ■  Und was noch nicht? ✗  Behandlung von Ausfällen

    (à abstürzende Gerätetreiber ...)

    3.4 Mikrokernelarchitektur

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–56

    3.5 Micro-Reboots

    ■  Beobachtungen am Ausfallverhalten von BS: ◆  Kernelfehler sind (potenziell) fatal für gesamtes System ◆  Anwendungsfehler sind es nicht à kleiner Kernel = geringeres Risiko von Systemausfällen à durch BS-Code in Serverprozessen: verbleibendes Risiko unabhäniger Teilausfälle von BS-Funktionalität (z.B. FS, Treiberprozesse, GUI, ...)

    ■  Ergänzung zu Isolationsmechanismen: ◆  Mechanismen zur Behandlung von Subsystem-Ausfällen ◆  = Mechanismen zur Behandlung Anwendungs-, Server- und

    Gerätetreiberfehlen

    à Micro-Reboots

    3.5 Micro-Reboots

    fault error

    Aktivierung (activation)

    Ausbreitung (propagation)

    Fehler fehlerhafter Zustand Ausfall

    ✗ ✗

    failure

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–57

    Ansatz

    ■  wir haben: ◆  kleinen, ergo vertrauenswürdigen (als fehlerfrei angenommenen) µKernel ◆  BS-Funktionalität in bedingt vertrauenswürdigen Serverprozessen

    (kontrollierbare, aber wesentlich größere Codebasis) ◆  Gerätetreiber und Anwendungen in nicht vertrauenswürdigen Prozessen

    (nicht kontrollierbare Codebasis)

    ■  wir wollen: ◆  Systemausfälle verhindern durch Vermeidung von errors im Kernel

    à höchste Priorität ◆  Treiber- und Serverausfälle minimieren durch Verbergen ihrer

    Auswirkungen à nachgeordnete Priorität (Best-Effort-Prinzip)

    ■  Idee: ◆  Systemausfälle à µKernel ◆  Treiber- und Serverausfälle à Neustart durch spezialisierten Serverprozess

    3.5 Micro-Reboots

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–58

    Beispiel: Ethernet-Treiberausfall

    3.5 Micro-Reboots

    ■  schwarz: ausfallfreie Kommunikation ■  rot: Ausfall und Behandlung ■  blau: Wiederherstellung nach Ausfall

    µKernel

    Browser

    Netzwerk-Server

    Ethernet-Treiber

    µReboot-Server

    alive?

    µKernel

    Browser

    Netzwerk-Server

    Ethernet-Treiber

    µReboot-Server

    ¬alive; reboot

    µKernel

    Browser

    Netzwerk-Server

    Ethernet-Treiber *

    µReboot-Server

    new eth

    resend

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–59

    Beispiel: Dateisystem-Serverausfall

    3.5 Micro-Reboots

    ■  schwarz: ausfallfreie Kommunikation ■  rot: Ausfall und Behandlung ■  blau: Wiederherstellung nach Ausfall

    µKernel

    vim

    FS- Server

    HDD-Treiber

    µReboot-Server

    alive?

    ODD-Treiber

    cdr

    µKernel

    FS- Server

    µReboot-Server

    ¬alive; reboot

    vim cdr

    HDD-Treiber

    ODD-Treiber

    µKernel

    FS- Server *

    µReboot-Server

    vim cdr

    HDD-Treiber

    ODD-Treiber

    rewrite

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–60

    3.6 Beispiel-Betriebssystem: MINIX

    ■  Ziele: ◆  robustes Betriebssystems ◆  à Schutz gegen Sichtbarwerden von Fehlern (= Ausfälle) für Nutzer ◆  Fokus auf Anwendungsdomänen: Endanwender-Einzelplatzrechner

    (Desktop, Laptop, Smart*) und eingebettete Systeme ◆  Anliegen: Robustheit > Verständlichkeit > geringer HW-Bedarf

    ■  aktuelle Version: MINIX 3.3.0 ■  für alle, die noch nie davon gehört haben:

    „What is MINIX? The most popular OS in the world, thanks to Intel“

    3.6 MINIX

    „An Open Letter to Intel“: https://www.cs.vu.nl/~ast/intel/

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–61

    µKernel

    Architektur

    3.6 MINIX

    ■  Kommunikationsschnittstellen ... ◆  ... für Anwendungen (weiß): Systemaufrufe im POSIX-Standard ◆  ... für Serverprozesse (grau):

    •  untereinander: IPC (botschaftenbasiert) •  mit Kernel: spezielle MINIX-API (kernel calls), für Anwendungsprozesse gesperrt

    Betriebssystem-Serverprozesse

    Anwendungen

    User Space

    Kernel Space

    Gerätetreiberprozesse

    POSIX system calls

    MINIX kernel calls

    IPC IPC

    IPC

    IPC

    MINIX kernel calls

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–62

    Architektur

    ■  Betriebssystem-Serverprozesse: ◆  Dateisystem (FS) ◆  Prozessmanagement (PM) ◆  Netzwerkmanagement (Net) ◆  Reincarnation Server (RS) à Micro-Reboots jeglicher Serverprozesse ◆  (u. a.) ...

    µKernel

    FS

    App1 App2 App3

    VMM PM ...

    ...

    User Space

    Kernel Space

    Net RS

    Gerätetreiberprozesse

    3.6 MINIX

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–63

    Architektur

    ■  Kernelprozesse: ◆  system task ◆  clock task

    µKernel

    FS

    App1 App2 App3

    VMM PM ...

    ...

    User Space

    Kernel Space

    Net RS

    Gerätetreiberprozesse

    system clock

    echte Prozesse, höchste Scheduling-Prio.

    3.6 MINIX

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–64

    Reincarnation Server

    3.6 MINIX

    Implementierungstechnik für Micro-Reboots: ■  Prozesse zum Systemstart (à Kernel Image): system, clock, init, rs

    ◆  system, clock: Kernelprogramm ◆  init: Bootstrapping (Initialisierung von rs und anderer BS-Serverprozesse),

    Fork der Login-Shell (und damit sämtlicher Anwendungsprozesse) ◆  rs: Fork sämtlicher BS-Serverprozesse, einschließlich Gerätetreiber

    init rs

    ...

    bash

    app1 app2 appn

    fs pm

    ... tty treiberm treiber1

    ... interrupt: terminierter Kindprozess

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–65

    MINIX: Ausprobieren!

    3.6 MINIX

    ■  ausführliche Dokumentation: https://wiki.minix3.org/doku.php?id=www:getting-started:start

    ■  vorkompiliertes Kernel-Image zum Installieren (VirtualBox, VMWare, ...): https://wiki.minix3.org/doku.php?id=www:download

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–66

    3.7 Verfügbarkeit

    3.7 Verfügbarkeit

    ■  komplementäre NFE zu Robustheit: Verfügbarkeit (availability)

      Beziehung: ◆  Verbesserung von Robustheit ⇒ Verbesserung von Verfügbarkeit ◆  Robustheitsmaßnahmen hinreichend, nicht notwendig (hochverfügbare

    Systeme können sehr wohl von Ausfällen betroffen sein...)

    ■  eine weitere komplementäre NFE: ◆  Robustheit ⇒ Sicherheit (security) (à nächstes Kapitel)

    Zur Erinnerung: Untereigenschaften von Verlässlichkeit

    1.  Verfügbarkeit (availability) 2.  Robustheit (robustness, reliability) 3.  Sicherheit im Sinne von safety (safety) 4.  Vertraulichkeit (confidentiality) 5.  Integrität (integrity) 6.  Wartbarkeit (maintainability)

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–67

      Allgemeine Definition: ◆  Der Grad, zu welchem ein System oder eine Komponente funktionsfähig und

    zugänglich (erreichbar) ist, wann immer seine Nutzung erforderlich ist. (IEEE)

    ■  genauer quantifiziert: ◆  Der Anteil an Laufzeit eines Systems, in dem dieses seine spezifizierte

    Leistung erbringt.

    system up (lt. Spezifikation funktionsfähig)

    system down (keine oder nicht

    spezifikationsgemäße Funktion)

    MTTF

    MTTR

    Availability = Total Uptime / Total Lifetime = MTTF / (MTTF + MTTR) •  MTTR: Mean Time to Recovery •  MTTF: Mean Time to Failure

    Begriff

    t

    3.7 Verfügbarkeit

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–68

    ■  einige Verfügbarkeitsklassen:

    ■  Maßnahmen: ◆  Robustheitsmaßnahmen ◆  Redundanz ◆  Ausfallmanagement

    Verfügbarkeit Ausfallzeit pro Jahr

    Ausfallzeit pro Woche

    90% > 1 Monat ca. 17 Stunden 99% ca. 4 Tage ca. 2 Stunden 99,9% ca. 9 Stunden ca. 10 Minuten 99,99% ca. 1 Stunde ca. 1 Minute 99,999% ca. 5 Minuten ca. 6 Sekunden 99,9999% ca. 2 Sekunden

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–69

    Überblick:

    QNX: Mikrokern-Betriebssystem

    §  primäres Einsatzfeld: eingebettete Systeme, z.B. Automobilbau

    §  Mikrokernarchitektur mit Adressraumisolation für Gerätetreiber

    §  (begrenzt) dynamische Micro-Reboots möglich à Maximierung der uptime des Gesamtsystems

    QNX Neutrino: Hochverfügbares Echtzeit-BS

    3.7 Verfügbarkeit

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–70

    Gewährleistung der Hochverfügbarkeit:

    1.  High-Avalability-Manager Laufzeit-Monitor, der ein mehrstufiges Recovery durchführen kann, falls Systemdienste oder Anwendungsprozesse ausfallen („abstürzen“) à µReboot-Server

    2.  High-Availability-Client-Libraries Funktionen zum transparenten automatischen Recovery für ausgefallene Server-Verbindungen

    QNX Neutrino

    3.7 Verfügbarkeit

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–71

    Verlässlichkeitsbegriff, Ausfallmodell: ■  [Laprie+04a]

    Algirdas Avizienis, Jean-Claude Laprie, Brian Randell: Dependability and its Threats – A Taxonomy IFIP Congress Topical Sessions 2004, S. 91-120

    ■  [Laprie+04b] Algirdas Avizienis, Jean-Claude Laprie, Brian Randell, Carl E. Landwehr: Basic Concepts and Taxonomy of Dependable and Secure Computing IEEE Transactions on Dependable and Secure Computing, Vol. 1, No. 1, Jan-Mar 2004, S. 11–33

    Deep Space 1 Remote Debugging: ■  [Garret02]

    Ron Garret: Lisping at JPL 2002. Online: http://www.flownet.com/gat/jpl-lisp.html

    Literatur

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–72

    Kernelarchitekturdesign und Mikrokernelprinzip: ■  [Preikschat97]

    Wolfgang Schröder-Preikschat (wosch): N.N. ■  [Tanenbaum92]

    Andrew S. Tanenbaum: Modern Operating Systems Prentice-Hall 1992, ISBN 0-13-588187-0

    ■  [Heiser14] Gernot Heiser: COMP9242 Advanced Operating Systems Lecture Slides UNSW Australia, 2014. Courtesy of Gernot Heiser, UNSW.

    Mikrokerneldesign, L4: ■  [Liedtke95]

    Jochen Liedtke: On µ-Kernel Construction ACM SIGOPS Operating Systems Review 29, 5 (Dec 1995), S. 237-250. DOI: https://doi.org/10.1145/224056.224075

    Literatur

  • AOS WS 2018/19 © P. Amthor, H.-A. Schindler 3–73

    MINIX: ■  [Tanenbaum06]

    Andrew S. Tanenbaum, Albert S. Woodhull: Operating Systems – Design and Implementation (3rd ed.) Pearson Education 2006, ISBN 978-0-13-142938-3

    ■  [Herder06] Jorrit N. Herder, Herbert Bros, Ben Gras, Philip Homburg, Andrew S. Tanenbaum: MINIX 3: A Highly Reliable, Self-Repairing Operating System ACM SIGOPS Operating Systems Review 40, 3 (Jul 2006), S. 80–89

    ■  [Tanenbaum10] Andrew S. Tanenbaum, Raya Appuswamy, Herbert Bros, Lorenzo Cavallaro, Cristiano Guiffrida, Tomáš Hrubý, Jorrit N. Herder, Erik van der Kouwe, David van Moolenbroek: MINIX 3: Status Report and Current Research USENIX ;login:, Vol. 35, No. 3 (Jun 2010), S. 7–13

    Literatur

    ENDE Kap. 3