First-Come-First-Served:
The simplest scheduling policy is first-come-first-served (FCFS), also known as first-in-first-out (FIFO) or a strict queuing scheme. As each process becomes ready, it joins the ready queue. When the currently running process ceases to execute, the process that has been in the ready queue the longest is selected for running. FCFS performs much better for long processes than short ones.
C program:
#include<stdio.h>
#include<conio.h>
int initialize();
int p[10],a[10],b[10],w[10],ta[10],t1;
void main()
{
int i,j,n,t,sum=0;
float aw,at,sum1;
clrscr();
printf("\n\nP A B W TAT\n\n");
n=initialize();
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
t=b[i];
b[i]=b[j];
b[j]=t;
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
}
t1=a[0];
for(i=0;i<n;i++)
{
if (t1-a[i]<0)
t1+=a[i]-t1;
if(i==0)
w[i]=0;
else
w[i]=t1-a[i];
t1+=b[i];
}
for(i=0;i<n;i++)
{
ta[i]=b[i]+w[i];
}
for(i=0;i<n;i++)
{
printf("%d %d %d %d %d\n\n",p[i],a[i],b[i],w[i],ta[i]);
}
printf("\n\nAverage waiting time is:");
sum1=0.0;
for(i=0;i<n;i++)
{
sum1+=w[i];
}
aw=sum1/n;
printf("%f",aw);
printf("\n\nAverage turn around time is:");
sum1=0.0;
for(i=0;i<n;i++)
{
sum1+=ta[i];
}
at=sum1/n;
printf("%f",at);
printf("\n\nThe Grantt chart is:\n\n");
for(i=0;i<n;i++)
{
printf("|%d",p[i]);
if(i==n-1)
printf("|");
}
getch();
}
int initialize()
{
int n,n1,n2,n3,i=0;
char ch='a';
FILE *fp;
fp=fopen("sjf.txt","r");
while(fscanf(fp,"%d%d%d",&n1,&n2,&n3)!=EOF)
{
p[i]=n1;
a[i]=n2;
b[i]=n3;
i++;
}
return i;
}
Input File:
1 0 3
2 1 3
3 2 2
//Output Of the above program:-
The simplest scheduling policy is first-come-first-served (FCFS), also known as first-in-first-out (FIFO) or a strict queuing scheme. As each process becomes ready, it joins the ready queue. When the currently running process ceases to execute, the process that has been in the ready queue the longest is selected for running. FCFS performs much better for long processes than short ones.
C program:
#include<stdio.h>
#include<conio.h>
int initialize();
int p[10],a[10],b[10],w[10],ta[10],t1;
void main()
{
int i,j,n,t,sum=0;
float aw,at,sum1;
clrscr();
printf("\n\nP A B W TAT\n\n");
n=initialize();
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
t=b[i];
b[i]=b[j];
b[j]=t;
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
}
t1=a[0];
for(i=0;i<n;i++)
{
if (t1-a[i]<0)
t1+=a[i]-t1;
if(i==0)
w[i]=0;
else
w[i]=t1-a[i];
t1+=b[i];
}
for(i=0;i<n;i++)
{
ta[i]=b[i]+w[i];
}
for(i=0;i<n;i++)
{
printf("%d %d %d %d %d\n\n",p[i],a[i],b[i],w[i],ta[i]);
}
printf("\n\nAverage waiting time is:");
sum1=0.0;
for(i=0;i<n;i++)
{
sum1+=w[i];
}
aw=sum1/n;
printf("%f",aw);
printf("\n\nAverage turn around time is:");
sum1=0.0;
for(i=0;i<n;i++)
{
sum1+=ta[i];
}
at=sum1/n;
printf("%f",at);
printf("\n\nThe Grantt chart is:\n\n");
for(i=0;i<n;i++)
{
printf("|%d",p[i]);
if(i==n-1)
printf("|");
}
getch();
}
int initialize()
{
int n,n1,n2,n3,i=0;
char ch='a';
FILE *fp;
fp=fopen("sjf.txt","r");
while(fscanf(fp,"%d%d%d",&n1,&n2,&n3)!=EOF)
{
p[i]=n1;
a[i]=n2;
b[i]=n3;
i++;
}
return i;
}
Input File:
1 0 3
2 1 3
3 2 2
//Output Of the above program:-
ReplyDeleteFCFS scheduling algorithm describe very easily, to know details visit this link.
http://www.secufoon.com/describe-first-come-first-serve-scheduling-algorithmfcfs-in-c-language-concept/
Sir what is the mean of if(t1-a[i]<0)
ReplyDelete