0% found this document useful (0 votes)
61 views43 pages

CENG3342022 W08 Ascheduling

The document discusses scheduling in operating systems. It describes the scheduler as the OS component that determines which thread will run next on the CPU. The scheduler operates on ready threads and runs when a thread yields the CPU, blocks, exits, or is preempted. Scheduling policies aim to optimize goals like CPU utilization, throughput, response time, and to prevent starvation. Common policies discussed include first-come first-served, round robin, and shortest job first.

Uploaded by

abdulsami Asif
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views43 pages

CENG3342022 W08 Ascheduling

The document discusses scheduling in operating systems. It describes the scheduler as the OS component that determines which thread will run next on the CPU. The scheduler operates on ready threads and runs when a thread yields the CPU, blocks, exits, or is preempted. Scheduling policies aim to optimize goals like CPU utilization, throughput, response time, and to prevent starvation. Common policies discussed include first-come first-served, round robin, and shortest job first.

Uploaded by

abdulsami Asif
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 43

Carnegie Mellon

Scheduling

Some of the slides are adapted from Matt Welsh’s.


Some slides are from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights
reserved. 0-13-6006639
Some slides are from Silberschatz, and Gagne.
Carnegie Mellon

Scheduling
 Have already discussed context switching
 Have not discussed how the OS decides which thread to run next
 Context switching is the mechanism
 Scheduling is the policy
 Which thread to run next?
 How long does it run for (granularity)?
 How to ensure every thread gets a chance to run
(fairness)?
 How to prevent starvation?
Carnegie Mellon

Scheduler
 The scheduler is the OS component that determines which
thread to run next on the CPU
 The scheduler operates on the ready queue
 Why does it not deal with the waiting thread queues?
 When does the scheduler run?
Carnegie Mellon

Scheduler
 The scheduler is the OS component that determines which thread to run next on
the CPU
 The scheduler operates on the ready queue
 Why does it not deal with the waiting thread queues?
 When does the scheduler run?
 When a thread voluntarily gives up the CPU (yield)
 When a thread blocks on I/O, timer, etc.
 When a thread exits
 When a thread is preempted (e.g., due to timer interrupt)
 Scheduling can be preemptive or non-preemptive
 Preemptive: Timer interrupt can force context switch
 Non-preemptive: Process must yield or block voluntarily
 Batch vs. Interactive Scheduling
 Batch: Non-preemptive and no other jobs run if they block
 Interactive: Preemptive and other jobs do run if they block
Carnegie Mellon

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
Carnegie Mellon

Scheduling Policy Goals


 Goal of a scheduling policy is to achieve some “optimal”
allocation of CPU time in the system
 According to some definition of “optimal”
 Possible goals of the scheduling policy??
Carnegie Mellon
Note: The term jobs (left from
the early days of OS) can be
Scheduling criteria - 1 replaced by ”processes”.

 CPU utilization: The percentage of time that CPU is running (user) jobs
 Throughput: The number of jobs completed per unit time
 120 jobs completed over 1 minute:
 Throughput: 2 jobs/second
 Turnaround time: The duration from the submission of the job to its completion.
 Job submitted at 8:05:00, and completed at 8:15:00.
 Turnaround time: 10:00
Carnegie Mellon
Note: The term jobs (left from
the early days of OS) can be
Scheduling criteria - 2 replaced by ”processes”.

 Waiting time: The total amount of time a job spent in the ready list.
 Load average: The average number of jobs in the ready queue.
 Response time: The amount of time a request is submitted until the
first response is produced.
 The amount of time from pressing a key on the keyboard, and
seeing it printed on the screen.
Carnegie Mellon

Scheduling Policy Goals


 Possible goals:
 Maximize CPU utilization
 Maximize throughput
 Minimize turnaround time
 Minimize response time
 Minimize waiting time
 These goals often conflict!
 Batch system: Try to maximize job throughput and minimize
turnaround time
 Interactive system: Minimize response time of interactive jobs (i.e.,
editors, etc.)
 The choice of scheduling policy has a huge impact on
performance
Carnegie Mellon

Starvation
 Schedulers often try to eliminate thread starvation
 e.g., If a high priority thread always gets to run before a low-
priority thread
 We say the low priority thread is starved
 Not all schedulers have this as a goal!
 Sometimes starvation is permitted in order to achieve other goals
 Example: Real time systems
 Some threads must run under a specific deadline
 e.g., Motor-control task must run every 30 ms to effectively steer
