0% found this document useful (0 votes)
35 views12 pages

FCFS Scheduling Algorithm in C

The document describes a C program to implement the Round Robin scheduling algorithm. It takes as input the arrival time and burst time of processes, sets the time quantum, then executes the processes by allocating the CPU for the time quantum or remaining burst time if less. It calculates waiting time and turnaround time for each process and the average times. It prints the Gantt chart showing the scheduling.

Uploaded by

GururajHudgi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views12 pages

FCFS Scheduling Algorithm in C

The document describes a C program to implement the Round Robin scheduling algorithm. It takes as input the arrival time and burst time of processes, sets the time quantum, then executes the processes by allocating the CPU for the time quantum or remaining burst time if less. It calculates waiting time and turnaround time for each process and the average times. It prints the Gantt chart showing the scheduling.

Uploaded by

GururajHudgi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

//Name:Vaishnavi p.

mokal

//Class: SE Computer; Roll No. 36; Batch:S2

//Aim: Write a C program to implement FCFS scheduling algorithm.

Source Code:

#include<stdio.h>

#include<conio.h>

int main()

int n,bt[20],wt[20],tat[20],ts=0,avwt=0,avtat=0,i,j;

printf("Enter total number of processes(maximum 20):");

scanf("%d",&n);

printf("\nEnter Process Burst Time\n");

for(i=0;i<n;i++)

printf("P[%d]:",i+1);

scanf("%d",&bt[i]);

wt[0]=0; //waiting time for first process is 0

//calculating waiting time

for(i=1;i<n;i++)

wt[i]=0;

for(j=0;j<i;j++)

wt[i]+=bt[j];

}
printf("\nProcess\t\tBurst Time\tWaiting Time\tTurnaround Time");

//calculating turnaround time

for(i=0;i<n;i++)

tat[i]=bt[i]+wt[i];

avwt+=wt[i];

avtat+=tat[i];

printf("\nP[%d]\t\t%d\t\t%d\t\t%d",i+1,bt[i],wt[i],tat[i]);

avwt=avwt/n;

avtat/=i;

printf("\n\nAverage Waiting Time:%d",avwt);

printf("\nAverage Turnaround Time:%d\n",avtat);

for (i=0;i<n;i++)

printf("| p %d ",i);

printf("| \n");

for(i=0;i<=n;i++)

printf("%d ",ts);

ts=ts +bt[i];

return 0;

}
OUTPUT:
//Name: Vaishnavi p. mokal

//Class: SE Computer; Roll No. 36; Batch:S2

//Aim: Write a C program to implement SJF scheduling algorithm.

Source Code:

#include<stdio.h>

#include<conio.h>

void main()

int bt[20],p[20],wt[20],tat[20],i,j,n,total=0,ts=0,pos,temp;

float avg_wt,avg_tat;

printf("Enter number of process:");

scanf("%d",&n);

printf("\nEnter Burst Time:\n");

for(i=0;i<n;i++)

printf("p%d:",i+1);

scanf("%d",&bt[i]);

p[i]=i+1; //contains process number

//sorting burst time in ascending order using selection sort

for(i=0;i<n;i++)

pos=i;

for(j=i+1;j<n;j++)

if(bt[j]<bt[pos])
pos=j;

temp=bt[i];

bt[i]=bt[pos];

bt[pos]=temp;

temp=p[i];

p[i]=p[pos];

p[pos]=temp;

wt[0]=0; //waiting time for first process will be zero

//calculate waiting time

for(i=1;i<n;i++)

wt[i]=0;

for(j=0;j<i;j++)

wt[i]+=bt[j];

total+=wt[i];

avg_wt=(float)total/n; //average waiting time

total=0;

printf("\nProcess\t Burst Time \tWaiting Time\tTurnaround Time");

for(i=0;i<n;i++)

tat[i]=bt[i]+wt[i]; //calculate turnaround time

total+=tat[i];
printf("\np%d\t\t %d\t\t %d\t\t\t%d",p[i],bt[i],wt[i],tat[i]);

avg_tat=(float)total/n; //average turnaround time

printf("\n\nAverage Waiting Time=%f",avg_wt);

printf("\nAverage Turnaround Time=%f\n",avg_tat);

for (i=0;i<n;i++)

printf("| p %d ",p[i]);

printf("| \n");

for(i=0;i<=n;i++)

printf("%d ",ts);

ts=ts +bt[i];

return 0;

}
OUTPUT:

//Name:Vaishnavi p. mokal

//Class: SE Computer; Roll No. 36; Batch:S2

//Aim: Write a C program to implement Round Robin scheduling algorithm.


Source Code:

#include<stdio.h>

int at[100],bt[100],rt[100],temp[100];

float wait_time=0,turn_time=0;

void main()

int c,j,n,time,r,flag=0,time_q,ltt,i,wt=0;

printf("Enter [Link] process:");

scanf("%d",&n);

r=n;

for(c=0;c<n;c++)

printf("Enter arrival time of p%d:\t",c+1);

scanf("%d",&at[c]);

printf("Enter burst time of p%d: \t",c+1);

scanf("%d",&bt[c]);

rt[c]=bt[c];

temp[c]=bt[c];

printf("\n");

printf("Enter time quantum:\t");

scanf("%d",&time_q);

printf("\n\n\tprocess\tAT\tBT\tTAT\tWT \n\n");

for(time=0,c=0;r!=0;)

if(rt[c]<=time_q && rt[c]>0)

time=time+rt[c];

rt[c]=0;

flag=1;

}
else if (rt[c]>0)

rt[c]=rt[c]-time_q;

time=time+time_q;

if(rt[c]==0 && flag==1)

wt=0;

wt=time-at[c]-bt[c];

r--;

printf("\tP%d\t%d\t%d\t%d\t%d\n",c+1,at[c],bt[c],time-at[c],wt);

ltt=time-at[c];

wait_time=wait_time+time-at[c]-bt[c];

turn_time=turn_time+time-at[c];

flag=0;

if(c==n-1)

c=0;

else if(at[c+1]<=time)

c++;

else

c=0;

j=0;

printf("\n\n\n");

printf("Gantt Chart ");

printf("\n\n\n");

printf("\t");

for(i=at[0];i<time;)

if(bt[j]>=time_q)

{
printf("P%d\t",j+1);

i+=time_q;

bt[j]=bt[j]-time_q;

else if(bt[j]>0)

printf("p%d\t",j+1);

i+=bt[j];

bt[j]=0;

j++;

if(j>=n)

j=0;

printf("\n");

j=0;

printf("\t");

for(i=at[0];i<time;)

if(temp[j]>=time_q)

printf("%d\t",i+time_q);

i+=time_q;

temp[j]=temp[j]-time_q;

else if(temp[j]>0)

printf("%d\t",i+temp[j]);

i+=temp[j];
temp[j]=0;

j++;

if(j>=n)

j=0;

printf("\n\n\n");

printf("\nAverage_waiting_time=%f\n",wait_time/n);

printf("Average_turn_around_time=%f\n",turn_time/n);

printf("\n\n");

OUTPUT:

You might also like