进程死锁

来源:互联网 发布:ifashion淘宝 编辑:程序博客网 时间:2024/06/05 10:51

进程死锁


进程死锁主要掌握以下知识点:

  1. 死锁的概念
  2. 死锁产生的四个必要条件(重点)
  3. 银行家算法避免死锁
  4. 资源分配图判断是否产生死锁

一.什么是死锁?
举个例子加以说明,更加形象生动。
两个小孩在一起玩耍,一个在玩皮球,另一个玩自动步枪,如果这两个小孩都要对方手中的玩具,而又不肯先放掉自己拿着的玩具,这时就发生了僵持局面。


二.死锁的四个必要条件(重点,务必记住)

  1. 互斥条件:涉及的资源是非共享的
  2. 不剥夺条件:不能强行剥夺进程拥有的资源
  3. 部分分配条件:进程在等待新资源时,依然占者已有资源
  4. 环路条件:存在一种进程的循环链,链中的每一个进程已获得的资源同时被链中的下一个进程所请求。

三、银行家算法

基本思想就不介绍了,我通过一个例题来讲解银行家算法。

有三类资源A(17)、B(5)、C(20)。有5个进程P1—P5。T0时刻系统状态如下:
这里写图片描述
问(1)、T0时刻是否为安全状态,给出安全序列。
(2)、T0时刻,P2: Request(0,3,4),能否分配,为什么?
(3)、在(2)的基础上P4:Request(2,0,1),能否分配,为什么?
(4)、 在(3)的基础上P1:Request(0,2,0),能否分配,为什么?

解答如下:
在T0时刻,A、B、C三类资源分别还剩2、3、3

need P1 3 4 7 P2 1 3 4 P3 0 0 6 P4 2 2 1 P5 1 1 0

存在如下的安全序列:P4–>P5–>P1–>P2–>P3
因此T0时刻为安全状态。

T0时刻,P2:Request(0,3,4)不能分配,因为可用资源C不足。

在(2)的基础上,P4:Request(2,0,1),假设给它分配:于是有
A、B、C三类资源分别还剩0、3、2

need P1 3 4 7 P2 1 3 4 P3 0 0 6 P4 0 2 0 P5 1 1 0

存在安全序列:P4–>P5–>P1–>P2–>P3
因此可以给P4分配

在(3)的基础上P1:Request(0,2,0),假设给它分配,于是有
A、B、C三类资源分别还剩0、1、2

need P1 3 2 7 P2 1 3 4 P3 0 0 6 P4 0 2 0 P5 1 1 0

如果分配的话,会导致剩余的资源数量已经不能满足任何一个进程的需求,会导致所有进程无法完成,处于等待状态,形成死锁。因此,不能分配。


四、资源分配图

表示法
资源类(资源的不同类型)
用方框表示
资源实例(存在于每个资源中)
用方框中的黑圆点(圈)表示
进程
用圆圈中加进程名表示

分配边:
资源实例进程的一条有向边

申请边:
进程资源类的一条有向边

资源分配图举例:
这里写图片描述


这里写图片描述


资源分配图化简来判断是否死锁
1)找一个非孤立点进程结点且只有分配边,去掉分配边,将其变为孤立结点
2)再把相应的资源分配给一个等待该资源的进程,即将某进程的申请边变为分配边
3)重复以上步骤,若所有进程成为孤立结点,称该图是可完全简化的,否则称该图是不可完全简化的。
死锁状态的充分条件是:当且仅当资源分配图是不可完全简化的。

好吧,请大家利用上面的化简方法来判读上面二个资源分配图是否形成死锁!

原创粉丝点击