robot
 In this case it is (sometimes) OK to starve other threads
Carnegie Mellon

First-Come-First-Served (FCFS)
 Jobs are scheduled in the order that they arrive
 Also called First-In-First-Out (FIFO)
 Used only for batch scheduling
 Implies that job runs to completion – never blocks or gets context switched
out
 Jobs treated equally, no starvation!
 As long as jobs eventually complete, of course
 What's wrong with FCFS?

Job A Job B Job C


time
Short jobs get stuck behind long ones!
Carnegie Mellon

Round Robin (RR)


 Essentially FCFS with preemption
 A thread runs until it blocks or its CPU quantum expires
 How to determine the ideal CPU quantum?
FCFS Job A Job B Job C
time

RR
time
 Job A: 13 time units, Job B & C: 4 time units
 Turnaround time with FCFS: Job A = 13, Job B = (13+4), Job C = (13 + 4 + 4)
Total turnaround time = 51, mean = (51/3) = 17
 Turnaround time with RR: Job A = 21, Job B = 11, Job C = 12
 Total turnaround time = 44, mean = (44/3) = 14.667
Carnegie Mellon

Shortest Job First (SJF)


 Schedule job with the shortest expected CPU burst
 Two broad classes of processes: CPU bound and I/O
bound
 CPU bound:
cpu i/o cpu i/o cpu i/o

 I/O bound:
cpu i/o cpu i/o cpu i/o cpu

 Examples of each kind of process?


Carnegie Mellon

Shortest Job First (SJF)


 Schedule job with the shortest expected CPU burst
 Two broad classes of processes: CPU bound and I/O
bound
 CPU bound: e.g.compiler, number crunching, games.
cpu i/o cpu i/o cpu i/o

 I/O bound: e.g. web browser, database engine, word processor.


cpu i/o cpu i/o cpu i/o cpu

 How to predict a process's CPU burst?


 Can get a pretty good guess by looking at the past history of the job
 Track the CPU burst each time a thread runs, track the average
 CPU bound jobs will tend to have a long burst
 I/O bound jobs will tend to have a short burst
SJF Example
Carnegie Mellon

Job A cpu i/o

Job B cpu i/o

Job C cpu i/o

Resulting schedule:

B i/o

A i/o

B i/o

A i/o B is not on the ready queue!

C i/o

B i/o
Carnegie Mellon

Shortest Job First (SJF)


 Schedule job with the shortest expected CPU burst
 This policy is non-preemptive. Job will run until it blocks for I/O.
 SJF scheduling prefers I/O bound processes. Why?
 Idea: A long CPU burst “hogs” the CPU.
 Running short-CPU-burst jobs first gets them done, and out of the way.
 Allows their I/O to overlap with each other: more efficient use of the CPU
 Interactive programs often have a short CPU burst: Good to run them first
 To yield “snappy” interactive performance, e.g., for window system or
shell.
 We all do this. It is called “procrastination.”
 When faced with too much work, easier to do the short tasks first, get
them out of the way.
 Leave the big, hard tasks for later.
Carnegie Mellon

Shortest Remaining Time First (SRTF)


 SJF is a nonpreemptive policy.
 Preemptive variant: Shortest Remaining Time First (SRTF)
• If a job becomes runnable with a shorter expected CPU burst,
preempt current job and run the new job
B i/o

A Preempt A when B becomes runnable

B i/o

A i/o When A becomes runnable C is not


preempted and SRT_A > SRT_C

B i/o

C i/o
SRTF versus RR
Carnegie Mellon

 Say we have three jobs:


 Job A and B: both CPU-bound, will run for hours on the CPU with no I/O
 Job C: Requires a 1ms burst of CPU followed by 10ms I/O operation
 RR with 25 ms time slice: C C
A B A

Job C's I/O


 RR with 1 ms time slice:

Job C's I/O

 Lots of pointless context switches between Jobs A and B!


 SRTF:

 Job A runs to completion, then Job B starts


Carnegie Mellon

Comparison of FCFS, RR, SJF and SRTF

FCFS RR SJF SRTF


Preemptive? N Y N Y

When is the scheduler called? FCFS RR SJF SRTF


Current process exits Y Y Y Y
Current process goes for I/O N Y Y Y
A new process is added N N N Y
Timer interrupt goes off N Y N N
A process returns from I/O - N N Y
Carnegie Mellon

