处理器在什么时间间隔比较 SRTF 算法中的进程和它们的突发时间?

问题描述

我正在研究操作系统,并且一直在学习调度算法。我正在使用最短剩余时间优先 (SRTF) 算法(SJF 的抢占版)并有一个小疑问。大多数示例都能够解释分配和抢占发生的过程,我已经掌握了这一部分。但是我一直无法弄清楚处理器实际上在什么时间间隔检查/比较进程。就像现实中一样。是每一秒吗?如果是,那不是非常低效吗?请帮我弄清楚这个概念。

解决方法

这是个好问题。实际上,您遇到了许多近期操作系统研究探索的主要痛点。

如你所说,如果算法每秒钟都检查一次,那么算法就不会很有效。如果算法检查过于频繁(例如,每隔几微秒),则算法可能会浪费大量时间进行检查,而这些时间可用于运行进程。

对于标准内核调度程序(例如 Linux CFS),检查通常发生在以下两个点:

  1. 每当一个正在运行的进程产生、阻塞、死亡等,这会导致调度程序被调用。
  2. 每当收到定时器中断时。时间段是可配置的,但人们通常将时间段设置为几毫秒。

实现 SRTF 算法的内核也可能会检查这些点。