令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問6
この問題は2023(R5)秋 エンベデッドシステムスペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。
本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。
優先度に基づくプリエンプティブスケジューリングのリアルタイム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】
以下の順序で直線的に処理が遷移する:
- 出力データの準備
- 処理A
- セマフォi取得
- 処理B
- セマフォo取得
- 処理C
- 入力装置及び出力装置へのアクセス
- 処理D
- セマフォo解放
- セマフォi解放
- 入力データの加工
【タスクY】
開始位置「α」から以下の順序で直線的に処理が遷移する:
- 出力データの準備
- セマフォo取得
- セマフォi取得
- 入力装置及び出力装置へのアクセス
- セマフォi解放
- セマフォo解放
- 入力データの加工
解答・解説を読む
正解: 選択肢イ
リアルタイムOSにおける デッドロック の発生条件と、排他制御(セマフォ)の仕組みに関する問題です。
デッドロックとは
複数のタスクが互いに相手が確保している資源(今回は入力装置と出力装置)の解放を待ってしまい、どのタスクも処理を進められなくなる状態を指します。
デッドロック発生のメカニズム
本問のように、優先度が異なるタスク間で複数の資源(バイナリセマフォ および )を排他制御する場合、各タスクが 異なる順序 でセマフォを獲得しようとするとデッドロックの危険性が生じます。
具体的にデッドロックが発生するシナリオは以下の通りです。
- 優先度の低い タスクX が1つ目のセマフォ(例:)を獲得する。
- その直後の処理を実行中にプリエンプション(実行権の切り替え)が発生し、優先度の高い タスクY に処理が移る。
- タスクYが2つ目のセマフォ(例:)を獲得する。
- タスクYが1つ目のセマフォ()を獲得しようとするが、タスクXが確保中のため 資源待ち状態 となる。(これによりタスクXが実行状態へ)
- タスクXに実行権が戻るが、次に2つ目のセマフォ()を獲得しようとした際、タスクYが確保中のため 資源待ち状態 となる。
- 両者が互いのセマフォ解放を待ち続ける デッドロック が発生する。
各選択肢の解説
本問の正解が「イ(処理B)」であることから、タスクXにおいて「処理Bの直前で1つ目のセマフォを獲得し、処理Bの直後で2つ目のセマフォを獲得する」構造になっていることがわかります。
- ア (処理A): 1つ目のセマフォを獲得する前の状態です。ここでプリエンプションが起きても、タスクYは順調にすべての資源を獲得・解放できるためデッドロックは起きません。
- イ (処理B): 1つ目のセマフォを獲得済みで、2つ目を獲得する前の状態です。ここでタスクYに切り替わると、上述のメカニズムにより デッドロックが発生 します。(正解)
- ウ (処理C) / エ (処理D): 既に必要なセマフォをすべて獲得し終えている、あるいは一部解放している状態です。タスクYに切り替わっても、タスクYは資源待ち状態となってタスクXにすぐ実行権が戻るため、デッドロックには至りません。