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

令和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解放
  ↓
入力データの加工
答えと解説を見る

✓ これが正解イ処理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を待ち、どちらも進めなくなります。取得順が逆の二つのタスクでは、片方だけを確保した区間を探すのが見分け方です。

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

この問題の用語

出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問6

同じ用語が出る問題

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