

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
This document from cs 414 at the university of virginia explores cpu scheduling in operating systems, discussing the distinction between preemptive and non-preemptive resources, the goals of scheduling disciplines, and various scheduling algorithms such as fifo, round robin, and exponential queue. The document also covers priority implementation, the advantages and disadvantages of different scheduling algorithms, and fair-share scheduling.
Typology: Study notes
1 / 3
This page cannot be seen from the preview
Don't miss anything!


g Readings for this topic: Chapter 5. g OS typically consists of two parts: 1) Process coordination, and 2) Resource Management g Resources fall into two classes: g Preemptible vs Non-preemptible
g Is this distinction absolute? Real issue?
g OS makes two related kinds of decisions about resources. What is the goal? g Allocation: who gets what. Implication?
g Scheduling: how long can they keep it. Implication?
g Resource #1: g Processes may be in any one of three general scheduling states: g Running. g Ready. g Blocked. g Goals for scheduling disciplines: g Efficiency of resource utilization. (keep CPU and disks busy) g Minimize overhead. (context switching) g Minimize response time. Define response time. g Distribute cycles equitably. What does this mean?
g FIFO (also called FCFS): run until finished. g Usually, ‘‘finished’’ means ‘‘blocked’’. g Problem?
g Solution: limit maximum amount of time that a process can run without a context switch. This time is called a time slice.
g Round Robin: run process for one time slice, then move to back of queue. Each process gets equal share of the CPU. What if the slice isn’t chosen carefully? g Too long: g Too small:
g Originally, Unix had 1 sec. time slices. Right size? Most systems today use time slices of 10,000 - 100,000 instructions.
g How to implement priorities in RR?
g Is RR always better than FIFO?
g What is the best we can do? Is there "perfect" scheduling algorithm? STCF: shortest time to completion first with preemption. In what sense is it the best?
g Example: two processes, one doing 1 ms computation followed by 10 ms I/O, one doing all computation. Suppose we use 100 ms time slice: I/O process only runs at 1/10th speed, I/O devices are only utilized 10% of time. Suppose we use 1 ms time slice: then compute-bound process gets interrupted 9 times unnecessarily for each valid interrupt. STCF works well.
g Why not using STCF?
g Rule of thumb: Give the most to those who need the least. What’s the idea here?
g The strategy?