
存在するマンページtop
、
「カーネルによって共有(SHR)として扱われる」場合、#3の「プログラムイメージと共有ライブラリ」が「プロセスプライベートと見なされる」のはなぜですか?
「プログラムイメージと共有ライブラリ」 「プロセスプライベート」とはどのような意味で「プライベート」と見なされますか? 「プログラムイメージと共有ライブラリ」は読み取り専用ですか?
「プログラムイメージと共有ライブラリ」は、「カーネルで共有(SHR)と見なされる」という意味で「共有」されますか?
「スワップファイルには#1から#3までのみが含まれています。変更すると、象限#4のメモリは独自のプライベートスワップファイルとして機能します。」 「プログラムイメージと共有ライブラリ」も独自のプライベートスワップファイルとして機能しますか?
ありがとうございます。
これらのプロセスごとに、各メモリページは下の表の象限に制限されています。物理メモリと仮想
メモリの両方に、これら4種類のメモリのいずれかを含めることができます。スワップファイルには#1から#3までが含まれています。変更すると、象限#4のメモリは独自のプライベートスワップファイルとして機能します。Private | Shared 1 | 2 Anonymous . stack | . malloc() | . brk()/sbrk() | . POSIX shm* . mmap(PRIVATE, ANON) | . mmap(SHARED, ANON) -----------------------+---------------------- . mmap(PRIVATE, fd) | . mmap(SHARED, fd) File-backed . pgms/shared libs | 3 | 4
以下は、拡張可能な列として表示されるプロセスレベルのメモリ値を解釈するのに役立ちます。「3a.フィールドの説明」のトピックで説明します。
SHR - subset of RES (excludes 1, includes all 2 & 4, some 3)
メモ:プログラムイメージと共有ライブラリはプロセス専用と見なされますが、カーネルではまだ共有(SHR)と見なされます。
答え1
図は、実行中のプロセスの観点から個人と共有を区別します。左側のページはカーネルで共有できますが(つまりメモリーまたはバックアップ・リポジトリーの同じ物理的な場所にマップされます) 右側に表示されるページは、潜在的に複数のプロセスによって共有され、厳格なプライバシーの期待はありません。
したがって、プログラムイメージと共有ライブラリは、メモリ内の変更が変更を実行するプロセスにのみ表示されるという点でプライベートです。実行可能ファイルとライブラリからマップされたほとんどのページは書き込みできませんが、必ずしもそうではありません。
カーネルの観点から見ると、共有された物理領域にマッピングされるため、同時に共有されます。 (必要に応じて共有を解除するために書き込み中のコピーを使用してください。)共有はカーネルレベルの詳細であり、プロセスには見えません。
Swapはダーティページのバックアップストアです。つまりロード後に変更されたメモリです。ダーティ以外のページは交換する必要はありません。ソース(通常はメモリマップされたファイル)はバックアップストアであり、メモリ不足のために物理メモリから削除する必要がある場合は、簡単に削除できます。物理メモリから共有されていないダーティページを削除するには、一種のバックアップストレージが必要です。ほとんどの場合、これはスワップですが、ファイルサポート共有メモリにはそれをバックアップするファイルという別の自然なバックアップストアがあります。物理メモリから削除する必要があるファイルのバックアップ共有メモリページは、スワップ操作なしでバックアップファイルに書き込まれ削除されます。