/* Objective: To implement Priority based Non pre-emptive Scheduling Algorithm Author:Rahul kumar*/ #include <stdio.h> #define max 100 int main(){ int n,AT[max],WT[max],ET[max],TAT[max],CT[max],PID[max],Priority[max],RT[max],min,maxCT=0,i,count,j,temp; double avg_WT,avg_TAT,thrpt; printf("Please enter number of processes\n"); scanf("%d",&n); if(n>max){ printf("Limit exceeded"); } else if(n<1){ printf("No process exist or negative input."); } else{ for(i=0;i< n;i++){ printf("\nEnter details for process %d:\n",i+1); printf("Arrival Time:"); scanf("%d",&AT[i]); printf("Execution Time:"); scanf("%d",&ET[i]); PID[i]=i+1; printf("Priority:"); scanf("%d",&Priority[i]); } for(i=0;i< n-1 ; i++){ min=i; for(j=i+1;j< n; j++){ if(AT[j]< AT[min]){ min=j; } } temp=AT[i]; AT[i]=AT[min]; AT[min]=temp; temp=ET[i]; ET[i]=ET[min]; ET[min]=temp; temp=PID[i]; PID[i]=PID[min]; PID[min]=temp; temp=Priority[i]; Priority[i]=Priority[min]; Priority[min]=temp; } for(i=0;i< n;i++){ RT[i]=ET[i]; } RT[n]=9999; printf("Process\tPriority\tArrival Time\tBurst Time\tCompletion Time\tTAT\tWaiting Time\n"); count=0; for(i=0;count!=n;) { min=n; for(j=0;j< n; j++) { if(AT[j]<=i && RT[j]>0 && Priority[j]>Priority[min]) { min=j; } } RT[min]=0; count++; i=i+ET[min]; CT[min]=i; TAT[min]=CT[min]-AT[min]; WT[min]=TAT[min]-ET[min]; printf("P%d\t%d\t\t%d\t\t%d\t\t%d\t\t%d\t%d\n",PID[min],Priority[min],AT[min],ET[min],CT[min],TAT[min],WT[min]); if(i>maxCT) { maxCT=i; } avg_TAT=avg_TAT+TAT[min]; avg_WT=avg_WT+WT[min]; } avg_TAT=(double)avg_TAT/n; avg_WT=(double)avg_WT/n; thrpt=(double)n/(CT[n-1]-AT[0]); printf("\nAvg.TAT=%.2f\n",avg_TAT); printf("Avg.WT=%.2f\n",avg_WT); printf("Throughput=%.2f",thrpt); } return 0; }
Output:
Please enter number of processes 5 Enter details for process 1: Arrival Time:0 Execution Time:3 Priority:3 Enter details for process 2: Arrival Time:1 Execution Time:6 Priority:4 Enter details for process 3: Arrival Time:4 Execution Time:5 Priority:6 Enter details for process 4: Arrival Time:8 Execution Time:2 Priority:7 Enter details for process 5: Arrival Time:6 Execution Time:5 Priority:1 Process Priority Arrival Time Burst Time Completion Time TAT Waiting Time P1 3 0 3 3 3 0 P2 4 1 6 9 8 2 P4 7 8 2 11 3 1 P3 6 4 5 16 12 7 P5 1 6 5 21 15 10 Avg.TAT=8.20 Avg.WT=4.00 Throughput=0.45