在 SRTF 算法中,处理器以什么间隔比较进程及其突发时间?

At what interval does the processor compare processes and their burst times in SRTF algorithm?

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

这是个好问题。您实际上触及了操作系统最近的许多研究探索的一个主要痛点。

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

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

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

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