Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Global Computing Seminar WS 2005/2006 Lehrstuhl für Informatik II Prof. Dr.-Ir. J.-P. Katoen Softwaremodellierung und Verifikation Ahornstr. 55 - 52074.

Ähnliche Präsentationen


Präsentation zum Thema: "Global Computing Seminar WS 2005/2006 Lehrstuhl für Informatik II Prof. Dr.-Ir. J.-P. Katoen Softwaremodellierung und Verifikation Ahornstr. 55 - 52074."—  Präsentation transkript:

1 Global Computing Seminar WS 2005/2006 Lehrstuhl für Informatik II Prof. Dr.-Ir. J.-P. Katoen Softwaremodellierung und Verifikation Ahornstr. 55 - 52074 Aachen Klaim / X-Klaim Lutz Franzkowiak 219 447 Thomas Mock 219 538 Betreut von Professor J.-P. Katoen

2 Klaim / X-Klaim 2/54 Lutz Franzkowiak / Thomas Mock Motivation / Einleitung LINDA KLAIM (als Erweiterung von LINDA) X-KLAIM (KLAIM in Java, Erweiterung von KLAIM) Zusammenfassung Gliederung des Vortrages

3 Klaim / X-Klaim 3/54 Lutz Franzkowiak / Thomas Mock Technologischer Fortschritt in Bereichen Telekommunikation und Computertechnik immer stärkere und schnellere Vernetzung von Computersystemen Vermehrte Verbreitung von global computers = Rechnernetzwerke, welche Dynamisch rekonfigurierbar sind, Aus vielen teilweise mobilen Komponenten bestehen, und Auf Basis von unvollständigen Informationen arbeiten können Beispiel : Internet (WWW) Motivation / Einleitung

4 Klaim / X-Klaim 4/54 Lutz Franzkowiak / Thomas Mock Bedingungen bzw. Anforderungen für Anwendungen : Skalierbarkeit: große Anzahl von Benutzern und Netzwerkknoten Heterogenität: Verschiedene Betriebssysteme und Anwendungen müssen untereinander kommunizieren Autonomie: Unabhängige Verwaltung von Subnetzwerken Adaptierbarkeit: Auf unvorhersehbare Änderungen muss reagiert werden können Mobilität: Prozesse, Code und Daten müssen innerhalb des Netzwerkes verschiebbar sein Motivation / Einleitung

5 Klaim / X-Klaim 5/54 Lutz Franzkowiak / Thomas Mock Entwicklung von Kalkülen und Kernel Sprachen Hier: KLAIM X-KLAIM (als Erweiterung von KLAIM) Entwicklung dieser Programmiersprachen wurde v.a. beeinflußt durch Prozess-Algebren Calculus) und das Koordinationsmodell LINDA Motivation / Einleitung

6 Klaim / X-Klaim 6/54 Lutz Franzkowiak / Thomas Mock LINDA ist keine Programmiersprache Koordinationsmodell, stellt Operationen zur Erzeugung (und Verwaltung) von Prozessen bereit (asynchrone) Kommunikation unter Prozessen einer verteilten Anwendung Diese lassen sich unter traditionellen Programmiersprachen (etwa C, C++) einbetten Entstehung von neuen parallelen Programmiersprachen wie C-LINDA LINDA

7 Klaim / X-Klaim 7/54 Lutz Franzkowiak / Thomas Mock Koordination mittels eines globalen Speicherbereiches: Tupel-Space Interaktion von Prozessen durch Ablage (out-Operation), und Entnahme (in-Operation) von Daten TUPEL - SPACE

8 Klaim / X-Klaim 8/54 Lutz Franzkowiak / Thomas Mock Enthält eine beliebige, ungeordnete Anzahl von Tupeln (als atomare Einheiten des Speicherbereiches) Tupel = geordnete Reihe bzw. Liste von typisierten Feldern (z.B. (p, 5, false) ) Zwei Arten von Feldern: Actual fields (z.B. Konstanten, Prozesse oder Ausdrücke) Formal fields (z.B. Variablen: !identifier) Das erste Feld enthält üblicherweise einen logischen Bezeichner bzw. Namen zur Identifikation des Tupels NICHT notwendigerweise eindeutig TUPEL - SPACE

