0% found this document useful (0 votes)
49 views

#Include #Include #Include #Include Class Int Float Public Void Void Void Void Void Void Void

This document contains C++ code that implements various CPU scheduling algorithms: first come first served (FCFS), shortest job first (SJF), round robin, and priority. It defines a CPUschedule class with methods to get process data, implement each algorithm, and calculate waiting times. The main function provides a menu to run each algorithm and output results. Key aspects include: - CPUschedule class stores process burst times and calculates waiting times for each algorithm - Algorithms implemented include FCFS, SJF (normal, preemptive, non-preemptive), round robin, priority - Main function gets user input to run a selected algorithm and display results

Uploaded by

muddasaryamin
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views

#Include #Include #Include #Include Class Int Float Public Void Void Void Void Void Void Void

This document contains C++ code that implements various CPU scheduling algorithms: first come first served (FCFS), shortest job first (SJF), round robin, and priority. It defines a CPUschedule class with methods to get process data, implement each algorithm, and calculate waiting times. The main function provides a menu to run each algorithm and output results. Key aspects include: - CPUschedule class stores process burst times and calculates waiting times for each algorithm - Algorithms implemented include FCFS, SJF (normal, preemptive, non-preemptive), round robin, priority - Main function gets user input to run a selected algorithm and display results

Uploaded by

muddasaryamin
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 11

#include "stdafx.

h"
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class cpuschedule
{
int n,Bu[20];
float Twt,Awt,A[10],Wt[10],w;
public:
//Getting the No of processes & burst time
void Getdata();
//First come First served Algorithm
void Fcfs();
//Shortest job First Algorithm
void Sjf();
//Shortest job First Algorithm with Preemption
void SjfP();
//Shortest job First Algorithm with NonPreemption
void SjfNp();
//Round Robin Algorithm
void RoundRobin();
//Priority Algorithm
void Priority();
};
// Implementation file for Cpu scheduling
#include "cpuh.h"
//Getting no of processes and Burst time
void cpuschedule::Getdata()
{
int i;
cout<<"
Enter the no of processes:";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"
Enter The BurstTime for Process p"<<i<<"= ";
cin>>Bu[i];
}
}
//First come First served Algorithm
void cpuschedule::Fcfs()
{
int i,B[10];
Twt=0.0;
for(i=1;i<=n;i++)
{
B[i]=Bu[i];
cout<<"
Burst time for process p"<<i<<"=
";
cout<<B[i];
}
Wt[1]=0;
for(i=2;i<=n;i++)

Wt[i]=B[i-1]+Wt[i-1];

}
//Calculating Average Weighting Time
for(i=1;i<=n;i++)
Twt=Twt+Wt[i];
Awt=Twt/n;
cout<<"
Total
Weighting Time="<<Twt;
cout<<"
Average Weighting Time="<<Awt<<"
";
}
//Shortest job First Algorithm
void cpuschedule::Sjf()
{
int i,j,temp,B[10];
Twt=0.0;
for(i=1;i<=n;i++)
{
B[i]=Bu[i];
cout<<"
Burst time for process p"<<i<<"=
";
cout<<B[i];
}
for(i=n;i>=1;i--)
{
for(j=1;j<=n;j++)
{
if(B[j-1]>B[j])
{
temp=B[j-1];
B[j-1]=B[j];
B[j]=temp;
}
}
}
Wt[1]=0;
for(i=2;i<=n;i++)
{
Wt[i]=B[i-1]+Wt[i-1];
}
//calculating Average Weighting Time
for(i=1;i<=n;i++)
Twt=Twt+Wt[i];
Awt=Twt/n;
cout<<"
Total
Weighting Time="<<Twt;
cout<<"
Average Weighting Time="<<Awt<<"
";
}
//Shortest job First Algorithm with NonPreemption

