応用情報技術者 2010年 秋期 午前2 問08
問題文
再入可能 (リエントラント) プログラムに関する記述のうち、適切なものはどれか。
選択肢
ア:再入可能プログラムは、逐次再使用可能プログラムから呼び出すことはできない。
イ:再入可能プログラムは、呼出し元ごとに確保された記憶領域に局所変数が割り当てられる。(正解)
ウ:実行途中で待ち状態が発生するプログラムは、再入可能プログラムではない。
エ:逐次再使用可能なプログラムは、再入可能プログラムでもある。
再入可能 (リエントラント) プログラムに関する問題【午前2 解説】
要点まとめ
- 結論:再入可能プログラムは呼出し元ごとに独立した記憶領域で局所変数を管理するため、同時に複数回安全に呼び出せます。
- 根拠:再入可能性はプログラムの状態を共有せず、外部依存を排除することで実現されます。
- 差がつくポイント:局所変数の管理方法や逐次再使用可能との違い、待ち状態の有無が再入可能性に与える影響を正確に理解することが重要です。
正解の理由
イ: 再入可能プログラムは、呼出し元ごとに確保された記憶領域に局所変数が割り当てられる。
再入可能プログラムは、複数の呼び出しが同時に行われても互いに干渉しないよう、局所変数や実行状態を呼出し元ごとに独立して管理します。これにより、同一コードを複数の実行コンテキストで安全に再利用可能です。
再入可能プログラムは、複数の呼び出しが同時に行われても互いに干渉しないよう、局所変数や実行状態を呼出し元ごとに独立して管理します。これにより、同一コードを複数の実行コンテキストで安全に再利用可能です。
よくある誤解
- 再入可能プログラムは逐次再使用可能プログラムとは異なり、同時に複数回呼び出せる点が混同されやすいです。
- 待ち状態があるかどうかは再入可能性の判断基準ではありません。
解法ステップ
- 再入可能プログラムの定義を確認する(同時に複数回呼び出せること)。
- 局所変数の管理方法が独立しているかを検討する。
- 逐次再使用可能プログラムとの違いを理解する。
- 待ち状態の有無が再入可能性に影響しないことを確認する。
- 選択肢の内容を照らし合わせて正誤を判断する。
選択肢別の誤答解説
- ア: 「逐次再使用可能プログラムから呼び出せない」は誤り。再入可能プログラムは逐次再使用可能プログラムからも呼び出せます。
- ウ: 「実行途中で待ち状態が発生するプログラムは再入可能でない」は誤解。待ち状態の有無は再入可能性に直接関係しません。
- エ: 「逐次再使用可能なプログラムは再入可能プログラムでもある」は誤り。逐次再使用可能は同時実行不可であり、再入可能とは異なります。
補足コラム
再入可能プログラムは、割り込み処理やマルチスレッド環境での安全なコード実行に不可欠です。局所変数をスタックに置くことで状態の独立性を保ち、グローバル変数や静的変数の使用を避けることが推奨されます。逐次再使用可能プログラムは単一スレッドでの再利用を想定し、同時実行はできません。
FAQ
Q: 再入可能プログラムとスレッドセーフなプログラムは同じですか?
A: ほぼ同義ですが、スレッドセーフはスレッド間の競合を防ぐ広い概念で、再入可能は割り込みや多重呼び出しに特化した概念です。
A: ほぼ同義ですが、スレッドセーフはスレッド間の競合を防ぐ広い概念で、再入可能は割り込みや多重呼び出しに特化した概念です。
Q: 再入可能プログラムはグローバル変数を使ってもよいですか?
A: 原則として使いません。グローバル変数は状態を共有し競合を招くため、再入可能性を損ないます。
A: 原則として使いません。グローバル変数は状態を共有し競合を招くため、再入可能性を損ないます。
関連キーワード: 再入可能プログラム、局所変数、逐次再使用可能、リエントラント、マルチスレッド

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

