Ashies

lfu.c

Mar 20th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5. int total_frames, total_pages, hit = 0;
  6. int pages[25], frame[10], arr[25], time[25];
  7. int m, n, page, flag, k, minimum_time, temp;
  8. printf("Enter Total Number of Pages:\t");
  9. scanf("%d", &total_pages);
  10. printf("Enter Total Number of Frames:\t");
  11. scanf("%d", &total_frames);
  12. for(m = 0; m < total_frames; m++)
  13. {
  14. frame[m] = -1;
  15. }
  16. for(m = 0; m < 25; m++)
  17. {
  18. arr[m] = 0;
  19. }
  20. printf("Enter Values of Reference String\n");
  21. for(m = 0; m < total_pages; m++)
  22. {
  23. printf("Enter Value No.[%d]:\t", m + 1);
  24. scanf("%d", &pages[m]);
  25. }
  26. printf("\n");
  27. for(m = 0; m < total_pages; m++)
  28. {
  29. arr[pages[m]]++;
  30. time[pages[m]] = m;
  31. flag = 1;
  32. k = frame[0];
  33. for(n = 0; n < total_frames; n++)
  34. {
  35. if(frame[n] == -1 || frame[n] == pages[m])
  36. {
  37. if(frame[n] != -1)
  38. {
  39. hit++;
  40. }
  41. flag = 0;
  42. frame[n] = pages[m];
  43. break;
  44. }
  45. if(arr[k] > arr[frame[n]])
  46. {
  47. k = frame[n];
  48. }
  49. }
  50. if(flag)
  51. {
  52. minimum_time = 25;
  53. for(n = 0; n < total_frames; n++)
  54. {
  55. if(arr[frame[n]] == arr[k] && time[frame[n]] < minimum_time)
  56. {
  57. temp = n;
  58. minimum_time = time[frame[n]];
  59. }
  60. }
  61. arr[frame[temp]] = 0;
  62. frame[temp] = pages[m];
  63. }
  64. for(n = 0; n < total_frames; n++)
  65. {
  66. printf("%d\t", frame[n]);
  67. }
  68. printf("\n");
  69. }
  70. printf("Page Hit:\t%d\n", hit);
  71. return 0;
  72. }
Add Comment
Please, Sign In to add comment