令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問6
優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて、入力装置及び出力装置にアクセスする二つのタスクX, Yがあります。XはYより優先度が低く、Xが資源待ち状態である場合にYが資源待ち状態に遷移するとXが実行状態に遷移する。入力装置及び出力装置へのアクセスを排他制御するために、入力装置及び出力装置にそれぞれバイナリセマフォi及びoを用意し、X, Yを図のように実装したとき、デッドロックが発生するのは処理A, B, CまたはDのうち、どの処理にプリエンプションが発生してから実行されたときか。ここで、Yの実行はαから行うものとし、Xの処理A, B, C及びDでは入力装置及び出力装置へのアクセス及びバイナリセマフォの操作は行わないものとする。

キーボード:1〜4 で解答 → 次の問題 ← 前の問題
正解と解説を見る
解答する前に解説を開いたので、この問題は「見て解いた」として記録します(正解数には入りません)。
正解:イ
デッドロックが発生するためには、以下の4つの条件が必要です: 1. 排他性: 資源は一度に1つのタスクのみがアクセス可能である。 2. 占有と待機: 少なくとも1つの資源が占有され、他の資源を待っている状態。 3. 循環待機: 互いに待機状態が循環する。 4. 非強制的なリリース: 資源を解放することなく待機状態に遷移する。
プリエンプティブスケジューリングにおいて、Xが資源待ち状態にある際にYが資源待ち状態に遷移し、Yが資源を取得してXが実行されるという条件が示されています。特に、タスクYがプリエンプションされ、入力装置や出力装置に対するアクセスがバイナリセマフォを通じて制御されている場合、これがデッドロックに関与します。
処理A, B, C, Dについてそれぞれの条件がどう影響するかを考慮し、デッドロックが発生するタイミングを見極めます。具体的には、Yの実行開始時点、またはXがリソース待機後に処理が開始されるタイミングでプリエンプションが発生するとデッドロックが起こります。
答え
イ: 処理B
出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問6