设为首页 加入收藏

TOP

银行家算法——C语言(二)
2012-11-06 11:25:09 来源: 作者: 【 】 浏览:1850
Tags:银行家 算法 语言


    
    void check()                          /*检测函数 */
   
    {  int k, f, v=0;
   
    int work[M],a[M];
   
    char  finish[M];
   
    r=1;
   
    for(i=0;i<n; i++)
   
    finish[i]='F';       /*初始化各进程均没得到足够资源并完成*/
   
    for(j=0;j<m; j++)
   
    work[j]=available[j];   /*用work[j]表示可提供进程继续运行的各类资源数 */
   
    k=n;
   
    do
   
    {
   
    for (i=0;i<n; i++)
   
    {if (finish[i]=='F’)
   
    {  f=1;
   
    for (j=0;j<m; j++)
   
    if (need[i][j]>work[j])
   
    f=0;
   
    if (f==1)    /*找到还没完成的且需求数小于可提供进程继续运行的*/
   
    {  finish[i]='T';      /*资源数的进程*/
   
    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]=='F‘)
   
    {
   
    f=0;
   
    break;
   
    }
   
    }
   
    if (f==0)          /*若有进程没完成,则为不安全状态*/
   
    {
   
    printf(“This is unsafe . \n”);
   
    r=0;
   
    }
   
    else                      /* 否则为安全状态*/
   
    {
   
    printf(“This is safe .”);
   
    printf(“ the safe number is:”);
   
    for (i=0;i<n;i++)
   
    printf (“%d ”,a[i]);         /*输出安全序列*/
   
    printf(“\n”);
   
    for (i=0;i<n; i++)
   
    {
   
    printf(“%2d”,i);
   
    printf(“     ”);
   
    for(j=0;j<m; j++)
   
    printf(“%2d”,allocation[i][j]);
   
    printf(“     ”);
   
    for(j=0;j<m; j++)
   
    printf(“%2d”,need[i][j]);
   
    printf(“\n”);
   
    }
   
    }
   
    }
   
    void print()                    /*输出函数*/
   
    {
   
    int process[M];
   
    printf(“The available  resources: \n”);
   
    for(j=0;j<m; j++)
   
    printf(“%2d ”,available[j]);
   
    printf(“\n”);
   
    }

      

首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用于计算公式的代码 下一篇C语言中存储日期和时间的最好方法..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: