第10章 操作系统死锁.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 操作系统死锁

第10章 死锁 前 言 死锁是发生在一组相互合作或竞争的线程或进程之间的一个问题.通常情况下,死锁发生在两个或多个不同的程序之间,并且不同程序的线程在同时进行.有三种自动的策略来解决死锁问题(1)预防(2)避免(3)检测和恢复.本章使用了一些简单但是正是的进程和资源模型,介绍了研究死锁问题的背景知识,然后考虑了在每种策略中所采用的方法. 10.1 背景 死锁会发生在现实世界的很多情形中.如汽车网罗锁,繁忙市区内的棋盘式街道上的汽车阻塞,它发生的原因是每个方向的汽车流占有一个十字路口,但是需要另一个十字路口才能继续前进. 这种形式的死锁的一种解决方法是在某一个时刻让一个交通警察将汽车移动一定的距离,让出一个十字路口,使得被阻塞的汽车可以继续前进,从而解除了死锁.另一种解决的办法是让一个方向的汽车流倒车来使得空出一个十字路口,这也解除了死锁. 例:假设有三个进程执行下面的指令段,出现死锁的情形. 进程1: … request(resource1); /*Holding res 1*/ … request(resource2); 进程2: … request(resource2); /*Holding res 2*/ … request(resource3); 进程3: … request(resource3); /*Holding res 3*/ … request(resource1); 三个死锁的进程 (该图解释了一个三向的死锁:进程i持有资源i,但是要获得资源(i+1 mod 3)后才能继续执行,每个进程将永远地等待所有请求的资源) 死锁发生的两个不同情形: (1)同一进程内线程间的死锁. 假定进程定义了两个不同的锁,L1和L2,线程可以使用它们来同步对进程内变量的访问.进程内的一个代码块使得线程获得L1,然后获得L2,但是同一进程内的另一代码块使得线程先获得L2,然后再获得L1. (2)不同进程内的线程间的死锁 考虑有两个不同的进程p1和p2,有一组线程{p1,i}在进程p1中运行,另一组线程{p2,j}在p2中运行.在这种情况下,进程p1内的线程p1,r获得资源R1,大约在同一时间,进程P2内的线程p2,s得到资源R2,后来,p1内的另一个线程p1,u请求资源R2并且转入阻塞状态,其后不久,p2,v请求R1,这样就形成了p1,u和p2,v间的死锁. 资源管理器和其他的操作系统功能也会卷入死锁情形. 在应用和操作系统间的死锁 (死锁可能发生在任何两个进程之间,无论它们是否执行操作系统代码) 操作系统如何构造才能保证正确地处理死锁? 预防 避免 检测与恢复 人工死锁管理(特别的方法) 死锁预防 假设在关于进程使用资源的方式上,有下列一些条件成立: 互斥:一旦一个进程被分配一个特定的资源,它就独占使用该资源,与此同时其他的进程不能使用. 占有并等待:一个进程可能在占有一个资源的同时又请求另一资源. 循环等待:进程P1占有资源R1,并同时请求资源R2,进程P2占有资源R2,并同时请求资源R1,也可能有多于两个的进程卷入循环等待. 非剥夺:只能通过进程的明确活动才能释放资源,而不能通过外部授权剥夺资源. 只有在一组进程间,以上四个条件都同时成立时,死锁才能发生,即这些条件是死锁存在的必要条件. 死锁预防策略就是通过设计协同资源管理程序,来破坏这些条件,因而在整个运行时间内,要保证至少破坏其中一个条件成立. 死锁避免 死锁避免策略依赖于资源管理器预测满足各个分配请求的效果的能力.如果一个请求会导致可能发生死锁的情形,死锁避免策略将拒绝该请求. 死锁避免是一种保守的策略,如果有死锁的潜在可能性,那么拒绝分配资源. 死锁检测和恢复 当一个检测算法运行时,实现策略可分为两个阶段.首先是检测阶段,系统会查看当前是否有死锁存在,如果检测到死锁,系统就会进入恢复阶段,通过剥夺死锁进程的资源来实现恢复.由此恢复就意味着非剥夺条件被破环,结束选定的进程,那么进程在死锁之前完成的所有工作都将丢失. 人工死锁管理 考虑到某些特定的资源类型死锁的代价十分高,所以死锁策略被采纳到资源管理器中,同时当死锁在系统中发生时,应该由用户或系统操作员来检测死锁,在这种情况下,恢复可能意味着要重启计算机. 10.2 一个系统死锁模型 简单的进程资源模型示例 (进程资源模型将n个进程表示为n个圆圈,将m个资源类型表示为m个方框.在方框Rj内的点的个数表示资源j的单元数目Cj.变表示请求分配) 设S时模型中的一组状态,{Sj} 表示系统中相应的

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档