© H.-U. Hei§, Uni-Paderborn 5 Verteilte Koordination 5.1 Zeit in verteilten Systemen Zeitstempel werden in Rechensystemen verwendet, z.B. um ¥ Leistungsmessungen durchzufŸhren ¥ die AktualitŠt von Daten zu bewerten ¥ eine Totalordnung von Objekten zu bewirken Da Uhren stets mit Ungenauigkeiten behaftet sind, ist in verteilten Systemen eine eindeutige, globale Zeit nicht verfŸgbar. Selbst wenn ein zentraler Zeitgeber verwendet wŸrde, so kšnnte infolge unterschiedlicher und indeterministischer Nachrichtenlaufzeiten keine einheitliche Zeit gefunden werden. 5-1 © H.-U. Hei§, Uni-Paderborn Verteiltes Unix-make 104 105 106 107 108 109 110 107 108 Rechner, auf dem der Übersetzer läuft Zeit gemäß lokaler Uhr Datei output.o erzeugt Rechner, auf dem der Editor läuft 102 103 104 105 106 Zeit gemäß lokaler Uhr Datei output.c erzeugt Zeit 5-2 © H.-U. Hei§, Uni-Paderborn 5.1.1 Physikalische Zeit Sonnenzeit ¥ Sonnendurchlauf Zeitpunkt, zu dem die Sonne ihren hšchsten Stand erreicht ¥ Sonnentag Intervall zwischen zwei SonnendurchlŠufen ¥ Sekunde Sonnentag / 86400 Problem: Rotationsgeschwindigkeit der Erde nicht konstant ¥ lŠngerfristig: Verlangsamung durch Reibungsverluste ¥ kurzfristig: Schwankungen durch Turbulenzen im flŸssigen Erdkern Daher Mittelung Ÿber gro§e Anzahl von Tagen ⇒ Mittlere Sonnensekunde 5-3 © H.-U. Hei§, Uni-Paderborn Atomzeit ¥ entsteht durch ZŠhlen von ZustandsŸbergŠngen in Atomen ¥ erlaubt prŠzisere Zeitmessung ¥ definiert durch Bureau International de l`Heure (BIH) in Paris ¥ definiert eine Sekunde als die Zeit, die ein CŠsium-133-Atom fŸr 9 192 631 770 ZustandsŸbergŠnge benštigt ¥ Mittelung Ÿber eine grš§ere Anzahl von Atomuhren (betrieben von Forschungseinrichtungen) fŸhrt zur TAI (International Atomic Time) 5-4 © H.-U. Hei§, Uni-Paderborn Universal Time Coordinated (UTC) ¥ Problem: Atomzeit und Sonnenzeit driften auseinander: Ein TAI-Tag ist zur Zeit ca. 3 msec kŸrzer als ein Sonnentag ¥ Lšsung: BHI fŸgt Schaltsekunden ein, wenn die Differenz zwischen Sonnenzeit und TAI auf 800 msec angewachsen ist. ¥ Dies fŸhrt zur Universal Time Coordinated (UTC) als internationale Basis fŸr die Zeitmessung ¥ UTC-Signale werden von Rundfunksendern und Satelliten (GEOS, GPS) ausgestrahlt 5-5 © H.-U. Hei§, Uni-Paderborn Genauigkeit der UTC-Ausstrahlung: ¥ Rundfunk ca. ± 1 msec, durch atmosphŠrische Stšrungen, welche die Ausbreitung von Radiowellen behindern, jedoch nur ± 10 msec ¥ Satelliten GEOS (Geostationary Environmental Operational Satellite): ca. ± 0,1 msec GPS (Global Positioning System): ca. ± 1 µsec 5-6 © H.-U. Hei§, Uni-Paderborn Verbesserung der Genauigkeit Verwendung mehrerer UTC-Quellen kann durch Mittelung eine Verbesserung der Genauigkeit bewirken Genauigkeitsfenster der Quellen UTC-Quelle 1 UTC-Quelle 2 UTC-Quelle 3 Quelle 4 abgelehnt UTC-Quelle 4 Schnitt UTC 5-7 © H.-U. Hei§, Uni-Paderborn 5.1.2 Uhrsynchronisation Bisher gehšren UTC-EmpfŠnger nicht zur Standardausstattung eines Rechners. VerfŸgbar ist meist eine Uhr mit einer Genauigkeit (max. Abweichung) von 10-5. Sei Ci(t) der Wert, den die Uhr von Rechner i zum Zeitpunkt (UTC) t anzeigt Die maximale Abweichung ρ der Uhr ist definiert durch 1− ρ ≤ dCi ≤ 1+ ρ dt Falls zwei Uhren von der UTC in entgegengesetzter Richtung abdriften, kšnnen sie nach ∆t Zeiteinheiten nach ihrer Synchronisation um 2ρ∆t abweichen. Sollen zwei Uhren nicht mehr als δ Sekunden voneinander abweichen, so mŸssen sie alle δ / 2ρ Sekunden synchronisiert werden 5-8 © H.-U. Hei§, Uni-Paderborn Absolute Uhrsynchronisation Falls eine einheitliche und genaue Zeit benštigt wird: Verwendung eines Zeit-Servers mit UTC-EmpfŠnger (CristianÕs Algorithm) zu synchronisierender Rechner Zeit-Server t0 Anfra ge TA = t1 Zeit tUTC (t 0 und t1 mit derselben Uhr gemessen) 5-9 Zeit für Anfragebehandlung (Unterbrechung) © H.-U. Hei§, Uni-Paderborn Mšglichkeiten der Synchronisation ¥ Setze lokale Uhr auf t := tUTC Problem: Nachrichtenlaufzeit nicht berŸcksichtigt ¥ Verbesserung: SchŠtze Nachrichtenlaufzeit mit (t1-t0)/2, d.h. t := tUTC + (t1-t0)/2 Problem: Zeit fŸr Anfragebehandlung nicht berŸcksichtigt ¥ Verbesserung: Falls tA bekannt: t := tUTC + (t1-t0-tA)/2 Problem: Nachrichtenlaufzeit abhŠngig von Netzlast ¥ Verbesserung: Mehrere Messungen von (t1-t0) ¥ Messungen Ÿb er einem Schwellwert ablehnen, die andern zur Durchschnittsbildung verwenden ¥ KŸrzeste Nachrichtenlaufzeit als die genaueste verwenden 5-10 © H.-U. Hei§, Uni-Paderborn Realisierungsprobleme Falls Uhr nachging, kann die neue genaue Zeit direkt Ÿbernommen werden Falls Uhr vorging, fŸhrt eine direkte †bernahme zu einem RŸcksetzen der Zeit Eine rŸckwŠrtslaufende Zeit ist in aller Regel nicht tolerabel (Eindeutigkeit geht verloren) Daher Uhranpassung durch Verzšgerung der Uhr: Beispiel: ¥ ¥ Hardware-Timer erzeugt 100 Unterbrechungen / sec UB erhšht die lokale Zeit nicht um 10 msec, sondern um 9 msec, bis die Anpassung vollzogen ist Entsprechend kšnnen auch nachgehende Uhren ãsanftÒ angepa§t werden 5-11 © H.-U. Hei§, Uni-Paderborn Relative Uhrsynchronisation (BerkeleyÕs Algorithm) Falls eine einheitliche Zeit benštigt wird (ohne UTC-EmpfŠnger): Verwendung eines Zeit-Servers zur Durchschnittsbildung ¥ Zeit-Server fragt periodisch alle Rechner nach ihrer Uhrzeit ¥ Aus den erhaltenden Antworten werden die lokalen Zeiten durch SchŠtzung der Nachrichtenlaufzeiten ermittelt. (Antworten, die zu lange auf sich warten lassen, werden ignoriert) ¥ Aus den geschŠtzten lokalen Zeiten wird das arithmetische Mittel gebildet. ¥ Die jeweiligen Abweichungen vom Mittel werden den Rechnern zurŸckgesendet. 5-12 © H.-U. Hei§, Uni-Paderborn Network Time Protocol (NTP) Zielsetzung: ¥ Absoluter (UTC-) Zeit-Service in gro§en Netzen (Internet) ¥ Hohe ZuverlŠssigkeit (durch Fehlertoleranz) ¥ Schutz gegen VerfŠlschungen (durch Authentisierungstechniken) Architektur: ¥ Zeit-Server bilden ein hierarchisches baumartiges Subnetz (synchronisation subnet) ¥ Primary Server (Wurzelknoten, Schicht 1) besitzen UTC-EmpfŠnger ¥ Secondary Server (Schicht 2) werden direkt von Primary Server synchronisiert ¥ Die BlŠtter werden von den allgemeinen Netzteilnehmern gebildet (Workstations am Internet) ¥ Die Genauigkeit der Uhren nimmt also von den Wurzeln zu den BlŠttern ab ¥ Bei Ausfall oder Unerreichbarkeit einzelner Knoten kann sich das Netz rekonfigurieren 5-13 © H.-U. Hei§, Uni-Paderborn NTP-Synchronisation verwendet drei Modi: ¥ Multicast-mode (fŸr schnelle lokale Netze, geringe Genauigkeit) Server schickt periodisch aktuelle Zeit per Multicast an anderer Rechner im LAN ¥ Procedure-call-mode (Šhnlich CristianÕs algorithm, mittlere Genauigkeit) Server beantwort Zeitanfragen mit dem aktuellen Zeitstempel ¥ Symmetric mode (hohe Genauigkeit zur Synchronisation zwischen Zeit-Servern) Wechselseitiger Austausch von Zeitstempeln In allen FŠllen wird das UDP-Transportprotokoll verwendet, d.h. mit Nachrichtenverlust mu§ gerechnet werden. 5-14 © H.-U. Hei§, Uni-Paderborn NTP-Details Vom Multicast abgesehen, werden Nachrichten in Paaren ausgetauscht Sende- und Empfangszeiten werden vermerkt und verschickt Server A Server B Sei o := tA - tB oi t und tÕ di = t + tÕ ti-2 ti-1 m m‘ ti-3 Zeit ti Zeit die wahre Zeitdifferenz von B relativ zu A der SchŠtzwert fŸr o die jeweiligen Nachrichtenlaufzeiten fŸr m bzw. mÕ die gesamte Nachrichtenlaufzeit (Hin- und RŸckweg) di kann gemessen werden als: di = ti - ti-3 - (ti-1 - ti-2) Es gilt: ti-2 = ti-3 + t + o und ti = ti-1 + tÕ - o 5-15 © H.-U. Hei§, Uni-Paderborn Mit a := ti-2 - ti-3 und b := ti - ti-1 erhalten wir: a=t+o b = tÕ - o Durch Subtraktion ergibt sich o = (a-b)/2 + (tÕ-t)/2 Da t, tÕ ³ 0, kšnnen wir abschŠtzen: -di ² -t ² tÕ-t ² tÕ ² di also oi - di/2 ² o ² oi + di/2 mit oi = (a-b)/2 oi ist eine SchŠtzung fŸr die Abweichung und di ein QualitŠtsma§ fŸr die GŸte der SchŠtzung 5-16 © H.-U. Hei§, Uni-Paderborn Zahlenbeispiele ti-2 =6 Server A ti-1=8 t=2 Server B t‘=4 ti-3 =2 Daraus errechnen wir: Zeit di = 6, ti =10 a = 4, Zeit b=2 also oi = 1 und -2 ² o ² 4 WŠre t = tÕ = 3 ( gleiche Nachrichtenlaufzeiten), so ergŠbe sich ti-2 =7 Server A ti-1=9 t=3 Server B und damit t‘=3 ti-3 =2 Daraus ergibt sich: di = 6, a = 5, Zeit ti =10 b=1 oi = 2 und -1 ² o ² 5 5-17 Zeit © H.-U. Hei§, Uni-Paderborn Weitere NTP-Details ¥ Aufeinanderfolgende Paare <oi, di> werden einem weiteren Filterungsproze§ unterzogen, um die QualitŠt der SchŠtzung zu verbessern. ¥ Zeit-Server synchronisieren sich mit mehreren anderen Zeit-Servern (typischerweise mit einem auf der gleichen Ebene und zweien auf einer niedrigeren Ebene) ¥ Server kšnnen sich ihre Synchronisationspartner auswŠhlen ¥ Messungen im Internet haben ergeben, da§ bei 99% der Knoten der Synchronisationsfehler unter 30 msec liegt. Obere Schranken kšnnen nicht garantiert werden. 5-18 © H.-U. Hei§, Uni-Paderborn 5.1.3 Logische Zeit FŸr die meisten Zwecke reicht es aus, eine Reihenfolge relevanter Ereignisse festlegen zu kšnnen, d.h. nicht die absolute Lage, sondern die relative Lage auf der Zeitachse ist wesentlich. Die Skalierung dieser Zeitachse ist daher beliebig (Logische Zeit). Eigenschaften der logischen Zeit ¥ Kausale AbhŠngigkeiten sollen korrekt berŸcksichtigt werden ¥ Ereignisse aus unabhŠngigen AblŠufen mŸssen nicht relativ zueinander geordnet werden Annahme: Ein verteiltes System besteht aus einer Menge von Knoten (Monoprozessoren). Die AktivitŠt jedes Knotens besteht aus einer total geordneten Folge von Ereignissen E p . Es gibt drei Typen von Ereignissen: lokale Ereignisse, Sendeereignisse, Empfangsereignisse Die GesamtaktivitŠt im verteilten System besteht dann aus der Vereinigung E = U E p p 5-19 © H.-U. Hei§, Uni-Paderborn 5.1.3.1 Kausale Ordnung der Ereignisse Die Relation ãvorÒ basiert auf den beiden intuitiv einleuchtenden Grundlagen (L. Lamport): ¥ Zwei Ereignisse auf demselben Knoten treten global in derselben Reihenfolge auf. ¥ Beim Versenden einer Nachricht zwischen zwei Knoten mu§ das Senden dem Empfangen vorangehen. Formal: p→ Ò die lokale Relation innerhalb von Knoten p und ã → Ò die globale Relation ãvorÒ, Sei ã so gilt: 1. Lokale Ordnung Falls ∃ Knoten p : a p→ b , dann gilt a → b 2. Kommunikation FŸr jede Nachricht m gilt: send ( m) → receive( m), falls send(m) bzw. receive(m) das Ereignis des Sendens bzw. Empfangens der Nachricht bezeichnet 3. TransitivitŠt Sind a, b und c Ereignisse mit a → b und b → c , so gilt a → c . Die Relation ist also irreflexiv, asymmetrisch und transitiv 5-20 © H.-U. Hei§, Uni-Paderborn Beispiel p1 e11 e12 p2 m1 e21 e22 m2 p3 e31 e32 phys. Zeit Es gilt e11 → e12 → e21 → e22 → e32 und e31 → e32 . Ereignis e31 lŠ§t sich nicht mit e11 (oder e12 , e21, e22 ) in eine Ordnung bringen, d.h. es gilt ¬(e11 → e31 ) ∧ ¬(e31 → e11 ) Man nennt e31 daher nebenlŠufig zu e11 (e11 e31 ) Anmerkung Die Relation ãvorÒ wird auch KausalitŠtsrelation genannt. Die Relation modelliert potentielle KausalitŠt, nicht tatsŠchliche. 5-21 © H.-U. Hei§, Uni-Paderborn 5.1.3.2 Lamport-Zeit Die auf der KausalitŠtsrelation ãvorÒ definierte Ordnung kann mit Hilfe einfacher ZŠhler in eine Art ãZeitÒ umgewandelt werden (Lamport-Zeit): Die Lamport-Zeit L ist eine Abbildung L: E → N Jedem Ereignis e wird ein Zeitstempel L(e) zugeordnet. L kann rekursiv definiert werden: 1. e ist ein lokales Ereignis oder ein Sendeereignis: Hat e keinen lokalen VorgŠnger, so gilt L(e) = 1. Gibt es einen VorgŠnger eÕ, so gilt L(e) = L(e′ ) + 1. 2. e ist ein Empfangsereignis, s sei das korrespondierende Sendeereignis: Hat e keinen lokalen VorgŠnger, so gilt L(e) = L( s ) + 1 Hat e einen lokalen VorgŠnger eÕ, so gilt L(e) = max { L( s ), L(e′ )} + 1 5-22 © H.-U. Hei§, Uni-Paderborn Beispiel 1 4 5 7 e11 e12 e13 e14 P1 P2 1 5 6 e21 e21 e22 P3 2 3 4 e31 e32 e33 Interpretation: Jeder Ort unterhŠlt einen ZŠhler als logische Uhr, der mit jedem Ereignis inkrementiert wird. Bei Kommunikation mu§ nun ein Uhrabgleich stattfinden, damit die logische Zeit konsistent ist mit der KausalitŠt . Dies geschieht durch die Maximumsbildung der lokalen Zeit mit der empfangenen Zeit des Senders. Der Mechanismus kann daher auch fŸr einen Uhrabgleich verwendet werden. 5-23 © H.-U. Hei§, Uni-Paderborn Lokale Uhren mit unterschiedlichen Raten P1 P2 P3 P1 P2 P3 0 6 12 18 24 30 36 42 48 54 60 0 8 16 24 32 40 48 56 64 72 80 0 10 20 30 40 50 60 70 80 90 100 0 6 12 18 24 30 36 42 48 70 76 0 8 16 24 32 40 48 61 69 77 85 0 10 20 30 40 50 60 70 80 90 100 m1 m4 m2 m3 Ohne Korrektur der logischen Uhren m1 m4 m2 m3 Mit Korrektur der logischen Uhren 5-24 © H.-U. Hei§, Uni-Paderborn Zusammenhang Die Lamport-Zeit ist zwar konsistent mit der KausalitŠt, d.h. sie widerspricht ihr nicht, aber sie charakterisiert sie nicht. Es gilt x → y ⇒ L( x ) < L( y) , d.h. ist Ereignis x vor Ereignis y bezŸglich der KausalitŠtsrelation, so hat x einen kleineren Zeitstempel als y. Umgekehrt besagt aber L( x ) < L( y) nicht, da§ x kausal vor y , d.h. ¬( L( x ) < L( y) ⇒ x → y) Bezeichnet r(e) die globale reale Zeit, die ein idealer globaler Beobachter fŸr ein Ereignis messen kšnnte, so gilt: x → y ⇒ r( x ) < r( y) umgekehrt. d.h. was kausal vorher ist, ist auch zeitlich vorher, jedoch nicht FŸr das VerhŠltnis von Lamport- zu realer Zeit gilt keinerlei Implikation: Weder folgt aus L( x ) < L( y), da§ x vor y stattgefunden hat, noch bedeutet r ( x ) < r ( y), da§ x einen kleineren Zeitstempel als y erhŠlt. Um eine bessere Charakterisierung der KausalitŠt zu erreichen, benštigt man einen mŠchtigeren Mechanismus 5-25 © H.-U. Hei§, Uni-Paderborn 5.1.3.3 Vektorzeit Gegeben sei ein verteiltes System mit n Knoten. Der n-dimensionale Vektor Vp hei§t Vektorzeit von Knoten p, wenn er nach den folgenden Regeln gebildet wird. (1) Am Anfang werden alle Vektorkomponenten auf 0 gesetzt Vp [ k ] = 0 für k = 1,K,n (2) Bei einem lokalen Ereignis e am Knoten p wird folgenderma§en inkrementiert: Vp [ p] = Vp [ p] +1 (3) Beim Senden einer Nachricht wird der Vektor wie bei (2) inkrementiert und dann der Nachricht hinzugefŸgt. (4) Beim Empfangen einer Nachricht m mit der beigefŸgten Vektorzeit V(m) an Knoten p wird Vp gemŠ§ (2) inkrementiert und anschlie§end folgende Aktualisierung durchgefŸhrt: { Vp = sup V ( m),Vp Dabei gilt : } u[1] v[1] max {u[1],v[1]} u[2] v[2] max {u[2],v[2]} sup , = .. .. .. u[n] v[n] max {u[n],v[n]} 5-26 © H.-U. Hei§, Uni-Paderborn Beispiel 1 0 0 2 0 0 P1 e11 1 1 0 P2 P3 e21 0 0 1 e31 1 2 0 e21 e12 2 3 0 1 2 2 e22 1 2 3 e32 e33 5-27 3 2 3 e13 4 2 3 e14 2 4 0 e22 © H.-U. Hei§, Uni-Paderborn Eigenschaften der Vektorzeit FŸr Zeitvektoren kšnnen nun folgende Reaationen definiert werden Seien u, v zwei Zeitvektoren der Dimension n: 1. u ≤ v ⇔ u[ p] ≤ v[ p] ∀p = 1,K,n 2. u<v ⇔ u≤v ∧ u≠v 3. u v ⇔ ¬(u ≤ v ) ∧ ¬(v ≤ u) Mit dieser Definition gilt der folgende Zusammenhang zwischen Kausalrelation und Vektorzeit: 1. e → e ′ ⇔ V (e ) < V (e ′ ) 2. e e ′ ⇔ V (e ) V (e ′ ) Die Vektorzeit charakterisiert also die Kausalbeziehung in dem Sinne, da§ Ereignisse, die in einer Kausalrelation stehen, auch bezŸglich der Vektorzeit geordnet sind, und da§ bezŸglich der Vektorzeit geordnete Eregnisse auch in einer kausalen Relation stehen. Die Vektorzeit bildet die aufgrund des lokalen Wissens ãbeste SchŠtzungÒ der globalen ReihenfolgeverhŠltnisse 5-28 © H.-U. Hei§, Uni-Paderborn 5.1.3.4 Totale Ordnung von Ereignissen Trotz einiger UnzulŠnglichkeiten reicht die Lamport-Zeit L fŸr viele Reihenfolgeprobleme aus. Allerdings definiert sie nur eine partielle Ordnung der Ereignisse. Eine Totalordnung LT()kann man erhalten, wenn man die (eindeutigen und totalgeordneten) Knotenkennungen p, q, .. einbezieht: Ein Ereignis a auf Knoten p erhŠlt als globalen Zeitstempel LT ( a): = ( L( a), p) Dann gilt L( a ) < L( b ) ∨ ( L(a), p) < ( L(b),q) ⇔ L( a ) = L( b ) ∧ p < q 5-29 © H.-U. Hei§, Uni-Paderborn 5.1.4 Kausale Ordnung von Nachrichten Reihenfolgetreue eines Nachrichtensystems ist eine angenehme Eigenschaft, die viele darauf aufbauende Protokolle und Algorithmen einfacher werden lŠ§t. Es kann daher wŸnschenswert sein, Reihenfolgetreue zu erzwingen. Definition Seien m1 und m2 zwei Nachrichten, die am selben Knoten i empfangen werden. Eine Menge von Nachrichten M hei§t kausal geordnet, wenn fŸr alle Paare ( m1 ,m2 ) ∈M gilt: send ( m1 ) → send ( m2 ) ⇒ receive( m1 ) → receive( m2 ) d.h. Nachrichten dŸrfen sich nicht Ÿberholen Beispiel fŸr nicht kausal geordnete Nachrichten: send(m1) P1 send(m2) P2 P3 receive(m2) 5-30 receive(m1) © H.-U. Hei§, Uni-Paderborn Protokoll zur Erzwingung kausaler Ordnung ¥ Jeder Knoten i unterhŠlt eine n × n -Matrix Mi , die mit 0 initialisiert ist. ¥ Beim Versenden einer Nachricht von Knoten i zu Knoten j wird Mi [i, j ] inkrementiert und die Matrix Mi der Nachricht angehŠngt. ¥ Beim Empfang einer Nachricht mit der angehŠngten Matrix M aktualisiert der empfangende Knoten j seine Matrix durch komponentenweise Maximumsbildung: { } ∀i,k ≤ n: M j [i,k ]: = max M j [i,k ], M[i,k ] ¥ Wird eine Nachricht am Knoten j empfangen, so wird die Auslieferung solange verzšgert, bis gilt: 1. ∀k ≠ i: M[ k, j ] ≤ M j [ k, j ] Vektorzeit des EmpfŠngers ist nicht kleiner als die des Sendeereignisses 2. M[i, j ] = M j [i, j ] + 1 Nachrichten von i nach j werden in FIFO-Ordnung ausgeliefert Die Matrix, die einer Nachricht angehŠngt ist, beschreibt daher alle Sendeereignisse, von denen sie kausal abhŠngt. 5-31 © H.-U. Hei§, Uni-Paderborn Beispiel 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 P1 P2 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 P3 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 Nachricht verzögern ! 0 0 1 0 0 0 0 1 0 5-32 0 1 1 0 0 1 0 1 0 © H.-U. Hei§, Uni-Paderborn 5.2 Gegenseitiger Ausschlu§ (mutual exclusion) Beim Zugriff auf gemeinsame Daten oder der Nutzung von Betriebsmitteln mu§ oft die ExklusivitŠt des Zugriffs oder Nutzung sichergestellt werden. Das ProgrammstŸck, das den Zugriff realisiert, hei§t kritischer Abschnitt (critical section) P1 P2 D Von einem Mechanismus fŸr gegenseitigen Ausschlu§ fordern wir: 1. Sicherheit Es darf zu einem Zeitpunkt hšchstens ein Proze§ sich in dem kritischen Abschnitt befinden 2. Lebendigkeit Jeder Bewerber mu§ nach endlicher Zeit Zugang erhalten. Lebendigkeit impliziert Verklemmungsfreiheit (freedom from deadlocks) ZusŠtzlich kann man fordern: 3. Reihenfolge GewŠhrung des Zugangs erfolgt in der Reihenfolge der Anforderungen 4. Fehlertoleranz Forderungen 1 und 2 werden auch bei AusfŠllen erfŸllt 5-33 © H.-U. Hei§, Uni-Paderborn Leistungskriterien Zur Beurteilung der LeistungsfŠhigkeit eines Mechanismus fŸr gegenseitigen Ausschlu§ kšnnen wir verschiedene Kriterien heranziehen - Anzahl der versendeten Nachrichten pro CS ( nm → min ) - Abstimmungsverzšgerung d pro CS ( d → min ) letzter Knoten verläßt CS nächster Knoten betritt CS Zeit Abstimmungsverzögerung d - Antwortzeit RTCS , d.h. Zeitspanne vom Anfordern des CS bis zum Verlassen( RTCS → min ) Knoten fordert CS an Knoten betritt CS Knoten verläßt CS Ausführungszeit ECS Antwortzeit RTCS Zeit - Durchsatz TPCS , d.h. Anzahl der DurchlŠufe durch einen CS pro Zeiteinheit ( TPCS → max ) TP = 1 ( d + ECS ) 5-34 © H.-U. Hei§, Uni-Paderborn Gegenseitiger Ausschlu§ in zentralen Systemen In zentralen Systemen gibt es dafŸr Kernoperationen des BS, die auf letztlich auf einer gemeinsamen Variable basieren. Prozeß P1 Prozeß P2 LOCK(LO) LOCK(LO) Kritischer Abschnitt Kritischer Abschnitt UNLOCK(LO) UNLOCK(LO) 5-35 © H.-U. Hei§, Uni-Paderborn Programmformulierung kernel module LOCKING; export LOCK, UNLOCK; import BLOCK, DEBLOCK; var lock_object = record S: lock = reset; WP: sequence of process = empty end; procedure LOCK(LO: lock_object); begin while SO.S = set do BLOCK(SO.WP); LO.S := set end; procedure UNLOCK(LO: lock_object); begin LO.S := reset; if LO.WP empty then DEBLOCK(LO.WP) end end locking. 5-36 © H.-U. Hei§, Uni-Paderborn 5.2.1 Zentrale Lšsung RŸckfŸhrung auf lokalen Mechanismus: Ein Knoten ist zentral zustŠndig fŸr die Verwaltung des kritischen Abschnitts Beispiel (Kernverbund) Ort i Ort j LOCK LOCK KA Fernkernaufruf KA UNLOCK UNLOCK Ort x Ersatzinstanzen L U Zentrale Kooperation im Kernverbund 5-37 © H.-U. Hei§, Uni-Paderborn Beispiel: Realisierung durch Proze§kommunikation (Proze§verbund) Benutzerprozeß (Ort i) Senden_S(Lock) KA-Verwalter (Ort x) Kritischer Abschnitt Senden_A(Unlock) Lock Unlock Benutzerprozeß (Ort j) Senden_S(Lock) Kritischer Abschnitt Senden_A(Unlock) 5-38 Empfangen_S(Lock) Empfangen_S(Unlock) © H.-U. Hei§, Uni-Paderborn Verteilte Koordination Zentrale Lšsungen sind einfach zu realisieren, haben aber auch Nachteile: - "single point of failure" - Engpa§gefahr - Verzšgerung: mindestens doppelte Nachrichtenlaufzeit Daher solle Ÿber verteilte Lšsungen nachgedacht werden. FŸr den verteilten Fall gehen wir davon aus, da§ ebenfalls Operationen LOCK und UNLOCK existieren. Hilfsprozesse für Außenbeziehungen LOCK UNLOCK ZusŠtzlich kšnnen noch weitere Hilfsprozesse erforderlich sein Team, bestehend aus Prozeduren und Prozessen 5-39 © H.-U. Hei§, Uni-Paderborn 5.2.2 Token-basierte Verfahren Die am gegenseitigen Ausschlu§ beteiligten Knoten bilden einen logischen Ring Es gibt genau eine Zugriffsberechtigung (Token), die weitergegeben wird logischer Ring Aktueller Besitzer des Tokens 5-40 © H.-U. Hei§, Uni-Paderborn a) Zyklische Weitergabe Am Ort x LOCK KZWx W(KZWx ) W(KE) S_Trying(KE) R N War Signalisierung möglich ? UNLOCK W(KR) S(KR) S(KZW(x+1) mod n ) R 5-41 © H.-U. Hei§, Uni-Paderborn Beispiel Zugriff Ort i Zugriff Ort k Weitergabe Ort j Zugriff Zugriffe bei zyklischer Weitergabe des Tokens 5-42 © H.-U. Hei§, Uni-Paderborn b) Gezielte Weitergabe Am Ort x LOCK KGWx ∀k: S(KAZk ,x) W(KGWx) S_Trying(KE) W(KE) ∀k: S-1 (KAZ k ,x) N War Signalisierung möglich ? R W(KR) UNLOCK KAZx Anmelden W(KAZ x ,k) S(KR) S(KGWk ) R Gezielte Weitergabe des Tokens 5-43 Abmelden © H.-U. Hei§, Uni-Paderborn Beispiel Zugriff Ort i Anmeldung Anm. Abm. Anm. Ort k Abm. Ruhen Ort j Zugriffe bei gezielter Weitergabe des Tokens 5-44 Abmeldung © H.-U. Hei§, Uni-Paderborn 5.2.3 Abstimmungsverfahren (G. Ricart und A.K. Agrawala, 1981) ¥ Kein Token mehr ¥ Kooperative Abstimmung der Zugriffsreihenfolge ¥ Ziel: globale Serialisierung ¥ Algorithmen z.T. abhŠngig von der Reihenfolgetreue des Transportsystems ¥ Serialisierung auf der Grundlage einer logischen Zeit (Totalordnung durch Zeitmarken) Eines der bekanntesten Verfahren (von Ricart und Agrawala) setzt keine Reihenfolgetreue voraus 5-45 © H.-U. Hei§, Uni-Paderborn Abstimmungsverfahren nach Ricart-Agrawala Korrektheitsbedingungen ¥ Alle Orte verhalten sich identisch. Deshalb genŸgt Betrachtung eines Ortes x ¥ Nach Ende des Abstimmungsverfahrens sind drei Gruppen von Anforderungenn unterscheidbar 1. 2. 3. Solche, die am Ort x bekannt sind und deren Zeitmarke kleiner ist als Cx. Solche, die am Ort x bekannt sind und deren Zeitmarke grš§er ist als Cx. Solche, die am Ort x noch unbekannt sind. Im Verlaufe der Abstimmung kšnnen sich die Marken Šndern. Daher die folgenden Korrektheitsbedingungen : Bedingung 1: Die Anforderungen der Gruppe 1 mŸssen entweder erledigt werden oder eine Marke grš§er Cx annehmen. Bedingung 2: Die Anforderungen der Gruppe 2 dŸrfen im Zuge der Abstimmung keine Marken kleiner Cx annehmen. Bedingung 3: Die Anforderungen der Gruppe 3 mŸssen Marken grš§er Cx erhalten. 5-46 © H.-U. Hei§, Uni-Paderborn Ablauf in zwei Phasen: 1. Bewerber am Ort i schickt Erkundungsnachrichten ei an alle anderen Orte. 2. Die anderen Orte schicken Antwortnachrichten (Einwilligungen) ai zurŸck. Nach Eintreffen aller Einwilligungen kann der Zugriff durchgefŸhrt werden ¥ ¥ Die Erkundungsnachrichten des Ortes i sind mit seiner aktuellen Zeitmarke Mi gekennzeichnet. Nach deren Versendung erhšht i seinen eigenen ZŠhler Ci. Erkundungsnachrichten von einem Ort i werden am Ort x erst beantwortet, wenn aus Sicht des Ortes x garantiert werden kann, da§ 1 Šltere Anforderungen (mit kleinerer Marke) erledigt sind 2 jŸngere, d.h. spŠter entstehende Anforderungen mit grš§eren Marken versehen werden Forderung 1 wird durch entsprechende Verzšgerung erfŸllt. Forderung 2 wird durch Erhšhen des ZŠhlers erfŸllt: Cx := max (Cx, Ci + 1) 5-47 © H.-U. Hei§, Uni-Paderborn Ablauf des Abstimmungsverfahrens reihenfolgeunabhängig Antwort verzögern C i := max (C , C j +1) Zugriff Ort i Z i <M i > ei ei aj ai Ort k Z k <M j > <M i > <M j > ai Ort j Z j Zugriff C j := max (C , Ci +1) (Annahme: Mi < Mj) 5-48 © H.-U. Hei§, Uni-Paderborn Realisierung des Verfahrens Am Ort x LOCK Hilfsprozesse a-Nachricht e-Nachricht E(KEx ,M) E(KAx) C:=zähl(M) k:=ort(M) Zählen M M x Cx:=max(Cx,C+1) S(KA k) Alle Antworten N eingetroffen ? N J Cx:=max(Cx,C+1) S(KI) S(KV,k) Mx:=<Cx,x> ∀k: S(KEk,M x) E(KI) R UNLOCK KV leer ? J E(KV,k) S(KA k) R 5-49 © H.-U. Hei§, Uni-Paderborn Vergleich der Verfahren zum gegenseitigen Ausschlu§ Algorithmus Zentral Token (zyklische Weitergabe) Token (gezielte Weitergabe) Abstimmung Nachrichten Verzšgerung d Antwortzeit, pro CS (T:Nachr.laufzeit) falls CS frei Probleme 3 2T 2T+E Koordinatorausfall 0 bis ∞ n/2 T n/2 T + E Verlust des Tokens, Ausfall eines Prozesses 2n-1 T 2T+E Verlust des Tokens, Ausfall eines Prozesses 2 (n-1) T 2T+E Ausfall eines Prozesses 5-50 © H.-U. Hei§, Uni-Paderborn 5.2.4 Auswahlalgorithmen Auswahlalgorithmen (election algorithms) dienen der eindeutigen Bestimmung eines Knotens durch einen kooperativen, verteilten Abstimmungsvorgang Eine Auswahl ist beispielsweise erforderlich, wenn bei einer zentralen Lšsung die Zentrale ausgefallen ist und eine neue eingerichtet werden mu§. Viele verteilte Algorithmen benštigen einen Koordinator, auf den sich die Teilnehmer einigen mŸssen. Auswahlalgorithmen basieren auf den folgenden Annahmen: ¥ Jeder Knoten besitzt eine eindeutige Knotennummer, d.h. es liegt eine Totalordnung der Knoten vor ¥ Der Knoten mit der grš§ten Nummer unter allen aktiven Knoten wird als Koordinator gewŠhlt ¥ Nach Ausfall gliedert sich ein Knoten beim Neustart wieder in die Menge der aktiven Knoten ein 5-51 © H.-U. Hei§, Uni-Paderborn 5.2.4.1 Der Bully-Algorithmus (H. Garcia-Molina, 1982) ¥ Ziel des Algorithmus ist es, den aktiven Knoten mit der grš§ten Nummer zu finden, ihn als Koordinator zu verpflichten und diese Tatsache allen Knoten bekannt zu machen ¥ Der Auswahlalgorithmus wird durch einen beliebigen Knoten i ausgelšst, z.B. durch denjenigen, der den Ausfall des bisherigen Koordinators bemerkt hat ¥ Es werden drei Sorten Nachrichten verschickt: e-Nachrichten (election): Auslšsen der Auswahl a-Nachrichten (answer): BestŠtigung des Erhalts einer e-Nachricht c-Nachricht (coordinator): Mitteilung, da§ der Sender der neue Koordinator ist 5-52 © H.-U. Hei§, Uni-Paderborn Ablauf des Bully-Algorithmus 1 Knoten i sendet e-Nachrichten (ÔelectionÕ) an alle Knoten j > i. 2 Falls i innerhalb einer Frist T keine Nachricht erhŠlt, so bestimmt er sich selbst als Koordinator und sendet eine entsprechende c-Nachricht (ÔcoordinatorÕ) an alle Knoten j < i. 3 Hat i mindestens eine Antwort (a-Nachricht) innerhalb Frist T erhalten (d.h. es gibt einen aktiven Knoten mit hšherer Nummer), so wartet es eine weitere Frist TÕ ab. Falls dann keine c-Nachricht eingetroffen ist, startet es erneut einen Auswahlvorgang (Schritt 1). 4 EmpfŠngt ein Knoten j eine e-Nachricht von einem Knoten i, so sendet j eine a-Nachricht (ÔanswerÕ) zurŸck und startet selbst einen Auswahlvorgang (Schritt 1) 5 Wird ein Knoten nach einem Ausfall wieder operabel, so beginnt er mit Schritt 1 6 Der Knoten mit der hšchsten Nummer mu§ sich nicht abstimmen, sondern bestimmt sich selbst zum Koordinator. 5-53 © H.-U. Hei§, Uni-Paderborn Beispiel (Bully-Algorithmus) (Knoten 2 bemerkt Ausfall des Koordinators (Knoten 5)) Knoten 1 Knoten 2 Knoten 3 Knoten 4 Knoten 5 Frist T (bisheriger Koordinator ausgefallen) (wieder gestartet) Zeit Auslösung des Algorithmus election-Nachricht answer-Nachricht coordinator-Nachricht 5-54 © H.-U. Hei§, Uni-Paderborn 5.4.2.2 Ring-Algorithmus (G. Le Lann, 1977) ¥ Der Ring-Algorithmus geht davon aus, da§ die Knoten in einem logischen Ring angeordnet sind. ¥ Jeder Knoten kennt seinen Nachfolger, kennt aber auch die weiteren Knoten des Rings, so da§ er bei Nichterreichbarkeit seines Nachfolgers dessen Nachfolger adressieren kann. ¥ Der Algorithmus verwendet zwei Typen von Nachrichten: election-Nachricht: zum Wahl (Bestimmung) des Koordinators coordinator-Nachricht: zum Bekanntmachen des neugewŠhlten Koordinators ¥ Der Algorithmus wird ausgelšst durch einen Knoten, der feststellt, da§ der bisherige Koordinator nicht antwortet. ¥ Daraufhin erzeugt er eine election-Nachricht mit seiner Knotennummer als Inhalt und schickt sie an seinen Nachfolger. ¥ Falls dieser Nachfolger die Nachricht nicht quittiert, gilt er als ausgefallen und die Nachricht wird einen Knoten weiter geschickt. 5-55 © H.-U. Hei§, Uni-Paderborn Ring-Algorithmus ¥ ¥ EmpfŠngt ein Knoten i eine Nachricht, so enthŠlt sie eine Liste von Knotennummmern. 1 Ist der Typ der Nachricht "election" und seine Knotennummer i in dieser Liste nicht enthalten, so wird i der Liste hinzugefŸgt und die Nachricht an den jeweiligen Nachfolger weitergeleitet. 2 Ist der Typ der Nachricht "election" und seine Knotennummer i in dieser Liste enthalten, so hat die Nachricht einmal den Ring durchlaufen und die Liste enthŠlt alle aktiven Knoten. Der Knoten merkt sich die grš§te Nummer in der Liste als neuen Koordinator, Šndert den Typ der Nachricht zu "coordinator" und schickt sie fŸr eine zweite Runde zu seinem Nachfolger. 3 Ist der Typ der Nachricht "coordinator", so merkt sich der Knoten die die grš§te Nummer in der Liste als neuen Koordinator. 4 Ist die coordinator- Nachricht einmal zirkuliert, so wird sie entfernt. Beim Wiederanlauf eines ausgefallenen Knotens kann eine "inquiry"-Nachricht abgesetzt werden, die im Ring einmal zirkuliert und in die der Koordinator seine Nummer eintrŠgt 5-56 © H.-U. Hei§, Uni-Paderborn Beispiel 4 4 5 ("e", 5) ("e", 2, 3) 6 3 5 ("c", 2, 3 ,4, 5, 6, 7, 1 ) 3 6 2 7 ("e", 5, 6) ("e", 2) 2 7 1 1 8 8 ("e", 5, 6, 7) ("c", 5, 6, 7, 1, 2, 3 ,4) 1. Runde: Zwei Knoten (2 und 5) initiieren unabhŠngig voneinander eine Wahl. 2. Runde: Beide Wahlnachrichten sind einmal durch den Ring und laufen nun als KoordinatorNachrichten ein zweites Mal herum. 5-57 © H.-U. Hei§, Uni-Paderborn Vergleich der beiden Auswahlalgorithmen Anzahl Nachrichten Zeit Bully O(n2) O(n) Ring 2 (n-1) 2 (n-1) 5-58