淮海工学院计算机工程学院实验报告书课 程 名 : 《计算机操作系统》 题 目: 实验二 银行家算法 班 级: ^ ^ 姓 名: ^ ^ 评语:成绩: 指导老师: 评语:成绩: 指导老师: 实验二 银行家算法实验目的和要求应用银行家算法验证进程安全性检查及分配资源编制模拟银行家算法的程序,并以以下例子验证程序的正确性。实验环境1.PC 微机。2.Windows 操作系统。3.C/C++/VB 开发集成环境。实验学时 2 学时,必做实验实验内容和步骤1)根据算法流程图编制可执行程序2)用以下两个例子验证程序的正确性。3)根据上述两个例子,输出执行的结果。算法流程图银行家算法:安全性算法:【例 1】某系统有 A、B、C、D 这 4 类资源供 5 个进程共享,进程对资源的需求和分配情况如下表所示。现在系统中 A、B、C、D 类资源分别还剩 1、5、2、0 个,请按银行家算法回答下列问题: 进程已占资源最大需求数ABCDABCDP100120012P210001750P313542356P406320652P500140656 (1) 现在系统是否处于安全状态?(2) 假如现在进程 P2 提出需要(0,4,2,0)个资源的请求,系统能否满足它的请求?【例 2】用银行家算法考虑下列系统状态 :进程 分配矩阵 最大需求矩阵 资源总数矩阵 A 3 0 1 1 4 1 1 1 6 3 4 2 B 0 1 0 0 0 2 1 2 C 1 1 1 0 4 2 1 0 D 1 1 0 1 1 1 1 1 E 0 0 0 0 2 1 1 0问系统是否安全?若进程 B 请求(0,0,1,0),可否立即分配?此后进程 E 也请求(0,0,1,0),可否分配给它?通过运行程序发现,例 1 当中的系统处于不安全状态,进程 P2 提出的请求无法实现;例 2 当中的系统处于安全状态,进程 B 提出的请求能实现,此后进程 E 的请求也能实现。源代码#include#define N 20#define M 20using namespace std;int f(int a[N][M],int b[N][M],int m,int k){ int j; for(j=0;jb[k-1][j])return 0; return 1;}int g(int a[N][M],int b[],int m,int k){ int j; for(j=0;jb[j])return 0; return 1;}int h(int a[],int n){ for(int i=0;ib[k-1][j])return 0; return 1;}int q(int a[],int b[],int m){ int j; for(j=0;j