diff --git a/BS Spicker.lyx b/BS Spicker.lyx index 03d4cf628b193d7655195a55033cbfc5edd9dfdb..dec7abca3ecacd422ad2d3d2e3ee3cd17958bbe7 100644 --- a/BS Spicker.lyx +++ b/BS Spicker.lyx @@ -864,8 +864,52 @@ Kontrollstrukturen \end_layout \begin_layout Plain Layout -Bedingungen prüfen mit Befehl test oder [ ... - ]: +\begin_inset Flex Multiple Columns +status open + +\begin_layout Plain Layout +\begin_inset Argument 1 +status open + +\begin_layout Plain Layout + +2 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Bedingungen prüfen mit Befehl +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{test} +\end_layout + +\end_inset + + oder +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{[ ... + ]} +\end_layout + +\end_inset + +: \end_layout \begin_layout Plain Layout @@ -1040,6 +1084,22 @@ end{minted} \end_inset +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +columnbreak +\end_layout + +\end_inset + + \end_layout \begin_layout Plain Layout @@ -1059,13 +1119,12 @@ begin{minted}{bash} \begin_layout Plain Layout -for <Iterator> # Bsp. - ((i=0; i<3; i++)) +for <Iterator> \end_layout \begin_layout Plain Layout -do # oder for variable in Liste +do \end_layout \begin_layout Plain Layout @@ -1090,6 +1149,43 @@ end{minted} \end_layout +\begin_layout Plain Layout +Iterator-Beispiele: +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{for ((i=0; i<3; i++))} +\end_layout + +\end_inset + + oder +\begin_inset Newline newline +\end_inset + + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{for variable in Liste} +\end_layout + +\end_inset + +. +\end_layout + \begin_layout Plain Layout while: \end_layout @@ -1135,6 +1231,11 @@ end{minted} \end_inset +\end_layout + +\end_inset + + \end_layout \begin_layout Paragraph @@ -1145,6 +1246,22 @@ grep Filtert stdin nach Suchmuster: regulärer Ausdruck oder einfaches Stringmuster. \end_layout +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +columnbreak +\end_layout + +\end_inset + + +\end_layout + \begin_layout Section Programmierung in C und C++ \end_layout @@ -3895,7 +4012,7 @@ Race Condition Kritischer Abschnitt \series default : Codeteile, die nur von einem Prozess gleichzeitig genutzt werden dürfen. - Dieser darf auch unterbrochen werden, aber kein andere Prozess darf in + Dieser darf auch unterbrochen werden, aber kein anderer Prozess darf in dieser Zeit den kritischen Abschnitt betreten. \end_layout @@ -3961,6 +4078,10 @@ Busy Waiting ) \end_layout +\begin_layout Plain Layout +\begin_inset Note Comment +status collapsed + \begin_layout Plain Layout Varianten: \end_layout @@ -3995,13 +4116,20 @@ Dijkstra-Kriterium Fortschritt nicht erfüllt: Wenn ein Prozess im nicht und den anderen vom Eintreten in den kritischen Abschnitt abhalten. \end_layout +\end_inset + + +\end_layout + \begin_layout Subparagraph -Ansatz von Petersen +Ansatz von +\noun on +Peterson \end_layout \begin_layout Plain Layout -Führt zusätzliches Array ein, in dem vermerkt wird, ob ein Prozess in den - KA eintreten möchte. +Führt Array ein, in dem vermerkt wird, ob ein Prozess in den KA eintreten + möchte. \end_layout \begin_layout Plain Layout @@ -4015,12 +4143,16 @@ Beim Verlassen wird das Interesse am Eintritt zurückgesetzt. \end_layout \begin_layout Plain Layout -Programme müssen sich nicht mehr strikt abwechseln und daher auch nicht - in Endlosschleife laufen. +Programme müssen sich nicht strikt abwechseln und daher auch nicht in Endlosschl +eife laufen. \end_layout \begin_layout Plain Layout -Dijkstra-Kriterium Fortschritt nun auch erfüllt. +Alle +\noun on +Dijkstra +\noun default +-Kriterien erfüllt. \end_layout \begin_layout Plain Layout @@ -4159,21 +4291,6 @@ Signal and continue: Prozess der Signal aufgerufen hat läuft erst fertig, Programmierunterstützung: \end_layout -\begin_layout Plain Layout -\begin_inset Flex TODO Note (inline) -status open - -\begin_layout Plain Layout -evtl. - raus lassen. - Wird so was vorgegeben wenn gebraucht (glaube schon)? -\end_layout - -\end_inset - - -\end_layout - \begin_layout Itemize C \end_layout @@ -4692,7 +4809,70 @@ Jeder Prozess aus einer Prozessmenge wartet auf ein Ereignis, dass nur durch \end_layout \begin_layout Plain Layout -Beispiel: Philosophenproblem +\begin_inset Tabular +<lyxtabular version="3" rows="2" columns="2"> +<features tabularvalignment="middle" tabularwidth="100col%"> +<column alignment="left" valignment="top" width="0pt"> +<column alignment="left" valignment="top" width="0pt"> +<row> +<cell alignment="left" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Philosophenproblem +\end_layout + +\end_inset +</cell> +<cell alignment="left" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Ressourcen-Zuteilungsgraph +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="left" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Graphics + filename Pictures/syncPhilosophenproblem.png + lyxscale 30 + width 34col% + +\end_inset + + +\end_layout + +\end_inset +</cell> +<cell alignment="left" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Graphics + filename Pictures/syncRessourcenGraph.png + lyxscale 30 + width 59.5col% + +\end_inset + + +\end_layout + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + \end_layout \begin_layout Plain Layout @@ -4765,26 +4945,25 @@ Zirkuläres Warten: Deadlock-Strategien: \end_layout -\begin_layout Plain Layout -\begin_inset Graphics - filename Pictures/syncDeadlockStrategien.png - lyxscale 20 - width 100col% - -\end_inset +\begin_layout Description +\begin_inset ERT +status open +\begin_layout Plain Layout +Erkennen und Beheben: \end_layout -\begin_layout Plain Layout -Erkennen und Beheben: Wenn Deadlock erkannt wird (z.B. +\end_inset + + Wenn Deadlock erkannt wird (z.B. über Ressourcen-Zuteilungsgraphen) wird der Zyklus durch Unterbrechung - (Zuteilung einer seiner Ressoucen an anderen Prozess, nicht immer möglich), + (Zuteilung einer seiner Ressourcen an anderen Prozess, nicht immer möglich), Rollback (Zurücksetzen zu vorherigem Checkpoint) oder Abbruch eines Prozesses durchbrochen. \end_layout -\begin_layout Plain Layout +\begin_layout Description Verhindern: Eines der \noun on Coffman @@ -4795,12 +4974,13 @@ Coffman in lineare Ordnung bringen und nur aufsteigend anfragen. \end_layout -\begin_layout Plain Layout -Vermeiden: Ressourcen nur zuteilen, wenn danach ein sicherer Zustand vorliegt. +\begin_layout Description +Vermeiden: Ressourcen nur zuteilen, wenn danach ein sicherer Zustand (s.u.) + vorliegt. \end_layout -\begin_layout Plain Layout -Ignorieren: Anwender wird das Gerät / die Anwedung neu starten müssen. +\begin_layout Description +Ignorieren: Anwender wird das Gerät / die Anwendung neu starten müssen. \end_layout \begin_layout Paragraph @@ -4904,6 +5084,10 @@ mintinline{bash}{mkfifo pipename} , danach können Ein-und Ausgaben durch die < und > Operatoren aus der Pipe gelesen oder rein geschrieben werden. Zum Reinschreiben müssen aber beide Seiten angeschlossen sein! +\begin_inset Note Comment +status collapsed + +\begin_layout Plain Layout \begin_inset Newline newline \end_inset @@ -4923,6 +5107,11 @@ mintinline{c}{pipe(fds)} in unistd.h, wobei fds ein Array aus 2 File Deskriptoren wird. \end_layout +\end_inset + + +\end_layout + \begin_layout Plain Layout \begin_inset Note Comment status collapsed @@ -4955,8 +5144,20 @@ Nur in Unix verfügbar, einfache und effiziente, asynchrone IPC. \end_layout \begin_layout Plain Layout -Prozesse können anderen Prozessen ein Signal senden, wenn sie die Berechtigung - dazu haben. +Prozesse können anderen Prozessen ein Signal senden ( +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{kill(pid, signalId)} +\end_layout + +\end_inset + +), wenn sie die Berechtigung dazu haben. \end_layout \begin_layout Plain Layout @@ -5046,10 +5247,6 @@ n-Controller gaukelt Disketten-artige Struktur mit nach innen kleiner werdenden Positionierung des Kopfes dauert. \end_layout -\begin_layout Plain Layout -\begin_inset Note Comment -status collapsed - \begin_layout Paragraph Flash-Speicher \end_layout @@ -5064,11 +5261,6 @@ z.B. USB-Sticks, SSDs. \end_layout -\end_inset - - -\end_layout - \begin_layout Paragraph CD-ROM und Verwandte \end_layout @@ -5092,7 +5284,7 @@ Realisierung als verkettete Liste aus Blöcken: Sequenzieller Zugriff einfach, \end_layout \begin_layout Plain Layout -als Tabelle im RAM: +Als Tabelle im RAM: \series bold File Allocation Table (FAT) \series default @@ -5379,8 +5571,11 @@ Chainloading \end_layout \begin_layout Plain Layout -Betriebssystem sollte durch virtuelle Dateisysteme die Spezifika der Dateisystem -e vor Anwendungen verbergen. +Betriebssystem sollte durch +\series bold +virtuelle Dateisysteme +\series default + die Spezifika der Dateisysteme vor Anwendungen verbergen. \end_layout \begin_layout Plain Layout @@ -5406,6 +5601,10 @@ Datenträger unterteilt in Sektoren (vom Medium definiert), Blöcke (kleinste Einheit im Dateisystem, Vielfaches von Sektoren) und Blockgruppen. \end_layout +\begin_layout Plain Layout +\begin_inset Note Comment +status open + \begin_layout Plain Layout Struktur: \end_layout @@ -5419,6 +5618,11 @@ Struktur: \end_inset +\end_layout + +\end_inset + + \end_layout \begin_layout Plain Layout @@ -5435,7 +5639,7 @@ Nach Art des Elements, Zugriffsrechten und Zeitstempeln folgt Liste von \end_layout \begin_layout Plain Layout -Problem: Kein Journaling –> Bei Fehlern Inkonsistenzen wahrscheinlich. +Problem: Kein Journaling → Bei Fehlern Inkonsistenzen wahrscheinlich. \end_layout \begin_layout Plain Layout @@ -5530,7 +5734,7 @@ Jede Datei / Unterverzeichnis 32-Byte-Eintrag der Dateiname im 8.3-Format, \end_layout \begin_layout Plain Layout -Jedes Cluster verweist auf das nächste Cluster. +Jedes Cluster verweist auf das nächste Cluster der Datei. \end_layout \begin_layout Plain Layout @@ -5577,11 +5781,7 @@ Immediate File \end_layout \begin_layout Plain Layout -Verwaltung freier MFT-Einträge als Bitmap -\end_layout - -\begin_layout Plain Layout -Adresse der MFT im Bootblock. +Verwaltung freier MFT-Einträge als Bitmap, Adresse der MFT steht im Bootblock. \end_layout \begin_layout Plain Layout @@ -5679,18 +5879,6 @@ Neuer Standard für CD-ROMs: Längere Dateinamen, unbeschränkte Verzeichnistief \end_layout \begin_layout Plain Layout -\begin_inset ERT -status open - -\begin_layout Plain Layout - -%Rausnehmen wenn Programmierunterstützung drin bleibt, sonst sieht es blöd - aus. -\end_layout - -\end_inset - - \begin_inset Newpage clearpage \end_inset diff --git a/BS Spicker.lyx~ b/BS Spicker.lyx~ index 60c052ece4ee3cd23ef359cd61740e5651c08e58..06b0271dad8ac3fa43be823f5b2dc7f9a6e8cb49 100644 --- a/BS Spicker.lyx~ +++ b/BS Spicker.lyx~ @@ -16,6 +16,8 @@ \columnseprule.4pt \columnsep20pt \setlist{itemsep=0.05em,leftmargin=*} + +% Die von LyX autogenerierte Environment abändern \renewenvironment{elabeling}[2][]% {\settowidth{\lyxlabelwidth}{#2} \begin{description}[font=\textbf,style=sameline, @@ -862,8 +864,52 @@ Kontrollstrukturen \end_layout \begin_layout Plain Layout -Bedingungen prüfen mit Befehl test oder [ ... - ]: +\begin_inset Flex Multiple Columns +status open + +\begin_layout Plain Layout +\begin_inset Argument 1 +status open + +\begin_layout Plain Layout + +2 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Bedingungen prüfen mit Befehl +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{test} +\end_layout + +\end_inset + + oder +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{[ ... + ]} +\end_layout + +\end_inset + +: \end_layout \begin_layout Plain Layout @@ -1038,6 +1084,22 @@ end{minted} \end_inset +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +columnbreak +\end_layout + +\end_inset + + \end_layout \begin_layout Plain Layout @@ -1057,13 +1119,12 @@ begin{minted}{bash} \begin_layout Plain Layout -for <Iterator> # Bsp. - ((i=0; i<3; i++)) +for <Iterator> \end_layout \begin_layout Plain Layout -do # oder for variable in Liste +do \end_layout \begin_layout Plain Layout @@ -1088,6 +1149,43 @@ end{minted} \end_layout +\begin_layout Plain Layout +Iterator-Beispiele: +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{for ((i=0; i<3; i++))} +\end_layout + +\end_inset + + oder +\begin_inset Newline newline +\end_inset + + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{for variable in Liste} +\end_layout + +\end_inset + +. +\end_layout + \begin_layout Plain Layout while: \end_layout @@ -1133,6 +1231,11 @@ end{minted} \end_inset +\end_layout + +\end_inset + + \end_layout \begin_layout Paragraph @@ -1143,6 +1246,22 @@ grep Filtert stdin nach Suchmuster: regulärer Ausdruck oder einfaches Stringmuster. \end_layout +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +columnbreak +\end_layout + +\end_inset + + +\end_layout + \begin_layout Section Programmierung in C und C++ \end_layout @@ -3893,7 +4012,7 @@ Race Condition Kritischer Abschnitt \series default : Codeteile, die nur von einem Prozess gleichzeitig genutzt werden dürfen. - Dieser darf auch unterbrochen werden, aber kein andere Prozess darf in + Dieser darf auch unterbrochen werden, aber kein anderer Prozess darf in dieser Zeit den kritischen Abschnitt betreten. \end_layout @@ -3959,6 +4078,10 @@ Busy Waiting ) \end_layout +\begin_layout Plain Layout +\begin_inset Note Comment +status collapsed + \begin_layout Plain Layout Varianten: \end_layout @@ -3993,13 +4116,20 @@ Dijkstra-Kriterium Fortschritt nicht erfüllt: Wenn ein Prozess im nicht und den anderen vom Eintreten in den kritischen Abschnitt abhalten. \end_layout +\end_inset + + +\end_layout + \begin_layout Subparagraph -Ansatz von Petersen +Ansatz von +\noun on +Peterson \end_layout \begin_layout Plain Layout -Führt zusätzliches Array ein, in dem vermerkt wird, ob ein Prozess in den - KA eintreten möchte. +Führt Array ein, in dem vermerkt wird, ob ein Prozess in den KA eintreten + möchte. \end_layout \begin_layout Plain Layout @@ -4013,12 +4143,16 @@ Beim Verlassen wird das Interesse am Eintritt zurückgesetzt. \end_layout \begin_layout Plain Layout -Programme müssen sich nicht mehr strikt abwechseln und daher auch nicht - in Endlosschleife laufen. +Programme müssen sich nicht strikt abwechseln und daher auch nicht in Endlosschl +eife laufen. \end_layout \begin_layout Plain Layout -Dijkstra-Kriterium Fortschritt nun auch erfüllt. +Alle +\noun on +Dijkstra +\noun default +-Kriterien erfüllt. \end_layout \begin_layout Plain Layout @@ -4157,21 +4291,6 @@ Signal and continue: Prozess der Signal aufgerufen hat läuft erst fertig, Programmierunterstützung: \end_layout -\begin_layout Plain Layout -\begin_inset Flex TODO Note (inline) -status open - -\begin_layout Plain Layout -evtl. - raus lassen. - Wird so was vorgegeben wenn gebraucht (glaube schon)? -\end_layout - -\end_inset - - -\end_layout - \begin_layout Itemize C \end_layout @@ -4690,7 +4809,70 @@ Jeder Prozess aus einer Prozessmenge wartet auf ein Ereignis, dass nur durch \end_layout \begin_layout Plain Layout -Beispiel: Philosophenproblem +\begin_inset Tabular +<lyxtabular version="3" rows="2" columns="2"> +<features tabularvalignment="middle" tabularwidth="100col%"> +<column alignment="left" valignment="top" width="0pt"> +<column alignment="left" valignment="top" width="0pt"> +<row> +<cell alignment="left" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Philosophenproblem +\end_layout + +\end_inset +</cell> +<cell alignment="left" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Ressourcen-Zuteilungsgraph +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="left" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Graphics + filename Pictures/syncPhilosophenproblem.png + lyxscale 30 + width 34col% + +\end_inset + + +\end_layout + +\end_inset +</cell> +<cell alignment="left" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Graphics + filename Pictures/syncRessourcenGraph.png + lyxscale 30 + width 59.5col% + +\end_inset + + +\end_layout + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + \end_layout \begin_layout Plain Layout @@ -4763,26 +4945,25 @@ Zirkuläres Warten: Deadlock-Strategien: \end_layout -\begin_layout Plain Layout -\begin_inset Graphics - filename Pictures/syncDeadlockStrategien.png - lyxscale 20 - width 100col% - -\end_inset +\begin_layout Description +\begin_inset ERT +status open +\begin_layout Plain Layout +Erkennen und Beheben: \end_layout -\begin_layout Plain Layout -Erkennen und Beheben: Wenn Deadlock erkannt wird (z.B. +\end_inset + + Wenn Deadlock erkannt wird (z.B. über Ressourcen-Zuteilungsgraphen) wird der Zyklus durch Unterbrechung - (Zuteilung einer seiner Ressoucen an anderen Prozess, nicht immer möglich), + (Zuteilung einer seiner Ressourcen an anderen Prozess, nicht immer möglich), Rollback (Zurücksetzen zu vorherigem Checkpoint) oder Abbruch eines Prozesses durchbrochen. \end_layout -\begin_layout Plain Layout +\begin_layout Description Verhindern: Eines der \noun on Coffman @@ -4793,12 +4974,13 @@ Coffman in lineare Ordnung bringen und nur aufsteigend anfragen. \end_layout -\begin_layout Plain Layout -Vermeiden: Ressourcen nur zuteilen, wenn danach ein sicherer Zustand vorliegt. +\begin_layout Description +Vermeiden: Ressourcen nur zuteilen, wenn danach ein sicherer Zustand (s.u.) + vorliegt. \end_layout -\begin_layout Plain Layout -Ignorieren: Anwender wird das Gerät / die Anwedung neu starten müssen. +\begin_layout Description +Ignorieren: Anwender wird das Gerät / die Anwendung neu starten müssen. \end_layout \begin_layout Paragraph @@ -4902,6 +5084,10 @@ mintinline{bash}{mkfifo pipename} , danach können Ein-und Ausgaben durch die < und > Operatoren aus der Pipe gelesen oder rein geschrieben werden. Zum Reinschreiben müssen aber beide Seiten angeschlossen sein! +\begin_inset Note Comment +status collapsed + +\begin_layout Plain Layout \begin_inset Newline newline \end_inset @@ -4921,6 +5107,11 @@ mintinline{c}{pipe(fds)} in unistd.h, wobei fds ein Array aus 2 File Deskriptoren wird. \end_layout +\end_inset + + +\end_layout + \begin_layout Plain Layout \begin_inset Note Comment status collapsed @@ -4953,8 +5144,20 @@ Nur in Unix verfügbar, einfache und effiziente, asynchrone IPC. \end_layout \begin_layout Plain Layout -Prozesse können anderen Prozessen ein Signal senden, wenn sie die Berechtigung - dazu haben. +Prozesse können anderen Prozessen ein Signal senden ( +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mintinline{bash}{kill(pid, signalId)} +\end_layout + +\end_inset + +), wenn sie die Berechtigung dazu haben. \end_layout \begin_layout Plain Layout @@ -5044,10 +5247,6 @@ n-Controller gaukelt Disketten-artige Struktur mit nach innen kleiner werdenden Positionierung des Kopfes dauert. \end_layout -\begin_layout Plain Layout -\begin_inset Note Comment -status collapsed - \begin_layout Paragraph Flash-Speicher \end_layout @@ -5062,11 +5261,6 @@ z.B. USB-Sticks, SSDs. \end_layout -\end_inset - - -\end_layout - \begin_layout Paragraph CD-ROM und Verwandte \end_layout @@ -5090,7 +5284,7 @@ Realisierung als verkettete Liste aus Blöcken: Sequenzieller Zugriff einfach, \end_layout \begin_layout Plain Layout -als Tabelle im RAM: +Als Tabelle im RAM: \series bold File Allocation Table (FAT) \series default @@ -5377,8 +5571,11 @@ Chainloading \end_layout \begin_layout Plain Layout -Betriebssystem sollte durch virtuelle Dateisysteme die Spezifika der Dateisystem -e vor Anwendungen verbergen. +Betriebssystem sollte durch +\series bold +virtuelle Dateisysteme +\series default + die Spezifika der Dateisysteme vor Anwendungen verbergen. \end_layout \begin_layout Plain Layout @@ -5404,6 +5601,10 @@ Datenträger unterteilt in Sektoren (vom Medium definiert), Blöcke (kleinste Einheit im Dateisystem, Vielfaches von Sektoren) und Blockgruppen. \end_layout +\begin_layout Plain Layout +\begin_inset Note Comment +status open + \begin_layout Plain Layout Struktur: \end_layout @@ -5417,6 +5618,11 @@ Struktur: \end_inset +\end_layout + +\end_inset + + \end_layout \begin_layout Plain Layout @@ -5433,7 +5639,7 @@ Nach Art des Elements, Zugriffsrechten und Zeitstempeln folgt Liste von \end_layout \begin_layout Plain Layout -Problem: Kein Journaling –> Bei Fehlern Inkonsistenzen wahrscheinlich. +Problem: Kein Journaling → Bei Fehlern Inkonsistenzen wahrscheinlich. \end_layout \begin_layout Plain Layout @@ -5528,7 +5734,7 @@ Jede Datei / Unterverzeichnis 32-Byte-Eintrag der Dateiname im 8.3-Format, \end_layout \begin_layout Plain Layout -Jedes Cluster verweist auf das nächste Cluster. +Jedes Cluster verweist auf das nächste Cluster der Datei. \end_layout \begin_layout Plain Layout @@ -5575,11 +5781,7 @@ Immediate File \end_layout \begin_layout Plain Layout -Verwaltung freier MFT-Einträge als Bitmap -\end_layout - -\begin_layout Plain Layout -Adresse der MFT im Bootblock. +Verwaltung freier MFT-Einträge als Bitmap, Adresse der MFT steht im Bootblock. \end_layout \begin_layout Plain Layout @@ -5689,6 +5891,9 @@ status open \end_inset +\end_layout + +\begin_layout Plain Layout \begin_inset Newpage clearpage \end_inset diff --git a/BS Spicker.tex b/BS Spicker.tex index 15ab21467ed566b4bd2452959374654a786d1c0d..b551d20aca31b554019f9a101e472c09e6cf5d6b 100644 --- a/BS Spicker.tex +++ b/BS Spicker.tex @@ -1,7 +1,6 @@ %% LyX 2.3.6.1 created this file. For more info, see http://www.lyx.org/. %% Do not edit unless you really know what you are doing. \documentclass[10pt,english,french,ngerman]{article} -\PassOptionsToPackage{obeyFinal}{todonotes} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[landscape,a4paper]{geometry} @@ -24,7 +23,6 @@ \usepackage{textcomp} \usepackage{enumitem} \usepackage{multicol} -\usepackage{todonotes} \usepackage{amstext} \usepackage{stackrel} \usepackage{graphicx} @@ -292,7 +290,9 @@ Parameter: \paragraph{Kontrollstrukturen} -Bedingungen prüfen mit Befehl test oder {[} ... {]}: +\begin{multicols}{2} + +Bedingungen prüfen mit Befehl \mintinline{bash}{test} oder \mintinline{bash}{[ ... ]}: \begin{tabular}{|c|c|} \hline @@ -320,15 +320,22 @@ else fi \end{minted} +\columnbreak + for: \begin{minted}{bash} -for <Iterator> # Bsp. ((i=0; i<3; i++)) -do # oder for variable in Liste +for <Iterator> +do <Befehle> done \end{minted} +Iterator-Beispiele: + +\mintinline{bash}{for ((i=0; i<3; i++))} oder\\ +\mintinline{bash}{for variable in Liste}. + while: \begin{minted}{bash} @@ -337,11 +344,15 @@ do <Befehle> done \end{minted} +\end{multicols} + \paragraph{grep} Filtert stdin nach Suchmuster: regulärer Ausdruck oder einfaches Stringmuster. +\columnbreak + \section{Programmierung in C und C++} \subsection{C} @@ -1223,7 +1234,7 @@ Zeitpunkten verdrängt wurden. sehr schwer zu finden. \textbf{Kritischer Abschnitt}: Codeteile, die nur von einem Prozess gleichzeitig genutzt werden dürfen. Dieser darf auch unterbrochen -werden, aber kein andere Prozess darf in dieser Zeit den kritischen +werden, aber kein anderer Prozess darf in dieser Zeit den kritischen Abschnitt betreten. Kriterien für Kritischen Abschnitt nach \noun{Dijkstra}: @@ -1244,6 +1255,7 @@ Einfacher Ansatz: Synchronisationsvariable die immer wieder aktiv abgefragt wird → Aktives Warten (\foreignlanguage{english}{\textbf{Busy Waiting}}) +\begin{comment} Varianten: \subparagraph{Spinlock} @@ -1263,11 +1275,13 @@ präemptives Multitasking oder separate Prozessoren. Dijkstra-Kriterium Fortschritt nicht erfüllt: Wenn ein Prozess im nicht kritischen Abschnitt hängen bleibt, wird er nie die Sync-Variable ändern und den anderen vom Eintreten in den kritischen Abschnitt abhalten. +\end{comment} + -\subparagraph{Ansatz von Petersen} +\subparagraph{Ansatz von \noun{Peterson}} -Führt zusätzliches Array ein, in dem vermerkt wird, ob ein Prozess -in den KA eintreten möchte. +Führt Array ein, in dem vermerkt wird, ob ein Prozess in den KA eintreten +möchte. Prozess kündigt vor dem Eintreten sein Interesse an, lässt aber dem Anderen den Vortritt. Wenn dieser interessiert ist (er ist dann in @@ -1275,10 +1289,10 @@ den KA eingetreten), warte. Beim Verlassen wird das Interesse am Eintritt zurückgesetzt. -Programme müssen sich nicht mehr strikt abwechseln und daher auch -nicht in Endlosschleife laufen. +Programme müssen sich nicht strikt abwechseln und daher auch nicht +in Endlosschleife laufen. -Dijkstra-Kriterium Fortschritt nun auch erfüllt. +Alle \noun{Dijkstra}-Kriterien erfüllt. \begin{comment} @@ -1336,8 +1350,6 @@ Prozesswarteschlange, Aufgeweckter Prozess darf sofort loslegen. fertig, dann wird der andere Prozess aufgeweckt. \end{itemize} Programmierunterstützung: - -\todo[inline]{evtl. raus lassen. Wird so was vorgegeben wenn gebraucht (glaube schon)?} \begin{itemize} \item C \begin{itemize} @@ -1390,7 +1402,10 @@ mehreren Erzeugern / Verbrauchern einem Mutex oder einem Monitor mit Jeder Prozess aus einer Prozessmenge wartet auf ein Ereignis, dass nur durch einen anderen Prozess aus der Menge ausgelöst werden kann. -Beispiel: Philosophenproblem +\begin{tabular*}{1\columnwidth}{@{\extracolsep{\fill}}ll} +Philosophenproblem & Ressourcen-Zuteilungsgraph\tabularnewline +\includegraphics[width=0.34\columnwidth]{Pictures/syncPhilosophenproblem} & \includegraphics[width=0.595\columnwidth]{Pictures/syncRessourcenGraph}\tabularnewline +\end{tabular*} Deadlock-Kriterien nach \noun{Coffman} et. al.: \begin{description} @@ -1404,23 +1419,21 @@ zurückgegeben werden Wirkung des Wartens wird über Prozesse hinweg zu ihrer eigenen Ursache \end{description} Deadlock-Strategien: - -\includegraphics[width=1\columnwidth]{Pictures/syncDeadlockStrategien} - -Erkennen und Beheben: Wenn Deadlock erkannt wird (z.B. über Ressourcen-Zuteilungsgraphen) -wird der Zyklus durch Unterbrechung (Zuteilung einer seiner Ressoucen -an anderen Prozess, nicht immer möglich), Rollback (Zurücksetzen zu -vorherigem Checkpoint) oder Abbruch eines Prozesses durchbrochen. - -Verhindern: Eines der \noun{Coffman}-Kriterien außer Kraft setzen, +\begin{description} +\item [{Erkennen und Beheben:}] Wenn Deadlock erkannt wird (z.B. über +Ressourcen-Zuteilungsgraphen) wird der Zyklus durch Unterbrechung +(Zuteilung einer seiner Ressourcen an anderen Prozess, nicht immer +möglich), Rollback (Zurücksetzen zu vorherigem Checkpoint) oder Abbruch +eines Prozesses durchbrochen. +\item [{Verhindern:}] Eines der \noun{Coffman}-Kriterien außer Kraft setzen, z.B. Ressourcen virtualisieren, Alle Ressourcen zu Prozessbeginn deklarieren und auf einmal anfordern, Prozesse unterbrechen und zurücksetzen, Ressourcen in lineare Ordnung bringen und nur aufsteigend anfragen. - -Vermeiden: Ressourcen nur zuteilen, wenn danach ein sicherer Zustand -vorliegt. - -Ignorieren: Anwender wird das Gerät / die Anwedung neu starten müssen. +\item [{Vermeiden:}] Ressourcen nur zuteilen, wenn danach ein sicherer +Zustand (s.u.) vorliegt. +\item [{Ignorieren:}] Anwender wird das Gerät / die Anwendung neu starten +müssen. +\end{description} \paragraph{Sicherer Zustand} @@ -1462,9 +1475,12 @@ Varianten: \item benannte Pipe: durch \mintinline{bash}{mkfifo pipename}, danach können Ein-und Ausgaben durch die < und > Operatoren aus der Pipe gelesen oder rein geschrieben werden. Zum Reinschreiben müssen aber beide -Seiten angeschlossen sein!\\ +Seiten angeschlossen sein!% +\begin{comment} +\\ In C anlegen durch Funktion \mintinline{c}{pipe(fds)} in unistd.h, wobei fds ein Array aus 2 File Deskriptoren wird. +\end{comment} \end{itemize} \begin{comment} @@ -1482,8 +1498,8 @@ und mq\_receive. Nur in Unix verfügbar, einfache und effiziente, asynchrone IPC. -Prozesse können anderen Prozessen ein Signal senden, wenn sie die -Berechtigung dazu haben. +Prozesse können anderen Prozessen ein Signal senden (\mintinline{bash}{kill(pid, signalId)}), +wenn sie die Berechtigung dazu haben. Prozesse können Signal-Handler registrieren, die aufgerufen werden, wenn ein bestimmtes Signal eintrifft. @@ -1526,16 +1542,12 @@ gleich groß sind, aber außen doppelt so viele Sektoren wie innen sind. Positionierung des Kopfes dauert. -\begin{comment} - \paragraph{Flash-Speicher} Halbleiter-Bauelemente die Daten ohne Betriebsspannung und ohne mechanische Teile halten. z.B. USB-Sticks, SSDs. -\end{comment} - \paragraph{CD-ROM und Verwandte} @@ -1549,7 +1561,7 @@ symbolischen Namen. Realisierung als verkettete Liste aus Blöcken: Sequenzieller Zugriff einfach, wahlfreier Zugriff nicht. -als Tabelle im RAM: \textbf{File Allocation Table (FAT)}: Schnell, +Als Tabelle im RAM: \textbf{File Allocation Table (FAT)}: Schnell, da keine Suchvorgänge auf Festplatte, aber extrem großer Speicherbedarf. Verzeichnisse strukturieren Dateien, enthalten deren Metadaten und @@ -1670,8 +1682,8 @@ der kleine Stufe-1-Bootloader lädt lediglich den größeren Stufe-2-Bootloader aus dem Speicher und startet ihn (\textbf{Chainloading}). \end{comment} -Betriebssystem sollte durch virtuelle Dateisysteme die Spezifika der -Dateisysteme vor Anwendungen verbergen. +Betriebssystem sollte durch \textbf{virtuelle Dateisysteme} die Spezifika +der Dateisysteme vor Anwendungen verbergen. INodes: Index Nodes, identifizieren Dateien / Verzeichnisse und beinhalten deren Metadaten wie Name etc. @@ -1686,9 +1698,11 @@ Hardlinks verweisen direkt auf INodes. Datenträger unterteilt in Sektoren (vom Medium definiert), Blöcke (kleinste Einheit im Dateisystem, Vielfaches von Sektoren) und Blockgruppen. +\begin{comment} Struktur: -\includegraphics[width=1\columnwidth]{Pictures/DateisystemeExt2Struktur} +\includegraphics[width=1\columnwidth]{Pictures/DateisystemeExt2Struktur.png} +\end{comment} Aufbau eines INodes: @@ -1698,7 +1712,7 @@ dem die weiteren Blocknummern aufgelistet sind. Der Nächste zeigt auf einen Block der Verweise auf Blocklisten enthält (zweistufige Indirektion) und der nächste als dreistufige Indirektion. -Problem: Kein Journaling --> Bei Fehlern Inkonsistenzen wahrscheinlich. +Problem: Kein Journaling → Bei Fehlern Inkonsistenzen wahrscheinlich. \begin{comment} @@ -1740,7 +1754,7 @@ Attribute (Schreibschutz, versteckt etc.), Zeit, Datum, Erstes Cluster und Größe enthält. \end{comment} -Jedes Cluster verweist auf das nächste Cluster. +Jedes Cluster verweist auf das nächste Cluster der Datei. VFAT-Erweiterung: Längere Dateinamen in sekundären Einträgen unterbringen. @@ -1761,9 +1775,8 @@ fester Platz beim Formatieren reserviert (ung. 12,5\%). Einträge 1KiB, enthalten Attribute, Liste von Blockadressen, evtl. direkt sehr kleine Dateien (\textbf{Immediate File}). -Verwaltung freier MFT-Einträge als Bitmap - -Adresse der MFT im Bootblock. +Verwaltung freier MFT-Einträge als Bitmap, Adresse der MFT steht im +Bootblock. \begin{comment} Erste 16 MFT-Blöcke reserviert. @@ -1809,7 +1822,7 @@ an Dateien als Paket auf Datenträger gebrannt, ermöglicht Arbeiten mit CD-ROMs wie mit Festplatten. \end{comment} -%Rausnehmen wenn Programmierunterstützung drin bleibt, sonst sieht es blöd aus.\clearpage{} +\clearpage{} \end{multicols} \end{document} diff --git a/Pictures/prozessSegmenteMTheads.png b/Pictures/prozessSegmenteMTheads.png deleted file mode 100644 index a5ae549a0047ae0c1a602bb040152fc1fed79979..0000000000000000000000000000000000000000 Binary files a/Pictures/prozessSegmenteMTheads.png and /dev/null differ diff --git a/Pictures/syncDeadlockStrategien.png b/Pictures/syncDeadlockStrategien.png deleted file mode 100644 index 12abd777f02d7785894981168eaa6bab47aba32a..0000000000000000000000000000000000000000 Binary files a/Pictures/syncDeadlockStrategien.png and /dev/null differ diff --git a/Pictures/syncPhilosophenproblem.png b/Pictures/syncPhilosophenproblem.png new file mode 100644 index 0000000000000000000000000000000000000000..b286deaef1038442cc80d80b4b0bf574d19d374a Binary files /dev/null and b/Pictures/syncPhilosophenproblem.png differ diff --git a/Pictures/syncRessourcenGraph.png b/Pictures/syncRessourcenGraph.png new file mode 100644 index 0000000000000000000000000000000000000000..95c6553f9bb2258bbd66dccbfa85fa346307c4d2 Binary files /dev/null and b/Pictures/syncRessourcenGraph.png differ