ネットワーク化されたページング (リモート ノードから障害ページを要求する) を作成することを考えていたときに、次の質問がありました。
まず、次の手順を考えてみましょう。
1) ユーザー空間プログラムがメモリ X にアクセスしようとします。
2) MMU はページ テーブルを調べて、X の物理アドレスを見つけます。
3) ページ テーブルを歩いていると、ページ テーブル エントリが無効であることがわかります。
4) CPU がトラップし、Linux トラップ ベクターによってキャッチされます。(ARMの場合ですが、x86も同じだと思いますよね?)
5) この時点で、リモート ノードから適切なデータを取得し、物理アドレスにコピーして、ページ テーブルにマップできます。
6) ここで問題が発生します: この時点の後、X でページ フォールトが発生したプログラムはデータを安全に読み取るでしょうか?それでは、MMU または CPU がページ フォールトのページ テーブル エントリを何らかの形で記憶し、そのエントリに戻ってデータを再開することを意味しますか?ページテーブルのウォーキング?
手順のいずれかが正しくない場合は、教えてください。