20180108操作系统笔记--死锁的产生及解决方法

20180108操作系统笔记--死锁的产生及解决方法

ID:41883481

大小:168.21 KB

页数:5页

时间:2019-09-04

20180108操作系统笔记--死锁的产生及解决方法_第1页
20180108操作系统笔记--死锁的产生及解决方法_第2页
20180108操作系统笔记--死锁的产生及解决方法_第3页
20180108操作系统笔记--死锁的产生及解决方法_第4页
20180108操作系统笔记--死锁的产生及解决方法_第5页
资源描述:

《20180108操作系统笔记--死锁的产生及解决方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、死锁的产生及解决方法死锁含义:多个进程在运行过程中因竞争资源而造成的一种僵局。各并发进程彼此等待对方拥有的资源,且得到对方资源前不释放白己拥有的资源。导致死锁的原因:(1)竞争资源资源(打卬机,公共队列)数目不能满足进程的需要。(2)进程间的推进顺序不当进程在运行过程中,请求和释放资源的顺序不当,也会导致进程死锁。竞争资源引起死锁(1)可剥夺(CPU、主存)和非剥夺性资源(磁带机、打印机)(2)竞争非剥夺性资源非剥夺性资源的数量不能满足进程运行的需要,可能使进程在运行过程中产生死锁。(3)进程临时性资源由一个进程产生由另一个进程使用短暂时间后

2、便无用的资源。产生死锁的必要条件(1)互斥条件(2)请求和保持条件(3)不剥夺条件(4)环路等待条件互斥条件:进程对所分配到的资源进行排他性使用。请求和保持条件:进程已经保持至少一个资源,但又提出新的资源请求,而该资源又被其他进程占有,此吋请求进程阻塞,但又对自己获得的其他资源保持不放。不剥夺条件:进程己获得的资源,在未使用完Z前,不能被剥夺,只能在使用完时自己释放。环路等待条件:发生死锁时,必然存在一个进程•资源的环行链。处理死锁的基本方法(1)预防死锁(2)避免死锁(3)检测死锁(4)解除死锁(1)、(2)死锁发生前的办法,(3)、(4)

3、死锁发生后的办法预防死锁:设置某些限制条件,破坏四个必要条件屮的一个或多个条件。简单、好实现避免死锁:在资源的动态分配过程中,用某种方法去预防系统进入不安全状态。可获得较高的资源利用率及系统吞吐量。实现上有一定难度检测死锁:允许系统在发生死锁,通过系统设置的检测机构,及时检测出死锁的发生,并精确的确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。解除死锁:当检测到系统己发牛死锁时,撤销或挂起一些进程。预防死锁:互斥条件(不可以打破)请求和保持条件(可以)不剥夺条件(可以)环路等待条件(可以)破坏“请求和保持”条件:规

4、定所有进程在开始运行之前,都必须一次性的申请其在整个运行过程所需要的全部资源。优点:简单,安全缺点:资源严重浪费,恶化了系统的利用率;破坏“不剥夺”条件进程逐个的提出资源请求,当一个已经保持了某些资源的进程,再提出新的资源请求而不能立即得到满足时,必须释放它已经保持了的所有资源,待以后需要时再重新申请。缺点:实现复杂,代价大因为反复地申请和释放资源,而使进程的执行无限的推迟、延长了进程的周转时间增加系统开销、降低系统吞吐量。破坏“环路等待”条件将所有的资源按类型进行线性排队,并赋予不同的序号。所有进程请求资源必须按照资源递增的次序提出,防止出

5、现环路。缺点:(1)序号必须相对稳定,限制了新设备类型的增加(2)作业(进程)使用资源顺序和系统规定的顺序不同而造成资源的浪费(3)限制了用户编程避免死锁系统安全状态:指系统能按照某种顺序如(Pl.P2、…、Pn),来为每一个进程分配其所需资源,直至最大需求,使每个进程都可顺序完成。若系统不存在这样一个安全序列,则称系统处于不安全状态。系统进入不安全状态可能产生死锁。避免死锁的实质:如何使系统不进入不安全状态。银行家算法避免死锁:(1)银行家算法中的数据结构(2)银行家算法(3)安全性算法(4)银行家算法之例银行家算法的数据结构:可利用的资源

6、向量Available:含有m个元素;每个元素代表一类可用的资源数目;初值是该类全部可用资源的数乐数值随该类资源的分配和回收动态地改变;Available[j]=K^示第j类资源的个数为K最大需求矩阵Max:N*m的矩阵;定义了n个进程中每一个进程对m类资源的最大需求。如Max[l,j]=K,表示进程i需要Rj类资源的最大数值为Ko分配矩阵Allocation:N*m的矩阵;定义系统中每一类资源当前已分配给每个进程的资源数。Allocation^]比表示进程i当前以分得Rj类资源的数目为K;需求矩阵Need的矩阵;表示一个进程尚需的各类资源数

7、。Need[IJ]=K,表示进程i当前还需要Rj类资源的数目为K。银行家算法设Request!是进程Pi的请求向量。如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。Pi发出资源请求后。按下述步骤检查:(1)Requesti[j]小于等于Need[l,j],则转向步骤2;否则,认为出错;(2)Requesti[j]小于等TAvailable[j]则转向步骤3;否则,进程Pi等待(3)系统试探着把资源分配给进程Pi:Available[j]=Available[j]-Requesti[j],Allocation[l,j]=Al

8、location[IJ]+Requesti[j];Need[l,j]=Need[l,j]-Requesti[j];(4)系统执行安全性算法,检查此次资源分配后,系统

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

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

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