私が理解しているように、プログラムテキストや共有ライブラリなどを含むメモリのページは、実際にはスワップではなく関連ファイルにマップされます(例:/usr/bin/lsセクションにマッピング)。したがって、カーネルがメモリを解放するときにこれらのページをスワップにコピーする必要はありません。これは、ページの不在が発生したときに関連ファイルからメモリにコピーすることができるためです。
そのため、匿名ページ(一部の物理ファイルに関連付けられていないメモリ内のページ)にのみスワップスペースを使用します。これを考慮すると、ほとんどのメモリページは必要に応じて関連する物理ファイルからメモリに直接コピーされるため、スワップ領域にコピーする必要はないと仮定します。だから私の質問はこんな感じです。ほとんどのメモリページがスワップ領域にまったくマッピングされていない場合、休止状態にシステムメモリ全体とほぼ同じスワップ領域が必要なのはなぜですか?
答え1
しかし、実際にはそうではありません。休止状態画像のデフォルトターゲット(参照:そのimage_size
設定) は、取り付けられているメモリ量の約 2/5 です。