Я реализовал алгоритм банкира. Но я хочу реализовать алгоритм страуса вместе с этим

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;
        }
    }
}

Этот код проверяет и печатает последовательность алгоритмов банкиров. Теперь я хочу реализовать алгоритм страуса. А также, чтобы убить процесс, чтобы сделать ресурсы доступными для других процессов. Пожалуйста, предложите несколько идей о том, как реализовать их в коде. Это было бы очень полезно, и я также могу поделиться всей своей программой, если вам нужно четкое представление о реализации алгоритма банкира.

0 ответов

Другие вопросы по тегам