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