Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS444/CS544 Operating Systems CPU Scheduling 2/07/2006 Prof. Searleman

Similar presentations


Presentation on theme: "CS444/CS544 Operating Systems CPU Scheduling 2/07/2006 Prof. Searleman"— Presentation transcript:

1 CS444/CS544 Operating 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 HW#4

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 P2 CPU Device2 time quantum

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

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

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

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

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 Preemptive vs. Non-Preemptive t 0 ready: P1, P2 t 1 ready: P2 blocked: P1 t2t2

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

13 New Ready Running Waiting Terminated admit dispatch (4) exit, abort (2) interrupt (1) block for I/O or wait for event (3) I/O completed or event occurs 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 FCFS average waiting time = (0 + 18 + 20)/3 = 12.6 P1P1 18 P2P2 20 P3P3 24 ProcessCPU burst P1P1 18 P2P2 2 P3P3 4 Gantt chart 0 P1, P2, P3 ready

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 SJF average waiting time = (0 + 2 + 6)/3 = 2.6 P1P1 24 P2P2 2 P3P3 6 ProcessCPU burst P1P1 18 P2P2 2 P3P3 4 Gantt chart 0 P1, P2, P3 ready

19 SJF average waiting time = (0 + 6 + 3 + 7)/4 = 4 P1P1 7 P2P2 12 P3P3 8 0 P 1 ready ProcessArrival time CPU burst P1P1 07 P2P2 24 P3P3 41 P4P4 54 P4P4 16 nonpreemptive 2 P 1 running P 2 ready 4 P 1 running P 2, P 3 ready 5 P 1 running P 2, P 3, P 4 ready

20 SRTF average waiting time = (9 + 1 + 0 + 2)/4 = 3 P1P1 P3P3 0 P 1 ready ProcessArrival time CPU burst P1P1 07 P2P2 24 P3P3 41 P4P4 54 P4P4 11 preemptive 2 P 1 running P 2 ready 4 P 2 running P 1, P 3 ready 5 P 3 completes P 1, P 2, P 4 ready P2P2 P2P2 16 P1P1 7 P 1, P 4 ready P 1 ready

21 SRTF average waiting time = (9 + 1 + 0 + 2)/4 = 3 average turnaround time = (16 + 5 + 1 + 6)/4 P1P1 P3P3 0 Processturnaround Time waiting Time P1P1 P2P2 P3P3 P4P4 P4P4 11 24 5 P2P2 P2P2 16 P1P1 7 16 – 0 = 16 7 – 2 = 5 1 5 – 4 = 1 11 – 5 = 6 9 0 2 preemptive

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?


Download ppt "CS444/CS544 Operating Systems CPU Scheduling 2/07/2006 Prof. Searleman"

Similar presentations


Ads by Google