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

操作系统课程设计.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案 操作系统课程设计 (银行家算法的模拟实现) 一、设计目的 1、进一步了解进程的并发执行。 2、加强对进程死锁的理解。 3、用银行家算法完成死锁检测。二、设计内容 给出进程需求矩阵C、资源向量R 以及一个进程的申请序列。使用进程启动拒绝和资源分配拒绝(银行家算法)模拟该进程组的执行情况。 三、设计要求 1、初始状态没有进程启动。 2、计算每次进程申请是否分配,如:计算出预分配后的状态情况 (安全状态、不安全状态),如果是安全状态,输出安全序列。 3、每次进程申请被允许后,输出资源分配矩阵 A 和可用资源向量 V。 4、每次申请情况应可单步查看,如:输入一个空格,继续下个申请。 四、算法原理 1、银行家算法中的数据结构 精彩文档 实用标准文案 (1)、可利用资源向量Available,这是一个含有m 个元素的数组,其中的每个元素代表一类可利用资源的数目, 其初始值是系统中所配置的该类全部资源的数目,其数值随该类资源的分配和回收而动态改变。如果 Available[j]=K,则表示系统中现有 Rj 类资源 K 个。 、最大需求矩阵 Max,这是一个n*m 的矩阵,它定义了系 统中n 个进程中的每一个进程对m 类资源的最大需求。如果Max[i,j]=K,则表示进程i 需要 Rj 类资源的最大数目为K。 、分配矩阵 Allocation。这也是一个n*m 的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程 i 当前已经分得Rj 类资源的数目为K。 、需求矩阵 Need。这也是一个 n*m 的矩阵,用以表示每个进程尚需要的各类资源数。如果Need[i,j]=K,则表示进程i 还需要 Rj 类资源K 个,方能完成其任务。上述三个矩阵间存在以下关系: Need[i,j]=Max[i,j]-Allocation[i,j] 2、银行家算法应用 模拟实现 Dijkstra 的银行家算法以避免死锁的出现,分两部分组成:一是银行家算法(扫描);二是安全性算法。 (1)银行家算法(扫描) 设Requesti 是进程Pi 的请求向量,如果Requesti[j]=K, 表示进程Pi 需要 K 个Ri 类型的资源。当Pi 发出资源请求后,系统按下述步骤进行检查: 精彩文档 实用标准文案 ①如果Requesti[j]=Need[i,j],便转向步骤②;否则认为出错,因为它所需的资源数已经超过了它所宣布的最大值。 ②如果Requesti[j]=Allocation[i,j],便转向步骤③;否则表示尚无足够资源,Pi 需等待。 ③系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值。 Available[j]=Available-Requesti[j]; Allocation[i,j]=Allocation[i,j]+Requesti[j]; Need[i,j]=Need[i,j]-Requesti[j]; ④系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,已完成本次分配;否则,将本次的试探分配作废,恢复原来资源的分配状态,让进程Pi 等待。 (2)安全性算法 系统所执行的安全性算法可描述如下: ①设置两个向量:一个是工作向量Work;它表示系统可提供给进程继续运行所需要的各类资源的数目,它含有 m 个元素,在执行安全性算法开始时,work=Available;另一个是 Finish;它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]=false;当有足够资源分配给进程时,再令Finish[i]=true; ②从进程集合中找到能满足下述条件的进程: 精彩文档 实用标准文案 一是Finish[i]==false;二是 Need[i,j]=Work[j];若找到,执行步骤③,否则,执行步骤④; ③当进程 Pi 获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Work[j]=Work[j]+Allocation[i,j]; Finish[i]=true; go to step②; ④如果所有进程的 Finish[i]==true 都满足,则表示系统处于安全状态,否则系统处于不安全状态。 五、设计思路 1、进程一开始向系统提出最大需求量; 2、进程每次提出新的需求(分期贷款)都统计是否超出它事先提出的最大需求量; 3、若正常,则判断该进程所需剩余量(包括本次申请)是否超出系统所掌握的剩余资源量,若不超出,则分配,否则等待。 六、 程序运行调试结果 1、程序初始化 精彩文档 精彩文档实用标准文案 精彩文档 2、检测系统资源分配是否安全结果 实用标准文案 七、 小结 “银行家算法的模拟实现”是本学

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

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

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

1亿VIP精品文档

相关文档