From 8e674bd57852e4060223f49c2a804a759b438e39 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 13 Aug 2008 21:04:09 +0000 Subject: foo --- LaTeX/chapters/anhang-a.tex | 19 +++++++ LaTeX/chapters/appendix-a.tex | 19 ------- LaTeX/chapters/ausblick.tex | 23 ++++++++ LaTeX/chapters/conclusion.tex | 23 -------- LaTeX/chapters/einleitung.tex | 64 +++++++++++++++++++++ LaTeX/chapters/introduction.tex | 64 --------------------- LaTeX/chapters/titelseite.tex | 119 ++++++++++++++++++++++++++++++++++++++++ LaTeX/chapters/titlepage.tex | 119 ---------------------------------------- 8 files changed, 225 insertions(+), 225 deletions(-) create mode 100644 LaTeX/chapters/anhang-a.tex delete mode 100644 LaTeX/chapters/appendix-a.tex create mode 100644 LaTeX/chapters/ausblick.tex delete mode 100644 LaTeX/chapters/conclusion.tex create mode 100644 LaTeX/chapters/einleitung.tex delete mode 100644 LaTeX/chapters/introduction.tex create mode 100644 LaTeX/chapters/titelseite.tex delete mode 100644 LaTeX/chapters/titlepage.tex (limited to 'LaTeX/chapters') diff --git a/LaTeX/chapters/anhang-a.tex b/LaTeX/chapters/anhang-a.tex new file mode 100644 index 0000000..d386b3d --- /dev/null +++ b/LaTeX/chapters/anhang-a.tex @@ -0,0 +1,19 @@ +\chapter{Akronyme} + +\begin{acronym} +\acro{API}{Application Programming Interface} +\acro{BSD}{Berkeley Software Distribution} +\acro{GIMP}{GNU Image Manipulation Program} +\acro{GNU}{GNU's Not UNIX} +\acro{GUI}{Graphical User Interface} +\acro{GVim}{Graphical Vi IMproved} +\acro{HTTPS}{Hypertext Transfer Protocol Secure} +\acro{JRE}{Java Runtime Environment} +\acro{NID}{Nachrichten-Identifikationsnummer} +\acro{PDF}{Protable Document Format} +\acro{PID}{Prozess-Identifikationsnummer} +\acro{RTT}{Round Trip Time} +\acro{SDK}{Software Development Kit} +\acro{SVN}{Subversion} +\acro{VS}{Verteilte Systeme} +\end{acronym} diff --git a/LaTeX/chapters/appendix-a.tex b/LaTeX/chapters/appendix-a.tex deleted file mode 100644 index d386b3d..0000000 --- a/LaTeX/chapters/appendix-a.tex +++ /dev/null @@ -1,19 +0,0 @@ -\chapter{Akronyme} - -\begin{acronym} -\acro{API}{Application Programming Interface} -\acro{BSD}{Berkeley Software Distribution} -\acro{GIMP}{GNU Image Manipulation Program} -\acro{GNU}{GNU's Not UNIX} -\acro{GUI}{Graphical User Interface} -\acro{GVim}{Graphical Vi IMproved} -\acro{HTTPS}{Hypertext Transfer Protocol Secure} -\acro{JRE}{Java Runtime Environment} -\acro{NID}{Nachrichten-Identifikationsnummer} -\acro{PDF}{Protable Document Format} -\acro{PID}{Prozess-Identifikationsnummer} -\acro{RTT}{Round Trip Time} -\acro{SDK}{Software Development Kit} -\acro{SVN}{Subversion} -\acro{VS}{Verteilte Systeme} -\end{acronym} diff --git a/LaTeX/chapters/ausblick.tex b/LaTeX/chapters/ausblick.tex new file mode 100644 index 0000000..5959e7a --- /dev/null +++ b/LaTeX/chapters/ausblick.tex @@ -0,0 +1,23 @@ +\chapter{Ausblick} + +Es wurde erfolgreich ein Simulator für die Simulation verteilter Systeme entwickelt. Der Simulator hat bereits 10 implementierte Protokolle zur Auswahl eingebaut. Zudem steht dem Anwender ein sehr komfortables Protokoll-API zur Verfügung, womit der Entwicklung neuer Protokolle quasi keine Grenzen gesetzt sind. + +Darüber hinaus verfügt der Simulator über eine Vielzahl von sehr flexiblen Einstellungsmöglichkeiten. Für jede Simulation lassen sich somit komplett andere Konfigurationen verwenden. Jeder beteiligte Prozess hat wiederum eigene lokale Einstellungen, wo sich auch jedes Protokoll für jeden Prozess separat einstellen lässt. Die Anzahl und Flexibilität der möglichen Szenarien wird dadurch um einen sehr großen Faktor erweitert. + +Mit dem Ereigniseditor gibt es eine komfortable Möglichkeit eigene Szenarien zu programmieren um sie anschließend zu Simulieren. Hierbei kann entweder auf die bereits enthaltenen Protokolle oder auf selbst implementierte Protokolle zugegriffen werden. Alle dazugehörigen Einstellungen und programmierten Ereignisse lassen sich vom Anwender für eine spätere Wiederverwendung plattformunabhängig abspeichern. Somit können auch abgespeicherte Szenarien beispielsweise an Kommilitonen weitergegeben werden oder für eine spätere Präsentierung zwischengespeichert werden. Durch den Logfilter lassen sich mit Hilfe von regulären Ausdrücken nur die relevanten Lognachrichten anzeigen, was die Analyse einer Simulation erheblich vereinfacht. Weitere Funktionen wie Lamport- und Vektor-Zeitstempel sowie Anti-Aliasing runden den Simulator ab. + +Durch den objektorientierten Aufbau ist der Simulator relativ einfach erweiterbar, was nicht nur das Protokoll-API betrifft. Insgesamt wurde an den meisten Stellen darauf geachtet, dass zu einem sp\"{a}teren Zeitpunkt Erweiterungen einfließen k\"{o}nnten. Insbesondere soll die Serialisierung von Objekten r\"{u}ckw\"{a}rtskompatibel bleiben, da sonst bei jeder neuen Simulatorversion alle Simulationen erneut angelegt und abgespeichert werden m\"{u}ssten. + +Hätte für diese Diplomarbeit noch mehr Zeit zur Verfügung gestanden, dann h\"{a}tten einige der folgenden Funktionen (hier in alphanumerisch sortierter Reihenfolge aufgelistet) auch Einzug halten k\"{o}nnen: + +\begin{itemize} + \item Die M\"{o}glichkeit Protokolle zu entwickeln ohne den kompletten Quelltext des Simulators vorliegen zu haben. Protokollklassen als separate Bibliothek einzubinden, die dynamisch geladen werden k\"{o}nnen. + \item Die Simulationsdauer beliebig lang machen zu können. Dazu müsste die Klasse \textit{VSSimulatorVisualisation} entlang der Zeitachse scrollbar gemacht werden, so dass der Benutzer für eine nachträgliche Betrachtung des Simulationsverlaufes zu jeder beliebigen Position zurückspringen kann. + \item Eine Zoomfunktion für die Simulationsvisualisierung einzubauen. + \item Im Ereigniseditor selbst auch periodische Ereignisse programmierbar zu machen. Bisher kann nur jeder Ereigniseintritt separat programmiert werden oder auf Protokoll-Interne Wecker zurückgegriffen werden. + \item Lamport- und Vektor-Zeitstempel als Ereigniseintrittskriterien verwenden zu können. + \item Tiefere Schichten des OSI-Referenzmodells simulieren können, wie z.B. TCP, UDP, IP, ... + \item Weitere Funktionen einzubauen, wie z.B. das Anklicken einer Nachrichtenlinie, was zu der jeweiligen Nachricht alle verfügbaren Informationen anzeigt und welche gegebenenfalls vom Benutzer editiert werden können. +\end{itemize} + +Da der Simulator höchstwahrscheinlich unter einer Open Source Lizenz freigegeben wird, werden die einen oder anderen Funktionen nachträglich eingebaut werden. Kommilitonen werden auch herzlich dazu eingeladen sein sich an diesem Software-Projekt zu beteiligen. Als Vorbild sei hier der CPU-Simulator M32 \cite{M32}, der von Prof. Oßmann an der Fachhochschule Aachen entwickelt wurde, genannt. Hier existieren bereits einige Erweiterungen und Verbesserungen der Ursprungsversion, die von den Studenten angefertigt wurden. Für die Entwicklung des VS-Simulators wurde keine proprietäre Software verwendet, so dass jeder kostenlosen Zugriff auf die dazugehörigen Tools hat. diff --git a/LaTeX/chapters/conclusion.tex b/LaTeX/chapters/conclusion.tex deleted file mode 100644 index 5959e7a..0000000 --- a/LaTeX/chapters/conclusion.tex +++ /dev/null @@ -1,23 +0,0 @@ -\chapter{Ausblick} - -Es wurde erfolgreich ein Simulator für die Simulation verteilter Systeme entwickelt. Der Simulator hat bereits 10 implementierte Protokolle zur Auswahl eingebaut. Zudem steht dem Anwender ein sehr komfortables Protokoll-API zur Verfügung, womit der Entwicklung neuer Protokolle quasi keine Grenzen gesetzt sind. - -Darüber hinaus verfügt der Simulator über eine Vielzahl von sehr flexiblen Einstellungsmöglichkeiten. Für jede Simulation lassen sich somit komplett andere Konfigurationen verwenden. Jeder beteiligte Prozess hat wiederum eigene lokale Einstellungen, wo sich auch jedes Protokoll für jeden Prozess separat einstellen lässt. Die Anzahl und Flexibilität der möglichen Szenarien wird dadurch um einen sehr großen Faktor erweitert. - -Mit dem Ereigniseditor gibt es eine komfortable Möglichkeit eigene Szenarien zu programmieren um sie anschließend zu Simulieren. Hierbei kann entweder auf die bereits enthaltenen Protokolle oder auf selbst implementierte Protokolle zugegriffen werden. Alle dazugehörigen Einstellungen und programmierten Ereignisse lassen sich vom Anwender für eine spätere Wiederverwendung plattformunabhängig abspeichern. Somit können auch abgespeicherte Szenarien beispielsweise an Kommilitonen weitergegeben werden oder für eine spätere Präsentierung zwischengespeichert werden. Durch den Logfilter lassen sich mit Hilfe von regulären Ausdrücken nur die relevanten Lognachrichten anzeigen, was die Analyse einer Simulation erheblich vereinfacht. Weitere Funktionen wie Lamport- und Vektor-Zeitstempel sowie Anti-Aliasing runden den Simulator ab. - -Durch den objektorientierten Aufbau ist der Simulator relativ einfach erweiterbar, was nicht nur das Protokoll-API betrifft. Insgesamt wurde an den meisten Stellen darauf geachtet, dass zu einem sp\"{a}teren Zeitpunkt Erweiterungen einfließen k\"{o}nnten. Insbesondere soll die Serialisierung von Objekten r\"{u}ckw\"{a}rtskompatibel bleiben, da sonst bei jeder neuen Simulatorversion alle Simulationen erneut angelegt und abgespeichert werden m\"{u}ssten. - -Hätte für diese Diplomarbeit noch mehr Zeit zur Verfügung gestanden, dann h\"{a}tten einige der folgenden Funktionen (hier in alphanumerisch sortierter Reihenfolge aufgelistet) auch Einzug halten k\"{o}nnen: - -\begin{itemize} - \item Die M\"{o}glichkeit Protokolle zu entwickeln ohne den kompletten Quelltext des Simulators vorliegen zu haben. Protokollklassen als separate Bibliothek einzubinden, die dynamisch geladen werden k\"{o}nnen. - \item Die Simulationsdauer beliebig lang machen zu können. Dazu müsste die Klasse \textit{VSSimulatorVisualisation} entlang der Zeitachse scrollbar gemacht werden, so dass der Benutzer für eine nachträgliche Betrachtung des Simulationsverlaufes zu jeder beliebigen Position zurückspringen kann. - \item Eine Zoomfunktion für die Simulationsvisualisierung einzubauen. - \item Im Ereigniseditor selbst auch periodische Ereignisse programmierbar zu machen. Bisher kann nur jeder Ereigniseintritt separat programmiert werden oder auf Protokoll-Interne Wecker zurückgegriffen werden. - \item Lamport- und Vektor-Zeitstempel als Ereigniseintrittskriterien verwenden zu können. - \item Tiefere Schichten des OSI-Referenzmodells simulieren können, wie z.B. TCP, UDP, IP, ... - \item Weitere Funktionen einzubauen, wie z.B. das Anklicken einer Nachrichtenlinie, was zu der jeweiligen Nachricht alle verfügbaren Informationen anzeigt und welche gegebenenfalls vom Benutzer editiert werden können. -\end{itemize} - -Da der Simulator höchstwahrscheinlich unter einer Open Source Lizenz freigegeben wird, werden die einen oder anderen Funktionen nachträglich eingebaut werden. Kommilitonen werden auch herzlich dazu eingeladen sein sich an diesem Software-Projekt zu beteiligen. Als Vorbild sei hier der CPU-Simulator M32 \cite{M32}, der von Prof. Oßmann an der Fachhochschule Aachen entwickelt wurde, genannt. Hier existieren bereits einige Erweiterungen und Verbesserungen der Ursprungsversion, die von den Studenten angefertigt wurden. Für die Entwicklung des VS-Simulators wurde keine proprietäre Software verwendet, so dass jeder kostenlosen Zugriff auf die dazugehörigen Tools hat. diff --git a/LaTeX/chapters/einleitung.tex b/LaTeX/chapters/einleitung.tex new file mode 100644 index 0000000..214d7fa --- /dev/null +++ b/LaTeX/chapters/einleitung.tex @@ -0,0 +1,64 @@ +\chapter{Einleitung} + +\section{Motivation} + +In der Literatur findet man viele verschiedene Definitionen eines verteilten Systems. Vieler dieser Definitionen unterschieden sich untereinander, so dass es schwer fällt eine Definition zu finden, die als Alleinige als die Richtige gilt. Andrew Tanenbaum und Marten van Steen w\"{a}hlten für die Beschreibung eines verteilten Systems die folgende lockere Charakterisierung: + +\cite{Tanenbaum} \textit{``Ein verteiltes System ist eine Menge voneinander unabhängiger Computer, die dem Anwender wie ein einzelnes, kohärentes System erscheinen''} + +Der Anwender muss sich nur mit dem lokalen, vor ihm befindlichen Computer auseinandersetzen, während die Software des lokalen Computers die reibungslose Kommunikation mit den anderen beteiligten Computern des verteilten Systems sicherstellt. + +Diese Diplomarbeit soll den Anwendern die Betrachtung von verteilten Systemen aus einer anderen Perspektive erleichtern. Hierbei wird nicht die Sichtweise eines Endbenutzers eingenommen, sondern es sollen die Funktionsweisen von Protokollen und deren Prozesse in verteilten Systemen begreifbar gemacht und gleichzeitig alle relevanten Ereignisse eines verteilten Systems transparent dargestellt werden. + +Um dieses Ziel zu erreichen soll, insbesondere f\"{u}r Lehr- und Lernzwecke an der Fachhochschule Aachen, ein Simulator entwickelt werden. Mit dem Simulator sollen Protokolle aus den verteilten Systemen mit ihren wichtigsten Einflussfaktoren anhand von Simulationen nachgeblidet werden k\"{o}nnen. Gleichzeitig muss für eigene Experimente ein großer Spielraum zur Verfügung stehen, wobei es keine Beschränkung auf eine feste Anzahl von Protokollen geben darf. Es ist also wichtig, dass es dem Anwender ermöglicht wird eigene Protokolle zu entwerfen. + +\section{Grundlagen} + +Für das Grundverständnis werden im Folgenden einige Grundlagen erläutert. Eine Vertiefung findet erst in den späteren Kapiteln statt. + +\subsubsection{Client/Server Modell} + +\begin{figure}[htbp] + \centering + \fbox{\includegraphics{images/client-server}} + \caption{Client/Server Modell} + \label{fig:ClientServer} +\end{figure} + +Der Simulator basiert auf dem Client/Server-Prinzip. Jede Simulation besteht in der Regel aus einen teilnehmenden Client und einen Server, die miteinander über Nachrichten kommunizieren (s. Abbildung \ref{fig:ClientServer}.). Bei komplexen Simulationen können auch mehrere Clients und/oder Server mitwirken. + +\subsubsection{Prozesse und deren Rollen} + +Ein verteiltes System wird anhand von Prozessen simuliert. Jeder Prozess nimmt hierbei eine oder mehrere Rollen ein. Beispielsweise kann ein Prozess die Rolle eines Clients einnehmen und ein weiterer Prozess die Rolle eines Servers. Die M\"{o}glichkeit einem Prozess die Client- und Serverrolle gleichzeitig zuzuweisen ist ebenso gegeben. Ein Prozess k\"{o}nnte auch die Rollen mehrerer Server und Clients gleichzeitig einnehmen. Um einen Prozess zu kennzeichnen besitzt, jeder eine \textbf{eindeutige} Prozess-Identifikationsnummer (PID). + +\subsubsection{Nachrichten} + +In einem verteilten System müssen Nachrichten verschickt werden können. Eine Nachricht kann von einem Client- oder Serverprozess verschickt werden und kann beliebig viele Empfänger haben. Der Inhalt einer Nachricht hängt vom verwendeten Protokoll ab. Was unter einem Protokoll zu verstehen ist, wird später behandelt. Um eine Nachricht zu kennzeichnen, besitzt jede Nachricht eine \textbf{eindeutige} Nachrichten-Identifikationsnummer (NID). + +\subsubsection{Lokale und globale Uhren} + +In einer Simulation gibt es \textbf{genau eine} globale Uhr. Sie stellt die aktuelle und \textbf{immer korrekte} Zeit dar. Eine globale Uhr geht nie falsch. + +Zudem besitzt jeder beteiligte Prozess eine eigene lokale Uhr. Sie stellt die aktuelle Zeit des jeweiligen Prozesses dar. Im Gegensatz zu der globalen Uhr können lokale Uhren eine falsche Zeit anzeigen. Wenn die Prozesszeit nicht global-korrekt ist (nicht der globalen Zeit gleicht, bzw. eine falsche Zeit anzeigt), dann wurde sie entweder im Laufe einer Simulation neu gestellt, oder sie geht wegen einer Uhrabweichung falsch. Die Uhrabweichung gibt an, um welchen Faktor die Uhr falsch geht. Hierauf wird später genauer eingegangen. + +\begin{figure}[htbp] + \centering + \includegraphics{images/client-server-protokolle} + \caption{Client/Server Protokolle} + \label{fig:ClientServerProtokolle} +\end{figure} + +Neben den normalen Uhren sind auch die Vektor-Zeitstempel sowie die logischen Uhren von Lamport von Interesse. Jeder Prozess besitzt zusätzlich einen Vektor-Zeitstempel für seine Vektorzeit, sowie einen Lamport-Zeitstempel für seine Lamportzeit. Für die Vektor- und Lamportzeiten gibt es hier, im Gegensatz zu der normalen Zeit, keine globalen Äquivalente. Konkrete Beispiele zu den Lamport- und Vektorzeiten werden später in Kapitel 3.11.1. behandelt. + +\subsubsection{Ereignisse} + +Eine Simulation besteht aus der Hintereinanderausführung von endlich vielen Ereignissen. Beispielsweise kann es ein Ereignis geben, welches einen Prozess eine Nachricht verschicken lässt. Denkbar wäre auch ein Prozessabsturzereignis. Jedes Ereignis tritt zu einem bestimmten Zeitpunkt ein. Ereignisse mit selber Eintrittszeit werden vom Simulator direkt hintereinander ausgeführt. Den Anwender des Simulators hindert dies jedoch nicht, da Ereignisse aus ihrer Sicht parallel ausgeführt werden. + +\subsubsection{Protokolle} + +Eine Simulation besteht auch aus der Anwendung von Protokollen. Es wurde bereits erwähnt, dass ein Prozess die Rollen von Servern und/oder Clients annehmen kann. Bei jeder Server- und Clientrolle muss zusätzlich das dazugehörige Protokoll spezifiziert werden. Ein Protokoll definiert, wie ein Client und ein Server Nachrichten verschickt, und wie bei Ankunft einer Nachricht reagiert wird. Ein Protokoll legt auch fest, welche Daten in einer Nachricht enthalten sind. Ein Prozess verarbeitet eine empfangene Nachricht nur, wenn er das jeweilige Protokoll versteht. + +In Abbildung \ref{fig:ClientServerProtokolle}. sind 3 Prozesse dargestellt. Prozess 1 unterstützt serverseitig das Protokoll ``A'' und clientseitig das Protokoll ``B''. Prozess 2 unterstützt clientseitig das Protokoll ``A'' und Prozess 3 serverseitig das Protokoll ``B''. Das heißt, dass Prozess 1 mit Prozess 2 via Protokoll ``A'' und mit Prozess 3 via Protokoll ``B'' kommunizieren kann. Die Prozesse 2 und 3 sind zueinander inkompatibel und können voneinander erhaltene Nachrichten nicht verarbeiten. + +Clients können nicht mit Clients, und Server nicht mit Servern kommunizieren. Für eine Kommunikation wird stets mindestens ein Client und ein Server benötigt. Diese Einschränkung kann aber umgangen werden, indem Prozesse ein gegebenes Protokoll sowohl server- als auch clientseitig unterstützen (vgl. Broadcast Protokoll in Kap. 3.3.). + diff --git a/LaTeX/chapters/introduction.tex b/LaTeX/chapters/introduction.tex deleted file mode 100644 index 214d7fa..0000000 --- a/LaTeX/chapters/introduction.tex +++ /dev/null @@ -1,64 +0,0 @@ -\chapter{Einleitung} - -\section{Motivation} - -In der Literatur findet man viele verschiedene Definitionen eines verteilten Systems. Vieler dieser Definitionen unterschieden sich untereinander, so dass es schwer fällt eine Definition zu finden, die als Alleinige als die Richtige gilt. Andrew Tanenbaum und Marten van Steen w\"{a}hlten für die Beschreibung eines verteilten Systems die folgende lockere Charakterisierung: - -\cite{Tanenbaum} \textit{``Ein verteiltes System ist eine Menge voneinander unabhängiger Computer, die dem Anwender wie ein einzelnes, kohärentes System erscheinen''} - -Der Anwender muss sich nur mit dem lokalen, vor ihm befindlichen Computer auseinandersetzen, während die Software des lokalen Computers die reibungslose Kommunikation mit den anderen beteiligten Computern des verteilten Systems sicherstellt. - -Diese Diplomarbeit soll den Anwendern die Betrachtung von verteilten Systemen aus einer anderen Perspektive erleichtern. Hierbei wird nicht die Sichtweise eines Endbenutzers eingenommen, sondern es sollen die Funktionsweisen von Protokollen und deren Prozesse in verteilten Systemen begreifbar gemacht und gleichzeitig alle relevanten Ereignisse eines verteilten Systems transparent dargestellt werden. - -Um dieses Ziel zu erreichen soll, insbesondere f\"{u}r Lehr- und Lernzwecke an der Fachhochschule Aachen, ein Simulator entwickelt werden. Mit dem Simulator sollen Protokolle aus den verteilten Systemen mit ihren wichtigsten Einflussfaktoren anhand von Simulationen nachgeblidet werden k\"{o}nnen. Gleichzeitig muss für eigene Experimente ein großer Spielraum zur Verfügung stehen, wobei es keine Beschränkung auf eine feste Anzahl von Protokollen geben darf. Es ist also wichtig, dass es dem Anwender ermöglicht wird eigene Protokolle zu entwerfen. - -\section{Grundlagen} - -Für das Grundverständnis werden im Folgenden einige Grundlagen erläutert. Eine Vertiefung findet erst in den späteren Kapiteln statt. - -\subsubsection{Client/Server Modell} - -\begin{figure}[htbp] - \centering - \fbox{\includegraphics{images/client-server}} - \caption{Client/Server Modell} - \label{fig:ClientServer} -\end{figure} - -Der Simulator basiert auf dem Client/Server-Prinzip. Jede Simulation besteht in der Regel aus einen teilnehmenden Client und einen Server, die miteinander über Nachrichten kommunizieren (s. Abbildung \ref{fig:ClientServer}.). Bei komplexen Simulationen können auch mehrere Clients und/oder Server mitwirken. - -\subsubsection{Prozesse und deren Rollen} - -Ein verteiltes System wird anhand von Prozessen simuliert. Jeder Prozess nimmt hierbei eine oder mehrere Rollen ein. Beispielsweise kann ein Prozess die Rolle eines Clients einnehmen und ein weiterer Prozess die Rolle eines Servers. Die M\"{o}glichkeit einem Prozess die Client- und Serverrolle gleichzeitig zuzuweisen ist ebenso gegeben. Ein Prozess k\"{o}nnte auch die Rollen mehrerer Server und Clients gleichzeitig einnehmen. Um einen Prozess zu kennzeichnen besitzt, jeder eine \textbf{eindeutige} Prozess-Identifikationsnummer (PID). - -\subsubsection{Nachrichten} - -In einem verteilten System müssen Nachrichten verschickt werden können. Eine Nachricht kann von einem Client- oder Serverprozess verschickt werden und kann beliebig viele Empfänger haben. Der Inhalt einer Nachricht hängt vom verwendeten Protokoll ab. Was unter einem Protokoll zu verstehen ist, wird später behandelt. Um eine Nachricht zu kennzeichnen, besitzt jede Nachricht eine \textbf{eindeutige} Nachrichten-Identifikationsnummer (NID). - -\subsubsection{Lokale und globale Uhren} - -In einer Simulation gibt es \textbf{genau eine} globale Uhr. Sie stellt die aktuelle und \textbf{immer korrekte} Zeit dar. Eine globale Uhr geht nie falsch. - -Zudem besitzt jeder beteiligte Prozess eine eigene lokale Uhr. Sie stellt die aktuelle Zeit des jeweiligen Prozesses dar. Im Gegensatz zu der globalen Uhr können lokale Uhren eine falsche Zeit anzeigen. Wenn die Prozesszeit nicht global-korrekt ist (nicht der globalen Zeit gleicht, bzw. eine falsche Zeit anzeigt), dann wurde sie entweder im Laufe einer Simulation neu gestellt, oder sie geht wegen einer Uhrabweichung falsch. Die Uhrabweichung gibt an, um welchen Faktor die Uhr falsch geht. Hierauf wird später genauer eingegangen. - -\begin{figure}[htbp] - \centering - \includegraphics{images/client-server-protokolle} - \caption{Client/Server Protokolle} - \label{fig:ClientServerProtokolle} -\end{figure} - -Neben den normalen Uhren sind auch die Vektor-Zeitstempel sowie die logischen Uhren von Lamport von Interesse. Jeder Prozess besitzt zusätzlich einen Vektor-Zeitstempel für seine Vektorzeit, sowie einen Lamport-Zeitstempel für seine Lamportzeit. Für die Vektor- und Lamportzeiten gibt es hier, im Gegensatz zu der normalen Zeit, keine globalen Äquivalente. Konkrete Beispiele zu den Lamport- und Vektorzeiten werden später in Kapitel 3.11.1. behandelt. - -\subsubsection{Ereignisse} - -Eine Simulation besteht aus der Hintereinanderausführung von endlich vielen Ereignissen. Beispielsweise kann es ein Ereignis geben, welches einen Prozess eine Nachricht verschicken lässt. Denkbar wäre auch ein Prozessabsturzereignis. Jedes Ereignis tritt zu einem bestimmten Zeitpunkt ein. Ereignisse mit selber Eintrittszeit werden vom Simulator direkt hintereinander ausgeführt. Den Anwender des Simulators hindert dies jedoch nicht, da Ereignisse aus ihrer Sicht parallel ausgeführt werden. - -\subsubsection{Protokolle} - -Eine Simulation besteht auch aus der Anwendung von Protokollen. Es wurde bereits erwähnt, dass ein Prozess die Rollen von Servern und/oder Clients annehmen kann. Bei jeder Server- und Clientrolle muss zusätzlich das dazugehörige Protokoll spezifiziert werden. Ein Protokoll definiert, wie ein Client und ein Server Nachrichten verschickt, und wie bei Ankunft einer Nachricht reagiert wird. Ein Protokoll legt auch fest, welche Daten in einer Nachricht enthalten sind. Ein Prozess verarbeitet eine empfangene Nachricht nur, wenn er das jeweilige Protokoll versteht. - -In Abbildung \ref{fig:ClientServerProtokolle}. sind 3 Prozesse dargestellt. Prozess 1 unterstützt serverseitig das Protokoll ``A'' und clientseitig das Protokoll ``B''. Prozess 2 unterstützt clientseitig das Protokoll ``A'' und Prozess 3 serverseitig das Protokoll ``B''. Das heißt, dass Prozess 1 mit Prozess 2 via Protokoll ``A'' und mit Prozess 3 via Protokoll ``B'' kommunizieren kann. Die Prozesse 2 und 3 sind zueinander inkompatibel und können voneinander erhaltene Nachrichten nicht verarbeiten. - -Clients können nicht mit Clients, und Server nicht mit Servern kommunizieren. Für eine Kommunikation wird stets mindestens ein Client und ein Server benötigt. Diese Einschränkung kann aber umgangen werden, indem Prozesse ein gegebenes Protokoll sowohl server- als auch clientseitig unterstützen (vgl. Broadcast Protokoll in Kap. 3.3.). - diff --git a/LaTeX/chapters/titelseite.tex b/LaTeX/chapters/titelseite.tex new file mode 100644 index 0000000..4cbae22 --- /dev/null +++ b/LaTeX/chapters/titelseite.tex @@ -0,0 +1,119 @@ +% Diploma thesis template 2005 +% author: lukas.silberbauer(at)gmx.at +% based upon "Diplomarbeit mit LaTeX" by Tobias Erbsland +% published under the terms of +% ---------------------------------------------------------------------------- +% "THE BEER-WARE LICENSE": +% wrote this file. As long as you retain this notice +% you can do whatever you want with this stuff. If we meet some day, and you think +% this stuff is worth it, you can buy me a beer in return. +% ---------------------------------------------------------------------------- + +\selectlanguage{german} +\begin{titlepage} % enlarge page + \pagestyle{empty} + \setlength{\topmargin}{0pt} + \setlength{\headheight}{0pt} + \setlength{\headsep}{0pt} + \setlength{\footskip}{0pt} + \begin{center} + \begin{figure}[ht] + \centering + \includegraphics{images/fhac_logo.png} + \label{fig:tulogo} + \end{figure} + + \vspace*{1cm} + + {\Huge\bf DIPLOMARBEIT \\[1cm]} + {\Large\bf {\maintitle} \\} + + {~\\Durchgeführt an der} + + {\large Fachhochschule Aachen\\} + {\large Fachbereich Elektrotechnik und Informationstechnik} + + {Eupener Str. 70\\} + {D-52066 Aachen\\~\\} + + {mit Erstpr\"{u}fer und Betreuer } + {\large Prof. Dr.-Ing. Martin Oßmann} + + {und Zweitpr\"{u}fer} + {\large Prof. Dr. rer. nat. Heinrich Fassbender} + + {durch\\} + {\large\bfseries Paul C. B\"{u}tow\\[0.3cm] } + {\large Matr.Nr.: 266617\\} + {Matthiashofstr. 15\\} + {D-52064 Aachen\\} + \end{center} + + \vspace*{0.5cm} + + \begin{flushleft} + {Aachen, \today \\} + \end{flushleft} + +\end{titlepage} + +\thispagestyle{empty} + ~ ~ +\newpage + +\vspace*{2cm} +\textbf{\LARGE Erkl\"{a}rung} +\vspace*{1.5cm} + +Ich versichere hiermit, dass ich die vorliegende Arbeit selbstst\"{a}ndig verfasst und keine anderen, als die im Literaturverzeichnis angegebenen Quellen benutzt habe. + +Stellen, die w\"{o}rtlich oder sinngem\"{a}ß aus ver\"{o}ffentlichten oder noch nicht ver\"{o}ffentlichten Quellen entnommen sind, sind als solche kenntlich gemacht. + +Die Zeichnungen oder Abbildungen in dieser Arbeit sind von mir selbst erstellt worden oder mit einem entsprechenden Quellennachweis versehen. + +Diese Arbeit ist in gleicher oder \"{a}hnlicher Form noch bei keiner anderen Pr\"{u}fungsbeh\"{o}rde eingereicht worden. + +Aachen, \today \\ + +\vspace*{2cm} +\textbf{\LARGE Geheimhaltung} +\vspace*{1.5cm} + +Diese Diplomarbeit darf weder vollst\"{a}ndig, noch auszugsweise ohne schriftliche Zustimmung des Autors, des betreuenden Referenten bzw. der Fachhochschule, Aachen vervielf\"{a}ltigt, ver\"{o}ffentlicht oder Dritten zug\"{a}nglich gemacht werden. + +\newpage + +\thispagestyle{empty} + ~ ~ +\newpage + +\vspace*{2cm} +\textbf{\LARGE Danksagungen} +\vspace*{1.5cm} + +Ohne die Hilfe folgender Personen w\"{a}re die Anfertigung dieser Diplomarbeit in diesem Maße nicht m\"{o}glich gewesen. Daher m\"{o}chte ich mich bedanken bei: + +\begin{itemize} + \item Prof. Oßmann als 1. Pr\"{u}fer sowie Prof. Fassbender als 2. Pr\"{u}fer + \item Andre Herbst + \item Carrie Callahan + \item Claudia Steudter + \item Florian B\"{u}tow + \item J\"{o}rn B\"{u}tow + \item Jochen Demmer + \item Leslie B\"{u}tow +\end{itemize} + +Auch vielen Dank an die Open Source Gemeinde, denn diese Diplomarbeit wurde ausschließlich mit Hilfe von Open Source Software angefertigt. + +\newpage +\thispagestyle{empty} + ~ ~ +\newpage + +\tableofcontents + +\listoffigures + +\listoftables + diff --git a/LaTeX/chapters/titlepage.tex b/LaTeX/chapters/titlepage.tex deleted file mode 100644 index 4cbae22..0000000 --- a/LaTeX/chapters/titlepage.tex +++ /dev/null @@ -1,119 +0,0 @@ -% Diploma thesis template 2005 -% author: lukas.silberbauer(at)gmx.at -% based upon "Diplomarbeit mit LaTeX" by Tobias Erbsland -% published under the terms of -% ---------------------------------------------------------------------------- -% "THE BEER-WARE LICENSE": -% wrote this file. As long as you retain this notice -% you can do whatever you want with this stuff. If we meet some day, and you think -% this stuff is worth it, you can buy me a beer in return. -% ---------------------------------------------------------------------------- - -\selectlanguage{german} -\begin{titlepage} % enlarge page - \pagestyle{empty} - \setlength{\topmargin}{0pt} - \setlength{\headheight}{0pt} - \setlength{\headsep}{0pt} - \setlength{\footskip}{0pt} - \begin{center} - \begin{figure}[ht] - \centering - \includegraphics{images/fhac_logo.png} - \label{fig:tulogo} - \end{figure} - - \vspace*{1cm} - - {\Huge\bf DIPLOMARBEIT \\[1cm]} - {\Large\bf {\maintitle} \\} - - {~\\Durchgeführt an der} - - {\large Fachhochschule Aachen\\} - {\large Fachbereich Elektrotechnik und Informationstechnik} - - {Eupener Str. 70\\} - {D-52066 Aachen\\~\\} - - {mit Erstpr\"{u}fer und Betreuer } - {\large Prof. Dr.-Ing. Martin Oßmann} - - {und Zweitpr\"{u}fer} - {\large Prof. Dr. rer. nat. Heinrich Fassbender} - - {durch\\} - {\large\bfseries Paul C. B\"{u}tow\\[0.3cm] } - {\large Matr.Nr.: 266617\\} - {Matthiashofstr. 15\\} - {D-52064 Aachen\\} - \end{center} - - \vspace*{0.5cm} - - \begin{flushleft} - {Aachen, \today \\} - \end{flushleft} - -\end{titlepage} - -\thispagestyle{empty} - ~ ~ -\newpage - -\vspace*{2cm} -\textbf{\LARGE Erkl\"{a}rung} -\vspace*{1.5cm} - -Ich versichere hiermit, dass ich die vorliegende Arbeit selbstst\"{a}ndig verfasst und keine anderen, als die im Literaturverzeichnis angegebenen Quellen benutzt habe. - -Stellen, die w\"{o}rtlich oder sinngem\"{a}ß aus ver\"{o}ffentlichten oder noch nicht ver\"{o}ffentlichten Quellen entnommen sind, sind als solche kenntlich gemacht. - -Die Zeichnungen oder Abbildungen in dieser Arbeit sind von mir selbst erstellt worden oder mit einem entsprechenden Quellennachweis versehen. - -Diese Arbeit ist in gleicher oder \"{a}hnlicher Form noch bei keiner anderen Pr\"{u}fungsbeh\"{o}rde eingereicht worden. - -Aachen, \today \\ - -\vspace*{2cm} -\textbf{\LARGE Geheimhaltung} -\vspace*{1.5cm} - -Diese Diplomarbeit darf weder vollst\"{a}ndig, noch auszugsweise ohne schriftliche Zustimmung des Autors, des betreuenden Referenten bzw. der Fachhochschule, Aachen vervielf\"{a}ltigt, ver\"{o}ffentlicht oder Dritten zug\"{a}nglich gemacht werden. - -\newpage - -\thispagestyle{empty} - ~ ~ -\newpage - -\vspace*{2cm} -\textbf{\LARGE Danksagungen} -\vspace*{1.5cm} - -Ohne die Hilfe folgender Personen w\"{a}re die Anfertigung dieser Diplomarbeit in diesem Maße nicht m\"{o}glich gewesen. Daher m\"{o}chte ich mich bedanken bei: - -\begin{itemize} - \item Prof. Oßmann als 1. Pr\"{u}fer sowie Prof. Fassbender als 2. Pr\"{u}fer - \item Andre Herbst - \item Carrie Callahan - \item Claudia Steudter - \item Florian B\"{u}tow - \item J\"{o}rn B\"{u}tow - \item Jochen Demmer - \item Leslie B\"{u}tow -\end{itemize} - -Auch vielen Dank an die Open Source Gemeinde, denn diese Diplomarbeit wurde ausschließlich mit Hilfe von Open Source Software angefertigt. - -\newpage -\thispagestyle{empty} - ~ ~ -\newpage - -\tableofcontents - -\listoffigures - -\listoftables - -- cgit v1.2.3