Verteilte Systeme Synchronisation I Prof. Dr. Oliver Haase 1 - - PowerPoint PPT Presentation

verteilte systeme
SMART_READER_LITE
LIVE PREVIEW

Verteilte Systeme Synchronisation I Prof. Dr. Oliver Haase 1 - - PowerPoint PPT Presentation

Verteilte Systeme Synchronisation I Prof. Dr. Oliver Haase 1 berblick Synchronisation 1 Zeit in verteilten Systemen Verfahren zum gegenseitigen Ausschluss Synchronisation 2 Globale Zustnde Wahlalgorithmen 2 Zeit in


slide-1
SLIDE 1
  • Prof. Dr. Oliver Haase

Verteilte Systeme

Synchronisation I

1

slide-2
SLIDE 2

Überblick

2

Synchronisation 1

  • Zeit in verteilten Systemen
  • Verfahren zum gegenseitigen Ausschluss

Synchronisation 2

  • Globale Zustände
  • Wahlalgorithmen
slide-3
SLIDE 3

Zeit in verteilten Systemen

3

slide-4
SLIDE 4

Motivation

4

  • Für viele dieser Algorithmen ist ein gemeinsames

Verständnis der ‘Zeit’ in allen beteiligten Knoten notwendig:

  • wer hat ein Ereignis zuerst ausgelöst?
  • wer hat auf zuerst / zuletzt auf eine Ressource zugegriffen?
  • In einem zentralisierten System kein Problem, da es dort

nur eine Zeitquelle gibt.

  • In verteilten Systemen hat jedoch jeder Knoten seine

eigene Zeitquelle und damit u.U. eine andere Uhrzeit.

  • Problem?
slide-5
SLIDE 5

Beispiel: Verteilte SW-Entwicklung

5

  • output.o scheint jünger als output.c → wird beim

nächsten make nicht neu übersetzt.

aus: [Tanenbaum, van Steen. Verteilte Systeme: Grundlagen und Paradigmen]

slide-6
SLIDE 6

Zeit in verteilten Systemen

  • Computer haben eine lokale Uhr, die mit einer bestimmten

Frequenz H einen Interrupt auslöst (Clock Tick). Die Interrupts werden gezählt und messen die Zeit.

  • typische Frequenz H: 50 oder 60 Hz, i.e. 50/sec oder 60/sec
  • Problem: die Uhren unterschiedlicher Computer zeigen

unterschiedliche Zeiten an!

  • Problem 1: unterschiedliche Startzeiten → kann relativ leicht

gelöst werden

  • Problem 2: unterschiedliche Laufzeiten → schwieriger zu

lösen

6

slide-7
SLIDE 7

Universal Coordinated Time (UTC)

  • weltweite Standardzeit, Grundlage aller staatlicher

Zeiterfassungen

  • basiert auf TAI (Temps Atomique International), i.e.

gemittelte Atomzeit

  • UTC passt TAI regelmässig um Schaltsekunden der

Sonnenzeit an (Sonnensekunde wird permanent länger)

  • hat mittlere Greenwich-Zeit abgelöst
  • Empfänger für UTC-Sender mittlerweile recht billig

7

slide-8
SLIDE 8

Genauigkeit von Uhren

  • Chips haben eine Genauigkeit - Draftrate ρ - von etwa

10-5.

  • Beispiel:
  • Bei H = 60Hz sollte eine Uhr 216 000 mal pro Stunde

ticken.

  • Realistisch ist ein Wert zwischen 216 998 und 216 002.
  • eine Uhr läuft korrekt, wenn sie die vom Hersteller

angegebene Driftrate ρ einhält, auch wenn sie dann zu langsam oder schnell läuft.

8

slide-9
SLIDE 9

Uhrensynchronisation

  • Folge: zu einem Zeitpunkt t1 = t0 + ∆t nach der

Synchronisation zweier Uhren können die beiden Uhren maximal δ = 2ρ∆t auseinander liegen.

  • Beispiel:
  • ∆t = 20sec, ρ = 10-5 ⇒ δ = 0,4msec
  • Will man sicherstellen, dass zwei Uhren niemals mehr als

ein gewünschter Wert δ auseinander liegen, muss man die Uhren innerhalb von ∆tmax = δ/(2ρ) Sekunden synchronisieren.

  • Beispiel:
  • δ = 1msec, ρ = 10-5 ⇒ ∆tmax = 50sec

