Я реализовал алгоритм банкира. Но я хочу реализовать алгоритм страуса вместе с этим
void display()
{
int i,j;
printf(" \t Alloc \t Max \t Need \t Avail \n");
printf(" \t ");
for(j=0;j<4;j++,printf("\t "))
for(i=0;i<m;i++)
printf("%c",res[j]);
printf("\n");
for(i=0;i<n;i++)
{
printf("P%d\t",i);
for(j=0;j<m;j++)
printf("%d",p[i].alloc[j]);
printf("\t");
for(j=0;j<m;j++)
printf("%d",p[i].max[j]);
printf("\t");
for(j=0;j<m;j++)
printf("%d",p[i].need[j]);
printf("\t");
if(i==0)
{
for(j=0;j<m;j++)
printf("%d\t",av[j]);
}
printf("\n");
}
}
int over()
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(p[i].need[j]!=0)
return 1;
return 0;
}
void banker()
{
int i,j,k,l;
for(i=0,l=0;;i++,l++,i=i%n)
{
if(over()==0)
{
printf("\nAll processes complete\n\nNo Deadlock");
printf("\n\nSafe sequence <");
for(i=0;i<g;i++)
printf(" P%d",safe[i]);
printf(" >");
break;
}
else
{
if(p[i].c==0)
{
for(j=0;j<m;j++)
if(p[i].need[j]>av[j])
break;
if(j==m)
{
safe[g]=i;
g++;
p[i].c=1;
for(j=0;j<m;j++)
{
av[j]=av[j]-p[i].need[j];
p[i].need[j]=0;
p[i].alloc[j]=p[i].max[j];
}
printf("\n\nProcess P%d is executing---\n\n",i);
display();
for(j=0;j<m;j++)
{
av[j]=av[j]+p[i].alloc[j];
p[i].alloc[j]=0;
p[i].max[j]=0;
}
printf("\n\nProcess P%d is completed---\n\n",i);
display();
}
}
}
if(l==25)
{
printf("---Deadlock---");
break;
}
}
}
Этот код проверяет и печатает последовательность алгоритмов банкиров. Теперь я хочу реализовать алгоритм страуса. А также, чтобы убить процесс, чтобы сделать ресурсы доступными для других процессов. Пожалуйста, предложите несколько идей о том, как реализовать их в коде. Это было бы очень полезно, и я также могу поделиться всей своей программой, если вам нужно четкое представление о реализации алгоритма банкира.