1

プロセスとそのmm_structにアクセスできるとしましょう。マッピングの1つを変更するか、マッピングを削除して一時的なマッピングを作成して、ページよりも少ない量を割り当ててメモリに書き込むことができる方法はありますかそれ?

たとえば、ADD 命令で書き込みフォルトを処理します。障害のアドレスとサイズを比較的簡単に取得できます。ローカルに 8 バイト (最大の単一命令サイズ) を割り当て、マッピングをいじって、フォールトした仮想アドレスがそれらの 8 バイトの最初のバイトを指すようにします。次に、命令を 1 ステップ実行して、別のページ用のデータを取得し、元のページをマッピングに復元します。プロセスの仮想メモリ領域でページ以外のものを使用できるかどうかについては、ちょっと興味があります。

4

1 に答える 1

2

コンピューターの基盤となるアーキテクチャによって、仮想メモリでできることとできないことが定義されます。アーキテクチャを指定していませんが、ページよりも小さな単位を管理することはできないと確信しています。

しかし、より大きな問題に対処するには、なぜメモリ サイズが重要なのでしょうか? この割り当ては、スレッドに障害がある場合にのみ、スレッドごとに 1 回必要であり、単一のユーザー空間命令に割り当てられます。新しいきれいなページを使用して一時的にプロセスにマップし、書き込まれた値を取得してください。おそらく書きやすく、セキュリティも優れています。信頼されていない (そして明らかに欠陥のある) アプリケーションにカーネル データが公開されるのを回避できます。

于 2011-08-08T02:04:23.623 に答える