9

slide-10
SLIDE 10

Uhrensynchronisation

  • Nicht jeder Rechner hat einen UTC-Empfänger, so dass

keine externe Synchronisation durchgeführt werden kann.

  • Stattdessen gibt es Uhrensynchonisationsalgorithmen, die

auf der Verwendung weniger Zeitserver basieren.

10

slide-11
SLIDE 11

Der Algorithmus von Christian

  • Es wird die Existenz eines UTC-Empfängers im System

angenommen, der dann als Zeit-Server fungiert.

  • Jede andere Maschine sendet mind. alle δ/(2ρ) ein Time

Request an den Server, der so schnell wie möglich mit der aktuellen UTC antwortet.

  • Nun könnte man Uhr auf erhaltene UTC-Zeit setzen.
  • Erstes ABER:
  • Wenn Anfragender schnelle Uhr hat, dann müsste seine Uhr

zurückgesetzt werden. Verboten, da kein Zeitpunkt zweimal auftaucht darf!

  • Lösung: Uhr wird graduell angepasst, indem sie eine Weile

langsamer läuft, d.h. verringerte Zeitspanne pro Clock-Tick.

11

slide-12
SLIDE 12

Der Algorithmus von Christian

  • Zweites ABER:
  • Wegen Signallaufzeit für die Nachrichten ist Antwort, wenn

sie kommt, schon veraltet.

  • Lösung: Signallaufzeit wird gemessen bzw. geschätzt.
  • Annahme: Signallaufzeit in beide Richtungen gleich.
  • tneu = tserv + ((T4 - T1) - (T3 - T2)) / 2

12

aus: [Tanenbaum, van Steen. Verteilte Systeme: Grundlagen und Paradigmen]

slide-13
SLIDE 13

Network Time Protocol NTP

  • Entwickelt in den 1980er Jahren, inzwischen ein IETF RFC
  • Ziele
  • Clients sollen sich möglichst genau mit UTC synchronisieren

können, trotz stark schwankender Übertragungsverzöger- ungen im Netz

  • Bereitstellung eines zuverlässigen Dienstes mittels

Redundanz

  • Clients sollen in der Lage sein, sich oft zu synchronisieren,

Skalierbarkeit wird damit ein Thema

13

slide-14
SLIDE 14

Funktionsweise von NTP

  • Der NTP-Dienst wird von einem Netzwerk von Servern

erbracht.

  • Die Primary Servers sind direkt mit der UTC-Quelle

verbunden.

  • Die Secondary Servers synchronisieren sich mit den

Primary Servers.

  • Das Server-Netzwerk ist rekonfigurierbar,um auf Fehler

reagieren zu können.

14

slide-15
SLIDE 15

Funktionsweise von NTP

  • Die Server tauschen häufig Nachrichten aus, um

Netzwerkverzögerungen und Uhrungenauigkeiten zu messen.

  • Clients synchronisieren sich mit dem Server mit der

geringsten gemessenen Signallaufzeit.

  • NTP erreicht eine weltweite Genauigkeit von 1 bis 50 ms.

15

slide-16
SLIDE 16

Berkeley-Algorithmus

  • Entwickelt für eine Gruppe von Berkeley-Unix-Rechnern
  • Sinnvoll, wenn kein UTC-Server zur

Verfügung steht

  • Ein Rechner wird als Zeit-Server bestimmt
  • Zeit-Server fragt regelmäßig aktiv bei allen Rechner nach

aktueller Zeit und bildet Durchschnitt

  • Durchschnitt wird allen Rechnern mitgeteilt, die ihre Uhren

danach anpassen

16

slide-17
SLIDE 17

Berkeley-Algorithmus

17

a) Zeit-Daemon (Zeit-Server) sendet seine Zeit an alle b) jeder Rechner antwortet mit seiner Differenz c) Zeit-Daemon errechnet neuen Durchschnitt und sendet jedem Rechner Korrekturdifferenz

aus: [Tanenbaum, van Steen. Verteilte Systeme: Grundlagen und Paradigmen]

slide-18
SLIDE 18

Logical Time

  • Generell unmöglich, physikalische Uhren in verteilten

System absolut zu synchronisieren → unmöglich, basierend auf Zeit die Reihenfolge zweier beliebiger Ereignisse zu bestimmen.

  • Für einige Anwendungen benötigt man jedoch genau diese

