- 論壇徽章:
- 0
|
原帖由 xiegang112 于 2009-7-29 14:01 發(fā)表 ![]()
4樓解釋的很好。不過(guò)有個(gè)地方好像有點(diǎn)問(wèn)題。page在從budy系統(tǒng)中分配出來(lái)的時(shí)候,count為1. 但是再加入page cache后,count為3.因?yàn)榧尤雙age cache時(shí),也會(huì)把page一并加入zone的lru(add_to_page_cache_lru)。這 ...
查了一下add_to_page_cache_lru的caller, add_to_page_cache_lru里雖然page count加了2,但是有一次是為了caller所加的。也就是說(shuō)一旦caller把page加進(jìn)了page cache, 它就可以使用這個(gè)page, 使用完后,caller必須調(diào)用page_cache_release(page) to decrease page count. 所以把一個(gè)page加進(jìn)page cache時(shí),page count只增加了1次。
是不是可以這樣理解,在lru list里的page肯定是在page cache中的,所以只要page count +1就可以了。
所以3是指,在zone, page cache (and lru中),以及有buffer_head attached.
kernel在回收page的時(shí)候,write out page if page is dirty, and then kernelwill free buffer_head if exists (see pageout())。 |
|