どうもこんにちは!
サバ缶(@tech_begin)です。
基本情報や応用情報技術者試験で頻出する「プログラムの特性」に関する問題。
今回はその特性の1つである「リロケータブル」について解説していきます。
もし分かりづらい箇所や、間違っている箇所があればお気軽にTwitterへご連絡ください!
プログラム特性とは
それではまず、少しおさらいをしておきましょう。
すでに何があるのか知っている方は、飛ばして大丈夫です!
プログラムの構造上 生じる性質を分類したのが「プログラムの特性」です。
その「プログラムの特性」は4つに分類されます。
- リロケータブル(再配置可能)
- リユーザブル(再使用可能)
- リエントラント(再入可能)
- リカーシブ(再帰的)
このうちの1つ『リロケータブル(再配置可能)』について学んでいきます。
リロケータブル(再配置可能)とは
リロケータブルとは、プログラムをメモリ上のどこに読み込んでも実行することが可能である性質のことを言います。
また、「リロケータブル」という性質を持ったプログラムを『再配置可能プログラム』と呼びます。
リロケータブルの言葉の意味を理解する
リロケータブル……
言葉だけだとイメージしにくいですよね。
そこで、言葉の意味を理解してみましょう!
英語で『Relocatable』と書きます。
「ロケート」や「ロケーション」と言い換えると、イメージしやすいかもしれません。
次に英単語を分解してみましょう。
- 「Re」 再び
- 「locate」 場所、位置
- 「able」 できる(形容詞: be able toでよく使われます)
これで「リロケータブル=再配置可能」という意味が結びついたのではないでしょうか。
リロケータブルの概要
メインメモリに読み込まれたプログラムは『機械語』と呼ばれる0と1の羅列です。
それらはメモリに格納されていき、それぞれの格納場所には「アドレス」が割り当てられています。
このアドレスを使って『①特定の位置にある値を読み込み』したり『②次の命令の実行位置を変更』したりします。
リロケータブルという性質がなぜあった方が良いのか、2つのパターンを見ていきましょう。
再配置『不可能』なプログラムの場合
再配置『不可能』なプログラムだった場合を考えてみましょう。
再配置不可能ということは「アドレスを絶対値で指定しなければならない」ことになります。
つまり、めちゃくちゃ使い勝手が悪いプログラムになるということです。
開発時に指定したアドレスでなければ、正常に動作しないプログラムになるというわけです。
メインメモリに読み込まれる時、各環境でアドレスは異なります。
そのため、再配置不可能なプログラムは大変扱いにくいプログラムになってしまいます。
再配置『可能』なプログラムの場合
次に再配置可能なプログラムを見ていきます。
再配置可能ということは「アドレスを相対値で指定している」ということになります。
相対値で指定しているプログラムの方が、環境の違いに左右されず問題なく動作します。
- 絶対値
- ある基準をもとにして考える数。数学の数直線では0が基準になるので、「+5」も「-5」も絶対値は「5」になります。
- 相対値
- 何かと何かを比較して考える数。相対値では0が基準とは限らないため、基準となる値が変化します。
プログラム的に言えば、基準となるアドレスが柔軟に変更されるため、メインメモリのどんな場所にプログラムがロード(読み込み)されても実行できるというわけですね。
これこそが『リロケータブル』です!
プログラムの特性は、全部で4つあります。
このほかにも解説しているので、ぜひご覧ください。