Aim:
To Write a Program Using C to Implement the Priority Scheduling.
Algorithm:
- STEP 1- START
- STEP 2- Declare the value of bt, p, wt, tat, pr, I, j, n, total=0, os, average waiting time and average turnaround time.
- STEP 3- Print the total number of process in the n
- STEP 4- Sorting burst time, priority and process number in ascending order using selection sort
- STEP 5- Print the i+1, Burst time and Priority time in the P[i]=i+1
- STEP 6- if pr[i] less than pr[pos], pos=i and create the temporary file and equal to the bt[i], bt[i] equal to bt[pos], bt[pos]equal to temporary, temporary equal to p[i], so p[i] equal to p[pos] and p[pos] equal their temporary file
- STEP 7- Waiting time for first process is zero, calculate waiting time, average waiting time
- STEP 8- Print the value process burst time waiting time and turnaround time.STEP 9- tat[i] equal to bt[i] add the wt[i], tot add or equal to tat[i],and print the value p[i],bt[i],wt[i] andtat[i].
- STEP 10- In float average turn around time equal to total divided be n value, and print the average waiting time and average turn around time.
- STEP 11- STOP.
Description:
Suppose the ready list contains the processes as shown in the table.
i T(Pi) Priority
0 24 2
1 3 1
2 3 3
Gantt Chart:
P1 | P0 | P2 |
0 3 27 30
Turn Around Time:
TRND(P0)=27
TRND(P1)=3
TRND(P2)=30
Average Turn-Around Time:
TRND =(30+3+27)/3=20
Waiting Time:
W(P0)=3
W(P1)=0
W(P2)=27
Average Waiting Time:
W=(3+0+27)/3=10
Program:
#include<stdio.h> #define max 10 int main() { int i,j,n,bt[max],p[max],wt[max],tat[max],pr[max],total=0,pos,temp; float avg_wt,avg_tat; printf("Enter Total Number of Process:"); scanf("%d",&n); printf("\nEnter Burst Time and Priority For "); for(i=0;i<n;i++) { printf("\nEnter Process %d: ",i+1); scanf("%d",&bt[i]); scanf("%d",&pr[i]); p[i]=i+1; } for(i=0;i<n;i++) { pos=i; for(j=i+1;j<n;j++) { if(pr[j]<pr[pos]) pos=j; } temp=pr[i]; pr[i]=pr[pos]; pr[pos]=temp; temp=bt[i]; bt[i]=bt[pos]; bt[pos]=temp; temp=p[i]; p[i]=p[pos]; p[pos]=temp; } wt[0]=0; for(i=1;i<n;i++) { wt[i]=0; for(j=0;j<i;j++) wt[i]+=bt[j]; total+=wt[i]; } avg_wt=total/n; total=0; printf("\n\nProcess\t\tBT\t\tWT\t\tTAT"); for(i=0;i<n;i++) { tat[i]=bt[i]+wt[i]; total+=tat[i]; printf("\n P%d\t\t%d\t\t%d\t\t%d",p[i],bt[i],wt[i],tat[i]); } avg_tat=total/n; printf("\n\nAverage Waiting Time = %.2f",avg_wt); printf("\nAvg Turn Around Time = %.2f\n",avg_tat); return 0; }
Execution:
Input 4 3 2 5 1 7 5 9 4 Output Enter Total Number of Process: Enter Burst Time and Priority For Enter Process 1: Enter Process 2: Enter Process 3: Enter Process 4: Process BT WT TAT P2 5 0 5 P1 3 5 8 P4 9 8 17 P3 7 17 24 Average Waiting Time = 7.00 Avg Turn Around Time = 13.00
Result:
Thus priority scheduling program was executed Successfully.