操作系统之《死锁与银行家算法》【知识点+详细解题过程】

知识点:

1、什么是死锁?(别名"三角恋",我喜欢你你喜欢他他喜欢我,明明都单身但是就是‘占有’不了)

一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程称为死锁进程。

2、产生死锁的原因

系统资源不足
进程申请顺序不当
进程推进顺序非法
PV操作使用不当

3、死锁产生的必要条件

产生死锁的必要条件(同时满足)
互斥临界资源为互斥使用
不可剥夺(非抢占)一旦占有就直到使用完毕,由进程释放
占有和等待进程在请求资源得不到满足而等待时,不释放已占有资源
环路(循环等待)各进程对资源的占有和请求形成环路

 4、死锁的处理方法

(1)预防死锁:通过某些限制条件的设置,去破坏产生死锁的四个必要条件;

(2)避免死锁:在资源的动态分配过程中,用某种方法去防止系统进入不安全状态;

(3)检测死锁:及时检测死锁的发生,并确定与之相关的进程、资源,从而采取措施清除死锁;

(4)解除死锁:撤消或挂起某些进程以回收一些资源,用于解脱另一些处于死锁的进程。

5、银行家算法:

(1)基本思想:

在进程提出资源申请时,预先判断这次分配是否会导致系统进入不安全状态,如果会进入不安全状态,就暂时不答应这次请求,让该进程先阻塞等待。

(2)银行家算法数据结构:

剩余资源数组及三个基本矩阵
剩余资源数组Available=[R1,R2,…,Rn]
最大资源需求矩阵Max 资源(已)
分配矩阵Allocation
剩余资源需求矩阵Need

 (3)算法思路:

  • 第一步判断,请求是否小于现有可用资源
  • 第二步判断,请求是否小于该进程所需资源
  • 第三步,在满足前两步的基础上,执行安全性算法,拟分配,找出安全序列

  • 第四步,回答,若安全便列出安全序列,若不安全则指出哪一步不满足

 

题练:

1、在银行家算法中,若出现下述资源分配情况:

 试问:(1)该状态是否安全?
  (2)如果进程P2提出请求Request(0,2,2,2)后,系统能否将资源分配给它?

(1)安全。
(2)不能分配,因为在试分配给P2后,Available为(1,4,0,0),找不到满足状态为False且Need<Available的进程。

2、系统有四类资源A、B、C、D,数量分别是4、11、14、12。有5个进程P0,P1、P2、P3、P4。T0时刻系统状态如下: 

问 (1)T0时刻系统可用资源数Available(A、B、C、D)各是多少?
(2)T0时刻就是否为安全状态,给出安全序列。 
(3)T0时刻,P2发出资源请求: Request(0,4,3,4),能否分配,系统如何处理?

(1)T0时刻系统可用资源数Available为(2,6,2,3).
(2)T0时刻为安全状态,安全序列为(P4,P0,P2,P1,P3).

(3)不能分配,因为P2的请求资源中C资源超过了所需的C资源.
Request(0,4,3,4),而T0时刻,P2进程的所需资源为Need(0,6,2,5)

3、某系统有A、B、C、D四类资源可供五个进程P1.P2.P3.P4.P5共享。系统对这四类资源的拥有量为:A类14个、B类13个、C类4个、D类12个。在T0时刻,进程对资源的需求和分配情况如下表所示。

问:(1)T0时刻系统可用资源数Available(A、B、C、D)各是多少?

(2)判断T0时刻系统是否处于安全状态(要有算法过程)。若是,给出进程的安全序列,要求给出产生进程安全序列的详细过程。
(3)P1提出资源请求Request1(0、3,0,4)是否可进行分配,为什么?

(1)T0时刻,可用资源Available(A,B,C,D)各为(3,1,2,6)
(2)T0时刻处于安全状态,安全序列为P4,P3,P0,P1,P2。
(3)不能进行分配,因为P1的请求资源中的B资源超出了可用的资源。
RequestP1(0,3,0,4)> Available(3,1,2,6)

4、假定系统有进程集合(P0,Pl,P2,P3,P4),资源集合为(A,B,C,D),资源总数量分别为(14,3,14,12) 假定某时刻T0系统的状态如表所示。

问:(1)T0时刻系统可用资源数Available(A、B、C、D)各是多少?
(2)T0时刻就是否为安全状态,给出安全序列。 
(3)T0时刻,P3: Request(1,0,1,0),系统如何处理?能否分配?

(1)T0时刻系统可用资源数Avaiable(A,B,C,D)为(2,1,2,6)
(2)T0时刻为安全状态,安全序列为(P3,P1,P2,P0,P4)
(3)T0时刻,可以分配资源给进程P3,安全序列为P3,P1,P2,P0,P4。

5、假定系统有进程集合(Po,Pl,P2,P3,P4),资源集合为(A,B,C),资源数量分别为(10,8,7)。假定某时刻系统的状态如表所示。

试给出进程的剩余请求矩阵,并判断当前系统是否处于安全状态。若是,给出进程的安全序列。要求给出产生进程安全序列的详细过程。

(1)剩余矩阵(Need):

        A  B   C   
P0   7   5   3
P1   1   2   2
P2   6   1   0
P3   0   2   1
P4   4   2   2

(2)T0时刻处于安全状态,安全序列为P3,P1,P0,P2,P4

(3)详细过程如图所示。

  • 34
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值