You are on page 1of 7

CURS 14 Limbajul de programare Linda A fost creat in 1985 la univ. Yale din New York.

Este un limbaj de programare paralela s nc. !rocesele paralele interactionand intre ele printr"un procedeu special care utili#ea#a memorii partajate de tipul asociativ care poarta numele de spatiul tuplelor. $imbajul $inda este dotat cu o multime de primitive de procesare paralela primitive ce pot fi implementate in diferite alte limbaje de programare acestea denumind limbaje paralele % & $inda care are librarii & la care s"au adaugat primitive de procesare paralela. !rocesele $inda au o structura de tipul urmator%

'patiul tuplurilor contine tipuri de tupluri active si pasive. (uplul pasiv este format dintr"o serie de elemente definite prin tipul si valoarea lor. )dentificarea tuplurilor se face prin considerarea in totalitate sau numai a unei parti a elementelor care il compun ca tip de date si valoare. Astfel tuplul poate fi considerat ca memorie asociativa . *n e+emplu de tuplu pasiv ,sir '- . A/101.1213. (uplul activ este un proces care se poate adauga tuplului pasiv in spatii tupluri4...5 !rincipalele operatii care operea#a cu spatiul tuplurilor sunt operatiile de citire si de scriere. -peratiile de citire din spatiul tuplurilor se fac cu functiile in. inp. rd si rdp iar operatiile de scriere se fac cu ajutorul functiilor out. eval.

6unctia in,s3 are ca efect e+tragerea din spatiul tuplurilor a unui tuplu al carui format corespunde cu formatul lui s dar ca sablon cu doua tipuri de elemente% "fi+e,conv3 luat in consideratie numai ca tip daca sunt precedate de 7 sau ca tip si valoare pentru identificarea tuplului. "elemente variabile ce sunt date ca parametri formali in s. -peratia in este blocanta deci ea bloc8ea#a pe apelant pana cand este identificata in tuplul cu sablonul dat sau nu. 6unctia inp,s3 este versiunea neblocanta. 6unctiile in si inp returnea#a 91: daca tuplul cu sablonul respectiv a fost gasit si 9;: daca nu a fost gasit. 6unctia rd,s3 este o functie blocanta este similara functiei in,s3 dar are ca efect eliminarea tuplului identificat din spatiul tuplurilor. 6unctia rdp,s3 este similara rd,s3 dar este neblocanta. 6unctia out,t3 are ca efect adaugarea tuplului pasiv t in spatiul tuplurilor. -ut,9sir '-:.A/101.1.13 aceasta are ca efect adaugarea tuplului 9sir '-: in spatiul tuplurilor.-peratia este neblocanta. <eci procesul care o apelea#a isi poate continua e+ecutia. 6unctia de scriere eval,t3 are ca efect crearea unor procese printr"o operatie de tip fork,3 sau t8read pentru evaluarea fiecarui element din tuplul t iar dupa evaluarea tuplului t este plasat in spatiul tuplurilor dupa care procesele nou create devin pasive. -peratia eval poate fi blocanta sau neblocanta in functie de operatiile necesare pentru evaluarea elementelor tuplului t. !rocesele pun t8readurile nou create pot fi e+ecutate in paralel in mai multe procese ale sistemului. E+emplu de calcul al numarului !) prin metoda dreptung8iurilor%
=
1

= dx = = arctg arctg ; = 0 = ; 1+ x

!rogramul este urm% >define n w?1@n2 sum?;.;2 for,i?;2iAn2iBB3 C D?,1B;.53Ew2 'um t ?=.;@,1.;B+E+32 F sumE ? w2 )n versiunea paralela aria totala se imparte in n subarii cu o 4...5 n?1@w iar e+ecutia se va divi#a in p procesoare% '?n@p >define n 8G g 0
0

>define p 8 double work ,int start. int stop. double w3 int i2 double partialHnum2 double +2 partialHnum ? ;.;2 for ,i?start2iAstop2iBB3 +?,iB;.53Ew2 partial sumB?=.;,1.;B+E+32 return,partialHnum32 read main ,3 int i2 double result2 double w?1@n2 double s?n@p2 eval,9worker:.work,iEs.,iB1@+n.w332 sum?work,;.s.w32 for,i?12iAp2iBB3 in ,,9worker:.result32 sum + ? result3 F printf,...3 F 6unctia main este punctul de stop al prog . 6iecare proces e+ecuta functie work pt calculul ariilor si al intervalelor care ii revine. 6unctia realHmain este functie utili#ator care repr. !rocesul martor cu care incepe e+ecutia programului. /ucla for din procesul master crea#a p"1 procese de calcul a ariilor subintervalelor asignate valoarea fiind plasata in viabila partial num. $a ....instructiuni returnea#a procesul ...in spatiul tuplelor al carui prim camp este ...:worker: urmat de valoarea ariei ....de el. asa cum este definita in functia eval. <upa care isi inc8eie e+ecutia. !rocesul martor dupa crearea celor p"1 procese de lucru e+ecuta functia work depunand valoarea calculata in variabila sum a . !rin bulca for procesul master colectea#a din spatiul tuplurilor sumele partiale depuse de fiecare proces de lucru acumulandu"le in variabila sum. *tili#and modelul de programare paralela care poarta numele de marker" worker in limbajul $inda aspectele de paralelismnu apar e+plicit in program" procesul martor crea#a procesele de lucru care e+ecuta toate aceasi functie si depune re#ultatul si comunca intre ele prin spatiul tuplurilor. !rin stabilirea unei modalitati unice spatiul tuplurilor .!rocesul de progr. )n $inda devine mult mai clar decat alte limbaje. 'patiul tuplurilor fomea#a o retea distribuita la care au acces mai multe procese ce se e+ecuta in procesoare diferite.
1

!t. a asigura consistenta datelor operatiile care se fac asupra acestei structuri trebuie sa fie atomice. !t. aceasta $inda asigura e+cluderea mutuala a accesului la date in mod transparent. !rin e+ec. atomica a seriali#arii op. asupra datelor din spatiul tuplurilor. 'e pot construi si mecanisme de seriali#are ,semafoare3 !ot fi implementate atat pe sistem atat pe multiprocese cu spatiul unic al ... cat si pe sistem multi calcul dar cu mem distribuita. )mplementarea face posibila amplasarea tuplurilor in memoria partajata. 'eriali#area facandu"se prin e+cluderea mutuala. )mplementarea la nivelul multicalculator ridica problema de memorare si acces la spatiul tuplurilor. Au fost folosite mai multe metode. &ea mai simpla metoda de implementare este aceea in care spatiul tuplurilor este plasat intr"un singur mod. Accesul la spatiu se face prin retea prin metoda de transfer mesaje. <aca reteaua este comple+a se poate ajunge foarte usor la congestia retelei. *n alt mod de implementare este acela in care spatiul tuplurilor este replicat in toate nodurile retelei. )n aces ca# toate functiile de citire fara diminuarea tuplurilo ,rd si rdsp3 se re#olva la nivel local ,in fiecare nod3. -peratia de citire cu eliminarea tuplurilor ,in.inp3 implica informarea prin difu#iunea a tuturor celorlalte noduri asupra tuplurilor eliminate. )n mod similar se intampla si la adaugarea de tupluri noi cand trebuie adaugate in toate nodurile. !entru ca aceasta operatie sa fie eficienta trebuie ca calculatorul paralel sa dispuna de un sistem de comunicatii foarte performant ,&I"0 si &I"53 si considerat simplu deoarece ascunde complet modul de distributie a datelor. comunicatia si sincroni#area intre procese. dar cerintele de implementare sunt dificile si eficienta este mai slaba decat la alte limbaje. Limbajul de programare ORCA A fost creat de 8. /al si A. (anenbaum la *niv. din Amsterdam in 199;. Este un limbaj de nivel inalt proiectat pt. aplicatii in sist. distribuite care utili#ea#a procese create e+plicit. A fost de#voltat mai intai pe sistemele de op. Amoeba dar +tins si pe *ni+ sunt instante ale unor tipuri de date abstracte. $imbajul ascunde programatorului distrib. fi#ica a resurselor 8ardware si simulea#a date partajate intr"un mod ba#at pe replicarea datelor si difu#iunea lor intre noduri folosind un model special de memorie partajata distribuita ,<istributed '8ared memor <'I3 Modelul DSM Nu se ba#ea#a pe modelul direct de transfer mesaje deoarece autorii l"au considerat ineficient mai ales in modul de comunicare punct la punct folosind functiile de tip send si receive. Iodelul <'I foloseste conceptul de obiect partajat care asigura comunicatia intre procese. memoria fiind partajata atat intr"un spatiu unic de adrese cat si in sistemele distribuite de tip multicalculator in care spatiul de adrese nu este unic. fiecare calculator avand memorie proprie.

)n sistemele multiprocesor. struct. de date sunt memorate in mem. fi#ica partajata a sistemului cu spatiul unic de adrese. op. de acces fiind de tipul load@stare. &and un proces trebuie sa modifice o parte a unei structuri partajate at. el. tb. sa bloc8e#e ,lock3 accesul tuturor celorlalte procese la structura data. )n sist. multicalculator cu sp. multiplu de adrese op. de modificare impun si transfer de informatii. (impul de acces la date este mult diferit in functie de locali#area datelor astfel dc.o data este locali#ata in alt nod,calculator3 timpul de acces este cu cateva ordine de marime mai mare decat at. cand se afla in nodul propriu. $a sist. multiprocesor *IA iar la multicalc. N*IA in limb. -J&A procesele sunt create e+plicit de catre programator si nu implicit de compilator. &rearea dinamica a proceselor se face in mare parte ca in orice sist. de operare *N)D. deci prin apelul unei functii de tip fork nume 4parametru54-N,numar static352 instr. 6ork poate avea un nume sau poate fi anonima iar optional prin param. -N se poate specifica un procesor pe care se e+ec. fct. fork . )n ca#ul in care el lipseste se va e+ecuta in acelasi mod in care se e+ecuta procesul parinte. $imbajul -J&A nu accepta migrarea proceselor intre procesoare. !arametrii pe care un proces ii poate primi la creare pot fi in orice structura de date de 0 tipuri% "date de intrare nepartajate sau obiecte partajate. Atunci cand un proces primeste un parametru de instrare el va primi si copia parametrilor actuali. !rocesul parinte poate sa transmita procesului fiu orice obiect de date ca param. partajat . ca# in care obiectul de date va fi partajat intre procesul parinte si procesul fiu. &ele 0 procese comunica prin obiectul de date e+ecutand numai op. care sunt definite in tipul de date . <eparece proc. fiu poate transmite la randul sau obiectul partajat fiului sau. toate procesele de la bunic la urmasii sai se face prin intermediul alg. partajat. )n lb. -J&A un ob. partajat este o instanta a unui tip de date dat. *n tip de date abstract este form din o parte din specificatii si o parte de implementare . !artea de specificatii contine toate op. care se pot efectua asupra obiectului. )n limbajul -J&A o data ce un tip de date a fost definit obiecte de acel tip pot fi create prin declararea var. <e tipul respectiv. Iecanismul de definire a tipurilor de date abstracte permite incapsularee atat a datelor cat si a datelor nepartajate astfel incat acelasi tip de date poate fi utili#at atat la crearea ob locale nepartajate cat si a obiectelor partajate folosite de mai multe obiecte. 'incroni#area se impune atunci cand mai multe obiecte sunt accesate de mai multe procese care se e+ecuta concurent. -rca asigura sincroni#area prin 0 mecanisme% "e+cluderea mutuala si sincroni#area prin conditii. 'inc. prin conditii impune proceselor concurente sa astepte fiind blocate pana cand o conditie specifica devine adevarata. -biectele pot fi structurate ierar8ic intr"o ierar8ie de obiecte. *n tip de date poate fi utili#at la randul sau

