再入可能プログラム(リエントラント)とは?
再入可能プログラム(リエントラント)とは、複数のタスクから同時に呼び出されても、それぞれが正しい結果を得られるプログラムの性質。書き換える領域をスタックやタスクごとの領域に置き、コード部と共有データを書き換えないことで実現する。同時実行時にも1つのコードを共有でき、メモリを節約できる。
応用情報技術者試験の過去問では3回出題されています(2016年度〜2022年度)。
さいにゅうかのうぷろぐらむ
再入可能プログラム(リエントラント)の意味
複数のタスクから同時に呼び出されても、それぞれが正しい結果を得られるプログラムの性質。書き換える領域をスタックやタスクごとの領域に置き、コード部と共有データを書き換えないことで実現する。同時実行時にも1つのコードを共有でき、メモリを節約できる。
再入可能プログラム(リエントラント)の具体例
OSのシステムコールや共有ライブラリはこの性質を満たすよう作られている。逆に処理結果を静的変数に溜める実装は再入不可で、複数スレッドから呼ぶと互いの値を壊すため、結果を呼び出し側の領域に書き出す形へ改める。
再入可能プログラム(リエントラント)は試験でどう引っ掛けられる?
再使用可能(一度実行後に再ロードせず再実行できる)、再配置可能(主記憶のどの位置にも置ける)、再帰的(自分自身を呼べる)と混同しやすい。再入可能なら再使用可能だが、逆は必ずしも成り立たない。
再入可能プログラム(リエントラント)と関連する用語
再入可能プログラム(リエントラント)が出た過去問
リアルタイムシステムにおいて,複数のタスクから同時に呼び出された場合に,並行して実行する必要がある共用ライブラリのプログラムに要求される性質はどれか。
正解:リエントラント
要点:共用ライブラリの同時呼出しにはリエントラント性が必要
リエントラント(再入可能)とは、複数のタスクから同時に呼び出されても正しく動作する性質のことである。プログラム中で書き換わるデータを共有せずタスクごとの領域に置くことで実現され、共用ライブラリに必要な性質である。
出典:平成28年度 春期 応用情報技術者試験 午前 問7(IPA)プログラムの特性に関する記述のうち,適切なものはどれか。
正解:再帰的プログラムは,手続の中でそれ自体を呼び出すプログラムであり,再入可能である。
要点:再帰的プログラムは必ず再入可能でなければならない
再帰的プログラムは実行中に自分自身を呼び出すため、呼出しごとに独立した作業領域を確保し、コード部分は書き換えない構造でなければ正しく動作しない。これは再入可能プログラムの条件そのものであり、再帰的プログラムは再入可能である。
出典:平成29年度 春期 応用情報技術者試験 午前 問7(IPA)再入可能プログラムの特徴はどれか。
正解:複数のタスクからの呼出しに対して、並行して実行されても、それぞれのタスクに正しい結果を返す。
要点:再入可能は複数タスクの同時実行でも正しく動く性質
再入可能(リエントラント)プログラムとは、複数のタスクが同時に同じコードを実行しても、それぞれが正しい結果を得られるように作られたプログラムである。実現には、コード部分を書き換えないようにし、タスクごとに異なるデータ領域を使う設計が必要になる。これによりプログラムの実体を主記憶に1つ置くだけで複数タスクが共用できる。
出典:令和4年度 春期 応用情報技術者試験 午前 問6(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。