diff options
| author | Paul Buetow <paul@buetow.org> | 2008-07-24 19:29:19 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-07-24 19:29:19 +0000 |
| commit | 818364cac31ca4733547ae5c5d173b10fcb8b959 (patch) | |
| tree | 238ad2c5657abc3edd34da495dd3a7bbfc1fd31a | |
| parent | 2e3952b9b35b6ead874fa8c870ee1001a0d73fac (diff) | |
foo
| -rw-r--r-- | LaTeX/chapters/simulator.tex | 74 | ||||
| -rw-r--r-- | LaTeX/diplomarbeit.pdf | 3271 | ||||
| -rw-r--r-- | LaTeX/images/ss-simulationseinstellungen-experten.png | bin | 0 -> 481324 bytes |
3 files changed, 1852 insertions, 1493 deletions
diff --git a/LaTeX/chapters/simulator.tex b/LaTeX/chapters/simulator.tex index f4b1a17..65cb659 100644 --- a/LaTeX/chapters/simulator.tex +++ b/LaTeX/chapters/simulator.tex @@ -29,7 +29,7 @@ Im Datei-Men\"{u} (Abbildung \ref{fig:DateiMenue}) lassen sich neue Simulationen \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. 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.
+\"{U}ber das Editieren-Men\"{u} gelangt der Benutzer 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 der Benutzer 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}unterpunkte sind erst erreichbar, wenn im aktuellen Fenster bereits eine Simulation erstellt oder geladen wurde.
@@ -82,7 +82,7 @@ Generell kann die Anzahl der Prozesse nach belieben variieren. Die Dauer der Sim \subsubsection{Farbliche Differenzierung}
-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.
+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 der Benutzer \"{u}ber die Einstellungen umkonfigurieren kann.
\begin{table}
\fbox{
@@ -109,7 +109,7 @@ Farben helfen dabei die Vorg\"{a}nge einer Simulation zu deuten. Standardm\"{a} \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 Eintrittszeiten sowie den PIDs 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 der Benutzer 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
@@ -140,7 +140,7 @@ In der Sidebar gibt es neben dem Ereignis-Tab einen weiteren Tab ``Variablen''. \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.
+Das Loggfenster (Abbildung \ref{fig:NeuErstellteSimulation}, unten) protokolliert in chronologischer Reihenfolge alle eingetroffenen Ereignisse. Auf Abbildung \ref{fig:Loggfenster} sieht der Benutzer 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.
\begin{figure}[htbp]
\centering
@@ -162,7 +162,7 @@ Mit dem Deaktivieren der Checkbox ``Logging'' l\"{a}t sich das direkte Loggen v \label{fig:SimulationExpertenmodus}
\end{figure}
-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. Wenn man den Simulator im Expertenmodus mit Abbildung \ref{fig:NeuErstellteSimulation} vergleicht, dann fallen einige Unterschiede auf, die nun aufs Weitere behandelt werden.
+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. Wenn der Benutzer den Simulator im Expertenmodus mit Abbildung \ref{fig:NeuErstellteSimulation} vergleicht, dann fallen einige Unterschiede auf, die nun aufs Weitere behandelt werden.
\begin{figure}[htbp]
\centering
@@ -173,9 +173,9 @@ Der Simulator kann in zwei verschiedenen Modi betrieben werden. Es gibt einen ei 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 diejenigen 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 neue Funktionalit\"{a}t 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 dieser Combo-Box sollte man gegebenenfalls ``Alle Prozesse'' selektieren, damit im Ereigniseditor stets die Ereignisse aller Prozesse aufgelistet werden.
+Eine weitere neue Funktionalit\"{a}t ist die M\"{o}glichkeit einem neuzuerstellenen Ereignis direkt die PID zuzuweisen. Im einfachen Modus wurde, wenn der Benutzer ein neues Ereignis erstellte, standardm\"{a}ig immer die PID des aktuell ausgew\"{a}hlten Prozesses (in der obersten Combo-Box) verwendet. In dieser Combo-Box sollte der Benutzer gegebenenfalls ``Alle Prozesse'' selektieren, damit im Ereigniseditor stets die Ereignisse aller Prozesse aufgelistet werden.
-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- beziehungsweise Vektorzeit in die Visualisierung dargestellt. \"{U}bersichtshalber kann der Benutzer 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.
+Weitere Unterschiede machen sich unterhalb des Loggfensters bemerkbar. Dort gibt es unter Anderem zwei neue Checkboxen ``Lamportzeit'' und ``Vektorzeit''. Aktiviert der Benutzer eine dieser beiden Checkboxen, dann wird die Lamport- beziehungsweise Vektorzeit in die Visualisierung dargestellt. \"{U}bersichtshalber kann der Benutzer 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.
%TODO: Lamport und Vektorzeit definieren!
@@ -207,7 +207,7 @@ Der Benutzer hat die Auswahl zwischen f\"{u}nf weiteren Protokollereignissen: \item Starten einer Client/Server-Anfrage des gegebenen Protokolls
\end{itemize}
-Ob sich das Ereignis f\"{u}r das Starten einer Anfrage auf den Client oder Server bezieht, h\"{a}ngt vom verwendeten Protokoll ab. Man unterscheidet von Protokollen die Clientseitig- oder Serverseitig eine initiale Anfrage starten. Beispielsweise startet bei dem ``Ping-Pong Protokoll'' der Client- und bei dem ``Commit-Protokollen'' der Server immer die erste Anfrage. Es gibt kein Protokoll, wo Client und Server jeweils eine initiale Anfragen starten k\"{o}nnen.
+Ob sich das Ereignis f\"{u}r das Starten einer Anfrage auf den Client oder Server bezieht, h\"{a}ngt vom verwendeten Protokoll ab. der Benutzer unterscheidet von Protokollen die Clientseitig- oder Serverseitig eine initiale Anfrage starten. Beispielsweise startet bei dem ``Ping-Pong Protokoll'' der Client- und bei dem ``Commit-Protokollen'' der Server immer die erste Anfrage. Es gibt kein Protokoll, wo Client und Server jeweils eine initiale Anfragen starten k\"{o}nnen.
Bei allen dieser f\"{u}nf Ereignissen kann der betroffene Prozess noch beliebig andere Dinge, abh\"{a}ngig vom Protokoll, tun. Beispielsweise kann er den Inhalt der Nachricht generieren oder lokale Variablen initialisieren oder eine der lokalen Uhzeiten \"{a}ndern oder Wecker f\"{u}r ``Callback Ereignisse'' setzen (mehr dazu sp\"{a}ter).
@@ -225,7 +225,7 @@ In diesem Abschnitt wird auf die m\"{o}glichen Simulationseinstellungen genauer \subsection{Simulationseinstellungen}
-Beim Erstellen einer neuen Simulation erscheint zun\"{a}chst das dazugeh\"{o}rige Einstellungsfenster (Abbildung \ref{fig:Simulationseinstellungen}). In der Regel reicht es, wenn man hier die Standardwerte \"{u}bernimmt. Es besteht auch die M\"{o}glichkeiten nach Erstellen einer Simulation die Einstellungen zu \"{a}ndern, indem man das Einstellungsfenster erneuert unter ``Editieren $\rightarrow$ Einstellungen'' aufruft.
+Beim Erstellen einer neuen Simulation erscheint zun\"{a}chst das dazugeh\"{o}rige Einstellungsfenster (Abbildung \ref{fig:Simulationseinstellungen}). In der Regel reicht es, wenn der Benutzer hier die Standardwerte \"{u}bernimmt. Es besteht auch die M\"{o}glichkeiten nach Erstellen einer Simulation die Einstellungen zu \"{a}ndern, indem der Benutzer das Einstellungsfenster erneuert unter ``Editieren $\rightarrow$ Einstellungen'' aufruft.
\begin{figure}[htbp]
\centering
@@ -238,12 +238,13 @@ Beim Erstellen einer neuen Simulation erscheint zun\"{a}chst das dazugeh\"{o}rig Im Folgenden werden alle in den Simulationseinstellungen verf\"{u}gbaren Variablen beschrieben. Die Klammern geben den Typen und die Standardwerte an, in denen die Variablen vorliegen.
\begin{itemize}
- \item \textbf{Prozesse empfangen eigene Nachrichten} \textit{(Boolean, false)}: Standardm\"{a}ig k\"{o}nnen Prozesse aus \"{u}bersichtshalber keine Nachrichten empfangen, die sie selbst verschickt haben. Wenn diese Variable jedoch auf true gesetzt wird, dann kann ein Prozess auch auf selbst verschickte Nachrichten antworten. Die Zeit f\"{u}r das Versenden und Empfangen einer Nachricht an sich selbst betr\"{a}gt jedoch stets 0ms. Diese Variable sollte mit Vorsicht verwendet werden, da hierdurch, bedingt aus den 0ms, Endlosschleifen entstehen k\"{o}nnen.
- \item \textbf{Mittelwerte der Nachrichtenverlustwahrscheinlichkeiten bilden} \textit{(Boolean, true)}: Jede Nachricht die verschickt wird hat, je nach Einstellungen, eine vom verschickendem Prozess abh\"{a}ngige zuf\"{a}llige \"{U}bertragungszeit. Wenn diese Option aktiviert ist, so wird der Mittelwert vom Sende- und Empfangsprozess gebildet. Ansonsten wird stets die \"{U}bertragungszeit des Senderprozesses verwendet.
- \item \textbf{Expertenmodus aktivieren} \textit{(Boolean, false)}: Hier l\"{a}sst sich ebenso der Expertenmodus aktivieren oder deaktivieren.
- \item \textbf{Simulation periodisch wiederholen} \textit{(Boolean, false)}: Wenn diese Variable auf true gesetzt wird, so wird die Simulation jedes Mal nach Ablauf automatisch erneuert gestartet.
+ \item \textbf{Prozesse empfangen eigene Nachrichten} \textit{(Boolean, false)}: Standardm\"{a}ig k\"{o}nnen Prozesse \"{u}bersichtshalber keine Nachrichten empfangen, die sie selbst verschickt haben. Wenn diese Variable jedoch auf true gesetzt wird, dann kann ein Prozess auch auf selbst verschickte Nachrichten antworten. Die Zeit f\"{u}r das Versenden und Empfangen einer Nachricht an sich selbst betr\"{a}gt jedoch stets 0ms. Diese Variable sollte mit Vorsicht verwendet werden, da hierdurch, bedingt aus den 0ms, Endlosschleifen entstehen k\"{o}nnen.
+ \item \textbf{Mittelwerte der Nachrichtenverlustwahrscheinlichkeiten bilden} \textit{(Boolean, true)}: Jede Nachricht die verschickt wird hat, je nach Einstellungen, eine vom verschickendem Prozess abh\"{a}ngige zuf\"{a}llige \"{U}bertragungszeit. Wenn diese Option aktiviert ist, so wird der Mittelwert vom Sende- und Empfangsprozess gebildet. Ansonsten wird stets die \"{U}bertragungszeit, die beim Senderprozesses angegeben wurde, verwendet.
+ \item \textbf{Nur relevante Nachrichten anzeigen} \textit{(Boolean, true)}: Wenn nur alle relevanten Nachrichten angezeigt werden, so werden Nachrichten an einen Prozess die er selbst nicht verarbeiten kann, weil er das dazugeh\"{o}rige Protokoll nicht unterst\"{u}tzt, nicht angezeigt. Hierdurch wird eine Simulation viel \"{u}bersichtlicher.
+ \item \textbf{Expertenmodus aktivieren} \textit{(Boolean, false)}: Hier l\"{a}sst sich der Expertenmodus ebenso aktivieren oder deaktivieren.
+ \item \textbf{Simulation periodisch wiederholen} \textit{(Boolean, false)}: Wenn diese Variable auf true gesetzt ist, so wird die Simulation jedes Mal nach Ablauf automatisch erneuert gestartet.
\item \textbf{Abspielgeschwindigkeit der Simulation} \textit{(Float, 0.5)}: Gibt den Faktor der Simulationsabspielgeschindigkeit an. Wenn als Faktor 1 gew\"{a}hlt wird, dann dauert eine simulierte Sekunde auch in echt eine Sekunde. Der Faktor 0.5 gibt somit an, dass die Simulation mit halber Echtzeitgschwindigkeit simuliert wird.
- \item \textbf{Anzahl der Prozesse} \textit{(Integer, 3)}: Gibt an wieviele Prozesse an der Simulation teilnehmen sollen. Wie schon erw\"{a}hnt kann man auch nachtr\"{a}glich via Rechtsklick auf den Prozessbalken den jeweiligen Prozess aus der Simulation entfernen oder weitere Prozesse hinzuf\"{u}gen.
+ \item \textbf{Anzahl der Prozesse} \textit{(Integer, 3)}: Gibt an, wieviele Prozesse an der Simulation teilnehmen sollen. Wie schon erw\"{a}hnt kann der Benutzer auch nachtr\"{a}glich via Rechtsklick auf den Prozessbalken den jeweiligen Prozess aus der Simulation entfernen oder weitere Prozesse hinzuf\"{u}gen.
\item \textbf{Dauer der Simulation} \textit{(Integer, 15)}: Gibt die Dauer der Simulation in Sekunden an.
\end{itemize}
@@ -264,15 +265,50 @@ Jeder Prozess besitzt folgende Variablen, die entweder via dem Variablen-Tab in \item \textbf{Prozessausfallwahrscheinlichkeit} \textit{(Integer, 0)}: Gibt eine Wahrscheinlichkeit in Prozent an, ob der gegebene Prozess w\"{a}hrend der Simulation zuf\"{a}llig abst\"{u}rzt.
\item \textbf{Lokale Zeit} \textit{(Long, 0)}: Gibt die aktuelle lokale Prozesszeit in ms an. Es empfiehlt sich daher die Simulation, bevor Prozesseinstellungen vorgenommen werden, zu pausieren.
\item \textbf{Nachrichtenverlustwahrscheinlichkeit} \textit{(Integer, 0)}: Gibt eine Wahrscheinlichkeit in Prozent an, ob eine vom aktuell ausgew\"{a}hlten Prozess verschickte Nachricht unterwegs verloren geht.
- \item \textbf{} \textit{(, )}:
- \item \textbf{} \textit{(, )}:
- \item \textbf{} \textit{(, )}:
- \item \textbf{} \textit{(, )}:
+ \item \textbf{Maximale \"{U}bertragungszeit} \textit{(Long, 2000)}: Gibt die Dauer in ms an, die eine vom Prozess verschickte Nachricht maximal ben\"{o}tigt, bis sie einen Empf\"{a}ngerprozess erreicht. Der verwendete Wert wird zuf\"{a}llig zwischen (inklusive) der minimalen- und der maximalen Zeit gew\"{a}hlt.
+ \item \textbf{Minimale \"{U}bertragungszeit} \textit{(Long, 500)}: Gibt die Dauer in ms an, die eine vom Prozess verschickte Nachricht minimal ben\"{o}tigt, bis sie einen Empf\"{a}ngerprozess erreicht. Der verwendete Wert wird zuf\"{a}llig zwischen (inklusive) der minimalen- und der maximalen Zeit gew\"{a}hlt.
\end{itemize}
+\begin{figure}[htbp]
+ \centering
+ \fbox{\includegraphics{images/ss-simulationseinstellungen-experten}}
+ \caption{Weitere Simulationseinstellungen im Expertenmodus}
+ \label{fig:SimulationseinstellungenExperten}
+\end{figure}
+
+Im selben Fenster lassen sich auch die Protokollvariablen editieren. Die Protokollvariablen werden jedoch sp\"{a}ter in der Protokollsektion beschrieben.
\subsection{Einstellungen im Expertenmodus}
+\begin{table}
+ \centering
+ \fbox{
+ \begin{tabular}{l|l}
+ \textbf{Schl\"{u}ssel} & \textbf{Beschreibung}\\
+ \hline
+ \texttt{col.background} & Die Hintergrundfarbe der Simulation\\
+ \texttt{col.message.arrived} & Nachrichtenfarbe wenn sie ihr Ziel erreicht hat\\
+ \texttt{col.message.lost} & Nachrichtenfarbe wenn sie verloren ging\\
+ \texttt{col.message.sending} & Nachrichtenfarbe wenn sie noch unterwegs ist\\
+ \textbf{\texttt{col.process.crashed}} & Prozessfarbe wenn er abgest\"{u}rzt ist\\
+ \textbf{\texttt{col.process.default}} & Prozessfarbe wenn die Simulation aktuell nicht l\"{a}uft und \\
+ & der Prozess aktuell nicht abgest\"{u}rzt ist \\
+ \textbf{\texttt{col.process.highlight}} & Prozessfarbe wenn die Maus \"{u}ber seinem Balken liegt\\
+ \texttt{col.process.line} & Farbe, in der die kleine ``Prozessfane'' an der auch die \\
+ & lokale Prozesszeit angegeben wird, dargestellt wird\\
+ \textbf{\texttt{col.process.running}} & Prozessfarbe wenn er nicht abgest\"{u}rzt ist und die\\
+ & Simulation aktuell l\"{a}uft\\
+ \texttt{col.process.secondline} & Farbe in der die Sekunden-Zeitgitter dargestellt werden \\
+ \texttt{col.process.sepline} & Farbe der globalen Zeitachse\\
+ \textbf{\texttt{col.process.stopped}} & Prozessfarbe wenn die Simulation pausiert wurde\\
+ \end{tabular}
+ }
+ \caption{Farbeinstellungen}
+ \label{tb:Farbeinstellungen}
+\end{table}
+
+Mit aktiven Expertenmodus lassen sich zus\"{a}tzliche Variablen, wie beispielsweise diverse Farbwerte und Anzahl der Pixel verschiedener der GUI-Elemente, editieren. In Abbildung \ref{fig:SimulationseinstellungenExperten} sieht der Benutzer alle einstellbaren Farben. Die fettgedruckten Schl\"{u}ssel in Tabelle \ref{tb:Farbeinstellungen} dienen nur als Standardwerte f\"{u}r neuzuerstellende Prozesse und sind auch jeweils in den Prozesseinstellungen separat editierbar.
+
\section{Protokolle}
Im Folgenden werden alle bisher verf\"{u}gbaren Protokolle behandelt. Wie bereits beschrieben wird bei Protokollen zwischen Server- und Clientseite unterschieden. Server k\"{o}nnen auf Clientnachrichten, und Client auf Servernachrichten antworten. Jeder Prozess kann beliebig viele Protokolle sowohl Clientseitig als auch Serverseitig untest\"{u}tzen. Theoretisch ist es auch m\"{o}glich, dass ein Prozess f\"{u}r ein bestimmtes Protokoll gleichzeitig Server und Client ist. Der Benutzer kann auch weitere eigene Protokolle in der Programmiersprache Java mittels einer speziellen API (Application Programming Interface) erstellen. Wie eigene Protokolle erstellt werden k\"{o}nnen wird sp\"{a}ter behandelt.
@@ -314,7 +350,7 @@ Bei dem Ping-Pong Protokoll (Abbildung \ref{fig:PingPongProto}) werden zwischen \label{fig:PingPongSturmProto}
\end{figure}
-\"{A}ndert man die Ereignisse wie in Tabelle \ref{tb:PingPongSturmTasks} ab, so l\"{a}sst sich ein Ping-Pong Sturm realisieren. Dort wurde ein neuer Prozess 3 eingef\"{u}hrt, der als Ping-Pong Server fungiert. Als Ursache verdoppelt sich die Anzahl der kursierenden Nachrichten bei jedem Client-Server Roundtrip, da auf jede Clientnachricht stets 2 Serverantworten verschickt werden. In Abbildung \ref{fig:PingPongSturmProto} ist der resultierende Simulationsverlauf dargestellt.
+Werden die Ereignisse wie in Tabelle \ref{tb:PingPongSturmTasks} abge\"{a}ndert, so l\"{a}sst sich ein Ping-Pong Sturm realisieren. Dort wurde ein neuer Prozess 3 eingef\"{u}hrt, der als Ping-Pong Server fungiert. Als Ursache verdoppelt sich die Anzahl der kursierenden Nachrichten bei jedem Client-Server Roundtrip, da auf jede Clientnachricht stets 2 Serverantworten verschickt werden. In Abbildung \ref{fig:PingPongSturmProto} ist der resultierende Simulationsverlauf dargestellt.
\begin{table}
\centering
diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf index f31bc7b..eebf4db 100644 --- a/LaTeX/diplomarbeit.pdf +++ b/LaTeX/diplomarbeit.pdf @@ -438,7 +438,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 176 0 obj << -/Length 2209 +/Length 2214 /Filter /FlateDecode >> stream @@ -448,11 +448,12 @@ NRәpΗ{P6u #ffNgC@y=ESXR|21`=eK 7 c$e?[[67ܱ7ܞN2AΙعIKgu^nwCPS8"R(%6h5T-C(c\s41g;gՂ:yXӅdl%DEG
>2#<5w{z|<I%aZtf-QY \8J
|!*%Z -(cx-#)|JLoe7ΰsh6%ilŮc1X}^YQF}=tNRˎGY<;as)bnϤid$Iʜvw킣mx(W|T,Ab1jv9|9AUJ5c1e4}LB6ܨmS㘲>gIcuL
Ն%a"|!K*:Y2}}2E!<lO[RQUiBY.IJsf-P҆P~Hk.2Ji9 |1?C@c -dpvFl.>jSĄk~y&5Pd1j8;ǍW&nzAUߵ J'su(|# -8WUJyϕ/r*r\3H+gbށC˂ڼoXeǫM Yk5JErbM,k\ -'<zMJijG{&wڝ~}ɷyYnG@ i|g|gv(JL&"f?Vpao֦~)Adr=flٮ5؞%[*2{P7xqGx5ZN۳fҙPG -|UJ=9C|Gh<as)Bcn? +(cx-#)|JLoe7ΰsh6%ilŮc1X}^YQF}=tNRˎGY<;as)bnϤid$Iʜvw킣mx(W|T,Ab1jv9|9AUJ5c1e4}LB6ܨmS㘲>gIcuL
Ն%a"|!K*:Y2}}2E!<lO[RQUiBY.IJsf-P҆P~Hk.2Ji9 |1?C@c +#(xKY&tV)2a_&D!N\ +J:5$C"w-W˪^vsY̶ )sV)cocf+-34f\v.Ű:ayRf/[JoTweQ{vU`ݚo۷V`7´Ojwa
̸lcYgb;ݏAXnq\Mt7=ؚ%uuw-EU˲_n=Bn>K~F +dpvFl.>jSĄk|I
Y46q#I{a54|jyuPwnsuɨ;h\3 +)C2_@Q*#@~xONPLP\{\(LFQN\-+GËv[)az唋2Y$g>E#G6*D+gҧ\9?*/h Dg@d?'ѐ=!ͥ=sa)O z;GqTsO#wLqxqeݜ\VqcaSvUrs5UgRs\B6*L0CF)Ew6`*b![)j?4sG@kR0f@gB +JgBf_z9v(g~avV)Ze|ϳQ4ͥ=lV endobj 175 0 obj << /Type /Page @@ -655,17 +656,18 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 207 0 obj << -/Length 1124 +/Length 1125 /Filter /FlateDecode >> stream -x_o6)h?#y1&oOs`;-OKKhS"[``I1OG ?N9E<ᜬ7?GiAoo~Isur'JRFٻq9>ͅU걩y{RQp)jUUd&C2o1Qcg"l<e~"@8Cu9
UR$Rhj,F%=p%-R
U%N4WV2IxpC,k*4Ԫ)&S4Yߎ~`lW!|[B:4AnڬYCP.8`|U - -SJ kQ] -`f3Z+$a*2$aIxfͼp%<seLB/U 4<tq]\QPFTAUHNj^#| W0W2%פl -)ZQu)yƸ歗Pwͺ}4VŻsfϛ5Uj}QTjPH9:`֝;p -= -p +xKo6\|\bZL`]U!\_KKhS"g +$q^UMBlYy{Utgn!͕Tk7ԉɹ7VM1d*=vmMc3 +`TrP1Jɷ%QY[/I͊p˙u9T C +ɯJA!=R0ZԠKq4llFH\d$ ;U! fOs0sVGhN++{e2}r]@4JeĥRGBp?^t90cat))&%d,UwakzuwܬGiUkڋz;lY]S5 Qnq}ݗE5lUT_S + +[zRڳ_\*Nq(.P2X LN *8~T6=, +>ebuz<n59ڐrJZPҟKszOr301o`:\ \X@(τiͽ
>qu/B60(AeaF^國;W/WvOXO](gePNYĦtOuzv;HC4@KM#qVSe4nF˒qBѥLjPQP29z*ݭvy\&FF)NiAU7`Sfzp6NfÛۧieP㼟Q?[QθvYBSS
N~C7ߘd~ +?vnZAlOEvwUpM'T@L:2 endobj 206 0 obj << /Type /Page @@ -767,21 +769,20 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 226 0 obj << -/Length 1903 +/Length 1972 /Filter /FlateDecode >> stream -xݛ[o6+ti_p+P4n]8²5~DJ(
vI IOȏ2P&(PL(/n/`Y
Pƅ~3zI9$<HHO]<\_`EvkMQ.վWyq/wUQśUg+L 鐕a1>s - -m8b"NdJ -u27՛ZokVipuWs~hor}}Wb5}yu<|mp37S#fb/3/@rTV1\b$8b$?+RV -[^E^2,e(ywe9N L0*)uT|#3Ag-cGc1SD9KcF #Zwt<?1\2$0&dRT81 -T'GNNJ juX<5ybnMtTs87vn.>A#A - $lsu+gԡO2g2>uS&`)>+%uYwNNO5 -/`hAΣsE;P`j1Z*˟-H7Ei?-.zLx,o<T/4 -1uTXK9`:`:=F.ZPy~S2KE}ٖE].QwԣKۻs{;;8J>ɖщyI3k??C,I4<i<FF24$0r#n9k2eqkVvݧ[\]lf..@@D3?p$sT0G9͢+Z6>O[2(JN'Ϋbys(T-hߜb_u+̺7 M64iVeQiBxkHX]F}DZ4Ǒ9 pĶw=(Cǘ s$TbTd@40Ǽ6MA+],eP0ӌNB{vk8ʑ7MEo
xBT̋w%TZD0׃]hBQBs
QjED}E-AL+W~`yU z;sNeSѪT&KPuJ=4Rm\'T"Kelpۿ_p]pr*2?ժR1w '<FA/KhbQˠcPi -:'aq $%(ØfT6 ܧG]:fybnQGGNQ\Kh~Mw;VO4ps;9ƗM5pTT
,2Kc*dhU{nQ˘B:$MY舩E_3:c&S&zeL*f Irʅ;<b]"\(u,(6}^/탛MqM4uV -orS+_,FV1cIge]SG<m}|}ψtSgU_k>.ZDuBs:d~)u:N$<u2Kzwq+{BUwc5<w
Z;\P1NvVJ(TI4WxUCmfw<Fh.8s2|{\dendstream +xݛˎ6y +-/Vh 3hMFN<}I(Q"3fjss(
ʠ2AeB}Pv{xgj(2.o7dO@0JQ~
@B](__nnrwuApkrWߞLuKp!!-FP{/ +JXu+lzYyu~~eX Pr֑`.UBT)0F&v1tG54Cc4,$Y64(`NHwxpu,< @HS
O1PNX"s*p',,bTA,2@*ŢGqr]2\h?wIv:onP +D4 ++S|' +[<?)/UQ̽iP{CӤYƗEI~\OD\Cr2Ұc$JN֒&Ǥ9=W"+͌b;q0|gB̜*3ICgtx.@7~5: +f4u7Щݨx
i_>{tCvES<[Ad2;ђYU*,"`A\)p4 x@r
QjED}E \W[{~͝ u&j˦ +#ѬT&.2jv4Rm\'T"KeD?p]ps*2ߙժR>wGFAOK\[] +LS9[&g%wcͪRvlw1[4;u5?&.fvuDozu̵t67|nNyaey
F)N6pNeS
Ea?YbAzLŃk~3eL! +ɦ,SeB9,sD81XU*vˏ=F$\Ųe@hnw2wE[3:SJCJCe*fϧR4s̅˙̑HO3E,1ڗVd(6}^/s3 jb3G<DHK\|w5?N$<՝u2˟tny-1gL`U)o` g'\nIeQRSYōU
x𥺽;M`.жřX`E8Q":;Z
4XkςZo$%t2(FC9p~r[ަendstream endobj 225 0 obj << /Type /Page @@ -789,7 +790,7 @@ endobj /Resources 224 0 R /MediaBox [0 0 595.2757 841.8898] /Parent 166 0 R -/Annots [ 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R ] +/Annots [ 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R ] >> endobj 229 0 obj << /Type /Annot @@ -906,31 +907,38 @@ endobj 245 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.9113 315.1745 236.2388 327.4507] +/Rect [89.9113 315.1745 374.5351 327.7037] /Subtype /Link /A << /S /GoTo /D (figure.2.14) >> >> endobj 246 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.9113 297.2472 276.2296 309.7765] +/Rect [89.9113 297.2472 236.2388 309.5235] /Subtype /Link /A << /S /GoTo /D (figure.2.15) >> >> endobj 247 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.9113 281.5418 268.2227 291.8492] +/Rect [89.9113 279.32 276.2296 291.8492] /Subtype /Link /A << /S /GoTo /D (figure.2.16) >> >> endobj 248 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.9113 261.3928 331.9705 273.922] +/Rect [89.9113 263.6145 268.2227 273.922] /Subtype /Link /A << /S /GoTo /D (figure.2.17) >> >> endobj +249 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.9113 243.4655 331.9705 255.9948] +/Subtype /Link +/A << /S /GoTo /D (figure.2.18) >> +>> endobj 227 0 obj << /D [225 0 R /XYZ 74.4095 793.4011 null] >> endobj @@ -941,61 +949,70 @@ endobj /Font << /F26 162 0 R /F28 165 0 R >> /ProcSet [ /PDF /Text ] >> endobj -271 0 obj << -/Length 648 +273 0 obj << +/Length 722 /Filter /FlateDecode >> stream -xŖM@Y|8ۛۤƴ.HޅD5mLdy9}aD2AphCM)|3,/y -:zj8k܉+P+#ڲwG +x͗Mo@=ocf?QJ=TQ˭큀C,_1`(!oe}H&!#^Ӆl/y +Bq^y7.phA*}X.mAyrz
Q-eN.ʋrw +Q3Jh.S,)(^7~lK<;b?b%U,ZHc5,#4\?0hnc(}
증mU^,iouHa=
mU1?$G[ rP۷M># +m
ޅ@c'VSrM:lUH><9,w Lj6@s+,ke
aTb>D)YVK%pMQBY{\\ڞ~ endobj -270 0 obj << +272 0 obj << /Type /Page -/Contents 271 0 R -/Resources 269 0 R +/Contents 273 0 R +/Resources 271 0 R /MediaBox [0 0 595.2757 841.8898] /Parent 166 0 R -/Annots [ 274 0 R 275 0 R 276 0 R 277 0 R ] +/Annots [ 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R ] >> endobj -274 0 obj << +276 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.9113 611.9728 397.7864 624.5021] /Subtype /Link /A << /S /GoTo /D (table.2.1) >> >> endobj -275 0 obj << +277 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.9113 594.0456 298.4028 606.3218] +/Rect [89.9113 594.0456 204.0679 606.3218] /Subtype /Link /A << /S /GoTo /D (table.2.2) >> >> endobj -276 0 obj << +278 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.9113 576.1184 338.3936 588.6476] +/Rect [89.9113 576.1184 298.4028 588.3946] /Subtype /Link /A << /S /GoTo /D (table.2.3) >> >> endobj -277 0 obj << +279 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.9113 558.1911 330.3868 570.7204] +/Rect [89.9113 558.1911 338.3936 570.7204] /Subtype /Link /A << /S /GoTo /D (table.2.4) >> >> endobj -272 0 obj << -/D [270 0 R /XYZ 74.4095 793.4011 null] +280 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.9113 540.2639 330.3868 552.7932] +/Subtype /Link +/A << /S /GoTo /D (table.2.5) >> >> endobj -273 0 obj << -/D [270 0 R /XYZ 74.4095 643.0213 null] +274 0 obj << +/D [272 0 R /XYZ 74.4095 793.4011 null] >> endobj -269 0 obj << +275 0 obj << +/D [272 0 R /XYZ 74.4095 643.0213 null] +>> endobj +271 0 obj << /Font << /F26 162 0 R /F28 165 0 R >> /ProcSet [ /PDF /Text ] >> endobj -285 0 obj << +289 0 obj << /Length 1086 /Filter /FlateDecode >> @@ -1003,84 +1020,84 @@ stream xڭVKo8W(7ޚY9lc%A[,`;CJ"͡d8/~YD"#L*`,4ڂtD*m0#MqάzV(1%BsbVS*ξ+ 76fdNm{EU=V[.>{*5JΡg.5v%1cL+,W˹ĉ49%q,N0\űV@b#FIZ3F"-mB?Vqj KxuSʫܵ:+]0 TA˒uֹIhSC&!q U5P|/]/A<lEw,h3Wmezܝ(,s*Rmۨ'?5X$cq8ZR1![12Ykkƪ59v13U^2?J(tѴHnu㪭LFT/?Vz3XmazlYFBp2,'Ne\Aav?<yc (APծCh{ Gܢ+O b)oiqKSph]azN];1(oj;,Rp֑KgہB_[|
L<z endobj -284 0 obj << +288 0 obj << /Type /Page -/Contents 285 0 R -/Resources 283 0 R +/Contents 289 0 R +/Resources 287 0 R /MediaBox [0 0 595.2757 841.8898] -/Parent 288 0 R -/Annots [ 287 0 R ] +/Parent 292 0 R +/Annots [ 291 0 R ] >> endobj -282 0 obj << +286 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/verteiltes-system.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 289 0 R +/PTEX.InfoDict 293 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 366.00000000 180.00000000] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 290 0 R ->>/Font << /R8 291 0 R >> +/R7 294 0 R +>>/Font << /R8 295 0 R >> >> -/Length 292 0 R +/Length 296 0 R /Filter /FlateDecode >> stream xVMo1W8N+qҲ Ue`v4A$2Tn^Y8FMlT!Yr)tA,((Py'C,U/8UD
[Iߖ3Ocz\Da4M&Ri֡d*ԒeP^EXf 7MdIɏ F'C9w:
Κ#n;?q7/u~W<c(mZC.!ABz/K|֑]_zu+LyJX` endobj -289 0 obj +293 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080724175411Z00'00') -/ModDate (D:20080724175411Z00'00') +/CreationDate (D:20080724212211Z00'00') +/ModDate (D:20080724212211Z00'00') >> endobj -290 0 obj +294 0 obj << /Type /ExtGState /OPM 1 >> endobj -291 0 obj +295 0 obj << /BaseFont /Helvetica /Type /Font /Subtype /Type1 >> endobj -292 0 obj +296 0 obj 714 endobj -287 0 obj << +291 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [76.4707 384.3703 108.3246 394.4247] /Subtype /Link /A << /S /GoTo /D (cite.Tanenbaum) >> >> endobj -286 0 obj << -/D [284 0 R /XYZ 74.4095 793.4011 null] +290 0 obj << +/D [288 0 R /XYZ 74.4095 793.4011 null] >> endobj 6 0 obj << -/D [284 0 R /XYZ 74.4095 771.7323 null] +/D [288 0 R /XYZ 74.4095 771.7323 null] >> endobj 10 0 obj << -/D [284 0 R /XYZ 74.4095 564.7986 null] +/D [288 0 R /XYZ 74.4095 564.7986 null] >> endobj -249 0 obj << -/D [284 0 R /XYZ 213.3171 155.4996 null] +250 0 obj << +/D [288 0 R /XYZ 213.3171 155.4996 null] >> endobj -283 0 obj << +287 0 obj << /Font << /F26 162 0 R /F28 165 0 R /F61 211 0 R >> -/XObject << /Im2 282 0 R >> +/XObject << /Im2 286 0 R >> /ProcSet [ /PDF /Text ] >> endobj -297 0 obj << +301 0 obj << /Length 1579 /Filter /FlateDecode >> @@ -1094,30 +1111,30 @@ xڭXmo6_23|ovk7`[
XrLD$9ͯ[NlHѐwwSDGDy^Q^( J7gd><;֬)2\o]F_b"pMh%A?[˾?PY zQCLNLAwMmNe!e/o7C[Auz2&JdΔ*A'rK~}ģ@ϼ ;a& 8J=SZʃ~o'0 endobj -296 0 obj << +300 0 obj << /Type /Page -/Contents 297 0 R -/Resources 295 0 R +/Contents 301 0 R +/Resources 299 0 R /MediaBox [0 0 595.2757 841.8898] -/Parent 288 0 R -/Annots [ 299 0 R ] +/Parent 292 0 R +/Annots [ 303 0 R ] >> endobj -294 0 obj << +298 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/client-server.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 301 0 R +/PTEX.InfoDict 305 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 382.00000000 112.00000000] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 302 0 R ->>/Font << /R8 303 0 R >> +/R7 306 0 R +>>/Font << /R8 307 0 R >> >> -/Length 304 0 R +/Length 308 0 R /Filter /FlateDecode >> stream @@ -1125,54 +1142,54 @@ xTn0+xl{p%RE[$F/A,E"N~Ejx0"g槮Ӣ>yTFc5P (C!R;}tI6<o}/[˿w?K\2x
, endobj -301 0 obj +305 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080724175411Z00'00') -/ModDate (D:20080724175411Z00'00') +/CreationDate (D:20080724212211Z00'00') +/ModDate (D:20080724212211Z00'00') >> endobj -302 0 obj +306 0 obj << /Type /ExtGState /OPM 1 >> endobj -303 0 obj +307 0 obj << /BaseFont /Helvetica /Type /Font /Subtype /Type1 >> endobj -304 0 obj +308 0 obj 452 endobj -299 0 obj << +303 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [73.4132 702.552 90.6937 715.0813] /Subtype /Link /A << /S /GoTo /D (figure.1.1) >> >> endobj -298 0 obj << -/D [296 0 R /XYZ 74.4095 793.4011 null] +302 0 obj << +/D [300 0 R /XYZ 74.4095 793.4011 null] >> endobj 14 0 obj << -/D [296 0 R /XYZ 74.4095 466.9572 null] +/D [300 0 R /XYZ 74.4095 466.9572 null] >> endobj -300 0 obj << -/D [296 0 R /XYZ 74.4095 298.4934 null] +304 0 obj << +/D [300 0 R /XYZ 74.4095 298.4934 null] >> endobj -250 0 obj << -/D [296 0 R /XYZ 286.2652 155.4996 null] +251 0 obj << +/D [300 0 R /XYZ 286.2652 155.4996 null] >> endobj -295 0 obj << +299 0 obj << /Font << /F61 211 0 R /F28 165 0 R /F26 162 0 R >> -/XObject << /Im3 294 0 R >> +/XObject << /Im3 298 0 R >> /ProcSet [ /PDF /Text ] >> endobj -307 0 obj << +311 0 obj << /Length 2017 /Filter /FlateDecode >> @@ -1186,38 +1203,38 @@ MDʄVq]?xn,X
&!&fQihjAZ{KnB,<\C v殟r\E/oXaD=^)H92zl6 JdP+;CZ8U3"pUI~HyUwQvendstream endobj -306 0 obj << +310 0 obj << /Type /Page -/Contents 307 0 R -/Resources 305 0 R +/Contents 311 0 R +/Resources 309 0 R /MediaBox [0 0 595.2757 841.8898] -/Parent 288 0 R -/Annots [ 309 0 R ] +/Parent 292 0 R +/Annots [ 313 0 R ] >> endobj -309 0 obj << +313 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [169.1687 720.4793 186.4492 733.0085] /Subtype /Link /A << /S /GoTo /D (figure.1.2) >> >> endobj -308 0 obj << -/D [306 0 R /XYZ 74.4095 793.4011 null] +312 0 obj << +/D [310 0 R /XYZ 74.4095 793.4011 null] >> endobj -310 0 obj << -/D [306 0 R /XYZ 74.4095 634.5446 null] +314 0 obj << +/D [310 0 R /XYZ 74.4095 634.5446 null] >> endobj -311 0 obj << -/D [306 0 R /XYZ 74.4095 447.9781 null] +315 0 obj << +/D [310 0 R /XYZ 74.4095 447.9781 null] >> endobj -312 0 obj << -/D [306 0 R /XYZ 74.4095 277.0292 null] +316 0 obj << +/D [310 0 R /XYZ 74.4095 277.0292 null] >> endobj -305 0 obj << +309 0 obj << /Font << /F61 211 0 R /F28 165 0 R /F26 162 0 R >> /ProcSet [ /PDF /Text ] >> endobj -316 0 obj << +320 0 obj << /Length 1152 /Filter /FlateDecode >> @@ -1225,29 +1242,29 @@ stream xڍnF>i4I4C(i#-LQH9>3;4eI @cE'B3+@dd7W,2gcW\$*d5`Ib_>6Le*<37mOff1X32对6p_&˱oCbEQHZkOgJ; :Pi}Zm u7<tw{on`<i[W$ۖpY=-_
2E˺-fD*<G놧,Ҥa2>%e#XRvIw@[FHqg-+*>ٻL@2 2}OyhTkAxB~JDTK
>&j;AlEAU^:٭nEIͦS6Dge\ݭR."ō_A)d<> _hG /UdY2skTW m0G^=endstream endobj -315 0 obj << +319 0 obj << /Type /Page -/Contents 316 0 R -/Resources 314 0 R |
