優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムで、入力装置及び出力装置にアクセスする二つのタスクX、Yがある。
XやYより優先度が低く、Yが待ち状態となった時にXに処理が戻る。
X、Yのアクセスを排他制御するために、入力装置及び出力装置それぞれに資源数1のセマフォを用意し、X、Yを図のように実装したとき、デッドロックが発生するのはXが処理中のどのタイミングでYが起床したときか。
ここで、Yは起床するとαから処理を行うこととする。
ア | A |
イ | B |
ウ | C |
エ | D |
答え イ
【解説】
タスクX、Yの優先度はYが高いのでYが起床するとXは休眠する。
したがって、デッドロックになるのは、タスクXが入力装置用セマフォを取得した段階(B) で、タスクYが起床して休眠し、タスクYがタスクXが取得している入力装置用セマフォの取得を行い待ち状態になり(この段階で出力装置用のセマフォはタスクYが取得している)、タスクXが起床しタスクYが取得済みの出力装置用セマフォを取得しようとしたときである。
【キーワード】
・プリエンプティブ