第四章练习题及答案在某系统中,三个进程共享四台设备资源,这些资源一次只能一台地为进程服务和释放,1.每个进程最多需要二台设备资源,试问在系统中是否会产生死锁?2.仅涉及一个进程的死锁有可能存在吗?为什么?3.有人说,一个进程是由伪处理机执行的一个程序,这话对吗?为什么?4.一个0S有20个进程,竞争使用65个同类资源,申请方式是逐个进行的,一旦某个进程获得它所需要的全部资源,则立即归还所有资源。每个进程最多使用三个资源。若仅考虑这类资源,该系统有无可能产生死锁,为什么?5.设计一个不可能出现饥饿现象和死锁的过河算法。6.死锁和饥饿的主要差别是什么?7.银行家算法之例假定系统中有五个进程(PO,P1,P2,P3,P4)和三种类型的资源(A,B,C),每一种资源的数量分别为10、5、7,在TO时刻的资源分配情况资源MaxAllocationNeedAvaiablecCBC进程ABABABcAPO753010733324(230)P132222001.2(3 02)(0 20)P20 230260902P3221012 11P44330023411)TO时刻的安全性利用安全性算法对TO时刻的资源分配情况进行分析,如下表,从中得知TO时刻存在一个安全序列(P1,P3,P4,P2,PO),故系统是安全的。CWorkNeedWork+AllocationFinishAllocationPABCABCBcABCA25P13312220032true2P353012174311true47P47433100245true6P274500302107true7PO1047430101057true2)P1请求资源P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查:Request1(1,0,2) ≤Need1(1,2,2):②Request1(1,0,2)≤Available(3,3,2)③系统先假定可为P1分配资源,并修改Available,Allocation1和Need1向量,由此形成的资源变化情况如上图的圆括号所示
第四章 练习题及答案 1. 在某系统中,三个进程共享四台设备资源,这些资源一次只能一台地为进程服务和释放, 每个进程最多需要二台设备资源,试问在系统中是否会产生死锁? 2. 仅涉及一个进程的死锁有可能存在吗?为什么? 3. 有人说,一个进程是由伪处理机执行的一个程序,这话对吗?为什么? 4. 一个OS有20个进程,竞争使用65个同类资源,申请方式是逐个进行的,一旦某个进程获 得它所需要的全部资源,则立即归还所有资源。每个进程最多使用三个资源。若仅考虑 这类资源,该系统有无可能产生死锁,为什么? 5. 设计一个不可能出现饥饿现象和死锁的过河算法。 6. 死锁和饥饿的主要差别是什么? 7. 银行家算法之例 假定系统中有五个进程{P0,P1,P2,P3,P4}和三种类型的资源{A,B,C},每一种资源的数 量分别为 10、5、7,在 T0 时刻的资源分配情况 资源 进程 Max A B C Allocation A B C Need A B C Avaiable A B C P0 P1 P2 P3 P4 7 5 3 3 2 2 9 0 2 2 2 2 4 3 3 0 1 0 2 0 0 (3 0 2) 3 0 2 2 1 1 0 0 2 7 4 3 1 2 2 (0 2 0) 6 0 0 0 1 1 4 3 1 3 3 2 (2 3 0) 1) T0 时刻的安全性 利用安全性算法对 T0 时刻的资源分配情况进行分析,如下表,从中得知 T0 时刻存在一 个安全序列{P1,P3,P4,P2,P0},故系统是安全的。 C P Work A B C Need A B C Allocation A B C Work+Allocation A B C Finish P1 P3 P4 P2 P0 3 3 2 5 3 2 7 4 3 7 4 5 10 4 7 1 2 2 0 1 1 4 3 1 6 0 0 7 4 3 2 0 0 2 1 1 0 0 2 3 0 2 0 1 0 5 3 2 7 4 3 7 4 5 10 4 7 10 5 7 true true true true true 2) P1 请求资源 P1 发出请求向量 Request1(1,0,2),系统按银行家算法进行检查: ①Request1(1,0,2) ≤Need1(1,2,2); ②Request1(1,0,2) ≤Available(3,3,2) ③系统先假定可为 P1 分配资源,并修改 Available, Allocation1 和 Need1 向量,由此形 成的资源变化情况如上图的圆括号所示
④再利用安全性算法检查此时系统是否安全。可以找到一个安全序列(P1,P3,P4,PO,P2),故系统是安全的。可正式将P1所申请的资源分配给它。3)P4请求资源P4发出请求向量Request4(3,3,0),系统按银行家算法进行检查:Request4(3,3,0) ≤Need4(4,3,1);②Request4(3,3,0)≤Available(2,3,0)不成立,让P4等待。4)PO请求资源PO发出请求向量Requesto(O,2,O),系统按银行家算法进行检查:Request0(0,20)≤Need0(7.4,3)②Request0(0,2,0)≤Available(2,3,0)③系统先假定可为PO分配资源,并修改有关数据,由此形成的资源变化情况如下图所示。Max资源AllocationNeedAvaiable进程AABCABCBCABC730307320PO5213P13220202092P202306002220P321111P4433002431再利用安全性算法检查此时系统是否安全。此时资源Available(2,1,0)已不能满足任何进程的需要,故系统进入不安全状态,取消这次分配。(思考题:若把PO发出请求向量改为Requesto(O,1,O),又会如何?)8.什么是死锁?9.死锁中是否所有的资源都分配完毕?10.目前解决死锁问题有哪几种方法?11.产生死锁的原因和必要条件是什么?
④再利用安全性算法检查此时系统是否安全。可以找到一个安全序列{P1,P3,P4,P0,P2}, 故系统是安全的。可正式将 P1 所申请的资源分配给它。 3) p4 请求资源 P4 发出请求向量 Request4(3,3,0),系统按银行家算法进行检查: ①Request4(3,3,0) ≤Need4(4,3,1); ②Request4(3,3,0) ≤Available(2,3,0)不成立,让 P4 等待。 4) P0 请求资源 P0 发出请求向量 Request0(0,2,0),系统按银行家算法进行检查: ①Request0(0,2,0) ≤Need0(7,4,3); ②Request0(0,2,0) ≤Available(2,3,0) ③系统先假定可为 P0 分配资源,并修改有关数据,由此形成的资源变化情况如下图所 示。 资源 进程 Max A B C Allocation A B C Need A B C Avaiable A B C P0 P1 P2 P3 P4 7 5 3 3 2 2 9 0 2 2 2 2 4 3 3 0 3 0 3 0 2 3 0 2 2 1 1 0 0 2 7 2 3 0 2 0 6 0 0 0 1 1 4 3 1 2 1 0 ④再利用安全性算法检查此时系统是否安全。 此时资源 Available(2,1,0)已不能满足任何进程的需要,故系统进入不安全状态,取 消这次分配。 (思考题:若把 P0 发出请求向量改为 Request0(0,1,0),又会如何?) 8. 什么是死锁? 9. 死锁中是否所有的资源都分配完毕? 10. 目前解决死锁问题有哪几种方法? 11. 产生死锁的原因和必要条件是什么?
习题解答:1.答:不会。若所有的资源都被占用,而占用者又都不满足必须的全部资源,此时就有一个或儿个进程无限期地等待更多的资源,系统就会出现死锁。本题中若4台设备资源都被占用,则其中一定有一个进程获得2台设备资源(满足其最大的需求量),这个进程必然会在有限的时间内完成其工作,并释放其所占用的2台资源,这样也就能满足其它二进程对设备资源的要求,继续完成它们各自的工作。2.答:不可能。这可直接从死锁的必要条件之一“请求和保持(部分分配)”可得。3.答:对。因为伪处理机的概念只有在执行时才存在,它表示多个进程在单处理机上并发执行的一个调度单位。因此尽管进程是动态概念,是程序的执行过程,但是在多个进程并发执行时,仍然只有一个进程占据处理机,而其他并发进程则处于就绪或等待状态,这些进程就相当于由伪处理机执行的程序。4.答:不可能。因为死锁产生的原因有两点:系统资源不足或推进顺序不当,在本题中,进程所需的最大资源数为60,而系统共有该类资源65个,其资源数已足够系统内各进程使用。5.答:利用红绿灯和一个计数器。当有人开始过河时,计数器增值,当过河后该计数器减值,(但任何一个方向都有时间限制,如10分钟),仅当计数器值为0时,才开绿灯既允许另一方向的人过河。6.答:简言之,死锁是某进程等待一个不会发生的事件的一种现象;而饥饿现象是某进程正等待这样一个事件,它发生了但总是受到其它进程的影响,以至轮不到(或很难轮到)该进程。7.8.答:死锁是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。9.答:死锁的系统中并不是所有的资源都分配完毕。10.答:1驼鸟算法:2预防死锁;3避免死锁:4检测和解除死锁答:产生死锁的原因:1竞争资源。当系统中供多个进程所共享的资源,不足以同时满11.足它们的需要时,引起它们对资源的竞争而产生死锁;2进程推进的顺序不当。进程在运行过程中,请求和释放资源的顺序不当,导致进程的死锁。产生死锁的四个必要条件:互斥条件:不可剥夺条件:部分分配条;环路等待条件
习题解答: 1. 答:不会。若所有的资源都被占用,而占用者又都不满足必须的全部资源,此时就有一 个或几个进程无限期地等待更多的资源,系统就会出现死锁。本题中若4 台设备资源都 被占用,则其中一定有一个进程获得2台设备资源(满足其最大的需求量),这个进程必 然会在有限的时间内完成其工作,并释放其所占用的2台资源, 这样也就能满足其它二 进程对设备资源的要求,继续完成它们各自的工作。 2. 答:不可能。这可直接从死锁的必要条件之一“请求和保持(部分分配)”可得。 3. 答:对。因为伪处理机的概念只有在执行时才存在,它表示多个进程在单处理机上并发 执行的一个调度单位。因此尽管进程是动态概念,是程序的执行过程,但是在多个进程 并发执行时,仍然只有一个进程占据处理机,而其他并发进程则处于就绪或等待状态, 这些进程就相当于由伪处理机执行的程序。 4. 答:不可能。因为死锁产生的原因有两点:系统资源不足或推进顺序不当,在本题中, 进程所需的最大资源数为60,而系统共有该类资源65个,其资源数已足够系统内各进程 使用。 5. 答:利用红绿灯和一个计数器。当有人开始过河时,计数器增值,当过河后该计数器减 值,(但任何一个方向都有时间限制,如10分钟),仅当计数器值为0时,才开绿灯既 允许另一方向的人过河。 6. 答:简言之,死锁是某进程等待一个不会发生的事件的一种现象;而饥饿现象是某进程 正等待这样一个事件,它发生了但总是受到其它进程的影响,以至轮不到(或很难轮到) 该进程。 7. 8. 答:死锁是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而 造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。 9. 答:死锁的系统中并不是所有的资源都分配完毕。 10. 答:1 鸵鸟算法;2 预防死锁;3 避免死锁;4 检测和解除死锁 11. 答:产生死锁的原因:1 竞争资源。当系统中供多个进程所共享的资源,不足以同时满 足它们的需要时,引起它们对资源的竞争而产生死锁;2 进程推进的顺序不当 。进程 在运行过程中,请求和释放资源的顺序不当,导致进程的死锁。产生死锁的四个必要条 件:互斥条件;不可剥夺条件;部分分配条;环路等待条件