死锁的预防避免和检测

死锁的预防避免和检测

ID:39508783

大小:303.50 KB

页数:47页

时间:2019-07-04

死锁的预防避免和检测_第1页
死锁的预防避免和检测_第2页
死锁的预防避免和检测_第3页
死锁的预防避免和检测_第4页
死锁的预防避免和检测_第5页
资源描述:

《死锁的预防避免和检测》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、死锁问题•系统中有进程处于相互的无限等待状态(被阻塞)•资源死锁和通信死锁•等待图:将系统中进程对资源的占用与需求共享情况用有向图表示–进程集合{P0,P1,……,Pn}为节点集,当且仅当进程Pi等待一个被进程Pj占用的资源时,边(Pi,Pj)存在于图中。资源(resources)分类根据资源性质:可剥夺资源(抢占)和不可剥夺资源可抢占资源:指资源占有进程虽然需要使用该资源,但另一个进程却强行把资源从占有者进程处抢来。不可抢占资源:指只有占用者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有者

2、进程使用资源过程中强行抢占。可抢占资源如:CPU、主存、硬盘,该类资源可为多个进程共享(可抢占)不可抢占资源如:打印机、读卡机,磁带驱动器,该类资源可为某个进程独享(不可抢占)资源分类根据使用方式:共享资源和独享资源根据使用期限:永久资源和临时性资源永久资源是可顺序重复使用的资源临时性资源是由一个进程产生,被另外一个进程使用短暂时间之后便无用的资源。产生死锁的原因竞争资源。当系统中供多个进程所共享的资源,不足以同时满足它们的需要时,引起它们对资源的竞争而产生死锁。进程推进的顺序不当。进程在运行过程中,请

3、求和释放资源的顺序不当,导致进程的死锁。竞争资源竞争非剥夺性资源竞争临时性资源打印机R1磁带机R2P1P2S1,S2,S3是临时资源P1:Release(S1);Request(S3)P2:Release(S2);Request(S1)P3:Release(S3);Request(S2)不可能发生死锁P1:Request(S3);Release(S1)P2:Request(S1);Release(S2)P3:Request(S2);Release(S3)可能发生死锁死锁问题一实例:哲学家问题哲学家筷子盘

4、子哲学家1号哲学家5号哲学家4号哲学家2号哲学家3号15324未就餐时示意图哲学家1号哲学家4号哲学家2号哲学家3号15324哲学家5号先拿左,拿到后再拿右,成功后进餐.吃完后先放左再放右.虽可保证不会有相邻的同时进餐,但可能死锁,如动画所示.此时没有一个哲学家可以完成进餐.哲学家1号哲学家4号哲学家2号哲学家3号15324哲学家5号此时5号哲学家被禁止拿筷子.1号哲学家拿起他右边即5号哲学家左边的筷子.解决方法一:至多只允许四位哲学家同时去拿左边的筷子1号哲学家开始进餐,完成后放下筷子,其它哲学家开始

5、进餐哲学家1号哲学家4号哲学家2号哲学家3号哲学家5号解决方法二:仅当哲学家左右两边筷子都能用才允许拿筷子设1号进餐,则3,4两位哲学家可以拿筷子1号进餐完毕,放下筷子,先左后右.1号放下左边筷子的同时,3号可拿起右边筷子3号开始进餐,同时1号放下右边的筷子此时4号条件不再满足,放下筷子.此时5号条件满足,可在下一时钟周期拿左筷子哲学家4号哲学家1号哲学家2号哲学家3号1524哲学家5号解决方法三:奇数先拿左边,偶数先拿右边这种方法将出现1,2号哲学家单键1号筷子,3,4号哲学家竞争3号筷子的情况.而5

6、号没有人与他竞争,得到左边的筷子若4号在与3号的竞争中得到筷子,则与5号竞争4号筷子.无论4号5号谁得到4号筷子,都有一个可以进餐若4号在与3号的竞争中没有得到筷子,则5号得到4号筷子,进餐死锁问题一条件•死锁发生的充要条件–互斥:一个资源在同一时刻不能被共享;–占有并等待:必然有一个进程占用了至少一个资源,同时在等待获得被其它进程占用的资源;–不可剥夺:已占用的资源不能被剥夺–循环等待:等待图中有一个回路•死锁的形式–AND条件:当进程获得所有所需的资源后才能继续执行–OR条件:当进程至少获得一个所需

7、的资源后才能继续执行–P-out-of-Q:进程同时请求Q个资源但至少获得P个之后才能继续执行处理死锁的策略—死锁的避免动态检查资源的分配情况,只有在结果状态是安全的情况下,才将资源分配给进程;在分布式系统中实现的开销较大银行家算法:至少总可以满足一个客户的要求银行共有资金800万:A的余额是600万,B的余额是400万,C的余额是500万;A要求一次提走300万,B要求一次提走200万,C要求一次提走100万,假设客户在存款后会立即重新全额存入。当以上提款要求被满足后,银行当前存款余额还剩200万。这

8、时,A、B和C均要求提取剩余款,则服务次序B→C→A是安全的,其他的服务顺序或上述条件的违反都可能导致不安全的结果状态。死锁避免的方法死锁避免,即动态检查资源状态,以保证没有循环等待发生。在集中式系统中,银行家算法是死锁避免的一个经典算法。基于Petri网的死锁避免方法适合应用在分布式系统中。基于Petri网的死锁避免方法步骤1)给出描述特定系统的模型2)得到相应的Petri网的可达树3)由可达树确定死锁状态4)根据死锁状态,找到所有的临界

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。