<div dir="ltr"><span style="font-size:12.8000001907349px">Testul 15 are urmatorul flow:</span><div style="font-size:12.8000001907349px">Create thread initial ( 0 ): cuanta 1</div><div style="font-size:12.8000001907349px">so_end()</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">In paralel cu so_end (care ramane blocat pana cand termina toate threadurile):<br></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Threadul 0 este creat. (cuanta 1)</div><div style="font-size:12.8000001907349px">Threadul 0 creaza threadul 1 cu prioritate 4, care il preempteaza pe t0.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">     Threadul 1 creaza threadul 2 (cu prioritate 3, este plasat in 'ready')</div><div style="font-size:12.8000001907349px">     Threadul 1 observa ca i-a ajuns la cuanta 0 si cedeaza CPU threadului 2.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">            Threadul 2 verifica ca inaintea sa a fost threadul 1, si noteaza faptul ca si el a prins timp pe procesor (folosind define-ul SO_FAIL_IF_NOT_PRIO). Aceasta actiune nu consuma cuanta, asa ca merge mai departe. (cuanta = 1)</div><span style="font-size:12.8000001907349px">            Threadul 2 creaza threadul 3 (cu prioritate 1, este plasat in 'ready')</span><div style="font-size:12.8000001907349px">            Threadul 2 observa ca i-a ajuns cuanta la 0 si cedeaza CPU threadului 1</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">     Threadul 1 acum verifica ca ultima prioritate setata a fost 4, dar threadul 2 a prins timp pe procesor si astfel a setat prioritatea '3'.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Acest comportament nu s-ar fi reprodus daca threadurile ar fi avut cuanta cel putin 2, sau daca un thread ar continua sa incerce sa execute sarcini care nu consuma cuanta atunci cand are cuanta 0.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Aici este de vina checkerul, sau trebuie sa modific programul atfel:</div><div style="font-size:12.8000001907349px">- un thread sa execute sarcini in continu, inclusiv cand are cuanta 0</div><div style="font-size:12.8000001907349px">- daca o sarcina de executat este consumatoare de cuanta, iar threadul are 0, atunci cedeaza CPU</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Testul 17:</div><div style="font-size:12.8000001907349px">Se face fork primului thread</div><div style="font-size:12.8000001907349px">Handler: asteapta dupa evenimentul X, signal evenimentul X</div><div style="font-size:12.8000001907349px">(cum va reusi sa dea el signal cand defapt asteapta evenimentul, si astfel nu mai prinde timp pe procesor)</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Testul 19:</div><div style="font-size:12.8000001907349px">Se face fork primului thread,</div><div style="font-size:12.8000001907349px">Handler: asteapta evenimentul SO_DEV3, dupa care face fork unor threaduri care se presupune ca eventual ii vor da signal pe acest eveniment. Threadul sta blocat in wait.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Alin</div></div>