其他分享
首页 > 其他分享> > 磁盘IO-为什么说IO密集型很少消耗CPU资源?

磁盘IO-为什么说IO密集型很少消耗CPU资源?

作者:互联网

我们都知道磁盘io,网络io,是不会消耗cpu资源的,但是说原理,你说得清么?

今天我们就从底层原理,简单直白的说清楚,为什么磁盘io很少消耗CPU资源。

一、内核缓冲区与用户缓冲区

我们知道应用程序因为调用权限限制,分为用户态和内核态。
当我们需要把应用程序里面的数据写入到磁盘或者网络的时候,就需要将数据从用户空间,写入到内核空间,图示:
内核缓冲区

  1. 第一步cpu复制,是用户缓冲区,到内核缓冲区是cpu来操作的。
  2. 第二部从内核缓冲区到磁盘,是交给了DMA(Direct Memory Access)直接内存访问。
  3. outputStream.write方法,你可以任务数据写入到了用户数据缓冲区
  4. flush方法,你可以任务是刷新到内核缓冲区写入磁盘

二、为什么说IO密集cpu用的少?

从上图,我们知道,

因此就可断定io密集型消耗cpu少:

三、总结

这篇文章我们说了:

由此我们得出了为什么IO密集型消耗cpu资源少的结论

标签:DMA,cpu,内核,IO,缓冲区,磁盘,数据,CPU
来源: https://blog.csdn.net/lz710117239/article/details/123610632