リエントラント・リユーザブル・リロケータブルとは?りえんとらんと・りゆーざぶる・りろけーたぶる
リエントラント・リユーザブル・リロケータブルとは、プログラムが持ちうる性質を表す三つの区分。再ロードせずに繰り返し実行できるのがリユーザブル、複数の実行単位から同時に呼ばれても結果が壊れないのがリエントラント、主記憶上のどの番地に置いても動くのがリロケータブルである。分かれ目は状態をどこに持つかで、静的領域に持つ実装は同時実行に耐えない。
最終更新:2026-10-06
この語が出る過去問を解く →背景
主記憶が高価で小さかった時代、同じ処理のためにプログラムを人数分ロードする余裕はなく、一つの実体を複数の利用者やタスクで共有する必要があった。さらに、どの番地に載るかは実行時まで決まらない。共有できるか、同時に入れるか、置き場所を選ばないかという三つの問いは、いずれも限られた主記憶を効率よく使うための要件として整理されたものである。マルチスレッドが当たり前になった今も、共有ライブラリの実装要件として同じ区分が効いている。
具体例
C標準ライブラリのstrtokは分割位置を内部の静的領域に覚えているため、複数スレッドから同時に呼ぶと互いの途中状態を壊す。これを呼出し側にバッファを渡させる形へ変えたstrtok_rは、状態を引数とスタックだけに置くことでリエントラントになっている。
試験での引っ掛け
包含関係の向きが問われる。リエントラントであれば必ずリユーザブルだが、逆は成り立たない。リユーザブルには、実行の最後に自分で状態を初期化して次の実行に備える「逐次再使用可能」も含まれ、これは繰り返し使えても同時実行はできないからである。三つの語のうちリロケータブルだけは主記憶上の配置に関する性質で、実行の同時性とは軸が違う点も混同されやすい。
関連用語
出た過去問
出典:令和3年度 秋期 応用情報技術者試験 午前 問6(IPA)解説で登場
プログラム特性に関する記述のうち、適切なものはどれか。
正解:再使用可能プログラムは実行の始めに変数を初期化する、又は変数を初期状態に戻した後にプログラムを終了する。
要点:再使用可能プログラムは変数の初期化で再実行の同一性を保証する
再使用可能(リユーザブル)プログラムは、一度実行した後も再ロードなしに繰り返し実行できるプログラムで、そのためには使用する変数を実行開始時に初期化するか、終了時に初期状態へ戻す必要がある。これによって前回実行時の値が残って動作が変わることを防げる。再入可能・再帰的・再配置可能との性質の違いを整理して覚えるとよい。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。