银行家算法例子:
假设系统中有三类互斥的资源,R1,R2,R3,可用资源数分别是 9、8、5,在 TO 时刻系统
中有 P1、P2、P3、P4 和 P5 五个进程,这些进程对资源的最大需求量和已分配资源数量如
下所示,如果进程按______序列执行,那么系统状态是安全的。
小提示:互斥的意思是他们不能共享使用。
做法:(一个一个的判断它是不是安全序列,一般做不到一半就可以判断)
1 已经分配了这些资源出去了,求出现在系统剩余的资源是多少。在已分配资源数中把 R1
的序列加起来的数,然后再用资源总数 9 减去 7 就得到了现有的资源数量。
同上:R1= 9 — (1+2+2+1+1)=2;
R2= 8 — (2+1+1+2+1)=1;
R3= 5 — (1+1+3)=0.
分别求出了系统 R1 R2 R3 的现有资源
2 再求出还需资源数,用最大需求量减去已分配资源数就是还需的资源数,得到下表。
3, 然后我们就去拿还需资源数去和上边所求出来的现有资源数去比较,再做出判断
现在 R1=2;R2=1;R3=0;发现只有 P2 可以运行,别的 P1,P3 到 P5 的还需资源数
都不符合要求。
这样我们在回头去看那 4 个选项,找出以 P2(先运行的)开头的 B 答案和 C 答案,
把 A 和 D 排除掉。
4,下面就结合下面的表过程判断,根据 还需资源 和 现有资源 2 1 0 只能先运行 P2 然后
现在系统现有的资源是 2 1 0,那么已分配资源是 2 1 1 已经它运行完以后资源还会被释放
这样就得到了新的现有资源 4 2 1,然后再拿 4 2 1 去和上表的还需资源数 ,R1,R 2,R 3
去比较,选择下一个运行 P 几,这样发现只能运行 P4,然后运行完 P4,P4 所占的资源也
要被释放,这样系统里就有 5 4 1 个资源 然后再在还需资源里选择适合的运行的,发现
P5 可以运行,这样运行完 P5 系统还省下 6 5 4 个资源,这样继续下去直到运行完最后一个。
要注意的是运行过的 P 不可以再运行。
这道题的唯一正确答案是 B。注意要理解它的流程和思想,这样考试时才 OK;
操作系统分配资源时的一个主要考虑是避免死锁的发生。若系统中有同类资源
16 个,有 4 个进程 p1、p2、p3、p4 共享该资源。已知 p1、p2、p3、p4 所需的
资源总数分别为 8、5、9、6。各进程请求资源的次序如表 8-1 所示,若系统采
用银行家算法为他们分配资源,那么____次申请分配会使系统进入不安全状态。
表 8-1 进程申请资源的情况
序号
1
2
3
4
5
6
供选择的答案
进程
P1
P2
P3
P4
P1
P2
申请量
6
4
5
1
1
1
A.3、4
B.3、5
C.4、5
D.5、6
银行家算法的基本思想是:当某个进程提出申请时,必须判断将资源分配给该进
程后,回不回引起死锁。若不会,则进行分配;否则就不分配。这样做能保证在
任何时刻至少有一个进程可以得到所需的全部资源而执行借宿,并将归还资源加
入到系统的剩余资源中,这些资源又至少可以满足一个进程的最大需求。于是保
证了所有进程都能在有限的时间内得到需求的全部资源。
本体按进程的请求顺序过程如表 8-2 所示
序号
进程
申请量 最大需求量 如果申请成
功,还需要
如果给予分
配,系统还
1
2
3
4
5
6
P1
P2
P3
P4
P5
P6
6
4
5
1
1
1
8
5
9
6
2
1
资源数量
剩资源数
2
1
4
10
6
1
如果分配,就会死锁
如果分配,就会死锁
0
0