Skip to main content

Assignment : 4

Assignment : 4


Set A

i. Write the simulation program to implement demand paging and show the page

scheduling and total number of page faults for the following given page reference string.

Give input n as the number of memory frames.

Reference String : 12,15,12,18,6,8,11,12,19,12,6,8,12,15,19,8

1) Implement FIFO

CODE:

👇

  1. #include<stdio.h>
  2. struct frmnode
  3. {
  4. int pno;
  5. }frames[20];
  6. int n;

  7. int page_found(int pno)
  8. {
  9. int fno;
  10. for(fno=0; fno<n; fno++)
  11. {
  12. if(frames[fno].pno==pno)
  13. return fno;
  14. }
  15. return -1;
  16. }

  17. int get_free_frames()
  18. {
  19. int fno;
  20. for(fno=0; fno<n; fno++)
  21. {
  22. if(frames[fno].pno== -1)
  23. return(fno);
  24. }
  25. return(-1);
  26. }

  27. int get_fifo_frame()
  28. {
  29. static int fno = -1;
  30. fno = (fno+1)%n;
  31. return(fno);
  32. }

  33. int main()
  34. {
  35. int p_request[] = {5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
  36. int size = sizeof(p_request)/4;
  37. int page_faults = 0, i, j, fno;
  38. printf("\nHow many frames:\t");
  39. scanf("%d", &n);
  40. for(i=0; i<n; i++)
  41. {
  42. frames[i].pno = -1;
  43. }

  44. printf("\nPageNO      Page Frames     Page Faults");
  45. printf("\n--------------------------------------------------------");
  46. for(i=0; i<size; i++)
  47. {
  48. j=page_found(p_request[i]);
  49. if(j == -1)
  50. {
  51. page_faults++;
  52. j = get_free_frames();
  53. if(j == -1)
  54. j = get_fifo_frame();
  55. frames[j].pno = p_request[i];
  56. printf("\n%4d\t",p_request[i]);
  57. for(fno=0; fno<n; fno++)
  58. printf("%4d",frames[fno].pno);
  59. printf("\tYES");
  60. }
  61. else
  62. {
  63. printf("\n%4d\t",p_request[i]);
  64. for(fno=0; fno < n; fno++)
  65. printf("%4d",frames[fno].pno);
  66. printf("\t NO");
  67. }
  68. }
  69. printf("\n--------------------------------------------------------");
  70. printf("\nNumber of Page Faults = %d", page_faults);
  71. printf("\n");
  72. }


2) Implement LRU

CODE:

👇

  1. #include<stdio.h>
  2. struct frmnode
  3. {
  4. int pno,counter;
  5. frames[20];

  6. int n;
  7. int page_found(int pno)
  8. {
  9. int fno;
  10. for(fno=0;fno<n;fno++)
  11. {
  12. if(frames[fno].pno==pno)
  13. return fno;
  14. }
  15. return -1;
  16. }

  17. int get_free_frame()
  18. {
  19. int fno;
  20. for (fno=0;fno<n;fno++)
  21. {
  22. if(frames[fno].pno==-1)
  23. return(fno);
  24. }
  25. return(-1);
  26. }

  27. int get_lru_frame()
  28. {
  29. int lrufno=0,fno;
  30. for(fno=1;fno<n;fno++)
  31. {
  32. if(frames[fno].counter<frames[lrufno].counter)
  33. lrufno=fno;
  34. }
  35. return lrufno;
  36. }
  37. void main()
  38. {
  39. int p_request[]={5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
  40. int size=sizeof(p_request)/4,currtime;
  41. int page_faults=0,i,j,fno;
  42. printf("\n How many Frame: ");
  43. scanf("%d",&n);
  44. for(i=0;i<n;i++)
  45. {
  46. frames[i].pno=-1;
  47. }
  48. printf("\nPageNo    PageFrames    PageFault");
  49. printf("\n------------------------------------------------");
  50. currtime=0;
  51. for(i=0;i<size;i++)
  52. {
  53. j=page_found(p_request[i]);
  54. if(j==-1)
  55. {
  56. page_faults++;
  57. j=get_free_frame();
  58. if(j==-1)
  59. j=get_lru_frame();
  60. frames[j].pno=p_request[i];
  61. frames[j].counter=currtime;
  62. printf("\n%4d\t",p_request[i]);
  63. for(fno=0;fno<n;fno++)
  64. printf("%4d:%2d",frames[fno].pno,frames[fno].counter);
  65. printf("\t:YES");
  66. }
  67. else
  68. {
  69. frames[j].counter=currtime;
  70. printf("\n%4d\t",p_request[i]);
  71. for(fno=0;fno<n;fno++)
  72. printf("%4d:%2d",frames[fno].pno,frames[fno].counter);
  73. printf("\t:NO");
  74. }
  75. currtime++;
  76. }

  77. printf("\n------------------------------------------------");
  78. printf("\n Number of page_Faults=%d",page_faults);
  79. printf("\n");
  80. }


Set B:

I. Write the simulation program to implement demand paging and show the page

scheduling and total number of page faults for the following given page reference string.

Give input n as the number of memory frames.

Reference String : 12,15,12,18,6,8,11,12,19,12,6,8,12,15,19,8

1) Implement MFU

CODE:

👇


  1. #include<stdio.h>
  2. struct node
  3. {
  4.   int pno,frequency;
  5. }
  6.   
  7. frames[20];
  8. int n;
  9.   
  10. int page_found(int pno)
  11. {
  12.   int fno;
  13.   for(fno=0;fno<n;fno++)
  14.   {
  15.     if(frames[fno].pno==pno)
  16.       return fno;
  17.   }
  18.   return -1;
  19. }
  20.   
  21. int get_mfu_frame()
  22.   int selfno=0,fno;
  23.   for(fno=1; fno<n; fno++)
  24.   {
  25.     if(frames[fno].frequency>frames[selfno].frequency)
  26.       selfno=fno;
  27.   }
  28.   return selfno;
  29. }
  30.  
  31. int get_free_frame()
  32.   int fno;
  33.   for(fno=0; fno<n; fno++)
  34.   {
  35.     if(frames[fno].pno==-1)
  36.       return(fno);
  37.   }
  38.   return(-1);
  39. }
  40.  
  41. void main()
  42. {
  43. int p_request[]={5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
  44. int size=15;
  45. int page_fault=0,i,j,fno;
  46. printf("\nHow many frames :");
  47. scanf("%d",&n);

  48. for(i=0; i<n; i++)
  49. {
  50.   frames[i].pno=-1;
  51. frames[i].frequency=0;
  52. }
  53.   
  54. printf("\nPageNo      PageFrames         PageFault");
  55. printf("\n----------------------------------------------------------");
  56. for(i=0; i<size; i++)
  57. {
  58. j=page_found(p_request[i]);
  59. if(j==-1) 
  60.   {
  61.     j=get_free_frame();
  62.     if(j==-1)
  63.     j=get_mfu_frame();
  64. page_fault++;
  65. frames[j].pno=p_request[i];
  66. frames[j].frequency++;
  67. printf("\n%4d\t",p_request[i]);
  68. for(fno=0; fno<n; fno++)
  69. printf("%4d:%2d\t",frames[fno].pno,frames[fno].frequency);
  70. printf("YES");
  71.   }  
  72.   else
  73. {
  74. frames[j].frequency++;
  75.     printf("\n%4d\t",p_request[i]);
  76.   for(fno=0; fno<n; fno++)
  77.   printf("%4d:%2d\t",frames[fno].pno,frames[fno].frequency);  
  78.   printf("NO");
  79.   }
  80. }
  81. printf("\n-------------------------------------------------------");
  82. printf("\nNumber of Page Faults=%d",page_fault);
  83. }   

                                                                                                                                                                                         


                                                                                                                                                                            Set C:

                                                                                                                                                                            I. Write the simulation program to implement demand paging and show the page

                                                                                                                                                                            scheduling and total number of page faults for the following given page reference string.

                                                                                                                                                                            Give input n as the number of memory frames.

                                                                                                                                                                            Reference String: 2,5,2,8,5,4,1,2,3,2,6,1,2,5,9,8

                                                                                                                                                                            1) Implement MRU

                                                                                                                                                                            CODE:

                                                                                                                                                                            👇

                                                                                                                                                                            1. #include<stdio.h>
                                                                                                                                                                            2. struct frmnode
                                                                                                                                                                            3. {
                                                                                                                                                                            4.   int pno,counter;
                                                                                                                                                                            5.   }
                                                                                                                                                                            6.   
                                                                                                                                                                            7.   frames[20];
                                                                                                                                                                            8.   int n;
                                                                                                                                                                            9.   
                                                                                                                                                                            10.   int page_found(int pno)
                                                                                                                                                                            11.   {
                                                                                                                                                                            12.     int fno;
                                                                                                                                                                            13.     for(fno=0;fno<n;fno++)
                                                                                                                                                                            14.     {
                                                                                                                                                                            15.       if(frames[fno].pno==pno)
                                                                                                                                                                            16.         return fno;
                                                                                                                                                                            17.      }
                                                                                                                                                                            18.    return -1;
                                                                                                                                                                            19.  }
                                                                                                                                                                            20.  
                                                                                                                                                                            21.  
                                                                                                                                                                            22. int get_free_frame()
                                                                                                                                                                            23.    int fno;
                                                                                                                                                                            24.    for(fno=0; fno<n; fno++)
                                                                                                                                                                            25.    {
                                                                                                                                                                            26.      if(frames[fno].pno==-1)
                                                                                                                                                                            27.       return(fno);
                                                                                                                                                                            28.     }
                                                                                                                                                                            29.   return(-1);
                                                                                                                                                                            30. }
                                                                                                                                                                            31.   
                                                                                                                                                                            32.   
                                                                                                                                                                            33. int get_mru_frame()
                                                                                                                                                                            34. {
                                                                                                                                                                            35.   int mrufno=0,fno;
                                                                                                                                                                            36.    for(fno=1; fno<n; fno++)
                                                                                                                                                                            37.    {
                                                                                                                                                                            38.    if(frames[fno].counter>frames[mrufno].counter)
                                                                                                                                                                            39.    mrufno=fno;
                                                                                                                                                                            40.    }
                                                                                                                                                                            41.   return mrufno;
                                                                                                                                                                            42. }    

                                                                                                                                                                            43.  
                                                                                                                                                                            44. void main()
                                                                                                                                                                            45. {
                                                                                                                                                                            46. int p_request[]={5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
                                                                                                                                                                            47. int size=sizeof(p_request)/4,currtime;

                                                                                                                                                                            48. int page_fault=0,i,j,fno;
                                                                                                                                                                            49. printf("\nHow many frames :");
                                                                                                                                                                            50. scanf("%d",&n);
                                                                                                                                                                            51. for(i=0; i<n; i++)
                                                                                                                                                                            52. {
                                                                                                                                                                            53.    frames[i].pno=-1;
                                                                                                                                                                            54.   }
                                                                                                                                                                            55.   
                                                                                                                                                                            56.   printf("\nPageNo      PageFrames         PageFault");
                                                                                                                                                                            57.   printf("\n----------------------------------------------------------");
                                                                                                                                                                            58.   currtime=0;
                                                                                                                                                                            59.   for(i=0; i<size; i++)
                                                                                                                                                                            60.   {
                                                                                                                                                                            61. j=page_found(p_request[i]);
                                                                                                                                                                            62. if(j==-1) 
                                                                                                                                                                            63.      {
                                                                                                                                                                            64.        page_fault++;
                                                                                                                                                                            65.        j=get_free_frame();
                                                                                                                                                                            66.        if(j==-1)//no free frame -do page replacement
                                                                                                                                                                            67.        
                                                                                                                                                                            68.   j=get_mru_frame();
                                                                                                                                                                            69.   frames[j].pno=p_request[i];//load page in frame
                                                                                                                                                                            70.   frames[j].counter=currtime;
                                                                                                                                                                            71.   printf("\n%4d\t",p_request[i]);
                                                                                                                                                                            72.    for(fno=0; fno<n; fno++)
                                                                                                                                                                            73. printf("%4d:%2d\t",frames[fno].pno,frames[fno].counter);
                                                                                                                                                                            74. printf("YES");
                                                                                                                                                                            75.     }
                                                                                                                                                                            76.    
                                                                                                                                                                            77.   else
                                                                                                                                                                            78.   {
                                                                                                                                                                            79.   frames[j].counter=currtime;
                                                                                                                                                                            80. printf("\n%4d\t",p_request[i]);
                                                                                                                                                                            81.   for(fno=0; fno<n; fno++)
                                                                                                                                                                            82.    printf("%4d:%2d\t",frames[fno].pno,frames[fno].counter);  
                                                                                                                                                                            83.    printf("NO");
                                                                                                                                                                            84.     }
                                                                                                                                                                            85.     currtime++;        
                                                                                                                                                                            86.    }
                                                                                                                                                                            87. printf("\n-------------------------------------------------------");
                                                                                                                                                                            88. printf("\nNumber of Page Faults=%d",page_fault);
                                                                                                                                                                            89. }   

                                                                                                                                                                              

                                                                                                                                                                                         


                                                                                                                                                                            Comments