3

ページ テーブルは、仮想メモリ ページ アドレスから物理メモリ ページ アドレスを取得するために使用されることがわかっています。ただし、物理メモリ ページが異なるプロセスによって共有されているかどうかをカーネルが認識する方法 (フォークされたプロセスとその親プロセスの場合など)。そのようなリストはどこに保管されていますか?

4

1 に答える 1

4

カーネルは、すべての仮想マッピングを作成するエンティティです。そのため、何が共有され、何が共有されていないかを正確に認識します。ユーザー空間プロセスは、カーネルの助けがなければ共有マッピングを作成できません。

カーネルは、プロセスが fork を要求したときにマッピングを複製する役割も果たします。必要な情報がすべて含まれています。

ページが持つマッピングの数は、struct pageそのページを表す構造体のフィールドに保持されます。新しいマッピングが作成されるたびに増加し、マッピングが消えると減少します。

これについてさらに詳しく知りたい場合は、Linux-MM にアクセスしてください。特に、Mel Gorman の『Understanding the Linux Virtual Memory Manager』という本 (非常に技術的) を読んでください。この本は、ドキュメント セクションでリンクされています (無料で入手できる PDF)。

于 2012-04-21T12:46:08.157 に答える