- 论坛徽章:
- 0
|
原帖由 xiegang112 于 2009-7-29 14:01 发表 ![]()
4楼解释的很好。不过有个地方好像有点问题。page在从budy系统中分配出来的时候,count为1. 但是再加入page cache后,count为3.因为加入page cache时,也会把page一并加入zone的lru(add_to_page_cache_lru)。这 ...
查了一下add_to_page_cache_lru的caller, add_to_page_cache_lru里虽然page count加了2,但是有一次是为了caller所加的。也就是说一旦caller把page加进了page cache, 它就可以使用这个page, 使用完后,caller必须调用page_cache_release(page) to decrease page count. 所以把一个page加进page cache时,page count只增加了1次。
是不是可以这样理解,在lru list里的page肯定是在page cache中的,所以只要page count +1就可以了。
所以3是指,在zone, page cache (and lru中),以及有buffer_head attached.
kernel在回收page的时候,write out page if page is dirty, and then kernelwill free buffer_head if exists (see pageout())。 |
|