资源简介

银行家算法实现,C++演示,带有源代码,有注释

资源截图

代码片段和文件信息

#include  
#include  
#include  
#include 
#include 
#define MM 10 //总进程数的最大值
#define NM 10 //总资源数的最大值 
#define FALSE 0 
#define TRUE 1 
int MN;//总进程数,总资源数 
//M个进程对N类资源最大资源需求量 
int MAX[MM][NM]; 
//系统可用资源数 
int AVAILABLE[NM]; 
//M个进程已经得到N类资源的资源量 
int ALLOCATION[MM][NM]={0}; 
//M个进程还需要N类资源的资源量 
int NEED[MM][NM]; 
int Request[NM]={0}; 
char flag=‘Y‘; 

//输入数据
void inputdata()
{
  int ij; 
 printf(“请输入进程个数以及资源种类数:\n“);
 scanf(“%d %d“&M&N);
       printf(“\n“);  
       printf(“请输入“);
         for (j=0;j              printf(“%c“j+65);
       printf(“类资源的可用资源的个数:\n“);
        for (j=0;j { scanf(“%d“ &AVAILABLE[j]);}
              printf(“\n“);  
printf(“请输入“);
        for(i=0;i             printf(“P%d“i);
        printf(“所需的“);
   for (j=0;j              printf(“%c“j+65);
        printf(“类资源的Max分别为:\n“);
            for(i=0;i   for (j=0;j   { scanf(“%d“&MAX[i][j]);}
        printf(“\n“); 
printf(“请输入“);
for(i=0;i             printf(“P%d“i);
        printf(“分配“);
   for (j=0;j              printf(“%c“j+65);
        printf(“类资源的个数分别为:\n“);
for(i=0;i   for (j=0;j    {
 scanf(“%d“&ALLOCATION[i][j]);
 NEED[i][j]=MAX[i][j]-ALLOCATION[i][j];
AVAILABLE[j]=AVAILABLE[j]-ALLOCATION[i][j];
 }

}

//显示数据 
void showdata() 
{      int ijk; 
       inputdata();
cout<<“ 资源情况     Max           Allocation          Need        Available“< printf(“ 进程“);
for(k=1;k<=4;k++)
for(i=0;i printf(“%6c“i+65);
printf(“\n“);
    for(i=0;i {    printf(“   P%d“i);
{ for (j=0;j      printf(“%6d“MAX[i][j]);
}
{  for (j=0;j   printf(“%6d“ALLOCATION[i][j]);
}
{ for (j=0;j          printf(“%6d“NEED[i][j]);
}
k=i;
        if(k==0)
{
for (j=0;j            printf(“%6d“AVAILABLE[j]);
}
  printf(“\n“);
}

cout<}; 

void changdata(int k) 

int j; 
for (j=0;j
AVAILABLE[j]=AVAILABLE[j]-Request[j]; 
ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j]; 
NEED[k][j]=NEED[k][j]-Request[j]; 


}; 

void restoredata(int k)  //存储数据

int j; 
for (j=0;j
AVAILABLE[j]=AVAILABLE[j]+Request[j]; 
ALLOCATION[k][j]=ALLOCATION[k][j]-Request[j]; 
NEED[k][j]=NEED[k][j]+Request[j]; 


}; 

int check(int s)   //检验是否为安全序列

int WORKFINISH[MM]temp[MM]; 
int ijk=0; 
for(i=0;i for(j=0;j
WORK=AVAILABLE[j]; 
        i=s; 
    while(i
if (FINISH[i]==FALSE&&NEED[i][j]<=WORK) 

WORK=WORK+ALLOCATION[i][j]; 
FINISH[i]=TRUE; 
temp[k]=i; 
k++; 
i=0; 

else 

i++; 


for(i=0;i        if(FINISH[i]==FALSE) 

printf(“\n“)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        744  2009-04-27 22:17  银行家算法\可用.plg

     文件      67949  2009-04-27 22:09  银行家算法\1.jpg

     文件      36064  2009-04-27 22:11  银行家算法\2.jpg

     文件      49075  2009-04-27 22:16  银行家算法\3.jpg

     文件      41984  2009-06-04 00:24  银行家算法\银行家算法.ncb

     文件        254  2009-06-04 00:24  银行家算法\银行家算法.plg

     文件       4638  2009-04-27 22:25  银行家算法\银行家算法.cpp

     文件       3451  2009-06-04 00:24  银行家算法\银行家算法.dsp

     文件      48640  2009-06-04 00:24  银行家算法\银行家算法.opt

     文件        528  2009-06-04 00:24  银行家算法\银行家算法.dsw

     文件     237613  2009-04-27 22:17  银行家算法\Debug\可用.exe

     文件     156672  2009-06-04 00:24  银行家算法\Debug\vc60.idb

     文件      86016  2009-04-27 22:30  银行家算法\Debug\vc60.pdb

     文件    3611932  2009-04-27 22:12  银行家算法\Debug\可用.pch

     文件      29884  2009-04-27 22:17  银行家算法\Debug\可用.obj

     文件     282020  2009-04-27 22:17  银行家算法\Debug\可用.ilk

     文件     492544  2009-04-27 22:12  银行家算法\Debug\可用.pdb

     文件     290512  2009-04-27 22:30  银行家算法\Debug\银行家算法.ilk

     文件     237619  2009-04-27 22:30  银行家算法\Debug\银行家算法.exe

     文件     607232  2009-04-27 22:30  银行家算法\Debug\银行家算法.pdb

     文件    3628656  2009-04-27 22:30  银行家算法\Debug\银行家算法.pch

     文件      30124  2009-04-27 22:30  银行家算法\Debug\银行家算法.obj

     目录          0  2009-06-24 13:57  银行家算法\Debug

     目录          0  2009-06-24 13:57  银行家算法

----------- ---------  ---------- -----  ----

              9944151                    24


评论

共有 条评论