Linuxはどのように物理アドレスを(複数の)仮想アドレスに変換しますか?

Linuxはどのように物理アドレスを(複数の)仮想アドレスに変換しますか?

私が理解したのは、Linuxが物理ページフレームをRAMの内外に置き換えるときに、その物理ページにマップされているすべての仮想ページに対して有効なビットを設定する必要があります。仮想ページを物理ページフレームにマッピングすることは教科書でよく説明されているようですが、カーネルは物理ページフレーム内のすべての仮想ページをどのように見つけますか?実際にLinuxのソースコードで実装できれば幸いです。

ベストアンサー1

メモリ内の各物理ページは、次のコマンドを使用してカーネルで追跡されます。構造ページ。これにより、カーネルは、特に匿名およびファイルベースのマッピングに各ページがどのように使用されるかを説明できます。マッピングフィールドは以下を指します。address_spaceマッピングされたオブジェクトの構造を説明するために使用されます。

特定の物理ページを使用して仮想マッピングを見つける必要があるコードの場合、カーネルは次のセットを提供します。逆方向マッピング機能。これにより、匿名マッピングをナビゲートし、ファイルベースのマッピングの逆マッピングを可能にします。例えば、try_to_unmapマッピングを解除できるように、指定された物理ページの使用を見つけるためにマップをナビゲートします。shrink_page_list 着信電話try_to_unmapプロセスにマップされたページのマッピングを解除する必要があると判断した場合

おすすめ記事