




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
死锁的基本概念预防死锁避免死锁死锁的检测与解除3.7进程死锁3.7.1死锁的基本概念3.7进程死锁1.死锁的概念:例1:两辆车过单车道的僵局例2.
竞争外部设备。设系统中有打印机、扫描仪各一台,进程A、B的申请如下:扫描仪进程A进程B占用占用请求请求阻塞阻塞死锁打印机3.7.1死锁的基本概念3.7进程死锁1.死锁的概念:死锁的定义:一组进程中,每个进程都无限等待被该组进程中另一进程所占有的且永远无法释放的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。关于死锁的一些结论:
参与死锁的进程最少是两个参与死锁的进程至少有两个已经占有资源参与死锁的所有进程都在等待资源参与死锁的进程是当前系统中所有进程的子集注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。3.7.1死锁的基本概念3.7进程死锁1.死锁的概念:竞争资源:2.产生死锁的原因3.7.1死锁的基本概念3.7进程死锁系统资源可重用资源消耗性资源不可剥夺资源可剥夺资源处理器,主存等打印机,磁带机,队列,文件等中断,信号,消息等死锁扫描仪进程A进程B占用占用请求请求阻塞阻塞死锁打印机2.产生死锁的原因3.7.1死锁的基本概念3.7进程死锁竞争资源竞争不可剥夺资源产生死锁:执行顺序1:P1:…Release(S1);Request(S3);…P2:…Release(S2);Request(S1);…P3:…Release(S3);Request(S2);…执行顺序2:P1:…Request(S3);Release(S1);…P2:…Request(S1);Release(S2);…P3:…Request(S2);Release(S3);…进程P2进程P3进程P1临时性资源S3临时性资源S1临时性资源S2请求产生产生请求产生请求不会“死锁”“死锁”2.产生死锁的原因3.7.1死锁的基本概念竞争资源竞争消耗性资源产生死锁:合理的推进顺序:如按曲线①、②和③不会产生“死锁”进程推进顺序不当①③②DP2Req(S1)P2Req(S2)P1Req(S2)P1Req(S1)P1Rel(S2)P1Rel(S1)P2Rel(S2)P2Rel(S1)DP2P12.产生死锁的原因3.7.1死锁的基本概念①③②DP2Req(S1)P2Req(S2)P1Req(S2)P1Req(S1)P1Rel(S2)P1Rel(S1)P2Rel(S2)P2Rel(S1)D不合理的推进顺序:如曲线④,产生“死锁”。
④死锁点区域D称为“死锁区”P2P1进程推进顺序不当2.产生死锁的原因3.产生死锁的必要条件互斥条件:请求和保持条件:不剥夺条件:环路等待条件:资源分配图
这四个必要条件中只要有一个条件不满足,都不会形成“死锁”,又称为Coffman条件。P1P2R1R2资源请求边资源分配边3.7.1死锁的基本概念3.7进程死锁4.处理死锁的基本方法3.7.1死锁的基本概念3.7进程死锁
预防死锁
避免死锁
检测与解除死锁破坏产生死锁的4个必要条件之一避免系统进入不安全状态允许系统发生死锁破坏占有且等待条件静态分配资源:在作业调度时为选中的作业分配它所需要的所有资源,当资源一旦分配给该作业后,在其整个运行期间这些资源为它独占。
缺点:1)资源利用率低;
2)进程的运行可能被推迟,甚至产生“饥饿”现象;要求进程在没有资源时才可申请资源:
允许动态申请资源3.7.2预防死锁3.7进程死锁2.破坏不可剥夺条件进程申请资源r时,有则分配;若没有则需释放其所占有的全部资源后进入阻塞状态。进程申请资源r时,有则分配;若没有则进一步判断是否能从其他进程那里进行剥夺;若不能剥夺则进入阻塞状态。
3.7.2预防死锁3.7进程死锁3.破坏循环等待条件:
采用按序分配资源策略:例如:1磁带机,2扫描仪,3打印机,4绘图仪,…,P1:申请2申请4…P2:申请2申请4…P3……P10优点:较之前面两种方法提高了资源利用率和系统吞吐量。缺点:(1)降低了添加新设备的灵活性;
(2)作业使用资源的顺序与系统规定的申请顺序不同时,会降低资
源的利用率3.7.2预防死锁将所有的系统资源按类型进行线性排队,并赋予不同的序号;所有进程对资源的请求应严格按资源序号递增顺序提出。安全状态定义
设系统中有n个进程,若存在一个进程序列<P1,P2,…,Pn>。使得进程Pi(i=1,2,…,n)以后还需要的资源可以通过系统现有空闲资源加上所有Pj(j<i)已占有的资源来满足,则称此时系统处于安全状态,进程序列<P1,P2,…,Pn>称为安全序列,因为各进程至少可以按照安全序列中的顺序依次执行完成。
如果系统无法找到这样一个安全序列,则称系统处于不安全状态。
1.安全状态3.7.3避免死锁3.7进程死锁安全状态之例:
假设某系统共有15台磁带机和三个进程P0、P1、P2,各进程对磁带机的最大需求数量、T0时刻已经分配到的磁带机数量、还需要的磁带机数量以及系统剩余的可用磁带机数量如下表所示:P1P0P21.安全状态3.7.3避免死锁3.7进程死锁进程最大需求已分配数量还需要的数量剩余可用数量P012664P1523P21037
由安全状态向不安全状态的转换如果不按照安全顺序分配资源,则系统可能由安全状态进入不安全状态。进程最大需求量已分配可用
P01264
P152
P2103
已分配还需要可用
66323
46
1.安全状态3.7.3避免死锁3.7进程死锁在T0时刻P2又申请了一台磁带机,若将剩余4台中的一台分配给P2
则系统会进入不安全状态。为什么?2.银行家算法基本思想:
DijkstraE.W于1968年提出银行家算法:
它的模型基于一个小城镇的银行家,该算法可描述如下:假定一个银行家拥有资金,数量为∑,被N个客户共享。银行家对客户提出下列约束条件:每个客户必须预先说明自己所要求的最大资金量;每个客户每次提出部分资金量申请;如果银行满足了某客户对资金的最大需求量,那么,客户在资金运作后,应在有限时间内全部归还银行。3.7.3避免死锁3.7进程死锁银行家算法中的数据结构①可利用资源向量Available[m]。其中的每一个元素代表一类可利用的资源数目Available[j]=K,则表示系统中现有Rj类资源K个。②最大需求矩阵Max[1..n,1..m]
该矩阵定义了系统中n个进程对m类资源的最大需求。Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。2.银行家算法3.7.3避免死锁3.7进程死锁③分配矩阵Allocation[1..n,1..m]
该矩阵表示系统中每个进程当前已分配到的每类资源数量。
Allocation[i,j]=K,表示进程i当前已分得Rj类资源的数目为K。④需求矩阵Need[1..n,1..m]
该矩阵表示每个进程尚需的各类资源数。Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。Need[i,j]=Max[i,j]-Allocation[i,j]⑤请求向量Requesti[m];
某进程提出的资源请求向量。
银行家算法中的数据结构2、银行家算法3.7.3避免死锁当进程Pi提出资源申请Requesti[m]时,系统执行下列步骤:⑴若Request[i]≤Need[i],转⑵;否则错误返回;⑵若Request[i]≤Available,转⑶;否则,表示尚无足够资源,Pi须等待;⑶系统尝试把资源分配给进程Pi,并修改以下数据结构:
Available:=Allocation[i]:=Need[i]:=⑷执行安全性算法:检查此次资源分配后,系统是否处于安全状态。若安全,则将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。Available-Request[i];Allocation[i]+Request[i];Need[i]-Request[i];
银行家算法描述2、银行家算法3.7.3避免死锁①设置两个临时向量:工作向量Work:
表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work=Available;
Finish[n]:
它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]=false;当有足够资源分配给进程时,再令Finish[i]=true。安全性算法描述2、银行家算法3.7.3避免死锁②从进程集合中找到一个能满足下述条件的进程:
1)Finish[i]=false;2)Need[i,j]≤Work[j];
若找到,执行步骤③,否则,执行步骤④;③当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Work[j]=
Finish[i]=
gotostep②;④如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态Work[j]+Allocation[i,j];true;安全性算法描述2、银行家算法3.7.3避免死锁例1:假定系统中有4个进程P0、P1、P2、P3,3类资源R1、R2、R3,数量分别为9、3、6,在T0时刻的资源分配情况如图所示。
银行家算法举例2、银行家算法3.7.3避免死锁R1R2R3AvailableNeedAllocationMax
进程资源1001121100232261331442222202103420
112P0P1P2P3R1R2R3R1R2R3R1R2R3
WorkNeedAllocationWork+Allocation进程资源102222103420112623723934511100211002
623723934936P1P0P2P3truetruetruetrueFinish由于T0时刻存在安全序列{P1,P0,P2,P3},故此时系统是安全的。(1)判断T0时刻的安全性R1R2R3R1R2R3R1R2R3R1R2R3(2)P1请求资源:Request1(1,0,1)时:①Request1(1,0,1)≦Need1(1,0,2)②Request1(1,0,1)≦Available(1,1,2)③试分配资源后,修改数据结构。④对试分配后状态进行安全性检查:银行家算法举例R1R2R3AvailableNeedAllocationMax
进程资源1001121100232261331442222202103420
112P0P1P2P3R1R2R3R1R2R3R1R2R3612001011
WorkNeedAllocationWork+Allocation进程资源001222103420011623723934612100211002
623723934936P1P0P2P3truetruetruetrueFinish由于此时存在安全序列{P1,P0,P2,P3},故系统是安全的,可为P1分配上述资源。R1R2R3AvailableNeedAllocationMax
进程资源00612211002322613314422222001103420
011P0P1P2P3R1R2R3R1R2R3R1R2R3R1R2R3R1R2R3R1R2R3R1R2R3(3)P0请求资源:Request0(1,0,1):①Request0(1,0,1)≦Need0(2,2,2)成立;②Request0(1,0,1)≦Available(0,1,1)不成立,故让P0等待。
银行家算法举例R1R2R3AvailableNeedAllocationMax
进程资源00612211002322613314422222001103420
011P0P1P2P3R1R2R3R1R2R3R1R2R3(4)P2请求资源:Request2(0,0,1)时:①Request2(0,0,1)≦Need2(1,0,3)成立;②Request2(0,0,1)≦Available(0,1,1)成立;③试分配资源后,修改数据结构。④对试分配后的状态进行安全性检查:由于Available(2,1,0)已不能满足任何进程的需要,故系统进入不安全状态,所以不能为P0分配资源,而应恢复原来的状态,让P0等待。
R1R2R3AvailableNeedAllocationMax
进程资源00612211002322613314422222001103420
011P0P1P2P3R1R2R3R1R2R3R1R2R32,1,21,0,20,1,0教材P153:第33题
课堂小组讨论:解答:(1)系统安全,因为存在安全序列(P1,P3,P0,P2,P4),判断过程略。
(2)系统要想避免死锁,就必须保证每次分配后都能得到安全序列,否则就拒绝分配。根据这一原则,对于进程的请求应考虑分配以后是否安全,若不安全,则不能进行此次分配。题目中有3个请求,按照顺序依次考虑,先考虑能否满足P1,分配后系统仍处于安全状态,因此存在安全序列(P1,P3,P2,P0,P4)。满足P1的请求之后,剩余资源为(2,2,0),对于P4的请求,由于系统没有那么多剩余资源,因此无法满足,系统拒绝P4的请求。最后考虑P0的请求,如果满足P0,分配后剩余资源为(2,1,0),可以找到安全序列(P1,P3,P0,P2,P4),因此可以满足P0的请求。(1)T0时刻系统资源分配情况如下表所示:
课堂小组讨论:(3)银行家算法的局限性:1)系统中进程数量及资源数量众多,而且每当进程申请资源时都要运行该算法,因此算法本身的运行开销大;2)银行家算法是按照最严苛的条件判断安全性的,过于保守,会降低资源利用率及延迟进程推进速度;3)银行家算法在寻找安全序列时完全没有考虑进程之间的同步关系:相互协作进程间的前驱后继关系,这在实际系统中是很不现实的。(1)T0时刻系统资源分配情况如下表所示:1.资源分配图(ResourceAllocationGraph)
每类资源有多个时的情况3.7进程死锁3.7.4死锁的检测与解除P1P3P2●●R1●●R2●●●R3简化资源分配图:
如果资源分配图能完全简化,则系统中没有死锁;否则系统存在死锁。2.死锁定理
(1)在资源分配图中,找出一个既非独立又不阻塞的进程节点Pi,如果找到转(2);否则转(3);(2)去掉Pi的所有边,使其成为一个独立节点,并转(1);(3)判断是否所有节点都成为独立节点?如果是,称为资源分配图能完全简化,系统无死锁;否则系统存在死锁。3.7.4死锁的检测与解除P1P3P2●●R1●●R2●●●R3P4有死锁无死锁例:2.死锁定理
有死锁无死锁例:2.死锁定理
数据结构:可利用资源向量Available[m];
资源分配矩阵Allocation[n,m];
资源请求矩阵Request[n,m];工作向量Work=Available
finish[n]向量:
若Allocation[i]=0,则finish[i]=True;
否则finish[i]=False
3.死锁检测算法:Coffman算法3.7进程死锁3.7.4死锁的检测与解除算法描述:work=available;Finish[i]=False或True;(i=0,1,2,…n-1)①寻找同时满足下述条件的进程:
Finish[i]=False;Requesti≤Work
若找到,则转②;否则转③;②执行:Work=Work+Allocationi,Finish[i]=True;
再转回第①步③判断:若对所有i=(0,1,2,…n-1),Finish[i]=True,则无死锁;否则,若Finish[i]=False,则进程Pi死锁
3.死锁检测算法:Coffman算法3.7进程死锁3.7.4死锁的检测与解除综合考虑几个因素:4.死锁检测时机
3.7进程死锁3.7.4死锁的检测与解除
死锁出现的频繁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全日培训文件课件
- 瓯海区安全生产培训课件
- 安全方面的培训内容课件
- 广西荣登堡木业有限公司年产8万立方米生态板和50万张PET贴面板建设项目环评报告
- 北海港铁山港西港区北暮作业区5万吨级航道工程环境影响报告书
- 广西晟宇通新型建材有限公司年产30万立方米蒸压加气混凝土砌块生产线项目新增生物质锅炉环境影响报告表
- 猫咪的科学课件
- 农业无人机租赁服务产业链上下游企业合作模式研究
- 农业无人机租赁平台运营效率优化与市场盈利能力分析报告
- 犬感染性疾病课件
- 前列腺增生科普知识
- 5G-Advanced通感融合网络架构研究报告(第二版)
- 五倍子提取物对临床分离鸡源大肠杆菌的抑制作用研究
- 2025年反洗钱知识竞赛多选题库及答案(共70题)
- 2025时事政治考试题库及参考答案(公职考试)
- 2025年秋苏教版小学科学四年级上册教学计划
- DB32 T538-2002 江苏省住宅物业管理服务标准
- 农业可持续发展指标体系
- 2024年危险化学品经营单位主要负责人试题题库
- 2024届贵州省贵阳市高三下学期适应性考试(二)物理试题
- 癌因性疲乏治疗指南
评论
0/150
提交评论