Information, dafür aber keinen Bezug zur realen Zeit.

  • Lösung: Logische Zeit (logical time)

18

slide-19
SLIDE 19

Happened-Before-Beziehung

  • eingeführt von Leslie Lamport
  • a → b bedeutet: a hat vor b stattgefunden
  • auch relation of causal ordering
  • wenn in einem Prozess pi gilt: a →i b, dann gilt auch für das

Gesamtsystem: a → b

  • für jede Nachricht m gilt: send(m) → receive(m)
  • a → b und b→ c, dann auch a → c (Transitivität)
  • Ereignisse, die nicht in dieser Beziehung stehen, gelten als

nebenläufig

19

slide-20
SLIDE 20

Happened-Before: Beispiel

20

P1 P3 P2 a d h k g b c e f i j l m n

  • a → e → i → m; b → d → g → j → n; c → f → h → k → l
  • a → d, g → h, h → k, k → m
  • deshalb z. B.: a → g, g → m
  • nebenläufig z.B.: a, b, c; und e, d, f
slide-21
SLIDE 21

Umsetzung

  • Jeder Prozess Pi hat eine logische Uhr, die beim Auftreten

eines Ereignisses a abgelesen wird und den Wert Ci(a) liefert.

  • Dieser Wert muss so angepasst werden, dass er als C(a)

eindeutig im ganzen verteilten System ist.

  • Ein Algorithmus, der die logischen Uhren entsprechend

richtig stellt, muss folgendes umsetzen: Wenn a → b, dann C(a) < C(b).

21

slide-22
SLIDE 22

Umsetzung

  • Jeder Prozess Pi wendet den folgenden Algorithmus an, um

seine Uhr Ci richtig zu stellen:

  • Ci wird vor jedem neuen Ereignis in Pi um 1 erhöht
  • wenn Pi eine Nachricht N sendet, dann schickt er den

aktuellen Wert von Ci mit

  • bei Erhalt von (N, t) setzt Pi seine Uhr auf t, falls t > Ci,

danach Erhöhung um 1.

22

slide-23
SLIDE 23

Umsetzung: Beispiel

23

P1 P3 P2 a d h k g b c e f i j l m n

13 9 5 14 14 6 15 16 15 16 17 17 18 18

slide-24
SLIDE 24

Zusammenfassung

  • Die absolut selbe Zeit in allen Rechnern eines Systems kann

nicht erreicht werden.

  • Hardware-Synchronisation ist möglich, jedoch haben nicht

alle Rechner einen UTC- Empfänger

  • Synchronisationsalgorithmen für die physikalische Zeit

funktionieren recht gut (NTP).

  • In vielen Anwendungen genügt Wissen über die Ordnung

von Ereignissen ohne quantitative Zeitangaben → Verwendung logischer Zeit

24

slide-25
SLIDE 25

Verfahren zum gegen- seitigen Ausschluss

25

slide-26
SLIDE 26

Überblick

26

  • Begriff des gegenseitigen Ausschlusses
  • Algorithmen in

VS zum Erreichen des gegenseitigen Ausschlusses

  • Zentraler Algorithmus
  • verteilter Algorithmus
  • Token-Ring-Algorithmus
  • Vergleich
slide-27
SLIDE 27

Definition

  • Wenn sich zwei oder mehrere Prozesse beim Zugriff auf

gemeinsame Daten koordinieren müssen, um die Konsistenz der Daten zu erhalten, geschieht dies am einfachsten über das Konzept der kritischen Region.

  • Jeweils nur ein Prozess darf in einer kritischen Region aktiv

sein, d.h., es wird gegenseitiger Ausschluss (mutual exclusion) erreicht.

  • Ein-Prozessor-Systeme: Semaphore oder Monitore
  • Wie funktioniert das in verteilten Systemen?

27

slide-28
SLIDE 28

Zentraler Algorithmus

  • Einer der Prozesse wird zum Koordinator für eine kritische

Region bestimmt.

  • Alle anderen müssen sich nun zuerst an den Koordinator

wenden, bevor sie die entsprechende Region betreten.

  • Wenn die kritische Region frei ist, erhält der Prozess das

OK vom Server. Nach Abarbeitung der Aufgaben gibt der Prozess dieses Token zurück.

  • Ist die Region nicht frei, wird der anfragende Prozess in eine

Warteschlange aufgenommen. Er erhält erst das Token, wenn alle Prozesse vor ihm bedient wurden.

28

slide-29
SLIDE 29

