当前位置:
文档之家› 操作系统复习考试第4章 调度与死锁 复习题
操作系统复习考试第4章 调度与死锁 复习题
A. 银行家算法 C. 死锁检测法 答:B B. 资源有序分配法 D. 资源分配图化简法
11、某系统有3个并发进程,都需要同 类资源4个,试问该系统不会发生死锁的 最少资源数是多少? 答:最少要10个。 由于各进程最大需求量之和要小于“进 程数+资源数” 3+x>12 X>9 所以最少要10个资源。
18(续)
A ll oc at i on 0 01 2 1 42 0 1 35 4 0 63 2 0 01 4 M ax 0 01 2 1 75 0 2 35 6 0 65 2 0 65 6 N ee d 0 00 0 0 33 0 1 00 2 0 02 0 0 64 2 A va il ab l e 1 10 0
16、
在一个实际的计算机系统中,资源可以更新和增减,进 程可以创建和撤销。如果系统用banker算法处理死锁,那么, 在什么情况下,下列改变可以安全地进行而不会引起死锁发 生? (1)增加Available(增添新资源); (2)减少Available(资源永久性地从系统中删除): (3)增大Max(对一进程而言,它可能希望更多的资源); (4)减少Max(一进程决定不需要那么多资源); (5)增加进程数; (6)减少进程数。
解:在本题中,当两个进程都执行完第一步后,即进 程P1和P2都申请到一个R1资源以后,系统进入不安 全状态。随着两个进程的向前推进,无论哪个进程 执行完第2步,系统都将进入死锁状态。可能到达的 死锁点是:进程P1占有一个单位的R1类资源及一个 单位的R2类资源,P2占有一个单位的R1类资源,此 时系统已经没有空闲资源,而两个进程都在保持已 占有的资源不释放的情况下继续申请资源,从而造 成死锁。或者是进程P2占有一个单位的R1类资源及 一个单位的R2类资源,P1占有一个单位的R1类资源, 此时系统已经没有空闲资源,而两个进程都在保持 已占有的资源不释放的情况下继续申请资源,从而 造成死锁。 假定进程P1成功执行了第二步,则死锁点的资源 分配图如下所示:
如果这个系统中发生了死锁,那么一方面m个资源应该 全部分配出去,即
15(续)
alloc(1)+ alloc(2)+..+ alloc(n) = m
另一方面所有进程将陷入无限等待状态。上述两式得知
need(1)+need(2)+...+need(n)< n
上式表示死锁发生后,n个进程还需要的资源量之和小 于n,这意味着此刻至少存在一个进程, need(i)=0, 即它已经获得全部的资源。既然进程已经获得了它所 需要的全部资源,那么它就能执行完成并释放占有的 全部资源,这与前面的假设矛盾,所以系统不会出现 死锁。
7、处理死锁有哪几种基本方法?
答:用于处理死锁的方法主要有: 1.预防死锁:静态方法。在进程执行前采取的措施,
通过设置某些限制条件,去破坏产生死锁的四个必要条件 之一,防止发生死锁。
2.避免死锁:动态的方法:事先不采取任何限制措施
来破坏产生死锁的必要条件,而是在进程执行过程中采取 的措施,在进程申请资源时用某种方法去防止系统进入不 安全状态,从而避免发生死锁。 (如银行家算法)。
P1
R1
R2
P2
死锁点资源分配图
21、生产者-消费者问题中,如果对调生产者进程中的两个
P操作和两个V操作,则可能发生什么情况?
解:生产者-消费者的同步问题中,如果对调生产者进程中的两个P操作 和两个V操作,那么生产者和消费者的进程分别描述如下:
producer() consumer() { while(生产未完成) { while(还要继续消费) { { 生产一个产品; P(mutex); P(full); p(empty); p(mutex); 送一个产品到有界缓冲区; 从有界缓冲区中取产品; V(full); V(mutex); V(mutex); V(empty); } } } }
由于V操作是释放资源,所以对调V操作的次序无关紧要。而对 调P操作的次序可能导致死锁。 因为对调P操作的次序后,有可能出现这样一种特殊情况:在 某一时刻缓冲区中已经装满了产品,且缓冲区中无进程工作 (这时信号量full=n,empty=0,mutex=1),若系统此时调度 生产者进程运行,生产者生产了一个产品,它执行P(mutex)并 顺利进入临界区(进入临界区后,mutex=0),随后它执行 P(empty)时因没有空缓冲单元而受阻等待,等待消费者进程进 入缓冲区取走产品后释放出缓冲单元;而消费者进程执行P(full) 后再执行P(mutex)的时候,因缓冲区被生产者进程占据而无法 进入。 这样,就形成生产者在占有临界资源的情况下,等待消费者进 程取走产品,而消费者进程又无法进入临界区取走产品的僵局, 此时两进程陷入死锁。
22
22、假设就绪队列中有10个进程,系统将时 间片设为200ms,CPU进行进程切换要花费 10ms,试问系统开销所占的比率约为多少?
答:因就绪队列中有10个进程,它们将以时间片轮转 的方式使用CPU,时间片长度为200ms。当一个时 间片用完时,调度进程将当前运行进程设置为就绪 状态并放入就绪队列尾,再从就绪队列队首选择进 程投入运行,这一过程(进程切换)要花费时间 10ms。因此系统开销所占比率为: 10/(200+10)=4.8%
15、
假设系统中有m个同类资源,并被n个进程所 共享,进程每次只申请或释放一个资源,如果 (1)每个进程至少需要一个资源,且最多不超过 m个资源,即对i=1,2,…,n,有0<Need<=m。 (2)所有最大需求量之和小于m+n。 证明该系统不会发生死锁。
证: 依题意 max(1)+max(2)+...+max(n)< m+n (由条件(2)知)
第四章 调度与死锁
复习思考题
1、分时操作系统中,进程调度 通常采用什么算法?
答:分时操作系统通常采用时间片轮转 法的调度算法。
2、一个作业从提交开始直到完成,
往往要经历哪几级调度?
答:要经历下述三级调度:高级调度、 低级调度、中级调度。
3、说出四种常用的调度算法
答:常用的调度算法有: (1)先来先服务调度算法 (2)(进程)优先级调度算法 (3)时间片轮转调度算法 (4)多级反馈队列调度算法
17、 考虑下图所示的交通死锁情况。
(1)说明图中导致死锁的四个必要条件成立。 (2)提出一个避免死锁的规则。
交通死锁图
17(续)
解 (1)此例中导致死锁的四个条件成立: ①互斥。每条道路只能被一辆车占用。 ②占用并等待.每辆车都占用了一段道路,并等待其 前方的道路被释放。 ③非抢占。资源不可抢占。单行线,汽车不能抢路超 车。 ④循环等待。每辆车都等待着前方的汽车把路让出来, 且形成了一个环路。 (2)在每个十字路口设置红绿灯,当南北方向的路通车 时,东西方向的路上汽车等待.反之亦然。
18、
考虑下表所示的系统瞬时状态,利用banker算法回答下面的问 题: (1)数组Need的内容是什么? (2)该系统处于安全态吗?若是,给出一安全序列。 (3)若进程P1的请求(0420)到达,该请求是否能立即满足?
P0 P1 P2 P3 P4 0012 1000 1354 0632 0014 0012 1750 2356 0652 0656 1520 进程 Allocation Max Available
14、
假设三个进程共享相同类型的四个资源,每个进 程一次只能申请或释放一个资源,每个进程至多 需要两个资源,证明该系统不会发生死锁。 证: 假定该系统死锁,那么就说明其中的每一进程已 占有一资源并正等待另一资源。由于该系统只有 三个进程且有四个资源,因此,必有一进程能获 得两个资源,不必等待。于是该进程不再申请资 源,而且当它执行完后将归还它占有的资时候都不会引起死锁发生: (2)仅当每一进程的Max请求数不超过可用资源的总数时, 系统才保持在安全态: (3)仅当每一进程的Max请求数不超过可用资源的总数时, 系统才保持在安全态;
(4)任何时候都不会引起死锁发生;
(5)任何时候都不会引起死锁发生: (6)任何时候都不会引起死锁发生。
答:同时具备下列四个必要条件时,就会产生死锁
1、互斥( Mutual exclusion )条件:一个资源一次只能 被一个进程所使用,即是排它性使用。 2、不剥夺( No preemption )条件:进程已经获得的资 源,在未使用完以前,不能被别的进程剥夺,只能在使用 完以后,由自己释放。 3、请求和保持( Hold-and-wait )条件:进程已经保持 了至少一个资源,但又提出了新的资源要求,而该资源又 已被其它进程占有,此时请求进程阻塞,但又对已经获得 的其它资源保持不放。 4、环路等待( Circular wait )条件:存在一种进程资源 的循环等待链,链中的每一个进程已经获得资源的同时被 链中的下一个进程所请求。
10.53 9.53
解: (1) FCFS (8+12-0.4+13-1.0)/3=10.53 (2) SJF (8+9-1.0+13-0.4)/3=9.53
20、
假定某计算机系统有R1和R2两类可再使用资源(其中 R1有两个单位,R2有一个单位),它们被进程P1和 P2共享,且已知两个进程均以下列顺序使用两类资源: →申请R1 →申请R2 →申请R1 →释放R1 →释放R2 →释 放R1 试求出系统运行过程中可能到达的死锁点,并划出死 锁点的资源分配图。
12、你如何理解资源分配图简化法中 “找出—个既不阻塞又非独立的进程 结点Pi ”这句话。
答:
—个既不阻塞又非独立的进程结点Pi ,也就是从进程 集合中找到一个有边与它相连,且资源申请数量小于系统 中已有空闲资源数量的进程Pi 。如下图: P1
R1
R2
P2