リアルタイムOSの機能|科目A-1 令和7年 秋期午前試験 問16

出典:令和7年秋期 午前 問16 分野:ソフトウェア / オペレーティングシステム
一つのI2Cバスに接続された二つのセンサーがある。それぞれのセンサー値を読み込む二つのタスクで排他的に制御したい。利用するリアルタイムOSの機能として,適切なものはどれか。
  • ア:キュー
  • イ:セマフォ
  • ウ:マルチスレッド
  • エ:メモリプール
解説

I2Cバスは、複数のデバイスを同じバスに接続できる通信方式です。ただし、同じバスを複数のタスクが同時に使おうとすると、通信内容が衝突したり、処理が途中で割り込まれたりする可能性があります。

このような共有資源を複数のタスクから使う場合は、あるタスクが使用している間、他のタスクが同時に使用できないように排他制御を行います。

リアルタイムOSで排他制御に使われる代表的な機能がセマフォです。セマフォを使うと、I2Cバスを使用する前に権利を取得し、使用後に解放することで、複数タスクによる同時アクセスを防げます。

したがって、が適切です。

❌他選択肢が誤りの理由
ア:キュー
⇒キューは、タスク間でデータやメッセージを順番に受け渡すための機能です。データの受け渡しには使えますが、I2Cバスのような共有資源を同時に使わせないための排他制御には、セマフォの方が適切です。
ウ:マルチスレッド
⇒マルチスレッドは、複数の処理の流れを並行して実行する仕組みです。複数タスクを動かす考え方であり、共有資源への同時アクセスを防ぐ排他制御そのものではありません。
エ:メモリプール
⇒メモリプールは、あらかじめ確保したメモリ領域を必要に応じて割り当てる仕組みです。動的メモリ確保を効率化したり、メモリ不足を管理しやすくしたりするための機能であり、I2Cバスの排他制御を行う機能ではありません。
TSUNAGARU-ADVICE

まず押さえたいこと

I2Cバスのように、複数のタスクが同じ資源を使う場合は、同時にアクセスしないように排他制御が必要です。リアルタイムOSでは、このような共有資源の使用権を管理する代表的な機能がセマフォです。

迷ったときの判断軸

キューはデータの受け渡し、マルチスレッドは複数処理の実行単位、メモリプールはメモリ領域の管理に使います。問題文に「排他的に制御したい」「同じバスを共有する」とある場合は、資源を1つのタスクだけが使えるようにする仕組みに注目しましょう。

科目Bにつなげるために

特にプロフェッショナルデジタルスキル(システム)試験合格を目指す方は、セマフォを用語として覚えるだけでなく、組込みシステムやリアルタイム処理で、センサー・通信バス・共有メモリなどを安全に使うための同期・排他制御として理解しておくと有効です。