Project Code
Project Code
sh)
echo "loading the program"
make
read var
case $var in
1)
./fcfs
;;
2)
./sjfspre
;;
3)
./sjfsnp
;;
4)
./prioritypre
;;
5)
./prioritynp
;;
6)
./roundrobin
;;
make
case $var in
1)
./fcfs
;;
2)
./sjfspre
;;
3)
./sjfsnp
;;
4)
./prioritypre
;;
5)
./prioritynp
;;
6)
./roundrobin
;;
fcfs: fcfs.cpp
g++ -o fcfs fcfs.cpp
sjfsnp: sjfsnp.cpp
g++ -o sjfsnp sjfsnp.cpp
sjfspre: sjfspre.cpp
g++ -o sjfspre sjfspre.cpp
prioritynp: prioritynp.cpp
g++ -o prioritynp prioritynp.cpp
prioritypre: prioritypre.cpp
g++ -o prioritypre prioritypre.cpp
roundrobin: roundrobin.cpp
g++ -o roundrobin roundrobin.cpp
FCFS Algorithm
(fcfs.cpp)
// C++ program for implementation of FCFS
// scheduling with different arrival time
#include<iostream>
using namespace std;
// Main function
int main()
{ int n;
int a[20];
for(int i=0;i<n;++i)
cin>>burst_time[i];
for(int j=0;j<n;++j)
cin>> arrival_time[j];
return 0;
}
SJSF(Pre-emptive)
(sjsfpre.cpp)
//Implementation fo SHORTEST JOB FIRST(Preemptive)
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
/*
artime = Arrival time,
bt = Burst time,
ct = Completion time,
ta = Turn around time,
wt = Waiting time
*/
}Schedule;
}
bool compare2(Schedule a,Schedule b)
{
return a.bt<b.bt;
int main()
{
Schedule pro[10];
int n,i,j,pcom;
//n = number of processes, i= iteration variable
for(i=0;i<n;i++)
{
cin>>pro[i].pro_id;
cin>>pro[i].at;
cin>>pro[i].bt;
pro[i].btt=pro[i].bt;
}
sort(pro,pro+n,compare);
float t=0;
float b=0;
i=0;
pcom=0;
while(pcom<n)
{
for(j=0;j<n;j++)
{
if(pro[j].at>i)
break;
}
if(j>0)
{
for(j=0;j<n;j++)
{
if(pro[j].bt!=0)
break;
}
if(pro[j].at>i)
{
i=pro[j].at;
}
pro[j].ct=i+1;
pro[j].bt--;
}
i++;
pcom=0;
for(j=0;j<n;j++)
{
if(pro[j].bt==0)
pcom++;
}
}
cout<<"ProID\tAtime\tBtime\tCtime\tTtime\tWtime\n";
for(i=0;i<n;i++)
{
pro[i].ta=pro[i].ct-pro[i].at;
pro[i].wt=pro[i].ta-pro[i].btt;
//sum calculation
t= t+pro[i].ta;
b= b+pro[i].wt;
/*Printing the Process id, arrival time, burst time,
completion time, turn around time, waiting time*/
cout<<pro[i].pro_id<<"\t"<<pro[i].at<<"\t"<<pro[i].btt<<"\t"<<pro[i].ct<<"\t"<<pro[i].ta<<"\t"<<
pro[i].wt;
cout<<endl;
}
float avg1=t/n;
float avg2=b/n;
#include <iostream>
#include <algorithm>
using namespace std;
int ab;
/*
artime = Arrival time,
bt = Burst time,
ct = Completion time,
ta = Turn around time,
wt = Waiting time
*/
}schedule;
int main()
{
schedule pro[10];
//An array of Processes
int n,i,j;
//n = number of processes, i= iteration variable
float t=0;
float b=0;
cout<<"Enter the number of schedule::";
cin>>n;
cout<<"Enter the schedule id and burst time :::";
for(i=0;i<n;i++)
{
cin>>pro[i].pro_id;
cin>>pro[i].bt;
pro[i].at=0;
}
sort(pro,pro+n,compare);
// initial values
pro[0].ct=pro[0].bt+pro[0].at;
pro[0].ta=pro[0].ct-pro[0].at;
pro[0].wt=pro[0].ta-pro[0].bt;
for(i=1;i<n;i++)
{
ab=pro[i-1].ct;
sort(pro+i,pro+n,compare2);
if(pro[i-1].ct<pro[i].at)
{
pro[i].ct=pro[i-1].ct+pro[i].bt+(pro[i].at-pro[i-1].ct);
}
else
{
pro[i].ct=pro[i-1].ct+pro[i].bt;
}
pro[i].ta=pro[i].ct-pro[i].at;
pro[i].wt=pro[i].ta-pro[i].bt;
t= t+pro[i].ta;
b= b+pro[i].wt;
}
t=t+pro[0].ta;
b=b+pro[0].wt;
cout<<t;
cout<<b;
float avg1=t/n;
float avg2=b/n;
cout<<"ProID\tAtime\tBtime\tCtime\tTtime\tWtime\n";
for(i=0;i<n;i++)
{
//before executing make it in one statement
cout<<pro[i].pro_id<<"\t"<<pro[i].at<<"\t"<<pro[i].bt
<<"\t"<<pro[i].ct<<"\t"<<pro[i].ta<<"\t"<<pro[i].wt;
cout<<endl;
}
return 0;
}
Priority
Scheduling (NP)
(prioritynp.cpp)
//Implementation of Priority(Non-Preeemptive) Using C++
#include <iostream>
#include <algorithm>
using namespace std;
/*
artime = Arrival time,
bt = Burst time,
ct = Completion time,
ta = Turn around time,
wt = Waiting time
*/
}process;
int main()
{
process pro[10];
int n,i,j;
cout<<"Enter the number of process::";
cin>>n;
cout<<"Enter the process id arrival time burst time and priority :::";
for(i=0;i<n;i++)
{
cin>>pro[i].pro_id;
cin>>pro[i].at;
cin>>pro[i].bt;
cin>>pro[i].pr;
}
sort(pro,pro+n,compare);
float t=0;
float b=0;
pro[0].ct=pro[0].bt+pro[0].at;
pro[0].ta=pro[0].ct-pro[0].at;
pro[0].wt=pro[0].ta-pro[0].bt;
i=1;
while(i<n-1)
{
for(j=i;j<n;j++)
{
if(pro[j].at>pro[i-1].ct)
break;
}
sort(pro+i,pro+i+(j-i),compare2);
pro[i].ct=pro[i-1].ct+pro[i].bt;
pro[i].ta=pro[i].ct-pro[i].at;
pro[i].wt=pro[i].ta-pro[i].bt;
i++;
}
pro[i].ct=pro[i-1].ct+pro[i].bt;
pro[i].ta=pro[i].ct-pro[i].at;
pro[i].wt=pro[i].ta-pro[i].bt;
cout<<"ProID\tAtime\tBtime\tCtime\tTtime\tWtime\tPriority\n";
for(i=0;i<n;i++)
{ t= t+pro[i].ta;
b= b+pro[i].wt;
//desplaying all the values
cout<<pro[i].pro_id<<"\t"<<pro[i].at<<"\t"<<pro[i].bt<<"\t"<<pro[i].ct<<"\t"<<pro[i].ta<<"\t"<<p
ro[i].wt<<"\t"<<pro[i].pr;
cout<<endl;
}
float avg1=t/n;
float avg2=b/n;
cout<<" the avg turn around time of the processes is="<<avg1<<endl;
cout<<" the avg waiting time of the processes is="<<avg2<<endl;
return 0;
}
Priority
Scheduling(Pre)
(prioritypre.cpp)
//Implementation of Priority(Preeemptive)
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
}schedule;
int main()
{
schedule pro[10];
int n,i,j,pcom;
sort(pro,pro+n,compare);
float t=0;
float b=0;
i=0;
pcom=0;
while(pcom<n)
{
for(j=0;j<n;j++)
{
if(pro[j].at>i)
break;
}
//second sort
sort(pro,pro+j,compare2);
if(j>0)
{
for(j=0;j<n;j++)
{
if(pro[j].bt!=0)
break;
}
if(pro[j].at>i)
{
i+=pro[j].at-i;
}
pro[j].ct=i+1;
pro[j].bt--;
}
i++;
pcom=0;
for(j=0;j<n;j++)
{
if(pro[j].bt==0)
pcom++;
}
}
cout<<"ProID\tAtime\tBtime\tCtime\tTtime\tWtime\tPriority\n";
for(i=0;i<n;i++)
{
pro[i].ta=pro[i].ct-pro[i].at;
pro[i].wt=pro[i].ta-pro[i].btt;
//before executing make it in one statement
// sum calculation
t= t+pro[i].ta;
b= b+pro[i].wt;
cout<<pro[i].pro_id<<"\t"<<pro[i].at<<"\t"<<pro[i].btt<<"\t"<<pro[i].ct<<"\t"<<pro[i].ta<<"\t"<<
pro[i].wt<<"\t"<<pro[i].pr;
cout<<endl;
}
float avg1=t/n;
float avg2=b/n;
cout<<" the avg turn around time of the processes is="<<avg1<<endl;
cout<<" the avg waiting time of the processes is="<<avg2<<endl;
return 0;
}
RoundRobin
(roundrobin.cpp)
//C++ Program to implement Round Robin
//Scheduling CPU Algorithm
#include <iostream>
#include <vector>
int main(){
int i,n,time,remain,temps=0,time_quantum;
int wt=0,tat=0;
remain=n;
// assigning the number of process to remain variable
vector<int>at(n);
vector<int>bt(n);
vector<int>rt(n);
//dynamic array declaration using vector method of (STL)
//STL standard template library of C++
cout<<"Enter the Arrival time, Burst time for All the processes"<<endl;
for(i=0;i<n;i++)
{
cin>>at[i];
cin>>bt[i];
rt[i]=bt[i];
}
else if(rt[i]>0)
{
rt[i] -= time_quantum;
//Subtraction using shorthand operators
time += time_quantum;
//Addition using shorthand operators
}
wt += time-at[i]-bt[i];
tat += time-at[i];
temps=0;
}
if(i == n-1)
i=0;
else if(at[i+1] <= time)
i++;
else
i=0;
}
return 0;
}
Created by :-
1) Anurag Singh (1705489)
2) Kushagra Anand (1705503)