Informatik/Betriebssysteme - Cheatsheet.tex

770 lines
32 KiB
TeX
Raw Normal View History

2021-02-09 13:29:13 +00:00
\documentclass[a4paper]{article}
2021-02-02 12:00:49 +00:00
\usepackage[ngerman]{babel}
2021-07-12 09:42:10 +00:00
\usepackage[utf8]{inputenc}
2021-02-02 12:00:49 +00:00
\usepackage{multicol}
\usepackage{calc}
\usepackage{ifthen}
2021-07-12 09:42:10 +00:00
\usepackage[landscape]{geometry}
2021-02-02 12:00:49 +00:00
\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage{color,graphicx,overpic}
\usepackage{listings}
\usepackage[compact]{titlesec} %less space for headers
\usepackage{mdwlist} %less space for lists
2021-01-08 11:52:10 +00:00
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pdflscape}
2021-01-12 12:06:23 +00:00
\usepackage{verbatim}
2021-02-09 13:29:13 +00:00
\usetikzlibrary{mindmap, arrows,shapes,positioning,shadows,trees}
\tikzstyle{every node}=[draw=black,thin,anchor=west, minimum height=2em]
2021-01-12 12:06:23 +00:00
\usepackage[hidelinks,pdfencoding=auto]{hyperref}
2021-07-12 09:42:10 +00:00
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{Betriebssysteme}
\fancyfoot[L]{\thepage/\pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt} %obere Trennlinie
\renewcommand{\footrulewidth}{0pt} %untere Trennlinie
2021-01-12 12:06:23 +00:00
2021-02-02 12:00:49 +00:00
\pdfinfo{
/Title (Betriebssysteme - Cheatsheet)
/Creator (TeX)
/Producer (pdfTeX 1.40.0)
/Author (Robert Jeutter)
/Subject ()
}
2021-01-08 11:52:10 +00:00
2021-02-02 12:00:49 +00:00
% 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}}
2021-07-12 09:42:10 +00:00
{\geometry{top=1.3cm,left=1cm,right=1cm,bottom=1.2cm} }
{\geometry{top=1.3cm,left=1cm,right=1cm,bottom=1.2cm} }
2021-02-02 12:00:49 +00:00
}
% 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
% 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}
2021-02-23 08:45:56 +00:00
%Tikz global setting
\tikzset{
topic/.style={
text centered,
text width=5cm,
level distance=1mm,
sibling distance=5mm,
rounded corners=2pt
},
subtopic/.style={
yshift=1.5cm,
text centered,
text width=3cm,
rounded corners=2pt,
fill=gray!10
},
theme/.style={
grow=down,
xshift=-0.6cm,
text centered,
text width=3cm,
edge from parent path={(\tikzparentnode.205) |- (\tikzchildnode.west)}
},
description/.style={
grow=down,
xshift=-0.5cm,
right,
text centered,
edge from parent path={(\tikzparentnode.200) |- (\tikzchildnode.west)}
},
level 1/.style={sibling distance=5.5cm},
level 1/.append style={level distance=2.5cm},
}
2021-01-08 11:52:10 +00:00
\begin{document}
2021-02-02 12:00:49 +00:00
\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}
2021-02-09 13:29:13 +00:00
\centering{
\includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_Uebersicht.png}
}
2021-02-02 12:00:49 +00:00
\paragraph{Prozesse}
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item BS-Abstraktionen zur Ausführung von Programmen
2021-02-02 12:00:49 +00:00
\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
2021-02-09 13:29:13 +00:00
\item Aufgaben: Prozesserzeugung u. -beendigung (u. Scheduling)
\item Datenstrukturen: Prozessdeskriptor, -deskriptortabelle
2021-02-02 12:00:49 +00:00
\end{itemize*}
2021-02-09 13:29:13 +00:00
\paragraph{Prozessdeskriptor}
2021-02-02 12:00:49 +00:00
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}
2021-02-09 13:29:13 +00:00
BS-Abstraktionen für sequentielle, nebenläufige Aktivitäten; sind Gegenstand des Schedulings
2021-02-02 12:00:49 +00:00
\paragraph{Multithread-Prozessmodell}
2021-02-09 13:29:13 +00:00
vollständige Beschreibung einer ablaufenden Aktivität. 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*}
\paragraph{Threaddeskriptor}
ein TCB enthält lediglich:
\begin{enumerate*}
\item Threadzustand (aktiv, bereit, blockiert, ...)
\item Ablaufkontext, falls nicht aktiv (Programmzähler, Stackpointer, Prozessorregister)
\end{enumerate*}
enthält nicht: Beschreibung der Ressourcen (Speicherlayout, Rechte)
2021-02-02 12:00:49 +00:00
\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)
2021-02-09 13:29:13 +00:00
\item der Betriebssystem-Kern(el) weiß nicht, dass Threads existieren
2021-02-02 12:00:49 +00:00
\end{itemize*}
2021-02-09 13:29:13 +00:00
\paragraph{Scheduling}
Entscheidung: Welche Threads erhalten wann und wie lange einen Prozessor/Prozessorkern zugeteilt?
2021-02-02 12:00:49 +00:00
\paragraph{Zustandsmodelle}
2021-02-09 13:29:13 +00:00
Threads können verschiedene Zustände annehmen\\
Beispiel 3/5-Zustandsmodell)
2021-02-02 12:00:49 +00:00
\centering{
\includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_Zustandsmodell.png}
}
\paragraph{Scheduling: Notwendigkeit u. Sinn}
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item allg: Anzahl Aktivitäten $>>$ Anzahl Prozessoren
2021-02-02 12:00:49 +00:00
\item nicht alle können gleichzeitig arbeiten
\item eine Auswahl muss getroffen werden
2021-02-09 13:29:13 +00:00
\item Auswahlstrategie: Schedulingstrategie, -Algorithmus
2021-02-02 12:00:49 +00:00
\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*}
2021-02-09 13:29:13 +00:00
\item FCFS (First Come, First Served)
\item SRTN (Shortest Remaining Time Next)
\item Round Robin (ohne und mit Prioritäten)
\item EDF (earliest deadline first)
2021-02-02 12:00:49 +00:00
\item ratenmonotones Scheduling
\end{itemize*}
\end{itemize*}
\paragraph{Privilegierungsebenen}
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item sind typischerweise 'kernel mode' und 'user mode'
\item steuern Rechte
2021-02-02 12:00:49 +00:00
\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*}
2021-02-09 13:29:13 +00:00
\item Durchsetzung von Regeln: "Nur ein im 'kernel mode' ablaufender Prozess hat Zugriff auf ..."
2021-02-02 12:00:49 +00:00
\end{itemize*}
2021-02-09 13:29:13 +00:00
\paragraph{Kommunikation und Synchronisation}
2021-02-02 12:00:49 +00:00
\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*}
2021-02-09 13:29:13 +00:00
\paragraph{kritischer Abschnitt}
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item in kritischen Abschnitt darf stets nur ein Thread sein
2021-02-02 12:00:49 +00:00
\item notwendig: wechselseitiger (gegenseitiger) Ausschluss
2021-02-09 13:29:13 +00:00
\item realisiert durch Entry- und Exit-Code z.B. die Semaphor-Operationen belegen (P) und freigeben (V)
2021-02-02 12:00:49 +00:00
\end{itemize*}
\paragraph{Mechanismen zur Synchronisation}
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item binäre Semaphore und mehrwertige Semaphore
2021-02-02 12:00:49 +00:00
\item (Hoarsche) 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*}
2021-02-09 13:29:13 +00:00
\item in BS laufen sehr viele Aktivitäten parallel ab
2021-02-02 12:00:49 +00:00
\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, ...
2021-02-09 13:29:13 +00:00
\item Einlegen/-stecken von Datenträgern
2021-02-02 12:00:49 +00:00
\item Aufruf von Systemdiensten
\item Fehlersituationen
\end{itemize*}
\end{itemize*}
\paragraph{Umgangsformen mit Ereignissen}
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item 'busy waiting'
\item 'periodic testing'
\item Unterbrechungen ('Interrupts')
2021-02-02 12:00:49 +00:00
\end{itemize*}
2021-02-09 13:29:13 +00:00
\paragraph{Programmiermodelle für Interrupts}
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item Prozeduren ($\rightarrow$ inline Prozeduraufrufmodell)
\item IPC-Operationen ($\rightarrow$ IPC-Modell)
\item Threads ($\rightarrow$ pop-up Thread Modell)
2021-02-02 12:00:49 +00:00
\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*}
2021-02-09 13:29:13 +00:00
\item anwesend: liegt Seite im Arbeitsspeicher? ('present'-Bit)
\item benutzt: wurde auf die Seite zugegriffen? ('used'-Bit)
\item verändert: ist Seite 'schmutzig'? ('dirty/modified'-Bit)
\item Schutz: erlaubte Zugriffsart je Privilegierungsebene ('access control list')
\item Caching: darf Inhalt der Seite gecached werden?
2021-02-02 12:00:49 +00:00
\end{itemize*}
\paragraph{Seitenaustauschalgorithmen}
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item Optimal: Auslagern der Arbeitsspeicherseite, deren
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item nächster Gebrauch am weitesten in der Zukunft liegt
\item Auslagerung nichts kostet
2021-02-02 12:00:49 +00:00
\end{itemize*}
2021-02-09 13:29:13 +00:00
\item einige Algorithmen, die sich diesem Optimum annähern:
2021-02-02 12:00:49 +00:00
\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}
2021-02-09 13:29:13 +00:00
Metainformationen über genau eine Datei
2021-02-02 12:00:49 +00:00
\centering{
2021-07-12 09:42:10 +00:00
\includegraphics[width=\textwidth/6]{Assets/Betriebssysteme_i-Node.png}
2021-02-02 12:00:49 +00:00
}
\paragraph{Verzeichnis}
2021-02-09 13:29:13 +00:00
= Menge von Paaren (Name, i-Node-Index)
2021-02-02 12:00:49 +00:00
2021-02-09 13:29:13 +00:00
\paragraph{Superblock} = Einstiegspunkt eines Dateisystems. Enthält Schlüsselparameter:
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\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
2021-02-02 12:00:49 +00:00
\end{itemize*}
\paragraph{Hardware-Prinzipien}
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item Controller-Register
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item in E/A-Adressräumen
2021-02-02 12:00:49 +00:00
\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*}
2021-02-09 13:29:13 +00:00
\item Auftragsmanagement
2021-02-02 12:00:49 +00:00
\item ISRs
\end{itemize*}
\paragraph{Betriebssystem-Architekturen}
\centering{
\includegraphics[width=\textwidth/4]{Assets/Betriebssysteme_Architekturen.png}
}
2021-02-09 13:29:13 +00:00
\paragraph{SELinux-Ansatz} neue Betriebssystem-Abstraktion
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item absolute Kontrolle über kritische Funktionen des Betriebssystems
\item spezifiziert durch Regelmenge
\item implementiert durch die SELinux-Sicherheitsarchitektur
2021-02-02 12:00:49 +00:00
\end{itemize*}
2021-02-09 13:29:13 +00:00
\paragraph{Robustheit} Tolerierung unvorhergesehener Fehler und Ausfälle
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item Mikrokernarchitekturen (Robuster als Makrokern)
\item Fehlerisolation
\item Möglichkeiten zur Fehlerbehebung (z.B. Micro-Reboot)
\end{itemize*}
\paragraph{Funktionale Eigenschaften}
\begin{itemize*}
\item Authentisierung, Verschlüsselung
\item Informations-management
\item Kommunikations-management
\item Ressourcen-management
\end{itemize*}
\paragraph{Nichtfunktionale Eigenschaften}
\begin{itemize*}
\item Sicherheit
\item Korrektheit
\item Echtzeitfähigkeit
\item Skalierbarkeit
\item Offenheit
\item Sparsamkeit
\item Verfügbarkeit
\item Robustheit
2021-02-02 12:00:49 +00:00
\end{itemize*}
2021-02-09 13:29:13 +00:00
\paragraph{Betriebssysteme}
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item Mainframe
2021-02-02 12:00:49 +00:00
\begin{itemize*}
2021-02-09 13:29:13 +00:00
\item performante E/A
\item Massen-daten-verarbeitung
2021-02-02 12:00:49 +00:00
\end{itemize*}
2021-02-09 13:29:13 +00:00
\item Server (Web Server, Fileshare)
\item Parallelrechner
\begin{itemize*}
\item parallele Algorithmen, hoher Rechenbedarf
\item schnelle IPC
\end{itemize*}
\item Desktop/Laptop
\item Echtzeit
\item Eingebettete
2021-02-02 12:00:49 +00:00
\end{itemize*}
\end{multicols}
2021-01-08 11:52:10 +00:00
2021-02-09 13:29:13 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Überblick
\begin{tikzpicture}[
topic/.style={
minimum height=8mm,
text depth = 0pt,
text centered,
text width=5cm,
level distance=1mm,
sibling distance=5mm,
rounded corners=2pt},
subtopic/.style={
yshift=1.5cm,
text centered,
text width=3cm,
rounded corners=2pt,
fill=gray!10},
theme/.style={
grow=down,
xshift=-0.6cm,
text centered,
text width=3cm,
edge from parent path={(\tikzparentnode.205) |- (\tikzchildnode.west)}},
level1/.style ={level distance=1cm},
level2/.style ={level distance=2cm},
level3/.style ={level distance=3cm},
level4/.style ={level distance=4cm},
level5/.style ={level distance=5cm},
level6/.style ={level distance=6cm},
level 1/.style={sibling distance=4cm},
level 1/.append style={level distance=3cm},
]
% Topic
\node[topic]{Betriebssysteme}
% Subtopic and Themes
child{ node [subtopic] {Prozessor-management}
2021-02-23 08:45:56 +00:00
child[theme,level distance=1cm]{ node {Prozesserzeugung}}
child[theme,level distance=2cm]{ node {Prozess-terminierung}}
child[theme,level distance=3cm]{ node {Threads}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child{ node [subtopic] {Scheduling}
2021-02-23 08:45:56 +00:00
child[theme,level distance=1cm]{ node {Scheduler-aktivierung}}
child[theme,level distance=2cm]{ node {Scheduling Strategien}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child{ node [subtopic] {Privilegierungs-ebenen}}
child{ node [subtopic] {Kommunikation \& Synchronisation}
2021-02-23 08:45:56 +00:00
child[theme,level distance=1cm]{ node {Elementare Konzepte}}
child[theme,level distance=2cm]{ node {wechselseitiger Ausschluss}}
child[theme,level distance=3cm]{ node {Mechanismen}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child{ node [subtopic] {Speicher-management}
2021-02-23 08:45:56 +00:00
child[theme,level distance=1cm]{ node {Speicher-technologien}}
child[theme,level distance=2cm]{ node {Speicher-klassen}}
child[theme,level distance=3cm]{ node {Relokation}}
child[theme,level distance=4cm]{ node {Swapping}}
child[theme,level distance=5cm]{ node {Virtueller Speicher}}
child[theme,level distance=6cm]{ node {Segmentierung}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child{ node [subtopic] {Dateisystem}
2021-02-23 08:45:56 +00:00
child[theme,level distance=1cm]{ node {Dateimodelle}}
child[theme,level distance=2cm]{ node {Dateisysteme}}
child[theme,level distance=3cm]{ node {Datenstrukturen \& Algorithmen}}
2021-01-08 11:52:10 +00:00
};
\end{tikzpicture}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Prozessormanagement
2021-02-09 13:29:13 +00:00
\begin{tikzpicture}[
level 1/.style={sibling distance=5.5cm},
level 1/.append style={level distance=2.5cm},
]
% Topic
\node[topic]{Prozessormanagement}
% Subtopic and Themes
child{ node [subtopic] {Aufgaben}
2021-02-23 08:45:56 +00:00
child[theme,level distance=1cm]{node{Prozess-identifikation}}
child[theme,level distance=2cm]{node{Scheduling}}
child[theme,level distance=3cm]{node{Ereignis-management}}
child[theme,level distance=4cm]{node{Rechte-management}}
child[theme,level distance=5cm]{node{Speicher-management}}
child[theme,level distance=6cm]{node{Prozessor-management}}
child[theme,level distance=7cm]{node{Kommunikations-management}}
child[theme,level distance=8cm]{node{Virtueller Adressraum}}
child[theme,level distance=9cm]{node{allg Ressourcen Management}}
2021-02-09 13:29:13 +00:00
}
child{ node [subtopic] {Prozesserzeugung}
2021-02-23 08:45:56 +00:00
child[theme,level distance=1cm]{ node {Vorraussetzungen}
2021-02-09 13:29:13 +00:00
child[description,level distance=1cm]{ node {Rechte}}
child[description,level distance=2cm]{ node {Ressourcen Verfügbar}}
child[description,level distance=3cm]{ node {Sicherheit}}
child[description,level distance=4cm]{ node{Fariness}}
child[description,level distance=5cm]{node{Robustheit / Überlastvermeidung}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child [theme,level distance=7cm]{ node {Namens-vergabe}
child[description,level distance=1cm]{node{eindeutig bzgl allen existierenden}}
child[description,level distance=2cm]{node{nicht eindeutig bzgl allen}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child [theme,level distance=10cm]{ node {Stammbaumpflege}
child[description,level distance=1cm]{node{erzeugt Kinder}}
child[description,level distance=2cm]{node{baumartige Hierarchie}}
child[description,level distance=3cm]{node{Verwaiste Prozesse $->$ Adoption}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child [theme,level distance=14cm]{ node {Allokation (von Ressourcen)}
child[description,level distance=1cm]{node{Arbeits-speicher Größe}}
child[description,level distance=2cm]{node{Zeitpunkt}}
child[description,level distance=3cm]{node{Prozessorzeit}}
child[description,level distance=4cm]{node{Format}}
2021-01-08 11:52:10 +00:00
}
}
2021-02-09 13:29:13 +00:00
child{ node [subtopic] {Prozessterminierung}
child[theme,level distance=1cm]{node{durch}
child[description,level distance=1cm]{node{Aufgabe erledigt}}
child[description,level distance=2cm]{node{Fehler aufgetreten}}
child[description,level distance=3cm]{node{durch Nutzer geschlossen}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child[theme,level distance=5cm]{node{Folgen}
child[description,level distance=1cm]{node{Freigabe der Ressourcen}}
child[description,level distance=2cm]{node{Benachrichtigung der 'Parents'}}
child[description,level distance=3cm]{node{Adoption der 'Children'}}
2021-01-08 11:52:10 +00:00
}
}
2021-02-09 13:29:13 +00:00
child{ node [subtopic] {Threads}
child[theme,level distance=1cm]{node{sequenziell innerhalb eines Prozesses}}
child[theme,level distance=3cm]{node{Kernel Level Thread}
child[description,level distance=1cm]{node{Implementiert im Betriebssystem}}
child[description,level distance=2cm]{node{Betriebssystem hat Kenntnis über Thread}}
child[description,level distance=3cm]{node{Multi-Thread-modell}}
child[description,level distance=4cm]{node{Performance durch Parallelität}}
child[description,level distance=5cm]{node{Nutzung von Mehrkern-architektur}}
2021-01-08 11:52:10 +00:00
}
2021-02-09 13:29:13 +00:00
child[theme,level distance=10cm]{node{User Level Thread}
child[description,level distance=1cm]{node{Implementiert auf Anwendungsebene}}
child[description,level distance=2cm]{node{Kenntnis nur bei Endbenutzer}}
child[description,level distance=3cm]{node{Single-Thread-Modell}}
child[description,level distance=4cm]{node{Performance durch geringen Overhead}}
child[description,level distance=5cm]{node{management ohne systemaufrufe}}
child[description,level distance=6cm]{node{Individualität}}
child[description,level distance=7cm]{node{Portabilität}}
2021-01-08 11:52:10 +00:00
}
2021-02-02 12:00:49 +00:00
};
2021-01-08 11:52:10 +00:00
\end{tikzpicture}
2021-02-23 08:45:56 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Scheduling
\begin{tikzpicture}[
level 1/.style={sibling distance=4.6cm},
level 1/.append style={level distance=3cm},
]
% Topic
\node[topic]{Scheduling}
% Subtopic and Themes
child{ node [subtopic] {Aktivierung}
child[theme,level distance=1cm]{node{Threadzustände im 3/5 Modell}
child[description,level distance=1cm]{node{bereit: kann aktiv werden}}
child[description,level distance=2cm]{node{aktiv: arbeitet}}
child[description,level distance=3cm]{node{blockiert: wartet auf Ereignis}}
child[description,level distance=4cm]{node{frisch: erzeugt, Rechte fehlen}}
child[description,level distance=5cm]{node{beendet: in Freigabephase}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child[theme,level distance=7cm]{node{Entscheidung Überprüfen bei}
child[description,level distance=1.5cm]{node{Prozess/Thread Erzeugung/Terminierung}}
child[description,level distance=3cm]{node{Ereignis eintritt}}
child[description,level distance=4cm]{node{Wechsel von Prioritäten}}
child[description,level distance=5cm]{node{periodisch}}
2021-01-12 12:06:23 +00:00
}
}
2021-02-23 08:45:56 +00:00
child{node[subtopic]{Ziele}
child[theme,level distance=1cm]{node{abhängig von Einsatz des Betriebssystems}}
child[theme,level distance=2.5cm]{node{ergänzt durch allg Ziele}}
child[theme,level distance=3.5cm]{node{Einhaltung von Fristen}}
child[theme,level distance=5cm]{node{Minimieren der Thread/Prozess-wechsel}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child { node [subtopic]{Batch-System}
child[theme,level distance=1cm]{node{Auslastung teurer Betriebsmittel (CPU)}}
child[theme,level distance=3cm]{node{Minimierung der Scheduling Kosten (wenig Wechsel, kurze Laufzeiten)}}
child[theme,level distance=5cm]{node{Maximierung des Durchsatzes (erledigte Arbeit/Zeit)}}
child[theme,level distance=6.5cm]{node{First Come First Served}
child[description,level distance=1cm]{node{in Reihenfolge der rechenbereiten}}
child[description,level distance=2cm]{node{sehr einfach, guter durchsatz}}
child[description,level distance=3cm]{node{nicht immer klug}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child[theme,level distance=10cm]{node{Shortest Remaining Time Next}
child[description,level distance=1cm]{node{Thread mit vorr. kürzester Restrechenzeit}}
child[description,level distance=2.5cm]{node{preemtiv; konkurrrierende Threads verdrängen}}
child[description,level distance=4cm]{node{Restlaufzeit muss vorliegen}}
2021-01-12 12:06:23 +00:00
}
}
2021-02-23 08:45:56 +00:00
child { node [subtopic]{Interaktives System}
child[theme,level distance=1cm]{node{Benutzer kann eingreifen}}
child[theme,level distance=2cm]{node{Minimierung von Reaktionszeiten}}
child[theme,level distance=3cm]{node{Fairness (mehrere Benutzer)}}
child[theme,level distance=4cm]{node{Round Robin Varianten}
child[description,level distance=1cm]{node{jeder Thread gleicher Teil der Zeitscheibe}}
child[description,level distance=2.5cm]{node{einfach zu implementieren}}
child[description,level distance=3.5cm]{node{geringe Algorithmuskosten}}
child[description,level distance=4.5cm]{node{schnelle Entscheidungen}}
child[description,level distance=5.5cm]{node{geringes Wissen notwendig}}
}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child{node[subtopic]{Prioritäten}
child[theme,level distance=1cm]{node{jeder Thread erhält indv. Priorität}}
child[theme,level distance=2.5cm]{node{höchste Prioritäten erhalten Prozessor}}
child[theme,level distance=4cm]{node{gleiche Priorität: Round Robin}}
}
child{node[subtopic]{in Echtzeitsystemen}
child[theme,level distance=1cm]{node{EDF: earliest deadline first}
child[description,level distance=1cm]{node{dynamische Lasten; adaptiv}}
child[description,level distance=2cm]{node{Threads nennen Deadline/Frist}}
child[description,level distance=3cm]{node{kausale und zeitliche Unabhängigkeit}}
child[description,level distance=4cm]{node{Priorität setzt kürzere Fristen}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child[theme,level distance=7cm]{node{RMS: rate-monotonic scheduling}
child[description,level distance=1cm]{node{periodische Lasten}}
child[description,level distance=2cm]{node{Threads nennen Periodendauer}}
child[description,level distance=3cm]{node{kürzeste Periodendauer aktiv}}
child[description,level distance=4cm]{node{statische Prioritäten}}
2021-01-12 12:06:23 +00:00
}
2021-01-08 11:52:10 +00:00
};
\end{tikzpicture}
2021-02-23 08:45:56 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Privilegierungsebenen
\begin{tikzpicture}[
level 1/.style={sibling distance=5cm},
level 1/.append style={level distance=3cm},
]
% Topic
\node[topic]{Privilegierungsebenen}
% Subtopic and Themes
child{node[subtopic]{Konzepte}
child[theme,level distance=1cm]{node{private Adressräume}}
child[theme,level distance=3cm]{node{Zugriffsschutz auf Arbeitsspeicherbereiche}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child{node[subtopic]{kritische Operationen}
child[theme,level distance=1cm]{node{Abschalten der Uhr}}
child[theme,level distance=2cm]{node{Abschalten des Ereignismanagement}}
child[theme,level distance=3cm]{node{Veränderung des Speicherlayouts}}
child[theme,level distance=4.3cm]{node{Veränderng kritischer Prozessorkontrollregister}}
child[theme,level distance=5.5cm]{node{Zugriff auf E/A Geräte}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child{node[subtopic]{P. Ebenen}
child[theme,level distance=1cm]{node{steuern Rechte}
child[description,level distance=1cm]{node{zur Ausführung privilegierter Prozessorinstruktionen}}
child[description,level distance=2.5cm]{node{zur Konfiguration des Arbeitsspeicher-Layouts}}
child[description,level distance=3.8cm]{node{zum Zugriff auf Arbeitsspeicherbereiche}}
child[description,level distance=5cm]{node{zum Zugriff auf E/A-Geräte}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child[theme,level distance=7cm]{node{realisiert in Ringen (0-3)}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child{node[subtopic]{Implementierung}
child[theme,level distance=1cm]{node{Hardware Unterstützung}}
child[theme,level distance=3cm]{node{Teil "Current Privilege Level" (CPL)}}
child[theme,level distance=5cm]{node{permantente Überwachung}}
child[theme,level distance=7cm]{node{Änderung der CPL beschränken}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child{node[subtopic]{Botschaften}
child[theme,level distance=1.3cm]{node{P.E. $< 3$ ablaufende Aktivität hat Zugriff auf kritische Ressourcen}}
child[theme,level distance=3cm]{node{P.E. 0 ablaufende Aktivität hat Zugriff auf}
child[description,level distance=1cm]{node{Ressourcen eines Prozessors}}
child[description,level distance=2.5cm]{node{MMU-Register zur Arbeitsspeicherkonfiguration}}
child[description,level distance=4cm]{node{Register der E/A-Peripherie}}
2021-01-12 12:06:23 +00:00
}
};
2021-01-08 11:52:10 +00:00
\end{tikzpicture}
2021-02-23 08:45:56 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Kommunikation und Synchronisation
\begin{tikzpicture}[
level 1/.style={sibling distance=5cm},
level 1/.append style={level distance=3cm},
]
% Topic
\node[topic]{Kommunikation und Synchronisation}
% Subtopic and Themes
child { node [subtopic]{Elementare Konzepte}
child[theme,level distance=1.5cm]{node{nur 1 Thread pro Speicherbereich arbeiten}}
child[theme,level distance=3cm]{node{Austausch von Daten zwischen Prozessen $\rightarrow$ Kommunikation}}
child[theme,level distance=5cm]{node{Abweichende Geschwindigkeiten von Sender und Empfänger $\rightarrow$ Synchronisation}}
child[theme,level distance=7.5cm]{node{Eine Phase, in der ein Thread eine exklusive Operation auf einer Ressource ausführt, heißt kritischer Abschnitt.}}
child[theme,level distance=10cm]{node{Kritische Abschnitte erfordern den wechselseitigen Ausschluss (die Isolation) konkurrierender Threads bzw. Prozesse.}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child { node [subtopic]{wechselseitiger Ausschluss}
child[theme,level distance=1.5cm]{node{Korrektheit: in kritischen Abschnitt höchstens ein Thread}}
child[theme,level distance=4cm]{node{Lebendigkeit: Falls ein Thread einen kritischen Abschnitt betreten möchte, dann betritt (irgendwann) ein Thread diesen Abschnitt.}}
child[theme,level distance=7.5cm]{node{Verhungerungs-freiheit: Kein Thread wartet für immer vor einem kritischen Abschnitt}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child { node[subtopic] {(binäre) Semaphore}
child[theme,level distance=1cm]{node{2 Zustände: frei, belegt}}
child[theme,level distance=2cm]{node{2 atomare Operationen P/V}}
child[theme,level distance=3.5cm]{node{Sämtliche Nutzer dieses kritischen Abschnitts müssen diese semaphore verwenden}}
child[theme,level distance=5cm]{node{Unterstützung durch Hardware: die TSL-Operation (TestAndSetLock)}}
child[theme,level distance=6.5cm]{node{Implementierung im Ressourcenmanagement}}
child[theme,level distance=9cm]{node{Mehrwertiger Semaphor: bestimmt maximale Anzahl von Threads, die gleichzeitig aktiv sein können}}
2021-01-08 11:52:10 +00:00
}
2021-02-23 08:45:56 +00:00
child { node [subtopic]{Hoare'sche Monitore}
child[theme,level distance=1.5cm]{node{Zusammenfassen von Daten/Operationen/Zugriff zu abstrakten Datentyp}}
child[theme,level distance=3.5cm]{node{Zugriff auf Daten über implizit synchronisierende Operation}}
child[theme,level distance=5.3cm]{node{kritischer Abschnitt und Daten in durch Monitor geschütztem Bereich}}
child[theme,level distance=6.8cm]{node{wechselseitiger Ausschluss}}
child[theme,level distance=8cm]{node{je Monitor eine Semaphor}}
child[theme,level distance=9cm]{node{am Eingang eine P-Operation}}
child[theme,level distance=10cm]{node{am Ausgang eine V-Operation}}
}
child { node[subtopic] {weitere Mechanismen}
child [theme,level distance=1cm]{ node {Trans-aktionaler Speicher}
child[description,level distance=1cm]{node{keine Sperre bei Ausschluss $\rightarrow$ Parallelität}}
child[description,level distance=2.5cm]{node{nach Operation untersuchen auf Fehler und Korrektur}}
child[description,level distance=4cm]{node{Kombination mit Transaktionen}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child [theme,level distance=6cm]{ node {Botschaften}
child[description,level distance=1cm]{node{Komm. zw. Prozessen innerhalb eines Systems}}
child[description,level distance=2cm]{node{Senden/Empfangen von Botschaften}}
child[description,level distance=3cm]{node{Kommunikationsparadigma}}
2021-01-12 12:06:23 +00:00
}
2021-02-23 08:45:56 +00:00
child [theme,level distance=10cm]{ node {Fernaufrufe (Remote Procedure Calls)}}
child [theme,level distance=11cm]{ node {System-aufrufe}}
child [theme,level distance=12cm]{ node {Ereignis-management}}
child [theme,level distance=13cm]{ node {IPC Modell}}
child [theme,level distance=14cm]{ node {pop-up-Thread-Modell}}
2021-01-08 11:52:10 +00:00
};
\end{tikzpicture}
2021-02-23 08:45:56 +00:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Speichermanagement
\begin{tikzpicture}[
level 1/.style={sibling distance=5cm},
level 1/.append style={level distance=3cm},
]
% Topic
\node[topic]{Virtueller Speicher}
% Subtopic and Themes
child { node [subtopic]{Virtuelles Speichermanagement}}
child { node [subtopic]{Abbildung}}
child { node [subtopic]{Memory Management Units}}
child { node [subtopic]{Seiten-abbildungs-tabellen}}
child { node [subtopic]{Seiten-austausch-Algorithmen}
child [theme,level distance=1cm]{ node {FIFO}}
child [theme,level distance=2cm]{ node {Second Chance}}
child [theme,level distance=3cm]{ node {Least Recently Used}}
child [theme,level distance=4cm]{ node {Working Set}}
child [theme,level distance=5cm]{ node {WSClock}}
};
2021-01-08 11:52:10 +00:00
\end{tikzpicture}
\end{document}