[so] [Tema 4]Test3
Alex Gorunescu
algorunescu at yahoo.com
Fri May 6 20:19:54 EEST 2011
________________________________
>From: VLAD TUDOSE <vlad_tudose at yahoo.com>
>To: Sisteme de Operare <so at cursuri.cs.pub.ro>
>Sent: Fri, May 6, 2011 4:42:27 PM
>Subject: Re: [so] [Tema 4]Test3
>Salut,
>Am urmatoarea problema la testul 3: am un deadlock si am intels de ce imi
apare
>dar nu reusesc sa imi dau seama care ar trebui sa fie comportamentul normal.
>Testul 3 porneste 4 threaduri care executa operatiile de mai jos,
>thread-urile sunt pornite in ordinea 1,2,3,4.
>Thread 1: Enter, Wait(1), sleep(1), ...
>Thread 2: Enter, Wait(0), sleep(1), ...
>Thread 3: sleep(1), Enter, sleep(2), Signal(1)...
>Thread 4: sleep(2), Enter, sleep(1), ...
>Comporamentul programului meu este urmatorul(in ordine cronologica a
>evenimentelor):
>Thread-ul 1 intra in monitor il marcheaza ca fiind ocupat ,intra in Wait
>nu are pe cine sa planifice declara monitorul liber si asteapta dupa variabila
>de cond 1.
>Thread-ul 2 intra in monitor il gaseste liber , intra in Wait , nu are pe cine
>sa planifice
>declara monitorul liber si asteapta dupa variabila de cond 2.
>Thread-ul 3 intra in monitor il gaseste liber si intra in sleep(2).
>Thread-ul 4 gaseste monitorul ocupat este pus in coada Entry unde asteapta sa
>fie planificat.
>Thread-ul 3 iese din sleep face Signal(1) -> trece Thread-ul 1 in coada Waiting
>dupa care asteapta
>in coada Signaler.
>In acest moment toate thread-urile imi sunt blocate.
>Poate sa ma lamureasca cineva ce e gresit in rationamentul meu ?
>Multumesc,
>Vlad
Eu am facut un thread intern care se ocupa cu managementul monitorului. In cazul
tau, de exemplu, o sa gaseasca thread-ul 1 in wait si il porneste, dupa care
thread-ul 3 din signaller si tot asa. Threadurile nu se planifica unul pe altul
ca ajungi in situatii din astea. Monitorul (threadul intern) se ocupa cu
managementul lor intern. Nu stiu daca este solutia perfecta dar tema trece toate
testele.
Alex.
_______________________________________________
http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20110506/d79d1834/attachment.htm>
More information about the so
mailing list