Chapter 5: CPU Scheduling
Chapter 5: CPU Scheduling
Chapter 5: CPU Scheduling
Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Thread Scheduling
Multiple-Processor Scheduling
Operating Systems Examples
Algorithm Evaluation
Objectives
To introduce CPU scheduling, which is the basis for multiprogrammed
operating systems
To describe various CPU-scheduling algorithms
To discuss evaluation criteria for selecting a CPU-scheduling algorithm for a
particular system
Basic Concepts
P1 P2 P3
0 24 27 30
Waiting time for P1 = 0; P2 = 24; P3 = 27
Average waiting time: (0 + 24 + 27)/3 = 17
FCFS Scheduling (Cont)
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
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
SJF is optimal gives minimum average waiting time for a given set of
processes
The difficulty is knowing the length of the next CPU request
Example of SJF
Process Arrival Time Burst Time
P1 0.0 6
P2 2.0 8
P3 4.0 7
P4 5.0 3
SJF scheduling chart
P4 P1 P3 P2
0 3 9 16 24
Average waiting time = (3 + 16 + 9 + 0) / 4 = 7
Determining Length of Next CPU Burst
Since both and (1 - ) are less than or equal to 1, each successive term
has less weight than its predecessor
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
Round Robin (RR)
P1 P2 P3 P1 P1 P1 P1 P1
0 4 7 10 14 18 22 26 30
Solaris scheduling
Windows XP scheduling
Linux scheduling
Solaris Dispatch Table
Solaris Scheduling
Windows XP Priorities
Linux Scheduling
FIFO Queue is Used if There Are Multiple Threads With the Same Priority
Java Thread Scheduling (cont)
JVM Schedules a Thread to Run When:
* Note the JVM Does Not Specify Whether Threads are Time-Sliced or Not
Time-Slicing
while (true) {
// perform CPU-intensive task
...
Thread.yield();
}
Priority Comment
Thread.MIN_PRIORITY Minimum Thread Priority
Thread.MAX_PRIORITY Maximum Thread Priority
Thread.NORM_PRIORITY Default Thread Priority