緩衝區 快取

2021-10-12 02:56:00 字數 1752 閱讀 8047

快取(cache)

所以兩個的區別

緩衝區是記憶體空間的一部分 用來緩衝輸入和輸出的資料

緩衝區具有一部分大小

緩衝區根據對應的是輸入裝置還是輸出裝置分為輸入緩衝區,輸出緩衝區

buffer的核心作用是用來緩衝,緩和衝擊。比如你每秒要寫100次硬碟,對系統衝擊很大,浪費了大量時間在忙著處理開始寫和結束寫這兩件事嘛。用個buffer暫存起來,變成每10秒寫一次硬碟,對系統的衝擊就很小,寫入效率高了,日子過得爽了。極大緩和了衝擊。

解除高速裝置和低速裝置的制約關係:

因為高速裝置和低速裝置的不匹配高速裝置在完成後需要等待低速裝置

例如打字機和電腦的關係 印表機列印的速度低於電腦傳輸資料的速度 我們再印表機內部設定緩衝區 將需要列印的文件傳輸到印表機的緩衝區 這樣cpu在傳輸完資料只會可以完成別的工作 否則印表機將一直占用cpu直到列印工作完成

減少資料的讀寫次數

簡單來說:緩衝區就是一塊記憶體區,作用於輸入輸出裝置和cpu之間,用來儲存資料。它使得低速的輸入輸出裝置和高速的cpu能夠協調工作,避免低速的輸入輸出裝置占用cpu,解放出cpu,使其能夠高效率工作。

減少io操作次數,提高效率因為opengl每次繪製都可能需要大量的資料 ,並且這些資料可能大部分都不會發生改變,如果每次都要從客戶端傳送到服務端不僅占用大量資源還消耗時間,所以直接將資料傳輸到服務端的緩衝區

1、全緩衝

填滿標準i/o快取後才進行實際i/o操作。全緩衝的典型代表是對磁碟檔案的讀寫。

2、行緩衝

在這種情況下,當在輸入和輸出中遇到換行符時,執行真正的i/o操作。這時,我們輸入的字元先存放在緩衝區,等按下回車鍵換行時才進行實際的i/o操作。典型代表是鍵盤輸入資料。我們想將資料寫入到磁碟中,不是立馬將資料寫到磁碟中,而是先輸入緩衝區中,當緩衝區滿了以後,再將資料寫入到磁碟中,這樣就可以減少磁碟的讀寫次數,不然磁碟很容易壞掉。

下列情況會引發緩衝區的重新整理:

緩衝區滿時;

關閉檔案。

緩衝區溢位的時候,多餘出來的資料會直接將之前的資料覆蓋,這樣緩衝區裡的資料就發生了改變 所以緩衝區滿的時候並不是全部資料都被重新整理 而是只是多於出來的資料覆蓋了之前的資料 叫做重新整理

又叫高速緩衝儲存器,讀寫速度基本和cpu一樣

cpu的cache越大,級數越多,cpu的訪問速度越快

磁碟和瀏覽器也有cache

因為記憶體的資料訪問速度無法跟上cpu的速度,所以在cpu與記憶體間設定了cache為cpu的資料快取區,當計算機執行程式時,資料與位址管理部件會**可能要用到的資料和指令,並將這些資料和指令預先從記憶體中讀出送到cache。一旦需要時,先檢查cache,若有就從cache中讀取,若無再訪問記憶體,現在的cpu還有一級cache,二級cache。簡單來說,cache就是用來解決cpu與記憶體之間速度不匹配的問題,避免記憶體與輔助記憶體頻繁訪問資料,這樣就提高了系統的執行效率。

cache的核心作用是加快取用的速度。比如你乙個很複雜的計算做完了,下次還要用結果,就把結果放手邊乙個好拿的地方存著,下次不用再算了。加快了資料取用的速度。

緩衝區是為了防止記憶體的多次訪問 從100次降到10次 增加效率 就比如說那些頂點資訊 就是先存在緩衝區 再一起發過去

快取是加快cpu取用資料的速度 例如做完乙個複雜的運算下次還要用就放倒快取中 方便下次使用 也可以預先存入一些需要使用的指令什麼的 方便取用

緩衝區和快取

這篇文章寫的很好

緩衝區(1) 為什麼會有緩衝區(快取)?

緩衝區是為了讓低速的輸入輸出裝置和高速的使用者程式能夠協調工作,並降低輸入輸出裝置的讀寫次數。使用者程式的執行速度可以看做 cpu 的執行速度,如果沒有各種硬體的阻礙,理論上它們是同步的。例如,我們都知道硬碟的速度要遠低於 cpu,它們之間有好幾個數量級的差距,當向硬碟寫入資料時,程式需要等待,不能...

mysql 快取區 MYSQL緩衝區和快取設定

mysql緩衝區和快取設定 mysql 支援超過 100 個的可調節設定 但是幸運的是,掌握少數幾個就可以滿足大部分需要。查詢這些設定的正確值可以通過 show status 命令檢視狀態變數,從中可以確定 mysqld 的運作情況是否符合我們的預期。給緩衝區和快取分配的記憶體不能超過系統中的現有記...

輸入緩衝區與輸出緩衝區

本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...