Sunteți pe pagina 1din 40

Facultatea: Automatic i Calculatoare

Domeniul: Calculatoare i Tehnologia Informaiei

An universitar: 2014 2015

Sisteme de Operare

Gestiunea proceselor

Sincronizarea proceselor
Seciunea critic

semafoare, ateptare activ, monitoare, bariere

Paradigme ale programrii concurente

Sincronizarea proceselor

Pentru execuie procesele au nevoie de acces la


resursele sistemului : CPU, memorie, disc etc.
Resursele pot fi:

locale sau globale,


private sau comune (partajabile).

Toate resursele sunt critice (accesibile numai


unui proces la un moment dat).
Procesele concureaz pentru obinerea
accesului la resurse.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

2/40

Sincronizarea proceselor

Definiie: Sincronizarea proceselor reprezinta aciunea de


coordonare a activitii mai multor procese.

Sicronizarea presupune posibilitatea de a modifica starea unui proces


la un moment dat pn la apariia unor evenimente ce nu se afla sub
controlul acestuia.
Sincronizarea impune aplicarea excluderii mutuale i o ordonare a
evenimentelor.

Definiie: Zona de program prin care se apeleaz o resurs


critic se numete seciune critic (SC).
Accesul unor procese la resursele critice se face printr-un
protocol de excludere mutual (EM), ce presupune o
sincronizare ce permite modificarea strii proceselor i
eventual comunicaii.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

3/40

Accesul la seciunea critic


intrarea n seciunea critic
tratarea resursei critice din seciunea
critic
ieirea din seciunea critic.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

4/40

Condiiile pentru realizarea excluderii


mutuale ntr-o seciune critic

Un singur proces la un moment dat trebuie s execute


instruciunile din seciunea critic ;
Dac mai mult de un proces sunt blocate la intrarea n
seciunea critic i nici un alt proces nu execut
instruciunile din seciunea critic, ntr-un timp finit
unul din procesele blocate se deblocheaz i va intra n
seciunea critic (pe rnd vor intra i celelalte).
Blocarea unui proces n afara seciunii critice s nu
mpiedice intrarea altui proces n seciunea critic.
S nu existe procese privilegiate (mecanismul s fie
echitabil pentru toate procesele).

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

5/40

Excluderea mutual - implementare


Semafoare
Ateptare pe condiie (ateptare activ)
Monitoare
Bariere

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

6/40

Semafoare

Definitie: Semaforul este un mecanism de sincronizare a execuiei


proceselor care acioneaz n mod concurent asupra unor resurse partajate.

Semafoarele se caracterizeaz prin:

Valoare: val(s)
coad de ateptare: Q(s)

Semafoarele sunt de dou tipuri :

Poate fi o variabil sau o structur de date abstract


Este utilizat pentru controlul accesului la o resurs comun ntr-un mediu
multiproces, multiutilizator

binare (lucreaz cu valori de 0 i 1)


ntregi (lucreaz cu valori ntre -n i n).

Cozile de ateptare sunt de tip FIFO.


Operaiile cu semafoare:

creare
distrugere
operaia de intrare n seciunea critic : p(s), p = cerere de intrare n S.C.
operaia de ieire din seciunea critic : v(s), v = cerere de ieire n S.C.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

7/40

Semafoare
P(s) :
val(s) = val(s)-1 ;
if ( val(s) < 0 )
{
//trece procesul n coada de ateptare a semaforului respectiv
// schimb starea procesului n blocat
}
V(s):
val(s) = val(s) +1 ;
if ( val(s) 0 )
{
//scoate primul proces din coada de ateptare a semaforului
// schimb starea procesului n gata de execuie
}

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

8/40

Excluderea mutual pentru 2 procese

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

9/40

Valoarea unui semafor la un


moment dat

V(s) = V0(s)+nv(s) np(s)

V(s) este valoarea unui semafor la un moment dat;


np este numarul de treceri prin P(s)
nv este numrul de treceri prin V(s)

Dac V(s) >0 , acest numr ne d numrul de procese


ce pot executa instruciunile din seciunea critic.
Daca V(s) <0, atunci acest numr ne d numrul de
procese blocate la semafor.
Seciunile critice pot fi att imbricate ct i ntreesute.
Numrul de procese trecute de semaforul s este:

nt(s)=min{V0(s)+nv(s),np(s)}

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

10/40

Semafoare private

[SO - 2014-2015]

numai un singur proces


poate aplica P i V
asupra lui
celelalte procese putnd
executa numai V.
Valoarea iniial a unui
semafor privat este 0.
Semaforul privat permite
sincronizarea execuiei
unui proces cu o condiie
extern lui (eventual cu
un alt proces).

Curs 4 - Gestiunea proceselor

11/40

Proiectarea semafoarelor

Seciunile critice trebuie ncadrate de P i V


