【问题标题】:How to distinguish between I/O bound and CPU bound jobs ?如何区分 I/O 绑定和 CPU 绑定作业?
【发布时间】:2011-09-04 04:51:10
【问题描述】:

长期调度程序如何确定哪个作业受 I/O 限制,哪个作业受 CPU 限制?

听说使用 cpu burst 可以区分 I/O 密集型作业和 CPU 密集型作业,但不处理程序如何计算 CPU 密集型?

【问题讨论】:

    标签: operating-system scheduling scheduler


    【解决方案1】:

    通常,CPU 调度程序会为进程/线程分配时间片,并在 a) 时间片用完或 b) 用于 I/O 的进程/线程块时在它们之间切换。

    I/O 密集型作业会经常阻塞 I/O,而始终利用其全部时间片的进程/线程可以假定为 CPU 密集型。因此,通过区分进程/线程是否在时间片结束时阻塞或调用一些 wait_for_io_completion() 函数,您可以有效地表征这些类型的进程。

    请注意,在现实生活中,事情会变得更加复杂,因为大多数时候应用程序既不受 I/O 限制也不受 CPU 限制,而是一直在切换角色。这就是为什么调度是关于启发式而不是正确的解决方案的原因,因为你不能(总是)预测未来。

    【讨论】:

      【解决方案2】:

      CPU 限制使用的计算时间比 I/O 限制更多。

      【讨论】:

      • 详细说明您的答案。添加引用,使其有用。
      【解决方案3】:

      由 tumaini kami david 回答 答案。通常,CPU 调度程序会为进程/线程分配时间片,并在 a) 时间片用完或 b) 用于 I/O 的进程/线程块时在它们之间切换。 ... CPU 限制使用的计算时间比 I/O 限制.strong 文本更多。

      【讨论】:

        【解决方案4】:

        IO 绑定过程: io 绑定进程花费更多时间做 io 而不是计算,许多短的 cpu 突发。 绑定过程: 进程花费更多时间进行计算;很少有很长的 CPU 爆发。

        【讨论】:

          猜你喜欢
          • 2014-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多