9 Klaim / X-Klaim 9/54 Lutz Franzkowiak / Thomas Mock Tupel-Space besitzt Eigenschaften eines Assoziativspeichers Zugriff auf die gespeicherten Daten über einen Werte- bzw. Strukturvergleich: pattern matching Zwei Tupel bilden ein matching, wenn Sie die gleiche Anzahl an Feldern besitzen, und Die entsprechenden Feldern denselben Typ besitzen Wenn matching – Vorgang erfolgreich, so wird eine (passende) Substitution für die formalen Parameterwerte gewonnen PATTERN-MATCHING

10 Klaim / X-Klaim 10/54 Lutz Franzkowiak / Thomas Mock In(s): wird benutzt, um eine Datentupel aus dem Speicher zu konsumieren Auswahl durch pattern-matching mit Template s Read(s): entspricht der Operation In(s), aber: ausgelesenes Datentupel bleibt weiterhin im globalen Speicher Out(t): Ablage von Datentupeln (Übergabe der Felder als Parameterwerte t) Eval(t): ähnlich wie Out(t), aber: Tupel können neben Datenfeldern auch einen Prozess als Komponente enthalten (aktive Tupel) Abspaltung von neuen Prozessen, welche nach Ausführung in Datentupel übergehen OPERATIONEN

11 Klaim / X-Klaim 11/54 Lutz Franzkowiak / Thomas Mock Kein direkter Datenaustausch zwischen Prozessen Sondern: Interprozesskommunikation über gemeinsam genutzten globalen Speicherbereich (Tupel-Space) Durch den sogenannten Sender wird eine Nachricht generiert, und in den Speicher geschrieben Wird unabhängig vom erzeugenden Prozess im Speicher gehalten, bis ein Empfänger-Prozess die Nachricht ausliest GENERATIVE KOMMUNIKATION

12 Klaim / X-Klaim 12/54 Lutz Franzkowiak / Thomas Mock Zeitliche Entkopplung (time uncoupling): Ablage von Datentupeln erfolgt asynchron, dh unabhängig von Empfangsbereitschaft anderer Prozesse Zwei Prozesse müssen nicht zur gleichen Zeit aktiv sein Räumliche Entkopplung (space uncoupling): Zur Ablage von Daten werden keine Infos über Identität oder Allokation von Empfängerprozessen benötigt Entkopplung des Ziels (destination uncoupling): Kommunikation ist asynchron und anonym Sender muss keine Kenntnis über Empfänger oder Gebrauch von Daten besitzen GENERATIVE KOMMUNIKATION

13 Klaim / X-Klaim 13/54 Lutz Franzkowiak / Thomas Mock Nachteile von LINDA: unzureichende Skalierbarkeit und Modularität Datentupel aus unterschiedlichen Kontexten können vermischt werden Keine restriktiven Speicherbereiche, auf welche nur ausgewählte Untermengen von Prozessen zugreifen können KLAIM als Erweiterung von LINDA, u.a. mehrere verteilte Tupel- Spaces Vorgehen: Einführen von Prozesskalkülen steigender Komplexität, welche schrittweise um bestimmte Eigenschaften von KLAIM erweitert werden Warum KLAIM ?

14 Klaim / X-Klaim 14/54 Lutz Franzkowiak / Thomas Mock cKLAIM (coreKLAIM) als Varianate des -Calculus Prozess-Mobilität Asynchrone Kommunikation Lokalitäten (anstelle von kanalbasierter Kommunikation) cKLAIM

