银行家算法—课程的设计.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文档。上传文档
查看更多
银行家算法—课程的设计

操作系统课程设计 进程管理 死锁避免算法设计 姓 名: 学 号: 系 别: 计算机科学与工程 专 业: 计算机科学与技术 年 级: 指导教师: 2011年 5 月16 日 一、课程设计项目介绍(含项目介绍及设计目的) 项目介绍: 1、前言介绍:在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用提高吞吐量,但可能发生一种危险——死锁。当进程处于这种僵持状态时,若无外力作用,他们都无法再向前推进。 在操作系统的资源分配也有类似的问题,如果资源分配不得当就会发生进程循环等待资源,就会出现死锁的现象。而最有代表性的避免死锁的算法就是银行家算法。银行家算法是避免死锁的一种重要方法语言银行家算法3.6.3节中所描述的银行家避免死锁算法。 要求:可自定义进程数目、资源类型和每种类型资源的数目; ?? 可输入每个进程对每种资源的最大需求、已经获得的数量; ?? 当某进程发起某种资源请求时,计算系统状态是否安全。 设计目的: 1、加深了解有关资源申请、避免死锁等概念,NEED,则转向(2);否则,出错 (2)、如果Request= ALLOCATION,则转向(3),否则等待 (3)、系统尝试分配资源给进程 (4)、系统执行安全性算法 3、安全性算法chkerr () (1)、设置两个向量 工作向量: WORK= AVAILABLE (表示系统可提供给进程继续运行所需要的各类资源数目) FINISH:表示系统是否有足够资源分配给进程(TRUE表示有; FALSE表示没有),初始化为FALSE。. (2)、若FINISH [i]=FALSENEED=WORK,则执行3;否则执行4 (3)、进程P获得第i类资源,则顺利执行直至完成!并释放资源: WORK=WORK+ALLOCATION[i][j]; FINISH[i]=TRUE; 转2 (4)FINISH[i]=TRUE,则表示系统安全;否则,不安全! 三、详细设计(含主要的数据结构、程序流程图、关键代码段及注释等) 数据结构: 1.可利用资源向量AVAILABLE 2.分配矩阵ALLOCATION 3.需求矩阵NEED 程序流程图: 关键代码段: #include stdio.h #define M 50 //总进程数 #define N 30 //总资源数 #define FALSE 0 #define TRUE 1 int E,F; //系统可用资源数 int AVAILABLE[N]; //可用资源的数组 int ALLOCATION[M][N]; //已分配到的资源 int NEED[M][N]; //需求矩阵 int Request[N]; //进程请求的资源数 main() //主函数 { int i=0,j=0; int flag=1; //合法的资源申请 void showdata(); //显示资源分配情况函数 void changdata(int); //更改资源分配函数 void rstordata(int); //还原预分配资源函数 void bank(); //银行家算法函数 int chkerr(int); //安全性算法函数 printf(\n———银 行 家 算 法———\n\n); printf(***输入进程总数 E: ); scanf( %d, E); //输入进程总数 printf(***输入资源种类总数 F: ); scanf( %d, F); //输入资源种类数 printf(***输入已分配资源数: \n); for(i=0;iE; i++) for(j=0;jF; j++) { scanf( %d,ALLOCATION[i][j]); //输入以分配资源数 } printf(***输入还需要的资源数\n); for (i=0;iE; i++) for(j=0;jF; j++) { scanf( %d,NEED [i][j]); //输入还需资源数 } printf(***输入可利用的资源数\n); for (i=0;iF; i++) scanf( %d, AVAILABLE[i]); //输入可利用的资源数 printf

文档评论(0)

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

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

1亿VIP精品文档

相关文档