Documente Academic
Documente Profesional
Documente Cultură
Un Model de Programare
Pseudocod
Descrierea datelor
Tipuri de baza
boolean bool
întreg int
real real / double
caracter char
şir string [lung-max]
Declararea variabilelor
tip id = expresie;
Definirea constantelor
Tablouri
enum id {enumerare_simboluri};
enum zile {l, ma, mi, j, v, s, d};
Instrucţiuni
Atribuirea variabila = expresie;
Decizia (if)
if (conditie) instructiune;
Ex.:
if (x>y) m = x;
else if (y>x) m = y;
else m = x+y;
Iteraţia (while)
Exemple:
Proceduri
Proceduri
Executie concurenta
co S1 || S2 || ... || Sn oc
Ex.1
int x=0, y=0, z;
co x = x+1; || y =y+1; oc
z=x+y;
co [cuantificator]{Sj}
Ex. 2
co [j=1 to n] {a[j]=0; b[j]=0;}
Procese concurente
real a[1:n,1:n],b[1:n,1:n],c[1:n,1:n];
process Prod [i = 1 to n, j= 1 to n] {
real sum = 0;
for [k = 1 to n]
sum = sum + a[i,k]*b[k,j];
c[i,j] = sum;
}
sincronizare (“await”)
<S;>
Solutie
int s = 1; /*s=1 – resursa liberă*/
/*s=0 – resursa folosita*/
process P[i=1 to n]{
while (true){
<await (s>0) s = s-1;>;
/*acaparare resursa*/
Sectiune critica;
<s = s+1>;
/*eliberare resursa*/
Sectiune necritica
}
}
Algoritmim paraleli si distribuiti 20
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Problema producător-consumator
Producator-consumator
Pentru sincronizarea accesului la buf, procesele folosesc doua
variabile
p – nr valori trimise de producer in buf
c – nr valori preluate de consumer din buf
Producator-consumator: solutia
int buf, p=0, c=0;
/*p = numarul de valori transmise in buf*/
/*c = numarul de valori preluate din buf*/
Bariere de sincronizare
timp
co [k = 1 to n]
{cod_proces-k;}
} oc
oc
co
co
co – se creeaza n procese
“oc” – cele n procese sunt distruse
oc
!! se consuma timp oc
Algoritmim paraleli si distribuiti 24
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
co co folosim un co
mecanism de
sincronizare
a tuturor barrier
oc
oc proceselor;
co à la sfarsitul
co fiecarui ciclu,
timp
bariera
sincronizeaza barrier
oc toate
oc
co procesele
co à procesele
trec sincron
la urmatoarea oc
oc iteratie !
oc
Algoritmim paraleli si distribuiti 25
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Varianta cu bariere
co[k = 1 to n]{
co
while (true){
cod_proces_k; barrier
barrier;
}
timp
}
barrier