int pid,at,et,ct,wt,tat;
}process;
void main()
{
process p[10],temp;
int n,i,j,twt=0,ttat=0;
float awt,atat,tp;
clrscr();
cout<<"\nEnter the no of processes = ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"\nenter process id = ";
cin>>p[i].pid;
cout<<"enter arrival time = ";
cin>>p[i].at;
cout<<"enter execution time = ";
cin>>p[i].et;
}
cout<<"\n \tFCFS SCHEDULING \n";
//sort by arrival time
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(p[j].at>p[j+1].at)
{
temp=p[j+1];
p[j+1]=p[j];
p[j]=temp;
}
}
}
for(i=0;i<n;i++)
{
if(i==0)
{
p[i].wt=0;
p[i].ct=p[i].at+p[i].et;
p[i].tat=p[i].ct-p[i].at;
}
else
{
int wt=p[i-1].ct-p[i].at;
if(wt>0)
p[i].wt=wt;
else
p[i].wt=0;
if(p[i-1].ct>p[i].at)
{
p[i].ct=p[i-1].ct+p[i].et;
}
else
p[i].ct=p[i].at+p[i].et;
p[i].tat=p[i].ct-p[i].at;
}
}
cout<<"\nPID ARR.TIME EXE.TIME COMP.TIME WAIT.TIME TURNAROUND.TIME ";
for(i=0;i<n;i++)
{
cout<<"\n";
cout<<setw(3)<<p[i].pid;
cout<<setw(8)<<p[i].at;
cout<<setw(8)<<p[i].et;
cout<<setw(9)<<p[i].ct;
cout<<setw(9)<<p[i].wt;
cout<<setw(9)<<p[i].tat;
twt=twt+p[i].wt;
ttat=ttat+p[i].tat;
}
awt=(float)twt/n;
atat=(float)ttat/n;
tp=(float)(p[n-1].ct-p[0].at)/n;
cout<<"\n\nAVG WAIT.TIME = "<<awt;
cout<<"\nAVG TURN AROUND TIME = "<<atat;
// cout<<"\nTHROUGHPUT ="<<tp;
getch();
}
No comments:
Post a Comment