連載
» 2010年04月28日 00時00分 公開

【完結編】 技術要素から開発技術、管理技術へ“組み込み力”向上! ETEC対策ドリル(12)

ETECクラス2の技術要素に関する演習を解きながら、基礎を解説してきた本連載も最終回。今回はタスクの状態遷移について。

[近森満(株式会社サートプロ 代表取締役社長/JASA ETEC運営事務局),@IT MONOist]

【問題11】の解答

 前回の宿題【問題11】は、「タスクの状態遷移」に関する問題でした。

 「タスク」は、生成されてから削除されるまでいくつかの状態に遷移します。リアルタイムOSでは、優先度ベースの「プリエンプション方式」のタスクスケジューリングを採用しており、常に最も高い優先度のタスクが実行状態になります。

 今回も問題の解答に続いて、タスクの状態遷移と優先度について解説します。この機会にしっかりと理解しておきましょう。

 それでは、解答を発表します!


問題11

次のうち、タスクの状態遷移に関する記述として、正しいものはどれか?

ア.タスク生成によって休止状態にあるタスクは、タスク起動によって実行可能状態に遷移する。
イ.現在実行状態にあるタスクは、自分より優先度が高いタスクが実行可能状態になると、
   待ち状態に遷移する。
ウ.現在実行状態にあるタスクは、自分と同じ優先度のタスクが実行可能状態になると、
   実行可能状態に遷移する。
エ.現在入出力の完了を待っている待ち状態にあるタスクは、入出力が完了すると、
   実行状態に遷移する。

答え. (←クリック)


【問題11】の補足

 以外の記述には、誤りがあります。

 は「待ち状態に遷移する」が誤りです。現在実行状態にあるタスクは、自分よりも優先度の高いタスクが実行可能状態になると、実行可能状態に遷移します。は「実行可能状態に遷移する」が誤りです。現在実行状態にあるタスクが実行可能状態に遷移するのは、自分より優先度の高いタスクが実行可能状態になった場合のみです。は「実行状態に遷移する」が誤りです。待ち状態のタスクは、入出力の完了など、待ち状態が解除されるイベントがあると実行可能状態に遷移します。

タスクの状態遷移

 タスクは、ソフトウェアで処理を実行する最小単位です。複数のタスクを切り替えながら実行していくことで、ソフトウェアのさまざまな機能を実現します。ただし、タスクの処理は、いきなり実行されるわけではありません。タスクは、次に示すように、生成されてから削除されるまで、いくつかの状態に遷移します(表1)(図1)

表1 タスクの状態
タスクの状態
説明
遷移
未生成状態
タスクが生成されていない、あるいは削除されており、システムにおいてタスクが認識されていない状態 ・タスク生成のシステムコール→休止状態
休止状態
(Dormant)
タスクが起動されていない、あるいは実行を終了した状態 ・タスク起動のシステムコール→実行可能状態
・タスク削除のシステムコール→未生成状態
実行可能状態
(Ready)
実行の準備が整い、ディスパッチを待っている状態 ・ディスパッチ→実行状態
実行状態
(Run)
実際に処理が実行されている状態 ・プリエンプション→実行可能状態
・タスク終了のシステムコール→休止状態
待ち状態
(Wait)
入出力の完了、タイマによる待機など、処理の実行に必要な条件が整うまで待機している状態 ・待ち解除の条件が満たされた場合→実行可能状態

図1 タスクの状態遷移

 MPUコアが1つのマルチタスク環境では、実行状態のタスクは常に1つです。次に実行するタスクを決めることをタスクの「スケジューリング」、タスクを実行状態に遷移させることをタスクの「ディスパッチ」といいます。そして、タスクのスケジューリングとディスパッチを行うソフトウェアを「タスクスケジューラ」といいます。

タスクのスケジューリング方式

 続いて、主なスケジューリング方式を表2に示します。

表2 タスクのスケジューリング方式
方式
説明
優先度方式 タスクに優先度を与え、最も優先度の高いタスクを実行する方式
到着順方式 「FCFS(First Come, First Served)方式」ともいう。起動された(実行可能状態になった)順にタスクを実行する方式
ラウンドロビン方式 各タスクをあらかじめ決めた一定時間(タイムスライス)だけ実行し、時間内に処理が終了しなければ実行を中断して、タスクの待ち行列の末尾にそのタスクを置く方式
最短処理時間方式 予想処理時間が短い順にタスクを実行する方式

 また、条件が満たされた場合(より優先度の高いタスクが実行可能状態になった場合など)、現在実行中のタスクを中断して実行可能状態に遷移させ、新たにタスクのディスパッチを行う方式を「プリエンプション方式」といいます。現在実行中のタスクの処理が終了するまでディスパッチが発生しない方式を「ノンプリエンプション方式」といいます。

