リロケータブル(再配置可能)
リロケータブル(再配置可能)とは、メモリ上の何処に配置しても実行することができるという性質のことです。
メモリ上のどこに配置しても問題なく実行できる
プログラム内蔵方式という方式を採用しているコンピュータは、プログラムを実行するときハードディスクなどの補助記憶装置に保存してあるプログラムを主記憶装置(メインメモリ)にロード(読み込む)してから実行します。
このとき、リロケータブル(再配置可能)の性質を持つプログラムは、メモリ上のどこに配置しても実行することができます。
再配置可能プログラムは、メモリ上のどこに配置しても実行できるので、メモリ断片化を解消するメモリコンパクションによってメモリ上の配置位置を移動したり(動的再配置)、スワップアウトによって退避させたプログラムを、スワップインでメモリに再ロードしたりすることができます。
(上記図はメモリコンパクションのイメージ例、以下図はスワップインのイメージ例)
なぜメモリ上のどこに配置しても問題なく実行できるのか?
再配置可能プログラムは、ベースアドレス指定方式などの方式を利用しているため、メモリ上のどこに配置しても問題なく実行することができます。
次の図は、ベースアドレス指定方式のイメージ例です。
上記図の例では、プログラムをメモリアドレス「1001」~「2000」にロードしています。そして ベースレジスタには、プログラムをロードした先頭のアドレス「1001」が保存されています。
そして、今後は同じプログラムをメモリアドレス「801」~「1800」にロードしており、ベースレジスタには、プログラムをロードした先頭のアドレス「801」が保存されています。
このように、ベースレジスタにプログラムをロードした先頭のアドレスが記録されるため、メモリ上のどこに配置しても問題なく実行することができます。(先頭アドレスからの差分でどの位置か判断できる)
ベースアドレス指定方式の詳細はこちら