admin 管理员组

文章数量: 887021

银行家算法个人出题例题 (含答案)

以下为本人期末复习有点学不到动了个人结合上课内容揣摩考点出题,请勿搬运商业化

1.银行家算法是代表性的避免死锁的算法,在进程调度中具有重要作用。请结合所学知识回答以下问题:(23分——加长版)

(1)银行家算法使用的四个必要的数据结构是:可用资源向量Available,____________,分配矩阵Allocation,需求矩阵Need。(1分)

(2)以下是银行家算法具体实现:
设Requesti 是进程Pi 的请求向量,如果Requesti[j]=K,表示Pi 需要K个Rj 类型的资源;当Pi 发出资源请求后,系统按下述步骤进行检查:

①如果Requesti[j]≤Need[i,j],转向步骤②;否则认为出错,请简述出错原因_______________________________________________________________。(2分)

②如果果Requesti[j]≤Available[j],便转向步骤③,否则表示尚无足够资源,Pi只能阻塞等待。

③系统尝试把资源分配给进程Pi,并修改下面数据结构中数值:(请补充不完整的地方)(2分)
Available[j]=______________
Allocation[i,j]=_______________
Need[i,j]=Need[i,j]-Requesti[j]

④执行安全性算法。(请补充不完整的地方)
A.首先需要设置两个工作向量,一个是含有m个元素的工作向量work,表示系统可提供给系统继续运行的所需的各类资源数目。work初始赋值应该为_________。(1分)
另一个是Finish,表示系统是否有足够的资源分配给进程,使之运行完成,开始时先令Finish[i]=false;当有足够资源分配给进程时,再修改为true;

B.开始不断重复从进程集合中找到一个能满足下述条件的进程
Finish[i]=_____ ;(1分)
Need[i,j]<=______;(1分)
若找到则执行步骤C,否则执行步骤D。

C.当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:
Work[j]=____________ ;(1分)
Finish[i]=____________ ;(1分)
跳转到步骤B

D.如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态,否则处于不安全状态。

(3)以下是银行家算法的一个实例,请据此作答。
假定系统中有五个进程{P0 , P1 , P2 , P3 , P4 }和三类资源{A, B, C},各种资源的数量分别为10、5、7,在T0 时刻的资源分配情况如图所示。

①请问T0时刻是否安全,若安全请写出一个安全序列。
_________________________________________________________;(2分)
②当前情况下请问P4提出Request(2,3,1),系统能否分配给P2?请写出分析过程(提示:可参照前面的过程做简要分析)(6分)








(4)综上,请问银行家算法是不是破坏了产生死锁的必要条件来达到避免死锁的目的?若是,请简述破坏了哪几个条件,若不是,请简述银行家算法是如何避免死锁的。(3分)



(5)综上并结合所学知识请简述银行家算法的优缺点。(2分)












答案

本文标签: 例题 银行家 算法 含答案 操作系统