第四章+练习题及答案

  • 格式:pdf
  • 大小:232.63 KB
  • 文档页数:3

第四章 练习题及答案
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,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 检测和解除死锁
11. 答:产生死锁的原因:1 竞争资源。当系统中供多个进程所共享的资源,不足以同时满
足它们的需要时,引起它们对资源的竞争而产生死锁;2 进程推进的顺序不当 。进程
在运行过程中,请求和释放资源的顺序不当,导致进程的死锁。产生死锁的四个必要条
件:互斥条件;不可剥夺条件;部分分配条;环路等待条件。