版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1安全状态的例子例:假定系统有三个进程P1、P2、P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和九台。设在T0时刻,进程P1、P2和P3已经获得5台、2台和2台,还有3台空闲没有分配。进程最大需求已分配可用P11053P2P34229T0时刻系统时安全的。这时存在一个安全序列<P2,P1,P3>2虽然并非所有不安全状态都是死锁状态,但当系统进入不安全状态后,便有可能进入死锁状态;反之只要系统处于安全状态,系统便可避免进入死锁状态。因此,避免死锁的实质是如何使系统不进入不安全状态。系统的状态可能通过下述来描述:进程剩余申请数=最大申请数-占有数。可分配资源数=总数-占有数之和。
3银行家算法银行家算法是最有代表性的避免死锁算法,是Dijkstra提出的银行家算法。这是由于该算法能用于银行系统现金贷款的发放而得名。为实现银行家算法,系统中必须设置若干数据结构。4一、银行家算法中的数据结构1可利用资源向量Available
是一个含有m个元素,其中的每一个元素代表一类可利用的资源数目,其初值是系统中所配置的该类全部可用资源数目。如果Available[j]=k,
表示系统中现有Rj类资源k个。2最大需求矩阵Max是一个含有n
m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max(i,j)=k,
表示进程i需要Rj类资源的最大数目为k。Available=35428386153分配矩阵Allocation
是一个含有n
m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation(i,j)=k,
表示进程i当前已分得Rj类资源k个。4需求矩阵Need
是一个含有n
m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need(i,j)=k,
表示进程i还需要Rj类资源k个,方能完成其任务。
Need(i,j)=Max(i,j)-Allocation(i,j)
6二、银行家算法设Requesti是进程Pi的请求向量,如果进程Pi需要K个Rj类资源,当Pi发出资源请求后,系统按下述步骤进行检查:1
如果Requesti≤Needi,则转向步骤2;否则认为出错。(因为它所需要的资源数已超过它所宣布的最大值。2如果Requesti≤Available,则转向步骤3;否则,表示系统中尚无足够的资源,Pi必须等待3
系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:Available:=Available-Requesti;Allocation:=Allocation+Requesti;Needi:=Needi-Requesti;4系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,正式将资源分配给进程Pi,以完成本次分配;否则,将试探分配作废,恢复原来的资源分配状态,让进程Pi等待。
7三、安全性算法系统所执行的安全性算法可描述如下:1设置两个向量①工作向量Work.它表示系统可提供给进程继续运行所需要的各类资源的数目,它含有m个元素,执行安全算法开始时,Work:=Available。②Finish.它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]:=false;当有足够的资源分配给进程时,令Finish[i]:=true.2从进程集合中找到一个能满足下述条件的进程:①Finish[i]=false;②Needi≤Work.如找到,执行步骤3;否则执行步骤4。3当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故执行:Work:=Work+Allocation;Finish[i]:=true;Gotostep2;4如果所有进程的Finish[i]=true,则表示系统处于安全状态;否则,系统处于不安全状态。
要记住的一些变量的名称1Available(可利用资源向量)某类可利用的资源数目,其初值是系统中所配置的该类全部可用资源数目。
2
Max最大需求矩阵某个进程对某类资源的最大需求数
3
Allocation分配矩阵某类资源当前非配给某进程的资源数。4
Need需求矩阵某个进程还需要的各类资源数。
Need=Max-Allocation系统把进程请求的资源分配给它以后要修改的变量Available:=Available-Request;Allocation:=Allocation+Request;Need:=Need-Request;9银行家算法之例假定系统中有五个进程{P0、P1、P2、P3、P4}和三种类型的资源{A,B,C},每一种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图资源情况进程AllocationABCMaxABCNeedABCAvailableABCP0P1P2P3P4010322902222433200(302)302211002743122(020)00011431332(230)332122200资源情况进程AllocationABCMaxABCNeedABCAvailableABCP0P1P2P3P4010322902222433200(302)302211002743122(020)600011431332(230)753资源情况进程NeedABCworkABCWork+AllocationABCAllocationABCP1P3P4P2P0finish532truetruetruetruetrue011211532743743431002745745600302104710477430101057最大值已分配还需要可用若P1发出请求向量Request(1,0,2)工作向量Work.它表示系统可提供给进程继续运行所需要的各类资源的数目10,5711思考和练习假定系统中有五个进程{P0、P1、P2、P3、P4}和三种类型的资源{A,B,C},每一种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图请找出该表中T0时刻以后存在的安全序列(至少2种)资源情况进程AllocationABCMaxABCNeedABCAvailableABCP0P1P2P3P4010322902222433200302211002743122600011431332753123死锁的检测和恢复死锁的检测和恢复技术是指定期启动一个软件检测系统的状态,若发现有死锁存在,则采取措施恢复之。
(1)死锁的检测检查死锁的办法就是由软件检查系统中由进程和资源构成的有向图是否构成一个或多个环路,若是,则存在死锁,否则不存在。13死锁的检测:实质是确定是否存在环路等待现象,一旦发现这种环路便认定死锁存在,并识别出该环路所涉及的有关进程,以供系统采取适当的措施来解除死锁。最常用的是一种基于资源分配图RAG和死锁定理的检测死锁算法。14资源分配图(RAG)系统死锁可用资源分配图来描述,该图是由一组结点N和一组边E所组成的一对偶G=(N,E)。(用圆圈代表一个进程,用方框代表一类资源,由于一种类型的资源可能有多个,可用方框中的一个点代表一类资源中的一个资源)几个概念:请求边,分配边
P1P2r1r2请求r2资源分配图15封锁进程:是指某个进程由于请求了超过了系统中现有的未分配资源数目的资源,而被系统封锁的进程。非封锁进程:即没有被系统封锁的进程资源分配图的化简方法:假设某个RAG中存在一个进程Pi,此刻Pi是非封锁进程,那么可以进行如下化简:当Pi有请求边时,首先将其请求边变成分配边(即满足Pi的资源请求),而一旦Pi的所有资源请求都得到满足,Pi就能在有限的时间内运行结束,并释放其所占用的全部资源,此时Pi只有分配边,删去这些分配边(实际上相当于消去了Pi的所有请求边和分配边),使Pi成为孤立结点。(反复进行)
。16死锁定理:系统中某个时刻S为死锁状态的充要条件是S时刻系统的资源分配图是不可完全简化的。在经过一系列的简化后,若能消去图中的所有边,使所有的进程都成为孤立结点,则称该图是可完全简化的;反之的是不可完全简化的。P1P2r1r2P1P2r1r2P1P2r1r217死锁的恢复。是与检测死锁相配套的一种措施,用于将进程从死锁状态下解脱出来。常用的方法有:1撤消进程;最简单撤消进程的方法是使全部死锁的进程夭折掉;另一方法是按照某种顺序逐个地撤消进程,直至有足够的资源可用,死锁状态消除为止2挂起进程(剥夺资源)。使用挂起/激活机构挂起一些进程,剥夺它们的资源以解除死锁,待条件满足时,再激活进程。目前挂起法比较受到重视。181.(北大95)一个OS有20个进程,竞争使用65个同类资源,申请方式是逐个进行的,一旦某个进程获得它所需要的全部资源,则立即归还所有资源。每个进程最多使用三个资源。若仅考虑这类资源,该系统有无可能产生死锁,为什么?2.死锁和饥饿的主要差别是什么?例题191答:不可能。因为死锁产生的原因有两点:系统资源不足或推进顺序不当,在本题中,进程所需的最大资源数为60,而系统共有该类资源65个,其资源数已足够系统内各进程使用。2答:简言之,死锁是某进程等待一个不会发生的事件的一种现象;而饥饿现象是某进程正等待这样一个事件,它发生了但总是受到其它进程的影响,以至轮不到(或很难轮到)该进程。
201.在某系统中,三个进程共享四台同类型的设备资源,这些资源一次只能一台地为进程服务和释放,每个进程最多需要二台设备资源,试问在系统中是否会产生死锁?2.某系统中有n个进程和m台打印机,系统约定:打印机只能一台一台地申请、一台一台地释放,每个进程需要同时使用的打印机台数不超过m。如果n个进程同时使用打印机的总数小于m+n,试讨论,该系统可能发生死锁吗?并简述理由。3.仅涉及一个进程的死锁有可能存在吗?为什么?作业2122
小结进程的并发执行,使得它们之间存在着两种制约关系:由共享资源引起的间接制约关系称为互斥;由于协作完成同一任务而引起的直接制约关系称为同步。为了正确地解决进程之间的同步和互斥,系统设置同步机构:锁和信号量机构。这种同步机构称为低级通信。进程之间的高级通信机构有消息缓冲、信箱、管道、共享内存和共享文件等机构,其最大特点是通信双方可交换大量的数据。23
系统中并发运行进程由于共享资源或相互通信,如果调度不当,可能导致系统死锁。解决死锁的方法有三种:(1)预防死锁,它是通过破坏死锁的四个必要条件实现的。
(2)避免死锁,它是在进程请求分配资源时,采用银行家算法等防止系统进入不安全状态。
(3)检测和恢复死锁,它是通过设置一个死锁检测机构进行死锁检测,一旦检测出来,通过逐一撤消进程使系统恢复。243.9线程(Thread)3.9.1线程的概念引入的线程目的:提高系统的执行效率,减少处理机的空转时间和调度切换(保护现场信息)的时间,便于系统管理。(减少程序并发执行时所付出的时空开销,使OS具有更好的并发性。)
25分析说明:进程的两个基本属性:1进程是一个可拥有资源的独立单位;2进程又是一个可独立调度和分配的基本单位。合起来,进程便成为一个能独立运行的基本单位,从而构成了程序并发执行的基础。简言之,由于进程是一个资源的拥有者
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年长江工程职业技术学院单招综合素质考试参考题库附答案详解
- 2026年株洲师范高等专科学校单招综合素质笔试模拟试题附答案详解
- 如何签订国际合同协议
- 怎样去谈合同增加协议
- 市场管理承包协议合同
- 应付票据担保合同范本
- 怎样写好技术合同范本
- 小学午餐配送合同范本
- 工地土方清理合同范本
- 委托货物承运合同范本
- 吟诵古诗课程设计
- (正式版)QC∕T 625-2024 汽车用涂镀层和化学处理层
- 中国慢性冠脉综合征患者诊断及管理指南2024版解读
- 第30讲 ZD6转辙机课件讲解
- (正式版)SHT 3551-2024 石油化工仪表工程施工及验收规范
- Unit7CareersLesson1EQIQ课文长难句分析课件-高中英语北师大版2019选择性
- 城镇道路工程施工与质量验收规范cjj
- YY0778-2018《射频消融导管》标准变化解读
- 船舶货运保险理赔答疑手册
- YS/T 248.1-2007粗铅化学分析方法 铅量的测定 Na2 EDTA滴定法
- GB/T 18318.1-2009纺织品弯曲性能的测定第1部分:斜面法
评论
0/150
提交评论