+ 2
FCFS CPU scheduling in C programming.
Calculate Completion time, Turn around time TAT, waiting time WT, avg TAT, avg WT ( with arrival time).
10 Answers
+ 2
This is the correct code for fcfs
#include <stdio.h>
int main()
{
    int n;
    printf("Enter number of jobs to schedule - \n");
    scanf("%d",&n);
    int burst[n],arrival[n],index[n];
    int i,tot=0;
    printf("Enter the burst time of the jobs - \n");
    for(i=0;i<n;i++)
    {
        index[i]=i+1;
        scanf("%d",&burst[i]);
    }
    printf("Enter the arrival time of the jobs - \n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&arrival[i]);
    }
    int j;
    for(i=0;i<n;i++)
	{
	    int min=arrival[i];
	    int pos=i;
	    for(j=i+1;j<n;j++)
	    {
	        if(arrival[j]<min)
	            {
	                min=arrival[j];
	                pos=j;
	            }
	    }
	    int temp=arrival[i];
	    arrival[i]=min;
	    arrival[pos]=temp;
        temp=burst[i];
        burst[i]=burst[pos];
        burst[pos]=temp;
        temp=index[i];
        index[i]=index[pos];
        index[pos]=temp;
	}
    int time=0;
    double avgtat=0;
    for(i=0;i<n;i++)
    {
        while(time<arrival[i])
            time++;
        time+=burst[i];
        avgtat+=(time-arrival[i]);
    }
    avgtat/=n;
    printf("The jobs will be processed in this order - ");
    for(i=0;i<n;i++)
        printf("%d\t",index[i]);
    printf("\nThe total time taken to complete all the jobs will be - %d",time);
    printf("\nAverage Turnaround Time is - %lf",avgtat);
    return 0;
}
+ 1
This is without arrival time. I want to take arrival time input and sort it 1st then perform the fcfs.
+ 1
When there is a table for fcfs, the arrival time of process 1 is not necessarily 1, so arrival time matters.
+ 1
https://www.gatevidyalay.com/first-come-first-serve-cpu-scheduling/
Solve problem 1 and enter the process in sequence ( from process 1 to last).
+ 1
I'm still puzzled. Doesn't its position in the queue establish the order of processing?
+ 1
We have to arrange it manually after taking input from user. Visit the site and try to solve problem 1.
+ 1
Solved it? I am stuck in the sorting section of the code. I have to sort process according to arrival time and then the burst time then I will do the rest.
+ 1
Find the error in this 
#include <stdio.h>
struct pcb
{
    int pid, arrival, burst, turnaround;
};
void pline(int x);
void main()
{
    int i, num, j;
    float avg = 0.0, sum = 0.0;
    struct pcb p[10], temp;
    printf("\nEnter the number of processes:\t");
    scanf("%d", &num);
    for (i=0;i<num;i++)
    {
        printf("\nEnter the arrival time and burst time of the process %d:\t", i+1);
        scanf("%d %d", &p[i].arrival,&p[i].burst);
        p[i].pid = i+1;
    }
    for (i=0;i<num-1;i++)
    {
        for (j=0;j<num-i-1;j++)
        {
            if (p[j].arrival > p[j+1].arrival)
            {
                temp = p[j];
                p[j] =p[j+1];
                p[j+1]=temp;
            }
        }
    }
    for(i=0;i<num;i++)
    {
        sum = sum + p[i].burst;
        p[i].turnaround = sum;
    }
    
    pline(44);
    printf("\nPID\tArrival\tBurst\tTurnaround\n");
    pline(44);
    for(i=0;i<num;i++);
    {
        printf("\n%d\t%d\t%d\t%d\n", p[i].pid, p[i].arrival, p[i].burst, p[i].turnaround);
        sum = sum + p[i].turnaround;
    }
    pline(44);
    avg = sum/num;
    printf("\nTotal turnaround time: %f", sum);
    printf("\nAverage turnaround time: :%f", avg);
}
void pline(int x)
{
    int i;
    for(i=0;i<x;i++)
    {
        printf("-");
    }
    printf("\n");
}
0
What does arrival time give you? If it is FCFS there is no need to use timestamps or sort. Just assign a SEQ ID and start processing.



