MMU
プロセッサ内にあり、メモリアクセスのたびに仮想アドレスを物理アドレスへ変換するユニット。
MMUがなければ、すべてのプログラムが実メモリをそのまま見て、どこにでも書き込めてしまう。MMUがあれば、プロセスごとに独自のアドレス空間が与えられ、二つのプログラムの同じ仮想アドレスが別々の物理メモリを指す。変換は読み書きのたびにハードウェアで行われ、メモリ上のページテーブルが地図、TLBが直近の参照のキャッシュとなる。
MMUは保護も担う。各ページには読み・書き・実行のフラグがあり、違反するとカーネルが捕捉するフォルトが発生する。これがセグメンテーションフォールトの正体だ。データページの実行を禁じるNXビットは、バッファオーバーフロー攻撃に対するMMUの貢献である。単純なマイコンにはMMUがまったくなく、そのためプロセス保護のないOSで動いている。