Transcript Chapter 6

Chapter 6: CPU Scheduling
 Overview:

Basic Concepts

Scheduling Criteria

Scheduling Algorithms

Multiple-Processor Scheduling

Real-Time Scheduling

Algorithm Evaluation

Operating Systems Examples
Operating System Concepts
5.1
Silberschatz, Galvin and Gagne ©2005
Basic Concepts
 To Maximize CPU utilization, multiprogramming is used
 CPU–I/O Burst Cycle – Process execution consists of an
alternating sequence of CPU executions and I/O waits
 CPU burst distribution
Operating System Concepts
5.2
Silberschatz, Galvin and Gagne ©2005
Alternating Sequence of CPU And I/O Bursts
of a Process
Operating System Concepts
5.3
Silberschatz, Galvin and Gagne ©2005
Histogram of CPU-burst Times
Operating System Concepts
5.4
Silberschatz, Galvin and Gagne ©2005
CPU Scheduler
 Selects from among the processes in memory that are ready to
execute, and allocates the CPU to one of them
 CPU scheduling decisions may take place when a process:
1. Switches from running to waiting state
2. Switches from running to ready state
3. Switches from waiting to ready
4. Terminates
 Scheduling under 1 and 4 is non-preemptive
 All other scheduling is preemptive
Operating System Concepts
5.5
Silberschatz, Galvin and Gagne ©2005
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
Operating System Concepts
5.6
Silberschatz, Galvin and Gagne ©2005
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 taken 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)
Operating System Concepts
5.7
Silberschatz, Galvin and Gagne ©2005
Optimization Criteria
 A CPU scheduling algorithm should strive for

Maximizing CPU utilization

Maximizing throughput

Minimizing turnaround time

Minimizing waiting time

Minimizing response time

Making the users happy
Operating System Concepts
5.8
Silberschatz, Galvin and Gagne ©2005
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
0
24
P3
27
30
 Waiting time for P1 = 0; P2 = 24; P3 = 27
 Average waiting time: (0 + 24 + 27)/3 = 17
Operating System Concepts
5.9
Silberschatz, Galvin and Gagne ©2005
FCFS Scheduling (Cont.)
Suppose that the processes arrive in the order
P2 , P3 , P1
 The Gantt chart for the schedule is:
P2
0
P3
3
P1
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
Operating System Concepts
5.10
Silberschatz, Galvin and Gagne ©2005
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
CPU burst time.
 Two schemes:
nonpreemptive – once CPU is 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 currently executing process,
preempt. This scheme is known as the
Shortest-Remaining-Time-First (SRTF).

 SJF is optimal – gives minimum average waiting time for a given
set of processes.
 It is not possible to implement this algorithm even though it is
optimal because there is no way of knowing the next CPU burst.
Operating System Concepts
5.11
Silberschatz, Galvin and Gagne ©2005
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
0
3
P3
7
P2
8
P4
12
16
 Average waiting time = (0 + 6 + 3 + 7)/4 = 4
Operating System Concepts
5.12
Silberschatz, Galvin and Gagne ©2005
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
0
P2
2
P3
4
P2
5
P4
P1
11
7
16
 Average waiting time = (9 + 1 + 0 +2)/4 = 3
Operating System Concepts
5.13
Silberschatz, Galvin and Gagne ©2005
Determining Length of Next CPU Burst
 Can only estimate the length of the next CPU burst
 Can be done by using the length of previous CPU bursts, using
exponential averaging
1. t n  actual length of n th CPU burst
2.  n 1  predicted value for the next CPU burst
3.  , 0    1
4. Define :
Operating System Concepts
5.14
Silberschatz, Galvin and Gagne ©2005
Prediction of the Length of the Next CPU Burst
(α =1/2)
Operating System Concepts
5.15
Silberschatz, Galvin and Gagne ©2005
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 t0
 Since both  and (1 - ) are less than or equal to 1, each
successive term has less weight than its predecessor
Operating System Concepts
5.16
Silberschatz, Galvin and Gagne ©2005
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). Under Linux, users can set
priority to processes using the nice command.

Preemptive

Nonpreemptive
 SJF is a priority scheduling algorithm where priority is the predicted
next CPU burst time
 Problem with priority scheduling: Starvation – low priority
processes may never execute

A Solution to this problem: Aging – as time progresses,
increase the priority of the process
Operating System Concepts
5.17
Silberschatz, Galvin and Gagne ©2005
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

How large q should be: q must be large with respect to
context switch, otherwise overhead is too high
Operating System Concepts
5.18
Silberschatz, Galvin and Gagne ©2005
Example of RR with Time Quantum = 20
Process
P1
P2
P3
P4
 The Gantt chart is:
P1
0
P2
20
37
P3
Burst Time
53
17
68
24
P4
57
P1
77
P3
97 117
P4
P1
P3
P3
121 134 154 162
 Typically, higher average turnaround than SJF, but better response
time
Operating System Concepts
5.19
Silberschatz, Galvin and Gagne ©2005
Time Quantum and Context Switch Time
Operating System Concepts
5.20
Silberschatz, Galvin and Gagne ©2005
Turnaround Time Varies With The Time Quantum
Operating System Concepts
5.21
Silberschatz, Galvin and Gagne ©2005
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; e.g., 80% to
foreground in RR; 20% to background in FCFS
Operating System Concepts
5.22
Silberschatz, Galvin and Gagne ©2005
Multilevel Queue Scheduling
Operating System Concepts
5.23
Silberschatz, Galvin and Gagne ©2005
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
Operating System Concepts
5.24
Silberschatz, Galvin and Gagne ©2005
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.
Operating System Concepts
5.25
Silberschatz, Galvin and Gagne ©2005
Multilevel Feedback Queues
Operating System Concepts
5.26
Silberschatz, Galvin and Gagne ©2005
Multiple-Processor Scheduling
 CPU scheduling is more complex when multiple CPUs are available
 Some approaches for multiprocessor scheduling

Asymmetric multiprocessing: only one processor accesses the
system data structures, reducing the need for data sharing; scheduling
decisions are handled by this processor.

Symmetric multiprocessing (SMP): Each processor is self
scheduling. All processes may be in a common ready queue or each
processor may have its own ready queue

Each processor has its own scheduler.

Since multiple processors are trying to access and modify common
data structures (such as ready queue, etc), schedulers must be
carefully programmed.

Virtually all operating systems including Windows, Linux, and Mac
OS X support SMP.
Operating System Concepts
5.27
Silberschatz, Galvin and Gagne ©2005
Some issues related to SMP
 Processor affinity:

When a process running on a processor is migrated to another processor, the
contents of the cache memory for that processor must be invalidated and
repopulated to the cache of the processor to which the process is migrated.
This involves large overhead. To prevent this overhead, most SMP systems
try to avoid migration of processes from one processor to another processor
and instead keep a process running on the same processor. This is called
processor affinity.

Soft affinity: Operating system has a policy of attempting to keep a process
running on the same processor without guaranteeing to do so. Linux
implements soft affinity.

Hard affinity: Some operating systems allow a process to specify the set of
processors on which it may run. Linux provides support for hard affinity
through the system call sched_setaffinity().
Operating System Concepts
5.28
Silberschatz, Galvin and Gagne ©2005
Some issues related to SMP …
 Load balancing: This attempts to keep workload evenly distributed across all
processors. This is especially needed in systems where each processor has its own
queue which is the case in most contemporary Operating systems.

Note that load balancing counteracts the benefits of processor affinity. So,
this is not an easy problem to solve.
 Two approaches for load balancing:

Push migration: a specific task periodically checks the load on each processor
and balances the load by moving (or pushing) processes from overloaded
processors to lightly loaded processors.

Pull migration: Idle processor pulls a waiting task from a busy processor.

Linux scheduler implements both Push and Pull migration.
 Multicore processors: Multiple processor cores are placed on a single physical
chip.

Each Core appears to the OS as a separate processor.

SMP systems that use multicore processors are faster and consume less power
than systems in which each processor is on a separate physical chip.
Operating System Concepts
5.29
Silberschatz, Galvin and Gagne ©2005
Some issues related to SMP …
 Scheduling multicore processors: When a processor accesses memory, it waits
for the data to become available for reasons such as cache miss – called memory
stall.

To solve the memory stall problem, many recent hardware designs have
implemented multithreaded processor cores, in which two or more hardware
threads are assigned to each core.

This way the hardware can switch to another thread when a currently executing
thread is waiting for memory.

Coarse-grained multithreading: when a memory stall occurs during the
execution of a thread on a processor, processor switches to another
thread. This type of thread switching is high, because the instruction pipeline
needs to be flushed before the other thread can start execution on the
processor core.

Fine-grained (or interleaved) multithreading: Thread switching occurs at
the boundary of an instruction cycle. The architectural design includes logic
for thread switching which results in further lowering switching overhead.
Operating System Concepts
5.30
Silberschatz, Galvin and Gagne ©2005
Some issues related to SMP …
 Scheduling Multicore processors (contd.): So, multithreaded
multicore scheduling requires scheduling at two different levels

1. at the Operating system level: For the OS may choose any
scheduling algorithm such as the one we discussed earlier.

2. at the hardware level: this scheduling specifies how each
core decides which hardware thread to run.

The UltraSPARC T3 uses a simple round-robin algorithm to
schedule eight hardware threads to each core.

The Intel Itanium dual-core processor assigns two hardware
threads for each core.
Operating System Concepts
5.31
Silberschatz, Galvin and Gagne ©2005
Real-time CPU scheduling
 Soft Real-time systems: Provides no guarantees as to when a
critical real-time process will be scheduled. It only guarantees that
the process will be given preference over noncritical processes.
Linux, Windows, Solaris, etc. support soft real-time scheduling.
 Hard Real-time systems: Guarantees that a critical task will be
serviced by its deadline. Different scheduling algorithms exist for
such systems. We will not talk about them here.
Operating System Concepts
5.32
Silberschatz, Galvin and Gagne ©2005
Algorithm Evaluation

Analytic evaluation


Queuing models: knowing the job arrival rates and service rates we can
compute CPU utilization, average queue length, average waiting time, etc.



Deterministic modeling – takes a particular predetermined workload
and compares the performance of each algorithm for that workload.
Simple and easy to do; but requires exact numbers for input which is
hard to get for any given system.
This is a separate area of research, called queuing-network analysis
Simulations

Involves programming a model of the system.

Results are of limited accuracy
Implementation

Implement the algorithm and study the performance

It is the best way to study and compare the performance of different
algorithms

It is expensive and time consuming
Operating System Concepts
5.33
Silberschatz, Galvin and Gagne ©2005
5.15
Operating System Concepts
5.34
Silberschatz, Galvin and Gagne ©2005
CPU Scheduling in Solaris 2
 Uses priority-based process scheduling
 It has six classes of scheduling , Time sharing, Interactive, real-time, system, Fair
Share, Fixed Priority
 Within each of these classes, there are different priorities and different scheduling
algorithms
 The default scheduling class for a process is time sharing.
 The scheduling policy for time-sharing class dynamically alters priorities and
assigns time-slices of different length using multilevel feedback queue.
 There is an inverse relationship between priorities and time slices: the higher the
priority, the smaller the time slice and the lower the priority, the larger the time
slice
 Interactive processes typically have a higher priority; CPU bound processes have
a lower priority.
 The scheduling policy is designed to give good response time for interactive
processes and good throughput for CPU bound processes
Operating System Concepts
5.35
Silberschatz, Galvin and Gagne ©2005
CPU Scheduling in Solaris 2…
 Interactive class uses the same scheduling policy as the timesharing class but it
gives windowing applications higher priority for better performance
 It uses the system class to run kernel processes such as scheduler, paging
daemon, etc

Priority of a system process, once established, never changes.

User processes running in system mode do not belong to system class

Scheduling policy for the system class does not time-slice. i.e., a process
belonging to the system class runs until it blocks or is preempted by a higher
priority process
 Processes in real-time class are given the highest priority to run among all
classes
Operating System Concepts
5.36
Silberschatz, Galvin and Gagne ©2005
CPU Scheduling in Solaris 2…
 Each scheduling class includes a set of priorities
 The scheduler converts this class specific priorities into global
priority and selects the process with the highest global priority. The
selected process runs on the CPU until one of the following
occurs:

It blocks

It uses its time-slice (if it is not a system process)

It is preempted by a higher priority process
Operating System Concepts
5.37
Silberschatz, Galvin and Gagne ©2005
Scheduling in windows XP
 Windows XP uses a priority-based preemptive scheduling algorithm.
 It ensures that the highest priority process will always run
 A process selected by the scheduler (called dispatcher in windows) to run
