Definitionen
This commit is contained in:
		
							parent
							
								
									9849c0e2c3
								
							
						
					
					
						commit
						e3f8c4baf4
					
				
										
											Binary file not shown.
										
									
								
							| @ -1,4 +1,14 @@ | ||||
| \documentclass[a4pape]{article} | ||||
| \usepackage[ngerman]{babel} | ||||
| \usepackage{multicol} | ||||
| \usepackage{calc} | ||||
| \usepackage{ifthen} | ||||
| \usepackage[landscape,left=1cm,top=1cm,right=1cm,nohead,nofoot]{geometry} | ||||
| \usepackage{amsmath,amsthm,amsfonts,amssymb} | ||||
| \usepackage{color,graphicx,overpic} | ||||
| \usepackage{listings} | ||||
| \usepackage[compact]{titlesec} %less space for headers | ||||
| \usepackage{mdwlist} %less space for lists | ||||
| \usepackage[utf8]{inputenc} | ||||
| \usepackage{tikz} | ||||
| \usepackage{pdflscape} | ||||
| @ -6,6 +16,13 @@ | ||||
| \usetikzlibrary{mindmap} | ||||
| \usepackage[hidelinks,pdfencoding=auto]{hyperref} | ||||
| 
 | ||||
| \pdfinfo{ | ||||
|     /Title (Betriebssysteme - Cheatsheet) | ||||
|     /Creator (TeX) | ||||
|     /Producer (pdfTeX 1.40.0) | ||||
|     /Author (Robert Jeutter) | ||||
|     /Subject () | ||||
| } | ||||
| % Information boxes | ||||
| \newcommand*{\info}[4][16.3]{ | ||||
|   \node [ annotation, #3, scale=0.65, text width = #1em, inner sep = 2mm ] at (#2) { | ||||
| @ -17,11 +34,368 @@ | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
| % This sets page margins to .5 inch if using letter paper, and to 1cm | ||||
| % if using A4 paper. (This probably isn't strictly necessary.) | ||||
| % If using another size paper, use default 1cm margins. | ||||
| \ifthenelse{\lengthtest { \paperwidth = 11in}} | ||||
|     { \geometry{top=.5in,left=.5in,right=.5in,bottom=.5in} } | ||||
|     {\ifthenelse{ \lengthtest{ \paperwidth = 297mm}} | ||||
|         {\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} } | ||||
|         {\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} } | ||||
|     } | ||||
| 
 | ||||
| % Turn off header and footer | ||||
| \pagestyle{empty} | ||||
| 
 | ||||
| % Redefine section commands to use less space | ||||
| \makeatletter | ||||
| \renewcommand{\section}{\@startsection{section}{1}{0mm}% | ||||
|                                 {-1ex plus -.5ex minus -.2ex}% | ||||
|                                 {0.5ex plus .2ex}%x | ||||
|                                 {\normalfont\large\bfseries}} | ||||
| \renewcommand{\subsection}{\@startsection{subsection}{2}{0mm}% | ||||
|                                 {-1explus -.5ex minus -.2ex}% | ||||
|                                 {0.5ex plus .2ex}% | ||||
|                                 {\normalfont\normalsize\bfseries}} | ||||
| \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{0mm}% | ||||
|                                 {-1ex plus -.5ex minus -.2ex}% | ||||
|                                 {1ex plus .2ex}% | ||||
|                                 {\normalfont\small\bfseries}} | ||||
| \makeatother | ||||
| 
 | ||||
| % Define BibTeX command | ||||
| \def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em | ||||
|     T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} | ||||
| 
 | ||||
| % Don't print section numbers | ||||
| \setcounter{secnumdepth}{0} | ||||
| 
 | ||||
| 
 | ||||
