计算机操作系统第5章死锁.ppt
《计算机操作系统第5章死锁.ppt》由会员分享,可在线阅读,更多相关《计算机操作系统第5章死锁.ppt(34页珍藏版)》请在三一办公上搜索。
1、计算机操作系统,第5章 死 锁,从进程同步的概念可以知道,当并发进程需要竞争使用资源或需要相互协作向前推进时,如果不采取同步措施,或同步措施不恰当,则很容易导致并发进程不能向前推进而陷入僵局,即死锁现象。死锁是发生在一组相互竞争或协作的进程与线程之间的一个非正常现象。死锁是所有操作系统都面临着的潜在问题,操作系统除了需要预防死锁、避免死锁外,还需要能够检测死锁,并从死锁中进行恢复。,本章的主要内容如下:死锁的产生;死锁的预防;死锁的避免;死锁的检测和解除;线程死锁。,5.1 死锁的产生,5.1.1 死锁产生的原因竞争资源引起死锁 在多道程序系统,多个进程共享系统的资源。系统资源分为二类,一类是
2、不可抢占的资源,如打印机、磁带机等。当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自动释放。另一类是可抢占的资源,如CPU、内存等。由于系统拥有的不可抢占的资源有限,多个进程共享竞争不可抢占的资源就可能引起死锁。进程推进顺序不当引起死锁 在多道程序系统中,并发执行的进程推进序列不可予测,有些推进顺序,进程可以顺利完成,这些推进顺序是合法的;而有的推进顺序会引起进程无限期地等待永远不会发生的条件而不能向前推进,造成了死锁。,5.1.1 死锁产生的原因(续),进程推进顺序不当引起死锁例:进程P和Q并发执行,进程P和Q程序如下:Process P Process Q.Get A G
3、et B.Get B Get A.Release A Release B.Release B Release A.,5.1.1 死锁产生的原因(续),当P、Q按如下次序执行时:P:GET A Q:GET BP:GET BQ:GET A,哲学家吃面的问题,A:P(S1)P(S3)EatingV(S3)V(S1),B:P(S2)P(S1)EatingV(S1)V(S2),C:P(S3)P(S2)EatingV(S2)V(S3),A:P(S1),B:P(S2),C:P(S3)A:P(S3):阻塞B:P(S1):阻塞C:P(S2):阻塞,A,S1,C,S3,S2,B,5.1.2 死锁产生的条件,1.产
4、生死锁的必要条件(Conditions for Deadlock)互斥(Mutual exclusion)条件:一个资源一次只能被一个进程所使用,即是排它性使用。不可抢占(No preemption)条件:一个资源仅能被占有它的进程所释放,而不能被别的进程强占。请求和保持(Hold-and-wait)条件:进程已经保持了至少一个资源,但又提出了新的资源要求,而该资源又已被其它进程占有,此时请求进程阻塞,但又对已经获得的其它资源保持不放。环路等待(Circular wait)条件:当每类资源只有一个时,在发生死锁时,必然存在一个进程-资源的环形链。如一系统状态的资源分配图所示,P1正在等待一个P
5、2 占用的资源R2,P2正在等待一个P1占用的资源R1。,5.1.2 死锁产生的条件(续),2.资源分配图由结点和边组成。结点有二类,一类是进程结点,用园圈表示;另一类是资源结点,用小方框表示一类资源,用方框中的小圈表示资源数。边也有二类,一类是分配边,它由资源结点指向进程结点,另一类是申请边,它由进程结点指向资源结点。返回,5.1.2 死锁产生的条件(续),3.处理死锁的基本方法a.死锁的预防 静态方法:在进程执行前采取的措施,通过设置某些限制条件,去破坏产生死锁的四个必要条件之一,防止发生死锁。B.死锁的避免 动态的方法:在进程执行过程中采取的措施,不需事先采取限制措施破坏产生死锁的必要条
6、件,而是在进程申请资源时用某种方法去防止系统进入不安全状态,从而避免发生死锁。C.死锁的检测和解除 这种方法预先并不采用任何限制措施,允许系统在运行过程中发生死锁,但可通过系统设置的检测机构及时检测死锁的发生,如检测到死锁,则采用撤消进程等死锁解除方法使系统正常工作。,5.2 死 锁 预 防(Deadlock Prevention),预防死锁的方法是破坏四个产生死锁的必要条件之一。1。破坏互斥条件 互斥使用是资源本身特征所决定的。使用硬软件结合可改变资源本身特性,例如采用SPOOLing技术可将“独享”打印机改变为“共享”的打印机。2。破坏不可抢占条件 抢占式调度法主要用于处理机和存贮器资源调
7、度,它们的状态容易保存和恢复。但此法对外部设备和私存数据不宜使用。,5.2 死 锁 预 防(Deadlock Prevention)-1,3。破坏请求和保持条件 系统可采用资源静态予分配方式来破坏请求保持条件。系统要求所有进程一次性地申请在整个运行过程中全部资源,若系统有足够资源满足给进程,则在运行前,一次性将其所需要的所有资源分配给该进程。这样该进程在整个运行期间,便不再提出资源要求,从而摒弃了请求条件。这种预防死锁的方法,优点是简单、易予实现且很安全,但其资源利用率很低,进程也延迟运行。4。破坏循环等待条件 有序资源使用法 该方法将所有的资源按类型进行线性排队,并赋予不同的序号。例如令输入
8、机的序号为1,打印机序号为2,磁盘机序号为3等。,5.2 死 锁 预 防(Deadlock Prevention)-2,所有进程对资源的请求必须严格按资源序号递增的次序提出。这样在所形成的资源分配图中不可能再出现环路,因而摒弃了“环路等待”条件,在采用这种策略时总有一个进程占据了较高序号的资源,它继续请求的资源必然是空闲的,因而进程可以一直向前推进。这种预防死锁的策略可以提高资源利用率,但在进程使用各类资源的顺序与系统规定的顺序不同时会造成资源浪费的情况。资源按级分配法 该方法是把资源递增排序成若干等级(如L1、L2.Lm),其中每级可包含几类资源,要求每个进程在获得了Lj级中资源之后,它才能
9、申请更高级的LK(LKLj)级中的资源;如果它还需申请比LK级低的LI级(LILK)资源,则必须先释放所有大于LI级的资源。该方法是Haveder 1968年在设计IBM360 OS时提出的,资源共分三级,第一级数据集或文件,第二级主存,第三级I/O设备。,5.3 死 锁 避 免(Deadlock Avoidance),该方法允许进程动态地申请资源,系统在进行资源分配之前,先计算资源分配的安全性。若此次分配不会导致系统从安全状态向不安全状态转换,便可将资源分配给进程;否则不分配资源,进程必须阻塞等待。从而避免发生死锁。1.系统的安全状态 安全状态是指系统的一种状态,在此状态开始系统能按某种顺序
10、(例如P1、P2Pn)来为各个进程分配其所需资源,直至最大需求,使每个进程都可顺序地一个个地完成。这个序列(P1、P2.Pn)称为安全序列。若系统此状态不存在一个安全序列,则称系统处于不安全状态。例:假如系统中有P1、P2和P3三个进程和12台磁带机。各进程最大需求和T0时刻分配状态如下:进程最大需求 已分配 还需请求 可用 P1 10 5 5 3 P2 4 2 2 P3 9 2 7,死锁的避免-1,分析T0状态,可以找到一个安全序列(P2、P1、P3),即系统按此进程序列分配资源,每个进程都可顺利完成,其步骤如下:先将可用的3台磁带机中2台分配给P2,P2满足了最大的资源需求,在有限时间内运
11、行完毕,释放它占有的全部资源,使可用资源数量增至5台。再将可用的5 台磁带机分配给P1,最后将可用10台中7台磁带机分配给P3。这样三进程可按照(P2、P1、P3)序列顺序地一个个执行完成,则(P2、P1、P3)序列是安全序列,T0时刻状态也是安全状态。2.由安全状态向不安全状态的转换 如果在T0 状态不按安全序列进行分配,可能会导致系统进入一个不安全状态,例如在T0状态下P3中申请1台磁带机。如系统实施此次分配使系统状态由T0变为T1状态,分析T1状态安全情况。,死锁的避免-2,T1时刻状态:进程 最大需求 已分配 还需请求 可用 可用 分配资源前 释放资源后 P1 10 5 5 4 P2
12、4 2 2=4 因为找不到一个安全序列使所有进程顺序地一个个地运行完毕,所以T1状态是不安全状态,由于实施分配给1台磁带机给P3的操作会引起系统状态由安全状态T0向不安全状态下的转换,所以为了避免死锁,上述的分配只是安全检测,检测后判定这样的申请不能满足,P3为申请1台磁带机而必须阻塞等待。,3.利用银行家算法避免死锁,最具代表的避免死锁算法是Dijkstra的银行家算法,这是由于该算法用于银行系统现金贷款的发放而得名。银行家算法的数据结构可用资源向量 Available m m为系统中资源种类数,Availablej=k表示系统中第j类资源数为k个。最大需求矩阵Maxn,m n为系统中进程数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 操作系统 死锁

链接地址:https://www.31ppt.com/p-6606465.html