What is scheduling?

  • Deciding which tasks to process, for how long, and in what order is achieved through scheduling algorithms
  • A CPU is responsible for processing tasks as fast as possible
  • Different algorithms are used to prioritise and process tasks that need CPU time
  • The algorithms have different uses, benefits and drawbacks.

Scheduling categories

  • Pre-emptive: allocates the CPU for time-limited slots
  • Non-pre-emptive: allocates the CPU to tasks for unlimited time slots

Pre-emptive scheduling

  • Allocates the CPU for a specific time quantum to a process
  • Allows interruption of processes currently being handled
  • It can result in low-priority processes being neglected if high-priority processes arrive frequently
  • Example algorithms include Round Robin and Shortest Remaining Time First

Non-pre-emptive scheduling

  • Once the CPU is allocated to a process, the process holds it until it completes its burst time or switches to a ‘waiting’ state
  • A process cannot be interrupted unless it completes or its burst time is reached
  • If a process with a long burst time is running, shorter processes will be neglected
  • Example algorithms include First Come First Serve and Shortest Job First

Scheduling algorithms

Round robin (RR)

  • Round Robin is a pre-emptive scheduling algorithm
  • Equally distributing processor time amongst all processes
  • Each process is given a time quantum to execute
  • Processes that are ready to be worked on get queued
  • If a process hasn’t been completed by the end of its time quantum, it will be moved to the back of the queue

Round robin scheduling algorithm Round robin scheduling algorithm

First-come-first-served (FCFS)

  • FCFS is non-preemptive, prioritising processes that arrive at the queue first
  • The process currently being worked on will block all other processes until it is complete
  • All new tasks join the back of the queue

First-Come-First-Served scheduling algorithm First-Come-First-Served scheduling algorithm

Multi-level feedback queue (MLFQ)

  • MLFQ is a pre-emptive priority algorithm where shorter and more critical tasks are processed first
  • Multiple queues are used so that tasks of equal size are grouped together
  • All processes will join the highest priority queue but will trickle down to lower priority queues if they exceed the time quantum

Multi-Level Feedback Queue scheduling algorithm Multi-Level Feedback Queue scheduling algorithm

Shortest job first (SJF)

  • SJF is non-pre-emptive, where all processes are continuously sorted by burst time from shortest to longest
  • When new processes arrive on the queue, they are prioritised based on their burst time in the next cycle
  • Shorter jobs are placed at the front of the priority queue
  • Longer jobs have lower priority, so they are placed at the back

Shortest job first scheduling algorithm Shortest job first scheduling algorithm

Shortest remaining time first (SRTF)

  • SRTF is a pre-emptive version of SJF, where processes with the shortest remaining time are higher priority
  • Time quantum is set, and if a task doesn’t complete in time, it will be re-queued for further processing
  • Before the next cycle starts, all processes are inspected and ordered by the shortest remaining time to complete

Shortest remaining time first scheduling algorithm part 1 Shortest remaining time first scheduling algorithm part 2 Shortest remaining time first scheduling algorithm

Comparison and summary of scheduling algorithms

AlgorithmBenefitsDrawbacks
Round RobinAll processes get a fair share of the CPU
Good for time-sharing systems
Predictable, as every process gets equal time
Choosing the right time quantum can be difficult
This can lead to a high turnaround time and waiting time for long processes
First Come, First ServedSimple and easy to understand
Fair in the sense that processes are served in the order they arrive
This can lead to poor performance if a long process arrives before shorter processes
High-priority tasks wait for their turn in the queue
Multi-Level Feedback QueuesSmaller tasks are prioritised
Creates a prioritisation system where similar-sized tasks are queued together
More complex than other algorithms
Setting the correct parameters (e.g., number of queues, ageing rules) can be complex
Shortest Job FirstMinimises waiting time
Efficient and fast for short processes
Requires knowing the burst time of processes in advance
Long processes can starve if short processes keep arriving
Shortest Time RemainingIdeal for jobs that have shorter burst times
It is preemptive, so it can be aligned with CPU for best performance (time quantum)
Like SJF, it requires knowing the burst time of processes in advance
High context switching overhead due to preemption
  • The suitability of a scheduling algorithm largely depends on the specific scenario and the system requirements
  • A drawback in one scenario may not be a drawback in another

Worked Example

A company makes anti-virus software. When running anti-virus software, an operating system uses a scheduling algorithm to allocate CPU time to the anti-virus software.

Explain why a First Come First Served scheduling algorithm would not be suitable in this situation.

[2]

How to answer this question:

  • Think of the conditions that anti-virus software runs optimally
  • Recall the way the FCFS algorithm works and its benefits and drawbacks
  • Link how the optimal running of anti-virus is incompatible with FCFS scheduling

Answer:

Example answer that gets full marks: Anti-virus software is high-priority because it scans the operating system constantly, looking for threats. When a threat is detected, anti-virus will quarantine or eliminate them. To work effectively, anti-virus software needs high-priority access to CPU time.

Using FCFS could delay these critical tasks if many other processes are in the queue ahead of the anti-virus software. Other less crucial tasks could get CPU time before the anti-virus process, leading to potential security risks.

Acceptable answers you could have given instead:

The FCFS algorithm is unsuitable because essential antivirus processing would be placed at the back of the queue and wait for its turn. Lower-priority tasks would use valuable CPU time, meaning the system could be at risk.