<div dir="ltr"><div><div>Multumesc pentru explicatii.<br><br></div></div>Adriana<br><div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">Pe 30 mai 2017, 18:01, Razvan Deaconescu via so <span dir="ltr"><<a href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a>></span> a scris:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Adriana Dinca via so <<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>> writes:<br>
> Buna,<br>
><br>
> Am si eu o neclaritate legata de o cerinta data in examenul din 11.06.2015.<br>
> Intrebarea este: "Ce se intampla in cazul operatiei up() pe un semafor?'.<br>
><br>
> Nu stiu exact la ce se refera operatia up(). E aceasi lucru cu operatia<br>
> signal()?<br>
<br>
</span>up = V = increase = signal = release = post = vacate<br>
down = P = decrease = wait = aquire = pend = procure[1]<br>
<span class=""><br>
> In implemntarea operatiei signal exista un apel de wakeup(P).<br>
><br>
> Trebuie sa explicam ce se intampla la apelul operatiei signal sau doar sa<br>
> spunem ce face apelul wakeup(se reia executia unui proces blocat)?<br>
<br>
</span>Trebuie explicat efectul, nu implementarea internă a operației up().<br>
<br>
Când se execută up() pe un semafor, valoarea acestuia se vrea<br>
crescută. Dacă nu este nici un thread care așteaptă la semafor, valoarea<br>
este crescută fără alt efect. Dacă există cel puțin un thread care<br>
așteaptă la semafor, acel thread este trezit.<br>
<span class=""><br>
> signal(semaphore *S) {<br>
>     S->value++;<br>
>     if (S->value <= 0) {<br>
>         remove a process P from S->list;<br>
>         wakeup(P);<br>
>     }<br>
> }<br>
<br>
</span>[1] <a href="https://en.wikipedia.org/wiki/Semaphore_(programming)#Operation_names" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/<wbr>Semaphore_(programming)#<wbr>Operation_names</a><br>
<br>
Răzvan<br>
______________________________<wbr>_________________<br>
<a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii" rel="noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/<wbr>so/info/lista-discutii</a></blockquote></div><br></div>