summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LaTeX/argouml.zargobin52006 -> 51981 bytes
-rw-r--r--LaTeX/bib/referenzen.bib27
-rw-r--r--LaTeX/chapters/einleitung.tex4
-rw-r--r--LaTeX/chapters/implementierung.tex6
-rw-r--r--LaTeX/chapters/protokolle.tex72
-rw-r--r--LaTeX/diplomarbeit.pdf6799
-rw-r--r--LaTeX/images/utils.eps4
7 files changed, 3437 insertions, 3475 deletions
diff --git a/LaTeX/argouml.zargo b/LaTeX/argouml.zargo
index 911ceb3..b858ea4 100644
--- a/LaTeX/argouml.zargo
+++ b/LaTeX/argouml.zargo
Binary files differ
diff --git a/LaTeX/bib/referenzen.bib b/LaTeX/bib/referenzen.bib
index 89a18c4..5880f93 100644
--- a/LaTeX/bib/referenzen.bib
+++ b/LaTeX/bib/referenzen.bib
@@ -1,15 +1,18 @@
-@book{Games, author="David Brackeen", title="Developing Games in Java", year= 2003, note="ISBN-13: 978-1592730056" }
-@book{Tanenbaum, author={Andrew Tanenbaum}, year={2003}, title={Verteilte Systeme - Grundlagen und Paradigmen}, note={ISBN: 3-8273-7057-4} }
-@book{Regexp, author={Jeffrey Friedl}, year={2006}, title={Mastering Regular Expressions}, note={ISBN-13: 978-0596528126}}
-@book{OOS, author={Prof. Heinrich Fassbender}, year={2006}, title={Vorlesung Objektorientierte Softwareentwicklung an der Fachhochschule Aachen}, note={http://www.fassbender.fh-aachen.de} }
-@book{Richtlinien, author={Prof. Heinrich Fassbender}, year={2008}, title={Programmierrichtlinien an der Fachhochschule Aachen}, note={http://www.fassbender.fh-aachen.de/Downloads/OOS/Programmierrichtlinien.pdf} }
-@book{Vorlesung, author={Prof. Martin Omann}, year={2007}, title={Vorlesung Verteilte Systeme an der Fachhochschule Aachen}, note={Mitschrift: ftp://ftp.buetow.org/pub/studium/FHAC\_VS-SS07/Mitschrift/verteilte-systeme.pdf} }
-@book{M32, author={Prof. Martin Omann}, title={M32 CPU Simulator}, note={http://www.ossmann.fh-aachen.de} }
-@book{Javadoc, title={Java Platform Standard Edition 6 Javadoc}, note={http://java.sun.com/javase/6/docs/api/}}
-@book{Java2D, title={Sun's Java 2D}, note={http://java.sun.com/products/java-media/2D/}}
-@book{Java2DAPI, title={Java 2D API}, note={http://java.sun.com/j2se/1.4.2/docs/guide/2d/spec.html}}
-@book{AntManual, title={Apache Ant Manual}, note={http://ant.apache.org/manual/index.html}}
-@book{AntIntro, title={Apache Ant Introduction}, note={http://www.developer.com/tech/article.php/989631}}
@book{Algorithms, author={Thomas H. Cormen}, year={2001}, title={Introduction to Algorithms}, note={ISBN-13: 978-0262032933}}
@book{AlgorithmsC, author={Robert Sedgewick}, year={1999}, title={Algorithms in C}, note={SBN-13: 978-0201314526}}
+@book{AntIntro, title={Apache Ant Introduction}, note={http://www.developer.com/tech/article.php/989631}}
+@book{AntManual, title={Apache Ant Manual}, note={http://ant.apache.org/manual/index.html}}
+@book{Coul, author="George Coulouris", title="Verteilte Systeme", year=2005, note="ISBN-13: 978-3827371867" }
+@book{Games, author="David Brackeen", title="Developing Games in Java", year=2003, note="ISBN-13: 978-1592730056" }
+@book{Java2D, title={Sun's Java 2D}, note={http://java.sun.com/products/java-media/2D/}}
+@book{Java2DAPI, title={Java 2D API}, note={http://java.sun.com/j2se/1.4.2/docs/guide/2d/spec.html}}
+@book{Javadoc, title={Java Platform Standard Edition 6 Javadoc}, note={http://java.sun.com/javase/6/docs/api/}}
+@book{M32, author={Prof. Martin Omann}, title={M32 CPU Simulator}, note={http://www.ossmann.fh-aachen.de} }
+@book{OOS, author={Prof. Heinrich Fassbender}, year={2006}, title={Vorlesung Objektorientierte Softwareentwicklung an der Fachhochschule Aachen}, note={http://www.fassbender.fh-aachen.de} }
+@book{Regexp, author={Jeffrey Friedl}, year={2006}, title={Mastering Regular Expressions}, note={ISBN-13: 978-0596528126}}
+@book{Richtlinien, author={Prof. Heinrich Fassbender}, year={2008}, title={Programmierrichtlinien an der Fachhochschule Aachen}, note={http://www.fassbender.fh-aachen.de/Downloads/OOS/Programmierrichtlinien.pdf} }
@book{Swing, author={Marc Loy}, year={2002}, title={Java Swing}, note={ISBN-13: 978-0596004088}}
+@book{Tanenbaum, author={Andrew Tanenbaum}, year={2003}, title={Verteilte Systeme - Grundlagen und Paradigmen}, note={ISBN: 3-8273-7057-4} }
+@book{Threads, author={Scott Oaks}, year={2004}, title={Java Threads}, note={ISBN 13: 978-0596007829}}
+@book{UML, title={ArgoUML Quick Guide}, note={http://argouml-stats.tigris.org/documentation/quick-guide-0.24/}}
+@book{Vorlesung, author={Prof. Martin Omann}, year={2007}, title={Vorlesung Verteilte Systeme an der Fachhochschule Aachen}, note={Mitschrift: ftp://ftp.buetow.org/pub/studium/FHAC\_VS-SS07/Mitschrift/verteilte-systeme.pdf} }
diff --git a/LaTeX/chapters/einleitung.tex b/LaTeX/chapters/einleitung.tex
index fd75fbb..f7954a4 100644
--- a/LaTeX/chapters/einleitung.tex
+++ b/LaTeX/chapters/einleitung.tex
@@ -1,3 +1,7 @@
+\newpage
+~
+\thispagestyle{empty}
+\newpage
\chapter{Einleitung}
\section{Motivation}
diff --git a/LaTeX/chapters/implementierung.tex b/LaTeX/chapters/implementierung.tex
index 4c7c683..7e29634 100644
--- a/LaTeX/chapters/implementierung.tex
+++ b/LaTeX/chapters/implementierung.tex
@@ -559,7 +559,7 @@ Der Simulator soll auf die Millisekunde genau simulieren k\"{o}nnen und dabei so
\begin{itemize}
\item Das Zeichnen der Visualisierung bentigt pro Aktualisierung einige Millisekunden. Hier werden stndig mathematische Berechnungen wie z.B. die Berechnung einer Nachrichtenlinie oder die automatische Skalierung des Diagramms durchgef\"{u}hrt.
\item Das Neuberechnen der Simulation bentigt pro Aktualisierung einige Millisekunden. Hier arbeitet insbesondere der Task-Manager, welcher berprft, ob Ereignisse auszufhren sind.
- \item Jeder simulierte Prozess sollte mit der selben Geschwindigkeit fortschreiten, und dies auf jedem Betriebssystem und auf jeder Architektur. Da Threads auf Betriebssystemebene implementiert sind sind Java-Threads nicht komplett plattformunabhngig. Dadurch kann das Verhalten je nach Betriebssystem und Architekturen variieren. Insbesondere bernimmt das Betriebssystem die Entscheidung, wann welcher Thread arbeiten darf.
+ \item Jeder simulierte Prozess sollte mit der selben Geschwindigkeit fortschreiten, und dies auf jedem Betriebssystem und auf jeder Architektur. Da Threads auf Betriebssystemebene implementiert sind sind Java-Threads nicht komplett plattformunabhngig. Dadurch kann das Verhalten je nach Betriebssystem und Architekturen variieren. Insbesondere bernimmt das Betriebssystem die Entscheidung, wann welcher Thread arbeiten darf (vgl. \cite{Threads}).
\item Die Simulationszeit wird stets in Millisekunden angegeben und sie wird intern in einer \textit{long}-Variable abgespeichert. Somit kann eine Simulationszeit immer nur den Wert einer ganze Zahl betragen. Berechnungsrundungsfehler durch \textit{sim.clock.speed} (s. Kap. 2.4.2.) mssen bercksichtigt werden.
\item Der Simulator soll die komplette CPU des Anwender-Computers nicht konstant auslasten.
\end{itemize}
@@ -651,7 +651,7 @@ Es wurden noch nicht die Klassen der Pakete \textit{utils} (s. Abb. \ref{fig:Pac
\item \textit{VSHelper}: In dieser Klasse befinden sich statische Helfermethoden, die in keine andere Klasse gehren.
\item \textit{VSPriorityQueue}: Diese Klasse wird fr das Verwalten von \textit{core.VSTask}-Objekte im Task-Manager bentigt.
\item \textit{VSRandom}: Wird fr Zufallsereignisse bentigt. Jedes Prozessobjekt besitzt einen solchen eigenen Pseudozufallsgenerator. Diese Klasse setzt gleichzeitig einen eigenen Seed basierend auf der lokalen Systemzeit und anderer Zahlen fest.
- \item \textit{VSTupel}: Diese Klasse ist eine Implementierung eines einfach aufgebauten 3-Tupel Datentyps. Alle 3 Elemente knnen von einem anderen Typ sein, was mit Hilfe der Java-Generics verwirklicht wurde. \textit{VSTupel} wird von den Editorklassen fr die Generierung von GUI-Elementen bentigt.
+ \item \textit{VS3Tupel}: Diese Klasse ist eine Implementierung eines einfach aufgebauten 3-Tupel Datentyps. Alle 3 Elemente knnen von einem anderen Typ sein, was mit Hilfe der Java-Generics verwirklicht wurde. \textit{VS3Tupel} wird von den Editorklassen fr die Generierung von GUI-Elementen bentigt.
\end{itemize}
\begin{figure}[h]
@@ -706,7 +706,7 @@ Fr das Schreiben des Java-Quelltextes wurde Graphical Vi IMproved (GVim) sowie
Fr die Erstellung dieses PDF-Dokumentes wurde LaTeX in Verbindung mit dem Built-Tool GNU Make und Rubber verwendet. Eine Rechtschreibberprfung wurde mit aspell sowie OpenOffice.org durchgefhrt. xPDF diente dabei als PDF-Anzeigeprogramm.
-Smtliche UML-Diagramme wurden mit ArgoUML angefertigt und die Screenshots mit The GIMP (GNU Image Manipulation Program) sowie ImageMagick nachbearbeitet. Mit dem zip-Programm wurden alle VS-Simulator Distributionen verpackt.
+Smtliche UML-Diagramme wurden mit ArgoUML und \cite{UML} angefertigt und die Screenshots mit The GIMP (GNU Image Manipulation Program) sowie ImageMagick nachbearbeitet. Mit dem zip-Programm wurden alle VS-Simulator Distributionen verpackt.
\subsubsection{Linkliste der verwendeten Software}
diff --git a/LaTeX/chapters/protokolle.tex b/LaTeX/chapters/protokolle.tex
index accabff..22ad002 100644
--- a/LaTeX/chapters/protokolle.tex
+++ b/LaTeX/chapters/protokolle.tex
@@ -1,7 +1,7 @@
\chapter{Protokolle und Beispiele}
Im Folgenden werden alle verfgbaren Protokolle behandelt. Wie bereits beschrieben wird bei Protokollen zwischen Server- und Clientseite unterschieden. Server knnen auf Clientnachrichten, und Clients auf Servernachrichten antworten. Jeder Prozess kann beliebig viele Protokolle sowohl clientseitig als auch serverseitig untersttzen. Theoretisch ist es auch mglich, dass ein Prozess fr ein bestimmtes Protokoll gleichzeitig der Server und der Client ist. Der Anwender kann auch weitere eigene Protokolle in der Programmiersprache Java mittels der simulatoreigenen API (Application Programming Interface) erstellen (s. Kap. 4.4.4.).
-Im Programmverzeichnis des Simulators befindet sich das Verzeichnis \textit{saved-simulations} mit Beispielsimulationen. Diese liegen jeweils als serialisierter plattformunabh\"{a}ngiger Java-Bytecode in \textit{.dat}-Dateien vor. Alle Protokolle, bis auf das Beispiel-, Ping Pong- sowie das Broadcast-Protokoll, orientieren sich an den in \cite{Tanenbaum} und \cite{Vorlesung} behandelten Protokollen.
+Im Programmverzeichnis des Simulators befindet sich das Verzeichnis \textit{saved-simulations} mit Beispielsimulationen. Diese liegen jeweils als serialisierter plattformunabh\"{a}ngiger Java-Bytecode in \textit{.dat}-Dateien vor. Alle Protokolle, bis auf das Beispiel-, Ping Pong- sowie das Broadcast-Protokoll, orientieren sich an den in \cite{Tanenbaum}, \cite{Coul} und \cite{Vorlesung} behandelten Protokollen.
\section{Beispiel (Dummy) Protokoll}
@@ -101,7 +101,7 @@ Das Broadcast Protokoll verhlt sich hnlich wie das Ping-Pong Protokoll. Der Un
In diesem Fall wird nicht zwischen Client und Server unterschieden, so dass bei der Ankunft einer Nachricht jeweils die gleiche Aktion durchgef\"{u}hrt wird. Somit lsst sich, unter Verwendung mehrerer Prozesse (s. Abb. \ref{fig:BroadcastSturmProto}.) ein Broadcast erzeugen. P1 ist der Client und startet je eine Anfrage nach \textit{0ms} und \textit{2500ms}. Die Simulationsdauer betrgt hier genau \textit{5000ms}. Da ein Client nur Servernachrichten und ein Server nur Clientnachrichten empfangen kann, ist in dieser Simulation jeder Prozess (s. Tabelle \ref{tb:BroadcastSturmTasks}) gleichzeitig Server und Client.
-\newpage
+
\section{Das Protokoll zur internen Synchronisierung in einem synchronen System \small{\textit{(int-sync.dat)}}}
Bisher wurden nur Protokolle dargestellt, in denen die beteiligten Prozesse keine Uhrabweichungen hatten. Das Protokoll zur internen Synchronisierung ist ein Protokoll zur Synchronisierung der lokalen Prozesszeit, welches beispielsweise angewendet werden kann, wenn eine Prozesszeit aufgrund einer Uhrabweichung falsch geht. Wenn der Client seine (falsche) lokale Prozesszeit $t_c$ mit einem Server synchronisieren mchte, so schickt er ihm eine Clientanfrage. Der Server schickt als Antwort seine eigene lokale Prozesszeit $t_s$ zurck, womit der Client eine neue und genauere Prozesszeit f\"{u}r sich berechnen kann.
@@ -197,7 +197,7 @@ Aus Abbildung \ref{fig:TimeSync2Proto}. ist ersichtlich, dass nach Ablauf der Si
\label{tb:InterneSync2Tasks}
\end{table}
-\newpage
+
\section{Der Berkeley Algorithmus zur internen Synchronisierung \small{\textit{(berkeley.dat)}}}
\begin{figure}[h]
@@ -253,7 +253,7 @@ Dieses Protokoll verwendet folgende serverseitige Variable, die in den Prozessei
\item \textbf{PIDs beteiligter Prozesse} \textit{(Integer[]: [1,3])}: Dieser Vektor aus Integerwerten beinhaltet alle PIDs der Berkeley Clientprozesse, mit denen der Berkeley Server die Zeit synchronisieren soll. Das Protokoll funktioniert nicht, wenn hier eine PID angegeben wird die nicht existiert oder die das Berkeley Protokoll clientseitig nicht untersttzt. In diesem Fall wrde ewig auf eine (fehlende) Clientantwort gewartet werden.
\end{itemize}
-\newpage
+
\section{Das Ein-Phasen Commit Protokoll \small{\textit{(one-phase-commit.dat)}}}
\begin{figure}[h]
@@ -295,7 +295,7 @@ Dieses Protokoll verwendet folgende serverseitige Variablen, die in den Prozesse
\end{itemize}
-\newpage
+
\section{Das Zwei-Phasen Commit Protokoll \small{\textit{(two-phase-commit.dat)}}}
\begin{figure}[h]
@@ -396,7 +396,18 @@ Die folgende Clientvariable kann unter den Prozesseinstellungen unter dem Punkt
& & Boolean: isVoteResult=true; voteResult=true\\
\hline
004124 & 1 & Nachricht erhalten; ID: 99; Protokoll: 2-Phasen Commit\\
-\hline
+ \end{tabular}
+ }
+ \caption{Auszug aus dem Logfenster des Zwei-Phasen Commit Beispiels}
+ \label{tb:TwoPhaseCommitLogs}
+\end{table}
+
+\begin{table}
+ \centering
+ \fbox{
+ \begin{tabular}{c|c|l}
+ \textbf{Zeit (ms)} & \textbf{PID} & \textbf{Lognachricht} \\
+ \hline
004124 & 1 & Globales Abstimmungsergebnis erhalten. Ergebnis: true\\
\hline
004124 & 1 & Nachricht versendet; ID: 100; Protokoll: 2-Phasen Commit\\
@@ -413,18 +424,7 @@ Die folgende Clientvariable kann unter den Prozesseinstellungen unter dem Punkt
\hline
004434 & 1 & Nachricht versendet; ID: 102; Protokoll: 2-Phasen Commit\\
& & Integer: pid=1; Boolean: isVote=true; vote=true\\
- \end{tabular}
- }
- \caption{Auszug aus dem Logfenster des Zwei-Phasen Commit Beispiels}
- \label{tb:TwoPhaseCommitLogs}
-\end{table}
-
-\begin{table}
- \centering
- \fbox{
- \begin{tabular}{c|c|l}
- \textbf{Zeit (ms)} & \textbf{PID} & \textbf{Lognachricht} \\
- \hline
+\hline
004434 & 1 & Abstimmung true versendet\\
\hline
004527 & 2 & Nachricht erhalten; ID: 98; Protokoll: 2-Phasen Commit\\
@@ -465,7 +465,7 @@ Die folgende Clientvariable kann unter den Prozesseinstellungen unter dem Punkt
\label{tb:TwoPhaseCommitLogs2}
\end{table}
-
+\newpage
\newpage
\section{Der ungengende (Basic) Multicast \small{\textit{(basic-multicast.dat)}}}
@@ -505,7 +505,7 @@ P1 kann jedoch erst nach \textit{2500ms} Multicast-Nachrichten empfangen, da er
In diesem Beispiel ging die 3. Multicast-Nachricht auf den Weg zu P3- und die 5. sowie 6. Nachricht auf den Weg zu P1 verloren. Lediglich die 4. Multicast-Nachricht hat beide Ziele erreicht.
-\newpage
+
\section{Das zuverlssige (Reliable) Multicast Protokoll \small{\textit{(reliable-multicast.dat)}}}
\begin{figure}[h]
@@ -613,17 +613,7 @@ Dieses Protokoll verwendet folgende serverseitige Variablen, die in den Prozesse
& & Boolean: isMulticast=true\\
\hline
005952 & 1 & Nachricht erhalten; ID: 283; Protokoll: Reliable Multicast\\
- \end{tabular}
- }
- \caption{Auszug aus dem Logfenster des Reliable-Multicast Beispiels}
- \label{tb:ReliableMulticastLogs}
-\end{table}
-
-\begin{table}
- \centering
- \fbox{
- \begin{tabular}{c|c|l}
- \textbf{Zeit (ms)} & \textbf{PID} & \textbf{Lognachricht} \\
+\hline
005952 & 1 & Nachricht versendet; ID: 284; Protokoll: Reliable Multicast\\
& & Integer: pid=1; Boolean: isAck=true\\
\hline
@@ -640,6 +630,17 @@ Dieses Protokoll verwendet folgende serverseitige Variablen, die in den Prozesse
\hline
008469 & 1 & Nachricht versendet; ID: 286; Protokoll: Reliable Multicast\\
& & Integer: pid=1; Boolean: isAck=true\\
+ \end{tabular}
+ }
+ \caption{Auszug aus dem Logfenster des Reliable-Multicast Beispiels}
+ \label{tb:ReliableMulticastLogs}
+\end{table}
+
+\begin{table}
+ \centering
+ \fbox{
+ \begin{tabular}{c|c|l}
+ \textbf{Zeit (ms)} & \textbf{PID} & \textbf{Lognachricht} \\
\hline
008469 & 1 & ACK erneut versendet\\
\hline
@@ -685,6 +686,10 @@ Bisher wurden alle verfgbaren Protokolle anhand von Beispielen aufgefhrt. Mit
\subsection{Simulation von Lamport- und Vektor-Zeitstempel}
+\cite{Tanenbaum} ``\textit{F\"{u}r viele Zwecke ist es ausreichend, dass sich alle Maschinen \"{u}ber dieselbe Zeit einig sind. Es ist nicht erforderlich, dass diese Zeit auch mit der realen Zeit \"{u}bereinstimmt, wie sie jede Stunde im Radio angek\"{u}ndigt wird.... F\"{u}r eine bestimmte Klasse von Algorithmen ist nur die interne Konsistenz der Uhren wichtig}''.
+
+Uhren die eine solche Zeit angeben, sind auch als logische Uhren bekannt. Zwei davon werden anhand der Lamport- und Vektor-Zeitstempel wie folgt realisiert:
+
\begin{figure}[h]
\centering
\fbox{\includegraphics[width=10cm]{images/ss-protokoll-berkeley-lamport}}
@@ -729,13 +734,10 @@ Wenn whrend einer Simulation Prozesse entfernt- oder neue Prozesse hinzugefgt
Wie bereits beschrieben (s. Kap. 2.4.2.) gibt es in den Simulationseinstellungen die boolschen Variablen ``Lamportzeiten betreffen alle Ereignisse'' und ``Vektorzeiten betreffen alle Ereignisse'', die standardmig auf \textit{false} gesetzt sind. Mit \textit{true} werden alle Ereignisse, und nicht nur der Empfang oder das Versenden einer Nachricht, bercksichtigt. Fr eine weitere Betrachtung der Lamport- sowie Vektor-Zeitstempel siehe \cite{Vorlesung} oder \cite{Tanenbaum}.
-\newpage
\subsection{Simulation langsamer Verbindungen \small{\textit{(slow-connection.dat)}}}
Mit dem Simulator lassen sich auch langsame Verbindungen zu einem bestimmten Prozess simulieren. Fr die Demonstration wird das Beispiel aus Kapitel 3.5. wieder aufgegriffen, wo das Protokoll zur internen Synchronisation (durch P1) mit der Christians-Methode (durch P3) parallel simuliert wurden. P2 stellt den Server beider Protokolle zur Verfgung. In diesem Szenario soll P3 eine schlechte Netzwerkverbindung besitzen, so dass Nachrichten von- und an P3 stets eine lngere bertragungszeit bentigen.
-Die Ereignisse sind so wie bereits in Tabelle \ref{tb:InterneSync2Tasks}. dargestellt wurde programmiert. In den Simulationseinstellungen ist hier die Einstellung ``Mittelwerte der bertragungszeiten bilden'' aktiviert. In den Prozesseinstellungen von P3 wurde die ``Minimale bertragungszeit'' auf \textit{2000ms} und die ``Maximale bertragungszeit'' auf \textit{8000ms} gestellt. P1 und P2 behalten als Standardeinstellungen fr die minimale und maximale bertragungszeiten die Werte \textit{500ms} und \textit{2000ms}, die Simulationsdauer betr\"{a}gt nun \textit{20000ms}.
-
\begin{figure}[h]
\centering
\fbox{\includegraphics[width=10cm]{images/ss-protokoll-time-sync-2-long-transfer}}
@@ -743,6 +745,8 @@ Die Ereignisse sind so wie bereits in Tabelle \ref{tb:InterneSync2Tasks}. darges
\label{fig:TimeSync2LongTransferProto}
\end{figure}
+Die Ereignisse sind so wie bereits in Tabelle \ref{tb:InterneSync2Tasks}. dargestellt wurde programmiert. In den Simulationseinstellungen ist hier die Einstellung ``Mittelwerte der bertragungszeiten bilden'' aktiviert. In den Prozesseinstellungen von P3 wurde die ``Minimale bertragungszeit'' auf \textit{2000ms} und die ``Maximale bertragungszeit'' auf \textit{8000ms} gestellt. P1 und P2 behalten als Standardeinstellungen fr die minimale und maximale bertragungszeiten die Werte \textit{500ms} und \textit{2000ms}, die Simulationsdauer betr\"{a}gt nun \textit{20000ms}.
+
Als Folge (s. Abb. \ref{fig:TimeSync2LongTransferProto}.) bentigen Nachrichten, die von- und an P3 verschickt werden, fr eine bertragung immer mehr Zeit. Bevor P3 eine Antwort auf seine vorherige Anfrage bekommt, verschickt er eine erneute Anfrage. Da P3 die Serverantworten immer stets seiner letzten verschickten Anfrage zuordnet, berechnet er alle RTTs inkorrekt und seine lokale Zeit wird dadurch bei jedem Durchgang erneut falsch bestimmt. Die Berechnungsformeln der bertragungszeiten wurde bereits in Kapitel 2.4.3. bei den Prozesseinstellungen behandelt. Konkret bedeutet dies hier fr die bertragungszeiten alle Nachrichten von- und an P3 jeweils:
\begin{equation*}
diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf
index b6ae62f..773aee3 100644
--- a/LaTeX/diplomarbeit.pdf
+++ b/LaTeX/diplomarbeit.pdf
@@ -535,21 +535,20 @@ endobj
/ProcSet [ /PDF ]
>> endobj
200 0 obj <<
-/Length 2499
+/Length 2497
/Filter /FlateDecode
>>
stream
-x[oF+(/6
-A(5Ł"ĕdhb98A:@%SSy]ocf 5
-P 8v'#T[Mz"ULA3|2|j| `OOv?,9]=wTW03\8,0 <q$LOMJfsSpQS"L $;Lvy)b}{YzwJG@Tq
-;깪\PGGuMms^52NG75yoYIǼ܍Cˈeh[oZhmߟgh/K-T[2aVV:I4sx
-Z=*Om%-Ο_RX i?z~<:&g1IlL]UúPhpPC<cݞʱA둅 53s˱F!T[ ** +ce²yO%19KrŏKkݦ.}˻5 R98i$eYl8Ԍ;}|'Ē&5V:ē?O9<XxP>w[oPV9Vj{LdёVKMsۗ$X#4|zeP` bF:Wժ8w/qK Bd4&4H8ͭ#Q: A4GMn
-"usl5kB֏?l,"E/H8"u쟼@Ne,XQNY/V cT՝TE7N/P)}1Tʛ|fYw4 5d뾗jj'Z/TIyNcJ J 섚D萩7ΧcN<b:YR3r(:* hnϥmm׮4V rb7몥(77KT Pl"cxR
-W[G(nT<ۏ(]L
-1ŹAI8i X<h<UJ솣 3_
-}Kז0IՃWM2q3'ٿQƂ*a NAOF#hD#O4N6իhg[DPCӯo9>I-"FX_%G3e+5tj~6r#rqA^#cDso
-qÉ>x'ͺ*nϻOcQcDB dU{"|pHXt2)#OG RXlN="gq?n|O,hRm>
-YgbV5"4_v?B>Oo_ba}.ÌzQID !{!FƵɢSa9^~Ot&)Us9L^&g B- h^32c3TdۭԌW RzM=B{vzZBSlP3s!27~}{طf~\Z
+x[6+hkN]lvnQ=B}XvPe<ṽoGχ<$=
+#N xXqyA|dD*mȧ(JQ`ha%JJn޾[ xs6pL_P?v۪^|\1g*/A *"<~,8 W nm%Nk9-H/ֳv]VvupʋXЄ QbuȦ1"ph[qx5ҜT/ԦI׻Calyv$Yƴ-biԄ'L 5C_;ffݍ_]^,d͞ݓ:R$6 5ǭJ!8P1M,8W{djvޭ2X)"El#8HM4C1y8f_fD7#֐!bVOrC?7)(rfw|_0]9; 9r❐r *; =Lb&9ݏ8frC(Ԑ(}Ԑ8$C"~ :[CV3P/,Lbc),Aj'fžy\U.#X:?6`V'Zt8C݌Cˈh; o:hПgh/K-T[2aVV:I4sx Zݗ
+ϺLm%-NW:E,?a''{jkȗ]UüPhpPK<C^c z# )Ajf
+ߴ+ѾBRޔUPw0" '\ԹhOBh_ +!S5oOf%?x:u 12Y&PulM+ hnOmm׾4VY ~rZb7˺ڮo
+ܮ2~-xo6cDƔx4GҪ[ԇߟQxloKHF㬈cJKMʬ; vhhȩ~PT>fGO@a 2-ɛnyw`fM-x|4l
+KW*DWCA~I3yUs/Ԣ*9`yӱی{q{{m*QUn%->OWCGqA y(qg!MoH_Ra +" +5<WTEn%bb߭jaSl_wZn;^]y\Cv!v)G
+HŇz1ڄ .8tR9(f)zh<'xRm <"j54GVzE
+_8isӁ>#W}(\niaTjQh? tGj9cs1j'5qTx"TxRm e8UL膣
+ s>F7:n.[&5V^Qe fNE,6םvg><<И_C^E5_"Z9?:o~HjI1FB,-޿8,;V{Smѐ#ѐSm  U<2F4P'mw>7pBYiq}|Hapѐ^t;Y aɤ<2H-b:׈,X"<|T~z 0:trdX~:6ywk\U? 3FE%SC(1HEצN1BxvDp_@CD&S2`&&' B.+h^ʩ=2c3T۝ԄW RԞ|#{,T[m~Z@SlP3q 2Nh65r&qn_'ȇr@cy'5S bz=yym;ugj=]wvU/7aҵ_mXL;{]z{Bdzݖ^{vp֬LM
+fZh tN!F!KPXH&XhBtPjEtrendstream
endobj
199 0 obj <<
/Type /Page
@@ -569,7 +568,7 @@ endobj
204 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 593.9754 150.1131 602.4594]
+/Rect [86.8628 593.8947 150.1131 602.4594]
/Subtype /Link
/A << /S /GoTo /D (section.1.1) >>
>> endobj
@@ -590,7 +589,7 @@ endobj
207 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 529.9479 176.483 538.7189]
+/Rect [86.8628 530.0286 176.483 538.7189]
/Subtype /Link
/A << /S /GoTo /D (section.2.1) >>
>> endobj
@@ -752,15 +751,17 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
235 0 obj <<
-/Length 1307
+/Length 1306
/Filter /FlateDecode
>>
stream
-x[oF)xR= s{̪6iu_
-pV3ː]GUTl=?? ?EX@j lowjVvo6~/X"
-6ECx*WIϊ[zrNjMSiIE!% ְ!(ӮSX)q_C<(mL-
-:2UFhBdU|;,4pCL84:g,TMF GY/%F`OQ9)V8EWWi^VIOIZSc~l\ݥաPHO0ɂ>ȾN͌Rͭމ2l_~#iNuu4>?D/"2 ~&Z*$Bw*1b Z൪,7mK<^ _v\>qj5b__!KІ5_VZH~px(pW9~Ӵwš9 ow/\ن\S47+Bq_<&5)d0rS-ɘmN+}=WCjrIIE=DB1/BQK"VV!֗ﮧ!A1jڕMT E4[]^V͢zVӀ[p~=ާ1iya?)x$3Xȟ2 Ixqh- y)aʏ5<-`鐶ӫ+/K-FTnU %%T
-_$,|p`0^q~F=G=c##ly! !a^~{ɨh/OeM@0&vYLhUkW&Ojzär9oj<sg1G+0LZQÜɭiXy{nJ "X;/j!=#s4W:]3kx5+4"F#d'jxFR^}JoσioqMnǩ)
+xYn6}WQj=ftntܗAI[,As)ʌ"h
+6-" d"y 5![mIZڂ. BD>"n>.ΪqEy|<-Wn~t~8H ATX` AvBͯB<(6&HJ0mӤI΢LZ,'y&1S$#1 \-j!N0i(\K$eSN-Qk‘fKI6!*'B**2)Wk*Ux]Z
+<HBxINGuodĔ&nl$ʰK/~U;<Ҵ ;}_4_H/T5iA*Ue[Ne2y9FAs͏o^ZpS<(k*7'vs2fDyLDʰ UՂV$iub8<PLy,4]qhVa#pV` ҤYø|X6)0șH!73j!O4:P_JTJy=GB)b^% EAja9dT?$(潁~F]DI@N>YY럅53 J,HDm1py+ܷ_Oֿ~Epx*=cZ,-ٯ+DO9EJ18;V LC$ga-Ú,5$S”_Qz|
+,t]Rz&OiybDlKE-[JHjǃ#F/ck[L׳`.zl@ŔHlL?W?2Xn$8k
+1mbŤ-j<IN/fhΛZ919׳4G̕^h&-ќɭ)Xy{n~%Kt, "X;n/-j!<#sFv+.g#ѫ豵Zr^>蕃4"F-djAR^}Jo&7TĒqhQ qQB&Fڔ:'Q/ŽD?z%JeepIgqԳU׶L􍩷YQФjXܢYutEtzh
+@)8|(Ӑܼ13XEE-ƢY:#
+T)#s eYr(›Ο*)h
endobj
234 0 obj <<
/Type /Page
@@ -869,26 +870,21 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
252 0 obj <<
-/Length 2301
-/Filter /FlateDecode
->>
-stream
-x[۸+h?+^%>n.[h`gc+Y^Xv__R$egݙ sӗsD,W_8+bY!8^N}W0&P/&>]  1)
-\"R_~K448$
-DAYvǏf{iwݗu7Km{~5J--?X˴;#Zgxveg/Pl%b@H
-Vjcr%(Yi=pW+/, _kRm4R"2aɑ,nӾ|W[o&稔=H%jyU UF)p-Lx C;hp:$_ q,75H%$ %
-+P[
-ZJxLU* 0NH{I*yW"qi}]oj[EuUkV,_wni Y!\qO(P<8z8ENbJ$L ]zjE
-sAä́g!\T,eY]y٫7UVfx7#[ᅬ΁]OV'dwu[2Z]Ǡfb5W`fCT;3ݶ{@Gi
-&:ZiΡU|DJ22Wjk_X5uc߭ͥM;k޺_b ]U"סz.JxNh(d3F9+MW02eBWnq.jݽ*R/׶rWu׮ɂu.dA&D`bĤF= L@8@:+Gr2
- ϕB=6/oji}\7?1-q"]
-륓JxNEU=Q/dBjK YC&/PS 2ەVzm_j[
-
-%…Kߟz>Bj뉈xVg`KK3([l 5KpeQf+aYuR :%U0W>4[SY& d$ydRy;1[ó̑/Y&MP089 <U@PQ?խۃ?%:15d3Z{J(FP0As՛N8UB%t?ymi׋csIzWZi.ngY隐-I%BPc:XqO(Pr< ; ZL:!!7VU<Ui{8J%ByR<x܁y<<du9RM$A9W>nam8ug:9ℊ̷>qJ%t~+P[OB|Ψ NJk֯9AS%&3,{Cg9r%u`=T4RBV~S:!*EnAU!V0'J8x߫ J*P[OAhuD"NSU TYPU2f4
-xg
-Z$[Q _= .\ٛO\Ν<j<6,u5U>"#'&'
-˅@D+6bG.K Z\\$ d'9^[̑0ތPӓ{9DJu-qBc"yg1Zbo2,K]}د;қa8T"ݘvR o 4Z(P<(z(# hu\ -})Q3eL+pJ ʟG&P[Of|!!w#d:!C uWoV/͹~M24:V~"
-%CLjM'ǻKpș/%z ۡj,$sR=endstream
+/Length 2300
+/Filter /FlateDecode
+>>
+stream
+x[۸+h?+^%>n.[h`gc+Y^Xv__R$egݙ IJtᐇ rgC,<+$Ugë<۩gy c1.
+ejxRJ.Ĥ3*p8c\KODdivipH~ŏ?/rEUoc{~5J--?X˴;#Zg^eJ:!2+i JPxU{:-W4_|Yפ(۪inDe ;H%Ò#Yܸ}o?posTJ^<*QrB*yAF䏀K^< ~8K/MS݆Er8e^L|ixS|NqGGy^y%WV<ʪqaX'$C}輫z4jכVsQsڟ8 -͂!B8|BT"8K6ʘ'P[g: *l:!æ+o^_i LxI%\ؕ=Se^/2Bm=e^xi n+[FKL
+"lHJxGrc^(QZD{899R ̕"j%V׺wssj35XdG5 U"סz.JxNh(d3F9+MW025Dq K]MzH;;?UU^n֛\:kdL.dA&D`bĤF= L@8Q
+
+f3ֿ{:P
+қ-Qݺ=SbfZ"wfT+ZB}_T 
+1ֿ><huz JO޴؜\IZ 7ͥMz |B`T"զ#tb%LNM'W6As0ԛIC'd1
+=r*"8|'T"ahʓZ8q!sAV眑#Do꽼sCV<_݆Pgx#N|g:TLg: a`)$ćk: 9N Ѹ~y~w/Yb<e/p~YI3K0`Cm)T!sPez)UYAޢt\o7+|UJ%VUUCLq ~:U" ,a zzup
+xGZ$[Q _= Gvk.͓;s>M,KqvMUoAǤO~ŽI%Br8?ш !j둋Vg !28Iז/sяh;M
+>=YJ7 JJTײ')1ȯ,‘z;9,z(Q!bq;$Շs(9CETQTBdێV*-\cT2
+%?J0~#hu\ -})Q3eL+pJ ʟG&P[Of!!w#d:!C uWoV/͹~hMeitR 7TZIƎ>;(TQ06T_j^P W(R?X :RN2'/xn M=endstream
endobj
251 0 obj <<
/Type /Page
@@ -922,7 +918,7 @@ endobj
258 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 547.5398 155.8157 556.0238]
+/Rect [86.8628 547.4591 155.8157 556.0238]
/Subtype /Link
/A << /S /GoTo /D (figure.2.2) >>
>> endobj
@@ -1091,20 +1087,20 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
309 0 obj <<
-/Length 1565
+/Length 1564
/Filter /FlateDecode
>>
stream
-xMo6:Xm $F-zmUuWrQח%-%#JI>xmfH /)86"Sd78s^I]?Hid
-dl7[7EyxR[7jՏ/ >-6Xl>HʌW/$]|ܣ¸rˡ:XNDb"mwJn˫*yc"R)cY7yUkOx\;tq$(X)ӈQCѺHT_gSfܟEdl֚l
-&z&(dhz0^I<?ixS~E]v`#! D0b2jg ~3N SK-:MfߔK.)sPً:6gV㍽'LDyU zӗR%
-=+uU%ŮBPK{QG,ľ-MXuq<G-?klxOšxHr)0߫v9@>:I$H0c&c m}J]7)$H jyKF{mif \'x8QMAFŕW-MAIJ\p[kfIAk
-9w/xӏ,-\N1AT4 oZXn.E|'@ &:B-PC^6@fEjjexMYvnfze/ZX*q)PZUrM(NZ^! 9lv]mLF
-ݩ[zn,P֚+
-l,3޵Dl, , if['l(`ck-4M6uM_"\ dˎ>lYjgEn8{VU~grk$Xr#(sK 9T ˢ\"e /s?E13pck-> p
- "OZ;2ͱL5ypfH:
-q8FJt4ZH# y]Hx׹xu츝v(Nb?6cQu^o/CB *[I@|Bɋlt3 ~xy<ͺz[Rb@vY̜E c(˘74i0ᱵ&:uU%/x`eZ3}m. _gd&\u<nު܍핟CTYN &ދ f%ֲދa4c dyu,U,?EJ1: ٵT q/x? ?mx^t \cd0|k:*ӔnC&G57
- i^e d9`rdII\U%mM ܋:׋& @Ctezs؜,9{݈"( C`:s)ZKjʹD\H)71*; 33իI)06/>endstream
+xMo6:Xm $F-zmUuWrQח%-%#JI>z53<͐"v?$SqlD s_n/pv箽>I]?Hid
+dl7[7EyxR[>?E_ HKIg ahs_$eƫ.뿾
+iarAJ{P,S f1 ;%7vG޼e_o)ޔv걬קc}orN8eazBiĨh]R*!G=ÔϢPp2B6ckM6M
+y=J2W=PNO/$Οqwڢj~{  15
+3 LNt@'驥L&3o%{[EԳnHn< ]p I`=FtByX[[򺪒bWX#yby,8{_56vW<ߧt<S_J$YPU q Gs$X@$ZKN y=IA<JnRHADQx[&=tscdG6QmtW^7Qa'_*rNlIIAk
+9w/xӏ,-\N1AT4 oZXn.E|'@ &:BPC^6@fEjjexMYvnfze/ZX*q)PZyrM(NZ^! 9lv]mLF
+ݩ[zn,PZ7uX"f$k1<#=YYF5 !wͶ}O(PZMl뚾DǥAɖ/}Pٲ Ί"\q~z HNO{_GQ;sѩED6^Hb0g4֚4z]SrW8XXk<Egah3G$ja8Ze`# %:@LtlE:}z]Hx׹xu츝v(Nb?6cQu^o/CB *[I@|Bɋlt3 ~xy<ͺz[Rb@vY̜E c(˘74i0ᱵ&ᚤ/^L_y&ֶeLí[tSZ~C8::މD||{q`RZ{q5,sf,eǺ(CBB7Fga@3j!pebo0gZoe^t \cd0|k:*ӔnC&G57
+ i^e d9`rd%YI\Ӓ6IEEyY=ÇSlD=nD ]0c
+9Ltl%5}
+z\".ʔO{_k ƍ™UM$zO<endstream
endobj
308 0 obj <<
/Type /Page
@@ -1166,7 +1162,7 @@ endobj
318 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 623.2246 189.7217 631.7087]
+/Rect [86.8628 623.1439 189.7217 631.7087]
/Subtype /Link
/A << /S /GoTo /D (figure.4.4) >>
>> endobj
@@ -1245,9 +1241,9 @@ endobj
/Filter /FlateDecode
>>
stream
-x[o6)h3;vm솠 e8Bͧ)2eGN%M1/<_x9bHIGg"Q3OIg8Yk?VùD\He^ \w1-Th$8VWT& H'a\\5H5-u^>]:'x<ܔ6◳]2-"4A ј$j=ZY2D N$;ЉFܺhUȚt.JSK)MΩҳuʌ*/2l_S*fyq^mRs5n}y<ci>kޙGaL!J1M| թF2gّWkTA^~>Y# [T#Rr$ќ12&
-eTB)uF@;Q!m!|k)z U}jWpyMmGM
-fщZi,a{ bm^Hq@u=䠌ȣQZMc| :F&46"#L%7bxj&^!QF(qS8iZM:8$jdD-qYI84} 9ZՈ]&͠v(yE<bZM^: 5KE̋=gxM=yݵۣY/4"z8Պغ^~tȅ~
+x]o6+ti3oR6Ŗ]uB6~$ʔ)9U4 y! 6?$QqDe\,op2~>#s<;nMcZH9rHp.ُLKfu4a\\5H5-u^>]:'x<ܔ6◳]2-"4A ј$jמ,K"'lDLJn]NdMPDP:^ةޥ&OTً:eTwE^b/Wݏ)M<96woyҾj.X,owQbSRLByukYvygGHgB;Ո尵%AI4g aLBUPd
+qN@H[ڿd-* aU߯.ⷩ 7-C %~A:Ո+%:}_ /Ƙr`Jؚ
+Q&^daReHHa&a yQnwf7_15)ЩF"&"axpzD`{y[eq`^R6=IE2X'fr3m(v</Rq*/Vf̓qRHD1:'j$p*R,пdBV:N&ݼWq`2!~2X7< V8Tk1%iHS+
endobj
346 0 obj <<
/Type /Page
@@ -1401,17 +1397,11 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
390 0 obj <<
-/Length 1710
+/Length 69
/Filter /FlateDecode
>>
stream
-xڍnFБ,7'q61Dns5T;] gf= EP$*X@{Z!R_$i3@^<IY.h Wt"OAiZYd<^6U^/ RWiljVFk^ĤH$y ,(ȲAgG~$(I
-,U]۫(^v㘋-_"
-2qRI][I' OM[.G|_LmU7@⦁ժ `jמIM ]y7$׉!kS~J%^: ڔ ␉id("_Kwzz5\8El "exmSK(ρ}De;R7ے+zRFYfoNtTH8_/:1 Z '?Ytm'V#3]9]xjE80pB4 z#y.@:2<DQ Ru1 d&ezC8I4kDub"ߴñzQ\m rn4苬zJ6 B3`ypCԒ1 ӌA4Gp
-#8xg[@Q
-s{œrCF]d,Y!(OcZK&| Zkk]fl ͕zǥ*4Z48͡ȪjXA v_8j9_
-a }pl,MVY["`=_o<㚲oI0lL?~Yz3bS=t1 Z]HsygarNʼn{gv=jOw=^ΣִB-)bnHeZ(z(14hzg(@;#n6`o
-hڂK pмRrp? I>Fid~. /9
+x3T0
endobj
389 0 obj <<
/Type /Page
@@ -1419,29 +1409,52 @@ endobj
/Resources 388 0 R
/MediaBox [0 0 595.2757 841.8898]
/Parent 232 0 R
-/Annots [ 392 0 R ]
>> endobj
-392 0 obj <<
+391 0 obj <<
+/D [389 0 R /XYZ 74.4095 793.4011 null]
+>> endobj
+388 0 obj <<
+/ProcSet [ /PDF ]
+>> endobj
+394 0 obj <<
+/Length 1710
+/Filter /FlateDecode
+>>
+stream
+xڍnFБ,7'q61Dns5d;] gf= EP$*X@{Z!R_$i3H^<IY.h Wt"OAiZYd<^6U^/ RWiljVF~5RnGNbR~$x<G~dύ #tj|~$Y`* exeZC;pP_qŖ/TL E
+sy22=!IM
+$5"]nXe70c" TNٍ}uTrTOɦ^q?@}ơ#,O
+!ޖ1i7$Lܲ jr-h=YKk
+endobj
+393 0 obj <<
+/Type /Page
+/Contents 394 0 R
+/Resources 392 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 397 0 R
+/Annots [ 396 0 R ]
+>> endobj
+396 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [75.9058 405.6345 102.2418 414.1993]
/Subtype /Link
/A << /S /GoTo /D (cite.Tanenbaum) >>
>> endobj
-391 0 obj <<
-/D [389 0 R /XYZ 74.4095 793.4011 null]
+395 0 obj <<
+/D [393 0 R /XYZ 74.4095 793.4011 null]
>> endobj
6 0 obj <<
-/D [389 0 R /XYZ 74.4095 771.7323 null]
+/D [393 0 R /XYZ 74.4095 771.7323 null]
>> endobj
10 0 obj <<
-/D [389 0 R /XYZ 74.4095 566.0376 null]
+/D [393 0 R /XYZ 74.4095 566.0376 null]
>> endobj
-388 0 obj <<
+392 0 obj <<
/Font << /F26 170 0 R /F28 173 0 R /F63 220 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-397 0 obj <<
+402 0 obj <<
/Length 1767
/Filter /FlateDecode
>>
@@ -1451,32 +1464,32 @@ xڭXKs6WHD0^|N$N{sLXBMRH%}w E͈x,v?,v)?$iEA)h
yrC ]~[ڇ`\W>Yր73ᜄ|x#*cQ@kɄV>x0S` ὠ[3.X7|1Ic8tR̎Y^XwciT>U8Rd]|4n[Q2  u(N@.'⛥sw0M}
j@ؙ؛vgΨM 1f~NmsXܭ@ (Ӷ}ji :`*8HOln< ` $Lõ<*Z|gzp.˫Վ#&#xՉq( #ҳ=ί.J0:ίp߃
+pȠELKWf1
-La@K㡥q))z\p}z־j2 3o#H$&4*rĚ࠵0b Gee/hvWl\qlieGb[:&(/ ]Ӆ,I6wJ;}fi@Cx_'12 Zk6)0XMz MZ<=A; xPWL[:̢w' ^C}OsK:
+La@K㡥q))z\p}z־j2 3o#H$&4*rĚ࠵0b Gee/hvWl\qlieGb[:&(/ ]Ӆ,I6wJ;}fi@Cx_'12 Zk6)0XMz MZ<=A; xPWL[:̢w' ^C}OsK>
endobj
-396 0 obj <<
+401 0 obj <<
/Type /Page
-/Contents 397 0 R
-/Resources 395 0 R
+/Contents 402 0 R
+/Resources 400 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 403 0 R
-/Annots [ 400 0 R ]
+/Parent 397 0 R
+/Annots [ 405 0 R ]
>> endobj
-394 0 obj <<
+399 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 404 0 R
+/PTEX.InfoDict 408 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 405 0 R
->>/Font << /R8 406 0 R >>
+/R7 409 0 R
+>>/Font << /R8 410 0 R >>
>>
-/Length 407 0 R
+/Length 411 0 R
/Filter /FlateDecode
>>
stream
@@ -1484,60 +1497,60 @@ xT=o0 +8\(iMQt+t(磈] ҿ_82|83H`@SiQܿ(vql
ªcGTl/.]/=荧Age]i1OexʠpqQ<=:KeCljeXlu aVH;8O-KiD-w2ǃkC8p ]Z뱵@Աb7i
{QB{7bw"C|ܥ|<[@_ۼO.~f-g/8撁4<냳( |`ԗtj>RvO%oXBǼ۟u^s |Q?۝ITL0 /?DZendstream
endobj
-404 0 obj
+408 0 obj
<<
/Producer (GPL Ghostscript 8.61)
-/CreationDate (D:20080814014212Z00'00')
-/ModDate (D:20080814014212Z00'00')
+/CreationDate (D:20080814071447Z00'00')
+/ModDate (D:20080814071447Z00'00')
>>
endobj
-405 0 obj
+409 0 obj
<<
/Type /ExtGState
/OPM 1
>>
endobj
-406 0 obj
+410 0 obj
<<
/BaseFont /Helvetica
/Type /Font
/Subtype /Type1
>>
endobj
-407 0 obj
+411 0 obj
460
endobj
-400 0 obj <<
+405 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [438.6031 439.2596 453.0587 449.7342]
/Subtype /Link
/A << /S /GoTo /D (figure.1.1) >>
>> endobj
-398 0 obj <<
-/D [396 0 R /XYZ 74.4095 793.4011 null]
+403 0 obj <<
+/D [401 0 R /XYZ 74.4095 793.4011 null]
>> endobj
14 0 obj <<
-/D [396 0 R /XYZ 74