(57)【要約】【課題】待ち状態のタスクが存在する場合でも、タスクを複数のグループに分けて各グループごとに実行時間の管理を行うこと。【解決手段】タスクグループ管理手段１４０は各タスクグループの実行を有効とする順序や割り当てる実行時間のデータを管理する。タスクグループ切り替え手段１３０はこれらのデータと実行時間管理手段１３１から供給される指令タイミングに応じて、実行を有効とするタスクグループを決定する。そしてレディキュー１２０、ウエイトキュー１２１に登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くする。こうしてタスクグループを切り替えることにより、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。【選択図】        図１
2004326486.tif 000002
【特許請求の範囲】
【請求項１】
プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、
実行可能状態のタスクを実行優先度と共に登録するレディキューと、
前記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、
実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、
前記各タスクグループごとの実行時間を管理する実行時間管理手段と、
前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、
前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とするタスク管理装置。
【請求項２】
前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能な状態となった場合には、前記ウエイトキューに登録されているタスクを前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録することを特徴とする請求項１記載のタスク管理装置。
【請求項３】
前記タスクグループ管理手段は、各タスクを少なくとも１つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする請求項１又は２記載のタスク管理装置。
【請求項４】
各タスクグループには、各タスクグループ内において最も実行優先度が低く、実行が有効になっていない他のタスクグループに所属するすべてのタスクよりも実行優先度が高いアイドルタスクが存在することを特徴とする請求項１〜３のいずれか１項記載のタスク管理装置。
【請求項５】
プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、
実行可能状態のタスクを実行優先度と共に登録するレディキューと、
前記実行可能状態から強制待ち状態になったタスクを登録するサスペンドキューと、
前記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、
前記実行可能状態になるための条件待ちの状態からさらに強制的な待ち状態になったタスクを登録するウエイト・サスペンドキューと、
実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、
前記各タスクグループごとの実行時間を管理する実行時間管理手段と、
前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、
前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を無効にするタスクグループに所属するタスクに対しては、前記レディキューに登録されたタスクを前記サスペンドキューに移動登録すると共に、前記ウエイトキューに登録されたタスクを前記ウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、前記サスペンドキューに登録されたタスクを前記レディキューに移動登録すると共に、前記ウエイト・サスペンドキューに登録されたタスクを前記ウエイトキューに移動登録することで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とするタスク管理装置。
【請求項６】
前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能となった場合にはウエイトキューに登録されたタスク前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録し、前記レディキューに登録されているタスクが実行不可能な状態となった場合には前記レディキューに登録されているタスクをサスペンドキューに移動登録し、前記サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記サスペンドキューに登録されているタスクをレディキューに移動登録し、前記ウエイトキューに登録されているタスクが実行不可能な状態となった場合には前記ウエイトキューに登録されているタスクを前記ウエイト・サスペンドキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記ウエイト・サスペンドキューに登録されているタスクを前記ウエイトキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクの条件が解除された場合には前記ウエイト・サスペンドキューに登録されているタスクを前記サスペンドキューに登録することを特徴とする請求項５記載のタスク管理装置。
【請求項７】
前記タスクグループ管理手段は、各タスクを少なくとも１つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする請求項５又は６記載のタスク管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はマイクロプロセッサ上でマルチタスク処理を行う場合に、複数のタスクをいくつかのグループに分けて、各グループごとにタスクを管理し実行するタスク管理装置に関するものである。
【０００２】
【従来の技術】
従来、タスク管理装置としては、例えば、特許文献１に記載されているようなものがあった。図１０は、特許文献１に記載された従来のタスク管理装置を示すものである。図１０において、データ処理装置１はプログラム制御により動作する処理装置であり、記憶装置２は実行可能なタスクの状態を優先度毎に記憶するレディキュー２０、レディキュー２０の一部分を複数記憶するタイムシェアリングウエイトキュー４０、タイムシェアリングを行う優先度の上位と下位を記憶するタイムシェアリング優先度範囲の記憶部４１、実行中のタスクグループ番号を記憶するアクティブタスクグループ４２、及びタスクグループ毎の処理時間情報を記憶するタイムシェアリング時間テーブル４３を備えている。そして実行タスク決定手段１０はレディキュー２０に登録されている実行可能なタスクの中から、実行優先度の最も高いタスクを選択し実行する。タスクグループ切り替え手段３０はタスクグループの切り替えタイミングになると、タイムシェアリング優先度範囲４１で指定された範囲のタスクをレディキュー２０からタイムシェアリングウエイトキュー４０に退避し、タイムシェアリングウエイトキュー４０に退避されている次にアクティブにすべきグループのタスクをレディキュー２０に復帰させる。タスクグループの切り替えタイミングは切り替え時間検知手段３１がアクティブタスクグループ４２に格納されている実行中のタスクグループ番号とタイムシェアリング時間テーブル４３に格納されている各タスクグループの処理時間情報から検出し、タスクグループ切り替え手段３０に通知する。このようにして、限定された範囲の実行優先度のタスクをいくつかのグループに分けて、グループごとに時分割で実行の切り替えを行っていた。
【０００３】
【特許文献１】
特開平２０００−１７２５１４号
【０００４】
【発明が解決しようとする課題】
しかしながら、このような従来の構成では、レディキュー２０とタイムシェアリングウエイトキュー４０との間で、限定された範囲の実行優先度のタスクを退避、復旧するようにして実行を有効とするタスクグループの切り替えを行なっているため、レディキュー２０に登録されていないタスク、例えば待ち状態のタスクのように通常はウエイトキューに登録されるタスクには対応することができなかった。又このような待ち状態のタスクの待ちが解除されて実行可能状態になった場合には、そのタスクが本来実行されてはいけないタスクグループのタスクであっても実行されてしまうという課題を有していた。したがって、タスクの状態として待ち状態をとることができないという課題を有していた。
【０００５】
本発明は、このような従来の課題を解決するもので、タスクの状態として待ち状態のタスクを存在させることが可能であり、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことが可能なタスク管理装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
本願の請求項１の発明は、プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、実行可能状態のタスクを実行優先度と共に登録するレディキューと、記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、前記各タスクグループごとの実行時間を管理する実行時間管理手段と、前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とする。
【０００７】
本願の請求項２の発明は、請求項１のタスク管理装置において、前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能な状態となった場合には、前記ウエイトキューに登録されているタスクを前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録することを特徴とする。
【０００８】
本願の請求項３の発明は、請求項１又は２のタスク管理装置において、前記タスクグループ管理手段は、各タスクを少なくとも１つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする。
【０００９】
本願の請求項４の発明は、請求項１〜３のいずれか１項のタスク管理装置において、各タスクグループには、各タスクグループ内において最も実行優先度が低く、実行が有効になっていない他のタスクグループに所属するすべてのタスクよりも実行優先度が高いアイドルタスクが存在することを特徴とする。
【００１０】
本願の請求項５の発明は、プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、実行可能状態のタスクを実行優先度と共に登録するレディキューと、前記実行可能状態から強制待ち状態になったタスクを登録するサスペンドキューと、前記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、前記実行可能状態になるための条件待ちの状態からさらに強制的な待ち状態になったタスクを登録するウエイト・サスペンドキューと、実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、前記各タスクグループごとの実行時間を管理する実行時間管理手段と、前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を無効にするタスクグループに所属するタスクに対しては、前記レディキューに登録されたタスクを前記サスペンドキューに移動登録すると共に、前記ウエイトキューに登録されたタスクを前記ウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、前記サスペンドキューに登録されたタスクを前記レディキューに移動登録すると共に、前記ウエイト・サスペンドキューに登録されたタスクを前記ウエイトキューに移動登録することで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とする。
【００１１】
本願の請求項６の発明は、請求項５のタスク管理装置において、前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能となった場合にはウエイトキューに登録されたタスク前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録し、前記レディキューに登録されているタスクが実行不可能な状態となった場合には前記レディキューに登録されているタスクをサスペンドキューに移動登録し、前記サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記サスペンドキューに登録されているタスクをレディキューに移動登録し、前記ウエイトキューに登録されているタスクが実行不可能な状態となった場合には前記ウエイトキューに登録されているタスクを前記ウエイト・サスペンドキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記ウエイト・サスペンドキューに登録されているタスクを前記ウエイトキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクの条件が解除された場合には前記ウエイト・サスペンドキューに登録されているタスクを前記サスペンドキューに登録することを特徴とする。
【００１２】
本願の請求項７の発明は、請求項５又は６のタスク管理装置において、前記タスクグループ管理手段は、各タスクを少なくとも１つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする。
【００１３】
本構成によって、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことが可能なタスク管理装置を提供することができる。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
（実施の形態１）
図１は、本発明の実施の形態１におけるタスク管理装置の構成図である。図１において、レディキュー１２０は実行可能状態になったタスクが実行優先度と共に登録され、ウエイトキュー１２１は実行可能状態になるための条件待ちになっている待ち状態のタスクが実行優先度と共に登録される。実行タスク切り替え手段１１０は実行されているタスクとレディキュー１２０に登録されているタスクとの中で最も実行優先度の高いタスクを選択し実行したり、ウエイトキュー１２１に登録されているタスクが実行可能状態になった場合にはウエイトキュー１２１の登録を解除しレディキュー１２０に登録する。タスクグループ管理手段１４０には各タスクグループの実行順序を示すデータと各タスクグループに割り当てる実行時間のデータが格納される。実行時間管理手段１３１は設定された実行時間が経過するとタスクグループ切り替え指令をタスクグループ切り替え手段１３０に出力する。タスクグループ切り替え手段１３０は実行時間管理手段１３１から供給されるタスクグループ切り替え指令と、タスクグループ管理手段１４０に格納されている各タスクグループの実行順序のデータをもとに、実行するタスクグループの切り替えを行う。
【００１５】
以上のように構成されたタスク管理装置について、図１〜図５を用いて、以下、その動作を述べる。
まず、タスク単体の実行切り替え動作について説明する。各タスク単体の実行切り替え動作は実行タスク切り替え手段１１０が実行中のタスクとレディキュー１２０に登録されているタスクの実行優先度を元に行う。
【００１６】
図２は優先度スケジューリングを行う一般的なリアルタイムＯＳでのタスクの状態を示した状態遷移図である。図２で実行状態２１０は実行中のタスクの状態で、１つのタスクのみがこの実行状態になることができる。実行可能状態２２０は実行する準備は整っているが、より実行優先度が高いタスクが実行状態になっているために実行待ちとなっているタスクの状態のことであり、この状態のタスクは図１のレディキュー１２０に登録され管理されている。
【００１７】
待ち状態２３０は何らかの条件待ちの状態で、その条件が満たされた場合に実行可能状態２２０に移行するタスクの状態のことであり、この状態のタスクは図１のウエイトキュー１２１に登録され管理されている。
【００１８】
このように実行状態のタスクは１つしか存在しないので、実行されるタスクが切り替わるには、実行中のタスクが実行状態２１０から実行可能状態２２０に移行するか、待ち状態２３０に移行する必要がある。
【００１９】
例えば、実行優先度がタスクａ＞タスクｂ＞タスクｃの順番でタスクａが最も実行優先度が高く、各タスクの状態としてタスクａが待ち状態、タスクｂが実行状態、タスクｃが実行可能状態である３つのタスクが存在する場合に、タスクの実行切替が発生するのは次の２つのいずれかの場合である。
（ａ）待ち状態のタスクａの待ち条件が成立して、タスクａが待ち状態から実行可能状態に移行した場合である。優先度スケジューリングでは実行状態及び実行可能状態となっているすべてのタスクの中で最も実行優先度が高いタスクが実行状態になるように実行スケジューリングが行われる。従ってこの場合では、実行状態のタスクｂが実行可能状態に移行し、実行可能状態になったタスクａが実行状態に移行する。
（ｂ）実行状態のタスクｂが何らかの条件により待ち状態に移行した場合である。実行状態のタスクｂが待ち状態に移行することで、実行可能状態にあるタスクの中で最も実行優先度が高いタスクｃが実行可能状態から実行状態に移行する。
【００２０】
実行タスク切り替え手段１１０はこれらのタスク単体の実行切り替え動作を行う。前述した（ａ）のタスク切り替えの場合には、待ち状態のタスクａの待ち条件が成立すると、実行タスク切り替え手段１１０がウエイトキュー１２１に登録されているタスクａの登録を解除し、レディキュー１２０に新たに登録を行うとともに、レディキュー１２０に登録されているすべてのタスクと実行状態のタスクの実行優先度を比較確認し、実行状態であったタスクｂをレディキュー１２０に登録し、最も実行優先度の高いタスクであるタスクａを実行状態にする。
【００２１】
また、前述の（ｂ）のタスク切り替えの場合には、実行状態のタスクｂが待ち状態になるような処理が実行されると、実行タスク切り替え手段１１０がタスクｂをウエイトキュー１２１に登録し、レディキュー１２０に登録されているすべてのタスクの中で最も実行優先度の高いタスクｃを実行状態にする。
【００２２】
なお、実行タスク切り替え手段１１０がタスクの実行切り替えを行う場合に、実行可能状態のタスクが複数存在すれば、実行優先度がもっとも高いタスクを実行状態に移行し、さらに、最も実行優先度の高いタスクが複数存在する場合には、最も早く実行可能状態になったタスクを実行状態に移行する。
【００２３】
次にタスクグループの切り替えについて図３〜図５を用いて説明する。タスクグループの切り替え動作は、タスクグループ切り替え手段１３０がタスクグループ管理手段１４０に格納されたデータと実行時間管理手段１３１の切り替えタイミング指令に基づいて、レディキュー１２０及びウエイトキュー１２１に登録されている各タスクの実行優先度を変更することによって、有効とするタスクグループの切り替えを行う。
【００２４】
例えば図３に示すようにタスクグループＡ〜Ｃの３つのタスクグループがあり、タスクグループＡはａ１〜ａ３の３つのタスク、タスクグループＢはｂ１〜ｂ２の２つのタスク、タスクグループＣはｃ１〜ｃ３の３つのタスクで構成されているものとする。各タスクの初期状態の実行優先度は、図３のように、タスクａ１が３、タスクａ２が３、タスクａ３が４、タスクｂ１が３、タスクｂ２が４、タスクｃ１が３、タスクｃ２が４、タスクｃ３が５であるとする。なお、実行優先度は数値が小さいほど実行優先度が高いことを示す。
【００２５】
図４は初期状態から順にタスクグループＡ、タスクグループＢ、タスクグループＣという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー１２０の状態を示した図である。
【００２６】
図４で初期状態からタスクグループＡに所属するタスクのみを実行するタスクグループＡの実行期間に切り替える場合には、タスクグループ切り替え手段１３０が実行を有効とするタスクグループＡ以外のタスクグループに所属する各タスクの実行優先度を一定のオフセット値を加算することで引き下げる。即ち図４のタスクグループＡ実行期間のレディキューに示すように、タスクグループＢに所属するタスクｂ１、ｂ２の実行優先度をそれぞれ３→１３、４→１４にし、タスクグループＣに所属するタスクｃ１、ｃ２、ｃ３の実行優先度をそれぞれ３→１３、４→１４、５→１５にする。
【００２７】
こうすることで、タスクグループＡに所属するタスクの実行優先度が他のタスクグループに所属するタスクよりも相対的に高くなるため優先的に実行されることになる。また、タスクグループＡに所属するタスクの中で最も実行優先度を低くしたタスクをアイドルタスクとして、グループＡの他のタスクの処理が終了しても少なくともアイドルタスクが実行権を持ち続けるようにしておけば、他のタスクグループのタスクには実行権が移らないようにすることが可能である。
【００２８】
次に、タスクグループＡに所属するタスクの実行期間から、タスクグループＢに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段１３０がタスクグループＡに所属するタスクａ１、ａ２、ａ３の実行優先度をそれぞれ３→１３、３→１３、４→１４のように一定のオフセット値を加算することで引き下げる。そして図４のタスクグループＢの実行期間のレディキューに示すように、実行を有効とするタスクグループＢに所属するタスクｂ１、ｂ２の実行優先度をそれぞれ１３→３、１４→４のように一定のオフセット値を減算することで、初期状態の実行優先度まで戻す。
【００２９】
タスクグループＢに所属するタスクの実行期間から、タスクグループＣに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段１３０がタスクグループＢに所属するタスクｂ１、ｂ２の実行優先度をそれぞれ３→１３、４→１４のように一定のオフセット値を加算することで引き下げる。その後に、実行を有効とするタスクグループＣに所属するタスクｃ１、ｃ２、ｃ３の実行優先度をそれぞれ１３→３、１４→４、１５→５のように一定のオフセット値を減算することで、初期状態の実行優先度まで戻す。
【００３０】
実行時間管理手段１３１から供給される指令タイミングに応じて、タスクグループ切り替え手段１３０が以上の動作を繰り返すことによって、タスクグループＡ→タスクグループＢ→タスクグループＣ→タスクグループＡ・・・というように実行を有効とするタスクグループを切り替えることができる。
【００３１】
なお、実行を有効とするタスクグループを切り替える順序や各タスクグループを有効としておく時間に関するデータはタスクグループ管理手段１４０の中に格納されている。これらのデータを元にタスクグループ切り替え手段１３０が次に実行を有効とするタスクグループを決定したり、実行時間管理手段１３１に次のタスクグループの切り替えタイミングの設定を行う。
【００３２】
次に、待ち状態のタスクがある場合にタスクグループを切り替える場合の動作について説明する。
図５は待ち状態のタスクがある場合に、タスクグループＡ、タスクグループＢ、タスクグループＣという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー１２０とウエイトキュー１２１の状態を示した図である。
【００３３】
なお、タスクが待ち状態になる場合には特定の条件を待つことになるので、待ち条件ごとにウエイトキューを設ける方法と、ウエイトキューは１つでタスクごとに待ち条件を別途管理するようにする方法がある。この図では待ち条件ごとにウエイトキューを設ける方法で説明している。
【００３４】
また、各タスクの実行優先度は図４の場合と同じで、タスクａ２、ｂ２は条件１が成立するのを条件待ちしており、タスクｃ３は条件２が成立するのを条件待ちしていて、このため、条件１のウエイトキューにタスクａ２、ｂ２が登録され、条件２のウエイトキューにタスクｃ３が登録されているとする（図示せず）。
【００３５】
タスクグループＡの実行期間ではタスクグループＡに所属するタスクのみが実行されるようにするために、タスクグループ切り替え手段１３０は図５のタスクグループＡ実行期間のレディキューに示すようにタスクグループＢに所属するタスクｂ１の実行優先度を３→１３にし、タスクグループＣに所属するタスクｃ１、ｃ２の実行優先度をそれぞれ３→１３、４→１４にする。また、条件１のウエイトキューに登録されているタスクグループＢに所属するタスクｂ２の実行優先度を４→１４にし、条件２のウエイトキューに登録されているタスクグループＣに所属するタスクｃ３の実行優先度を５→１５にする。
【００３６】
こうすることで、待ち状態となってウエイトキューに登録されているタスクグループＡに所属するタスクに対しても、タスクの実行優先度が他のタスクグループに所属するタスクよりも相対的に高くなるため、待ち条件が成立して実行可能状態となりレディーキューに登録されたときに優先的に実行されることになる。また、タスクグループＡ以外のタスクグループに所属するタスクについてもし待ち条件が満たされて実行可能状態となった場合でも、タスクグループＡに所属するタスクよりも実行優先度が低いため、タスクグループＡの実行期間では実行されることはない。
【００３７】
次に、タスクグループＡに所属するタスクの実行期間から、タスクグループＢに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段１３０が図５のタスクグループＢ実行期間のレディキューに示すようにタスクグループＡに所属するタスクａ１、ａ３の実行優先度をそれぞれ３→１３、４→１４にし、タスクグループＢに所属するタスクｂ１の実行優先度を１３→３にする。また、条件１ウエイトキューに登録されているタスクグループＡに所属するタスクａ２の実行優先度を３→１３にし、タスクグループＢに所属するタスクｂ２の実行優先度を１４→４にする。
【００３８】
タスクグループＢに所属するタスクの実行期間から、タスクグループＣに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段１３０が図５のタスクグループＣ実行期間のレディキューに示すようにタスクグループＢに所属するタスクｂ１の実行優先度を３→１３にし、タスクグループＣに所属するタスクｃ１、ｃ２の実行優先度それそれ１３→３、１４→４にする。また、条件１のウエイトキューに登録されているタスクグループＢに所属するタスクｂ２の実行優先度を４→１４にし、条件２のウエイトキューに登録されているタスクグループＣに所属するタスクｃ３の実行優先度を１５→５にする。
【００３９】
実行時間管理手段１３１から供給される指令タイミングに応じて、タスクグループ切り替え手段１３０が上記の動作を繰り返すことによって、待ち状態のタスクがある場合でも、タスクグループＡ→タスクグループＢ→タスクグループＣ→タスクグループＡ・・・というように実行を有効とするタスクグループを切り替えることができる。
【００４０】
以上のように、タスク単体の実行切り替え動作については、実行タスク切り替え手段１１０が実行されているタスクとレディキュー１２０に登録されているすべてのタスクの中で最も実行優先度の高いタスクを選択実行することで、実行切り替えを行う。実行を有効にするタスクグループの切り替え動作については、各タスクグループの実行を有効とする順序や各タスクグループに割り当てる実行時間に関するデータをタスクグループ管理手段１４０が管理し、これらのデータと実行時間管理手段１３１から供給される指令タイミングに応じて、タスクグループ切り替え手段１３０がどのタスクグループの実行を有効とするかを決定した後に、レディーキュー１２０及びウエイトキュー１２１に登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで、実行を有効とするタスクグループの切り替えを行う。
【００４１】
その結果、タスクの状態として待ち状態のタスクを存在させることができ、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができるという効果が得られる。
【００４２】
なお、タスクグループ切り替え手段１３０が実行優先度を変更するときにオフセット値１０を加算あるいは減算するように説明したが、このオフセット値は実行を有効とするタスクグループのみが実行されるようになる数値であれば１０以外の数値でも全く同じようにして実現可能であり、得られる効果も同等である。
【００４３】
（実施の形態２）
図６は、本発明の実施の形態２におけるタスク管理装置の構成図である。図６において図１と同じ構成要素については同じ符号を用い、説明を省略する。図１に示した本発明の実施の形態１の構成に対して、本発明の実施の形態２におけるタスク管理装置はサスペンドキュー１２２とウエイト・サスペンドキュー１２３が追加された点に特徴を有している。
【００４４】
図６でサスペンドキュー１２２は実行可能状態から強制的に待ち状態になったタスクが登録され、ウエイト・サスペンドキュー１２３は実行可能状態になるための条件待ちの状態からさらに強制的な待ち状態になったタスクが登録される。実行タスク切り替え手段１１１は実施の形態１の実行タスク切り替え手段１１０の動作に加えて、レディキュー１２０に登録されているタスクの登録をサスペンドキューに移動させることで、実行可能状態にあるタスクを強制的に実行不可能な状態としたり、またその逆の操作を行う。更にウエイトキューに登録されているタスクをウエイト・サスペンドキューに移動させることで、待ち状態のタスクに対して実行不可能な状態としたり、またその逆の操作を行う。又タスクグループ切り替え手段１３１は後述するように実行を無効にするタスクグループに属するタスクに対してレディキューに登録されたタスクをサスペンドキューに、ウエイトキューに登録されたタスクをウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに属するタスクに対してはサスペンドキューに登録されたタスクをレディキューに、ウエイト・サスペンドキューに登録されたタスクをウエイトキューに移動登録することで、実行を有効とするタスクグループを切り替えるものである。
【００４５】
以上のように構成されたタスク管理装置について、図６〜図９を用いて、その動作を述べる。
まず、タスク単体の実行切り替え動作について説明する。各タスク単体の実行切り替え動作は実行タスク切り替え手段１１１が実行中のタスクとレディキュー１２０に登録されているタスクの実行優先度を元に行う。
【００４６】
図７は本実施の形態における状態遷移図である。ここでは図２で示した優先度スケジューリングを行う一般的なリアルタイムＯＳでのタスクの状態を示した状態遷移図に対して、さらに強制待ち状態と二重待ち状態の２つの状態を追加している。図７において図２と同じ状態については同じ符号を用い、説明を省略する。強制待ち状態２５０は実行可能状態２２０のタスクが強制的に実行不可能な状態にされた場合の状態であり、この状態のタスクは図６のサスペンドキュー１２２に登録され管理される。二重待ち状態２４０は待ち状態２３０で何らかの条件待ちをしていたタスクが強制的に実行不可能な状態にされた場合の状態であり、この状態のタスクは図６のウエイト・サスペンドキュー１２３に登録され管理される。これら２つの待ち状態が追加されても実行状態のタスクは１つしか存在しないということは変わらず、実行されるタスクが切り替わるのは図２の３つの状態の場合と同じである。
【００４７】
追加された強制待ち状態２５０と二重待ち状態２４０の状態に対する実行タスク切り替え手段１１１の動作について説明する。
【００４８】
例えば、実行優先度がタスクａ＞タスクｂ＞タスクｃの順番でタスクａが最も実行優先度が高く、各タスクの状態としてタスクａが待ち状態、タスクｂが実行状態、タスクｃが実行可能状態である３つのタスクが存在する場合に、実行可能状態２２０と強制待ち状態２５０との状態間の状態遷移及び、待ち状態２３０、二重待ち状態２４０、強制待ち状態２５０の各状態間の状態遷移について説明する。
【００４９】
実行状態２１０であるタスクｂが実行可能状態２２０の状態であるタスクｃに対して、強制的に実行不可能な状態にする処理（通常、これはリアルタイムＯＳのタスク管理用システムコールである）を実行した場合には、実行タスク切り替え手段１１１がレディキュー１２０に登録されているタスクｃの登録を解除し、サスペンドキュー１２２に新たに登録を行い、タスクｃは実行可能状態２２０から強制待ち状態２５０に移行する。逆に実行状態２１０であるタスクｂが強制待ち状態２５０の状態となっているタスクｃに対して、強制的に実行可能な状態にする処理（これも通常はリアルタイムＯＳのタスク管理用システムコールである）を実行した場合には、実行タスク切り替え手段１１１がサスペンドキュー１２２に登録されているタスクｃの登録を解除し、レディキュー１２０に登録を行い、タスクｃは強制待ち状態２５０から実行可能状態２２０に移行する。
【００５０】
また、実行状態２１０であるタスクｂが待ち状態２３０の状態であるタスクａに対して、強制的に実行不可能な状態にする処理（これもリアルタイムＯＳのタスク管理用システムコールである）を実行した場合には、実行タスク切り替え手段１１１がウエイトキュー１２１に登録されているタスクａの登録を解除し、ウエイト・サスペンドキュー１２３に新たに登録を行い、タスクａは待ち状態２３０から二重待ち状態２４０に移行する。逆に実行状態２１０であるタスクｂが二重待ち状態２４０となったタスクａに対して、強制的な実行不可能状態を解除する処理（これもリアルタイムＯＳのタスク管理用システムコールである）を実行した場合には、実行タスク切り替え手段１１１がウエイト・サスペンドキュー１２３に登録されているタスクａの登録を解除し、ウエイトキュー１２１に新たに登録を行い、タスクａは二重待ち状態２４０から待ち状態２３０に移行する。
【００５１】
また、二重待ち状態２４０となっているタスクａに対して待ち条件が解除されれた場合には、実行タスク切り替え手段１１１がウエイト・サスペンドキュー１２３に登録されているタスクａの登録を解除し、サスペンドキュー１２２に新たに登録を行い、タスクａは二重待ち状態２４０から強制待ち状態２５０に移行する。
【００５２】
次にタスクグループの切り替えについて図８及び図９を用いて説明する。タスクグループの切り替え動作はタスクグループ切り替え手段１３２がタスクグループ管理手段１４０に格納されたデータと実行時間管理手段１３１の切り替えタイミング指令に基づいてレディキュー１２０及びウエイトキュー１２１に登録されているタスクをサスペンドキュー１２２、ウエイト・サスペンドキュー１２３にそれぞれ登録変更することによって、有効とするタスクグループの切り替えを行う。
【００５３】
タスクグループの数及び各タスクグループに所属するタスク数と実行優先度については、実施の形態１におけるタスク管理装置の場合と同じとする。
【００５４】
図８は初期状態から順にタスクグループＡ、タスクグループＢ、タスクグループＣという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー１２０とサスペンドキュー１２２の状態を示した図である。
【００５５】
図８で初期状態からタスクグループＡに所属するタスクのみを実行するタスクグループＡの実行期間に切り替える場合には、タスクグループ切り替え手段１３２が実行を有効とするタスクグループＡ以外のタスクグループに所属するタスクを実行可能状態から強制待ち状態に移行させる。即ち図８のタスクグループＡ実行期間のレディキューに示すように、タスクグループＢに所属するタスクｂ１、ｂ２、タスクグループＣに所属するタスクｃ１、ｃ２、ｃ３の各タスクをレディキュー１２０から登録削除し、これらのタスクをサスペンドキュー１２２に登録する。こうすることで、レディキュー１２０に登録され実行可能状態となっているのはタスクグループＡに所属するタスクのみとなるため、タスクグループＡに所属するタスクだけが実行されることになる。
【００５６】
次に、タスクグループＡに所属するタスクの実行期間から、タスクグループＢに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段１３２がタスクグループＡに所属するタスクａ１、ａ２、ａ３をレディキュー１２０から登録削除し、サスペンドキュー１２２に登録した後に、実行を有効とするタスクグループＢに所属するタスクｂ１、ｂ２をサスペンドキュー１２２から登録削除して、レディキュー１２０に登録する。なお、タスクｂ１、ｂ２がサスペンドキュー１２２からレディキュー１２０に復帰する場合の実行優先度は、レディキュー１２０からサスペンドキュー１２２に強制的に移行される直前の各タスクの実行優先度となる。
【００５７】
タスクグループＢに所属するタスクの実行期間から、タスクグループＣに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段１３２がタスクグループＢに所属するタスクｂ１、ｂ２をレディキュー１２０から登録削除し、サスペンドキュー１２２に登録した後に、実行を有効とするタスクグループＣに所属するタスクｃ１、ｃ２、ｃ３をサスペンドキュー１２２から登録削除して、レディキュー１２０に登録する。この場合もタスクｃ１、ｃ２、ｃ３がサスペンドキュー１２２からレディキュー１２０に復帰する場合の実行優先度は、レディキュー１２０からサスペンドキュー１２２に強制的に移行される直前の各タスクの実行優先度となっている。
【００５８】
実行時間管理手段１３１から供給される指令タイミングに応じて、タスクグループ切り替え手段１３２が上記の動作を繰り返すことによって、タスクグループＡ→タスクグループＢ→タスクグループＣ→タスクグループＡ・・・というようにタスクグループごとに実行切り替えを行うことができる。
【００５９】
なお、タスクグループを切り替える順序や各タスクグループに割り当てる実行時間に関するデータはタスクグループ管理手段１４０の中に格納されており、これらのデータを元にタスクグループ切り替え手段１３２が次に実行を有効とするタスクグループを決定したり、実行時間管理手段１３１に次のタスクグループの切り替えタイミングの設定を行うことは、実施の形態１におけるタスク管理装置の場合と同じである。
【００６０】
次に、待ち状態のタスクがある場合にタスクグループを切り替える場合の動作について説明する。
図９は待ち状態のタスクがある場合にタスクグループＡ、タスクグループＢ、タスクグループＣという順序で時分割に有効となるタスクグループが切り替わる場合のレディキュー１２０、ウエイトキュー１２１、サスペンドキュー１２２及びウエイト・サスペンドキュー１２３の状態を示した図である。
【００６１】
各タスクの実行優先度は図８の場合と同じで、タスクａ２、ｂ２は条件１が発生するのを条件待ちしており、タスクｃ３は条件２が発生するのを条件待ちしている。このため、初期状態として条件１のウエイトキューにタスクａ２、ｂ２が登録され、条件２のウエイトキューにタスクｃ３が登録されているとする（図示せず）。
【００６２】
タスクグループＡの実行期間ではタスクグループＡに所属するタスクのみが実行されるようにするために、タスクグループ切り替え手段１３２は図９のタスクグループＡ実行期間のレディキューに示すようにタスクグループＢに所属するタスクｂ１、タスクグループＣに所属するタスクｃ１、ｃ２の各タスクをレディキュー１２０から登録削除し、これらのタスクをサスペンドキュー１２２に登録する。また、条件１ウエイトキューに登録されているタスクグループＢに所属するタスクｂ２、条件２ウエイトキューに登録されているタスクグループＣに所属するタスクｃ３をウエイトキュー１２１から登録削除し、これらのタスクをウエイト・サスペンドキュー１２３に登録する。
【００６３】
こうすることで、待ち状態となってウエイトキューに登録されているタスクに対しても、タスクグループＡに所属するタスク以外のタスクは強制的に実行不可能な二重待ち状態になるため、実行可能となるタスクはタスクグループＡに所属するタスクのみとなり、タスクグループＡに所属するタスクだけが実行されることになる。
【００６４】
次に、タスクグループＡに所属するタスクの実行期間から、タスクグループＢに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段１３２が図９のタスクグループＢ実行期間のレディキューに示すようにタスクグループＡに所属するタスクａ１、ａ３をレディキュー１２０から登録削除し、サスペンドキュー１２２に登録した後に、実行を有効とするタスクグループＢに所属するタスクｂ１をサスペンドキュー１２２から登録削除して、レディキュー１２０に登録する。また、条件１ウエイトキューに登録されているタスクａ２をウエイトキュー１２１から登録削除し、ウエイト・サスペンドキュー１２３に登録した後に、タスクｂ２をウエイト・サスペンドキュー１２３から登録削除して、条件１ウエイトキューに登録する。
【００６５】
なお、タスクｂ１がサスペンドキュー１２２からレディキュー１２０に復帰する場合の実行優先度はレディキュー１２０からサスペンドキュー１２２に強制的に移行される直前の実行優先度であり、タスクｂ２がウエイト・サスペンドキュー１２３から条件１ウエイトキューに復帰する場合の実行優先度は条件１ウエイトキューからウエイト・サスペンドキュー１２３に強制的に移行される直前の実行優先度である。
【００６６】
タスクグループＢに所属するタスクの実行期間から、タスクグループＣに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段１３２がタスクグループＢに所属するタスクｂ１をレディキュー１２０から登録削除し、サスペンドキュー１２２に登録した後に、実行を有効とするタスクグループＣに所属するタスクｃ１、ｃ２をサスペンドキュー１２２から登録削除して、レディキュー１２０に登録する。また、条件１ウエイトキューに登録されているタスクｂ２をウエイトキュー１２１から登録削除し、ウエイト・サスペンドキュー１２３に登録した後に、タスクｃ３をウエイト・サスペンドキュー１２３から登録削除して、条件２ウエイトキューに登録する。
【００６７】
なお、タスクｃ１、ｃ２がサスペンドキュー１２２からレディキュー１２０に復帰する場合の実行優先度はレディキュー１２０からサスペンドキュー１２２に強制的に移行される直前の実行優先度であり、タスクｃ３がウエイト・サスペンドキュー１２３から条件２ウエイトキューに復帰する場合の実行優先度は条件２ウエイトキューからウエイト・サスペンドキュー１２３に強制的に移行される直前の実行優先度である。
【００６８】
以上のようにタスク単体の実行切り替え動作については、実行タスク切り替え手段１１１が実行しているタスクとレディキュー１２０に登録されているすべてのタスクの中で最も実行優先度の高いタスクを選択実行することで、実行切り替えを行う。実行を有効にするタスクグループの切り替えについては、各タスクグループの実行を有効とする順序や各タスクグループに割り当てる実行時間に関するデータをタスクグループ管理手段１４０が管理し、これらのデータと実行時間管理手段１３１から供給される指令タイミングに応じて、タスクグループ切り替え手段１３２がどのタスクグループの実行を有効とするかを決定した後に、実行を無効にするタスクグループに所属するタスクに対しては、レディキュー１２０に登録されたタスクをサスペンドキュー１２２に移動登録し、ウエイトキュー１２１に登録されたタスクをウエイト・サスペンドキュー１２３に移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、サスペンドキュー１２２に登録されたタスクをレディキュー１２０に移動登録し、ウエイト・サスペンドキュー１２３に登録されたタスクをウエイトキュー１２１に移動登録することで実行を有効とするタスクグループの切り替えを行う。
【００６９】
その結果、タスクの状態として待ち状態のタスクを存在させることが可能となり、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【００７０】
なお、以上の説明では各タスクは１つのグループのみに所属する場合について説明したが、２つ以上のタスクグループに所属させることも可能である。このように特定のタスクを２つ以上のタスクグループに所属させても、全く同様にタスクグループの切り替え動作を行うことができ、しかも複数のタスクグループに所属させたタスクは実行のリアルタイム性を高めることができるようになるという新たな効果も生じる。
【００７１】
なお、以上の実施の形態１，２の説明では実行優先度は数値が小さいほど実行優先度が高いとした場合について説明したが、数値が大きいほど実行優先度が高いとした場合でも全く同じようにして実現可能であり、得られる効果も同等である。
【００７２】
さらに、以上の説明では実行優先度の範囲を０〜１５として説明したが、実行優先度の範囲がこれよりも小さくても、大きくても全く同じようにして実現可能であり、得られる効果も同等である。
【００７３】
また、以上の説明では実行するタスクのグループはＡ〜Ｃの３つで、タスクグループＡ→タスクグループＢ→タスクグループＣ→タスクグループＡ・・・というように規則正しくタスクグループの切り替えが繰り返される場合について説明したが、もっと複雑な繰り返し周期でタスクグループの切り替えを行う場合でも同じようにして実現可能であり、得られる効果も同等である。
【００７４】
【発明の効果】
以上のように本願の請求項１〜４の発明のタスク管理装置によれば、タスクグループ切り替え手段がどのタスクグループの実行を有効とするかを決定した後に、レディーキュー及びウエイトキューに登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで実行を有効とするタスクグループの切り替えを行うため、タスクの状態として待ち状態のタスクを存在させることが可能となる。各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【００７５】
また、本願の請求項５〜７の発明のタスク管理装置によれば、タスクグループ切り替え手段が実行を無効にするタスクグループに所属するタスクに対しては、レディキューに登録されたタスクをサスペンドキューに移動登録し、ウエイトキューに登録されたタスクをウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、サスペンドキューに登録されたタスクをレディキューに移動登録し、ウエイト・サスペンドキューに登録されたタスクをウエイトキューに移動登録することで、実行を有効とするタスクグループの切り替えを行うため、タスクの状態として待ち状態のタスクを存在させることが可能となる。又各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１によるタスク管理装置の構成を示すブロック図
【図２】本発明の実施の形態１によるタスク管理装置でのタスクの状態遷移図
【図３】本発明の実施の形態１によるタスク管理装置でのタスクの実行優先度の一例を示す図
【図４】本発明の実施の形態１によるタスク管理装置でのレディーキューの状態変化を示した図
【図５】本発明の実施の形態１によるタスク管理装置でのレディーキューとウエイトキューの状態変化を示した図
【図６】本発明の実施の形態２によるタスク管理装置の構成を示すブロック図
【図７】本発明の実施の形態２によるタスク管理装置でのタスクの状態遷移図
【図８】本発明の実施の形態２によるタスク管理装置でのレディーキューとサスペンドキューの状態変化を示した図
【図９】本発明の実施の形態２によるタスク管理装置でのレディーキュー、ウエイトキュー、サスペンドキュー、ウエイト・サスペンドキューの状態変化を示した図
【図１０】従来のタスク管理装置の構成を示すブロック図
【符号の説明】
１１０，１１１  実行タスク切り替え手段
１２０  レディキュー
１２２  ウエイトキュー
１２２  サスペンドキュー
１２３  ウエイト・サスペンドキュー
１３０，１３２  タスクグループ切り替え手段
１３１  実行時間管理手段
１４０  タスクグループ管理手段
【図１】
2004326486.tif 000003
【図２】
2004326486.tif 000004
【図３】
2004326486.tif 000005
【図４】
2004326486.tif 000006
【図５】
2004326486.tif 000007
【図６】
2004326486.tif 000008
【図７】
2004326486.tif 000009
【図８】
2004326486.tif 000010
【図９】
2004326486.tif 000011
【図１０】
2004326486.tif 000012