Linux Buffer和Cache的區別

2021-07-03 07:17:03 字數 949 閱讀 1432

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

buffer和cache的區別

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

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

cache(快取)是為了提高cpu和記憶體之間的資料交換速度而設計,也就是平常見到的一級快取、二級快取、**快取。

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

緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統效能。linux有乙個守護程序定期清空緩衝內容(即寫入磁碟),也可以通過sync命令手動清空緩衝。舉個例子吧:我這裡有乙個ext2的u盤,我往裡面cp乙個3m的***,但u盤的燈沒有跳動,過了一會兒(或者手動輸入sync)u盤的燈就跳動起來了。解除安裝裝置時會清空緩衝,所以有些時候解除安裝乙個裝置時要等上幾秒鐘。

簡單來說,buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。

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

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

** 

linux buffer 和 cache 的區別

一.記憶體使用說明 free 命令相對於 top提供了更簡潔的檢視系統記憶體使用情況 root rac1 free total used free shared buffers cached mem 1035108 1008984 26124 0 124212 413000 buffers cach...

大數運算 附c ac題解

就是這樣一類題,兩個數字太大了直接用數字型別不太好運算,我們就直接用字串來計算。題目描述 川哥可謂是我校acm起家的鼻祖,雖然早已畢業卻特別關注這次科技節的校賽,特意囑咐,一定會a b的大數加法!輸入多行測試資料,每行包含兩個正整數a和b,a和b的範圍不會超過1000位 輸出輸出a b的結果 樣例輸...

試題 歷屆試題 分考場 C (AC)

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1輸出格式 一行乙個整數,表示最少分幾個考場。樣例輸入58 1 21 3 1 42 3 2 4...