自考操作系统原 第八章 死锁.ppt

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

死锁 死锁 多个进程在运行过程中因争夺资源而造成的一种僵局,若无外力作用,这些进程将永远不能向前推进。 死锁形成的原因 系统有三种独占型资源R1、R2、R3,有三个进程A、B、C并发执行,进程A需使用资源R3和R1,进程B需使用资源R1和R2,进程C需使用资源R2和R1。问在什么情况下会发生死锁,并说明原因。 死锁 若系统中存在一组进程(两个或多个),它们中每个进程占用了某种资源,又再等待已被该组进程中的其他进程占用的资源,如果这种进程等待永远不能结束,则说系统出现了死锁,或者说这组进程处于死锁状态。 例1:资源分配不当造成的死锁 系统有某类资源5个,被5个进程共享,每个进程要求2个资源。 P1请求1个资源,分配 P2请求1个资源,分配 P3请求1个资源,分配 P4请求1个资源,分配 P5请求1个资源,能否分配? 例2:并发进程执行的速度引起死锁 哲学家吃面条问题 五个哲学家P1,P2,P3,P4,P5,每两个哲学家之间放一根筷子,每个哲学家必须拿到左右手的两个筷子才能取到面条。 哲学家吃面条 S1,S2,S3,S4,S5:semaphore; S1:=1;S2:=1;S3:=1;S4:=1;S5:=1; 不属于死锁范围的情况 1、进程申请了系统中不存在的资源,或者申请的资源数超过了系统拥有的最大资源数而造成的等待。 2、硬件故障引起的循环等待 不属于死锁范围的情况 为了讨论在操作系统设计中可能出现的死锁问 题,假定: 1、任何一个进程要求资源的最大数量不超过系统能提供的最大资源量 2、若任何一个进程在执行中所申请的资源能全部得到满足,那么它一定能在有限的时间内执行完毕,并归还他所占用的资源 3、一个进程只有在它所申请的资源得不到满足时,才处于等待资源状态 死锁的必要条件 互斥的使用资源 占有且等待资源 不可抢夺资源 循环等待资源 只要发生死锁,则这四个条件一定同时成立,四个条件同时成立不一定有死锁。如果其中的一个或几个条件不成立,一定没有死锁。 资源分配图 假设某个系统有三类资源R1,R2,R3,其中R1和R3都有1个资源,R2有2个资源,系统中有三个进程P1,P2,P3,这些进程占用资源和等待的情况如表所示: 有环路无死锁 1、资源分配图中无环路,一定没有死锁 2、如果资源分配图中有环路,且每个资源类只有一个资源,则环路存在着意味着死锁的形成,环路中的进程处于死锁状态 3、如果资源分配图总有环路,但涉及的资源类有多个资源,则环路的存在未必形成死锁。 死锁的防止 只要破坏四个必要条件之一,就可以防止死锁 破坏“互斥”条件 方法是允许进程共享资源。但是在计算机系统中,由于资源本身的固有特性,使得大部分资源都必须互斥使用。 破坏这个条件通常行不通。 破坏“占有并等待”条件 静态分配资源 开始执行前申请自己所要的全部资源,执行过程中不再申请(同时还能破坏循环等待条件) 缺点:降低了资源利用率 释放已占资源 先释放已占用的资源,再申请资源 破坏“不可抢夺”条件 一个进程占有了某些资源后又要申请资源R,而R已经被另一进程P占用,系统可以抢夺P占用的R。 A申请的R尚未占用,可以把R分配给A A申请的R已被B占用,如果B出于等待另一资源的状态,那么抢夺资源R分配给A,否则让A等待。 一个等待资源的进程只有得到自己申请的资源和所有被抢走的老资源,才能继续执行。 适用于CPU,主存,对打印机、磁带机不适合 破坏“循环等待”条件 对资源进程编号,进程申请两个及以上资源时,总是先申请编号小的资源,再申请编号大的资源。 破坏“循环等待”条件 假设,某系统有m个资源Rk1,Rk2,Rk3..Rkn, 编号是k1,k2..kn,且k1k2k3..kn,任何一个进程在得到了Ri之后再申请Rj (ij),证明:按此策略分配资源,一定不会产生循环等待的情况。 例2:哲学家吃面条 S1,S2,S3,S4,S5:semaphore; S1:=1;S2:=1;S3:=1;S4:=1;S5:=1; P247 3 某系统有输入机和打印机各一台,今有两个进程要同时使用它们。请写出采用PV操作实现请求使用和归还的程序。 死锁的避免 估计到可能会发生死锁的时候,设法避免死锁的发生。 资源分配时测试系统的状态,仅当能确保不会发生死锁时,才把资源分配给申请者,否则拒绝。 安全状态 如果操作系统能保证所有的进程在有限的时间内得到需要的全部资源,则系统处于安全状态。 安全状态的判断 12个同类资源供3个进程共享 不安全状态 例如:12个同类资源供3个进程共享 P247 4 P247 5 P285 2 P247 4 P247 5 P285 2 有三个进程A、B、C,它们对某类资源的需求分别是7个,8个,3个,且目前已经分别得到了3个,3个,和2个。为了保证

文档评论(0)

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

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

1亿VIP精品文档

相关文档