Operating System

Scheduler

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

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 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: