Linux内存中的 buffer 和 cache 究竟是个什么东东?

  Linux 中的 free 命令,会输出:缓存

  total  总量性能

  used   已使用操作系统

  free  空闲设计

  shared  共享内存内存

  buffers  it

  cachedsed

  前面四项都比较好理解,一看我也就知道啥意思了。可是buffer 和 cached 我就一直不很理解,终于看到某篇文章写的很详细,因而记下来;程序

  ·A buffer is something that has yet to be "written" to disk.  ---buffer 写缓存,数据存储时,先保存到磁盘缓冲区,而后再写入到永久空间数据

  ·A cache is something that has been "reed" from the disk adn stored for later use.   --cache 读缓存,数据从磁盘读出后,暂留在缓冲区,预备程序接下来的使用,英文

  英文好点的,应该已经看出了端倪,

  buffer 用于存放要输出到磁盘的数据,而cache是从磁盘读出存放到内存中待从此使用的数据。它们的引入均是为了提供IO的性能。

  内存:从用户和操做系统的角度来看,其大小空间是有区别的。像buffer/cached的内存,因为这块内存从操做系统的角度确实被使用,但若是用户要使用,这块内存是能够很快被回收而被用户空间程序使用,所以从用户角度而言这块内存应被划为空闲状态。

  为何Linux 会有这种机制呢?

  其实这是一种很是优秀的设计,目的就是为了提高磁盘IO的性能,从低速的块设备上读取的数据会暂时保存在内存中,即便数据在当时已经再也不须要了,但在应用程序下一次访问该数据时,它能够从内存中直接读取,从而绕开低速的块设备,从而提升系统的总体性能。

相关文章
相关标签/搜索