【问题标题】:What is the difference between "Dispatch Latency" and "Context Switch" in operating systems?操作系统中的“调度延迟”和“上下文切换”有什么区别?
【发布时间】:2019-03-24 15:05:24
【问题描述】:

我目前正在研究 Silberschatz 书中的操作系统,并且遇到了“调度延迟”概念。书上是这样定义的:

调度程序停止一个进程所需的时间和 开始另一个运行称为调度延迟。

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

【问题讨论】:

    标签: operating-system


    【解决方案1】:

    让我们尝试一个“有点现实”的场景,假设一个任务之前使用read() 从管道中获取数据,但当时没有数据,因此任务被阻塞;然后某些东西将数据写入管道,导致任务再次被解除阻塞。在这种情况下:

    • 调度程序将任务从“运行内核代码的上一个任务”切换到“未阻塞运行内核代码的任务”。这可能需要 40 纳秒。
    • 内核(现在在未阻塞任务的上下文中运行)将数据复制到由原始read() 调用提供的缓冲区中,并安排read() 调用应该返回的参数(例如字节数读)。这可能还需要 50 纳秒。
    • 内核决定它没有更好的办法,因此它返回到用户空间,又需要 10 纳秒。

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

    【讨论】:

      【解决方案2】:

      “上下文切换”是一个过程。 “Dispatch Latency”是一个延迟,也就是时间。

      【讨论】:

      • 所以我们可以说调度延迟是执行上下文切换所需的时间,还是有其他进程构成调度延迟时间的一部分?
      • @IslamEl-Rougy 在我看来是的,是时候进行上下文切换了,但我可能错了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 2020-04-08
      • 2013-03-20
      • 2015-03-16
      • 2015-12-29
      • 2020-12-26
      相关资源
      最近更新 更多