平成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 ↓ 出力装置用セマフォ解放 入力装置用セマフォ解放 ↓ ↓ 入力装置用セマフォ解放 出力装置用セマフォ解放 ↓ ↓
- アA
- イB
- ウC
- エD
答えと解説を見る
✓ これが正解イB
解説
Xが入力用だけ握った直後にYが起きると、互いに相手を待ちます。
デッドロックは、二つのタスクがそれぞれ一つずつ資源を握ったまま、相手の資源を待ち合うと起こります。軸は、Yが起床した時点でXがどのセマフォを握っているかです。Bのタイミングでは、Xは入力装置用セマフォを取得済みで、出力装置用はまだです。ここでYが起床すると、優先度の高いYが先に動き、出力装置用セマフォを取得したあと入力装置用セマフォを取りに行きますが、Xが握っているので待ち状態になります。処理がXに戻ると、Xは出力装置用セマフォを取りに行きますが、Yが握っているので待ちになり、両者とも進めなくなります。取得順が逆の二つのタスクでは、片方が一つ目だけを握った瞬間が危ないと覚えましょう。
ほかの選択肢はなぜ違うのか
- アA:Aのタイミングでは、Xはまだどちらのセマフォも取得していません。起床したYは出力装置用と入力装置用の両方をそのまま取得して入出力処理を終え、解放するので、Xとの待ち合いは起きません。
- ウC:Cのタイミングでは、Xは両方のセマフォを取得済みです。Yは待たされますが、Xが入出力処理を終えて出力装置用、入力装置用の順に解放すれば、Yも順に取得して先へ進めるので、待ち合いにはなりません。
- エD:Dのタイミングでも、Xは両方のセマフォを握ったまま入出力処理を終えたところです。Yは一時的に待たされても、Xが二つのセマフォを解放すれば取得できるので、互いに相手を待ち続ける状態にはなりません。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
出典:平成23年度 特別 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問9
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問6:デッドロックに関する問題(排他制御)
- 令和5年度 秋期 午前Ⅱ 問8:スタベーションに関する記述(排他制御)
- 平成31年度 春期 午前Ⅱ 問8:セマフォに関する問題(排他制御)
- 平成31年度 春期 午前Ⅱ 問7:優先度逆転の原因となるもの(排他制御)
- 平成30年度 春期 午前Ⅱ 問10:優先度逆転に関する問題(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)