Scheduling
Module – 3
Dr. Rabindra Kumar Singh
Scheduling
Processes Scheduling
CPU Scheduling
Pre-emptive & non-pre-emptive
Resource allocation and management
Deadlocks
Deadlock Handling Mechanisms
Dr. Rabindra Kumar Singh BCSE303L 2
Process Management
Dr. Rabindra Kumar Singh
Process Management
Scheduling: Primitive and non-Primitive Scheduling;
Scheduling Policies; Processes and Threads; real time Issues;
Concurrency: The Idea of concurrent execution; state and
state diagram; Implementation Structures(ready list, process
control block and so forth); dispatching and context switching;
interrupt handling in concurrent environment;
Mutual exclusion: Definition of the “mutual exclusion”
problem; Deadlock detection and prevention; solution
strategy; models and mechanism(semaphores, monitors,
condition variables, rendezvous); Producer-consumer
problems; synchronization; multiprocessor issues
Dr. Rabindra Kumar Singh BCSE303L 4
Process Scheduling
Maximize CPU use, quickly switch processes
onto CPU for time sharing
Process scheduler selects among available
processes for next execution on CPU
Dr. Rabindra Kumar Singh BCSE303L 5
Process Scheduling
Is an OS task that schedules processes of different
states like ready, waiting, and running.
Process scheduling allows OS to allocate a time
interval of CPU execution for each process.
Another important reason for using a process
scheduling system is that it keeps the CPU busy all
the time.
This allows you to get the minimum response time
for programs.
Dr. Rabindra Kumar Singh BCSE303L 6
Process Scheduling
Three types of operating system queues are:
Job queue – It helps you to store all the processes in
the system.
Ready queue – This type of queue helps you to set
every process residing in the main memory, which is
ready and waiting to execute.
Device queues – It is a process that is blocked because
of the absence of an I/O device.
Dr. Rabindra Kumar Singh BCSE303L 7
Ready Queue And Various I/O Device Queues
•Linked list – A queue
header contains
pointers to the first and
final PCBs in the list.
•Each PCB is extended
to include a pointer field
that points to the next
PCB in the queue.
Dr. Rabindra Kumar Singh BCSE303L 8
Representation of Process Scheduling
Queueing diagram represents queues, resources, flows
•Arrow indicates the
flow of the process.
Dr. Rabindra Kumar Singh BCSE303L 9
Schedulers
Short-term scheduler (or CPU scheduler)
Long-term scheduler (or job scheduler)
Medium-term scheduler
Dr. Rabindra Kumar Singh BCSE303L 10
Short-term scheduler / CPU scheduler
Short term scheduling is also known as CPU scheduler.
The short-term scheduler's main job is to choose a process
from the Ready Queue that is ready to run and assign the
processor to it.
The dispatcher gives control of the CPU to the process
selected by the short term scheduler.
Dr. Rabindra Kumar Singh BCSE303L 11
Short-term scheduler / CPU scheduler
selects which process should be executed next and allocates
CPU
Sometimes only scheduler in a system
invoked in (milliseconds) (must be fast)
Dr. Rabindra Kumar Singh BCSE303L 12
Long-term scheduler / job scheduler
Long term scheduler is also known as a job
scheduler.
This scheduler regulates the program and
select process from the queue and loads
them into memory for execution.
It also regulates the degree of multi-
programing.
Dr. Rabindra Kumar Singh BCSE303L 13
Long-term scheduler / job scheduler
selects which processes should be brought
into the ready queue
invoked infrequently in (seconds, minutes)
The long-term scheduler controls the degree of multiprogramming
Processes can be described as either:
I/O-bound process
CPU-bound process
Long-term scheduler strives for good process mix
Dr. Rabindra Kumar Singh BCSE303L 14
Long Term Scheduler Short Term Scheduler
It is an operating system scheduler that chooses It is an operating system scheduler that chooses
processes from the job queue and loads them the process from the several processes that
to execution in the main memory. the processor runs.
It is also referred to as the Job Scheduler. It is also referred to as a CPU scheduler.
It is slower. It is faster.
It controls the multiprogramming degree. It provides less control over the multiprogramming
degree.
It selects the process less frequently. It selects the process more frequently.
It is always present in the Batch OS and can or It is present in the Batch OS and is only minimally
cannot be present at all in the Time-Sharing OS. present in the Time-Sharing OS.
It chooses the processes from the job pool. It chooses the processes from the ready queue.
It chooses a good process that is a mix-up of It chooses a new process for a processor quite
input/output bound and CPU bound. frequently.
Dr. Rabindra Kumar Singh BCSE303L 15
Medium Term Scheduling
It is an important part of swapping.
It enables you to handle the swapped out-processes.
In this scheduler, a running process can become suspended, which makes an I/O
request.
Dr. Rabindra Kumar Singh BCSE303L 16
Medium Term Scheduling
Is added if degree of multiple programming needs to
be decreased
A running process can become suspended if it makes an I/O request.
A suspended processes can’t make any progress towards completion.
In order to remove the process from memory and make space for other
processes, the suspended process should be moved to secondary
storage.
Dr. Rabindra Kumar Singh BCSE303L 17
BCSE303L 18
CPU Scheduling
Dr. Rabindra Kumar Singh
CPU Scheduling
Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Multiple-Processor Scheduling
Real-Time Scheduling
Thread Scheduling
Operating Systems Examples
Java Thread Scheduling
Algorithm Evaluation
Dr. Rabindra Kumar Singh BCSE303L 20
Basic Concepts
Maximum CPU utilization obtained with
multiprogramming
CPU–I/O Burst Cycle – Process execution
consists of a cycle of CPU execution and
I/O wait
CPU burst distribution
Dr. Rabindra Kumar Singh BCSE303L 21
Alternating Sequence of CPU And I/O Bursts
Dr. Rabindra Kumar Singh BCSE303L 22
CPU Scheduler
Whenever the CPU becomes idle, the OS
must select one of the processes in the ready
queue to be executed
The selection process is carried out by the
short-term scheduler
Dr. Rabindra Kumar Singh BCSE303L 23
Diagram of Process State
Dr. Rabindra Kumar Singh BCSE303L 24
Preemptive scheduling vs. non-preemptive scheduling
CPU scheduling decisions may take place when a
process:
1. Switches from running to waiting state
2. Terminates
3. Switches from waiting to ready
4. Switches from running to ready state
Dr. Rabindra Kumar Singh BCSE303L 25
Preemptive scheduling vs. non-preemptive scheduling
When scheduling takes place only under
circumstances 1 and 2, we say that the scheduling
scheme is non-preemptive; otherwise, its called
preemptive
Under non-preemptive scheduling, once the CPU
has been allocated to a process, the process keep
the CPU until it release the CPU either by
terminating or by switching to waiting state.
Dr. Rabindra Kumar Singh BCSE303L 26
Preemptive scheduling vs. non-preemptive scheduling
Preemptive scheduling incurs a cost associated with
access to share data.
Consider the case of two processes that share a
data. It is preemptive so that while one process is
updating the data, the second process then tries to
read the data, which are in an inconsistent state.
Dr. Rabindra Kumar Singh BCSE303L 27
Dispatcher
Dispatcher module gives control of the CPU
to the process selected by the short-term
scheduler; this involves:
switching context
switching to user mode
jumping to the proper location in the user
program to restart that program
Dispatch latency – time it takes for the
dispatcher to stop one process and start
another running
Dr. Rabindra Kumar Singh BCSE303L 28
Scheduling Criteria
CPU utilization – keep the CPU as busy as possible
Throughput – # of processes that complete their
execution per time unit
Turnaround time – amount of time to execute a
particular process
Waiting time – amount of time a process has been
waiting in the ready queue
Response time – amount of time it takes from
when a request was submitted until the first
response is produced, not output (for time-sharing
environment)
Dr. Rabindra Kumar Singh BCSE303L 29
Optimization Criteria
• Max CPU utilization
• Max throughput
• Min turnaround time
• Min waiting time
• Min response time
Dr. Rabindra Kumar Singh BCSE303L 30
First-Come, First-Served (FCFS) Scheduling
Process Burst Time
P1 24
P2 3
P3 3
Suppose that the processes arrive in the order: P1 ,
P2 , P3
The Gantt Chart for the schedule is:
P1 P2 P3
0 24 27 30
Waiting time for P1 = 0; P2 = 24; P3 = 27
Average waiting time: (0 + 24 + 27)/3 = 17
Dr. Rabindra Kumar Singh BCSE303L 31
FCFS Scheduling (Contd...)
• Turnaround Time – The interval from the time
of submission of a process to the time of
completion is turnaround time
• Response Time – the amount of time it takes
to start responding
Process Burst Arrival Start Wait Finish
Time
1 24 0 0 0 24
2 3 0 24 24 27
3 3 0 27 27 30
Dr. Rabindra Kumar Singh BCSE303L 32
Process Burst Arrival Start Wait Finish TA RT
Time
1 24 0 0 0 24 24 0
2 3 0 24 24 27 27 24
3 3 0 27 27 30 30 27
Dr. Rabindra Kumar Singh BCSE303L 33
Process Burst Time Arrival
1 12 0
2 6 1
3 9 4
Turnaround Time –
Average Turnaround time = (12+17+23)/3
=17.33ms
Response Time –
Average Response Time = (0+11+14)/3 = 8.33ms
Dr. Rabindra Kumar Singh BCSE303L 34
Process Burst Arrival Start Wait Finish TA RT
Time
1 12 0 0 0 12 12 0
2 6 1 12 11 18 17 11
3 9 4 18 14 27 23 14
Average Waiting Time = (0+11+14)/3 = 8.33ms
Average Turnaround Time =(12+17+23)/3 =17.33ms
Average Response = (0+11+14)/3 = 8.33ms
Dr. Rabindra Kumar Singh BCSE303L 35
Process Burst Time Arrival
1 10 0
2 29 0
3 3 0
4 7 0
5 12 0
Dr. Rabindra Kumar Singh BCSE303L 36
Process Burst Arrival Start Wait Finish TA RT
Time
1 10 0 0 0 10 10 0
2 29 0 10 10 39 39 10
3 3 0 39 39 42 42 39
4 7 0 42 42 49 49 42
5 12 0 49 49 61 61 49
Dr. Rabindra Kumar Singh BCSE303L 37
FCFS Scheduling (Contd...)
Suppose that the processes arrive in the order
P2 , P3 , P1
The Gantt chart for the schedule is:
P2 P3 P1
0 3 6 30
Waiting time for P1 = 6; P2 = 0; P3 = 3
Average waiting time: (6 + 0 + 3)/3 = 3
Much better than previous case
Convoy effect short process behind long process
Dr. Rabindra Kumar Singh BCSE303L 38
Shortest-Job-First (SJF) Scheduling
Associate with each process the length of its next CPU
burst. Use these lengths to schedule the process with
the shortest time
Two schemes:
Non-preemptive – once CPU given to the process it cannot
be preempted until completes its CPU burst
preemptive – if a new process arrives with CPU burst
length less than remaining time of current executing
process, preempt. This scheme is know as the
Shortest-Remaining-Time-First (SRTF)
SJF is optimal – gives minimum average waiting time
for a given set of processes
Dr. Rabindra Kumar Singh BCSE303L 39
Example of Non-Preemptive SJF
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
• SJF (non-preemptive)
P1 P3 P2 P4
0 3 7 8 12 16
• Average waiting time = (0 + 6 + 3 + 7)/4 = 4
Dr. Rabindra Kumar Singh BCSE303L 40
Example of Preemptive SJF
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
• SJF (preemptive)
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16
• Average waiting time = (9 + 1 + 0 +2)/4 = 3
Dr. Rabindra Kumar Singh BCSE303L 41
Determining Length of Next CPU Burst
• Can only estimate the length
• Can be done by using the length of previous
CPU bursts, using exponential averaging
1. t n = actual length of nth CPU burst
2. τ n+ 1= predicted value for the next CPU burst
3. α , 0≤ α ≤ 1
4. Define: τ = α t + 1− α τ
( . )
n+ 1 n n
• The parameter α controls the relative weight of recent and past history in our
prediction. Tn stores the past history.
Dr. Rabindra Kumar Singh BCSE303L 42
Prediction of the Length of the Next CPU Burst
Dr. Rabindra Kumar Singh BCSE303L 43
Examples of Exponential Averaging
• =0
– n+1 = n
– Recent history does not count
• =1
– n+1 = tn
– Only the actual last CPU burst counts
• If we expand the formula, we get:
n+1 = tn+(1 - ) tn-1 + …
+(1 - )j tn -j + …
+(1 - )n +1 0
• Since both and (1 - ) are less than or equal to 1,
each successive term has less weight than its
predecessor
Dr. Rabindra Kumar Singh BCSE303L 44
Priority Scheduling
• A priority number (integer) is associated with each
process
• The CPU is allocated to the process with the highest
priority (smallest integer highest priority)
– Preemptive
– nonpreemptive
• SJF is a priority scheduling where priority is the
predicted next CPU burst time
• Problem Starvation – low priority processes may
never execute
• Solution Aging – as time progresses increase the
priority of the process
Dr. Rabindra Kumar Singh BCSE303L 45
Round Robin (RR)
Each process gets a small unit of CPU time (time
quantum), usually 10-100 milliseconds. After this
time has elapsed, the process is preempted and
added to the end of the ready queue.
If there are n processes in the ready queue and
the time quantum is q, then each process gets 1/n
of the CPU time in chunks of at most q time units
at once. No process waits more than (n-1)q time
units.
Performance
q large FIFO
q small q must be large with respect to context
switch, otherwise overhead is too high
Dr. Rabindra Kumar Singh BCSE303L 46
Example of RR with Time Quantum = 20
Process Burst Time
P1 53
P2 17
P3 68
P4 24
The Gantt chart is:
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
0 20 37 57 77 97 117 121 134 154 162
Typically, higher average turnaround than SJF, but
better response
Dr. Rabindra Kumar Singh BCSE303L 47
Time Quantum and Context Switch Time
Dr. Rabindra Kumar Singh BCSE303L 48
Turnaround Time Varies With The Time Quantum
Dr. Rabindra Kumar Singh BCSE303L 49
Multilevel Queue
Ready queue is partitioned into separate queues:
foreground (interactive)
background (batch)
Each queue has its own scheduling algorithm
foreground – RR
background – FCFS
Scheduling must be done between the queues
Fixed priority scheduling; (i.e., serve all from foreground then
from background). Possibility of starvation.
Time slice – each queue gets a certain amount of CPU time
which it can schedule amongst its processes; i.e., 80% to
foreground in RR
20% to background in FCFS
Dr. Rabindra Kumar Singh BCSE303L 50
Multilevel Queue Scheduling
Dr. Rabindra Kumar Singh BCSE303L 51
Multilevel Feedback Queue
A process can move between the various
queues; aging can be implemented this way
Multilevel-feedback-queue scheduler defined
by the following parameters:
number of queues
scheduling algorithms for each queue
method used to determine when to upgrade a
process
method used to determine when to demote a
process
method used to determine which queue a process
will enter when that process needs service
Dr. Rabindra Kumar Singh BCSE303L 52
Example of Multilevel Feedback Queue
Three queues:
Q0 – RR with time quantum 8 milliseconds
Q1 – RR time quantum 16 milliseconds
Q2 – FCFS
Scheduling
A new job enters queue Q0 which is served FCFS.
When it gains CPU, job receives 8 milliseconds. If it
does not finish in 8 milliseconds, job is moved to
queue Q1.
At Q1 job is again served FCFS and receives 16
additional milliseconds. If it still does not complete,
it is preempted and moved to queue Q2.
Dr. Rabindra Kumar Singh BCSE303L 53
Multilevel Feedback Queues
Dr. Rabindra Kumar Singh BCSE303L 54
Multiple-Processor Scheduling
CPU scheduling more complex when
multiple CPUs are available
Homogeneous processors within a
multiprocessor
Load sharing
Asymmetric multiprocessing – only one
processor accesses the system data
structures, alleviating the need for data
sharing
Dr. Rabindra Kumar Singh BCSE303L 55
Real-Time Scheduling
Hard real-time systems – required to
complete a critical task within a guaranteed
amount of time
Soft real-time computing – requires that
critical processes receive priority over less
fortunate ones
Dr. Rabindra Kumar Singh BCSE303L 56
Thread Scheduling
Local Scheduling – How the threads library
decides which thread to put onto an
available LWP
Global Scheduling – How the kernel
decides which kernel thread to run next
Dr. Rabindra Kumar Singh BCSE303L 57
Pthread Scheduling API
#include <pthread.h>
#include <stdio.h>
#define NUM THREADS 5
int main(int argc, char *argv[])
{
int i;
pthread t tid[NUM THREADS];
pthread attr t attr;
/* get the default attributes */
pthread attr init(&attr);
/* set the scheduling algorithm to PROCESS or SYSTEM */
pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM);
/* set the scheduling policy - FIFO, RT, or OTHER */
pthread attr setschedpolicy(&attr, SCHED OTHER);
/* create the threads */
for (i = 0; i < NUM THREADS; i++)
pthread create(&tid[i],&attr,runner,NULL);
Dr. Rabindra Kumar Singh BCSE303L 58
Pthread Scheduling API
/* now join on each thread */
for (i = 0; i < NUM THREADS; i++)
pthread join(tid[i], NULL);
}
/* Each thread will begin control in this function */
void *runner(void *param)
{
printf("I am a thread\n");
pthread exit(0);
}
Dr. Rabindra Kumar Singh BCSE303L 59
Operating System Examples
• Solaris scheduling
• Windows XP scheduling
• Linux scheduling
Dr. Rabindra Kumar Singh BCSE303L 60
Solaris 2 Scheduling
Dr. Rabindra Kumar Singh BCSE303L 61
Solaris Dispatch Table
Dr. Rabindra Kumar Singh BCSE303L 62
Windows XP Priorities
Dr. Rabindra Kumar Singh BCSE303L 63
Linux Scheduling
Two algorithms: time-sharing and real-time
Time-sharing
Prioritized credit-based – process with most credits
is scheduled next
Credit subtracted when timer interrupt occurs
When credit = 0, another process chosen
When all processes have credit = 0, recrediting
occurs
Based on factors including priority and history
Real-time
Soft real-time
Posix.1b compliant – two classes
FCFS and RR
Highest priority process always runs first
Dr. Rabindra Kumar Singh BCSE303L 64
The Relationship Between Priorities and Time-slice length
Dr. Rabindra Kumar Singh BCSE303L 65
List of Tasks Indexed According to Prorities
Dr. Rabindra Kumar Singh BCSE303L 66
Algorithm Evaluation
Deterministic modeling – takes a particular
predetermined workload and defines the
performance of each algorithm for that
workload
Queueing models
Implementation
Dr. Rabindra Kumar Singh BCSE303L 67
5.15
Dr. Rabindra Kumar Singh BCSE303L 68
5.08
Dr. Rabindra Kumar Singh BCSE303L 69
In-5.7
Dr. Rabindra Kumar Singh BCSE303L 70
In-5.8
Dr. Rabindra Kumar Singh BCSE303L 71
In-5.9
Dr. Rabindra Kumar Singh BCSE303L 72
Dispatch Latency
Dr. Rabindra Kumar Singh BCSE303L 73
Java Thread Scheduling
• JVM Uses a Preemptive, Priority-Based
Scheduling Algorithm
• FIFO Queue is Used if There Are Multiple
Threads With the Same Priority
Dr. Rabindra Kumar Singh BCSE303L 74
Java Thread Scheduling (cont)
JVM Schedules a Thread to Run When:
1. The Currently Running Thread Exits the Runnable
State
2. A Higher Priority Thread Enters the Runnable
State
* Note – the JVM Does Not Specify Whether
Threads are Time-Sliced or Not
Dr. Rabindra Kumar Singh BCSE303L 75
Time-Slicing
Since the JVM Doesn’t Ensure Time-Slicing, the yield()
Method
May Be Used:
while (true) {
// perform CPU-intensive task
...
Thread.yield();
}
This Yields Control to Another Thread of Equal Priority
Dr. Rabindra Kumar Singh BCSE303L 76
Thread Priorities
Priority Comment
Thread.MIN_PRIORITY Minimum Thread Priority
Thread.MAX_PRIORITY Maximum Thread Priority
Thread.NORM_PRIORITY Default Thread
Priority
Priorities May Be Set Using setPriority() method:
setPriority(Thread.NORM_PRIORITY + 2);
Dr. Rabindra Kumar Singh BCSE303L 77
References
Silberschatz, Gagne, Galvin: Operating System Concepts, 6th Edition
Dr. Rabindra Kumar Singh BCSE303L 78
Dr. Rabindra Kumar Singh BCSE303L 79