資源簡介
銀行家算法c++源代碼
代碼片段和文件信息
#include
using?namespace?std;
#define?MAXPROCESS?50??????????????????????????/*最大進程數*/
#define?MAXRESOURCE?100??????????????????????????/*最大資源數*/
int?AVAILABLE[MAXRESOURCE];??????????????????????/*可用資源數組*/
int?MAX[MAXPROCESS][MAXRESOURCE];??????????????/*最大需求矩陣*/
int?ALLOCATION[MAXPROCESS][MAXRESOURCE];??????/*分配矩陣*/
int?NEED[MAXPROCESS][MAXRESOURCE];??????????????/*需求矩陣*/
int?REQUEST[MAXPROCESS][MAXRESOURCE];??????????/*進程需要資源數*/
bool?FINISH[MAXPROCESS];??????????????????????????/*系統是否有足夠的資源分配*/
int?p[MAXPROCESS];???????????????????????????????/*記錄序列*/
int?mn;??????????????????????????????????????/*m個進程n個資源*/
void?Init();
bool?Safe();
void?Bank();
int?main()
{
??????Init();
??????Bank();?
??????Safe();
}
void?Init()??????????????????/*初始化算法*/
{
??????int?ij;
??????cout<<“請輸入進程的數目:“;
??????cin>>m;
??????cout<<“請輸入資源的種類:“;
??????cin>>n;
??????cout<<“請輸入每個進程最多所需的各資源數按照“< ??????for(i=0;i ????? ?for(j=0;j ?????? cin>>MAX[i][j];
??????
??????cout<<“請輸入每個進程已分配的各資源數也按照“< ????
??for(i=0;i ??????{
??????????for(j=0;j ??????????{
??????????????cin>>ALLOCATION[i][j];
??????????????NEED[i][j]=MAX[i][j]-ALLOCATION[i][j];
??????????????if(NEED[i][j]<0)
??????????????{
??????????????????cout<<“您輸入的第“<??????????????????j--;
??????????????????continue;
??????????????}
??????????}
??????}
??????cout<<“請輸入各個資源現有的數目:“< ?????
??for(i=0;i ??????{
??????????cin>>AVAILABLE[i];
??????}
}
bool?Safe()??????????????????????????????????????/*安全性算法*/
{
??????int?ijkl=0;
??????int?Work[MAXRESOURCE];??????????????????????/*工作數組*/
??????for(i=0;i ????? ?Work[i]=AVAILABLE[i];
??????
??for(i=0;i ??????{
??????????FINISH[i]=false;?//判斷每個進程是否執行過?
??????}
?????
??for(i=0;i ??????{????
??????????if(FINISH[i]==true)
??????????{
??????????????continue;
??????????}
??????????else
??????????{
??????????????for(j=0;j ??????????????{
??????????????????if(NEED[i][j]>Work[j])
??????????????????{
??????????????????????break;
??????????????????}
??????????????}
??????????????if(j==n)
??????????????{?
??????????????????FINISH[i]=true;
??????????????????for(k=0;k ???
評論
共有 條評論