pentru constructia unui nou tip de date . datele interne ale unui obiect fiind la randul lor obiecte. <ar ob. ierar8ice nu pot fi obtinute prin derivare . Implementarea pe sisstem de tip multicalculator $imbajul -J&A este construit pe sisteme distribuite care nu poseda memorie partajata. 'imularea datelor partajate se face prin replicarea obiectele de partajare reali#ata prin difu#iunea sigura a mesajelor

&opia obiectului din fiecare procesor poate fi accesata de toate procesele care se e+ecuta .-peratiile care nu fac nici o modificare in obiectul folosesc direct copia locala. -peratiile care modifica obiectul implica difu#ia in toate celelalte procesoare. )mplementarea limbajului -J&A se face pe 1 nivele "nivelul superior ,e+tern3 K repre#entat de programele de aplicatie "nivelul intermediar"repre#entat prin sistem e+ecutiv de timp real. J('"real time s stem "nivelul interior ,intern3 K sistem de difu#iune sigura Nivelul e+tern,aplicatie3 prin compilare va contine apeluri la J(' pt . crearea si lucrul cu obiecte de tipul worker. Nivelul intermediar este repre#entat de J(' si contine functii apelate de nivelul superior. 6unctiile J(' sunt primitive J('. J(' este locali#at in fiecare procesor si intretine o copie a ob. partajat care este actuali#at prin difu#iune. dar J(' considera ca difu#iunea este facuta corect. fara erori c8iar daca difu#iunea are loc intr"o retea supusa erorilor. Nivelul inferior. care"o asigura difu#ia sigura contine toate protocoalele si algoritmii de comunicatie. $imbajul -J&A pastrea#a copii multiple ale acelorasi obiecte ceea ce poate conduce la inconsistenta datelor.
L

