linux [page cache&swap cache ]

page cache是一種策略,就是使用完的page並不是立即放到內核的 
free page list中,而是暫時緩存着已被再次使用。這樣系統中的 
緩衝的page就越來越多,系統中的free page就越來越少,怎麼辦? 
系統通過內核線程來完成緩存中頁面的回收工作,這些內核線程是 
定期被調用的,平時則處在睡眠的狀態,如果進程需要page而free 
page嚴重短缺的時候,進程可以喚醒這些內核線程來回收緩存的頁面, 
這樣,一方面緩存,一方面回收達到一種平衡,同時改善了系統的性能。 
 內核中在多處使用了page cache策略,最典型的有:頁面交換,和磁盤 
文件的讀取。不過實現的方法無非是讓不同狀態的page,處在不同的 
list中,而回收的內核線程從可以回收的隊列中回收page。

swap cache主要是存放那些無根(就是說沒有文件系統中的某個文件和其 
對應)的page,例如你用malloc分配出來的。 
它對應的file device就是swapfile。 
它和page cache的區別在於,當文件從file system上讀取出來的時候, 
它的內容就會同時讀入page cache中。但是當你用malloc分配內存的 
時候,並不馬上放到swap cache中,而是在進程中不再使用該內存的 
時候它才被讀入swap cache中。 
buffer cache和page cache在2.4 內核裏面幾乎麼啥大區別,我們完全 
可以通過對page cache的操作來實現把數據寫入到disk中,而不一定要 
通過buffer cache。如果要說區別的話,主要是page cache的大小是固定 
的,如果你是要從軟盤設備(它的block大小是512字節),就可以用一頁 
來保存好幾個block。這樣buffer cache可以同時擁有連續的好幾頁page cache 
中的page。

〔未必正確,進攻參考]

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