vs4

Werbung
4 Verteilte Algorithmen
vs4
1
Prozesse als Systemkomponenten:
 Spezifikation eines Prozesses ? (Vgl. Spezifikation eines ADT)
syntaktisch:
z.B. Ports oder Parameter vom Typ „Prozeß“
semantisch:
Ein/Ausgabeverhalten
 Unterschiedliche Arten von Beziehungen zwischen Prozessen –
„Interaktionsparadigmen“, „Architekturstile“
(Prozesse spielen Rollen in diesen Beziehungen)
 Datenfluß-Architektur
 Client/Server-Architektur
 Verteilter Algorithmus
vs4
2
Datenfluß-Architektur (dataflow architecture, „pipes and filters“)
keine ausgezeichneten Rollen
z.B. Unix Pipeline:
grep pat
sort
lpr
oder Datenflußmaschine:
+
*
vs4
3
Client/Server-Architektur
Rollen: Auftraggeber (Klient) und Auftragnehmer (Server)
z.B. so:
lpr file
grep pat file
print server
file server
vs4
mail server
4
Def.: Verteilter Algorithmus
Prozesse kooperieren zwecks Erreichung eines gemeinsamen Ziels
 in verschiedenen oder gleichen Rollen,
mit bestimmten, vereinbarten Interaktionsmustern, „Protokollen“
 Häufig Fehlertoleranz bei unzuverlässigen Prozessen
oder unzuverlässiger Kommunikation
 Gerne in Pseudocode formuliert,
mit prozessbezogener Adressierung
vs4
5
z.B.
zuverlässige unidirektionale Nachrichtenübertragung über
unzuverlässigen bidirektionalen Kanal: Kommunikationsprotokoll
Daten
Sender
Empfänger
Quittungen
oder
Einigung auf „Anführer“: Auswahlprotokoll
vs4
6
4.1 Zeit und Kausalität
Zur Erinnerung:
Charakteristika eines verteilten Systems:
 es gibt keinen gemeinsamen Speicher
 es gibt keine globale Zeit
 absolute Zeit interessiert wenig
 aber: relative Zeitpunkte einzelner Ereignisse
können wichtig sein
(z.B. „push vor pop - oder pop vor push?“ )
vs4
7
4.1.1 Kausale Ordnung von Ereignissen
Def.: Ereignis (event)
local - prozessinterne Aktion (z.B. „Zuweisung an Variable x“)
send - Senden einer Nachricht (Ausführung von send)
recv - Empfangen einer Nachricht (Ausführung von recv)
 Prozesse werden als sequentiell vorausgesetzt
 Dienstgüte des Nachrichtensystems bleibt zunächst offen
Ereignismenge, nicht näher spezifiziert:
vs4
E
8
Def.: Kausale Abhängigkeit
Zwei Ereignisse a,b  E stehen in der Beziehung a  b
(„a vor b“, „a happened before b“, „b ist kausal abhängig von a“)
zueinander, wenn gilt:
entweder
1) a und b gehören zum selben Prozess
und geschehen in dieser Reihenfolge
oder
2) a ist das Senden einer Nachricht,
b ist das Empfangen dieser Nachricht
oder
3) es gibt ein Ereignis c mit a  c und c  b
(Transitivität von )
vs4
9
Bemerkung:
Die Relation „gleich oder vor“
ist partielle Ordnung auf E: Kausalordnung
Def.: Zwei Ereignisse a,b sind voneinander unabhängig
(auch nebenläufig, concurrent, causally unrelated), wenn
weder a  b noch b  a
vs4
10
Veranschaulichung der partiellen Ordnung durch Zeitdiagramm
(ähnlich dem Hasse-Diagramm für partielle Ordnungen)
Zeit
a
c
z.B.
x
b
d
ace
bde
ch!
e
f
g
i
nicht
y
ad, gj !
Aus x  b , d  y folgt,
daß die beiden Nachrichten
h
j
nicht FIFO übertragen wurden!
vs4
11
Nochmals zur Dienstgüte des Nachrichtensystems:
Reihenfolgetreue (FCFS, FIFO) bei Sender/Empfänger-Paar:
gegebenenfalls erzwingen mit
Durchnumerieren der Nachrichten
0
1
0
1
2
2
Kausalitätstreue bei mehreren Beteiligten:
a wird vor c gesendet,
also auch vor c empfangen
a
b
c
wie erzwingen ?
vs4
12
4.1.2 Logische Uhren
in Anlehnung an die Kausalitätsbeziehung
Ziel:
Jedem Ereignis e  E wird eine „Zeit“ C(e)  T zugeordnet.
Die Zeiten sind partiell geordnet, und die Ordnung sollte
isomorph zur Kausalordnung sein:
(E, )  (T, )
Die Abbildung C: E  T heißt logische Uhr.
vs4
13
1. Versuch:
Skalare Zeit
[Lamport 1978]
T = natürliche Zahlen
(totale Ordnung - daher zum Scheitern verurteilt)
Jeder Prozess
- führt in einer lokalen Uhr eine lokale Zeit c (anfangs 0)
- versieht jede versendete Nachricht mit Zeitstempel (timestamp) t = c.
 Vor jedem Ereignis wird c um 1 erhöht.
 Nach recv mit Zeitstempel t wird c auf max(c,t+1) gesetzt.
vs4
14
Für beliebige Ereignisse a,b  E gilt
a  b  C(a)  C(b) ,
aber nicht die Umkehrung!
Auch gilt zwar
C(a) = C(b)   (a  b  b  a) ,
aber nicht
C(a) = C(b)  a = b
Bemerkung:
Hängt man an die Skalarzeit die Prozessnummer an,
so kann man die Ereignisse gemäß dieser Kennung
linear anordnen – verträglich mit ihrer Kausalordnung
(„topologisches Sortieren“).
vs4
15
2. Versuch:
Vektorzeit [Fidge, Mattern 1988]
T = n-Tupel natürlicher Zahlen (bei n Prozessen 1,..,n)
t  s : ti  si für alle i=1,..,n
 Halbordnung !
Jeder Prozess p
- führt in einer lokalen Uhr eine lokale Vektorzeit c (anfangs (0,0,..) ),
- versieht jede versendete Nachricht mit Zeitstempel t = c.

Vor jedem Ereignis wird cp um 1 erhöht.

Nach recv mit Zeitstempel t werden für alle i=1,..,n
die ci auf max(ci,ti) gesetzt.
vs4
16
Mit der Vektorzeit C erreichen wir die gewünschte Isomorphie:
(E, )  (T, )
vs4
17
Herunterladen