2021-01-08 11:52:10 +00:00
\documentclass [a4pape] { article}
\usepackage [utf8] { inputenc}
\usepackage { tikz}
\usepackage { pdflscape}
2021-01-12 12:06:23 +00:00
\usepackage { verbatim}
2021-01-08 11:52:10 +00:00
\usetikzlibrary { mindmap}
2021-01-12 12:06:23 +00:00
\usepackage [hidelinks,pdfencoding=auto] { hyperref}
% Information boxes
\newcommand * { \info } [4][16.3]{
\node [ annotation, #3, scale=0.65, text width = #1em, inner sep = 2mm ] at (#2) {
\list { $ \bullet $ } { \topsep =0pt\itemsep =0pt\parsep =0pt
\parskip =0pt\labelwidth =8pt\leftmargin =8pt
\itemindent =0pt\labelsep =2pt}
#4
\endlist
} ;
}
2021-01-08 11:52:10 +00:00
%%%% Predefined Colors: black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow.
\pagestyle { empty}
\begin { document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Überblick
\begin { tikzpicture} [ mindmap, grow cyclic, every node/.style=concept, concept color=black!10,
level 1/.append style={ level distance=4cm} ,
level 2/.append style={ level distance=3cm, sibling angle=30} ,
every node/.append style={ scale=0.8} ]
\node { Betriebssysteme}
child [concept color=red!30]{ node { Prozessor-management}
child { node { Prozess-erzeugung} }
child { node { Prozess-terminierung} }
child { node { Threads} }
}
child [concept color=green!30]{ node { Scheduling}
child { node { Scheduler-aktivierung} }
child { node { Scheduling Strategien} }
}
child [concept color=blue!30]{ node { Privilegierungs-ebenen} }
child [concept color=yellow!30]{ node { Kommunikation und\\ Synchronisation}
child { node { Elementare Konzepte} }
child { node { wechselseitiger Ausschluss} }
child { node { Mechanismen} }
}
child [concept color=orange!30]{ node { Speicher-management}
child { node { Speicher-technologien} }
child { node { Speicher-klassen} }
child { node { Relokation} }
child { node { Swapping} }
child { node { Virtueller Speicher} }
child { node { Segmentierung} }
}
child [concept color=lime!30]{ node { Dateisystem}
child { node { Dateimodelle} }
child { node { Dateisysteme} }
child { node { Datenstrukturen \& Algorithmen} }
} ;
\end { tikzpicture}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Grundbegriffe
\begin { tikzpicture} [ mindmap, grow cyclic, every node/.style=concept, concept color=black!40,
level 1/.append style={ level distance=4cm, sibling angle=120} ,
level 2/.append style={ level distance=3cm, sibling angle=30} ,
every node/.append style={ scale=0.8} ]
\node { Grundbegriffe}
child[concept color=red!30]{ node{ Funktionale Eigenschaften}
child{ node{ Authentisierung, Verschlüsselung} }
child{ node{ Informations-management} }
child{ node{ Kommunikations-management} }
child{ node{ Ressourcen-management} }
}
child[concept color=green!30]{ node{ Nichtfunktionale Eigenschaften}
child{ node{ Sicherheit} }
child{ node{ Korrektheit} }
child{ node{ Echtzeitfähigkeit} }
child{ node{ Skalierbarkeit} }
child{ node{ Offenheit} }
child{ node{ Sparsamkeit} }
child{ node{ Verfügbarkeit} }
child{ node{ Robustheit} }
}
child[concept color=blue!30]{ node{ Betriebssysteme}
2021-01-12 12:06:23 +00:00
child{ node { Mainframe}
2021-01-08 11:52:10 +00:00
child{ node { performante E/A} }
child{ node { Massen-daten-verarbeitung} }
}
2021-01-12 12:06:23 +00:00
child{ node { Server}
2021-01-08 11:52:10 +00:00
child{ node { Web Server, Fileshare} }
}
2021-01-12 12:06:23 +00:00
child{ node { Parallelrechner}
child{ node { parallele Algorithmen, hoher Rechenbedarf} }
2021-01-08 11:52:10 +00:00
child{ node { schnelle IPC} }
}
2021-01-12 12:06:23 +00:00
child{ node { Desktop/Laptop}
2021-01-08 11:52:10 +00:00
child{ node { Interaktivität \& Responsivität} }
}
2021-01-12 12:06:23 +00:00
child{ node { Echtzeit}
2021-01-08 11:52:10 +00:00
child{ node { Einhaltung zeitlicher Garantien} }
child{ node { Fahrzeug-, Anlagensteuerung} }
}
2021-01-12 12:06:23 +00:00
child{ node { Eingebettete}
child{ node { Controller, Kaffeemaschinen,...} }
2021-01-08 11:52:10 +00:00
}
}
;
\end { tikzpicture}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Prozessormanagement
\begin { tikzpicture} [ mindmap, grow cyclic, every node/.style=concept, concept color=red!40,
level 1/.append style={ level distance=4cm, sibling angle=90} ,
level 2/.append style={ level distance=3cm, sibling angle=35} ,
every node/.append style={ scale=0.8} ]
2021-01-12 12:06:23 +00:00
\node { Prozessor-management}
child[concept color=blue!30] { node { Prozess-erzeugung}
child { node { Vorraussetzungen}
2021-01-08 11:52:10 +00:00
child { node { Rechte} }
child{ node { Ressourcen Verfügbar} }
child{ node { Sicherheit} }
child{ node{ Fariness} }
child{ node{ Robustheit / Überlastungsvermeidung} }
}
child { node { Namens-vergabe}
child{ node{ eindeutig bzgl allen existierenden} }
child{ node{ nicht eindeutig bzgl allen} }
}
child { node { Stammbaum-pflege}
child{ node{ erzeugt Kinder} }
child{ node{ baumartige Hierarchie} }
child{ node{ Verwaiste Prozesse -> Adoption} }
}
child { node { Allokation (von Ressourcen)}
child{ node{ Arbeits-speicher}
child{ node{ Größe} }
child{ node{ Zeitpunkt} }
}
child{ node{ Prozessorzeit} }
child{ node{ Format}
child{ node{ a.out (ehem UNIX)} }
child{ node{ Mach Object (iOS)} }
child{ node{ Executeable and Link(age/able) (Linux)} }
}
}
}
child[concept color=red!30] { node { Prozess Management}
child{ node{ Prozess-identifikation} }
child{ node{ Scheduling} }
child{ node{ Ereignis-management} }
child{ node{ Rechte-management} }
child{ node{ Speicher-management} }
child{ node{ Prozessor-management} }
2021-01-12 12:06:23 +00:00
child{ node{ Kommu-nikations-management} }
2021-01-08 11:52:10 +00:00
child{ node{ Virtueller Adressraum} }
child{ node{ allg Ressourcen Management} }
}
2021-01-12 12:06:23 +00:00
child[concept color=green!30] { node { Prozess-terminierung}
2021-01-08 11:52:10 +00:00
child{ node{ durch}
child{ node{ Aufgabe erledigt} }
child{ node{ Fehler aufgetreten} }
child{ node{ durch Nutzer geschlossen} }
}
child{ node{ Folgen}
child{ node{ Freigabe der Ressourcen} }
child{ node{ Benachrichtigung der "Parents"} }
child{ node{ Adoption der "Children"} }
}
}
child[concept color=yellow!30] { node { Threads}
child{ node{ sequenziell innerhalb eines Prozesses} }
child{ node{ Kernel Level Thread}
child{ node{ Implementiert im Betriebssystem} }
child{ node{ Betriebssystem hat Kenntnis über Thread} }
child{ node{ Multi-Thread-modell} }
child{ node{ Performance durch Parallelität} }
child{ node{ Nutzung von Mehrkern-architektur} }
}
child{ node{ User Level Thread}
child{ node{ Implementiert auf Anwendungsebene} }
child{ node{ Kenntnis nur bei Endbenutzer} }
child{ node{ Single-Thread-Modell} }
child{ node{ Performance durch geringen Overhead} }
child{ node{ management ohne systemaufrufe} }
child{ node{ Individualität} }
child{ node{ Portabilität} }
}
}
;
\end { tikzpicture}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Scheduling
\begin { tikzpicture} [ mindmap, grow cyclic, every node/.style=concept, concept color=green!40,
level 1/.append style={ level distance=4cm} ,
level 2/.append style={ level distance=3cm, sibling angle=30} ,
every node/.append style={ scale=0.8} ]
\node { Scheduling}
2021-01-12 12:06:23 +00:00
child { node { Aktivierung}
child{ node{ Threadzustände im 3/5 Modell}
child{ node{ bereit: kann aktiv werden} }
child{ node{ aktiv: arbeitet} }
child{ node{ blockiert: wartet auf Ereignis} }
child{ node{ frisch: erzeugt, Rechte fehlen} }
child{ node{ beendet: in Freigabephase} }
}
child{ node{ Entscheidung Überprüfen bei}
child{ node{ Prozess/Thread Erzeugung/Terminierung} }
child{ node{ Ereignis eintritt} }
child{ node{ Wechsel von Prioritäten} }
child{ node{ periodisch} }
}
}
child{ node{ Ziele}
child{ node{ abhängig von Einsatz des Betriebssystems} }
child{ node{ ergänzt durch allg Ziele} }
child{ node{ Einhaltung von Fristen} }
child{ node{ Minimieren der Thread/Prozess-wechsel} }
}
2021-01-08 11:52:10 +00:00
child { node { Scheduling Strategien}
2021-01-12 12:06:23 +00:00
child { node { Batch-System}
child{ node{ Auslastung teurer Betriebsmittel (CPU)} }
child{ node{ Minimierung der Scheduling Kosten (wenig Wechsel, kurze Laufzeiten)} }
child{ node{ Maximierung des Durchsatzes (erledigte Arbeit/Zeit)} }
child{ node{ First Come First Served}
child{ node{ in Reihenfolge der rechenbereiten} }
child{ node{ sehr einfach, guter durchsatz} }
child{ node{ nicht immer klug} }
}
child{ node{ Shortest Remaining Time Next}
child{ node{ Thread mit vorr. kürzester Restrechenzeit} }
child{ node{ preemtiv; konkurrrierende Threads verdrängen} }
child{ node{ Restlaufzeit muss vorliegen} }
}
}
child { node { Interaktives System}
child{ node{ Benutzer kann eingreifen} }
child{ node{ Minimierung von Reaktionszeiten} }
child{ node{ Fairness (mehrere Benutzer)} }
child{ node{ Round Robin Varianten}
child{ node{ jeder Thread gleicher Teil der Zeitscheibe} }
child{ node{ einfach zu implementieren} }
child{ node{ geringe Algorithmuskosten} }
child{ node{ schnelle Entscheidungen} }
child{ node{ geringes Wissen notwendig} }
}
}
}
child{ node{ Prioritäten}
child{ node{ jeder Thread erhält indv. Priorität} }
child{ node{ höchste Prioritäten erhalten Prozessor} }
child{ node{ gleiche Priorität: Round Robin} }
}
child{ node{ in Echtzeitsystemen}
child{ node{ EDF: earliest deadline first}
child{ node{ dynamische Lasten; adaptiv} }
child{ node{ Threads nennen Deadline/Frist} }
child{ node{ kausale und zeitliche Unabhängigkeit} }
child{ node{ Priorität setzt kürzere Fristen} }
}
child{ node{ RMS: rate-monotonic scheduling}
child{ node{ periodische Lasten} }
child{ node{ Threads nennen Periodendauer} }
child{ node{ kürzeste Periodendauer aktiv} }
child{ node{ statische Prioritäten} }
}
2021-01-08 11:52:10 +00:00
} ;
\end { tikzpicture}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Privilegierungsebenen
\begin { tikzpicture} [ mindmap, grow cyclic, every node/.style=concept, concept color=blue!40,
level 1/.append style={ level distance=4cm} ,
level 2/.append style={ level distance=3cm, sibling angle=30} ,
every node/.append style={ scale=0.8} ]
2021-01-12 12:06:23 +00:00
\node { Privilegierungsebenen}
child{ node{ Konzepte}
child{ node{ private Adressräume} }
child{ node{ Zugriffsschutz auf Arbeitsspeicherbereiche} }
}
child{ node{ kritische Operationen}
child{ node{ Abschalten der Uhr} }
child{ node{ Abschalten des Ereignismanagement} }
child{ node{ Veränderung des Speicherlayouts} }
child{ node{ Veränderng kritischer Prozessorkontrollregister} }
child{ node{ Zugriff auf E/A Geräte} }
}
child{ node{ P. Ebenen}
child{ node{ steuern Rechte}
child{ node{ zur Ausführung privilegierter Prozessorinstruktionen} }
child{ node{ zur Konfiguration des Arbeitsspeicher-Layouts} }
child{ node{ zum Zugriff auf Arbeitsspeicherbereiche} }
child{ node{ zum Zugriff auf E/A-Geräte} }
}
child{ node{ realisiert in Ringen (0-3)} }
}
child{ node{ Implementierung}
child{ node{ Hardware Unterstützung} }
child{ node{ Teil "Current Privilege Level" (CPL)} }
child{ node{ permantente Überwachung} }
child{ node{ Änderung der CPL beschränken} }
}
child{ node{ Botschaften}
child{ node{ P.E. < 3 ablaufende Aktivität hat Zugriff auf kritische Ressourcen} }
child{ node{ P.E. 0 ablaufende Aktivität hat Zugriff auf}
child{ node{ Ressourcen eines Prozessors} }
child{ node{ MMU-Register zur Arbeitsspeicherkonfiguration} }
child{ node{ Register der E/A-Peripherie} }
}
} ;
2021-01-08 11:52:10 +00:00
\end { tikzpicture}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Kommunikation und Synchronisation
\begin { tikzpicture} [ mindmap, grow cyclic, every node/.style=concept, concept color=yellow!40,
level 1/.append style={ level distance=4cm} ,
level 2/.append style={ level distance=3cm, sibling angle=30} ,
every node/.append style={ scale=0.8} ]
\node { Kommunikation und \\ Synchronisation}
2021-01-12 12:06:23 +00:00
child { node { Elementare Konzepte}
child{ node{ Ziel}
child{ node{ nur 1 Thread darf zu einem Zeitpunkt mit best. Speicherbereich arbeiten} }
child{ node{ erst nach beendigung, darf ein anderer Thread damit arbeiten} }
}
child{ node{ Austausch von Daten zwischen Prozessen $ \rightarrow $ Kommunikation} }
child{ node{ Abweichende Geschwindigkeiten von Sender und Empfänger $ \rightarrow $ Synchronisation} }
child{ node{ Eine Phase, in der ein Thread eine exklusive Operation auf einer Ressource ausführt, heißt kritischer Abschnitt.} }
child{ node{ Kritische Abschnitte erfordern den wechselseitigen Ausschluss (die Isolation) konkurrierender Threads bzw. Prozesse.} }
}
child { node { wechselseitiger Ausschluss}
child{ node{ Korrektheit: in kritischen Abschnitt höchstens ein Thread} }
child{ node{ Lebendigkeit: Falls ein Thread einen kritischen Abschnitt betreten möchte, dann betritt (irgendwann) ein Thread diesen Abschnitt.} }
child{ node{ Verhungerungsfreiheit: Kein Thread wartet für immer vor einem kritischen Abschnitt} }
}
2021-01-08 11:52:10 +00:00
child { node { Mechanismen}
2021-01-12 12:06:23 +00:00
child { node { (binäre) Semaphore}
child{ node{ 2 Zustände: frei, belegt} }
child{ node{ 2 atomare Operationen}
child{ node{ belegen: P} }
child{ node{ freigeben: V} }
}
child{ node{ Sämtliche Nutzer dieses kritischen Abschnitts müssen diese semaphore verwenden} }
child{ node{ Unterstützung durch Hardware: die TSL-Operation (TestAndSetLock)} }
child{ node{ Implementierung im Ressourcenmanagement} }
child{ node{ Mehrwertiger Semaphor (oder Zählsemaphor) mit mehreren Semaphoren; maximaler Sem-Wert = n, bestimmt maximale Anzahl von Threads, die gleichzeitig aktiv sein können} }
}
child { node { Hoare'sche Monitore}
child{ node{ Zusammenfassen von Daten/Operationen/Zugriff zu abstrakten Datentyp} }
child{ node{ Zugriff auf Daten über implizit synchronisierende Operation} }
child{ node{ kritischer Abschnitt und Daten in durch Monitor geschütztem Bereich} }
child{ node{ wechselseitiger Ausschluss}
child{ node{ Türsteher an Eingang \& Ausgang} }
child{ node{ Betreten nur mit Monitor Zustimmung} }
child{ node{ falls Thread in Monitor aktiv, kein weiterer rein (P)} }
child{ node{ falls Thread Monitor verlässt, Wartenden rein (V)} }
child{ node{ Threads Verlassen statt Warten im Monitor} }
}
child{ node{ je Monitor eine Semaphor} }
child{ node{ am Eingang eine P-Operation} }
child{ node{ am Ausgang eine V-Operation} }
}
2021-01-08 11:52:10 +00:00
}
child { node { weitere}
2021-01-12 12:06:23 +00:00
child { node { Trans-aktionaler Speicher}
child{ node{ keine Sperre bei Ausschluss $ \rightarrow $ Parallelität} }
child{ node{ nach Operation untersuchen auf Fehler und Korrektur} }
child{ node{ Kombination mit Transaktionen} }
}
child { node { Botschaften}
child{ node{ für Kommunikation zwischen} }
child{ node{ Prozessen innerhalb eines Systems} }
child{ node{ Anwendungsprozessen} }
child{ node{ Senden/Empfangen von Botschaften} }
child{ node{ Kommunikationsparadigma} }
}
2021-01-08 11:52:10 +00:00
child { node { Fernaufrufe (Remote Procedure Calls)} }
child { node { System-aufrufe} }
child { node { Ereignis-management} }
child { node { IPC Modell} }
child { node { pop-up-Thread-Modell} }
} ;
\end { tikzpicture}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Speichermanagement
\begin { tikzpicture} [ mindmap, grow cyclic, every node/.style=concept, concept color=orange!40,
level 1/.append style={ level distance=4cm} ,
level 2/.append style={ level distance=3cm, sibling angle=30} ,
every node/.append style={ scale=0.8} ]
\node { Speichermanagement}
child { node { Speichertechnologien } }
child { node { Speicherklassen} }
child { node { Relokation} }
child { node { Swapping} }
child { node { Virtueller Speicher}
child { node { Virtuelles Speichermanagement} }
child { node { Begriffe} }
child { node { Abbildung} }
child { node { Memory Management Units} }
child { node { Seiten-abbildungs-tabellen} }
child { node { Seitenaustausch-Algorithmen}
child { node { FIFO} }
child { node { Second Chance} }
child { node { Least Recently Used} }
child { node { Working Set} }
child { node { WSClock} }
}
}
child { node { Segmentierung} }
;
\end { tikzpicture}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Dateisystem
\begin { tikzpicture} [ mindmap, grow cyclic, every node/.style=concept, concept color=lime!40,
level 1/.append style={ level distance=4cm} ,
level 2/.append style={ level distance=3cm, sibling angle=30} ,
every node/.append style={ scale=0.8} ]
\node { Dateisystem}
child { node { Dateimodelle}
child { node { Abstraktion Datei} }
child { node { symbolischer Namen} }
child { node { Datei-Attribute} }
child { node { Operationen auf Dateien} }
}
child { node { Dateisysteme}
child { node { Speichermedien} }
child { node { Management-Datenstrukturen}
child { node { Verzeichnisse} }
child { node { Freiliste} }
child { node { Superblock} }
}
}
child { node { Datenstrukturen u. Algorithmen} }
;
\end { tikzpicture}
\end { document}