




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章处理机调度与死锁处理机调度相关基本概念常用调度算法实时调度产生死锁的原因和必要条件预防死锁的方法死锁的检测与解除12/3/20221山东农业大学计算机系第3章处理机调度与死锁处理机调度相关基本概念12/3/20关于死锁多道程序系统借助并发执行改善资源利用率,提高系统吞吐量,但可能发生一种危险——死锁。死锁(Deadlock):指多个进程在运行过程中,因争夺资源而造成的一种僵局。当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。12/3/20222山东农业大学计算机系关于死锁多道程序系统借助并发执行改善资源利用率,提高系统吞吐找原因分析形成条件根据分析,找出处理死锁的方法四、产生死锁的原因和必要条件12/3/20223山东农业大学计算机系找原因分析形成条件根据分析,找出处理死锁的方法四、产生死锁的例:使用信号量造成死锁的典型 P1 P2wait(D) wait(E)wait(E) wait(D)signal(D) signal(E)signal(E) signal(D) 死锁发生:双方都拥有部分资源,同时在请求对方已占有的资源。请求推进的次序与对非剥夺性资源的争用都是造成死锁的原因。12/3/20224山东农业大学计算机系例:使用信号量造成死锁的典型12/3/20224山东农业大学产生死锁的原因可归结为如下两点:竞争资源。系统中供多个进程共享的资源如打印机、公用队列等的数目不满足需要时,会引起资源竞争而产生死锁。进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,同样会导致死锁。12/3/20225山东农业大学计算机系产生死锁的原因可归结为如下两点:12/3/20225山东农业1、竞争资源引起进程死锁可把系统中的资源分为两类:可剥夺和非剥夺性资源可剥夺性资源:分配给进程后可以被高优先级的进程剥夺。如CPU和主存。不可剥夺性资源:分配给进程后只能在进程用完后释放。如磁带机、打印机等。永久性资源和临时性资源永久性:打印机。可顺序重复使用临时性:进程产生被其他进程短暂使用的资源,如数据资源:“生产者/消费者”算法中的信号量。。它可能引起死锁。12/3/20226山东农业大学计算机系1、竞争资源引起进程死锁可把系统中的资源分为两类:12/3/2、进程推进顺序不当引起死锁进程在运行中具有异步性特征,多个进程按向前推进的顺序有两种情况:推进顺序合法推进顺序非法12/3/20227山东农业大学计算机系2、进程推进顺序不当引起死锁进程在运行中具有异步性特征,多个3、产生死锁的必要条件形成死锁的四个必要条件(四个条件都具备就会死锁,缺一就不会死锁)12/3/20228山东农业大学计算机系3、产生死锁的必要条件形成死锁的四个必要条件(四个条件都具互斥条件:进程对所分配到的资源进行排他性使用请求和保持条件:进程已经保持了至少一个资源,又提出新的资源请求,而新请求资源被其他进程占有只能造成自身进程阻塞,但对自己已获得的其他资源保持不放,必然影响其他进程。不剥夺条件:进程已获得的资源未使用完之前不能被剥夺,只能在使用完时由自己释放。环路等待条件破坏这4个条件即是处理死锁的方法12/3/20229山东农业大学计算机系互斥条件:进程对所分配到的资源进行排他性使用破坏这4个条件1如哲学家就餐问题的一种写法,wait(mutex)wait(left)wait(right)signal(mutex)signal(left)signal(left)会死锁么?12/3/202210山东农业大学计算机系如哲学家就餐问题的一种写法,会死锁么?12/3/202214、处理死锁的基本方法事先预防:预防死锁设置限制条件,破坏四个必要条件的一个或几个,预防发生死锁。较易实现。限制条件的严格也会导致系统资源利用率和系统吞吐量降低。避免死锁不须事先限制,破坏四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。这种事先加以较弱限制的方法,实现上有一定难度,但可获较高的资源利用率及系统吞吐量,目前在较完善的系统中,常用此方法来避免发生死锁。12/3/202211山东农业大学计算机系4、处理死锁的基本方法12/3/202211山东农业大学计算事后处理:检测死锁。允许系统运行过程中发生死锁,但通过系统检测机构可及时的检测出,能精确确定与死锁有关的进程和资源;然后采取适当的措施,从系统中将已发生的死锁清除掉。解除死锁。与死锁检测配套的一种措施。常用的实施方法:撤销或挂起一些进程,以便回收一些资源并将他们分配给已阻塞进程,使之转为就绪以继续运行。死锁的检测与解除措施,有可能使系统获得较好的资源利用率和吞吐量(死锁几率不一定很高),但在实现上难度也最大。12/3/202212山东农业大学计算机系事后处理:12/3/202212山东农业大学计算机系第3章处理机调度与死锁处理机调度相关基本概念常用调度算法实时调度产生死锁的原因和必要条件预防死锁的方法死锁的检测与解除12/3/202213山东农业大学计算机系第3章处理机调度与死锁处理机调度相关基本概念12/3/20五、预防死锁的方法预防死锁资源的排他性无法更改,故在其他3个条件上入手摒弃“请求和保持”条件:所有进程开始运行前,必须一次性的申请其在整个运行过程所需的全部资源(AND)。算法简单、易于实现且很安全。但缺点是资源浪费严重、或进程延迟运行。摒弃“不剥夺”条件:允许进程先运行,但当提出的新要求不被满足时必须释放它已保持的所有资源,待以后需要时再重新申请。实现比较复杂且付出很大代价。可能会造成前功尽弃,反复申请和释放等情况。12/3/202214山东农业大学计算机系五、预防死锁的方法预防死锁12/3/202214山东农业大学摒弃“环路等待”条件有序设置资源:将所有资源按类型进行线性排队,赋予不同序号。所有进程对资源的请求必须严格按照资源序号递增的次序提出,这样在所形成的资源分配图中,不可能会出现环路。与前两种策略比较,资源利用率和系统吞吐量都有较明显的改善。但也存在严重问题:资源编号限制新设备的增加;应用中的使用设备顺序与规定的顺序并不协调;限制了用户编程自由。12/3/202215山东农业大学计算机系摒弃“环路等待”条件12/3/202215山东农业大学计算机2.避免死锁上述方法限制条件都太强;造成一定的应用不便。采用避免死锁的方法则是只施加较弱限制条件,从而获得令人满意的系统性能。名词:安全状态:系统能按某种进程顺序为每个进程分配所需资源,直至满足每个进程对资源的最大需求,并能顺利完成。不安全状态:系统无法找到一种使多个进程能够顺利分配资源执行完的安全序列。12/3/202216山东农业大学计算机系2.避免死锁上述方法限制条件都太强;造成一定的应用不便。采用*安全状态、安全序列举例假定三个进程A、B和C,共有12台磁带机。假设t0时刻,磁带机资源分配情况如下表所示,此时系统是否处于安全状态?进程最大需求已分配还需可用A10553B422C927是安全的,因为存在一个安全序列B,A,C只要系统按此进程序列分配资源,就能使每个进程都顺利完成。12/3/202217山东农业大学计算机系*安全状态、安全序列举例假定三个进程A、B和C,共有12台*由安全状态向不安全状态的转换每次资源分配时,都应分析判断资源分配图,看该次操作后是否有安全序列。若没有,说明该操作会使系统进入不安全状态。只要使系统始终处于安全状态,便可避免发生死锁。不是所有的不安全状态都是死锁状态。12/3/202218山东农业大学计算机系*由安全状态向不安全状态的转换每次资源分配时,都应分析判断3.银行家算法避免死锁 最有代表性的避免死锁的算法,是Dijkstra的银行家算法。由于该算法能用于银行系统现金贷款的发放而得名。 【思路描述】:随时对系统中的所有资源信息进行统计,包括每种资源的数量、已分配给各进程的数量;每当进程提出某种资源请求时判断该请求分配后是否安全,如果安全才分配。对每个资源请求的处理都要保证系统始终从一个安全状态到另一个安全状态。12/3/202219山东农业大学计算机系3.银行家算法避免死锁12/3/202219山东农业大学计银行家算法应用之例假定系统中有五个进程{P0,P1,P2,P3,P4}和三类资源{A,B,C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图所示。431002433P4011211222P3600302902P2122200322P1332743010753P0AvailableABCNeedABCAllocationABCMaxABC资源情况进程12/3/202220山东农业大学计算机系银行家算法应用之例假定系统中有五个进程{P0,P1,P计算举例:当前T0时刻是否安全?利用安全性算法在下表找一个安全序列{P1,P3,P4,P2,P0},故是安全的。(最后检查应是资源释放完后又回到10、5、7)431002433P4011211222P3600302902P2122200322P1332743010753P0AvailableABCNeedABCAllocationABCMaxABC资源情况进程5327437451047105712/3/202221山东农业大学计算机系计算举例:当前T0时刻是否安全?43找安全序列的计算过程表True10570107431047P0True1047302600745P2True745002431743P4True743211011532P3True532200122332P1FinishWork+AllocationABCAllocationABCNeedABCWorkABC资源情况进程12/3/202222山东农业大学计算机系找安全序列的计算过程表True105(1)T0时刻的初始状态是安全的;(2)下面出现P1请求资源的操作,具体请求向量为Request1(1,0,2),利用银行家算法进行检查该操作是否是安全可行的:1)两个基本判断 Request1(1,0,2)<=Need1(1,2,2) Request1(1,0,2)<=Available1(3,3,2)2)先假设为P1分配资源,并修改Available,Allocation1和Need1向量。12/3/202223山东农业大学计算机系(1)T0时刻的初始状态是安全的;12/3/202223山东3)Request1(1,0,2)后新的资源状态表下再判断新资源状态是否是安全的。找到一个安全序列{P1,P3,P4,P0,P2},因此系统是安全的,该请求是安全的,可将假设真正实施,将P1所申请的资源分配给它。True1057302600755P2True755010743745P0True745002431743P4True743211011532P3True532302020230P1FinishWork+AllocationABCAllocationABCNeedABCWorkABC资源情况进程200+102122—102332—10212/3/202224山东农业大学计算机系3)Request1(1,0,2)后新的资源状态表下再判断问:P4发出请求向量Request4(3,3,0),可否分配资源?1)Request4(3,3,0)<=Need4(4,3,1);2)Request4(3,3,0)<=Available(2,3,0),P4等待问:P0发出请求向量Request0(0,2,0),可否分配资源?1)Request0(0,2,0)<=Need0(7,4,3);2)Request0(0,2,0)<=Available(2,3,0);3)系统暂时先假定可为P0分配资源,并修改有关数据,见下表:431002P4011211P3600302P2020302P1210723030P0AvailableABCNeedABCAllocationABC资源情况进程Available(2,1,0)不能满足任何finish=false进程的需求,如果分配会使系统进入不安全状态,所以不能分配资源。如果把P0发出的请求向量改为Request0(0,1,0),系统是否能将资源分配给它,大家考虑。73322002012/3/202225山东农业大学计算机系问:P4发出请求向量Request4(3,3,0),可否分配算法实现说明算法实现:首先:需要的一些数据结构再次:算法过程核心:安全性判断算法12/3/202226山东农业大学计算机系算法实现说明算法实现:12/3/202226山东农业大学计算1)银行家算法中的数据结构(1)各类可利用资源的数量向量Available:(i1,i2,…,im),含m个元素,每个元素代表一类可利用的资源数目。动态变化的,初始值是系统配置的该类资源的全部数目,值随资源的分配与回收而动态的改变。实现:一维数组。Available【j】=K,表示系统中Rj类资源现有可用数量为K个。m类资源,n个并发进程对其产生需求12/3/202227山东农业大学计算机系1)银行家算法中的数据结构m类资源,n个并发进程对其产生需(2)每个进程对每类资源的需求最大需求、已获得的、还需要的最大需求矩阵Maxn*m,系统中n个进程中每个进程分别对m类资源的最大需求。取值:根据进程需求赋初始值。实现:二维数组。Max【i,j】=K,表示进程i需要Rj类资源的最大数目为K。12/3/202228山东农业大学计算机系(2)每个进程对每类资源的需求12/3/202228山东农业已分配矩阵Allocation。n*m,定义系统中每一进程已获得的每类资源数量。Allocation【i,j】=K,表示进程i当前已分得Rj类资源数为K。还需求的矩阵Need。n*m,表示每一进程尚需的各类资源数。Need【i,j】=K,表示进程i还需要Rj类资源K个,方能完成任务。上述三个矩阵存在关系: Max【i,j】=Allocation【i,j】+Need【i,j】每次,给进程i分配资源的动作,影响上述数据结构的取值: Available【】,Allocation【i,】,Need【i,】12/3/202229山东农业大学计算机系已分配矩阵Allocation。12/3/202229山东农2)避免死锁的算法过程(银行家算法)当前资源分配状态如何?构建资源分配表判断向下运行过程中,各进程对资源的需求是否安全。
在当前资源分配状态基础上,分析进程的实际请求Requesti【j】=k。表示进程Pi需要K个Rj类型的资源。进程MAXABCAllocationABCNeedABCAvailableABCP0753232521432P1542221321P2211100111资源情况Request0(2,2,1)12/3/202230山东农业大学计算机系2)避免死锁的算法过程(银行家算法)当前资源分配状态如何?构算法过程:
就是对各进程的Request向量及资源数量进行一系列判断及值操作。进程Pi发出资源请求后,系统按下述步骤进行检查:首先是两个基本判断:(1)IFRequesti[j]<=Need[i,j] THEN转向步骤2; ELSE认为出错,所需资源数超过宣布的最大值(自我矛盾)(2)IFRequesti[j]<=Available[j] THEN转向步骤3; ELSE表示尚无足够资源,Pi需等待(现实不满足)12/3/202231山东农业大学计算机系算法过程:
就是对各进程的Request向量及资源数量进行一如果上面两步判断都通过了,进入实质的资源分析(3)系统试探着把资源分配给进程Pi,并修改相应数据结构的值(假设性操作):Available【j】 =Allocation【i,j】=Need【i,j】=(4)系统执行安全性算法,判断新的资源分配状态是否是安全的。 即:找一个安全序列,使这些进程按顺序执行完)如果能够找到,则将假设操作真正实施完成资源分配。Available【j】-Requesti【j】;Allocation【i,j】+Requesti【j】;Need【i,j】 -Requesti【j】;请求前的资源分配状态新的资源分配状态安全性算法12/3/202232山东农业大学计算机系如果上面两步判断都通过了,进入实质的资源分析Availabl3)安全性算法(1)需要一些记录信息的数据结构,设置两个向量:工作向量work算法开始时work=Available;系统找安全序列的过程需要不断判断和修改当前资源数量,不能直接修改原始数据记录Aailable。标志向量Finish表示每个进程是否有足够的资源使之运行完成。开始时所以进程都设置初值Finish[i]:=false;找安全序列的过程相当于使所有Finish[i]:=true。12/3/202233山东农业大学计算机系3)安全性算法(1)需要一些记录信息的数据结构,设置两个向量(2)找安全序列的过程 从Finish[i]=false的进程集合中找一个进程 IFNeed[i,j]<=work[j] THEN执行步骤a; ELSE执行步骤b; a)假设Pi获得资源顺利执行完,释放出分配给它的资源,修改相应的值:work【j】=work【i】+Allocation【i,j】;Finish【i】=true;gotostep(2);//返回去继续找下一个进程。 b)当算法不再在(2)、a)步间循环找进程,到达本步时,若所有Finish[i]=true都满足,则表示所有进程都按某个顺序执行完了,系统处于安全状态;否则,系统当前所处的资源分配状态是不安全状态。12/3/202234山东农业大学计算机系(2)找安全序列的过程12/3/202234山东农业大学计算第3章处理机调度与死锁处理机调度相关基本概念常用调度算法实时调度产生死锁的原因和必要条件预防死锁的方法死锁的检测与解除12/3/202235山东农业大学计算机系第3章处理机调度与死锁处理机调度相关基本概念12/3/20六、死锁的检测与解除当系统为进程分配资源时,若未采取任何限制性措施,则系统必须提供检测和解除死锁的手段,为此系统必须:保存有关资源的请求和分配信息;提供一种算法,以利用这些信息来检测系统是否已进入死锁状态。12/3/202236山东农业大学计算机系六、死锁的检测与解除当系统为进程分配资源时,若未采取任何限制1、资源分配图系统死锁可利用资源分配图来描述。圆圈表示进程方框表示一类资源,其中的一个点代表一个该类资源请求边由进程指向方框中的资源分配边则由方框中的一个点即资源。r1r2P2P112/3/202237山东农业大学计算机系1、资源分配图系统死锁可利用资源分配图来描述。P2P112/2、死锁定理利用资源分配图简化法来检测死锁。简化方法如下: 1.在资源分配图中找出一个既不阻塞又非独立的进程结点Pi,在顺利的情况下运行完毕,释放其占有的全部资源。 2.由于释放了资源,这样能使其它被阻塞的进程获得资源继续运行。消去了Pi的边。 3.经过一系列简化后,若能消去图中所有边,使结点都孤立,称该图是可完全简化的。S状态为死锁状态的充分条件是当且仅当S状态的资源分配图是不可完全简化的。<死锁定理>12/3/202238山东农业大学计算机系2、死锁定理利用资源分配图简化法来检测死锁。12/3/202例:根据死锁定理判断如下所示的资源分配图是否存在死锁。○○○○P1P2P3R1R2R3P1P3P2○○R1R2图1图212/3/202239山东农业大学计算机系例:根据死锁定理判断如下所示的资源分配图是否存在死锁。○○○3、死锁的解除当发现进程死锁时,便应立即把它们从死锁状态中解脱出来。常采用的方法是:剥夺资源。从其他进程剥夺足够数量的资源给死锁进程以解除死锁状态。撤销进程。最简单的是让全部进程都死掉;温和一点的是按照某种顺序逐个撤销进程,直至有足够的资源可用,使死锁状态消除为止。12/3/202240山东农业大学计算机系3、死锁的解除当发现进程死锁时,便应立即把它们从死锁状态中本章基础要点若要使当前运行进程总是优先级最高的进程,则应选择:可抢占优先级调度算法。在分时系统中,进程调度经常采用:时间片轮转调度算法。可引起进程调度的原因:进程运行结束进入阻塞状态时间片用完有更高优先级的进程进入就绪队列12/3/202241山东农业大学计算机系本章基础要点若要使当前运行进程总是优先级最高的进程,则应选择本章基础要点进程调度采用时间片轮转法时,时间片过大,就会使轮转法转化为:先来先服务调度算法。进程的调度方式有两种:可抢占和非抢占方式死锁产生的四个必要条件是:互斥、占有且等待、不剥夺和环路等待。在有m个进程的系统中出现死锁时,死锁进程的个数k满足条件:2≤k≤m12/3/202242山东农业大学计算机系本章基础要点进程调度采用时间片轮转法时,时间片过大,就会使轮本章基础要点不让死锁发生的策略可分为静态和动态两种,死锁避免属于:动态策略。在进程资源图中,资源Rj分配给进程Pi应表示为:(Rj,Pi)。预先静态分配法可以破坏:10:3*3+1资源的按序分配策略可以破坏:环路等待条件。某系统中有3个并发进程,都需要同类资源4个,该系统绝对不会发生死锁的最少资源个数是:占有且等待条件。9:?12/3/202243山东农业大学计算机系本章基础要点不让死锁发生的策略可分为静态和动态两种,死锁避免设系统中仅有一类独占资源,进程一次只能申请一个资源,系统中有多个进程竞争该类资源。试判断下述哪些情况会发生死锁?为什么?平均分到每个进程maxneed-1个后,能否有执行序列资源数为4,进程数为3,每个进程最多需要2个资源;资源数为6,进程数为2,每个进程最多需要4个资源;资源数为8,进程数为3,每个进程最多需要3个资源;资源数为20,进程数为8,每个进程最多需要2个资源;12/3/202244山东农业大学计算机系设系统中仅有一类独占资源,进程一次只能申请一个资源,系统中有勿眼高手低练习中检查知识细节的掌握12/3/202245山东农业大学计算机系勿眼高手低12/3/202245山东农业大学计算机系第3章处理机调度与死锁处理机调度相关基本概念常用调度算法实时调度产生死锁的原因和必要条件预防死锁的方法死锁的检测与解除12/3/202246山东农业大学计算机系第3章处理机调度与死锁处理机调度相关基本概念12/3/20关于死锁多道程序系统借助并发执行改善资源利用率,提高系统吞吐量,但可能发生一种危险——死锁。死锁(Deadlock):指多个进程在运行过程中,因争夺资源而造成的一种僵局。当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。12/3/202247山东农业大学计算机系关于死锁多道程序系统借助并发执行改善资源利用率,提高系统吞吐找原因分析形成条件根据分析,找出处理死锁的方法四、产生死锁的原因和必要条件12/3/202248山东农业大学计算机系找原因分析形成条件根据分析,找出处理死锁的方法四、产生死锁的例:使用信号量造成死锁的典型 P1 P2wait(D) wait(E)wait(E) wait(D)signal(D) signal(E)signal(E) signal(D) 死锁发生:双方都拥有部分资源,同时在请求对方已占有的资源。请求推进的次序与对非剥夺性资源的争用都是造成死锁的原因。12/3/202249山东农业大学计算机系例:使用信号量造成死锁的典型12/3/20224山东农业大学产生死锁的原因可归结为如下两点:竞争资源。系统中供多个进程共享的资源如打印机、公用队列等的数目不满足需要时,会引起资源竞争而产生死锁。进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,同样会导致死锁。12/3/202250山东农业大学计算机系产生死锁的原因可归结为如下两点:12/3/20225山东农业1、竞争资源引起进程死锁可把系统中的资源分为两类:可剥夺和非剥夺性资源可剥夺性资源:分配给进程后可以被高优先级的进程剥夺。如CPU和主存。不可剥夺性资源:分配给进程后只能在进程用完后释放。如磁带机、打印机等。永久性资源和临时性资源永久性:打印机。可顺序重复使用临时性:进程产生被其他进程短暂使用的资源,如数据资源:“生产者/消费者”算法中的信号量。。它可能引起死锁。12/3/202251山东农业大学计算机系1、竞争资源引起进程死锁可把系统中的资源分为两类:12/3/2、进程推进顺序不当引起死锁进程在运行中具有异步性特征,多个进程按向前推进的顺序有两种情况:推进顺序合法推进顺序非法12/3/202252山东农业大学计算机系2、进程推进顺序不当引起死锁进程在运行中具有异步性特征,多个3、产生死锁的必要条件形成死锁的四个必要条件(四个条件都具备就会死锁,缺一就不会死锁)12/3/202253山东农业大学计算机系3、产生死锁的必要条件形成死锁的四个必要条件(四个条件都具互斥条件:进程对所分配到的资源进行排他性使用请求和保持条件:进程已经保持了至少一个资源,又提出新的资源请求,而新请求资源被其他进程占有只能造成自身进程阻塞,但对自己已获得的其他资源保持不放,必然影响其他进程。不剥夺条件:进程已获得的资源未使用完之前不能被剥夺,只能在使用完时由自己释放。环路等待条件破坏这4个条件即是处理死锁的方法12/3/202254山东农业大学计算机系互斥条件:进程对所分配到的资源进行排他性使用破坏这4个条件1如哲学家就餐问题的一种写法,wait(mutex)wait(left)wait(right)signal(mutex)signal(left)signal(left)会死锁么?12/3/202255山东农业大学计算机系如哲学家就餐问题的一种写法,会死锁么?12/3/202214、处理死锁的基本方法事先预防:预防死锁设置限制条件,破坏四个必要条件的一个或几个,预防发生死锁。较易实现。限制条件的严格也会导致系统资源利用率和系统吞吐量降低。避免死锁不须事先限制,破坏四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。这种事先加以较弱限制的方法,实现上有一定难度,但可获较高的资源利用率及系统吞吐量,目前在较完善的系统中,常用此方法来避免发生死锁。12/3/202256山东农业大学计算机系4、处理死锁的基本方法12/3/202211山东农业大学计算事后处理:检测死锁。允许系统运行过程中发生死锁,但通过系统检测机构可及时的检测出,能精确确定与死锁有关的进程和资源;然后采取适当的措施,从系统中将已发生的死锁清除掉。解除死锁。与死锁检测配套的一种措施。常用的实施方法:撤销或挂起一些进程,以便回收一些资源并将他们分配给已阻塞进程,使之转为就绪以继续运行。死锁的检测与解除措施,有可能使系统获得较好的资源利用率和吞吐量(死锁几率不一定很高),但在实现上难度也最大。12/3/202257山东农业大学计算机系事后处理:12/3/202212山东农业大学计算机系第3章处理机调度与死锁处理机调度相关基本概念常用调度算法实时调度产生死锁的原因和必要条件预防死锁的方法死锁的检测与解除12/3/202258山东农业大学计算机系第3章处理机调度与死锁处理机调度相关基本概念12/3/20五、预防死锁的方法预防死锁资源的排他性无法更改,故在其他3个条件上入手摒弃“请求和保持”条件:所有进程开始运行前,必须一次性的申请其在整个运行过程所需的全部资源(AND)。算法简单、易于实现且很安全。但缺点是资源浪费严重、或进程延迟运行。摒弃“不剥夺”条件:允许进程先运行,但当提出的新要求不被满足时必须释放它已保持的所有资源,待以后需要时再重新申请。实现比较复杂且付出很大代价。可能会造成前功尽弃,反复申请和释放等情况。12/3/202259山东农业大学计算机系五、预防死锁的方法预防死锁12/3/202214山东农业大学摒弃“环路等待”条件有序设置资源:将所有资源按类型进行线性排队,赋予不同序号。所有进程对资源的请求必须严格按照资源序号递增的次序提出,这样在所形成的资源分配图中,不可能会出现环路。与前两种策略比较,资源利用率和系统吞吐量都有较明显的改善。但也存在严重问题:资源编号限制新设备的增加;应用中的使用设备顺序与规定的顺序并不协调;限制了用户编程自由。12/3/202260山东农业大学计算机系摒弃“环路等待”条件12/3/202215山东农业大学计算机2.避免死锁上述方法限制条件都太强;造成一定的应用不便。采用避免死锁的方法则是只施加较弱限制条件,从而获得令人满意的系统性能。名词:安全状态:系统能按某种进程顺序为每个进程分配所需资源,直至满足每个进程对资源的最大需求,并能顺利完成。不安全状态:系统无法找到一种使多个进程能够顺利分配资源执行完的安全序列。12/3/202261山东农业大学计算机系2.避免死锁上述方法限制条件都太强;造成一定的应用不便。采用*安全状态、安全序列举例假定三个进程A、B和C,共有12台磁带机。假设t0时刻,磁带机资源分配情况如下表所示,此时系统是否处于安全状态?进程最大需求已分配还需可用A10553B422C927是安全的,因为存在一个安全序列B,A,C只要系统按此进程序列分配资源,就能使每个进程都顺利完成。12/3/202262山东农业大学计算机系*安全状态、安全序列举例假定三个进程A、B和C,共有12台*由安全状态向不安全状态的转换每次资源分配时,都应分析判断资源分配图,看该次操作后是否有安全序列。若没有,说明该操作会使系统进入不安全状态。只要使系统始终处于安全状态,便可避免发生死锁。不是所有的不安全状态都是死锁状态。12/3/202263山东农业大学计算机系*由安全状态向不安全状态的转换每次资源分配时,都应分析判断3.银行家算法避免死锁 最有代表性的避免死锁的算法,是Dijkstra的银行家算法。由于该算法能用于银行系统现金贷款的发放而得名。 【思路描述】:随时对系统中的所有资源信息进行统计,包括每种资源的数量、已分配给各进程的数量;每当进程提出某种资源请求时判断该请求分配后是否安全,如果安全才分配。对每个资源请求的处理都要保证系统始终从一个安全状态到另一个安全状态。12/3/202264山东农业大学计算机系3.银行家算法避免死锁12/3/202219山东农业大学计银行家算法应用之例假定系统中有五个进程{P0,P1,P2,P3,P4}和三类资源{A,B,C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图所示。431002433P4011211222P3600302902P2122200322P1332743010753P0AvailableABCNeedABCAllocationABCMaxABC资源情况进程12/3/202265山东农业大学计算机系银行家算法应用之例假定系统中有五个进程{P0,P1,P计算举例:当前T0时刻是否安全?利用安全性算法在下表找一个安全序列{P1,P3,P4,P2,P0},故是安全的。(最后检查应是资源释放完后又回到10、5、7)431002433P4011211222P3600302902P2122200322P1332743010753P0AvailableABCNeedABCAllocationABCMaxABC资源情况进程5327437451047105712/3/202266山东农业大学计算机系计算举例:当前T0时刻是否安全?43找安全序列的计算过程表True10570107431047P0True1047302600745P2True745002431743P4True743211011532P3True532200122332P1FinishWork+AllocationABCAllocationABCNeedABCWorkABC资源情况进程12/3/202267山东农业大学计算机系找安全序列的计算过程表True105(1)T0时刻的初始状态是安全的;(2)下面出现P1请求资源的操作,具体请求向量为Request1(1,0,2),利用银行家算法进行检查该操作是否是安全可行的:1)两个基本判断 Request1(1,0,2)<=Need1(1,2,2) Request1(1,0,2)<=Available1(3,3,2)2)先假设为P1分配资源,并修改Available,Allocation1和Need1向量。12/3/202268山东农业大学计算机系(1)T0时刻的初始状态是安全的;12/3/202223山东3)Request1(1,0,2)后新的资源状态表下再判断新资源状态是否是安全的。找到一个安全序列{P1,P3,P4,P0,P2},因此系统是安全的,该请求是安全的,可将假设真正实施,将P1所申请的资源分配给它。True1057302600755P2True755010743745P0True745002431743P4True743211011532P3True532302020230P1FinishWork+AllocationABCAllocationABCNeedABCWorkABC资源情况进程200+102122—102332—10212/3/202269山东农业大学计算机系3)Request1(1,0,2)后新的资源状态表下再判断问:P4发出请求向量Request4(3,3,0),可否分配资源?1)Request4(3,3,0)<=Need4(4,3,1);2)Request4(3,3,0)<=Available(2,3,0),P4等待问:P0发出请求向量Request0(0,2,0),可否分配资源?1)Request0(0,2,0)<=Need0(7,4,3);2)Request0(0,2,0)<=Available(2,3,0);3)系统暂时先假定可为P0分配资源,并修改有关数据,见下表:431002P4011211P3600302P2020302P1210723030P0AvailableABCNeedABCAllocationABC资源情况进程Available(2,1,0)不能满足任何finish=false进程的需求,如果分配会使系统进入不安全状态,所以不能分配资源。如果把P0发出的请求向量改为Request0(0,1,0),系统是否能将资源分配给它,大家考虑。73322002012/3/202270山东农业大学计算机系问:P4发出请求向量Request4(3,3,0),可否分配算法实现说明算法实现:首先:需要的一些数据结构再次:算法过程核心:安全性判断算法12/3/202271山东农业大学计算机系算法实现说明算法实现:12/3/202226山东农业大学计算1)银行家算法中的数据结构(1)各类可利用资源的数量向量Available:(i1,i2,…,im),含m个元素,每个元素代表一类可利用的资源数目。动态变化的,初始值是系统配置的该类资源的全部数目,值随资源的分配与回收而动态的改变。实现:一维数组。Available【j】=K,表示系统中Rj类资源现有可用数量为K个。m类资源,n个并发进程对其产生需求12/3/202272山东农业大学计算机系1)银行家算法中的数据结构m类资源,n个并发进程对其产生需(2)每个进程对每类资源的需求最大需求、已获得的、还需要的最大需求矩阵Maxn*m,系统中n个进程中每个进程分别对m类资源的最大需求。取值:根据进程需求赋初始值。实现:二维数组。Max【i,j】=K,表示进程i需要Rj类资源的最大数目为K。12/3/202273山东农业大学计算机系(2)每个进程对每类资源的需求12/3/202228山东农业已分配矩阵Allocation。n*m,定义系统中每一进程已获得的每类资源数量。Allocation【i,j】=K,表示进程i当前已分得Rj类资源数为K。还需求的矩阵Need。n*m,表示每一进程尚需的各类资源数。Need【i,j】=K,表示进程i还需要Rj类资源K个,方能完成任务。上述三个矩阵存在关系: Max【i,j】=Allocation【i,j】+Need【i,j】每次,给进程i分配资源的动作,影响上述数据结构的取值: Available【】,Allocation【i,】,Need【i,】12/3/202274山东农业大学计算机系已分配矩阵Allocation。12/3/202229山东农2)避免死锁的算法过程(银行家算法)当前资源分配状态如何?构建资源分配表判断向下运行过程中,各进程对资源的需求是否安全。
在当前资源分配状态基础上,分析进程的实际请求Requesti【j】=k。表示进程Pi需要K个Rj类型的资源。进程MAXABCAllocationABCNeedABCAvailableABCP0753232521432P1542221321P2211100111资源情况Request0(2,2,1)12/3/202275山东农业大学计算机系2)避免死锁的算法过程(银行家算法)当前资源分配状态如何?构算法过程:
就是对各进程的Request向量及资源数量进行一系列判断及值操作。进程Pi发出资源请求后,系统按下述步骤进行检查:首先是两个基本判断:(1)IFRequesti[j]<=Need[i,j] THEN转向步骤2; ELSE认为出错,所需资源数超过宣布的最大值(自我矛盾)(2)IFRequesti[j]<=Available[j] THEN转向步骤3; ELSE表示尚无足够资源,Pi需等待(现实不满足)12/3/202276山东农业大学计算机系算法过程:
就是对各进程的Request向量及资源数量进行一如果上面两步判断都通过了,进入实质的资源分析(3)系统试探着把资源分配给进程Pi,并修改相应数据结构的值(假设性操作):Available【j】 =Allocation【i,j】=Need【i,j】=(4)系统执行安全性算法,判断新的资源分配状态是否是安全的。 即:找一个安全序列,使这些进程按顺序执行完)如果能够找到,则将假设操作真正实施完成资源分配。Available【j】-Requesti【j】;Allocation【i,j】+Requesti【j】;Need【i,j】 -Requesti【j】;请求前的资源分配状态新的资源分配状态安全性算法12/3/202277山东农业大学计算机系如果上面两步判断都通过了,进入实质的资源分析Availabl3)安全性算法(1)需要一些记录信息的数据结构,设置两个向量:工作向量work算法开始时work=Available;系统找安全序列的过程需要不断判断和修改当前资源数量,不能直接修改原始数据记录Aailable。标志向量Finish表示每个进程是否有足够的资源使之运行完成。开始时所以进程都设置初值Finish[i]:=false;找安全序列的过程相当于使所有Finish[i]:=true。12/3/202278山东农业大学计算机系3)安全性算法(1)需要一些记录信息的数据结构,设置两个向量(2)找安全序列的过程 从Finish[i]=false的进程集合中找一个进程 IFNeed[i,j]<=work[j] THEN执行步骤a; ELSE执行步骤b; a)假设Pi获得资源顺利执行完,释放出分配给它的资源,修改相应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年专升本思政理论挑战试题及答案
- 注射用罗普司亭-药品临床应用解读
- 2024年思政理论的评估分析试题及答案
- 网络安全管理员-初级工题库含参考答案
- 马工学的决策分析工具试题及答案
- 汽车维修工高级工复习试卷复习试题有答案
- 汽车装调工练习卷附答案
- 2024-2025学年高中历史 第三单元 欧美资产阶级革命时代的杰出人物 第3课 一代雄狮拿破仑教学教学实录2 新人教版选修4
- 宠物殡葬行业的社会责任考核试题及答案
- 数学三-2018年全国硕士研究生入学考试《数学三》真题
- 实验室病原微生物危害 评估报告
- 实用通用英语答题卡word模板
- 二年级下册心理健康教案-第二十四课 帮爸爸妈妈分担 妈妈谢谢您|北师大版
- GB∕T 22117-2018 信用 基本术语
- 未筛分碎石施工方案
- 汽车尾气污染的产生及综合治理PPT课件
- 贝雷桥设计及施工方案(精选)
- 仿宋字练习字帖
- 纸浆技术指标大全
- 化工仪表英文缩写及实例
- 医学影像科诊疗技术人员授权申请表模板
评论
0/150
提交评论