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

答え イ
【解説】
タスクX、Yの優先度はYが高いのでYが起床するとXは休眠する。
したがって、デッドロックになるのは、タスクXが入力装置用セマフォを取得した段階(処理B) で、タスクYが起床して休眠し、タスクYがタスクXが取得している入力装置用セマフォの取得を行い待ち状態になり(この段階で出力装置用のセマフォはタスクYが取得している)、タスクXが起床しタスクYが取得済みの出力装置用セマフォを取得しようとしたときである。
【キーワード】
・プリエンプティブ
【キーワードの解説】
- プリエンプティブ(preemptive)
システムによって、複数のタスクで処理の優先度を付け、優先度の高いタスクは、優先度の低いタスクを停めても処理する必要がある場合、処理中の優先度の低いタスクを止めて、優先度の高いタスクを動作させることをプリエンプティブな処理という。
処理の横取りと考えるとわかりやすい。
もっと、「プリエンプティブ」について調べてみよう。
戻る
一覧へ
次へ
|