操作系统实验四 银行家算法概要1.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验四 银行家算法概要1

操作系统实验 实验四 银行家算法 学号 姓名 班级 华侨大学电子工程系 实验目的 理解银行家算法。 掌握进程安全性检查的方法与资源分配的方法。 实验内容与基本要求 编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。 进程 已占资源 最大需求数 A B C D A B C D P0 0 0 1 2 0 0 1 2 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P3 0 6 3 2 0 6 5 2 P4 0 0 1 4 0 6 5 6 现在系统中A、B、C、D 4类资源分别还剩1、5、2、0个,请按银行家算法回答: 现在系统是否处于安全状态? 答是2-1-3-4.。 如果现在进程P1提出需要(0、4、2、0)个资源的请求,系统能否满足它的请求? 答能2-1-3-4.。 实验报告内容 银行家算法和安全性检查算法原理 银行家算法是避免死锁的一种重要方法。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。 如果所有过程有可能完成执行(终止),则一个状态(如上述范例)被认为是安全的。由于系统无法知道什么时候一个过程将终止,或者之后它需要多少资源,系统假定所有进程将最终试图获取其声明的最大资源并在不久之后终止。在大多数情况下,这是一个合理的假设,因为系统不是特别关注每个进程运行了多久(至少不是从避免死锁的角度)。此外,如果一个进程终止前没有获取其它能获取的最多的资源,它只是让系统更容易处理。 基于这一假设,该算法通过尝试寻找允许每个进程获得的最大资源并结束(把资源返还给系统)的进程请求的一个理想集合,来决定一个状态是否是安全的。不存在这个集合的状态都是不安全的 程序流程图 总流程图 银行家算法流程图 安全性算法流程图 程序及注释 using namespace std; #define MAXPROCESS 50 //最大进程数 #define MAXRESOURCE 100 //最大资源数 int AVAILABLE[MAXRESOURCE]; //剩余资源数组 int MAX[MAXPROCESS][MAXRESOURCE]; //完成所需资源矩阵(最大需求) int ALLOCATION[MAXPROCESS][MAXRESOURCE]; //已分配资源矩阵 int NEED[MAXPROCESS][MAXRESOURCE]; //需求资源矩阵 int REQUEST[MAXPROCESS][MAXRESOURCE]; //进程请求资源 bool FINISH[MAXPROCESS]; //FINISH表示系统是否有足够的资源分配给进程使之运行完成 int p[MAXPROCESS]; //P数组用来记录安全序列 int m,n; //m个进程,n个资源 /**子函数声明**/ void Init(); bool Safe(); void Bank(); /*********************主函数*************************/ void main() { Init(); Safe(); Bank(); } /**********************子函数:输入初始信息*****************************/ void Init() { int i,j; cout *******************\n\ *******************\n\ *** 姜博玮 ***\n\ *** 1115107019 ***\n\ *** 11电子2 ***\n\ *******************\n\ *******************\n\ endl; cout请输入进程的数目:; cinm; cout请输入资源的种类数目:; cinn; cout请输入各进程完成所需的各资源数,请按照mxn矩阵输入endl; //读取各进程完成所需的各资源数至MAX(m

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档