Priority Scheduling
 Assign each thread a priority
 In Linux, these range from 0 (lowest) to 99 (highest)
 UNIX “nice()” system call lets user adjust this
 But note, scale is inverted: -20 is highest priority and +20 is lowest
 Priority may be set by user, OS, or some combination of the two
 User may adjust priority to bias scheduler towards a thread
 OS may adjust priority to achieve system performance goals
 When scheduling, simply run the job with the highest priority
 Usually implemented as separate “priority queues”
 One queue for each priority level
 Use RR scheduling within each queue
 If a queue is empty, look in next lowest priority queue
 Problem: Starvation
 High priority threads always trump low priority threads
Carnegie Mellon

Multilevel Feedback Queues (MLFQ)


 Observation: Want to give higher priority to I/O-bound jobs
 They are likely to be interactive and need CPU rapidly after I/O completes
 However, jobs are not always I/O bound or CPU-bound during execution!
 Web browser is mostly I/O bound and interactive
 But, becomes CPU bound when running a Java applet
 Basic idea: Adjust priority of a thread in response to its CPU
usage
 Increase priority if job has a short CPU burst
 Decrease priority if job has a long CPU burst (e.g., uses up CPU quantum)
 Jobs with lower priorities get longer CPU quantum
 What is the rationale for this???
Carnegie Mellon

Multilevel Feedback Queues (MLFQ)


 Observation: Want to give higher priority to I/O-bound jobs
 They are likely to be interactive and need CPU rapidly after I/O completes
 However, jobs are not always I/O bound or CPU-bound during execution!
 Web browser is mostly I/O bound and interactive
 But, becomes CPU bound when running a Java applet
 Basic idea: Adjust priority of a thread in response to its CPU usage
 Increase priority if job has a short CPU burst
 Decrease priority if job has a long CPU burst (e.g., uses up CPU quantum)
 Jobs with lower priorities get longer CPU quantum
 What is the rationale for this???
 Don't want to give high priority to CPU-bound jobs...
 Because lower-priority jobs can't preempt them if they get the CPU.
 OK to give longer CPU quantum to low-priority jobs:
 I/O bound jobs with higher priority can still preempt when they become runnable.
MLFQ Implementation
Carnegie Mellon

Run PID 4277, T0 PID 4391, T2


State: Ready State: Ready
High prio PC PC

Registers Registers

PID 3202, T1
State: Ready
Medium prio PC

Registers

Low prio
MLFQ Implementation
Carnegie Mellon

PID 4391, T2
State: Ready
High prio PC

Registers Uses entire CPU burst (preempted)


Placed into lower priority queue

PID 3202, T1 PID 4277, T0


State: Ready State: Ready
Medium prio PC PC

Registers Registers

Low prio
MLFQ Implementation
Carnegie Mellon

Run PID 4391, T2


State: Ready
High prio PC

Registers

PID 3202, T1 PID 4277, T0


State: Ready State: Ready
Medium prio PC PC

Registers Registers

Low prio
MLFQ Implementation
Carnegie Mellon

High prio

Preempted

PID 3202, T1 PID 4277, T0 PID 4391, T2


State: Ready State: Ready State: Ready
Medium prio PC PC PC

Registers Registers Registers

Low prio
MLFQ Implementation
Carnegie Mellon

High prio

PID 3202, T1 PID 4277, T0 PID 4391, T2


Run State: Ready State: Ready State: Ready
Medium prio PC PC PC

Registers Registers Registers

Low prio
MLFQ Implementation
Carnegie Mellon

PID 3202, T1 Runs with short CPU burst


State: Ready (blocks on I/O)
High prio PC

Registers

PID 4277, T0 PID 4391, T2


State: Ready State: Ready
Medium prio PC PC

Registers Registers

Low prio
Carnegie Mellon

Priority inversion
 A problem that may occur in priority scheduling systems!
 A high priority process is indirectly ”preempted” by a
lower priority task effectively "inverting" the relative
priorities of the two tasks.
 It happened on the Mars rover Sojourner!

http://www.drdobbs.com/jvm/what-is-priority-inversion-and-how-do-yo/230600008
https://users.cs.duke.edu/~carla/mars.html
Carnegie Mellon

Priority inversion
A gets in the B gets B’s I/O B gets
ready queue A blocks on in ends and in
resource R A acquires lock
and I/O preempts C I/O for resource R
preempts C
and runs
High A A

Medium B B
Low C C C

C acquires B gets in the B runs C


a lock for ready queue C runs B runs releases
resource R but waits for lock
A

B ”seems to” have a higher


priority than A!
Hence priority inversion!
Carnegie Mellon

