91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-08
  • 語言: C/C++
  • 標簽:

資源簡介

銀行家算法是一個避免死鎖的著名算法,它以銀行借貸系統的分配策略為基礎,判斷并保證系統的安全運行。

資源截圖

代碼片段和文件信息

#include??
#include??
#include
using?namespace?std;??
#define?MAX_PROCESS?100??
#define?MAX_RESOURCE?100??
int?Available[MAX_RESOURCE];????????????????????//可用資源數組????
int?Max[MAX_PROCESS][MAX_RESOURCE];????????????//最大需求矩陣????
int?Allocation[MAX_PROCESS][MAX_RESOURCE];????//分配矩陣???
int?Need[MAX_PROCESS][MAX_RESOURCE];?????//需求矩陣????
int?Request[MAX_PROCESS][MAX_RESOURCE];????????//進程需要資源數???
int?p[MAX_PROCESS];?????????????????????????????//記錄序列??
int?nm;????????????????????????????????????//n個進程m個資源????
void?Init()????????????????//初始化算法????
{????
????int?ij;????
????printf(“請輸入進程的數目:\n“);??
????scanf(“%d“&n);???
????printf(“請輸入資源的種類:\n“);???
????scanf(“%d“&m);??
????printf(“請輸入每個進程最多所需的各資源數按照%dx%d矩陣從左到右、從上到下輸入:\n“nm);????
????for(i=0;i????{??
????????for(j=0;j????????{??
????????????scanf(“%d“&Max[i][j]);??
????????}??
????}??
????printf(“請輸入每個進程已分配的各資源數也按照%dx%d矩陣從左到右、從上到下輸入:\n“nm);????
????for(i=0;i????{????
????????for(j=0;j????????{????
????????????scanf(“%d“&Allocation[i][j]);???
????????????Need[i][j]=Max[i][j]-Allocation[i][j];???
????????????if(Need[i][j]<0)????
????????????{????
????????????????printf(“您輸入的第%d個進程所擁有的第%d個資源數錯誤請重新輸入:\n“i+1j+1);????
????????????????j--;????
????????????????continue;????
????????????}????
????????}????
????}????
????printf(“請輸入各個資源現有的數目:\n“);????
????for(i=0;i????{????
????????scanf(“%d“&Available[i]);??
????}??????
}????
bool?Safe()????//安全性算法??
{????
????int?ijkl=0;????
????int?Work[MAX_RESOURCE];?//工作數組他表示系統可提供給進程繼續運行所需的各類資源數目????
????int?Finish[MAX_PROCESS];??//系統是否有足夠的資源分配給進程,使之運行完成???
????for(i=0;i????{??
????????Work[i]=Available[i];??
????}????
????//Finish每個進程是否安全??
???
????memset(Finish0sizeof(Finish));???
????for(i=0;i????{??????
???????if(Finish[i])?continue;??
????????for(j=0;j????????{??
????????????//第i個進程需要的第j個資源數?>?系統現有的第j個資源數???
????????????if(Need[i][j]>Work[j])?break;??
????????}??
????????if(j==m)//如果第i個進程所需的各個資源數都沒有超過系統現有的對應資源數????
????????{?????
????????????Finish[i]=1;//給該進程的FINISH標記為true????
????????????for(k=0;k????????????{????
????????????????Work[k]+=Allocation[i][k];//將Work賦值為?第i個進程各個已分配資源數+系統現有的對應資源數(因為當改進程全部資源數都滿足時線程

評論

共有 條評論