Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
4 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
2
Datenfluß-Architektur (dataflow architecture, „pipes and filters“)
keine ausgezeichneten Rollen z.B. Unix Pipeline: grep pat sort lpr oder Datenflußmaschine: + - *
3
Client/Server-Architektur
Rollen: Auftraggeber (Klient) und Auftragnehmer (Server) lpr file grep pat file print server file server mail server
4
Verteilter 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
5
Def.: 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
6
4.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?“ )
7
4.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) (Kommunikationssemantik: zunächst keine Festlegung) Ereignismenge, nicht näher spezifiziert: 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 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 )
9
Bemerkung: 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
10
Veranschaulichung 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 c d e y f g Aus x b , d y folgt, daß die beiden Nachrichten nicht FIFO übertragen wurden! h i j
11
Nochmals zur Semantik von Senden/Empfangen:
Reihenfolgetreue (FCFS, FIFO) bei Sender/Empfänger-Paar: 1 gegebenenfalls erzwingen mit Durchnumerieren der Nachrichten 2 Kausalitätstreue bei mehreren Beteiligten: „a vor c“ ! a b a c c wie erzwingen ? a
12
in Anlehnung an die Kausalitätsbeziehung
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), <) 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,t+1) gesetzt.
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 Prozeßnummer an, so kann man die Ereignisse gemäß dieser Kennung linear anordnen – verträglich mit ihrer Kausalordnung.
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 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 i=1,..,n die ci auf max(ci,ti) gesetzt.
16
Mit der Vektorzeit C erreichen wir die gewünschte Isomorphie:
(E, ) (C(E), <)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.