令和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では,入力装置及び出力装置へのアクセス並びにバイナリセマフォの操作は行わないものとする。
タスクX・タスクYの流れ図(タスクXは処理Cの後,右の列の「入力装置及び出力装置へのアクセス」に続く):
タスクX ↓ 出力データの準備 ↓ 処理A ↓ セマフォi取得 ↓ 処理B ↓ セマフォo取得 ↓ 処理C ↓ 入力装置及び出力装置へのアクセス ↓ 処理D ↓ セマフォo解放 ↓ セマフォi解放 ↓ 入力データの加工
タスクY ↓ α 出力データの準備 ↓ セマフォo取得 ↓ セマフォi取得 ↓ 入力装置及び出力装置へのアクセス ↓ セマフォi解放 ↓ セマフォo解放 ↓ 入力データの加工
- ア処理A
- イ処理B
- ウ処理C
- エ処理D
答えと解説を見る
✓ これが正解イ処理B
解説
XがセマフォiだけをもつB中にYが動くと、互いに待ってデッドロックします。
デッドロックは、二つのタスクが互いに相手のもつ資源を待ち続ける状態です。Xはi、oの順に、Yはo、iの順にセマフォを取得するので、Xがiだけを確保している区間が危険です。処理B中にYが実行されると、Yはoを取得したあと、Xがもつiを待って資源待ちになります。するとXが実行に戻り、処理Bのあとでoを取得しようとしますが、oはYがもっているので待ちになります。XはYのもつoを、YはXのもつiを待ち、どちらも進めなくなります。取得順が逆の二つのタスクでは、片方だけを確保した区間を探すのが見分け方です。
ほかの選択肢はなぜ違うのか
- ア処理A:処理Aの時点では、Xはまだどちらのセマフォも取得していません。Yはoとiを続けて取得し、装置へのアクセスを終えて両方を解放するので、待ち合いは生じず、そのあとXが続きを実行できます。
- ウ処理C:処理Cの時点では、Xはiとoの両方を取得済みです。Yは最初のo取得で資源待ちになり、Xが実行に戻ってアクセスを終え、oとiを解放すればYも進めます。互いに待ち合う形にはなりません。
- エ処理D:処理Dの時点でもXはiとoを両方もっています。Yはo取得で待ちになりますが、Xが処理Dを終えてoとiを解放すれば取得できるので、処理は先へ進み、デッドロックには至りません。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問6
同じ用語が出る問題
- 令和5年度 秋期 午前Ⅱ 問8:スタベーションに関する記述(排他制御)
- 平成31年度 春期 午前Ⅱ 問8:セマフォに関する問題(排他制御)
- 平成31年度 春期 午前Ⅱ 問7:優先度逆転の原因となるもの(排他制御)
- 平成30年度 春期 午前Ⅱ 問10:優先度逆転に関する問題(排他制御)
- 平成30年度 春期 午前Ⅱ 問8:セマフォに関する記述(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)