首页 文章

用于处理Linux内核中TLB未命中的调用图

提问于
浏览
4

我试图了解linux内核如何处理TLB未命中 . 具体来说,我知道页表行走发生在 mm/memory.c mm/memory.c 中,但是当TLB未命中时,如何调用follow_page . 如何将follow_page的返回值( struct page )传递回硬件?有人可以说明TLB未命中处理的调用图,从硬件引发TLB Miss异常到调用 follow_page 时是什么时候?

我在内核代码http://lxr.linux.no/linux+v3.4.4/+search=follow_page中搜索了 follow_page ,但结果似乎没什么帮助 . 为了清楚起见,我们可以说硬件是x86_64 .

2 回答

  • 0

    我发现对于大多数x86架构,当TLB未命中时,硬件会执行页面遍历 . 在TLB未命中期间,不会调用 mm/memory.c 中的软件页面遍历代码 follow_page . 因此,根据我的理解,在Linux内核中没有用于处理TLB未命中的调用图 .

  • 4

    正如您所注意到的那样,自80386以来,英特尔处理器的MMU具有用于填充转换后备缓冲区的硬件分辨率 . 这就解释了为什么这种架构的页面表具有如此严格的结构 . 在这种架构中,有许多地方需要沿着页面表格走(如 follow_page ),尤其是在 handle_mm_fault 中,尽管通常可以期待更具体的情况并且放弃大多数测试 .

相关问题