J(' foloseste te8nica de a bloca toate copiile obiectului pe perioada modificarii lui. dar nu direct . ci prin intermediul primitivei de difu#iune indivi#ibila si sigura care asigura urmatoarele proprietati. 1.6iecare mesaj este transmis sigur de la sursa de sursa la destinatie 0.<aca 0 procesoare difu#ea#a simultan 0 mesaje m1.m0 atunci fie celelalte procesoare. fie toate celelalte procesoare primesc mesajele in ordinea m1"M m0 sau invers . dar niciodata amestecate . !t. indeplinirea proprietatii 0. J(' utili#ea#a un administrator de obiecte . reali#at printr"un (NJEA< pentru fiecare procesor.Aceste actuali#ea#a copiile locale ale obiectelor memorate in calc. respectiv. )n ca#ul operatiei de citire K se fac direct in copia locala. -peratiile de scriere se fac numai de catre administratorul de obiecte care le preia si apoi le difu#ea#a la toti administratorii de obiecte din retea. Accesarea unui obiect partajat de ccatre un proces. utili#. 'e face prin intermediul unei functii invoke prin care lucrea#a adm. de obiecte. 6iecare administrator intretine o coada de mesaje sosite pentru a fi procesate. dar ordinea de primire a mesajelor este aceeasi. deci toate co#ile de mesaje ale tuturor proc. sunt aceleasi. Ianevrarea lor este individuala. (ipul de lucru de tip 6)6-. !t. manevrarea unui mesaj. acesta este mai intai e+tras din varful co#ii. copia locala a obiectului este blocata. operatia este aplicata asupra copiei locale. dupa care copia este deblocata. !entru ca transmisia in retea sa fie sigura codificarea de scriere si de transmisie a informatiei este comple+a. utili#and coduri performante de detectie si corectie a erorilor.

You might also like