有什么方法判断page是file page?
类似的匿名页可以用PageAnon(page)
回复 1# wyyzxml include/linux/mm_inline.h:
static inline int page_is_file_cache(struct page *page)
{
return !PageSwapBacked(page);
}只有在这个日期后的版本后才有:2008-10-20,见:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b2e185384f534781fd22f5ce170b2ad26f97df70 本帖最后由 linuxfellow 于 2014-04-27 20:12 编辑
回复 1# wyyzxml
page->flags & PG_swapbacked
PageAnon(page)也可以
回复 2# l4rmbr
谢谢了。我看下哈。
回复 3# linuxfellow
也就是说,file page,都是置上 PG_swapbacked flag的?
我理解的是,楼上的说法都不对。 我也不会。 2楼正解 embeddedlwp 发表于 2014-04-28 19:53 static/image/common/back.gif
2楼正解
看懂了!
顺便请教下, PG_swapcache和PG_swapbacked有什么区别? 各自代表什么? 帅绝人寰 发表于 2014-04-29 10:29 static/image/common/back.gif
看懂了!
顺便请教下, PG_swapcache和PG_swapbacked有什么区别? 各自代表什么?
PG_swapbacked表示一个页是以交换区/交换文件作为后备空间的,类比于page cache页,它是以存储介质中的文件作为后备空间的。
PG_swapcache表示一个页在交换缓存中。
一个页要被交换时,并不是马上写出,而是先置于交换缓存中,此时PG_swapcache置位,并且,该进程的该页表项不会马上修改为swap entry项,
因为可能还有其他进程映射到该页,所以得等所有进程都unmap到该页后,才会真正把该页交换到交换区/交换文件,并且把 页表项改为swap entry,
表示该页现在在交换区/交换文件。
另一方面,当进程要访问该页时,发现swap entry, 知道其在交换区/交换文件中,于是会把它调入到交换缓存中,同样,该进程此时不会马上把swap entry
修改为页表项,因为可能其他进程还未把该页换入,所以该页可能还要在交换缓存中呆一会。等到所以进程都换入该页时,该页才会从交换缓存中删除。
大致如此。细节可能要修改。我研究下代码再来更新。
l4rmbr 发表于 2014-04-29 11:26 static/image/common/back.gif
PG_swapbacked表示一个页是以交换区/交换文件作为后备空间的,类比于page cache页,它是以存储介质中的 ...
哥,太感谢了!!!! 终于直到是肿么回事了!!!
页:
[1]