操作系统课程设计银行家算法参考.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文档。上传文档
查看更多
操作系统课程设计银行家算法参考

3 课程设计三 银行家算法(参考1) 1设计目的 (1)了解多道程序系统中,多个进程并发执行的资源分配。 (2)掌握死锁产生的原因、产生死锁的必要条件和处理死锁的基本方法。 (3)掌握预防死锁的方法,系统安全状态的基本概念。 (4)掌握银行家算法,了解资源在进程并发执行中的资源分配策略。 (5)理解避免死锁在当前计算机系统不常使用的原因。 2.算法描述 Dijkstra(1965年)提出了一种能够避免死锁的调度方法,称为银行家算法,它的模型基于一个小城镇的银行家,现将该算法描述如下:假定一个银行家拥有资金,数量为Σ,被N个客户共享。银行家对客户提出下列约束条件: 每个客户必须预先说明自已所要求的最大资金量; 每个客户每次提出部分资金量申请各获得分配; 如果银行满足了客户对资金的最大需求量,那么,客户在资金动作后,应在有限时间内全部归还银行。 只要每个客户遵守上述约束,银行家将保证做到:若一个客户所要求的最大资金量不超过Σ,则银行一定接纳该客户,并可处理他的资金需求;银行在收到一个客户的资金申请时,可能因资金不足而让客户等待,但保证在有限时间内让客户获得资金。在银行家算法中,客户可看做进程,资金可看做资源,银行家可看做操作系统。 3. 环境 操作系统Windows XP SP2,开发工具VC++6.0或者BCB6.0。 4 功能模块说明 1.银行家所能够提供的资源 typedef struct node{ int a; int b; int c; int remain_a; int remain_b; int remain_c; }bank; 2.进程所占用的资源 typedef struct node1{ char name[20]; int a; int b; int c; int need_a; int need_b; int need_c; }process; main()函数:完成对系统运行环境的初始化,定义了简单的选择菜单,调用各功能函数。 initial()函数:对银行家结构体(银行家所拥有的资源种类和资源数目)初始化,对进程结构体(进程所需要的资源数目)进行初始化。 add()函数:创建进程,定义进程运行所需的资源,检查系统提供的资源是否满足进程所需要的资源,如果满足则分配成功;不满足则分配失败。 bid()函数:给进程分配资源,检查系统提供的资源是否满足分配进程的资源,如果满足则分配成功;不满足则分配失败。 finished()函数:撤销进程,释放进程所占有的全部资源。 view()函数:查看当前系统进程占用的资源情况和系统中空闲的资源情况。 5 参考源代码 #includestdio.h #includestring.h #includeiostream.h #includestdlib.h #includeiomanip.h #includeconio.h const int MAX_p=20; const int MAXA=10;//定义A类资源的数量 const int MAXB=5; const int MAXC=7; typedef struct node{ int a; int b; int c; int remain_a; int remain_b; int remain_c; }bank; typedef struct node1{ char name[20]; int a; int b; int c; int need_a; int need_b; int need_c; }process; bank banker; process processes[MAX_p]; int quantity; //初始化函数 void initial() { int I; banker.a=MAXA; banker.b=MAXB; banker.c=MAXC; for(i=0;iMAX_p;i++){ strcpy(processes[i].name,””); processes[i].a=0; processes[i].b=0; processes[i].c=0; processes[i].need_a=0; processes[i].need_b=0; processes[i].need_c=0; } } //新加作业 void add() { char name[20]; int flag=0; int t; int need_a,need_b,need_c; int I; coutendl; cout“新加作业”endl; cout“------

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档