Computer Science, asked by suneelyandrapragada, 1 year ago

Consider a scheduling approach which is non pre-emptive similar to shortest job next in nature. The priority of each job is dependent on its estimated run time, and also the amount of time it has spent waiting. Jobs gain higher priority the longer they wait, which prevents indefinite postponement. The jobs that have spent a long time waiting compete against those estimated to have short run times. The priority can be computed as : Priority = 1+ Waiting time / Estimated run time Write a program to implement such an algorithm

Answers

Answered by techtro
3

#include<stdio.h>  

void main()

{

   int bt[20],p[20],wt[20],tat[20],i,j,n,total=0,pos,temp;

   float avg_wt,avg_tat;

   printf("Enter number of process:");

   scanf("%d",&n);  

   printf("\nEnter Estimated Time:\n");

   for(i=0;i<n;i++)

   {

       printf("p%d:",i+1);

       scanf("%d",&bt[i]);

       p[i]=i+1;           //contains process number

   }  

   //sorting burst time in ascending order using selection sort

   for(i=0;i<n;i++)

   {

       pos=i;

       for(j=i+1;j<n;j++)

       {

           if(bt[j]<bt[pos])

               pos=j;

       }  

       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 will be 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=(float)total/n; //average waiting time

   total=0;  

   printf("\nProcess\t Estimated 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=(float)total/n; //average turnaround time

   printf("\n\nAverage Waiting Time=%f",avg_wt);

   printf("\nAverage Turnaround Time=%f\n",avg_tat);

}

Output

Order in which solution we get from above program

4 2 3 1

Processes Burst time Waiting time Turn around time

4 2 0 2

2 3 2 5

3 6 5 11

1 21 11 32

Average waiting time = 4.5

Average turn around time = 12.5

Similar questions