Documente Academic
Documente Profesional
Documente Cultură
Semafoare
Gestiunea semafoarelor: prin 2 operaii indivizibile
P(s) este apelat de ctre procese care doresc s acceseze o regiune
critic pt a obine acces.
Efect: - dac v(s) este 1(TRUE), execuia lui P(s) are ca efect accesul
procesului apelant la seciunea critic i trecerea semaforului pe zero.
- dac v(s) este 0 (False), procesul ce dorete execuia lui P(s)
ateapt
V(s)
Efect : modificarea valorii semaforului i trecerea sa din 0 (FALSE) n 1
(TRUE). Ac funcie se apeleaz la sfritul seciunii critice i semnific
eliberarea acesteia pt. alte procese.
IMPLEMENTAREA SEMAFOARELOR: El. Hardware ale CPU
El. A sist. de operare
Succesiune instruc.:
P(s)
regiune critic
V(s)
Rest. procesului
n UNIX
- Noiunea de semafor a fost generalizat prin posibilitatea de a executa
mai multe operaii asupra unui semafor inclusiv incrementare decrementare
cu valori diferite de 1.
-Se lucreaza cu multimi de semafoare care sunt descrise de structuri de
date ce contin o alta structura reprezentind permisiunile proceselor la
semafoare, un pointer la primul semafor din set, momentul de timp la care a
avut loc ultima operatie asupra setului de semafoare.
- Accesul unui proces la un set de semafoare este controlat; doar procesele
cu anumite caracteristici fiind capabile sa modifice semafoarele.
Variabile mutex
Conceptul de monitor
OBS
- Fiecare grup de proceduri este controlat de un monitor;
- n momentul rulrii programului multi-thread, monitorul permite unui singur
thread s execute o procedur controlat de el. In aceast situaie, vom
spune c threadul a ocupat monitorul;
- Dac alte thread-uri invoc monitorul n timp ce acesta este ocupat, ele
sunt suspendate pn cnd procedura monitor apelat de thread-ul
respectiv i ncheie activitatea, ceea ce coincide cu eliberarea monitorului
de ctre thread.
Conceptul de monitor
Implementri ale conceptului de monitor
Pascal Concurent
Mesa
Java - o variant de monitor cu ajutorul modificatorului synchronised.
Monitorul este un concept mai uor de manevrat dect semaforul.
Din punct de vedere conceptual, un monitor poate fi descris simplu folosind
un singur semafor binar, cu valoarea iniial 1. Fiecare procedur a
monitorului ncepe cu P(s) i se ncheie cu V(s):
Fiecrei regiuni critice i se asociaz o resurs constnd din toate variabilele care
trebuie protejate n regiune. Declararea ei se face astfel:
- unde r este numele unei resurse declarate ca mai sus, B este o expresie
boolean, iar S este secvena de instruciuni corespunztoare regiunii critice.
- dac este prezent opiunea when, atunci S este executat numai dac B
este adevrat.
Semaforul sir reine in coada lui toate procesele care solicit acces la regiune.
Semaforul exclus asigur accesul exclusiv la anumite seciuni ale implementrii.
Intregul nr reine cte procese au cerut acces la regiune, la un moment dat.
Semafoare binare
2.4.6 Monitoare
Dac un task dorete s execute seciunea sa critic va face apel la procedura corespunztoare a monitorului;
Condiii de lucru:
- unul singur dintre task-uri se admite la un moment dat s se bucure de
serviciile monitorului;
- toate celelalte apeluri la monitor atepapt eliberarea monitorului;
- ntr-un monitor asupra variabilelor partajate nu se pot executa dect
operaii "cunoscute" (declarate o dat cu definirea monitorului) pentru
care se asigur n mod automat condiiile de excludere mutual;
- nu exist posibilitatea accesului din exterior la datele locale monitorului
dect prin intermediul operaiilor;
- din acest motiv nu pot s apar erori de sincronizare;
Monitoare
n programarea cu monitoare se consider c un program conine dou
tipuri de module:
- procese active
- procese pasive.
Toate variabilele partajate sunt variabile locale monitoarelor.
Interaciunea dintre procese are loc numai prin intermediul monitoarelor.
Un monitor opereaz asupra a trei tipuri de variabile:
- variabile permanente - sunt de fapt variabilele partajate. Aceste
variabile i pstreaz valoarea ntre apelurile operaiilor asigurate de
monitor. Iniializarea acestor variabile se face la crearea monitorului.
- variabile locale - sunt variabile utilizate pentru realizarea operaiilor.
Au acelai tip de proprieti ca al variabilelor locale n proceduri.
- parametrii de apel - sunt parametrii operaiilor realizate de ctre monitor.
Monitoare
Trecerea unui proces printr-un monitor trebuie s dureze ct mai puin.
Ce se ntmpla ns dac un proces care ncepe execuia unei operaii
dintr-un monitor descoper c trebuie s se blocheze n ateptarea
unui eveniment extern ?
Abordri posibile
-Se poate interzice apariia unor astfel de situaii;
-Dac un proces se blocheaz (este n ateptarea unui eveniment) n timp
ce se afl n execuia unei operaii dintr-un monitor atunci un alt proces poate s fie lsat sa utilizeze monitorul.
Implicaii: s existe o "eviden" a proceselor care ateapt apariia
unui eveniment.
Pentru a asigura semnalizarea blocrii n ateptarea unui eveniment se
utilizeaz variabile condiie.
Monitoare-variabile condiie
Variabila condiie=variabil partajat, asupra creia se pot executa dou
tipuri de operaii primitive (atomice):
- wait (delay) : produce blocarea procesului care o invoc;
- signal (resume): anun posibilitatea deblocrii unuia dintre procesele
care a executat operaia wait pentru variabila respectiv;
OBS!!!- Atunci cnd un proces este blocat ca urmare a execuiei unei
operaii wait n corpul unei operaii dintr-un monitor, alte procese pot
s utilizeze monitorul.
Sincronizarea explicit
Sensul general al sincronizrii este cel de coordonare n timp, de corelare,
presupunnd o relaie reciproc ntre task-uri, care au un caracter temporal i stabil.
Sincronizarea explicit
Metodele i mecanismele folosite pentru realizarea sincronizrii programelor sau task-urilor concurente se deosebesc sub mai multe aspecte:
- natura sincronizrii: sincronizare ntre programe sau task-uri sau sincronizare cu timpul;
- momentul sincronizrii: cu nceputul unui program, cu sfritul unui
program sau cu unpunct (moment) oarecare din interiorul programului;
- implementarea sincronizrii: prin faciliti specifice ale limbajelor de programare (i ale compilatoarelor asociate), ale limbajului de comand sau
prin faciliti (servicii) asigurate de un monitor.
Exemplu
Dac se folosete, un semafor general Plin pentru a reprezenta numrul de locaii
ncrcate (pline) ale zonei tampon, atunci un consumator va trebui ntrziat dac Plin
= 0.
Dac un task productor va efectua o operaie V asupra semaforului Plin, dup ce a
plasat o informaie n zona tampon, un task-consumator va fi servit n urma
efecturii unei operaii P (va avea acces la tampon i va putea consuma informaia
anterior introdus).
n mod similar, un al doilea semafor general Gol, poate fi folosit pentru a ntrzia
dup necesiti task-urile productor.
Concluzii
n general, dac un task dorete s atepte pn ce se realizeaz o anumit condiie,
acestei condiii de ateptare i se asociaz un semafor i orice task ce ar putea
provoca realizarea condiiei trebuie s aib responsabilitatea efecturii unei operaii V
asupra acestui semafor.
Programatorul va trebui s introduc n fiecare task instruciuni de sincronizare cu
celelalte task-uri, ceea ce presupune o atenie special de lucru cu semafoarele
generale.
Dac mai multe task-uri consumator ateapt, ele vor trebui planificate ntr-un mod
neutru sau dup unele criterii de prioritate ale task-urilor consumator.
Sincronizarea explicit
Implementare
Pentru a putea provoca sincronizarea prin rendez-vous a celor dou
programe, n programul apelat vor trebui inserate comenzi de acceptare,
care vor avea forma unor proceduri de intrare apelabile de ctre
programele apelante (task-ul apelat este suspendat n aceste puncte de
program).
DEZAVANTAJE
Tipul de rendez-vous este unul asimetric.
Aceste forme de rendez-vous nu sunt suficient de adecvate pentru programarea aplicaiilor reale.
Sincronizarea mult prea strns a task-urilor mpiedic orice operare asincron a programelor i astfel inhib avantajele poteniale ale unui paralelism
dezvoltat.