15 Klaim / X-Klaim 15/54 Lutz Franzkowiak / Thomas Mock Netz = endliche Menge von Knoten (nodes) Knoten = geordnetes Paar l::C l: enthält die Adresse l einer Lokalität C: parallele Komponente an der Lokalität l : Prozesse oder Daten Restriktion: durch die Notation ( l)N wird der Gültigkeitsbereich der Lokalität l auf N eingeschränkt (analog zur Restriktion unter Calculus) cKLAIM - Syntax

16 Klaim / X-Klaim 16/54 Lutz Franzkowiak / Thomas Mock Ein Prozess P kann aus dem Nullprozess nil, und mittels vier Aktionen aufgebaut werden Aktions-Praefixe Parallele Komposition Rekursion cKLAIM - Syntax

17 Klaim / X-Klaim 17/54 Lutz Franzkowiak / Thomas Mock Aktionen: weitgehend analog zu LINDA out: Ablage von Daten eval: Erzeugung von neuen Prozessen in: Entnahme von Daten newloc: Generierung von neuen Knoten Übergabe einer Lokalität l als Parameter cKLAIM - Syntax

18 Klaim / X-Klaim 18/54 Lutz Franzkowiak / Thomas Mock Zwei Netze N1 und N2 sind struktuell kongruent, wenn diese intuitiv dasselbe Netz beschreiben – Notation: N1 N2 Regeln entsprechen weitgehend analogen Regeln aus der Beschreibung des -Calculus cKLAIM – Struktuelle Kongruenz

19 Klaim / X-Klaim 19/54 Lutz Franzkowiak / Thomas Mock Abgeschlossenheit bzgl. Kommutativität (COM) und Assoziativität (ASSOC) für Komposition von Netzen Neutralität des Nullprozesses bzgl. paralleler Komposition (ABS) Prozessvariablen können durch ihre entsprechende Definition ersetzt werden (PRINV) Parallelität von Komponenten (Prozessen) lässt sich zu Parallelität bezüglich Knoten transformieren (CLONE) cKLAIM – Struktuelle Kongruenz

20 Klaim / X-Klaim 20/54 Lutz Franzkowiak / Thomas Mock Durch die Reduktions-Relation wird das Verhalten von Prozessen beschrieben z.B. (NEW): durch die Anweisung new(l) wird lediglich eine Restriktion bzgl. l dem Netz hinzugefügt cKLAIM – Operationale Semantik

21 Klaim / X-Klaim 21/54 Lutz Franzkowiak / Thomas Mock (PAR): eine Reduktionsschritt bezüglich eines Teilnetzes ist entsprechend auf das gesamte Netz zu übertragen (STRUCT): auf zwei Netze, welche struktuell kongruent sind, lassen sich dieselben Reduktionsschritte anwenden cKLAIM – Operationale Semantik

22 Klaim / X-Klaim 22/54 Lutz Franzkowiak / Thomas Mock KLAIM (microKLAIM) als Erweiterung von cKLAIM, insbesondere um weitere Eigenschaften von LINDA : Tupel-Räume Pattern-matching KLAIM

23 Klaim / X-Klaim 23/54 Lutz Franzkowiak / Thomas Mock Aktive Elemente der Kommunikation (Argumente von out) werden als Tupel bezeichnet Tupel = Folge von actual fields (Ausdrücke, Lokalitäten oder Lokalitäts-Variablen) KLAIM - Syntax

24 Klaim / X-Klaim 24/54 Lutz Franzkowiak / Thomas Mock Durch die Menge der gespeicherten Tupel wird der Tupel-Space eines Knoten bestimmt Auswahl von Tupeln (analog zu LINDA) über patterns (bzw. Templates) – bestehen aus formal und actual fields KLAIM - Syntax

25 Klaim / X-Klaim 25/54 Lutz Franzkowiak / Thomas Mock Templates T müssen zunächst ausgewertet werden, bevor sie zur Auswahl von Tupeln eingesetzt werden können Berechnung aller Werte von enthaltenen Ausdrücken Templates, welche Variablen in actual fields enthalten, können NICHT ausgewertet werden Notation: [T] KLAIM - Syntax

