Studytonight is now part of the GUVI universe. Explore GUVI →
🤩 New Cool Developer Tools for you. Explore →
FREE JavaScript Video Series Start Learning →
Signup/Sign In
Tests
MCQs to test your knowledge.
Compilers
Compilers to execute code in browser.
Index
PUBLISHED ON: MARCH 14, 2022

C++ Program For (SJF) SHORTEST JOB FIRST Scheduling Algorithm

In this tutorial we are required to generate the scheduling algorithm i.e. whichever command will be the shortest time consuming should be executed first. Let's first understand some of the basic terms before implementing the algorithm for SJF.

(SJF) SHORTEST JOB FIRST Scheduling Algorithm

//Implementation fo SHORTEST JOB FIRST(Preemptive) Using C++
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef struct proccess
{
	int at,bt,ct,ta,wt,btt;
	string pro_id;
		/*
	artime = Arrival time,
	bt = Burst time,
	ct = Completion time,
	ta = Turn around time,
	wt = Waiting time
	*/
}Schedule;
bool compare(Schedule a,Schedule b)
{
	return a.at<b.at;
	/* This Schedule will always return TRUE
	if above condition comes*/
}
bool compare2(Schedule a,Schedule b)
{
	return a.bt<b.bt;
	/* This Schedule will always return TRUE
	if above condition comes*/
}
int main()
{
	Schedule pro[10];
	//An array of Processes
	int n,i,j,pcom;
	//n = number of processes, i= iteration variable
	cout<<"Enter the number of Process::";
	cin>>n;
	cout<<"Enter the Process id arrival time burst time :::";
	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);
	/*sort is a predefined funcion defined in algorithm.h header file,
	it will sort the processes according to their arrival time*/
	i=0;
	pcom=0;
	while(pcom<n)
	{
		for(j=0;j<n;j++)
		{
			if(pro[j].at>i)
			break;
		}
		sort(pro,pro+j,compare2);
		/*sort is a predefined funcion defined in algorithm.h header file,
	it will sort the processes according to their burst time*/
		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;
		/*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;
	}
	return 0;
}


Enter the number of Process::5
Enter the Process id arrival time burst time :::
A 0 8
B 1 6
C 2 4
D 3 3
E 4 1
ProID Atime Btime Ctime Ttime Wtime
E 4 1 5 1 0
C 2 4 7 5 1
D 3 3 10 7 4
B 1 6 15 14 8
A 0 8 22 22 14

Conclusion

In this tutorial, we learned how to program for a (SJF) SHORTEST JOB FIRST Scheduling Algorithm



About the author:
Nikita Pandey is a talented author and expert in programming languages such as C, C++, and Java. Her writing is informative, engaging, and offers practical insights and tips for programmers at all levels.

Learn to Code
Learn and practice coding side-by-side.
NEW
C language Course
115+ coding exercises
Javascript Course
85+ coding exercises

AltStyle によって変換されたページ (->オリジナル) /