From 78f355313412084991466586d66c5ca2fa92f1c1 Mon Sep 17 00:00:00 2001 From: Thorsten Töpper Date: Sat, 15 Jan 2011 20:46:05 +0100 Subject: Dokumentation für Aufgabe 2 und 3 geschrieben. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doku/doku.tex | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'doku') diff --git a/doku/doku.tex b/doku/doku.tex index e6efca5..ebdd9ca 100644 --- a/doku/doku.tex +++ b/doku/doku.tex @@ -92,6 +92,66 @@ dem Bildschirm aus. Dass die Ausgabe tatsächlich sofort erfolgt wird via Dieser Prozess hat ebenfalls per se keine freizugebenden Resourcen. +\clearpage +\section{Aufgabe 2} + +Aufgabe 2 verlangte die Prozesskommunikation mittels Pipes zu implementieren. +Die \texttt{pipe} Funktion erstellt eine Datei und liefert zwei Deskriptoren, +einen zum Schreiben und einen zum Lesen. Der Umgang mit dieser Datei geschieht +mit den selben Funktionen wie sie auch zum Lesen von Dateien im Dateisystem +genutzt werden. + +\subsection{Kommunikationsstruktur} + +Nach Start des Programmes werden drei Pipes erstellt, jeweils eine zur direkten +Kommunikation zwischen zwei Prozessen. Aus Gründen der Bequemlichkeit entschlossen +wir uns die erstellten Deskriptoren in einem globalen Array zu erstellen und den +Zugriff beim Programmieren mit einem enum und zwei defines zu vereinfachen. Die +vom Prozess nicht benötigten Pipes werden direkt nach Start des selbigen geschlossen.\\ + +\begin{center} +\begin{tabular}{|l|l|} +\hline + \textbf{Schreibend} & \textbf{Lesend} \\ +\hline + \texttt{conv} & \texttt{log} \\ +\hline + \texttt{conv} & \texttt{statistic} \\ +\hline + \texttt{statistic} & \texttt{monitor}\\ +\hline +\end{tabular}\\ +\textit{Die verwendeten Pipes} +\end{center} + +\subsection{Datenaustausch} +Da der Datenaustausch über eine vom Kernel verwaltete virtuelle Datei erfolgt, +haben wir uns hier - wie auch bei der Implementierung der Aufgabe 3 - der +Einfachheit halber den Austausch der Zahlen über die Formatierung als Hexwerte +entschieden, auch der \texttt{log} Prozess dieser Implementierung schreibt die +Werte in ihrer Hexadezimalen Darstellung in die \texttt{log.txt}, was jedoch die +Portabilität der Logdatei auf andere Systeme erschwert(Little-/Big-Endian). + +\clearpage +\section{Aufgabe 3} + +Bei dieser Aufgabe wurde die Kommunikation über Message Queues zu implementieren, +POSIX-konforme Implementierungen der grundlegenden Funktionen hierfür haben die +angenehme Eigenschaft standardmäßig mit Locks zu arbeiten. Dies liese zwar mittels +der \texttt{O\_NONBLOCK} Option deaktivieren, wäre in unserem Fall jedoch +kontraproduktiv. + +\subsection{Kommunikationsstruktur} +Ähnlich wie bei Aufgabe 2 verwenden wir hier erneut 3 Kanäle zur Kommunikation +zwischen den Prozessen, die Queues werden nach dem Programmstart initialisiert +und beim Start der Prozesse geöffnet. Eine Verwendung einer einzelnen Queue ist +selbstverständlich möglich, wir haben uns dennoch dazu entschlossen schlicht das +Modell der Pipes auf das der Queues abzubilden, am Aufbau hat sich also im Vergleich +zu Aufgabe 2 nur wenig geändert. + +\subsection{Datenaustausch} +Auch hier haben wir wenig geändert, die Zahlenwerte werden weiterhin in Hexadezimaler Form an die anderen Prozesse gesendet, der \texttt{log} Prozess schreibt die Zahlen diesmal jedoch in dezimaler Form in die Logdatei. + \clearpage \section{Aufgabe 4} -- cgit v1.2.3-70-g09d2