Priority

Implement Priority CPU scheduling algorithm.


#include <stdio.h> int main() { int n, i, j; int burst_time[100], waiting_time[100], priority[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 printf("Enter burst time and priority for each process:\n"); for (i = 0; i < n; i++) { printf("- Process %d: ", i + 1); scanf("%d", &burst_time[i]); scanf("%d", &priority[i]); process[i] = i + 1; } // Sort by priority (bubble sort) for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (priority[j] > priority[j + 1]) { // Swap priorities numbers priority[j] = priority[j] ^ priority[j + 1]; priority[j + 1] = priority[j] ^ priority[j + 1]; priority[j] = priority[j] ^ priority[j + 1]; // Swap burst times 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 process[j] = process[j] ^ process[j + 1]; process[j + 1] = process[j] ^ process[j + 1]; process[j] = process[j] ^ process[j + 1]; } } } // 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("\nPriority Scheduling"); printf("\n-------------------"); printf("\nProcess\tPriority\tBurst Time\tWaiting Time\tTurnaround Time\n"); for (i = 0; i < n; i++) printf("%d\t%d\t\t%d\t\t%d\t\t%d\n", process[i], priority[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; }