応用情報技術者 2012年 秋期 午前2 問08
問題文
リアルタイムシステムにおいて、複数のタスクから並行して呼び出された場合に、同時に実行する必要がある共用ライブラリのプログラムに要求される性質はどれか。
選択肢
ア:リエントラント(正解)
イ:リユーザブル
ウ:リカーシブ
エ:リロケータブル
リアルタイムシステムにおける共用ライブラリの性質【午前2 解説】
要点まとめ
- 結論:複数タスクから同時に呼び出される共用ライブラリは「リエントラント」である必要があります。
- 根拠:リエントラントとは、同時に複数の実行が可能で、状態を共有せず安全に再入可能なプログラムの性質です。
- 差がつくポイント:リアルタイムシステムでは処理の遅延が許されないため、排他制御よりもリエントラント設計が重要です。
正解の理由
ア: リエントラントは、複数のタスクが同時に同じプログラムを呼び出しても、内部状態を共有せず安全に動作できる性質を指します。リアルタイムシステムでは、共用ライブラリが同時に複数のタスクから呼び出されるため、状態の競合や破壊を防ぐためにリエントラントであることが必須です。
よくある誤解
リエントラントとリユーザブルを混同しやすいですが、リユーザブルは単に再利用可能な意味であり、同時実行の安全性を保証しません。
解法ステップ
- 問題文から「複数タスクが同時に呼び出す」ことを確認する。
- 同時実行時の安全性が求められていると理解する。
- 選択肢の意味を整理し、「リエントラント」が再入可能で安全な性質であることを思い出す。
- 他の選択肢は同時実行の安全性とは無関係であるため除外する。
- よって「リエントラント」が正解と判断する。
選択肢別の誤答解説
- イ: リユーザブルは「再利用可能」な意味であり、同時実行の安全性は保証しません。
- ウ: リカーシブは「再帰的」な処理を指し、同時実行とは関係ありません。
- エ: リロケータブルは「再配置可能」なプログラムで、メモリ配置の自由度を示す用語であり、同時実行の安全性とは無関係です。
補足コラム
リエントラントプログラムは、グローバル変数や静的変数を持たず、必要なデータはすべて引数やスタック上で管理します。これにより、複数のタスクが同時に呼び出しても状態が競合しません。リアルタイムシステムでは、排他制御による待ち時間を減らすためにリエントラント設計が推奨されます。
FAQ
Q: リエントラントとスレッドセーフの違いは何ですか?
A: リエントラントは「再入可能」で状態を共有しない設計を指し、スレッドセーフは「複数スレッドから安全に使える」ことを意味します。リエントラントはスレッドセーフの一形態と考えられます。
A: リエントラントは「再入可能」で状態を共有しない設計を指し、スレッドセーフは「複数スレッドから安全に使える」ことを意味します。リエントラントはスレッドセーフの一形態と考えられます。
Q: リユーザブルなプログラムはリエントラントになれますか?
A: リユーザブルは再利用可能な意味であり、リエントラント設計を施せば同時実行も安全になりますが、単にリユーザブルなだけではリエントラントとは限りません。
A: リユーザブルは再利用可能な意味であり、リエントラント設計を施せば同時実行も安全になりますが、単にリユーザブルなだけではリエントラントとは限りません。
関連キーワード: リエントラント、リアルタイムシステム、共用ライブラリ、同時実行、再入可能

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

