操作系统概念(第七版)—— 第七章:死锁

目录

什么是死锁

系统模型

死锁特征 210P

出现死锁的必要条件

资源分配图 212P

死锁处理方法

死锁预防

死锁避免(deadlock-avoidance)

安全状态

资源分配图算法

银行家算法

死锁检测

应用检测算法

死锁恢复

进程终止

资源抢占


什么是死锁


  • 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程

系统模型


进程在使用资源之前必须先申请资源,在使用资源之后要释放资源。进程所申请的资源数量不能超过系统所有资源的总量。

在正常操作模式下,进程只能按如下顺序使用资源:

①申请:如果申请不能立即被允许,那么申请进程必须等待,直到它获得该资源为止。

②使用:进程对资源进行操作。

③释放:进程释放资源

  • 资源的申请与释放是系统调用来操作的。
  • 其他资源的申请与释放可以通过信号量的wait与signal操作或通过互斥锁的获取与释放来完成。
  • 因此对于进程和线程的每次使用,操作系统会检查以确保使用进程已经申请并获得了资源。
  • 系统表记录了每个资源是否空闲或已被分配,分配给了哪个进程。如果进程正在申请的资源正在被其他进程所使用,那么该进程会增加到该资源的等待队列。
  • 当一组进程的每个进程都在等待一个事件,而这个事件只能由这一组进程的其中一个进程所引起,那么这组进程就处于死锁状态。
  • 死锁也可设计不同的资源类型。多线程可能因为竞争共享资源而容易产生死锁。

死锁特征 210P


当出现死锁时,进程永远不能完成,并且系统资源被阻碍使用,阻止了其他作业开始执行。


出现死锁的必要条件


如果在一个系统中下面四个条件同时满足,那么会引起死锁。

  •  互斥(mutual exclusion):至少有一个资源必须处于非共享模式,即一次只能有一个进程使用,如果另一个进程申请该资源,那么申请进程必须等到该资源被释放为止。
  •  占有并等待(hold and wait):一个进程必须占有至少一个资源,并等待另一资源,而该资源被其他进程所占有。
  •  非抢占(no preemption):该资源不能被抢占,即资源只能在进程完成任务后自动释放。
  •  循环等待:有两个或者两个以上的进程形成一组循环,该循环中的每个进程都在等待下一个进程所占有的资源。

4个条件必须同时满足才会出现死锁,循环等待条件意味着占有并等待条件,这样四个条件并不完全独立。
 


资源分配图 212P


死锁问题可用称为系统资源分配图的有向图进行更为精确地描述。

这种图由一个节点集合V和一个边集合E组成。节点集合V可以分成两种类型的节点:

  • P={P1,P2,…,Pn}(系统活动进程的集合)
  • R={R1,R2,…,Rn}(系统所有资源的集合)
  • Pi -》 Rj 表示进程 Pi 已经申请了资源类型为 Rj 的一个实例,并在等待该资源。称为申请边
  • Rj -》Pi 表示资源类型 Rj 已经分配给进程 Pi,称为分配边

如一个分配图的例子如下:
 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值