Preemptive Scheduling Vivek Pai Kai Li Princeton University

  • Slides: 21
Download presentation
Preemptive Scheduling Vivek Pai / Kai Li Princeton University

Preemptive Scheduling Vivek Pai / Kai Li Princeton University

Errata while loop example from last time Going from rand. Val = 9 to

Errata while loop example from last time Going from rand. Val = 9 to rand. Val = 0 may take loop overhead So, it’s not really guaranteed to be random 2

Mechanics Lamport’s paper added to readings Project 4 stripped down from last year People

Mechanics Lamport’s paper added to readings Project 4 stripped down from last year People are hiring – good news 3

Overview for Today Wrap up swapping Move on to pre-emptive scheduling 4

Overview for Today Wrap up swapping Move on to pre-emptive scheduling 4

Job Swapping Swap in Partially executed swapped-out processes Ready Queue I/O Swap out CPU

Job Swapping Swap in Partially executed swapped-out processes Ready Queue I/O Swap out CPU Terminate I/O Waiting queues 5

Add Job Swapping to State Transition Diagram Swap out Swap Scheduler dispatch Swap in

Add Job Swapping to State Transition Diagram Swap out Swap Scheduler dispatch Swap in Create a process Terminate (call scheduler) Running Block for resource (call scheduler) Yield (call scheduler) Ready Blocked Resource becomes available (move to ready queue) 6

Think About Swapping Is swapping Necessary Desirable Good Ideal Things to consider Performance Complexity

Think About Swapping Is swapping Necessary Desirable Good Ideal Things to consider Performance Complexity Efficiency 7

The Hello/Goodbye Server: Hello User: Hello Server: Drink Slurm! (ka-ching!) User: Goodbye Server: Goodbye

The Hello/Goodbye Server: Hello User: Hello Server: Drink Slurm! (ka-ching!) User: Goodbye Server: Goodbye 8

Life is Simple Until… Hello, My name is Bill Gates. Please try out my

Life is Simple Until… Hello, My name is Bill Gates. Please try out my new “Hello/Goodbye Server” and I’ll give you a million dollars and a new cat. Tell your friends. I wuv you, Bill Gates 9

You Have to Fix It accept new connection; say hello wait for hello; print

You Have to Fix It accept new connection; say hello wait for hello; print advertising message wait for goodbye, say goodbye close connection 10

What’s the Simplest Option? While (1) accept new connection fork new process let process

What’s the Simplest Option? While (1) accept new connection fork new process let process handle connection Drawback: lots of process creation/deletion 11

Can We Reduce Forks? At program launch, fork some number While (1) accept wait

Can We Reduce Forks? At program launch, fork some number While (1) accept wait for hello wait for goodbye close Note: wait = implicit yield 12

But What If We Do More While (1) accept wait for hello perform possibly

But What If We Do More While (1) accept wait for hello perform possibly unbounded calculation wait for goodbye close Problem: when do we yield? 13

Signals and Interrupts Both are asynchronous Used to notify system of event occurrence Signal

Signals and Interrupts Both are asynchronous Used to notify system of event occurrence Signal – delivered by OS to process Interrupt – delivered by hardware to OS Some overlap/interaction? Definitely Examples? Code tries executing divide-by-zero User disconnects (hangs up) 14

I/O and Timer Interrupts Why Timer interrupt to do CPU management Asynchronous I/O to

I/O and Timer Interrupts Why Timer interrupt to do CPU management Asynchronous I/O to Memory overlap with computation CPU Interrupt Between instructions Within an instruction Enable and disable 15

Using Interrupts For Scheduling Timer interrupt Generated by hardware Assume changing requires privilege Delivered

Using Interrupts For Scheduling Timer interrupt Generated by hardware Assume changing requires privilege Delivered to the OS Main idea Before moving process to running, set timer If process yields/blocks, clear timer Timer expires? Go to scheduler 16

Scheduling Considerations Timer granularity Finer timers = more responsive Coarse timers = more efficient

Scheduling Considerations Timer granularity Finer timers = more responsive Coarse timers = more efficient Accounting Cheap Accurate Fair – consider I/O versus CPU applications 17

Preemptive Scheduling Terminate (call scheduler) Scheduler dispatch Running Block for resource (call scheduler) Yield,

Preemptive Scheduling Terminate (call scheduler) Scheduler dispatch Running Block for resource (call scheduler) Yield, Timer Interrupt (call scheduler) Create Ready Blocked I/O completion interrupt (move to ready queue) 18

No Control Over Yielding Reasons for yielding Timer goes off Higher-priority interrupt occurs Higher-priority

No Control Over Yielding Reasons for yielding Timer goes off Higher-priority interrupt occurs Higher-priority process becomes ready Some unintentional block (e. g. page fault) 19

“Atomic” Pieces of Code Example: bank transaction Read account balance Add/subtract money Write account

“Atomic” Pieces of Code Example: bank transaction Read account balance Add/subtract money Write account balance Problem: what happens when two transactions are being posted to the same account? 20

Next Time Atomic pieces known as critical sections Very common in concurrent/parallel programming Must

Next Time Atomic pieces known as critical sections Very common in concurrent/parallel programming Must share memory Possible via forked processes Default via threads Cover some scheduling policies 21