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

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Blue J.
Imperative Programmierung
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Zusammenfassung der Vorwoche
Puck eine visuelle Programmiersprache für die Schule
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
der Universität Oldenburg
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Seminar: Architekturbeschreibungssprachen
Christian Schindelhauer
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele
2 Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele.
Visualisierung funktionaler Programme
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
20:00.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
6.5 Lindas Tupelraum Interaktion von Prozessen über zentralen Umschlagplatz für alle zwischen Prozessen ausgetauschten Daten: Tupelraum (tuple space) (Carriero/Gelernter,
TWS/Graph HORIZONT Produktionsüberwachung für “TWS for z/OS”
Syntaxanalyse Bottom-Up und LR(0)
PROCAM Score Alter (Jahre)
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
PHP: Operatoren und Kontrollstrukturen
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
7. Formale Sprachen und Grammatiken
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
 Präsentation transkript:

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

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

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

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

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

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

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

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

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

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

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

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

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 ?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 wird insbesondere auch der Abschluss von P dem Tupel-Raum des Zielknoten l übergeben Durch die Anweisung wird ausschließlich der Prozess P (zur Ausführung) an der Lokalität l übergeben KLAIM – Auswertung

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

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

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

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

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

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

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

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 := " :9999";

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, within 2000 then #... Ok else #... Zeit abgelaufen endif

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, do out (i + 1, enddo

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, do out (i + 1, enddo

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.

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

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

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

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 end endnodes

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 end nodes hello_sender::{receiver ~ localhost:11000} port begin end endnodes

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

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