JP5458987B2 - タスクスケジュール装置及びタスクスケジュール方法 - Google Patents

タスクスケジュール装置及びタスクスケジュール方法 Download PDF

Info

Publication number
JP5458987B2
JP5458987B2 JP2010059519A JP2010059519A JP5458987B2 JP 5458987 B2 JP5458987 B2 JP 5458987B2 JP 2010059519 A JP2010059519 A JP 2010059519A JP 2010059519 A JP2010059519 A JP 2010059519A JP 5458987 B2 JP5458987 B2 JP 5458987B2
Authority
JP
Japan
Prior art keywords
time
processing
task
tasks
cycle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010059519A
Other languages
English (en)
Other versions
JP2011192166A (ja
Inventor
廣治 西田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2010059519A priority Critical patent/JP5458987B2/ja
Publication of JP2011192166A publication Critical patent/JP2011192166A/ja
Application granted granted Critical
Publication of JP5458987B2 publication Critical patent/JP5458987B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、タスクスケジュール装置及びタスクスケジュール方法に係り、特に、より安全な処理及びCPU(Central Processing Unit)使用効率の向上を実現させるためのタスクスケジュール装置及びタスクスケジュール方法に関する。
従来、複数のタスクをCPUに割り当て、所定の順序でタスクを処理させるためのスケジューリング手法が知られており、複数のタスクを割り当てる場合において、高い安全性が求められるソフトウェアにはシングルスレッド方式が優れていることが知られている(例えば、非特許文献1参照)。
ここで、シングルスレッド方式は、一連のプログラムを予め決めた一定の周期、一定の順序で動作させる方式である。なお、順序としては、例えば入力、処理、出力等の順とし、また一連の処理の途中で入力及び内部状態が不用意に変化しないようにするため、プログラム同士が互いに干渉しない構造を有する。
ここで、上述のシングルスレッド方式を実施するうえでの条件について説明すると、まず第1の条件は、スレッド実行時に割込みを受け付けないというものである。つまり、タスクの動作中に割込みを受け付けず、一連の処理の最終タスクが終わって再度スレッドの先頭タスクに戻る際に、初めて割込みの有無と要因とを分析し、次のスレッドで対応する処理を行う。また、第2の条件は、処理はサイクリックに行うというものである。つまり、イベント生成に応じて必要な処理を行うのではなく、シングルスレッドで繰り返し処理されるため、同じ処理がサイクリックに行われる。
また、第3の条件は、タスク間通信には非対称な受信チェックを行うというものである。また、第4の条件は、入力変化にも非対称入力チェックを行うというものである。つまり、入力の変化をそのまま受け入れるのでなく、安全性を配慮した妥当性診断処理を組込む。最後に第5の条件は、入力変化の合理性診断というものである。つまり、入力変化に対しては、非対称診断に加え、処理上の合理性診断を行ったうえで使う。なお、非特許文献1に示す方式は、日本の鉄道保安機器用のOS(Operating System)の要件となっている。
また従来では、優先制御されたマルチプロセスの計算時間配分を求める方法が開示されている(例えば、特許文献1参照)。特許文献1に示されている技術は、一定の測定期間で処理能力の測定を行い、次の測定期間での計算時間配分を求める方法である。
また従来では、優先度の高い方を第1のストリーム処理とし、優先度の低い方を第2のストリーム処理として、第1のストリーム処理の終了時刻に、第2のストリーム処理の開始時刻を同期させる処理が開示されている(例えば、特許文献2参照)。
また従来では、マルチタスクシステムで実行される遅延保証が必要なタスク毎に、そのタスクを実行する周期、その1周期内でそのタスクを実行するために要求された要求処理時間、及びそのタスクの実行遅延の許容範囲を示す許容遅延時間をそれぞれ設定し、各タスクの要求処理時間と許容遅延時間との和による優先度及び各タスクに設定された周期に基づいて各タスクの実行を制御する手法が開示されている(例えば、特許文献3参照)。
更に従来では、統括制御タスクにおける一連の処理が連続的に実行される時間を検出し、ロボット管理タスクの実行時間に対する統括制御タスクの実行時間比率が、実行周期内において予め定めた一定の割合以下となるように制御する手法が開示されている(例えば、特許文献4参照)。
特表2005−524904号公報 特開2006−350828号公報 特開2000−56989号公報 特開2006−48231号公報
樋口文仁 他2名、鉄道保安機器用次世代OS、日本信頼性学会第17会春季信頼性シンポジウム論文集、P27−P30
しかしながら、非特許文献1に示されているシングルスレッド方式では、CPUの処理能力を活かしきれず、また、ソフトウェアを追加した場合にプログラムの改修等が要るという問題点が記載されている。また、非特許文献1に示されている技術は、この問題点を解決するために排他ダブルスレッド方式が提案されているが、当該方式では通常スレッドのタスクが優先スレッドの動作により中断され、優先スレッドの終了で再開することになる。そのため、不定のタイミングでタスクの切り替え処理が発生し、再開アドレスや状態情報の保存・共有のため、例えばレジスタ保存のためオーバフローの可能性があり、非安全であるスタック領域の使用が必要となる。また、当該領域を利用した使用中レジスタの保存や再設定等、処理の途中で内部状態が変化し、非安全な処理が発生するという問題点がある。
更に、特許文献1に示されている技術は、優先制御されたマルチプロセスの計算時間配分を求める方法が記載されているが、これは測定期間の次の測定期間について時間配分をするものであり、測定期間内での時間配分をすることができない。そのため、当該測定期間内で上位レベルの処理時間が大きくなった場合、前回の測定期間で設定した今回の時間配分では時間的に収まらない場合が想定される。
また、特許文献2に示されている技術は、タスク割り当てを動的に一定周期で行うことは記載されているが、タスクによって一定周期と実績終了時刻とに差がある場合には、その時間が非効率になってしまう。
また、特許文献3に示されている技術は、タスクに対する許容遅延時間をそれぞれ設定し、各タスクの要求処理時間と許容遅延時間との和に基づいてタスクを制御するため、前回の実績終了時刻を考慮して、次周期の終了時刻演算に反映するといった動的な制御をすることができず、効率的なタスクの割り当てを行うことができなかった。
更に、特許文献4に示されている技術は、統括制御タスクの実行時間比率が、実行周期内において予め定めた一定の割合以下となるように実行時間比率を調整する技術であるため、前回の実績終了時刻を考慮して、次周期の終了時刻演算に反映するといった動的な制御をすることができず、効率的なタスクの割り当てを行うことができなかった。
本発明は、上述した課題に鑑みてなされたものであって、より安全な処理及びCPU使用効率の向上を実現させるためのタスクスケジュール装置及びタスクスケジュール方法を提供することを目的とする。
上述した課題を解決するために、本件発明は、以下の特徴を有する課題を解決するための手段を採用している。
本発明は、複数のタスクに対するCPU使用時間の割り当てをスケジューリングするタスクスケジューリング装置において、前記複数のタスクの実際の処理時間を計測するクロック部と、前記複数のタスク毎の処理時間を管理する時間管理テーブルと、前記時間管理テーブルに格納された所定の処理周期内で、前記クロック部により得られる前記所定の周期におけるタスク終了時刻の誤差を補正する終了演算・管理部とを有し、前記終了演算・管理部は、前記クロック部により得られる実績終了時刻に基づいて、前記タスク終了時刻の誤差を補正し、次周期の終了時刻に反映させて前記複数のタスクのスケジューリングを行い、前記複数のタスク毎に予め設定したCPU使用時間の時間配分比率に基づいて、前記所定の処理周期内における各タスクの割り当てを行い、前記複数のタスクには、繰り返し型タスクを含み、前記時間配分比率は、多数の周期にまたがって各周期で少しずつ処理を継続する前記繰り返し型タスクが1つの処理周期内で複数存在する場合に、複数の前記繰り返し型タスクが同一の処理周期内で終了するように設定されることを特徴とする。
更に本発明は、複数のタスクに対するCPU使用時間の割り当てをスケジューリングするタスクスケジューリング方法において、前記複数のタスクの実際の処理時間を計測する計測ステップと、前記複数のタスク毎の処理時間を管理する時間管理テーブルに格納された所定の処理周期内で、前記計測ステップにより得られる前記所定の周期におけるタスク終了時刻の演算誤差を補正する終了演算管理ステップとを有し、前記終了演算管理ステップは、前記計測ステップにより得られる実績終了時刻に基づいて、前記タスク終了時刻の誤差を補正し、次周期の終了時刻に反映させて前記複数のタスクのスケジューリングを行い、前記複数のタスク毎に予め設定したCPU使用時間の時間配分比率に基づいて、前記所定の処理周期内における各タスクの割り当てを行い、前記複数のタスクには、繰り返し型タスクを含み、前記時間配分比率は、多数の周期にまたがって各周期で少しずつ処理を継続する前記繰り返し型タスクが1つの処理周期内で複数存在する場合に、複数の前記繰り返し型タスクが同一の処理周期内で終了するように設定されることを特徴とする。
なお、本発明の構成要素、表現又は構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造等に適用したものも本発明の態様として有効である。
本発明によれば、タスクスケジュールに関して、より安全な処理及びCPU使用効率の向上を実現させることができる。また、一連のタスクを予め決めた一定の周期、一定の順序で動作させる方式を用いてCPU資源を最大限に活用することができる。
タスクスケジューリング装置のブロック構成の一例を示す図である。 計算時間管理テーブルの一例を示す図である。 第1の実施形態における終了演算・管理処理の一例を示すフローチャートである。 第1の実施形態における終了時刻の設定処理の一例を示すフローチャートである。 第1の実施形態における終了チェック関数の処理の一例を示すフローチャートである。 第1の実施形態における繰り返し型タスクの一例を示すフローチャートである。 タスクの割り当て内容(第1の実施例)を示すタイムチャートである。 タスクの割り当て内容(第2の実施例)を示すタイムチャートである。 第2の実施形態における終了演算・管理処理の一例を示すフローチャートである。 第2の実施形態における終了チェック関数の処理の一例を示すフローチャートである。 第2の実施形態における終了時刻設定処理の一例を説明するためのフローチャートである。
以下に、本発明におけるタスクスケジュール装置及びタスクスケジュール方法を好適に実施した形態について、図面を用いて説明する。なお、以下に示す実施形態では、一例として、一連のタスクを予め決めた一定の周期、一定の順序で動作させる方式を採用する。また、タスクの動作としては、例えば安全機能タスク、非繰り返し型タスク、繰り返し型タスク等を有し、本実施形態では少なくとも繰り返し型タスクが実行されるものとする。
ここで、安全機能タスク及び非繰り返し型タスクは、安全機能の実施、伝送の送信や受信処理、入力や出力の診断処理等、処理時間が各周期での状態により各周期で変化するタスクである。また、繰り返し型タスクは、例えばRAM(Random Access Memory)の自己診断、ROM(Read Only Memory)の自己診断等、一定の処理を繰り返し実行するタスクである。ここで、RAMの自己診断やROMの自己診断は、CRC(Cyclic Redundancy Check)演算やギャルパット等の診断手法を用いるが、当該手法は使用するRAMやROMの全領域に対してCRC演算等を行うため、上述の一定の周期内では完了せず、多数の周期にまたがって各周期で少しずつ処理をすることになる。
また、RAMの自己診断、ROMの自己診断は、安全CPUの故障を検出するために必須の機能であり、安全度水準を向上させるにはCPU資源を多量に必要とする診断手法を必要とする。そこで、本発明では、繰り返し型タスクの処理を一定周期内で最大のCPUの処理能力を使用して実施するため、繰り返し型タスクについてCPU時間の割り当てを行う。
<第1の実施形態>
図1は、タスクスケジューリング装置のブロック構成の一例を示す図である。図1に示すタスクスケジューリング装置としてのCPU10は、クロック部11と、計算時間管理テーブル12と、終了演算・管理処理部13と、安全機能タスク14と、繰り返し型タスク15と、終了チェック処理部16とを有するよう構成されている。
クロック部11は、CPU10に内蔵されており減算カウンタの機能を有する。例えば、クロック部11は、予め設定されたカウント値を基準として所定のタイミングに基づく減算処理を実行し、カウント0で終了演算・管理処理部13を読み出して起動する。また、クロック部11は、時刻等を格納するレジスタを有しており、レジスタによりソフトウェアとのインタフェースを行う。また、クロック部11は、各周期の終了時刻演算や実績終了時刻を求めるために用いられる。
計算時間管理テーブル12は、終了時刻計算等の計算に必要な情報を有している。なお、計算時間管理テーブル12の具体的な内容については後述する。
終了演算・管理処理部13は、クロック部11による時間計測に基づいて定周期に起動し、終了時刻演算等を行う。また、終了演算・管理処理部13は、所定の順序にしたがってタスクが動作するように管理を行う。具体的には、終了時に次に処理すべきタスクを呼び出す等の処理を行う。
安全機能タスク14は、異常時に停止出力をする等、安全に直接関係する機能を実行するタスクである。また、安全機能タスク14は、図1に示すように繰り返し型タスクを呼び出す。なお、図1には図示していないが、上述した非繰り返し型タスクがある場合、安全機能タスク14は、非繰り返し型タスクを呼び出し、更に非繰り返し型タスクは、タスク実行後に繰り返し型タスク15を呼び出す。
繰り返し型タスク15は、上述したようにRAMの自己診断、ROMの自己診断等一定の処理を繰り返し実行する1又は複数のタスクである。繰り返し型タスク15は、繰り返しの一定の処理間隔で終了チェック処理部16の終了チェック関数を呼び出す。また、繰り返し型タスク15は、終了チェック処理部16から終了指示があれば当該タスクを終了する。
終了チェック処理部16は、予め設定された終了チェック関数により、クロック部11の値と終了時刻を比較して終了時刻に達したか否かを判断する。また、終了チェック処理部16は、終了時刻に達したら実績終了時刻を格納し繰り返し型タスク15の終了指示をする。
ここで、本実施形態では、上述した構成を用いて、繰り返し型タスク15の処理を、一定周期内で最大のCPU10の処理能力を使用して実施するため、繰り返し型タスク15についてCPU時間の割り当てを行う。このとき、CPU時間は、予め指定した標準終了時刻又は周期最大時間から、クロック部11の値を引用して演算した終了時刻を各周期の最初で設定する。
繰り返し型タスク15では、上述した終了チェック処理部16の終了チェック関数を呼び出し、予め設定した時刻に達したか否かをクロック部11の値と比較して確認する。また、設定した時刻に達したら、その繰り返し型タスク15の処理を終了する。また、当該処理は、次の周期で前回終了の次の繰り返し処理から開始する。ここで、本発明では、終了時刻の演算誤差を校正するため、実績終了時刻を測定し、次周期の終了時刻演算に反映する。
つまり、繰り返し型タスク15は、多数の周期にまたがって各周期で少しずつ処理を継続できるよう、ROM自己診断済の最終アドレス等の処理経過情報を有している。したがって、この処理経過情報を用いて、各繰り返し型タスクの全体処理時間を同一周期にすることにより、次の繰り返し型タスクの処理開始周期を制御することができる。例えば、各繰り返し型タスクの全体処理終了の次の周期から次の繰り返し型タスクを開始することができる。これにより、各繰り返し型タスクの全体処理の実行周期を最短にすることもできる。
<計算時間管理テーブル12の具体例について>
次に、上述した計算時間管理テーブル12の具体例について、図を用いて説明する。図2は、計算時間管理テーブルの一例を示す図である。なお、図2(a)は、処理時間基礎データを示し、図2(b)は終了時刻設定テーブルを示し、図2(c)は、時刻補正テーブルを示している。
図2(a)は、所定の処理時間基礎データを予め設定し格納しておく領域であり、項目としては、例えば「処理周期」、「余裕時間」、「処理番号」、「標準終了時刻」、「処理時間」、「時間配分比率」等を有している。ここで、「処理周期」には、終了演算・管理処理を起動する周期を格納する。また、「余裕時間」は、処理が終了してから次の周期が始まるまでの時間誤差等を吸収するための余裕時間を格納する。また、「処理番号」は、繰り返し型タスクの通番を格納する。なお、図2に示す「処理番号」の例では、処理する順番に番号を付与している。
また、「標準終了時刻」は、上述した繰り返し型タスク15に予め与えた周期あたりの繰り返し型タスク処理時間を格納する。また、「処理時間」は、繰り返し型タスク15に予め与えた繰り返し処理の1回分の繰り返しに必要な処理時間を格納する。更に、「時間配分比率」は、当該処理番号の繰り返し型タスク15に与えられた処理時間内の時間配分の比率を示す。
なお、具体的に図2(a)に示す例では、「処理周期」を10msとし、「余裕時間」を1msとしている。また、タスクの処理番号1については、「標準終了時刻」を6msとし、処理周期中の「処理時間」を1msとし、「時間配分比率」を40%とし、また、タスクの処理番号2については、「標準終了時刻」を8msとし、処理周期中の「処理時間」を0.5msとし、「時間配分比率」を60%としている。なお、図2(a)に示す例は、あくまでも一例であり、他の設定条件や他のタスクに対しても同様に設定することができる。
また、1つの処理周期内で処理されるタスク数は、上述したように2つ(処理番号1,処理番号2)に限定されるものではなく、例えば3つ以上でもよい。その場合には、例えば、図2(a)に示す処理時間基礎データの「時間配分比率」は、1つの処理周期内で処理されるタスク数に応じて比率を逐次変更することができる。
また、図2(b)に示す終了時刻設定テーブルは、終了演算・管理処理で演算した処理番号に対応した終了時刻を設定し格納しておく領域であり、項目としては、例えば「処理番号」、「終了時刻」等を有している。また、終了時刻設定テーブルは、CPUクロックであるクロック部11の時刻データに対応した単位で時刻が設定される。
なお、具体的に図2(b)に示す例では、処理番号1,処理番号2に対してそれぞれの「終了時刻」が6ms、8msと設定されている。
また、図2(c)に示す時刻補正テーブルは、処理番号に対応した実績終了時刻を格納しておく領域であり、項目としては、例えば「処理番号」、「実績終了時刻」等を有している。
また、時刻補正テーブルの時刻補正には、処理番号が最大値の繰り返し処理の終了チェック関数が書き込んだクロック部11から得られる時刻データが使用される。なお、具体的に図2(c)に示す例では、処理番号2の実績終了時刻として8.5msが格納されている。この格納される実績終了時刻は、その都度、終了時刻の演算誤差を校正するため、現在の周期で処理されているタスクの実績終了時刻を測定し、その誤差から次周期の終了時刻の演算を行い、その結果を格納する。
<終了演算・管理処理について>
次に、第1の実施形態における終了演算・管理処理部13の終了演算・管理処理について、フローチャートを用いて説明する。図3は、第1の実施形態における終了演算・管理処理の一例を示すフローチャートである。なお、図3に示す終了演算・管理処理は、予め設定された周期で起動される。
図3に示す例では、まず、CPUクロックであるクロック部11の時刻カウンタを設定し、次回に定周期で起動するトリガーとする(S01)。次に、上述した計算時間管理テーブル12のうち、図2(a)に示す処理時間基礎データを読み込み、次に図2(b)に示す終了時刻設定テーブルに終了時刻を設定する(S03)。その後、図2(c)に示す時刻補正テーブルを初期化する。
ここで、上述したS03の処理における終了時刻の設定処理の具体例について、フローチャートを用いて説明する。図4は、第1の実施形態における終了時刻の設定処理の一例を示すフローチャートである。ここで、図4の説明では、一例として処理番号順にタスクを実行するものとし、予めどの程度のタスクがあるか(すなわちタスクの最大値)が把握されているものとする。
図4の処理では、まず処理番号が最大であるか否かを判断し(S11)、最大でない場合(S11において、NO)、図2(a)の処理時間基礎データに含まれる標準終了時刻を図2(b)の終了時刻設定テーブルの終了時刻に設定する(S12)。また、S11の処理において、処理番号が最大である場合(S11において、YES)、次に、図3に示す終了演算・管理処理が、初回の場合、又は、実績終了時刻が処理周期よりも大きい場合(「実績終了時刻>処理周期」の場合)を満たすか否かを判断する(S13)。
ここで、終了演算・管理処理が初回の場合、又は、「実績終了時刻>処理周期」の場合を満たす場合(S13において、YES)、終了時刻を「終了時刻=処理周期−処理時間−余裕時間」として算出する(S14)。また、S13の処理において、終了演算・管理処理が初回の場合、又は、「実績終了時刻>処理周期」の場合を満たさない場合(S13において、NO)、終了時刻を「終了時刻=(処理周期−処理時間)−(終了時刻−実績終了時刻)−余裕時間」として算出する(S15)。また、S14又はS15の処理終了後、図2(b)の終了時刻設定テーブルに算出された終了時刻を設定する(S16)。
<終了チェック関数の具体例について>
次に、第1の実施形態における終了チェック関数の具体例について、フローチャートを用いて説明する。図5は、第1の実施形態における終了チェック関数の処理の一例を示すフローチャートである。
なお、図5に示す終了チェック処理部16の終了チェック関数における処理は、例えば、上述した繰り返し型タスク15から呼ばれるものである。また、図5の例における指示入力時のパラメータとしては、例えば処理番号を用いることとするが、本発明においてはこれに限定されるものではない。
繰り返し型タスクから呼ばれる終了チェック関数は、その呼ばれた指示入力(ENTRY)に対して以下の処理行う。まず、計算時間管理テーブル12からデータを読み込み(S21)、次に、クロック部11のレジスタから時刻を読み込む(S22)。その後、終了時刻超過を判定する。具体的には、S21及びS22の各処理で得られた時刻から、終了時刻を超過しているか否かを判断し(S23)、終了時刻を超過していない場合(S23において、NO)、「継続」を復帰情報とし復帰(RETURN)する(S24)。また、終了時刻を超過した場合(S23において、YES)、計算時間管理テーブル12に実績終了時刻を書き込み、「終了」を復帰情報とし復帰(RETURN)する(S25)。
<繰り返し型タスク15について>
次に、第1の実施形態における繰り返し型タスク15の具体例について、フローチャートを用いて説明する。図6は、第1の実施形態における繰り返し型タスクの一例を示すフローチャートである。図6に示す繰り返し型タスク15では、まず、処理経過情報等の繰り返しのためのデータを設定し(S31)、予め設定された繰り返し型タスク15の処理が実施される(S32)。なお、S32の処理において、予め設定された繰り返し型タスクの処理とは、例えばRAMの自己診断やROMのCRC演算による自己診断の処理等が行われるが、本発明においてはこれに限定されるものではない。
次に、S32の処理により得られる処理経過情報を保存する(S33)。なお、S33の処理としては、例えば自己診断済の最終アドレス等の処理経過情報を保存する等があるが、本発明においてはこれに限定されるものではない。
また、S33の処理が終了後、上述した終了チェック関数を呼び出す(S34)。ここで、S34の処理における終了チェック関数の復帰情報が「継続」は否かを判断し(S35)、継続である場合(S35において、YES)、S32に戻り以降の処理を行う。また、S35の処理において、復帰情報が「継続」でない場合(S35において、NO)、上述した通り復帰情報が「終了」となっているため、次に、繰り返し型タスク15の全処理が終了したか否かを判断する(S36)。なお、S36の処理としては、例えばRAMの自己診断やROMのCRC演算による自己診断を完了した等、繰り返し型タスクの全処理終了が終了したか否かが判断されるが、本発明においてはこれに限定されるものではない。
ここで、繰り返し型タスク15の全処理が終了していない場合(S36において、NO)、当該周期での処理を終了する。また、繰り返し型タスク15の全処理が終了した場合(S36において、YES)、処理経過情報をクリアして(S37)、例えば1時間置き等の指定したタイミングで始めからスタートする。
なお、上述した図6に示す繰り返し型タスク15において、S32〜S35の処理は、上述した計算時間管理テーブル12における「処理時間」の対象範囲となる。
<タイムチャート例>
<第1の実施例>
ここで、上述した第1の本実施形態における各タスク処理のタイムチャート例について、図を用いて説明する。図7は、タスクの割り当て内容(第1の実施例)を示すタイムチャートである。図7に示すタイムチャートでは、各タスクの前後関係や処理周期、終了時刻、実績終了時刻の関係を示している。
なお、図7の縦軸には優先順位を示し、横軸は時間を示す。つまり、図7に示す第1の実施例では、タスクの優先順位を全部同一にして示しているが、優先順位のレベルが異なるタスクを複数有する場合でも以下に示す手法と同様の処理を行うことができる。ただし、安全上の面からは図7に示すようなノンプリエンプティブスケジューリング法が好ましい。
図7の例では、1つの処理周期内に「終了演算・管理処理」、「安全機能タスク」、「非繰り返し型タスク」、「繰り返し型タスク 処理番号1」、「繰り返し型タスク 処理番号2」を行う旨が示されている。図7に示すように、予め繰り返し型タスクの処理番号1及び処理番号2における標準終了時刻は、上述した計算時間管理テーブル12の図2(a)に示す処理時間基礎データに設定されている。したがって、その基礎データを読み込み、処理番号1及び処理番号2の終了時刻が設定される。
ここで、実際の繰り返し型タスクは、例えばその実行されているタスクの内容や処理性能、割込処理への対応等により標準終了時刻と合わない場合がある。そのため、図7の例では、実際に1回目の処理周期で所定のタスク処理が行われた場合、処理番号1の処理は標準終了時刻と同時刻に終了したとしても、処理番号2の処理は終了時刻を超えてしまう場合がある。例えば、処理番号2の標準終了時刻が8msであった場合に、その実績の終了時刻が8.5msであったとする。このような場合には、上述した図2(c)に示す時刻補正テーブルにその処理番号に対する実績終了時刻がセットされる。
そして、図7に示す処理周期(2回目)に対する終了演算・管理処理により、上述した処理周期(1回目)により時刻補正された実績終了時刻を基準にしてタスクに対するCPU資源の割り当てを行うことで、所定の処理周期内でCPUの使用効率を向上させた処理を行うことができる。したがって、図7に示すように、1処理周期内における余裕時間も考慮して適切なタスクスケジューリングがなされている。余裕時間は、図7に示すように各処理周期内の最後に設けてもよく、また最初に設けてもよい。
また、本実施形態においては、上述したような手法を、処理周期の3回目や4回目以降にも適用し、現在の処理周期における実績終了時刻を測定し、次周期の終了時刻演算に反映させることで、一定周期内で最大のCPUの処理能力を使用するタスクのCPU時間の割り当てを、動的に周期内で行うことができる。したがって、安全且つCPUの使用効率を向上させたタスクスケジューリングを実現することができる。
<第2の実施例>
次に、タイムチャートの第2の実施例について説明する。図8は、タスクの割り当て内容(第2の実施例)を示すタイムチャートである。図8に示すタイムチャートでは、図7と同様に、タスクの前後関係や処理周期、終了時刻、実績終了時刻の関係を示しているため、ここでの具体的な説明については、省略する。
図8に示す第2の実施例では、1回目の処理周期において、繰り返し型タスクの処理番号2の処理が終了したとする。この場合、処理番号2は終了しているので、2回目の処理周期については、処理番号1にCPU資源が多く割り当てることができる。つまり、図8に示す2回目の処理周期については、上述した計算時間管理テーブル12の図2(a)に示す処理時間基礎データから得られる処理番号1及び処理番号2の時間配分比率に関係なく、割り当てが行われる。したがって、2回目の処理周期においては、「終了演算・管理処理」、「安全機能タスク」、「非繰り返し型タスク」の時間の割り当てが終了した後の残りの時間に、まだ処理が終了していない「繰り返し型タスク 処理番号1」の処理のみを割り当てる。
上述したように、本実施形態によれば、タスク終了時刻の演算誤差を校正するため、実績終了時刻を測定し、次周期の終了時刻演算に反映させることで、一定周期内で最大のCPUの処理能力を使用するタスクのCPU時間の割り当てを動的に周期内で行うことができる。
<第2の実施形態>
次に、第2の実施形態について説明する。第2の実施形態では、図2(a)の処理時間基礎データに含まれる各タスクの処理番号に予め設定されている時間配分比率を用いて繰り返し型タスクの時間配分を行うものである。
なお、時間配分比率による繰り返し型タスクの時間配分を行う場合にも上述した図1に示す第1の実施形態のブロック構成と同様の構成を用いることができるため、ここでの具体的な説明は省略する。
第2の実施形態において、複数の繰り返し型タスク15の処理を一定周期内に時間割り付けする場合には、予め繰り返し型タスク毎に図2(a)に示すような時間配分比率を割り当てておくことで、繰り返し型タスクの処理完了時刻を調整することができる。具体的には、各繰り返し型タスク15の全体処理時間を予め設定しておき、それから各周期での実行時間を減算し、以下に示す式(1)に示すように、
残処理時間i=全体処理時間i−Σ各周期での実行時間ni ・・・(1)
の演算から残処理時間を各繰り返し型タスク間で均しくすることにより、各繰り返し型タスクの終了する周期を同一にするすることが可能である。なお、上述した式(1)において、iは繰り返し型タスクの処理番号を示し、nは周期の通し番号を示す。つまり、以下に示す式(2)とすることにより終了する周期を同一にすることができる。
残処理時間i=残処理時間j ・・・(2)
なお、上述した式(2)において、i,jは繰り返し型タスクの処理番号を示す。
更に、各繰り返し型タスクの全体処理時間を同一周期にすることにより、次の繰り返し型タスクの処理開始周期を制御することができる。したがって、時間配分比率を、1つの処理周期内で処理される複数の繰り返し型タスクの終了が同一になるように設定することができる。なお、時間配分比率は、繰り返し型タスク毎の標準終了時間等に基づいてい予め固定値に設定されていてもよく、また処理周期毎に変更してもよい。
なお、第2の実施形態では、上述した第1の実施形態と比較すると、終了演算・管理処理のフローチャートや終了チェック関数における処理のフローチャートが異なり、その他が略同一である。したがって、以下では、その異なる部分について具体的に説明する。
<終了演算・管理処理について>
まず、第2の実施形態における終了演算・管理処理部13の終了演算・管理処理について、フローチャートを用いて説明する。図9は、第2の実施形態における終了演算・管理処理の一例を示すフローチャートである。図9に示す時間配分比率による繰り返し型タスクの時間配分を行う場合の終了演算・管理処理では、まずCPUクロックであるクロック部11の時刻カウンタを設定し、それを次回に定周期で起動するトリガーとする(S41)。また、上述した計算時間管理テーブル12の終了時刻テーブルを初期化して(S42)、処理が終了する。
<終了チェック関数の具体例について>
次に、第2の実施形態における終了チェック関数の具体例について、フローチャートを用いて説明する。図10は、第2の実施形態における終了チェック関数の処理の一例を示すフローチャートである。
なお、図10に示す終了チェック処理部16の終了チェック関数における処理は、例えば、上述した繰り返し型タスク15から呼ばれるものである。また、図10の例における指示入力時のパラメータとしては、例えば処理番号を用いることとするが、本発明においてはこれに限定されるものではない。
図10に示すように、第2の実施形態において繰り返し型タスク15から呼ばれる終了チェック関数は、その呼ばれた指示入力(ENTRY)に対して以下の処理行う。まず、計算時間管理テーブル12からデータを読み込み(S51)、次に、クロック部11のレジスタから時刻を読み込む(S52)。その後、周期の初回か否かを判断する(S53)。
ここで、S53の処理としては、例えば計算時間管理テーブル12の終了時刻テーブルが初期化されているか否かで判断し、初期化されている場合には周期の初回であると判断する。なお、S53の処理においては上述した内容に限定されるものではない。
S53の処理において、周期の初回である場合(S53において、YES)、上述した計算時間管理テーブル12の図2(b)に示す終了時刻設定テーブルに終了時刻を設定する(S54)。なお、S54の処理の具体例については、後述する。また、S54の処理後、計算時間管理テーブル12の図2(c)に示す時刻補正テーブルを初期化する(S55)。
また、S53の処理において、周期の初回でない場合(S53において、NO)、その後、終了時刻超過を判定する。具体的には、S51及びS52の各処理で得られた時刻から、終了時刻を超過しているか否かを判断し(S56)、終了時刻を超過していない場合(S56において、NO)、「継続」を復帰情報とし復帰(RETURN)する(S57)。また、終了時刻を超過した場合(S56において、YES)、計算時間管理テーブル12に実績終了時刻を書き込み、「終了」を復帰情報とし復帰(RETURN)する(S58)。
<第2の実施形態における終了時刻設定処理>
次に、上述したS54の処理における終了時刻設定処理の具体例について、フローチャートを用いて説明する。図11は、第2の実施形態における終了時刻設定処理の一例を説明するためのフローチャートである。図11に示す例では、まず、上述した計算時間管理テーブル12の図2(b)に示す終了時刻設定テーブルに終了時刻を設定する場合には、まず、上述した図2(a)に示す計算時間基礎データの時間配分比率にしたがい、「処理周期−余裕時間−現在時刻」を配分する(S61)。なお、図2(a)の例では、処理番号1の「時間配分比率」は40%であり、処理番号2の「時間配分比率」は60%である。したがって、上記の比率にしたがって、「処理周期−余裕時間−現在時刻」により得られた時間を処理するタスク毎に分配する。また、「配分した時間−処理時間」を終了時刻に設定する(S62)。
ここで、処理番号が最大の場合で、「実績終了時刻>処理周期」の場合を満たすか否かを判断し(S63)、処理番号が最大の場合で、「実績終了時刻>処理周期」の場合を満たす場合(S63において、YES)、終了時刻を「終了時刻=配分した時間−余裕時間」として算出する(S64)。また、処理番号が最大の場合で、「実績終了時刻>処理周期」の場合を満たさない場合(S63において、NO)、終了時刻を「終了時刻=配分した時間−(終了時刻−実績終了時刻)−余裕時間」として算出する(S65)。また、S64又はS65の処理終了後、終了時刻設定テーブルに算出された終了時刻を設定する(S66)。
なお、上述した各実施形態では、繰り返し型タスクを2つ用いて説明しているが、1つの処理周期内で実行されるタスク数については、本発明においてはこれに限定されるものではなく、3以上のタスクにおいても適用できる。その場合には、例えば、図2(a)に示す処理時間基礎データの時間配分比率は、1つの処理周期内で処理されるタスク数に応じて比率を逐次変更することができる。
このように、第2の実施形態により、複数のタスクを予め設定したCPU時間配分比率にしたがい、一定周期内で割り当てることで、例えば、処理番号が異なる複数のタスクを同一又は近似するタイミングで終了させるといった配分も行うことができ安全性や機能性に優れたスケジュール方式を提供することができる。
なお、上述した第1の実施形態及び第2の実施形態を組み合わせても本発明における効果を得ることができる。
上述したように、本発明によれば、タスクスケジュールに関して、より安全な処理及びCPU使用効率の向上を実現させることができる。また、本発明によれば、一連のタスクを予め決めた一定の周期、一定の順序で動作させる方式を用いてCPU資源を最大限に活用することができる。
更に、本発明を適用することで、終了チェック関数を呼び出す処理部分等の少ない改造でプリエンプティブスケジューリングをタスクの切り替えが不要なシングルスレッド方式のノンプリエンプティブスケジューリングに変更することができる。
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
10 CPU(タスクスケジューリング装置)
11 クロック部
12 計算時間管理テーブル
13 終了演算・管理処理部
14 安全機能タスク
15 繰り返し型タスク
16 終了チェック処理部

Claims (2)

  1. 複数のタスクに対するCPU使用時間の割り当てをスケジューリングするタスクスケジューリング装置において、
    前記複数のタスクの実際の処理時間を計測するクロック部と、
    前記複数のタスク毎の処理時間を管理する時間管理テーブルと、
    前記時間管理テーブルに格納された所定の処理周期内で、前記クロック部により得られる前記所定の周期におけるタスク終了時刻の誤差を補正する終了演算・管理部とを有し、
    前記終了演算・管理部は、前記クロック部により得られる実績終了時刻に基づいて、前記タスク終了時刻の誤差を補正し、次周期の終了時刻に反映させて前記複数のタスクのスケジューリングを行い、
    前記複数のタスク毎に予め設定したCPU使用時間の時間配分比率に基づいて、前記所定の処理周期内における各タスクの割り当てを行い、
    前記複数のタスクには、繰り返し型タスクを含み、前記時間配分比率は、多数の周期にまたがって各周期で少しずつ処理を継続する前記繰り返し型タスクが1つの処理周期内で複数存在する場合に、複数の前記繰り返し型タスクが同一の処理周期内で終了するように設定されることを特徴とするタスクスケジューリング装置。
  2. 複数のタスクに対するCPU使用時間の割り当てをスケジューリングするタスクスケジューリング方法において、
    前記複数のタスクの実際の処理時間を計測する計測ステップと、
    前記複数のタスク毎の処理時間を管理する時間管理テーブルに格納された所定の処理周期内で、前記計測ステップにより得られる前記所定の周期におけるタスク終了時刻の演算誤差を補正する終了演算管理ステップとを有し、
    前記終了演算管理ステップは、前記計測ステップにより得られる実績終了時刻に基づいて、前記タスク終了時刻の誤差を補正し、次周期の終了時刻に反映させて前記複数のタスクのスケジューリングを行い、
    前記複数のタスク毎に予め設定したCPU使用時間の時間配分比率に基づいて、前記所定の処理周期内における各タスクの割り当てを行い、
    前記複数のタスクには、繰り返し型タスクを含み、前記時間配分比率は、多数の周期にまたがって各周期で少しずつ処理を継続する前記繰り返し型タスクが1つの処理周期内で複数存在する場合に、複数の前記繰り返し型タスクが同一の処理周期内で終了するように設定されることを特徴とするタスクスケジューリング方法。
JP2010059519A 2010-03-16 2010-03-16 タスクスケジュール装置及びタスクスケジュール方法 Expired - Fee Related JP5458987B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010059519A JP5458987B2 (ja) 2010-03-16 2010-03-16 タスクスケジュール装置及びタスクスケジュール方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010059519A JP5458987B2 (ja) 2010-03-16 2010-03-16 タスクスケジュール装置及びタスクスケジュール方法

Publications (2)

Publication Number Publication Date
JP2011192166A JP2011192166A (ja) 2011-09-29
JP5458987B2 true JP5458987B2 (ja) 2014-04-02

Family

ID=44796980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010059519A Expired - Fee Related JP5458987B2 (ja) 2010-03-16 2010-03-16 タスクスケジュール装置及びタスクスケジュール方法

Country Status (1)

Country Link
JP (1) JP5458987B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2610746A1 (en) * 2011-12-30 2013-07-03 bioMérieux Job scheduler for electromechanical system for biological analysis
KR101934338B1 (ko) * 2017-08-25 2019-03-18 오스템임플란트 주식회사 업무 관리 시스템, 방법 및 기록 매체
JP7250651B2 (ja) * 2019-09-26 2023-04-03 日立建機株式会社 作業機械
JP2023104586A (ja) * 2022-01-18 2023-07-28 株式会社オートネットワーク技術研究所 車載制御装置、制御方法及びコンピュータプログラム
JP2023104533A (ja) * 2022-01-18 2023-07-28 株式会社オートネットワーク技術研究所 車載制御装置、制御方法及びコンピュータプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10133889A (ja) * 1996-10-28 1998-05-22 Omron Corp コントローラの制御周期設定方法および装置
JP2000056989A (ja) * 1998-08-03 2000-02-25 Chokosoku Network Computer Gijutsu Kenkyusho:Kk タスク設計方法
JP2009151375A (ja) * 2007-12-18 2009-07-09 Toshiba Corp ジョブスケジューリング方法

Also Published As

Publication number Publication date
JP2011192166A (ja) 2011-09-29

Similar Documents

Publication Publication Date Title
US8713571B2 (en) Asynchronous task execution
JP5458987B2 (ja) タスクスケジュール装置及びタスクスケジュール方法
US7870554B2 (en) Process scheduler employing ordering function to schedule threads running in multiple adaptive partitions
US8631409B2 (en) Adaptive partitioning scheduler for multiprocessing system
Gutiérrez et al. On the schedulability analysis for distributed hard real-time systems
US8434086B2 (en) Process scheduler employing adaptive partitioning of process threads
Xu et al. Improved deadline miss models for real-time systems using typical worst-case analysis
JP5687666B2 (ja) スケジューリング装置、システム、方法およびプログラム
US20050015766A1 (en) Time deadline based operating system
CN114625507A (zh) 基于有向无环图的任务调度方法、系统、设备及存储介质
Caccamo et al. Sharing resources among periodic and aperiodic tasks with dynamic deadlines
RU2603497C2 (ru) Способ управления исполнением задачи в компьютерной системе
Xie et al. Safety enhancement for real-time parallel applications in distributed automotive embedded systems: A stable stopping approach
Beckert et al. Zero-time communication for automotive multi-core systems under SPP scheduling
Marau et al. Performing flexible control on low-cost microcontrollers using a minimal real-time kernel
Naghibzadeh A modified version of rate-monotonic scheduling algorithm and its' efficiency assessment
US8997111B2 (en) System and method for deterministic context switching in a real-time scheduler
US9442761B2 (en) Sequence controller
US11055163B2 (en) Method and device for error handling in a communication between distributed software components
US20200310693A1 (en) Application execution apparatus and application execution method
JP6729430B2 (ja) 電子制御装置
Gifford et al. Multi-mode on Multi-core: Making the best of both worlds with Omni
Naik et al. Modified IUF Scheduling Algorithm for Real Time Systems
CN110955616A (zh) 用于访问共享资源的系统和方法
US11048575B2 (en) Method and device for error handling in a communication between distributed software components

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131230

R150 Certificate of patent or registration of utility model

Ref document number: 5458987

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees