一、题目:银行家算法
二、设计目的:
计算机科学与技术专业学生学习完《计算机操作系统》课程后,进行的一次全
面的综合训练,其目的在于加深催操作系统基础理论和基本知识的理解,加强
学生的动手能力。
三、设计要求和内容:
(1) 要求:
从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:
1) 每个学生必须独立完成课程设计,不能相互抄袭;
2) 设计完成后,将所完成的工作交由老师检查;
(2) 内容:
编制银行家算法通用程序,并检测所给状态的系统安全性。
(3) 银行家算法中的数据结构:
可利用资源向量 Available。这是一个含有 m 个 元素的数组,其中的每一个元
素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源
的数目,其数值随该类资源的分配和回收而动态地改变。Available[j]=K,则
表示系统中现有 Rj 类资源 K 个。
最大需求矩阵 Max。这是一个 n*m 的矩阵,它定义了系统中 n 个进程中的每
一个进程对 m 类资源的最大需求。如果 Max[i,j]=K,则表示进程 i 需要 Rj 类
资源的最大数目为 K。
分配矩阵 Allocation。这也是一个 n*m 的矩阵,它定义了系统中每一类资源
当前已分配给没一进程的资源数。如果 Allocation[i,j]=K,则表示 进程 i 当
前已分得 Rj 类资源的数目为 K。
需求矩阵 Need。这也是一个 n*m 的矩阵,用以表示每一个进程尚需的各类资
源数。如果 Need[i,j]=K,则表示进程 i 还需要 Rj 类资源 K 个,方能完成其任
务。
上述三个矩阵存在如下关系:
Need[i,j]= Max[i,j]- Allocation[i,j]
(4) 银行家算法:
1)如果 Request[i] 是进程 Pi 的请求向量,如果 Request[i,j]=K,表示进程
Pi 需要 K 个 Rj 类型的资源。当 Pi 发出资源请求后,系统按下述步骤进行检查:
如果 Requesti[j]<= Need[i,j],便转向步骤 2;否则认为出错,因为它所需
要的资源数已超过它所宣布的最大值。
2)如果 Requesti[j]<=Available[j],便转向步骤 3,否则,表示尚无足够资
源,进程 Pi 须等待。
3)系统试探着把资源分配给进程 Pi,并修改下面数据结构中的数值:
Available[j]:=Available[j]-Requesti[j];
Allocation[i,j]:=Allocation[i,j]+Requesti[j];
Need[i,j]:=Need[i,j]-Requesti[j];
评论7
最新资源