操作系统实验二(银行家算法)实验报告.doc
文本预览下载声明
实验二实验报告
实验源码:
#include stdio.h
#include iostream.h
#include string.h
#define False 0 // 定义False
#define True 1 // 定义True
int Max[100][100] = {0}; // 各进程所需各类资源的最大需求
int Avaliable[100] = {0}; // 系统可用资源
char name[100] = {0}; // 资源的名称
int Allocation[100][100] = {0}; // 系统已分配资源
int Need[100][100] = {0}; // 还需要资源
int Request[100] = {0}; // 请求资源向量
int temp[100] = {0}; // 存放安全序列
int Work[100] = {0}; // 存放系统可提供资源
int M = 100; // 作业的最大数为100
int N = 100; // 资源的最大数为100
// 显示资源矩阵
void showdata()
{
int i,j;
printf(\n此时刻的资源分配情况为:\n);
// 显示表头
printf( Max Allocation Need Avaliable\n);
printf(PCB );
// 显示作业名称
for(j = 0;j 4;j++){
for(i = 0;i N;i++)
printf(%c ,name[i]);
printf( );
}
printf(\n);
// 显示当前作业资源分配情况
for(i = 0;i M;i++){
printf( %d ,i);
for(j = 0;j N;j++)
printf(%d ,Max[i][j]);
printf( );
for(j = 0;j N;j++)
printf(%d ,Allocation[i][j]);
printf( );
for(j = 0;j N;j++)
printf(%d ,Need[i][j]);
if(i == 0){
printf( );
for (j = 0;j N;j++)
printf(%d ,Avaliable[j]);
}
printf(\n);
}
}
// 进行资源分配
int changdata(int i)
{
int j;
for (j = 0;j M;j++) {
Avaliable[j] = Avaliable[j] - Request[j];
Allocation[i][j] = Allocation[i][j] + Request[j];
Need[i][j] = Need[i][j] - Request[j];
}
return 1;
}
// 安全性算法
int safe()
{
int i,d,k = 0,m,h,s,apply,Finish[100] = {0};
int j;
int flag = 0;
for(i = 0;i N;i++)
Work[i] = Avaliable[i];
printf( 安全性检查 \n);
printf( Work Need Allocation Work+Allocation Finish\n);
printf(PCB );
// 显示作业名称
for(j = 0;j 4;j++){
for(i = 0;i N;i++)
printf(%c ,name[i]);
printf( );
}
printf(\n);
// 显示当前作业资源分配情况
for(i = 0;i M;i++){
apply = 0;
for(j = 0;j N;j++){
if (Finish[i] == False Need[i][j] =
显示全部