+ 2

FCFS CPU scheduling in C programming.

Calculate Completion time, Turn around time TAT, waiting time WT, avg TAT, avg WT ( with arrival time).

9th Jan 2022, 7:14 PM
MRIDUL CHANDRAWANSHI
10 odpowiedzi
+ 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; }
11th Jan 2022, 4:50 AM
MRIDUL CHANDRAWANSHI
+ 1
This is without arrival time. I want to take arrival time input and sort it 1st then perform the fcfs.
10th Jan 2022, 2:30 AM
MRIDUL CHANDRAWANSHI
+ 1
When there is a table for fcfs, the arrival time of process 1 is not necessarily 1, so arrival time matters.
10th Jan 2022, 6:12 AM
MRIDUL CHANDRAWANSHI
+ 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).
10th Jan 2022, 6:16 AM
MRIDUL CHANDRAWANSHI
+ 1
I'm still puzzled. Doesn't its position in the queue establish the order of processing?
10th Jan 2022, 6:17 AM
Brian
Brian - avatar
+ 1
We have to arrange it manually after taking input from user. Visit the site and try to solve problem 1.
10th Jan 2022, 6:19 AM
MRIDUL CHANDRAWANSHI
+ 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.
10th Jan 2022, 3:47 PM
MRIDUL CHANDRAWANSHI
+ 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"); }
11th Jan 2022, 4:17 AM
MRIDUL CHANDRAWANSHI
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.
10th Jan 2022, 6:10 AM
Brian
Brian - avatar