Zentraler Algorithmus: Beispiel

(a) Prozess 1 bittet den Koordinator um Zugriff auf eine gemeinsam genutzte Ressource. Erlaubnis wird gewährt. (b) Prozess 2 bittet um Zugriff auf dieselbe Ressource. Koordinator antwortet nicht. (c) Sobald Prozess 1 Ressource freigibt, teilt er dies dem Koordinator mit, der dann die Anforderung von 2 beantwortet.

29

slide-30
SLIDE 30

Zentraler Algorithmus: Eigenschaften

  • gegenseitiger Ausschluss wird erreicht
  • fair: Tokens werden in Reihenfolge der Anfragen vergeben
  • einfach zu implementieren
  • nur 3 Nachrichten pro Zugang zu kritischer Region

(Anfrage, Erlaubnis, Freigabe)

30

  • Koordinator ist Single Point of Failure
  • Keine Antwort kann lange Warteschlange oder toten

Koordinator bedeuten

  • Performance Bottleneck in großen Systemen

+ _

slide-31
SLIDE 31

Verteilter Algorithmus

  • Besitzt keinen ausgewiesenen Koordinator.
  • Jeder Prozess besitzt eine logische Uhr
  • Wenn ein Prozess eine kritische Region betreten will,

sendet er ein Request an alle anderen Prozesse.

  • Erst wenn alle Prozesse ihr OK gegeben haben, kann der

Prozess die kritische Region betreten.

31

slide-32
SLIDE 32

Verteilter Algorithmus

nach Ricart und Agrawala, 1981:

32

slide-33
SLIDE 33

Ricart und Agrawala: Beispiel

33

(a) P0 bittet alle Prozesse um Erlaubnis, T0 = 8 P2 bittet alle Prozesse um Erlaubnis, T2 = 12 (b) P1 erteilt P0 und P1 Erlaubnis P2 erteilt P0 Erlaubnis, da T0 < T2 P0 hält Erlaubnis an P2 zurück, da T0 < T2 (c) P0 erteilt P2 nach eigenem Zugriff Erlaubnis

slide-34
SLIDE 34

Verteilter Algorithmus: Eigenschaften

34

  • Jeder Knoten ist ein Single Point of Failure (lässt sich durch

sofortige Bestätigungsnachrichten minimieren, aber nicht ausschalten)

  • Jeder Prozess muss bei jeder Entscheidung mitwirken, auch

wenn er selbst nicht konkurriert (Skalierbarkeit!)

  • mehr Nachrichten, größere Netzwerklast

_ Nun, warum überhaupt betrachten? →zeigt, dass verteilter Algorithmus möglich ist, und →dass hier noch Forschungsbedarf besteht!

slide-35
SLIDE 35

Token-Ring-Algorithmus

  • Prozesse werden in logischem Ring angeordnet (z.B. anhand

(Network-ID, Prozess-ID)-Kombination

  • Token kreist durch Ring.
  • Wenn Prozess, der Token bekommt, einen kritischen

Abschnitt betreten möchte → selbiges einmal tun, danach Token weitergeben

  • Ansonsten Token einfach weitergeben.

35

slide-36
SLIDE 36

Token-Ring: Eigenschaften

  • Korrektheit leicht zu sehen
  • fair: Token wird der Reihe nach vergeben → kein

Aushungern

36

  • tote Prozesse müssen erkannt werden
  • verlorene Token schwer zu erkennen (lange

Verweilzeit)

  • Koordinator muss verlorenes Token neu einspeisen

+ _

  • max. Wartezeit: alle anderen Prozesse in je einem kritischen

Abschnitt

slide-37
SLIDE 37

Vergleich der Algorithmen

37

Algorithmus Nachrichten pro Ausführung kritischer Abschnitt Verzögerung vor Eintritt [in Nachrichten] Probleme zentral 3 2 Ausfall Koordinator verteilt 2(n -1) 2(n -1) Ausfall eines Prozesses Token Ring 1 bis ∞ 0 bis n -1 verlorener Token

slide-38
SLIDE 38

Zusammenfassung

  • Gegenseitiger Ausschluss im verteilten System ist

schwieriger zu erreichen als in einem Ein-Prozessor-System.

  • Es existieren verschiedene Algorithmen mit

unterschiedlicher Bedeutung für die Praxis.

  • Vollkommene

Verteilung bringt hier viele Nachteile mit sich.

38