Последний использованный алгоритм подкачки - PullRequest
0 голосов
/ 28 марта 2020

Я использую алгоритм подкачки MRU (последний использовавшийся) и предположим, что у нас есть строка: 3 5 2 2 0 4 6 4 4 1 3 4 5 0 4 5 6 2 0 0 1

Вот код ниже:

//int * A = array, int N = number of elements, int PAGE_TABLE_SIZE = # page frames entered
int MRU(int * A, int N, int PAGE_TABLE_SIZE)
{
    int i = 0, j = 0 , k = 0, page_faults = 0;
    //indexes
    int previous_num = 0 , next_num = 1;
    //temp array
    int temp[PAGE_TABLE_SIZE];
    for(; i < PAGE_TABLE_SIZE; i++)
        temp[i] = -1;

    for(i = 0; i < N; i++)
    {
        j = 0;
        for(k = 0; k < PAGE_TABLE_SIZE; k++)
        {
            if(A[i] == temp[k])
            {
                j++;
                page_faults -= 1;
            }
        }
        page_faults++;
        if((page_faults <= PAGE_TABLE_SIZE) && (j == 0))
        {
            temp[i] = A[i];
        }
        else if(j == 0)
        {
            //if a new page fault then:
            //correctly places the new page item
            //onto its correct place in temp array
            temp[previous_num] = A[i];

            page_faults++;
        }

        if(next_num != N+1 && previous_num != N-1)
        {
            previous_num++;
            next_num++;
            printf("PREV = %d & NEXT = %d\n",A[previous_num],A[next_num]);
        }

    }

    return page_faults;
}

Мой вопрос: я пытаюсь получить ошибки страницы, которые возникают, но я не думаю, что мои логики c правильны в отношении этого фрагмента кода:

page_faults++;
        if((page_faults <= PAGE_TABLE_SIZE) && (j == 0))
        {
            temp[i] = A[i];
        }
        else if(j == 0)
        {
            //if a new page fault then:
            //correctly places the new page item
            //onto its correct place in temp array
            temp[previous_num] = A[i];

            page_faults++;
        }

Если число новое и его нет в временном массиве страницы, то оно должно поменяться с тем, которое мы поменяли местами в последнее время ... Спасибо за помощь (:

...