Verteilte Algorithmen Motivation und Einführung PD Dr.-Ing. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik u. Informatik Technische Universität Berlin Verteiltes System – Einige Definitionen “A distributed computing system consists of multiple autonomous processors that do not share primary memory, but cooperate by sending messages over a communication network.” -- Henri Bal “A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.” -- Leslie Lamport “A distributed system is a collection of independent computers that appears to its users as a single coherent system” -- Andrew S. Tanenbaum G. Mühl VS / Motivation und Einführung 2 Verteiltes System – Eigene Definition > Autonome Rechner, die durch ein Netzwerk lose miteinander verbunden sind und miteinander durch Nachrichtenaustausch kommunizieren, um gemeinsam eine Gesamtfunktionalität zu gewährleisten. G. Mühl VS / Motivation und Einführung 3 Verteilte Systeme – Abgrenzung > Rechnernetze > Hier steht die Vernetzung der Rechner im Vordergrund und nicht die Kooperation der Rechner > Rechnernetze ermöglichen z.B. den Zugang zu einem entfernten Rechner per SSH > Parallelrechner > Haben im Gegensatz zu verteilten Systemen einen gemeinsamen physikalischen Speicher G. Mühl VS / Motivation und Einführung 4 Verteilte Systeme – Ziele > Leistungsgewinn durch echt nebenläufige Prozesse > Gemeinsames Knacken eines kryptografischer Schlüssels > Paralleles Suchen nach den Primfaktoren einer großer Zahl > Erhöhte Funktionalität und Flexibilität durch inkrementelle Erweiterbarkeit > Skalierung des Systems durch Hinzufügen von Rechnern > Bereitstellung entfernter Daten und Dienste > Zugriff auf mehrere Datenbanken (z.B. Bibliothekskatalog) > Nutzung brachliegender Rechenkapazität (z.B. SETI@home) > Fehlertoleranz durch Redundanz > Redundante Speicherung von Daten > Primary/Backup Server (Backup übernimmt bei Ausfall des Primary) G. Mühl VS / Motivation und Einführung 5 Weitere Gründe für den Einsatz verteilte Systeme > Wirtschaftlichkeit: Vernetzte PCs haben meist besseres Preis-Leistungsverhältnis als Supercomputer ⇒ Anwendung – falls möglich – auf mehrere kleine Rechner verteilen > Geschwindigkeit: Falls Anwendung gut parallelisierbar ist, ist eine sonst unerreichbare Leistung möglich > Vgl. auch Grid Computing > Ggf. (dynamische) Lastverteilung beachten G. Mühl VS / Motivation und Einführung 6 Verteilte Systeme – Eigenschaften und Folgen > Echt-Nebenläufige Prozesse mit unterschiedlicher Geschwindigkeit Nebenläufigkeit > Vieles Ereignisse passieren gleichzeitig > Abläufe sind nicht reproduzierbar Nichtdeterminismus ⇒ Mechanismen zur Koordination und zur Synchronisation von Aktivitäten (z.B. für exklusiver Zugriff auf Ressourcen) P1 P2 P3 Ein Prozessor G. Mühl P1 P2 P3 Drei Prozessoren VS / Motivation und Einführung 7 Verteilte Systeme – Eigenschaften und Folgen > Kein gemeinsamer primärer Speicher > Kommunikation nur durch Nachrichtenaustausch möglich > Kein Knoten hat globale Sicht auf den Gesamtzustand des Systems Zustandsverteilung ⇒ Mechanismen für eine konsistente Sicht auf den Zustand notwendig G. Mühl VS / Motivation und Einführung 8 Verteilte Systeme – Eigenschaften und Folgen > Nachrichtenlaufzeit ist unbestimmt, meist nicht beschränkt und variiert unvorhersagbar > Beispiel Ethernet: Hier hängt die Nachrichtenlaufzeit stark von der aktuellen Last des Netzwerks ab > Langsame Prozesse bzw. Verbindungen können nicht von ausgefallenen unterschieden werden ⇒ Keine adäquate Ausfallserkennung möglich G. Mühl VS / Motivation und Einführung 9 Verteilte Systeme – Eigenschaften und Folgen > Kommunikation ist fehleranfällig > Nachrichtenverlust, -duplizierung, -verfälschung ist möglich ⇒ Mechanismen zur Erkennung und zum Umgang mit Kommunikationsfehlern > Kommunikation ist unsicher > Es besteht die Gefahr, dass Nachrichten abgehört, mit Absicht verfälscht, hinzugefügt oder unterschlagen werden ⇒ Sicherheitsmechanismen G. Mühl VS / Motivation und Einführung 10 Verteilte Systeme – Eigenschaften und Folgen > Rechner und Netzwerkverbindungen können unabhängig voneinander ausfallen Teilweiser Ausfall möglich > In großen Systemen sind einzelne Ausfälle von Rechnern oder Netzwerkverbindungen wahrscheinlich > Ein Ausfall sollte nicht das gesamte System lahm legen, sondern Ausfälle von einzelnen Rechnern oder Netzwerkverbindungen sollten verkraftet werden ⇒ Fehlertoleranzmechanismen notwendig G. Mühl VS / Motivation und Einführung 11 Verteilte Systeme – Eigenschaften und Folgen > Unabhängige physikalische Systemuhren mit unterschiedlichen Geschwindigkeiten Uhrendrift ⇒ Mechanismen zum Ausgleich der unterschiedlichen Geschwindigkeiten notwendig Uhrensynchronisation > Aber die Genauigkeit der Uhrensynchronisation und die Auflösung der Uhren ist beschränkt und oft ist die relative Lage von Ereignissen zueinander wichtiger, als der genaue Zeitpunkt ihres Auftretens Logische Uhren G. Mühl gemessene Zeit C exakt vorgehend dC / dt > 1 nachgehend dC / dt < 1 Referenzzeit t VS / Motivation und Einführung 12 Verteilte Systeme – Eigenschaften und Folgen > Unterschiedliche administrative Domänen > Für jede Domäne ist ein eigener Administrator zuständig > Zentralisierte Administration in großen Systemen unmöglich ⇒ Dezentrale Administration ermöglichen und die Administration (soweit möglich und sicher) automatisieren > Komponenten sind heterogen Heterogenität > Interoperabilität zwischen Komponenten schwierig zu gewährleisten ⇒ Schnittstellenstandardisierung notwendig G. Mühl VS / Motivation und Einführung 13 Verteilten Systeme – Faustregeln für den Entwurf > System nur verteilen, wenn dies auch gewinnbringend ist; ansonsten lieber eine zentralisierte Lösung umsetzen > „Central point of failure” vermeiden > Ein Teilausfall sollte nicht das gesamte System lahm legen > Hierfür ist Redundanz notwendig > Auf Skalierbarkeit achten > Für eine wachsende Anzahl von Beteiligten, sollte die Performance nicht überproportional sinken > Auf Flaschenhälse achten > Mini-Prototypen lassen keine Rückschlüsse auf die Performanz eines großen Systems zu > Nur soviel Zugang erlauben, wie für die Ausführung einer Aufgabe gerade erforderlich ist G. Mühl VS / Motivation und Einführung 14 Verteilten Systeme - Schlussfolgerungen > Das Entwerfen, Implementieren, Testen und Absichern eines verteilten Systems ist erheblich aufwendiger als im Falle eines zentralisierten Systems > Nur bei geeigneter Gestaltung ist ein verteiltes System performanter, skalierbarer und fehlertoleranter sowie vielleicht auch ähnlich sicher wie ein zentralisiertes System > Voraussetzung hierfür ist das Verständnis der in verteilten Systemen auftretenden Phänomene, der resultierenden Probleme und die Kenntnis möglicher Lösungsansätze für diese > Gegenstand der Vorlesung sind adäquate Modelle sowie Konzepte und Algorithmen, die zum Verständnis und zur Beherrschung der in verteilten Systemen auftretenden Phänomene beitragen G. Mühl VS / Motivation und Einführung 15 Beispiele für konzeptionelle Probleme in Verteilten Systemen Konzeptionelle Probleme in VS > > > > > > > > > > > G. Mühl Verteilte Einigung (Konsens) Uhrensynchronisation Detektieren und Auflösen oder Verhindern von Verklemmungen Kausalitätstreue Beobachtungen Geheimnisvereinbarung und vertrauliche Datenübertragung über unsichere Kanäle Schnappschussproblem Erkennen der globalen Terminierung Verteilte Speicherbereinigung Wechselseitiger Ausschluss Konsistenzzusicherung bei replizierten Daten … VS / Motivation und Einführung 17 Problem der Zwei Armeen Graue Truppen Blaue Truppen 3000 4000 Graue Truppen 2000 Angriff um 6:00 ! ja, um 6:00 ! angekommen ? G. Mühl VS / Motivation und Einführung 18 Verteiltes make Rechner, auf dem der Übersetzer läuft 104 105 106 107 108 109 110 107 108 Zeit gemäß lokaler Uhr Datei test.class erzeugt Rechner, auf dem der Editor läuft 102 103 104 105 106 Zeit gemäß lokaler Uhr Datei test.java erzeugt Reale Zeit G. Mühl VS / Motivation und Einführung 19 Phantom-Deadlocks A t = 1, beobachte B ⇒ B wartet auf A t = 2, beobachte C ⇒ C wartet auf B A t = 3, beobachte A ⇒ A wartet auf C B B C C A A Falscher Schluss: zyklischer Wartegraph Verklemmung B B C G. Mühl C VS / Motivation und Einführung 20 Kausal inkonsistente Beobachtungen > Problem: Falsche Schlussfolgerung des Beobachters durch kausal inkonsistente Beobachtung > Eine unbegründete Pumpenaktivität erhöhte den Druck bis zum Bersten der Pipeline; daraufhin trat das Öl aus dem Leck aus, was durch den Druckverlust angezeigt wird! DruckMesser Pumpe Leck Druckmesser Pumpe Beobachter G. Mühl VS / Motivation und Einführung 21 Verteilte Geheimnisvereinbarung > Problem: P1 und P2 wollen sich über einen unsicheren Kanal auf einen gemeinsamen geheimen Schlüssel einigen und mit diesem anschließend ihre Kommunikation verschlüsseln P3 P1 G. Mühl P2 VS / Motivation und Einführung 22 Grundlegende Modelle für verteilte Systeme Verteiltes System – Eine abstrakte Sicht > Ein verteiltes System ist ein zusammenhängender Graph, bestehend aus einer Menge von Knoten und Kanten > Knoten werden oft auch als Prozesse, Rechner etc. bezeichnet > Kanten werden oft auch als Links, Kanäle etc. bezeichnet > Die Knoten können über die Kanäle Nachrichten mit ihren jeweiligen direkten Nachbarn austauschen > Mittels Routing können auch beliebige Knoten kommunizieren G. Mühl VS / Motivation und Einführung 24 Default für die Vorlesung Netzwerk-Topologien > Topologie ist ein ungerichteter Graph G = (V, E) > Knotenmenge V = {v0,…,vn-1} > Kantenmenge E = {e0, …, em-1}, ei = (vi_1,vi_2) > Statische vs. dynamische Topologie > Statische: > Dynamische: G. Mühl Knoten- und Kantenmenge ändern sich nicht Knoten- und Kantenmenge können sich mit der Zeit ändern VS / Motivation und Einführung 25 Spezielle Topologien > Ring > > > > > Anzahl Knoten = Anzahl Kanten (n = m) E = {(vi, vj) | j = (i + 1) mod n} Knotengrad (Nachbarn pro Knoten): 2 Knotengrad konstant bei Skalierung Durchmesser (längster kürzester Pfad) ⌊n / 2⌋ > Baum > Zusammenhängender Graph ohne Zyklen > m=n-1 G. Mühl VS / Motivation und Einführung 26 Spezielle Topologien > Stern > > > > > Spezieller Baum mit zentralem Knoten v0 E = {(v0, vi) | i ≠ 0} Nachbarn pro Knoten: 1 bzw. n – 1 Durchmesser 2 Nicht (unbegrenzt) skalierbar > Vollständiger Graph > > > > > G. Mühl m = n (n – 1) / 2 E = {(ei_1, ei_2 | i_1 < i_2) Nachbarn pro Knoten: n – 1 Durchmesser 1 Nicht (unbegrenzt) skalierbar VS / Motivation und Einführung 27 Gitterstrukturen 4x4-Gitter 4x4-Torus > Eigenschaften > Konstanter Knotengrad bei Skalierung > Erweiterbarkeit in kleinen Inkrementen > Gute Unterstützung von Algorithmen mit lokaler Kommunikationsstruktur (Modellierung physikalischer Prozesse) G. Mühl VS / Motivation und Einführung 28 Vollständige Bäume Binärbaum Binärer X-Baum > Eigenschaften vollständiger k-närer Baum bzw. X-Baum > > > > G. Mühl h = ⌊logk n⌋ (Logarithmischer Höhe) Erweiterbar in Potenzen von k Konstanter Knotengrad bei Skalierung Knotengrad maximal k + 1 (bzw. maximal k + 3) VS / Motivation und Einführung 29 Hyperwürfel > Hyperwürfel (engl.: Hypercube) = Würfel der Dimension d > Rekursives Konstruktionsprinzip > Hyperwürfel der Dimension 0: Einzelner Knoten > Hyperwürfel der Dimension d + 1: „Nimm zwei Würfel der Dimension d und verbinde die korrespondierenden Ecken“ 0 G. Mühl 1 2 3 4 VS / Motivation und Einführung 30 Eigenschaften von Hyperwürfeln > Anzahl der Knoten n = 2d > Anzahl der Kanten m = d 2d−1 Ordnung O(n log n) > Maximale kürzeste Weglänge zwischen zwei Knoten (tritt auf bei diagonal gegenüberliegende Ecken) d = log n Ordnung O(log n) > Viele Wegealternativen Fehlertoleranz > Knotengrad = d (nicht konstant bei Skalierung!) > Mittlere Weglänge = d / 2 > Einfaches Routing von einzelnen Nachrichten > XOR von Sende- und Zieladresse (je ein Bitvektor mit d Bits) > Dimensionen, in deren Bits Einsen im Ergebnis stehen nacheinander abarbeiten. Ist die Reihenfolge hierbei egal? G. Mühl VS / Motivation und Einführung 31 Zufallsnetzwerke > Erzeugung eines Zufallsnetzwerks mit n Knoten und m Kanten > Wähle m-mal zufällig zwei Knoten und verbinde diese durch eine Kante > Eigenschaften Wahrscheinlichkeit > Für m > n / 2 bildet sich eine große Komponente mit kurzen Wegen zwischen den enthaltenen Knoten > Knotengrad ist näherungsweise Poisson-verteilt Quelle: [1] Knotengrad G. Mühl VS / Motivation und Einführung 32 Small World-Netzwerke > Eigenschaften > Hoher Clustering-Koeffizient > Kurze Wege regelmäßig (p = 0) > Erzeugung nach Watts und Strogatz [2] > Ausgangspunkt ist ein Ring, in welchem jeder Knoten mit seinen k nächsten Knoten verbunden ist > Wähle für jede Kante mit Wahrscheinlichkeit p einen neuen, zufälligen Knoten > Hier: Mittlerer Knotengrad k G. Mühl Small World zufällig (p = 1) VS / Motivation und Einführung 33 Skalenfreie Topologien > Eigenschaften zusätzlich zu denen der Small World-Topologien > Verteilung der Anzahl der Nachbarn folgt P(k) ∼ k -γ ⇒ Viele Knoten mit wenigen Nachbarn ⇒ Wenige Knoten (Hubs) mit vielen Nachbarn > Nah an vielen realen Netzwerken (z.B. Internet, WWW, soziale Netzwerke) G. Mühl Quelle: [1] Eingangsgrad der Web-Seiten des WWWs Quelle: [1] VS / Motivation und Einführung 34 Skalenfreie Topologien > Erzeugung durch Preferential Attachment > Start mit einer kleinen Anzahl von Knoten m0 > In jedem Schritt wird ein Knoten hinzugefügt und mit m ≤ m0 anderen Knoten verbunden > Hierbei wird ein Knoten i mit Grad ki mit der Wahrscheinlichkeit P(ki) = ki / ∑j kj gewählt > „Die Reichen werden reicher“ > Für eine mit diesen Regeln erzeugte Topologie gilt: γ = 3 G. Mühl VS / Motivation und Einführung 35 Default für die Vorlesung Kanaleigenschaften (aus Sicht der Prozesse) > Zuverlässigkeit > Zuverlässig: Jede gesendete Nachricht kommt genau einmal und unverändert an > Unzuverlässig: Es können Fehler auftreten > Verlust: Gesendete Nachricht wird nicht empfangen > Duplizierung: Gesendete Nachricht wird mehrfach empfangen > Verfälschung: Gesendete Nachricht wird verfälscht empfangen > Hinzufügen: Nicht gesendete Nachricht wird empfangen > Ordnung > Ungeordnet: > FIFO: G. Mühl Nachrichten können sich überholen Nachrichten können sich nicht überholen VS / Motivation und Einführung 36 Default für die Vorlesung Kanaleigenschaften (aus Sicht der Prozesse) > Kapazität > Unbeschränkt: Beliebig viele Nachrichten im Kanal möglich > Beschränkt: Maximal n Nachrichten gleichzeitig im Kanal > Bei Überlauf entweder Verwerfen von Nachrichten oder Blockieren bis wieder Platz im Kanal ist > Richtung > Bidirektional: Senden und Empfangen in beide Richtungen möglich > Unidirektional: Senden und Empfangen nur in eine Richtung G. Mühl VS / Motivation und Einführung 37 Default für die Vorlesung Kanaleigenschaften (aus Sicht der Prozesse) > Synchron vs. Asynchron > Asynchron: Das Senden einer Nachricht ist nicht blockierend > Synchron: Das Senden einer Nachricht ist blockierend > Der Sender wird blockiert, bis der Empfänger die Nachricht abgenommen hat; Implementierung durch implizite Bestätigung Asynchron G. Mühl Synchron VS / Motivation und Einführung 38 Verteilter Algorithmus > Läuft auf den Knoten des Systems in Form von Prozessen > Wir betrachten nur einen Prozess pro Knoten; daher verwenden wir beide Begriffe oft synonym > Auf verschiedenen Knoten können unterschiedliche Teile des Algorithmus ablaufen > Die Knoten kommunizieren, indem sie Nachrichten über Kanäle austauschen G. Mühl VS / Motivation und Einführung 39 Zustand eines Verteilen Algorithmus > Jeder Knoten hat einen lokalen Zustand; dieser besteht aus den lokalen Variablen des Algorithmus > Der Zustand eines Kanals besteht aus den in ihm befindlichen Nachrichten > Der Zustand eines verteilten Algorithmus besteht aus > den Zuständen der Knoten und > den Zuständen der Kanäle G. Mühl VS / Motivation und Einführung 40 Verarbeitungsmodell > Berechnungen werden von außen angestoßen > Initiale Aktion wird beim Start des Algorithmus zuerst ausgeführt > Danach wartet jeder Prozess passiv auf den Eingang einer Nachricht > Geht eine Nachricht ein, so wird eine entsprechende atomare Aktion ausgeführt > Zwischenzeitlich eintreffende Nachrichten werden gepuffert > Eine Aktion kann den lokalen Zustand des Prozesses verändern und Nachrichten an andere Prozesse aussenden G. Mühl Prozess passiv Nachricht empfangen Aktion ausgeführt aktiv P1: {Init} SEND(Ping) TO P2; P2: {RECEIVE (Ping) from P1} SEND(Pong) TO P1; VS / Motivation und Einführung 41 Synchrones Systemmodell > Die maximale Dauer von Aktionen und die maximale Laufzeit von Nachrichten sind beschränkt und bekannt > Beispiel: Aktionen brauchen keine Zeit, Nachrichten exakt eine Zeiteinheit. Dann können verteilte Algorithmen in synchronisierten Runden ablaufen > Im synchronen Modell können Entscheidungen aufgrund des Ablaufs der Zeit getroffen werden können > Beispiel: Wird eine erwartete Nachricht nicht innerhalb der maximalen Laufzeit empfangen, kann sicher auf einen Fehler (Knotenausfall, Nachrichtenverlust etc.) geschlossen werden G. Mühl VS / Motivation und Einführung 42 Asynchrones Systemmodell > Aktionen und Nachrichten können beliebig lange dauern bzw. verzögert werden oder die Schranken sind nicht bekannt > Aus dem zeitlichen Ablauf (z.B. Timeouts) können keine (sicheren) Informationen gewonnen werden > Beispiel: Wird eine Nachricht nicht vor einem Timeout empfangen, so gibt es dafür mehrere mögliche Ursachen 1. Die Nachrichtlaufzeit ist länger als gewöhnlich 2. Die Nachricht ist verloren gegangen 3. Der sendende Prozess hat die Nachricht später als normal abgeschickt 4. Der sendende Prozess ist abgestürzt, bevor er die Nachricht senden konnte G. Mühl VS / Motivation und Einführung 43 Synchrones vs. Asynchrones Systemmodell > Algorithmen für Probleme in synchronen Systemen > Oft existieren einfache Algorithmen, diese sind aber meist nicht direkt oder nur eingeschränkt einsetzbar, da sie unrealistische Annahmen machen > Algorithmen für Probleme in asynchronen Systemen > Für viele Probleme existieren keine Algorithmen > Wenn sie existieren, sind sie oft komplex und ineffizient > Wenn für ein Problem aber ein Algorithmus existiert, so ist dieser meist gut einsetzbar G. Mühl VS / Motivation und Einführung 44 Default für die Vorlesung Atommodell > Ist ein teilsynchrones Modell > Unterschied zum asynchronen Modell: Aktionen sind zeitlos > Empfängt ein Prozess eine Nachricht, ändert sich sein lokaler Zustand entsprechend der Aktion und er kann instantan Nachrichten aussenden > Zeit-Raum-Diagramm: Graphische Darstellung von (lokalen Ereignisse und) Interaktionen aller Prozessoren P1 P2 P3 G. Mühl VS / Motivation und Einführung 45 Beispiel: Verteilter Maximum-Algorithmus > Eine Gruppe Philosophen sitzt an einem runden Tisch und will den ältesten unter ihnen bestimmen > Jeder Philosoph kann aber nur mit seinen beiden Nachbarn kommunizieren 72 114 102 60 84 G. Mühl 96 VS / Motivation und Einführung 46 Beispiel: Verteilter Maximum-Algorithmus {INIT}: // wird von jedem Philosophen initial ausgeführt meinMax := <eigenes Alter>; SEND(<linker Nachbar>, meinMax); SEND(<rechter Nachbar>, meinMax); {RECEIVE (<linker Nachbar>, nachbarMax)} IF (nachbarMax > meinMax) THEN meinMax := nachbarMax; SEND(<rechter Nachbar>, meinMax); ENDIF {RECEIVE (<rechter Nachbar, nachbarMax)} IF (nachbarMax > meinMax) THEN meinMax := nachbarMax; SEND(<linker Nachbar>, meinMax); ENDIF G. Mühl Atomare Aktionen VS / Motivation und Einführung 47 Beispiel: Verteilter Maximum-Algorithmus > Aufgrund unterschiedlicher Nachrichtenlaufzeiten können verschiedene Abläufe auftreten 72 Terminierung 114 114 60 114 114 96 84 102 96 102 114 114 tempus fugit G. Mühl VS / Motivation und Einführung 48 Beispiel: Verteilter Maximum-Algorithmus > Gibt es mehrere mögliche Abläufe zu einer Eingabe? > Führt jeder Ablauf zum korrekten Ergebnis (hier 114)? > Wie viele Nachrichten werden minimal gebraucht und wann tritt dieser Fall ein? > Wie viele Nachrichten werden maximal oder durchschnittlich gebraucht? Wovon hängt das ab? > Woher sollen die Philosophen wissen, dass sie den Algorithmus starten sollen? > Reicht es aus, wenn ein beliebiger Philosoph den Algorithmus startet? G. Mühl VS / Motivation und Einführung 49 Beispiel: Verteilter Maximum-Algorithmus > Terminiert der Algorithmus immer? > Wie lange dauert es minimal, maximal oder durchschnittlich, bis der Algorithmus terminiert? > Woran erkennt ein einzelner Philosoph die Terminierung? > Was passiert, wenn mehrere Philosophen das gleiche Alter haben? G. Mühl VS / Motivation und Einführung 50 Eigenschaften von Algorithmen > Deterministisch vs. Nichtdeterministisch > Deterministisch: Stets gleicher Ablauf bei gleicher Eingabe > Nichtdeterministisch: Verschiedene Abläufe bei gleicher Eingabe möglich > Determiniert vs. nichtdeterminiert > Determiniert: Stets gleiches Ergebnis bei gleicher Eingabe > Nichtdeterminiert: Unterschiedliche Ergebnisse bei gleicher Eingabe möglich G. Mühl VS / Motivation und Einführung 51 Eigenschaften von Algorithmen > Terminierend: Terminieren für jede Eingabe nach endlich vielen Schritten > Partiell korrekt: Wenn sie terminieren, liefern sie immer das korrekte Ergebnis > Total korrekt: Sind terminierend und partiell korrekt G. Mühl VS / Motivation und Einführung 52 Eigenschaften Verteilter Algorithmen > Sind (bis auf wenige Ausnahmen) nichtdeterministisch > Ursache sind z.B. unvorhersagbare Nachrichtenlaufzeiten und variierende Ablaufgeschwindigkeiten > Mittels Synchronisationsmechanismen kann Nichtdeterminismus entgegengewirkt werden, allerdings verringert dies die mögliche Parallelität > Es gibt sowohl determinierte als auch nichtdeterminierte verteilte Algorithmen G. Mühl VS / Motivation und Einführung 53 Erwünschte Eigenschaften Verteilter Algorithmen > Verteilte Algorithmen sollen in der Regel total korrekt sein > Aber nicht für jedes zu lösende Problem gibt es einen total korrekten Algorithmus; dann hilft oft ein Algorithmus mit abgeschwächten Anforderungen, z.B. bezüglich der Terminierung > Manche Algorithmen sollen nicht terminieren (z.B. fortlaufende Uhrensynchronisation); dann wird stattdessen oft die Erfüllung anderer Bedingungen (z.B. einer Invariante) verlangt G. Mühl VS / Motivation und Einführung 54 Zeitkomplexität Verteilter Algorithmen > Variable Zeitkomplexität > Aktionen zeitlos > Nachrichten benötigen maximal eine Zeiteinheit > Einheitszeitkomplexität > Aktionen zeitlos > Nachrichten benötigen genau eine Zeiteinheit > Achtung: Es gilt nicht immer variable Zeitkomplexität ≤ Einheitszeitkomplexität > Grund: Die variable Zeitkomplexität erlaubt Abläufe, welche die Einheitszeitkomplexität nicht gestattet G. Mühl VS / Motivation und Einführung 55 Literatur 1. 2. G. Mühl S. Strogatz. Exploring complex networks. Nature, 410:268--276, 2001. D. Watts and S. Strogatz. Collective Dynamics of 'Small-World' Networks. Nature, 393:440--442, 1998. VS / Motivation und Einführung 56