SJF - CPU scheduling


Program

#include <stdio.h> int main() { int n, i, j; int burst_time[100], waiting_time[100]; int turnaround_time[100], process[100]; float tot_waiting = 0, tot_turnaround = 0; printf("Enter the number of processes: "); scanf("%d", &n); // Input burst times and initialize process numbers for (i = 0; i < n; i++) { printf("Enter burst time for Process %d: ", i + 1); scanf("%d", &burst_time[i]); process[i] = i + 1; } // Sort burst times (bubble sort) for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (burst_time[j] > burst_time[j + 1]) { // Swap burst times int temp = burst_time[j]; // burst_time[j] = burst_time[j + 1]; // burst_time[j + 1] = temp; burst_time[j] = burst_time[j] ^ burst_time[j + 1]; burst_time[j + 1] = burst_time[j] ^ burst_time[j + 1]; burst_time[j] = burst_time[j] ^ burst_time[j + 1]; // Swap process numbers temp = process[j]; process[j] = process[j + 1]; process[j + 1] = temp; } } } // Calculate waiting time waiting_time[0] = 0; for (i = 1; i < n; i++) { waiting_time[i] = waiting_time[i - 1] + burst_time[i - 1]; tot_waiting += waiting_time[i]; } // Calculate turnaround time for (i = 0; i < n; i++) { turnaround_time[i] = waiting_time[i] + burst_time[i]; tot_turnaround += turnaround_time[i]; } // Calculate averages float avg_waiting = tot_waiting / n; float avg_turnaround = tot_turnaround / n; // Display results printf("\nProcess Scheduling Details:\n"); printf("------------------------\n"); printf("Process\tBurst Time\tWaiting Time\tTurnaround Time\n"); for (i = 0; i < n; i++) printf("%d\t%d\t\t%d\t\t%d\n", process[i], burst_time[i], waiting_time[i], turnaround_time[i]); printf("\nTotal Waiting Time: %.2f\n", tot_waiting); printf("Average Waiting Time: %.2f\n", avg_waiting); printf("Total Turnaround Time: %.2f\n", tot_turnaround); printf("Average Turnaround Time: %.2f\n", avg_turnaround); return 0; }