diff options
| -rw-r--r-- | LaTeX/chapters/grundkomponenten.tex | 47 | ||||
| -rw-r--r-- | LaTeX/chapters/introduction.tex | 56 | ||||
| -rw-r--r-- | LaTeX/chapters/simulator.tex | 95 | ||||
| -rw-r--r-- | LaTeX/chapters/titlepage.tex | 4 | ||||
| -rw-r--r-- | LaTeX/diplomarbeit.pdf | 4171 | ||||
| -rw-r--r-- | LaTeX/diplomarbeit.tex | 2 | ||||
| -rw-r--r-- | LaTeX/revision.tex | 2 |
7 files changed, 2003 insertions, 2374 deletions
diff --git a/LaTeX/chapters/grundkomponenten.tex b/LaTeX/chapters/grundkomponenten.tex index 137e42d..e69de29 100644 --- a/LaTeX/chapters/grundkomponenten.tex +++ b/LaTeX/chapters/grundkomponenten.tex @@ -1,47 +0,0 @@ -\chapter{Grundbegriffe}
-
-F\"{u}r das Verst\"{a}ndnis wie die Simulation von verteilten Systemen funktioniert, werden hier einige Grundbegriffe erl\"{a}utert. Eine Vertiefung findet erst in den nachfolgenden Kapiteln statt.
-
-\section{Client/Server Modell}
-
-Der Simulator basiert auf dem Client/Server Prinzip. Bei jeder sinnvollen Simulation gibt es mindestens einen teilnehmenden Client und einen Server, die miteinander \"{u}ber Nachrichten kommunizieren (Abbildung \ref{fig:ClientServer}). Bei komplexen Simulationen k\"{o}nnen auch mehrere Clients und/oder Server mitwirken. In der Regel empfangen Server nur Nachrichten, die von Clients verschickt wurden und virce versa.
-
-\begin{figure}[htbp]
- \centering
- \fbox{\includegraphics{images/client-server}}
- \caption{Client/Server Modell}
- \label{fig:ClientServer}
-\end{figure}
-
-\section{Prozesse und deren Rollen}
-
-Ein verteiltes System wird anhand von Prozessen simuliert. Jeder Prozess nimmt hierbei eine oder mehrere Rollen ein. Beispielsweise kann ein Prozess die Rolle eines Clients einnehmen und ein weiterer Prozess die Rolle eines Servers. Ein Prozess kann auch Client und Server gleichzeitig sein. Es ist auch m\"{o}glich, dass ein Prozess die Rollen mehrerer Server und Clients aufeinmal einnimmt. Ob das sinnvoll ist h\"{a}ngt vom Szenario ab. Um einen Prozess zu kennzeichnen besitzt jeder Prozess eine \textbf{eindeutige} Prozess-Identifikationsnummer (PID).
-
-\section{Nachrichten}
-
-Damit das Client/Server Modell angewandt werden kann, m\"{u}ssen Nachrichten verschickt werden k\"{o}nnen. Eine Nachricht kann von einem Client- oder Serverprozess verschickt werden und kann beliebig viele Empf\"{a}nger haben. Der Inhalt einer Nachricht h\"{a}ngt vom verwendeten Protokoll ab. Was unter einem Protokoll zu verstehen ist, wird sp\"{a}ter behandelt. Um eine Nachricht zu kennzeichnen besitzt jede Nachricht eine \textbf{eindeutige} Nachrichten-Identifikationsnummer (NID).
-
-\section{Lokale und globale Uhren}
-
-In einer Simulation gibt es \textbf{genau eine} globale Uhr. Sie stellt die aktuelle und \textbf{immer korrekte} Zeit dar. Eine globale Uhr geht nie falsch.
-
-Zudem besitzt jeder beteiligter Prozess eine eigene lokale Uhr. Sie stellt die aktuelle, jedoch nicht zwangsm\"{a}ßig global-korrekte, Zeit des jeweiligen Prozesses dar. Wenn die Prozesszeit nicht korrekt ist (nicht der globalen Zeit gleicht), dann wurde die Prozessuhr entweder im Laufe einer Simulation neugestellt oder sie besitzt eine Uhrabweichung. Eine Uhrabweichung gibt an, um wieviel eine Uhr falsch geht. Wenn eine lokale Uhr nicht neugesetzt wird und auch keine Uhrabweichung hat, dann gibt sie stets die korrekte globale Zeit wieder.
-
-\section{Ereignisse}
-
-Eine Simulation besteht aus der Hintereinanderausf\"{u}hrung von endlich vielen Ereignissen. Beispielsweise kann es ein Ereignis geben, welches einen Prozess eine Nachricht verschicken l\"{a}ßt oder den Prozess selbst abst\"{u}rzen l\"{a}ßt. Jedes Ereignis tritt zu einem bestimmten Zeitpunkt ein. Wenn es zeitgleiche Ereignisse gibt, so werden sie ebenso hintereinander ausgef\"{u}hrt, behalten aber in der Simulation die selben Ausf\"{u}hrzeiten.
-
-\section{Protokolle}
-
-\begin{figure}[htbp]
- \centering
- \includegraphics{images/client-server-protokolle}
- \caption{Client/Server Protokolle}
- \label{fig:ClientServerProtokolle}
-\end{figure}
-
-Eine Simulation besteht aus der Anwendung von Protokollen. Es wurde bereits erw\"{a}hnt, dass ein Prozess die Rollen von Servern und/oder Clients annehmen kann. Bei jeder Server- und Clientrolle muss zus\"{a}tzlich das dazugeh\"{o}rige Protokoll spezifiziert werden. Ein Protokoll definiert, wie ein Client und ein Server Nachrichten verschickt und wie bei Ankunft einer Nachricht reagiert wird. Ein Prozess verarbeitet eine empfangene Nachricht nur, wenn er das jeweilige Protokoll versteht.
-
-In Abbildung \ref{fig:ClientServerProtokolle} sind 3 Prozesse dargestellt. Prozess 1 unterst\"{u}tzt serverseitig das Protokoll ``A'' und clientseitig das Protokoll ``B''. Prozess 2 unterst\"{u}tzt clientseitig das Protokoll ``A'' und Prozess 3 serverseitig das Protokoll ``B''. D.h., Prozess 1 kann mit Prozess 2 via Protokoll ``A'' und mit Prozess 3 via Protokoll ``B'' kommunizieren. Die Prozesse 2 und 3 sind zueinander inkompatibel und k\"{o}nnen voneinander erhaltene Nachrichten nicht verarbeiten.
-
-In der Regel k\"{o}nnen Clients nicht mit Clients und Server nicht mit Server kommunizieren. Je nach verwendetem Protokoll kann dies jedoch variieren. Alle vom Simulator verf\"{u}gbaren Protokolle werden sp\"{a}ter behandelt.
diff --git a/LaTeX/chapters/introduction.tex b/LaTeX/chapters/introduction.tex index 1dc512b..5676943 100644 --- a/LaTeX/chapters/introduction.tex +++ b/LaTeX/chapters/introduction.tex @@ -1,6 +1,6 @@ \chapter{Einleitung} -\section{Definition eines verteilten Systems} +\section{Motivation} In der Literatur findet man viele verschiedene Definitionen eins verteiltes Systems. Vieler dieser Definitionen unterschieden sich untereinander, so dass es schwerf\"{a}llt eine Definition zu finden, die als Alleinige als die Richtige gilt. Andrew Tanenbaum und Marten van Steen haben f\"{u}r die Beschreibung eins verteilten Systems die Folgende lockere Charakterisierung formuliert: @@ -13,11 +13,57 @@ In der Literatur findet man viele verschiedene Definitionen eins verteiltes Syst \label{fig:VerteiltesSystem} \end{figure} -Demnach erscheint dem Benutzer ein aus mehreren Computern bestehendes verteiltes System wie ein System, welches lediglich aus einem einzigen Computer besteht. Der Benutzer muss sich nur mit dem lokalen vor ihm befindenden Computer auseinandersetzen (Abbildung \ref{fig:VerteiltesSystem}). Die Software des lokalen Computer stellt die reibungslose Kommunikation mit anderen Computern des verteilten Systems sicher und der Benutzer muss sich darum nicht selbst k\"{u}mmern. +Demnach erscheint dem Benutzer ein aus mehreren Computern bestehendes verteiltes System wie ein System, welches lediglich aus einem einzigen Computer besteht. Der Benutzer muss sich nur mit dem lokalen vor ihm befindenden Computer auseinandersetzen (Abbildung \ref{fig:VerteiltesSystem}). Die Software des lokalen Computer stellt die reibungslose Kommunikation mit anderen Computern des verteilten Systems sicher und der Benutzer muss sich darum nicht selbst k\"{u}mmern.\\ +\\ +Hier betrachten wir ein verteiltes System von einer anderen Perspektive. Wir nehmen nicht die Sichtweise eines Endbenutzers ein, sondern wollen die grundlegenen Funktionsweisen, wie unabh\"{a}ngige Computer in einem verteilten System miteinander agieren, verstehen. Es sollen alle relevanten Ereignisse eines verteilten Systems sichtbar und verst\"{a}ndlich repr\"{a}sentiert werden. -\section{Motivation} +Um dieses Ziel zu erreichen wurde ein Simulator entwickelt, der dies erm\"{o}glicht. Der Simulator wurde insbesondere f\"{u}r Lehr- und Lernzwecke entwickelt. Er inspiriert auch die Entwicklung eigener verteilter Systeme. + +\section{Grundlagen} + +F\"{u}r das Verst\"{a}ndnis wie die Simulation von verteilten Systemen funktioniert, werden hier einige Grundbegriffe erl\"{a}utert. Eine Vertiefung findet erst in den nachfolgenden Kapiteln statt. + +\subsubsection{Client/Server Modell} + +\begin{figure}[htbp] + \centering + \fbox{\includegraphics{images/client-server}} + \caption{Client/Server Modell} + \label{fig:ClientServer} +\end{figure} + +Der Simulator basiert auf dem Client/Server Prinzip. Jeder Simulation besteht in der Regel aus einen teilnehmenden Client und einen Server, die miteinander \"{u}ber Nachrichten kommunizieren (Abbildung \ref{fig:ClientServer}). Bei komplexen Simulationen k\"{o}nnen auch mehrere Clients und/oder Server mitwirken. In der Regel empfangen Server nur Nachrichten, die von Clients verschickt wurden und virce versa. + +\subsubsection{Prozesse und deren Rollen} + +Ein verteiltes System wird anhand von Prozessen simuliert. Jeder Prozess nimmt hierbei eine oder mehrere Rollen ein. Beispielsweise kann ein Prozess die Rolle eines Clients einnehmen und ein weiterer Prozess die Rolle eines Servers. Ein Prozess kann auch Client und Server gleichzeitig sein. Es ist auch m\"{o}glich, dass ein Prozess die Rollen mehrerer Server und Clients aufeinmal einnimmt. Ob das sinnvoll ist h\"{a}ngt vom Szenario ab. Um einen Prozess zu kennzeichnen besitzt jeder Prozess eine \textbf{eindeutige} Prozess-Identifikationsnummer (PID). + +\subsubsection{Nachrichten} + +Damit das Client/Server Modell angewandt werden kann, m\"{u}ssen Nachrichten verschickt werden k\"{o}nnen. Eine Nachricht kann von einem Client- oder Serverprozess verschickt werden und kann beliebig viele Empf\"{a}nger haben. Der Inhalt einer Nachricht h\"{a}ngt vom verwendeten Protokoll ab. Was unter einem Protokoll zu verstehen ist, wird sp\"{a}ter behandelt. Um eine Nachricht zu kennzeichnen besitzt jede Nachricht eine \textbf{eindeutige} Nachrichten-Identifikationsnummer (NID). + +\subsubsection{Lokale und globale Uhren} + +In einer Simulation gibt es \textbf{genau eine} globale Uhr. Sie stellt die aktuelle und \textbf{immer korrekte} Zeit dar. Eine globale Uhr geht nie falsch. + +Zudem besitzt jeder beteiligter Prozess eine eigene lokale Uhr. Sie stellt die aktuelle, jedoch nicht zwangsm\"{a}ßig global-korrekte, Zeit des jeweiligen Prozesses dar. Wenn die Prozesszeit nicht global-korrekt ist (nicht der globalen Zeit gleicht), dann wurde die Prozessuhr entweder im Laufe einer Simulation neugesetzt, oder sie geht wegen einer Uhrabweichung falsch. Die Uhrabweichung gibt an, um welchen Faktor die Uhr falsch geht. Wenn eine lokale Uhr nicht neugesetzt wird und auch keine Uhrabweichung hat, dann gleicht ihre Zeit die der globalen Uhr. + +\subsubsection{Ereignisse} + +Eine Simulation besteht aus der Hintereinanderausf\"{u}hrung von endlich vielen Ereignissen. Beispielsweise kann es ein Ereignis geben, welches einen Prozess eine Nachricht verschicken- oder den Prozess selbst abst\"{u}rzen l\"{a}ßt. Jedes Ereignis tritt zu einem bestimmten Zeitpunkt ein. Wenn es zeitgleiche Ereignisse gibt, so werden sie in Wirklichkeit ebenso hintereinander ausgef\"{u}hrt, erscheinen aber in der Simulation als ob sie parallel ausgef\"{u}hrt w\"{u}rden. Dieser Umstand ist auf die Implementierung des Simulators zur\"{u}ckzuf\"{u}hren, worauf sp\"{a}ter noch genauer eingegangen wird. Dem Benutzer des Simulators st\"{o}rt dies jedoch nicht, da Ereignisse aus seiner Sicht parallel ausgef\"{u}hrt werden k\"{o}nnen. + +\begin{figure}[htbp] + \centering + \includegraphics{images/client-server-protokolle} + \caption{Client/Server Protokolle} + \label{fig:ClientServerProtokolle} +\end{figure} + + +\subsubsection{Protokolle} -In dieser Diplomarbeit betrachten wir ein verteiltes System jedoch von einer anderen Perspektive. Wir nehmen nicht die Sichtweise eines Endbenutzers ein, sondern wollen die grundlegenen Funktionsweisen, wie unabh\"{a}ngige Computer in einem verteilten System miteinander agieren, verstehen. Es sollen alle relevanten Ereignisse eines verteilten Systems sichtbar und verst\"{a}ndlich repr\"{a}sentiert werden. +Eine Simulation besteht auch aus der Anwendung von Protokollen. Es wurde bereits erw\"{a}hnt, dass ein Prozess die Rollen von Servern und/oder Clients annehmen kann. Bei jeder Server- und Clientrolle muss zus\"{a}tzlich das dazugeh\"{o}rige Protokoll spezifiziert werden. Ein Protokoll definiert, wie ein Client und ein Server Nachrichten verschickt und wie bei Ankunft einer Nachricht reagiert wird. Ein Protokoll legt auch fest, welche Daten in einer Nachricht enthalten sind. Ein Prozess verarbeitet eine empfangene Nachricht nur, wenn er das jeweilige Protokoll versteht. -Um dieses Ziel zu erreichen wurde ein Simulator entwickelt, der dies erm\"{o}glicht. Der Simulator wurde insbesondere f\"{u}r Lehr- und Lernzwecke entwickelt. Er inspiriert auch die Entwicklung eigener verteilter Systeme. +In Abbildung \ref{fig:ClientServerProtokolle} sind 3 Prozesse dargestellt. Prozess 1 unterst\"{u}tzt serverseitig das Protokoll ``A'' und clientseitig das Protokoll ``B''. Prozess 2 unterst\"{u}tzt clientseitig das Protokoll ``A'' und Prozess 3 serverseitig das Protokoll ``B''. D.h., Prozess 1 kann mit Prozess 2 via Protokoll ``A'' und mit Prozess 3 via Protokoll ``B'' kommunizieren. Die Prozesse 2 und 3 sind zueinander inkompatibel und k\"{o}nnen voneinander erhaltene Nachrichten nicht verarbeiten. +In der Regel k\"{o}nnen Clients nicht mit Clients und Server nicht mit Server kommunizieren. Je nach verwendetem Protokoll kann dies jedoch variieren. Alle vom Simulator verf\"{u}gbaren Protokolle werden sp\"{a}ter genauer behandelt. diff --git a/LaTeX/chapters/simulator.tex b/LaTeX/chapters/simulator.tex index 60e0705..024db72 100644 --- a/LaTeX/chapters/simulator.tex +++ b/LaTeX/chapters/simulator.tex @@ -9,7 +9,7 @@ \label{fig:NeuesFenster}
\end{figure}
-Der Simulator pr\"{a}sentiert sich nach dem ersten Starten wie in Abbildung \ref{fig:NeuesFenster}. F\"{u}r die Erstellung einer neuen Simulation wird im Men\"{u} ``Datei'' (Abbildung \ref{fig:DateiMenue}) der Punkt ``Neue Simulation'' ausgew\"{a}hlt, wo anschließend das Einstellungsfenster f\"{u}r die neu zu erstellende Simulation erscheint. Auf die einzelnen Optionen wird sp\"{a}ter genauer eingegangen und es werden nun nur die Standardeinstellungen \"{u}bernommen. Die GUI mit einer frischen Simulation sieht dann wie in Abbildung \ref{fig:NeuErstellteSimulation} aus.
+Der Simulator pr\"{a}sentiert sich nach dem ersten Starten wie in Abbildung \ref{fig:NeuesFenster}. F\"{u}r die Erstellung einer neuen Simulation wird im Men\"{u} ``Datei'' (Abbildung \ref{fig:DateiMenue}) der Punkt ``Neue Simulation'' ausgew\"{a}hlt, wo anschließend das Einstellungsfenster f\"{u}r die neue Simulation erscheint. Auf die einzelnen Optionen wird sp\"{a}ter genauer eingegangen und es werden nun nur die Standardeinstellungen \"{u}bernommen. Die GUI mit einer frischen Simulation sieht dann wie in Abbildung \ref{fig:NeuErstellteSimulation} aus.
\begin{figure}[htbp]
\centering
@@ -18,22 +18,22 @@ Der Simulator pr\"{a}sentiert sich nach dem ersten Starten wie in Abbildung \ref \label{fig:DateiMenue}
\end{figure}
-\subsection{Die Men\"{u}zeile}
+\subsubsection{Die Men\"{u}zeile}
Im Datei-Men\"{u} (Abbildung \ref{fig:DateiMenue}) lassen sich neue Simulationen erstellen oder die aktuell ge\"{o}ffnete Simulation schliessen. Neue Simulationen \"{o}ffnen sich standardm\"{a}ßig in einem neuen Tab. Es k\"{o}nnen allerdings auch neue Simulationsfenster, die wiederrum eigene Tabs besitzen, ge\"{o}ffnet oder geschlossen werden. In jedem Tab befindet sich eine von den Anderen vollst\"{a}ndig unabh\"{a}ngige Simulation. Es k\"{o}nnen somit beliebig viele Simulationen parallel ausgef\"{u}hrt werden. Die Men\"{u}eintr\"{a}ge ``\"{O}ffnen'', ``Speichern'' und ``Speichern unter'' dienen f\"{u}r das Laden und Speichern von Simulationen.
\begin{figure}[htbp]
\centering
\fbox{\includegraphics{images/ss-neue-simulation-klein}}
- \caption{Eine neuerstellte Simulation}
+ \caption{Eine neue Simulation}
\label{fig:NeuErstellteSimulation}
\end{figure}
-\"{U}ber das Editieren-Men\"{u} gelangt man zu den Simulationseinstellungen, worauf sp\"{a}ter genauer eingegangen wird. Es werden in diesem Men\"{u} auch alle beteiligten Prozesse zum Editieren aufgelistet. Das Simulator-Men\"{u} bietet die selben Optionen wie die Toolbar, welche im n\"{a}chsten Teilkapitel beschrieben wird.
+\"{U}ber das Editieren-Men\"{u} gelangt man zu den Simulationseinstellungen, worauf sp\"{a}ter genauer eingegangen wird. Es werden in diesem Men\"{u} auch alle beteiligten Prozesse zum Editieren aufgelistet. W\"{a}hlt man dort einen Prozess aus, dann \"{o}ffnet sich der dazugeh\"{o}rige Prozesseditor. Auf diesen wird ebenso sp\"{a}ter genauer eingegangen. Das Simulator-Men\"{u} bietet die selben Optionen wie die Toolbar, welche im n\"{a}chsten Teilkapitel beschrieben wird.
-Einige Men\"{u}s sind erst erreichbar, wenn im aktuellen Fenster bereits eine Simulation erstellt oder geladen wurde.
+Einige Men\"{u}unterpunkte sind erst erreichbar, wenn im aktuellen Fenster bereits eine Simulation erstellt oder geladen wurde.
-\subsection{Die Toolbar}
+\subsubsection{Die Toolbar}
Oben links im Simulator befindet sich die Toolbar (Abbildung \ref{fig:Toolbar}). Die Toolbar enth\"{a}lt die Funktionen, die vom Benutzer am h\"{a}ufigsten verwendet werden.
@@ -56,7 +56,7 @@ Die Toolbar bietet vier verschiedene Funktionalit\"{a}ten an: Die Toolbar l\"{a}sst sich auch nach Belieben repositionieren (z.B. links, rechts oder unten des Simulatorfensters). Hierf\"{u}r muss per ``Drag-n-Drop'' die ``raue Fl\"{a}che'' zur Zielposition gezogen werden.
-\subsection{Die Visualisierung}
+\subsubsection{Die Visualisierung}
\begin{figure}[htbp]
\centering
@@ -65,11 +65,11 @@ Die Toolbar l\"{a}sst sich auch nach Belieben repositionieren (z.B. links, recht \label{fig:Visualisierung}
\end{figure}
-Mittig rechts in Abbildung \ref{fig:NeuErstellteSimulation} befindet sich die grafische Repr\"{a}sentation der Simulation. Die X-Achse repr\"{a}sentiert die Zeit in Millisekunden. Die aktuelle Simulation endet nach genau 15 Sekunden. In Abbildung \ref{fig:Visualisierung} sind 3 Prozesse (mit den PIDs 1, 2 und 3) dargestellt, die jeweils einen eigenen horizontalen schwarzen Balken besitzen. Auf diesen Prozessbalken kann man die jeweilige lokale Prozesszeit ablesen. Die vertikale rote Linie stellt die globale Zeit dar.
+Mittig rechts in Abbildung \ref{fig:NeuErstellteSimulation} befindet sich die grafische Repr\"{a}sentation der Simulation. Die X-Achse gibt die Zeit in Millisekunden an. Unsere Demo-Simulation endet nach genau 15 Sekunden. In Abbildung \ref{fig:Visualisierung} sind 3 Prozesse (mit den PIDs 1, 2 und 3) dargestellt, die jeweils einen eigenen horizontalen schwarzen Balken besitzen. Auf diesen Prozessbalken kann der Benutzer die jeweilige lokale Prozesszeit ablesen. Die vertikale rote Linie stellt die globale Simulationszeit dar.
-Die Prozessbalken dienen auch f\"{u}r Start- und Zielpunkte von Nachrichten. Wenn beispielsweise Prozess 1 eine Nachricht zum Prozess 2 verschickt, so wird eine Linie vom einen Prozessbalken zum Anderen gezeichnet. Nachrichten, die ein Prozess an sich selbst schickt, werden nicht visualisiert.
+Die Prozessbalken dienen auch f\"{u}r Start- und Zielpunkte von Nachrichten. Wenn beispielsweise Prozess 1 eine Nachricht zum Prozess 2 verschickt, so wird eine Linie vom einen Prozessbalken zum Anderen gezeichnet. Nachrichten, die ein Prozess an sich selbst schickt, werden nicht visualisiert. Sie werden aber im Loggfenster (mehr dazu sp\"{a}ter) protokolliert.
-Mit einem Linksklick auf einen Prozessbalken ist es ebenso m\"{o}glich einen Prozess zu editieren. Dies muss also nicht zwingend \"{u}ber das Simulator-Men\"{u} geschehen. Ein Rechtsklick hingegen \"{o}ffnet ein Popup-Fenster mit weiteren Auswahlm\"{o}glichkeiten (Abbildung \ref{fig:RechtsklickProzessbalken}). Ein Prozess kann \"{u}ber das Popup-Men\"{u} nur dann abst\"{u}rzen oder wiederbelebt werden, wenn die Simulation aktuell l\"{a}uft.
+Eine andere M\"{o}glichkeit einen Prozesseditor aufzurufen ist ein Linksklick auf den zum Prozess geh\"{o}rigen Prozessbalken. Dies muss also nicht zwingend \"{u}ber das Simulator-Men\"{u} geschehen. Ein Rechtsklick hingegen \"{o}ffnet ein Popup-Fenster mit weiteren Auswahlm\"{o}glichkeiten (Abbildung \ref{fig:RechtsklickProzessbalken}). Ein Prozess kann \"{u}ber das Popup-Men\"{u} nur dann abst\"{u}rzen oder wiederbelebt werden, wenn die Simulation aktuell l\"{a}uft.
\begin{figure}[htbp]
\centering
@@ -82,7 +82,7 @@ Generell kann die Anzahl der Prozesse nach belieben variieren. Die Dauer der Sim \subsubsection{Farbliche Differenzierung}
-F\"{u}r Visualisierung einer Simulation spielen Farben eine große Rolle. Standardm\"{a}ßig werden die Prozesse (Prozessbalken) und Nachrichten mit den Farben wie in Tabelle \ref{tb:Farben} aufgelistet dargestellt. Dies sind lediglich die Standarfarben, welche man \"{u}ber die Einstellungen neudefinieren kann.
+Farben helfen dabei die Vorg\"{a}nge einer Simulation zu deuten. Standardm\"{a}ßig werden die Prozesse (Prozessbalken) und Nachrichten mit den Farben wie in Tabelle \ref{tb:Farben} aufgelistet dargestellt. Dies sind lediglich die Standarfarben, welche man \"{u}ber die Einstellungen umkonfigurieren kann.
\begin{table}
\fbox{
@@ -96,7 +96,7 @@ F\"{u}r Visualisierung einer Simulation spielen Farben eine große Rolle. Standar & \\
\textbf{Nachrichtfarbe} & \textbf{Bedeutung} \\
\hline
- Gr\"{u}n & Die Nachricht ist noch unterwegs hat das Ziel noch nicht erreicht\\
+ Gr\"{u}n & Die Nachricht ist noch unterwegs und hat das Ziel noch nicht erreicht\\
Blau & Die Nachricht hat das Ziel erfolgreich erreicht\\
Rot & Die Nachricht ging verloren (entweder weil der Zielprozess abgest\"{u}rzt ist\\
& oder weil sie unterwegs verloren ging)\\
@@ -107,18 +107,18 @@ F\"{u}r Visualisierung einer Simulation spielen Farben eine große Rolle. Standar \label{tb:Farben}
\end{table}
-\subsection{Die Sidebar}
+\subsubsection{Die Sidebar}
-Mithilfe der Sidebar lassen sich Ereignisse von Prozessen verwalten. Ganz oben in Abbildung \ref{fig:Sidebar} ist der zu verwaltende Prozess selektiert (hier mit der PID 1). In dieser Prozessauswahl gibt es auch die M\"{o}glichkeit ``Alle Prozesse'' auszuw\"{a}hlen, womit die Ereignisse aller Prozesse gleichzeitig verwaltet werden k\"{o}nnen. Unter ``Lokale Ereignisse'' versteht man diejenigen Ereignisse, die auftreten, wenn eine bestimmte lokale Zeit des dazugeh\"{o}rigen Prozesses eingetreten ist. Die darunterliegende Ereignistabelle listet alle programmierten Ereignisse (hier noch keine vorhanden) mitsamt Eintrittszeit sowie PID auf.
+Mithilfe der Sidebar lassen sich Ereignisse von Prozessen verwalten. Ganz oben in Abbildung \ref{fig:Sidebar} ist der zu verwaltende Prozess selektiert (hier mit der PID 1). In dieser Prozessauswahl gibt es auch die M\"{o}glichkeit ``Alle Prozesse'' auszuw\"{a}hlen, womit die Ereignisse aller Prozesse gleichzeitig verwaltet werden k\"{o}nnen. Unter ``Lokale Ereignisse'' versteht man diejenigen Ereignisse, die auftreten, wenn eine bestimmte lokale Zeit des dazugeh\"{o}rigen Prozesses eingetreten ist. Die darunterliegende Ereignistabelle listet alle programmierten Ereignisse (hier noch keine vorhanden) mitsamt Eintrittszeiten sowie den PIDs auf.
\begin{figure}[htbp]
\centering
\fbox{\includegraphics[width=9cm]{images/ss-sidebar}}
- \caption{Die Sidebar mit noch keinen programmierten Ereignissen}
+ \caption{Die Sidebar mit leerem Ereigniseditor}
\label{fig:Sidebar}
\end{figure}
-F\"{u}r die Erstellung eines neuen Ereignisses kann man entweder mit einem Rechtsklick auf einen Prozessbalken (Abbildung \ref{fig:RechtsklickProzessbalken}) klicken, oder unterhalb der Ereignistabelle ein Ereignis ausw\"{a}hlen (Abbildung \ref{fig:Ereignisauswahl}), im darunterliegendem Textfeld die Zeit eintragen und auf ``\"{U}bernehmen'' klicken. Beispielsweise wurden auf Abbildung \ref{fig:SidebarMitEreignissen} drei Ereignisse hinzugef\"{u}gt: Absturz nach 123ms, Wiederbelebung nach 321ms und erneuerter Absturz nach 3000ms des Prozesses mit der ID 1.
+F\"{u}r die Erstellung eines neuen Ereignisses kann der Benutzer entweder mit einem Rechtsklick auf einen Prozessbalken (Abbildung \ref{fig:RechtsklickProzessbalken}) klicken, oder unterhalb der Ereignistabelle ein Ereignis ausw\"{a}hlen (Abbildung \ref{fig:Ereignisauswahl}), im darunterliegendem Textfeld die Zeit eintragen und auf ``\"{U}bernehmen'' klicken. Beispielsweise wurden auf Abbildung \ref{fig:SidebarMitEreignissen} drei Ereignisse hinzugef\"{u}gt: Absturz nach 123ms, Wiederbelebung nach 321ms und erneuerter Absturz nach 3000ms des Prozesses mit der ID 1.
\begin{figure}[htbp]
\centering
@@ -127,9 +127,9 @@ F\"{u}r die Erstellung eines neuen Ereignisses kann man entweder mit einem Recht \label{fig:Ereignisauswahl}
\end{figure}
-Mit einem Rechtsklick auf den Ereigniseditor lassen sich alle selektierten Ereignisse entweder kopieren oder l\"{o}schen. Die Spalten f\"{u}r die Zeit und der PID lassen sich nachtr\"{a}glich editieren. Somit besteht eine komfortable M\"{o}glichkeit bereits programmierte Ereignisse auf eine andere Zeit zu verschieben oder einem anderen Prozess zuzuweisen.
+Mit einem Rechtsklick auf den Ereigniseditor lassen sich alle selektierten Ereignisse entweder kopieren oder l\"{o}schen. Die Eintr\"{a}ge der Spalten f\"{u}r die Zeit und der PID lassen sich nachtr\"{a}glich editieren. Somit besteht eine komfortable M\"{o}glichkeit bereits programmierte Ereignisse auf eine andere Zeit zu verschieben oder einem anderen Prozess zuzuweisen.
-In der Sidebar gibt es neben dem Ereignis-Tab einen weiteren Tab ``Variablen''. Dort k\"{o}nnen alle Variablen des aktuell ausgew\"{a}hlten Prozesses editiert werden. Mehr dazu aber sp\"{a}ter.
+In der Sidebar gibt es neben dem Ereignis-Tab einen weiteren Tab ``Variablen''. Hinter diesem Tab verbirgt sich der Prozesseditor des aktuell ausgew\"{a}hlten Prozesses. Dort k\"{o}nnen alle Variablen des Prozesses editiert werden. Dies wird sp\"{a}ter genauer behandelt.
\begin{figure}[htbp]
\centering
@@ -138,7 +138,7 @@ In der Sidebar gibt es neben dem Ereignis-Tab einen weiteren Tab ``Variablen''. \label{fig:SidebarMitEreignissen}
\end{figure}
-\subsection{Das Loggfenster}
+\subsubsection{Das Loggfenster}
Das Loggfenster (Abbildung \ref{fig:NeuErstellteSimulation}, unten) protokolliert in chronologischer Reihenfolge alle eingetroffenen Ereignisse. Auf Abbildung \ref{fig:Loggfenster} sieht man das Loggfenster nach Erstellung unserer Simulation, an welcher 3 Prozesse beteiligt sind. Am Anfang eines Loggeintrages wird stets die globale Zeit in Millisekunden protokolliert. Bei jedem Prozess wird ebenso seine lokale Zeit sowie die Lamport- und die Vektor-Zeitstempel aufgef\"{u}hrt. Letztere werden sp\"{a}ter genauer behandelt.
@@ -149,15 +149,15 @@ Das Loggfenster (Abbildung \ref{fig:NeuErstellteSimulation}, unten) protokollier \label{fig:Loggfenster}
\end{figure}
-Mit dem Deaktivieren der Checkbox ``Logging'' l\"{a}ßt sich das direkte Loggen von Nachrichten tempor\"{a}r ausstellen. Ohne aktivierter Checkbox erscheinen keine neuen Nachrichten mehr im Loggfenster. Nach Reaktivieren der Checkbox werden alle ausgelassenen Nachrichten nachtr\"{a}glich in das Fenster geschrieben. Eine Deaktivierung des Loggings kann zu verbessertem Leistungsverhalten des Simulators f\"{u}hren (z.B. kein Rucklen; ist vom verwendeten Computer, auf dem der Simulator l\"{a}uft, abh\"{a}ngig).
+Mit dem Deaktivieren der Checkbox ``Logging'' l\"{a}ßt sich das direkte Loggen von Nachrichten tempor\"{a}r deaktivieren. Ohne aktivierter Checkbox erscheinen keine neuen Nachrichten mehr im Loggfenster. Nach Reaktivieren der Checkbox werden alle ausgelassenen Nachrichten nachtr\"{a}glich in das Fenster geschrieben. Eine Deaktivierung des Loggings kann zu verbessertem Leistungsverhalten des Simulators f\"{u}hren (z.B. kein Rucklen; ist vom verwendeten Computer, auf dem der Simulator l\"{a}uft, abh\"{a}ngig). Dieser Umstand ist der sehr langsamen Java-Implementierung der JTextArea-Klasse zu verdanken.
\"{U}ber die Checkbox ``Expertenmodus'' wird der Expertenmodus aktiviert beziehungsweise deaktiviert.
-\section{Der Expertenmodus}
+\subsection{Eine Beispielsimulation}
-\subsection{Vom einfachen Modus zum Expertenmodus}
+\section{Der Expertenmodus}
-Der Simulator kann in zwei verschiedenen Modi betrieben werden. Es gibt einen einfachen- und einen Expertenmodus. Der Simulator started standardm\"{a}ßig im einfachen Modus. Die Idee ist die, dass der Benutzer nicht mit der vollen Funktionalit\"{a}t des Simulators auf einmal konfrontiert werden soll. Der einfache Modus ist \"{u}bersichtlicher, bietet jedoch weniger Funktionen an. Der Expertenmodus eigent sich f\"{u}r erfahrene Anwender und bietet dementsprechend auch mehr Flexibilit\"{a}t. Der Expertenmodus kann \"{u}ber die gleichnamige Checkbox unterhalb des Loggfensters oder \"{u}ber die Simulationseinstellungen aktiviert und deaktiviert werden. Auf Abbildung \ref{fig:SimulationExpertenmodus} ist der Simulator im Expertenmodus zu sehen.
+Der Simulator kann in zwei verschiedenen Modi betrieben werden. Es gibt einen einfachen- und einen Expertenmodus. Der Simulator started standardm\"{a}ßig im einfachen Modus, so dass sich der Benutzer nicht mit der vollen Funktionalit\"{a}t des Simulators auf einmal auseinandersetzen muß. Der einfache Modus ist \"{u}bersichtlicher, bietet jedoch weniger Funktionen an. Der Expertenmodus eigent sich f\"{u}r mehr erfahrene Anwender und bietet dementsprechend auch mehr Flexibilit\"{a}t. Der Expertenmodus kann \"{u}ber die gleichnamige Checkbox unterhalb des Loggfensters oder \"{u}ber die Simulationseinstellungen aktiviert oder deaktiviert werden. Auf Abbildung \ref{fig:SimulationExpertenmodus} ist der Simulator im Expertenmodus zu sehen.
\begin{figure}[htbp]
\centering
@@ -166,11 +166,13 @@ Der Simulator kann in zwei verschiedenen Modi betrieben werden. Es gibt einen ei \label{fig:SimulationExpertenmodus}
\end{figure}
-Wenn man den Simulator im Expertenmodus mit Abbildung \ref{fig:NeuErstellteSimulation} vergleicht, dann fallen einige Unterschiede auf, die nun allesamt behandelt werden.
+Wenn man den Simulator im Expertenmodus mit Abbildung \ref{fig:NeuErstellteSimulation} vergleicht, dann fallen einige Unterschiede auf, die nun behandelt werden.
-\subsection{Globale Ereignisse}
+\subsubsection{Globale Ereignisse und weitere Sidebar-Funktionalit\"{a}ten}
-Der erste Unterschied ist in der Sidebar erkennbar (Abbildung \ref{fig:SidebarExpertenmodus}). Dort sind nun, zus\"{a}tzlich den lokalen Ereignissen, auch globale Ereignisse editierbar. Wie bereits erw\"{a}hnt sind unter lokale Ereignisse diejenigen Ereignisse zu verstehen, die auftreten, wenn eine bestimmte lokale Zeit des dazugeh\"{o}rigen Prozesses eingetreten ist. Globale Ereignisse hingegen sind die Ereignisse, die auftreten, wenn eine bestimmte globale Zeit eingetreten ist. Ein globales Ereignis ist zwar an einen Prozess zwecks Ausf\"{u}hrung gebunden (z.B. ein Prozess st\"{u}rzt ab), nimmt aber die globale Zeit als Eintrittskriterium.
+Der erste Unterschied ist in der Sidebar erkennbar (Abbildung \ref{fig:SidebarExpertenmodus}). Dort sind nun, zus\"{a}tzlich den lokalen Ereignissen, auch globale Ereignisse editierbar. Wie bereits erw\"{a}hnt, sind unter lokale Ereignisse diejenigen Ereignisse zu verstehen, die auftreten, wenn eine bestimmte lokale Zeit des dazugeh\"{o}rigen Prozesses eingetreten ist. Globale Ereignisse hingegen sind die Ereignisse, die auftreten, wenn eine bestimmte globale Zeit eingetreten ist. Ein globales Ereignis nimmt die globale Zeit- und ein lokales Ereignis die lokale Prozesszeit als Eintrittskriterium. Globale Ereignisse machen somit nur einen Unterschied, wenn sich die lokalen Prozesszeiten von der globalen Zeit unterscheiden.\\
+\\
+Eine weitere Sidebar-Funktionalit\"{a}t, die im einfachen Modus noch nicht verf\"{u}gbar war, ist die M\"{o}glichkeit einem neuzuerstellenen Ereignis direkt die PID zuzuweisen. Im einfachen Modus wurde, wenn man ein neues Ereignis erstellte, standardm\"{a}ßig immer die PID des aktuell ausgew\"{a}hlten Prozesses (in der obersten Combo-Box) verwendet. In der Combo-Box sollte man bestenfalls ``Alle Prozesse'' selektieren, damit im Ereigniseditor stets die Ereignisse aller Prozesse angezeigt werden.
\begin{figure}[htbp]
\centering
@@ -179,16 +181,38 @@ Der erste Unterschied ist in der Sidebar erkennbar (Abbildung \ref{fig:SidebarEx \label{fig:SidebarExpertenmodus}
\end{figure}
-Eine weitere Sidebar-Funktionalit\"{a}t, die im einfachen Modus noch nicht verf\"{u}gbar war, ist die M\"{o}glichkeit einem neuzuerstellenen Ereignis direkt die PID zuzuweisen. Im einfachen Modus wurde, wenn man ein neues Ereignis erstellte, standardm\"{a}ßig immer die PID des aktuell ausgew\"{a}hlten Prozesses (in der obersten Combo-Box) verwendet. In der Combo-Box sollte man bestenfalls ``Alle Prozesse'' selektieren, damit im Ereigniseditor stets die Ereignisse aller Prozesse angezeigt werden.
-\subsection{Lamport- und Vektorzeit}
+\subsubsection{Lamport- und Vektorzeit}
+
+Weitere Unterschiede machen sich unterhalb des Loggfensters bemerkbar. Dort gibt es unter Anderem zwei neue Checkboxen ``Lamportzeit'' und ``Vektorzeit''. Aktiviert man eine dieser beiden Checkboxen, dann wird die Lamport- bzw. Vektorzeit in die Visualisierung mitangegeben. \"{U}bersichtshalber kann man nur jeweils eine dieser beiden Checkboxen aktivieren. Wenn die Lamportzeit-Checkbox bereits aktiviert ist und der Benutzer versucht die Vektorzeit-Checkbox zus\"{a}tzlich zu aktivieren, so wird die Lamportzeit-Checkbox automatisch deaktiviert und virce versa.
+
+\subsubsection{Anti-Aliasing}
-Weitere Unterschiede machen sich unterhalb des Loggfensters bemerkbar. Dort gibt es unter Anderem zwei neue Checkboxen ``Lamportzeit'' und ``Vektorzeit''.
+Die Anti-Aliasing-Checkbox erm\"{o}glicht dem Benutzer Anti-Aliasing zu aktivieren und deaktivieren. Mit aktiviertem Anti-Aliasing werden alle Grafiken der Visualisierung gerundet dargestellt. Aus Performancegr\"{u}nden ist Anti-Aliasing standardm\"{a}ßig deaktiviert.
-\subsection{Loggfilter}
+\subsubsection{Loggfilter}
+Je komplexer eine Simulation wird, desto un\"{u}bersichtlicher werden die Eintr\"{a}ge im Loggfenster. Hier f\"{a}llt es zunehmend schwerer die \"{U}bersicht aller Ereignisse zu behalten. Um dem entgegenzuwirken gibt es im Expertenmodus einen Loggfilter, welcher es erm\"{o}glicht nur die wesentlichen Daten aus den Loggs zu filtern. Der Loggfilter wird anhand der dazugeh\"{o}rigen Checkbox ``Filter'' aktiviert bzw. deaktiviert. In der dahinterliegenden Eingabezeile kann ein regul\"{a}rer Ausdruck in Java-Syntax angegeben werden. Beispielsweise werden mit ``\texttt{PID: (1|2)}'' nur Loggzeilen angezeigt, die entweder ``\texttt{PID: 1}'' oder ``\texttt{PID: 2}'' beinhalten. Alle anderen Zeilen, beispielsweise mit ``\texttt{PID: 3}'', werden nicht angezeigt. Mit aktiviertem Loggfilter werden nur die Loggzeilen angezeigt, auf die der regul\"{a}re Ausdruck passt. Der Loggfilter kann auch nachtr\"{a}glich aktiviert werden. Bereits protokollierte Ereignisse werden jedes Mal erneuert gefiltert. Der Loggfilter kann auch w\"{a}hrend einer laufenden Simulation verwendet werden. Wenn der Loggfilter deaktiviert wird, dann werden wieder alle Nachrichten (auch nachtr\"{a}glich) im Loggfenster angezeigt.
\section{Ereignisse}
+
+Des Weiteren wird hier auf alle Ereignisse eingegangen, die man, wie wir schon gesehen haben, mithilfe des Ereigniseditors programmieren kann.
+
+\subsubsection{Prozessabsturz- und Wiederbelebung}
+
+Die beiden grundliegensten Ereignisse sind ``Prozessabsturz'' sowie ``Prozesswiederbelebung''. Wenn ein Prozess abgest\"{u}rzt ist, so wird sein Prozessbalken in rot dargestellt. Ein abgest\"{u}rzter Prozess kann keine weiteren Ereignisse mehr verarbeiten und, wenn er eine Nachricht empfangen sollte, geht sie verloren. Die einzige Ausnahme bildet ein Wiederbelebungsereignis. Ein abgest\"{u}rzter Prozess kann nichts, ausser wiederbelebt werden. W\"{a}hrend eines Prozessabsturzes l\"{a}uft die lokale Prozessuhr wie gewohnt weiter. D.h. es k\"{o}nnte sein, dass ein Prozess einige seiner lokalen Ereignisse gar nicht ausf\"{u}hrt, da er zu den Ereigniseintrittszeiten abgest\"{u}rzt ist. Selbiges trifft nat\"{u}rlich auch auf globale Ereignisse zu. Wenn im echten Leben ein Computer abst\"{u}rzt oder abgeschaltet wird, dann l\"{a}uft dort die Hardwareuhr, unabh\"{a}ngig vom Betriebssystem, auch weiter.
+
+\subsubsection{Aktivierung und Deaktivierung von Protokollen}
+
+Wir wissen bereits, dass ein Prozess mehrere Protokolle, sowohl Client- als auch Serverseitig, unterst\"{u}tzen kann. Welches Protokoll von einem Prozess unterst\"{u}tzt wird, kann man anhand von Protokollaktivierungs- und Protokolldeaktivierungsereignissen konfigurieren. Somit besteht die M\"{o}glichkeit, dass ein gegebener Prozess ein bestimmtes Protokoll erst zu einem bestimmten Zeitpunkt unterst\"{u}tzt und ggf. ein anderes Protokoll abl\"{o}st. Jedes Protokoll kann entwender Server- oder Clientseitig aktiviert beziehungsweise deaktiviert werden. Welche Protokolle es gibt wird sp\"{a}ter genauer behandelt.
+
+\subsubsection{Weitere Protokollereignisse}
+
+\subsubsection{Nachrichtenempfang}
+
+\subsubsection{Call-Back Ereignis}
+
+\section{Protokolle}
lsdkfjds lfjds flsjfsljsd flsdjf sldkfjsdlfkj
lsdkfjds lfjds flsjfsljsd flsdjf sldkfjsdlfkj
lsdkfjds lfjds flsjfsljsd flsdjf sldkfjsdlfkj
@@ -354,16 +378,6 @@ Weitere Unterschiede machen sich unterhalb des Loggfensters bemerkbar. Dort gibt -\subsection{Prozessabsturz}
-
-\subsection{Prozesswiederbelebung}
-
-\subsection{Aktivierung und Deaktivierung von Protokollen}
-
-\subsection{Weitere Protokollereignisse}
-
-\section{Protokolle}
-
\subsection{Beispiel (Dummy) Protokoll}
\subsection{Das Ping-Pong Protokoll}
@@ -400,4 +414,3 @@ Weitere Unterschiede machen sich unterhalb des Loggfensters bemerkbar. Dort gibt \subsection{Protokolleinstellungen}
-TODO: Farben der Prozessbalken, Farben der Nachrichten
diff --git a/LaTeX/chapters/titlepage.tex b/LaTeX/chapters/titlepage.tex index bded2dd..310d3f8 100644 --- a/LaTeX/chapters/titlepage.tex +++ b/LaTeX/chapters/titlepage.tex @@ -52,7 +52,7 @@ {\large Prof. Dr. rer. nat. Heinrich Fassbender} {durch\\} - {\large\bfseries cand. Diplom-Inform. (FH) Paul C. B\"{u}tow\\[0.3cm] } + {\large\bfseries Paul C. B\"{u}tow\\[0.3cm] } {\large Matr.Nr.: 266617\\} {Matthiashofstr. 15\\} {D-52064 Aachen\\} @@ -71,7 +71,7 @@ \textbf{\LARGE Danksagungen} \vspace*{1.5cm} -Ohne die Hilfe bestimmter Personen w\"{a}re die Anfertigung dieser Diplomarbeit viel schwieriger gewesen. Daher m\"{o}chte ich mich bei den Folgenden bedanken: +Ohne die Hilfe folgender Personen w\"{a}re die Anfertigung dieser Diplomarbeit in diesem Maße nicht m\"{o}glich gewesen. Daher m\"{o}chte ich mich bedanken bei: \begin{itemize} \item Martin Oßmann f\"{u}r die Betreuung der Diplomarbeit und der Bereitstellung des f\"{u}r mich sehr interessanten Themas diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf index 9c1d860..a4f2341 100644 --- a/LaTeX/diplomarbeit.pdf +++ b/LaTeX/diplomarbeit.pdf @@ -9,384 +9,268 @@ endobj << /S /GoTo /D (section.1.1) >> endobj 12 0 obj -(\376\377\0001\000.\0001\000\040\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000e\000i\000n\000e\000s\000\040\000v\000e\000r\000t\000e\000i\000l\000t\000e\000n\000\040\000S\000y\000s\000t\000e\000m\000s) +(\376\377\0001\000.\0001\000\040\000M\000o\000t\000i\000v\000a\000t\000i\000o\000n) endobj 13 0 obj << /S /GoTo /D (section.1.2) >> endobj 16 0 obj -(\376\377\0001\000.\0002\000\040\000M\000o\000t\000i\000v\000a\000t\000i\000o\000n) +(\376\377\0001\000.\0002\000\040\000G\000r\000u\000n\000d\000l\000a\000g\000e\000n) endobj 17 0 obj << /S /GoTo /D (chapter.2) >> endobj 20 0 obj -(\376\377\0002\000\040\000G\000r\000u\000n\000d\000b\000e\000g\000r\000i\000f\000f\000e) +(\376\377\0002\000\040\000D\000e\000r\000\040\000S\000i\000m\000u\000l\000a\000t\000o\000r) endobj 21 0 obj << /S /GoTo /D (section.2.1) >> endobj 24 0 obj -(\376\377\0002\000.\0001\000\040\000C\000l\000i\000e\000n\000t\000/\000S\000e\000r\000v\000e\000r\000\040\000M\000o\000d\000e\000l\000l) +(\376\377\0002\000.\0001\000\040\000D\000i\000e\000\040\000g\000r\000a\000f\000i\000s\000c\000h\000e\000\040\000B\000e\000n\000u\000t\000z\000e\000r\000s\000c\000h\000n\000i\000t\000t\000s\000t\000e\000l\000l\000e) endobj 25 0 obj -<< /S /GoTo /D (section.2.2) >> +<< /S /GoTo /D (subsection.2.1.1) >> endobj 28 0 obj -(\376\377\0002\000.\0002\000\040\000P\000r\000o\000z\000e\000s\000s\000e\000\040\000u\000n\000d\000\040\000d\000e\000r\000e\000n\000\040\000R\000o\000l\000l\000e\000n) +(\376\377\0002\000.\0001\000.\0001\000\040\000E\000i\000n\000e\000\040\000B\000e\000i\000s\000p\000i\000e\000l\000s\000i\000m\000u\000l\000a\000t\000i\000o\000n) endobj 29 0 obj -<< /S /GoTo /D (section.2.3) >> +<< /S /GoTo /D (section.2.2) >> endobj 32 0 obj -(\376\377\0002\000.\0003\000\040\000N\000a\000c\000h\000r\000i\000c\000h\000t\000e\000n) +(\376\377\0002\000.\0002\000\040\000D\000e\000r\000\040\000E\000x\000p\000e\000r\000t\000e\000n\000m\000o\000d\000u\000s) endobj 33 0 obj -<< /S /GoTo /D (section.2.4) >> +<< /S /GoTo /D (section.2.3) >> endobj 36 0 obj -(\376\377\0002\000.\0004\000\040\000L\000o\000k\000a\000l\000e\000\040\000u\000n\000d\000\040\000g\000l\000o\000b\000a\000l\000e\000\040\000U\000h\000r\000e\000n) +(\376\377\0002\000.\0003\000\040\000E\000r\000e\000i\000g\000n\000i\000s\000s\000e) endobj 37 0 obj -<< /S /GoTo /D (section.2.5) >> +<< /S /GoTo /D (section.2.4) >> endobj 40 0 obj -(\376\377\0002\000.\0005\000\040\000E\000r\000e\000i\000g\000n\000i\000s\000s\000e) +(\376\377\0002\000.\0004\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l\000e) endobj 41 0 obj -<< /S /GoTo /D (section.2.6) >> +<< /S /GoTo /D (subsection.2.4.1) >> endobj 44 0 obj -(\376\377\0002\000.\0006\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l\000e) +(\376\377\0002\000.\0004\000.\0001\000\040\000B\000e\000i\000s\000p\000i\000e\000l\000\040\000\050\000D\000u\000m\000m\000y\000\051\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l) endobj 45 0 obj -<< /S /GoTo /D (chapter.3) >> +<< /S /GoTo /D (subsection.2.4.2) >> endobj 48 0 obj -(\376\377\0003\000\040\000D\000e\000r\000\040\000S\000i\000m\000u\000l\000a\000t\000o\000r) +(\376\377\0002\000.\0004\000.\0002\000\040\000D\000a\000s\000\040\000P\000i\000n\000g\000-\000P\000o\000n\000g\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l) endobj 49 0 obj -<< /S /GoTo /D (section.3.1) >> +<< /S /GoTo /D (subsection.2.4.3) >> endobj 52 0 obj -(\376\377\0003\000.\0001\000\040\000D\000i\000e\000\040\000g\000r\000a\000f\000i\000s\000c\000h\000e\000\040\000B\000e\000n\000u\000t\000z\000e\000r\000s\000c\000h\000n\000i\000t\000t\000s\000t\000e\000l\000l\000e) +(\376\377\0002\000.\0004\000.\0003\000\040\000D\000a\000s\000\040\000B\000r\000o\000a\000d\000c\000a\000s\000t\000-\000S\000t\000u\000r\000m\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l) endobj 53 0 obj -<< /S /GoTo /D (subsection.3.1.1) >> +<< /S /GoTo /D (subsection.2.4.4) >> endobj 56 0 obj -(\376\377\0003\000.\0001\000.\0001\000\040\000D\000i\000e\000\040\000M\000e\000n\000\374\000z\000e\000i\000l\000e) +(\376\377\0002\000.\0004\000.\0004\000\040\000D\000a\000s\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l\000\040\000z\000u\000r\000\040\000i\000n\000t\000e\000r\000n\000e\000n\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000s\000i\000e\000r\000u\000n\000g\000\040\000i\000n\000\040\000e\000i\000n\000e\000m\000\040\000s\000y\000n\000c\000h\000r\000o\000n\000e\000n\000\040\000S\000y\000s\000t\000e\000m) endobj 57 0 obj -<< /S /GoTo /D (subsection.3.1.2) >> +<< /S /GoTo /D (subsection.2.4.5) >> endobj 60 0 obj -(\376\377\0003\000.\0001\000.\0002\000\040\000D\000i\000e\000\040\000T\000o\000o\000l\000b\000a\000r) +(\376\377\0002\000.\0004\000.\0005\000\040\000C\000h\000r\000i\000s\000t\000i\000a\000n\000s\000\040\000M\000e\000t\000h\000o\000d\000e\000\040\000z\000u\000r\000\040\000e\000x\000t\000e\000r\000n\000e\000n\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000s\000i\000e\000r\000u\000n\000g) endobj 61 0 obj -<< /S /GoTo /D (subsection.3.1.3) >> +<< /S /GoTo /D (subsection.2.4.6) >> endobj 64 0 obj -(\376\377\0003\000.\0001\000.\0003\000\040\000D\000i\000e\000\040\000V\000i\000s\000u\000a\000l\000i\000s\000i\000e\000r\000u\000n\000g) +(\376\377\0002\000.\0004\000.\0006\000\040\000B\000e\000r\000k\000e\000l\000e\000y\000\040\000A\000l\000g\000o\000r\000i\000t\000h\000m\000u\000s\000\040\000z\000u\000r\000\040\000i\000n\000t\000e\000r\000n\000e\000n\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000s\000a\000t\000i\000o\000n) endobj 65 0 obj -<< /S /GoTo /D (subsection.3.1.4) >> +<< /S /GoTo /D (subsection.2.4.7) >> endobj 68 0 obj -(\376\377\0003\000.\0001\000.\0004\000\040\000D\000i\000e\000\040\000S\000i\000d\000e\000b\000a\000r) +(\376\377\0002\000.\0004\000.\0007\000\040\000D\000a\000s\000\040\000E\000i\000n\000-\000P\000h\000a\000s\000e\000n\000\040\000C\000o\000m\000m\000i\000t\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l) endobj 69 0 obj -<< /S /GoTo /D (subsection.3.1.5) >> +<< /S /GoTo /D (subsection.2.4.8) >> endobj 72 0 obj -(\376\377\0003\000.\0001\000.\0005\000\040\000D\000a\000s\000\040\000L\000o\000g\000g\000f\000e\000n\000s\000t\000e\000r) +(\376\377\0002\000.\0004\000.\0008\000\040\000D\000a\000s\000\040\000Z\000w\000e\000i\000-\000P\000h\000a\000s\000e\000n\000\040\000C\000o\000m\000m\000i\000t\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l) endobj 73 0 obj -<< /S /GoTo /D (section.3.2) >> +<< /S /GoTo /D (subsection.2.4.9) >> endobj 76 0 obj -(\376\377\0003\000.\0002\000\040\000D\000e\000r\000\040\000E\000x\000p\000e\000r\000t\000e\000n\000m\000o\000d\000u\000s) +(\376\377\0002\000.\0004\000.\0009\000\040\000D\000e\000r\000\040\000u\000n\000g\000e\000n\000\374\000g\000e\000n\000d\000e\000\040\000\050\000B\000a\000s\000i\000c\000\051\000\040\000M\000u\000l\000t\000i\000c\000a\000s\000t) |