void cpuschedule::SjfNp()
{
int i,B[10],Tt=0,temp,j;
char S[10];
float A[10],temp1,t;
Twt=0.0;
w=0.0;
for(i=1;i<=n;i++)
{
B[i]=Bu[i];
cout<<"
Burst time for process p"<<i<<"=
";
cout<<B[i];
S[i]='T';
Tt=Tt+B[i];
cout<<"
Enter the Arrival Time for"<<i<<"th process=
cin>>A[i];
}
for(i=n;i>=1;i--)
{
for(j=3;j<=n;j++)
{
if(B[j-1]>B[j])
{
temp=B[j-1];
temp1=A[j-1];
B[j-1]=B[j];
A[j-1]=A[j];
B[j]=temp;
A[j]=temp1;
}
}
}
for(i=1;i<=n;i++)
{
cout<<"
p"<<i<<"
"<<B[i]<<" "<<A[i];
}
//For the 1st process
Wt[1]=0;
w=w+B[1];
t=w;
S[1]='F';
while(w<Tt)
{
i=2;
while(i<=n)
{
if(S[i]=='T'&&A[i]<=t)
{
Wt[i]=w;

";

cout<<"

WT"<<i<<"="<<Wt[i];

S[i]='F';
w=w+B[i];
t=w;
i=2;
}
else
}

i++;

}
for(i=1;i<=n;i++)
cout<<"
Wt"<<i<<"=="<<Wt[i];
//calculating average weighting Time
for(i=1;i<=n;i++)
Twt=Twt+(Wt[i]-A[i]);
Awt=Twt/n;
cout<<"Total
Weighting Time="<<Twt<<"
";

cout<<"Average Weighting Time="<<Awt<<"

";
}
//Priority Algorithm
void cpuschedule::Priority()
{
int i,B[10],P[10],j;
w=0.0;
int max;
Twt=0.0;
max=1;
for(i=1;i<=n;i++)
{
B[i]=Bu[i];
cout<<"
Burst time for process p"<<i<<"=
";
cout<<B[i];
cout<<"
Enter the priority for process P"<<i<<"=
cin>>P[i];
if(max<P[i])
max=P[i];
}
j=1;
while(j<=max)
{
i=1;
while(i<=n)
{
if(P[i]==j)
{
Wt[i]=w;

";

}
j++;

}
i++;

w=w+B[i];

//calculating average weighting Time


for(i=1;i<=n;i++)
Twt=Twt+Wt[i];
Awt=Twt/n;
cout<<"Total
Weighting Time="<<Twt<<"
";

cout<<"Average Weighting Time="<<Awt<<"

";
}
//Shortest job First Algorithm with Preemption
void cpuschedule::SjfP()
{
int i,j,m,Wt[10],k,B[10],A[10],Tt=0,Wtm[10],temp;
char S[20],start[20];
int max=0,Time=0,min;
float Twt=0.0,Awt;
for(i=1;i<=n;i++)
{
B[i]=Bu[i];
cout<<"
Burst time for process P"<<i<<"=
"<<B[i];
if(B[i]>max)
max=B[i];
Wt[i]=0;
S[i]='T';
start[i]='F';
Tt=Tt+B[i];
cout<<"
Enter the Arrival Time for"<<i<<"th process=
";
cin>>A[i];
if(A[i]>Time)
Time=A[i];
}
//cout<<"
Max="<<max;
int w=0,flag=0,t=0;
i=1;
while(t<Time)
{
if(A[i]<=t && B[i]!=0)
{
if(flag==0)
{
Wt[i]=Wt[i]+w;
cout<<"
Wt["<<i<<"]="<<Wt[i];
}
B[i]=B[i]-1;

if(B[i]==0)
S[i]='F';
start[i]='T';
t++;
w=w+1;
if(S[i]!='F')
{
j=1;flag=1;
while(j<=n && flag!=0)
{
if(S[j]!='F' && B[i]>B[j] && A[j]<=t &&

i!=j )

}
else
{

flag=0;
Wt[i]=Wt[i]-w;
i=j;

flag=1;

}
j++;
}
else
{

i++;
j=1;
while(A[j]<=t &&j<=n)
{
if(B[i]>B[j] && S[j]!='F')
{
flag=0;
i=j;
}
j++;
}

}
else
if(flag==0)
i++;
}
cout<<"
Printing remaining burst time
";
for(i=1;i<=n;i++)
cout<<"
B["<<i<<"]="<<B[i];
cout<<"
";
while(w<Tt)
{
min=max+1;

i=1;
while(i<=n)
{
if(min>B[i] && S[i]=='T')
{
min=B[i];
j=i;
}
i++;
}
i=j;
if(w==Time && start[i]=='T')
{
w=w+B[i];
S[i]='F';
}
else
{
Wt[i]=Wt[i]+w;
w=w+B[i];
S[i]='F';
}
}
cout<<"Weight info
";
for(i=1;i<=n;i++)
cout<<"
WT["<<i<<"]="<<Wt[i];
cout<<"after subtracting arrival time
";
for(i=1;i<=n;i++)
{
Wt[i]=Wt[i]-A[i];
cout<<"
WT["<<i<<"]="<<Wt[i];
}
//Calculating Average Weighting time
for(i=1;i<=n;i++)
Twt=Twt+Wt[i];
Awt=Twt/n;
cout<<"
Average Weighting Time="<<Awt;

}
//Round Robin Algorithm
void cpuschedule::RoundRobin()
{
int i,j,tq,k,B[10],Rrobin[10][10],count[10];
int max=0;
int m;
Twt=0.0;

for(i=1;i<=n;i++)
{
B[i]=Bu[i];
cout<<"
Burst time for process p"<<i<<"=
";
cout<<B[i];
if(max<B[i])
max=B[i];
Wt[i]=0;
}
cout<<"
Enter the Time Quantum=";
cin>>tq;
//TO find the dimension of the Rrobin array
m=max/tq+1;
//initializing Rrobin array
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
Rrobin[i][j]=0;
}
}
//placing value in the Rrobin array
i=1;
while(i<=n)
{
j=1;
while(B[i]>0)
{
if(B[i]>=tq)
{
B[i]=B[i]-tq;
Rrobin[i][j]=tq;
j++;
}
else
{
Rrobin[i][j]=B[i];
B[i]=0;
j++;
}
}
count[i]=j-1;
i++;
}
";

cout<<"Display
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cout<<"Rr["<<i<<","<<j<<"]="<<Rrobin[i][j];
cout<<"
";
}

