You are on page 1of 13

OPERATING SYSTEM LAB TASK (FCFS,

SJF, ROUND ROBIN)

Submitted To: Mr. Muhammad Naveed


Submitted By: Saad Waheed Khan
Registration No: 1880105
FCFS
#include<iostream>
using namespace std;

int main()
{
int no_of_process;
int burst_time[15];
int waiting_time[15],i,j;
int turn_around_time[15];
float total_waiting_time=0,total_turn_around_time=0;

cout<<"Enter number of processes: ";


cin>>no_of_process;
cout<<"Enter Burst Time for each process\n ";
for(i=0;i<no_of_process;i++)
{
cout<<"Process["<<i+1<<"]: ";
cin>>burst_time[i];
}

waiting_time[0]=0;

for(i=1;i<no_of_process;i++)
{
waiting_time[i]=0;
for(j=0;j<i;j++)
{
waiting_time[i]+=burst_time[j];
}
}

for(i=0;i<no_of_process;i++)
{
turn_around_time[i]=burst_time[i]+waiting_time[i];
total_waiting_time+=waiting_time[i];
total_turn_around_time+=turn_around_time[i];
}

cout<<"Process\t\tBurst Time\t\tWaiting Time\t\tTurn Around Time\n\n";

for(i=0;i<no_of_process;i++)
{

cout<<i+1<<"\t\t\t"<<burst_time[i]<<"\t\t\t"<<waiting_time[i]<<"\t\t\t"<<turn_around_time[i]<
<endl;
}

cout<<"Average Waiting Time is :"<<total_waiting_time/no_of_process<<endl;


cout<<"Average Turn Around Time is
:"<<total_turn_around_time/(no_of_process)*1.0<<endl;
return 0;
}

FCPS OUTPUT:
SJF:
#include<iostream>

using namespace std;

int main()
{
int bt[20],p[20],wt[20],tat[20],pr[20];
int i,j,n,total=0;
int pos,temp,avg_wt,avg_tat;
cout<<"Enter Total Number of Process:";
cin>>n;

cout<<"\nEnter Burst Time and Priority\n";


for(i=0;i<n;i++)
{
cout<<"\nP["<<i+1<<"]\n";
cout<<"Burst Time:";
cin>>bt[i];
cout<<"Priority:";
cin>>pr[i];
p[i]=i+1;
}

for(i=0;i<n;i++)
{
pos=i;
for(j=i+1;j<n;j++)
{
if(pr[j]<pr[pos])
pos=j;
}

temp=pr[i];
pr[i]=pr[pos];
pr[pos]=temp;

temp=bt[i];
bt[i]=bt[pos];
bt[pos]=temp;

temp=p[i];
p[i]=p[pos];
p[pos]=temp;
}

wt[0]=0;

for(i=1;i<n;i++)
{
wt[i]=0;
for(j=0;j<i;j++)
wt[i]+=bt[j];
total+=wt[i];
}

avg_wt=total/n;
total=0;

cout<<"\nProcess\t Burst Time \tWaiting Time\tTurnaround Time";


for(i=0;i<n;i++)
{
tat[i]=bt[i]+wt[i];
total+=tat[i];
cout<<"\nP["<<p[i]<<"]\t\t "<<bt[i]<<"\t\t "<<wt[i]<<"\t\t\t"<<tat[i];
}

avg_tat=total/n;
cout<<"\n\nAverage Waiting Time="<<avg_wt;
cout<<"\nAverage Turnaround Time="<<avg_tat;

return 0;
}
OUTPUT
ROUND ROBIN:
#include <iostream>

using namespace std;

int main()
{
cout<<"Enter the number of processes: ";
int nProc=0;
cin>>nProc;

cout<<"Enter the burst times of processes: ";


int data[10][5];
for(int i =0;i<nProc;++i)
{
cin>>data[i][0];
data[i][1]=data[i][0];
data[i][2]=0;
data[i][3]=0;
data[i][4]=0;
}

int time=0;
cout<<"Enter time quantum: ";
cin>>time;

while(1)
{
bool resume = 0;
for(int i =0;i<nProc;++i)
{
if(data[i][4]==0)
{
resume = 1;
break;
}
}

if(resume)
{
for(int i =0;i<nProc;++i)
{
if(data[i][1]<=time)
{
for(int j=0;j<nProc;++j)
{
if(i==j)
continue;
else if(data[j][4]==0)
data[j][2]+=data[i][1];
}
data[i][1]=0;
data[i][4]=1;
}
else if(data[i][1]>time)
{
data[i][1]-=time;
for(int j =0;j<nProc;++j)
{
if(i==j)
continue;
else if(data[j][4]==0)
data[j][2]+=time;
}
}
}
}
else if(!resume)
break;
}

float avgWt =0, avgTat =0;

for(int i=0;i<nProc;++i)
{
data[i][3] = data[i][0]+data[i][2];
avgWt+=data[i][2];
avgTat+=data[i][3];
}
avgWt/=nProc;
avgTat/=nProc;

for(int i = 0;i<nProc;++i)
{
cout<<"\nProcess ID "<<i<<endl;
cout<<"Burst time : "<<data[i][0]<<endl;
cout<<"Waiting time: "<<data[i][2]<<endl;
cout<<"TAT: "<<data[i][3]<<endl;
cout<<endl;
}

cout<<"Average waiting time: "<<avgWt<<endl;


cout<<"Average turn around time: "<<avgTat<<endl;
}
OUTPUT:

You might also like