wyyzxml 发表于 2014-04-26 10:16

有什么方法判断page是file page?

类似的匿名页可以用
PageAnon(page)

l4rmbr 发表于 2014-04-26 14:47

回复 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:01

本帖最后由 linuxfellow 于 2014-04-27 20:12 编辑

回复 1# wyyzxml
page->flags & PG_swapbacked
PageAnon(page)也可以



   

wyyzxml 发表于 2014-04-28 09:38

回复 2# l4rmbr

谢谢了。我看下哈。


   

wyyzxml 发表于 2014-04-28 09:39

回复 3# linuxfellow

也就是说,file page,都是置上 PG_swapbacked flag的?


   

帅绝人寰 发表于 2014-04-28 18:19

我理解的是,楼上的说法都不对。 我也不会。

embeddedlwp 发表于 2014-04-28 19:53

2楼正解

帅绝人寰 发表于 2014-04-29 10:29

embeddedlwp 发表于 2014-04-28 19:53 static/image/common/back.gif
2楼正解

看懂了!

顺便请教下, PG_swapcache和PG_swapbacked有什么区别? 各自代表什么?

l4rmbr 发表于 2014-04-29 11:26

帅绝人寰 发表于 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
修改为页表项,因为可能其他进程还未把该页换入,所以该页可能还要在交换缓存中呆一会。等到所以进程都换入该页时,该页才会从交换缓存中删除。

大致如此。细节可能要修改。我研究下代码再来更新。

帅绝人寰 发表于 2014-04-29 12:31

l4rmbr 发表于 2014-04-29 11:26 static/image/common/back.gif
PG_swapbacked表示一个页是以交换区/交换文件作为后备空间的,类比于page cache页,它是以存储介质中的 ...

哥,太感谢了!!!!   终于直到是肿么回事了!!!
页: [1]
查看完整版本: 有什么方法判断page是file page?