ceea ce uneori este mai greu de urmrit ;
Un proces nu poate fi distrus n SC ;
Verificarea corectitudinii programelor nu este
uoar ;
Gestiunea cozii poate duce la apariia unor
probleme de proiectare.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

12/40

Sincronizarea proceselor cu
semafoare
Semafoarele ntregi se folosesc pentru a
gestiona un nr. de resurse identice
(componentele unei zone tampon i
resurse fizice).
Resursele se aloc la cerere i se
elibereaz dupa folosirea lor.
Cnd nu mai exist copii disponibile
procesele se blocheaz.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

13/40

Problem:
3 resurse identice, un semafor i 3 procese

execuia primitivelor P este critic

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

14/40

Rezolvare
int s =3, s1 =2;
p1()
{
.........................................
P(s1);
P(s);
// se ocupa prima RC
P(s);
// se ocupa a II-a RC
V(s);
V(s);
V(s1);
}

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

15/40

Exemplu de execuie pentru 3


procese

Execuia normal se poate


desfura n paralel, dar
regiunile critice sunt
serializate

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

16/40

Sincronizarea prin ateptare activ

condiii:

exist variabile comune care sunt testate;


testul i modificarea variabilelor s fie operaii
indivizibile.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

17/40

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

18/40

Dezavantajele ateptrii active


consumarea inutil de timp CPU pentru un
proces care ateapt.
Exist 2 operaii care trebuie realizate:
testarea i modificarea flag (de aceea
au fost introduse variabilele flag i turn).
Gradul ridicat de dificultate n elaborarea
protocoalelor de intrare i iesire lucru ce
poate duce pe lng neclariti i la apariia
de erori.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

19/40

Sincronizarea folosind monitoare

Un monitor reprezint o structur de date


format din:

variabile de sincronizare numite i


variabile condiii,
resurse partajate
proceduri de acces la resurse. Procedurile
pot fi: externe sau interne.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

20/40

Sincronizarea folosind monitoare


