操作系统实验多线程模拟实现银行家算法
题目
实现课本中的银行家算法,并使用多线程进行实现,你所涉及的程序需要支持n个线程对m中资源的并发访问请求。在实验过程中,能够通过屏幕或者文件,保存每个客户线程申请资源的情况—申请多少;是否被分配等。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <stdbool.h>
#include <time.h>
int nResources=3,nProcesses=0;//定义输入的资源种类和进程数量
int resources[3];//资源数
int allocated[20][3];//为每个进程分配的实例数量
int maxRequired[20][3];//每个进程的最大需求
int need[20][3];//每个进程还需要的资源
int Flag[20];
pthread_mutex_t mutex;//进程互斥锁
bool banker();//系统如果处于安全状态返回true,不安全返回false
void* processCode(void* );//多线程实现
void init();//初始化资源请求等数据
void show();//输出各个资源
int requestr(int customer_num,int request[]);//请求资源
int releaser(int customer_num,int release[]);//释放资源
void runner();
int main(int argc, char *argv[]) {
init();
show();
runner();
return 0;
}
//初始化信息
void init(){
printf("请输入进程的数量:\n");
scanf("%d", &nProcesses);
printf("请依次输出每种资源可用数量:\n");
for(int i=0; i<nResources; i++){
scanf("%d", &resources[i]);
}
printf("\n