この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ア

解説

プログラムの実行特性を表す「リ○○」系用語の区別を問う定番問題です。複数のプロセス(タスク)から同時に呼び出されても、互いに干渉せず正しく並行動作できる性質をリエントラント(再入可能)と呼びます。これを実現するには、プログラムのコード部分(手続き部)と、呼出しごとに変化するデータ部分(作業領域)を分離し、データ部分を呼出し元ごとに別々に確保する構造にします。コードは共有しても、各呼出しのデータが独立しているため互いに干渉しません。OSのシステムコールや共有ライブラリなど、多数のプロセスから同時利用されるプログラムに必須の性質です。正解はアです。類似用語として、リカーシブ(再帰的: 自分自身を呼び出せる)、リユーザブル(再使用可能: 再ロードせずに繰り返し実行できる)、リロケータブル(再配置可能: 主記憶のどの位置に置いても実行できる)があり、この4つはセットで出題されるため、意味の違いを正確に整理しておくことが重要です。

なぜ他の選択肢は違うのか

選択肢 イ
リカーシブ(再帰的)は、プログラムが自分自身を呼び出して実行できる性質です。階乗計算や木構造の探索のように、問題をより小さい同形の問題に分割して解く際に使われます。「自分を呼び出す」性質であって、「複数のプロセスから同時に呼び出される」状況とは無関係です。なお再帰を正しく実行するには呼出しごとの作業領域が必要なため、リカーシブなプログラムは通常リエントラントでもありますが、問われている性質そのものが異なります。
選択肢 ウ
リユーザブル(再使用可能)は、一度実行した後、主記憶に再ロードし直さなくても繰り返し正しく実行できる性質です。実行によって書き換わった変数を初期化し直す仕組みがあれば成立しますが、これは「逐次的に何度も使える」ことを意味するだけで、複数プロセスからの「同時」呼出しに耐えることまでは保証しません。同時実行に耐えるリエントラントは、リユーザブルより強い条件です。
選択肢 エ
リロケータブル(再配置可能)は、主記憶上のどのアドレスに配置されても正しく実行できる性質です。アドレス参照を相対アドレスやベースレジスタ経由にすることで実現され、OSがプログラムを自由な位置にロードできるようになります。これはメモリ配置に関する性質であり、複数プロセスからの同時呼出しへの耐性とはまったく別の観点です。

解くときのポイント

リ○○4兄弟: リエントラント=同時呼出しOK、リカーシブ=自分を呼べる、リユーザブル=再ロード不要で再実行OK、リロケータブル=どの番地でも実行OK。「同時」とくればリエントラント。