#include<stdio.h>
#define sz 10
int alloc[sz][sz],max[sz][sz],need[sz][sz],ava[sz],pr,re;
int flag[sz],seq[sz];
void create();
void disp();
void check();
void request();
void need_mat();
void main()
{
int ch,i;
do
{
printf("\n\t MENU\n\t1.create\n\t2.Display Matrices\n\t3.Check State\n\t4.Request\n\t5.EXIT");
printf("\nEnter choice :- ");
scanf("%d",&ch);
switch(ch)
{
case 1:
create();
break;
case 2:
disp();
break;
case 3:
check();
break;
case 4:
request();
break;
case 5:
break;
}
}while(ch!=5);
}
void request()
{
int i,j,n;
printf("\nEnter Process Number to change it's Allocation :- ");
scanf("%d",&n);
printf("\nEnter Values for p-%d",n);
for(i=0;i<re;i++)
scanf("%d",&alloc[n][i]);
need_mat();
}
void need_mat()
{
int i,j;
for(i=0;i<pr;i++)
{
for(j=0;j<re;j++)
{
need[i][j]=max[i][j]-alloc[i][j];
}
}
}
void check()
{
int i,j=1,k,cnt1=0,cnt=-1;
while(cnt!=cnt1)
{
cnt=cnt1;
for(i=0;i<pr;i++)
{
if((flag[i]==0) && (need[i][0]<=ava[0]) && (need[i][1]<=ava[1]) && (need[i][2]<=ava[2]))
{
cnt1++;
seq[cnt1-1]=i;
for(k=0;k<re;k++)
ava[k]=ava[k]+need[i][k];
printf("\n\nAt the %d step,\nAvailable Resources are :-",j);
for(k=0;k<re;k++)
printf(" %d",ava[k]);
j++;
flag[i]=1;
}
}
}
if(cnt1==pr)
{
printf("\n\nSAFE SEQUENCE ==>>");
for(i=0;i<pr;i++)
printf("\tP%d",seq[i]);
}
else
printf("\n\nDANGEROUS SEQUENCE !!!!!");
printf("\n\n");
// cnt1=0;
// cnt=-1;
}
void disp()
{
int i,j,k;
printf("\n Available Resources :- \n");
for(i=0;i<pr;i++)
printf("\t%d",ava[i]);
printf("\n Allocation Matrix :- ");
for(i=0;i<pr;i++)
{ printf("\n");
for(j=0;j<re;j++)
{
printf("\t%d",alloc[i][j]);
}
}
printf("\n MAX Matrix :- ");
for(i=0;i<pr;i++)
{ printf("\n");
for(j=0;j<re;j++)
{
printf("\t%d",max[i][j]);
}
}
printf("\n NEED Matrix :- ");
for(i=0;i<pr;i++)
{ printf("\n");
for(j=0;j<re;j++)
{
printf("\t%d",need[i][j]);
}
}
}
void create()
{
int i,j,k;
printf("\nEnter the number of processes :- ");
scanf("%d",&pr);
printf("\nEnter the number of resources :- ");
scanf("%d",&re);
printf("\nEnter Allocation Matrix :- ");
for(i=0;i<pr;i++)
for(j=0;j<re;j++)
{
scanf("%d",&alloc[i][j]);
}
printf("\nEnter MAX Matrix :- ");
for(i=0;i<pr;i++)
for(j=0;j<re;j++)
{
scanf("%d",&max[i][j]);
}
printf("\nEnter Available resources :- ");
for(j=0;j<re;j++)
{
scanf("%d",&ava[j]);
}
need_mat();
}
#define sz 10
int alloc[sz][sz],max[sz][sz],need[sz][sz],ava[sz],pr,re;
int flag[sz],seq[sz];
void create();
void disp();
void check();
void request();
void need_mat();
void main()
{
int ch,i;
do
{
printf("\n\t MENU\n\t1.create\n\t2.Display Matrices\n\t3.Check State\n\t4.Request\n\t5.EXIT");
printf("\nEnter choice :- ");
scanf("%d",&ch);
switch(ch)
{
case 1:
create();
break;
case 2:
disp();
break;
case 3:
check();
break;
case 4:
request();
break;
case 5:
break;
}
}while(ch!=5);
}
void request()
{
int i,j,n;
printf("\nEnter Process Number to change it's Allocation :- ");
scanf("%d",&n);
printf("\nEnter Values for p-%d",n);
for(i=0;i<re;i++)
scanf("%d",&alloc[n][i]);
need_mat();
}
void need_mat()
{
int i,j;
for(i=0;i<pr;i++)
{
for(j=0;j<re;j++)
{
need[i][j]=max[i][j]-alloc[i][j];
}
}
}
void check()
{
int i,j=1,k,cnt1=0,cnt=-1;
while(cnt!=cnt1)
{
cnt=cnt1;
for(i=0;i<pr;i++)
{
if((flag[i]==0) && (need[i][0]<=ava[0]) && (need[i][1]<=ava[1]) && (need[i][2]<=ava[2]))
{
cnt1++;
seq[cnt1-1]=i;
for(k=0;k<re;k++)
ava[k]=ava[k]+need[i][k];
printf("\n\nAt the %d step,\nAvailable Resources are :-",j);
for(k=0;k<re;k++)
printf(" %d",ava[k]);
j++;
flag[i]=1;
}
}
}
if(cnt1==pr)
{
printf("\n\nSAFE SEQUENCE ==>>");
for(i=0;i<pr;i++)
printf("\tP%d",seq[i]);
}
else
printf("\n\nDANGEROUS SEQUENCE !!!!!");
printf("\n\n");
// cnt1=0;
// cnt=-1;
}
void disp()
{
int i,j,k;
printf("\n Available Resources :- \n");
for(i=0;i<pr;i++)
printf("\t%d",ava[i]);
printf("\n Allocation Matrix :- ");
for(i=0;i<pr;i++)
{ printf("\n");
for(j=0;j<re;j++)
{
printf("\t%d",alloc[i][j]);
}
}
printf("\n MAX Matrix :- ");
for(i=0;i<pr;i++)
{ printf("\n");
for(j=0;j<re;j++)
{
printf("\t%d",max[i][j]);
}
}
printf("\n NEED Matrix :- ");
for(i=0;i<pr;i++)
{ printf("\n");
for(j=0;j<re;j++)
{
printf("\t%d",need[i][j]);
}
}
}
void create()
{
int i,j,k;
printf("\nEnter the number of processes :- ");
scanf("%d",&pr);
printf("\nEnter the number of resources :- ");
scanf("%d",&re);
printf("\nEnter Allocation Matrix :- ");
for(i=0;i<pr;i++)
for(j=0;j<re;j++)
{
scanf("%d",&alloc[i][j]);
}
printf("\nEnter MAX Matrix :- ");
for(i=0;i<pr;i++)
for(j=0;j<re;j++)
{
scanf("%d",&max[i][j]);
}
printf("\nEnter Available resources :- ");
for(j=0;j<re;j++)
{
scanf("%d",&ava[j]);
}
need_mat();
}
No comments:
Post a Comment