再入可能・再使用可能・再配置可能プログラムとは?
再入可能・再使用可能・再配置可能プログラムとは、再使用可能(リユーザブル)は繰り返し呼んでも正しく動く性質、うち再入可能(リエントラント)は複数の実行主体が同時に実行しても正しい性質、逐次再使用可能は同時実行は不可で毎回初期化が要る性質。再配置可能(リロケータブル)は主記憶のどこへ置いても動く性質を指す。
応用情報技術者試験の過去問では4回出題されています(2016年度〜2022年度)。
さいにゅうかのうさいしようかのうさいはいちかのうぷろぐらむ
再入可能・再使用可能・再配置可能プログラムの意味
再使用可能(リユーザブル)は繰り返し呼んでも正しく動く性質、うち再入可能(リエントラント)は複数の実行主体が同時に実行しても正しい性質、逐次再使用可能は同時実行は不可で毎回初期化が要る性質。再配置可能(リロケータブル)は主記憶のどこへ置いても動く性質を指す。
再入可能・再使用可能・再配置可能プログラムの具体例
リエントラントにするには、処理中の状態を静的領域ではなくスタックか呼び出し側が渡す領域に置く。マルチスレッドのサーバで共有ライブラリを使うとき、この性質がないと同時アクセスで値が壊れる。再配置可能性は仮想記憶とローダによるアドレス解決で実現される。
再入可能・再使用可能・再配置可能プログラムは試験でどう引っ掛けられる?
「再入可能ならスレッドセーフ」とは限らない。グローバルなロックに依存する実装はスレッドセーフでも再入可能ではない(シグナルハンドラから呼ぶとデッドロックする)。また再帰可能(リカーシブ)は再入可能の一種で、同義ではない。
再入可能・再使用可能・再配置可能プログラムと関連する用語
再入可能・再使用可能・再配置可能プログラムが出た過去問
リアルタイムシステムにおいて,複数のタスクから同時に呼び出された場合に,並行して実行する必要がある共用ライブラリのプログラムに要求される性質はどれか。
正解:リエントラント
要点:共用ライブラリの同時呼出しにはリエントラント性が必要
リエントラント(再入可能)とは、複数のタスクから同時に呼び出されても正しく動作する性質のことである。プログラム中で書き換わるデータを共有せずタスクごとの領域に置くことで実現され、共用ライブラリに必要な性質である。
出典:平成28年度 春期 応用情報技術者試験 午前 問7(IPA)プログラムの特性に関する記述のうち,適切なものはどれか。
正解:再帰的プログラムは,手続の中でそれ自体を呼び出すプログラムであり,再入可能である。
要点:再帰的プログラムは必ず再入可能でなければならない
再帰的プログラムは実行中に自分自身を呼び出すため、呼出しごとに独立した作業領域を確保し、コード部分は書き換えない構造でなければ正しく動作しない。これは再入可能プログラムの条件そのものであり、再帰的プログラムは再入可能である。
出典:平成29年度 春期 応用情報技術者試験 午前 問7(IPA)プログラム特性に関する記述のうち、適切なものはどれか。
正解:再使用可能プログラムは実行の始めに変数を初期化する、又は変数を初期状態に戻した後にプログラムを終了する。
要点:再使用可能プログラムは変数の初期化で再実行の同一性を保証する
再使用可能(リユーザブル)プログラムは、一度実行した後も再ロードなしに繰り返し実行できるプログラムで、そのためには使用する変数を実行開始時に初期化するか、終了時に初期状態へ戻す必要がある。これによって前回実行時の値が残って動作が変わることを防げる。再入可能・再帰的・再配置可能との性質の違いを整理して覚えるとよい。
出典:令和3年度 秋期 応用情報技術者試験 午前 問6(IPA)再入可能プログラムの特徴はどれか。
正解:複数のタスクからの呼出しに対して、並行して実行されても、それぞれのタスクに正しい結果を返す。
要点:再入可能は複数タスクの同時実行でも正しく動く性質
再入可能(リエントラント)プログラムとは、複数のタスクが同時に同じコードを実行しても、それぞれが正しい結果を得られるように作られたプログラムである。実現には、コード部分を書き換えないようにし、タスクごとに異なるデータ領域を使う設計が必要になる。これによりプログラムの実体を主記憶に1つ置くだけで複数タスクが共用できる。
出典:令和4年度 春期 応用情報技術者試験 午前 問6(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。