Documente Academic
Documente Profesional
Documente Cultură
Sisteme de Operare
Gestiunea proceselor
Sincronizarea proceselor
Seciunea critic
Sincronizarea proceselor
[SO - 2014-2015]
2/40
Sincronizarea proceselor
[SO - 2014-2015]
3/40
[SO - 2014-2015]
4/40
[SO - 2014-2015]
5/40
[SO - 2014-2015]
6/40
Semafoare
Valoare: val(s)
coad de ateptare: Q(s)
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]
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]
8/40
[SO - 2014-2015]
9/40
nt(s)=min{V0(s)+nv(s),np(s)}
[SO - 2014-2015]
10/40
Semafoare private
[SO - 2014-2015]
11/40
Proiectarea semafoarelor
[SO - 2014-2015]
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]
13/40
Problem:
3 resurse identice, un semafor i 3 procese
[SO - 2014-2015]
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]
15/40
[SO - 2014-2015]
16/40
condiii:
[SO - 2014-2015]
17/40
[SO - 2014-2015]
18/40
[SO - 2014-2015]
19/40
[SO - 2014-2015]
20/40
procedure Pn() {
}
}
[SO - 2014-2015]
21/40
[SO - 2014-2015]
22/40
[SO - 2014-2015]
23/40
[SO - 2014-2015]
24/40
[SO - 2014-2015]
25/40
send(destinaie, mesaj)
receive(surs, mesaj)
[SO - 2014-2015]
26/40
[SO - 2014-2015]
27/40
[SO - 2014-2015]
28/40
29/40
[SO - 2014-2015]
celor 5 filosofi
productor consumator
cititori/scriitori
brbierului
30/40
[SO - 2014-2015]
31/40
[SO - 2014-2015]
32/40
[SO - 2014-2015]
33/40
0 1 2
il
io
Condiii statice:
Constante:
[SO - 2014-2015]
34/40
[SO - 2014-2015]
35/40
int consumator()
..
P(liber);
P(ocupat);
V(ocupat);
consuma(mes);
}
[SO - 2014-2015]
36/40
[SO - 2014-2015]
37/40
int consumator()
{
.
..
P(liber);
P(ocupat);
P(s);
P(s);
buf[il] =mes;
// adaug mesaj
mes=buf[io];
//citete mesaj
V(s);
V(s);
V(ocupat);
V(liber);
..
consuma(mes);
}
[SO - 2014-2015]
}
Curs 4 - Gestiunea proceselor
38/40
[SO - 2014-2015]
39/40
void consumator()
{
while (true)
{
P(n);
P(s);
mes=buf[io]; //citete mesaj
V(s);
V(n);
}
V(s);
consume();
}
[SO - 2014-2015]
}
}
Curs 4 - Gestiunea proceselor
40/40