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



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

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

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

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

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

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

最新更新