一、死锁的定义
假若在一个进程集合中的每个进程都在等待,只能由该集合中的其它一个进程才能引发的事件,那么这种状态被看成死锁。
一旦产生死锁,若无外力作用,这些进程都将永远不能再向前推进。
二、产生死锁的主要原因
竞争资源
三、资源死锁的条件
四个必要条件:
- 互斥条件:每个资源要么分配给了一个进程,要么就是可用的;
- 占有和等待条件:已经得到了某个资源的进程可以再请求新的资源;
- 不可抢占条件:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放;
- 环路等待条件:死锁发生时,系统中一定有由两个或两个以上的进程组成的一条环路,该环路中的每个进程都在等待着下一个进程所占有的资源。
五、死锁的建模
Holt(1972)指出如何用有向图建立上述四个条件的模型。
在有向图中有两类节点:圆形表示进程;用方形表示资源。
SRAG:System Resource Allocation Graph:系统资源分配图
六、四种处理死锁的策略
- 忽略该问题
- 检测死锁并恢复
- 仔细地对资源进行动态分配,以避免死锁
- 通过破除所述四个必要条件之一,用以防止死锁产生
七、鸵鸟算法
八、资源检测
1.单种资源类型下死锁的检测:作出有箱图之后,观察是否有环的存在,环就是死锁。
2.多种资源类型下死锁的检测:?