Linux中Buffer和Cache的區別

2021-06-16 09:44:20 字數 1036 閱讀 1537

今天監控linux資源時,在輸入top命令後,發現記憶體相關mem和swap的buffer與cache,順便研究了一下。

什麼是cache?什麼是buffer?二者的區別是什麼?

buffer和cache的區別 buffer與cache操作的物件就不一樣。

1、buffer(緩衝)是為了提高記憶體和硬碟(或其他i/o裝置)之間的資料交換的速度而設計的。

2、cache(快取)

a)從cpu角度考慮,是為了提高cpu和記憶體之間的資料交換速度而設計的,例如平常見到的一級快取、二級快取、**快取。 cpu在執行程式所用的指令和讀資料都是針對記憶體的,也就是從記憶體中取得的。由於記憶體讀寫速度慢,為了提高cpu和記憶體之間資料交換的速度,在cpu和記憶體之間增加了cache,它的速度比記憶體快,但是造價高,又由於在cpu內不能整合太多積體電路,所以一般cache比較小,以後intel等公司為了進一步提高速度,又增加了二級cache,甚至**cache,它是根據程式的區域性性原理而設計的,就是cpu執行的指令和訪問的資料往往在集中的某一塊,所以把這塊內容放入cache後,cpu就不用在訪問記憶體了,這就提高了訪問速度。當然若cache中沒有cpu所需要的內容,還是要訪問記憶體的。

2)從記憶體讀取與磁碟讀取角度考慮,cache可以理解為作業系統為了更高的讀取效率,更多的使用記憶體來快取可能被再次訪問的資料。

緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統效能。linux有乙個守護程序定期清空緩衝內容(即寫入磁碟),也可以通過sync命令手動清空緩衝。

簡單來說,buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。 buffer是由各種程序分配的,被用在如輸入佇列等方面。乙個簡單的例子如某個程序要求有多個字段讀入,在所有欄位被讀入完整之前,程序把先前讀入的字段放在buffer中儲存。

cache經常被用在磁碟的i/o請求上,如果有多個程序都要訪問某個檔案,於是該檔案便被做成cache以方便下次被訪問,這樣可提高系統效能。

linux記憶體中buffer和 cached的比較

經常遇到一些剛接觸linux的新手會問記憶體占用怎麼那麼多?在linux中經常發現空閒記憶體很少,似乎所有的記憶體都被系統占用了,表面感覺是記憶體不夠用了,其實不然。這是linux記憶體管理的乙個優秀特性,在這方面,區別於windows的記憶體管理。主要特點是,無論物理記憶體有多大,linux 都將...

linux 記憶體中Buffer和Cache的區別

具體怎麼理解?通過實驗發現,比較寫資料到檔案和寫資料到磁碟 比較從檔案中讀取資料和從磁碟中讀資料 實驗資料參考 簡單理解 buffer 是對磁碟資料的快取,而 cache 是檔案資料的快取。同學 geek 5258f8 的解答 理論上,乙個檔案讀首先到block buffer,然後到page cac...

Linux中Buffer和Cache的區別

今天監控linux資源時,在輸入top命令後,發現記憶體相關mem和swap的buffer與cache,順便研究了一下。什麼是cache?什麼是buffer?二者的區別是什麼?buffer和cache的區別 buffer與cache操作的物件就不一樣。buffer 緩衝 是為了提高記憶體和硬碟 或其...