产生死锁的原因主要有:
1、临界资源使用的互斥性
一个资源每次只能给一个进程使用
2、部分地分配资源.
一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配)
3、资源的循环等待.
存在一个进程等待队列 {P1 , P2 , … , Pn},其中P1等待P2占有的资源,P2等待P3占有的资源…Pn等待P1占有的资源,形成一个进程等待环路
4、资源的不可抢占性等.
资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放
说是原因,也可以称为前提... 4条都满足才会发生死锁
|