18.04.2013 Views

Tehnici de implementare a concurentei în analiza si proiectarea ...

Tehnici de implementare a concurentei în analiza si proiectarea ...

Tehnici de implementare a concurentei în analiza si proiectarea ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

unor mecanisme <strong>de</strong> <strong>si</strong>ncronizare <strong>de</strong> nivel scazut, specifice limbajelor <strong>de</strong> programare<br />

procedurale cum ar fi semafoarele ([DIJ68]) sau regiunile critice conditionale<br />

([HAN72], [HAN73]).<br />

Abordarea omogena introduce un concept nou, <strong>si</strong> anume acela <strong>de</strong> obiect activ.<br />

Un obiect activ este un obiect care poate controla <strong>si</strong> planifica executia propriilor<br />

operatii. Astfel, obiectele <strong>de</strong>tin fire <strong>de</strong> executie proprii care (<strong>în</strong> majoritatea mo<strong>de</strong>lelor<br />

obiect omogene) sunt create implicit atunci când este receptionat un mesaj. Astfel <strong>de</strong><br />

obiecte pot sau nu sa fie protejate implicit <strong>de</strong> invocari concurente din exterior <strong>si</strong><br />

contin mecanisme specifice pentru protejarea explicita a starii interne (multimi <strong>de</strong><br />

activare [TOM89], abstractizarea comportamentului [PAP96], meto<strong>de</strong> cu garzi<br />

[FER95], etc).<br />

Abordarea eterogena permite existenta <strong>în</strong> cadrul unui <strong>si</strong>stem a doua tipuri <strong>de</strong><br />

obiecte: active (având <strong>în</strong>telesul <strong>de</strong>scris mai sus) <strong>si</strong> pa<strong>si</strong>ve. Obiectele pa<strong>si</strong>ve nu <strong>de</strong>tin<br />

fire <strong>de</strong> executie proprii, nu sunt protejate (implicit sau explicit) <strong>de</strong> apeluri concurente<br />

din exterior, iar propriile operatii sunt executate <strong>în</strong> cadrul firelor <strong>de</strong> executie ale<br />

obiectelor care le apeleaza.<br />

În mo<strong>de</strong>lele obiect eterogene exista trei tipuri <strong>de</strong> abordari ale obiectelor pa<strong>si</strong>ve.<br />

Un prim caz este acela <strong>în</strong> care <strong>în</strong> obiectele pa<strong>si</strong>ve nu poate exista mai mult <strong>de</strong> un fir <strong>de</strong><br />

executie la un moment <strong>de</strong> timp dat (astfel <strong>de</strong> obiecte sunt echivalente obiectelor<br />

existente <strong>în</strong> cadrul limbajelor <strong>de</strong> programare orientate-obiect secventiale). Un al<br />

doilea caz este acela al obiectelor pa<strong>si</strong>ve partajate, care permit executarea <strong>în</strong> interiorul<br />

lor a mai multor fire <strong>de</strong> executie <strong>si</strong> care pot fi apelate <strong>de</strong> catre orice alt obiect din<br />

<strong>si</strong>stem (activ sau pa<strong>si</strong>v). In fine, al treilea caz este cel al obiectelor pa<strong>si</strong>ve care<br />

reprezinta o proprietate a unui obiect activ. În acest ultim caz obiectele pa<strong>si</strong>ve nu pot<br />

fi apelate <strong>de</strong>cât <strong>de</strong> catre obiectele active care le <strong>de</strong>tin (<strong>si</strong> care vor realiza <strong>si</strong> protejarea<br />

acestora).<br />

Un alt element important care caracterizeaza mo<strong>de</strong>lele obiect pentru<br />

concurenta implementate <strong>în</strong> diverse limbaje <strong>de</strong> programare este dat <strong>de</strong> gradul <strong>de</strong><br />

concurenta interna a obiectelor. Din acest punct <strong>de</strong> ve<strong>de</strong>re exista mo<strong>de</strong>le cu obiecte<br />

secventiale, cva<strong>si</strong>-concurente <strong>si</strong> concurente [PAP92].<br />

Mo<strong>de</strong>lele cu obiecte secventiale nu permit executia a mai mult <strong>de</strong> un fir <strong>de</strong><br />

executie <strong>în</strong> interiorul unui obiect. Mai mult, toate mesajele care sunt receptionate in<br />

timpul executiei unei operatii vor fi luate <strong>în</strong> con<strong>si</strong><strong>de</strong>rare doar dupa ce executia<br />

17

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

Saved successfully!

Ooh no, something went wrong!