1第三章处理机调度与死锁OS第3章习题(3.5-3.7)一、单选题2.在为多道程序所提供的可共享的系统资源不足时,可能出现死锁。但是,不适当的()也可能产生死锁。A.进程优先权B.资源的线性分配C.进程推进顺序D.分配队列优先权3.产生死锁的四个必要条件是:互斥、()、循环等待和不剥夺。A.请求与阻塞B.请求与保持C.请求与释放D.释放与阻塞4.发生死锁的必要条件有四个,要防止死锁的发生,可以破坏这四个必要条件,但破坏()条件是不太实际的。A.互斥B.不可抢占C.部分分配D.循环等待6.资源的有序分配策略可以破坏()条件。A.互斥使用资源B.占有且等待资源C.非抢夺资源D.循环等待资源7.在()的情况下,系统出现死锁。A.计算机系统发生了重大故障B.有多个的进程同时存在C.若干进程因竞争资源而无休止地相互等待他方释放已占有的资源D.各进程同时申请的资源数大超过资源总数8.银行家算法是一种()算法。A.死锁解除B.死锁避免C.死锁预防D.死锁检测29.当进程数大于资源数时,进程竞争资源()会产生死锁。A.一定B.不一定11.在下列处理死锁的方法中,属于预防死锁的策略是(),属于死锁检测的策略是()。A.银行家算法B.资源有序分配法C.安全性算法D.资源分配图化简法14.在多进程的并发系统中,肯定不会因竞争()而产生死锁。A.打印机B.磁带机C.磁盘D.CPU15.某系统中有3个并发进程都需要4个同类资源,则该系统必然不会发生死锁的最少资源是()。A.9B.10C.11D.1216.某系统中共有11台磁带机,N个进程共享此磁带机设备,每个进程最多需要3台磁带机,则系统必然不会发生死锁的最大N值是()。A.4B.5C.6D.719.下列关于死锁的说法正确的有()。I.死锁状态一定是不安全状态II.产生死锁的根本原因是系统资源分配不足和进程推进顺序非法III.资源的有序分配策略可以破坏死锁的循环等待条件IV.采用资源剥夺法可以解除死锁,还可以采用撤销进程方法解除死锁A.I.IIIB.IIC.IVD.四个说法都对20.某时刻进程的资源使用情况如下表所示,此时的安全序列是()。A.P1,P2,P3,P4B.P1,P3,P2,P4C.P1,P4,P3,P2D.不存在31、下面关于安全状态和非安全状态说法正确的是()A、安全状态是没有死锁的状态,非安全状态是有死锁的状态D、安全状态是可能有死锁的状态,非安全状态也可能有死锁状态C、安全状态是可能没有死锁的状态,非安全状态有死锁的状态D、安全状态没有死锁的状态,非安全状态可能有死锁的状态4(多选).预防死锁的方法有()A.所有进程一次性的申请资源B.银行家算法C.利用死锁定理的算法D.将所有资源编号,按编号顺序申请资源E.当资源申请不到时,释放资源二、填空题1.死锁是指______P103____,避免死锁的实质是___P108__。2.银行家算法中,当一个进程提出的资源请求将导致系统从____状态进入____状态时,系统就拒绝它的资源请求。安全、不安全3.如果要求所有进程一次性申请它所需要的全部资源。若系统有足够的资源分配给进程,便一次把所有的资源分配给该进程。但在分配时只要有一种资源要求不能满足,则资源全不分配,进程等待。这种死锁预防方法破坏了死锁产生必要条件中的____条件。请求和保持4.对待死锁,一般应考虑死锁的预防、避免、检测和解除四个问题。典型的银行家算法是属于_,破坏环路等待条件是属于____,而剥夺资源是____的基本方法。死锁避免、死锁预防、死锁解除三、判断题1.当检测出发生死锁时,可以通过撤消一个进程解除死锁。(×)2.不安全状态就是死锁状态。(×)3.系统只要处于安全状态,便可以避免进入死锁状态。(√)44.若资源分配图中存在环,则一定产生了死锁。(×)5.计算机系统产生死锁的根本原因是系统中进程太多。(×)6.一旦出现死锁,所有进程都不能运行。(×)四、简答题1.什么是死锁?简述死锁产生的必要条件。答:死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程将永远不能再向前推进。产生死锁的原因可归结为两点:(1)争夺资源。(2)进程推进顺序非法。产生死锁的必要条件是:(1)互斥条件(2)请求和保持条件(3)不剥夺条件(4)环路等待条件2.一台计算机有8台磁带机,他们由N个进程竞争使用,每个进程可能需要3台磁带机。请问N为多少时,系统没有死锁危险,并说明原因。答:N=3、N=2、N=1时,系统没有死锁危险。原因:当N=4时,如果每个进程已经分配2台磁带机时,不能找到安全序列,系统有死锁危险。四、综合题1.在银行家算法中,若出现下述资源分配情况:(课本习题P11522)ProcessAllocationNeedAvailableP0003200121622P110001750P213542356P303320652P400140656试问:(1)该状态是否安全?(2)如果进程P2提出请求Request2(1,2,2,2)后,系统能否将资源分配给它?解:(1)利用安全性算法对此时刻的资源分配情况进行分析,可得此时刻的安全性分析情况:WorkNeedAllocationWork+AllocationFinishP01622001200321654trueP31654065203321986trueP419860656001419910trueP1199101750100029910trueP229910235613543121414true(2)P2提出请求Request2(1,2,2,2),按银行家算法进行检查:·Request2(1,2,2,2)≤Need(2,3,5,6)·Request2(1,2,2,2)≤Available(1,6,2,2)5·试分配并修改相应数据结构,资源分配情况如下:AllocationNeedAvailableP0003200120400P110001750P225761134P303320652P400140656·再利用安全性算法检查系统是否安全,可用系统资源Available(0,4,0,0)已不能满足任何进程的需要,不存在安全序列,故系统进入不安全状态,此时系统不能将资源分配给P2。2.设系统中有三种类型的资源(A,B,C)和五个进程(P1,P2,P3,P4,P5),A资源的数量17,B资源的数量为5,C资源的数量为20。在T0时刻系统状态如下表所示。系统采用银行家算法来避免死锁。请回答下列问题:(1)T0时刻是否为安全状态?若是,请给出安全序列。(2)在T0时刻,若进程P2请求资源(0,3,4),是否能实现资源分配?为什么?(3)在(2)的基础上,若进程P4请求资源(2,0,1),是否能实现资源分配?为什么?(4)在(3)的基础上,若进程P1请求资源(0,2,0),是否能实现资源分配?为什么?T0时刻系统状态解:由题目所给出的最大资源需求量和已分配资源数量,可以计算出T0时刻进程的资源需求量Need,Need=最大资源需求量-已分配资源数量:进程资源需求量ABCP1P2P3P4P5310214302174610(1)利用安全性算法对此刻的资源分配情况进行分析,可得此刻的安全性分析情况:WorkNeedAllocationWork+AllocationFinishP5233110314547trueP45472212047411trueP3741100640511416TrueP2114161344021548True资源情况进程最大资源需求量已分配资源量系统剩余资源数量ABCABCABCP1559212233P2536402P34011405P4425204P54243146P11541834721217520true从上述情况分析中可以看出,此时存在一个安全序列{P5,P4,P3,P3,P1},故该状态是安全的。(2)在To时刻若进程P2请求资源(0,3,4),因请求资源数(0,3,4)剩余资源数(2,3,3),所以不能分配。(3)在(2)的基础上,若进程P4请求资源(2,0,1),按银行家算法进行检查:P4请求资源(2,0,1)≤P4资源需求量(2,2,1)P4请求资源(2,0,1)≤剩余资源数(2,2,3)试分配并修改相应数据结构,资源分配情况如下:AllocationNeedAvailableP1P2P3P4P5212402405405314347134006020110032再利用安全性算法检查系统是否安全,可得此刻的安全性分析情况:WorkNeedAllocationWork+AllcoationFinishP4P5P3P203243774111141602011000613440531440540243774111141615418truetruetruetrueP11541834721217520true从上述情况分析中可以看出,此时存在一个安全序列{P4,P5,P3,P2,P1},故该状态是安全的,可以立即将P4所申请的资源分配给它。(4)不能将P1所申请的资源分配给它(分析过程略)3.某系统有R1,R2和R3三种资源,在T0时刻P1,P2,P3和P4这四个进程对资源的占用和需求情况如下表所示,此时系统的可用资源向量为(2,1,2),系统采用银行家算法来避免死锁。请回答下列问题:(1)计算系统中各种资源的总数和T0时刻各进程对各种资源的需求数。(2)如果此时P1和P2均发出资源请求向量Requst(1,0,1),为了保证系统的安全性,应该如何分配资源给这两个进程?说明你所采用策略的原因。T0时刻4个进程对资源的占用和需求情况最大资源需求量已分配资源数量R1R2R3R1R2R3P1322100P2613411P3314211P44220027解:(1)因为四个进程已分配到的资源总数为R1:7;R2:2;R3:4且T0时刻系统的可用资源向量为(2,1,2)所以系统中各种资源的总数为(7,2,4)+(2,1,2)=(9,3,6)T0时刻进程P1、P2、P3、P4对各种资源的需求量NEED为:322613314422=222202103420(2)对P1请求,按银行家算法进行检查:P1请求资源(1,0,1)P1资源需求量(2,2,2)P1请求资源(1,0,1)剩余资源数(2,1,2)试分配后,系统的可用资源量为(1,1,1),P1的资源需求量为(1,2,1)已不能满足任何进程的需要,不存在安全序列,故系统进入不安全状态,此时系统不能将资源分配给P1,P1等待。对P2请求,按银行家算法进行检查:P2请求资源(1,0,1)P2资源需求量(2,0,2)P2请求资源(1,0,1)剩余资源数(2,1,2)试分配后,系统的可用资源量为(1,1,1),各进程的资源需求量为222101103420利用安全性算法检查系统是否安全,可得此刻的安全性分析如下:WorkNeedAllocationWork+AllcoationFinishP2P1P3P4111623723934101222103420512100211002623723934936truetruetruetrue从上述分析可以看出,因为存在安全序列{P2,P1,P3,P4},故该状态是安全的,可以将P2所申请的资源分配给它。4.系统的资源分配图如下所示,请利用死锁定理给出相应的结论。(请给出图1和图2分析的过程)100411211002—8图1图2图3图4图5结论:(化简过程略)由死锁定理可知:②、④、⑤资源分配图不能化简为完全无边图,故系统在该状态时发生了死锁。①、③资源分配图可以化简为完全无边图,故系统在该状态时未发生死锁。