リアルタイム OS の排他制御
出典: 令和7年度 秋期 応用情報技術者試験 午前 問16 (IPA)
一つの I²C バスに接続された二つのセンサーがある。それぞれのセンサー値を読み込む二つのタスクを排他的に制御したい。利用するリアルタイム OS の機能として,適切なものはどれか。
- ア キュー
- イ セマフォ
- ウ マルチスレッド
- エ メモリプール
正解と解説を見る
正解: イ
- ア: キュー (メッセージキュー) はタスク間でデータを受け渡すための機能です。排他制御のための機能ではありません。
- イ: セマフォは共有資源を同時に使えるタスクの数を制限する機能なので、I²C バスの排他制御に使えます。
- ウ: マルチスレッドは処理を並行して動かす仕組みです。むしろ排他制御が必要になる原因の側です。
- エ: メモリプールは決まった大きさのメモリブロックを素早く割り当てる機能です。排他制御とは関係ありません。
ポイント
- 1 本の I²C バスは同時に 1 つのタスクしか使えない共有資源です。2 つのタスクが同時に使わないようにする (排他制御する) には セマフォ (またはミューテックス) を使います。
- タスクはバスを使う前にセマフォを獲得 (P 操作) し、使い終わったら解放 (V 操作) します。