fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int frames = 3;
  5. int ref[] = {7, 0, 1, 2, 0, 3, 0, 4};
  6. int n = 8;
  7.  
  8. int frame[3];
  9. int i, j, k = 0;
  10. int pageFaults = 0;
  11. int found;
  12.  
  13. // Initialize frames
  14. for (i = 0; i < frames; i++)
  15. frame[i] = -1;
  16.  
  17. printf("PAGE\tFRAMES\n");
  18.  
  19. for (i = 0; i < n; i++) {
  20. found = 0;
  21.  
  22. // Check if page already exists
  23. for (j = 0; j < frames; j++) {
  24. if (frame[j] == ref[i]) {
  25. found = 1;
  26. break;
  27. }
  28. }
  29.  
  30. // Page fault
  31. if (!found) {
  32. frame[k] = ref[i];
  33. k = (k + 1) % frames;
  34. pageFaults++;
  35. }
  36.  
  37. // Print frame status
  38. printf("%d\t", ref[i]);
  39. for (j = 0; j < frames; j++) {
  40. if (frame[j] == -1)
  41. printf("-");
  42. else
  43. printf("%d", frame[j]);
  44. }
  45. printf("\n");
  46. }
  47.  
  48. printf("\nTotal Page Faults = %d\n", pageFaults);
  49. return 0;
  50. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
PAGE	FRAMES
7	7--
0	70-
1	701
2	201
0	201
3	231
0	230
4	430

Total Page Faults = 7