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的性能,從低速的塊設備上讀取的數據會暫時保存在內存中,即使數據在當時已經不再需要了,但在應用程序下一次訪問該數據時,它可以從內存中直接讀取,從而繞開低速的塊設備,從而提高系統的整體性能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM