CATEGORII DOCUMENTE |
Comunicarea intre procese - excluderea mutuala.
Excluderea mutuala prin asteptare ocupata
Excluderea mutuala: atat timp cat un proces este ocupat cu actualizarea memoriei partajate in propria regiune critica, nici un alt proces nu intra in regiunea
critica.
Metode de obTinere a excluderii mutuale:
Dezactivarea intreruperilor
Fiecare proces dezactiveaza toate intreruperile imediat dupa ce a intrat in regiunea critica si le reactiveaza imediat inainte de parasirea regiunii critice.
Este o tehnica utila pentru nucleu, nu si pentru procesele utilizator.
Variabila incuietoare (lock)
Se considera o variabila lock care este iniTial 0.
Cand un proces vrea sa intre intr-o regiune critica, testeaza mai intai variabila lock.
Daca aceasta este 0, procesul o seteaza la valoarea 1 si intra in regiunea critica.
Daca variabila lock este 1, in regiunea critica se afla un alt proces.
Dezavantajul acestei metode consta din situaTiile descrise si in exemplul cozii la tiparire.
Presupunem ca exista doua procese A si B.
A citeste variabila lock si observa ca este 0.
Inainte ca A sa modifice valoarea variabilei partajate lock, A este suspendat de planificatorul de procese.
Procesul B isi incepe execuTia.
Procesul B citeste variabila lock, o gaseste 0, intra in regiunea critica.
B este intrerupt de planificatorul de procese.
A isi continua execuTia.
A stie ca lock este 0, intra in regiunea critica.
Procese A si B se afla simultan in regiunea lor critica.
Alternarea stricta
Exista o variabila turn - rand, care gestioneaza ordinea intrarii in secTiunea critica.
IniTial procesul A inspecteaza variabila turn, observa ca este 0 si intra in regiunea critica.
Procesul B gaseste variabila turn tot 0 si sta intr-o bucla continua testand turn ca sa vada daca isi schimba valoarea in 1.
Testarea continua a unei variabile pentru a vedea daca i se schimba valoarea se numeste asteptare ocupata (busy waiting).
Iroseste timpul procesorului.
Este folosita doar cand exista o probabilitate mare ca asteptarea ocupata sa fie scurta.
Nu este o idee buna in cazul in care un proces este mult mai lent decat celalalt.
Presupunem ca procesului A ii corespunde valoarea O a variabilei turn, iar procesului B valoarea 1.
Cand A isi paraseste regiunea critica seteaza variabila turn la valoarea 1.
B intra si iese repede din regiunea critica si seteaza turn la valoarea 0.
A si B sunt in afara regiunilor critice cu valoarea lui turn egala cu 0.
Daca B este mai rapid decat A si vrea sa intre inaintea acestuia in regiunea critica, el ramane intro asteptare ocupata pana cand A modifica valoarea
lui turn.
Nu este respectata condiTia 3 pentru ca un proces aflat intr-o regiune care nu este critica (procesul A) blocheaza un alt proces (procesul B).
InstrucTiunea TSL
Multe calculatoare (mai ales cele care au mai multe procesoare) au o instrucTiune hardware TSL (Test and Set LOCK - Testeaza si seteaza variabila LOCK):TSL RX,LOCK
Se citeste conTinutul variabilei LOCK in registrul RX si apoi salveaza o valoare diferita de 0 la adresa de memorie a variabilei LOCK.
OperaTiile de citire si memorare a valorii variabilei LOCK sunt indivizibile.
Procesorul care executa o operaTie TSL inchide magistrala de memorie pentru a impiedica alte procesoare sa foloseasca memoria pana nu se termina operaTia TSL.
LOCK este o variabila partajata care atunci cand este 0 inseamna ca nu se afla nici un proces in regiunea critica, daca este diferita de 0 inseamna ca un proces se afla deja in regiunea critica.
SoluTia la problema regiunii critice:
Inainte de a intra intr-o regiune critica un proces apeleaza procedura enter_region.
In enter_region se face cu ajutorul instrucTiunii TSL testarea si eventual setarea variabilei LOCK.
Pentru LOCK=0 procesul intra in regiunea critica si folosind instrucTiunea TSL seteaza variabila LOCK la o valoare diferita de 0.
Pentru LOCK≠0 enter_region efectueaza asteptare ocupata pana cand LOCK devine 0.
Ca sa iasa din regiunea critica procesul apeleaza procedura leave_region prin care se reseteaza LOCK inapoi la 0.
Toate aceste solutii au problema asteptarii ocupate care iroseste timpul procesorului.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1199
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved