優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて、入力装置及び出力装置にアクセスする二つのタスクX,Yがある。XはYより優先度が低く、Xが資源待ち状態でない場合にYが資源待ち状態に遷移するとXが実行状態に遷移する。入力装置及び出力装置へのアクセスを排他制御するために、入力装置及び出力装置にそれぞれバイナリセマフォi及びoを用意し、X,Yを図のように実装したとき、デッドロックが発生するのはXの処理A,B,C又はDのうち、どの処理中にプリエンプションが発生してYが実行されたときか。ここで、Yの実行はαから行うものとし、Xの処理A,B,C及びDでは入力装置及び出力装置へのアクセス及びバイナリセマフォの操作は行わないものとする。

取得順序が逆の2つのセマフォを片方だけ持つ区間が危険

エンベデッドシステムスペシャリスト試験2023年度 秋期 午前II6/RTOS / 同期・排他制御

タスクXとタスクYのフローチャート。タスクXは「出力データの準備」→「処理A」→「セマフォi取得」→「処理B」→「セマフォo取得」→「処理C」の後、別ブロック「入力装置及び出力装置へのアクセス」に合流し、続けて「処理D」→「セマフォo解放」→「セマフォi解放」→「入力データの加工」の順に実行される。タスクYはαから開始し、「出力データの準備」→「セマフォo取得」→「セマフォi取得」→「入力装置及び出力装置へのアクセス」→「セマフォi解放」→「セマフォo解放」→「入力データの加工」の順に実行される。Xはセマフォiを処理Bの前、oを処理Cの前に取得する順序、Yはoを先、iを後に取得する順序であり、取得順序が逆になっているためデッドロックが起こり得る構造になっている。
タスクXとタスクYのフローチャート。タスクXは「出力データの準備」→「処理A」→「セマフォi取得」→「処理B」→「セマフォo取得」→「処理C」の後、別ブロック「入力装置及び出力装置へのアクセス」に合流し、続けて「処理D」→「セマフォo解放」→「セマフォi解放」→「入力データの加工」の順に実行される。タスクYはαから開始し、「出力データの準備」→「セマフォo取得」→「セマフォi取得」→「入力装置及び出力装置へのアクセス」→「セマフォi解放」→「セマフォo解放」→「入力データの加工」の順に実行される。Xはセマフォiを処理Bの前、oを処理Cの前に取得する順序、Yはoを先、iを後に取得する順序であり、取得順序が逆になっているためデッドロックが起こり得る構造になっている。

選択肢

正解と解説

正解: 処理B

デッドロックはXとYが互いに相手の持つセマフォを待ち合うときに起きる。Xはiを取得した直後、まだoを取得していない状態にあるときプリエンプトされると危険で、これが処理Bの区間である。この状態でYが走るとYはoを取得できるがiが取れずに待ちに入り、実行状態に戻ったXもoが取れずに待つため、双方が永久に進めなくなる。

選択肢ごとの解説

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

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。