- 1、本文档共87页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
产生死锁的必要条件 1.互斥条件 进程对所分配到的资源进行排它性使用 2.请求和保持条件 进程处于等待资源状态但又对自己已获得的资源保持不放。 3.不可抢占条件 进程已获得的资源,在未使用完之前,不能被抢占,只能在使用完时由自己释放。 4.循环等待条件 在发生死锁时,必然存在一个进程--资源的环形链,即存在一组进程P1,P2,…,Pn,其中每一个进程都在等待另一个进程占用的资源,即P1等待P2占用的资源,P2等待P3占用的资源,…,P(n-1)等待Pn占用的资源,而Pn又等待P1所占用的资源。 处理死锁的方法 1.预防死锁 通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。 预防死锁是一种较简单和直观的事先预防的方法,但由于其所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量降低。 处理死锁的方法 2.避免死锁 在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。 避免死锁也是一种事先预防的方法,但较难实现。它只需事先加以较弱的限制条件,便可获得较高的资源利用率和系统吞吐量。 处理死锁的方法 3.检测死锁 允许系统在运行过程中发生死锁,但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源;然后解除死锁。 4.解除死锁 当检测到系统中已发生死锁时,采取相应措施,将进程从死锁状态中解脱出来。常用的方法是撤消或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。 3.6 预防死锁 预防死锁的方法是使产生死锁的四个必要条件中的第2、3、4条件之一不能成立。 具体的方法有 一、破坏“请求和保持”条件 二、破坏”不可抢占”条件 三、破坏“循环等待”条件 破坏“请求和保持”条件 静态分配资源 静态分配就是要求每一个进程在开始执行前就一次性地申请它在整个执行过程中所需要的全部资源,仅当系统能满足进程资源申请要求且把资源分配给进程后,该进程才能开始执行。这种策略也称预分配资源。 实现简单,易行且安全。但降低了资源的利用率,并且使得进程延迟运行。 破坏“不可抢占”条件 抢占式分配资源法: 在采用这种方法时,进程是逐个地提出对资源的要求的。 如果一个进程已经占有了某些不可抢占性资源又要申请新的资源,而新的资源请求不能立即得到满足必须等待时,它必须释放已经保持的所有资源,待以后需要时再重新申请。 目前抢占式分配策略只适用于主存空间和处理器,而对打印机、磁带机等不能采用这种分配策略。 破坏“循环等待”条件 采用按序分配资源法: 把系统中所有资源按类型排一个顺序,并赋予每一个资源一个确定编号(例如打印机为1、磁带机为2、磁盘为3、等等),规定任何一个进程申请两个以上的资源时,总是先申请编号小的资源,再申请编号大的资源。 例如,系统共有m个资源,假定编号为1,2…,m,于是这m个资源是 r1,r2,…… rm 任何一个进程在得到了资源ri之后,若再申请资源rj,则必定是i<j。可以证明按这种策略分配资源时不会出现循环等待资源的情况。 可用反证法,假定有循环等待资源的情况,则一定存在一组进程p1,p2,…pn,其中每一个进程Pi(i=1,2,…,n-l)都在等待资源rki(l≤ki≤m),而资源rki已被进程pi+1占用, pn等待的资源被P1占用。依照按序分配的资源分配原则可推出 knk1k2……k(n-1)kn 于是,发生了knk1而k1kn的矛盾。故存在循环等待资源的假设是不能成立的。 三、摒弃“环路等待”条件 在避免死锁的方法中,允许进程动态地申请资源,但把系统的状态分为安全状态和不安全状态。 系统在进程资源分配之前,应先计算此次资源分配的安全性,若此次分配不会导致系统进入不安全状态,则将资源分配给进程,否则等待。 只要能使系统始终都处于安全状态,便可避免发生死锁。 3.7 避免死锁 所谓安全状态,是指系统能按某种顺序如P1,P2,…,Pn(称P1,P2,…,Pn序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。 若系统不存在这样一个安全序列,称系统处于不安全状态。 虽然并非所有不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进而进入死锁状态;反之,只要系统处于安全状态,系统便可避免进入死锁状态。 避免死锁的实质在于:如何使系统不进入不安全状态。 3.7.1 系统安全状态 假定系统有三个进程P1、P2和P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。设在T0时刻,进程Pl、P2和P3已分别获得5台、2台和2
文档评论(0)