340 likes | 436 Views
Operating Systems. CPU Scheduling. Agenda for Today. What is Scheduler and its types Short-term scheduler Dispatcher Reasons for invoking scheduler Optimization criteria FCFS, SJF, SRTF, RR, Multi level Queues With Examples. CPU Scheduling. Scheduling processes in the ready queue
E N D
Operating Systems CPU Scheduling
Agenda for Today • What is Scheduler and its types • Short-term scheduler • Dispatcher • Reasons for invoking scheduler • Optimization criteria • FCFS, SJF, SRTF, RR, Multi level Queues With Examples
CPU Scheduling • Scheduling processes in the ready queue • Short-term scheduler • Different types of schedulers
CPU Scheduler • Short-term scheduler • Selects a process from among the processes in the ready queue • Invokes the dispatcher to have the CPU allocated to the selected process
Dispatcher • Dispatcher gives control of the CPU to the process selected by the short-term scheduler; this involves: • switching context • switching to user mode • jumping to the proper location in the user program to start (or restart) it
Dispatcher • Dispatch latency – time it takes for the dispatcher to stop one process and start another running. • Typically, a few microseconds
CPU Scheduler • CPU scheduling decisions may take place when a process: • Switches from running to waiting state • Switches from running to ready state • Switches from waiting to ready • Terminates
CPU Scheduler • Scheduling under 1 and 4 is nonpreemptive. • All other scheduling is preemptive.
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
Scheduling Criteria • 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)
Optimization Criteria • Maximize CPU utilization • Maximize throughput • Minimize turnaround time • Minimize waiting time • Minimize response time
FCFS Scheduling • The process that enters the ready queue first is scheduled first, regardless of the size of its next CPU burst • Example: ProcessBurst Time P1 24 P2 3 P3 3 • Suppose that processes arrive into the system in the order: P1, P2 , P3
P1 P2 P3 0 24 27 30 FCFS Scheduling • Processes are served in the order: P1, P2, P3 • The Gantt Chart for the schedule is: • Waiting times P1 = 0; P2 = 24; P3 = 27 • Average waiting time: (0+24+27)/3 = 17
P2 P3 P1 0 3 6 30 FCFS Scheduling • Suppose that processes arrive in the order: P2 , P3 , P1 . • The Gantt chart for the schedule is: • Waiting time for P1 = 6;P2 = 0; P3 = 3 • Average waiting time: (6 + 0 + 3)/3 = 3 • Convoy effect short process behind long process
Shortest-Job-First (SJF) Scheduling • Process with the shortest CPU burst is scheduled first. • Non-preemptive – once CPU given to a process it cannot be preempted until completes its CPU burst.
Shortest-Job-First (SJF) Scheduling • Preemptive – if a new process arrives with CPU burst length less than remaining time of current executing process, preempt it—Shortest-Remaining-Time-First (SRTF). • SJF is optimal non-preemptive scheduling algorithm – gives minimum average waiting time for a given set of processes.
P1 P3 P2 P4 0 7 12 16 Non-Preemptive SJF • Process Arrival TimeBurst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 • Gantt chart • Average waiting time = (0+6+3+7)/4 = 4
P1 P2 P3 P2 P4 P1 11 16 0 2 4 5 7 Preemptive SJF • Process Arrival TimeBurst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 • Gantt chart • Average waiting time = (9 + 1 + 0 +2)/4 = 3
Priority Scheduling • A priority number (integer) is associated with each process • The CPU is allocated to the process with the highest priority (smallest integer highest priority). • Preemptive • Non-preemptive
Priority Scheduling • SJF is a priority scheduling where priority is the predicted next CPU burst time. • Problem Starvation – low priority processes may never execute. • Solution Aging – as time progresses increase the priority of the process.
Round Robin (RR) • Each process gets a small unit of CPU time, called time slice or quantum, which is usually 10-100 milliseconds. After this time has elapsed, the process is preempted and added to the end of the ready queue.
Round Robin (RR) • If there are n processes in the ready queue, the time quantum is q, and context switch time is tcs, then no process waits more than (n-1)(q+tcs)time units • Used in time-sharing systems where response time is an important performance criteria
Round Robin (RR) • Performance • q large FCFS • q small q must be large with respect to context switch, otherwise overhead is too high.
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3 0 20 37 57 77 97 117 121 134 154 162 Round Robin Example ProcessBurst Time P1 53 — 33 — 13 P2 17 P3 68 — 48 — 28 — 8 P4 24 — 4 • The Gantt chart with quantum 20 is:
Round Robin Example ProcessTurnaround TimeWaiting Time P1 134 134 – 53 = 81 P2 37 37 – 17 = 20 P3 162 162 – 68 = 94 P4 121 121 – 24 = 97 • Average waiting time = 73 • Average waiting time for SJF = 38 • Typically, higher average turnaround than SJF, but better response.
Quantum vs Context Switch Process Time = 10 Quantum Context Switches 12 0 6 1 1 9
Multilevel Queues • Ready queue is partitioned into separate queues:- foreground (interactive)- background (batch) • Each queue has its own priority and scheduling algorithm: - foreground – RR- background – FCFS
Multilevel Queues • Scheduling must be done across queues. • Fixed priority scheduling; i.e., serve all from foreground then from background. • Time slice – each queue gets a certain percentage of CPU time, e.g., 80% to foreground in RR and 20% to background in FCFS
Multilevel Feedback Queues • 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
Multilevel Feedback Queues • 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