Chapter 5 – CPU Scheduling CPU and I/O Burst Cycle The execution of a process consists of a cycle of CPU execution and I/O wait. A process begins with a CPU burst, followed by an I/O burst, followed by another CPU burst and so on. The last CPU burst will end will a system request to terminate the execution. The CPU burst durations vary from process to process and computer to computer. An I/O bound program has many very short CPU bursts. A CPU bound program might have a few very long CPU bursts. Prepared by Dr. Amjad Mahmood 5.1 Histogram of CPU-burst Times Types of Scheduling The key to the multiprogramming is scheduling. There are four types of scheduling that an OS has to perform. These are: o Long Term scheduling The long term scheduling determines which programs are admitted to the system for processing. Thus, it controls the level of multiprogramming. Prepared by Dr. Amjad Mahmood 5.2 Once admitted, a job or a user program becomes a process and is added to the queue for the short term scheduling (in some cases added to a queue for medium term scheduling). Long term scheduling is performed when a new process is created. The criteria used for long-term scheduling may include first-come-first serve, priority, expected execution time, and I/O requirements. o Medium-Term Scheduling The medium-term scheduling is a part of swapping function. This is a decision to add a process to those that are at least partially in main memory and therefore available for execution. The swapping-in decision is made on the need to manage the degree of multiprogramming and the memory requirements of the swapped-out process. o Short-Term Scheduling A decision of which ready process to execute next is made in short-term scheduling. o I/O Scheduling The decision as to which process’s pending I/O requests shall be handled by the available I/O device is made in I/O scheduling. Prepared by Dr. Amjad Mahmood 5.3 CPU Scheduler Whenever, the CPU becomes idle, the OS must select one of the processes in the ready-queue to be executed. The selection process is carried out the short-term scheduler or CPU scheduler. The CPU scheduler selects a process from the ready queue and allocates the CPU to that process. CPU scheduling decisions may take place when a process: 1. The running process changes from running to waiting state (current CPU burst of that process is over). 2. The running process terminates 3. A waiting process becomes ready (new CPU burst of that process begins) 4. The current process switches from running to ready stat (e.g. because of timer interrupt). Prepared by Dr. Amjad Mahmood 5.4 Scheduling under 1 and 2 is nonpreemptive. Once a process is in the running state, it will continue until it terminates or blocks itself. Scheduling under 1 and 2 is preemptive. Currently running process may be interrupted and moved to the Ready state by OS. Allows for better service since any one process cannot monopolize the processor for very long Dispatcher Dispatcher module 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 restart that program Dispatch latency – time it takes for the dispatcher to stop one process and start another running. Prepared by Dr. Amjad Mahmood 5.5 What is a Good Scheduler? Criteria User oriented Turnaround time: time interval from submission of job until its completion. It includes actual processing time plus time spent waiting for resources, including the processor. OR the amount of time between moment a process first enters Ready State and the moment the process exits Running State for the last time (Completed). Waiting time: sum of periods spent waiting in ready queue. Response time: time interval from submission of job to first response. Often a process can begin producing some output to the user while continuing to process the request. Thus this is a better measure than turnaround time from the user’s point of view. Normalized turnaround time: ratio of turnaround time to service time. Service Time: The amount of time process needs to be in running state (Acquired CPU) before it is completed. System oriented CPU utilization: percentage of time CPU is busy. CPU utilization may range from 0 to 100%. In a real system, it should range from 40% to 90%. Throughput: number of jobs completed per time unit. This depends on the average length of the processes. Prepared by Dr. Amjad Mahmood 5.6 Service time, wait time, turn around time, and throughput are some of the metrics used to compare scheduling algorithms. Any good scheduler should: Maximize CPU utilization and throughput Minimize turnaround time, waiting time, response time Goals of Scheduling Algorithm for Different Systems All systems Fairness – Giving each process a fair share of the CPU Policy enforcement – seeing that stated policy is carried out. Balance – Keeping all parts of the system busy Batch systems Maximize throughput (job/hour) Minimize turnaround time Maximize CPU utilization Interactive systems Minimize response time (respond to request quickly) Proportionality – Meet users’ expectations Real-time systems Meeting deadlines Predictability – avoid quality degradation in multimedia systems. Prepared by Dr. Amjad Mahmood 5.7 Scheduling Algorithms CPU scheduling deals with the problem of deciding which of the processes in the ready queue is to be allocated the CPU. There are many different CPU scheduling algorithms, which we will discuss now. First-Come First-Served (FCFS) Scheduling The process that requests the CPU first is allocated the CPU first. It is nonpreemptive algorithm. Can easily be implemented with a FIFO queue. When a process enters the ready queue, its PCB is linked onto the tail of the queue. When CPU is free, it is allocated to the process at the head of the queue. Advantages Very simple Disadvantages Long average and worst-case waiting times Poor dynamic behavior (convoy effect - short process behind long process) Prepared by Dr. Amjad Mahmood 5.8 Example 1: Process P1 P2 P3 Burst Time 24 3 3 Suppose that the processes arrive in the order: P1, P2,P3.The Gantt Chart for the schedule is: P 0 1 P 24 2 P 27 3 30 Waiting time for P1 = 0; P2 = 24; P3 = 27 Average waiting time: (0 + 24 + 27)/3 = 17 Prepared by Dr. Amjad Mahmood 5.9 Suppose that the processes arrive in the order P2, P3, P1. The Gantt chart for the schedule is: P2 0 P3 3 P1 6 30 Waiting time for P1 = 6; P2 = 0; P3 = 3 Average waiting time: (6 + 0 + 3)/3 = 3 Example 2: Consider the following set of processes: Process P1 P2 P3 P4 P5 Arrival Time 0 2 4 6 8 Service Time 3 6 4 5 2 Calculate waiting time, average waiting time, and turnaround time. (To Be Solved in the Class) Prepared by Dr. Amjad Mahmood 5.10 Shortest-Job First Scheduling (SJF) This algorithm associates with each process the length of its next CPU burst. When the CPU is available, it is assigned the process that has the smallest next CPU burst. It is a non-preemptive policy. Preemptive SJF – Shortest Remaining Time First Preemptive version of SJF. If a new process arrives with CPU burst length less than remaining time of current executing process, preempt the currently executing process and allocate the CPU to the new process. Advantages: Minimizes average waiting times. Problems: How to determine length of next CPU burst? Problem: starvation of jobs with long CPU bursts. Prepared by Dr. Amjad Mahmood 5.11 Example: Process Arrival Time P1 0.0 P2 2.0 P3 4.0 P4 5.0 Burst Time 7 4 1 4 SJF (non-preemptive) P1 0 P3 P2 P4 3 7 8 12 Average waiting time = (0 + 6 + 3 + 7)/4 = 4 16 SRT (preemptive SJB) P1 0 P2 2 P3 4 P2 5 P4 7 P1 11 16 Average waiting time = (9 + 1 + 0 +2)/4 = 3 Prepared by Dr. Amjad Mahmood 5.12 Determining Length of the Next CPU burst in SJF Can only estimate the length. Can be done by using the length of previous CPU bursts, using exponential averaging. 1. tn actual lenght of nthCPU burst 2. n 1 predicted value for the next CPU burst 3. , 0 1 4. Define : n1 tn 1 n . Priority Scheduling In priority scheduling, a priority (an integer) is associated with each process. Priorities can be assigned either externally or internally. The CPU is allocated to the process with the highest priority (smallest integer means highest priority). Priority scheduling can be: Preemptive Nonpreemptive Prepared by Dr. Amjad Mahmood 5.13 Problem Starvation or indefinite blocking – low priority processes may never execute. Solution Aging – as time progresses increase the priority of the process. Conceptual and Implementation view of Priority Scheduling Example: Process P1 P2 P3 P4 P5 CPU Burst 10 1 2 1 5 Priority 3 1 3 4 2 (Solution to be given in the class) Prepared by Dr. Amjad Mahmood 5.14 Round-Robin Scheduling Each process gets a small unit of CPU time (called time quantum), usually 10-100 milliseconds. After this time has elapsed, the process is preempted and added to the end of the ready queue. Ready queue is treated as a circular queue. CPU scheduler goes around the ready queue, allocating the CPU to each process for a time interval of 1 time quantum. Ready queue is a FIFO queue of processes. New processes are added to the tail of the ready queue and the CPU scheduler picks the first process from the ready queue, sets a timer to interrupt after 1 time quantum and dispatches the process. If the process has a CPU burst of less than 1 time quantum, it releases the CPU voluntarily. Otherwise, the timer will go off and will cause an interrupt to the OS. A context switch will be executed and the process will be put at the tail of the ready queue. Prepared by Dr. Amjad Mahmood 5.15 The CPU scheduler then picks up the next process in the ready queue. If there are n processes in the ready queue and the time quantum is q, 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 until its next time quantum. Example: If there are 5 processes, with a time quantum of 20 ms, then each process will get up to 20 ms every 100 ms. Typically, RR has higher average turnaround than SJF, but better response. Example: Process P1 P2 P3 P4 Burst Time 53 17 68 24 Time Quantum: 20 The Gantt chart is: P1 0 P2 20 P3 37 Prepared by Dr. Amjad Mahmood P4 57 P1 77 P3 97 117 P4 P1 P3 P3 121 134 154 162 5.16 RR With Context Switching Overhead In RR, context switching overhead should be considered. RR and Time Quantum The performance of the RR depends heavily on the size of the time quantum. If the time quantum is very large, then RR policy is the same as FCFS policy. If the time quantum is very small then most of the CPU time will be spent on context switching. Turnaround time also depends on the time quantum A rule of thumb is that 80% of the CPU bursts should be shorter than the time quantum. Prepared by Dr. Amjad Mahmood 5.17 Turnaround time varies with the time quantum Multilevel Queue Scheduling Ready queue is partitioned into separate queues. Each queue may have its own scheduling algorithm. Prepared by Dr. Amjad Mahmood 5.18 A multilevel queue scheduling with absolute priory 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 and 20% to background in FCFS. Prepared by Dr. Amjad Mahmood 5.19 Multilevel Feedback Queue Scheduling 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 Prepared by Dr. Amjad Mahmood 5.20 Example 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. Algorithm Evaluation Deterministic modeling – takes a particular predetermined workload and defines the performance of each algorithm for that workload. Queueing models Implementation Prepared by Dr. Amjad Mahmood 5.21