操作系统实验---银行家算法中.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
银行家算法 一、实验目的: 运用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地避免死锁的发生,以加深对课堂上所讲授的知识的理解。 二、实验内容: 完成银行家算法的模拟实现:设计有m个进程共享n个系统资源的系统,进程可动态的申请和释放资源。系统按各进程的申请动态的分配资源时,采用银行家算法有效地避免死锁的发生。 三、实验准备: 1.相关理论知识: (1)银行家算法的思路 对进程的资源请求进行合法性检查;若请求合法,则进行试分配。试分配后,调用安全性检查算法进行安全性检查。若安全,则满足该进程请求,分配资源;若不安全,则拒绝该进程申请,不分配资源,并恢复系统试分配前的资源状态。 (2)银行家算法中用到的主要数据结构 可利用资源向量 int Available[j] // j为资源的种类。 最大需求矩阵 int Max[i][j] // i为进程的数量。 分配矩阵 int Allocation[i][j] 需求矩阵 int Need[i][j]= Max[i][j]- Allocation[i][j] 申请各类资源数量 int Requesti[j] //i进程申请j资源的数量 工作向量 int Work[x] int Finish[y] (3)银行家算法Bank() 进程i发出请求申请k个j资源,Requesti[j]=k ① 检查申请量是否小于等于需求量: Requesti[j]=Need[i,j],若条件不符重新输入,不允许申请大于需求量。 ② 检查申请量是否小于等于系统中的可利用资源量: Requesti[j]=Available[j],若条件不符就申请失败,阻塞该进程,用goto语句跳转至重新申请资源。 ③ 若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值: Available[j]= Available[j]- Requesti[j]; Allocation[i][j]= Allocation[i][j]+ Requesti[j]; Need[i][j]= Need[i][j]- Request i[j]; ④ 试分配后,执行安全性检查,调用Safe()函数检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程;否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。 ⑤ 用while循环实现输入字符Y/y判断是否继续请求资源分配。 (4)安全性检查算法(Safe()函数) ① 设置两个向量: 工作向量Work:表示系统可提供给进程继续运行所需的各类资源数目,在执行安全性算法开始时,令Work= Available。 Finish:表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]=false;当有足够的资源分配给进程时,再令Finish[i]=true。 ② 在进程集合中查找符合以下条件的进程: 条件1:Finish[i]=0 条件2:Need[i][j]=Work[j] 若找到,则执行步骤③;否则,执行步骤④ ③ 当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Work[j]= Work[j]+ Allocation[i][j] Finish[i]=true 跳至 ② ④ 若所有进程的Finish[i]=true都满足,则表示已找到安全序列,系统处于安全状态,试分配成功;否则,系统处于不安全状态,不予分配。 2.测试数据: 系统有5个进程(p0,p1,p2,p3,p4)和4类资源(A,B,C,D),在T0时刻的资源分配情况如下表所示:(课本P115 22) Process Max Allocation Need Available P0 0 0 4 4 0 0 3 2 0 0 1 2 1 6 2 2 P1 2 7 5 0 1 0 0 0 1 7 5 0 P2 3 6 10 10 1 3 5 4 2 3 5 6 P3 0 9 8 4 0 3 3 2 0 6 5 2 P4 0 6 6 10 0 0 1 4 0 6 5 6 试问:(1)该状态是否安全? (2)如果进程P2提出请求Request2(1,2,2,2)后,系统能否将资源分配给它? 四、实验过程: 1.流程图 2. 源代码 3. 运行界面: 五

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档