大作业 银行家算法课程设计报告 联系客服

发布时间 : 星期六 文章大作业 银行家算法课程设计报告更新完毕开始阅读48b2144a53ea551810a6f524ccbff121dd36c5a0

Avaliable[j]=Avaliable[j]-Request[j];

Allocation[i][j]=Allocation[i][j]+Request[j]; Need[i][j]=Need[i][j]-Request[j]; }

return 1; }

int safe()//安全性算法 {

int i,k=0,m,apply,Finish[100]={0}; int j;

int flag=0;

Work[0]=Avaliable[0]; Work[1]=Avaliable[1]; Work[2]=Avaliable[2]; for(i=0;i

for(j=0;j

if (Finish[i]==False&&Need[i][j]<=Work[j]){ apply++;

if(apply==N){

for(m=0;m

Work[m]=Work[m]+Allocation[i][m];//变分配数 Finish[i]=True; temp[k]=i; i=-1; k++; flag++; } } } }

for(i=0;i

if(Finish[i]==False){

printf(\系统不安全\\n\不成功系统不安全 return -1; } }

printf(\系统是安全的!\\n\如果安全,输出成功 printf(\分配的序列:\

for(i=0;i

printf(\

return 0; }

void share()//利用银行家算法对申请资源对进行判定 {

char ch; int i=0,j=0; ch='y';

printf(\请输入要求分配的资源进程号(0-%d):\ scanf(\输入须申请的资源号 printf(\请输入进程 %d 申请的资源:\\n\for(j=0;j

printf(\

scanf(\输入需要申请的资源 }

for (j=0;j

if(Request[j]>Need[i][j])//判断申请是否大于需求,若大于则出错 {

printf(\进程 %d申请的资源大于它需要的资源, 分配不合理,不予分配!\\n\ ch='n';

break; }

else {

if(Request[j]>Avaliable[j])//判断申请是否大于当前资源,若大于则出错 {

printf(\进程%d申请的资源大于系统现在可利用的资源\\n\ printf(\分配出错,不予分配!\\n\ ch='n'; break; } } }

if(ch=='y') {

changdata(i);//根据进程需求量变换资源 showdata();//根据进程需求量显示变换后的资源 safe();//根据进程需求量进行银行家算法判断 } }

int main()//主函数

{

int i,j,q,choice,m,n,flag; char ming;

printf(\请首先输入系统可供资源种类的数量:\ scanf(\ N=n; for(i=0;i

// printf(\ printf(\请输入作业的数量:\scanf(\ M=m; printf(\请输入各进程的最大需求量%d*%d矩阵[Max]:\\n\ for(i=0;i

scanf(\ if(Allocation[i][j]>Max[i][j]) flag=1; Need[i][j]=Max[i][j]-Allocation[i][j]; } if(flag)

printf(\申请的资源大于最大需求量,请重新输入!\\n\ }while(flag);

showdata();//显示各种资源

safe();//用银行家算法判定系统是否安全 while(choice) { printf(\ printf(\ 0:离开 \\n\ printf(\ 1:分配资源 \\n\ printf(\请选择功能号:\ scanf(\ switch(choice) {

case 1: share();break; case 0: break;

default: printf(\请正确选择功能号(0-1)!\\n\ } }

return 1;

四、程序运行结果及分析

T0 时刻的资源分配表(各种资源的数量分别为:10、5、7) 资源情况 进程 P0 P1 P2 P3 P4

Max A B C 7 5 3 3 2 2 9 0 2 2 2 2 4 3 3 Allocation A B C 0 1 0 2 0 0 3 0 2 2 1 1 0 0 2 Need A B C 7 4 3 1 2 2 6 0 0 0 1 1 4 3 1 Available A B C 3 3 2

运行结果

五、课程设计心得与体会

通过这次实验,我了解了银行家算法的原理,在编写和调试程序过程中,我的算法和编程能力提高了很多

六.参考文献:

《计算机操作系统》第四版,《C程序设计教程》谭浩强。