- 1、本文档共54页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(3)不剥夺性:进程所获得的资源在未使用完之前,不能被其它进程强行夺走,而只能由其自行释放; (4)环路条件(循环等待):存在一个等待进程集合,P0正在等待一个P1占用的资源,P1正在等待一个P2占用的资源,……Pn正在等待一个P0占用的资源。 3、关于死锁的进一步说明 (1)死锁是进程之间的一种特殊关系,是由资源竞争引起的僵局关系,因此,当我们提到死锁时,至少涉及到两个进程。 虽然单个进程也可能锁住自己,但那是程序设计错误而不是死锁; (2)当出现死锁时,首先要弄清楚被锁的是哪些进程因竞争哪些资源被锁; (3)在多数情况下,一系统出现死锁,是指系统内的一些而不是全部进程被锁,它们是因竞争某些而不是全部资源而进入死锁。 若系统的全部进程都被锁住,我们称系统处于瘫痪状态; (4)系统瘫痪意味着所有进程都进入了睡眠(阻塞)状态,但所有进程都睡眠了,如果其中至少有一个进程可由I/O中断唤醒的话,这并不一定就是瘫痪状态。 5.4.3 解决死锁问题的策略 产生死锁的四个必要条件 (1)破坏互斥条件:可采用假脱机技术。 (2)破坏部分分配:可采用一次性满足请求,即静态预先分配。 (3)破坏不剥夺性:可采用可剥夺方法。 (4)破坏环路条件:可采用检测是否可能出现死锁,再决定是 否进行分配。 这些条件并不完全独立。但单独考虑每个条件是有用的,只要能破坏这四个必要条件之一,死锁就可防止。 说明: 1、以上前三个条件是死锁存在的必要条件,但不是充分条件。 2、第四个条件是前三个条件同时存在时产生的结果。 3、破坏第一个条件(互斥条件),使资源可同时访问而不是互斥使用,是个简单的办法,磁盘可用这种办法管理,但有许多资源往往是不能同时访问的,所以,这种做法许多场合行不通。 4、采用剥夺式调度方法可以破坏第三个条件(不剥夺条件),但剥夺调度方法目前只适用于对主存资源和处理器资源的分配,当进程在申请资源未获准许的情况下,如能主动释放资源(一种剥夺式),然后才去等待,以后再一起向系统提出申请,也能防止死锁,但这些办法不适用于所有资源。 解决死锁问题的三个策略(1) 1.静态分配资源 静态分配是指一个进程必须在执行前就申请它所要的全部资源,并且直到它所要的资源都得到满足后才开始执行。 无疑的,所有并发执行的进程要求的资源总和不超过系统拥有的资源数。 采用静态分配后,进程在执行中不再申请资源,因而,不会出现占有了某些资源再等待另一些资源的情况,即破坏了第二个条件(占有和等待条件)的出现。静态分配策略实现简单,被许多操作系统采用。但这种策略严重地降低了资源利用率。 2.动态分配资源 既进行分配资源时,阻止第四个条件(循环等待条件)的出现。 如:有序资源分配策略。 把系统的所有资源排列成一个顺序,例如,系统若共有n个进程,共有m个资源,用ri 表示第i个资源,于是这m个资源是: r1,r2,…,rm; 规定如果进程不得在占用资源ri(1≤i≤m)后再申请rj(ji)。 解决死锁问题的三个策略(2) 用反证法可以证明按序分配不会产生死锁! 事实上,若在时刻t1,进程P1处于等资源rk1的状态,则rk1必为另一进程(假定是P2)所占用,若P2在有限时间里可以运行结束,P1就不会处于永远等待状态; 所以,一定在某个时刻t2,进程P2占有了资源rk1 而处于永远等待资源rk2状态。 如此推下去,按假定系统只有有限个进程,即必有某个n,在时刻tn时,进程Pn永远等待资源rkn的状态,而rkn必为前面的某一个进程Pi占用(1≤in)。 于是,按照上述的按序分配策略,当P2占用了rk1后再申请rk2必有:k1<k2 依此类推,可得: k2<k3<…ki…<kn 但是,由于进程Pi是占有了rkn却要申请资源rki,那么,必定有:kn<ki, 这就产生了矛盾。 所以,按序分配策略可以防止死锁。 3.检测出死锁,并设法修复 解决死锁问题的三个策略(3) 系统合理状态的分析方法 系统状态的改变,是由进程对资源的请求、占有、释放引起的。因此我们只要考虑某时刻系统中的进程对资源的请求和占有情况。 具体方法(6个步骤)如下: 设系统t时刻包含n个并发进程和所需m类竞争资源。 1.登记n个并发进程为:P={P1,P2,…,Pn} 2.登记m类资源为:R={R1,R2,…,Rm} 3. 登记相应各类资总数目源为:W={W1, W2,…,Wm} 4.登记t时刻资源请求矩阵为:Q(t)=(Qij)nxm,其中Qij表示Pi请 求j类资源的数目 5.登记t时刻已分配资源矩阵为:A(t)=(Aij)nxm,其中Aij表示Pi占有j类资源的数目 6.? 系统合理状态的三个条件 (1) 如果存在某个Qij
文档评论(0)