Program for FCFS CPU Scheduling | Set 2 (Processes with different arrival times)
Last Updated :
15 Jan, 2025
We have already discussed FCFS Scheduling of processes with same arrival time. In this post, scenarios, when processes have different arrival times, are discussed. Given n processes with their burst times and arrival times, the task is to find the average waiting time and an average turn around time using FCFS scheduling algorithm.Â
FIFO simply queues processes in the order they arrive in the ready queue. Here, the process that comes first will be executed first and next process will start only after the previous gets fully executed.Â
- Completion Time: Time at which the process completes its execution.
- Turn Around Time: Time Difference between completion time and arrival time. Turn Around Time = Completion Time – Arrival Time
- Waiting Time(W.T): Time Difference between turn around time and burst time.Â
Waiting Time = Turn Around Time – Burst Time.


Process Wait Time : Service Time - Arrival Time
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 8 - 2 = 6
P3 16 - 3 = 13
Average Wait Time: (0 + 4 + 6 + 13) / 4 = 5.75
Service Time: Also known as Burst Time, this is the amount of time a process requires to complete its execution on the CPU. It represents the time the CPU spends executing instructions of that particular process.
Waiting Time: It refers to the total amount of time that a process spends waiting in the ready queue before it gets a chance to execute on the CPU.
Changes in code as compare to code of FCFS with same arrival time:Â To find waiting time: Time taken by all processes before the current process to be started (i.e. burst time of all previous processes) – arrival time of current processÂ
wait_time[i] = (bt[0] + bt[1] +…… bt[i-1] ) – arrival_time[i]
1- Input the processes along with their burst time(bt) and arrival time(at)
2- Find waiting time for all other processes i.e. for a given process i:
wt[i] = (bt[0] + bt[1] +…… bt[i-1]) – at[i]
3- Now find turn around time = waiting_time + burst_time for all processes
4- Average waiting time = total_waiting_time / no_of_processes
5- Average turn around time = total_turn_around_time / no_of_processes
C++
//Process Synced, dynamic input, c++ easy to understand code
#include<iostream>
#include<stdlib.h>
using namespace std;
//class process with all the time values and functions
class Process{
int id, bt, at, ct, tat, wt;
public:
void input(Process*,int );
void calc(Process *,int);
void show(Process*,int);
void sort(Process *, int);
};
//main function
int main(){
int n;
cout<<"\nEnter the no of processes in your system:\n";
cin>>n;
Process *p = new Process[n];
Process f;
f.input(p,n);
f.sort(p, n);
f.calc(p,n);
f.show(p,n);
return 0;
}
//taking input arrival and burst times for all processes
void Process::input(Process *p,int n){
for(int i = 0;i<n;i++){
cout<<"\nEnter pival time for process "<<i+1<<":\n";
cin>>p[i].at;
cout<<"\nEnter burst time for process "<<i+1<<":\n";
cin>>p[i].bt;
p[i].id = i+1;
}
}
//calculating waiting, turn-around and completion time
void Process::calc(Process*p, int n){
int sum = 0;
sum = sum + p[0].at;
for(int i = 0;i<n;i++){
sum = sum + p[i].bt;
p[i].ct = sum;
p[i].tat = p[i].ct - p[i].at;
p[i].wt = p[i].tat - p[i].bt;
if(sum<p[i+1].at){
int t = p[i+1].at-sum;
sum = sum+t;
}
}
}
//Sorting processes with respect to arrival times (needed for synchronized input)
void Process::sort(Process*p, int n){
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(p[j].at>p[j+1].at){
int temp;
//sorting burst times
temp = p[j].bt;
p[j].bt = p[j+1].bt;
p[j+1].bt = temp;
//sorting arrival times
temp = p[j].at;
p[j].at = p[j+1].at;
p[j+1].at = temp;
//sorting their respective IDs
temp = p[j].id;
p[j].id = p[j+1].id;
p[j+1].id = temp;
}
}
}
}
//display function
void Process::show(Process*p, int n){
cout<<"Process\tArrival\tBurst\tWaiting\tTurn Around\tCompletion\n";
for(int i =0;i<n;i++){
cout<<" P["<<p[i].id<<"]\t "<<p[i].at<<"\t"<<p[i].bt<<"\t"<<p[i].wt<<"\t "<<p[i].tat<<"\t\t"<<p[i].ct<<"\n";
}
}
Java
// Java program for implementation of FCFS
// scheduling with different arrival time
public class GFG{
// Function to find the waiting time for all
// processes
static void findWaitingTime(int processes[], int n, int bt[], int wt[], int at[])
{
int service_time[] = new int[n];
service_time[0] = at[0];
wt[0] = 0;
// calculating waiting time
for (int i = 1; i < n ; i++)
{
//representing wasted time in queue
int wasted=0;
// Add burst time of previous processes
service_time[i] = service_time[i-1] + bt[i-1];
// Find waiting time for current process =
// sum - at[i]
wt[i] = service_time[i] - at[i];
// If waiting time for a process is in negative
// that means it is already in the ready queue
// before CPU becomes idle so its waiting time is 0
// wasted time is basically time for process to wait after a process is over
if (wt[i] < 0) {
wasted = Math.abs(wt[i]);
wt[i] = 0;
}
//Add wasted time
service_time[i] = service_time[i] + wasted;
}
}
// Function to calculate turn around time
static void findTurnAroundTime(int processes[], int n, int bt[],
int wt[], int tat[])
{
// Calculating turnaround time by adding bt[i] + wt[i]
for (int i = 0; i < n ; i++)
tat[i] = bt[i] + wt[i];
}
// Function to calculate average waiting and turn-around
// times.
static void findavgTime(int processes[], int n, int bt[], int at[])
{
int wt[] = new int[n], tat[] = new int[n];
// Function to find waiting time of all processes
findWaitingTime(processes, n, bt, wt, at);
// Function to find turn around time for all processes
findTurnAroundTime(processes, n, bt, wt, tat);
// Display processes along with all details
System.out.print("Processes " + " Burst Time " + " Arrival Time "
+ " Waiting Time " + " Turn-Around Time "
+ " Completion Time \n");
int total_wt = 0, total_tat = 0;
for (int i = 0 ; i < n ; i++)
{
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
int compl_time = tat[i] + at[i];
System.out.println(i+1 + "\t\t" + bt[i] + "\t\t"
+ at[i] + "\t\t" + wt[i] + "\t\t "
+ tat[i] + "\t\t " + compl_time);
}
System.out.print("Average waiting time = "
+ (float)total_wt / (float)n);
System.out.print("\nAverage turn around time = "
+ (float)total_tat / (float)n);
}
// Driver code
public static void main(String args[]) {
// Process id's
int processes[] = {1, 2, 3};
int n = processes.length;
// Burst time of all processes
int burst_time[] = {5, 9, 6};
// Arrival time of all processes
int arrival_time[] = {0, 3, 6};
findavgTime(processes, n, burst_time, arrival_time);
}
}
/*This code is contributed by PrinciRaj1992*/
Python
# Python3 program for implementation of FCFS
# scheduling with different arrival time
# Function to find the waiting time
# for all processes
def findWaitingTime(processes, n, bt, wt, at):
service_time = [0] * n
service_time[0] = 0
wt[0] = 0
# calculating waiting time
for i in range(1, n):
# Add burst time of previous processes
service_time[i] = (service_time[i - 1] +
bt[i - 1])
# Find waiting time for current
# process = sum - at[i]
wt[i] = service_time[i] - at[i]
# If waiting time for a process is in
# negative that means it is already
# in the ready queue before CPU becomes
# idle so its waiting time is 0
if (wt[i] < 0):
wt[i] = 0
# Function to calculate turn around time
def findTurnAroundTime(processes, n, bt, wt, tat):
# Calculating turnaround time by
# adding bt[i] + wt[i]
for i in range(n):
tat[i] = bt[i] + wt[i]
# Function to calculate average waiting
# and turn-around times.
def findavgTime(processes, n, bt, at):
wt = [0] * n
tat = [0] * n
# Function to find waiting time
# of all processes
findWaitingTime(processes, n, bt, wt, at)
# Function to find turn around time for
# all processes
findTurnAroundTime(processes, n, bt, wt, tat)
# Display processes along with all details
print("Processes Burst Time Arrival Time Waiting",
"Time Turn-Around Time Completion Time \n")
total_wt = 0
total_tat = 0
for i in range(n):
total_wt = total_wt + wt[i]
total_tat = total_tat + tat[i]
compl_time = tat[i] + at[i]
print(" ", i + 1, "\t\t", bt[i], "\t\t", at[i],
"\t\t", wt[i], "\t\t ", tat[i], "\t\t ", compl_time)
print("Average waiting time = %.5f "%(total_wt /n))
print("\nAverage turn around time = ", total_tat / n)
# Driver code
if __name__ =="__main__":
# Process id's
processes = [1, 2, 3]
n = 3
# Burst time of all processes
burst_time = [5, 9, 6]
# Arrival time of all processes
arrival_time = [0, 3, 6]
findavgTime(processes, n, burst_time,
arrival_time)
# This code is contributed
# Shubham Singh(SHUBHAMSINGH10)
C#
// C# program for implementation of FCFS
// scheduling with different arrival time
using System;
public class GFG{
// Function to find the waiting time for all
// processes
static void findWaitingTime(int []processes, int n, int []bt, int []wt, int []at)
{
int []service_time = new int[n];
service_time[0] = 0;
wt[0] = 0;
// calculating waiting time
for (int i = 1; i < n ; i++)
{
// Add burst time of previous processes
service_time[i] = service_time[i-1] + bt[i-1];
// Find waiting time for current process =
// sum - at[i]
wt[i] = service_time[i] - at[i];
// If waiting time for a process is in negative
// that means it is already in the ready queue
// before CPU becomes idle so its waiting time is 0
if (wt[i] < 0)
wt[i] = 0;
}
}
// Function to calculate turn around time
static void findTurnAroundTime(int []processes, int n, int[] bt,
int []wt, int[] tat)
{
// Calculating turnaround time by adding bt[i] + wt[i]
for (int i = 0; i < n ; i++)
tat[i] = bt[i] + wt[i];
}
// Function to calculate average waiting and turn-around
// times.
static void findavgTime(int []processes, int n, int []bt, int []at)
{
int []wt = new int[n]; int []tat = new int[n];
// Function to find waiting time of all processes
findWaitingTime(processes, n, bt, wt, at);
// Function to find turn around time for all processes
findTurnAroundTime(processes, n, bt, wt, tat);
// Display processes along with all details
Console.Write("Processes " + " Burst Time " + " Arrival Time "
+ " Waiting Time " + " Turn-Around Time "
+ " Completion Time \n");
int total_wt = 0, total_tat = 0;
for (int i = 0 ; i < n ; i++)
{
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
int compl_time = tat[i] + at[i];
Console.WriteLine(i+1 + "\t\t" + bt[i] + "\t\t"
+ at[i] + "\t\t" + wt[i] + "\t\t "
+ tat[i] + "\t\t " + compl_time);
}
Console.Write("Average waiting time = "
+ (float)total_wt / (float)n);
Console.Write("\nAverage turn around time = "
+ (float)total_tat / (float)n);
}
// Driver code
public static void Main(String []args) {
// Process id's
int []processes = {1, 2, 3};
int n = processes.Length;
// Burst time of all processes
int []burst_time = {5, 9, 6};
// Arrival time of all processes
int []arrival_time = {0, 3, 6};
findavgTime(processes, n, burst_time, arrival_time);
}
}
// This code is contributed by Princi Singh
JavaScript
<script>
// JavaScript program for implementation of FCFS
// scheduling with different arrival time
// Function to find the waiting time for all
// processes
function findWaitingTime(processes , n , bt , wt , at)
{
var service_time = Array.from({length: n}, (_, i) => 0);
service_time[0] = at[0];
wt[0] = 0;
// calculating waiting time
for (var i = 1; i < n ; i++)
{
//representing wasted time in queue
var wasted=0;
// Add burst time of previous processes
service_time[i] = service_time[i-1] + bt[i-1];
// Find waiting time for current process =
// sum - at[i]
wt[i] = service_time[i] - at[i];
// If waiting time for a process is in negative
// that means it is already in the ready queue
// before CPU becomes idle so its waiting time is 0
// wasted time is basically time for process to
// wait after a process is over
if (wt[i] < 0) {
wasted = Math.abs(wt[i]);
wt[i] = 0;
}
// Add wasted time
service_time[i] = service_time[i] + wasted;
}
}
// Function to calculate turn around time
function findTurnAroundTime(processes , n , bt, wt , tat)
{
// Calculating turnaround time by adding bt[i] + wt[i]
for (var i = 0; i < n ; i++)
tat[i] = bt[i] + wt[i];
}
// Function to calculate average waiting and turn-around
// times.
function findavgTime(processes , n , bt , at)
{
var wt = Array.from({length: n}, (_, i) => 0.0);
var tat = Array.from({length: n}, (_, i) => 0.0);
// Function to find waiting time of all processes
findWaitingTime(processes, n, bt, wt, at);
// Function to find turn around time for all processes
findTurnAroundTime(processes, n, bt, wt, tat);
// Display processes along with all details
document.write("Processes " + " Burst Time " + " Arrival Time "
+ " Waiting Time " + " Turn-Around Time "
+ " Completion Time <br>");
var total_wt = 0, total_tat = 0;
for (var i = 0 ; i < n ; i++)
{
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
var compl_time = tat[i] + at[i];
document.write(i+1 + "??" + bt[i]
+ "??"
+ at[i] + "??" + wt[i] + "??"
+ tat[i] + "??" + compl_time+"<br>");
}
document.write("<br>Average waiting time = "
+ total_wt/n +"<br>");
document.write("<br>Average turn around time = "
+ total_tat/n+"<br>");
}
// Driver code
// Process id's
var processes = [1, 2, 3];
var n = processes.length;
// Burst time of all processes
var burst_time = [5, 9, 6];
// Arrival time of all processes
var arrival_time = [0, 3, 6];
findavgTime(processes, n, burst_time, arrival_time);
// This code is contributed by 29AjayKumar
</script>
Output:Â
Processes
| Burst Time
| Arrival Time
| Waiting Time
| Turn-Around Time
| Completion Time
|
---|
1
|
5
|
0
|
0
|
5
|
5
|
---|
2
|
9
|
3
|
2
|
11
|
14
|
---|
3
|
6
|
6
|
8
|
14
|
20
|
---|
Average waiting time = 3.33333
Average turn around time = 10.0
C++
#include<iostream>
using namespace std;
int main()
{
int n, burst_time[20], waiting_time[20], turnaround_time[20];
float avg_waiting_time = 0, avg_turnaround_time = 0;
cout<<"Enter total number of processes(maximum 20): ";
cin>>n;
cout<<"\nEnter Process Burst Time\n";
for(int i=0;i<n;i++)
{
cout<<"P["<<i+1<<"]: ";
cin>>burst_time[i];
}
waiting_time[0] = 0; // Waiting time for first process is 0
// Calculating waiting time
for(int i=1;i<n;i++)
{
waiting_time[i] = 0;
for(int j=0;j<i;j++)
{
waiting_time[i] += burst_time[j];
}
}
// Calculating turnaround time by adding burst_time and waiting_time
for(int i=0;i<n;i++)
{
turnaround_time[i] = burst_time[i] + waiting_time[i];
avg_turnaround_time += turnaround_time[i];
}
avg_turnaround_time /= n;
cout<<"\nAverage Turnaround Time: "<<avg_turnaround_time<<"ms\n";
// Calculating average waiting time
for(int i=0;i<n;i++)
{
avg_waiting_time += waiting_time[i];
}
avg_waiting_time /= n;
cout<<"\nAverage Waiting Time: "<<avg_waiting_time<<"ms\n\n";
cout<<"Process\tBurst Time\tWaiting Time\tTurnaround Time\n";
for(int i=0;i<n;i++)
{
cout<<"P["<<i+1<<"]\t"<<burst_time[i]<<"\t\t"<<waiting_time[i]<<"\t\t"<<turnaround_time[i]<<endl;
}
return 0;
}
Java
import java.util.Scanner;
public class ProcessScheduling {
public static void main(String[] args) {
int n, burst_time[], waiting_time[], turnaround_time[];
float avg_waiting_time = 0, avg_turnaround_time = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Enter total number of processes (maximum 20): ");
n = sc.nextInt();
burst_time = new int[n];
waiting_time = new int[n];
turnaround_time = new int[n];
System.out.println("\nEnter Process Burst Time");
for (int i = 0; i < n; i++) {
System.out.print("P[" + (i+1) + "]: ");
burst_time[i] = sc.nextInt();
}
waiting_time[0] = 0; // Waiting time for first process is 0
// Calculating waiting time
for (int i = 1; i < n; i++) {
waiting_time[i] = 0;
for (int j = 0; j < i; j++) {
waiting_time[i] += burst_time[j];
}
}
// Calculating turnaround time by adding burst_time and waiting_time
for (int i = 0; i < n; i++) {
turnaround_time[i] = burst_time[i] + waiting_time[i];
avg_turnaround_time += turnaround_time[i];
}
avg_turnaround_time /= n;
System.out.println("\nAverage Turnaround Time: " + avg_turnaround_time + "ms");
// Calculating average waiting time
for (int i = 0; i < n; i++) {
avg_waiting_time += waiting_time[i];
}
avg_waiting_time /= n;
System.out.println("\nAverage Waiting Time: " + avg_waiting_time + "ms\n");
System.out.println("Process\tBurst Time\tWaiting Time\tTurnaround Time");
for (int i = 0; i < n; i++) {
System.out.println("P[" + (i+1) + "]\t" + burst_time[i] + "\t\t" + waiting_time[i] + "\t\t" + turnaround_time[i]);
}
sc.close();
}
}
Python
# Python program to calculate
# waiting time, turnaround time,
# and average waiting time and
# turnaround time of a process
# Function to calculate waiting time,
# turnaround time and average waiting time
# and turnaround time of a process
def calculateTime(n, burst_time):
waiting_time = [0] * n
turnaround_time = [0] * n
avg_waiting_time = 0
avg_turnaround_time = 0
waiting_time[0] = 0 # Waiting time for first process is 0
# Calculating waiting time
for i in range(1, n):
waiting_time[i] = 0
for j in range(i):
waiting_time[i] += burst_time[j]
# Calculating turnaround time by adding burst_time and waiting_time
for i in range(n):
turnaround_time[i] = burst_time[i] + waiting_time[i]
avg_turnaround_time += turnaround_time[i]
avg_turnaround_time /= n
print(f"\nAverage Turnaround Time: {avg_turnaround_time}ms")
# Calculating average waiting time
for i in range(n):
avg_waiting_time += waiting_time[i]
avg_waiting_time /= n
print(f"\nAverage Waiting Time: {avg_waiting_time}ms\n")
print("Process\tBurst Time\tWaiting Time\tTurnaround Time")
for i in range(n):
print(f"P[{i+1}]\t{burst_time[i]}\t\t{waiting_time[i]}\t\t{turnaround_time[i]}")
# Driver code
if __name__ == '__main__':
n = int(input("Enter total number of processes(maximum 20): "))
burst_time = []
print("\nEnter Process Burst Time")
for i in range(n):
burst_time.append(int(input(f"P[{i+1}]: ")))
calculateTime(n, burst_time)
C#
using System;
class Program {
static void Main(string[] args)
{
int n;
int[] burst_time = new int[20];
int[] waiting_time = new int[20];
int[] turnaround_time = new int[20];
float avg_waiting_time = 0;
float avg_turnaround_time = 0;
Console.Write(
"Enter total number of processes(maximum 20): ");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("\nEnter Process Burst Time");
for (int i = 0; i < n; i++) {
Console.Write("P[" + (i + 1) + "]: ");
burst_time[i]
= Convert.ToInt32(Console.ReadLine());
}
waiting_time[0]
= 0; // Waiting time for first process is 0
// Calculating waiting time
for (int i = 1; i < n; i++) {
waiting_time[i] = 0;
for (int j = 0; j < i; j++) {
waiting_time[i] += burst_time[j];
}
}
// Calculating turnaround time by adding burst_time
// and waiting_time
for (int i = 0; i < n; i++) {
turnaround_time[i]
= burst_time[i] + waiting_time[i];
avg_turnaround_time += turnaround_time[i];
}
avg_turnaround_time /= n;
Console.WriteLine("\nAverage Turnaround Time: "
+ avg_turnaround_time + "ms\n");
// Calculating average waiting time
for (int i = 0; i < n; i++) {
avg_waiting_time += waiting_time[i];
}
avg_waiting_time /= n;
Console.WriteLine("\nAverage Waiting Time: "
+ avg_waiting_time + "ms\n\n");
Console.WriteLine(
"Process\tBurst Time\tWaiting Time\tTurnaround Time");
for (int i = 0; i < n; i++) {
Console.WriteLine("P[" + (i + 1) + "]\t"
+ burst_time[i] + "\t\t"
+ waiting_time[i] + "\t\t"
+ turnaround_time[i]);
}
}
}
JavaScript
let n, burst_time = [], waiting_time = [], turnaround_time = [];
let avg_waiting_time = 0, avg_turnaround_time = 0;
n = prompt("Enter total number of processes(maximum 20): ");
console.log("\nEnter Process Burst Time\n");
for (let i = 0; i < n; i++) {
burst_time[i] = prompt(`P[${i + 1}]: `);
}
waiting_time[0] = 0; // Waiting time for first process is 0
// Calculating waiting time
for (let i = 1; i < n; i++) {
waiting_time[i] = 0;
for (let j = 0; j < i; j++) {
waiting_time[i] += parseInt(burst_time[j]);
}
}
// Calculating turnaround time by adding burst_time and waiting_time
for (let i = 0; i < n; i++) {
turnaround_time[i] = parseInt(burst_time[i]) + parseInt(waiting_time[i]);
avg_turnaround_time += turnaround_time[i];
}
avg_turnaround_time /= n;
console.log(`\nAverage Turnaround Time: ${avg_turnaround_time}ms\n`);
// Calculating average waiting time
for (let i = 0; i < n; i++) {
avg_waiting_time += waiting_time[i];
}
avg_waiting_time /= n;
console.log(`\nAverage Waiting Time: ${avg_waiting_time}ms\n\n`);
console.log("Process\tBurst Time\tWaiting Time\tTurnaround Time\n");
for (let i = 0; i < n; i++) {
console.log(`P[${i + 1}]\t${burst_time[i]}\t\t${waiting_time[i]}\t\t${turnaround_time[i]}`);
}
Output:

