Chapter 5: Process scheduling\ CPU scheduling
Basic concept
- CPU-I/O Burst Cycle: Process execution consists of a cycle of CPU execution and I/O wait
- CPU burst is followed by I/O burst
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- Distribution of CPU burst is the main concern
CPU Scheduler
- When the CPU becomes idle, the OS must select one of the process in the ready queue to be executed.
- the selection process is done by the CPU scheduler
Preemptitve and Nonpreemptive scheduling
- Preemptive scheduling allocates CPU for a limited time.
- Nonpreemptive once process allocates CPU for it's process. It will hold it until finishes burst or change to switches to wait state.
Nonpreemptive(cooperative)
- Process switches from running state to waiting state
- Terminates
Preemptive
- Process switches from running state to ready state
- Process switches from waiting state to ready state
- And all other
Dispatcher
- Dispatcher is the module that gives control of CPU to the process selected by the CPU scheduler.
Function
-
Switching context between processes
-
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 and restart another process.
Scheduling criteria
- CPU utilization(max): Keep the CPU busy
- Throughput(max): number of processes that are completed per unit time
- Turnaround time(min): Time length to start and complete a particular process
- waiting time(min): Time spent waiting in the ready queue
- response time(min): Time length between request and response(time sharing environment)
scheduling algorithms
FIFO scheduling
- aka FCFS, first come first server.
- Do the job that comes in first.
CONS
- convoy effect: A large process may block the CPU. Results in long waiting time
Shortest-Job-First Scheduling
- Do the shortest job
- Gives the lowest average waiting time
- Problem: difficult to know the length of the next CPU process
Determine the length of next CPU burst
- Can only estimate length (should be similar to last CPU burst)
- use exponential average
Exponential average
-
- = actual length of CPU burst
-
- = predicted value of next CPU burst.
-
- α , 0<=α<=1
-
- Define:
- Commonly, α set to ½
- α =0
- Recent history does not count
- α=1
- Only the actual last CPU burst counts
- Preemptive version is called shortest-remaining-time-first
Shortest remaining time
- Takes arrival time into consideration.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Round robin Scheduling
- Process is given a small CPU time(i.e.time slice, time quantum). After that, the process is sent back into the ready queue.
- Higher average turnaround than SJF, but better response
- large time slice: close to FIFO
- Small time slice: time slice must be large with respect to context switch, otherwise overhead is too high
priority scheduling
- A priority number (integer) is associated with each process
- The CPU is allocated to the process with the highest priority (smallest integer = highest priority)
- SJF is priority scheduling where priority is the inverse of predicted next CPU burst time
- Problem: Starvation – low priority processes may never execute
- Solution: Aging – as time progresses increase the priority of the process
Multilevel queue scheduling
- Ready queue is partitioned into separate queues, e.g.:
- foreground (interactive)
- background (batch)
- Each queue can has its own scheduling algorithm. e.g.:
- foreground – RR
- background – FCFS
- 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
- 20% to background in FCFS
Multilevel feedback 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
Thread scheduling
- Mapping User-level thread to associated kernel-level thread.
Contention scope
- Many-to-one and many-to-many models, thread library schedules user-level threads to run on LWP
- process-contention scope (PCS): scheduling threads within process
- system-contention scope (SCS): scheduling Kernel thread
Pthread scheduling
- API allows specifying either PCS or SCS during thread creation
- PTHREAD_SCOPE_PROCESS schedules threads using PCS scheduling
- PTHREAD_SCOPE_SYSTEM schedules threads using SCS scheduling
- Linux and Mac OS X only allow PTHREAD_SCOPE_SYSTEM
Multi-Processor Scheduling
Approached to Multiple-Processor Scheduling
- Asymmetric multiprocessing – only one processor accesses the system data structures, alleviating the need for data sharing
- Symmetric multiprocessing (SMP) – each processor is self-scheduling, all processes in common ready queue, or each has its own private queue of ready processes
Multicore Processors
- memory stall: When a processor access memory, a significant time is spent on waiting for the data to become available.
Load Balancing
Load balancing attempts to keep workload evenly distributed
- Push migration – periodic task checks load on each processor, and if found pushes task from overloaded CPU to other CPUs
- Pull migration – idle processors pulls waiting task from busy processor
Processor affinity
- A process may have affinity on which processor it runs\
- soft affinity:OS attempts to keep a process on a single processor, but is still possible to migrate between processors due to load balancing
- hard affinity: Specify a subset of processors to run on.
Real-time CPU Scheduling
- Soft real-time systems: no guarantee as to when critical real-time process will be scheduled
- Hard real-time systems: task must be serviced by its deadline
Minimizing latency
- Event latency : amount of time elapsed between an event occurs and serviced.
- two types of latencies:
- Interrupt latency: time from arrival of interrupt to start of routine that services interrupt
- Dispatch latency: time for schedule to take current process off CPU and switch to another
- Conflict phase of dispatch latency has two components:
- Preemption of any process running in kernel mode
- Release by low-priority process of resources needed by high-priority processes

