9.2 死锁的检测与恢复
一、死锁的检测方法
1. 每种资源只有1个 借助于资源分配图
方法:构造资源分配图,若存在环,则环中进程死锁。
死锁的检测方法
资源分配图: :进程 :资源 :进程已占有资源 :进程申请资源,处于等待状态
死锁的检测方法
【例】设系统中有进程7个:A~G,资源6种:R~W,每种资源只有1个。 资源占有及申请情况如下:
9.1 死锁的基本概念
为什么会出现死锁? 竞争资源,而资源有限。 例如,2个进程A、B,都需要资源R1、R2 若A:拥有R1,申请R2 若B:拥有R2,申请R1 如何?
9.1 死锁的基本概念
二、什么情况下会产生死锁?
4个必要条件:coffman(1971)年提出 1)互斥条件
每个资源要么被分配给了1个进程,要么空闲 2)占有及等待(部分分配)条件
第9章 死锁
9.1 死锁的基本概念 9.2 死锁的检测与恢复 9.3 死锁避免 9.4 死锁预防
9.1 死锁的基本概念
一、什么是死锁(Deadlock)?
一个进程集合中的每个进程都在等待只能由该集合中的其它进程才能引 发的事件,这种状态称作死锁。 一组竞争系统资源的进程由于相互等待而出现“永久”阻塞。
死锁的检测方法
如果分配矩阵C如下,其它不变,会死锁吗?
当前分配矩阵C =
0, 0, 2, 0 2, 0, 1, 1 0, 1, 0, 0
9.2 死锁的检测与恢复
二、何时检测死锁?
1)每当有资源请求时; 2)周期性检测; 3)每当CPU的使用率降到某一阈值时。 死锁检测会占用大量的CPU时间
9.2 死锁的检测与恢复源自9.3 死锁避免一、安全状态与不安全状态
安全状态: 若在某一时刻,系统中存在进程序列<P1, P2, …, Pn>,如果按此序列依次为 每个进程Pi分配资源,使每个进程均可顺利完成。则称此时系统的状态为安 全状态,称这样的一个进程序列<P1, P2, …, Pn>为安全序列。 安全序列的实质是:对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量 不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和 若在某一时刻,系统中不存在一个安全序列,则称系统处于不安全状态。