欢迎来到天天文库
浏览记录
ID:26663848
大小:925.85 KB
页数:64页
时间:2018-11-28
《产生死锁的原因和必要条件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.5产生死锁的原因和必要条件1§3.8死锁问题在多道程序系统中,多个进程并发运行,共享资源,从而提高了资源的利用率。但是若对资源的管理和使用不当,在一定条件下会导致系统发生一种随机性故障――死锁。在一些系统中,比如实时控制系统,系统一旦发生死锁将导致灾难性的后果。23.8.1死锁的基本概念资源死锁的定义产生死锁的原因产生死锁的必要条件处理死锁的基本方法3资源的概念OS是计算机系统中资源的管理者,而进程是竞争资源的基本单位,故对系统中所有进程的资源分配工作,都由OS完成。研究资源分配时,我们必
2、须搞清该资源是可以被几个进程同时使用,还是只能为一个进程使用,资源的不同使用性质正是引起系统死锁的原因。4根据资源性质:可剥夺(抢占)和不可剥夺(抢占)资源。可抢占资源—指资源占有进程虽然需要使用该资源,但另一个进程却强行把资源从占有者进程处抢来。不可抢占资源—指只有占用者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有者进程使用资源过程中强行抢占。资源的分类5根据使用方式:共享资源和独享资源。根据使用期限;永久资源和临时性资源。资源CPU、主存、硬盘,该类资源可为几个进程共同使用(可抢占)打印
3、机,读卡机,磁带驱动器,可为某个进程独享(不可抢占)可顺序重复使用的资源由一个进程产生,被另外一个进程使用短暂时间之后便无用的资源6死锁的定义死锁Deadlock:是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。陷入死锁状态的进程称为死锁进程,所占用的资源或者需要它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。7产生死锁的原因1竞争资源。当系统中供多个进程所共享的资源,不足以同时
4、满足它们的需要时,引起它们对资源的竞争而产生死锁;2进程推进的顺序不当。进程在运行过程中,请求和释放资源的顺序不当,导致进程的死锁。8竞争资源1竞争非剥夺性资源:2竞争临时性资源打印机R1磁带机R2P1P29P1S1S3P2P3S2P1:Release(S1);Request(S3)P2:Release(S2);Request(S1)P3:Release(S3);Request(S2)不可能发生死锁P1:Request(S3);Release(S1)P2:Request(S1);Release(S2)P3
5、:Request(S2);Release(S3)可能发生死锁S1、S2、S3是临时资源10若干死锁的例子(1)例1进程推进顺序不当产生死锁设系统有打印机、读卡机各一台,被进程P和Q共享。两个进程并发执行,按下列次序请求和释放资源:进程P进程Q请求读卡机请求打印机请求打印机请求读卡机释放读卡机释放读卡机释放打印机释放打印机11P2Rel(R1)P2Rel(R2)P2Req(R1)P2Req(R2)P1Req(R1)P1Req(R2)P1Rel(R1)P1Rel(R2)③④③③③②②①①进程P1、P2并发执行
6、。资源R1、R2曲线4将进入不安全区域(进程推进顺序非法)12死锁模型R1R2P1P2申请r2已分配给p2申请r1已分配给P1R2已经分配给P1、R1已经分配给P213产生死锁的四个必要条件⑴互斥条件:进程访问的是临界资源,那个资源一次只能被一个进程所使用。⑵不剥夺条件:一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。⑶部分分配:(请求和保持条件)一个进程在请求新的资源的同时,保持对某些资源的占有。⑷环路等待条件:存在一个进程的环路链,链中每一个进程占用有着某个或某些资源,又在等待链中的另一个进
7、程占有的资源。14若干死锁的例子(2)例2PV操作使用不当产生死锁进程Q1进程Q2………………P(S1);P(s2);P(s2);P(s1);使用r1和r2;使用r1和r2V(S1);V(s2);V(S2);V(S1);15若干死锁的例子(3)例3资源分配不当引起死锁若系统中有m个资源被n个进程共享,每个进程都要求K个资源,而m8、的发送和接收不加限制,可能引起死锁。进程P1等待进程P3的信件S3来到后再向进程P2发送信件S1;P2又要等待P1的信件S1来到后再向P3发送信件S2;而P3也要等待P2的信件S2来到后才能发出信件S3。这种情况下形成了循环等待,产生死锁。173.6预防死锁的方法破坏第一个条件使资源可同时访问而不是互斥使用,是个简单的办法,磁盘可用这种办法管理,但有许多资源往往是不能同时访问,所以这种做法许多场合行不通。18死锁防止破坏第二个
8、的发送和接收不加限制,可能引起死锁。进程P1等待进程P3的信件S3来到后再向进程P2发送信件S1;P2又要等待P1的信件S1来到后再向P3发送信件S2;而P3也要等待P2的信件S2来到后才能发出信件S3。这种情况下形成了循环等待,产生死锁。173.6预防死锁的方法破坏第一个条件使资源可同时访问而不是互斥使用,是个简单的办法,磁盘可用这种办法管理,但有许多资源往往是不能同时访问,所以这种做法许多场合行不通。18死锁防止破坏第二个
此文档下载收益归作者所有