• Keine Ergebnisse gefunden

Reaktive Programmierung Vorlesung 16 vom 10.07.2019 Theorie der Nebenläufigkeit

N/A
N/A
Protected

Academic year: 2022

Aktie "Reaktive Programmierung Vorlesung 16 vom 10.07.2019 Theorie der Nebenläufigkeit"

Copied!
18
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Reaktive Programmierung Vorlesung 16 vom 10.07.2019

Theorie der Nebenläufigkeit

Christoph Lüth, Martin Ring

Universität Bremen

Sommersemester 2019

(2)

Fahrplan

I Einführung

I Monaden und Monadentransformer I Nebenläufigkeit: Futures and Promises I Aktoren I: Grundlagen

I Aktoren II: Implementation I Meta-Programmierung

I Bidirektionale Programmierung I Reaktive Ströme I

I Reaktive Ströme II

I Funktional-Reaktive Programmierung I Software Transactional Memory I Eventual Consistency

I Robustheit und Entwurfsmuster I Theorie der Nebenläufigkeit, Abschluss

(3)

Theorie der Nebenläufigkeit

I Nebenläufige Systeme sindkompliziert I Nicht-deterministisches Verhalten I Neue Fehlerquellen wieDeadlocks I Schwer zu testen

I Reaktive Programmierung kann diese Fehlerquelleneinhegen I Theoretische Grundlagenzur Modellierung nebenläufiger Systeme

I zurSpezifikation(CSP)

I aber auch alsBerechnungsmodell(π-Kalkül)

(4)

Temporale Logik, Prozessalgebren und Modelchecking

I Prozessalgebren und temporale Logik beschreibenSystemeanhand ihrerZustandsübergänge

I Ein System ist dabei im wesentlichen eineendliche

ZustandsmaschineM=hS,Σ,→imit Zustandsübergang

→ ⊆S×Σ×S

I Temporale Logiken reden übereine Zustandsmaschine

I Prozessalgebren erlaubenmehrereZustandsmaschinen und ihre Synchronisation

I Der Trick istAbstraktion: mehrere interne Zustandsübergänge werden zu einem Zustandsübergang zusammengefaßt

(5)

Einfache Beispiele

I Einfacher Kaffee-Automat:

P =10ccoffeeP

I Kaffee-Automat mit Auswahl:

P =10ccoffeeP 220clatteP

I Pufferprozess:

COPY=left?xright!xCOPY

NB. Eingabe (c?x) und Ausgabe (c!x) sindreine Konvention.

(6)

CSP: Syntax

Gegeben Prozeßalphabet Σ, besondere Ereignisse X, τ

P ::=Stop|aPP.F(P) fundamentale Operationen

|P

2

Q|P

u

Q externe und interne Auswahl

|P kQ |P k

X

Q synchronisiert parallel

|P

|||

Q unsynchronisiert parallel

|P \X hiding

|Skip |P; Q sequentielle Komposition

(7)

Externe vs. interne Auswahl

I Interne Zustandsübergänge (τ) sind nicht beobachtbar, aber können Effekte haben.

I Vergleiche:

abStop

2

ac Stop

abStop

u

acStop a→(b →Stop

2

c Stop)

a→(b →Stop

u

c Stop)

(8)

Beispiel: ein Flugbuchungssystem

I Operationen des Servers:

I Nimmt Anfragen an, schickt Resultate (mit flid)

I Nimmt Buchungsanfragen an, schickt Bestätigung (ok) oder Fehler (fail) I Nimmt Stornierung an, schickt Bestätigung

I Unterschied zwischeninterner Auswahl

u

(Server trifft Entscheidung), undexternerAuswahl

2

(Server reagiert) SERVER= query?(from,to)result!flid →SERVER

2

booking?flid (ok SERVER

u

failSERVER)

2

cancel?flid ok SERVER

Eingabe (c?x) und Ausgabe (c!a) sind reine Konvention

(9)

Beispiel: ein Flugbuchungssystem

I Operationen des Servers:

I Nimmt Anfragen an, schickt Resultate (mit flid)

I Nimmt Buchungsanfragen an, schickt Bestätigung (ok) oder Fehler (fail) I Nimmt Stornierung an, schickt Bestätigung

I Unterschied zwischeninterner Auswahl

u

(Server trifft Entscheidung), undexternerAuswahl

2

(Server reagiert)

SERVER = queryresultSERVER

2

booking (ok SERVER

u

failSERVER)

2

cancel ok SERVER

Eingabe (c?x) und Ausgabe (c!a) sind reine Konvention

(10)

Beispiel: ein Flugbuchungssystem

I Der Client:

I Stellt Anfrage

I wenn der Flug richtig ist, wird er gebucht;