monitor monitor-name
{
delaraii variabile locale;
procedure P1() {

procedure Pn() {

}
}

[SO - 2014-2015]

Variabilele locale ale unui


monitor nu sunt vizibile dect
pentru procedurile lui.
Procedurile unui monitor sunt
puncte de intrare (pot fi
accesate din exterior) i ele se
executa prin excludere mutual.
Primitivele de sincronizare

wait suspend procesul care


execut wait pe o variabil de
condiie i face disponibil monitorul
pentru un alt apel;
signal reactiveaz un proces n
ateptare pe o variabil de
condiie.

Curs 4 - Gestiunea proceselor

21/40

Structura unui monitor

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

22/40

Cozile de ateptare ale unui


monitor

Fiecare variabil ci are ataat o coad i odat


accesat o procedur a monitorului, un proces n
ateptare pe o condiie va ceda accesul unui alt proces
n ateptare la intrarea n monitor.
Procesele suspendate dup execuia lui signal (ci.signal)
nu elibereaz excluderea mutuala n monitor deoarece:

fie exist un proces n execuie a unei proceduri n monitor,


eventual n ateptare pe o condiie;
fie este acelai proces care-si continu execuia cnd nu mai
sunt altele de reactivat.

Coada proceselor suspendate este mai prioritara fa de


aceea de la intrarea n monitor i a cozilor de ateptare
pe condiie

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

23/40

Strile unui proces la accesarea


unei proceduri din monitor
ateptare n coada de intrare a monitorului ;
ateptare ntr-o coad pe o variabil de
condiie (wait) ;
suspendarea prin execuia signal, care
reactiveaz un proces n ateptare pe o
variabil de condiie ;
execuia normal a instruciunilor unei
proceduri din monitor.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

24/40

Sincronizarea folosind bariere

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

25/40

Sincronizarea prin transmiterea de


mesaje

Mesajele pot avea dimensiune fix sau nu.


Dac dou procese P i Q vor s transmit
mesaje trebuie s stabileasc o legtur ntre
ele.
Detalii de implementare i gestionare a
comunicaiilor sunt lsate n grija sistemului
de operare.
Sistemul de transmitere a mesajelor trebuie
s ofere funcii de tip:

send(destinaie, mesaj)
receive(surs, mesaj)

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

26/40

Sincronizarea prin transmiterea de


mesaje
Att procesul care trimite mesajele, ct i cel care
le primete pot fi blocate sau nu
Send/receive blocante: ambele procese sunt
blocate pn la terminarea comunicrii ;
Send neblocant, receive blocant : procesul ce
execut send i continu execuia imediat ce a
trimis mesajul, iar procesul ce execut receive
este blocat pn la sosirea mesajului ;
Send/receive neblocante: nici un proces nu
atept terminarea operaiilor de comunicaie;

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

27/40

Sincronizarea prin transmiterea de mesaje


Adresarea
direct: n acest caz, funciile
send/receive includ identificatorul
procesului destinaie ;
indirect: n acest caz mesajele sunt
trimise unei structuri de date partajate ce
constau n cozi numite mailbox (casue
potale)

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

28/40

Excluderea mutual folosind


mesaje
const int n /* number of processes */;
void P(int i)
{
message msg;
while (true)
{
receive (mutex, msg);
/* critical section */;
send (mutex, msg);
/* remainder */;
}
}
void main()
{
create_mailbox (mutex);
send (mutex, null);
parbegin (P(1), P(2), . . ., P(n));
}
[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

29/40

Paradigme ale programrii


concurente
Problema
Problema
Problema
Problema

[SO - 2014-2015]

celor 5 filosofi
productor consumator
cititori/scriitori
brbierului

Curs 4 - Gestiunea proceselor

30/40

Problema celor 5 filosofi


Resurse: furculite
Procese: filosofi.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

31/40

Problema celor 5 filosofi


semaphore fork[5] = {1,1,1,1,1};
int i;
void philosopher(int i)
{
while(true)
{
think( );
P(fork[i]);
P(fork[(i+1) mod 5]);
eat( );
V(fork[(i+1) mod 5]);
V(fork[i]);
}
}

[SO - 2014-2015]

int fork[5] = {1,1,1,1,1};


int valet = 4; int i ;
void philosopher(int i)
{
while (true)
{
P(valet); // intr in camer
P(fork[i]); // ridic furculia stnga
P( fork[( i + 1) % 5]); // ridic furculia
dreapta
// mnnc
V(fork[i]); // elibereaz furculia stnga
V( fork[( i + 1) % 5]); // elibereaz
furculia dreapta
V(valet); // iese din camer
}
}

Curs 4 - Gestiunea proceselor

32/40

Problema productor consumator


implementeaz un protocol de comunicaie
ntre 2 sau mai multe procese care
utilizeaz 2 sau mai multe resurse duale
(locaiile ocupate sau libere dintr-un buffer):
unul sau mai muli productori introduc
datele n buffer;
un singur consumator extrage datele din
buffer.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

33/40

Problema productor consumator


buffer-ul circular cu n locaii
n-1

0 1 2

il

io

Condiii statice:

elementele din buffer sunt citite de consumator n aceeai


ordine n care sunt scrise de productor
nici un element nu trebuie pierdut sau introdus n plus.

Constante:

io locaia unde este un mesaj care se poate citi;

il locaia de la care putem scrie.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

34/40

Problema productor consumator


Condiii de sincronizare:
dac buffer-ul este gol consumatorul se
blocheaz pn cnd exist cel puin un
mesaj.
dac buffer-ul este plin producatorul se
blocheaz pn cnd exist cel puin o
locaie liber.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

35/40

Problema productor consumator


1 productor - 1 consumator
int io =il =0;
int liber =n, ocupat =0;
int buf[n];
void producator (int mes)

int consumator()

..

P(liber);

P(ocupat);

buf [il] =mes; //adaug mesaj

mes=buf [io]; //citete mesaj

il= (il +1) %n;

io = (io +1) %n;


V(liber);

V(ocupat);

consuma(mes);
}

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

36/40

Problema productor consumator


k productori i l consumatori

il este resurs critic pentru productori

se introduce un semafor liber pe care l


iniializm cu n.
io resurs critic pentru consumatori

se introduce semaforul ocupat iniializat


cu 0.
Semaforul s asigur accesul la seciunea
critic i este iniializat cu 1.

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

37/40

Problema productor consumator


k productori i l consumatori
int io = il=0;
int liber =n, ocupat =0, s =1;
void producator(int mes)

int consumator()

{
.

..

P(liber);

P(ocupat);

P(s);

P(s);

buf[il] =mes;

// adaug mesaj

mes=buf[io];

il =(il +1) %n;

//citete mesaj

io =(io +1) %n;

V(s);

V(s);

V(ocupat);

V(liber);

..

consuma(mes);

}
[SO - 2014-2015]

}
Curs 4 - Gestiunea proceselor

38/40

Problema productor consumator


buffer infinit
un semafor s pentru a realiza excluderea
mutual asupra buffer-ului;
un semafor n pentru a sincroniza
productorul i consumatorul asupra
dimensiunii buffer-ului

[SO - 2014-2015]

Curs 4 - Gestiunea proceselor

39/40

Problema productor consumator


buffer infinit
int n = 0, s = 1; //semafoare
int io = il =0;
void productor ()
{
while (true)
{
produce();
P(s);
buf[il] =mes; // adaug mesaj

void consumator()
{
while (true)
{
P(n);
P(s);
mes=buf[io]; //citete mesaj

il =(il +1) %n;

io =(io +1) %n;

V(s);
V(n);
}

V(s);
consume();

}
[SO - 2014-2015]

}
}
Curs 4 - Gestiunea proceselor

40/40

S-ar putea să vă placă și