zoukankan      html  css  js  c++  java
  • Linux内存中的 buffer 和 cache 到底是个什么东东?

      Linux 中的 free 命令,会输出:

      total  总量

      used   已使用

      free  空闲

      shared  共享内存

      buffers  

      cached

      前面四项都比较好理解,一看我也就知道啥意思了。但是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的性能,从低速的块设备上读取的数据会暂时保存在内存中,即使数据在当时已经不再需要了,但在应用程序下一次访问该数据时,它可以从内存中直接读取,从而绕开低速的块设备,从而提高系统的整体性能。

  • 相关阅读:
    java堆
    本地方法栈
    java虚拟机栈
    Java 程序计数器
    面向对象 基本概念 复习
    if __name__=='__main__'
    偏函数与模块
    可变参数与关键字参数(复习材料)
    匿名函数
    闭包
  • 原文地址:https://www.cnblogs.com/aaronax/p/6073047.html
Copyright © 2011-2022 走看看