Created
March 19, 2015 15:24
-
-
Save rajabishek/438e700c9201926f37b8 to your computer and use it in GitHub Desktop.
Priority - Scheduling Algorithm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<stdio.h> | |
void main() | |
{ | |
int bt[20],p[20],wt[20],tat[20],pr[20],i,j,n,total=0,pos,temp,avg_wt,avg_tat; | |
printf("Enter Total Number of Process:"); | |
scanf("%d",&n); | |
printf("\nEnter Burst Time and Priority\n"); | |
for(i=0;i<n;i++) | |
{ | |
printf("\nP[%d]\n",i+1); | |
printf("Burst Time:"); | |
scanf("%d",&bt[i]); | |
printf("Priority:"); | |
scanf("%d",&pr[i]); | |
p[i]=i+1; //contains process number | |
} | |
//sorting burst time, priority and process number in ascending order using selection sort | |
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; //waiting time for first process is zero | |
//calculate waiting time | |
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; //average waiting time | |
total=0; | |
printf("\nProcess\t Burst Time \tWaiting Time\tTurnaround Time"); | |
for(i=0;i<n;i++) | |
{ | |
tat[i]=bt[i]+wt[i]; //calculate turnaround time | |
total+=tat[i]; | |
printf("\nP[%d]\t\t %d\t\t %d\t\t\t%d",p[i],bt[i],wt[i],tat[i]); | |
} | |
avg_tat=total/n; //average turnaround time | |
printf("\n\nAverage Waiting Time=%d",avg_wt); | |
printf("\nAverage Turnaround Time=%d\n",avg_tat); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment