リロケーション 【relocation】
機械語はコンピュータのCPUが直に解釈して実行できる形式の言語で、高水準のプログラミング言語とは異なり、データの格納や参照を行うためにはメインメモリ(RAM)上の特定の位置を指示する必要がある。
現代のコンピュータでは仮想記憶が用いられるため、プログラム中でのメモリ位置の指定も論理アドレス(プログラム先頭からの相対位置など)を用いて行われ、実行時にメモリ上のどの位置にプログラムが置かれても支障がない「リロケータブル」(relocatable)な構成になっている。
最終的にデータを扱うにはメモリの物理的な番地(物理アドレス)を指し示す必要があるため、論理アドレスで記述された位置指定を、実際にプログラムが置かれた位置に応じた物理アドレスに変換する。このアドレス変換処理をリロケーションという。
静的再配置 (static relocation)
プログラムをメインメモリに読み込む実行開始時(ストレージからのロード時)にまとめて論理アドレスから物理アドレスへの変換を行う方式を「静的再配置」という。実装が単純だが、実行中に別の位置へプログラムを移動することはできない。
動的再配置 (dynamic relocation)
メモリ位置を参照する命令を実行する瞬間にアドレス変換を行う方式を「動的再配置」という。オペレーティングシステム(OS)によって実行中のプログラムの位置を移動させることができ、断片化したメモリ上の空き領域を束ねて連続した空間を得る「メモリコンパクション」が可能となる。
(2021.10.28更新)