26 Klaim / X-Klaim 26/54 Lutz Franzkowiak / Thomas Mock Zusätzliche Aktion read(T)@l : Auslesen von Tupeln, ohne diese aus dem Tupel-Space zu entfernen (analog zu LINDA) KLAIM - Syntax

27 Klaim / X-Klaim 27/54 Lutz Franzkowiak / Thomas Mock Regeln für pattern-matching werden analog zu LINDA formuliert Ein Tupel bildet ein matching zu einem Template, wenn diese dieselbe Anzahl an Feldern enthalten, und die entsprechenden Felder denselben Typ besitzen Wenn der matching-Vorgang erfolgreich ist, so wird eine Substitution für die formalen Parameterwerte in T gewonnen KLAIM - Semantik

28 Klaim / X-Klaim 28/54 Lutz Franzkowiak / Thomas Mock Definition für struktuelle Kongruenz wird von cKlaim übernommen Abweichungen für die Reduktions-Relation (vgl. oben): (OUT): ein Tupel, welches sich aus der Auswertung von t ergibt, wird wird dem Tupel-Space an l hinzugefügt (IN): zusätzliche Bedingung: Template T muss auswertbar sein (READ): für neue Operation read – entspricht der Regel (IN), nur: ausgelesenes Tupel verbleibt im Tupel-Space des Zielknotens KLAIM - Semantik

29 Klaim / X-Klaim 29/54 Lutz Franzkowiak / Thomas Mock KLAIM als Erweiterung von LINDA: Higher-order Kommunikation: Tupel können Prozesse als Komponenten enthalten Allocation environments Logische und physikalische Lokalitäten KLAIM

30 Klaim / X-Klaim 30/54 Lutz Franzkowiak / Thomas Mock Netz = parallele Komposition von Knoten (nodes) Ein Knoten enthält einen Tupel-Raum, und eine endliche Menge von Prozessen Zugriff auf Knoten über Lokalitäten: Physikalische Lokalitäten = Bezeichner, welche einen Knoten eindeutig identifizieren (z.B. Netzwerk-Adresse) absolute Bedeutung Logische Lokalitäten = symbolische (Alias)-Namen für Knoten (mit relativer Bedeutung bzgl. Knoten) Reservierte Lokalität: self ermöglicht es Prozessen, auf den Knoten zuzugreifen, auf denen sie gerade ausgeführt werden KLAIM - Syntax

31 Klaim / X-Klaim 31/54 Lutz Franzkowiak / Thomas Mock Knoten werden dargestellt als Tripel der Form: s 1 :: P s 1 = physikalische Lokalität P = Menge der Prozesse = allocation environment = partielle Abbildung aus der Menge der logischen Lokalitäten in die Menge der physikalischen Lokalitäten Insbesondere gilt: (self) = s 1 (entsprechend für JEDEN Knoten) KLAIM - Knoten

32 Klaim / X-Klaim 32/54 Lutz Franzkowiak / Thomas Mock KLAIM - Netz

33 Klaim / X-Klaim 33/54 Lutz Franzkowiak / Thomas Mock Definition für struktuelle Kongruenz wird (mit leichten Anpassungen) übernommen Reduktionsregeln: siehe Abbildung KLAIM - Semantik

34 Klaim / X-Klaim 34/54 Lutz Franzkowiak / Thomas Mock (NEW): wird durch neue Regel ersetzt allocation environment für einen neuen Knoten ist vom erzeugenden Knoten abzuleiten Ausnahme: Belegung für reservierte Variable self verweist auf den neu erzeugten Knoten Mittels dieser Anweisung können private Knoten erzeugt werden: Die physikalische Lokalität l eines neuen Knotens ist zunächst nur dem erzeugenden Knoten bekannt Dh. ein Prozess von ausserhalb kann nur auf diesen Knoten zugreifen, wenn er die Lokalität des neuen Knotens vom Erzeuger mitgeteilt bekommt (z.B. durch Zugriff auf allocation environment) KLAIM - Semantik

35 Klaim / X-Klaim 35/54 Lutz Franzkowiak / Thomas Mock Bei der Auswertung von Tupeln werden Ausdrücke berechnet, und logische Lokalitäten werden auf physikalische Lokalitäten abgebildet Auswertung von Prozessen = Substitution mit Abschluss Abschluss = P{ } (Prozess zusammen mit Allokation von Lokalitäten) Hieraus ergibt sich ein Unterschied zwischen out und eval : Durch die Anweisung out(P)@l wird insbesondere auch der Abschluss von P dem Tupel-Raum des Zielknoten l übergeben Durch die Anweisung eval(P)@l wird ausschließlich der Prozess P (zur Ausführung) an der Lokalität l übergeben KLAIM – Auswertung

36 Klaim / X-Klaim 36/54 Lutz Franzkowiak / Thomas Mock KLAIM – Static Scoping Strategy

37 Klaim / X-Klaim 37/54 Lutz Franzkowiak / Thomas Mock KLAIM – Dynamic Scoping Strategy

38 Klaim / X-Klaim 38/54 Lutz Franzkowiak / Thomas Mock Einleitung Grundlagen Implementierung Beispiel eines Hello World-Programms X-Klaim : Gliederung

39 Klaim / X-Klaim 39/54 Lutz Franzkowiak / Thomas Mock Was ist X-Klaim? X-Klaim = eXtended-Klaim Programmiersprache für verteilte Systeme Erweiterung von Klaim Klaim wird erweitert um: High-Level Syntax für Prozesse Variabeldeklarationen erweiterte Operationen und Anweisungen (inp, readp) objekt-orientierte Fähigkeiten Funktionen zur sequentiellen und iterativen Programmierung

40 Klaim / X-Klaim 40/54 Lutz Franzkowiak / Thomas Mock Syntax Angelehnt an PASCAL Codeblöcke werden von begin und end eingeschlossen Semikolon ; als Befehlstrennung nicht als Befehlsabschluss case-sensitive bei Schlüsselwörtern nicht case-sensitive bei Namen von z.B. Prozessen oder Variabeln Kommentare beginnen mit # enden immer am Zeilenende begin instr1 ; instr2 end # syntaktisch korrekt begin instr1 ; instr2 ; end # syntaktisch falsch

