操作系统实验银行家算法.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
实验三 银行家算法 实验内容简要描述 实验目标: 加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 要求编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算 法,有效的防止和避免死锁的发生。 实验要求: 银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算 法程序。 用银行家算法实现资源分配。 设计五个进程 {p0,p1,p2,p3,p4} 共享三类资源 {A,B,C}的系统, 例如, {A,B,C}的资源数量分别为 10 ,5 , 7 。进程可动态地申请资源和释放资源,系统按进程的申请动态地分配资源,要求程序具有显示 和打印各进程的某一个时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号 以及为某进程分配资源后的有关资源数据。 报告主要内容 设计思路 设计进程对各在资源最大申请表示及初值确定。 设定系统提供资源初始状态。 设定每次某个进程对各类资源的申请表示。 编制程序,依据银行家算法,决定其申请是否得到满足。 主要数据结构 假设有 M 个进程 N 类资源,则有如下数据结构: MAX[M*N] M 个进程对 N 类资源的最大需求量 AVAILABLE[N] 系统可用资源数 ALLOCATION[M*N] M 个进程已经得到 N 类资源的资源量 NEED[M*N] M 个进程还需要 N 类资源的资源量 银行家算法: 设进程 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 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 安全性检查: (1)设置两个工作向量 WORK=AVAILABLE;FINISH[M]=FALSE (2)从进程集合中找到一个满足下述条件的进程, FINISH[i]=FALSE NEED=WORK 如找到,执行 (3) ;否则,执行 (4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 WORK=WORK+ALLOCATION FINISH=TRUE GO TO 2 (4)如所有的进程 Finish[M]=true ,则表示安全;否则系统不安全。 主要代码 源程序: #include iostream 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]; /* 系统是否有足够的资源分配 */ int p[MAXPROCES

您可能关注的文档

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档