平成23年 春期 エンベデッドシステムスペシャリスト 午前II 問9

優先度に基づくプリエンプティブスケジューリングのリアルタイム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が取得済みの出力装置用セマフォを取得しようとしたときである。


キーワード
・プリエンプティブ

キーワードの解説
  • プリエンプティブ(preemptive)
    システムによって、複数のタスクで処理の優先度を付け、優先度の高いタスクは、優先度の低いタスクを停めても処理する必要がある場合、処理中の優先度の低いタスクを止めて、優先度の高いタスクを動作させることをプリエンプティブな処理という。
    処理の横取りと考えるとわかりやすい。

もっと、「プリエンプティブ」について調べてみよう。

戻る 一覧へ 次へ