この質問がLinuxディストリビューションによって異なる場合は、「一般的な方法」(例:Linuxディストリビューションで最も一般的な実装)に答えてください。
プロセスのページテーブルでは、探しているページがメインメモリにマッピングされる物理的な方向を見つけることができます。または、探しているページがメインメモリになく、ディスクからキャプチャする必要がある場合は、ディスクへのポインタを見つけることができます。ディスク。しかし、私の質問は:私たちが探しているページがスワップに置かれたら、プロセスのページテーブルで何を見つけるのでしょうか?ディスクへのポインタ(ただしスワップ領域のページへのポインタ)を見つけるか、物理的な方向を見つけることができますが、この物理的な方向は「仮想方向」なので、mainMemory + swapArea統合メモリを作成します(たとえば、16GBを使用している場合)。メインメモリ)メモリ+ 2 GBスワップメモリページテーブルでは、探しているページがX方向(Xは17GBに相当する方向)にあることがわかります。つまり、スワップメモリで見つけることができるという意味です(なぜなら > 16GB 方向))?覚えておいてください。 16GBのメインメモリ+2GBのスワップメモリを想定しています。
答え1
スワップアウトされるページのページテーブルエントリには、その事実を表すビット(少なくとも1つ、詳細はアーキテクチャによって異なります)と、スワップされたページを記述する情報への2つの部分で構成されるポインタが含まれています。各スイッチングデバイスまたはファイルに対応swap_info
構造、それぞれには、ページテーブルエントリをスワップデバイスまたはファイルの場所に関連付けるマッピングがあります。
バラよりカーネルはスワップパーティション\ファイルのスワップメモリページをどのように処理しますか?そして「交換管理」の章メルゴーマンLinux仮想メモリマネージャについてもっと学ぶ。