**:
今天twitter上關於buffer和cache討論得蠻火的,被各種說話一攪和,有點亂了,就乾脆整理一下。
首先從翻譯上,buffer應該翻譯為「緩衝」,cache應該翻譯為「快取」,兩個完全不是乙個東西。
在硬體這一層看,buffer應該為記憶體,cache為cpu整合的告訴快取。
buffer為了讓不同速度的裝置能夠同步,建立的乙個緩衝區域,寫進buffer的資料是為了從中拿出寫入其他裝置。
cache是為了提高讀取速度,將經常或馬上需要的資料預讀到快取中,寫進cache的資料是為了其他裝置從中去讀取。
從軟體這一層來說,buffer是塊裝置的緩衝,cache是檔案系統的快取。以linux為例,
buffer(buffer cache)以塊形式緩衝了塊裝置的操作,定時或手動的同步到硬碟,它是為了緩衝寫操作然後一次性將很多改動寫入硬碟,避免頻繁寫硬碟,提高寫入效率。
cache(page cache)以頁面形式快取了檔案系統的檔案,給需要使用的程式讀取,它是為了給讀操作提供緩衝,避免頻繁讀硬碟,提高讀取效率。
總而言之,buffer裡面的東西是為了寫到別處去,cache裡面的東西是為了給別處讀。
我的理解就是這樣,歡迎大牛拍磚~
另外:關於linux free命令的解釋
linux記憶體中buffer和 cached的比較
經常遇到一些剛接觸linux的新手會問記憶體占用怎麼那麼多?在linux中經常發現空閒記憶體很少,似乎所有的記憶體都被系統占用了,表面感覺是記憶體不夠用了,其實不然。這是linux記憶體管理的乙個優秀特性,在這方面,區別於windows的記憶體管理。主要特點是,無論物理記憶體有多大,linux 都將...
linux 記憶體中Buffer和Cache的區別
具體怎麼理解?通過實驗發現,比較寫資料到檔案和寫資料到磁碟 比較從檔案中讀取資料和從磁碟中讀資料 實驗資料參考 簡單理解 buffer 是對磁碟資料的快取,而 cache 是檔案資料的快取。同學 geek 5258f8 的解答 理論上,乙個檔案讀首先到block buffer,然後到page cac...
Linux記憶體buffer與cache區別
一 首先大概了解一下計算機cpu cache buffer 記憶體 硬碟 swap cpu也稱為 處理器 cpu,central processing unit 是一塊超大規模的積體電路,是一台計算機的運算核心 core 和控制核心 control unit 它的功能主要是解釋計算機指令以及處理計算...