Leader (and sub Leader) Election per uniformare e ... - Automatica
Leader (and sub Leader) Election per uniformare e ... - Automatica
Leader (and sub Leader) Election per uniformare e ... - Automatica
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ia e sfrutt<strong>and</strong>o queste si riescono ad ottenere<br />
prestazioni migliori dell’algoritmo 2LCR in termini<br />
di tempo (che in termini di numero di<br />
messaggi). Entr<strong>and</strong>o un minimo in dettaglio la<br />
prima cella di memoria di ogni nodo e’ inizializzata<br />
al valore di UID del nodo dell’istante in<br />
cui inizia la leader election mentre la seconda e’<br />
inizializzata a zero, come procede l’algoritmo:<br />
ogni processo trasmette il proprio UID nell’anello;<br />
ogni processo che riceve un UID lo<br />
confronta con il proprio:<br />
• se l’UID ricevuto e’ maggiore di quello<br />
memorizzato nella prima cella di memoria<br />
del nodo del processo, il processo<br />
mantiene il proprio UID, mette nella seconda<br />
cella di memoria l’UID memorizzato<br />
nella prima, memorizza quello ricevuto<br />
nella prima cella e lo trasmette,<br />
• se l’UID ricevuto e’ minore di quello memorizzato<br />
nella prima cella di memoria del<br />
nodo del processo ma maggiore di quello<br />
memorizzato nella seconda cella, il processo<br />
mantiene il proprio UID, mette l’UID<br />
ricevuto nella seconda cella di memoria e<br />
lo trasmette,<br />
• se l’UID ricevuto e’ minore di quello memorizzato<br />
nella seconda cella di memoria del<br />
nodo del processo, il processo mantiene il<br />
proprio UID e non trasmette alcun UID,<br />
• se l’UID ricevuto e quello contenuto nella<br />
prima cella sono uguali il processo passa<br />
nello stato di leader,<br />
• se l’UID ricevuto e quello contenuto nella<br />
seconda cella sono uguali il processo passa<br />
nello stato di sottoleader.<br />
In pratica si basa sempre sull’algoritmo<br />
LCR, consta di un’unica passata, ogni nodo<br />
ha due celle di memoria che memorizzano<br />
il massimo e il sottomassimo dei valori che<br />
sono già passati <strong>per</strong> il nodo. Ad ogni valore<br />
che arriva ad un nodo questo lo confronta<br />
dapprima con quello che ha memorizzato come<br />
massimo e se è maggiore questo diventa il<br />
nuovo massimo e il vecchio massimo diventa<br />
sottomassimo, altrimenti si verifica se è<br />
maggiore del sottomassimo, in caso positivo il<br />
valore arrivato diventa il nuovo sottomassimo<br />
altrimenti la situazione rimane immutata. Si<br />
noti come quest’algoritmo fonrisca gia’ di <strong>per</strong><br />
se’ l’infromazione completa a tutti i nodi. E’<br />
inoltre importante sottolineare come leader e<br />
sottoleader vengano individuati su dati presi<br />
in uno stesso momento evit<strong>and</strong>o cosi’ di creare<br />
bisticci temporali.<br />
Analisi delle complessita’<br />
Il numero di transizioni necessarie<br />
all’algoritmo e’: T (n) = Θ(n)<br />
e il numero di messaggi prodotti dalla<br />
rete e’ nel caso peggiore M(n) = Θ(n 2 )<br />
ma normalmente inferiore a questo up<strong>per</strong>bound.<br />
Si noti che anche in questo caso vi<br />
e’ informazione completa da parte di tutti i<br />
nodi e come <strong>per</strong> tutti gli algoritmi sviluppati<br />
a partire dall’algoritmo LCR non e’ necessario<br />
conoscere la taglia dell’anello.<br />
9.7.6 Algoritmi LCR e derivati con funzionali<br />
dipendenti da piu’ nodi [anello unidirezionale]<br />
Nel caso si vogliano utilizzare dei funzionali<br />
dipendenti da piu’ nodi <strong>per</strong> confrontarli si<br />
dovra’ modificare la natura degli UID, l’UID<br />
rimarra’ sempre un valore c = kn + m dove<br />
n e’ il numero totale dei nodi e m il numero<br />
del nodo in considerazione mentre k diverra’<br />
il valore del funzionale.<br />
In questo caso si dovra’ introdurre una fase<br />
preliminare, prima dell’utilizzo degli algoritmi<br />
di leader election illustrati precedenza; nella<br />
quale fase verranno calcolati i funzionali e<br />
dopo che si sara’ proceduto alle transizioni<br />
necessarie al calcolo di questi.<br />
Nel caso che stiamo analizz<strong>and</strong>o cioe’ di<br />
anelli monodirezionali i messaggi che possono<br />
viaggiare solo in una direzione, se il funzionale<br />
del nodo m dipende ad esempio anche dallo<br />
stato del nodo m + 1, verso il quale puo’<br />
soltanto inviare messaggi e non riceverne<br />
direttamente, affinche’ il nodo m riceva lo<br />
stato del nodo m + 1 questo dovrebbe girare<br />
<strong>per</strong> tutto l’anello; con un piccolo accorgimento<br />
si puo’ risolvere questo problema: l’UID del<br />
nodo m non verra’ calcolato dal nodo m stesso<br />
bensì dal nodo m + xdx che e’ l’ultimo nodo<br />
dal quale dipende il funzionale del nodo m.<br />
Gli algoritmi non <strong>sub</strong>iscono problemi al<br />
funzionamento anche se i nodi al primo passo<br />
non trasmettono il proprio UID ma quello di<br />
40