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

银行家算法C语言实现 第2页

更新时间:2008-7-14:  来源:毕业论文

银行家算法C语言实现 第2页

   { available1[j]=available[j];       /* 保存原已分配的资源数,

                      allocation1[i][j]=allocation[i][j]; 仍需要的资源数,和可用的

                           need1[i][j]=need[i][j];        资源数*/

                           available[j]=available[j]-req[j];  / * 系统尝试把资源分配

                      allocation[i][j]=allocation[i][j]+req[j];   给请求的进程 */

                      need[i][j]=need[i][j]-req[j];

                     }

                     print();

                     check();                         //进行安全检测

                    if (r==0)                          //分配后状态不安全

                      {for (j=0;j<m; j++)              

                          {available[j]=available1[j];   /* 还原分配前的已分配的资

                           allocation[i][j]=allocation1[i][j];  源数,仍需要的资源数

                           need[i][j]=need1[i][j];            和可用的资源数 */

                           }

                         printf("return:\n");

                         print();

                      }

                  }

              }

     printf("\nDo you want to continue? y or n?\n");  //判断是否继续进行资源分配

     } while (getch()=='y');

   }

}

void check()                          //检测函数

{int k, f, v=0,i,j;

 int work[M],a[M],finish[M];

 r=1;

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

    finish[i]=0;       //初始化各进程均没得到足够资源并完成

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

    work[i]=available[i];   //work[i]表示可提供进程继续运行的各类资源数

 k=n;

 do{

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

       {if (finish[i]==0)

         {f=1;

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

                if (need[i][j]>work[j])

                 f=0;

               if (f==1)    /*找到还没完成的且需求数小于可提供进程继续运行的

                   {finish[i]=1;      资源数的进程*/

                    a[v++]=i;      //记录安全序列

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

                        work[j]=work[j]+allocation[i][j]; //释放该进程已分配的资源

                   }

          }

        }

      k--;

   }while(k>0);

 f=1;

 for (i=0;i<n; i++)           //判断是否所有的进程都完成

    {

       if (finish[i]==0)

        {

         f=0;

         break;

        }

      }

 if (f==0)          //若有进程没完成,则为不安全状态

     {

      printf("This is unsafe  \n");

     r=0;

    }

 else                      // 否则为安全状态

     {

      printf("This is safe and the safe number is:");

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

      printf ("%d ",a[i]);         //输出安全序列

    }

}

void print()                    //输出函数

 { int i, j;

   int process[M];

  printf("Process\t Allocation\t  Need\n");

若图片无法显示请联系QQ752018766,银行家算法C语言实现 第2页系统免费,转发请注明源于www.751com.cn

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

       printf("\n");

    }

  printf("Available\n");

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

  printf("%2d ",available[i]);

  printf("\n");

 }

运行以上程序代码,其中一种输出结果如下:

上一页  [1] [2] [3] [4] [5] 下一页

银行家算法C语言实现 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

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