《操作系统》课程设计报告(银行家算法)
一、 课程设计题目(题目 2)
银行家算法
二、课程设计目的
本课程设计的主要目的是用操作系统中所学的高级语言编写一个银行家算法的通用程
序,并用这个程序检测思考题中所给状态的安全性,以进一步了解银行家算法,进而
能灵活的用银行家算法来判断系统的安全性。
三、课程设计要求
下列状态是否安全?(三个进程共享 12 个同类资源)
进程 已分配资源数 最大需求数
1 1 4
2 4 4
3 5 8
(状态 a)
1 1 4
2 4 6
3 6 8
(状态 b)
考虑下列系统状态:
分配矩阵 最大需求矩阵 可用资源矩阵
0 0 1 2 0 0 1 2 1 5 2 0
1 0 0 0 1 7 5 0
1 3 5 4 2 3 5 6
0 6 3 2 0 6 5 2
0 0 1 4 0 6 5 6
问系统是否安全?若安全就给出所有的安全序列。若进程 2 请求(0 4 2 0),可否立
即分配?
四、系统分析报告
设 request
i
是进程 的请求向量,如果 Requeset[j]=K,表示进程 P
i
需要 K 个 R
j
类型的资
源。当 P
i
发出资源请求后,系统按下述步骤进行检查:
(1) 如果 Requeset
i
[j]<=Need[i,j],便转向步骤 2,否则认为出错,因为它所需要的资源数
已超过它所宣布的最大值。
(2) 如果 Requeset
i
[j]<=Available[j],便转向步骤(3);否则,表示尚不足够资源, P
i
须等待。
(3) 系统试探着把资源分配给进程 P
i
,并修改下面的数据结构中的数值:
Available[j]:= Available[j]- Request
i
[j];
Allocation[i,j]:= Allocation[i,j]+ Request
i
[j];
Need[i.j]:= Need[i.j]- Request
i
[j];
系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,
才正式将资源分配给进程 P
i
,以完成本次分配,否则,将本次的试探分配作废,