Job Scheduling
Job Scheduling
17/U/4400/1PE/PE
0761223933
Types of algorithms
There are two types of algorithms namely non-preemptive or preemptive.
Non-Preemptive algorithms
Non-preemptive algorithms are designed so that once a process enters the running
state, it cannot be preempted until it completes its allotted time.
Preemptive algorithms
The preemptive scheduling is based on priority where a scheduler may preempt a low
priority running process anytime when a high priority process enters into a ready state.
THE ALGORITHMS
First Come First Serve (FCFS)
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
Shortest Job Next (SJN)
This is also known as shortest job first, or SJF
This is a non-preemptive, pre-emptive scheduling algorithm.
Best approach to minimize waiting time.
Easy to implement in large lists of jobs systems where required executing time is
known in advance.
Impossible to implement in interactive systems where required CPU time is not
known.
The processer should know in advance how much time process will take.
Given: Table of processes, and their Arrival time, Execution time
P0 0 5 0
P1 1 3 5
P2 2 8 14
P3 3 6 8
P0 0-0=0
P1 5-1=4
P2 14 - 2 = 12
P3 8-3=5
P0 0 5 1 0
P1 1 3 2 11
P2 2 8 1 14
P3 3 6 3 5
P0 0-0=0
P1 11 - 1 = 10
P2 14 - 2 = 12
P3 5-3=2
P0 (0 - 0) + (12 - 3) = 9
P1 (3 - 1) = 2
P3 (9 - 3) + (17 - 12) = 11
In previous post, we have discussed Set 1 of SJF i.e. non-preemptive. In this post we
will discuss the preemptive version of SJF known as Shortest Remaining Time First
(SRTF).
In the Shortest Remaining Time First (SRTF) scheduling algorithm, the process with
the smallest amount of time remaining until completion is selected to execute. Since
the currently executing process is the one with the shortest amount of time remaining
by definition, and since that time should only reduce as execution progresses,
processes will always run until they complete or a new process is added that requires a
smaller amount of time.
P1 9 1 0
P2 2 2 2
Preemptive-SJF-Diagram
P2 waiting time: 0
Advantage:
2- The system also requires very little overhead since it only makes a decision when a
process completes or a new process is added.
3- When a new process is added the algorithm only needs to compare the currently
executing process with the new process, ignoring all other processes currently waiting
to execute.
Disadvantage:
1- Like shortest job first, it has the potential for process starvation.
2- Long processes may be held off indefinitely if short processes are continually added.
Source:Wiki
Recommended: Please try your approach on {IDE} first, before moving on to the
solution.
Implementation:
executed.
current_time +1;
process.
C++
Java
Python3
C#
Javascript
<script>
class Process
constructor(pid,bt,art)
// processes
rt[i] = proc[i].bt;
let complete = 0, t = 0, minm = Number.MAX_VALUE;
// completed
while (complete != n) {
// current time`
minm = rt[j];
shortest = j;
check = true;
if (check == false) {
t++;
continue;
}
rt[shortest]--;
// Update minimum
minm = rt[shortest];
if (minm == 0)
minm = Number.MAX_VALUE;
// executed
if (rt[shortest] == 0) {
// Increment complete
complete++;
check = false;
// process
finish_time = t + 1;
wt[shortest] = finish_time -
proc[shortest].bt -
proc[shortest].art;
if (wt[shortest] < 0)
wt[shortest] = 0;
// Increment time
t++;
function findTurnAroundTime(proc,n,wt,tat)
// bt[i] + wt[i]
function findavgTime(proc,n)
// processes
findWaitingTime(proc, n, wt);
// all processes
// details
document.write("Processes " +
" "
+ " " + tat[i]+"<br>");
total_wt / n+"<br>");
document.write("Average turn around time = " +
total_tat / n+"<br>");
// Driver Method
findavgTime(proc, proc.length);
</script>
Output:
1 6 3 9
2 8 16 24
3 7 8 15
4 3 0 3
Guru99
Lawrence Williams
Lawrence Williams
January 1, 2022
CPU Scheduling is a process of determining which process will own CPU for execution
while another process is on hold. The main task of CPU scheduling is to make sure
that whenever the CPU remains idle, the OS at least select one of the processes
available in the ready queue for execution. The selection process will be carried out by
the CPU scheduler. It selects one of the processes in memory that are ready for
execution.
Interval Timer
What is Dispatcher?
Round-Robin Scheduling
Preemptive Scheduling
In Preemptive Scheduling, the tasks are mostly assigned with their priorities.
Sometimes it is important to run a task with a higher priority before another lower
priority task, even if the lower priority task is still running. The lower priority task holds
for some time and resumes when the higher priority task finishes its execution.
Non-Preemptive Scheduling
In this type of scheduling method, the CPU has been allocated to a specific process.
The process that keeps the CPU busy will release the CPU either by switching context
or terminating. It is the only method that can be used for various hardware platforms.
That’s because it doesn’t need special hardware (for example, a timer) like preemptive
scheduling.
Specific process switches from the running state to the ready state.
Specific process switches from the waiting state to the ready state.
Process: It is the reference that is used for both job and user.
CPU/IO burst cycle: Characterizes process execution, which alternates between CPU
and I/O activity. CPU times are usually shorter than the time of I/O.
CPU utilization: CPU utilization is the main task in which the operating system needs to
make sure that CPU remains as busy as possible. It can range from 0 to 100 percent.
However, for the RTOS, it can be range from 40 percent for low-level and 90 percent
for the high-level system.
Throughput: The number of processes that finish their execution per unit time is known
Throughput. So, when the CPU is busy executing the process, at that time, work is
being done, and the work completed per unit time is called Throughput.
Minimize:
Waiting time: Waiting time is an amount that specific process needs to wait in the ready
queue.
Response time: It is an amount to time in which the request was submitted until the first
response is produced.
Interval Timer
Most of the multi-programmed operating system uses some form of a timer to prevent
a process from tying up the system forever.
What is Dispatcher?
It is a module that provides control of the CPU to the process. The Dispatcher should
be fast so that it can run on every context switch. Dispatch latency is the amount of
time needed by the CPU scheduler to stop one process and start another.
Context Switching
Priority Scheduling
Scheduling Algorithms
First Come First Serve is the full form of FCFS. It is the easiest and most simple CPU
scheduling algorithm. In this type of algorithm, the process which requests the CPU
gets the CPU allocation first. This scheduling method can be managed with a FIFO
queue.
As the process enters the ready queue, its PCB (Process Control Block) is linked with
the tail of the queue. So, when CPU becomes free, it should be assigned to the
process at the beginning of the queue.
However, this method is poor in performance, and the general wait time is quite high.
The full form of SRT is Shortest remaining time. It is also known as SJF preemptive
scheduling. In this method, the process will be allocated to the task, which is closest to
its completion. This method prevents a newer ready state process from holding the
completion of an older process.
This method is mostly applied in batch environments where short jobs are required to
be given preference.
This is not an ideal method to implement it in a shared system where the required CPU
time is unknown.
Associate with each process as the length of its next CPU burst. So that operating
system uses these lengths, which helps to schedule the process with the shortest
possible time.
Priority scheduling also helps OS to involve priority assignments. The processes with
higher priority should be carried out first, whereas jobs with equal priorities are carried
out on a round-robin or FCFS basis. Priority can be decided based on memory
requirements, time requirements, etc.
Round-Robin Scheduling
Round robin is the oldest, simplest scheduling algorithm. The name of this algorithm
comes from the round-robin principle, where each person gets an equal share of
something in turn. It is mostly used for scheduling algorithms in multitasking. This
algorithm method helps for starvation free execution of processes.
Time slice should be minimum, which is assigned for a specific task to be processed.
However, it may vary for different processes.
It is a real time system which responds to the event within a specific time limit.
SJF is a full form of (Shortest job first) is a scheduling algorithm in which the process
with the shortest execution time should be selected for execution next. This scheduling
method can be preemptive or non-preemptive. It significantly reduces the average
waiting time for other processes awaiting execution.
In this method, when the CPU is available, the next process or job with the shortest
completion time will be executed first.
This algorithm method is useful for batch-type processing, where waiting for jobs to
complete is not critical.
It improves job output by offering shorter jobs, which should be executed first, which
mostly have a shorter turnaround time.
This algorithm separates the ready queue into various separate queues. In this
method, processes are assigned to a queue based on a specific property of the
process, like the process priority, size of the memory, etc.
However, this is not an independent scheduling OS algorithm as it needs to use other
types of algorithms in order to schedule the jobs.
Summary:
CPU scheduling is a process of determining which process will own CPU for execution
while another process is on hold.
In Preemptive Scheduling, the tasks are mostly assigned with their priorities.
In the Non-preemptive scheduling method, the CPU has been allocated to a specific
process.
The burst time is the time required for the process to complete execution. It is also
called running time.
CPU utilization is the main task in which the operating system needs to ensure that the
CPU remains as busy as possible.
The number of processes that finish their execution per unit time is known Throughput.
Waiting time is an amount that a specific process needs to wait in the ready queue.
It is the amount of time in which the request was submitted until the first response is
produced.
Six types of process scheduling algorithms are: First Come First Serve (FCFS), 2)
Shortest-Job-First (SJF) Scheduling, 3) Shortest Remaining Time, 4) Priority
Scheduling, 5) Round Robin Scheduling, 6) Multilevel Queue Scheduling.
In the First Come First Serve method, the process which requests the CPU gets the
CPU allocation first.
In the Shortest Remaining time, the process will be allocated to the task closest to its
completion.
In Priority Scheduling, the scheduler selects the tasks to work as per the priority.
Round robin scheduling works on the principle where each person gets an equal share
of something in turn.
In the Shortest job first, the shortest execution time should be selected for execution
next.
The multilevel scheduling method separates the ready queue into various separate
queues. In this method, processes are assigned to a queue based on a specific
property.
Post navigation
Report a Bug
Prev
Next
About
About Us
Advertise with Us
Write For Us
Contact Us
Career Suggestion
Interesting
eBook
Blog
Quiz
SAP eBook
Execute online
Execute Javascript
Execute HTML
Execute Python
Implementation:
process i ->
total_waiting_time / no_of_processes.
total_turn_around_time / no_of_processes
Rouns robin
1- Create an array rem_bt[] to keep track of remaining
3- Initialize time : t = 0
(i) t = t + quantum
(i) t = t + rem_bt[i];
Once w