エンベデッドシステムスペシャリスト 2016年 午前2 問07
問題文
リアルタイムシステムにおいて、アプリケーションタスクの要求によって入出力を行うデバイスドライバのタスク部が、要求された処理が完了したときに行う通知処理はどれか。
選択肢
ア:イベントフラグを使って入出力要求元のタスクに入出力完了を通知する。(正解)
イ:セマフォを使ってOSに入出力完了を通知する。
ウ:ハードウェアに入出力完了を通知する。
エ:メールボックスを介してOSに入出力完了を通知する。
🔒 解説は解答すると表示されます
イベントフラグによる完了通知【午前2解説】
正解の理由
デバイスドライバのタスク部は、要求された入出力処理が完了した後、その処理を依頼したアプリケーションタスクに完了を知らせます。この通知には、タスク間の同期に使うイベントフラグを利用します。
したがって、入出力要求元のタスクにイベントフラグで通知するアが正解です。要求元のタスクはイベントフラグを待ち合わせることで、入出力の完了を検知できます。
解法ステップ
-
通知のきっかけを確認します。
デバイスドライバのタスク部が、要求された入出力処理を完了したときの通知です。 -
通知先を確認します。
通知を受けるのは、入出力を要求したアプリケーションタスクです。 -
タスク間の通知手段を選びます。
イベントフラグは、タスクが特定の事象の発生を待ち合わせるために使われます。よって、アが適切です。
選択肢別の誤答解説
- ア:正解です。イベントフラグを使って、入出力を要求したタスクに処理完了を通知します。
- イ:セマフォはタスク間の同期にも使われますが、この選択肢は通知先が「OS」となっています。問題で通知すべき相手は入出力要求元のタスクです。
- ウ:ハードウェアへの通知ではありません。問題は、処理完了後にソフトウェア上の要求元タスクへ行う通知について問うています。
- エ:メールボックスはメッセージの受け渡しに使う機能ですが、選択肢では通知先が「OS」となっています。要求元タスクへの完了通知としては適切ではありません。
よくある誤解
- セマフォもタスク間同期に使えるから、イも正解だと思う
セマフォ自体は同期に使えますが、選択肢では通知先がOSです。機能名だけでなく、誰に通知するのかも確認しましょう。 - 入出力完了はハードウェアに通知すると思う
ハードウェアの処理完了を受けた後、要求元のタスクに結果を知らせるのがここで問われている処理です。 - メールボックスとイベントフラグは同じ通知手段だと思う
イベントフラグは事象の発生を通知・待ち合わせる仕組みで、メールボックスはメッセージを受け渡す仕組みです。
補足コラム
イベントフラグは、タスクが「入出力完了」などの事象を待つときに使われます。処理が完了した側がフラグを設定し、待っていた側がその変化を検知することで、タスク間の連携を行います。
FAQ
イベントフラグを設定するのは誰ですか?
一般には、入出力完了を確認したデバイスドライバ側が設定し、要求元のタスクがそのフラグを待ちます。
一般には、入出力完了を確認したデバイスドライバ側が設定し、要求元のタスクがそのフラグを待ちます。
イベントフラグはデータそのものを渡す仕組みですか?
主な役割は事象の発生を知らせることです。入出力データの受け渡しは、別のバッファなどを使って行うことがあります。
主な役割は事象の発生を知らせることです。入出力データの受け渡しは、別のバッファなどを使って行うことがあります。
関連キーワード: リアルタイムシステム、デバイスドライバ、イベントフラグ、タスク間同期、入出力完了通知

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

