Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung...

61
1 Seminar „Visualisierung Verteilter Systeme“ - Lydian © 2004 Marc Rintsch <[email protected]> Lydian Lydian http://www.cs.chalmers.se/~lydian/ Ein System zur Visualisierung von verteilten Algorithmen Seminarvortrag von Marc Rintsch 24.05.2004

Transcript of Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung...

Page 1: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

1Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

LydianLydianhttp://www.cs.chalmers.se/~lydian/

Ein System zur Visualisierung von verteilten Algorithmen

Seminarvortrag von Marc Rintsch24.05.2004

Page 2: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

2Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

KurzbeschreibungKurzbeschreibung

Visualisierung von verteilten Algorithmen für den Einsatz in der Lehre vorhandene Archive von

● Netzwerktopologien● Protokollen● „Experimenten“

vorgefertigte Animationsprogramme alles vom Benutzer erweiterbar

Page 3: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

3Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

AutorenAutoren

Wer?● Boris Koldehofe● Marina Papatriantafilou● Philippas Tsigas● Phuong Ha-Hoai

Wo?● Informatikinstitut● Chalmers University of Technology &

Göteborg University in Göteborg, Schweden

Page 4: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

4Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

InhaltInhalt kleiner Überblick über das System Modell

● Simulator, Protokolle, Netzwerk

Beispiel „Rundruf mit Bestätigung“● Start von Lydian● Visualisierung

ASCII / grafisch

Lydian erweitern● Protokoll, Netzwerk, Animationsprogramme

Page 5: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

5Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Das SystemDas System

besteht aus Subsystemen● Simulator (DIAS – Distributed Algorithms Simulator)● Animation (POLKA Framework)

http://www.cc.gatech.edu/gvu/softviz/parviz/polka.html

verwendete Programmiersprachen● C für Protokolle● C++ für Animationsprogramme● „glue code“ in TCL/TK http://www.tcl.tk/

Page 6: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

6Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Aufbau des SystemsAufbau des Systems

Experiment● Protokoll● Netzwerk● zusätzliche Parameter

Archive● Protokolle● Netzwerke● Simulationsläufe

Experiment

Protokoll Netzwerk

Simulator

„Run“

Animationsprogramm

Page 7: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

7Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ModellModell Simulator

● Ereignisse● Schnittstelle für Knotenprozesse● Übertragungsfehler

Protokoll● formales Modell

Netzwerk● Topologie● Zeitverhalten

Page 8: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

8Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Annahmen über das simulierte Annahmen über das simulierte SystemSystem

Netzwerktopologie ist ungerichteter Graph Knoten

● ein Prozess pro Knoten● Kommunikation über Nachrichten● Knoten kann nur eine Nachricht auf einmal verarbeiten● startet in Zustand SLEEPING

wacht entweder „spontan“ auf oder wenn eine Nachricht eintrifft

Page 9: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

9Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Simulator ModellSimulator Modell

ereignisgetrieben Zeitverhalten von Nachrichten / Prozessen

● variable Verzögerungen nach verschiedenen Wahrscheinlichkeitsverteilungen möglich

● Prozesse blockieren nach jedem Ereignis für eine bestimmte Zeit

● Nachrichten benötigen Zeit bei der Übertragung● globale Taktzyklen wenn synchrone Protokolle simuliert

werden

Page 10: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

10Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Simulator – EreignisseSimulator – Ereignisse

INITPROTOCOL● „weckt“ beim Start der Simulation die Knoten auf● Anzahl der Knoten und Zeitpunkt können in der

Netzwerkbeschreibung festgelegt werden

RECMES● Nachricht empfangen

TIMEOUTS● jeder Knoten hat 5 Timer für Zeitüberschreitungen

Page 11: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

11Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Wichtige Aufrufe auf dem Wichtige Aufrufe auf dem SimulatorSimulator

send_to● senden von Nachrichten

pass_message● weiterleiten einer Nachricht

simul_end● beendet die Simulation

Page 12: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

12Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ÜbertragungsfehlerÜbertragungsfehler

realistische Simulation benötigt Übertragungsfehler Fehlerarten

● STOP_FAIL Verbindung ist permanent unterbrochen

● INTERMITTENT einzelne Nachrichten gehen zufällig „verloren“

maximale Anzahl betroffener Verbindungen kann vorgegeben werden

Page 13: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

13Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Protokoll Modell (1)Protokoll Modell (1)

deterministischer endlicher Automat (DFA) 8-Tupel (K, S, M, T, R, I, A, d) K – endliche Zustandsmenge für einen Knoten S – Startzustand jedes Knotens M – Menge von Nachrichtentypen T – Menge von 5 Timern pro Knoten R – Menge von „Registern“ für jeden Knoten

