頁緩存

頁緩存是一個相對獨立的概念,其根本目的是爲了加速對後端設備的IO效率,比如文件的讀寫。頁緩存顧名思義是以頁爲單位的,目前我能想到的在兩個地方頁緩存的作用比較明顯。

1、在文件的讀寫中。

在文件的讀寫中,進程對一個文件發起讀請求,如果沒有對應的物理內存頁,則內核處理程序首先在頁緩存中查找,如果找到直接返回。如果沒找到,那麼再分配空間,把內容從文件讀入內存,插入頁緩存,並返回,這裏讀操作雖然是一個頁面發生的未命中,但是很大程度上會讀取多個連續頁面到內存中,只不過返回調用指定頁面,因爲實際情況中,很少僅僅需要讀取一個頁面,這樣後續如果在需要訪問還是需要進行磁盤IO,磁盤尋道時間往往比讀取時間還要長,爲了提高IO效率,就有了上述的預讀機制。

2、在普通進程的匿名映射區操作中。

在普通進程的匿名映射中,比如進程申請的比較大的堆空間(大於128kb的都是利用MMAP映射的),這些空間的內容如果在一段時間內沒被釋放且在一段時間內沒被訪問,則有可能被系統內存管理器交換到外存以騰出更多的物理內存空間。下次在進程訪問該內容,根據頁表查找發現物理頁面不在內存,則需要調用缺頁異常處理程序。

異常處理程序判斷該頁時被換出到外存,那麼首先也是在頁緩存中找,如果找到就返回;否則,從交換分區或者交換文件中把對應的文件讀入內存。這裏所說的頁緩存和1中描述的頁緩存是一類緩存,但是並不是一個,1中的頁緩存是文件系統相關的,在磁盤上對應着具體的文件;在頁面回收的時候需要回寫到磁盤即同步一下;而2中的頁緩存其實是一種交換緩存,在頁面回收的時候只能是換出到交換分區或者交換文件,不存在同步的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章