银行家算法实验报告最新参考版.pdfVIP

  • 52
  • 0
  • 约1.86千字
  • 约 5页
  • 2021-01-23 发布于湖南
  • 举报
计算机操作系统实验报告 何美西 109253030212 一、 实验名称: 银行家算法 二、 实验目的: 银行家算法是避免死锁的一种重要方法,通过编写 一个简单的银行家算法程序,加深了解有关资源申请、避免死 锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 三、 问题分析与设计: 1、算法思路 :先对用户提出的请求进行合法性检查,即检查 请求是否大于需要的,是否大于可利用的。若请求合法,则进 行预分配,对分配后的状态调用安全性算法进行检查。若安 全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒 绝申请。 2 、银行家算法步骤: (1)如果 Requesti<or =Need,则转向步 骤 (2);否则,认为出错,因为它所需要的资源数已超过它所 宣布的最大值。 (2)如果 Request<or=Available, 则转向步骤( 3);否则,表 示系统中尚无足够的资源,进程必须等待。 (3)系统试探把要求的资源分配给进程 Pi,并修改下面数据结 构中的数值: Available=Available-Request[i]; 可编辑 word, 供参考版! Allocation=Allocation+Request; Need=Need-Request; (4)系统执行安全性算法,检查此次资源分配后,系统是否处于 安全状态。 3、安全性算法步骤: (1)设置两个向量 ①工作向量 Work 。它表示系统可提供进程继续运行所需要的各类资 源数目,执行安全算法开始时, Work=Allocation; ②布尔向量 Finish。它表示系统是否有足够的资源分配给进程,使 之运行完成,开始时先做 Finish[i]=false ,当有足够资源分配给进程 时,令 Finish[i]=true 。 (2)从进程集合中找到一个能满足下述条件的进程: ① Finish[i]=false ② Needor=Work 如找到,执行步骤( 3);否则,执行步骤( 4 )。 (3)当进程 P 获得资源后,可顺利执行,直至完成,并释放出分配 给它的资源,故应执行: Work=Work+Allocation; Finish[i]=true; 可编辑 word, 供参考版! 转向步骤( 2)。 (4 )如果所有进程的 Finish[i]=true, 则表示系统处于安全状态;否 则,系统处于不安全状态。 4、流程图: 系统主要过程流程图 可编辑 word, 供参考版! 银行家算法流程图 可编辑 word, 供参考版! 安全性算法流程图 四、 实验代码: #includeiostream.h #includestring.h #includestdio.h #define False 0 可编辑 word, 供参考版!

文档评论(0)

1亿VIP精品文档

相关文档