Untitled
unknown
plain_text
9 months ago
5.4 kB
8
Indexable
#include <stdio.h>
void FCFS(int n, int bt[]) {
int wt[n], tat[n];
int i;
float total_wt = 0, total_tat = 0;
// Waiting time for first process is 0
wt[0] = 0;
for (i = 1; i < n; i++) {
wt[i] = wt[i - 1] + bt[i - 1]; // waiting time = sum of previous burst times
}
// Turnaround time = burst time + waiting time
for (i = 0; i < n; i++) {
tat[i] = bt[i] + wt[i];
}
printf("\n--- FCFS Scheduling ---\n");
printf("Process\tBurst Time\tWaiting Time\tTurnaround Time\n");
for (i = 0; i < n; i++) {
printf("P%d\t%d\t\t%d\t\t%d\n", i + 1, bt[i], wt[i], tat[i]);
total_wt += wt[i];
total_tat += tat[i];
}
printf("Average Waiting Time = %.2f\n", total_wt / n);
printf("Average Turnaround Time = %.2f\n", total_tat / n);
}
void SJF(int n, int bt[]) {
int wt[n], tat[n], bt_copy[n];
int i, j, pos, temp;
float total_wt = 0, total_tat = 0;
// Copy burst times to sort
for (i = 0; i < n; i++) {
bt_copy[i] = bt[i];
}
// Sort burst times (SJF non-preemptive)
for (i = 0; i < n - 1; i++) {
pos = i;
for (j = i + 1; j < n; j++) {
if (bt_copy[j] < bt_copy[pos])
pos = j;
}
// Swap
temp = bt_copy[i];
bt_copy[i] = bt_copy[pos];
bt_copy[pos] = temp;
}
// Waiting time for first process is 0
wt[0] = 0;
for (i = 1; i < n; i++) {
wt[i] = wt[i - 1] + bt_copy[i - 1];
}
// Turnaround time = burst time + waiting time
for (i = 0; i < n; i++) {
tat[i] = bt_copy[i] + wt[i];
}
printf("\n--- SJF Scheduling ---\n");
printf("Process\tBurst Time\tWaiting Time\tTurnaround Time\n");
for (i = 0; i < n; i++) {
printf("P%d\t%d\t\t%d\t\t%d\n", i + 1, bt_copy[i], wt[i], tat[i]);
total_wt += wt[i];
total_tat += tat[i];
}
printf("Average Waiting Time = %.2f\n", total_wt / n);
printf("Average Turnaround Time = %.2f\n", total_tat / n);
}
int main() {
int n, i;
printf("Enter number of processes: ");
scanf("%d", &n);
int bt[n];
printf("Enter burst time for each process:\n");
for (i = 0; i < n; i++) {
printf("P%d: ", i + 1);
scanf("%d", &bt[i]);
}
FCFS(n, bt);
SJF(n, bt);
return 0;
}
}
}
}
}
}
}
}
}
}
}
}
}
}Editor is loading...
Leave a Comment