Outline • Announcement • Process Scheduling– continued • Preemptive scheduling algorithms

advertisement
Outline
• Announcement
• Process Scheduling– continued
• Preemptive scheduling algorithms
– Round robin
– Multiple-level queue
Please turn in your lab 1 report in hardcopy with
source code and running results attached
I will let you know next Tuesday how to assign up
for demonstration
Please pick up your first quiz if you have not done so
Announcement
• Dr. Andy Wang will give a guest lecture this
Thursday
– He is going to talk about his research on operating
systems
• There will be no office hours this Thursday
– I will be attending a symposium in DC area
• We will have recitation session tomorrow
– I will go over the code I have for Lab 2
– I will go over two examples on how to synchronize
threads
5/29/2016
COP4610
2
Process Scheduler - review
Preemption or voluntary yield
New
Process
Ready
List
Scheduler
CPU
job
job
Done
job
“Running”
“Ready”
Allocate
Resource
Manager
job
job
Request
“Blocked”
Resources
5/29/2016
COP4610
3
The Scheduler Organization
From Other
States
Process
Descriptor
Ready Process
Enqueuer
Ready
List
Context
Switcher
Dispatcher
CPU
Running Process
5/29/2016
COP4610
4
Scheduling Criteria
• CPU utilization – keep the CPU as busy as possible
• Throughput – # of processes that complete their
execution per time unit
• Turnaround time – amount of time to execute a
particular process
• Waiting time – amount of time a process has been
waiting in the ready queue
• Response time – amount of time it takes from when
a request was submitted until the first response is
produced, not output (for time-sharing
environment)
5/29/2016
COP4610
5
First-Come-First-Served
• First-Come-First-Served
– Assigns priority to
processes in the order in
which they request the
processor
0
350
p0
5/29/2016
475
p1
900
p2
COP4610
1200
p3
1275
p4
6
Shortest-Job-Next Scheduling
• Associate with each process the length of its
next CPU burst.
– Use these lengths to schedule the process with
the shortest time.
• SJN is optimal
– gives minimum average waiting time for a given
set of processes.
5/29/2016
COP4610
7
Example of Preemptive SJF
Process Arrival Time Burst Time
P1
0.0
7
P2
2.0
4
P3
4.0
1
P4
5.0
4
P1
0
P2
2
P3
4
P2
5
P4
7
P1
11
16
• Average time spent in ready queue = (9 + 1 + 0 +2)/4
=3
5/29/2016
COP4610
8
Priority Scheduling
• In priority scheduling, processes/threads are
allocated to the CPU based on the basis of an
externally assigned priority
– A commonly used convention is that lower numbers
have higher priority
– SJN is a priority scheduling where priority is the
predicted next CPU burst time.
– FCFS is a priority scheduling where priority is the
arrival time
5/29/2016
COP4610
9
Round Robin (RR)
• Each process gets a small unit of CPU time
(time quantum), usually 10-100 milliseconds.
After this time has elapsed, the process is
preempted and added to the end of the ready
queue.
• If there are n processes in the ready queue
and the time quantum is q, then each process
gets 1/n of the CPU time in chunks of at most
q time units at once. No process waits more
than (n-1)q time units.
5/29/2016
COP4610
10
Round Robin (TQ=50) – cont.
i
0
1
2
3
4
t(pi)
350
125
475
250
75
•Equitable
•Most widely-used
•Fits naturally with interval timer
0
p0
650
p0
100
p1 p2
750
p2 p3
200
p3 p4
300
p0 p1
850
p0 p2
950
p3 p0
400
475
550
p2 p3 p4 p0 p1 p2
1050
p2 p0
1150
p2 p2
650
p3
1250 1275
p2 p2
W(p0) = 0
TTRnd(p0) = 1100
W(p1) = 50
TTRnd(p1) = 550
W(p2) = 100
TTRnd(p2) = 1275
W(p3) = 150
TTRnd(p3) = 950
W(p4) = 200
TTRnd(p4) = 475
TTRnd_avg = (1100+550+1275+950+475)/5 = 4350/5 = 870
Wavg = (0+50+100+150+200)/5 = 500/5 = 100
5/29/2016
COP4610
11
Round-robin Time Quantum
5/29/2016
COP4610
12
Process/Thread Context
Right Operand
Status
Registers
Left Operand
R1
R2
...
Rn
Functional Unit
ALU
Result
PC
Ctl Unit
5/29/2016
COP4610
IR
13
Context Switching - review
Old Thread
Descriptor
CPU
New Thread Descriptor
5/29/2016
COP4610
14
Cost of Context Switching
• Suppose there are n general registers and m
control registers
• Each register needs b store operations, where
each operation requires K time units
– (n+m)b x K time units
• Note that at least two pairs of context
switches occur when application programs
are multiplexed each time
5/29/2016
COP4610
15
Round Robin (TQ=50) – cont.
i
0
1
2
3
4
t(pi)
350
125
475 0
p0
250
75 790
p0
•Overhead must be considered
120
p1
240
p2
910
p2
p3
p3
360
p4
1030
p0
p2
p0
p1
1150
p3
p0
TTRnd(p0) = 1320
TTRnd(p1) = 660
TTRnd(p2) = 1535
TTRnd(p3) = 1140
TTRnd(p4) = 565
480 540 575 635 670
p2
p3 p4 p0 p1 p2
1270
p2
p0
1390
p2
p2
790
p3
1510 1535
p2 p2
W(p0) = 0
W(p1) = 60
W(p2) = 120
W(p3) = 180
W(p4) = 240
TTRnd_avg = (1320+660+1535+1140+565)/5 = 5220/5 = 1044
Wavg = (0+60+120+180+240)/5 = 600/5 = 120
5/29/2016
COP4610
16
Multi-Level Queues
Preemption or voluntary yield
Ready List0
New
Process
Ready List1
Ready List2
Scheduler
CPU
Done
•All processes at level i run before
any process at level j
•At a level, use another policy, e.g. RR
Ready List3
5/29/2016
COP4610
17
Multilevel Queues
• Ready queue is partitioned into separate
queues
– foreground (interactive)
– background (batch)
• Each queue has its own scheduling algorithm
– foreground – RR
– background – FCFS
5/29/2016
COP4610
18
Multilevel Queues – cont.
• Scheduling must be done between the
queues.
– Fixed priority scheduling; i.e., serve all from
foreground then from background. Possibility of
starvation.
– Time slice – each queue gets a certain amount of
CPU time which it can schedule amongst its
processes; i.e.,
• 80% to foreground in RR
• 20% to background in FCFS
5/29/2016
COP4610
19
Multilevel Queue Scheduling
5/29/2016
COP4610
20
Multilevel Feedback Queue
• A process can move between the various queues;
aging can be implemented this way.
• Multilevel-feedback-queue scheduler defined by the
following parameters:
–
–
–
–
–
number of queues
scheduling algorithms for each queue
method used to determine when to upgrade a process
method used to determine when to demote a process
method used to determine which queue a process will
enter when that process needs service
5/29/2016
COP4610
21
Multilevel Feedback Queues – cont.
5/29/2016
COP4610
22
Example of Multilevel Feedback Queue
• Three queues:
– Q0 – time quantum 8 milliseconds
– Q1 – time quantum 16 milliseconds
– Q2 – FCFS
• Scheduling
– A new job enters queue Q0 which is served FCFS. When
it gains CPU, job receives 8 milliseconds. If it does not
finish in 8 milliseconds, job is moved to queue Q1.
– At Q1 job is again served FCFS and receives 16
additional milliseconds. If it still does not complete, it is
preempted and moved to queue Q2.
5/29/2016
COP4610
23
Two-queue scheduling
5/29/2016
COP4610
24
Three-queue scheduling
5/29/2016
COP4610
25
Multiple-Processor Scheduling
• CPU scheduling more complex when
multiple CPUs are available.
• Homogeneous processors within a
multiprocessor.
• Load sharing
• Asymmetric multiprocessing – only one
processor accesses the system data structures,
alleviating the need for data sharing.
5/29/2016
COP4610
26
Algorithm Evaluation
• Deterministic modeling – takes a particular
predetermined workload and defines the
performance of each algorithm for that
workload.
• Queuing models
• Implementation
5/29/2016
COP4610
27
Evaluation of CPU Schedulers by Simulation
5/29/2016
COP4610
28
Contemporary Scheduling
• Involuntary CPU sharing -- timer interrupts
– Time quantum determined by interval timer -usually fixed for every process using the system
– Sometimes called the time slice length
• Priority-based process (job) selection
– Select the highest priority process
– Priority reflects policy
• With preemption
• Usually a variant of Multi-Level Queues
5/29/2016
COP4610
29
Scheduling in real OSs
• All use a multiple-queue system
• UNIX SVR4: 160 levels, three classes
– time-sharing, system, real-time
• Solaris: 170 levels, four classes
– time-sharing, system, real-time, interrupt
• OS/2 2.0: 128 level, four classes
– background, normal, server, real-time
• Windows NT 3.51: 32 levels, two classes
– regular and real-time
• Mach uses “hand-off scheduling”
5/29/2016
COP4610
30
BSD 4.4 Scheduling
• Involuntary CPU Sharing
• Preemptive algorithms
• 32 Multi-Level Queues
– Queues 0-7 are reserved for system functions
– Queues 8-31 are for user space functions
– nice influences (but does not dictate) queue
level
5/29/2016
COP4610
31
Windows NT/2K Scheduling
• Involuntary CPU Sharing across threads
• Preemptive algorithms
• 32 Multi-Level Queues
– Highest 16 levels are “real-time”
– Next lower 15 are for system/user threads
• Range determined by process base priority
– Lowest level is for the idle thread
5/29/2016
COP4610
32
Scheduler in Linux
• In file kernel/sched.c
• The policy is a variant of RR scheduling
5/29/2016
COP4610
33
Summary
• The scheduler is responsible for multiplexing
the CPU among a set of ready processes /
threads
– It is invoked periodically by a timer interrupt, by
a system call, other device interrupts, any time
that the running process terminates
– It selects from the ready list according to its
scheduling policy
• Which includes non-preemptive and preemptive
algorithms
5/29/2016
COP4610
34
Download