我知道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
任何人都可以发布链接到内核中做出此决定的地方吗?
答案 0 :(得分: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
祝你好运!请记住,您可能不会像您提供的示例代码那样找到一段干净的代码。