#include <stdio.h> int main() { int n, i; int pid[20], at[20], bt[20], priority[20]; int ct[20], tat[20], wt[20]; int completed[20] = {0}; int time = 0, count = 0; int highest; printf("Enter number of processes: "); scanf("%d", &n); // Input for(i = 0; i < n; i++) { pid[i] = i + 1; printf("\nEnter Arrival Time of P%d: ", pid[i]); scanf("%d", &at[i]); printf("Enter Burst Time of P%d: ", pid[i]); scanf("%d", &bt[i]); printf("Enter Priority of P%d: ", pid[i]); scanf("%d", &priority[i]); } // Scheduling while(count < n) { highest = -1; // Find highest-priority available process for(i = 0; i < n; i++) { if(completed[i] == 0 && at[i] <= time) { if(highest == -1 || priority[i] < priority[highest]) { highest = i; } } } // If no process has arrived if(highest == -1) { time++; } else { // Execute selected process completely time = time + bt[highest]; ct[highest] = time; tat[highest] = ct[highest] - at[highest]; wt[highest] = tat[highest] - bt[highest]; completed[highest] = 1; count++; } } // Display result printf("\n\nProcess\tAT\tBT\tPriority\tCT\tTAT\tWT\n"); for(i = 0; i < n; i++) { printf("P%d\t%d\t%d\t%d\t\t%d\t%d\t%d\n", pid[i], at[i], bt[i], priority[i], ct[i], tat[i], wt[i]); } return 0; }
2 views