JP2004326486A - タスク管理装置 - Google Patents
タスク管理装置 Download PDFInfo
- Publication number
- JP2004326486A JP2004326486A JP2003121045A JP2003121045A JP2004326486A JP 2004326486 A JP2004326486 A JP 2004326486A JP 2003121045 A JP2003121045 A JP 2003121045A JP 2003121045 A JP2003121045 A JP 2003121045A JP 2004326486 A JP2004326486 A JP 2004326486A
- Authority
- JP
- Japan
- Prior art keywords
- task
- execution
- queue
- registered
- wait
- 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.)
- Pending
Links
Images
Abstract
【課題】待ち状態のタスクが存在する場合でも、タスクを複数のグループに分けて各グループごとに実行時間の管理を行うこと。
【解決手段】タスクグループ管理手段140は各タスクグループの実行を有効とする順序や割り当てる実行時間のデータを管理する。タスクグループ切り替え手段130はこれらのデータと実行時間管理手段131から供給される指令タイミングに応じて、実行を有効とするタスクグループを決定する。そしてレディキュー120、ウエイトキュー121に登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くする。こうしてタスクグループを切り替えることにより、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【選択図】 図1
【解決手段】タスクグループ管理手段140は各タスクグループの実行を有効とする順序や割り当てる実行時間のデータを管理する。タスクグループ切り替え手段130はこれらのデータと実行時間管理手段131から供給される指令タイミングに応じて、実行を有効とするタスクグループを決定する。そしてレディキュー120、ウエイトキュー121に登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くする。こうしてタスクグループを切り替えることにより、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明はマイクロプロセッサ上でマルチタスク処理を行う場合に、複数のタスクをいくつかのグループに分けて、各グループごとにタスクを管理し実行するタスク管理装置に関するものである。
【0002】
【従来の技術】
従来、タスク管理装置としては、例えば、特許文献1に記載されているようなものがあった。図10は、特許文献1に記載された従来のタスク管理装置を示すものである。図10において、データ処理装置1はプログラム制御により動作する処理装置であり、記憶装置2は実行可能なタスクの状態を優先度毎に記憶するレディキュー20、レディキュー20の一部分を複数記憶するタイムシェアリングウエイトキュー40、タイムシェアリングを行う優先度の上位と下位を記憶するタイムシェアリング優先度範囲の記憶部41、実行中のタスクグループ番号を記憶するアクティブタスクグループ42、及びタスクグループ毎の処理時間情報を記憶するタイムシェアリング時間テーブル43を備えている。そして実行タスク決定手段10はレディキュー20に登録されている実行可能なタスクの中から、実行優先度の最も高いタスクを選択し実行する。タスクグループ切り替え手段30はタスクグループの切り替えタイミングになると、タイムシェアリング優先度範囲41で指定された範囲のタスクをレディキュー20からタイムシェアリングウエイトキュー40に退避し、タイムシェアリングウエイトキュー40に退避されている次にアクティブにすべきグループのタスクをレディキュー20に復帰させる。タスクグループの切り替えタイミングは切り替え時間検知手段31がアクティブタスクグループ42に格納されている実行中のタスクグループ番号とタイムシェアリング時間テーブル43に格納されている各タスクグループの処理時間情報から検出し、タスクグループ切り替え手段30に通知する。このようにして、限定された範囲の実行優先度のタスクをいくつかのグループに分けて、グループごとに時分割で実行の切り替えを行っていた。
【0003】
【特許文献1】
特開平2000−172514号
【0004】
【発明が解決しようとする課題】
しかしながら、このような従来の構成では、レディキュー20とタイムシェアリングウエイトキュー40との間で、限定された範囲の実行優先度のタスクを退避、復旧するようにして実行を有効とするタスクグループの切り替えを行なっているため、レディキュー20に登録されていないタスク、例えば待ち状態のタスクのように通常はウエイトキューに登録されるタスクには対応することができなかった。又このような待ち状態のタスクの待ちが解除されて実行可能状態になった場合には、そのタスクが本来実行されてはいけないタスクグループのタスクであっても実行されてしまうという課題を有していた。したがって、タスクの状態として待ち状態をとることができないという課題を有していた。
【0005】
本発明は、このような従来の課題を解決するもので、タスクの状態として待ち状態のタスクを存在させることが可能であり、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことが可能なタスク管理装置を提供することを目的とする。
【0006】
【課題を解決するための手段】
本願の請求項1の発明は、プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、実行可能状態のタスクを実行優先度と共に登録するレディキューと、記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、前記各タスクグループごとの実行時間を管理する実行時間管理手段と、前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とする。
【0007】
本願の請求項2の発明は、請求項1のタスク管理装置において、前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能な状態となった場合には、前記ウエイトキューに登録されているタスクを前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録することを特徴とする。
【0008】
本願の請求項3の発明は、請求項1又は2のタスク管理装置において、前記タスクグループ管理手段は、各タスクを少なくとも1つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする。
【0009】
本願の請求項4の発明は、請求項1〜3のいずれか1項のタスク管理装置において、各タスクグループには、各タスクグループ内において最も実行優先度が低く、実行が有効になっていない他のタスクグループに所属するすべてのタスクよりも実行優先度が高いアイドルタスクが存在することを特徴とする。
【0010】
本願の請求項5の発明は、プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、実行可能状態のタスクを実行優先度と共に登録するレディキューと、前記実行可能状態から強制待ち状態になったタスクを登録するサスペンドキューと、前記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、前記実行可能状態になるための条件待ちの状態からさらに強制的な待ち状態になったタスクを登録するウエイト・サスペンドキューと、実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、前記各タスクグループごとの実行時間を管理する実行時間管理手段と、前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を無効にするタスクグループに所属するタスクに対しては、前記レディキューに登録されたタスクを前記サスペンドキューに移動登録すると共に、前記ウエイトキューに登録されたタスクを前記ウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、前記サスペンドキューに登録されたタスクを前記レディキューに移動登録すると共に、前記ウエイト・サスペンドキューに登録されたタスクを前記ウエイトキューに移動登録することで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とする。
【0011】
本願の請求項6の発明は、請求項5のタスク管理装置において、前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能となった場合にはウエイトキューに登録されたタスク前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録し、前記レディキューに登録されているタスクが実行不可能な状態となった場合には前記レディキューに登録されているタスクをサスペンドキューに移動登録し、前記サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記サスペンドキューに登録されているタスクをレディキューに移動登録し、前記ウエイトキューに登録されているタスクが実行不可能な状態となった場合には前記ウエイトキューに登録されているタスクを前記ウエイト・サスペンドキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記ウエイト・サスペンドキューに登録されているタスクを前記ウエイトキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクの条件が解除された場合には前記ウエイト・サスペンドキューに登録されているタスクを前記サスペンドキューに登録することを特徴とする。
【0012】
本願の請求項7の発明は、請求項5又は6のタスク管理装置において、前記タスクグループ管理手段は、各タスクを少なくとも1つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする。
【0013】
本構成によって、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことが可能なタスク管理装置を提供することができる。
【0014】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態1におけるタスク管理装置の構成図である。図1において、レディキュー120は実行可能状態になったタスクが実行優先度と共に登録され、ウエイトキュー121は実行可能状態になるための条件待ちになっている待ち状態のタスクが実行優先度と共に登録される。実行タスク切り替え手段110は実行されているタスクとレディキュー120に登録されているタスクとの中で最も実行優先度の高いタスクを選択し実行したり、ウエイトキュー121に登録されているタスクが実行可能状態になった場合にはウエイトキュー121の登録を解除しレディキュー120に登録する。タスクグループ管理手段140には各タスクグループの実行順序を示すデータと各タスクグループに割り当てる実行時間のデータが格納される。実行時間管理手段131は設定された実行時間が経過するとタスクグループ切り替え指令をタスクグループ切り替え手段130に出力する。タスクグループ切り替え手段130は実行時間管理手段131から供給されるタスクグループ切り替え指令と、タスクグループ管理手段140に格納されている各タスクグループの実行順序のデータをもとに、実行するタスクグループの切り替えを行う。
【0015】
以上のように構成されたタスク管理装置について、図1〜図5を用いて、以下、その動作を述べる。
まず、タスク単体の実行切り替え動作について説明する。各タスク単体の実行切り替え動作は実行タスク切り替え手段110が実行中のタスクとレディキュー120に登録されているタスクの実行優先度を元に行う。
【0016】
図2は優先度スケジューリングを行う一般的なリアルタイムOSでのタスクの状態を示した状態遷移図である。図2で実行状態210は実行中のタスクの状態で、1つのタスクのみがこの実行状態になることができる。実行可能状態220は実行する準備は整っているが、より実行優先度が高いタスクが実行状態になっているために実行待ちとなっているタスクの状態のことであり、この状態のタスクは図1のレディキュー120に登録され管理されている。
【0017】
待ち状態230は何らかの条件待ちの状態で、その条件が満たされた場合に実行可能状態220に移行するタスクの状態のことであり、この状態のタスクは図1のウエイトキュー121に登録され管理されている。
【0018】
このように実行状態のタスクは1つしか存在しないので、実行されるタスクが切り替わるには、実行中のタスクが実行状態210から実行可能状態220に移行するか、待ち状態230に移行する必要がある。
【0019】
例えば、実行優先度がタスクa>タスクb>タスクcの順番でタスクaが最も実行優先度が高く、各タスクの状態としてタスクaが待ち状態、タスクbが実行状態、タスクcが実行可能状態である3つのタスクが存在する場合に、タスクの実行切替が発生するのは次の2つのいずれかの場合である。
(a)待ち状態のタスクaの待ち条件が成立して、タスクaが待ち状態から実行可能状態に移行した場合である。優先度スケジューリングでは実行状態及び実行可能状態となっているすべてのタスクの中で最も実行優先度が高いタスクが実行状態になるように実行スケジューリングが行われる。従ってこの場合では、実行状態のタスクbが実行可能状態に移行し、実行可能状態になったタスクaが実行状態に移行する。
(b)実行状態のタスクbが何らかの条件により待ち状態に移行した場合である。実行状態のタスクbが待ち状態に移行することで、実行可能状態にあるタスクの中で最も実行優先度が高いタスクcが実行可能状態から実行状態に移行する。
【0020】
実行タスク切り替え手段110はこれらのタスク単体の実行切り替え動作を行う。前述した(a)のタスク切り替えの場合には、待ち状態のタスクaの待ち条件が成立すると、実行タスク切り替え手段110がウエイトキュー121に登録されているタスクaの登録を解除し、レディキュー120に新たに登録を行うとともに、レディキュー120に登録されているすべてのタスクと実行状態のタスクの実行優先度を比較確認し、実行状態であったタスクbをレディキュー120に登録し、最も実行優先度の高いタスクであるタスクaを実行状態にする。
【0021】
また、前述の(b)のタスク切り替えの場合には、実行状態のタスクbが待ち状態になるような処理が実行されると、実行タスク切り替え手段110がタスクbをウエイトキュー121に登録し、レディキュー120に登録されているすべてのタスクの中で最も実行優先度の高いタスクcを実行状態にする。
【0022】
なお、実行タスク切り替え手段110がタスクの実行切り替えを行う場合に、実行可能状態のタスクが複数存在すれば、実行優先度がもっとも高いタスクを実行状態に移行し、さらに、最も実行優先度の高いタスクが複数存在する場合には、最も早く実行可能状態になったタスクを実行状態に移行する。
【0023】
次にタスクグループの切り替えについて図3〜図5を用いて説明する。タスクグループの切り替え動作は、タスクグループ切り替え手段130がタスクグループ管理手段140に格納されたデータと実行時間管理手段131の切り替えタイミング指令に基づいて、レディキュー120及びウエイトキュー121に登録されている各タスクの実行優先度を変更することによって、有効とするタスクグループの切り替えを行う。
【0024】
例えば図3に示すようにタスクグループA〜Cの3つのタスクグループがあり、タスクグループAはa1〜a3の3つのタスク、タスクグループBはb1〜b2の2つのタスク、タスクグループCはc1〜c3の3つのタスクで構成されているものとする。各タスクの初期状態の実行優先度は、図3のように、タスクa1が3、タスクa2が3、タスクa3が4、タスクb1が3、タスクb2が4、タスクc1が3、タスクc2が4、タスクc3が5であるとする。なお、実行優先度は数値が小さいほど実行優先度が高いことを示す。
【0025】
図4は初期状態から順にタスクグループA、タスクグループB、タスクグループCという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー120の状態を示した図である。
【0026】
図4で初期状態からタスクグループAに所属するタスクのみを実行するタスクグループAの実行期間に切り替える場合には、タスクグループ切り替え手段130が実行を有効とするタスクグループA以外のタスクグループに所属する各タスクの実行優先度を一定のオフセット値を加算することで引き下げる。即ち図4のタスクグループA実行期間のレディキューに示すように、タスクグループBに所属するタスクb1、b2の実行優先度をそれぞれ3→13、4→14にし、タスクグループCに所属するタスクc1、c2、c3の実行優先度をそれぞれ3→13、4→14、5→15にする。
【0027】
こうすることで、タスクグループAに所属するタスクの実行優先度が他のタスクグループに所属するタスクよりも相対的に高くなるため優先的に実行されることになる。また、タスクグループAに所属するタスクの中で最も実行優先度を低くしたタスクをアイドルタスクとして、グループAの他のタスクの処理が終了しても少なくともアイドルタスクが実行権を持ち続けるようにしておけば、他のタスクグループのタスクには実行権が移らないようにすることが可能である。
【0028】
次に、タスクグループAに所属するタスクの実行期間から、タスクグループBに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段130がタスクグループAに所属するタスクa1、a2、a3の実行優先度をそれぞれ3→13、3→13、4→14のように一定のオフセット値を加算することで引き下げる。そして図4のタスクグループBの実行期間のレディキューに示すように、実行を有効とするタスクグループBに所属するタスクb1、b2の実行優先度をそれぞれ13→3、14→4のように一定のオフセット値を減算することで、初期状態の実行優先度まで戻す。
【0029】
タスクグループBに所属するタスクの実行期間から、タスクグループCに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段130がタスクグループBに所属するタスクb1、b2の実行優先度をそれぞれ3→13、4→14のように一定のオフセット値を加算することで引き下げる。その後に、実行を有効とするタスクグループCに所属するタスクc1、c2、c3の実行優先度をそれぞれ13→3、14→4、15→5のように一定のオフセット値を減算することで、初期状態の実行優先度まで戻す。
【0030】
実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段130が以上の動作を繰り返すことによって、タスクグループA→タスクグループB→タスクグループC→タスクグループA・・・というように実行を有効とするタスクグループを切り替えることができる。
【0031】
なお、実行を有効とするタスクグループを切り替える順序や各タスクグループを有効としておく時間に関するデータはタスクグループ管理手段140の中に格納されている。これらのデータを元にタスクグループ切り替え手段130が次に実行を有効とするタスクグループを決定したり、実行時間管理手段131に次のタスクグループの切り替えタイミングの設定を行う。
【0032】
次に、待ち状態のタスクがある場合にタスクグループを切り替える場合の動作について説明する。
図5は待ち状態のタスクがある場合に、タスクグループA、タスクグループB、タスクグループCという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー120とウエイトキュー121の状態を示した図である。
【0033】
なお、タスクが待ち状態になる場合には特定の条件を待つことになるので、待ち条件ごとにウエイトキューを設ける方法と、ウエイトキューは1つでタスクごとに待ち条件を別途管理するようにする方法がある。この図では待ち条件ごとにウエイトキューを設ける方法で説明している。
【0034】
また、各タスクの実行優先度は図4の場合と同じで、タスクa2、b2は条件1が成立するのを条件待ちしており、タスクc3は条件2が成立するのを条件待ちしていて、このため、条件1のウエイトキューにタスクa2、b2が登録され、条件2のウエイトキューにタスクc3が登録されているとする(図示せず)。
【0035】
タスクグループAの実行期間ではタスクグループAに所属するタスクのみが実行されるようにするために、タスクグループ切り替え手段130は図5のタスクグループA実行期間のレディキューに示すようにタスクグループBに所属するタスクb1の実行優先度を3→13にし、タスクグループCに所属するタスクc1、c2の実行優先度をそれぞれ3→13、4→14にする。また、条件1のウエイトキューに登録されているタスクグループBに所属するタスクb2の実行優先度を4→14にし、条件2のウエイトキューに登録されているタスクグループCに所属するタスクc3の実行優先度を5→15にする。
【0036】
こうすることで、待ち状態となってウエイトキューに登録されているタスクグループAに所属するタスクに対しても、タスクの実行優先度が他のタスクグループに所属するタスクよりも相対的に高くなるため、待ち条件が成立して実行可能状態となりレディーキューに登録されたときに優先的に実行されることになる。また、タスクグループA以外のタスクグループに所属するタスクについてもし待ち条件が満たされて実行可能状態となった場合でも、タスクグループAに所属するタスクよりも実行優先度が低いため、タスクグループAの実行期間では実行されることはない。
【0037】
次に、タスクグループAに所属するタスクの実行期間から、タスクグループBに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段130が図5のタスクグループB実行期間のレディキューに示すようにタスクグループAに所属するタスクa1、a3の実行優先度をそれぞれ3→13、4→14にし、タスクグループBに所属するタスクb1の実行優先度を13→3にする。また、条件1ウエイトキューに登録されているタスクグループAに所属するタスクa2の実行優先度を3→13にし、タスクグループBに所属するタスクb2の実行優先度を14→4にする。
【0038】
タスクグループBに所属するタスクの実行期間から、タスクグループCに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段130が図5のタスクグループC実行期間のレディキューに示すようにタスクグループBに所属するタスクb1の実行優先度を3→13にし、タスクグループCに所属するタスクc1、c2の実行優先度それそれ13→3、14→4にする。また、条件1のウエイトキューに登録されているタスクグループBに所属するタスクb2の実行優先度を4→14にし、条件2のウエイトキューに登録されているタスクグループCに所属するタスクc3の実行優先度を15→5にする。
【0039】
実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段130が上記の動作を繰り返すことによって、待ち状態のタスクがある場合でも、タスクグループA→タスクグループB→タスクグループC→タスクグループA・・・というように実行を有効とするタスクグループを切り替えることができる。
【0040】
以上のように、タスク単体の実行切り替え動作については、実行タスク切り替え手段110が実行されているタスクとレディキュー120に登録されているすべてのタスクの中で最も実行優先度の高いタスクを選択実行することで、実行切り替えを行う。実行を有効にするタスクグループの切り替え動作については、各タスクグループの実行を有効とする順序や各タスクグループに割り当てる実行時間に関するデータをタスクグループ管理手段140が管理し、これらのデータと実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段130がどのタスクグループの実行を有効とするかを決定した後に、レディーキュー120及びウエイトキュー121に登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで、実行を有効とするタスクグループの切り替えを行う。
【0041】
その結果、タスクの状態として待ち状態のタスクを存在させることができ、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができるという効果が得られる。
【0042】
なお、タスクグループ切り替え手段130が実行優先度を変更するときにオフセット値10を加算あるいは減算するように説明したが、このオフセット値は実行を有効とするタスクグループのみが実行されるようになる数値であれば10以外の数値でも全く同じようにして実現可能であり、得られる効果も同等である。
【0043】
(実施の形態2)
図6は、本発明の実施の形態2におけるタスク管理装置の構成図である。図6において図1と同じ構成要素については同じ符号を用い、説明を省略する。図1に示した本発明の実施の形態1の構成に対して、本発明の実施の形態2におけるタスク管理装置はサスペンドキュー122とウエイト・サスペンドキュー123が追加された点に特徴を有している。
【0044】
図6でサスペンドキュー122は実行可能状態から強制的に待ち状態になったタスクが登録され、ウエイト・サスペンドキュー123は実行可能状態になるための条件待ちの状態からさらに強制的な待ち状態になったタスクが登録される。実行タスク切り替え手段111は実施の形態1の実行タスク切り替え手段110の動作に加えて、レディキュー120に登録されているタスクの登録をサスペンドキューに移動させることで、実行可能状態にあるタスクを強制的に実行不可能な状態としたり、またその逆の操作を行う。更にウエイトキューに登録されているタスクをウエイト・サスペンドキューに移動させることで、待ち状態のタスクに対して実行不可能な状態としたり、またその逆の操作を行う。又タスクグループ切り替え手段131は後述するように実行を無効にするタスクグループに属するタスクに対してレディキューに登録されたタスクをサスペンドキューに、ウエイトキューに登録されたタスクをウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに属するタスクに対してはサスペンドキューに登録されたタスクをレディキューに、ウエイト・サスペンドキューに登録されたタスクをウエイトキューに移動登録することで、実行を有効とするタスクグループを切り替えるものである。
【0045】
以上のように構成されたタスク管理装置について、図6〜図9を用いて、その動作を述べる。
まず、タスク単体の実行切り替え動作について説明する。各タスク単体の実行切り替え動作は実行タスク切り替え手段111が実行中のタスクとレディキュー120に登録されているタスクの実行優先度を元に行う。
【0046】
図7は本実施の形態における状態遷移図である。ここでは図2で示した優先度スケジューリングを行う一般的なリアルタイムOSでのタスクの状態を示した状態遷移図に対して、さらに強制待ち状態と二重待ち状態の2つの状態を追加している。図7において図2と同じ状態については同じ符号を用い、説明を省略する。強制待ち状態250は実行可能状態220のタスクが強制的に実行不可能な状態にされた場合の状態であり、この状態のタスクは図6のサスペンドキュー122に登録され管理される。二重待ち状態240は待ち状態230で何らかの条件待ちをしていたタスクが強制的に実行不可能な状態にされた場合の状態であり、この状態のタスクは図6のウエイト・サスペンドキュー123に登録され管理される。これら2つの待ち状態が追加されても実行状態のタスクは1つしか存在しないということは変わらず、実行されるタスクが切り替わるのは図2の3つの状態の場合と同じである。
【0047】
追加された強制待ち状態250と二重待ち状態240の状態に対する実行タスク切り替え手段111の動作について説明する。
【0048】
例えば、実行優先度がタスクa>タスクb>タスクcの順番でタスクaが最も実行優先度が高く、各タスクの状態としてタスクaが待ち状態、タスクbが実行状態、タスクcが実行可能状態である3つのタスクが存在する場合に、実行可能状態220と強制待ち状態250との状態間の状態遷移及び、待ち状態230、二重待ち状態240、強制待ち状態250の各状態間の状態遷移について説明する。
【0049】
実行状態210であるタスクbが実行可能状態220の状態であるタスクcに対して、強制的に実行不可能な状態にする処理(通常、これはリアルタイムOSのタスク管理用システムコールである)を実行した場合には、実行タスク切り替え手段111がレディキュー120に登録されているタスクcの登録を解除し、サスペンドキュー122に新たに登録を行い、タスクcは実行可能状態220から強制待ち状態250に移行する。逆に実行状態210であるタスクbが強制待ち状態250の状態となっているタスクcに対して、強制的に実行可能な状態にする処理(これも通常はリアルタイムOSのタスク管理用システムコールである)を実行した場合には、実行タスク切り替え手段111がサスペンドキュー122に登録されているタスクcの登録を解除し、レディキュー120に登録を行い、タスクcは強制待ち状態250から実行可能状態220に移行する。
【0050】
また、実行状態210であるタスクbが待ち状態230の状態であるタスクaに対して、強制的に実行不可能な状態にする処理(これもリアルタイムOSのタスク管理用システムコールである)を実行した場合には、実行タスク切り替え手段111がウエイトキュー121に登録されているタスクaの登録を解除し、ウエイト・サスペンドキュー123に新たに登録を行い、タスクaは待ち状態230から二重待ち状態240に移行する。逆に実行状態210であるタスクbが二重待ち状態240となったタスクaに対して、強制的な実行不可能状態を解除する処理(これもリアルタイムOSのタスク管理用システムコールである)を実行した場合には、実行タスク切り替え手段111がウエイト・サスペンドキュー123に登録されているタスクaの登録を解除し、ウエイトキュー121に新たに登録を行い、タスクaは二重待ち状態240から待ち状態230に移行する。
【0051】
また、二重待ち状態240となっているタスクaに対して待ち条件が解除されれた場合には、実行タスク切り替え手段111がウエイト・サスペンドキュー123に登録されているタスクaの登録を解除し、サスペンドキュー122に新たに登録を行い、タスクaは二重待ち状態240から強制待ち状態250に移行する。
【0052】
次にタスクグループの切り替えについて図8及び図9を用いて説明する。タスクグループの切り替え動作はタスクグループ切り替え手段132がタスクグループ管理手段140に格納されたデータと実行時間管理手段131の切り替えタイミング指令に基づいてレディキュー120及びウエイトキュー121に登録されているタスクをサスペンドキュー122、ウエイト・サスペンドキュー123にそれぞれ登録変更することによって、有効とするタスクグループの切り替えを行う。
【0053】
タスクグループの数及び各タスクグループに所属するタスク数と実行優先度については、実施の形態1におけるタスク管理装置の場合と同じとする。
【0054】
図8は初期状態から順にタスクグループA、タスクグループB、タスクグループCという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー120とサスペンドキュー122の状態を示した図である。
【0055】
図8で初期状態からタスクグループAに所属するタスクのみを実行するタスクグループAの実行期間に切り替える場合には、タスクグループ切り替え手段132が実行を有効とするタスクグループA以外のタスクグループに所属するタスクを実行可能状態から強制待ち状態に移行させる。即ち図8のタスクグループA実行期間のレディキューに示すように、タスクグループBに所属するタスクb1、b2、タスクグループCに所属するタスクc1、c2、c3の各タスクをレディキュー120から登録削除し、これらのタスクをサスペンドキュー122に登録する。こうすることで、レディキュー120に登録され実行可能状態となっているのはタスクグループAに所属するタスクのみとなるため、タスクグループAに所属するタスクだけが実行されることになる。
【0056】
次に、タスクグループAに所属するタスクの実行期間から、タスクグループBに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段132がタスクグループAに所属するタスクa1、a2、a3をレディキュー120から登録削除し、サスペンドキュー122に登録した後に、実行を有効とするタスクグループBに所属するタスクb1、b2をサスペンドキュー122から登録削除して、レディキュー120に登録する。なお、タスクb1、b2がサスペンドキュー122からレディキュー120に復帰する場合の実行優先度は、レディキュー120からサスペンドキュー122に強制的に移行される直前の各タスクの実行優先度となる。
【0057】
タスクグループBに所属するタスクの実行期間から、タスクグループCに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段132がタスクグループBに所属するタスクb1、b2をレディキュー120から登録削除し、サスペンドキュー122に登録した後に、実行を有効とするタスクグループCに所属するタスクc1、c2、c3をサスペンドキュー122から登録削除して、レディキュー120に登録する。この場合もタスクc1、c2、c3がサスペンドキュー122からレディキュー120に復帰する場合の実行優先度は、レディキュー120からサスペンドキュー122に強制的に移行される直前の各タスクの実行優先度となっている。
【0058】
実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段132が上記の動作を繰り返すことによって、タスクグループA→タスクグループB→タスクグループC→タスクグループA・・・というようにタスクグループごとに実行切り替えを行うことができる。
【0059】
なお、タスクグループを切り替える順序や各タスクグループに割り当てる実行時間に関するデータはタスクグループ管理手段140の中に格納されており、これらのデータを元にタスクグループ切り替え手段132が次に実行を有効とするタスクグループを決定したり、実行時間管理手段131に次のタスクグループの切り替えタイミングの設定を行うことは、実施の形態1におけるタスク管理装置の場合と同じである。
【0060】
次に、待ち状態のタスクがある場合にタスクグループを切り替える場合の動作について説明する。
図9は待ち状態のタスクがある場合にタスクグループA、タスクグループB、タスクグループCという順序で時分割に有効となるタスクグループが切り替わる場合のレディキュー120、ウエイトキュー121、サスペンドキュー122及びウエイト・サスペンドキュー123の状態を示した図である。
【0061】
各タスクの実行優先度は図8の場合と同じで、タスクa2、b2は条件1が発生するのを条件待ちしており、タスクc3は条件2が発生するのを条件待ちしている。このため、初期状態として条件1のウエイトキューにタスクa2、b2が登録され、条件2のウエイトキューにタスクc3が登録されているとする(図示せず)。
【0062】
タスクグループAの実行期間ではタスクグループAに所属するタスクのみが実行されるようにするために、タスクグループ切り替え手段132は図9のタスクグループA実行期間のレディキューに示すようにタスクグループBに所属するタスクb1、タスクグループCに所属するタスクc1、c2の各タスクをレディキュー120から登録削除し、これらのタスクをサスペンドキュー122に登録する。また、条件1ウエイトキューに登録されているタスクグループBに所属するタスクb2、条件2ウエイトキューに登録されているタスクグループCに所属するタスクc3をウエイトキュー121から登録削除し、これらのタスクをウエイト・サスペンドキュー123に登録する。
【0063】
こうすることで、待ち状態となってウエイトキューに登録されているタスクに対しても、タスクグループAに所属するタスク以外のタスクは強制的に実行不可能な二重待ち状態になるため、実行可能となるタスクはタスクグループAに所属するタスクのみとなり、タスクグループAに所属するタスクだけが実行されることになる。
【0064】
次に、タスクグループAに所属するタスクの実行期間から、タスクグループBに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段132が図9のタスクグループB実行期間のレディキューに示すようにタスクグループAに所属するタスクa1、a3をレディキュー120から登録削除し、サスペンドキュー122に登録した後に、実行を有効とするタスクグループBに所属するタスクb1をサスペンドキュー122から登録削除して、レディキュー120に登録する。また、条件1ウエイトキューに登録されているタスクa2をウエイトキュー121から登録削除し、ウエイト・サスペンドキュー123に登録した後に、タスクb2をウエイト・サスペンドキュー123から登録削除して、条件1ウエイトキューに登録する。
【0065】
なお、タスクb1がサスペンドキュー122からレディキュー120に復帰する場合の実行優先度はレディキュー120からサスペンドキュー122に強制的に移行される直前の実行優先度であり、タスクb2がウエイト・サスペンドキュー123から条件1ウエイトキューに復帰する場合の実行優先度は条件1ウエイトキューからウエイト・サスペンドキュー123に強制的に移行される直前の実行優先度である。
【0066】
タスクグループBに所属するタスクの実行期間から、タスクグループCに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段132がタスクグループBに所属するタスクb1をレディキュー120から登録削除し、サスペンドキュー122に登録した後に、実行を有効とするタスクグループCに所属するタスクc1、c2をサスペンドキュー122から登録削除して、レディキュー120に登録する。また、条件1ウエイトキューに登録されているタスクb2をウエイトキュー121から登録削除し、ウエイト・サスペンドキュー123に登録した後に、タスクc3をウエイト・サスペンドキュー123から登録削除して、条件2ウエイトキューに登録する。
【0067】
なお、タスクc1、c2がサスペンドキュー122からレディキュー120に復帰する場合の実行優先度はレディキュー120からサスペンドキュー122に強制的に移行される直前の実行優先度であり、タスクc3がウエイト・サスペンドキュー123から条件2ウエイトキューに復帰する場合の実行優先度は条件2ウエイトキューからウエイト・サスペンドキュー123に強制的に移行される直前の実行優先度である。
【0068】
以上のようにタスク単体の実行切り替え動作については、実行タスク切り替え手段111が実行しているタスクとレディキュー120に登録されているすべてのタスクの中で最も実行優先度の高いタスクを選択実行することで、実行切り替えを行う。実行を有効にするタスクグループの切り替えについては、各タスクグループの実行を有効とする順序や各タスクグループに割り当てる実行時間に関するデータをタスクグループ管理手段140が管理し、これらのデータと実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段132がどのタスクグループの実行を有効とするかを決定した後に、実行を無効にするタスクグループに所属するタスクに対しては、レディキュー120に登録されたタスクをサスペンドキュー122に移動登録し、ウエイトキュー121に登録されたタスクをウエイト・サスペンドキュー123に移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、サスペンドキュー122に登録されたタスクをレディキュー120に移動登録し、ウエイト・サスペンドキュー123に登録されたタスクをウエイトキュー121に移動登録することで実行を有効とするタスクグループの切り替えを行う。
【0069】
その結果、タスクの状態として待ち状態のタスクを存在させることが可能となり、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【0070】
なお、以上の説明では各タスクは1つのグループのみに所属する場合について説明したが、2つ以上のタスクグループに所属させることも可能である。このように特定のタスクを2つ以上のタスクグループに所属させても、全く同様にタスクグループの切り替え動作を行うことができ、しかも複数のタスクグループに所属させたタスクは実行のリアルタイム性を高めることができるようになるという新たな効果も生じる。
【0071】
なお、以上の実施の形態1,2の説明では実行優先度は数値が小さいほど実行優先度が高いとした場合について説明したが、数値が大きいほど実行優先度が高いとした場合でも全く同じようにして実現可能であり、得られる効果も同等である。
【0072】
さらに、以上の説明では実行優先度の範囲を0〜15として説明したが、実行優先度の範囲がこれよりも小さくても、大きくても全く同じようにして実現可能であり、得られる効果も同等である。
【0073】
また、以上の説明では実行するタスクのグループはA〜Cの3つで、タスクグループA→タスクグループB→タスクグループC→タスクグループA・・・というように規則正しくタスクグループの切り替えが繰り返される場合について説明したが、もっと複雑な繰り返し周期でタスクグループの切り替えを行う場合でも同じようにして実現可能であり、得られる効果も同等である。
【0074】
【発明の効果】
以上のように本願の請求項1〜4の発明のタスク管理装置によれば、タスクグループ切り替え手段がどのタスクグループの実行を有効とするかを決定した後に、レディーキュー及びウエイトキューに登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで実行を有効とするタスクグループの切り替えを行うため、タスクの状態として待ち状態のタスクを存在させることが可能となる。各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【0075】
また、本願の請求項5〜7の発明のタスク管理装置によれば、タスクグループ切り替え手段が実行を無効にするタスクグループに所属するタスクに対しては、レディキューに登録されたタスクをサスペンドキューに移動登録し、ウエイトキューに登録されたタスクをウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、サスペンドキューに登録されたタスクをレディキューに移動登録し、ウエイト・サスペンドキューに登録されたタスクをウエイトキューに移動登録することで、実行を有効とするタスクグループの切り替えを行うため、タスクの状態として待ち状態のタスクを存在させることが可能となる。又各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1によるタスク管理装置の構成を示すブロック図
【図2】本発明の実施の形態1によるタスク管理装置でのタスクの状態遷移図
【図3】本発明の実施の形態1によるタスク管理装置でのタスクの実行優先度の一例を示す図
【図4】本発明の実施の形態1によるタスク管理装置でのレディーキューの状態変化を示した図
【図5】本発明の実施の形態1によるタスク管理装置でのレディーキューとウエイトキューの状態変化を示した図
【図6】本発明の実施の形態2によるタスク管理装置の構成を示すブロック図
【図7】本発明の実施の形態2によるタスク管理装置でのタスクの状態遷移図
【図8】本発明の実施の形態2によるタスク管理装置でのレディーキューとサスペンドキューの状態変化を示した図
【図9】本発明の実施の形態2によるタスク管理装置でのレディーキュー、ウエイトキュー、サスペンドキュー、ウエイト・サスペンドキューの状態変化を示した図
【図10】従来のタスク管理装置の構成を示すブロック図
【符号の説明】
110,111 実行タスク切り替え手段
120 レディキュー
122 ウエイトキュー
122 サスペンドキュー
123 ウエイト・サスペンドキュー
130,132 タスクグループ切り替え手段
131 実行時間管理手段
140 タスクグループ管理手段
【発明の属する技術分野】
本発明はマイクロプロセッサ上でマルチタスク処理を行う場合に、複数のタスクをいくつかのグループに分けて、各グループごとにタスクを管理し実行するタスク管理装置に関するものである。
【0002】
【従来の技術】
従来、タスク管理装置としては、例えば、特許文献1に記載されているようなものがあった。図10は、特許文献1に記載された従来のタスク管理装置を示すものである。図10において、データ処理装置1はプログラム制御により動作する処理装置であり、記憶装置2は実行可能なタスクの状態を優先度毎に記憶するレディキュー20、レディキュー20の一部分を複数記憶するタイムシェアリングウエイトキュー40、タイムシェアリングを行う優先度の上位と下位を記憶するタイムシェアリング優先度範囲の記憶部41、実行中のタスクグループ番号を記憶するアクティブタスクグループ42、及びタスクグループ毎の処理時間情報を記憶するタイムシェアリング時間テーブル43を備えている。そして実行タスク決定手段10はレディキュー20に登録されている実行可能なタスクの中から、実行優先度の最も高いタスクを選択し実行する。タスクグループ切り替え手段30はタスクグループの切り替えタイミングになると、タイムシェアリング優先度範囲41で指定された範囲のタスクをレディキュー20からタイムシェアリングウエイトキュー40に退避し、タイムシェアリングウエイトキュー40に退避されている次にアクティブにすべきグループのタスクをレディキュー20に復帰させる。タスクグループの切り替えタイミングは切り替え時間検知手段31がアクティブタスクグループ42に格納されている実行中のタスクグループ番号とタイムシェアリング時間テーブル43に格納されている各タスクグループの処理時間情報から検出し、タスクグループ切り替え手段30に通知する。このようにして、限定された範囲の実行優先度のタスクをいくつかのグループに分けて、グループごとに時分割で実行の切り替えを行っていた。
【0003】
【特許文献1】
特開平2000−172514号
【0004】
【発明が解決しようとする課題】
しかしながら、このような従来の構成では、レディキュー20とタイムシェアリングウエイトキュー40との間で、限定された範囲の実行優先度のタスクを退避、復旧するようにして実行を有効とするタスクグループの切り替えを行なっているため、レディキュー20に登録されていないタスク、例えば待ち状態のタスクのように通常はウエイトキューに登録されるタスクには対応することができなかった。又このような待ち状態のタスクの待ちが解除されて実行可能状態になった場合には、そのタスクが本来実行されてはいけないタスクグループのタスクであっても実行されてしまうという課題を有していた。したがって、タスクの状態として待ち状態をとることができないという課題を有していた。
【0005】
本発明は、このような従来の課題を解決するもので、タスクの状態として待ち状態のタスクを存在させることが可能であり、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことが可能なタスク管理装置を提供することを目的とする。
【0006】
【課題を解決するための手段】
本願の請求項1の発明は、プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、実行可能状態のタスクを実行優先度と共に登録するレディキューと、記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、前記各タスクグループごとの実行時間を管理する実行時間管理手段と、前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とする。
【0007】
本願の請求項2の発明は、請求項1のタスク管理装置において、前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能な状態となった場合には、前記ウエイトキューに登録されているタスクを前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録することを特徴とする。
【0008】
本願の請求項3の発明は、請求項1又は2のタスク管理装置において、前記タスクグループ管理手段は、各タスクを少なくとも1つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする。
【0009】
本願の請求項4の発明は、請求項1〜3のいずれか1項のタスク管理装置において、各タスクグループには、各タスクグループ内において最も実行優先度が低く、実行が有効になっていない他のタスクグループに所属するすべてのタスクよりも実行優先度が高いアイドルタスクが存在することを特徴とする。
【0010】
本願の請求項5の発明は、プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、実行可能状態のタスクを実行優先度と共に登録するレディキューと、前記実行可能状態から強制待ち状態になったタスクを登録するサスペンドキューと、前記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、前記実行可能状態になるための条件待ちの状態からさらに強制的な待ち状態になったタスクを登録するウエイト・サスペンドキューと、実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、前記各タスクグループごとの実行時間を管理する実行時間管理手段と、前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を無効にするタスクグループに所属するタスクに対しては、前記レディキューに登録されたタスクを前記サスペンドキューに移動登録すると共に、前記ウエイトキューに登録されたタスクを前記ウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、前記サスペンドキューに登録されたタスクを前記レディキューに移動登録すると共に、前記ウエイト・サスペンドキューに登録されたタスクを前記ウエイトキューに移動登録することで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とする。
【0011】
本願の請求項6の発明は、請求項5のタスク管理装置において、前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能となった場合にはウエイトキューに登録されたタスク前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録し、前記レディキューに登録されているタスクが実行不可能な状態となった場合には前記レディキューに登録されているタスクをサスペンドキューに移動登録し、前記サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記サスペンドキューに登録されているタスクをレディキューに移動登録し、前記ウエイトキューに登録されているタスクが実行不可能な状態となった場合には前記ウエイトキューに登録されているタスクを前記ウエイト・サスペンドキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記ウエイト・サスペンドキューに登録されているタスクを前記ウエイトキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクの条件が解除された場合には前記ウエイト・サスペンドキューに登録されているタスクを前記サスペンドキューに登録することを特徴とする。
【0012】
本願の請求項7の発明は、請求項5又は6のタスク管理装置において、前記タスクグループ管理手段は、各タスクを少なくとも1つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする。
【0013】
本構成によって、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことが可能なタスク管理装置を提供することができる。
【0014】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態1におけるタスク管理装置の構成図である。図1において、レディキュー120は実行可能状態になったタスクが実行優先度と共に登録され、ウエイトキュー121は実行可能状態になるための条件待ちになっている待ち状態のタスクが実行優先度と共に登録される。実行タスク切り替え手段110は実行されているタスクとレディキュー120に登録されているタスクとの中で最も実行優先度の高いタスクを選択し実行したり、ウエイトキュー121に登録されているタスクが実行可能状態になった場合にはウエイトキュー121の登録を解除しレディキュー120に登録する。タスクグループ管理手段140には各タスクグループの実行順序を示すデータと各タスクグループに割り当てる実行時間のデータが格納される。実行時間管理手段131は設定された実行時間が経過するとタスクグループ切り替え指令をタスクグループ切り替え手段130に出力する。タスクグループ切り替え手段130は実行時間管理手段131から供給されるタスクグループ切り替え指令と、タスクグループ管理手段140に格納されている各タスクグループの実行順序のデータをもとに、実行するタスクグループの切り替えを行う。
【0015】
以上のように構成されたタスク管理装置について、図1〜図5を用いて、以下、その動作を述べる。
まず、タスク単体の実行切り替え動作について説明する。各タスク単体の実行切り替え動作は実行タスク切り替え手段110が実行中のタスクとレディキュー120に登録されているタスクの実行優先度を元に行う。
【0016】
図2は優先度スケジューリングを行う一般的なリアルタイムOSでのタスクの状態を示した状態遷移図である。図2で実行状態210は実行中のタスクの状態で、1つのタスクのみがこの実行状態になることができる。実行可能状態220は実行する準備は整っているが、より実行優先度が高いタスクが実行状態になっているために実行待ちとなっているタスクの状態のことであり、この状態のタスクは図1のレディキュー120に登録され管理されている。
【0017】
待ち状態230は何らかの条件待ちの状態で、その条件が満たされた場合に実行可能状態220に移行するタスクの状態のことであり、この状態のタスクは図1のウエイトキュー121に登録され管理されている。
【0018】
このように実行状態のタスクは1つしか存在しないので、実行されるタスクが切り替わるには、実行中のタスクが実行状態210から実行可能状態220に移行するか、待ち状態230に移行する必要がある。
【0019】
例えば、実行優先度がタスクa>タスクb>タスクcの順番でタスクaが最も実行優先度が高く、各タスクの状態としてタスクaが待ち状態、タスクbが実行状態、タスクcが実行可能状態である3つのタスクが存在する場合に、タスクの実行切替が発生するのは次の2つのいずれかの場合である。
(a)待ち状態のタスクaの待ち条件が成立して、タスクaが待ち状態から実行可能状態に移行した場合である。優先度スケジューリングでは実行状態及び実行可能状態となっているすべてのタスクの中で最も実行優先度が高いタスクが実行状態になるように実行スケジューリングが行われる。従ってこの場合では、実行状態のタスクbが実行可能状態に移行し、実行可能状態になったタスクaが実行状態に移行する。
(b)実行状態のタスクbが何らかの条件により待ち状態に移行した場合である。実行状態のタスクbが待ち状態に移行することで、実行可能状態にあるタスクの中で最も実行優先度が高いタスクcが実行可能状態から実行状態に移行する。
【0020】
実行タスク切り替え手段110はこれらのタスク単体の実行切り替え動作を行う。前述した(a)のタスク切り替えの場合には、待ち状態のタスクaの待ち条件が成立すると、実行タスク切り替え手段110がウエイトキュー121に登録されているタスクaの登録を解除し、レディキュー120に新たに登録を行うとともに、レディキュー120に登録されているすべてのタスクと実行状態のタスクの実行優先度を比較確認し、実行状態であったタスクbをレディキュー120に登録し、最も実行優先度の高いタスクであるタスクaを実行状態にする。
【0021】
また、前述の(b)のタスク切り替えの場合には、実行状態のタスクbが待ち状態になるような処理が実行されると、実行タスク切り替え手段110がタスクbをウエイトキュー121に登録し、レディキュー120に登録されているすべてのタスクの中で最も実行優先度の高いタスクcを実行状態にする。
【0022】
なお、実行タスク切り替え手段110がタスクの実行切り替えを行う場合に、実行可能状態のタスクが複数存在すれば、実行優先度がもっとも高いタスクを実行状態に移行し、さらに、最も実行優先度の高いタスクが複数存在する場合には、最も早く実行可能状態になったタスクを実行状態に移行する。
【0023】
次にタスクグループの切り替えについて図3〜図5を用いて説明する。タスクグループの切り替え動作は、タスクグループ切り替え手段130がタスクグループ管理手段140に格納されたデータと実行時間管理手段131の切り替えタイミング指令に基づいて、レディキュー120及びウエイトキュー121に登録されている各タスクの実行優先度を変更することによって、有効とするタスクグループの切り替えを行う。
【0024】
例えば図3に示すようにタスクグループA〜Cの3つのタスクグループがあり、タスクグループAはa1〜a3の3つのタスク、タスクグループBはb1〜b2の2つのタスク、タスクグループCはc1〜c3の3つのタスクで構成されているものとする。各タスクの初期状態の実行優先度は、図3のように、タスクa1が3、タスクa2が3、タスクa3が4、タスクb1が3、タスクb2が4、タスクc1が3、タスクc2が4、タスクc3が5であるとする。なお、実行優先度は数値が小さいほど実行優先度が高いことを示す。
【0025】
図4は初期状態から順にタスクグループA、タスクグループB、タスクグループCという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー120の状態を示した図である。
【0026】
図4で初期状態からタスクグループAに所属するタスクのみを実行するタスクグループAの実行期間に切り替える場合には、タスクグループ切り替え手段130が実行を有効とするタスクグループA以外のタスクグループに所属する各タスクの実行優先度を一定のオフセット値を加算することで引き下げる。即ち図4のタスクグループA実行期間のレディキューに示すように、タスクグループBに所属するタスクb1、b2の実行優先度をそれぞれ3→13、4→14にし、タスクグループCに所属するタスクc1、c2、c3の実行優先度をそれぞれ3→13、4→14、5→15にする。
【0027】
こうすることで、タスクグループAに所属するタスクの実行優先度が他のタスクグループに所属するタスクよりも相対的に高くなるため優先的に実行されることになる。また、タスクグループAに所属するタスクの中で最も実行優先度を低くしたタスクをアイドルタスクとして、グループAの他のタスクの処理が終了しても少なくともアイドルタスクが実行権を持ち続けるようにしておけば、他のタスクグループのタスクには実行権が移らないようにすることが可能である。
【0028】
次に、タスクグループAに所属するタスクの実行期間から、タスクグループBに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段130がタスクグループAに所属するタスクa1、a2、a3の実行優先度をそれぞれ3→13、3→13、4→14のように一定のオフセット値を加算することで引き下げる。そして図4のタスクグループBの実行期間のレディキューに示すように、実行を有効とするタスクグループBに所属するタスクb1、b2の実行優先度をそれぞれ13→3、14→4のように一定のオフセット値を減算することで、初期状態の実行優先度まで戻す。
【0029】
タスクグループBに所属するタスクの実行期間から、タスクグループCに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段130がタスクグループBに所属するタスクb1、b2の実行優先度をそれぞれ3→13、4→14のように一定のオフセット値を加算することで引き下げる。その後に、実行を有効とするタスクグループCに所属するタスクc1、c2、c3の実行優先度をそれぞれ13→3、14→4、15→5のように一定のオフセット値を減算することで、初期状態の実行優先度まで戻す。
【0030】
実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段130が以上の動作を繰り返すことによって、タスクグループA→タスクグループB→タスクグループC→タスクグループA・・・というように実行を有効とするタスクグループを切り替えることができる。
【0031】
なお、実行を有効とするタスクグループを切り替える順序や各タスクグループを有効としておく時間に関するデータはタスクグループ管理手段140の中に格納されている。これらのデータを元にタスクグループ切り替え手段130が次に実行を有効とするタスクグループを決定したり、実行時間管理手段131に次のタスクグループの切り替えタイミングの設定を行う。
【0032】
次に、待ち状態のタスクがある場合にタスクグループを切り替える場合の動作について説明する。
図5は待ち状態のタスクがある場合に、タスクグループA、タスクグループB、タスクグループCという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー120とウエイトキュー121の状態を示した図である。
【0033】
なお、タスクが待ち状態になる場合には特定の条件を待つことになるので、待ち条件ごとにウエイトキューを設ける方法と、ウエイトキューは1つでタスクごとに待ち条件を別途管理するようにする方法がある。この図では待ち条件ごとにウエイトキューを設ける方法で説明している。
【0034】
また、各タスクの実行優先度は図4の場合と同じで、タスクa2、b2は条件1が成立するのを条件待ちしており、タスクc3は条件2が成立するのを条件待ちしていて、このため、条件1のウエイトキューにタスクa2、b2が登録され、条件2のウエイトキューにタスクc3が登録されているとする(図示せず)。
【0035】
タスクグループAの実行期間ではタスクグループAに所属するタスクのみが実行されるようにするために、タスクグループ切り替え手段130は図5のタスクグループA実行期間のレディキューに示すようにタスクグループBに所属するタスクb1の実行優先度を3→13にし、タスクグループCに所属するタスクc1、c2の実行優先度をそれぞれ3→13、4→14にする。また、条件1のウエイトキューに登録されているタスクグループBに所属するタスクb2の実行優先度を4→14にし、条件2のウエイトキューに登録されているタスクグループCに所属するタスクc3の実行優先度を5→15にする。
【0036】
こうすることで、待ち状態となってウエイトキューに登録されているタスクグループAに所属するタスクに対しても、タスクの実行優先度が他のタスクグループに所属するタスクよりも相対的に高くなるため、待ち条件が成立して実行可能状態となりレディーキューに登録されたときに優先的に実行されることになる。また、タスクグループA以外のタスクグループに所属するタスクについてもし待ち条件が満たされて実行可能状態となった場合でも、タスクグループAに所属するタスクよりも実行優先度が低いため、タスクグループAの実行期間では実行されることはない。
【0037】
次に、タスクグループAに所属するタスクの実行期間から、タスクグループBに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段130が図5のタスクグループB実行期間のレディキューに示すようにタスクグループAに所属するタスクa1、a3の実行優先度をそれぞれ3→13、4→14にし、タスクグループBに所属するタスクb1の実行優先度を13→3にする。また、条件1ウエイトキューに登録されているタスクグループAに所属するタスクa2の実行優先度を3→13にし、タスクグループBに所属するタスクb2の実行優先度を14→4にする。
【0038】
タスクグループBに所属するタスクの実行期間から、タスクグループCに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段130が図5のタスクグループC実行期間のレディキューに示すようにタスクグループBに所属するタスクb1の実行優先度を3→13にし、タスクグループCに所属するタスクc1、c2の実行優先度それそれ13→3、14→4にする。また、条件1のウエイトキューに登録されているタスクグループBに所属するタスクb2の実行優先度を4→14にし、条件2のウエイトキューに登録されているタスクグループCに所属するタスクc3の実行優先度を15→5にする。
【0039】
実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段130が上記の動作を繰り返すことによって、待ち状態のタスクがある場合でも、タスクグループA→タスクグループB→タスクグループC→タスクグループA・・・というように実行を有効とするタスクグループを切り替えることができる。
【0040】
以上のように、タスク単体の実行切り替え動作については、実行タスク切り替え手段110が実行されているタスクとレディキュー120に登録されているすべてのタスクの中で最も実行優先度の高いタスクを選択実行することで、実行切り替えを行う。実行を有効にするタスクグループの切り替え動作については、各タスクグループの実行を有効とする順序や各タスクグループに割り当てる実行時間に関するデータをタスクグループ管理手段140が管理し、これらのデータと実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段130がどのタスクグループの実行を有効とするかを決定した後に、レディーキュー120及びウエイトキュー121に登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで、実行を有効とするタスクグループの切り替えを行う。
【0041】
その結果、タスクの状態として待ち状態のタスクを存在させることができ、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができるという効果が得られる。
【0042】
なお、タスクグループ切り替え手段130が実行優先度を変更するときにオフセット値10を加算あるいは減算するように説明したが、このオフセット値は実行を有効とするタスクグループのみが実行されるようになる数値であれば10以外の数値でも全く同じようにして実現可能であり、得られる効果も同等である。
【0043】
(実施の形態2)
図6は、本発明の実施の形態2におけるタスク管理装置の構成図である。図6において図1と同じ構成要素については同じ符号を用い、説明を省略する。図1に示した本発明の実施の形態1の構成に対して、本発明の実施の形態2におけるタスク管理装置はサスペンドキュー122とウエイト・サスペンドキュー123が追加された点に特徴を有している。
【0044】
図6でサスペンドキュー122は実行可能状態から強制的に待ち状態になったタスクが登録され、ウエイト・サスペンドキュー123は実行可能状態になるための条件待ちの状態からさらに強制的な待ち状態になったタスクが登録される。実行タスク切り替え手段111は実施の形態1の実行タスク切り替え手段110の動作に加えて、レディキュー120に登録されているタスクの登録をサスペンドキューに移動させることで、実行可能状態にあるタスクを強制的に実行不可能な状態としたり、またその逆の操作を行う。更にウエイトキューに登録されているタスクをウエイト・サスペンドキューに移動させることで、待ち状態のタスクに対して実行不可能な状態としたり、またその逆の操作を行う。又タスクグループ切り替え手段131は後述するように実行を無効にするタスクグループに属するタスクに対してレディキューに登録されたタスクをサスペンドキューに、ウエイトキューに登録されたタスクをウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに属するタスクに対してはサスペンドキューに登録されたタスクをレディキューに、ウエイト・サスペンドキューに登録されたタスクをウエイトキューに移動登録することで、実行を有効とするタスクグループを切り替えるものである。
【0045】
以上のように構成されたタスク管理装置について、図6〜図9を用いて、その動作を述べる。
まず、タスク単体の実行切り替え動作について説明する。各タスク単体の実行切り替え動作は実行タスク切り替え手段111が実行中のタスクとレディキュー120に登録されているタスクの実行優先度を元に行う。
【0046】
図7は本実施の形態における状態遷移図である。ここでは図2で示した優先度スケジューリングを行う一般的なリアルタイムOSでのタスクの状態を示した状態遷移図に対して、さらに強制待ち状態と二重待ち状態の2つの状態を追加している。図7において図2と同じ状態については同じ符号を用い、説明を省略する。強制待ち状態250は実行可能状態220のタスクが強制的に実行不可能な状態にされた場合の状態であり、この状態のタスクは図6のサスペンドキュー122に登録され管理される。二重待ち状態240は待ち状態230で何らかの条件待ちをしていたタスクが強制的に実行不可能な状態にされた場合の状態であり、この状態のタスクは図6のウエイト・サスペンドキュー123に登録され管理される。これら2つの待ち状態が追加されても実行状態のタスクは1つしか存在しないということは変わらず、実行されるタスクが切り替わるのは図2の3つの状態の場合と同じである。
【0047】
追加された強制待ち状態250と二重待ち状態240の状態に対する実行タスク切り替え手段111の動作について説明する。
【0048】
例えば、実行優先度がタスクa>タスクb>タスクcの順番でタスクaが最も実行優先度が高く、各タスクの状態としてタスクaが待ち状態、タスクbが実行状態、タスクcが実行可能状態である3つのタスクが存在する場合に、実行可能状態220と強制待ち状態250との状態間の状態遷移及び、待ち状態230、二重待ち状態240、強制待ち状態250の各状態間の状態遷移について説明する。
【0049】
実行状態210であるタスクbが実行可能状態220の状態であるタスクcに対して、強制的に実行不可能な状態にする処理(通常、これはリアルタイムOSのタスク管理用システムコールである)を実行した場合には、実行タスク切り替え手段111がレディキュー120に登録されているタスクcの登録を解除し、サスペンドキュー122に新たに登録を行い、タスクcは実行可能状態220から強制待ち状態250に移行する。逆に実行状態210であるタスクbが強制待ち状態250の状態となっているタスクcに対して、強制的に実行可能な状態にする処理(これも通常はリアルタイムOSのタスク管理用システムコールである)を実行した場合には、実行タスク切り替え手段111がサスペンドキュー122に登録されているタスクcの登録を解除し、レディキュー120に登録を行い、タスクcは強制待ち状態250から実行可能状態220に移行する。
【0050】
また、実行状態210であるタスクbが待ち状態230の状態であるタスクaに対して、強制的に実行不可能な状態にする処理(これもリアルタイムOSのタスク管理用システムコールである)を実行した場合には、実行タスク切り替え手段111がウエイトキュー121に登録されているタスクaの登録を解除し、ウエイト・サスペンドキュー123に新たに登録を行い、タスクaは待ち状態230から二重待ち状態240に移行する。逆に実行状態210であるタスクbが二重待ち状態240となったタスクaに対して、強制的な実行不可能状態を解除する処理(これもリアルタイムOSのタスク管理用システムコールである)を実行した場合には、実行タスク切り替え手段111がウエイト・サスペンドキュー123に登録されているタスクaの登録を解除し、ウエイトキュー121に新たに登録を行い、タスクaは二重待ち状態240から待ち状態230に移行する。
【0051】
また、二重待ち状態240となっているタスクaに対して待ち条件が解除されれた場合には、実行タスク切り替え手段111がウエイト・サスペンドキュー123に登録されているタスクaの登録を解除し、サスペンドキュー122に新たに登録を行い、タスクaは二重待ち状態240から強制待ち状態250に移行する。
【0052】
次にタスクグループの切り替えについて図8及び図9を用いて説明する。タスクグループの切り替え動作はタスクグループ切り替え手段132がタスクグループ管理手段140に格納されたデータと実行時間管理手段131の切り替えタイミング指令に基づいてレディキュー120及びウエイトキュー121に登録されているタスクをサスペンドキュー122、ウエイト・サスペンドキュー123にそれぞれ登録変更することによって、有効とするタスクグループの切り替えを行う。
【0053】
タスクグループの数及び各タスクグループに所属するタスク数と実行優先度については、実施の形態1におけるタスク管理装置の場合と同じとする。
【0054】
図8は初期状態から順にタスクグループA、タスクグループB、タスクグループCという順序で時分割に有効となるタスクグループを切り替える場合のレディキュー120とサスペンドキュー122の状態を示した図である。
【0055】
図8で初期状態からタスクグループAに所属するタスクのみを実行するタスクグループAの実行期間に切り替える場合には、タスクグループ切り替え手段132が実行を有効とするタスクグループA以外のタスクグループに所属するタスクを実行可能状態から強制待ち状態に移行させる。即ち図8のタスクグループA実行期間のレディキューに示すように、タスクグループBに所属するタスクb1、b2、タスクグループCに所属するタスクc1、c2、c3の各タスクをレディキュー120から登録削除し、これらのタスクをサスペンドキュー122に登録する。こうすることで、レディキュー120に登録され実行可能状態となっているのはタスクグループAに所属するタスクのみとなるため、タスクグループAに所属するタスクだけが実行されることになる。
【0056】
次に、タスクグループAに所属するタスクの実行期間から、タスクグループBに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段132がタスクグループAに所属するタスクa1、a2、a3をレディキュー120から登録削除し、サスペンドキュー122に登録した後に、実行を有効とするタスクグループBに所属するタスクb1、b2をサスペンドキュー122から登録削除して、レディキュー120に登録する。なお、タスクb1、b2がサスペンドキュー122からレディキュー120に復帰する場合の実行優先度は、レディキュー120からサスペンドキュー122に強制的に移行される直前の各タスクの実行優先度となる。
【0057】
タスクグループBに所属するタスクの実行期間から、タスクグループCに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段132がタスクグループBに所属するタスクb1、b2をレディキュー120から登録削除し、サスペンドキュー122に登録した後に、実行を有効とするタスクグループCに所属するタスクc1、c2、c3をサスペンドキュー122から登録削除して、レディキュー120に登録する。この場合もタスクc1、c2、c3がサスペンドキュー122からレディキュー120に復帰する場合の実行優先度は、レディキュー120からサスペンドキュー122に強制的に移行される直前の各タスクの実行優先度となっている。
【0058】
実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段132が上記の動作を繰り返すことによって、タスクグループA→タスクグループB→タスクグループC→タスクグループA・・・というようにタスクグループごとに実行切り替えを行うことができる。
【0059】
なお、タスクグループを切り替える順序や各タスクグループに割り当てる実行時間に関するデータはタスクグループ管理手段140の中に格納されており、これらのデータを元にタスクグループ切り替え手段132が次に実行を有効とするタスクグループを決定したり、実行時間管理手段131に次のタスクグループの切り替えタイミングの設定を行うことは、実施の形態1におけるタスク管理装置の場合と同じである。
【0060】
次に、待ち状態のタスクがある場合にタスクグループを切り替える場合の動作について説明する。
図9は待ち状態のタスクがある場合にタスクグループA、タスクグループB、タスクグループCという順序で時分割に有効となるタスクグループが切り替わる場合のレディキュー120、ウエイトキュー121、サスペンドキュー122及びウエイト・サスペンドキュー123の状態を示した図である。
【0061】
各タスクの実行優先度は図8の場合と同じで、タスクa2、b2は条件1が発生するのを条件待ちしており、タスクc3は条件2が発生するのを条件待ちしている。このため、初期状態として条件1のウエイトキューにタスクa2、b2が登録され、条件2のウエイトキューにタスクc3が登録されているとする(図示せず)。
【0062】
タスクグループAの実行期間ではタスクグループAに所属するタスクのみが実行されるようにするために、タスクグループ切り替え手段132は図9のタスクグループA実行期間のレディキューに示すようにタスクグループBに所属するタスクb1、タスクグループCに所属するタスクc1、c2の各タスクをレディキュー120から登録削除し、これらのタスクをサスペンドキュー122に登録する。また、条件1ウエイトキューに登録されているタスクグループBに所属するタスクb2、条件2ウエイトキューに登録されているタスクグループCに所属するタスクc3をウエイトキュー121から登録削除し、これらのタスクをウエイト・サスペンドキュー123に登録する。
【0063】
こうすることで、待ち状態となってウエイトキューに登録されているタスクに対しても、タスクグループAに所属するタスク以外のタスクは強制的に実行不可能な二重待ち状態になるため、実行可能となるタスクはタスクグループAに所属するタスクのみとなり、タスクグループAに所属するタスクだけが実行されることになる。
【0064】
次に、タスクグループAに所属するタスクの実行期間から、タスクグループBに所属するタスクの実行期間に切り替える場合には、タスクグループ切り替え手段132が図9のタスクグループB実行期間のレディキューに示すようにタスクグループAに所属するタスクa1、a3をレディキュー120から登録削除し、サスペンドキュー122に登録した後に、実行を有効とするタスクグループBに所属するタスクb1をサスペンドキュー122から登録削除して、レディキュー120に登録する。また、条件1ウエイトキューに登録されているタスクa2をウエイトキュー121から登録削除し、ウエイト・サスペンドキュー123に登録した後に、タスクb2をウエイト・サスペンドキュー123から登録削除して、条件1ウエイトキューに登録する。
【0065】
なお、タスクb1がサスペンドキュー122からレディキュー120に復帰する場合の実行優先度はレディキュー120からサスペンドキュー122に強制的に移行される直前の実行優先度であり、タスクb2がウエイト・サスペンドキュー123から条件1ウエイトキューに復帰する場合の実行優先度は条件1ウエイトキューからウエイト・サスペンドキュー123に強制的に移行される直前の実行優先度である。
【0066】
タスクグループBに所属するタスクの実行期間から、タスクグループCに所属するタスクの実行期間に切り替える場合も同様にして、タスクグループ切り替え手段132がタスクグループBに所属するタスクb1をレディキュー120から登録削除し、サスペンドキュー122に登録した後に、実行を有効とするタスクグループCに所属するタスクc1、c2をサスペンドキュー122から登録削除して、レディキュー120に登録する。また、条件1ウエイトキューに登録されているタスクb2をウエイトキュー121から登録削除し、ウエイト・サスペンドキュー123に登録した後に、タスクc3をウエイト・サスペンドキュー123から登録削除して、条件2ウエイトキューに登録する。
【0067】
なお、タスクc1、c2がサスペンドキュー122からレディキュー120に復帰する場合の実行優先度はレディキュー120からサスペンドキュー122に強制的に移行される直前の実行優先度であり、タスクc3がウエイト・サスペンドキュー123から条件2ウエイトキューに復帰する場合の実行優先度は条件2ウエイトキューからウエイト・サスペンドキュー123に強制的に移行される直前の実行優先度である。
【0068】
以上のようにタスク単体の実行切り替え動作については、実行タスク切り替え手段111が実行しているタスクとレディキュー120に登録されているすべてのタスクの中で最も実行優先度の高いタスクを選択実行することで、実行切り替えを行う。実行を有効にするタスクグループの切り替えについては、各タスクグループの実行を有効とする順序や各タスクグループに割り当てる実行時間に関するデータをタスクグループ管理手段140が管理し、これらのデータと実行時間管理手段131から供給される指令タイミングに応じて、タスクグループ切り替え手段132がどのタスクグループの実行を有効とするかを決定した後に、実行を無効にするタスクグループに所属するタスクに対しては、レディキュー120に登録されたタスクをサスペンドキュー122に移動登録し、ウエイトキュー121に登録されたタスクをウエイト・サスペンドキュー123に移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、サスペンドキュー122に登録されたタスクをレディキュー120に移動登録し、ウエイト・サスペンドキュー123に登録されたタスクをウエイトキュー121に移動登録することで実行を有効とするタスクグループの切り替えを行う。
【0069】
その結果、タスクの状態として待ち状態のタスクを存在させることが可能となり、各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【0070】
なお、以上の説明では各タスクは1つのグループのみに所属する場合について説明したが、2つ以上のタスクグループに所属させることも可能である。このように特定のタスクを2つ以上のタスクグループに所属させても、全く同様にタスクグループの切り替え動作を行うことができ、しかも複数のタスクグループに所属させたタスクは実行のリアルタイム性を高めることができるようになるという新たな効果も生じる。
【0071】
なお、以上の実施の形態1,2の説明では実行優先度は数値が小さいほど実行優先度が高いとした場合について説明したが、数値が大きいほど実行優先度が高いとした場合でも全く同じようにして実現可能であり、得られる効果も同等である。
【0072】
さらに、以上の説明では実行優先度の範囲を0〜15として説明したが、実行優先度の範囲がこれよりも小さくても、大きくても全く同じようにして実現可能であり、得られる効果も同等である。
【0073】
また、以上の説明では実行するタスクのグループはA〜Cの3つで、タスクグループA→タスクグループB→タスクグループC→タスクグループA・・・というように規則正しくタスクグループの切り替えが繰り返される場合について説明したが、もっと複雑な繰り返し周期でタスクグループの切り替えを行う場合でも同じようにして実現可能であり、得られる効果も同等である。
【0074】
【発明の効果】
以上のように本願の請求項1〜4の発明のタスク管理装置によれば、タスクグループ切り替え手段がどのタスクグループの実行を有効とするかを決定した後に、レディーキュー及びウエイトキューに登録されたすべてのタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで実行を有効とするタスクグループの切り替えを行うため、タスクの状態として待ち状態のタスクを存在させることが可能となる。各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【0075】
また、本願の請求項5〜7の発明のタスク管理装置によれば、タスクグループ切り替え手段が実行を無効にするタスクグループに所属するタスクに対しては、レディキューに登録されたタスクをサスペンドキューに移動登録し、ウエイトキューに登録されたタスクをウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、サスペンドキューに登録されたタスクをレディキューに移動登録し、ウエイト・サスペンドキューに登録されたタスクをウエイトキューに移動登録することで、実行を有効とするタスクグループの切り替えを行うため、タスクの状態として待ち状態のタスクを存在させることが可能となる。又各タスクグループごとに待ち状態のタスクが存在する場合でも、待ち状態のタスクも含めて各タスクグループごとに実行時間の管理を行うことができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1によるタスク管理装置の構成を示すブロック図
【図2】本発明の実施の形態1によるタスク管理装置でのタスクの状態遷移図
【図3】本発明の実施の形態1によるタスク管理装置でのタスクの実行優先度の一例を示す図
【図4】本発明の実施の形態1によるタスク管理装置でのレディーキューの状態変化を示した図
【図5】本発明の実施の形態1によるタスク管理装置でのレディーキューとウエイトキューの状態変化を示した図
【図6】本発明の実施の形態2によるタスク管理装置の構成を示すブロック図
【図7】本発明の実施の形態2によるタスク管理装置でのタスクの状態遷移図
【図8】本発明の実施の形態2によるタスク管理装置でのレディーキューとサスペンドキューの状態変化を示した図
【図9】本発明の実施の形態2によるタスク管理装置でのレディーキュー、ウエイトキュー、サスペンドキュー、ウエイト・サスペンドキューの状態変化を示した図
【図10】従来のタスク管理装置の構成を示すブロック図
【符号の説明】
110,111 実行タスク切り替え手段
120 レディキュー
122 ウエイトキュー
122 サスペンドキュー
123 ウエイト・サスペンドキュー
130,132 タスクグループ切り替え手段
131 実行時間管理手段
140 タスクグループ管理手段
Claims (7)
- プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、
実行可能状態のタスクを実行優先度と共に登録するレディキューと、
前記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、
実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、
前記各タスクグループごとの実行時間を管理する実行時間管理手段と、
前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、
前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くすることで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とするタスク管理装置。 - 前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能な状態となった場合には、前記ウエイトキューに登録されているタスクを前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録することを特徴とする請求項1記載のタスク管理装置。
- 前記タスクグループ管理手段は、各タスクを少なくとも1つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする請求項1又は2記載のタスク管理装置。
- 各タスクグループには、各タスクグループ内において最も実行優先度が低く、実行が有効になっていない他のタスクグループに所属するすべてのタスクよりも実行優先度が高いアイドルタスクが存在することを特徴とする請求項1〜3のいずれか1項記載のタスク管理装置。
- プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置において、
実行可能状態のタスクを実行優先度と共に登録するレディキューと、
前記実行可能状態から強制待ち状態になったタスクを登録するサスペンドキューと、
前記実行可能状態になるための条件待ちとなっているタスクを実行優先度と共に登録するウエイトキューと、
前記実行可能状態になるための条件待ちの状態からさらに強制的な待ち状態になったタスクを登録するウエイト・サスペンドキューと、
実行中のタスクと前記レディキューで登録されているすべてのタスクの中から実行優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、
前記各タスクグループごとの実行時間を管理する実行時間管理手段と、
前記各タスクグループの実行順序と前記各タスクグループに割り当てる実行時間を管理するタスクグループ管理手段と、
前記実行時間管理手段から供給される指令タイミングと前記タスクグループ管理手段に格納された実行順序のデータとに基づき、実行を無効にするタスクグループに所属するタスクに対しては、前記レディキューに登録されたタスクを前記サスペンドキューに移動登録すると共に、前記ウエイトキューに登録されたタスクを前記ウエイト・サスペンドキューに移動登録し、実行を有効にするタスクグループに所属するタスクに対しては、前記サスペンドキューに登録されたタスクを前記レディキューに移動登録すると共に、前記ウエイト・サスペンドキューに登録されたタスクを前記ウエイトキューに移動登録することで、実行を有効とするタスクグループを切り替えるタスクグループ切り替え手段と、を備えたことを特徴とするタスク管理装置。 - 前記実行タスク切り替え手段は、前記ウエイトキューに登録されているタスクが実行可能となった場合にはウエイトキューに登録されたタスク前記レディキューに移動登録し、実行中のタスクが条件待ちとなった場合には前記ウエイトキューに登録し、前記レディキューに登録されているタスクが実行不可能な状態となった場合には前記レディキューに登録されているタスクをサスペンドキューに移動登録し、前記サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記サスペンドキューに登録されているタスクをレディキューに移動登録し、前記ウエイトキューに登録されているタスクが実行不可能な状態となった場合には前記ウエイトキューに登録されているタスクを前記ウエイト・サスペンドキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクが実行可能な状態となった場合には前記ウエイト・サスペンドキューに登録されているタスクを前記ウエイトキューに移動登録し、前記ウエイト・サスペンドキューに登録されているタスクの条件が解除された場合には前記ウエイト・サスペンドキューに登録されているタスクを前記サスペンドキューに登録することを特徴とする請求項5記載のタスク管理装置。
- 前記タスクグループ管理手段は、各タスクを少なくとも1つのタスクグループに所属させるようにして、各タスクの実行を管理することを特徴とする請求項5又は6記載のタスク管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003121045A JP2004326486A (ja) | 2003-04-25 | 2003-04-25 | タスク管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003121045A JP2004326486A (ja) | 2003-04-25 | 2003-04-25 | タスク管理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004326486A true JP2004326486A (ja) | 2004-11-18 |
Family
ID=33499720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003121045A Pending JP2004326486A (ja) | 2003-04-25 | 2003-04-25 | タスク管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004326486A (ja) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007199848A (ja) * | 2006-01-24 | 2007-08-09 | Yaskawa Electric Corp | 軽量化リアルタイムos |
JP2008123045A (ja) * | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
JP2008242510A (ja) * | 2007-03-23 | 2008-10-09 | Nec Corp | ジョブへの資源割当方式、ジョブへの資源割当方法およびプログラム |
JP2009020692A (ja) * | 2007-07-11 | 2009-01-29 | Toshiba Corp | タスク管理装置、タスク管理方法及びタスク管理プログラム |
US7676610B2 (en) | 2005-03-31 | 2010-03-09 | Fujitsu Limited | Device and method for optimization of target host device process handling according to the status and the priority of the target host device process |
US8347296B2 (en) | 2008-06-02 | 2013-01-01 | Panasonic Corporation | Priority control apparatus and priority control method |
KR20150121600A (ko) * | 2014-04-21 | 2015-10-29 | 삼성전자주식회사 | 하드웨어 기반 태스크 스케쥴링 장치 및 방법 |
KR20160004334A (ko) * | 2013-04-23 | 2016-01-12 | 아브 이니티오 테크놀로지 엘엘시 | 컴퓨팅 시스템에 의해 수행되는 태스크 제어 |
KR101867866B1 (ko) * | 2017-03-23 | 2018-06-18 | 주식회사 노트스퀘어 | 프로그램의 동적 최적화 방법 및 장치 |
JP2019106120A (ja) * | 2017-12-14 | 2019-06-27 | 日本電気株式会社 | プロセススケジューリング装置、プロセス実行装置およびプロセススケジューリング方法 |
KR20190112600A (ko) * | 2018-03-26 | 2019-10-07 | 현대모비스 주식회사 | 차량의 혼잡 제어를 위한 임베디드 시스템, 차량의 혼잡 제어 방법 |
CN112596884A (zh) * | 2020-12-26 | 2021-04-02 | 中国农业银行股份有限公司 | 一种任务调整方法及装置 |
CN113722068A (zh) * | 2021-08-31 | 2021-11-30 | 平安普惠企业管理有限公司 | 基于Azkaban的批量任务处理方法、装置、设备及存储介质 |
-
2003
- 2003-04-25 JP JP2003121045A patent/JP2004326486A/ja active Pending
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676610B2 (en) | 2005-03-31 | 2010-03-09 | Fujitsu Limited | Device and method for optimization of target host device process handling according to the status and the priority of the target host device process |
JP2007199848A (ja) * | 2006-01-24 | 2007-08-09 | Yaskawa Electric Corp | 軽量化リアルタイムos |
JP4618647B2 (ja) * | 2006-01-24 | 2011-01-26 | 株式会社安川電機 | リアルタイムosシステム |
JP2008123045A (ja) * | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
US8141088B2 (en) | 2006-11-08 | 2012-03-20 | Panasonic Corporation | Multithreaded processor |
JP2008242510A (ja) * | 2007-03-23 | 2008-10-09 | Nec Corp | ジョブへの資源割当方式、ジョブへの資源割当方法およびプログラム |
JP2009020692A (ja) * | 2007-07-11 | 2009-01-29 | Toshiba Corp | タスク管理装置、タスク管理方法及びタスク管理プログラム |
US8347296B2 (en) | 2008-06-02 | 2013-01-01 | Panasonic Corporation | Priority control apparatus and priority control method |
KR102251932B1 (ko) * | 2013-04-23 | 2021-05-13 | 아브 이니티오 테크놀로지 엘엘시 | 컴퓨팅 시스템에 의해 수행되는 태스크 제어 |
KR20160004334A (ko) * | 2013-04-23 | 2016-01-12 | 아브 이니티오 테크놀로지 엘엘시 | 컴퓨팅 시스템에 의해 수행되는 태스크 제어 |
KR102182295B1 (ko) | 2014-04-21 | 2020-11-24 | 삼성전자 주식회사 | 하드웨어 기반 태스크 스케쥴링 장치 및 방법 |
KR20150121600A (ko) * | 2014-04-21 | 2015-10-29 | 삼성전자주식회사 | 하드웨어 기반 태스크 스케쥴링 장치 및 방법 |
KR101867866B1 (ko) * | 2017-03-23 | 2018-06-18 | 주식회사 노트스퀘어 | 프로그램의 동적 최적화 방법 및 장치 |
JP2019106120A (ja) * | 2017-12-14 | 2019-06-27 | 日本電気株式会社 | プロセススケジューリング装置、プロセス実行装置およびプロセススケジューリング方法 |
JP7009971B2 (ja) | 2017-12-14 | 2022-01-26 | 日本電気株式会社 | プロセススケジューリング装置およびプロセススケジューリング方法 |
KR20190112600A (ko) * | 2018-03-26 | 2019-10-07 | 현대모비스 주식회사 | 차량의 혼잡 제어를 위한 임베디드 시스템, 차량의 혼잡 제어 방법 |
KR102418660B1 (ko) | 2018-03-26 | 2022-07-08 | 현대모비스 주식회사 | 차량의 혼잡 제어를 위한 임베디드 시스템, 차량의 혼잡 제어 방법 |
CN112596884A (zh) * | 2020-12-26 | 2021-04-02 | 中国农业银行股份有限公司 | 一种任务调整方法及装置 |
CN112596884B (zh) * | 2020-12-26 | 2024-06-11 | 中国农业银行股份有限公司 | 一种任务调整方法及装置 |
CN113722068A (zh) * | 2021-08-31 | 2021-11-30 | 平安普惠企业管理有限公司 | 基于Azkaban的批量任务处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101529383B (zh) | 任务处理装置 | |
US8549524B2 (en) | Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems | |
CN108920267B (zh) | 任务处理装置 | |
JP2004326486A (ja) | タスク管理装置 | |
US20090165014A1 (en) | Method and apparatus for migrating task in multicore platform | |
JP5347451B2 (ja) | マルチプロセッサシステム、競合回避プログラム及び競合回避方法 | |
JP2008506187A (ja) | 複数のカーネルの並列実行のための方法およびシステム | |
TWI426451B (zh) | Work processing device | |
JP2008084009A (ja) | マルチプロセッサシステム | |
US8321874B2 (en) | Intelligent context migration for user mode scheduling | |
JP6296678B2 (ja) | ソフトリアルタイムオペレーティングシステムの実時間性を確保する方法及び装置 | |
JP2004280297A (ja) | タスク切換装置、方法及びプログラム | |
US7590990B2 (en) | Computer system | |
JP5040050B2 (ja) | 複数チャネルdmaコントローラおよびプロセッサシステム | |
EP1820100B1 (en) | Efficient switching between prioritized tasks | |
CN102436393B (zh) | 任务处理装置 | |
CN101169737A (zh) | 任务切换控制方法以及计算机系统 | |
EP1131704B1 (en) | Processing system scheduling | |
US8042116B2 (en) | Task switching based on the execution control information held in register groups | |
US20050066093A1 (en) | Real-time processor system and control method | |
JP2014225137A (ja) | タスクスケジューラ,マイクロプロセッサ及びタスクスケジューリング方法 | |
JP2018106472A (ja) | 制御装置 | |
JP5859472B2 (ja) | プロセスの待ち行列を共有する複数のプロセッサを有する計算機、及び、プロセスディスパッチ処理方法 | |
JPH10340197A (ja) | キャッシング制御方法及びマイクロコンピュータ | |
JPH0895803A (ja) | タスクスケジュール方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060404 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071004 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071016 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080304 |