From b7b4c5a98c47464ca54ff2aff3fda9e3c3944c14 Mon Sep 17 00:00:00 2001
From: Michael Stapelberg <michael@stapelberg.de>
Date: Fri, 14 Jan 2011 11:56:38 +0100
Subject: kleine Fehler in der Doku behoben

---
 doku/doku.tex | 52 ++++++++++++++++++++++++++++------------------------
 1 file changed, 28 insertions(+), 24 deletions(-)

(limited to 'doku/doku.tex')

diff --git a/doku/doku.tex b/doku/doku.tex
index 2e8ef14..e6efca5 100644
--- a/doku/doku.tex
+++ b/doku/doku.tex
@@ -16,6 +16,7 @@
 \begin{document}
 \pagestyle{fancy}
 \chead{BTS}
+\lhead{}
 % New paragraph
 \newcommand{\np}{\bigskip\noindent}
 
@@ -25,9 +26,9 @@
 \section{Grundgerüst}
 
 Das Grundgerüst wird in Teilaufgabe 2, 3 und 4 verwendet und startet die
-verschiedenen Prozesse. Dies wird durch die Funktion \texttt{fork\_child()}
+verschiedenen Prozesse. Dies wird durch die Funktion \texttt{fork\_child}
 erledigt, welche als Parameter zwei Zeiger auf Funktionen erwartet. Der erste
-Zeiger zeigt auf eine Funktion, welche die eigentlich Arbeit des Prozesses
+Zeiger zeigt auf eine Funktion, welche die eigentliche Arbeit des Prozesses
 erledigt, der zweite Zeiger auf eine Aufräumfunktion. Das Definieren und
 Benutzen der \texttt{fork\_child}-Funktion erspart uns viel redundanten Code.
 \np
@@ -35,8 +36,8 @@ Benutzen der \texttt{fork\_child}-Funktion erspart uns viel redundanten Code.
 Die Funktion ruft zunächst \texttt{fork} auf, um den Programmverlauf zu
 teilen. Im Kindprozess wird dann ein Signalhandler für das Signal
 \texttt{SIGINT} (Unterbrechung durch Ctrl-C) eingerichtet (hierfür wird der
-Aufräum-Funktionszeiger genutzt). Anschließend wird der erste Funktionszeiger
-aufgerufen. Dieser Aufruf kehrt nicht mehr zurück, da in allen Prozessen eine
+Aufräum-Funktionszeiger genutzt). An\-schließ\-end wird der erste Funktionszeiger
+aufgerufen. Dieser Aufruf kehrt nicht mehr zu\-rück, da in allen Prozessen eine
 Endlosschleife enthalten ist.
 \np
 
@@ -49,9 +50,9 @@ Elternprozesses korrekt beendet und geben ihre Resourcen frei.
 \subsection{Conv-Prozess}
 
 Der \texttt{Conv}-Prozess generiert mithilfe von \texttt{rand} eine
-ganzzahlige Zufallszahl. Dies entspricht dem Einlesen eines Werts von einem
-Analog-Digital-Wandler. Dieser Wert wird anschließend zum \texttt{Log}- und zum
-\texttt{Statistik}-Prozess gesendet.
+ganzzahlige positive Zufallszahl. Dies entspricht dem Einlesen eines Werts von
+einem Analog-Digital-Wandler. Dieser Wert wird anschließend zum \texttt{Log}-
+und zum \texttt{Statistik}-Prozess gesendet.
 \np
 
 Der \texttt{Conv}-Prozess hat per se keinerlei dynamische Resourcen, die
@@ -66,7 +67,7 @@ direkt in die Datei geschrieben. Es wird hierbei nicht via \texttt{fflush}
 sichergestellt, dass die Ausgabe tatsächlich auf die Festplatte geschrieben
 wurde. Stattdessen wird darauf vertraut, dass \texttt{fclose} beim Beenden des
 Programms aufgerufen wird, wobei alle Daten aus dem Puffer auf die Platte
-geschrieen werden.
+geschrieben werden.
 \np
 
 Der \texttt{Log}-Prozess gibt via \texttt{fclose} das Dateihandle frei, welches
@@ -74,9 +75,9 @@ er beim Start geöffnet hat.
 
 \subsection{Statistik-Prozess}
 