In this program, the user is asked to input the number of processes and their respective burst times. Then, the program calculates the waiting time and turnaround time for each process and outputs the average waiting time and average turnaround time. Finally, the program displays a table showing the details of each process.
Â
Similar Reads
Priority CPU Scheduling with different arrival time - Set 2
Prerequisite -Program for Priority Scheduling - Set 1Priority scheduling is a non-preemptive algorithm and one of the most common scheduling algorithms in batch systems. Each process is assigned first arrival time (less arrival time process first) if two processes have same arrival time, then compar
11 min read
Program for FCFS CPU Scheduling | Set 1
First come - First served (FCFS), is the simplest scheduling algorithm. FIFO simply queues processes according to the order they arrive in the ready queue. In this algorithm, the process that comes first will be executed first and next process starts only after the previous gets fully executed. Term
15+ min read
Program for Shortest Job First (or SJF) CPU Scheduling | Set 1 (Non- preemptive)
The shortest job first (SJF) or shortest job next, is a scheduling policy that selects the waiting process with the smallest execution time to execute next. SJN, also known as Shortest Job Next (SJN), can be preemptive or non-preemptive. Characteristics of SJF Scheduling: Shortest Job first has the
13 min read
Program for Round Robin Scheduling for the Same Arrival Time
Round Robin is a CPU scheduling algorithm where each process is cyclically assigned a fixed time slot. It is the preemptive version of the First come First Serve CPU Scheduling algorithm. This article focuses on implementing a Round Robin Scheduling Program where all processes have the same arrival
15+ min read
Shortest Job First CPU Scheduling with Predicted Burst Time
Shortest Job First (SJF) is an optimal scheduling algorithm as it gives maximum Throughput and minimum average waiting time(WT) and turnaround time (TAT) but it is not practically implementable because the burst time of a process can't be predicted in advance. We may not know the length of the next
5 min read
Difference Between Arrival Time and Burst Time in CPU Scheduling
In CPU scheduling, there are two important terms called as âArrival Timeâ and âBurst Time.â These two terms play a key role in understanding the way processes are managed in the operating system and specifically, when the CPU time is to be allocated towards different tasks. By knowing the difference
4 min read
Program for SSTF Disk Scheduling Algorithm
Given an array of disk track numbers and initial head position, our task is to find the total number of seek operations done to access all the requested tracks if Shortest Seek Time First (SSTF) is a disk scheduling algorithm is used. The basic idea is the tracks that are closer to the current disk
10 min read
Difference between Priority scheduling and Shortest Job First (SJF) CPU scheduling
1. Priority Scheduling Algorithm : Priority scheduling algorithm executes the processes depending upon their priority. Each process is allocated a priority and the process with the highest priority is executed first. Priorities can be defined internally as well as externally. Internal priorities are
3 min read
Difference between FCFS and Priority CPU scheduling
1. First Come First Served (FCFS) : First Come First Served (FCFS) is the simplest type of algorithm. It is a non-preemptive algorithm i.e. the process cannot be interrupted once it starts executing. The FCFS is implemented with the help of a FIFO queue. The processes are put into the ready queue in
3 min read
Difference between First Come First Served (FCFS) and Round Robin (RR) Scheduling Algorithm
First Come First Served Scheduling Algorithm: First Come First Served (FCFS) is the simplest and non-preemptive scheduling algorithm. In First Come First Served (FCFS), the process is allocated to the CPU in the order of their arrival. A queue data structure is used to implement the FCFS scheduling
2 min read