#include int main(void) { int frames = 3; int page_refs[] = {1, 2, 3, 4, 1, 2, 5, 1, 2}; int num_refs = 9; int mem[3]; int count = 0; int hit_count = 0; printf("Demonstrating FIFO page replacement\n"); for (int i = 0; i < num_refs; ++i) { int pg = page_refs[i]; int found = 0; for (int k = 0; k < count; ++k) { if (mem[k] == pg) { found = 1; break; } } if (found) { hit_count++; printf("page %d : hit, memory contains", pg); } else { printf("page %d : miss, memory contains", pg); if (count < frames) { mem[count] = pg; count++; } else { for (int k = 0; k < frames - 1; ++k) { mem[k] = mem[k + 1]; } mem[frames - 1] = pg; } } for (int k = 0; k < count; ++k) { printf(" %d", mem[k]); } printf("\n"); } printf("Hits = %d out of %d\n", hit_count, num_refs); return 0; }