Am o nelamurire legata de definitia unui deadlock.
Pe wiki[0] am gasit ca un deadlock trebuie sa respecte 4 conditii
1. Mutual exclusion
2. Hold and wait
3. No preemption
4. Circular wait

In testul 2 de curs a fost o intrebare:

În ce situație este posibilă apariția unui deadlock pe o singură
resursă critică?

Răspuns Fie procesul P1 care a acaparat resursa critică și procesele
P2, P3, … , Pn care așteaptă eliberarea resursei respective. Un
deadlock pe resursa respectivă va apărea dacă procesul P1 nu va
elibera resursa critică, fie datorită codului său (nu există
instrucțiunea de release/unlock, intră într-un ciclu infinit, etc.),
fie deoarece a fost terminat prin semnal SIGKILL.

Dupa parerea mea atunci cand P1 acapareaza resursa si nu o mai
releasuie nu se respecta conditia de Circular Wait (P1 nu wait-uie
dupa nimic), iar atunci cand este omorat prin SIGKILL nu s-ar invalida
conditia de no preemption?


[0] - https://en.wikipedia.org/wiki/Deadlock#Necessary_condition

--
Tudorică Constantin Alexandru
http://tudalex.com
_______________________________________________
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Raspunde prin e-mail lui