- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章作业 8、何谓死锁?产生死锁的原因和必要条件是什么? a. 死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进; b. 产生死锁的原因有二,一是竞争资源,二是进程推进顺序非法; c. 必要条件是: 互斥条件,请求和保持条件,不剥夺条件和环路等待条件. 本章作业 9、在解决死锁问题的几个方法中,哪种方法最容易实现?哪种方法使资源的利用率最高? a. 解决死锁可归纳为四种方法: 预防死锁,避免死锁,检测死锁和解除死锁; b. 其中,预防死锁是最容易实现的; c. 避免死锁使资源的利用率最高. 1、系统的安全状态 由安全状态向不安全状态的转换:如在T0以后,P3要求1台磁带机,若系统分给它一台,则系统进入不安全状态。 进程 最大需求 已分配 还需 可用 p1 10 5 5 2 p2 4 2 2 p3 9 3 6 因为其余2台分给P2,P2完成后,只能释放4台,这既不能满足P1(5台),也不能满足P3(6台),将导致死锁。 银行家算法原理 OS------银行家 系统管理的资源------银行家管理的资金 进程向OS请求分配的资源------用户向银行家贷款 为保证资金的安全,银行家规定: 一个用户对资金的最大需求量不超过银行家现有的资金时就可接纳用户 顾客可以分期贷款,但贷款的总数不能超过最大需求量 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可以推迟支付,但总能使顾客在有限的时间内得到贷款。 2、避免死锁的算法-银行家算法 2、避免死锁的算法-银行家算法 为实现银行家算法,系统中必须设置若干数据结构。假定系统中有n个进程(P1,P2,…,Pn),m类资源(R1,R2,…,Rm),银行家算法中使用的数据结构如下: 可利用资源向量:available[j]=k, 资源Rj类有k个可用 最大需求矩阵:Max[i,j]=k,进程Pi最大请求k个Rj类资源 分配矩阵:Allocation[i,j]=k,进程Pi分配到k个Rj类资源 需求矩阵:Need[i,j]=k,进程Pi还需要k个Rj类资源 三个矩阵的关系: Need [i,j] = Max[i,j] – Allocation [i,j] 2、银行家算法 设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查: (1)如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。 (2)如果Requesti[j]≤Available[j],便转向步骤(3);否则, 表示尚无足够资源,Pi须等待。 (3)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值: Available[j]∶=Available[j]-Requesti[j]; Allocation[i,j]∶=Allocation[i,j]+Requesti[j]; Need[i,j]∶=Need[i,j]-Requesti[j]; (4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。 2、银行家算法 (1)设置两个向量: ① 工作向量Work: 它表示系统可提供给进程继续运行所需的各类资源数目, 它含有m个元素,在执行安全算法开始时,Work∶=Available; ② Finish: 它表示系统是否有足够的资源分配给进程,使之运行完成。开始时 先做Finish[i]∶=false; 当有足够资源分配给进程时, 再令Finish [i]:=true。 (2)从进程集合中找到一个能满足下述条件的进程: ① Finish[i]=false; ② Need[i,j]≤Work[j]; 若找到, 执行步骤(3), 否则,执行步骤(4)。 (3)当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源, 故应执行: Work[j]∶=Work[i]+Allocation[i,j]; Finish[i]∶=true; go to step 2; (4)如果所有进程的Finish[i]=true都满足, 则表示系统处于安全状态;否则,系统处于不安全状态。 银行家算法的例子 假定系统中有5个进程3类资源
您可能关注的文档
最近下载
- DMX512灯光调光控制程序.doc VIP
- 四种不同类型土壤保水剂保水性能的比较-生态学杂志.PDF VIP
- 2019年中央机关公开遴选和选调公务员笔试真题〔B卷完好版解析〕_党政公选考试公共科目题库_公共科目真题_模拟试题.docx VIP
- 北京市东城区汇文中学2023-2024学年七年级上学期月考数学试题(无答案).docx VIP
- 《有效复习》班队活动教案.doc VIP
- 四年级阅读理解专项训练可打印.docx VIP
- 法医考试题目及答案.doc VIP
- 《水泥胶砂保水率测定方法》GB_T 45002-2024.pdf
- USON介绍分析.ppt VIP
- 新学期小学英语开学第一课主题班会PPT课件.pptx VIP
原创力文档


文档评论(0)