平成18年 秋期 ソフトウェア開発技術者 午前 問27

タスクが実行状態(RUN)、実行可能状態(READY)、待ち状態(WAIT)の三つの状態で管理されるリアルタイムOSにおいて、三つのタスクA〜Cの状態がプリエンプティブなスケジュールによって、図に示すとおりに遷移した。
各タスクの優先度の関係のうち、適切なものはどれか。
ここで、優先度の関係は、“高い > 低い”で示す。

 ア  タスクA > タスクB > タスクC
 イ  タスクB > タスクA > タスクC
 ウ  タスクB > タスクC > タスクA
 エ  タスクC > タスクB > タスクA


答え ウ


解説
説明のため、図のように時間に沿って番号付けるする。

タスクの優先度の判断はRUNとREADYの関係で判断する。READY状態のタスクがあるときに、RUN状態のタスクは、READY状態のタスクよりも優先度が高いことになる。
Aのとき、タスクCがREADY状態で、タスクBがRUN状態なので、B > C である。
Cのとき、タスクAがREADY状態で、タスクBがRUN状態なので、B > A である。
Eのとき、タスクAがREADY状態で、タスクCがRUN状態なので、C > A である。
したがって、各タスクの優先度の関係はB > C > A(ウ)である。


キーワード
・リアルタイムOS
・タスクの状態
・プリエンプティブ

キーワードの解説
  • リアルタイムOS(Real Time OS、RTOS)
    リアルタイムOSとは、事象(イベント)が発生したら、そのイベントに対応した処理を行うという、イベント・ドリブン(event driven)なプログラム実行制御を行うOSのこと。
    リアルタイムOSとしては、µITRONやVxWorks、Symbianなどが有名。
  • タスクの状態
    問題に出てくる実行状態(RUN)、実行可能状態(READY)、待ち状態(WAIT)の三つの状態は、それぞれ
    • 実行状態(RUN):処理中、実行中
    • 実行可能状態(READY):実行状態のタスクの処理終了待ち
    • 待ち状態(WAIT):事象(イベント)待ち、事象が発生するまでタスクは実行状態にはならない
    である。
  • プリエンプティブ(preemptive)
    システムによって、複数のタスクで処理の優先度を付け、優先度の高いタスクは、優先度の低いタスクを停めても処理する必要がある場合、処理中の優先度の低いタスクを止めて、優先度の高いタスクを動作させることをプリエンプティブな処理という。
    処理の横取りと考えるとわかりやすい。

もっと、「リアルタイムOS」について調べてみよう。

戻る 一覧へ 次へ