实验目的
1.掌握死锁产生的原因。
2.掌握银行家算法。
3.能使用高级语言模拟实现银行家算法。
实验内容
设计有n个进程共享m个系统资源的系统,进程可动态的申请和释放资源,系统按各进程的申请动态的分配资源。
系统能显示各个进程申请和释放资源,以及系统动态分配资源的过程,便于用户观察和分析。
源程序
//***********************************************************************//
//* 实验二 死锁的避免――银行家算法 *//
//* *//
//*本程序需要预先设置三个文件:Available_list.txt,Max_list.txt,Allocation_list.txt *//
//* 各文件格式如下: *//
//* Available_list.txt *//
//* 3 //表示共有3类资源 *//
//* 10 5 7 //表示各类资源的初始可用个数,即Available[0]=10, Available[1]=5 *//
//* *//
//* *//
//* Max_list.txt *//
//* 5 //表示共有5个进程 *//
//* 7 5 3 //表示各个进程需要各类资源的最大数目,即Max[0][0]=7, Max[0][1]=5*//
//* 3 2 2 *//
//* 9 0 2 *//
//* 2 2 2 *//
//* 4 3 3 *//
//* *//
//* *//
//* Allocation_list.txt *//
//* 0 1 0 //表示各个进程已分配各类资源的数目 *//
//* 2 0 0 *//
//* 3 0 2 *//
//* 2 1 1 *//
//* 0 0 2 *//
//* *//
//* *//
//*************************************************************************//
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
#define MAX_PROCESS 32 //最大进程数
#define MAX_RESOURCE 64 //最大资源类别
int PROCESS_NUM; //实际总进程数
int RESOURCE_NUM; //实际资源类别数
int Available[MAX_RESOURCE]; //可利用资源向量
int Max[MAX_PROCESS][MAX_RESOURCE]; //最大需求矩阵
int Allocation[MAX_PROCESS][MAX_RESOURCE]; //分配矩阵
int Need[MAX_PROCESS][MAX_RESOURCE]; //需求矩阵
int Request_PROCESS; //发出请求的进程
int Request_RESOURCE_NEMBER[MAX_RESOURCE]; //请求资源数
void Read_Available_list(); //读入可用资源Available
void Read_Max_list(); //读入最大需求矩阵Max
void Read_Allocation_list(); //读入已分配矩阵Allocation
void PrintInfo(); //打印各数据结构信息
void Read_Request(); //输入请求向量
void Allocate_Source(); //开始正式分配资源(修改Allocatio