单选题 操作系统分配资源时的一个重要考虑是避免死锁的发生.若系统中有同类资源16个,由四个进程P1、P2、P3和P4共享该资源。已知P1、P2、P3、P4所需的资源总数分别为8、5、9、6。各进程请求资源的次序如表7-1所示,若系统采用银行家算法为它们分配资源,那么 (23) 次申请分配会使系统进入不安全状态。
表7-1 进程申请资源的情况
序号
进程
申请量
1
P1
6
2
P2
4
3
P3
5
4
P4
1
5
P1
1
6
P2
1


【正确答案】 C
【答案解析】[分析] 如何保证系统处于安全状态可以避免死锁的发生,银行家算法是一个古典的测试算法。银行家算法的基本思想是:当某个进程提出申请时,必须判断将资源分配给该进程后,会不会引起死锁。若不会,则进行分配;否则就不分配。这样做能保证在任何时刻至少有一个进程可以得到所需的全部资源而执行结束,并将归还资源加入到系统的剩余资源中,这些资源又至少可以满足一个进程的最大需求,于是保证所有进程都能在有限的时间内得到需求的全部资源。
按照银行家算法的思想,当进程请求资源时,系统将按如下原则分配资源。
(1)当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程。
(2)进程可以分期请求资源,但请求的总数不能超过最大需求量。
(3)当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
(4)当系统现有的资源能满足进程尚需资源数时,必须测试系统现存的资源能否满足该进程尚需的最大资源数,若能满足则按当前的申请量分配资源,否则也要推迟分配。
本题按进程的请求顺序过程如表7-2所示。
表7-2 进程的请求顺序过程
序号
进程
申请量
最大需求量
如果申请成功,还
需要源数量
如果给予分配,系统
还剩资源数
1
P
6
8
2
10
2
4
5
1
6
3
5
9
4
1
4
1
6
如果分配,就会死锁
5
1
2
如果分配,就会死锁
6
1
1
0
0