Write a simulation program for scheduling algorithm using FCFS. The arrival time and first CPU burst of different jobs should be input to the system. The output should give the Gantt chart & turnaround time for each process and average turnaround time.
Write a simulation program for scheduling algorithm using FCFS. The arrival time and first CPU burst of different jobs should be input to the system. The output should give the Gantt chart & turnaround time for each process and average turnaround time.
Program:
#include <stdio.h>
#include <stdlib.h>
struct sch{
int at,st,bt,tat,ft;
}pr[50];
int rq[50],x,n,timer;
void addP(){
int i;
for(i=0;i<n;i++){
if(pr[i].at==timer){
rq[x++]=i;
}
}
}
int selectP(){
int pp,i;
if(x<0){
return(-1);
}else{
pp=rq[0];
for(i=0;i<n;i++){
rq[i]=rq[i+1];
}
x--;
return(pp);
}
}
int main(void){
setbuf(stdout,NULL);
int i,t,p;
float atat;
timer = 0;
x=-1;
printf("Enter the number of processes:");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("\nEnter the Arrival time:");
scanf("%d",&pr[i].at);
printf("\nEnter the Burst time:");
scanf("%d",&pr[i].bt);
}
t=0;
addP();
while(t<n){
p=selectP();
if(p==-1){
printf("idle|");
timer++;
addP();
}else{
pr[p].st=timer;
for(i=0;i<pr[p].bt;i++){
printf("P%d|",p);
timer++;
addP();
}
pr[p].ft=pr[p].st+pr[p].bt;
t++;
}
}
atat=0;
printf("\nTurn Around Time for each Process:");
for(i=0;i<n;i++){
pr[i].tat = pr[i].ft-pr[i].at;
printf("\nP%d=%d",i,pr[i].tat);
atat+=pr[i].tat;
}
atat = atat/n;
printf("\nAverage Turn Around Time:%f",atat);
return EXIT_SUCCESS;
}
Comments
Post a Comment