OS10
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
pid_t child_pid = fork();
if (child_pid == 0) {
printf("Child process (PID %d) is running.\n", getpid());
sleep(2);
printf("Child process (PID %d) is done.\n", getpid());
} else if (child_pid > 0) {
printf("Parent process (PID %d) is running.\n", getpid());
printf("Parent process (PID %d) is done.\n", getpid());
} else {
perror("Fork failed");
return 1;}
return 0;}
#2
#include <stdio.h>
int main() {
int n, ref[] = {12, 15, 12, 18, 6, 8, 11, 12, 19, 12, 6, 8, 12, 15, 19, 8};
int len = sizeof(ref) / sizeof(ref[0]), mem[n], faults = 0, future[len];
printf("Enter number of memory frames: ");
scanf("%d", &n);
for (int i = 0; i < n; i++) mem[i] = -1;
for (int i = 0; i < len; i++) {
int p = ref[i], found = 0;
for (int j = 0; j < n; j++) {
if (mem[j] == p) {
found = 1;
break;}
future[j] = len;
for (int k = i + 1; k < len; k++) {
if (mem[j] == ref[k]) {
future[j] = k;
break;}}}
if (!found) {
faults++;
int fIdx = 0;
for (int j = 0; j < n; j++) {
if (future[j] > future[fIdx]) {
fIdx = j;}}
mem[fIdx] = p;}}
printf("Total Page Faults: %d\n", faults);
return 0;