summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-08-10 01:06:15 +0000
committerPaul Buetow <paul@buetow.org>2008-08-10 01:06:15 +0000
commit01a1338f8ee2f554ffac3f8088add33d9b8409d0 (patch)
tree035278e15d6f4bc6464b80ee902109b8553834a6
parent715606d94eaf6162ce1f73f076f235e8014063de (diff)
new colors.
-rw-r--r--LaTeX/argouml.zargobin50590 -> 51667 bytes
-rw-r--r--LaTeX/chapters/implementierung.tex21
-rw-r--r--LaTeX/diplomarbeit.pdf6240
-rw-r--r--LaTeX/images/client-server-protokolle.eps100
-rw-r--r--LaTeX/images/client-server.eps6
-rw-r--r--LaTeX/images/core-time.eps34
-rw-r--r--LaTeX/images/core.eps44
-rw-r--r--LaTeX/images/events.eps38
-rw-r--r--LaTeX/images/exceptions.eps12
-rw-r--r--LaTeX/images/prefs-editors.eps62
-rw-r--r--LaTeX/images/prefs.eps16
-rw-r--r--LaTeX/images/protocols.eps44
-rw-r--r--LaTeX/images/serialize.eps10
-rw-r--r--LaTeX/images/simulator.eps36
-rw-r--r--LaTeX/images/utils.eps32
-rw-r--r--LaTeX/images/wrapping.eps333
-rw-r--r--LaTeX/wrapping.zargobin0 -> 4023 bytes
17 files changed, 3741 insertions, 3287 deletions
diff --git a/LaTeX/argouml.zargo b/LaTeX/argouml.zargo
index 579a0d2..0b15b8e 100644
--- a/LaTeX/argouml.zargo
+++ b/LaTeX/argouml.zargo
Binary files differ
diff --git a/LaTeX/chapters/implementierung.tex b/LaTeX/chapters/implementierung.tex
index 86ed5da..6679c56 100644
--- a/LaTeX/chapters/implementierung.tex
+++ b/LaTeX/chapters/implementierung.tex
@@ -98,6 +98,10 @@ Alle Variablen die als Prefix \textit{lang}, \textit{keyevent}, \textit{div} ode
\subsection{Editorobjekte}
+Wie Variablen intern abgespeichert werden ist bereits bekannt. F\"{u}r das Editieren der Variablen werden Editor-Objekte verwendet. Auf Abbildung \ref{fig:PackagePrefsEditors} ist die Klassenstruktur des dazugeh\"{o}rigen Paketes \textit{prefs.editors} angegeben.
+
+Die Basis eines Editors stellt die abstrakte Klasse \textit{VSAbstractEditor} dar, dem ein \textit{VSPrefs} Objekt zum Editieren \"{u}bergeben wird. Ein Editor stellt alle verf\"{u}gbaren und nicht-versteckten Variablen des \textit{VSPrefs}-Objektes im GUI dar und bietet gleichzeitig die M\"{o}glichkeit alle Variablen dar\"{u}ber zu editieren an. F\"{u}r das Editieren von Farbwerten wird auf \textit{VSColorChooser} zur\"{u}ckgegriffen. Die Klasse \textit{VSEditorTable} ist f\"{u}r das \textit{JTable}-Objekt aus Java's Swing-Bibliothek zust\"{a}ndig, welches bei der graphischen Darstellung aller Variablen eingesetzt wird. Die abstrakte Klasse \textit{VSAbstractBetterEditor} wurde, wegen der \"{U}bersicht, als Zwischenschritt eingef\"{u}gt.
+
\begin{figure}[h]
\centering
\includegraphics[width=10.5cm]{images/prefs-editors}
@@ -105,13 +109,7 @@ Alle Variablen die als Prefix \textit{lang}, \textit{keyevent}, \textit{div} ode
\label{fig:PackagePrefsEditors}
\end{figure}
-Wie Variablen intern abgespeichert werden ist bereits bekannt. F\"{u}r das Editieren der Variablen werden Editor-Objekte verwendet. Auf Abbildung \ref{fig:PackagePrefsEditors} ist die Klassenstruktur des dazugeh\"{o}rigen Paketes \textit{prefs.editors} angegeben.
-
-Die Basis eines Editors stellt die abstrakte Klasse \textit{VSAbstractEditor} dar, dem ein \textit{VSPrefs} Objekt zum Editieren \"{u}bergeben wird. Ein Editor stellt alle verf\"{u}gbaren und nicht-versteckten Variablen des \textit{VSPrefs}-Objektes im GUI dar und bietet gleichzeitig die M\"{o}glichkeit alle Variablen dar\"{u}ber zu editieren an. F\"{u}r das Editieren von Farbwerten wird auf \textit{VSColorChooser} zur\"{u}ckgegriffen. Die Klasse \textit{VSEditorTable} ist f\"{u}r das \textit{JTable}-Objekt aus Java's Swing-Bibliothek zust\"{a}ndig, welches bei der graphischen Darstellung aller Variablen eingesetzt wird. Die abstrakte Klasse \textit{VSAbstractBetterEditor} wurde, wegen der \"{U}bersicht, als Zwischenschritt eingef\"{u}gt.
-
-Die Klasse \textit{VSSimulatorEditor} dient f\"{u}r das Editieren der globalen Simulationseinstellungen und \textit{VSProcessEditor} f\"{u}r das Editieren der Prozesseinstellungen sowie der dazugeh\"{o}rigen Protokollvariablen. Da diese beiden Klassen von \textit{VSAbstractBetterEditor} erben, k\"{o}nnen sie mithilfe von \textit{VSEditorFrame} in einem separaten Fenster angezeigt werden. Alternativ k\"{o}nnen die Editoren auch in der Sidebar im Tab ``Variablen'' angezeigt werden. Auf Abbildung \ref{fig:Simulationseinstellungen} wurde bereits ein \textit{VSEditorFrame} in Aktion gesehen.
-
-F\"{u}r Protokolle gibt es keine separate Editor-Klasse, da sie bereits vom Prozesseditor aus editiert werden k\"{o}nnen. Dabei iteriert der Prozesseditor \"{u}ber alle f\"{u}r den jeweiligen Prozess verf\"{u}gbaren Protokollobjekte und f\"{u}gt deren Variablen zus\"{a}tzlich in den Prozesseditor ein. Somit erscheinen die Prozess- und die dazugeh\"{o}rigen Protokollvariablen im selben Editor, womit dem Benutzer eine bessere \"{U}bersicht geboten wird.
+Die Klasse \textit{VSSimulatorEditor} dient f\"{u}r das Editieren der globalen Simulationseinstellungen und \textit{VSProcessEditor} f\"{u}r das Editieren der Prozesseinstellungen sowie der dazugeh\"{o}rigen Protokollvariablen. Da diese beiden Klassen von \textit{VSAbstractBetterEditor} erben, k\"{o}nnen sie mithilfe von \textit{VSEditorFrame} in einem separaten Fenster angezeigt werden. Alternativ k\"{o}nnen die Editoren auch in der Sidebar im Tab ``Variablen'' angezeigt werden. Auf Abbildung \ref{fig:Simulationseinstellungen} wurde bereits ein \textit{VSEditorFrame} in Aktion gesehen. Auf Abbildung \ref{fig:NeueSimulationVariaben} wurde hingegen ein Prozesseditor in der Sidebar ge\"{o}ffnet. F\"{u}r Protokolle gibt es keine separate Editor-Klasse, da sie bereits vom Prozesseditor aus editiert werden k\"{o}nnen. Dabei iteriert der Prozesseditor \"{u}ber alle f\"{u}r den jeweiligen Prozess verf\"{u}gbaren Protokollobjekte und f\"{u}gt deren Variablen zus\"{a}tzlich in den Prozesseditor ein. Somit erscheinen die Prozess- und die dazugeh\"{o}rigen Protokollvariablen im selben Editor, womit dem Benutzer eine bessere \"{U}bersicht geboten wird.
\section{Ereignisse}
@@ -224,10 +222,17 @@ Jede Simulation besitzt genau eine Instanz von \textit{VSTaskManager}. Eine Inst
\label{fig:PackageCore}
\end{figure}
-Eine Instanz von \textit{VSMessage} stellt eine Nachricht dar, die von einem Prozess verschickt wird. F\"{u}r jedes Versenden einer Nachricht wird hiervon eine Instanz gebildet, wo der Senderprozess die zu verschickende Daten ablegt. Da \textit{VSMessage} von \textit{VSPrefs} erbt, k\"{o}nnen zwischen zwei Prozessen beliebige Datentypen (Tabelle \ref{tb:VariablenDatentypen}) \"{u}ber eine Nachricht verschickt werden. Anschlieend wird f\"{u}r jeden Empf\"{a}ngerprozess das neues Ereignisobjekt der Klasse \textit{VSMessageReceiveEvent} angelegt, welche eine Referenz der verschickten Nachricht besitzt. Danach wird ein \textit{VSTask}-Objekt instanziert, wo die Referenz auf das Ereignisobjekt und das dazugeh\"{o}rige Prozessobjekt sowie die Ereigniseintrittszeit als Attribute gespeichert werden. Das \textit{VSTask}-Objekt wird dann dem Task-Manager "{u}bergeben, der das dazugeh\"{o}rige Ereignis ausf\"{u}hrt, wenn die Ereigniseintrittszeit eingetroffen ist. Via Java-Polymorphie wird das \textit{VSMessageReceiveEvent}-Objekt in ein \textit{VSAbstractEvent} umgewandelt.
+Eine Instanz von \textit{VSMessage} stellt eine Nachricht dar, die von einem Prozess verschickt wird. F\"{u}r jedes Versenden einer Nachricht wird hiervon eine Instanz gebildet, wo der Senderprozess die zu verschickende Daten ablegt. Da \textit{VSMessage} von \textit{VSPrefs} erbt, k\"{o}nnen zwischen zwei Prozessen beliebige Datentypen (Tabelle \ref{tb:VariablenDatentypen}) \"{u}ber eine Nachricht verschickt werden. Anschlieend wird f\"{u}r jeden Empf\"{a}ngerprozess das neues Ereignisobjekt der Klasse \textit{VSMessageReceiveEvent} angelegt, welche eine Referenz der verschickten Nachricht besitzt. Danach wird ein \textit{VSTask}-Objekt instanziert, wo die Referenz auf das Ereignisobjekt und das dazugeh\"{o}rige Prozessobjekt sowie die Ereigniseintrittszeit als Attribute gespeichert werden. Das \textit{VSTask}-Objekt wird dann dem Task-Manager "{u}bergeben, der das dazugeh\"{o}rige Ereignis ausf\"{u}hrt, wenn die Ereigniseintrittszeit eingetroffen ist. Die Verschachtelung der Objekte beim Verschicken einer Nachricht ist auf Abbildung \ref{fig:Wrapping} dargestellt. Via Java-Polymorphie wird das \textit{VSMessageReceiveEvent}-Objekt in ein \textit{VSAbstractEvent} umgewandelt.
Erw\"{a}hnentswert ist auch die Klasse \textit{VSMessageStub}, welche ein \textit{VSMessage} kapselt. Ihr Zweck ist das Verstecken einiger Methoden von \textit{VSMessage} im Protokoll-API, welches f\"{u}r die Erstellung eigener Protokolle dient. Der Protokoll-Entwickler soll m\"{o}glichst nichts falsch machen k\"{o}nnen und deswegen soll den Protokoll-API ein eingeschr\"{a}nkter Funktionsumpfang zur Verf\"{u}rung gestellt werden. Da sich \textit{VSMessageStub} im selben Paket wie \textit{VSMessage} befindet, kann \textit{VSMessageStub} auf paket-private Methoden von \textit{VSMessage} zugreifen. Protokolle hingegen werden in einem anderen Paket implementiert und haben somit keinen Zugriff auf diese paket-privaten Methoden. Zwar kann der Protokollentwickler ein eigenes \textit{VSMessageStub}-Objekt anlegen, jedoch kann er auf diese Weise besser unterscheiden, auf welche Mehhoden er zugreifen sollte und auf welche nicht. Das Protokoll-API wird sp\"{a}ter genauer behandelt.
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=11.0cm]{images/wrapping}
+ \caption{Gekapseltes \textit{VSMessage} im \textit{VSMessageReceiveEvent}-Objekt}
+ \label{fig:Wrapping}
+\end{figure}
+
Der Task-Manager speichert anschlieend die Empfangsereignisse in den lokalen Warteschlangen der Empf\"{a}ngerprozesse. Die Nachricht kommt bei einem Empf\"{a}ngerprozess an, sobald das Ereignis f\"{u}r den Empfang eintritt. F\"{u}r die korrekte Implementierung der Lamport- und Vektor-Zeitstempel wird jeder Nachricht automatisch eine Referenz auf die Lamport- sowie auf die Vektorzeit des sendenden Prozesses als Attribut beigef\"{u}gt. F\"{u}r die \"{U}berpr\"{u}fung des Protokolls wird in jeder Nachricht auch der Klassenname des jeweiligen Protokolls abgespeichert.
Eine Instanz von \textit{VSInternalProcess} repr\"{a}sentiert einen simulierten Prozess. Ein \textit{VSInternalProcess} stellt alle vom Simulator intern verwendeten Methoden zur Verf\"{u}gung, w\"{a}hrend ein \textit{VSAbstractProcess} lediglich Methoden hat, die man im Protokoll-API f\"{u}r die Erstellung eigener Protokolle verwenden darf. Da \textit{VSAbstractProcess} abstrakt ist und hiervon keine Instanz gebildet werden darf, muss f\"{u}r einen neuen Prozesses stets ein \textit{VSInternalProcess}-Objekt erstellt werden. Via Polymorphie wird dieses Objekt nach \textit{VSAbstractProcess} umgewandelt und so dem Protokoll-API zur Verf\"{u}gung gestellt. Beispielsweise darf mit \textit{getTasks()} nur vom Simulator intern auf die Priorit\"{a}ts-Warteschlangen zugegriffen werden, w\"{a}hrend man im Protokoll-API selbiges vermeiden sollte und auch gar nicht direkt m\"{o}glich ist. Hierf\"{u}r h\"{a}tte man auch ein Stub-Objekt \textit{VSProcessStub} verwenden k\"{o}nnen. Da aber so gut wie alle paar Millisekunden auf die Methoden von \textit{VSInternalProcess} zugegriffen wird, wurde hier aus Performancegr\"{u}nden der Weg \"{u}ber eine Vererbungungsstufe preferiert.
diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf
index d6219bf..12142b4 100644
--- a/LaTeX/diplomarbeit.pdf
+++ b/LaTeX/diplomarbeit.pdf
@@ -812,7 +812,7 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
276 0 obj <<
-/Length 2090
+/Length 2088
/Filter /FlateDecode
>>
stream
@@ -822,11 +822,7 @@ xX?7k+/^g7OZ,'VkݼθVxQm׻͒Eq{WViwOtv
ZˋWWc|2DXLxǫ՘yL1}pL}EyNZ[oǢ6ө(Btz*MЩ\60;G0IZM%z]Ն&Y"zg/<TKFaz9=~=ڎ=U$ZdEð{©9("
H1y%
8&^ApgY`\B\&(41&,t(kJ-Uʎ~ G@x|7U[H^o.E[)k@:L Ǖ7ۆr=AtpXf8]O <̌˕޷I<j&|ӏ|Aw<^&ΓY21M"ӘDSγ\UzU+N;:6b@Ez
-zNA&׽Myl菓&z0ηB(%YDlU])wHt=y %zMV9JNP'b ̜K.N2'̭W%<F/G$}Oj<ŘەDS<ol3
-=
-G?qg²,t<n&*?!rWN!^qjU<
-sql5 bWyu[ׇC ʟ^Nz/^uu^ 3mщY% 7chöU6?3c&_$kPּ-O\:=$;]Y19dXubvq*
-*2ˆ}j"8@ qZjGkXVw["Dn:ۅl#W.Z %і+LzU wb&'\[&wRiUJ$BUn O!c}[!B^+}8C_ TDWC*̇ '|Dupz³6?>_\@o=h㘝"Xn^Fpoճv2t+8Vȇݟ.zfV&ϼnfsS? endstream
+zNA&׽Myl菓&z0ηB(%YDlU])wHt=y %zMV9JNP'b ̜K.N2'̭W%<F/G$}ORcV;lWeNO/$?dؾ
endobj
275 0 obj <<
/Type /Page
@@ -1241,15 +1237,17 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
366 0 obj <<
-/Length 1435
+/Length 1573
/Filter /FlateDecode
>>
stream
-xKo6)t
-_Cآa=86֏Tvb?}G$S8JV 5rǏi3*ΌnWٮ{uh͛
-}z???%A rЂV3IsKE= szVoұj<XOzTcρbL;2Ž >%AM `J(~EԦMǻTP!ahD{R!57TZڿnٕ77:
-{kIMrQu[@1n{UQ~t"`,Lhb碳{8Te~ݻxޔޤu Yf$ރQXw{V]#BVb{=ڰGDBMFU
-DEƚgf$  ^8fj2e
+xKo6:XV|c@%am+}Һ(;%-%#'
+Z$YZk43\ǓL1ZdVY'om7Ʒٷ?O
+F3j!5ž^(wSq<7"3H!/nvwuq8
+`m-EH9VK.,D/j4(ԔԤСjjH3rP":\TkT9!vMv%U)#]3`Ho8sFHäb(<YRӛfB.iAam  Uc7Ȟ}nh ? j&~Cc0ˆ$ؔؤࡷxwNF]T‚`wFl  ׂ&̤6f1Bɦ&gil*"S`9%E~})&p^
+/Iuo5ͤ*19[1vIE]wh\A-lxsM2.L=t%GߝՌ WL݁$_FO
+w&./ēQm%oZ_֬5wln+w5Vb73ʣ;*L}*?j&{5{z(~~ uZ0A`g˚|6R e5.l7A?ˋ$фДځZm#8!uR10*FM ?缫̻•nC3 6HU۲t~m*Tcے xk4V;n|x !2uQe2HgJsgԲX͗7SUc~x?u΢N,Lf) )UJgUR[jd%*kRF-bQ}<d0ukM'4Zݟ2lMƛ?Z&.*IYDڴpEp7}ϗB-8
+W/Έξ+~Z=PcR9Ul[TH) RZQg{kcX >@ H::AOs6/fcendstream
endobj
365 0 obj <<
/Type /Page
@@ -1257,7 +1255,7 @@ endobj
/Resources 364 0 R
/MediaBox [0 0 595.2757 841.8898]
/Parent 273 0 R
-/Annots [ 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R ]
+/Annots [ 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R ]
>> endobj
368 0 obj <<
/Type /Annot
@@ -1318,52 +1316,59 @@ endobj
376 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 603.5131 254.8524 613.7814]
+/Rect [86.8628 603.4054 357.6869 613.9877]
/Subtype /Link
/A << /S /GoTo /D (figure.3.6) >>
>> endobj
377 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 587.2894 249.4056 595.8542]
+/Rect [86.8628 585.5858 254.8524 595.8542]
/Subtype /Link
/A << /S /GoTo /D (figure.3.7) >>
>> endobj
378 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 569.3622 190.0803 577.927]
+/Rect [86.8628 569.3622 249.4056 577.927]
/Subtype /Link
/A << /S /GoTo /D (figure.3.8) >>
>> endobj
379 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 551.4349 296.1243 559.9997]
+/Rect [86.8628 551.4349 190.0803 559.9997]
/Subtype /Link
/A << /S /GoTo /D (figure.3.9) >>
>> endobj
380 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 531.6965 202.4313 542.2787]
+/Rect [86.8628 533.5077 296.1243 542.0725]
/Subtype /Link
/A << /S /GoTo /D (figure.3.10) >>
>> endobj
381 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 515.5805 168.9961 524.1452]
+/Rect [86.8628 513.7692 202.4313 524.3515]
/Subtype /Link
/A << /S /GoTo /D (figure.3.11) >>
>> endobj
382 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 495.9497 195.644 506.218]
+/Rect [86.8628 497.6532 168.9961 506.218]
/Subtype /Link
/A << /S /GoTo /D (figure.3.12) >>
>> endobj
+383 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [86.8628 478.0224 195.644 488.2908]
+/Subtype /Link
+/A << /S /GoTo /D (figure.3.13) >>
+>> endobj
367 0 obj <<
/D [365 0 R /XYZ 74.4095 793.4011 null]
>> endobj
@@ -1371,7 +1376,7 @@ endobj
/Font << /F61 280 0 R /F28 217 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-400 0 obj <<
+402 0 obj <<
/Length 1852
/Filter /FlateDecode
>>
@@ -1381,158 +1386,158 @@ xYoI)іM#Y`A.$g3F>Xȧz.YBV1>a?I$u*3N
agTCT~']L-S@fCUu}Y?ϯ5p5~;6is V" ӍYTj;hULUU߶K2FgR܇ILF5b1EZC
JfAvqkp w o&b% JKo}c! 0xq{怭QC{'hݦًZ=ʛ ޝM/H2Obl( ga1UBaHݎd3. U{TuPN!֨L<(g!?m($IJbZ]$h
endobj
-399 0 obj <<
+401 0 obj <<
/Type /Page
-/Contents 400 0 R
-/Resources 398 0 R
+/Contents 402 0 R
+/Resources 400 0 R
/MediaBox [0 0 595.2757 841.8898]
/Parent 273 0 R
-/Annots [ 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R ]
+/Annots [ 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R ]
>> endobj
-403 0 obj <<
+405 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 612.425 338.2165 623.0073]
/Subtype /Link
/A << /S /GoTo /D (table.2.1) >>
>> endobj
-404 0 obj <<
+406 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 594.4978 298.9616 605.0801]
/Subtype /Link
/A << /S /GoTo /D (table.2.2) >>
>> endobj
-405 0 obj <<
+407 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 576.5706 180.2935 586.9466]
/Subtype /Link
/A << /S /GoTo /D (table.2.3) >>
>> endobj
-406 0 obj <<
+408 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 558.6433 257.1971 569.0193]
/Subtype /Link
/A << /S /GoTo /D (table.2.4) >>
>> endobj
-407 0 obj <<
+409 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 540.7161 289.7984 551.2984]
/Subtype /Link
/A << /S /GoTo /D (table.2.5) >>
>> endobj
-408 0 obj <<
+410 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 522.7889 256.1481 533.1649]
/Subtype /Link
/A << /S /GoTo /D (table.2.6) >>
>> endobj
-409 0 obj <<
+411 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 504.8616 335.2394 515.4439]
/Subtype /Link
/A << /S /GoTo /D (table.2.7) >>
>> endobj
-410 0 obj <<
+412 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 486.9344 406.6109 497.5167]
/Subtype /Link
/A << /S /GoTo /D (table.2.8) >>
>> endobj
-411 0 obj <<
+413 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 469.0072 319.7369 479.3832]
/Subtype /Link
/A << /S /GoTo /D (table.2.9) >>
>> endobj
-412 0 obj <<
+414 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 451.0799 295.5011 461.6622]
/Subtype /Link
/A << /S /GoTo /D (table.2.10) >>
>> endobj
-413 0 obj <<
+415 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 433.1527 301.3831 443.735]
/Subtype /Link
/A << /S /GoTo /D (table.2.11) >>
>> endobj
-414 0 obj <<
+416 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 415.2255 371.7415 425.8077]
/Subtype /Link
/A << /S /GoTo /D (table.2.12) >>
>> endobj
-415 0 obj <<
+417 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 397.2982 385.1908 407.8805]
/Subtype /Link
/A << /S /GoTo /D (table.2.13) >>
>> endobj
-416 0 obj <<
+418 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 379.371 276.0623 389.747]
/Subtype /Link
/A << /S /GoTo /D (table.2.14) >>
>> endobj
-417 0 obj <<
+419 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 361.4438 286.3466 371.8198]
/Subtype /Link
/A << /S /GoTo /D (table.2.15) >>
>> endobj
-418 0 obj <<
+420 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 343.5165 356.705 353.8925]
/Subtype /Link
/A << /S /GoTo /D (table.2.16) >>
>> endobj
-419 0 obj <<
+421 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 325.5893 370.1543 336.1716]
/Subtype /Link
/A << /S /GoTo /D (table.2.17) >>
>> endobj
-420 0 obj <<
+422 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 299.5107 177.8368 308.0754]
/Subtype /Link
/A << /S /GoTo /D (table.3.1) >>
>> endobj
-421 0 obj <<
+423 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 281.5834 345.4789 290.3545]
/Subtype /Link
/A << /S /GoTo /D (table.3.2) >>
>> endobj
-401 0 obj <<
-/D [399 0 R /XYZ 74.4095 793.4011 null]
+403 0 obj <<
+/D [401 0 R /XYZ 74.4095 793.4011 null]
>> endobj
-402 0 obj <<
-/D [399 0 R /XYZ 74.4095 643.0739 null]
+404 0 obj <<
+/D [401 0 R /XYZ 74.4095 643.0739 null]
>> endobj
-398 0 obj <<
+400 0 obj <<
/Font << /F26 214 0 R /F28 217 0 R /F61 280 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-443 0 obj <<
+445 0 obj <<
/Length 1758
/Filter /FlateDecode
>>
@@ -1546,35 +1551,35 @@ xڍXKo8W(coImMrL˄ef_qHYv 3 A;O2eLDΞ
/2|Cb&"6eKBz?g9z{
NCAlȓ)WKi648r2'NBr}O=M~v%4,\9󄙮5n8ie~Asg~0=Uh4R+މ k*e֣̣uixzQ&犡&f61،pׅSZPs硅z=ĸĶ6ΕA{ܥ5;f .jGr_fNO^c38>/L4AI}\;duX3a!Խ]^jc~4(G#6.Zrd*c[k/!V+Ymx&|>r;s :*n|s9eeg EI7W巇,A#:7F~ȉ~e?]endstream
endobj
-442 0 obj <<
+444 0 obj <<
/Type /Page
-/Contents 443 0 R
-/Resources 441 0 R
+/Contents 445 0 R
+/Resources 443 0 R
/MediaBox [0 0 595.2757 841.8898]
/Parent 273 0 R
-/Annots [ 445 0 R ]
+/Annots [ 447 0 R ]
>> endobj
-445 0 obj <<
+447 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 0]
/Rect [75.9058 417.1708 102.2418 425.7356]
/Subtype /Link
/A << /S /GoTo /D (cite.Tanenbaum) >>
>> endobj
-444 0 obj <<
-/D [442 0 R /XYZ 74.4095 793.4011 null]
+446 0 obj <<
+/D [444 0 R /XYZ 74.4095 793.4011 null]
>> endobj
6 0 obj <<
-/D [442 0 R /XYZ 74.4095 771.7323 null]
+/D [444 0 R /XYZ 74.4095 771.7323 null]
>> endobj
10 0 obj <<
-/D [442 0 R /XYZ 74.4095 570.9064 null]
+/D [444 0 R /XYZ 74.4095 570.9064 null]
>> endobj
-441 0 obj <<
+443 0 obj <<
/Font << /F26 214 0 R /F28 217 0 R /F61 280 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-451 0 obj <<
+453 0 obj <<
/Length 1854
/Filter /FlateDecode
>>
@@ -1585,91 +1590,91 @@ xڭXs6 _GR%۶~\ֵAX$n,YrvA@ Sbyd
%#.zD.\]W ך~}=Erax</:C1mUp{{h%m.Oa'0)SR`WabjDnr,>]iwxuWo_PU;"M,X|YJĀԡB'l~rX< K/R pX@ƞc; MHS{BwQP1L^ydBPFZBj<Y0\<R!z
0zT9̞P/]v9V=3im:ͻ+( ZZpjcM@g4Io)46k2BLDbg0[dCP se .Eo\zT1jqs1=D. J}U /<sK'<
endobj
-450 0 obj <<
+452 0 obj <<
/Type /Page
-/Contents 451 0 R
-/Resources 449 0 R
+/Contents 453 0 R
+/Resources 451 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 457 0 R
-/Annots [ 454 0 R ]
+/Parent 459 0 R
+/Annots [ 456 0 R ]
>> endobj
-447 0 obj <<
+449 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 458 0 R
+/PTEX.InfoDict 460 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 459 0 R
->>/Font << /R8 460 0 R >>
+/R7 461 0 R
+>>/Font << /R8 462 0 R >>
>>
-/Length 461 0 R
+/Length 463 0 R
/Filter /FlateDecode
>>
stream
-xTn0 +xl{p%RE[$F/A,E"N~Ejx0"g槮Ӣ>yTFc5P԰x,4/?l8-4{I$&uAGсq4dtq@TR'a:̵ e <TUV%;Rb{qu ܃2Ů˴1cxʄwK}ՙlz#U&&}¬bToYJZn 9
-(C!R;}tI6<o}/[˿w?K\2x ,
-
+xT=o0 +8\(iMQt+t(磈] ҿ_82|83H`@SiQܿ(vql԰!;;>i^&tYߟT6E Iu@ɞkNbRw~=p\1 cB*0KfAB[JυF
+ª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
-458 0 obj
+460 0 obj
<<
/Producer (GPL Ghostscript 8.61)
-/CreationDate (D:20080809233926Z00'00')
-/ModDate (D:20080809233926Z00'00')
+/CreationDate (D:20080810030234Z00'00')
+/ModDate (D:20080810030234Z00'00')
>>
endobj
-459 0 obj
+461 0 obj
<<
/Type /ExtGState
/OPM 1
>>
endobj
-460 0 obj
+462 0 obj
<<
/BaseFont /Helvetica
/Type /Font
/Subtype /Type1
>>
endobj
-461 0 obj
-452
+463 0 obj
+460
endobj
-454 0 obj <<
+456 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [439.9225 458.2842 454.378 468.8664]
/Subtype /Link
/A << /S /GoTo /D (figure.1.1) >>
>> endobj
-452 0 obj <<
-/D [450 0 R /XYZ 74.4095 793.4011 null]
+454 0 obj <<
+/D [452 0 R /XYZ 74.4095 793.4011 null]
>> endobj
14 0 obj <<
-/D [450 0 R /XYZ 74.4095 771.7323 null]
+/D [452 0 R /XYZ 74.4095 771.7323 null]
>> endobj
-453 0 obj <<
-/D [450 0 R /XYZ 74.4095 659.2541 null]
+455 0 obj <<
+/D [452 0 R /XYZ 74.4095 659.2541 null]
>> endobj
337 0 obj <<
-/D [450 0 R /XYZ 288.3666 523.6815 null]
+/D [452 0 R /XYZ 288.3666 523.6815 null]
>> endobj
-455 0 obj <<
-/D [450 0 R /XYZ 74.4095 396.6881 null]
+457 0 obj <<
+/D [452 0 R /XYZ 74.4095 396.6881 null]
>> endobj
-456 0 obj <<
-/D [450 0 R /XYZ 74.4095 235.3536 null]
+458 0 obj <<
+/D [452 0 R /XYZ 74.4095 235.3536 null]
>> endobj
-449 0 obj <<
+451 0 obj <<
/Font << /F61 280 0 R /F26 214 0 R /F28 217 0 R >>
-/XObject << /Im2 447 0 R >>
+/XObject << /Im2 449 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-464 0 obj <<
+466 0 obj <<
/Length 1352
/Filter /FlateDecode
>>
@@ -1683,76 +1688,73 @@ UԂWM鎞xT5bOOPCRraLsu:KȠ§Jpto
 #c-ݻЩ ҂φ0ΗX;$q!Lq˝2:϶:؜*se)])ZLAқLPR$}ɒ')@7Xo{I<gpN6DϾf 8ow믃~lhY2 3YdTz0O>%/
Ova &/3kl ,M F[~7)׹_3ㅏR2v'Jg}#ȷdendstream
endobj
-463 0 obj <<
+465 0 obj <<
/Type /Page
-/Contents 464 0 R
-/Resources 462 0 R
+/Contents 466 0 R
+/Resources 464 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 457 0 R
+/Parent 459 0 R
>> endobj
-448 0 obj <<
+450 0 obj <<
/Type /XObject
/Subtype /Form
/FormType 1
/PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/client-server-protokolle.pdf)
/PTEX.PageNumber 1
-/PTEX.InfoDict 467 0 R
+/PTEX.InfoDict 469 0 R
/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000]
/BBox [0.00000000 0.00000000 376.00000000 320.00000000]
/Resources <<
/ProcSet [ /PDF /Text ]
/ExtGState <<
-/R7 468 0 R
->>/Font << /R8 469 0 R >>
+/R7 470 0 R
+>>/Font << /R8 471 0 R >>
>>
-/Length 470 0 R
+/Length 472 0 R
/Filter /FlateDecode
>>
stream
-xMo0 <;l"îkP6AbGJGb:,P/E '+Oz?}  l
- К-5!Q%"DGzCtΠIəY.0q$R!/AJه7iYza' dĀ7~ 
-HU-j\Cm o s@8a9rA*Z\id4(%>ih2eC4{y]Te\{}\t^2)W/b5̯@zŨ8#G7 +8 )|
-Y La- 7pD7[:
-B|jZ%Tp'endstream
+xN0 y=4# u*Bˈ}4ZgF=4r~/T =ԋ_VHzQ)YocDJx)@/R]9$rAHQH/5a'i\$hU?4DZsYV;º*[>|PS/@,4d@ӋvpѼFWեu;E"-xcv3!_üŬ5,}Fj.bVW9<[mEUqomu
+\#aLV$^yf3yd+ǹڝm-;Nn?g;}ݞ@^AԊqB Ɂڤ t<T
endobj
-467 0 obj
+469 0 obj
<<
/Producer (GPL Ghostscript 8.61)
-/CreationDate (D:20080809233926Z00'00')
-/ModDate (D:20080809233926Z00'00')
+/CreationDate (D:20080810030234Z00'00')
+/ModDate (D:20080810030234Z00'00')
>>
endobj
-468 0 obj
+470 0 obj
<<
/Type /ExtGState
/OPM 1
>>
endobj
-469 0 obj
+471 0 obj
<<
/BaseFont /Helvetica
/Type /Font
/Subtype /Type1
>>
endobj
-470 0 obj
-499
+472 0 obj
+548
endobj
-465 0 obj <<
-/D [463 0 R /XYZ 74.4095 793.4011 null]
+467 0 obj <<
+/D [465 0 R /XYZ 74.4095 793.4011 null]
>> endobj
-466 0 obj <<
-/D [463 0 R /XYZ 74.4095 750.3359 null]
+468 0 obj <<
+/D [465 0 R /XYZ 74.4095 750.3359 null]
>> endobj
338 0 obj <<
-/D [463 0 R /XYZ 281.7271 358.4221 null]
+/D [465 0 R /XYZ 281.7271 358.4221 null]
>> endobj
-462 0 obj <<
+464 0 obj <<
/Font << /F61 280 0 R /F26 214 0 R /F28 217 0 R >>
-/XObject << /Im3 448 0 R >>
+/XObject << /Im3 450 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-473 0 obj <<
+475 0 obj <<
/Length 1763
/Filter /FlateDecode
>>
@@ -1764,35 +1766,35 @@ xڍn8ޯQbV$%J:&tw[`hrdY˴G wCɒ%7Eh839//B$bQŋ$
CG1zPI.A
0
endobj
-472 0 obj <<
+474 0 obj <<
/Type /Page
-/Contents 473 0 R
-/Resources 471 0 R
+/Contents 475 0 R
+/Resources 473 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 457 0 R
-/Annots [ 477 0 R ]
+/Parent 459 0 R
+/Annots [ 479 0 R ]
>> endobj
-477 0 obj <<
+479 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [126.1829 465.5316 140.6385 476.1138]
/Subtype /Link
/A << /S /GoTo /D (figure.1.2) >>
>> endobj
-474 0 obj <<
-/D [472 0 R /XYZ 74.4095 793.4011 null]
+476 0 obj <<
+/D [474 0 R /XYZ 74.4095 793.4011 null]
>> endobj
-475 0 obj <<
-/D [472 0 R /XYZ 74.4095 750.7482 null]
+477 0 obj <<
+/D [474 0 R /XYZ 74.4095 750.7482 null]
>> endobj
-476 0 obj <<
-/D [472 0 R /XYZ 74.4095 608.3473 null]
+478 0 obj <<
+/D [474 0 R /XYZ 74.4095 608.3473 null]
>> endobj
-471 0 obj <<
+473 0 obj <<
/Font << /F61 280 0 R /F26 214 0 R /F28 217 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-481 0 obj <<
+483 0 obj <<
/Length 1160
/Filter /FlateDecode
>>
@@ -1802,15 +1804,15 @@ xڭWKs6WH͔0ޏⱝI:m%ʁ6!)E9"Uw iJ鴣
l0.JRCvF';%ZhS.ʳµRX+ﱬ} +J"+2pamlhUOH~ kZ((i;GK9e/)-!I!3NlA%0F>*7* !LM|jSv[y r.`+tNq k9Wiy ,!88bPq."C_x=(.@>~*<30l7T[%= eghFVCc gzC uIHLiXU|YC.S#K+i;?U&o} D7悝˅pPM.z72AnD)1pujR._k~ǃP+&…O97+T!6y<$u"omY崀tSF`OkDwr L}W]>H?٢1|EP<m`'|#jRUq oF=t|O,:`3P9F0=I$
:t-/b|.r _Mq'X 45_wP0,#qqa$rڿ/_/N;6?6_[J0<sJ/1x@ks^+'pA?-Fendstream
endobj
-480 0 obj <<
+482 0 obj <<
/Type /Page
-/Contents 481 0 R
-/Resources 479 0 R
+/Contents 483 0 R
+/Resources 481 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 457 0 R
-/Annots [ 483 0 R 484 0 R 485 0 R ]
+/Parent 459 0 R
+/Annots [ 485 0 R 486 0 R 487 0 R ]
>> endobj
-478 0 obj <<
+480 0 obj <<
/Type /XObject
/Subtype /Image
/Width 1024
@@ -1832,45 +1834,45 @@ pz폎6?
t ?y#rϲP{@Z
PZ8
endobj
-483 0 obj <<
+485 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [73.4132 189.397 87.8688 199.9793]
/Subtype /Link
/A << /S /GoTo /D (figure.2.1) >>
>> endobj
-484 0 obj <<
+486 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [389.0928 189.397 403.5483 199.9793]
/Subtype /Link
/A << /S /GoTo /D (figure.2.2) >>
>> endobj
-485 0 obj <<
+487 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [300.1067 135.6153 314.5622 146.1976]
/Subtype /Link
/A << /S /GoTo /D (figure.2.3) >>
>> endobj
-482 0 obj <<
-/D [480 0 R /XYZ 74.4095 793.4011 null]
+484 0 obj <<
+/D [482 0 R /XYZ 74.4095 793.4011 null]
>> endobj
18 0 obj <<
-/D [480 0 R /XYZ 74.4095 771.7323 null]
+/D [482 0 R /XYZ 74.4095 771.7323 null]
>> endobj
22 0 obj <<
-/D [480 0 R /XYZ 74.4095 581.9662 null]
+/D [482 0 R /XYZ 74.4095 581.9662 null]
>> endobj
339 0 obj <<
-/D [480 0 R /XYZ 250.8743 253.9309 null]
+/D [482 0 R /XYZ 250.8743 253.9309 null]
>> endobj
-479 0 obj <<
+481 0 obj <<
/Font << /F26 214 0 R /F28 217 0 R /F61 280 0 R >>
-/XObject << /Im4 478 0 R >>
+/XObject << /Im4 480 0 R >>
/ProcSet [ /PDF /Text /ImageC ]
>> endobj
-491 0 obj <<
+493 0 obj <<
/Length 1704
/Filter /FlateDecode
>>
@@ -1883,15 +1885,15 @@ gGK_7p 6"T(PMoWȂw1} 0bZ*4J<A
6d p1nD*},f#վCJw]Xl-hpvG
=wa7n2zc6h٘"OiĬ{v\WWO[lp: i{Lxܘl|NTtloG2qcCK$?~i2Cf㮣K>%<!E:g=ݴMOd &?17bkjO cFaxxg/B+wxBY\9xKo] &<o~ uYL9i&~Z4V)B$V_endstream
endobj
-490 0 obj <<
+492 0 obj <<
/Type /Page
-/Contents 491 0 R
-/Resources 489 0 R
+/Contents 493 0 R