网站大量收购闲置独家精品文档,联系QQ:2885784924

银行家算法设计-操作系统课程设计报告书.docVIP

银行家算法设计-操作系统课程设计报告书.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

课程设计:银行家算法设计

目录

TOC\o1-3\h\z\u一.设计目的: 1

二.设计内容: 1

三.设计过程 2

实现功能 2

添加功能 2

设计思路 2

算法和流程图 2

四.操作界面截图及分析 4

五.设计总结: 7

附录:各程序主要函数及注释 7

设计的函数 9

check检查平安性函数 9

主函数 11

一.设计目的:

本设计的目的是通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和防止死锁地发生。

二.设计内容:

编制银行家算法通用程序,并检测所给状态的系统平安性。

设进程I提出请求Request[N],那么银行家算法按如下规那么进行判断。

(1)如果Request[N]=NEED[I,N],那么转(2);否那么,出错。

(2)如果Request[N]=AVAILABLE,那么转(3);否那么,出错。

(3)系统试探分配资源,修改相关数据:

AVAILABLE=AVAILABLE-REQUEST

ALLOCATION=ALLOCATION+REQUEST

NEED=NEED-REQUEST

(4)系统执行平安性检查,如平安,那么分配成立;否那么试探险性分配作废,系统恢复原状,进程等待。

三.设计过程

实现功能

voidshowdata()//函数showdata,输出资源分配情况

voidchangdata(intk)//函数changdata,改变可用资源和已经拿到资源和还需要的资源的值

voidrstordata(intk)//函数rstordata,恢复可用资源和已经拿到资源和

还需要的资源的值

intcheck(ints)//函数check,检查是否平安

voidbank()//银行家算法

添加功能

设计思路

银行家算法,顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,那么进程都无法继续执行下去的死锁现象。

把一个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。显然,,每个进程的资源需求总量不能超过系统拥有的资源总数,银行算法进行资源分配可以防止死锁.

算法和流程图

1.银行家算法:

设进程i提出请求Request[n],那么银行家算法按如下规那么进行判断。

(1)如果Request[n]Need[i,n],那么报错返回。

(2)如果Request[n]Available,那么进程i进入等待资源状态,返回。

(3)假设进程i的申请已获批准,于是修改系统状态:

Available=Available-Request

Allocation=Allocation+Request

Need=Need-Request

(4)系统执行平安性检查,如平安,那么分配成立;否那么试探险性分配作废,系统恢复原状,进程等待。

开始

开始

输入数据

提出请求Request

Request[j]=NEED[i][j]?

Request[j]=AVAILABLE[j]?

AVAILABLE[j]=AVAILABLE[j]-Request[j];

ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j];

NEED[k][j]=NEED[k][j]-Request[j];

check?平安性检查

调用showdata()函数,输出资源分配情况

调用rstordata(i)函数,恢复资源数

调用showdata()函数,输出资源分配情况

输出信息:经平安性检查,系统平安,本次分配成功

输出信息:系统不平安!!!本次资源申请不成功

输出错误提示

输出错误提示

是否继续演示?

N

YN

结束

N

YN

YN

YN

N

N

2.平安性检查

(1)设置两个工作向量Work=Available;Finish[M]=False

(2)从进程集合中找到一个满足下述条件的进程,

Finish[

文档评论(0)

199****4744 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:7002121022000045

1亿VIP精品文档

相关文档