Sistemi Distribuiti - Esercitazione BROADCAST Best-Effort Broadcast e Reliable Broadcast Valeria Anastasio Francesco Di Palma Federico Pisani Sistemi distribuiti – Esercitazione Broadcast Confronto BEST EFFORT BROADCAST RELIABLE BROADCAST RELIABLE UNIFORM BROADCAST beBroadcast(m) rBroadcast(m) beDeliver(m,originatore) rDeliver(m,originatore) urBroadcast(m) urDeliver(m,originatore) Validity No Duplication No Creation Validity No Duplication No Creation Validity No Duplication No Creation Agreement: se un Uniform Agreement: se un messaggio m è consegnato da un processo Pi allora m è prima o poi consegnato da ogni processo corretto Pj Dà garanzie anche se il mittente del messaggio si guasta. Riguarda solo il funzionamento dei processi corretti. Dà garanzie anche se il mittente del messaggio si guasta. Riguarda il funzionamento sia dei processi corretti che di quelli guasti. messaggio m è consegnato da un processo corretto Pi allora m è prima o poi consegnato da ogni processo corretto Pj La correttezza dell’algoritmo si fonda sulle proprietà del canale perfetto. Non ci sono garanzie se il sender si guasta Algo Lazy ; Algo Eager Sistemi distribuiti – Esercitazione Broadcast Broadcast - Esercizio 1.1 Best-Effort Broadcast (ma non Reliable) Ricevuto e Consegnato Ricevuto ma non Consegnato P1 P2 P3 Il processo P1 invia un messaggio a tutti i processi (compreso se stesso) attraverso il Best-Effort Broadcast, tramite il metodo beBroadcast(). P2 e P3 sono corretti P3 non consegnerà mai il messaggio inviato da P1 Sistemi distribuiti – Esercitazione Broadcast Broadcast - Esercizio 1.2 Reliable Broadcast (ma non Uniform) Ricevuto e Consegnato Ricevuto ma non Consegnato P1 P2 P3 Il processo P1 invia un messaggio a tutti i processi (compreso se stesso) attraverso il Reliable Broadcast, tramite il metodo rBroadcast(). P1 e P2 sono guasti P3 è corretto ma non consegnerà mai il messaggio inviato da P1 Sistemi distribuiti – Esercitazione Broadcast Broadcast - Esercizio 2.1 Ricevuto e Consegnato Reliable Broadcast (Algoritmo Lazy) Ricevuto ma non Consegnato P1 P2 P3 Il caso peggiore si verifica quando P1 invia un messaggio (ricevuto da tutti gli altri processi) e successivamente si guasta: allora, secondo le specifiche di RB – Lazy, i processi superstiti, appena sospetteranno P1grazie al pFD, rilanceranno il messaggio appena ricevuto dal processo sospettato. In definitiva, si ha un invio iniziale di N messaggi da parte di P1ed in seguito altri N reinvii, da parte degli N-1 processi superstiti (che riceveranno, quindi, ognuno N-1 messaggi): 2 N + (N ! 1)" (N ! 1) = N + (N ! 1) = N 2 ! N + 1 Sistemi distribuiti – Esercitazione Broadcast Broadcast - Esercizio 2.2 Reliable Broadcast (Algoritmo Lazy) Ricevuto e Consegnato Ricevuto ma non Consegnato P1 P2 P3 Nel caso in cui non si verifichino guasti, vengono inviati N messaggi; questo poiché P1 invia il proprio messaggio e coloro che lo hanno ricevuto non lo replicano ( P1 non è sospettato) Nel caso in cui P1si guasti, tutti i processi che hanno ricevuto da P1 ne vengono a conoscenza attraverso il pFD. Rifacendosi allora al caso dell’esercizio 2.1 e facendo attenzione al fatto che in questo caso si tratta di messaggi inviati e non ricevuti, si ottengono, oltre agli N invii iniziali, N rilanci da parte degli N-1 superstiti: N + (N - 1) N = N 2 Sistemi distribuiti – Esercitazione Broadcast Broadcast - Esercizio 2.3 Ricevuto e Consegnato Reliable Broadcast (Algoritmo Lazy) Ricevuto ma non Consegnato P1 P2 P3 Nel caso in cui non si verifichino guasti, per l’algoritmo RB – Lazy, l’unica chiamata al beBroadcast() è quella di P1 per l’invio del messaggio: T=1 Nel caso in cui P1 si guasti, tutti i processi che hanno ricevuto da questo lo sospettano mediante il pFD. Nel caso peggiore (tutti i processi hanno ricevuto da P ), quindi, ci saranno: 1 invocazione 1 del metodo beBroadcast() per l’invio da parte di P1 e N-1 invocazioni per i reinvii degli altri processi T = 1 + N-1 = N Sistemi distribuiti – Esercitazione Broadcast
© Copyright 2024 Paperzz