[so] Subiecte examen

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Tue May 30 18:01:13 EEST 2017


Adriana Dinca via so <so at cursuri.cs.pub.ro> writes:
> Buna,
>
> Am si eu o neclaritate legata de o cerinta data in examenul din 11.06.2015.
> Intrebarea este: "Ce se intampla in cazul operatiei up() pe un semafor?'.
>
> Nu stiu exact la ce se refera operatia up(). E aceasi lucru cu operatia
> signal()?

up = V = increase = signal = release = post = vacate
down = P = decrease = wait = aquire = pend = procure[1]

> In implemntarea operatiei signal exista un apel de wakeup(P).
>
> Trebuie sa explicam ce se intampla la apelul operatiei signal sau doar sa
> spunem ce face apelul wakeup(se reia executia unui proces blocat)?

Trebuie explicat efectul, nu implementarea internă a operației up().

Când se execută up() pe un semafor, valoarea acestuia se vrea
crescută. Dacă nu este nici un thread care așteaptă la semafor, valoarea
este crescută fără alt efect. Dacă există cel puțin un thread care
așteaptă la semafor, acel thread este trezit.

> signal(semaphore *S) {
>     S->value++;
>     if (S->value <= 0) {
>         remove a process P from S->list;
>         wakeup(P);
>     }
> }

[1] https://en.wikipedia.org/wiki/Semaphore_(programming)#Operation_names

Răzvan


More information about the so mailing list