【发布时间】:2011-09-04 04:51:10
【问题描述】:
长期调度程序如何确定哪个作业受 I/O 限制,哪个作业受 CPU 限制?
听说使用 cpu burst 可以区分 I/O 密集型作业和 CPU 密集型作业,但不处理程序如何计算 CPU 密集型?
【问题讨论】:
标签: operating-system scheduling scheduler
长期调度程序如何确定哪个作业受 I/O 限制,哪个作业受 CPU 限制?
听说使用 cpu burst 可以区分 I/O 密集型作业和 CPU 密集型作业,但不处理程序如何计算 CPU 密集型?
【问题讨论】:
标签: operating-system scheduling scheduler
通常,CPU 调度程序会为进程/线程分配时间片,并在 a) 时间片用完或 b) 用于 I/O 的进程/线程块时在它们之间切换。
I/O 密集型作业会经常阻塞 I/O,而始终利用其全部时间片的进程/线程可以假定为 CPU 密集型。因此,通过区分进程/线程是否在时间片结束时阻塞或调用一些 wait_for_io_completion() 函数,您可以有效地表征这些类型的进程。
请注意,在现实生活中,事情会变得更加复杂,因为大多数时候应用程序既不受 I/O 限制也不受 CPU 限制,而是一直在切换角色。这就是为什么调度是关于启发式而不是正确的解决方案的原因,因为你不能(总是)预测未来。
【讨论】:
CPU 限制使用的计算时间比 I/O 限制更多。
【讨论】:
由 tumaini kami david 回答 答案。通常,CPU 调度程序会为进程/线程分配时间片,并在 a) 时间片用完或 b) 用于 I/O 的进程/线程块时在它们之间切换。 ... CPU 限制使用的计算时间比 I/O 限制.strong 文本更多。
【讨论】:
IO 绑定过程: io 绑定进程花费更多时间做 io 而不是计算,许多短的 cpu 突发。 绑定过程: 进程花费更多时间进行计算;很少有很长的 CPU 爆发。
【讨论】: