Anda di halaman 1dari 2

#include<stdio.

h>
struct arr
{
int pid,n1,n2,n3,m1,m2,m3,done;
};
int main()
{
int n,i,j,a,b,c;
scanf("%d",&n);
struct arr p[n];
for(i=0;i<n;i++)
{
printf("\nEnter process %d allocated resources: ",i);
scanf("%d %d %d",&a,&b,&c);
p[i].pid=i;
p[i].n1=a;
p[i].n2=b;
p[i].n3=c;
printf("\nEnter process %d Maximum resources: ",i);
scanf("%d %d %d",&a,&b,&c);
p[i].m1=a;
p[i].m2=b;
p[i].m3=c;
p[i].done=0;
}
printf("\nEnter total available resources: ");
scanf("%d %d %d",&a,&b,&c);
for(i=0;i<n;i++)
{
a-=p[i].n1;
b-=p[i].n2;
c-=p[i].n3;
}
int remain=n;
j=0;
int ar[n];
while(remain)
{
int x=remain;
for(i=0;i<n;i++)
{
if(!p[i].done)
{
if((p[i].m1-p[i].n1)<=a && (p[i].m2-p[i].n2)<=b &&
(p[i].m3-p[i].n3)<=c)
{
p[i].done=1;
a+=p[i].n1;
b+=p[i].n2;
c+=p[i].n3;
remain--;
ar[j]=p[i].pid;
j++;
}
}
}
if(x==remain)
break;
}
if(remain)
printf("Deadlock");
else
{
printf("Deadlock Free System\n");
printf("Execution sequence: ");
for(i=0;i<n;i++)
printf("%d ",ar[i]);
}
printf("\n");
}

Anda mungkin juga menyukai