0

MMU は、そのプロセスに対応するページ テーブルを利用して、実行中のプロセスの仮想アドレスを物理アドレスに変換するために使用されます。仮想アドレス空間が物理アドレス空間と等しい場合のシナリオを考えてみましょう。その場合、同じ仮想アドレス空間が異なる物理アドレスにマップされる状況が発生しないため、本当に MMU が必要ですか?

まあ言ってみれば

Virtual Address              
| 20 bits (V) | 12 bits(PO) |

Physical Address 
| 20 bits(PPN) | 12 bits(PO) |

where V = Virtual Page
      PO = Page offset
      PPN = Physical Page Number

すべてのプロセスにページテーブルが本当に必要ですか? 複数のプロセスがある場合、どのような問題が発生する可能性がありますか?

簡単にするために、キャッシュメモリは無視してください。

4

1 に答える 1

2

MMU は、仮想アドレス空間を異なるサイズの物理アドレス空間にマッピングするだけではありません。MMU の最も重要なポイントはメモリ保護です。これは、両方のアドレス空間が同じサイズであっても関係があります。MMU は
、物理メモリのページにマップされた仮想メモリのページ (たとえば、4 kB のサイズ) を処理します。

ほとんどのシステムでは、単一の仮想アドレス空間だけでなく、プロセスごとに 1 つ存在します。MMU の制御下では、すべてのプロセスは、(MMU をプログラムする) オペレーティング システムによって許可されたページにのみアクセスできます。異なるプロセスのほとんどのページは互いに分離されているため、たとえば、あるプロセスがそのメモリに書き込むことによって別のプロセスをクラッシュさせることはありません。

OS 制御下での仮想ページから物理ページへのマッピングにより、アドレス空間のランダム化が可能になり、仮想ページ境界を越えて読み取ると、特定のデータではなくランダム データが読み取られるようになります (バッファ オーバーフロー攻撃などに対する保護)。

また、プロセスが 1 つの場合でも、ページを読み書き可能、読み取り専用、実行専用、アクセス禁止として扱うことができます。これにより、プロセスが許可された方法で独自のページにアクセスすることを制限できます。たとえば、保存されている「データ」を実行できなくすることができます。
詳細については、こちらを参照してください。

于 2014-02-15T19:59:54.920 に答える