⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tt.txt

📁 自己写的一个银行家算法
💻 TXT
字号:
#include<stdio.h> 
#include<stdlib.h> 
#define MAX_SRC 5 /*最大资源种类数*/ 
#define MAX_PROC 10 /*最大进程数*/ 
struct available /*定义一个系统可用资源的结构体*/ 
{ 
int avail[3]; 
}available1; 

struct processor /*定义一个进程的结构体*/ 
{ 
int allocation[MAX_SRC]; /*已经分配的*/ 
int need[MAX_SRC]; /*还需要的资源*/ 
int request[MAX_SRC]; /*请求的资源*/ 
int max[MAX_SRC]; /*最大需要的资源*/ 
int finish; /*是否完成的标志位*/ 
}proc[MAX_PROC]; 

/*输入的进程信息*/ 
void input(int n_proc,int n_src) 
{ 
int i,j; 
for(i=0;i<n_proc;i++) 
proc[i].finish=0; 
for(i=0;i<n_proc;i++) 
{ 
printf("请输入p[%d]进程已分配的资源:\n",i); 
for(j=0;j<n_src;j++) 
{scanf("%d",&proc[i].allocation[j]);} 
printf("请输入p[%d]进程还需要的资源:\n",i); 
for(j=0;j<n_src;j++) 
{scanf("%d",&proc[i].need[j]);} 
} 
printf("请输入系统现在有的资源:\n"); 
for(j=0;j<n_src;j++) 
scanf("%d",&available1.avail[j]); 
} 

/**/ 
void try_pro(); 

/*进程试探,看是否满足,如果能做完,则该进程的finish置1*/ 
void do_pro(int n_proc,int n_src) 
{ 
int i,j,p=0,x=0; 
for(i=0;i<n_proc;i++) 
{ 
if(proc[i].finish==0) 
{ 
for(j=0;j<n_src;j++) /*可用的资源与需要的进行比较,可以分配则将finish置1,*/ 
{ 
if(proc[i].need[j]<=available1.avail[j]) 
x++; 
} 
if(x==n_src) 
{ 
for(j=0;j<n_src;j++) /*收回资源,将finish置1,*/ 
available1.avail[j]+=proc[i].allocation[j]; 
proc[i].finish=1; 
} 
} 
else 
continue; 

} 
} 

/*输入安全序列*/ 
void out_put(int n_proc) 
{ 
int i; 
for(i=0;i<n_proc;i++) 
{ 
if(proc[i].finish==1) 
printf("p[%d]",i); 
else 
{ 
printf("无安全序列!"); 
break; 
} 
} 

} 

main() 
{ 
int i,n_proc,n_src; 
printf("\t\t\t银行家算法\n"); 
printf("请输入进程的数目:"); 
scanf("%d",&n_proc); 
printf("请输入进程资源的种类:"); 
scanf("%d",&n_src); 
input(n_proc,n_src); 
for(i=0;i<n_proc;i++) 
{do_pro(n_proc,n_src);} 
out_put(n_proc); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -