平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
テクノロジ/ソフトウェアリアルタイムシステムにおいて,アプリケーションタスクの要求によって入出力を行うデバイスドライバのタスク部が,要求された処理が完了したときに行う通知処理はどれか。
出典:平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
- アイベントフラグを使って入出力要求元のタスクに入出力完了を通知する。
- イセマフォを使ってOSに入出力完了を通知する。
- ウハードウェアに入出力完了を通知する。
- エメールボックスを介してOSに入出力完了を通知する。
正解:ア
解説
リアルタイムシステムでは,アプリケーションタスクが入出力を要求すると,デバイスドライバのタスク部が実際のハードウェア制御を行い,処理が完了した時点で要求元のタスクにその完了を知らせる必要があります。この通知には,タスク間の同期・通知手段であるイベントフラグ,セマフォ,メールボックスなどのOSが提供する機構が用いられますが,本問のように「入出力要求元のタスクに」直接完了を知らせる場合には,一般にイベントフラグをセット(あるいはセマフォをシグナル)して要求元タスクを起床させる方法が使われます。選択肢の中では,イベントフラグを使って入出力要求元のタスクに直接通知する方法が,要求元への通知処理として最も適切です。
選択肢ごとの解説
- ア正しい。イベントフラグを使うことによって,デバイスドライバのタスク部は入出力完了を,OSを介さず直接,入出力要求元のタスクに通知することができます。
- イ誤り。セマフォを使ってOSに入出力完了を通知するという表現は,通知の宛先が入出力要求元のタスクではなくOSになっており,要求元タスクへの通知処理としては適切ではありません。
- ウ誤り。ハードウェアに入出力完了を通知するという処理は,向きが逆であり,本問が問う「要求元のタスクへの通知」には該当しません。
- エ誤り。メールボックスを介してOSに入出力完了を通知するという表現も,通知の宛先が入出力要求元のタスクではなくOSになっており,適切ではありません。