-Der \texttt{Statistik}-Prozess empfängt je 5 Datenwerte und bildet anschließend
-das arithmetische Mittel über die empfangenen Werte. Das gebildete Mittel
-schickt er wiederum an den \texttt{Monitor}-Prozess.
+Der \texttt{Statistik}-Prozess empfängt Datenwerte und bildet anschließend
+den Mittelwert über die empfangenen Werte. Das gebildete Mittel schickt er
+wiederum an den \texttt{Monitor}-Prozess.
 \np
 
 Da dieser Prozess ausschließlich mit statischen Puffern arbeitet hat er per se
@@ -124,40 +125,43 @@ also als 1-Byte-Integer ohne Vorzeichen gespeichert.
 \subsection{Initialisierung: queue\_init}
 
 \texttt{queue\_init} erstellt via \texttt{shm\_open} das Shared Memory-Segment,
-setzt die Größe und bildet es in den Arbeitsspeicher des Programms ab.
-Weiterhin wird der Speicherbereich mit Nullen initialisiert und der Semaphor
-initialisiert. Da bei einem \texttt{fork} der Arbeitsspeicher nicht verändert
-wird, ist die Abbildung des Shared Memory-Segments auch in den Kindprozessen
-ohne weitere Initialisierung direkt nutzbar.
+setzt die Größe (in Bytes) und bildet es in den Arbeitsspeicher des Programms
+ab. Weiterhin wird der Speicherbereich mit Nullen initialisiert und der
+Semaphor initialisiert. Da bei einem \texttt{fork} der Arbeitsspeicher nicht
+verändert wird, ist die Abbildung des Shared Memory-Segments auch in den
+Kindprozessen ohne weitere Initialisierung direkt nutzbar.
 
 \subsection{Schreiben eines neuen Eintrags: queue\_write}
 
 In der Funktion \texttt{queue\_write} wird zunächst via Semaphor die
-Datenstruktur gesperrt. Das ist nötig, damit anschließend deterministisch die
+Datenstruktur gesperrt. Dies ist nötig, damit anschließend deterministisch die
 Stelle bestimmt werden kann, an welcher das nächste Element eingefügt wird.
 Diese wird dadurch gefunden, dass frisch initialisierte und bereits bearbeitete
-Einträge den Wert \texttt{D\_INVALID} als \texttt{dir} (Direction) haben.
+Einträge den Wert \texttt{D\_INVALID} als \texttt{dir} (Direction) besitzen.
+\np
 
 Nun wird das Element via \texttt{memcpy} kopiert, der \texttt{cur}-Wert im
 Header (für das aktuelle Element) angepasst und der Semaphor wieder entsperrt.
 
 \subsection{Richtung des aktuellen Eintrags abrufen}
 
-Die Richtung des aktuellen Eintrags kann man sehr einfach herausfinden, indem
+Die Richtung des aktuellen Eintrags lässt sich sehr einfach herausfinden, indem
 das aktuelle Element ermittelt wird und anschließend der \texttt{dir}-Wert
 zurückgegeben wird.
+\np
 
 Diese Funktion arbeitet ohne Locks oder zusätzliche Variablen auf dem Stack. Da
 sie in einer Schleife permanent aufgerufen wird, solange die einzelnen Prozesse
-warten, ist das eine gute Eigenschaft.
+warten, ist dies eine gute Eigenschaft.
 
 \subsection{Daten abrufen und Element invalidieren: queue\_get\_data}
 
 Da durch die Richtung (\texttt{dir}) immer klar ist, von welchem Prozess die
-Nachricht kommt und an welchen sie gerichtet ist, ruft kein Prozess
-\texttt{queue\_get\_data} auf, der mit den Daten nichts anfangen kann. Deshalb
-haben wir uns entschieden, die Funktion atomar den Datenwert der aktuellen
-Nachricht zurückgeben zu lassen und diesen gleichzeitig zu invalidieren.
+Nachricht kommt und an welchen sie gerichtet ist, ruft immer genau der richtige
+Prozess \texttt{queue\_\-get\_\-data} auf, und sonst keiner. Deshalb haben wir uns
+entschieden, die Funktion atomar den Datenwert der aktuellen Nachricht
+zurückgeben zu lassen und diesen gleichzeitig zu invalidieren.
+\np
 
 Die Invalidierung geschieht, indem der \texttt{dir}-Wert auf
 \texttt{D\_INVALID} gesetzt und der \texttt{cur}-Wert im Header auf das nächste
-- 
cgit v1.2.3-70-g09d2

