操作系统是否会在每个时间片/时间量之后进行干预?

操作系统是否会在每个时间片/时间量之后进行干预?

在进程调度的上下文中,操作系统是否会在每个时间片/量子结束后进行干预?例如,如果计算机处于空闲状态并且有 4 个任务到达:t1、t2、t3 和 t4,并且它们按照先到先得的原则进行调度,我们通常会认为 t1、t2、t3、t4 在 CPU 中,但这不是一个简化吗?因为如果我们 t1、OS、t2、OS、t3 OS t4 是实际会发生什么?如果这是真的,那么操作系统在每个时间片(又称量子)后进行干预,这不是非常低效吗?

答案1

不一定。通常,调度程序会在任务的时间片到期后降低其动态优先级,但如果该任务仍然是最高优先级任务,则会获得另一个任务。但一般来说,是的,当任务运行时间足够长时,操作系统会接管并切换到另一个任务。为什么这会效率低下?

答案2

我认为在现代操作系统中,时间片的长度是可变的。调度程序在处理完每个中断(键盘、鼠标、触摸屏、网络、磁盘传输完成……)以及定时器中断后被调用。

粗略地说,调度程序旨在估计进程阻塞系统调用之间的时间移动平均值。在调度程序将控制权交给进程 X 之前,它会设置一个计时器,该计时器将在比进程 X 的移动平均值稍长的时间处中断。如果调度程序能够很好地猜测到下一个阻塞系统调用的时间,那么很大一部分进程实际上会通过执行阻塞系统调用自愿释放 CPU。

目标是让交互式进程进行少量计算,进行阻塞系统调用以从慢速设备请求一些数据,然后在数据返回后立即重新调度。如果调度程序必须在两个进程之间做出调度决定,那么在所有其他条件相同的情况下,它将更倾向于更频繁地进行阻塞系统调用的进程。这往往会最大化同时阻塞的 I/O 请求的数量,从而提高整体系统吞吐量。

相关内容