| \setlength{\parindent}{0pt} | ||||
| \setlength{\parskip}{0pt plus 0.5ex}     | ||||
| % compress space | ||||
| \setlength\abovedisplayskip{0pt} | ||||
| \setlength{\parskip}{0pt} | ||||
| \setlength{\parsep}{0pt} | ||||
| \setlength{\topskip}{0pt} | ||||
| \setlength{\topsep}{0pt} | ||||
| \setlength{\partopsep}{0pt} | ||||
| \linespread{0.5} | ||||
| \titlespacing{\section}{0pt}{*0}{*0} | ||||
| \titlespacing{\subsection}{0pt}{*0}{*0} | ||||
| \titlespacing{\subsubsection}{0pt}{*0}{*0} | ||||
| 
 | ||||
| %My Environments | ||||
| \newtheorem{example}[section]{Example} | ||||
| % ----------------------------------------------------------------------- | ||||
| 
 | ||||
| 
 | ||||
| %%%% 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} | ||||
| 
 | ||||
| 
 | ||||
| \raggedright | ||||
| \begin{multicols}{3}\scriptsize | ||||
|   % multicol parameters | ||||
|   % These lengths are set only within the two main columns | ||||
|   %\setlength{\columnseprule}{0.25pt} | ||||
|   \setlength{\premulticols}{1pt} | ||||
|   \setlength{\postmulticols}{1pt} | ||||
|   \setlength{\multicolsep}{1pt} | ||||
|   \setlength{\columnsep}{2pt} | ||||
| 
 | ||||
|   \paragraph{Prozesse} | ||||
|   \begin{itemize*} | ||||
|     \item Betriebssystem-Abstraktionen zur Ausführung von Programmen | ||||
|     \item Eigentümer von Ressourcen | ||||
|     \item differenzierte Prozessmodelle: definieren konkrete Prozesseigenschaften | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Prozessmanagement} | ||||
|   \begin{itemize*} | ||||
|     \item Komponente eines Betriebssystems, die Prozessmodell dieses Betriebssystems implementiert | ||||
|     \item wichtige Aufgaben: Prozesserzeugung u. -beendigung (u. Scheduling) | ||||
|     \item wichtigste Datenstrukturen: Prozessdeskriptor, Prozessdeskriptortabelle | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Prozessdeskriptor (PCB)} | ||||
|   Buchführung über sämtliche zum Management eines Prozesses notwendigen Informationen | ||||
|   \begin{itemize*} | ||||
|     \item Prozessidentifikation | ||||
|     \item Rechtemanagement | ||||
|     \item Speichermanagement | ||||
|     \item Prozessormanagement | ||||
|     \item Kommunikationsmanagement | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Prozessdeskriptortabelle} | ||||
|   enthält: Prozessdeskriptoren aller momentan existierenden Prozesse | ||||
| 
 | ||||
|   \paragraph{Threads} | ||||
|   \begin{itemize*} | ||||
|     \item Betriebssystem-Abstraktionen für sequentielle, nebenläufige Aktivitäten | ||||
|     \item sind Gegenstand des Schedulings | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Multithread-Prozessmodell} | ||||
|   \begin{itemize*} | ||||
|     \item vollständige Beschreibung einer ablaufenden Aktivität | ||||
|     \item Dazu gehören insbesondere | ||||
|     \begin{enumerate*} | ||||
|       \item das ablaufende Programm | ||||
|       \item zugeordnete Betriebsmittel (Prozessor/Speicher/Kommunikation) | ||||
|       \item Rechte | ||||
|       \item prozessinterne parallele Aktivitäten (Threads) und deren Bearbeitungszustände | ||||
|     \end{enumerate*} | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Threaddeskriptor (TCB)} | ||||
|   \begin{itemize*} | ||||
|     \item ein TCB enthält lediglich: | ||||
|     \begin{enumerate*} | ||||
|       \item Threadzustand (aktiv, bereit, blockiert, ...) | ||||
|       \item Ablaufkontext, falls nicht aktiv (Programmzähler, Stackpointer, Prozessorregister) | ||||
|     \end{enumerate*} | ||||
|     \item enthält nicht: Beschreibung der Ressourcen (Speicherlayout, Rechte) | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Thread-Typen} | ||||
|   \begin{itemize*} | ||||
|     \item Kernel Level Threads (KLTs): Kenntnis über Threads: hat Betriebssystem, genauer: der Betriebssystem-Kern(el) | ||||
|     \item User Level Threads (ULTs): Kenntnis über Threads: existiert nur auf Benutzer-Ebene (user level) | ||||
|     \item das Betriebssystem [genauer: der Betriebssystem-Kern(el)] weiß nicht, dass Threads existieren | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Scheduling: Grundaufgabe} | ||||
|   Entscheidung: Welche Threads erhalten wann u. wie lange einen Prozessor/Prozessorkern zugeteilt? | ||||
| 
 | ||||