will run until

It terminates

Its time quantum ends or

It calls a blocking system call, such as for I/O
 If a higher priority real-time process becomes ready while a lower priority
process is running, the lower priority process will be preempted, thus giving
a preferential treatment to real-time processes
 Scheduler uses a 32-level priority scheme to determine the order of process
execution, and also has several classes of process
Operating System Concepts
5.38
Silberschatz, Galvin and Gagne ©2005
Scheduling in windows XP
 The scheduler uses a queue for each scheduling priority (i.e., 32
queues) and traverses the set of queues from highest to lowest until
it finds a process to run. If no process is found, then it executes a
special process called idle thread
 Priorities are divided into two classes


The variable class

Contains processes having priorities from 1 to 15

Priority of processes in this class can change

This is further divided into high priority, above normal,
normal, below normal, and idle priority classes
The real-time class

Contains processes with priorities ranging from 16 to 31

Priorities of processes in this class do not change.
Operating System Concepts
5.39
Silberschatz, Galvin and Gagne ©2005
Windows XP Priorities
Win32 API identifies several priority classes to which a process can
belong. These include : Real-time, high, above normal, normal etc.
A process within a given priority also has a relative priority. The
values for these relative priorities include: time-critical, highest,
above normal, below normal, etc.
Operating System Concepts
5.40
Silberschatz, Galvin and Gagne ©2005
Scheduling in windows XP

Processes are typically members of normal priority class unless the parent process
was of the idle priority class or another class was specified when the process was
created

When a process’s time quantum runs out



The process is interrupted and its priority is lowered if it is in the variable priority
class

Lowering the priority helps in limiting CPU consumption of compute-bound
processes
When a variable-priority process is released from a wait operation, its priority is
boosted

The amount of boost depends on what the process was waiting for. For
example, a process waiting for keyboard I/O will get a large boost whereas a
process that was waiting for disc I/O will get a moderate boost.

This strategy gives good response time for processes that are using windows
and mouse (i.e., interactive processes), while compute-bound processes are
permitted to use the CPU cycles in the background. (this strategy is used by
other OSs as well)
Windows distinguishes between foreground (i.e., processes selected on the
screen) and background processes.

When a process moves to the foreground, it increases the quantum by some
factor – typically by 3.
Operating System Concepts
5.41
Silberschatz, Galvin and Gagne ©2005
Scheduling in Linux
 Linux provides two separate process-scheduling algorithms: one
is designed for time-sharing processes for fair preemptive
scheduling among multiple processes; the other, designed for
real-time tasks

A process may not be preempted while running in kernel
mode even if a real-time process with a higher priority is
ready
 For processes in the time-sharing class, Linux uses a prioritized
credit-based algorithm.

Each process (task) possesses a certain number of credits

When a new process must be chosen, the process with
most credit is selected

Every time a timer interrupt occurs, the currently running
process loses one credit. When the credit reaches 0, that
process is suspended and another process is selected
Operating System Concepts
5.42
Silberschatz, Galvin and Gagne ©2005
Scheduling in Linux…
 If no runnable processes have any credit, then Linux performs a
recrediting operation to every process in the system using the
following rule:

Credits = Credits/2 + priority

Note that I/O bound processes that remain suspended can get
multiple credits and hence will gain high priority; thus
interactive processes will have rapid response time

Using priority in calculating new credits allows the priority of a
process to be fine-tuned. i.e., batch jobs can be given low
priority and hence they will automatically receive fewer credits
than the interactive users’ jobs.
Operating System Concepts
5.43
Silberschatz, Galvin and Gagne ©2005
Scheduling in Linux…
 Real-time scheduling: Linux implements two real-time scheduling
classes, namely FCFS and RR

In both cases each process has a priority in addition to its
scheduling class.

Scheduler always runs the process with highest priority

Linux’s real-time scheduling is soft in the sense that it offers
strict guarantees about priorities but the kernel does not offer
any guarantees about how quickly a real-time process becomes
runnable (Linux kernel code can be never preempted by user –
mode code). For example, if an interrupt that wakes up a realtime process arrives while the kernel is already executing a
system call on behalf of some other process, the real-time
process has to just wait.
Operating System Concepts
5.44
Silberschatz, Galvin and Gagne ©2005