os spring ’ 04 scheduling operating systems spring 2004
Post on 20-Dec-2015
224 views
TRANSCRIPT
OS Spring’04
Scheduling
Operating SystemsSpring 2004
OS Spring’04
Multiprogramming Multiprogramming: having multiple
jobs (processes) in the systemInterleaved (time sliced) on a single CPUConcurrently executed on multiple CPUsBoth of the above
Why multiprogramming?Responsiveness, utilization, concurrency
Why not?Overhead, complexity
OS Spring’04
ResponsivenessJob 1arrives
Job 1terminates
Job1 Job2 Job3
Job 2terminates
Job 3terminates
Job 2arrives
Job 3arrives
Job1Job3
Job2
Job 1 terminates Job 3 terminates
Job 2 terminates
OS Spring’04
Utilization
idle
idle
idle
idle
idle
idle
1st I/Ooperation
I/Oends
2nd I/Ooperation
I/Oends
3rd I/Ooperation
CPU
Disk
CPU
Disk idle idle
idle
idleJob1 Job1
Job1 Job1Job2
Job2
Job2
OS Spring’04
Workload matters!? Does it really matter?Yes, of course:
If all jobs are CPU bound (I/O bound), multiprogramming does not help to improve utilization
A suitable job mix is created by a long-term scheduling
Jobs are classified on-line to be CPU (I/O) bound according to the job’s history
OS Spring’04
Concurrency Concurrent programming
Several process interact to work on the same problem ls –l | more
Simultaneous execution of related applications Word + Excel + PowerPoint
Background execution Polling/receiving Email while working on
smth else
OS Spring’04
The cost of multiprogramming Switching overhead
Saving/restoring context wastes CPU cycles
Degrades performanceResource contentionCache misses
ComplexitySynchronization, concurrency control, deadlock avoidance/prevention
OS Spring’04
Short-Term Scheduling
running
ready blocked
created
schedule
preempt
event done
wait for event
terminated
OS Spring’04
Short-Term scheduling Process execution pattern consists
of alternating CPU cycle and I/O wait CPU burst – I/O burst – CPU burst – I/O
burst...
Processes ready for execution are hold in a ready (run) queue
STS schedules process from the ready queue once CPU becomes idle
OS Spring’04
Preemptive/non-preemptive Four events in which the scheduler may decide
to switch the CPU to a new processRunning process terminatesRunning process blocks (e.g., for I/O)Non-ready process becomes ready (or starts) Clock interrupt
The latter two cause preemption Advantages:
Better time sharing, responsivenessGuard against endless loops
Disadvantages:Higher programming complexity
Example: Unix disables interrupts within kernel modeDisrupts real-time
OS Spring’04
Metrics: Response time
Job arrives/becomes ready to run Starts running
Job terminates/blocks waiting for I/O
TwaitTrun
Tresp
Tresp= Twait + Trun
Response time (turnaround time) is the average over the jobs’Tresp
OS Spring’04
Metrics
Wait time: average of Twait
This parameter is under the system control
ThroughputNumber of complete process terminations within a time unit
Utilization Fraction of time CPU is utilized
OS Spring’04
Off-line vs. On-line scheduling Off-line algorithms
Get all the information about all the jobs to schedule as their inputOutputs the scheduling sequencePreemption is never needed
On-line algorithmsJobs arrive at unpredictable timesVery little info is available in advancePreemption compensates for lack of knowledge
OS Spring’04
First-Come-First-Serve (FCFS) Schedules the jobs in the order in
which they arriveOff-line FCFS schedules in the order the jobs appear in the input
Runs each job to completion Both on-line and off-line Simple, a base case for analysis Poor response time
OS Spring’04
Shortest Job First (SJF) Best response time
Short Long job
Long job Short
Inherently off-lineAll the jobs and their run-times must be available in advance
OS Spring’04
Preemption Preemption is the action of stopping
a running job and scheduling another in its place
Context switch: Switching from one job to another
OS Spring’04
Using preemption On-line short-term scheduling algorithms
Adapting to changing conditions e.g., new jobs arrive
Compensating for lack of knowledge e.g., job run-time
Periodic preemption keeps system in control
Improves fairnessGives I/O bound processes chance to run
OS Spring’04
Shortest Remaining Time first (SRT)
Job run-times are known Job arrival times are not known When a new job arrives:
if its run-time is shorter than the remaining time of the currently executing job:preempt the currently executing job and schedule the newly arrived job
else, continue the current job and insert the new job into a sorted queue
When a job terminates, select the job at the queue head for execution
OS Spring’04
Round Robin (RR) Both job arrival times and job run-
times are not known Run each job cyclically for a short
time quantumApproximates CPU sharing
Job 1arrives
Job1 3
Job 2arrives
Job 3arrives
2 1 2 31 2 31 2 1 Job2
Job 3terminates
Job 1terminates
Job 2terminates
OS Spring’04
ResponsivenessJob 1arrives
Job 1terminates
Job1 Job2 Job3
Job 2terminates
Job 3terminates
Job 2arrives
Job 3arrives
Job1Job3
Job2
Job 1 terminates Job 3 terminates
Job 2 terminates
OS Spring’04
Priority Scheduling Example: prioritize processes according
to their past CPU usageEquivalent to SJF with predicted next CPU burst time
16
1
8
1
4
1
2
1:
2
1
10 ,)1(
3211
1
nnnnn
nnn
TTTTE
ETE
Tn is the duration of the n-th CPU burst En+1 is the estimate of the next CPU burst
OS Spring’04
Multilevel feedback queues
quantum=10
quantum=20
quantum=40
FCFS
new jobs terminated
OS Spring’04
Multilevel feedback queues Priorities are implicit in this scheme Very flexible Starvation is possibleShort jobs keep arriving => long jobs
get starved Solutions:
Let it beAging
OS Spring’04
Real-life examples Solaris 2 Window 2000 Linux