如何区分I / O绑定和CPU绑定作业?

时间:2011-05-29 05:42:34

标签: operating-system scheduling scheduler

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

我听说通过使用cpu burst我们可以区分I / O绑定和CPU绑定作业,但是如何在不处理程序的情况下计算CPU突发?

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

CPU绑定使用更多的时间进行计算而不是I / O绑定。

答案 2 :(得分:1)

由tumaini kami david回答 答案。通常,CPU调度程序会为进程/线程分配时间片,并在以下情况之间进行切换:a)时间片用完或b)I / O的进程/线程块。 ... CPU绑定比I / O绑定花费更多的时间进行计算。

答案 3 :(得分:0)

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