MMU は、ページング モデルの実装のハードウェア部分になるように (カーネルによって設定されたロジックおよび/またはオプション ビットの設計によって) 構成されます。
MMU は通常、論理アドレスをマッピングされた物理アドレスに変換する必要があります。要求された論理アドレスに対応する物理アドレスがないためにそれができない場合、カーネルでハンドラー コードを実行する障害 (多くの場合、一種の割り込みとして) を生成します。
障害が、理論的に存在するもの (たとえば、マップされたファイルの一部) を要求しようとしたことであったが、現在は物理 RAM に存在しない場合、オペレーティング システムの仮想メモリ実装は、物理 RAM を割り当てて適切なディスク ブロックをコピーすることで問題を解決できます。それに。
しかし、それが存在しないものに対する要求である場合は、それを満たすことができず、プログラム フォールトとして処理する必要があります。
書き込みが許可されていない場所への書き込み要求も同様に処理されます。
私の頭の上では、実行可能でない情報を実行しようとする試みが MMU で検出されるのか、それとも CPU 自体で検出されるのかはわかりません。命令キャッシュが存在する場合、それにどのように適合するかによって、事態が複雑になる可能性があります。ただし、最終的な結果は同様です。つまり、カーネルが通常はプログラムの障害として処理する、不正な実行試行が発生したというカーネルの障害状態です。
要約すると、このモデルは、より単純なハードウェア レイヤーが、何か異常が発生したことをカーネルに通知し、ハードウェアが現在の構成を使用して単独で処理できないというものです。次に、オペレーティング システムは、試行されたことが発生する可能性があるかどうか、および発生する必要があるかどうかを判断します。そうである場合は、これを可能にするためにハードウェア構成を更新します。または、試行されたことが許可されるべきでない場合は、プログラムの障害が宣言されます。また、追加の可能性もあります。たとえば、仮想化レイヤーは、ハードウェアからの分離を維持しながら、要求された操作を文字通り実行するのではなく、エミュレートすることを決定できます。