Monday, 19 November 2012

OS BANKERS ALGORITHM PROGRAM


#include<stdio.h>
#include<string.h>
void main()
{
int max[10][10],need[10][10],alloc[10][10],finish[10]={0},avail[10],work[10];
int i,j,count=0,t,p,r;
printf("Enter the no of processes:\n");
scanf("%d",&p);
printf("Enter the no of resources:\n");
scanf("%d",&r);
printf("Enter the max for each process:");
for(i=0;i<p;i++)
{
printf("\nFor process %d",i);
for(j=0;j<r;j++)
{
scanf("%d",&max[i][j]);
}
}
printf("Enter the allocation for each process:\n");
for(i=0;i<p;i++)
{
printf("\nFor process %d",i);
for(j=0;j<r;j++)
{
scanf("%d",&alloc[i][j]);
}
}
printf("Enter availability of each resource:");
for(j=0;j<r;j++)
scanf("%d",&avail[j]);
do{
for(j=0;j<r;j++)
work[j]=avail[j];

for(i=0;i<p;i++)
{
for(j=0;j<r;j++)
{
need[i][j]=max[i][j]-alloc[i][j];

}
}
count=0;
while(count<8)
{

for(i=0;i<p;i++)
{

for(j=0;j<r;j++)
{

if(finish[i]==0 && need[i][j]<=work[j])
;
else
break;
}
if(j>=r)
{

for(t=0;t<r;t++)
{
work[t]+=max[i][t];
}
finish[i]=1;
printf("\t%d",i);
}
}
count++;
}
for(i=0;i<p;i++)
if(finish[i]!=1)
break;
if(i==p)
printf("\nsystem is in safe state");
else
printf("\nunsafe state");
for(i=0;i<p;i++)
finish[i]=0;
printf("\nAre there any extra resource requests?.....");
scanf("%d",&i);
if(i)
{
printf("\nBy which process...");
scanf("%d",&t);
printf("\nEnter request...");
for(j=0;j<r;j++)
{
scanf("%d",&i);
alloc[t][j]+=i;
avail[j]-=i;
}
}
else
break;
}while(1);
}

 

No comments:

Post a Comment