• 大小: 4.32MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-28
  • 语言: C/C++
  • 标签:

资源简介

操作系统实验 银行家算法+实验报告 完整代码c语言实现

资源截图

代码片段和文件信息

#include
#include
#include
#define False 0
#define True 1
int Max[100][100]={0};//各进程所需各类资源的最大需求
int Avaliable[100]={0};//系统可用资源
char name[100]={0};//资源的名称
int Allocation[100][100]={0};//系统已分配资源
int Need[100][100]={0};//还需要资源
int Request[100]={0};//请求资源向量
int temp[100]={0};//存放安全序列
int Work[100]={0};//存放系统可提供资源
int M=100;//作业的最大数为100
int N=100;//资源的最大数为100
void showdata()//显示资源矩阵
{
   int ij;
   printf(“系统目前可用的资源[Avaliable]:\n“);
   for(i=0;i   printf(“%c  “name[i]);
   printf(“\n“);
   for (j=0;j     printf(“%d “Avaliable[j]);//输出分配资源
   printf(“\n“);
    printf(“             Max      Allocation     Need \n“);
  printf(“进程名      “);
    for(j=0;j<3;j++)
{
     for(i=0;i    printf(“%c  “name[i]);
     printf(“       “);
}
    printf(“\n“);
   for(i=0;i  printf(“ %d         “i);
   for(j=0;j   printf(“%d  “Max[i][j]);
   printf(“       “);
   for(j=0;j      printf(“%d  “Allocation[i][j]);
   printf(“       “);
   for(j=0;j 
   printf(“%d  “Need[i][j]);
   printf(“\n“);}
   
}

int changdata(int i)//进行资源分配

int j;
for (j=0;j      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 ik=0mapplyFinish[100]={0};
int j;
int flag=0;
Work[0]=Avaliable[0];
Work[1]=Avaliable[1];
Work[2]=Avaliable[2];
for(i=0;i   apply=0;
   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(“%d“temp[i]);
    if(i“);
}
    printf(“\n“);
   return 0;
}
void share()//利用银行家算法对申请资源对进行判定
{
char ch;
int i=0j=0;
ch=‘y‘;
 printf(“请输入要求分配的资源进程号(0-%d):“M-1); 
     scanf(“%d“&i);//输入须申请的资源号
printf(“请输入进程 %d 申请的资源:\n“i);
for(j=0;j{
   printf(“%c:“name[j]);
  scanf(“%d“&Request[j]);//输入需要申请的资源
}
      for (j=0;j      if(Request[j]>Need[i][j])//判断申请是否大于需求,若大于则出错
   { 
     printf(“进程 %d申请的资源大于它需要的资源 分配不合理,不予分配!\n“i);
          
     ch=‘n‘;
           break;
}
       else {
             if(Request[j]>Avaliable[j])//判断申请是否大于当前资源,若大于则出错
    
 {                         
      printf(“进程%d申请的资源大于系统现在可利用的资源\n“i);
       printf(“ 分配出错,不予分配!\n“);
       ch=‘n‘;
     break;
       }
    }
    }
    if(ch==‘y‘) {
       changdata(i);//根据进程需求量变换资源
    showdata();//根据进程需求量显示变换后的资源
       safe();//根据进程需求量进行银行家算法判断
    }
}

int main()//主函数
{

    int ijqchoicem

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

     文件       4721  2011-05-27 20:35  bank\bank.txt

     文件       4721  2011-05-27 20:37  bank\Cpp1.cpp

     文件       3377  2011-05-27 20:31  bank\Cpp1.dsp

     文件        531  2011-05-27 21:50  bank\Cpp1.dsw

     文件      33792  2011-05-27 21:50  bank\Cpp1.ncb

     文件      48640  2011-05-27 21:50  bank\Cpp1.opt

     文件        242  2011-05-27 20:52  bank\Cpp1.plg

     文件     172099  2011-05-27 20:37  bank\Debug\Cpp1.exe

     文件     177932  2011-05-27 20:37  bank\Debug\Cpp1.ilk

     文件      16436  2011-05-27 20:37  bank\Debug\Cpp1.obj

    I.A....    265964  2011-05-27 20:31  bank\Debug\Cpp1.pch

     文件     345088  2011-05-27 20:37  bank\Debug\Cpp1.pdb

     文件      41984  2011-05-27 21:18  bank\Debug\vc60.idb

     文件      53248  2011-05-27 20:37  bank\Debug\vc60.pdb

    I.A....   1031989  2011-05-27 21:21  bank\IMAG0109.jpg

    I.A....   1108880  2011-05-27 21:22  bank\IMAG0110.jpg

    I.A....   1074147  2011-05-27 21:22  bank\IMAG0111.jpg

    I.A....   1020740  2011-05-27 21:22  bank\IMAG0112.jpg

     文件     173568  2011-05-27 21:48  bank\银行家算法实验报告.doc

     目录          0  2011-05-27 20:37  bank\Debug

     目录          0  2011-05-27 21:50  bank

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

              5578099                    21


评论

共有 条评论