応用情報技術者 2022年 春期 午前2 問17
問題文
一つのI2C バスに接続された二つのセンサがある。それぞれのセンサ値を読み込む二つのタスクで排他的に制御したい。利用するリアルタイム OSの機能として適切なものはどれか。
選択肢
ア:キュー
イ:セマフォ(正解)
ウ:マルチスレッド
エ:ラウンドロビン
一つのI2Cバスに接続された二つのセンサの排他制御【午前2 解説】
要点まとめ
- 結論:I2Cバスの排他制御にはセマフォを使うのが適切です。
- 根拠:セマフォは複数タスク間で共有資源の同時アクセスを防ぎ、排他制御を実現します。
- 差がつくポイント:キューはデータ受け渡し、マルチスレッドは並行処理、ラウンドロビンはスケジューリング方式であり排他制御には不向きです。
正解の理由
I2Cバスは複数のデバイスが同一バスを共有するため、同時アクセスを防ぐ排他制御が必要です。セマフォはリアルタイムOSで共有資源のアクセス制御に用いられ、二つのタスクが同時にI2Cバスを操作しないよう制御できます。これによりデータの競合や通信エラーを防止します。
よくある誤解
キューはデータの受け渡しに使うもので、排他制御の役割はありません。マルチスレッドは単に複数処理を並行実行するだけで、排他制御機能は含みません。
解法ステップ
- 問題文から「二つのタスクで排他的に制御したい」と読み取る。
- I2Cバスは共有資源であり、同時アクセスを防ぐ必要があると理解する。
- 排他制御に適したリアルタイムOSの機能を考える。
- セマフォは共有資源の排他制御に使うことを思い出す。
- 他の選択肢(キュー、マルチスレッド、ラウンドロビン)が排他制御に適さないことを確認する。
選択肢別の誤答解説
- ア: キュー
データの送受信やタスク間通信に使うが、共有資源の排他制御には不適。 - イ: セマフォ
共有資源の排他制御に最適。I2Cバスの同時アクセス防止に適用可能。 - ウ: マルチスレッド
複数処理の並行実行を指す概念で、排他制御機能は含まれない。 - エ: ラウンドロビン
タスクスケジューリング方式の一つで、排他制御とは無関係。
補足コラム
セマフォにはバイナリセマフォとカウントセマフォがあり、排他制御にはバイナリセマフォがよく使われます。I2Cバスのような共有通信路では、セマフォでアクセス権を管理し、通信の衝突を防ぎます。リアルタイムOSではこのような同期機構が重要な役割を果たします。
FAQ
Q: セマフォとミューテックスの違いは何ですか?
A: ミューテックスは排他制御専用のセマフォの一種で、所有権の概念がありデッドロック防止に優れています。
A: ミューテックスは排他制御専用のセマフォの一種で、所有権の概念がありデッドロック防止に優れています。
Q: キューは排他制御に使えますか?
A: キューはデータの受け渡しに使い、排他制御の役割は持ちません。排他制御はセマフォやミューテックスが担当します。
A: キューはデータの受け渡しに使い、排他制御の役割は持ちません。排他制御はセマフォやミューテックスが担当します。
関連キーワード: I2Cバス、排他制御、セマフォ、リアルタイムOS, タスク同期

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

