30.06.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!