#include
int main() {
int pages[50], frames[10], n, f;
int index = 0, faults = 0;
printf("Enter number of pages: ");
scanf("%d", &n);
printf("Enter page reference string:\n");
for (int i = 0; i < n; i++)
scanf("%d", &pages[i]);
printf("Enter number of frames: ");
scanf("%d", &f);
for (int i = 0; i < f; i++)
frames[i] = -1;
for (int i = 0; i < n; i++) {
int found = 0;
for (int j = 0; j < f; j++) {
if (frames[j] == pages[i]) {
found = 1;
break;
}
}
if (!found) {
frames[index] = pages[i];
index = (index + 1) % f;
faults++;
}
}
printf("Total Page Faults (FIFO) = %d\n", faults);
return 0;
}
$ gcc fcfs_page.c
$ ./a.out
Enter number of pages: 12
Enter page reference string:
7 0 1 2 0 3 0 4 2 3 0 3
Enter number of frames: 3
Total Page Faults (FIFO) = 10
#include
int main() {
int pages[50], frames[10], recent[10];
int n, f, faults = 0;
printf("Enter number of pages: ");
scanf("%d", &n);
printf("Enter page reference string:\n");
for (int i = 0; i < n; i++)
scanf("%d", &pages[i]);
printf("Enter number of frames: ");
scanf("%d", &f);
for (int i = 0; i < f; i++) {
frames[i] = -1;
recent[i] = 0;
}
for (int i = 0; i < n; i++) {
int found = 0;
for (int j = 0; j < f; j++) {
if (frames[j] == pages[i]) {
recent[j] = i;
found = 1;
break;
}
}
if (!found) {
int lru = 0;
for (int j = 1; j < f; j++)
if (recent[j] < recent[lru])
lru = j;
frames[lru] = pages[i];
recent[lru] = i;
faults++;
}
}
printf("Total Page Faults (LRU) = %d\n", faults);
return 0;
}
$ gcc lru_page.c
$ ./a.out
Enter number of pages: 12
Enter page reference string:
7 0 1 2 0 3 0 4 2 3 0 3
Enter number of frames: 3
Total Page Faults (LRU) = 9
#include
int main() {
int pages[50], frames[10];
int n, f, faults = 0;
printf("Enter number of pages: ");
scanf("%d", &n);
printf("Enter page reference string:\n");
for (int i = 0; i < n; i++)
scanf("%d", &pages[i]);
printf("Enter number of frames: ");
scanf("%d", &f);
for (int i = 0; i < f; i++)
frames[i] = -1;
for (int i = 0; i < n; i++) {
int found = 0;
for (int j = 0; j < f; j++) {
if (frames[j] == pages[i]) {
found = 1;
break;
}
}
if (!found) {
int index = -1, farthest = i + 1;
for (int j = 0; j < f; j++) {
int k;
for (k = i + 1; k < n; k++) {
if (frames[j] == pages[k]) {
if (k > farthest) {
farthest = k;
index = j;
}
break;
}
}
if (k == n) {
index = j;
break;
}
}
if (index == -1)
index = 0;
frames[index] = pages[i];
faults++;
}
}
printf("Total Page Faults (Optimal) = %d\n", faults);
return 0;
}
$ gcc optimal_page.c
$ ./a.out
Enter number of pages: 12
Enter page reference string:
7 0 1 2 0 3 0 4 2 3 0 3
Enter number of frames: 3
Total Page Faults (Optimal) = 7
1. Write C programs to simulate the following CPU Scheduling algorithms
a) FCFS
b) SJF
c) RoundRobin
d) priority View Solution
2. Write programs using the I/O system calls of UNIX/LINUX operating system (open, read, write, close,fcntl, seek, stat, opendir, readdir) View Solution
3. Write a C program to simulate Bankers Algorithm for Deadlock Avoidance and Prevention. View Solution
4. Write a C program to implement the Producer – Consumer problem using semaphores using UNIX/LINUX system calls. View Solution
5. Write C programs to illustrate the following IPC mechanisms
a) Pipes
b) FIFOs
c) Message Queues
d) Shared Memory. View Solution
6. Write C programs to simulate the following memory management techniques
a) Paging
b) Segmentation View Solution
7. Write C programs to simulate Page replacement policies
a) FCFS
b) LRU
c) Optimal View Solution