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

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

資源簡介

c++寫的死鎖檢測與解除算法,親測已經運行成功,代碼有說明,容易理解

資源截圖

代碼片段和文件信息

#include
#include
#include
#define?M?5
#define?N?3

int?MAX[M][N]={{753}{322}{902}{222}{433}};
int?ALLOCATION[M][N]={{010}{200}{302}{211}{002}};
int?NEED[M][N]={{743}{122}{600}{011}{431}};
int?AVAILABLE[N]={332};
int?Request[N]={000};?
int?temp[5]={00000};
bool?finish[5];

void?showdata(){
??int?ij;?
printf(“系統可用的資源數為:\n“);?
printf(“?“);?
for?(j=0;jprintf(“?資源%d:%d“jAVAILABLE[j]);?
?}?
printf(“\n“);?
printf(“各進程還需要的資源量:\n“);?
for?(i=0;i{?
printf(“?進程%d:“i);?
for?(j=0;jprintf(“資源%d:%d“jNEED[i][j]);?
}?
printf(“\n“);?
}?
printf(“各進程已分配到的資源量:\n“);?
for(i=0;i???printf(“?進程%d:“i);?
???for?(j=0;j??????printf(“資源%d:%d“jALLOCATION[i][j]);?
???}?
printf(“\n“);?
}?
}

bool?test(){
int?i=0j=0lk=0;
for(i=0;i for(l=0;l<=M;l++){
for(i=0;i if(finish[i]==false){
??for(j=0;(j ?//?printf(“\n進程%i%d\n“ij);
??if(j==N){
?????finish[i]=true;
?????????????for(j=0;j ???AVAILABLE[j]=AVAILABLE[j]+ALLOCATION[i][j];
?temp[k]=i;
?k=k+1;
//?printf(“\nk=%d\n“k);
?if(i==4)i=-1;
??}
}
}
if(i==5)i=-1;
}
if(k==M){
??printf(“存在安全序列:“);
??for(i=0;i ????printf(“進程%d->“temp[i]);
??printf(“\n“);
??return??true;
}
else{
printf(“進程“);
????for(i=0;i ???if(finish[i]==false)
???printf(“%d“i);
}
????printf(“發生死鎖!\n“);
printf(“不存在安全序列!\n“);
????return?false;
}

}

int?input(){
int?i=-1j=1;
while(i<0||i>4){
????????printf(“請輸入需申請資源的進程號(從0到4否則重輸入!):“);
????????scanf(“%d“&i);?
????????if(i<0||i>=M)printf(“輸入的進程號不存在,重新輸入!\n“);?
}
printf(“請輸入進程“);?
????printf(“%d“i);?
????printf(“申請的資源數\n“);?
for(j=0;j printf(“資源%d:“j);
scanf(“%d“&Request[j]);
if(Request[j]>NEED[i][j]){
???printf(“進程%d申請的資源數大于進程%d還需要%d“iij);?
???????????printf(“類資源的資源量!申請不合理,出錯!\n“);?
???return?-1;
}
else?{?
????????????if(Request[j]>AVAILABLE[j])?{?
????????????????printf(“進程%d申請的資源數大于系統可用%d“ij);?
????????????????printf(“類資源的資源量!申請不合理,出錯!\n“);?
????????????????return?-1;?
}?
}
}
for(j=0;j ???AVAILABLE[j]=AVAILABLE[j]-Request[j];
???????ALLOCATION[i][j]=?ALLOCATION[i][j]+Request[j];
???????NEED[i][j]=?NEED[i][j]-Request[j];
}
}
void?safe(){
??int?i=0j=0;
??bool?s=test();
??while(i ?printf(“回收進程%d已分配的資源.\n“i);
?????for(j=0;j????????{
?AVAILABLE[j]+=ALLOCATION[i][j];??//回收
?????????NEED[i][j]=NEED[i][j]+ALLOCATION[i][j];
?ALLOCATION[i][j]=0;
}
?if(test())
printf(“死鎖已解除!\n“);
else
i++;
//test();
??}
}

void?main(){
??showdata();
??input();
??safe();
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3055??2018-04-26?11:05??bank.cpp

-----------?---------??----------?-----??----

?????????????????3055????????????????????1


評論

共有 條評論