Professional Documents
Culture Documents
Bankers Algorithm
Bankers Algorithm
h>
int maximum[10][10],need[10][10],allocation[10][10];
int available[10];
vector<int> q;
for(int i=0;i<m;i++)
{
if(curr[i]>work[i])
return false;
}
return true;
int work[m];
for(int i=0;i<m;i++)
work[i]=available[i];
bool finished[n];
for(int i=0;i<n;i++)
finished[i]=false;
int k;
while(k<n)
{
for(int i=0;i<n;i++)
{
int curr[m];
for(int j=0;j<m;j++)
curr[j]=need[i][j];
bool b = check(work,curr,m);
if(!finished[i]&&b)
{
finished[i]=1;
for(int j=0;j<m;j++)
work[j]+=allocation[i][j];
q.push_back(i);
}
}
k++;
}
for(int i=0;i<m;i++)
{
if(!finished[i])
return false;
}
return true;
int curr[m];
for(int j=0;j<m;j++)
curr[j]=need[i][j];
if(check(curr,request,m))
{
int allo[m];
for(int j=0;j<m;j++)
allo[j]=available[j];
if(check(allo,request,m))
{
for(int k=0;k<m;k++)
{
available[k]-=request[k];
allocation[i][k]+=request[k];
need[i][k]-=request[k];
}
return true;
}
else
{
return false;
}
}
else
{
return false;
}
int main()
int n,m;
cin>>m;
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Enter maximum need of "<<i<<"th process:"<<endl;
for(int j=0;j<m;j++)
{
cin>>maximum[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>allocation[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
need[i][j]=maximum[i][j]-allocation[i][j];
}
}
for(int i=0;i<m;i++)
cin>>available[i];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<maximum[i][j]<<" ";
cout<<endl;
}
cout<<"Allocation Table\n";
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<allocation[i][j]<<" ";
cout<<endl;
}
cout<<"Need Table\n";
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<need[i][j]<<" ";
cout<<endl;
}
int ch;
while(ch!=3)
{
cin>>ch;
switch(ch)
{
case 1:
if(safety(m,n))
{
cout<<"Sequence of Processes"<<endl;
for(int i=0;i<q.size();i++)
{
cout<<"Process "<<q[i]<<"->";
}
}
else
break;
case 2:
int request[m];
int pn;
cin>>pn;
pn--;
for(int i=0;i<m;i++)
cin>>request[i];
if(request_res(request,pn,m))
cout<<"Request granted";
else
cout<<"Request denied";
break;
}
}