再入可能プログラム(さいにゅうかのうぷろぐらむ)

あるタスクが実行している最中に別のタスクから重ねて呼び出されても、双方の処理に誤りを生じさせず並行して動作できるプログラム。英語表記からリエントラント(reentrant)プログラムとも呼ばれ、共有ライブラリやOSのシステムコール処理などで求められる構造である。

詳細解説

この性質を持たせるには、プログラムを実行中に内容が変わらない命令部(コード領域)と、処理の過程で書き換えが生じる変数などの作業領域(データ領域)とに分離して設計します。命令部は読み出し専用として全タスクで1つの実体を共有し、作業領域は呼び出したタスクごとに専用のスタックや主記憶領域を個別に割り当てることで、実行途中の状態が他のタスクによって上書きされるのを防ぎます。データ領域までタスク間で共用すると誤解されやすいですが、共有できるのは書き換えを伴わない命令部のみです。また、類似するプログラム属性として、終了後に再ロードせず繰り返し使える再使用可能(リユーザブル)、主記憶のどの番地に配置しても動作する再配置可能(リロケータブル)、自分自身を呼び出せる再帰的(リカーシブ)があり、これらと区別して整理しておく必要があります。

再入可能プログラムが問われた過去問

再入可能プログラムが登場する過去問

関連する分野

OS・ソフトウェア

用語集の一覧へ