资源简介
操作系统实验 银行家算法+实验报告 完整代码c语言实现
代码片段和文件信息
#include
#include
#include
#define False 0
#define True 1
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 ij;
printf(“系统目前可用的资源[Avaliable]:\n“);
for(i=0;i printf(“%c “name[i]);
printf(“\n“);
for (j=0;j printf(“%d “Avaliable[j]);//输出分配资源
printf(“\n“);
printf(“ Max Allocation Need \n“);
printf(“进程名 “);
for(j=0;j<3;j++)
{
for(i=0;i printf(“%c “name[i]);
printf(“ “);
}
printf(“\n“);
for(i=0;i printf(“ %d “i);
for(j=0;j printf(“%d “Max[i][j]);
printf(“ “);
for(j=0;j printf(“%d “Allocation[i][j]);
printf(“ “);
for(j=0;j
printf(“%d “Need[i][j]);
printf(“\n“);}
}
int changdata(int i)//进行资源分配
{
int j;
for (j=0;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 ik=0mapplyFinish[100]={0};
int j;
int flag=0;
Work[0]=Avaliable[0];
Work[1]=Avaliable[1];
Work[2]=Avaliable[2];
for(i=0;i apply=0;
for(j=0;j if (Finish[i]==False&&Need[i][j]<=Work[j]){
apply++;
if(apply==N){
for(m=0;m Work[m]=Work[m]+Allocation[i][m];//变分配数
Finish[i]=True;
temp[k]=i;
i=-1;
k++;
flag++;
}
}
}
}
for(i=0;i if(Finish[i]==False){
printf(“系统不安全\n“);//不成功系统不安全
return -1;
}
}
printf(“系统是安全的!\n“);//如果安全,输出成功
printf(“分配的序列:“);
for(i=0;i printf(“%d“temp[i]);
if(i“);
}
printf(“\n“);
return 0;
}
void share()//利用银行家算法对申请资源对进行判定
{
char ch;
int i=0j=0;
ch=‘y‘;
printf(“请输入要求分配的资源进程号(0-%d):“M-1);
scanf(“%d“&i);//输入须申请的资源号
printf(“请输入进程 %d 申请的资源:\n“i);
for(j=0;j {
printf(“%c:“name[j]);
scanf(“%d“&Request[j]);//输入需要申请的资源
}
for (j=0;j if(Request[j]>Need[i][j])//判断申请是否大于需求,若大于则出错
{
printf(“进程 %d申请的资源大于它需要的资源 分配不合理,不予分配!\n“i);
ch=‘n‘;
break;
}
else {
if(Request[j]>Avaliable[j])//判断申请是否大于当前资源,若大于则出错
{
printf(“进程%d申请的资源大于系统现在可利用的资源\n“i);
printf(“ 分配出错,不予分配!\n“);
ch=‘n‘;
break;
}
}
}
if(ch==‘y‘) {
changdata(i);//根据进程需求量变换资源
showdata();//根据进程需求量显示变换后的资源
safe();//根据进程需求量进行银行家算法判断
}
}
int main()//主函数
{
int ijqchoicem
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4721 2011-05-27 20:35 bank\bank.txt
文件 4721 2011-05-27 20:37 bank\Cpp1.cpp
文件 3377 2011-05-27 20:31 bank\Cpp1.dsp
文件 531 2011-05-27 21:50 bank\Cpp1.dsw
文件 33792 2011-05-27 21:50 bank\Cpp1.ncb
文件 48640 2011-05-27 21:50 bank\Cpp1.opt
文件 242 2011-05-27 20:52 bank\Cpp1.plg
文件 172099 2011-05-27 20:37 bank\Debug\Cpp1.exe
文件 177932 2011-05-27 20:37 bank\Debug\Cpp1.ilk
文件 16436 2011-05-27 20:37 bank\Debug\Cpp1.obj
I.A.... 265964 2011-05-27 20:31 bank\Debug\Cpp1.pch
文件 345088 2011-05-27 20:37 bank\Debug\Cpp1.pdb
文件 41984 2011-05-27 21:18 bank\Debug\vc60.idb
文件 53248 2011-05-27 20:37 bank\Debug\vc60.pdb
I.A.... 1031989 2011-05-27 21:21 bank\IMAG0109.jpg
I.A.... 1108880 2011-05-27 21:22 bank\IMAG0110.jpg
I.A.... 1074147 2011-05-27 21:22 bank\IMAG0111.jpg
I.A.... 1020740 2011-05-27 21:22 bank\IMAG0112.jpg
文件 173568 2011-05-27 21:48 bank\银行家算法实验报告.doc
目录 0 2011-05-27 20:37 bank\Debug
目录 0 2011-05-27 21:50 bank
----------- --------- ---------- ----- ----
5578099 21
- 上一篇:VC++ 共享内存读写操作
- 下一篇:学生成绩管理系统~ado mfc vc6.0
相关资源
- 银行家算法 mfc 含源代码 界面 操作系
- 银行家算法 死锁避免 可视化 MFC
- 基于C++的银行家算法模拟实现
- 操作系统——银行家算法
- 银行家算法C++实现穷举所有安全序列
- C++死锁检测解除算法
- 操作系统C语言实现银行家算法,键盘
- 操作系统课程设计银行家算法C语言
- 银行家算法C实现
- 操作系统设备管理模拟 银行家算法
- 银行家算法c++源代码
- 银行家算法编程--没有错误的
- 银行家算法 c++实现代码+报告
- c/c++实现银行家算法模拟
- 银行家算法实现
- 计算机操作系统实验报告,C语言实现
- 银行家算法模拟实现C++版
- 银行家算法c语言
- 银行家算法 MFC实现
- 银行家算法-----一个n个并发进程共享
- 银行家算法源程序包含C语言+C++两种代
- 操作系统银行家算法源码
- 银行家算法C语言实现源文件
- 银行家算法c++工程项目文件
- 用C语言实现银行家算法
- 输出所有安全序列的银行家c++算法
- 操作系统 银行家算法 C++
- 银行家算法课程设计报告(c语言版)
- 银行家算法的实现(c++代码)
- 银行家算法实验报告.docx
评论
共有 条评论