毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

操作系统课程设计-模拟银行家算法

更新时间:2007-10-30:  来源:毕业论文
操作系统课程设计-模拟银行家算法|课程设计|计算机数据库课程设计

模拟银行家算法,用银行家算法实现资源分配。

Output()     输出某时刻的资源分配情况;

Bank()      银行家算法的步骤 123、及4调用安全性算法;

Security()    进行安全性检查;

Main()      各种数据结构的定义。

 

假设 0-4 五个进程(假设系统的当前状态是安全的),三类资源 即:ABC

(以下各种数据均取自课本P97例子)

 

T0 时刻的资源分配表(各种资源的数量分别为:1057)

 

    资源情况

进程

Max

A  B  C

Allocation

A  B  C

Need

A  B  C

Available

A  B  C

P0

7  5  3

0  1  0

7  4  3

3  3  2

P1

3  2  2

2  0  0

1  2  2

 

P2

9  0  2

3  0  2

6  0  0

 

P3

2  2  2

2  1  1

0  1  1

 

P4

4  3  3

0  0  2

4  3  1

 

 

#include <stdio.h>
output(int arr[5][3])
{
 int i,j;
 printf("    A  B  C\n");
 for(i=0;i<5;i++)
 {
  printf("P%d",i);
  for(j=0;j<3;j++)
  { printf("  %d",arr[i][j]); }
  printf("\n");
 }
}
int Security(int avialable[3],int need[5][3],int allocation[5][3])
{
    int j,i;
    int work[3];
    int finish[5]={0,0,0,0,0};
    for(j=0;j<3;j++)
    work[j]=avialable[j];
    for(i=0;i<5;i++)
    {
 if(finish[i]==0)
 {
  for(j=0;j<3;j++)
            if(need[i][j]<=work[i]&need[i][j]<=work[i]&need[i][j]<=work[i])
        work[j]=work[j]+allocation[i][j];
  finish[j]=1;
 }
    }
    for(i=0;i<5;i++)
    {
 if(finish[i]==0)
   return 0;
 else return 1;
    }
} */
Bank(int i,int request[3],int need[5][3],int avialable[3],int allocation[5][3])
{
 int
 int j;
 printf("The process id:  %d\n",i);
 printf("The Process Request:");
 for(j=0;j<3;j++)
    printf(" %d",request[j]);
 printf("\n");
 if(request[0]<=need[i][0]&request[1]<=need[i][1]&request[2]<=need[i][2])
 {
     if(request[0]<=avialable[0]&request[1]<=avialable[1]&request[2]<=avialable[2])
     {
  for(j=0;j<3;j++)
  {
   avialable[j]=avialable[j]-request[j];
   allocation[i][j]=allocation[i][j]+request[j];
   need[i][j]=need[i][j]-request[j];
  }
  printf("The source after request:\n");
  printf("   Allocation\n");
  output(allocation);
  printf("   Need\n");
  output(need);
  printf("The Avialable after request:");
  for(j=0;j<3;j++)
  printf("  %d",avialable[j]);
  printf("\n");
     }
     else printf("RequestError!");
 }
 else printf("RequestError!");
 /*Security(avialable,need,allocation);*/
}
main()
{
 int id,i;
 int Avialable[3]={3,3,2};
 int Max[5][3]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};
 int Allocation[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};
 int Need[5][3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};
 int Request[3];    /*i Id of Process*/

 printf("The source before request:\n");
 printf("   MAX\n");
 output(Max);
 printf("   Allocation\n");
 output(Allocation);
 printf("   Need\n");
 output(Need);
 printf("The Avialable before request:");
for(i=0;i<3;i++)
 printf("  %d",Avialable[i]);
 printf("\n");

 printf("Input the id and request of Process:");
 scanf("%d %d %d %d",&id,&Request[0],&Request[1],&Request[2]);
 Bank(id,Request,Need,Avialable,Allocation);
}

操作系统课程设计-模拟银行家算法下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。