コンピュータ

リロケータブル(再配置可能)とは

リロケータブル(再配置可能)

リロケータブル(再配置可能)とは、メモリ上の何処に配置しても実行することができるという性質のことです。

メモリ上のどこに配置しても問題なく実行できる

プログラム内蔵方式という方式を採用しているコンピュータは、プログラムを実行するときハードディスクなどの補助記憶装置に保存してあるプログラムを主記憶装置(メインメモリ)にロード(読み込む)してから実行します。

主記憶装置にロード

このとき、リロケータブル(再配置可能)の性質を持つプログラムは、メモリ上のどこに配置しても実行することができます。

このようなプログラムのことを「再配置可能プログラム」といいます。

メモリコンパクションのイメージ例

再配置可能プログラムは、メモリ上のどこに配置しても実行できるので、メモリ断片化を解消するメモリコンパクションによってメモリ上の配置位置を移動したり(動的再配置)、スワップアウトによって退避させたプログラムを、スワップインでメモリに再ロードしたりすることができます。

(上記図はメモリコンパクションのイメージ例、以下図はスワップインのイメージ例)

スワップインのイメージ例

メモリ上のプログラムを補助記憶装置に退避することスワップアウト、退避したプログラムをメモリに再ロードすることをスワップインといいます。

なぜメモリ上のどこに配置しても問題なく実行できるのか?

再配置可能プログラムは、ベースアドレス指定方式などの方式を利用しているため、メモリ上のどこに配置しても問題なく実行することができます。

次の図は、ベースアドレス指定方式のイメージ例です。

ベースレジスタ

上記図の例では、プログラムをメモリアドレス「1001」~「2000」にロードしています。そして ベースレジスタには、プログラムをロードした先頭のアドレス「1001」が保存されています。

ベースレジスタ2

そして、今後は同じプログラムをメモリアドレス「801」~「1800」にロードしており、ベースレジスタには、プログラムをロードした先頭のアドレス「801」が保存されています。

このように、ベースレジスタにプログラムをロードした先頭のアドレスが記録されるため、メモリ上のどこに配置しても問題なく実行することができます。(先頭アドレスからの差分でどの位置か判断できる)

ベースアドレス指定方式の詳細はこちら