Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

4 Verteilte Algorithmen

Ähnliche Präsentationen


Präsentation zum Thema: "4 Verteilte Algorithmen"—  Präsentation transkript:

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), <)


Herunterladen ppt "4 Verteilte Algorithmen"

Ähnliche Präsentationen


Google-Anzeigen