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. } 
  6. frames[20];

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

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

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

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


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. { 
  23.   int selfno=0,fno;
  24.   for(fno=1; fno<n; fno++)
  25.   {
  26.     if(frames[fno].frequency>frames[selfno].frequency)
  27.       selfno=fno;
  28.   }
  29.   return selfno;
  30. }
  31.  
  32. int get_free_frame()
  33. { 
  34.   int fno;
  35.   for(fno=0; fno<n; fno++)
  36.   {
  37.     if(frames[fno].pno==-1)
  38.       return(fno);
  39.   }
  40.   return(-1);
  41. }
  42.  
  43. void main()
  44. {
  45. int p_request[]={5,8,10,14,10,9,5,10,8,5,1,10,9,12,10};
  46. int size=15;
  47. int page_fault=0,i,j,fno;
  48. printf("\nHow many frames :");
  49. scanf("%d",&n);

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

                                                                                                                                                                                         


                                                                                                                                                                            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. { 
                                                                                                                                                                            24.    int fno;
                                                                                                                                                                            25.    for(fno=0; fno<n; fno++)
                                                                                                                                                                            26.    {
                                                                                                                                                                            27.      if(frames[fno].pno==-1)
                                                                                                                                                                            28.       return(fno);
                                                                                                                                                                            29.     }
                                                                                                                                                                            30.   return(-1);
                                                                                                                                                                            31. }
                                                                                                                                                                            32.   
                                                                                                                                                                            33.   
                                                                                                                                                                            34. int get_mru_frame()
                                                                                                                                                                            35. {
                                                                                                                                                                            36.   int mrufno=0,fno;
                                                                                                                                                                            37.    for(fno=1; fno<n; fno++)
                                                                                                                                                                            38.    {
                                                                                                                                                                            39.    if(frames[fno].counter>frames[mrufno].counter)
                                                                                                                                                                            40.    mrufno=fno;
                                                                                                                                                                            41.    }
                                                                                                                                                                            42.   return mrufno;
                                                                                                                                                                            43. }    

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

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

                                                                                                                                                                              

                                                                                                                                                                                         


                                                                                                                                                                            Comments

                                                                                                                                                                            Another posts