資源簡介
銀行家算法,在vc++環境下運行,可實現

代碼片段和文件信息
#include??
#define?FALSE?0?
#define?TRUE?1
#define?W?10//最大進程數??
#define?R?10//最大資源種類數
int?temp[10];
//static?int?xl=0;
int?M?;?//?輸入總進程數
int?N?;?//?輸入資源種類
int?ALL_RESOURCE[R]; //?各種資源的數目總和
int?Max[W][R]; //?最大需求矩陣,M個進程對N類資源最大資源需求
int?Available[R]; //?可利用資源向量,
int?Allocation[W][R];//?分配矩陣,各個進程M已經得到N類資源的資源數
int?Need[W][R]; //?M個進程還需要N類資源的資源量
int?Request[R]; //?進程的請求資源個數
void?show(); //顯示當前各進程的分配和需求信息
void?fenpei(int?k); //分配資源
void?huishou(int?k)?; //上一個進程結束釋放所得資源后,系統重新獲得的可利用資源huishou
int?safe(); //安全性算法
void?bank(); //?銀行家算法
//主函數
void?main(){?
int?i=0j=0p;?
printf(“--------------------?銀?行?家?算?法?模?擬?實?現?------------------\n\n“);
printf(“請輸入進程數:“);
scanf(“%d“&M);
//printf(“-----------------------------------------------------------------\n“);?
printf(“請輸入資源種類:“);
scanf(“%d“&N);
//printf(“-----------------------------------------------------------------\n“);?
printf(“請輸入%d個各類資源總數:“N);
for(i=0;i scanf(“%d“&ALL_RESOURCE[i]);
printf(“-----------------------------------------------------------------\n“);??
printf(“請輸入%d個各進程所需要的各類資源的最大數量:\n“M*N);
for?(i=0;i for?(j=0;j do{
scanf(“%d“&Max[i][j]);
if?(Max[i][j]>ALL_RESOURCE[j])?????????
printf(“占有資源超過了聲明的該資源總數請重新輸入\n“);?
}?while?(Max[i][j]>ALL_RESOURCE[j]);
}
}
printf(“-----------------------------------------------------------------\n“);??
printf(“請輸入%d個各進程已經分配的各類資源的數量:\n“M*N); //各進程已經分配的各類資源的數量
for?(i=0;i for?(j=0;j do{
scanf(“%d“&Allocation[i][j]);
if?(Allocation[i][j]>Max[i][j])
printf(“已分配的資源超過了聲明的最大資源請重新輸入\n“);?
}while?(Allocation[i][j]>Max[i][j]);
}
}
//?初始化資源數量
for?(j=0;j p=ALL_RESOURCE[j];
for?(i=0;i p=p-Allocation[i][j];//?減去已經被占據的資源
Available[j]=p;
if(Available[j]<0)
Available[j]=0;
}
}
for?(i=0;i for(j=0;j Need[i][j]=Max[i][j]-Allocation[i][j];//三個矩陣之間存在的關系
show();
bank();
}
//顯示當前各進程的分配和需求信息
void?show(){?
int?ij;
printf(“-----------------------------------------------------------------\n“);?
printf(“各種資源的總數量:\n“);?//各種資源的總數量
for?(j=0;j printf(“?%d“ALL_RESOURCE[j]);?
printf(“\n“);
printf(“-----------------------------------------------------------------\n“);
printf(“目前各種資源可利用的數量為:\n“);//各種資源的總數量減去已分配后剩余的資源量??
for?(j=0;j printf(“?%d“Available[j]);?
printf(“\n“);
printf(“-----------------------------------------------------------------\n“);?
printf(“各進程還需要的資源數量:\n“);?//各進程還需要的資源數量
for(i=0;i printf(“????????資源%d“i);?
printf(“\n“);
for?(i=0;i printf(“進程%d????“i);?
for?(j=0;j printf(“%d????????“Need[i][j]?????????);??
printf(“\n“);
}?
printf(“\n“);
printf(“-----------------------------------------------------------------\n“);?
printf(“各進程已經得到的資源量:?\n“);//打印各進程已經得到的資源量?
for(i=0;i printf(“????????資源%d“i);?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-11-04?08:08??bank\
?????目錄???????????0??2014-11-03?15:10??bank\Debug\
?????文件??????192586??2014-11-03?14:58??bank\Debug\bank.exe
?????文件??????294300??2014-11-03?14:58??bank\Debug\bank.ilk
?????文件???????19554??2014-11-03?14:58??bank\Debug\bank.obj
?????文件??????203828??2014-11-03?11:26??bank\Debug\bank.pch
?????文件??????459776??2014-11-03?14:58??bank\Debug\bank.pdb
?????文件???????33792??2014-11-03?14:58??bank\Debug\vc60.idb
?????文件???????53248??2014-11-03?14:58??bank\Debug\vc60.pdb
?????文件????????7207??2014-11-04?08:08??bank\bank.cpp
?????文件????????3377??2014-11-03?11:26??bank\bank.dsp
?????文件?????????516??2014-11-03?11:49??bank\bank.dsw
?????文件???????41984??2014-11-04?08:08??bank\bank.ncb
?????文件???????49664??2014-11-04?08:08??bank\bank.opt
?????文件????????1128??2014-11-03?14:58??bank\bank.plg
- 上一篇:SMTP客戶端程序(mfc實現)
- 下一篇:過濾防火墻
評論
共有 條評論