4

Linux カーネルが TLB ミスを処理する方法を理解しようとしています。具体的には、ページ テーブル ウォークが発生することはわかっていますが、TLB ミスが発生した場合follow_pagemm/memory.cfollow_page がどのように呼び出されるかを知っています。struct pagefollow_pageの戻り値 ( ) はどのようにハードウェアに戻されますか? ハードウェアによって TLB ミス例外が発生してから が呼び出されるまでの TLB ミス処理の呼び出しグラフを誰かが説明できますかfollow_page?

follow_pageカーネル コードhttp://lxr.linux.no/linux+v3.4.4/+search=follow_page内を検索しましたが、結果はあまり役に立たないようです。明確にするために、ハードウェアが x86_64 であるとしましょう。

4

2 に答える 2

4

ほとんどのx86アーキテクチャでは、TLBミスが発生すると、ハードウェアがページウォークを実行することがわかりました。ソフトウェアページウォークコードfollow_pageインmm/memory.cは、TLBミス中に呼び出されません。したがって、私の理解によれば、LinuxカーネルでTLBミスを処理するためのコールグラフはありません。

于 2012-10-04T18:28:53.650 に答える
0

お気づきのとおり、80386 以降の Intel プロセッサの MMU には、変換ルックアサイド バッファを満たすためのハードウェア解像度があります。これが、このアーキテクチャのページ テーブルが非常に厳格な構造になっている理由を説明しています。follow_pageこのアーキテクチャでは、( のように) ページ テーブルをたどる必要があるさまざまな場所がありますが、特に. handle_mm_faultただし、一般的には、より具体的なケースが予想され、ほとんどのテストが省略される可能性があります。

于 2013-03-21T16:30:08.600 に答える