5 Verteilte Koordination 5.1 Zeit in verteilten Systemen

Werbung
© 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
Herunterladen