Question: In this problem, we will compare the performance of the two algorithms that you implemented in Problem 1 and Problem 2, respectively. In comparing the

In this problem, we will compare the performance of the two algorithms that you implemented in Problem 1 and Problem 2, respectively. In comparing the performance, we will vary the number of frames from 1 to 7.
For each number of frames (i.e., from 1 to 7), execute the LRU and OPT algorithms with the input of 1,000 reference strings. Each string should consist of 10 randomly selected integers between 0 and 20. In other words, for each number of frames, run both algorithms 1,000 times with those randomly generated 1,000 reference strings and record the number of page faults, and calculate the average number of page faults for both algorithms.
Display the results using a graph that may look something like this.

LRU OPT Number of Page Faults | 1 2 3 4 5 6 Number of frames 7


 

Problem 1 code:

#include

#include

int LRU(int time[], int n){

   int i;

   int min = time[0];

   int min_index = 0;

   for(i = 1; i < n; ++i){

       if(time[i] < min){

           min = time[i];

           min_index = i;

       }

   }

   return min_index;

}

int main(){

    int no_of_frames = 4;

   int no_of_pages = 10;

   int frames[4];

   int reference_str[10];

   int i,j;

   int faults = 0;

   printf("Enter reference string: ");

    for(i = 0; i < no_of_pages; ++i){

       scanf("%d", &reference_str[i]);

    }

   for(i = 0; i < no_of_frames; ++i){

       frames[i] = -1;

    }

    int ctr = 0;

    int time[4];

    for(i = 0; i < no_of_pages; ++i){

       int flag1 = 0;

       int flag2 = 0;

      

       for(j = 0; j < no_of_frames; ++j){

           if(frames[j] == reference_str[i]){

               ctr++;

               time[j] = ctr;

                  flag1 = flag2 = 1;

                  break;

            }

       }

       if(flag1 == 0){

           for(j = 0; j < no_of_frames; ++j){

               if(frames[j] == -1){

                   ctr++;

                   faults++;

                   frames[j] = reference_str[i];

                   time[j] = ctr;

                   flag2 = 1;

                   break;

               }

           }  

       }

       if(flag2 == 0){

           int min_index = LRU(time, no_of_frames);

           ctr++;

           faults++;

           frames[min_index] = reference_str[i];

           time[min_index] = ctr;

       }

           printf("Displaying the 4 frames contents after each reference:");

       printf("After refernce of %d ",reference_str[i]);

       for(j = 0; j < no_of_frames; ++j){

           printf("%dt", frames[j]);

       }

       printf("");

   }

   printf("%d Page Faults occurred ", faults);

    return 0;

}

Problem 2 code:

#include

int main(){

    int numberOfFrames=4, numberOfPages=10, framesArray[4], pagesArray[10], tempArray[10], f1, f2, f3, i, j, k, position, maximum, numberOfFaults = 0;

    printf("Enter the reference string: ");

    for(i = 0; i < numberOfPages; ++i){

        do{

            scanf("%d", &pagesArray[i]);

        }

        while(pagesArray[i]<0||pagesArray[i]>20);

    }

    for(i = 0; i < numberOfFrames; ++i){

        framesArray[i] = -1;

    }

    for(i = 0; i < numberOfPages; ++i){

        f1 = f2 = 0;

        for(j = 0; j < numberOfFrames; ++j){

            if(framesArray[j] == pagesArray[i]){

            f1 = f2 = 1;

            break;

            }

        }

        if(f1 == 0){

            for(j = 0; j < numberOfFrames; ++j){

                if(framesArray[j] == -1){

                    numberOfFaults++;

                    framesArray[j] = pagesArray[i];

                    f2 = 1;

                    break;

                }

            }

        }

        if(f2 == 0){

            f3 =0;

            for(j = 0; j < numberOfFrames; ++j){

                tempArray[j] = -1;

                for(k = i + 1; k < numberOfPages; ++k){

                    if(framesArray[j] == pagesArray[k]){

                        tempArray[j] = k;

                        break;

                    }

                }

            }

            for(j = 0; j < numberOfFrames; ++j){

                if(tempArray[j] == -1){

                    position = j;

                    f3 = 1;

                    break;

                }

            }

            if(f3 ==0){

                maximum = tempArray[0];

                position = 0;

                for(j = 1; j < numberOfFrames; ++j){

                    if(tempArray[j] > maximum){

                        maximum = tempArray[j];

                        position = j;

                    }

                }    

            }

            framesArray[position] = pagesArray[i];

            numberOfFaults++;

        }

        printf("");

        for(j = 0; j < numberOfFrames; ++j){

        printf("%dt", framesArray[j]);

        }

    }

    printf("%d page faults occurred!", numberOfFaults);

    return 0;

}

LRU 1 2 3 4 5 6 7 Number of frames Number of Page Faults

Step by Step Solution

3.28 Rating (154 Votes )

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock

Solution include int mein nt i ... View full answer

blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Accounting Questions!