Buffer和cache的區別是什麼?

2021-05-12 21:59:49 字數 873 閱讀 8122

buffer和cache是兩個經常被混為一談的概念。從直觀上說,兩者都具備改善系統 i/o 吞吐量的能力,但是這兩個概念是有區別的,其提高系統i/o吞吐量的原因也不盡相同。

cache改善系統效能的主要原因是資料訪問的區域性性,即,通常應用程式在一段時間內操作的資料集的某個有限的部分,通常是很小的一部分。硬體實現的cache通常會只使用一小塊(與主存相比)訪問速度很快,但相對比較昂貴的儲存部件,並放置於距離cpu較近的位置。

buffer改善系統效能的主要原因是減少不必要的狀態切換和裝置i/o。由於製造工藝等個方面的原因,系統中不同部件的速度往往是不一樣的,一次進行批量的操作(例如,預先讀取,或者將寫資料湊成乙個整數之後再寫),往往要比到需要時等待這些操作完成要節省時間,並且有效地降低狀態切換導致的開銷。

還有乙個比較顯著的區別是,cache通常是硬體或os提供,使用者程式不需要(多數情況下也沒有辦法)為其分配儲存的機制,通常它在使用者,如使用者程式看來是透明的,它屬於提供cache的一方而不是其使用者;而buffer往往是由使用者程式知道並且與os共享(換言之,使用者程式需要分配一塊記憶體,並告訴os這塊記憶體將要用於某種操作),或由os分配,並在主機和外設之間共享(例如網絡卡的dma buffer),在使用者看來它通常不是透明的,這些記憶體往往屬於控制記憶體的程式,如使用者程式,或os,而不是向其傳遞資料的os,或硬體。

不過,這個區別主要是傳統意義上的cache。最近幾年引入的一些新概念,特別是internet cache並不能用這種方法來區分。我認為最關鍵的區別其實在於,buffer主要作用是在於減少實際的i/o操作次數,即,將多次操作盡量合併成一次的成批操作,通常其中的資料在操作完成之後,buffer不會被繼續使用;而cache的主要作用在於更好地利用區域性性原理,減少不必要的i/o,避免代價昂貴(例如,速度很慢)的i/o操作。

Cache和Buffer的區別

1.cache 快取區,是快取記憶體,是位於cpu和主記憶體之間的容量較小但速度很快的儲存器,因為cpu的速度遠遠高於主記憶體的速度,cpu從記憶體中讀取資料需等待很長的時間,而 cache儲存著cpu剛用過的資料或迴圈使用的部分資料,這時從cache中讀取資料會更快,減少了cpu等待的時間,提高了...

Buffer和Cache的區別

快取 cached 是把讀取過的資料儲存起來,重新讀取時若命中 找到需要的資料 就不要去讀硬碟了,若沒有命中就讀硬碟。其中的資料會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。緩衝 buffers 是根據磁碟的讀寫設計的,把分散的寫操作集中進行...

Cache和Buffer的區別

1.cache 快取區,是快取記憶體,是位於cpu和主記憶體之間的容量較小但速度很快的儲存器,因為cpu的速度遠遠高於主記憶體的速度,cpu從記憶體中讀取資料需等待很長的時間,而 cache儲存著cpu剛用過的資料或迴圈使用的部分資料,這時從cache中讀取資料會更快,減少了cpu等待的時間,提高了...