1 / 39

CS444/CS544 Operating Systems

This article discusses CPU scheduling in operating systems, covering concepts such as preemptive and non-preemptive scheduling, performance measures, and different scheduling algorithms. It also explores the issues and problems associated with First Come First Serve (FCFS) and Shortest Job First (SJF) scheduling.

jorgen
Download Presentation

CS444/CS544 Operating Systems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS444/CS544Operating Systems CPU Scheduling 2/07/2006 Prof. Searleman jets@clarkson.edu

  2. Outline • CPU scheduling NOTE: • Quiz: Thursday, 2/9, in lab (ITL) • Covers material in SGG: Chapters 1 - 4 • Lab#1: due today (anytime) • Read: Chapter 5 • HW#4 posted, due Friday, 2/17/06

  3. Scheduling • CPU or “short term” scheduler selects process from ready queue (every 10 msec or so) • “dispatcher” does the process switching • “long-term” scheduler controls “degree of multiprogramming” (number of processes in memory); selects a good “job mix” • “job mix” – I/O-bound, CPU-bound, interactive, batch, high priority, background vs. foreground, real-time • “non-preemptive” (cooperative) vs. “preemptive”

  4. Performance Measures • Throughput: #processes/time unit • Turnaround time: time completed – time submitted • Waiting time: sum of times spent in ready queue • Response time: time from submission of a request until the first response is produced • Variation of response time (predictability) • CPU utilization • Disk (or other I/O device) utilization

  5. I/O-bound & CPU-bound Device1 P1 CPU time quantum Device2 P2 CPU

  6. Turnaround time for P1 I/O-bound & CPU-bound P1: CPU-bound Device1 idle Device1 idle Device1 idle CPU idle CPU idle

  7. Turnaround time for P2 I/O-bound & CPU-bound P2: I/O-bound Device2 idle Device2 idle CPU idle CPU idle

  8. I/O-bound & CPU-bound Schedule1: non-preemptive, P1 selected first Turnaround time for P1 Turnaround time for P2 Without P1

  9. I/O-bound & CPU-bound Schedule2: non-preemptive, P2 selected first Turnaround time for P1 Turnaround time for P2

  10. I/O-bound & CPU-bound • How does the OS know whether a process is • I/O-bound or CPU-bound? • can monitor the behavior of a process & save the info in the PCB • example: how much CPU time did the process use in its recent time quanta? (a small fraction => I/O intensive; all of the quantum => CPU intensive) • The nature of a typical process changes from I/O-bound to CPU-bound and back as it works through its Input/Process/Output Cycle

  11. t2 t0 ready: P1, P2 t1 ready: P2 blocked: P1 Preemptive vs. Non-Preemptive

  12. t2 ready: P1 blocked: P2 t3 ready: P2 running: P1 Preemptive vs. Non-Preemptive Non-Preemptive: must continue to run P1 at t3 Preemptive: can choose between P1 & P2 at t3

  13. (4) exit, abort New dispatch admit Terminated (2) interrupt Running Ready (1) block for I/O or wait for event (3) I/O completed or event occurs Waiting • nonpreemptive (cooperative): (1) and (4) only • preemptive: otherwise

  14. First Come First Serve (FCFS) • Also called First In First Out (FIFO) • Jobs scheduled in the order they arrive • When used, tends to be non-preemptive • If you get there first, you get all the resource until you are done • “Done” can mean end of CPU burst or completion of job • Sounds fair • All jobs treated equally • No starvation (except for infinite loops that prevent completion of a job)

  15. P1 P3 P2 0 18 20 24 P1, P2, P3 ready FCFS • average waiting time = (0 + 18 + 20)/3 = 12.6 Gantt chart

  16. Problems with FCFS/FIFO • Can lead to poor overlap of I/O and CPU • If let first in line run till they are done or block for I/O then can get convoy effect • While job with long CPU burst executes, other jobs complete their I/O and the I/O devices sit idle even though they are the “bottleneck” resource and should be kept as busy as possible • Also, small jobs wait behind long running jobs (even grocery stores know that) • Results in high average turn-around time

  17. Shortest Job First (SJF) • So if we don’t want short running jobs waiting behind long running jobs, why don’t we let the job with the shortest CPU burst go next • Can prove that this results in the minimum (optimal) average waiting time • Can be preemptive or non-preemptive • Preemptive version called shortest-remaining-time first (SRTF)

  18. P1 P3 P2 0 24 2 P1, P2, P3 ready SJF • average waiting time = (0 + 2 + 6)/3 = 2.6 Gantt chart 6

  19. P1 P3 P2 P4 7 12 16 2 4 5 8 P1 running P2, P3 , P4 ready P1 ready P1 running P2, P3 ready P1 runningP2ready SJF nonpreemptive • average waiting time = (0 + 6 + 3 + 7)/4 = 4 0

  20. P2 P2 P4 P1 P3 P1 7 11 16 2 4 5 P1, P4 ready P1 ready P2 running P1, P3 ready P1 ready P3 completes P1, P2 , P4 ready P1 runningP2ready SRTF preemptive • average waiting time = (9 + 1 + 0 + 2)/4 = 3 0

  21. P2 P2 P4 P1 P3 P1 11 16 SRTF preemptive 16 – 0 = 16 9 1 7 – 2 = 5 • average waiting time = (9 + 1 + 0 + 2)/4 = 3 • average turnaround time = (16 + 5 + 1 + 6)/4 0 5 – 4 = 1 11 – 5 = 6 2 7 0 2 4 5

  22. Problems with SJF • First, how do you know which job will have the shortest CPU burst or shortest running time? • Can guess based on history but not guaranteed • Bigger problem is that it can lead to starvation for long-running jobs • If you never got to the head of the grocery queue because someone with a few items was always cutting in front of you

  23. Most Important Job First • Priority scheduling • Assign priorities to jobs and run the job with the highest priority next • Can be preemptive such that as soon as high priority job arrives it get the CPU • Can implement with multiple “priority queues” instead of single ready queue • Run all jobs on highest priority queue first

  24. Problems with Priority Scheduling • First, how do we decide on priorities? • SJF is basically priority scheduling where priority determined by running time – also a million other choices • Like SJF, all priority scheduling can lead to starvation • How do we schedule CPU between processes with the same priority? • What if highest priority process needs resource held by lowest priority process?

  25. Priority Inversion • Problem: Lowest priority process holds a lock that highest priority process needs. Medium priority processes run and low priority process never gets a chance to release lock. • Solution: Low priority process “inherits” priority of the highest priority process until it releases the lock and then reverts to original priority.

  26. Dealing with Starvation • FCFS has some serious drawbacks and we really do like to be able to express priorities • What can we do to prevent starvation? • Increase priority the longer a job waits (“aging”) • Eventually any job will accumulate enough “waiting points” to be scheduled

  27. Interactive Systems? • Do any of these sound like a good choice for an interactive system? • How did we describe scheduling on interactive systems? • Time slices • Each job given a its share of the CPU in turn • Called Round Robin (RR) scheduling • No starvation!

  28. Problems With RR • First, how do you choose the time quantum? • If too small, then spend all your time context switching and very little time making progress • If too large, then it will be a while between the times a given job is scheduled leading to poor response time • RR with large time slice => FIFO • No way to express priorities of jobs • Aren’t there some jobs that should get a longer time slice?

  29. Best of All Worlds? • Most real life scheduling algorithms combine elements of several of these basic schemes • Examples: • Have multiple queues • Use different algorithms within different queues • Use different algorithm between queues • Have algorithms for moving jobs from one queue to another • Have different time slices for each queue • Where do new jobs enter the system

  30. Multi-level Feedback Queues (MLFQ) • Multiple queues representing different types of jobs • Example: I/O bound, CPU bound • Queues have different priorities • Jobs can move between queues based on execution history • If any job can be guaranteed to eventually reach the top priority queue given enough waiting time, then MLFQ is starvation free

  31. Typical UNIX Scheduler • MLFQ • 3-4 classes spanning >100 priority levels • Timesharing, Interactive, System, Real-time (highest) • Processes with highest priority always run first; Processes of same priority scheduled with Round Robin • Reward interactive behavior by increasing priority if process blocks before end of time slice granted • Punish CPU hogs by decreasing priority of process uses the entire quantum

  32. priocntl > priocntl -l CONFIGURED CLASSES ================== SYS (System Class) TS (Time Sharing) Configured TS User Priority Range: -60 through 60 IA (Interactive) Configured IA User Priority Range -60 through 60 RT (Real Time) Maximum Configured RT Priority: 59

  33. priocntl :~> ps PID TTY TIME CMD 29373 pts/60 0:00 tcsh 29437 pts/60 0:11 pine :~> priocntl -d 29373 TIME SHARING PROCESSES: PID TSUPRILIM TSUPRI 29373 -30 -30 :~> priocntl -d 29437 TIME SHARING PROCESSES: PID TSUPRILIM TSUPRI 29437 -57 -57 :~> priocntl -d 1 TIME SHARING PROCESSES: PID TSUPRILIM TSUPRI 1 0 0

  34. nice • Users can lower the priority of their process with nice • Root user can raise or lower the priority of processes

  35. Real Time Scheduling • Real time processes have timing constraints • Expressed as deadlines or rate requirements • Common Real Time Scheduling Algorithms • Rate Monotonic • Priority = 1/RequiredRate • Things that need to be scheduled more often have highest priority • Earliest Deadline First • Schedule the job with the earliest deadline • Scheduling homework?  • To provide service guarantees, neither algorithm is sufficient • Need admission control so that system can refuse to accept a job if it cannot honor its constraints

  36. Multiprocessor Scheduling • Can either schedule each processor separately or together • One line all feeding multiple tellers or one line for each teller • Some issues • Want to schedule the same process again on the same processor (processor affinity) • Why? Caches • Want to schedule cooperating processes/threads together (gang scheduling) • Why? Don’t block when need to communicate with each other

  37. Algorithm Evaluation: Deterministic Modeling • Deterministic Modeling • Specifies algorithm *and* workload • Example : • Process 1 arrives at time 1 and has a running time of 10 and a priority of 2 • Process 2 arrives at time 5, has a running time of 2 and a priority of 1 • … • What is the average waiting time if we use preemptive priority scheduling with FIFO among processes of the same priority?

  38. Algorithm Evaluation: Queueing Models • Distribution of CPU and I/O bursts, arrival times, service times are all modeled as a probability distribution • Mathematical analysis of these systems • To make analysis tractable, model as well behaved but unrealistic distributions

  39. Algorithm Evaluation: Simulation • Implement a scheduler as a user process • Drive scheduler with a workload that is either • randomly chosen according to some distribution • measured on a real system and replayed • Simulations can be just as complex as actual implementations • At some level of effort, should just implement in real system and test with “real” workloads • What is your benchmark/ common case?

More Related