Ecco un esempio di calcolo distribuito:
1. Contesto
1.1 Modello di memoria condivisa asincrona
Consideriamo una raccolta di nodi distribuiti che comunicano utilizzando variabili di memoria condivisa. C'è un avversario che controlla quando un nodo prende provvedimenti e quando recapitare i messaggi. Il calcolo è asincrono , ovvero l'avversario può ritardare i passaggi dei nodi per qualsiasi periodo (finito) di tempo.
Puoi considerare un passaggio di un nodo come una transizione di stato del suo automa locale (secondo l'algoritmo) in cui lo stato successivo è determinato dallo stato corrente e dalle osservazioni del nodo dall'ultimo passaggio.
1.2 Sicurezza e vitalità
Quando formalmente ragioniamo sulle proprietà di un algoritmo asincrono, distinguiamo tra proprietà di sicurezza e vitalità. Informalmente, una
proprietà di sicurezza può essere interpretata come una garanzia che qualcosa di "cattivo" non accade mai. (Ad esempio, per l'esclusione reciproca, una proprietà di sicurezza sarebbe che due nodi non entrano contemporaneamente nella sezione critica.) La vivacità , d'altra parte, può essere interpretata come "alla fine accadrà qualcosa di buono", ad esempio: ogni nodo alla fine termina.
MMα , β∈ M2- nnαβ
SP⊆ MPM∖ P
Applicando l'infinito Lemma di Koenig
Non è sempre semplice vedere se una proprietà specifica è una proprietà di sicurezza: considerare l'implementazione di oggetti atomici di lettura / scrittura sopra le variabili di memoria condivisa di base. Tale implementazione dovrebbe gestire le richieste e le loro risposte in modo da farle apparire come se accadessero in qualche istante nel tempo e non violare il loro ordine di invocazione. (A causa dell'operazione asincrona, la durata effettiva tra richiesta e risposta potrebbe essere diversa da zero.) L'atomicità è anche nota come linearità . La sezione 13.1 di [A] fornisce una prova che Atomicity è una proprietà di sicurezza. La dimostrazione usa il lemma di Koenig per dimostrare che il limite di qualsiasi sequenza infinita di esecuzioni (ognuna delle quali soddisfa Atomicity) soddisfa anche Atomicity.
[A] N. Lynch. Algoritmi distribuiti. Morgan Kaufmann, 1996.