41 Klaim / X-Klaim 41/54 Lutz Franzkowiak / Thomas Mock Ein einfacher Prozess Beginnt mit den Schlüsselwort rec der Name des Prozesses die Parameterliste [ ] der Codeblock rec HelloProc [ param1 : paramtype,# call by value param2 : ref paramtype # call by ref ] begin #...Befehle end

42 Klaim / X-Klaim 42/54 Lutz Franzkowiak / Thomas Mock lokale Variabeln Schlüsselwort: declare Syntax: var name : type const name Standardtypen: int, str, bool Der Typ einer Konstanten wird vom Compiler bestimmt. rec HelloProc [ ] declare var serverName : str begin #...Befehle end

43 Klaim / X-Klaim 43/54 Lutz Franzkowiak / Thomas Mock Lokalitäten logische Lokalitäten Typ: logloc besteht nur aus einem String physikalische Lokalitäten Typ: phyloc String der Form: IP:Port Obertyp: loc var l : loc ; var output : logloc ; var server : phyloc ; output := "screen"; server := "192.168.100.200:9999";

44 Klaim / X-Klaim 44/54 Lutz Franzkowiak / Thomas Mock Operationen readp und inp nicht blockierende Versionen arbeiten wie read und in liefern false zurück, wenn kein Tupel gefunden wurde Timeout-Funktion within if in (!x, !y)@l within 2000 then #... Ok else #... Zeit abgelaufen endif

45 Klaim / X-Klaim 45/54 Lutz Franzkowiak / Thomas Mock Iterationen unendliche Schleife kann entstehen da immer das gleiche Tupel im Tupel-Space gefunden wird inp ist keine Lösung, da Zerstörungen des Tupel-Space nicht immer gewollt ist und dann ein Wiedereinfügen nötig wäre while readp (!i, !s)@self do out (i + 1, s)@l enddo

46 Klaim / X-Klaim 46/54 Lutz Franzkowiak / Thomas Mock Iterationen forall liefert jedes Tupel nur genau einmal zurück forall blockiert den Tupel-Space nicht Änderungen am TS beeinflussen Ergebnis Quelle:{(10, String1), (10, String1), (20, String2)} Ziel:{(11, String1), (11, String1), (21, String2)} forall readp (!i, !s)@self do out (i + 1, s)@l enddo

47 Klaim / X-Klaim 47/54 Lutz Franzkowiak / Thomas Mock Arten von Mobilität weak mobility Code, der sich an einer anderen Lokalität befindet, kann dynamisch gelinkt werden. strong mobility Ein Prozess kann seinen Code und seinen aktuellen Zustand zu einer anderen Lokalität verschieben und dort weiter ausführen lassen. full mobility Das gesamte Programm wird an eine andere Lokalität verschoben, inklusive aller Stacks, Namesräume und sämtlicher Ressourcen.

48 Klaim / X-Klaim 48/54 Lutz Franzkowiak / Thomas Mock Mobilität von Prozessen eval (P)@l startet Prozess P auf dem Knoten der Lokalität l eval( P("string1", 10) )@loc eval( in(!i)@self; out(i)@loc2 )@loc Strong Mobility wird durch die Funktion go @l unterstützt in (!i, !j)@self go @loc out (i, j)@self

49 Klaim / X-Klaim 49/54 Lutz Franzkowiak / Thomas Mock Nodes Knoten sind die Ausführungsbasis Deklaration zwischen nodes und endnotes Knoten werden definiert durch: Name Umgebung lokale Prozesse weitere Optionen wie z.B. den Port des Knoten

50 Klaim / X-Klaim 50/54 Lutz Franzkowiak / Thomas Mock Hello World Hello World- Programm auf einen Knoten nodes hello_world::{} begin print "Hallo Welt!" end endnodes

51 Klaim / X-Klaim 51/54 Lutz Franzkowiak / Thomas Mock Hello World Hello World- Programm auf einem Knoten mit Ausgabe durch einen weiteren Prozess rec HelloProc[] begin print "Hallo Welt!" end nodes hello_world2::{} begin eval(HelloProc())@self end endnodes

52 Klaim / X-Klaim 52/54 Lutz Franzkowiak / Thomas Mock Hello World Hello World- Programm mit einem Sender- und einem Empfänger- Knoten rec HelloSenderProc[ dest : loc ] begin out("Hello World!")@dest end nodes hello_sender::{receiver ~ localhost:11000} port 10000 begin eval(HelloSenderProc(receiver))@self end endnodes

53 Klaim / X-Klaim 53/54 Lutz Franzkowiak / Thomas Mock Hello World Der Empfänger-Knoten nodes hello_receiver::{} port 11000 declare var msg:str begin in(!msg)@self print "received: " + msg end endnodes

54 Klaim / X-Klaim 54/54 Lutz Franzkowiak / Thomas Mock Programmiersprache für verteilte Systeme Syntax ähnlich der von PASCAL Prozesse erstellen Variabeln anlegen Lokalitäten anlegen Knoten erzeugen Bewegen von Prozessen zwischen Knoten Beispiel eine Programm auf einem und auf mehreren Knoten Implementierung unter Java im Package KLava Zusammenfassung


Herunterladen ppt "Global Computing Seminar WS 2005/2006 Lehrstuhl für Informatik II Prof. Dr.-Ir. J.-P. Katoen Softwaremodellierung und Verifikation Ahornstr. 55 - 52074."

Ähnliche Präsentationen


Google-Anzeigen