[so] Deadlocks

Alexandru Tudorica tudalex at gmail.com
Thu May 23 12:00:06 EEST 2013


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


More information about the so mailing list