现代操作系统.ppt
《现代操作系统.ppt》由会员分享,可在线阅读,更多相关《现代操作系统.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、死死 锁锁主要内容主要内容一、死锁产生一、死锁产生二、死锁处理二、死锁处理三、分布式死锁处理技术三、分布式死锁处理技术一、死锁产生一、死锁产生死锁的基本概念死锁的基本概念如果一个进程集合中的每个进程都在等待只能由该如果一个进程集合中的每个进程都在等待只能由该组进程中的其他进程才能引发的事件,那么,该组组进程中的其他进程才能引发的事件,那么,该组进程是死锁的。进程是死锁的。死锁的起因死锁的起因竞争资源竞争资源进程推进顺序不当(非资源死锁)进程推进顺序不当(非资源死锁)P1P1和和P2P2并发执行并发执行,按下述顺序推进:按下述顺序推进:P1 Req(R1)P1 Req(R1);Pl Req(R2
2、)Pl Req(R2);P1 Rel(R1)P1 Rel(R1);P1 Rel(R2)P1 Rel(R2);P2 Req(R2)P2 Req(R2);P2 Req(R1)P2 Req(R1);P2 Rel(R1)P2 Rel(R1);P2 Rel(R1)P2 Rel(R1);两个进程可顺利完成。称这种不会两个进程可顺利完成。称这种不会引起进程死锁的推进顺序是引起进程死锁的推进顺序是合法合法的。的。R1R2P1P2进程推进顺序不当(非资源死锁)进程推进顺序不当(非资源死锁)P1P1和和P2P2并发执行并发执行,按下述顺序推进:按下述顺序推进:P1 Req(R1)P1 Req(R1);P2 Req
3、(R2)P2 Req(R2);P1 Rel(R2)P1 Rel(R2);P2 Rel(R1)P2 Rel(R1);两个进程不可顺利完成。称这种引两个进程不可顺利完成。称这种引起进程死锁的推进顺序是起进程死锁的推进顺序是非法非法的。的。死锁的基本概念死锁的基本概念如果一个进程集合中的每个进程都在等待只能由该如果一个进程集合中的每个进程都在等待只能由该组进程中的其他进程才能引发的事件,那么,该组组进程中的其他进程才能引发的事件,那么,该组进程是死锁的。进程是死锁的。一、死锁产生一、死锁产生死锁的条件死锁的条件1.1.互斥条件互斥条件每个资源要么已经分配给了一个进程,要么可用。每个资源要么已经分配给
4、了一个进程,要么可用。2.2.占有和等待条件占有和等待条件已经得到了某个资源的进程可以再请求新的资源。已经得到了某个资源的进程可以再请求新的资源。3.3.不可抢占条件不可抢占条件已经分配给一个进程的资源不能强制性地被抢占,它只能已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。被占有它的进程显式地释放。4.4.环路等待条件环路等待条件死锁发生时,系统中一定有由两个或两个以上的进程组成死锁发生时,系统中一定有由两个或两个以上的进程组成的一条环路,该环路中的每个进程都在等待着下一个进程的一条环路,该环路中的每个进程都在等待着下一个进程所占有的资源。所占有的资源。二、死锁处
5、理二、死锁处理有四种处理死锁的策略有四种处理死锁的策略1.1.忽略忽略2.2.鸵鸟算法鸵鸟算法2.2.让死锁发生,检测它们是否发生;一旦发生,采取让死锁发生,检测它们是否发生;一旦发生,采取行动解决行动解决死锁检测和恢复死锁检测和恢复3.3.仔细分配资源,动态地避免死锁仔细分配资源,动态地避免死锁死锁避免死锁避免4.4.破坏引起死锁的四个条件之一,防止死锁产生破坏引起死锁的四个条件之一,防止死锁产生死锁预防死锁预防1.1.鸵鸟算法鸵鸟算法如果死锁平均每如果死锁平均每5 5年发生一次,而每个月系统都会因年发生一次,而每个月系统都会因为硬件故障、编译器错误或者操作系统故障而崩溃一为硬件故障、编译器
6、错误或者操作系统故障而崩溃一次,那么大多数工程师不会以性能损失和可用性的代次,那么大多数工程师不会以性能损失和可用性的代价去防止死锁。价去防止死锁。大多数操作系统(如大多数操作系统(如UNIXUNIX和和WindowsWindows)处理这一问题)处理这一问题的办法是忽略它,因为解决死锁的代价通常很大,给的办法是忽略它,因为解决死锁的代价通常很大,给进程带来诸多不便,而多数用户宁可在极偶然情况下进程带来诸多不便,而多数用户宁可在极偶然情况下产生死锁,也不愿受很多不便限制。产生死锁,也不愿受很多不便限制。大多数操作系统潜在地受到了死锁的威胁,但这些大多数操作系统潜在地受到了死锁的威胁,但这些死锁
7、从来没有被检测到过,理所当然地自动解除了。死锁从来没有被检测到过,理所当然地自动解除了。2.2.死锁检测和死锁恢复死锁检测和死锁恢复对资源的分配不加任何限制,也不采取死锁避免措对资源的分配不加任何限制,也不采取死锁避免措施,但系统定时地运行一个施,但系统定时地运行一个“死锁检测死锁检测”程序,判断程序,判断系统内是否已出现死锁,如果检测到系统已发生了死系统内是否已出现死锁,如果检测到系统已发生了死锁,再采取措施解除它锁,再采取措施解除它每种类型一个资源的死锁检测常借助资源分配图;每种类型一个资源的死锁检测常借助资源分配图;每种类型多个资源的死锁检测常基于矩阵每种类型多个资源的死锁检测常基于矩阵
8、RASWUTVCFDBGE资源资源进程进程较好算法见(较好算法见(Even,1979)2.2.死锁检测和死锁恢复死锁检测和死锁恢复一种具体的死锁检测方法,检测算法步骤如下:一种具体的死锁检测方法,检测算法步骤如下:1)currentavail=available;2)如果如果allocationk,*!=0,令,令finishk=false;否则否则finishk=true;3)寻找一个寻找一个k,它应满足条件:,它应满足条件:(finishk=false)&(requestk,*=currentavail*);若找若找不到这样的不到这样的k,则转向,则转向5);4)修改修改currentav
9、ail*=Currentavail*+allocationk,*;finishk=true;然后转向然后转向3);5)如果存在如果存在k(1kn),finishk=false,则系统处于死锁状态,则系统处于死锁状态,并且并且finishk=false的的Pk为处于死锁的进程。为处于死锁的进程。2.2.死锁检测和死锁恢复死锁检测和死锁恢复利用抢占恢复利用抢占恢复临时将某个资源从它的当前所有者那里转移到另一临时将某个资源从它的当前所有者那里转移到另一个进程(对运行在大型主机上的批处理操作系统来说,个进程(对运行在大型主机上的批处理操作系统来说,要人工干预)要人工干预)比较困难;可行与否取决于资源本
10、身特性;挂起进比较困难;可行与否取决于资源本身特性;挂起进程的选择取决于哪个进程拥有较易收回的资源程的选择取决于哪个进程拥有较易收回的资源利用回退恢复利用回退恢复根据系统保存的检查点,让所有进程回退,直到足根据系统保存的检查点,让所有进程回退,直到足以解除死锁。进程检查点中应包括存储映像,资源状以解除死锁。进程检查点中应包括存储映像,资源状态,及资源的分配情况等态,及资源的分配情况等这种措施要求系统建立保存检查点、回退及重启机这种措施要求系统建立保存检查点、回退及重启机制;当进程执行时,一系列检查点文件被累积制;当进程执行时,一系列检查点文件被累积2.2.死锁检测和死锁恢复死锁检测和死锁恢复通
11、过杀死进程恢复通过杀死进程恢复杀掉环中的一个进程或选一个环外的进程作为牺牲杀掉环中的一个进程或选一个环外的进程作为牺牲品以释放该进程资源。品以释放该进程资源。杀掉环中进程的最坏情况是逐个撤销陷于死锁的进杀掉环中进程的最坏情况是逐个撤销陷于死锁的进程并回收其资源重新分派,直至死锁解除;杀掉环外程并回收其资源重新分派,直至死锁解除;杀掉环外进程时,该进程应正好持有环中某些进程所需的资源。进程时,该进程应正好持有环中某些进程所需的资源。杀死进程在第二次运行时可能是不安全的(如数据杀死进程在第二次运行时可能是不安全的(如数据库的更新进程),故最好杀死可以从头开始运行不会库的更新进程),故最好杀死可以从
12、头开始运行不会带来副作用的进程带来副作用的进程3.3.死锁避免死锁避免避免死锁的主要算法是基于安全状态的概念。避免死锁的主要算法是基于安全状态的概念。所谓安全状态即对于所有进程的资源请求,存在某所谓安全状态即对于所有进程的资源请求,存在某种调度次序能使得进程运行完毕。种调度次序能使得进程运行完毕。资源轨迹图与银行家算法资源轨迹图与银行家算法3.3.死锁避免死锁避免银行家算法银行家算法系统中的所有进程进入进程集合系统中的所有进程进入进程集合,在安全状态下系统收到进程的资源请求后在安全状态下系统收到进程的资源请求后,先把资源试探性先把资源试探性分配给它。分配给它。系统用剩下的可用资源和进程集合中其
13、他进程还要的资源系统用剩下的可用资源和进程集合中其他进程还要的资源数作比较,在进程集合中找到剩余资源能满足最大需求量数作比较,在进程集合中找到剩余资源能满足最大需求量的进程的进程,从而从而,保证这个进程运行完毕并归还全部资源。保证这个进程运行完毕并归还全部资源。把这个进程从集合中去掉把这个进程从集合中去掉,系统的剩余资源更多了系统的剩余资源更多了,反复执反复执行上述步骤。行上述步骤。最后最后,检查进程集合检查进程集合,若为空表明本次申请可行若为空表明本次申请可行,系统处于安系统处于安全状态全状态,可实施本次分配可实施本次分配;否则否则,有进程执行不完,系统处于有进程执行不完,系统处于不安全状态
14、不安全状态,本次资源分配暂不实施本次资源分配暂不实施,让申请进程等待。让申请进程等待。3.3.死锁避免死锁避免银行家算法银行家算法processAllocationClaimAvailableABCABCABCP0010753332P1200322P2302902P3211222P4002433可以断言目前系统处于安全状态可以断言目前系统处于安全状态,因为因为,序列序列P1,P3,P4,P2,P0能满足安全性条件。能满足安全性条件。3.3.死锁避免死锁避免死锁避免算法与死锁检测算法是类似的,死锁避免算法与死锁检测算法是类似的,不同在于后者考虑了检查每个进程还需要不同在于后者考虑了检查每个进程还
15、需要的所有资源能否满足要求;而前者则仅要的所有资源能否满足要求;而前者则仅要根据进程的当前申请资源量来判断系统是根据进程的当前申请资源量来判断系统是否进入了不安全状态。否进入了不安全状态。4.4.死锁预防死锁预防通过限制进程的资源请求来达到预防死锁的目的,都通过限制进程的资源请求来达到预防死锁的目的,都是通过打破四个死锁条件中的一个条件来实现的。是通过打破四个死锁条件中的一个条件来实现的。破坏占有和等待条件破坏占有和等待条件所有进程在开始执行前请求所需的全部资源所有进程在开始执行前请求所需的全部资源优点:易实现,安全,有效防死锁优点:易实现,安全,有效防死锁缺点:很多进程直到开始运行时才知道它
16、需要多少资源;缺点:很多进程直到开始运行时才知道它需要多少资源;资源利用率不高,进程推迟运行资源利用率不高,进程推迟运行大型机批处理系统要求用户在所提交作业的第一行列出所大型机批处理系统要求用户在所提交作业的第一行列出所需资源,系统分配所需全部资源,直到作业完成回收。需资源,系统分配所需全部资源,直到作业完成回收。当一个进程请求资源时,先暂时释放其当前占有的当一个进程请求资源时,先暂时释放其当前占有的所有资源,然后再尝试一次获得所需全部资源所有资源,然后再尝试一次获得所需全部资源4.4.死锁预防死锁预防破坏不可抢占条件破坏不可抢占条件一个已保持了某些资源的进程,若新的资源要求不一个已保持了某些
17、资源的进程,若新的资源要求不能立即得到满足,它必须释放已保持的所有资源。能立即得到满足,它必须释放已保持的所有资源。实现比较复杂,且代价很大;一个资源在使用一段时间后实现比较复杂,且代价很大;一个资源在使用一段时间后被释放可能会造成前阶段工作的失效。被释放可能会造成前阶段工作的失效。破坏循环等待条件破坏循环等待条件保证每个进程在任何时刻只占用一个资源。保证每个进程在任何时刻只占用一个资源。对所有资源统一编号对所有资源统一编号所有资源都被赋予一个唯一的数字编号。一个进程可以请所有资源都被赋予一个唯一的数字编号。一个进程可以请求一个有唯一编号求一个有唯一编号i i的资源,条件是该进程没有占用编号小
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代 操作系统
限制150内