リアルタイムOSのタスクスケジューリング

 組み込みシステムでは、処理のリアルタイム性を確保することが求められます。そのため、リアルタイムOSでは、一般的に優先度をベースとしたプリエンプション方式のタスクスケジューリングを行います。

 優先度ベースのプリエンプション方式では、実行可能状態にある複数のタスクの中で最も優先度の高いタスクがディスパッチされ、実行状態に遷移します。現在実行中のタスクより優先度の高いタスクが実行可能状態になると、現在実行中のタスクが実行可能状態に遷移し(これをプリエンプションという)、優先度の高いタスクがディスパッチされます。つまり、常に最も高い優先度のタスクが実行状態にあるということです。

 なお、タスクの優先度が同じ場合には、通常「到着順方式」が適用されます。現在実行中のタスクと同じ優先度のタスクが実行可能状態になった場合、プリエンプションは行われません。

 タスクスケジューラは、「TCB(Task Control Block)」の情報を基にタスクを制御します。TCBには、タスクのスケジューリングに必要な情報として、タスク番号、タスクの優先度、タスクの現在の状態、タスクの開始アドレスやスタック領域のアドレスなどが格納されます。タスクの生成時にそのタスク用にTCBが生成され、タスクの起動時にそのTCBが「レディキュー(実行待ち行列)」に配置されます。

 例えば、優先度を高い順に1、2、3……とする場合、優先度1のタスクAが実行状態のとき、レディキューには優先度順にタスクのTCBが配置されます。優先度が同じ場合は、起動順(実行可能状態になった順)です。タスクAが入出力の完了などを待機するために待ち状態に遷移した場合、レディキューの先頭にあるタスクBが実行状態に遷移します。タスクAの待ち状態が解除され、再度実行可能状態に遷移したときには、レディキューにおいて同じ優先度のタスクの末尾に配置されます(図2)

図2 リアルタイムOSにおけるタスクスケジューリングの例

注意しなければならないこと

 優先度ベースのプリエンプション方式のタスクスケジューリングでは、常に最も優先度の高いタスクが実行されます。そのため、組み込みシステムでは、ハードリアルタイム性が求められる処理を実行するタスクに高い優先度を設定し、ほかの処理に中断されず、かつ厳しい制限時間内に処理を完了するようにしなければなりません。

 また、割り込み処理にも注意する必要があります。割り込みハンドラは、通常タスクより優先度が高くなるため、割り込み処理が多い場合には、タスクが実行状態になりません。さらに、割り込みハンドラから優先度の高いタスクを生成して起動しても、割り込みハンドラが終了するまでそのタスクは実行可能状態に遷移しません。

 組み込みシステムでは、タスクで実行する処理の内容とその優先度、割り込みとの関係をよく検討し、タスク分割と優先度の設定を行う必要があります。

技術要素から開発技術、管理技術へ

 本連載は以上で終了です。これまでに、ETECクラス2の出題範囲の技術要素に該当する演習問題を解きながら、「エンジニアなら知っておきたい基礎のキソ」を解説してきました。しかし、連載第1回で紹介したETECクラス2試験の出題範囲を見て分かるとおり、本連載で解説した範囲はその半分ほどです。「えーっ。覚えることが多過ぎるよ!」と思う方もいるかもしれませんが、ここであきらめないでください。少しずつでも前に進もうという気持ちが何より大切です。

予告

 実は現在、新しい連載を企画しています。新連載では、技術要素のスキル項目をいくつか解説した後、組み込みシステム開発で求められる開発技術や管理技術の基本を紹介する予定です。技術的な知識だけではなく、どのように組み込みソフトウェアを開発していくのかを学習していきましょう。(新連載に続く)

関連リンク:
組込みソフトウェア技術研修講座イーラーニング(サンプルIDプレゼント中)
http://www.certpro.jp/elearning.html
組込みソフトウェア技術者試験クラス2試験対策問題集(ETEC-SW2)(サンプルIDプレゼント中)
http://www.certpro.jp/etecsw2test.html

筆者プロフィール
  株式会社サートプロ 代表取締役社長
社団法人 組込みシステム技術協会 ETEC運営事務局
近森 満(ちかもり みつる)

大手電気メーカー、外資系IT教育ベンダ、オープンソース系技術者資格認定団体などを経て、2006年より組み込みシステム分野の人材育成・教育支援を行う株式会社サートプロを設立する。現在は、ETEC運営事務局としてJASAの組込みソフトウェア技術者試験の普及・啓蒙(けいもう)活動のほか、組み込み人材育成と教育支援事業を行う。

Copyright © ITmedia, Inc. All Rights Reserved.