位置独立コード
位置独立実行形式 (PIE) は、位置独立コードのみで構築された実行ファイルである。一部システムはPICの実行形式のみをサポートしているが、他にもPIEが使われる理由がある。例えば、セキュリティ指向のLinuxディストリビューションでPIEを使っており、PaXや Exec Shield がアドレス空間配置のランダム化を行い、Return-to-libc攻撃のように実行ファイルの配置アドレスを利用して行う攻撃を防いでいる。
しかし、プログラムは別々でも多くのコードが共通しているということの方が多い。例えば給与支払いプログラムと受取勘定プログラムは、全く同一のサブルーチンを数多く含んでいると考えられる。そこでモジュールの共有という考え方が生まれた(共有ライブラリは共有モジュールの一種である)。給与支払いプログラムと受取勘定プログラムの主プログラムはそれぞれ別のメモリにロードされるが、共有モジュールは物理メモリ上には1回だけロードされ、それを2つの仮想アドレス空間にマッピングする。
位置独立コードはアプリケーションで使われるだけでなく、OS内でも使われている。初期のページング方式は仮想アドレス空間を採用していなかった。その代わりOSが必要に応じて個々のモジュールをロードし、必要性の低いモジュールを上書きしていた(OSが使えるメモリ容量は、OS自体のコード容量より小さかった)。モジュールは必要なときに空いているメモリ上で動作可能でなければならないため、個々のOSモジュールは位置独立コードとして書かれていた。
仮想記憶の発明で、OS自体も広大な仮想アドレス空間を持てるようになり、各OSモジュールに別々の恒久的仮想アドレスを割り当てられるようになったので、この技法も廃れた。