最近学习操作系统到了死锁这一部分,为了避免死锁,系统可以采用银行家算法来分配进程申请的资源。于是我参照教材,用C语言基本实现了这个算法。(不过我并没有做过多测试,代码应该没啥大问题吧...)
#include<stdio.h>
#include<stdlib.h>
#define MAXRESOURCE 100 //最大资源种类
#define MAXPROCESS 100 //最大进程数量
typedef struct SystemState //定义系统状态
{
int resTypeAmount, processAmount;
int resource[MAXRESOURCE]; //系统资源总量
int available[MAXRESOURCE]; //系统当前可用资源
int claim[MAXPROCESS][MAXRESOURCE]; //进程n请求资源m的总量
int alloc[MAXPROCESS][MAXRESOURCE]; //进程n已有资源m的数量
} State;
void InitState(); //初始化状态
void Request(int, int*); //进程申请资源
int ResourceAllocation(int, int[]); //资源分配算法
int Safe(state); //测试安全算法(银行家算法
void ShowState(State);
State state;
int main()
{
int processID = -1, request[MAXPROCESS];
int i, j;
//初始化状态
InitState();
//进程申请资源分配
Request(&processID, &request);
//进行安全性检测
Res