Page 14: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

14Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Protokoll Modell (2)Protokoll Modell (2)

I – Menge von Initialisierungsdaten für „Register“ A – Menge von Aktionen

● Zustand ändern● Nachrichten senden● lokale „Register“ ändern● Timer starten / stoppen

Page 15: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

15Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Protokoll Modell (3)Protokoll Modell (3)

d – Übergangsfunktion● bildet Tupel (Zustand, Ereignis) auf eine Aktion ab● formal:

d :K×{INITPROTOCOL}∪M∪T A

Page 16: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

16Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Protokoll Modell ­ Protokoll Modell ­ ZusammenfassungZusammenfassung

Knoten haben● einen Zustand● lokale Daten („Register“)● Funktionen / Methoden (Aktionen)● Timer

Kommunikation durch Nachrichten

Page 17: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

17Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Netzwerk ModellNetzwerk Modell

Topologie● Knoten● Verbindungen● Positionen in der Ebene

Zeitverhalten● asynchron● synchron

Page 18: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

18Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Asynchrones Zeitverhalten (1)Asynchrones Zeitverhalten (1)

Schritt (step)● nach jedem Ereignis blockiert ein Knoten

Verzögerung (delay)● Nachrichten benötigen Zeit bei der Übertragung

Schritt und Verzögerung ändern sich nach jedem Ereignis● verschiedene Verteilungen + Parameter● gleichmässige, geometrische, Normal- (Gauss),

deterministische Verteilung

Page 19: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

19Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Asynchrones Zeitverhalten (2)Asynchrones Zeitverhalten (2)

Einschränkung● Änderung von Schritt und Verzögerung nur wenn kein

Timer im Knoten läuft (technische Gründe)● scheinbar harte Einschränkung – in der Praxis aber keine

gravierenden Nachteile erkennbar

Page 20: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

20Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Synchrones ZeitverhaltenSynchrones Zeitverhalten

alle lokalen Uhren der Knoten laufen synchron Schritt ist in allen Knoten gleich Verzögerung von Nachrichten ist kleiner oder

gleich dem Schritt

Hauptunterschied zwischen asynchron / synchron● asynchron: Ereignisse bestimmen Systemzeit● synchron: Systemzeit bestimmt Ereignisse

Page 21: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

21Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Rundruf mit BestätigungRundruf mit Bestätigung Initiator

● sendet Anfrage an alle Nachbarn● wartet auf Bestätigungen

Bearbeitung von einer Anfrage● wenn schon bekannt, dann Bestätigung zurücksenden● sonst

Sender als „Parent“ merken an alle Nachbarn ausser „Parent“ Anfrage schicken auf alle ausstehenden Bestätigungen warten Bestätigung an „Parent“ senden

Page 22: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

22Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ZuständeZustände

Sleeping Waiting

Broadcast empfangen

alle ACKs empfangen

Page 23: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

23Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Start von LydianStart von Lydian

Hauptfenster so übersichtlich wie Zustandsdiagramm von Broadcast Protokoll ;-)

Page 24: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

24Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Experimentdialog (1)Experimentdialog (1)

Experiment Protokoll Netzwerk Übertragungsfehler Protokollierung Anzahl der Läufe Visualisierung

Page 25: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

25Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Experimentdialog (2)Experimentdialog (2)

Page 26: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

26Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Experimentdialog (3)Experimentdialog (3)

Page 27: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

27Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Experimentdialog (4)Experimentdialog (4)

Page 28: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

28Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Experimentdialog (5)Experimentdialog (5)

Page 29: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

29Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ASCII Visualisierung (1)ASCII Visualisierung (1)

Page 30: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

30Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ASCII Visualisierung (2)ASCII Visualisierung (2)

t – globale Zeit m – Gesamtanzahl verschickter Nachrichten p – Prozess in dem der aktuelle Schritt stattfindet i – Prozess ID von p

Time: ttt Tot. Mess. Send: mm Cur. Proc: pp Id: ii

Page 31: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

31Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ASCII Visualisierung (3)ASCII Visualisierung (3)

p – Prozess in dem der aktuelle Schritt stattfindet s – alter Zustand e – Ereignis n – neuer Zustand a - Aktion

Proc.: pp [( ssssss ) x ( eeeeee ) -> ( nnnnnnn ) x ( aaaaaa )]

Page 32: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

32Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ASCII Visualisierung (4)ASCII Visualisierung (4) Anzeige