|   \paragraph{Zustandsmodelle} | ||||
|   \begin{itemize*} | ||||
|     \item Threads können verschiedene Zustände annehmen (Beispiel 3/5-Zustandsmodell) | ||||
|     \item bereit, aktiv, blockiert, frisch, beendet | ||||
|   \end{itemize*} | ||||
|   \centering{ | ||||
|     \includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_Zustandsmodell.png} | ||||
|   } | ||||
| 
 | ||||
|   \paragraph{Scheduling: Notwendigkeit u. Sinn} | ||||
|   \begin{itemize*} | ||||
|     \item im Allgemeinen: Anzahl der Aktivitäten >> Anzahl der Prozessoren | ||||
|     \item nicht alle können gleichzeitig arbeiten | ||||
|     \item eine Auswahl muss getroffen werden | ||||
|     \item Auswahlstrategie: Schedulingstrategie, ~algorithmus | ||||
|     \item die Betriebssystemkomponente: Scheduler | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Scheduling-Strategien} | ||||
|   \begin{itemize*} | ||||
|     \item abhängig vom Einsatzfeld eines Betriebssystems | ||||
|     \begin{itemize*} | ||||
|       \item Echtzeitsysteme: Einhaltung von Fristen | ||||
|       \item interaktive Systeme: Reaktivität | ||||
|     \end{itemize*} | ||||
|     \item wichtige Strategien: | ||||
|     \begin{itemize*} | ||||
|       \item FCFS | ||||
|       \item SRTN | ||||
|       \item Round Robin (ohne u. mit Prioritäten) | ||||
|       \item EDF | ||||
|       \item ratenmonotones Scheduling | ||||
|     \end{itemize*} | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Privilegierungsebenen} | ||||
|   \begin{itemize*} | ||||
|     \item sind typischerweise "kernel mode" und "user mode" | ||||
|     \item steuern Rechte ... | ||||
|     \begin{itemize*} | ||||
|       \item zur Ausführung privilegierter Prozessorinstruktionen | ||||
|       \item zur Konfiguration des Arbeitsspeicherlayouts | ||||
|       \item zum Zugriff auf Arbeitsspeicherbereiche | ||||
|       \item zum Zugriff auf E/A-Geräte | ||||
|     \end{itemize*} | ||||
|     \item ermöglichen: Durchsetzung von Regeln: "Nur ein im 'kernel mode' ablaufender Prozess hat Zugriff auf ..." | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Kommunikation u. Synchronisation} | ||||
|   \begin{itemize*} | ||||
|     \item Austausch von Daten zwischen Prozessen = Kommunikation (Inter-Prozess-Kommunikation, IPC) | ||||
|     \item Abweichende Geschwindigkeiten von Sender und Empfänger: behandelt durch Synchronisation | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{kritischer Abschnitt und wechselseitiger Ausschluss} | ||||
|   \begin{itemize*} | ||||
|     \item in einem kritischen Abschnitt darf sich stets nur ein Thread aufhalten | ||||
|     \item notwendig: wechselseitiger (gegenseitiger) Ausschluss | ||||
|     \item realisiert durch Entry- u. Exit-Code [z.B. die Semaphor-Operationen belegen (P) und freigeben (V)] | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Mechanismen zur Synchronisation} | ||||
|   \begin{itemize*} | ||||
|     \item Semaphore (binäre Semaphore u. mehrwertige Semaphore) (ansehen!) | ||||
|     \item (Hoar‘sche) Monitore | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Mechanismen zur Kommunikation} | ||||
|   \begin{itemize*} | ||||
|     \item Shared Memory (gemeinsamer Speicher) | ||||
|     \item Botschaften | ||||
|     \item Fernaufrufe | ||||
|     \item Systemaufrufe | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Notwendigkeit des Ereignismanagement} | ||||
|   \begin{itemize*} | ||||
|     \item in Betriebssystemen laufen sehr viele Aktivitäten parallel ab | ||||
|     \item dabei entstehen immer wieder Situationen, in denen auf unterschiedlichste Ereignisse reagiert werden muss, z.B. | ||||
|     \begin{itemize*} | ||||
|       \item Timerablauf | ||||
|       \item Benutzereingaben (Maus, Tastatur) | ||||
|       \item Eintreffen von Daten von Netzwerken, Festplatten, ... | ||||
|       \item Einlegen/stecken von Datenträgern | ||||
|       \item Aufruf von Systemdiensten | ||||
|       \item Fehlersituationen | ||||
|     \end{itemize*} | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Umgangsformen mit Ereignissen} | ||||
|   \begin{itemize*} | ||||
|     \item "busy waiting" | ||||
|     \item "periodic testing" | ||||
|     \item Unterbrechungen ("Interrupts") | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Programmiermodelle zum Umgang mit Interrupts} | ||||
|   \begin{itemize*} | ||||
|     \item Prozeduren (→ inline Prozeduraufrufmodell) | ||||
|     \item IPC-Operationen (→ IPC-Modell) | ||||
|     \item Threads (→ pop-up Thread Modell) | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Interrupts auf Anwendungsebene} | ||||
|   \begin{itemize*} | ||||
|     \item notwendig: Event Service Routines (ESRs) | ||||
|     \item Beispiel: UNIX/Linux-Signalbehandlung | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Virtuelle Prozessadressräume und physischer Adressraum, Abbildungen} | ||||
|   \centering{ | ||||
|     \includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_Adressräume.png} | ||||
|   } | ||||
| 
 | ||||
|   \paragraph{Seitenabbildungstabellen} | ||||
|   \centering{ | ||||
|     \includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_Seitenabbildungstabellen.png} | ||||
|   } | ||||
| 
 | ||||
|   \paragraph{Seitentabelleneinträge} | ||||
|   \centering{ | ||||
|     \includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_Seitentabelleneinträge.png} | ||||
|   } | ||||
|   \begin{itemize*} | ||||
|     \item anwesend:Indikator, ob Seite im Arbeitsspeicher liegt ("present"-Bit) | ||||
|     \item benutzt: Indikator, ob auf die Seite zugegriffen wurde ("used/referenced"-Bit) | ||||
|     \item verändert: Indikator, ob Seite "schmutzig" ist ("dirty/modified"-Bit) | ||||
|     \item Schutz: erlaubte Zugriffsart je Privilegierungsebene ("access control list") | ||||
|     \item Caching: Indikator, ob Inhalt der Seite ge"cached" werden darf | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Seitenaustauschalgorithmen} | ||||
|   \begin{itemize*} | ||||
|     \item Optimale Strategie: Auslagerung derjenigen Arbeitsspeicherseite, deren ... | ||||
|     \begin{itemize*} | ||||
|       \item nächster Gebrauch am weitesten in der Zukunft liegt ("Hellseher") | ||||
|       \item Auslagerung nichts kostet (man müsste man wissen, ob eine Seite seit ihrer Einlagerung verändert wurde) | ||||
|     \end{itemize*} | ||||
|     \item im Folgenden: einige Algorithmen, die sich diesem Optimum annähern: | ||||
|     \begin{itemize*} | ||||
|       \item First-In, First-Out (FIFO) | ||||
|       \item Second-Chance | ||||
|       \item Least Recently Used (LRU) | ||||
|       \item Working Set / WSClock | ||||
|     \end{itemize*} | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{i-Node} | ||||
|   i-Node: Metainformationen über genau eine Datei | ||||
|   \centering{ | ||||
|     \includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_i-Node.png} | ||||
|   } | ||||
| 
 | ||||
