平成23年度 特別 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問9
テクノロジ/ソフトウェア優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムで,入力装置及び出力装置にアクセスする二つのタスクX,Yがある。XはYより優先度が低く,Yが待ち状態となったときにXに処理が戻る。X,Yのアクセスを排他制御するために,入力装置及び出力装置それぞれに資源数1のセマフォを用意し,X,Yを図のように実装したとき,デッドロックが発生するのはXが処理中のどのタイミングでYが起床したときか。ここで,Yは起床するとαから処理を行うこととする。

出典:平成23年度 特別 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問9
- アA
- イB
- ウC
- エD
正解:イ
解説
タスクXは,入力装置用セマフォを取得(A)した後,出力装置用セマフォを取得(B)してから入出力処理(C)を行い,出力装置用セマフォ,入力装置用セマフォの順に解放(D)します。一方,優先度の高いタスクYは,起床すると出力装置用セマフォを取得した後,入力装置用セマフォを取得します。したがって,Xが入力装置用セマフォを取得済みだが出力装置用セマフォをまだ取得していないタイミング,すなわちBの時点でYが起床すると,Yは出力装置用セマフォを取得できた後,入力装置用セマフォの取得を試みてXに阻まれて待ち状態になります。Yが待ち状態になったことでXの処理が再開しますが,Xは出力装置用セマフォの取得を試みてYに阻まれて待ち状態になり,互いに相手が確保した資源の解放を待ち続けるデッドロックが発生します。A,C,Dの各タイミングでYが起床した場合は,Xがまだいずれの資源も取得していない,又は両方の資源を取得し終えているため,このような資源の奪い合いは発生しません。
選択肢ごとの解説
- ア誤り。Aの時点,すなわちXがまだ入力装置用セマフォを取得していない段階でYが起床しても,Yは入力装置用セマフォを問題なく取得でき,デッドロックは発生しません。
- イ正しい。Bの時点,すなわちXが入力装置用セマフォを取得済みで出力装置用セマフォを未取得の段階でYが起床すると,YとXが互いに相手の保持するセマフォの解放を待ち合うデッドロックが発生します。
- ウ誤り。Cの時点では,Xは既に入力・出力両方のセマフォを取得し終えているため,Yは出力装置用セマフォの解放を待つだけで済み,資源を奪い合うデッドロックにはなりません。
- エ誤り。Dの時点では,Xは既に出力装置用セマフォを解放しており,Yはこれを取得して処理を進められるため,デッドロックは発生しません。