硬碟快取區

2021-09-30 05:17:53 字數 1147 閱讀 4215

磁碟上必須有快取,用來接收指令和資料,還被用來進行預讀。磁碟快取時刻處於開啟狀態。有很多文件資料上提到某些情況下可以「禁用」磁碟快取,這是容易造成誤解的說法。快取在磁碟上表現為一塊電路板上的ram晶元,其容量大小是固定的,目前有2mb,8mb, 16mb, 32mb等容量規格。所謂「禁用」磁碟快取值得其實是write through模式。即磁碟收到寫指令和資料後,必須先將其寫入碟片,然後才向控制器返回成功訊號,這樣就相當於「禁用」了快取。但是實際上,指令和資料首先到達的一定是快取。

scsi指令中有兩個引數可以控制對磁碟快取的使用。

.dpo(disable page out): 這個引數的作用是禁止快取中的資料頁(快取中的資料以頁為單位存在)被換出。不管讀還是寫,被置了這個引數位的資料在快取空間不夠的時候不能覆蓋快取中的其他資料,也就是不能將其他資料換出。但如果命中,即讀寫的資料已經在快取中,則從或往快取中讀寫。

.fua(force unit  access):這個引數的作用是強制碟片訪問。對於寫操作,磁碟必須將收到的資料寫入碟片後才返回成功訊號,也就是進行write through。對於度操作,磁碟收到指令後,直接去碟片上讀取資料,而不搜尋快取。

所以,當某個scsi指令的dpo和fua兩個引數的值都被置為1時,便相當於完全不使用快取的提速功能了,但是指令和資料依然會存放到快取中,只一點需要分清和理解。

硬碟的緩衝區是硬碟與外部匯流排交換資料的場所。硬碟的讀資料的過程是將磁訊號轉化為電訊號後,通過緩衝區一次次地填充與清空,再填充,再清空,一步步按照pci匯流排的週期送出,可見,緩衝區的作用是相當重要的。它的作用也是提高效能,但是它與快取的不同之處在於:一、它是容量固定的硬體,而不像快取是可以由作業系統在記憶體中動態分配的。二、它對效能的影響大大超過磁碟快取對效能的影響,因為如果沒有緩 沖區,就會要求每傳乙個字(通常是4位元組)就需要讀一次磁碟或寫一次磁碟。

磁碟快取分為讀快取和寫快取。

讀快取是指,作業系統為已讀取的檔案資料,在記憶體較空閒的情況下留在記憶體空間中(這個記憶體空間被稱之為「記憶體池」),當下次軟體或使用者再次讀取同一檔案時就不必重新從磁碟上讀取,從而提高速度。

寫快取實際上就是將要寫入磁碟的資料先儲存於系統為寫快取分配的記憶體空間中,當儲存到記憶體池中的資料達到乙個程度時,便將資料儲存到硬碟中。這樣可以減少實際的磁碟操作,有效的保護磁碟免於重複的讀寫操作而導致的損壞,也能減少寫入所需的時間。(這裡的磁碟快取不是最上面的磁碟快取)

方形快取區

如何製作點的方形快取區 之前收到客戶的需求,需要製作點圖層的方形快取區。但是在 arcgis 中並沒有提供方形快取區,只能通過 buffer 工具製作圓形快取區。那麼如何生成方形快取區呢,莫非需要 engine 寫程式根據點座標尋找方形快取區的四角座標,然後再生成正方形要素嗎?太麻煩了吧。接下來看看...

關於快取區

c語言裡面的stdio.h庫函式裡涉及到了快取區,具體案例是這樣的 includestructuser int main int argc,const char argv 我輸入了 zhangsan 12 w 意思為 名張三 12歲 是個女的 woman 但是列印的是 zhangsan pass a...

Git 工作區和快取區

工作區和暫存區 1.工作區 working directory 簡單來說,電腦中能看到的目錄,就是乙個工作區。2.版本庫 repository 工作區中有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。git的版本庫里存在很多東西,其中最為重要的是stage 或者叫index 的暫存區。還...