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

操作系统银行家算法

更新时间:2007-9-26:  来源:毕业论文

一,上机实验内容:

银行家算法

二,银行家算法描述如下:令RRi是进程Pi的资源请求量,如果RRi[j]=k,则进程Pi希望请求分配的j类资源k个,当进程Pi向系统提交一个资源请求向量RRi时,系统调用银行家算法。

三,熟练掌握银行家算法,并解决死锁问题。

四,源程序

# include<stdio.h>

void main()

{ int max_need[5][3]={{3,2,2},{7,5,3},{9,0,2},{2,2,2},{4,3,3}};

int allocation[5][3]={{2,0,0},{0,1,0},{3,0,2},{2,1,1},{0,0,2}};

int i,j,k,l=0,count=0,m=0;

int still_need[5][3]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};

int result[5]={-1,-1,-1,-1,-1};

int current_available[3]={3,3,2};

int tempCount=0;

printf("银行家总共拥有的各类资源的总数: \n A B C\n  10  5  7\n");

printf("银行家目前剩下的各类资源的总数: \n A B C\n   3  3  2\n");

printf("各进程对各类资源的最大需求量:   \n A B C\n");

for(i=0;i<5;i++)

{ printf("P%d: ",i);

  for(j=0;j<3;j++)

  { printf("%d",max_need[i][j]=max_need[i][j]-allocation[i][j]);

  }

  printf("\n");

}

printf("各进程已分配到的各类资源:\n A B C\n");

for(i=0;i<5;i++)

{ printf("P%d: ",i);

  for(j=0;j<3;j++)

          printf("%d",still_need[i][j]);

  printf("\n");

}

 

while(tempCount<=count&&count<5)

{ tempCount++;

  for(k=0;k<5;k++)

         if(result[k]==-1)

         { m=0;

           for(j=0;j<3;j++)

              if(still_need[k][j]<=current_available[j]&&still_need[k][j]>=0)

              { current_available[j]=current_available[j]+allocation[k][j];

              m++;

              if(m==3)

              { result[k]=1;

                m=0;

                printf("P%d->",k);

                count++;

              }

              }

              else break;

         }

}

if(count==5)

{ printf("\n 系统安全!上行所示为其中一个进程安全序列 \n");

}

else

printf("\n 找不到一个安全序列,系统不安全!\n");}

运行结果

  

申请资源RRi

RRi>Ni

N

RRi>A

Y

N

给进程Pi 分配资源

调用安全算法

输出符合条件的进程PID

 

Y

进程Pi进入等待

进入错误处理

辣,流程图

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

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