資源簡介
編制銀行家算法通用程序,并檢測思考題中所給狀態的安全性。
代碼片段和文件信息
#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()
{int?chose;
????Init();
????Safe();
????Bank();
}
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];
????}
}
void?Bank()????????????????/*銀行家算法*/
{
????int?icusneed;
????char?again;
????while(1)
????{
????????cout<<“請輸入要申請資源的進程號(注:第1個進程號為0依次類推)“< ????????cin>>cusneed;
????????cout<<“請輸入進程所請求的各資源的數量“< ????????for(i=0;i ????????{
????????????cin>>REQUEST[cusneed][i];
????????}
????????for(i=0;i ????????{
????????????if(REQUEST[cusneed][i]>NEED[cusneed][i])
????????????{
????????????????cout<<“您輸入的請求數超過進程的需求量!請重新輸入!“< ????????????????continue;
????????????}
????????????if(REQUEST[cusneed][i]>AVAILABLE[i])
????????????{
????????????????cout<<“您輸入的請求數超過系統有的資源數!請重新輸入!“< ????????????????continue;
?????
- 上一篇:基于MFC和OPENGL的五軸G代碼仿真
- 下一篇:VC++連接STK
評論
共有 條評論