Documente Academic
Documente Profesional
Documente Cultură
unde r este numele resursei, iar v1 , ..., vn sunt numele variabilelor de protejat.
O regiune critică condiţională se specifică astfel:
- unde r este numele unei resurse declarate ca mai sus, B este o expresie booleană, iar S este
secvenţa de instrucţiuni corespunzătoare regiunii critice.
- dacă este prezentă opţiunea when, atunci S este executată numai dacă B este adevărată.
Descrierea prin semafoare a unei regiuni critice condiţionale este dată în figura 2.10. Pentru
descriere sunt necesare două semafoare şi un număr întreg.
8.Starile task-urilor
Un task se poate găsi la un moment dat într-una din următoarele patru stări:
• a) în execuţie (RUN): utilizează CPU în acel moment; într-un system monoprocesor un singur
task se poate găsi la un moment dat în această stare;
• b) gata de execuţie (READY): are toate resursele necesare rulării, mai puţin procesorul;
aşteaptă, într-un şir de aşteptare pentru a i se aloca CPU spre a fi executat;
• c) blocat (WAIT): are nevoie şi de alte resurse; aşteaptă să i se aloce memorie, sau terminarea
unei operaţii I/O, producerea unui eveniment extern, trecerea unui anumit interval de timp,
etc.
• d) inactiv: procesului i s-au atribuit de catre sistemul de operare doar un identificator (nume),
o zona de cod si o zona pentru memoria stiva.
9.Mecanisme de control a concurentei.Semafoare
In practica aplicatiile concurente atat la nivel de system de operare cat si de nivel
program s-au proiectat si implementat folosindu-se diverse mecanisme de control al
concurentei.
Conceptul de semafor a fost introdus de Dijkstra, pentru a facilita sincronizarea
proceselor prin protejarea sectiunilor critice si asigurarea accesului exclusive la resursele pe
care procesele le acceseaza.
Sectiunile critice sunt secvente de instructiuni care pot genera race-condition si a caror executie
de catre mai multe procese trebuie controlata:
Formal un semafor se poate defini ca o pereche (v(s),C(s)) unde:
-v(s) este valoarea semaforului –un numar intreg a carui valoare poate varia pe durata
executiei, initializabil cu 1 sau 0 (TRUE sau FALSE)
-c(s) este o coada de asteptare la semafor –contine referinte la procesele care asteapta la
semafor s; initial coada este vida, iar disciplina cozii depinde de sistemul de operare (LIFO, FIFO,
prioritati, etc)
Fiecarei sectiuni critice trebuie sa I se aloce un semafor
In UNIX notiunea de semafor a fost generalizata prin posibilitatea de a executa mai multe
operatii asupra unui semafor, inclusiv incrementare-decrementare cu valori diferite de 1.
Notatie adaptata pentru definirea si atribuirea valorilor unui semafor:
Var semaphore s==x
-daca este prezenta optiunea when atunci s este executata numai daca B este adevarata
Efecte:
- modificarea conţinutului informaţiei unuia dintre obiectele grafice de
pe monitor;
- redimensionarea unei ferestre;
- închiderea unei aplicaţii prin distrugerea ferestrei ei principale, etc.
Aceste evenimente sunt prelucrate, de către sistemul de programe aferent,
într-o manieră asincronă.
• Conceptul principal în jurul căruia gravitează tratarea evenimentelor este
coada de evenimente.
• Prelucrarea acestei cozi se face prin intermediul buclei de evenimente.