fork download
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5. int no_of_frames, no_of_pages, frames[10], pages[30], temp[10], flag1, flag2, flag3, i, j, k, pos, max, faults = 0;
  6. printf("\nEnter number of frames: ");
  7. scanf("%d", &no_of_frames);
  8.  
  9. printf("\nEnter number of pages: ");
  10. scanf("%d", &no_of_pages);
  11.  
  12. printf("\nEnter page reference string: ");
  13.  
  14. for(i = 0; i < no_of_pages; ++i){
  15. scanf("%d", &pages[i]);
  16. }
  17. /* Visit www.rgpv.tk for more */
  18. for(i = 0; i < no_of_frames; ++i){
  19. frames[i] = -1;
  20. }
  21.  
  22. for(i = 0; i < no_of_pages; ++i){
  23. flag1 = flag2 = 0;
  24.  
  25. for(j = 0; j < no_of_frames; ++j){
  26. if(frames[j] == pages[i]){
  27. flag1 = flag2 = 1;
  28. break;
  29. }
  30. }
  31. /* Aditya Jain */
  32. if(flag1 == 0){
  33. for(j = 0; j < no_of_frames; ++j){
  34. if(frames[j] == -1){
  35. faults++;
  36. frames[j] = pages[i];
  37. flag2 = 1;
  38. break;
  39. }
  40. }
  41. }
  42.  
  43. if(flag2 == 0){
  44. flag3 =0;
  45.  
  46. for(j = 0; j < no_of_frames; ++j){
  47. temp[j] = -1;
  48.  
  49. for(k = i + 1; k < no_of_pages; ++k){
  50. if(frames[j] == pages[k]){
  51. temp[j] = k;
  52. break;
  53. }
  54. }
  55. }
  56.  
  57. for(j = 0; j < no_of_frames; ++j){
  58. if(temp[j] == -1){
  59. pos = j;
  60. flag3 = 1;
  61. break;
  62. }
  63. }
  64.  
  65. if(flag3 ==0){
  66. max = temp[0];
  67. pos = 0;
  68.  
  69. for(j = 1; j < no_of_frames; ++j){
  70. if(temp[j] > max){
  71. max = temp[j];
  72. pos = j;
  73. }
  74. }
  75. }
  76.  
  77. frames[pos] = pages[i];
  78. faults++;
  79. }
  80.  
  81. printf("\n");
  82.  
  83. for(j = 0; j < no_of_frames; ++j){
  84. printf("%d\t", frames[j]);
  85. }
  86. }
  87.  
  88. printf("\n\nTotal Page Faults = %d", faults);
  89.  
  90. return 0;
  91. }
Success #stdin #stdout 0s 9432KB
stdin
3
10
2 3 4 2 1 3 7 5 4 3
stdout
Enter number of frames: 
Enter number of pages: 
Enter page reference string: 
2	-1	-1	
2	3	-1	
2	3	4	
2	3	4	
1	3	4	
1	3	4	
7	3	4	
5	3	4	
5	3	4	
5	3	4	

Total Page Faults = 6