仮想メモリ
どのプロセスも、アドレス0から始まるメモリ全体を自分だけが使っているかのように見せる錯覚。
プログラムが使うアドレスは作り物だ。MMUがアクセスのたびに、プロセスごとの変換テーブルを使って物理アドレスに変換する。二つのプログラムがまったく同じアドレスを使っても、互いのデータは見えない。
この設計からは三つの利点が生まれる。分離:変換先がないので、他のプログラムのメモリには届かない。単純さ:コンパイラはプログラムが物理メモリのどこに置かれるかを知る必要がなく、コードを毎回同じアドレスに配置できる。オーバーコミット:アドレス空間をRAMの量よりはるかに大きくでき、残りはディスク上に置くか、触れられるまで確保されない。ASLRもこの上に成り立っており、起動のたびにレイアウトをランダム化して攻撃を難しくする。