Hier ist ein Beispiel für verteiltes Computing:
1. Hintergrund
1.1 Asynchrones Shared Memory-Modell
Betrachten wir eine Sammlung verteilter Knoten, die über gemeinsam genutzte Speichervariablen kommunizieren. Es gibt einen Gegner, der steuert, wann ein Knoten Maßnahmen ergreift und wann Nachrichten zugestellt werden sollen. Die Berechnung ist asynchron , dh der Gegner kann die Schritte von Knoten um eine beliebige (endliche) Zeitspanne verzögern.
Sie können sich einen Schritt eines Knotens als einen Zustandsübergang seines lokalen Automaten (gemäß dem Algorithmus) vorstellen, bei dem der nächste Zustand durch den aktuellen Zustand und die Beobachtungen des Knotens seit dem letzten Schritt bestimmt wird.
1.2 Sicherheit und Lebendigkeit
Bei der formalen Überlegung zu den Eigenschaften eines asynchronen Algorithmus wird zwischen Sicherheits- und Lebensdauermerkmalen unterschieden. Informell kann eine
Sicherheitseigenschaft als Garantie dafür interpretiert werden, dass niemals etwas "Schlechtes" passiert. (Zum gegenseitigen Ausschluss wäre eine Sicherheitseigenschaft, dass keine zwei Knoten gleichzeitig in den kritischen Abschnitt eintreten.) Lebendigkeit kann andererseits als "etwas Gutes wird irgendwann passieren" interpretiert werden, z. B .: jeder Knoten endet irgendwann.
MMα , β∈ M2- nnαβ
SP⊆ MPM∖ P
Anwendung von Koenigs Infinity Lemma
Es ist nicht immer einfach zu erkennen, ob eine bestimmte Eigenschaft eine Sicherheitseigenschaft ist: Berücksichtigen Sie die Implementierung von Lese- / Schreib-Atomobjekten auf Basisvariablen für den gemeinsamen Speicher. Eine solche Implementierung sollte Anforderungen und deren Antworten so behandeln, dass sie so aussehen, als ob sie zu einem bestimmten Zeitpunkt eintreten und nicht gegen ihre Aufrufreihenfolge verstoßen. (Aufgrund der asynchronen Operation ist die tatsächliche Dauer zwischen Anforderung und Antwort möglicherweise ungleich Null.) Die Atomizität wird auch als Linearisierbarkeit bezeichnet . Abschnitt 13.1 von [A] gibt einen Beweis dafür, dass Atomizität eine Sicherheitseigenschaft ist. Der Beweis verwendet Koenigs Lemma, um zu zeigen, dass die Grenze einer unendlichen Folge von Ausführungen (von denen jede Atomicity erfüllt) auch Atomicity erfüllt.
[A] N. Lynch. Verteilte Algorithmen. Morgan Kaufmann, 1996.