死锁相关算法设计报告.docxVIP

  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文档。上传文档
查看更多
w 操作系统课程设计报告 题目: 死锁相关算法 院 班 姓 学 系: 信息学院 级: 信管11-2 名: 土裕辰 号: 1101051024 指导教师: 赵华 一、概述 本次设计的程序主要功能是实现银行家算法、安全性算法、死锁检测算法,并根据 输入的数据和相应的调度算法计算每个进程的调度结果,根据输入的数据,判断系统安 全状态,判断进程的资源请求是否可以被满足,判定系统是否为死锁状态,然后输出各 种判定结果(是否安全、安全序列、是否死锁、是否允许分配)。 本程序根据当前进程对资源的占用和未分配资源的数量,判断当前系统是否处于安 全状态,判定当前状态下进程对资源的请求是否能够被满足,然后判断当前系统是否产 牛死锁,这给进程的运行提供了较宽松的环境,有利于进程的并发执行。通过对银行家 算法,安全性算法和死锁检测算法的模拟,加深了对这三种算法的理解,更好地掌握了 死锁预防和检测的方法。 二、设计的基本概念和原理 安全性算法 安全状态:指系统能按某种进程顺序(Pl, P2,…,Pn)(称vPl, P2,…,Pn 序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大 需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处 于不安全状态。 银行家算法 银行家算法把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资 金,进程向操作系统请求分配资源相当于用户向银行家贷款。 为保证资金的安全,银行家规定: 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客; 顾客可以分期贷款,但贷款的总数不能超过最大需求量; 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支 付,但总能使顾客在有限的时间里得到贷款; 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金. 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试 该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的 中请量分配资源,否则就推迟分配。当进程在执行中继续中请资源时,先测试该进程本 次审请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则 按当前的申请量分配资源,否则也要推迟分配。 死锁检测算法 在资源分配图中,找岀一个既不阻塞又非独立的进程结点Pio在顺利地情况下,Pi 可获得所需资源而继续运行,直至运行完毕,再释放其所占有的全部资源,这相当于消 去Pi所有的请求边和分配边,使之成为孤立的结点。 重复上述过程,在进行一系列的简化后,若能消去图屮所有的边,使所有的进程结 点都成为孤立结点,则称该图是可简化的;若不能通过任何进程使该图完全简化,则称 该图是不可完全简化的。 当且仅当某状态的资源分配图是不可完全简化时,此状态为死锁状态。 三、总体设计 本程序才用了结构化程序设计方法,将程序进行了模块化划分。首先定义儿种算法 中的数据结构,用数组来存放资源。用用户输入的数据来初始化相关数组,以此来表示 不同种类、不同进程请求的资源数量。首先调用安全性算法检测当前系统是否处于安全 状态。然后用户输入请求向量,调用银行家算法判断是否允许分配。 本程序包括以下三个模块: (1) 预定义模块 定义程序所用到的头文件并定义了进程数量和临界资源的种类。 (2) 主程序模块 包括以下五个步骤 输入当前系统状态 调用安全性算法检测系统是否处于安全状态。若安全执行步骤③,否则退出程序。 输入请求向量 调用银行家算法对资源矩阵进行假定修改 调用安全性算法判断上述假定修改后系统是否安全,若安全系统允许分配,否则不 允许。 (3) 其他函数模块 定义安全性算法、银行家算法和死锁检测算法。 程序流程图: 开始 系统足否安仝输入诃求 向廿 系统足否安仝 输入诃求 向廿 4 4 苗川银行家算法 不允许分配资N源 V诂求趨过灵上讥?〔詁霖副过呵利用? 不允许分配资N 源 V 诂求趨过灵上讥? 〔詁霖副过呵利用? M M i 允许分配资源 结束 结束 !1!I !1! I、详细设计 每个模块的代码及分析如下: 1、预定义模块 #include stdafx.h #include iostream #define m 3 〃资源类数 #define n 5 〃进程个数 2、主程序模块 int main(int argc, char * argv[]) { int Available[m],Max[n] [ml, Allocation[n] [m],Need[nl [m],Request[n] [m]; //Available可用资源向量 Max最大需求矩阵 Allocation分配矩阵 Need需求 矩阵Request[i][j]进程i请求资源j的数量 int i

文档评论(0)

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

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

1亿VIP精品文档

相关文档