Lecture Topics: 11/15 • CPU scheduling: – Scheduling goals and algorithms Review: Process State • A process can be in one of several states (new, ready, running, waiting, terminated). • The OS keeps track of process state by maintaining a queue of PCBs for each state. • The ready queue contains PCBs of processes that are waiting to be assigned to the CPU. The Scheduling Problem • Need to share the CPU between multiple processes in the ready queue. – OS needs to decide which process gets the CPU next. – Once a process is selected, OS needs to do some work to get the process running on the CPU. How Scheduling Works • The scheduler is responsible for choosing a process from the ready queue. The scheduling algorithm implemented by this module determines how process selection is done. • The scheduler hands the selected process off to the dispatcher which gives the process control of the CPU. When Does The OS Make Scheduling Decisions ? • Scheduling decisions are always made: – when a process is terminated, and – when a process switches from running to waiting. • Scheduling decisions are made when an interrupt occurs only in a preemptive system. How is the CPU Shared? • Non-preemptive scheduling: – The scheduler must wait for a running process to voluntarily relinquish the CPU (process either terminates or blocks). – Why would you choose this approach? – What are the disadvantages of using this scheme? How is the CPU Shared? • Preemptive scheduling: – The OS can force a running process to give up control of the CPU, allowing the scheduler to pick another process. – What are the advantages of using this scheme? – What are the implementation challenges presented by this approach? Scheduling Goals • Maximize throughput and resource utilization. – Need to overlap CPU and I/O activities. • Minimize response time, waiting time and turnaround time. • Share CPU in a fair way. • May be difficult to meet all these goals-sometimes need to make tradeoffs. CPU and I/O Bursts • Typical process execution pattern: use the CPU for a while (CPU burst), then do some I/O operations (IO burst). • CPU bound processes perform I/O operations infrequently and tend to have long CPU bursts. • I/O bound processes spend less time doing computation and tend to have short CPU bursts. Scheduling Algorithms • First Come First Served (FCFS) – Scheduler selects the process at the head of the ready queue; typically nonpreemptive – Example: 3 processes arrive at the ready queue in the following order: P1 ( CPU burst = 24 ms) P2 ( CPU burst = 3 ms) P3 ( CPU burst = 3 ms) Scheduling Algorithms • First Come First Served (FCFS) – Example: What’s the average waiting time? • FCFS pros & cons: +Simple to implement. – Average waiting time can be large if processes with short CPU bursts get stuck behind processes with long CPU bursts. Scheduling Algorithms • Round Robin (RR) – FCFS + preemptive scheduling. – Ready queue is treated as a circular queue. – Each process gets the CPU for a time quantum (or time slice), typically 10 - 100 ms. – A process runs until it blocks, terminates, or uses up its time slice. Scheduling Algorithms • Round Robin (RR) – Example: Assuming a time quantum of 4 ms, what’s the average waiting time? • Issue: What’s the right value for the time quantum? • Too long => poor response time • Too short => poor throughput Scheduling Algorithms • Round Robin (RR) • RR pros & cons: +Works well for short jobs; typically used in timesharing systems. – High overhead due to frequent context switches. – Increases average waiting time, especially if CPU bursts are the same length and need more than one time quantum. Scheduling Algorithms • Priority Scheduling – Select the process with the highest priority. – Priority based on some attribute of the process (e.g., memory requirements, owner of process, etc.) • Issue: – Starvation: low priority jobs may wait indefinitely. Can prevent starvation by aging (increase process priority as a function of the waiting time). Scheduling Algorithms • Shortest Job First (SJF) – Special case of priority scheduling (priority = expected length of CPU burst) – Non-preemptive version: scheduler chooses the process with the least amount of work to do (shortest CPU burst). – Preemptive version: scheduler chooses the process with the shortest remaining time to completion -- a running process can be interrupted. Scheduling Algorithms • Shortest Job First (SJF) – Example: What’s the average waiting time? • Issue: How do you predict the future? – In practice systems use past process behavior to predict the length of the next CPU burst. Scheduling Algorithms • Shortest Job First (SJF) • SJF pros & cons: +Better average response time. +It’s the best you can do to minimize average response time-- can prove the algorithm is optimal. – Difficult to predict the future. – Unfair-- possible starvation (many short jobs can keep long jobs from making any progress). Scheduling Algorithms • Multi-level Queues – Maintain multiple ready queues based on process “type” (e.g., interactive queue, CPU bound queue, etc.). – Each queue has a priority; a process is permanently assigned to a queue. – May use a different scheduling algorithm in each queue. – Need to decide how to schedule between queues. Scheduling Algorithms • Multi-level Feedback Queues – Adaptive algorithm: Processes can move between queues based on past behavior. – Round robin scheduling in each queue -time slice increases in lower priority levels. – Queue assignment: • Put new process in highest priority queue. • If CPU burst takes longer than one time quantum, drop one level. • If CPU burst completes before timer expires, move up one level.