代码实现银行家算法
代码呢,因为我现在一直在写C++代码,而我又觉得这个银行家算法的过程性比较强,所以呢就造就了这个面向过程的程序,C++的底子的程序,因为课设需要,顺便练练手,大约用了两个小时完成这一程序,所以,代码比较粗糙,不过呢,用起来还不错了!
比较粗略的代码逻辑图:
代码实现:
#include<iostream>
#include<cstdio>
#include<windows.h>
#include<vector>
using namespace std;
//采用矩阵表示
//方便起见,提前初始化好
//代表有几个进程
const int I = 5;
//代表有几类资源
const int R = 3;
//A,B,C三类资源的总数
int mem[R] = {
10,5,7};
//一共5个进程,对各类资源最大需求量
int Max[I][R] = {
{
7,5,3},{
3,2,2},{
9,0,2},{
2,2,2},{
4,3,3}};
//每个进程当前已分配各类资源数
int Allocation[I][R] = {
{
0,1,0},{
2,0,0},{
3,0,2},{
2,1,1},{
0,0,2}};
//每个进程当前的需求量
int Need[I][R] = {
{
7,4,3},{
1,2,2},{
6,0,0},{
0,1,1},{
4,3,1}};
//系统当前剩余可分配的各类资源
int Available[R] = {
3,3,2};
template<typename T,typename K>
void Sub(K* ptr, T* str,int n)
{
while(n--)
{
*ptr = *ptr - *str;
ptr++;
str++;
}
}