操作系统中“调度延迟”和“上下文切换”有什么区别?

5

我目前正在学习 Silberschatz 的操作系统书籍,遇到了“调度延迟”这个概念。书中定义如下:

调度程序停止一个进程并启动另一个进程运行所需的时间称为调度延迟。

这不是与“上下文切换”相同的定义吗?这两个术语有什么区别还是可以互换使用的?

2个回答

4
让我们尝试一个“有点现实”的场景,并假设一个任务先前使用read()从管道中获取数据,但此时没有数据,所以该任务被阻塞;然后有些东西向管道写入数据,导致任务再次解除阻塞。在这种情况下:
  • 调度程序将从“正在运行内核代码的先前任务”切换到“已解除阻塞并运行内核代码的任务”。这可能需要40纳秒。
  • 内核(现在在未阻塞任务的上下文中运行)将数据复制到由原始的read()调用提供的缓冲区,并排列read()调用应返回的参数(例如,读取的字节数)。这可能需要另外50纳秒。
  • 内核决定它没有更好的事情要做,因此返回用户空间,需要另外10纳秒。

在这里,上下文切换时间为40纳秒,但是调度延迟(由本书作者定义)为100纳秒。


3
"上下文切换"是一个过程。 "调度延迟"是一种延迟,又称时间。

那么我们可以说分派延迟是执行上下文切换所需的时间,还是有其他进程构成了分派延迟的一部分时间? - Islam Hassan
@IslamEl-Rougy 对我来说,看起来是时候进行上下文切换了,但我可能错了。 - bolov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接