歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網

緩存策略

日期:2017/3/2 17:15:15   编辑:Linux基礎知識

存儲器的層次結構

操作系統中的存儲器構成了一個金字塔,越往上的存儲器速度越快,但是價格也越貴,所以也就越小。為了解決高速的處理器和低速的存儲器之間的矛盾,上一層的存儲器作為下一層存儲器的緩存。

比如要需要操作內存的某個區域時,處理器不會直接去內存讀取,而是會去高速緩存中查看該區域是不是被調進來了,如果沒有,則把該區域調入高速緩沖區中。那麼接下來處理器直接在高速緩存中進行讀寫操作。

同樣的,對於讀取磁盤數據,處理器把內存中的某塊區域作為磁盤的緩存。那麼便可以直接在內存中進行讀寫。

處理器在緩存中對數據進行讀寫操作,但是還是需要把該數據寫會到原來的區域中去,這接涉及到了一定的策略。

寫緩存策略

(1)第一種策略稱為不緩存(nowrite),也就是說高速緩存不去緩存任何寫操作。當對緩存中的數據進行寫時,將直接跳過緩存,直接寫到磁盤,同時標記緩存的數據失效。如果後續需要進行讀操作,需要重新從磁盤讀取數據。

(2)第二種策略稱為寫透緩存(write-through cache),即寫操作將自動更新緩存,同時也更新磁盤文件。這種操作對保持緩存一致性很有好處,所以不需要將緩存標記為失效。

(3)第三種策略,也是linux所采用的,稱為回寫(write-back)。在這種策略下,程序執行寫操作直接寫到緩存中,但是不會直接更新磁盤,而是將高速緩存中被寫入的頁面標記成“髒”,並加入髒頁鏈表中。然後由一個進程(回寫進程)周期性將髒頁鏈表的頁寫會到磁盤,從而讓磁盤中的數據和緩存中的數據一致,最後清理緩存的“髒”頁標志。“髒”的意思不是說數據不干淨,而是說數據沒有同步到磁盤。

Copyright © Linux教程網 All Rights Reserved