资源简介
银行家算法是一个避免死锁的著名算法,它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。
代码片段和文件信息
#include
#include
#include
using namespace std;
#define MAX_PROCESS 100
#define MAX_RESOURCE 100
int Available[MAX_RESOURCE]; //可用资源数组
int Max[MAX_PROCESS][MAX_RESOURCE]; //最大需求矩阵
int Allocation[MAX_PROCESS][MAX_RESOURCE]; //分配矩阵
int Need[MAX_PROCESS][MAX_RESOURCE]; //需求矩阵
int Request[MAX_PROCESS][MAX_RESOURCE]; //进程需要资源数
int p[MAX_PROCESS]; //记录序列
int nm; //n个进程m个资源
void Init() //初始化算法
{
int ij;
printf(“请输入进程的数目:\n“);
scanf(“%d“&n);
printf(“请输入资源的种类:\n“);
scanf(“%d“&m);
printf(“请输入每个进程最多所需的各资源数按照%dx%d矩阵从左到右、从上到下输入:\n“nm);
for(i=0;i {
for(j=0;j {
scanf(“%d“&Max[i][j]);
}
}
printf(“请输入每个进程已分配的各资源数也按照%dx%d矩阵从左到右、从上到下输入:\n“nm);
for(i=0;i {
for(j=0;j {
scanf(“%d“&Allocation[i][j]);
Need[i][j]=Max[i][j]-Allocation[i][j];
if(Need[i][j]<0)
{
printf(“您输入的第%d个进程所拥有的第%d个资源数错误请重新输入:\n“i+1j+1);
j--;
continue;
}
}
}
printf(“请输入各个资源现有的数目:\n“);
for(i=0;i {
scanf(“%d“&Available[i]);
}
}
bool Safe() //安全性算法
{
int ijkl=0;
int Work[MAX_RESOURCE]; //工作数组他表示系统可提供给进程继续运行所需的各类资源数目
int Finish[MAX_PROCESS]; //系统是否有足够的资源分配给进程,使之运行完成
for(i=0;i {
Work[i]=Available[i];
}
//Finish每个进程是否安全
memset(Finish0sizeof(Finish));
for(i=0;i {
if(Finish[i]) continue;
for(j=0;j {
//第i个进程需要的第j个资源数 > 系统现有的第j个资源数
if(Need[i][j]>Work[j]) break;
}
if(j==m)//如果第i个进程所需的各个资源数都没有超过系统现有的对应资源数
{
Finish[i]=1;//给该进程的FINISH标记为true
for(k=0;k {
Work[k]+=Allocation[i][k];//将Work赋值为 第i个进程各个已分配资源数+系统现有的对应资源数(因为当改进程全部资源数都满足时线程
- 上一篇:C语言库函数源码大全
- 下一篇:C++ 停车场管理 数据结构 课程设计
相关资源
- 操作系统设备管理模拟 银行家算法
- 银行家算法c++源代码
- 银行家算法编程--没有错误的
- 银行家算法 c++实现代码+报告
- c/c++实现银行家算法模拟
- 银行家算法实现
- 计算机操作系统实验报告,C语言实现
- 银行家算法模拟实现C++版
- 银行家算法c语言
- 银行家算法 MFC实现
- 银行家算法-----一个n个并发进程共享
- 银行家算法源程序包含C语言+C++两种代
- 操作系统银行家算法源码
- 银行家算法C语言实现源文件
- 银行家算法c++工程项目文件
- 用C语言实现银行家算法
- 输出所有安全序列的银行家c++算法
- 操作系统 银行家算法 C++
- 银行家算法课程设计报告(c语言版)
- 银行家算法的实现(c++代码)
- 银行家算法实验报告.docx
- 银行家算法Banker-s_Algorithm
- c++ 银行家算法
- 操作系统-银行家算法
- 银行家算法c语言代码
- 银行家算法实验报告C++版
- 银行家算法C语言实现
- 操作系统课程设计银行家算法C语言版
- C语言实现银行家算法
- 死锁的避免――银行家算法
评论
共有 条评论