Priority-based Scheduling
- For real-time scheduling, scheduler must support preemptive, priority-based scheduling
- For hard real-time must also provide ability to meet deadlines
- Processes have new characteristics: periodic ones require CPU at constant intervals
- Has processing time t, deadline d, period p
- 0 ≤ t ≤ d ≤ p
- Rate of periodic task is 1/p
Rate Montonic Scheduling
- Shorter periods = higher priority;
- Longer periods = lower priority
Earliest Deadline First Scheduling (EDF)
- the earlier the deadline, the higher the priority;
- the later the deadline, the lower the priority
Proportional Share Scheduling
- T shares are allocated among all processes in the system
- An application receives N shares where N < T
- This ensures each application will receive N / T of the total processor time
POSIX Real-Time Scheduling
- API provides functions for managing real-time threads
- Defines two scheduling classes for real-time threads:
- SCHED_FIFO - threads are scheduled using a FCFS strategy with a FIFO queue. There is no time-slicing for threads of equal priority
- SCHED_RR - similar to SCHED_FIFO except time-slicing occurs for threads of equal priority
- Defines two functions for getting and setting scheduling policy:
Operating-System Examples
LINUX
Windows
Solaris
Algorithm Evaluation
- How to select CPU-scheduling algorithm?
- Determine criteria, then evaluate algorithms
Deterministic Modeling
- analytic evaluation
- Takes a particular predetermined workload and defines the performance of each algorithm for that workload
Queueing Models
- the arrival of processes, and CPU and I/O bursts probabilistically
- Computes average throughput, utilization, waiting time, etc
- Computer system described as network of servers, each with queue of waiting processes
- Knowing arrival rates and service rates
- Computes utilization, average queue length, average wait time, etc
- n = average queue length
- W = average waiting time in queue
- λ = average arrival rate into queue
- Little’s law – in steady state, processes leaving queue must equal processes arriving, thus
Simulations
- Queueing models limited
- more accurate
- Programmed model of computer system
- Use Clock as variable
- Gather statistics indicating algorithm performance
- Data to drive simulation gathered via
- Random number generator according to probabilities
- Trace tapes record sequences of real events in real systems
Implementation
- simulations have limited accuracy
- implement new scheduler and test in real systems
- High cost, high risk
- Environments vary
- Most flexible schedulers can be modified per-site or per-system
- Use APIs to modify priorities
Review Question
ANS
- CPU scheduler selects a process in the ready queue to be executed when the CPU idle.
- Dispatcher is the module that gives control of CPU to the process selected by the CPU scheduler.
ANS
- Preemptive scheduling: allocates CPU for a limited time.
- Non-preemptive: once process allocates CPU for it's process. It will hold it until finishes burst or change to switches to wait state.
ANS
- Non-preemptive
- Process switches from running state to waiting state
- Terminates
- Preemptive
- Process switches from running state to ready state
- Process switches from waiting state to ready state
- And all other
ANS
- CPU utilization: Keep the CPU busy
- Throughput: number of processes that are completed per unit time
- Turnaround time: Time length to start and complete a particular process
- waiting time: Time spent waiting in the ready queue
- response time: Time length between request and response
ANS
- Do the job that comes in first.
- When a large process comes in. Processes that comes after will have long waiting time.
ANS
- Do the shortest job
- Gives the lowest average waiting time
ANS
- Do the job with shortest remaining time.
- Takes arrival time into consideration.
ANS
- Process is given a small CPU time. After that, the process is sent back into the ready queue.
- Good response.
ANS
- large time slice: close to FIFO
- Small time slice: time slice must be large with respect to context switch, otherwise overhead is too high
ANS
- Queues are separated into more queues with different priorities
- Time slice among the queues
ANS
- Much like Multilevel Queue scheduling, but processes can move between queues.
- Move a process that is waiting to long into a higher priority queue.
ANS
-
- process-contention scope (PCS): schedule User thread to run o LWP.
- system-contention scope (SCS): scheduling Kernel thread.
-
- PTHREAD_SCOPE_PROCESS schedules threads using PCS scheduling
- PTHREAD_SCOPE_SYSTEM schedules threads using SCS scheduling
END