一つのI^2Cバスに接続された二つのセンサーがある。
それぞれのセンサー値を読み込む二つのタスクを排他的に制御したい。
利用するリアルタイムOSの機能として,適切なものはどれか。
正答2
解説
正解は2です。
1つのI2C(Inter-Integrated Circuit)バスを二つのタスクが共有するので、同時に使わないよう排他制御が必要です。
リアルタイムOSで共有資源の排他制御に使う機能はセマフォです。
【選択肢別解説】
1:× キュー(メッセージキュー)は、タスク間でデータを順番に受け渡すための機能です。
資源を同時に使わせない排他制御が主目的ではありません。
2:○ セマフォは、共有資源を使う前に獲得し、使い終わったら解放する仕組みです。
一方のタスクがバスを使っている間、もう一方を待たせることができます。
3:× マルチスレッドは、1つのプログラムの中で複数の処理を並行して実行する仕組みです。
並行実行そのものであり、排他制御の機能ではありません。
4:× メモリプールは、固定サイズのメモリブロックを事前に確保して効率よく割り当てる機能です。
バスの排他制御には使いません。
【ポイント】
資源を1つのタスクだけに使わせるには、値が0か1のバイナリセマフォやミューテックスを使います。
「排他的に制御」とあればセマフォと結び付けて考えます。