Preemptive Scheduling Vivek Pai / Kai Li Princeton University

advertisement
Preemptive Scheduling
Vivek Pai / Kai Li
Princeton University
Errata
while loop example from last time
Going from randVal = 9 to randVal = 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 are hiring – good news
3
Overview for Today
Wrap up swapping
Move on to pre-emptive scheduling
4
Job Swapping
Swap in
Partially executed
swapped-out processes
Ready Queue
Swap out
CPU
Terminate
I/O
I/O Waiting
queues
5
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
Efficiency
7
The Hello/Goodbye Server
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 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 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 handle connection
Drawback: lots of process creation/deletion
11
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 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 – 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
Memory
overlap with computation
CPU
Interrupt
Interrupt
Between instructions
Within an instruction
Enable and disable
15
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
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, 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 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 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 share memory
Possible via forked processes
Default via threads
Cover some scheduling policies
21
Download