回覆列表
  • 1 # 19在此基礎上

    buffer和cache是兩個經常被混為一談的概念。從直觀上說,兩者都具備改善系統 I/O 吞吐量的能力,但是這兩個概念是有區別的,其提高系統I/O吞吐量的原因也不盡相同。cache改善系統性能的主要原因是資料訪問的區域性性,即,通常應用程式在一段時間內操作的資料集的某個有限的部分,通常是很小的一部分。硬體實現的cache通常會只使用一小塊(與主存相比)訪問速度很快,但相對比較昂貴的儲存部件,並放置於距離CPU較近的位置。buffer改善系統性能的主要原因是減少不必要的狀態切換和裝置I/O。由於製造工藝等個方面的原因,系統中不同部件的速度往往是不一樣的,一次進行批次的操作(例如,預先讀取,或者將寫資料湊成一個整數之後再寫),往往要比到需要時等待這些操作完成要節省時間,並且有效地降低狀態切換導致的開銷。還有一個比較顯著的區別是,cache通常是硬體或OS提供,使用者程式不需要(多數情況下也沒有辦法)為其分配儲存的機制,通常它在使用者,如使用者程式看來是透明的,它屬於提供cache的一方而不是其使用者;而buffer往往是由使用者程式知道並且與OS共享(換言之,使用者程式需要分配一塊記憶體,並告訴OS這塊記憶體將要用於某種操作),或由OS分配,並在主機和外設之間共享(例如網絡卡的DMAbuffer),在使用者看來它通常不是透明的,這些記憶體往往屬於控制記憶體的程式,如使用者程式,或OS,而不是向其傳遞資料的OS,或硬體。不過,這個區別主要是傳統意義上的cache。最近幾年引入的一些新概念,特別是Internetcache並不能用這種方法來區分。我認為最關鍵的區別其實在於,buffer主要作用是在於減少實際的I/O操作次數,即,將多次操作儘量合併成一次的成批操作,通常其中的資料在操作完成之後,buffer不會被繼續使用;而cache的主要作用在於更好地利用區域性性原理,減少不必要的I/O,避免代價

  • 中秋節和大豐收的關聯?
  • 絕大多數人都認為,裝配式混凝土預製件建造的樓房不抗震,高層建築更不抗震!你怎麼看?