過去問解きまくり研究所 ホーム

平成23年度 特別 午前Ⅱ 問9

オペレーティングシステム

デッドロックに関する問題

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

タスクX,Yの処理の流れ(原典は図。上から下の順に箱を書き写し,矢印に付いた記号を添えた):

X                              Y
↓                              ↓ α
入出力データの準備              入出力データの準備
↓ A                            ↓
入力装置用セマフォ取得          出力装置用セマフォ取得
↓ B                            ↓
出力装置用セマフォ取得          入力装置用セマフォ取得
↓ C                            ↓
入出力処理                      入出力処理
↓ D                            ↓
出力装置用セマフォ解放          入力装置用セマフォ解放
↓                              ↓
入力装置用セマフォ解放          出力装置用セマフォ解放
↓                              ↓
答えと解説を見る

✓ これが正解イB

解説

Xが入力用だけ握った直後にYが起きると、互いに相手を待ちます。

デッドロックは、二つのタスクがそれぞれ一つずつ資源を握ったまま、相手の資源を待ち合うと起こります。軸は、Yが起床した時点でXがどのセマフォを握っているかです。Bのタイミングでは、Xは入力装置用セマフォを取得済みで、出力装置用はまだです。ここでYが起床すると、優先度の高いYが先に動き、出力装置用セマフォを取得したあと入力装置用セマフォを取りに行きますが、Xが握っているので待ち状態になります。処理がXに戻ると、Xは出力装置用セマフォを取りに行きますが、Yが握っているので待ちになり、両者とも進めなくなります。取得順が逆の二つのタスクでは、片方が一つ目だけを握った瞬間が危ないと覚えましょう。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成23年度 特別 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問9

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)