|   \paragraph{Verzeichnis} | ||||
|   Verzeichnis = Menge von Paaren (Name, i-Node-Index) | ||||
| 
 | ||||
|   \paragraph{Superblock} | ||||
|   \begin{itemize*} | ||||
|     \item Superblock: Einstiegspunkt eines Dateisystems | ||||
|     \item enthält: Schlüsselparameter | ||||
|     \begin{itemize*} | ||||
|       \item Name des Dateisystems | ||||
|       \item Typ (NTFS, Ext * , HFS, ...) → Layout der Metadaten | ||||
|       \item Größe und Anzahl Sektoren | ||||
|       \item Ort und Größe der i-Node-Tabelle | ||||
|       \item Ort und Größe der Freiliste | ||||
|       \item i-Node-Nummer des Wurzelverzeichnisses | ||||
|     \end{itemize*} | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Hardware-Prinzipien} | ||||
|   \begin{itemize*} | ||||
|     \item\item Controller-Register | ||||
|     \begin{itemize*} | ||||
|       \item\item in E/A-Adressräumen | ||||
|       \item im Arbeitsspeicher (Memory Mapped E/A) | ||||
|       \item Isolation, Robustheit, Sicherheit | ||||
|     \end{itemize*} | ||||
|     \item Interruptsystem: asynchrone Benachrichtigungen | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Software-Prinzipien} | ||||
|   Gerätemanager (Treiber) | ||||
|   \begin{itemize*} | ||||
|     \item\item Auftragsmanagement | ||||
|     \item ISRs | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Betriebssystem-Architekturen} | ||||
|   \centering{ | ||||
|     \includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_Architekturen.png} | ||||
|   } | ||||
| 
 | ||||
|   \paragraph{Sicherheit} | ||||
|   \begin{itemize*} | ||||
|     \item\item Schutz des Betriebssystems | ||||
|     \item z.B. gegen Angriffe von außen | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{SELinux-Ansatz} | ||||
|   \begin{itemize*} | ||||
|     \item\item Sicherheitspolitiken in SELinux | ||||
|     \item neue Betriebssystem-Abstraktion | ||||
|     \begin{itemize*} | ||||
|       \item\item absolute Kontrolle über kritische Funktionen des Betriebssystems | ||||
|       \item spezifiziert durch Regelmenge | ||||
|       \item implementiert durch die SELinux-Sicherheitsarchitektur | ||||
|     \end{itemize*} | ||||
|   \end{itemize*} | ||||
| 
 | ||||
|   \paragraph{Robustheit} | ||||
|   \begin{itemize*} | ||||
|     \item Ziel: Tolerierung unvorhergesehener Fehler und Ausfälle | ||||
|     \item Mikrokernarchitekturen: robuster als Makrokernarchitekturen | ||||
|     \item Gründe: | ||||
|     \begin{itemize*} | ||||
|       \item\item Fehlerisolation | ||||
|       \item Möglichkeiten zur Fehlerbehebung (z.B. Micro-Reboot) | ||||
|     \end{itemize*} | ||||
|   \end{itemize*} | ||||
| 
 | ||||
| 
 | ||||
| \end{multicols} | ||||
| \newpage | ||||
| 
 | ||||
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Überblick | ||||
| \begin{tikzpicture}[ mindmap, grow cyclic, every node/.style=concept, concept color=black!10, | ||||
|     level 1/.append style={level distance=4cm}, | ||||
| @ -184,8 +558,7 @@ | ||||
|           child{node{Individualität}} | ||||
|           child{node{Portabilität}} | ||||
|         } | ||||
|     } | ||||
|   ; | ||||
|     }; | ||||
| \end{tikzpicture} | ||||
| 
 | ||||
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Scheduling | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user