First Come First Serve (FCFS)
- Jobs are executed on first come, first serve basis.
- Easy to understand and implement.
- Poor in performance as average wait time is high.
Process | Burst Time |
---|---|
Process 1 | |
Process 2 | |
Process 3 |
Waiting time for
P1 =; P2 = ; P3 =
Average waiting time:
( + + )/3 =
C code for FCFS
#include<stdio.h> #include<conio.h> struct proc { int arr_time; int burst_time; int no; int rem_time; int priority; }; struct proc read(int i) { struct proc p; printf("\n\n The process no.:%d.\n",i); p.no=i; printf("Enter the arrival time:"); scanf("%d",&p.arr_time); printf("Enter the burst time:"); scanf("%d",&p.burst_time); p.rem_time=p.burst_time; return p; } struct proc readp(int i) { struct proc p; printf("\n\n The process no.:%d.\n",i); p.no=i; printf("Enter the arrival time:"); scanf("%d",&p.arr_time); printf("Enter the burst time:"); scanf("%d",&p.burst_time); p.rem_time=p.burst_time; printf("Enter the priority:"); scanf("%d",&p.priority); return p; } void swap(struct proc *pi, struct proc *pj) { struct proc *temp; temp = pi; pi = pj; pj = temp; } //FIRST COME FIRST SERVE SCHEDULING ALGO. int main() { int n; //To hold the no. of processes. struct proc p[10],tmp; //To hold the details of the processes. int i,j; printf("Enter the number if processes you want to enter:"); scanf("%d",&n); //Get the total no. of processes from tje user for(i=0;i<n;i++) p[i]=read(i); //Get the details of all the processes //Create the ready queue and update every time a new process is scheduled for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) { if(p[j].arr_time>p[j+1].arr_time) // swap(&p[j],&p[j+1]); { tmp=p[j]; p[j]=p[j+1]; p[j+1]=tmp; } } for(i=0;i<n;i++) printf("%d ",p[i].no); getch(); // Print the order in which the processes are getting executed. return 0; }