0

ネットワーク化されたページング (リモート ノードから障害ページを要求する) を作成することを考えていたときに、次の質問がありました。

まず、次の手順を考えてみましょう。

1) ユーザー空間プログラムがメモリ X にアクセスしようとします。

2) MMU はページ テーブルを調べて、X の物理アドレスを見つけます。

3) ページ テーブルを歩いていると、ページ テーブル エントリが無効であることがわかります。

4) CPU がトラップし、Linux トラップ ベクターによってキャッチされます。(ARMの場合ですが、x86も同じだと思いますよね?)

5) この時点で、リモート ノードから適切なデータを取得し、物理アドレスにコピーして、ページ テーブルにマップできます。

6) ここで問題が発生します: この時点の後、X でページ フォールトが発生したプログラムはデータを安全に読み取るでしょうか?それでは、MMU または CPU がページ フォールトのページ テーブル エントリを何らかの形で記憶し、そのエントリに戻ってデータを再開することを意味しますか?ページテーブルのウォーキング?

手順のいずれかが正しくない場合は、教えてください。

4

2 に答える 2