产生死锁的原因与必要条件.ppt

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

3.5产生死锁的原因 和必要条件 §3.8 死锁问题 在多道程序系统中,多个进程并发运行,共享资源,从而提高了资源的利用率。但是若对资源的管理和使用不当,在一定条件下会导致系统发生一种随机性故障――死锁。在一些系统中,比如实时控制系统,系统一旦发生死锁将导致灾难性的后果。 3.8.1 死锁的基本概念 ?资源 ?死锁的定义 ?产生死锁的原因 ?产生死锁的必要条件 ?处理死锁的基本方法 资源的概念 OS是计算机系统中资源的管理者,而进程是竞争资源的基本单位,故对系统中所有进程的资源分配工作,都由OS完成。 研究资源分配时,我们必须搞清该资源是可以被几个进程同时使用,还是只能为一个进程使用,资源的不同使用性质正是引起系统死锁的原因。 根据资源性质:可剥夺(抢占)和不可剥夺(抢占)资源。 可抢占资源—指资源占有进程虽然需要使用该资源,但另一个进程却强行把资源从占有者进程处抢来。 不可抢占资源—指只有占用者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有者进程使用资源过程中强行抢占。 死锁的定义 死锁Deadlock:是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。 陷入死锁状态的进程称为死锁进程,所占用的资源或者需要它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。 产生死锁的原因 1 竞争资源。当系统中供多个进程所共享的资源,不足以同时满足它们的需要时,引起它们对资源的竞争而产生死锁; 2 进程推进的顺序不当 。进程在运行过程中,请求和释放资源的顺序不当,导致进程的死锁。 竞争资源 1 竞争非剥夺性资源: 2 竞争临时性资源 若干死锁的例子(1) 例1进程推进顺序不当产生死锁 设系统有打印机、读卡机各一台,被进程P和Q共享。两个进程并发执行,按下列次序请求和释放资源: 进程P 进程Q 请求读卡机 请求打印机 请求打印机 请求读卡机 释放读卡机 释放读卡机 释放打印机 释放打印机 ? ?产生死锁的四个必要条件 ⑴互斥条件:进程访问的是临界资源,那个资源一次只能被一个进程所使用。 ⑵不剥夺条件:一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。 ⑶部分分配:(请求和保持条件)一个进程在请求新的资源的同时,保持对某些资源的占有。 ⑷环路等待条件:存在一个进程的环路链,链中每一个进程占用有着某个或某些资源,又在等待链中的另一个进程占有的资源。 若干死锁的例子(2) 例2 PV操作使用不当产生死锁 进程Q1 进程Q2 ……… ……… P(S1); P(s2); P(s2); P(s1); 使用r1和r2; 使用r1和r2 V(S1); V(s2); V(S2); V(S1); 若干死锁的例子(3) 例3 资源分配不当引起死锁 若系统中有m个资源被n个进程共享,每个进程都要求K个资源,而m n·K时,即资源数小于进程所要求的总数时,如果分配不得当就可能引起死锁。 若干死锁的例子(4) 例4对临时性资源使用不加限制引起死锁 进程通信使用的信件是一种临时性资源,如果对信件的发送和接收不加限制,可能引起死锁。 进程P1等待进程P3的信件S3来到后再向进程P2发送信件S1;P2又要等待P1的信件S1来到后再向P3发送信件S2;而P3也要等待P2的信件S2来到后才能发出信件S3。这种情况下形成了循环等待,产生死锁。 3.6预防死锁的方法 破坏第一个条件 使资源可同时访问而不是互斥使用,是个简单的办法,磁盘可用这种办法管理,但有许多资源往往是不能同时访问,所以这种做法许多场合行不通。 死锁防止 破坏第二个条件或第四个条件 种种死锁防止办法施加于资源的限制条件太严格,会造成资源利用率和吞吐率低。两种比较实用的死锁防止方法,它们能破坏第二个条件或第四个条件。 死锁防止 1.摒弃”请求和保持” 静态分配策略(破坏条件2) 静态分配是指一个进程必须在执行前就申请它所要的全部资源,并且直到它所要的资源都得到满足后才开始执行。 死锁防止 2.摒弃”不剥夺

文档评论(0)

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

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

1亿VIP精品文档

相关文档