This is a program for the implementation of First Come First Serve and Shortest Job First Scheduling. If you have any doubts, please let me know.
#include<stdio.h>
#include<string.h>
struct process
{
int arr,bur,wait,turn,t;
char pid[5];
}p[100],temp;
int n;
void chart()
{
int i,j,k;
printf("0");
for(j=0;j<n;j++)
{
i=0;
while(i!=p[j].bur)
{
printf("=");
i++;
}
printf("%d",p[j].t);
}
printf("\n");
i=0;
printf("p%s",p[0].pid);
for(j=0,k=1;j<n-1;j++,k++)
{
while(i!=p[j].t)
{
printf("
");
i++;
}
printf("p%s",p[k].pid);
}
printf("\n");
}
void avg()
{
int
i;
float avgw=0,avgt=0;
for(i=0;i<n;i++)
{
avgw=avgw+p[i].wait;
avgt=avgt+p[i].turn;
}
avgw=avgw/n;
avgt=avgt/n;
printf("\nAverage waiting time
:%d\nAverage turnaround time :%d\n",avgw,avgt);
}
void disp()
{
printf("\npid\tburst\tarrival\twait\tturnaround\n");
int i;
for(i=0;i<n;i++)
{
printf("%s\t%d\t%d\t%d\t%d\n",p[i].pid,p[i].bur,p[i].
arr,p[i].wait,p[i].turn);
}
avg();
chart();
}
void fcfs()
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(p[i].arr>p[j].arr)
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
p[0].wait=0;
p[0].turn=p[0].wait+p[0].bur;
p[0].t=p[0].bur;
for(i=1;i<n;i++)
{
p[i].t=p[i-1].t+p[i].bur;
p[i].wait=p[i-1].t-p[i].arr;
p[i].turn=p[i].wait+p[i].bur;
}
disp();
}
void sjf()
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(p[i].arr>p[j].arr)
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
for(i=1;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(p[i].bur>p[j].bur)
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
p[0].wait=0;
p[0].turn=p[0].wait+p[0].bur;
p[0].t=p[0].bur;
for(i=1;i<n;i++)
{
p[i].t=p[i-1].t+p[i].bur;
p[i].wait=p[i-1].t-p[i].arr;
p[i].turn=p[i].wait+p[i].bur;
}
disp();
}
void main()
{
int
j,i,ch;
printf("Enter number of processess :
");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Enter
pid : ");
scanf("%s",p[i].pid);
printf("enter arrival time :
");
scanf("%d",&p[i].arr);
printf("Enter
burst time : ");
scanf("%d",&p[i].bur);
}
printf("\nMENU\n1.FCFS\n2.SJF\n3.exit\nEnter your choice : ");
scanf("%d",&j);
switch(j)
{
case 1:fcfs();
break;
case 2:
sjf();
break;
case 3:
break;
default : printf("Wrong Choice");
}
}
No comments:
Post a Comment