Sunteți pe pagina 1din 2

Universitatea Tehnic a ,,Gheorghe Asachi din Ias i Facultatea de Automatic as i Calculatoare

Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i

Laborator nr. 11 Alegerea leader-ului

an univ. 2013 2014

Algoritmul LCR (LeLann, Chang s i Roberts)

s i va Algoritmul LCR impune sensul de parcurgere st angadreapta pentru inel. Fiecare unitate de procesare pi transmite propriul identicator idi c atre vecinul din st anga, apoi va as tepta un mesaj de la vecinul din dreapta. Se disting urm atoarele 3 cazuri: 1. dac a id -ul recept ionat este mai mare dec at id -ul propriu, atunci se va transmite noul id (cel recept ionat) c atre st anga; 2. dac a id -ul recept ionat este mai mic dec at id -ul propriu, atunci procesul curent va ignora acest mesaj ( n sensul c a nu va transmite noul id c are vecinul din st anga); 3. dac a id -ul recept ionat este propriul id , atunci procesul curent se va declara lider s i va transmite n inel un mesaj de terminare. Algoritmul 1 expune pseudocodul algoritmului LCR. Notat ii: idi reprezint a identicatorul unit a tii de procesare pi . starei memoreaz a starea curent a a unit a tii de procesare pi (adormit , trezit ). statuti memoreaz a starea nal a a unit a tii de procesare pi (lider sau non lider). Premise: Init ial lider = necunoscut s i statuti = adormit . In Figura 1 este prezentat un exemplu de rulare pentru un inel cu 8 procese.

Aplicat ii

Implementat i, utiliz and MPI, algoritmul prezentat n laborator. Pentru topologia de tip inel poate utilizat a o topologie de tip cartezian cu o linie s i n coloane (unde n reprezint a num arul de procese pentru care rulat i aplicat ia).

Universitatea Tehnic a ,,Gheorghe Asachi din Ias i Facultatea de Automatic as i Calculatoare

Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i

Algoritmul 1 Algoritmul LCR


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:

function LCR LE( pi , starei , statuti , lider) while true do switch do case nu primeste nici un mesaj : if starei = adormit then starei trezit trimite < id nou, idi > spre stanga end if break case primeste < id nou, id > dinspre dreapta if id = idi then statuti lider lider idi trimite < lider, lider > catre stanga break while end if if id > idi then trimite < id nou, id > catre stanga end if break case primeste < lider, id > dinspre dreapta statuti non lider lider id trimite < lider, lider > catre stanga break while end while end function

Figura 1: Algoritmul LCR exemplu de execut ie pentru un inel cu 8 procese