I²C バスの排他制御
出典: 令和4年度 春期 応用情報技術者試験 午前 問17 (IPA)
一つの I²C バスに接続された二つのセンサがある。それぞれのセンサ値を読み込む二つのタスクで排他的に制御したい。利用するリアルタイム OS の機能として,適切なものはどれか。
- ア キュー
- イ セマフォ
- ウ マルチスレッド
- エ ラウンドロビン
正解と解説を見る
正解: イ
- ア: キューは、タスク間でデータを順番に受け渡すための仕組みです。
- イ: セマフォで共有資源の獲得・解放を管理すると、2 つのタスクの排他制御ができます。正しい答えです。
- ウ: マルチスレッドは、1 つのプロセスの中で複数の処理を並行して動かす仕組みで、排他制御の機能ではありません。
- エ: ラウンドロビンは、一定時間ごとに実行するタスクを切り替えるスケジューリング方式です。
ポイント
- 1 つの I²C バス (共有資源) を 2 つのタスクが同時に使わないようにする 排他制御 には、セマフォ を使います。
- セマフォは資源を使ってよいかを表すカウンタで、P 操作で獲得、V 操作で解放します。獲得できないタスクは待ちます。