● Prozessnummer / ID● alter Zustand● Ereignis● neuer Zustand● Aktion● protokollspezifische

Zusatzinformationen

Was passiert hier gerade?

Page 33: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

33Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Graphische VisualisierungGraphische Visualisierung

Anzeigen● Hauptfenster● Kausalität● Ereignisse für Prozess● Nachrichtenstatistik● Prozessdauer

Page 34: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

34Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

HauptfensterHauptfenster

„schlafend“

Initiator

wartet noch auf ACKs

fertig

Broadcast

Bestätigung

erster Broadcastan Empfänger

Page 35: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

35Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Ereignisse für ProzessEreignisse für Prozess

erreichbar durch anklicken eines Knotens im Hauptfenster

Page 36: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

36Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

KausalitätKausalität

Pfeilfarbe durch lokalen „Farbzähler“ bestimmt● Startwert bei allen Prozessen 0● wird bei jeder Empfangsoperation um 1 erhöht

Page 37: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

37Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Nachrichtenstatistik (1)Nachrichtenstatistik (1)

Anzahl gesendeter Nachrichten für jeden Prozess

durchschnittliche Anzahl

Nachrichtengrösse

Page 38: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

38Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Nachrichtenstatistik (2)Nachrichtenstatistik (2)

Page 39: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

39Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ProzessdauerProzessdauer

Page 40: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

40Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Protokoll hinzufügenProtokoll hinzufügen

Zustandstabelleaufstellen● Zustände● Ereignisse

Aktionen definieren● für jedes (Ereignis, Zustand) Paar

Aktionen in C umsetzen

Zustand 1 Zustand 2 ... Zustand nEreignis 1Ereignis 2

...Ereignis m

Page 41: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

41Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

ZustandstabelleZustandstabelleSLEEPING WAITING

BRD

ACK (Fehler!)

Durchlauf beendet.

parent := Sender Mit ACK antworten.Wenn keine Nachbarn vorhanden, mit ACK antworten.BRD an alle anderen Nachbarn verschicken.Empfänger in der Menge ack speichern.new_state = WAITING

Sender aus ack entfernen.Wenn ack leer und parent != -1ACK an parent senden.new_state = SLEEPING

Wenn ack leer und parent == -1

Page 42: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

42Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Globale VariablenGlobale Variablen

int processes – Anzahl der Prozesse int TIME – globale Zeit int me – die eigene Prozessnummer int new_state – Zustand den Aktion setzen kann struct CURMESS – aktuelle Nachricht

Page 43: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

43Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Nachrichtenformat (1)Nachrichtenformat (1) System

● time – Zeitpunkt der Auslieferung

● from – Sender (Prozessnummer)

● hops – wie oft weitergeleitet?

● port – Verbindungsnr.● next – nächste

Nachricht in Warteschlange

typedef struct mess { int time; int drsy_time; int kind; int value[10]; long special_field[10]; int from; int hops; int maxhops; int port;

struct mess *next;} MESSAGE;

Page 44: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

44Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Nachrichtenformat (2)Nachrichtenformat (2)

Benutzer● kind – Nachrichtentyp● value, special_field –

Inhalt● maxhops – maximale

Anzahl von „hops“

typedef struct mess { int time; int drsy_time; int kind; int value[10]; long special_field[10]; int from; int hops; int maxhops; int port;

struct mess *next;} MESSAGE;

Page 45: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

45Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Prozess­Kontroll­Block (PCB)Prozess­Kontroll­Block (PCB) Zugriff: PCB[me].state wichtige Felder

● state – Zustand● id – Prozess ID● adjacents – Anzahl der

Nachbarn● loc_clock – lokale Uhr

andere per Funktion erreichbar oder intern vom Simulator verwendet

typedef struct { int state; int id; int adjacents; PORT *adjust; int step_dur[3]; MESSAGE *mes_buf; TIMER clock[5]; int loc_clock; double dr_loc_clock; int wake_time; int sy_init_time; int dpq; double dr_dpq; int step; int cycle; int idle; int init_time;} PCBS;

Page 46: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

46Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Lokale VariablenLokale Variablen

benutzerdefinierte Struktur Zugriff: REG[me].ack Speicheranforderung muss

selbst implementiert werden

typedef struct { int parent; LIST ack;} REGISTERS;

REGISTERS *REG;

void reg_alloc(void) { REG = (REGISTERS*) malloc(processes * sizeof(REGISTERS));}

Page 47: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

47Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Implementation (1)Implementation (1)

Benötigte Funktionen● Speicher für „Register“ anfordern● „Register“ initialisieren (init())● Funktion für jede Zelle in der Zustandstabelle

