イベントフラグとは?いべんとふらぐ
イベントフラグとは、1語のビット列を共有し、指定したビットの成立を待ち条件としてタスクを待たせるRTOSの同期機構。全ビットがそろうまで待つAND待ちと、どれか1つ立てば解除されるOR待ちを選べるため、複数の事象がそろったという条件を1回の待ちで表現できる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
この機構が無い作りでは、複数の条件がそろうのを待つのに、タスク側でフラグ変数をポーリングするか、条件ごとの待ちを順に重ねるしかない。前者はCPUを空回しして消費電力を捨て、後者は事象の到着順によって取りこぼしが起きる。事象の集合をカーネルに管理させ、成立条件を宣言の形で渡せるようにしたのがこの仕組みで、割込みハンドラ側から事象を立ててタスクを起こす橋渡しとしても使える。
具体例
TOPPERS/ASPでは割込みハンドラがiset_flgでビットを立て、タスクはwai_flgに待ちビットとTWF_ANDWを渡して両方そろうのを待つ。FreeRTOSのイベントグループも同じ考え方で、xEventGroupWaitBitsのxWaitForAllBits引数がAND待ちとOR待ちの切替えにあたる。
試験での引っ掛け
資源の個数を数えるのがセマフォ、データそのものを運ぶのがメールボックスやキューで、この機構が扱うのは事象が成立したかどうかだけ、という線引きがまず問われる。AND待ちとOR待ちを入れ替えた選択肢は定番の引っ掛けで、さらに待ち解除時にビットをクリアするかは待ち側の指定次第であり、常に自動でクリアされる前提で読むと誤る。
関連用語
出た過去問
出典:平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7(IPA)
リアルタイムシステムにおいて、アプリケーションタスクの要求によって入出力を行うデバイスドライバのタスク部が、要求された処理が完了したときに行う通知処理はどれか。
正解:イベントフラグを使って入出力要求元のタスクに入出力完了を通知する。
要点:完了通知はOSでなく要求元タスクへ同期機能で行う
デバイスドライバのタスク部は、割込みハンドラから処理完了を受け取ったあと、その事実を要求元のアプリケーションタスクへ知らせる必要がある。リアルタイムOSではイベントフラグやセマフォといった同期機能を使い、完了を待って待ち状態になっているタスクを実行可能状態へ戻す。通知の相手はOSやハードウェアではなく、あくまで待っているタスクである。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。