(57)【要約】【課題】様々な処理時間を有する複数のタスクで構成されるプログラムに対して、プロセッサ数にかかわらず最適または準最適なスケジューリングが可能なタスク管理装置を提供する。【解決手段】マルチプロセッサシステムで、空状態となったプロセッサで実行させるタスクを複数のタスクの中から選出するスケジューラＳＫを備え、複数のタスクには所定のタスクの実行済みを条件として実行可能となるタスクが存在し、スケジューラは、クリティカルパス上に存在するタスクを優先的に選出するように予め設定された各タスクの優先順位に基づいて、実行可能タスクを選出する静的選出手段と、未実行タスクの実行条件になっているタスクの数が所定値よりも多い場合に、静的選出手段よりも優先して、実行可能タスクのうち当該タスクを実行することによって新たな実行可能タスクが発生する可能性の高いタスクを優先的に選出する動的選出手段とを備えている。【選択図】図１
2008171153.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムで、空き状態となったプロセッサで実行させるタスクを複数のタスクの中から選出するスケジューラを備えたタスク管理装置であって、
前記複数のタスクには、所定のタスクの実行済みを条件として実行可能となるタスクが存在するものであり、前記スケジューラは、クリティカルパス上に存在するタスクを優先的に選出するように予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行タスクを選出する静的選出手段と、未実行タスクの実行条件になっているタスクの数が所定値よりも多い場合に、前記静的選出手段よりも優先して、実行可能タスクのうち当該タスクを実行することによって新たな実行可能タスクが発生する可能性の高いタスクを優先的に選出する動的選出手段とを備えていることを特徴とするタスク管理。
【請求項２】
前記複数のタスクは各タスクが有向枝で階層的に接続されたタスクグラフで関連付けられるプログラムの構成要素であり、
前記スケジューラは、前記タスクグラフに基づいて実行可能タスク数より未処理の子孫タスクの平均親タスク数が多いときに、前記静的選出手段よりも優先して前記動的選出手段を選択する選択切替手段を備えている請求項１記載のタスク管理装置。
【請求項３】
前記静的選出手段は前記タスクグラフに沿った各タスクの総実行時間が最長となるクリティカルパス上の実行可能タスクであって階層が上位にある実行可能タスクを優先的に選出し、前記動的選出手段は未処理の親タスク数の少ない子タスクを持つ実効可能タスクを優先的に選出するものである請求項１または２記載のタスク管理装置。
【請求項４】
前記スケジューラは、前記選択切替手段により前記動的選出手段が選択されたときに、次の空プロセッサの発生時刻を基準に実行可能なタスクのうち前記タスクグラフに沿った各タスクの総実行時間が最長となるクリティカルパス上のタスクの実行時間と、当該クリティカルパス上のタスクを除いたタスクの総実行時間を残りのプロセッサ数で除した平均実行時間に基づいて、前記動的選出手段により選出された実行可能タスクを実行させるか否かを判断するチェック手段を備えている請求項２または３記載のタスク管理装置。
【請求項５】
前記スケジューラは、前記チェック手段により前記クリティカルパス上のタスクの実行時間よりも前記平均実行時間が長いと判断されたときに、前記動的選出手段により選出された実行可能タスクを実行させる請求項４記載のタスク管理装置。
【請求項６】
前記タスクグラフに沿った各タスクの総実行時間の長いクリティカルパス上の実行可能タスクであって余分枝を削除した子孫タスク数の多い実行可能タスクを優先的に選出する第二静的選出手段を備え、前記スケジューラは、前記チェック手段により前記クリティカルパス上のタスクの実行時間よりも前記平均実行時間が短いと判断されたときに、前記第二静的選出手段により選出された実行可能タスクを実行させる請求項４または５記載のタスク管理装置。
【請求項７】
前記複数のタスクは、自己の処理時間情報と、自己を含む後続タスクの処理時間が最長となるクリティカルパス情報と、階層レベル情報と、余分枝削除後の後続タスク情報からなるタスク属性情報を備えて管理され、前記スケジューラは、前記タスクグラフと前記タスク属性情報に基づいて実行可能タスクから実行タスクを選出する請求項１から６の何れかに記載のタスク管理装置。
【請求項８】
マルチプロセッサシステムで、空き状態となったプロセッサで実行させるタスクを複数のタスクの中から選出するスケジューラを備えたタスク管理装置であって、
前記複数のタスクには、所定のタスクの実行済みを条件として実行可能となるタスクが存在するものであり、前記スケジューラは、クリティカルパス上に存在するタスクを優先的に選出するように予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行を行うタスクを選出する静的選出手段と、未実行状態にあるタスクで、クリティカルパス上にないタスクの総処理時間が所定値よりも長い場合に、前記静的選出手段よりも優先して、実行可能タスクのうちの当該タスクを実行することによって新たな実行可能タスクが発生する可能性の高いタスクを優先的に選出する動的選出手段とを備えていることを特徴とするタスク管理。
【請求項９】
マルチプロセッサシステムで、空き状態となったプロセッサで実行させるタスクを複数のタスクの中から選出するスケジューラを備えたタスク管理装置であって、
前記複数のタスクには、所定のタスクの実行済みを条件として実行可能となるタスクが存在するものであり、前記スケジューラは、クリティカルパス上に存在するタスクを優先的に選出し、かつ、実行可能になるまでに実行が必要なタスクが少ないタスクが優先的に選出するように、予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行を行うタスクを選出する第一の静的選出手段と、未実行タスクの実行条件になっているタスクの数が所定値よりも多く、かつ、未実行状態にあるタスクで、クリティカルパス上にないタスクの総処理時間が所定値よりも長い場合に、前記第一の静的選出手段よりも優先して、実行可能タスクのうち当該タスクを実行することによって新たな実行可能タスクが発生する可能性の高いタスクを優先的に選出する動的選出手段と、未実行タスクの実行条件になっているタスクの数が所定値よりも多く、かつ、未実行状態にあるタスクでクリティカルパス上にないタスクの総処理時間が所定値よりも短い場合に、前記第一の静的選出手段よりも優先して、クリティカルパス上に存在するタスクを優先的に選出し、かつ、実行することによって新たに実行可能になるタスクが多いタスクが優先的に選出するように、予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行を行うタスクを選出する第二の静的選出手段とを備えていることを特徴とするタスク管理。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクから構成されるプログラムを複数のプロセッサで実行する際に、所定の条件に基づいて各タスクを各プロセッサに割り付けて実行させるタスク管理装置に関する。
【背景技術】
【０００２】
マルチプロセッサによる並列処理は、システムの実行時間を短縮する有効な手段の一つであり、計算機システムに止まらず、車両制御システムを含む様々なシステムに利用されている。
【０００３】
しかし、マルチプロセッサシステムの処理能力を最大限に引き出すためには、プログラムの実行における最適なスケジュールが必要であり、そのスケジュールを導き出すスケジューリング手法が重要となる。
【０００４】
一般的にマルチプロセッサスケジューリング問題とは、プログラムを表すタスクグラフとプロセッサ数が与えられた場合に、タスクグラフの実行時間が最小となるように、プロセッサに割り当てられるタスクの実行順序を決定することをいう。
【０００５】
このようなマルチプロセッサスケジューリング問題の解法として分枝限定法があり、これは既に計算で判明したスケジュールより長くなるような部分タスクの実行順序の組み合わせが出た場合、それ以降の組み合わせは調べないが、それ以外は全て調べる方法である。従って、計算時間が莫大にかかり、ＮＰ−困難の問題となっている。
【０００６】
そこで、プログラムの実行時間が最小にならなくても、最適値に近い、つまり準最適なスケジューリング手法が求められている。準最適化問題の代表的な解法として、優先度を各タスクから終点までの最長処理時間によって決めるＣＰ（Critical Path）法を改良した準最適解法ＣＰ／ＭＩＳＦ（Critical Path / Most Immediate Successors First）法が提案されている。
【０００７】
また、特許文献１には、演算の実行に供される演算装置の数によらないスケジューリング、および演算不要となった副システムの動的検出によるむだな演算の回避を可能とした、簡易な手段により構成される複合型システム演算装置を提供することを目的として、以下の装置が提案されている。
【０００８】
外部から与えられる複数の副システムの連結よりなる複合型システムの構造に関する所定の情報を基に前記複数の副システムの演算順序を予め設定する演算順序設定手段と、設定された演算順序を記憶する演算順序記憶手段と、外部から与えられる副システムの演算内容に関するデータと副システムの演算に供される入出力データとを記憶するためのデータ記憶手段と、副システムの演算を実行するための少なくとも１つの演算実行手段と、複合型システムの初段を構成する少なくとも１つの副システムへの入力となる少なくとも１つのデータを外部から入力し、複合型システムの最終段を構成する少なくとも１つの副システムの演算実行により得られる少なくとも１つのデータを外部へ出力する演算制御手段であって、演算順序記憶手段に記憶されている演算順序に基づいて次に演算すべき副システムを選択し、演算実行手段のうちから次の演算に供する演算実行手段を選択し、データ記憶手段に記憶されている当該副システムの演算内容に関するデータおよび当該副システムへの入力となるデータを演算実行手段に与え、演算実行手段から当該副システムの演算実行により得られるデータをデータ記憶手段に記憶するための演算制御手段を有する複合型システム演算装置である。
【非特許文献１】笠原博徳、成田誠之助、「マルチプロセッサスケジューリング問題に対する実用的な最適および近時アルゴリズム」信学論（Ｄ）、Ｖｏｌ．Ｊ６７−Ｄ，Ｎｏ．７，ｐｐ７９２−７９９（１９８４）
【特許文献１】特開平６−１４９７６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述した特許文献１に記載された複合型システム演算装置では、複数の副システム（タスク）の連結により構成される複合化システム（プログラム）を複数の演算装置で並列的に処理するものであるが、各副システムの処理時間が考慮されているものではないため、副システムの処理時間が様々に異なる場合には、最適なスケジューリングができないという問題が内在している。
【００１０】
また、ＣＰ／ＭＩＳＦ法によれば、プロセッサ数が少ないときには効果的なスケジューリングが可能となるが、プロセッサ数が増えると効果が得られないという問題があった。
【００１１】
本発明の目的は、上述の問題点に鑑み、様々な処理時間を有する複数のタスクで構成されるプログラムに対して、プロセッサ数にかかわらず最適または準最適なスケジューリングが可能なタスク管理装置を提供する点にある。
【課題を解決するための手段】
【００１２】
上述の目的を達成するため、本発明によるタスク管理装置の特徴構成は、マルチプロセッサシステムで、空き状態となったプロセッサで実行させるタスクを複数のタスクの中から選出するスケジューラを備えたタスク管理装置であって、前記複数のタスクには、所定のタスクの実行済みを条件として実行可能となるタスクが存在するものであり、前記スケジューラは、クリティカルパス上に存在するタスクを優先的に選出するように予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行タスクを選出する静的選出手段と、未実行タスクの実行条件になっているタスクの数が所定値よりも多い場合に、前記静的選出手段よりも優先して、実行可能タスクのうち当該タスクを実行することによって新たな実行可能タスクが発生する可能性の高いタスクを優先的に選出する動的選出手段とを備えている点にある。
【００１３】
上述の構成によれば、未実行タスクの実行条件になっているタスクの数が所定値よりも多いときには、動的選出手段によってタスクの実行により実行可能なノードが増加するような実行可能タスクが優先的に処理され、多数のプロセッサにより並列的に処理される機会が増加するようになり、逆に、未実行タスクの実行条件になっているタスクの数が所定値よりも少ないときには、静的選出手段によって時間のかかるタスクから優先的に処理することにより、処理に時間が掛かるタスクが早期に処理されるようになる。このように、未実行タスクの実行条件になっているタスクの数に基づいて静的選出手段と動的選出手段がダイナミックに切り替えられるため、タスクの集合であるプログラムが効率的に処理されるようになる。
【発明の効果】
【００１４】
以上説明した通り、本発明によれば、様々な処理時間を有する複数のタスクで構成されるプログラムに対して、プロセッサ数にかかわらず最適または準最適なスケジューリングが可能なタスク管理装置を提供することができるようになった。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明によるマルチプロセッサシステムを構成するタスク管理装置について説明する。
【００１６】
図１に示すように、タスク管理装置１００は、複数のタスク（１，２，・・・）が格納されたメモリＭと、タスクを並列的に実行可能な性能の等しいか略等しい複数のプロセッサＰ（Ｐ１，Ｐ２，・・・，ＰＮ）と、各タスクを所定順序で空プロセッサに割り付けて実行させるスケジューラＳＫとがバスＢで接続されて構成されている。
【００１７】
メモリＭにはタスクに対するスケジューリングロジック２１〜２５が格納され、スケジューラＳＫは当該スケジューリングロジック２１〜２５に基づいてタスクを選択して、各プロセッサＰ１，Ｐ２，・・・，Ｐｎの何れかに割り付けて実行させるように構成されている。
【００１８】
個々のタスク１，２，・・・は、図４に示すように、各タスクに対応するノード（以下では、「タスク」と「ノード」を同義で記す。）が有向枝で階層的に接続されたタスクグラフ（ＤＡＧ：Directed Acyclic Graph）で関連付けられるプログラムの構成要素である。
【００１９】
タスクグラフはプログラムの起点となる仮想的なソースノードＳと終点となる仮想的なシンクノードＴを備え、ソースノードＳから任意のノードに向けた有向枝（図中、矢印で示す線分）と、任意のノードからシンクノードＴに向けた有向枝で処理順序が規定され、ノード間を結ぶ有向枝は対応するノード間の制約条件を示し、有向枝で接続された直上の階層のノードの全てが実行を終了したときに下位に接続されたノードが実行可能となるように定義され、各ノードは任意の実行時間を持ち、その実行は中断できないという制約が課されている。
【００２０】
図３（ａ）に示すように、各タスクはタスクを固有に識別するタスク番号情報と、当該タスクの処理時間情報と、当該タスクからシンクノードＴに到る複数の経路のうち各タスクの処理時間が最大値となる経路の処理時間を示すクリティカルパス情報と、シンクノードＴを基準にソースノードＳへの経路に沿った階層数を示す階層レベル情報と、余分枝削除後の後続タスク数情報とからなるタスク属性情報を備えており、これらの属性情報がタスク属性リスト２ｂとしてメモリに管理されている。余分枝とは、図３（ｂ）に示すように、二つのタスク間に他のタスクを経由した経路が存在するときの当該経路をいう。
【００２１】
尚、処理時間は各タスクの相対的な処理時間比で規定され、プロセッサで処理される実時間とは異なる概念であるが、複数のプロセッサの動作周波数が等しいときには実時間に相当するものである。また、ソースノードＳ及びシンクノードＴの処理時間は零とされている。
【００２２】
図４に戻り、タスク間が有向枝で接続されているとき、階層の上位のタスクから見た階層の下位のタスクを子孫、直下のタスクを子と呼び、階層の下位のタスクから見た階層の上位のタスクを祖先、直上のタスクを親と呼ぶ。
【００２３】
有向枝で接続された任意のノード間の一本の経路に沿った処理時間の総和をその経路の距離といい、任意のノードからシンクノードに到る複数の経路があるときに、距離が最長となる経路をクリティカルパスと呼ぶ。例えば、図４でソースノードＳからシンクノードＴに到るクリティカルパスは、ノード３の距離１１となる。
【００２４】
このようにして定義されたタスクグラフで示されるプログラムに対して、有向枝で接続された上位階層の全てのタスクが終了した任意のタスクが実行可能タスクとなり、スケジューラＳＫにより空プロセッサＰに割り付けられて実行されるのであるが、空プロセッサＰが発生し、且つ、複数の実行可能タスクが存在するときに、スケジューラＳＫはタスク属性情報に基づいてスケジューリングロジック２１〜２５を実行することにより予め設定された条件に基づいて何れかの実行可能タスクを選択して空プロセッサＰに割り付けるように構成されている。
【００２５】
以下、詳述する。スケジューラＳＫは、タスクグラフに基づいて未処理の子孫タスクの平均親タスク数と実行可能タスク数とを比較した結果に基づいて、第一静的選出手段と動的選出手段の何れかを選択する選択切替手段を備えており、選択切替手段は、実行済みのタスクを除き、且つ、余分枝を削除したタスクグラフにおいて、未処理の子孫タスクの平均親タスク数が実行可能タスク数以上のときに、静的選出手段よりも優先して動的選出手段を選択し、未処理の子孫タスクの平均親タスク数が実行可能タスク数より少ないときには動的選出手段よりも第一静的選出手段を優先して選択し、選択された選出手段により選択されるタスクを優先的に空のプロセッサＰに割り付けて実行される。
【００２６】
ここで、第一静的選出手段は、タスクグラフに沿った各タスクの総実行時間が最長となるクリティカルパス上の実行可能タスクであって、総実行時間が同じ時には階層が上位にある実行可能タスクを優先的に選出するように構成され、動的選出手段は未処理の親タスク数の少ない子タスクを持つ実効可能タスクを優先的に選出するように構成されている。
【００２７】
従って、未処理の子孫タスクの平均親タスク数より実行可能タスク数つまり親タスクを持たないタスク数が多いときには、最も時間の掛かる経路のタスクから優先的に実行され、プログラムの最終処理時間が短くなるように制御される。逆に、未処理の子孫タスクの平均親タスク数が実行可能タスク数つまり親タスクを持たないタスク数以上のときには、処理により実行可能なタスク数が増加するタスクから優先的に実行され、マルチプロセッサ環境を効率的に活用するように制御される。
【００２８】
さらに、スケジューラＳＫは、選択切替手段により動的選出手段が選択されたときに、次の空プロセッサの発生時刻を基準に実行可能なタスクのうちタスクグラフに沿った各タスクの総実行時間が最長となるクリティカルパス上のタスクの実行時間と、当該クリティカルパス上のタスクを除いたタスクの総実行時間を残りのプロセッサ数（ｎ−１）で除した平均実行時間に基づいて、動的選出手段により選出された実行可能タスクを実行させるか否かを判断するチェック手段を備えている。
【００２９】
スケジューラＳＫは、チェック手段によりクリティカルパス上のタスクの実行時間よりも平均実行時間が長いと判断されたときに、動的選出手段により選出された実行可能タスクを実行させ、チェック手段によりクリティカルパス上のタスクの実行時間よりも平均実行時間が短いと判断されたときに、第二静的選出手段により選出された実行可能タスクを実行させるように構成されている。
【００３０】
ここで、第二静的選出手段は、タスクグラフに沿った各タスクの総実行時間の長いクリティカルパス上の実行可能タスクであって、総実行時間が等しいときには余分枝を削除した子孫タスク数の少ない実行可能タスクを優先的に選出するように構成されている。また、動的選出手段により複数のタスクが選出される場合には第二静的選出手段により選出されるタスクが動的選出手段により選出されたタスクとされる。
【００３１】
従って、クリティカルパス上のタスクの実行時間が当該クリティカルパス上のタスクを除いたタスクの総実行時間を残りのプロセッサ数（ｎ−１）で除した平均実行時間以上となると判断された場合には、最も時間の掛かる経路のタスクから優先的に実行され、プログラムの最終処理時間が短くなるように制御される。逆にクリティカルパス上のタスクの実行時間よりも当該クリティカルパス上のタスクを除いたタスクの総実行時間を残りのプロセッサ数（ｎ−１）で除した平均実行時間の方が長くなると判断された場合には、処理により実行可能なタスク数が増加するタスクから優先的に実行され、マルチプロセッサ環境を効率的に活用するように制御される。
【００３２】
ここで、第二静的選出手段は、第一静的選出手段とは異なり余分枝を削除した子孫タスク数を判断対象としている。従って、第一静的選出手段よりも実行可能タスク数が増加する方向に制御されるため、プログラム実行の終期において実行可能なタスクが少なくなる場合に有効に作用する。
【００３３】
つまり、第一静的選出法ロジック２１が実行されることにより第一静的選出手段が機能し、動的選出法ロジック２２が実行されることにより動的選出手段が機能し、第二静的選出法ロジック２３が実行されることにより第二静的選出手段が機能し、選択切替判定ロジックが実行されることにより選択切替手段が機能し、チェック機構実行ロジックが実行されることによりチェック手段が機能するように構成されている。
【００３４】
以下、スケジューラＳＫの動作を説明する。図２に示すように、タスク管理装置１００にタスクグラフ２ａ及びタスク属性リスト２ｂがロードされ、タスクの実行制御が開始されると（Ｓ１）、メモリＭからタスクグラフ２ａが読み出され（Ｓ２）、タスクグラフ上の各タスクの属性リスト２ｂが参照される（Ｓ３）。タスクグラフ２ａは、例えば図１中央部の一点鎖線で囲まれた範囲に示すような有向枝で接続されたグラフであり、各タスクの詳細なプログラムコードはメモリＭのタスクグラフ格納領域に格納されている。
【００３５】
タスクグラフから上述した制約条件を具備し実行可能となったタスクが存在するか否かが判断され（Ｓ４）、実行可能なタスクが存在するときに複数のプロセッサＰから空プロセッサがあるか否かが判断される（Ｓ５）。
【００３６】
初期には起点となるソースノードＳの次の階層のタスクが実行可能タスクと判断される。実行可能タスクが複数或る場合に、タスクグラフに基づいて未処理の子孫タスクの平均親タスク数より実行可能タスク数が多いか否かが判断され（Ｓ６）、実行可能タスクの方が多いと判断されると動的選出法に切り替える選択切替条件が非成立と判断し、第一静的選出法により選出された実行可能なタスクを空プロセッサＰに優先して割り付けて実行させ（Ｓ７，Ｓ１１）、未処理の子孫タスクの平均親タスク数の方が多いと判断されると動的選出法に切り替える選択切替条件が成立と判断し、チェック手段により次の空プロセッサの発生時刻を基準に実行可能なタスクのうちタスクグラフに沿った各タスクの総実行時間が最長となるクリティカルパス上のタスクの実行時間と、当該クリティカルパス上のタスクを除いたタスクの総実行時間を残りのプロセッサ数（ｎ−１）で除した平均実行時間が算出される（Ｓ８）。
【００３７】
チェック手段によりクリティカルパス上のタスクの実行時間よりも平均実行時間が長いと判断されたときには、動的選出法に切り替えてもよいかをチェックするチェック条件をクリアしていると判断し、動的選出手段により選出された実行可能タスクを空プロセッサＰに優先して割り付けて実行させ（Ｓ９，Ｓ１１）、クリティカルパス上のタスクの実行時間よりも平均実行時間が短いと判断されたときに、動的選出法に切り替えてよいかをチェックするチェック条件をクリアしていないと判断し、第二静的選出手段により選出された実行可能タスクを空プロセッサＰに優先して割り付けて実行させる（Ｓ１０，Ｓ１１）。
【００３８】
このようにして、図１の下段の一点鎖線で囲まれた範囲に示すように、各プロセッサＰに割り付けられるタスクが、実行中フラグとともにメモリＭの実行テーブル２０に記憶され、各プロセッサＰは実行テーブル２０を参照して自分に割り当てられたタスクを実行し、終了すると実行中フラグをリセットするように構成される。スケジューラＳＫは実行テーブル２０の実行中フラグがリセットされることによりプロセッサのＰの空状態を管理する。さらに、スケジューラＳＫは、実行テーブルに記憶された実行中フラグの状態とタスクグラフを参照して、実行可能なタスクの発生を管理する。例えば、図１に示すタスクグラフ上でタスク６が実行可能となったか否かは有向枝の上流側のタスク３の実行中フラグの状態に基づいて判断され、フラグがリセットされたときに実行可能となったと判断される。
【００３９】
タスクグラフで示された全てのタスクが終了するまでステップＳ４からステップＳ１１の処理が繰り返され（Ｓ１２）、全タスクが終了するとタスクの割付処理を終了する。尚、ステップＳ６で空プロセッサが発生したときに実行可能タスクが一つである場合には、当該実行可能タスクが当該空プロセッサにより無条件で実行される。
【００４０】
以上説明したように、タスクグラフで示される複数のタスクには、所定のタスクの実行済みを条件として実行可能となるタスクが存在するものであり、スケジューラは、クリティカルパス上に存在するタスクを優先的に選出するように予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行タスクを選出する静的選出手段と、未実行タスクの実行条件になっているタスクの数が所定値よりも多い場合に、静的選出手段よりも優先して、実行可能タスクのうち当該タスクを実行することによって新たな実行可能タスクが発生する可能性の高いタスクを優先的に選出する動的選出手段とを備えて構成されている。
【００４１】
また、スケジューラは、クリティカルパス上に存在するタスクを優先的に選出するように予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行を行うタスクを選出する静的選出手段と、未実行状態にあるタスクで、クリティカルパス上にないタスクの総処理時間が所定値よりも長い場合に、静的選出手段よりも優先して、実行可能タスクのうちの当該タスクを実行することによって新たな実行可能タスクが発生する可能性の高いタスクを優先的に選出する動的選出手段とを備えて構成されている。
【００４２】
さらに、スケジューラは、クリティカルパス上に存在するタスクを優先的に選出し、かつ、実行可能になるまでに実行が必要なタスクが少ないタスクが優先的に選出するように、予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行を行うタスクを選出する第一の静的選出手段と、未実行タスクの実行条件になっているタスクの数が所定値よりも多く、かつ、未実行状態にあるタスクで、クリティカルパス上にないタスクの総処理時間が所定値よりも長い場合に、第一の静的選出手段よりも優先して、実行可能タスクのうち当該タスクを実行することによって新たな実行可能タスクが発生する可能性の高いタスクを優先的に選出する動的選出手段と、未実行タスクの実行条件になっているタスクの数が所定値よりも多く、かつ、未実行状態にあるタスクでクリティカルパス上にないタスクの総処理時間が所定値よりも短い場合に、第一の静的選出手段よりも優先して、クリティカルパス上に存在するタスクを優先的に選出し、かつ、実行することによって新たに実行可能になるタスクが多いタスクが優先的に選出するように、予め設定された各タスクの優先順位に基づいて、実行可能タスクから実行を行うタスクを選出する第二の静的選出手段とを備えて構成されている。
【００４３】
本発明のタスク管理装置によるタスク制御は様々な制御装置に適用することができ、例えば、エンジン制御装置、変速機制御装置、ＨＶ制御装置、ＭＧ制御装置、ＦＣ制御装置、ＥＰＳ制御装置、エアバッグ制御装置、レーダ制御装置等、車両に設けられた各種制御装置に適用し、或いは、エンジン等の各種シミュレーション装置におけるモデル演算に適用することができる。
【実施例】
【００４４】
以下、上述したスケジューラＳＫによる実行可能なタスクの選択制御の具体例を、図４から図１３に示すタスクグラフに基づいて説明する。尚、図４から図１３において実行可能タスクは、図３（ｃ）に示すように、輪郭が濃いグラデェーションの黒丸で、実行中タスクは、図３（ｃ）に示すように、輪郭が薄いグラデェーションの黒丸で示す。また、本実施例では、プロセッサ数を２とする。
【００４５】
図４に示すタスクグラフにおける第一及び第二静的選出手段によって設定される優先順位は、図３（ｄ）の優先リストに示される。
【００４６】
図４に示すタスクグラフは、ソースタスクＳ、シンクタスクＴを加えて、三階層の全１３のタスクで構成され、各タスクの属性情報はタスクを示す丸印の右下に配置した方形の枠の四領域に示されている。
【００４７】
タスクの実行制御が開始された時点でソースタスクＳの実行が完了したものとして、図５に示すように、タスク１，２，３が実行可能タスクとなる。この時点では空プロセッサが二台存在する。先ず、選択切替手段が作動して、親タスクを持つタスクの親タスク数の合計が３０（＝各階層の有向枝の数）、親タスクを持つタスク数が９（＝階層１及び２のタスク数の合計）、親タスクを持つタスクの親タスク数の平均値が３０／９、親タスクを持たないタスク数（ここでは、実行可能なタスクの数）が３と求められる。３０／９≧３となるので、選択切替手段により第一静的選出手段に優先して動的選出手段が選択される。
【００４８】
動的選出手段は、上述したように、実行可能タスクに対してその直接後続のタスク（子タスク）の夫々について未実効の親タスク数（実行中及び実行済みの親タスクは含めない）を計算し、これらの子タスクの中で最も小さい未実行親タスク数をその実行可能タスクの優先度とし、優先度の値が小さければ小さいほど優先的に選ばれるように実行するタスクを選出する。今、実行可能タスク１，２，３の直接後続タスクの親の数は何れも３で同じ順位になるため、第二静的選出手段の優先リストに従ってタスク番号３のタスクが仮に選出される。尚、動的選出手段で一つのタスクが選出される場合にはそのタスクが仮に選出される。
【００４９】
ここでチェック手段が作動して、タスク３以外の未実行タスクのうちで最長の総実行時間が１０と求められ、さらにその最長の総実行時間で処理されるタスクを除いたタスクの実行時間の総和を（全プロセッサ数−１）で除した値が１７（＝（１＋４＋４＋３＋２＋１＋２）／（２−１））と求められる。
【００５０】
チェック手段では、仮にタスク３が実行されたとし、次の最も早く空プロセッサが現れる時刻τにおいて、（未実行タスクの最長総実行時間）＜（その最長の総実行時間で処理されるタスクを除いたタスクの実行時間の総和を（全プロセッサ数−１）で除した値）となるときに動的選出手段により選出されたタスクを実行するように決定され、（未実行タスクの最長総実行時間）≧（その最長の総実行時間で処理されるタスクを除いたタスクの実行時間の総和を（全プロセッサ数−１）で除した値）となるときに第二静的選出手段により選出されたタスクを実行するように決定される。今、１０＜１７であるため、動的選出手段により選出されたタスク３がプロセッサに割り付けられる。
【００５１】
タスク３が実行されると、図６に示すように、実行可能タスクが１，２となる。選択切替手段が作動して、親タスクを持つタスクの親タスク数の合計が３０（＝各階層の有向枝の数）、親タスクを持つタスク数が９（＝階層１及び２のタスク数の合計）、親タスクを持つタスクの親タスク数の平均値が３０／９、親タスクを持たないタスク数（ここでは、実行可能なタスクの数）が３と求められる。３０／９≧３となるので、選択切替手段により第一静的選出手段に優先して動的選出手段が選択される。
【００５２】
動的選出手段により、実行可能タスク１，２の直接後続タスクの親の数は何れも３で同じ順位になるため、第二静的選出手段の優先リストに従ってタスク番号２のタスクが仮に選出される。
【００５３】
チェック手段では、同様に、（未実行タスクの最長総実行時間＝９）＜（その最長の総実行時間で処理されるタスクを除いたタスクの実行時間の総和を（全プロセッサ数−１）で除した値＝１７）となるので、動的選出手段により選出されたタスク２がプロセッサに割り付けられる。
【００５４】
タスク２が実行されると、図７に示すように、実行可能タスクが１のみとなるので、無条件にタスク１が空プロセッサに割り付けられる。
【００５５】
タスク１，２，３の処理が終了すると、図８に示すように、タスク番号４，５，６，７の四つの実行可能タスクが発生する。選択切替手段が作動して親タスクを持つタスクの親タスク数の平均値が１８／５、親タスクを持たないタスク数が４と求められ、（１８／５）＜４となるので、第一静的選出法により選出されるタスク５が実行される。
【００５６】
タスク５が実行されると、図９に示すように、タスク番号４，６，７の三つの実行可能タスクに対して選択切替手段が作動し、同様の処理により第一静的選出法によりタスク４が実行される。
【００５７】
次に、図１０に示すように、タスク番号６，７の二つの実行可能タスクに対して選択切替手段が作動し、親タスクを持つタスクの親タスク数の平均値が１６／５、親タスクを持たないタスク数が３と求められ、（１６／５）≧３となるので、動的選出手段が選択される。動的選出手段では、実行可能タスク６，７の直接後続タスクの親の数が２と等しくなるので、第二静的選出手段により優先リストからタスク６が仮に選出される。次にチェック手段が作動して、（未実行タスクの最長総実行時間＝６）＜（その最長の総実行時間で処理されるタスクを除いたタスクの実行時間の総和を（全プロセッサ数−１）で除した値＝８）となるので、動的選出手段により選出されたタスク６が実行される。
【００５８】
タスク６が実行されると、図１１に示すように、実行可能タスクが７のみとなるので、無条件にタスク７が空プロセッサに割り付けられる。
【００５９】
次に、図１２（ａ）に示すように、タスク番号８，９，１０，１１の四つの実行可能なタスクに対して選択切替手段が作動し、親タスクを持つタスクの親タスク数の平均値が４／１、親タスクを持たないタスク数が４と求められ、（４／１）≧１となるので、動的選出手段が選択される。動的選出手段では同様にしてタスク１１が選出され、チェック手段によりタスク１１が空プロセッサに割り付けられる。
【００６０】
同様にして、図１２（ｂ）、図１３（ａ）、（ｂ）に示すように、タスク８、タスク１０、タスク９の順序で実行されてプログラムが終了する。このとき、二台のプロセッサで処理される各タスクの順序を図１４に示す。
【００６１】
本発明によるスケジューラを、標準タスクグラフセット（笠原博徳氏提供  http://www.kasahara.elec.waseda.ac.jp/index.ja.html）のうち、タスク数５０から１０００のタスクに対して試行し、ＣＰ／ＭＩＳＦ法及びＣＰ法と対比した結果を図１５に示す。図１５から最適解を出力した割合、最適解に対する遅れ率の総平均ともに本発明によるスケジューラが優れていることが判明した。
【図面の簡単な説明】
【００６２】
【図１】タスク管理装置の構成図
【図２】スケジューラの動作を示すフローチャート
【図３】タスクグラフの構成を示し、（ａ）はタスクと属性情報の説明図、（ｂ）は余分枝の説明図、（ｃ）はタスクの実行状態の説明図、（ｄ）は優先リストの説明図
【図４】有向枝で接続されたタスクグラフの説明図
【図５】有向枝で接続されたタスクグラフの説明図
【図６】有向枝で接続されたタスクグラフの説明図
【図７】有向枝で接続されたタスクグラフの説明図
【図８】有向枝で接続されたタスクグラフの説明図
【図９】有向枝で接続されたタスクグラフの説明図
【図１０】有向枝で接続されたタスクグラフの説明図
【図１１】有向枝で接続されたタスクグラフの説明図
【図１２】有向枝で接続されたタスクグラフの説明図
【図１３】有向枝で接続されたタスクグラフの説明図
【図１４】二台のプロセッサにより実行されるタスクの説明図
【図１５】他の方法によるスケジューラとの性能比較表
【符号の説明】
【００６３】
２ａ：タスクグラフ
２ｂ：タスク属性リスト
２０：実行テーブル
１００：タスク管理装置
Ｍ：メモリ
Ｐ：プロセッサ
ＳＫ：スケジューラ
【図１】
2008171153.tif 000003
【図２】
2008171153.tif 000004
【図１４】
2008171153.tif 000005
【図１５】
2008171153.tif 000006
【図３】
2008171153.tif 000007
【図４】
2008171153.tif 000008
【図５】
2008171153.tif 000009
【図６】
2008171153.tif 000010
【図７】
2008171153.tif 000011
【図８】
2008171153.tif 000012
【図９】
2008171153.tif 000013
【図１０】
2008171153.tif 000014
【図１１】
2008171153.tif 000015
【図１２】
2008171153.tif 000016
【図１３】
2008171153.tif 000017