代码之家  ›  专栏  ›  技术社区  ›  Chankey Pathak

为什么I/O绑定进程更快?

  •  2
  • Chankey Pathak  · 技术社区  · 14 年前

    通常CPU会运行一段时间而不停止,然后进行系统调用以读取文件或写入文件。当系统调用完成时,CPU会再次计算,直到需要更多的数据或必须写入更多的数据,依此类推。

    一些进程将大部分时间用于计算,而另一些进程则将大部分时间用于等待I/O 计算界限 后者称为 I/O绑定 . 受计算限制的进程通常具有较长的CPU突发,因此不经常进行I/O等待,而受I/O限制的进程具有较短的CPU突发,因此频繁进行I/O等待。

    随着CPU速度的加快,进程往往 获取更多I/O绑定。


    编辑

    这不是家庭作业问题。我在研究这本书(Tanenbaum的《现代操作系统》)时发现了这个问题。我不明白这是为什么我要问这个问题。请不要把这个问题当作家庭作业。

    2 回复  |  直到 14 年前
        1
  •  12
  •   Thilo    14 年前

    使用更快的CPU时,使用CPU的时间会减少(给定相同的代码),但执行I/O的时间会保持不变(给定相同的I/O性能),因此I/O时间的百分比会增加,I/O将成为瓶颈。

    这并不意味着“I/O绑定进程更快”。

        2
  •  5
  •   slebetman    14 年前

    它想说的是:

    不增加速度与CPU速度成比例,因为

    这意味着I/O绑定的进程比非I/O绑定的进程慢,而不是快。

    为什么会这样?好吧,当只有CPU速度增加时,系统的其他部分的速度就没有增加。你的硬盘仍然是相同的速度,你的网卡仍然是相同的速度,甚至你的RAM仍然是相同的速度*。因此,随着CPU速度的提高,程序的限制因素变得越来越少,而更多的是关于I/O有多慢。换句话说,程序自然而然地转向越来越多的I/O绑定。换句话说: ..as CPU gets faster, processes tend to get more I/O-bound .

    *注意:从历史上看,其他一切都随着CPU的速度而提高,只是没有那么多。例如,cpu从4MHz到2GHz,速度提高了500倍,而硬盘速度从1MB/s到70MB/s,增长了70倍。