E 'possibile modificare l'algoritmo di mutua esclusione di Lamport per funzionare senza una garanzia FIFO?

3

Sto tentando di implementare una versione modificata dell'algoritmo Lamport Mutual Exclusion . L'algoritmo originale presuppone l'ordinamento dei messaggi FIFO tra i sistemi connessi, ma mi piacerebbe usare UDP un protocollo che non garantisce FIFO. È possibile modificare questo algoritmo per lavorare senza FIFO?

EDIT: Dimentica UDP. Basti pensare che si tratta di un protocollo in cui l'unico problema è che FIFO non è garantito. Questo è l'unico problema che mi riguarda in questo momento.

    
posta ConditionRacer 17.02.2013 - 07:51
fonte

1 risposta

5

L'ordine è l'ultimo dei tuoi problemi. UDP non solo non garantisce l'ordine di consegna, non garantisce la consegna a tutti .

L'algoritmo di Lamport richiede la cooperazione di tutti i processi non richiedenti che contenderebbero per una risorsa sotto forma di risposte. La perdita di un datagramma che trasporta una richiesta provocherebbe che gli altri processi non inviessero risposte. Quello o la perdita di una singola risposta indurrebbe il richiedente ad aspettare indefinitamente per qualcosa che non arriva mai.

L'unico modo per modificare l'algoritmo in modo che funzioni su un canale inaffidabile sarebbe utilizzare le stesse tecniche utilizzate per implementare canali affidabili. Il mio consiglio sarebbe rivalutare se vuoi re-inventare quella ruota o semplicemente passare a TCP, che (in modo affidabile) fa tutto ciò che funziona per te.

    
risposta data 17.02.2013 - 14:59
fonte

Leggi altre domande sui tag