Operating System

Scheduler (OS)

The Scheduler is a component of the OS that decides which process runs at a given time. It selects processes from the queue based on certain criteria (scheduling algorithms).

Why is this concept important?

At a personal level, at NVIDIA, I realized that how we determine priority when things are competing for resources is determined through the scheduler.

Scheduling is the action of assigning resources to perform tasks.

  • Resources: be processors, network links or expansion cards
  • Tasks: be threads, processes or data flows

Resources

Levels of Schedulers

There is actually 3 different Levels of Schedulers:

  1. Short-Term Scheduling (decides which process to execute next)
  2. Medium-Term Scheduling (moving processes from secondary to main memory)
  3. Long-Term Scheduling (adding to the pool of processes to be executed)

Uniprocessor Scheduling

We start with uniprocessor schedulers, and then generalize to multiprocessor scheduling policies.

The types of scheduling policies introduced:

  1. First-Come-First-Served Scheduling (FCFS)
  2. Round Robin modern ones based on clocks
  3. Shortest Process Next (SPN)
  4. Shortest Remaining Time (SRT)
  5. Highest Response Ratio Next (HRRN)
  6. Feedback-Based Scheduling

  • w = time spent in system so far, waiting
  • e = time spent in execution so far
  • s = total service time required by the process, including e; generally, this quantity must be estimated or supplied by the user

Below is how different schedulers would work based on the following process requirements:

Other concepts: