Title: PowerPoint-Pr
14 Verteilte Algorithmen
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
2Datenfluß-Architektur (dataflow architecture,
pipes and filters) keine ausgezeichneten
Rollen
z.B. Unix Pipeline
grep pat
lpr
sort
oder Datenflußmaschine
-
3Client/Server-Architektur Rollen
Auftraggeber (Klient) und Auftragnehmer (Server)
lpr file
grep pat file
print server
file server
mail server
4Verteilter Algorithmus Prozesse kooperieren
zwecks Erreichung eines gemeinsamen Ziels - in
verschiedenen oder gleichen Rollen, - mit
bestimmten, vereinbarten Interaktionsmustern
(Protokollen)
z.B. zuverlässige unidirektionale
Nachrichtenübertragung über unzuverlässigen
bidirektionalen Kanal Kommunikationsprotokoll
Daten
Sender
Empfänger
Quittungen
oder Einigung auf Anführer Auswahlprotokoll
5Def. Verteilter Algorithmus ? Prozesse
kooperieren zwecks Erreichung eines
gemeinsamen Ziels ? Häufig Fehlertoleranz bei
unzuverlässigen Prozessen oder
unzuverlässiger Interprozeßkommunikation ?
Formulierung in Pseudocode, mit prozeßbezogener
Adressierung
64.1 Zeit und Kausalität
Nochmals 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? )
74.1.1 Kausale Ordnung von Ereignissen
Ereignisse - prozeßintern (z.B. Zuweisung an
Variable x) - send (Ausführung von send) -
recv (Ausführung von recv) (Prozesse sind
als sequentiell vorausgesetzt) (Kommunikationssem
antik zunächst keine Festlegung)
Ereignismenge, nicht näher spezifiziert E
8Def. 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 Prozeß und
werden in dieser Reihenfolge ausgeführt 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 ?)
9Bemerkung Die Relation gleich oder vor ist
partielle Ordnung auf E Kausalordnung Def.
Zwei Ereignisse a,b sind zueinander
nebenläufig (unabhängig, concurrent, causally
unrelated), wenn weder a ? b noch b ? a
10Veranschaulichung der partiellen Ordnung durch
Zeitdiagramm (ähnlich dem Hasse-Diagramm)
Zeit
z.B. a ? c ? e b ? d ? e c ? h ! nicht a ? d
, g ? j !
x
?
a
b
d
c
e
y
f
g
Aus x ? b , d ? y folgt, daß die beiden
Nachrichten nicht FIFO übertragen wurden!
h
?
i
?
j
11Nochmals zur Semantik von Senden/Empfangen Reih
enfolgetreue (FCFS, FIFO) bei Sender/Empfänger-Paa
r
0
1
gegebenenfalls erzwingen mit Durchnumerieren der
Nachrichten
2
Kausalitätstreue bei mehreren Beteiligten
a vor c !
a
a
b
c
c
wie erzwingen ?
a
124.1.2 Logische Uhren in Anlehnung an die
Kausalitätsbeziehung
Ziel Jedem Ereignis e ? E wird eine Zeit
C(e) zugeordnet. Die Zeiten sind partiell
geordnet, und die Ordnung sollte isomorph zur
Kausalordnung sein (E, ?) ? (C(E),
lt) Die Abbildung C E ? T heißt logische
Uhr.
13- 1. Versuch Skalare Zeit (Lamport 1978)
- T natürliche Zahlen
- (totale Ordnung - daher zum Scheitern
verurteilt) - Jeder Prozeß führt in einer lokalen Uhr eine
lokale Zeit c - und 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,t1) gesetzt.
14Für beliebige Ereignisse a,b ? E gilt a ? b
? C(a) lt 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
Prozeßnummer an, so kann man die Ereignisse
gemäß dieser Kennung linear anordnen
verträglich mit ihrer Kausalordnung.
152. Versuch Vektorzeit (Fidge, Mattern
1988) T n-Tupel natürlicher Zahlen (bei n
Prozessen 1,..,n) t ? s ti ? si für alle
i1,..,n Halbordnung! Jeder Prozeß p führt in
einer lokalen Uhr eine lokale Vektorzeit c und
versieht jede versendete Nachricht mit c als
Zeitstempel. ? Vor jedem Ereignis wird cp um
1 erhöht. ? Nach recv mit Zeitstempel t werden
für alle i1,..,n die ci auf max(ci,ti)
gesetzt.
16Mit der Vektorzeit C erreichen wir die gewünschte
Isomorphie (E, ?) ? (C(E), lt)