Solution: Priority inheritance


A gets in the A acquires lock
ready queue A blocks on for resource R
and preempts C resource R and runs
High A A

Medium
Low C C

C acquires C runs with


a lock for A’s priority
resource R and releases
lock

C “inherits” A’s priority!


Hence priority inheritance!

http://www.drdobbs.com/jvm/what-is-priority-inversion-and-how-do-yo/230600008
https://users.cs.duke.edu/~carla/mars.html
Carnegie Mellon

Lottery Scheduling
 A kind of randomized priority scheduling scheme!
 Give each thread some number of “tickets”
 The more tickets a thread has, the higher its priority
 On each scheduling interval:
 Pick a random number between 1 and total # of tickets
 Scheduling the job holding the ticket with this number
 How does this avoid starvation?
 Even low priority threads have a small chance of running!
Carnegie Mellon

Lottery scheduling example


Job A Job B Job C

0-30 30-40 40-99


30 tickets 10 tickets 60 tickets

Round 1 26 A i/o

Round 2 65 C i/o

Round 3 92 C would win ... but it is still blocked!

Round 4 33 B i/o

Round 5 7 A i/o
Carnegie Mellon

Guaranteed Scheduling
 Provide guarantees about CPU usage
 If there are N processes, then each should get 1/N of CPU
allocation.
 How to do it?
 For each process
 Compute the ratio of actual CPU time / consumed CPU time.
 Pick the one with the lowest ratio.
 Ratio of 0.5: process had consumed half of it should have had
 Ratio of 2.0: process had consumed twice of it should have had
Carnegie Mellon

Fair-share scheduling
 We have assumed that each process is of its own, with no
regard who its owner is.
 CPU allocation is split to the number of processes a user
has.
 A user running a single process would run 10 times as fast,
than another user running 10 copies of the same process.
Carnegie Mellon

Multi-Processor Scheduling
 CPU scheduling more complex when multiple CPUs are
available

 Homogeneous processors within a multiprocessor system


 multiple physical processors
 single physical processor providing multiple logical processors
 hyperthreading
 multiple cores
Carnegie Mellon

Multiprocessor scheduling
 On a uniprocessor:
 Which thread should be run next?
 On a multiprocessor:
 Which thread should be run on which CPU next?
 What should be the scheduling unit?
 Threads or processes
 Recall user-level and kernel-level threads
 In some systems all threads are independent,
 Independent users start independent processes
 in others they come in groups
 Make
 Originally compiles sequentially
 Newer versions starts compilations in parallel
 The compilation processes need to be treated as a group and scheduled
to maximize performance
Carnegie Mellon

Multi-Processor Scheduling
 Asymmetric multiprocessing
 A single processor (master) handles all the scheduling with regard to CPU, I/O for all the
processors in the system.
 Other processors execute only user code.
 only one processor accesses the system data structures, alleviating the need for data sharing
 Symmetric multiprocessing (SMP)
 Two or more identical processors are connected to a single shared main memory.
 Most common multiprocessor systems today use an SMP architecture
 Each processor does his own self-scheduling.
Carnegie Mellon

Issues with SMP scheduling - 1


 Processor affinity
 Migration of a process from one processor to another is costly
 cached data is invalidated
 Avoid migration of one process from one processor to another.
 Hard affinity: Assign a processor to a particular process and do not
allow it to migrate.
 Soft affinity: The OS tries to keep a process running on the same
processor as much as possible.
 http://www.linuxjournal.com/article/6799
Carnegie Mellon

Issues with SMP scheduling - 2


 Load balancing
 All processors should keep an eye on their load with respect to the
load of other processors
 Processes should migrate from loaded processors to idle ones.
 Push migration: The busy processor tries to unload some of its
processes
 Pull migration: The idle process tries to grab processes from other
processors
 Push and pull migration can run concurrently
 Load balancing conflicts with processor affinity.
 Space sharing
 Try to run threads from the same process on different CPUs
simultaneously
Carnegie Mellon

Real-Time Scheduling
 Hard real-time systems
 System must always complete a
critical task within a guaranteed
amount of time
 On-board computer system of a
robot
 Designers must describe task
requirements
 Worst-case execution time of
instruction sequences
 “Prove” system response time
Carnegie Mellon

Real-Time Scheduling

 Soft real-time systems


 requires that critical processes receive
priority over less fortunate ones
Carnegie Mellon

On-line demo
 http://sehitoglu.web.tr/scheddemo/

You might also like