Operating Systems Lab Digital Assignment 21BME0595
Operating Systems Lab Digital Assignment 21BME0595
1. Implement the following scheduling algorithms: FCFS, SJF, Round Robin and
Priority
a. FCFS
Code –
// Online C compiler to run C program online
#include <stdio.h>
wait_time[0] = 0;
1
21BME0595
int main() {
int n = 4;
int arrival_time[] = {0, 1, 2, 3};
int burst_time[] = {8, 4, 9, 5};
Output-
b. SJF
Code –
#include <stdio.h>
2
21BME0595
while (completed != n) {
min_index = -1;
int min_burst = 1e9;
if (min_index == -1) {
current_time++;
} else {
wait_time[min_index] = current_time - arrival_time[min_index];
current_time += burst_time[min_index];
3
21BME0595
int main() {
int n = 4;
int arrival_time[] = {0, 1, 2, 3};
int burst_time[] = {8, 4, 9, 5};
Output –
c. Round Robin
Code –
#include <stdio.h>
4
21BME0595
while (1) {
int done = 1;
for (int i = 0; i < n; i++) {
if (remaining_time[i] > 0) {
done = 0;
if (remaining_time[i] > quantum) {
current_time += quantum;
remaining_time[i] -= quantum;
} else {
current_time += remaining_time[i];
wait_time[i] = current_time - burst_time[i];
remaining_time[i] = 0;
}
}
}
if (done == 1)
break;
}
5
21BME0595
}
printf("Process\tArrival Time\tBurst Time\tWaiting Time\tTurnaround Time\n");
for (int i = 0; i < n; i++) {
printf("%d\t%d\t\t%d\t\t%d\t\t%d\n", i + 1, arrival_time[i], burst_time[i], wait_time[i],
turnaround_time[i]);
}
printf("Average Waiting Time: %.2f\n", (float)total_wait / n);
printf("Average Turnaround Time: %.2f\n", (float)total_turnaround / n);
}
int main() {
int n = 4;
int arrival_time[] = {0, 1, 2, 3};
int burst_time[] = {8, 4, 9, 5};
int quantum = 3;
round_robin_scheduling(n, arrival_time, burst_time, quantum);
return 0;
}
Output –
6
21BME0595
d. Priority Scheduling
Code –
#include <stdio.h>
void priority_scheduling(int n, int arrival_time[], int burst_time[], int priority[]) {
int wait_time[n], turnaround_time[n], total_wait = 0, total_turnaround = 0;
int completed = 0, current_time = 0, min_index;
int is_completed[n];
while (completed != n) {
min_index = -1;
int highest_priority = 1e9;
if (min_index == -1) {
current_time++;
} else {
wait_time[min_index] = current_time - arrival_time[min_index];
current_time += burst_time[min_index];
turnaround_time[min_index] = wait_time[min_index] + burst_time[min_index];
is_completed[min_index] = 1;
completed++;
total_wait += wait_time[min_index];
total_turnaround += turnaround_time[min_index];
7
21BME0595
}
}
int main() {
int n = 4;
int arrival_time[] = {0, 1, 2, 3};
int burst_time[] = {8, 4, 9, 5};
int priority[] = {2, 1, 4, 3};
priority_scheduling(n, arrival_time, burst_time, priority);
return 0;
}
Output –
8
21BME0595
#define P 5
#define R 3
}
}
int count = 0;
while (count < P) {
9
21BME0595
found = true;
}
}
}
if (!found) {
printf("System is not in a safe state.\n");
return false;
}
}
int main() {
int processes[] = {0, 1, 2, 3, 4};
10
21BME0595
11