ausser für leere Zellen und „verbotene“ Zellen● Startfunktion für Knoten, die das Protokoll in Gang

setzen (start()) werden in der Netzwerkbeschreibung bestimmt darf nur 1 Knoten im „Broadcast mit ACK“ sein!

Page 48: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

48Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Implementation (2)Implementation (2)

void init(void) { int i;

for(i=0; i < processes; ++i) { REG[i].parent = -1; init_list(REG[i].ack); }}

Elternknoten auf „undefiniert“ setzen ack-Listen leeren

Page 49: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

49Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Implementation (3)Implementation (3)void sleeping_brd(void) { MESSAGE *mess; int i;

if(PCB[me].adjacents == 1) { mess = create_message(); mess->kind = ACK; send_to(mess, CURMESS->port); } else { REG[me].parent = CURMESS->port; for(i=0; i < PCB[me].adjacents; ++i) { if(i != REG[me].parent) { insert_list(i, REG[me].ack); mess = create_message(); mess->kind = BRD; send_to(mess, i); } } new_state = WAITING; }}

Page 50: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

50Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Implementation (4)Implementation (4)

void waiting_brd(void) { MESSAGE *mess;

mess = create_message(); mess->kind = ACK; send_to(mess, CURMESS->port);}

Page 51: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

51Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Implementation (5)Implementation (5)void waiting_ack(void) { MESSAGE *mess;

delete_list(CURMESS->port, REG[me].ack); if(empty_list(REG[me].ack) == TRUE) { if(REG[me].parent == -1) { /*initiator*/ new_state = SLEEPING; simul_end(); return; } else { /*send ACK to its parent */ mess = create_message(); mess->kind = ACK; send_to(mess, REG[me].parent); new_state = SLEEPING; } }}

Page 52: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

52Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Implementation (6)Implementation (6)

void start(void) { MESSAGE *mess; int i;

if(PCB[me].adjacents == 0) { simul_end(); return; } for(i=0; i < PCB[me].adjacents; ++i) { insert_list(i, REG[me].ack); mess = create_message(); mess->kind = BRD; send_to(mess, i); } new_state = WAITING;}

Page 53: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

53Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Neues Protokoll in Lydian Neues Protokoll in Lydian einbindeneinbinden

Page 54: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

54Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Netzwerke bearbeitenNetzwerke bearbeiten graphischer Editor bei asynchronem

Zeitverhalten angeben:● Art der Verteilung● Parameter pro Knoten

evt. „spontan“ aufwachende Knoten bestimmen

deren „Weckzeit“ angeben

Page 55: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

55Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

VerteilungenVerteilungen Wertebereich 1 bis 100 (ganzzahlig!) gleichmässig

● Parameter: Unter-/Obergrenze

geometrisch● Parameter: Unter-/Obergrenze und Mittelwert

Normalverteilung● Parameter: Obergrenze, Mittelwert und Varianz

deterministisch● Parameter: feste Werte für Schritt und Verzögerung

Page 56: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

56Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

AnimationsprogrammeAnimationsprogramme

objektorientiertes Framework in C++

Animator

View

AnimObject Action

Loc

1..*

1..*

0..*

0..*

Page 57: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

57Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

KlassenKlassen

View● Zeit (in Frames)● Höhe/Breite

in Pixeln internes

Koordinatensystem

AnimObject● Position (Loc)● Sichtbarkeit● Aktionen (Action)

Loc● Position als (x,y)

Koordinaten

Action● Typ● Startzeit (Frame)● „Pfad“● wird an Animations-

objekte gebunden

Page 58: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

58Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

AnimObject – UnterklassenAnimObject – Unterklassen

Line Rectangle Circle Ellipse Polyline Spline

Polygon Pie Text Bitmap

Set

Hello World

Page 59: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

59Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

Action – TypenAction – Typen

MOVE ALTER FILL COLOR VIS RESIZE

GRAB RAISE LOWER ALTER_LL ALTER_UR

Page 60: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

60Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

FazitFazit

positiv● sehr flexibel● Timeouts● Übertragungsfehler● Netzwerke grafisch

bearbeiten● viele Sichten

negativ● Softwaresystem zu

komplex● eingeschränkt portabel● schlechte Trennung von

System- und Benutzer-daten in C-Datenstruk-turen

Page 61: Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung Verteilter Systeme“ - Lydian 41 © 2004 Marc Rintsch  Zustandstabelle

61Seminar „Visualisierung Verteilter Systeme“ - Lydian

© 2004 Marc Rintsch <[email protected]>

DankeDanke