433 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			433 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \documentclass[a4pape]{article}
 | |
| \usepackage[utf8]{inputenc}
 | |
| \usepackage{tikz}
 | |
| \usepackage{pdflscape}
 | |
| \usepackage{verbatim}
 | |
| \usetikzlibrary{mindmap}
 | |
| \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
 | |
|   };
 | |
| }
 | |
| 
 | |
| %%%% 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}
 | |
|       child{ node {Mainframe}
 | |
|           child{ node {performante E/A}}
 | |
|           child{ node {Massen-daten-verarbeitung}}
 | |
|         }
 | |
|       child{ node {Server}
 | |
|           child{ node {Web Server, Fileshare}}
 | |
|         }
 | |
|       child{ node {Parallelrechner}
 | |
|           child{ node {parallele Algorithmen, hoher Rechenbedarf}}
 | |
|           child{ node {schnelle IPC}}
 | |
|         }
 | |
|       child{ node {Desktop/Laptop}
 | |
|           child{ node {Interaktivität \& Responsivität}}
 | |
|         }
 | |
|       child{ node {Echtzeit}
 | |
|           child{ node {Einhaltung zeitlicher Garantien}}
 | |
|           child{ node {Fahrzeug-, Anlagensteuerung}}
 | |
|         }
 | |
|       child{ node {Eingebettete}
 | |
|           child{ node {Controller, Kaffeemaschinen,...}}
 | |
|         }
 | |
|     }
 | |
|   ;
 | |
| \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}]
 | |
|   \node{Prozessor-management}
 | |
|   child[concept color=blue!30]  { node {Prozess-erzeugung}
 | |
|       child { node {Vorraussetzungen}
 | |
|           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}}
 | |
|       child{node{Kommu-nikations-management}}
 | |
|       child{node{Virtueller Adressraum}}
 | |
|       child{node{allg Ressourcen Management}}
 | |
|     }
 | |
|   child[concept color=green!30]  { node {Prozess-terminierung}
 | |
|       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}
 | |
|   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}}
 | |
|     }
 | |
|   child { node {Scheduling Strategien}
 | |
|       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}}
 | |
|         }
 | |
|     };
 | |
| \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}]
 | |
|   \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}}
 | |
|         }
 | |
|     };
 | |
| \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}
 | |
|   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}}
 | |
|     }
 | |
|   child { node {Mechanismen}
 | |
|       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}}
 | |
|         }
 | |
|     }
 | |
|   child { node {weitere}
 | |
|       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}}
 | |
|         }
 | |
|       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} |