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

出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問6
- ア処理 A
- イ処理 B
- ウ処理 C
- エ処理 D
正解:イ
解説
デッドロックが発生するのは,X がバイナリセマフォ i を取得した後,o を取得する前の処理 B の実行中に Y が実行された場合です。この時点で X は i を保持しています。Y は α から実行を始めてセマフォ o を取得し,続けてセマフォ i を取得しようとしますが,i は X が保持しているため Y は待ち状態になります。Y が待ち状態になったことで X が再び実行状態に戻り,処理 B の後でセマフォ o の取得を試みますが,o は Y が保持しているため X も待ち状態になります。X は i を保持したまま o の解放を待ち,Y は o を保持したまま i の解放を待つことになり,互いに相手の解放を待ち続けるデッドロックが発生します。
選択肢ごとの解説
- ア誤り。処理 A の実行中はまだセマフォ i も o も取得していないため,ここで Y が実行されてもセマフォの獲得順序による循環待ちは発生しません。
- イ正しい。処理 B の実行中は X がセマフォ i を保持し,まだ o を取得していない状態です。ここで Y が実行されると,Y は o を取得した後に i の取得で待たされ,その後 X も o の取得で待たされるため,互いに相手が保持する資源の解放を待ち合うデッドロックに陥ります。
- ウ誤り。処理 C の実行中は既に X がセマフォ i と o の両方を取得済みであり,Y が実行されてもセマフォ o の取得待ちになるだけで,X 側が新たに資源待ちになることはないため,循環待ちにはなりません。
- エ誤り。処理 D の実行中も X はセマフォ i と o を両方保持したままであり,Y は o の取得で待たされるだけで循環待ちは発生しません。