I oder es wird eine neue Anfrage gestellt.

CLIENT =queryresult

(booking → okCLIENT

u

CLIENT)

I Das Gesamtsystem — Client und Serversynchronisiert:

SYSTEM =CLIENT

k

SERVER

I Problem:Deadlock

I Es gibtWerkzeuge(Modelchecker, z.B. FDR), um solche Deadlocks in Spezifikationen zu finden

(11)

Beispiel: ein Flugbuchungssystem

I Der Client:

I Stellt Anfrage

I wenn der Flug richtig ist, wird er gebucht;

I oder es wird eine neue Anfrage gestellt.

CLIENT =queryresult

(booking → okCLIENT

u

CLIENT)

I Das Gesamtsystem — Client und Serversynchronisiert:

SYSTEM =CLIENT

k

SERVER

I Problem:Deadlock

I Es gibtWerkzeuge(Modelchecker, z.B. FDR), um solche Deadlocks in Spezifikationen zu finden

(12)

Beispiel: ein Flugbuchungssystem

I Der Client:

I Stellt Anfrage

I wenn der Flug richtig ist, wird er gebucht;

I oder es wird eine neue Anfrage gestellt.

CLIENT =queryresult

(booking → (ok →CLIENT

2

failCLIENT)

u

CLIENT)

I Das Gesamtsystem — Client und Serversynchronisiert:

SYSTEM =CLIENT

k

SERVER

I Problem:Deadlock

I Es gibtWerkzeuge(Modelchecker, z.B. FDR), um solche Deadlocks in Spezifikationen zu finden

(13)

Ziele der Semantik von Prozesskalkülen

I Reasoning about processes by their external behaviour

I Untersuchung von

I Verfeinerung (Implementation) I deadlock:Keine Transition möglich I livelock:Divergenz

I Grundlegender Begriff:Äquivalenz (Gleichheit) von Prozessen

(14)

Operationale Semantik für CSP (I)

Definition: Labelled Transition System (LTS)

Ein labelled transition system (LTS) istL= (N,A,→) mit MengeN der Knoten (Zustände), MengeA von Labels und Relation

{→ ⊆a N×N}a∈A von Kanten (Zustandsübergänge).

Hier: N=P,A= ΣS

{X, τ},→ definiert wie folgt:

ePa P[a/e] acomms(e)

P uQτ P P uQτ Q

(15)

Operationale Semantik für CSP (II)

Pτ P0 P 2Qτ P0 2Q

Qτ Q0 P 2Qτ P 2Q0 Pa P0

P 2Qa P0 a6=τ Qa Q0

P 2Qa Q0 a6=τ Px P0

P \Bτ P0 xB Px P0

P \Bx P0\B x 6∈B

(16)

Operationale Semantik für CSP (III)

Pτ P0 P k

X

Qτ P0 k

X

Q

Qτ Q0 P k

X

Qτ P k

X

Q0 Pa P0

P k

X

Qa P0 k

X

Q a6∈X Qa Q0 P k

X

Qa P k

X

Q0 a6∈X Pa P0 Qa Q0

P k

X

Qa P0 k

X

Q0 aX

(17)

Denotationale Semantik für CSP

I OperationaleSemantik erklärt dasVerhalten, erlaubt kein Reasoning

I DenotationaleSemantik erlaubt Abstraktionüber dem Verhalten I Für CSP: Denotat eines Prozesses ist:

I die Menge aller seinerTraces

I die Menge seinerTracesundAcceptance-Mengen

I die Menge seinerTracesund seinerFailure/Divergence-Mengen

(18)

Anwendungsgebiete für CSP

I Modellierung nebenläufiger Systeme (Bsp: ISS)

I Verteilte Systeme und verteilte Daten

I Analyse von Krypto-Protokollen

I Hautpwerkzeug: der ModellcheckerFDR

I http://www.cs.ox.ac.uk/projects/fdr/

Referenzen

ÄHNLICHE DOKUMENTE

I Dynamische Tests führen das Programm unter kontrollierten Bedingungen aus, und prüfen das Ergebnis gegen eine gegebene Spezifikation. I Zentrale Frage: wo kommen die

I Systeme sind eingebettet, nebenläufig, reagieren auf ihre Umwelt.... Warum

I Cold Observables fangen erst an Werte zu produzieren, wenn man ihnen zuhört.. Für jeden Observer

[r]

I Promises sind das Gegenstück zu Futures trait Promise {. def complete(result: Try[T]) def

I Werte vom Typ IO (Aktionen) können kombiniert werden wie alle anderen. I

I Aber: zentrales Konzept sind unendliche Listen (Ströme) mit nicht-strikte Auswertung. I Implementation mit Scala-Listen

[r]