応用情報技術者試験 令和4年度 春期 午前 問17
一つの I²C バスに接続された二つのセンサがある。それぞれのセンサ値を読み込む二つのタスクで排他的に制御したい。利用するリアルタイム OS の機能として、適切なものはどれか。
選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】イ
I²Cバスは、複数の機器が信号線を共有するバスです。二つのタスクが同時にバスを操作すると、送信中のデータや制御信号が競合し、正常な通信ができなくなるおそれがあります。このため、一方のタスクがI²Cバスを使用している間は、もう一方のタスクを待たせる排他制御が必要です。 セマフォは、共有資源を利用できる数を管理するリアルタイムOSの同期機能です。初期値を1とするセマフォを用意し、タスクはバスの使用前に獲得を要求します。一方のタスクが獲得中なら他方は待機し、使用後に解放されると待機中のタスクが利用できます。これによって、I²Cバスを同時に使用するタスクを一つに限定できます。 アのキューは誤りです。キューはデータやメッセージを到着順に受け渡すための仕組みであり、共有バスの使用権を直接管理する機能ではありません。 ウのマルチスレッドは誤りです。これは一つのプロセス内で複数の処理単位を並行動作させる方式であり、それだけでは排他制御になりません。 エのラウンドロビンは誤りです。これは実行可能なタスクへ一定時間ずつCPUを割り当てるスケジューリング方式であり、共有資源への同時アクセスを防ぐものではありません。
【ポイント】 排他制御では、初期値1のバイナリセマフォやミューテックスを使用します。 共有資源の使用前に獲得し、使用後には必ず解放することが基本です。 セマフォの解放漏れがあると、他のタスクが永久に待つデッドロックの原因になります。
出典:令和4年度 春期 応用情報技術者試験 午前 問17
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる