3

我知道 Linux 内核有页面缓存来保存最近使用的页面和块。

我知道这有助于节省时间,因为 Linux 不需要从较低的内存中获取这些块。当缓存中缺少某个块时,Linux 会从较低级别的内存中请求它(通过使用诸如 之类的一些函数submit_bio)并获取该块对应的页面。

我想在 Linux 内核(3.10)中找到它检查页面缓存中是否存在块的位置,如果找不到该页面,它会从块 i/o 层带来块。

我在代码中搜索这样的内容:

if( block's page exists in the cache )
    return this page
else 
    bring the page of the searched block and return it

任何人都可以发布一个链接到内核中做出这个决定的地方吗?

4

1 回答 1

0

开始寻找的最佳位置是 mm.h:http ://lxr.linux.no/linux+v3.10.10/include/linux/mm.h

然后看一下mm目录,里面有page_io.c之类的文件:http: //lxr.linux.no/linux+v3.10.10/mm/page_io.c

请记住,任何特定于体系结构的东西都可能在您正在查看的系统的 arch 目录中定义。比如这里是x86页表管理代码: http: //lxr.linux.no/linux+v3.10.10/arch/x86/mm/pgtable.c

祝你好运!请记住,您可能不会找到与您提供的示例代码一样干净的代码部分。

于 2013-09-02T15:42:54.363 回答