Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Justus Albert Geändert vor über 8 Jahren
1
vs41 4 Verteilte Algorithmen
2
vs42 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
3
vs43 Datenfluß-Architektur (dataflow architecture, „pipes and filters“) keine ausgezeichneten Rollen grep patlprsort z.B. Unix Pipeline: oder Datenflußmaschine: + * -
4
vs44 Client/Server-Architektur Rollen: Auftraggeber (Klient) und Auftragnehmer (Server) z.B. so: file server grep pat file mail server print server lpr file
5
vs45 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
6
vs46 z.B. zuverlässige unidirektionale Nachrichtenübertragung über unzuverlässigen bidirektionalen Kanal: Kommunikationsprotokoll SenderEmpfänger Daten Quittungen oderEinigung auf „Anführer“: Auswahlprotokoll
7
vs47 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?“ )
8
vs48 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: E
9
vs49 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: entweder1) a und b gehören zum selben Prozess und geschehen in dieser Reihenfolge oder2) a ist das Senden einer Nachricht, b ist das Empfangen dieser Nachricht oder3) es gibt ein Ereignis c mit a c und c b (Transitivität von )
10
vs410 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
11
vs411 Veranschaulichung der partiellen Ordnung durch Zeitdiagramm (ähnlich dem Hasse-Diagramm für partielle Ordnungen) Zeit a j f e dc b h g i z.B.a c e b d e c h ! y x Aus x b, d y folgt, daß die beiden Nachrichten nicht FIFO übertragen wurden! nichta d, g j !
12
vs412 Nochmals zur Dienstgüte des Nachrichtensystems: Reihenfolgetreue (FCFS, FIFO) bei Sender/Empfänger-Paar: 1 2 0 gegebenenfalls erzwingen mit Durchnumerieren der Nachrichten Kausalitätstreue bei mehreren Beteiligten: a c a wird vor c gesendet, also auch vor c empfangen b wie erzwingen ? 012012
13
vs413 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.
14
vs414 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.
15
vs415 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 nichtC(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“).
16
vs416 2. Versuch:Vektorzeit [Fidge, Mattern 1988] T = n-Tupel natürlicher Zahlen (bei n Prozessen 1,..,n) t s : t i s i 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 c p um 1 erhöht. Nach recv mit Zeitstempel t werden für alle i=1,..,n die c i auf max(c i,t i ) gesetzt.
17
vs417 Mit der Vektorzeit C erreichen wir die gewünschte Isomorphie: (E, ) (T, )
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.