問題
複数のプロセスから同時に呼び出されたときに,互いに干渉することなく並行して動作することができるプログラムの性質を表すものはどれか。
- ア:リエントラント
- イ:リカーシブ
- ウ:リユーザブル
- エ:リロケータブル
基本情報技術者平成31年春期 午前問8
問題
再入可能プログラムの特徴はどれか。
- ア:主記憶上のどこのアドレスに配置しても,実行することができる。
- イ:手続の内部から自分自身を呼び出すことができる。
- ウ:必要な部分を補助記憶装置から読み込みながら動作する。主記憶領域の大きさに制限があるときに,有効な手法である。
- エ:複数のタスクからの呼出しに対して,並行して実行されても,それぞれのタスクに正しい結果を返す。
基本情報技術者平成27年春期 午前問7
基本情報技術者試験や応用情報技術者試験で出題されるプログラムの性質を表す問題。リエントラントやリカーシブなど聞きなれない言葉のため、難しく感じる問題ですが、各性質を理解してしまえばそこまで難しい問題ではありません。
本記事では、「プログラムの性質」について図解で分かりやすく解説しています。
本記事で学べること
- リロケータブル(再配置可能)について理解する
- リユーザブル(再使用可能)について理解する
- リエントラント(再入可能)について理解する
- リカーシブ(再帰的)について理解する
- 基本情報技術者試験の過去問の解き方を学ぶ
目次
プログラムの性質
プログラムには次の4つの性質があります。
スポンサーリンク
リロケータブル(再配置可能)
リロケータブル(再配置可能)とは、プログラムをメモリ上の何処に配置しても実行できるという性質のことです。
プログラム内蔵方式を採用しているコンピュータは、プログラムを実行するときハードディスクなどの補助記憶装置に保存してあるプログラムを主記憶装置(メインメモリ)に読み込んでから実行します。
このとき、リロケータブルの性質を持つプログラムは、メモリ上の何処に配置しても実行することができます。このようなプログラムのことを「再配置可能プログラム」といいます。
再配置可能プログラムは、ベースアドレス指定方式(基底アドレス指定方式)などの方式を利用しているため、メモリ上のどこに配置しても問題なく実行することができます。
例えば、次の図のようにプログラムをメモリアドレス「1001」~「2000」に読み込んだとします。このときベースレジスタには、読み込んだプログラムの先頭アドレスである「1001」を記憶します。
そして 今後は、同じプログラムをメモリアドレス「801」~「1800」に読み込んだとします。ベースレジスタには、読み込んだプログラムの先頭アドレスである「801」を記憶します。
このようにベースレジスタに、メモリ上に読み込んだプログラムの先頭アドレスを記憶することで、位置を特定することができ、メモリ上のどこに配置しても問題なく実行することができます。(先頭以外の位置は、先頭アドレスからの差分で判断できる)
ベースアドレス指定方式の詳細はこちら
リユーザブル(再使用可能)
リユーザブル(再使用可能)とは、メモリ上に読み込まれたプログラムが繰り返し利用可能であるという性質のことです。
コンピュータがプログラムを実行するとき、補助記憶装置に保存されているプログラムを主記憶装置に読み込み実行します。
このとき、リユーザブル(再使用可能)の性質を持つプログラムは、処理を終えたあと再読み込みすることなく何度も繰り返し利用することができます。
リエントラント(再入可能)
リエントラント(再入可能)とは、複数のプログラムを並行して実行するマルチタスクにおいて、実行中プログラムが同時に他のプログラムから呼び出されても正常に処理できるという性質のことです。
リエントラント(再入可能)のプログラムは、使用する変数を共有しないように設計しているため、呼び出し元のプログラム同士が、互いの変数を干渉することなく並行して実行することができます。
リカーシブ(再帰的)
リカーシブ(再帰的)とは、プログラミング言語において処理中に自分自身を呼び出すことができるという性質のことです。
プログラミング言語で作られた関数やメソッドなどの処理の中に、自身の呼び出しを行うコードが含まれることを「再帰呼び出し」といい、そのような関数を「再帰関数(もしくは再帰的関数)」といいます。
再帰呼び出しを利用することで、複雑な処理を短いコードで記述することができるが、処理の終了条件がなかったり、条件が誤っていたりすると、無限に自身を呼び出し続けてしまう(無限ループ)危険性があるため、再帰呼び出しを使用する際は注意が必要です。
スポンサーリンク
基本情報技術者試験 過去問の解説
基本情報技術者平成31年春期 午前問8
問題
複数のプロセスから同時に呼び出されたときに,互いに干渉することなく並行して動作することができるプログラムの性質を表すものはどれか。
- ア:リエントラント
- イ:リカーシブ
- ウ:リユーザブル
- エ:リロケータブル
基本情報技術者平成31年春期 午前問8
設問の性質と一致するものはどれか解答のア~エを順番に確認していきます。
基本情報技術者平成27年春期 午前問7
問題
再入可能プログラムの特徴はどれか。
- ア:主記憶上のどこのアドレスに配置しても,実行することができる。
- イ:手続の内部から自分自身を呼び出すことができる。
- ウ:必要な部分を補助記憶装置から読み込みながら動作する。主記憶領域の大きさに制限があるときに,有効な手法である。
- エ:複数のタスクからの呼出しに対して,並行して実行されても,それぞれのタスクに正しい結果を返す。
基本情報技術者平成27年春期 午前問7
再入可能プログラムの特徴はどれか、設問のア~エを順番に確認していきます。