";

cout<<"

}
//calculating weighting time
int x=1;
i=1;
while(x<=n)
{
for(int a=1;a<x;a++)
{
Wt[x]=Wt[x]+Rrobin[a][i];
}
i=1;
int z=x;
j=count[z];
k=1;
while(k<=j-1)
{
if(i==n+1)
{
i=1;
k++;
}
else
{
if(i!=z)
{
Wt[z]=Wt[z]+Rrobin[i][k];
}
i++;
}
}
x++;
}
for(i=1;i<=n;i++)
cout<<"
Weighting Time for process P"<<i<<"="<<Wt[i];
//calculating Average Weighting Time
for(i=1;i<=n;i++)
Twt=Twt+Wt[i];
Awt=Twt/n;
cout<<"
Total
Weighting Time="<<Twt;
cout<<"
Average Weighting Time="<<Awt<<"
";
}
//Application file for cpu Scheduling
#include "cpuh.h"
void main()
{
int ch,cho;
cpuschedule c;
do

{
";
";
";
";
";
";
";
";

";

cout<<"

MENU

cout<<"1.Getting BurstTime
cout<<"2.FirstComeFirstServed
cout<<"3.ShortestJobFirst
cout<<"4.RoundRobin
cout<<"5.Priority
cout<<"6.EXIT
cout<<"Enter your choice
cin>>ch;
switch(ch)
{
case 1:
c.Getdata();
break;
case 2:
cout<<"FIRST COME FIRST SERVED SCHEDULING
c.Fcfs();
break;
case 3:
cout<<"SHORTEST JOB FIRST SCHEDULING

";

";
";
";
";

do
{

cout<<"1.SJF-Normel
cout<<"2.SJF-Preemptive
cout<<"3.SJF-NonPreemptive
cout<<"Enter your choice

cin>>cho;
switch(cho)
{
case 1:
c.Sjf();
break;
case 2:
c.SjfP();
break;
case 3:
c.SjfNp();
break;
}
}while(cho<=3);
break;
case 4:

";

cout<<"ROUND ROBIN SCHEDULING


c.RoundRobin();
break;
case 5:
cout<<"PRIORITY SCHEDULING

";

c.Priority();
break;
case 6:
break;
}
}while(ch<=5);

You might also like