Write a program that will simulate nonpreemptive process sch


Write a program that will simulate non-preemptive process scheduling algorithm: FCFS SJN Priority you program should input the information necessary for the calculation of energy includes.

Solution

#include <stdio.h>
int waiting_time[10],burst_time[10],priority[10],arrival_time[10],tat[10],n;
float awt,atat;
void input()
   {
printf(\"Enter Number of processes:\");
scanf(\"%d\",&n);
int i;
for(i=0;i<n;i++)
       {
printf(\"\ Please Enter Burst Time of process %d:\",i+1);
scanf(\"%d\",&burst_time[i]);   
printf(\"Please Enter Arrival Time of process %d:\",i+1);
scanf(\"%d\",&arrival_time[i]);
       printf(\"Please Enter priority of the process %d:\",i+1);
scanf(\"%d\",&priority[i]);        
}
   }

void priority_scheduling()
   {
   int x,p[10],w[10],t[10],awt,atat,i,j;
printf(\"\ Shortest Job First Scheduling\");
   for(i=0;i<n-1;i++)
       {
       for(j=i+1;j<n;j++) //sorting by priority of process
           {
           if(priority[i]<priority[j]) //if process i has lower priority than process j
               {
               x=priority[i];
               priority[i]=priority[j];
               priority[j]=x;
               x=burst_time[i];
               burst_time[i]=burst_time[j];
               burst_time[j]=x;
               x=p[i];
               p[i]=p[j];
               p[j]=x;
               }
           }
       }
   w[0]=0;
   awt=0;
   t[0]=burst_time[0];
   atat=t[0];
   for(i=1;i<n;i++) calculating wait time, turn around time
       {
       w[i]=t[i-1];
       awt+=w[i];
       t[i]=w[i]+burst_time[i];
       atat+=t[i];
       }
   printf(\"\ \ Job \\t Burst Time \\t Wait Time \\t Turn Around Time Priority \ \");
   for(i=0;i<n;i++)
       printf(\"\ %d \\t\\t %d \\t\\t %d \\t\\t %d \\t\\t %d \ \",p[i],burst_time[i],w[i],t[i],priority[i]);
   awt/=n;
   atat/=n;
   printf(\"\ Average Wait Time : %d \ \",awt);
   printf(\"\ Average Turn Around Time : %d \ \",atat);
   }  

void SJF()
   {
   int i,p[10]={1,2,3,4,5,6,7,8,9,10},min,k=1,btime=0;
   int temp,j,wt[10],tt[10],ta=0,sum=0;
   float wavg=0,tavg=0,tsum=0,wsum=0;
   printf(\"\ Shortest Job First Scheduling\");
   /*Sorting According to Arrival Time*/
   for(i=0;i<n;i++)
       {
       for(j=0;j<n;j++)
           {
           if(arrival_time[i]<arrival_time[j]) //sorting processes by arrival time
               {
               temp=p[j];
               p[j]=p[i];
               p[i]=temp;
               temp=arrival_time[j];
               arrival_time[j]=arrival_time[i];
               arrival_time[i]=temp;
               temp=burst_time[j];
               burst_time[j]=burst_time[i];
               burst_time[i]=temp;
               }
           }
       }

   for(j=0;j<n;j++)
       {
       btime=btime+burst_time[j];
       min=burst_time[k];
       for(i=k;i<n;i++)
           {
           if (btime>=arrival_time[i] && burst_time[i]<min)
               {
               temp=p[k];
               p[k]=p[i];
               p[i]=temp;
               temp=arrival_time[k];
               arrival_time[k]=arrival_time[i];
               arrival_time[i]=temp;
               temp=burst_time[k];
               burst_time[k]=burst_time[i];
               burst_time[i]=temp;
               }
           }
       k++;
       }
   wt[0]=0;
   for(i=1;i<n;i++)
       {
       sum=sum+burst_time[i-1];
       wt[i]=sum-arrival_time[i];
       wsum=wsum+wt[i];
       }
     
   wavg=(wsum/n);
   for(i=0;i<n;i++)
       {
       ta=ta+burst_time[i];
       tt[i]=ta-arrival_time[i];
       tsum=tsum+tt[i];
       }
     
   tavg=(tsum/n);
     
   printf(\"************************\");
   printf(\"\ RESULT:-\");
   printf(\"\ Process\\t Burst\\t Arrival\\t Waiting\\t Turn-around\" );
   for(i=0;i<n;i++)
       {
       printf(\"\ p%d\\t %d\\t %d\\t\\t %d\\t\\t\\t%d\",p[i],burst_time[i],arrival_time[i],wt[i],tt[i]);
       }
   printf(\"\ \ AVERAGE WAITING TIME : %f\",wavg);
   printf(\"\ AVERAGE TURN AROUND TIME : %f\",tavg);
   }

void FCFS()
   {
waiting_time[0]=0;
atat=tat[0]=burst_time[0];
int btt=burst_time[0];//to store total burst time sum
int i;
for(i=1;i<n;i++){
waiting_time[i]=btt-arrival_time[i];
btt+=burst_time[i];
awt+=waiting_time[i];   
tat[i]= waiting_time[i]+burst_time[i];   
atat+=tat[i];
}
atat/=n;
awt/=n;
printf(\"SR.\\tA.T.\\tB.T.\\tW.T.\\tT.A.T.\ \");
for(i=0;i<n;i++)
{
printf(\"%3d\\t%3d\\t%3d\\t%3d\\t%4d\ \",i+1,arrival_time[i],burst_time[i],waiting_time[i],tat[i]);
}
printf(\"Average Waiting Time: %f\ Average Turn Around Time:%f\",awt,atat);
   }
  
int main()
   {
printf(\"\ FCFS CPU Scheduling Algorithm\ \");
input();
FCFS();
   SJF();
   priority_scheduling();
   }

 Write a program that will simulate non-preemptive process scheduling algorithm: FCFS SJN Priority you program should input the information necessary for the ca
 Write a program that will simulate non-preemptive process scheduling algorithm: FCFS SJN Priority you program should input the information necessary for the ca
 Write a program that will simulate non-preemptive process scheduling algorithm: FCFS SJN Priority you program should input the information necessary for the ca

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site