- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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、检测系统资源分配是否安全结果
实用标准文案
七、 小结
“银行家算法的模拟实现”是本学
您可能关注的文档
最近下载
- 门内饰板总成设计指南[整汇编.pdf
- 党支部书记2024-2025年组织生活会个人对照检查发言材料.docx VIP
- 国内外压裂改造技术发展动态.pptx VIP
- 柔性光伏支架结构设计规程.docx VIP
- 安徽省“江南十校”2023-2024学年高三下学期3月联考试题 政治 含解析.docx
- 轻工业企业数字化供应链管理通则编制说明.docx VIP
- 安徽省皖北县中联盟2023-2024学年高一下学期3月月考生物试题含答案.pdf VIP
- 2024年陕西省(初三学业水平考试)中考英语真题(A卷)试卷含详解.docx
- 自主移动机器人教学课件第4章-导航规划-1-概述及路径规划.pptx
- (高清版)B 4962-2008 氢气使用安全技术规程.pdf VIP
文档评论(0)