(57)【要約】      （修正有）【課題】タスクの適切な優先度を決定し、タスクの受付けは出来るだけ早く行うタスク制御システム及びタスク制御方法を提供する。【解決手段】タスク制御システムは、タスク管理テーブル２と、優先度制御部１とを有する。タスク管理テーブル２は、タスクごとにタスク情報３を格納し、タスク情報３は、優先度を含むタスク実行制御に関する情報である。優先度制御部１は、イベントを受付けると、所定の周期で、タスク情報３の優先度を段階的に高く変更する。【選択図】図１
2012155596.tif 000002
【特許請求の範囲】
【請求項１】
タスクごとに、優先度を含むタスク情報を管理するタスク管理テーブルと、
イベントを受付けると、所定の周期で、該優先度を段階的に高く変更する第１の優先度制御部とを有する、
タスク制御システム。
【請求項２】
前記タスク情報は優先度制御フラグをさらに含み、
前記第１の優先度制御部は、該優先度制御フラグに基づいて前記優先度の変更の可否を判断する、
請求項１記載のタスク制御システム。
【請求項３】
前記タスク情報は初期優先度及び上限優先度をさらに含み、
前記第１の優先度制御部は、前記優先度を、該初期優先度から該上限優先度まで段階的に高く変更する、
請求項１−２いずれかに記載のタスク制御システム。
【請求項４】
前記タスク情報はイベント待ち優先度を含み、
前記優先度を、前記タスクがイベントを受付けたとき初期優先度に変更し、該タスクがイベントの処理を終了したときイベント待ち優先度に変更する第２の優先度制御部をさらに有する、
請求項１−３いずれかに記載のタスク制御システム。
【請求項５】
タスクごとに、優先度、初期優先度及びイベント待ち優先度を含むタスク情報を管理するタスク管理テーブルと、
前記優先度を、前記タスクがイベントを受付けたとき初期優先度に変更し、該タスクがイベントの処理を終了したときイベント待ち優先度に変更する第２の優先度制御部とを有する、
タスク制御システム。
【請求項６】
イベントを受付けるステップと、
所定の周期で、タスク情報に含まれる優先度を段階的に高く変更するステップを有する、
タスク制御方法。
【請求項７】
前記タスク情報は優先度制御フラグをさらに含み、
前記変更するステップは、該優先度制御フラグに基づいて前記優先度の変更の可否を判断する、
請求項６記載のタスク制御方法。
【請求項８】
前記タスク情報は初期優先度及び上限優先度をさらに含み、
前記変更するステップは、前記優先度を、該初期優先度から該上限優先度まで段階的に高く変更する、
請求項６−７いずれかに記載のタスク制御方法。
【請求項９】
前記タスク情報はイベント待ち優先度を含み、
前記優先度を、前記タスクがイベントを受付けたとき初期優先度に変更し、該タスクがイベントの処理を終了したときイベント待ち優先度に変更するステップをさらに有する、
請求項６−８いずれかに記載のタスク制御方法。
【請求項１０】
イベントを受付けるステップと、
タスク情報に含まれる優先度を、タスクがイベントを受付けたとき初期優先度に変更し、該タスクがイベントの処理を終了したときイベント待ち優先度に変更するステップとを有する、
タスク制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はタスク制御システム及びタスク制御方法に関するものであり、特にタスクの優先度を制御する技術に関する。
【背景技術】
【０００２】
情報処理システムでは、多くの場合、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の有効利用を図るために、タスクを単位としてＣＰＵ使用時間の割当てを行い、複数のタスクの並行処理を実現している。タスクにＣＰＵ使用時間を割当てる方法としては、例えば、タスク毎に優先度を付与し、優先度が高い順にタスクにＣＰＵ使用時間を割当てる方法がある。
【０００３】
ここで、タスクに付与される優先度は、システムにかかる負荷状態等を考慮してシステム構築時にあらかじめ決定される固定値が付与されるのが一般的である。
【０００４】
かかる手法では、タスクに付与された優先度が適切なものでない場合、タスクの動作に支障が生じる場合があった。例えば、システムの動作状況を調査するための情報採取ツールを起動するタスクにおいて、優先度が高すぎると、実行中の他のタスクの動作を阻害し、情報採取の対象である情報処理システムの状態を変化させてしまう可能性がある。一方、優先度が低すぎると、今度は他のタスクが優先されて起動タスクが動作せず、情報採取が行えないという問題を生じる。
【０００５】
そこで、タスクの実行終了時刻の切迫に合わせてタスクの実行優先度を高くすることで、タスク処理の遅延を防ぐ構成が提案されている（特許文献１）。しかしながら、かかる構成では、実行終了時刻と推定処理時間とをあらかじめ設定する必要がある。したがって、処理時間を正確に見積もることが困難なタスクには適用しにくいという問題があった。
【０００６】
また、所定の時間にわたって実行されていないタスクの優先度を高くすることで、タスクの沈み込み現象を防止する構成が提案されている（特許文献２）。しかしながら、かかる構成では、ＣＰＵ時間の割当て待ちをしている複数のタスクの優先度が同じように高くなる可能性がある。したがって、特定のタスクの優先度を高くしたい場合には採用できないという問題があった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６２−２８４４３７号公報
【特許文献２】特開平１−１９６６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、このような問題点を解決するためになされたものであり、タスクの適切な優先度を決定するタスク制御システム及びタスク制御方法を提供することを目的とする。
【０００９】
ここで、タスクの優先度を動的に変更すると、緊急性が高いイベントが発生しても、タスクが該イベントを即時に受付けることができない可能性を生じるという問題がある。
【００１０】
本発明は、かかる問題を解決するために、タスクを適切な優先度で実行しつつ、イベントの受付はできるだけ早く行うタスク制御システム及びタスク制御方法を提供することを第２の目的とする。
【課題を解決するための手段】
【００１１】
本発明にかかるタスク制御システムは、タスクごとに、優先度を含むタスク情報を管理するタスク管理テーブルと、イベントを受付けると、所定の周期で、該優先度を段階的に高く変更する第１の優先度制御部とを有するものである。
【００１２】
また、本発明にかかる他のタスク制御システムは、タスクごとに、優先度、初期優先度及びイベント待ち優先度を含むタスク情報を管理するタスク管理テーブルと、前記優先度を、前記タスクがイベントを受付けたとき初期優先度に変更し、該タスクがイベントの処理を終了したときイベント待ち優先度に変更する第２の優先度制御部とを有するものである。
【００１３】
本発明にかかるタスク制御方法は、イベントを受付けるステップと、所定の周期で、タスク情報に含まれる優先度を段階的に高く変更するステップを有するものである。
【００１４】
また、本発明にかかる他のタスク制御方法は、イベントを受付けるステップと、タスク情報に含まれる優先度を、タスクがイベントを受付けたとき初期優先度に変更し、該タスクがイベントの処理を終了したときイベント待ち優先度に変更するステップとを有するものである。
【発明の効果】
【００１５】
本発明により、タスクの適切な優先度を決定するタスク制御システム及びタスク制御方法を提供することができる。また、タスクを適切な優先度で実行しつつ、イベントの受付はできるだけ早く行うタスク制御システム及びタスク制御方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１にかかる構成図である。
【図２】実施の形態１にかかるタスク情報の構成図である。
【図３】実施の形態１にかかる処理フロー図である。
【図４】実施の形態１にかかるタスクの優先度の状態を示す図である。
【図５】実施の形態２にかかる構成図である。
【図６】実施の形態２にかかるタスク情報の構成図である。
【図７】実施の形態２にかかる処理フロー図である。
【図８】実施の形態２にかかるタスクの優先度の状態を示す図である。
【発明を実施するための形態】
【００１７】
実施の形態１
図１は本発明の実施の形態１にかかるタスク制御システムの構成図である。タスク管理テーブル２は、タスクごとにタスク情報３を格納している。また、タスク管理テーブル２は、タスクの実行順序を管理するために用いられる実行キュー４を備えている。優先度制御部１は、タスク情報３に含まれるタスク状態３１を所定の周期で変更することにより、タスクの優先度を制御する処理を行う。
【００１８】
タスク情報３は、タスクの実行制御に関する種々の情報の集合である。典型的には、図示しないタスク生成部が、タスクを生成したときに、該タスクにかかるタスク情報３をタスク管理テーブル２に登録する。タスク情報３の内容の例を図２に示す。タスク状態３１は、タスクの実行状態を示す情報である。タスク状態３１は、典型的には「実行中」、「待ち」、「実行可能」のいずれかの値をとる。「実行中」は、タスクにＣＰＵが割当てられ、実行している状態を示す。「待ち」は、入出力処理等が完了するのを待っている状態を示す。「実行可能」は、ＣＰＵが割当てられれば実行できる状態であり、他のタスクがＣＰＵを使用し終えるのを待っている状態を示す。優先度３２は、タスクの現在の優先度を示す情報である。本実施の形態では、優先度３２は、タスクの優先度が高いほど優先度３２の値が大きくなるように定義されている。優先度制御部１が所定の周期で該優先度３２の値を変更することにより、タスクの優先度が変動する。優先度制御フラグ３４は、優先度制御部１が優先度３２の値を変更する処理を行うか否かを判断するためのフラグである。例えば、優先度制御部１は、優先度制御フラグ３４が「オン」のときには優先度３２を変更する処理を行うが、優先度制御フラグ３４が「オフ」のときにはかかる処理を行わない。初期優先度３５は、優先度３２の初期値を示す。上限優先度３６は、優先度制御部１が優先度３２を変更する際の上限値を示す。これらに加え、その他の管理情報３３として、例えばＣＰＵレジスタ内容の保存領域等を保持することができる。
【００１９】
実行キュー４は、ＣＰＵ割当て待ちのタスク（例えばタスク状態３１が「実行可能」であるタスク）のタスク情報３のポインタ（タスク情報３のアドレス）を格納する。ここで、実行キュー４は、タスク情報３のポインタが、タスクの優先度が高い順、すなわち本実施の形態においては優先度３２の値が大きい順に、キューの先頭から並ぶように格納する。この場合、実行キュー４の先頭にあるタスク情報３のタスクが、現在実行中のタスクの次に実行されるタスクとなる。
【００２０】
優先度制御部１は、所定の周期で、タスク管理テーブル２に格納されているタスク情報３の優先度制御フラグ３４を参照する。ここで、優先度制御フラグ３４が優先度３２を変更する処理を行うべき旨を示すものである場合、優先度制御部１は、優先度３２の値を高いものに変更する。かかる変更処理は、具体的には、初期優先度３５と上限優先度３６との間を複数の段階に区分し、所定の周期ごとに、該段階を１又は２以上高めるように変更するものであってよい。なお、優先度制御フラグ３４が優先度３２の変更を行わない旨を示すものである場合は、優先度制御部１は優先度３２に対する変更を行わない。このように、優先度制御フラグ３４は、優先度制御部１が特定のタスクに対してのみ優先度変更処理を実行するよう制御する役割を果たす。本実施の形態では、優先度制御フラグ３４が「オン」である場合に優先度３２の変更を行い、優先度３２が「オフ」である場合に優先度３２の変更を行わないこととした例を示している。
【００２１】
本発明の実施の形態１にかかるタスク制御システムにおける処理について説明する。
【００２２】
はじめに、タスク生成部（図示しない）が、タスク情報３をタスク管理テーブル２に登録する処理を説明する。タスク生成部は、タスクを生成したとき、該タスクにかかるタスク情報３をタスク管理テーブル２に登録する。タスク情報３は、例えば図２に示すような情報の集合体である。ここで、タスク生成部は、優先度３２に、初期値として初期優先度３５を設定することができる。また、タスク生成部は、優先度制御フラグ３４を「オン」に設定することにより、このタスク情報３を優先度制御部１による処理の対象とするよう定義することが可能である。
【００２３】
つづいて、優先度制御部１が、タスクの優先度を制御する処理を行う。この処理を図３のシーケンス図を用いて説明する。
【００２４】
優先度制御部１は、所定の周期で、タスク管理テーブル２に格納されているすべてのタスク情報３に対して、以下のステップＡ３〜Ａ５にかかる一連の処理を行う（ステップＡ１、Ａ２）。
【００２５】
はじめに、優先度制御部１は、タスク情報３に含まれる優先度制御フラグ３４の値を参照する（ステップＡ３）。ここで、優先度制御フラグ３４が「オン」であった場合、優先度制御部１は、該タスク情報３のタスク情報３２に対し、ステップＡ４に示す処理を実行する。一方、優先度制御フラグ３４の値が「オフ」であった場合、優先度制御部１は、このタスク情報３の優先度３２については、後続の処理を行わない。
【００２６】
優先度制御フラグ３４が「オン」であった場合、優先度制御部１は、タスク情報３に含まれる優先度３２の値を、現在より高い値に変更する（ステップＡ４）。具体的には、初期優先度３５と上限優先度３６との間を１又は２以上の段階に区分して、所定の周期ごとに、該段階を１又は２以上高めるように変更するものであってよい。また、所定の計算式やテーブル等に基づいて求められる、現在の優先度３２の値以上の値に変更するものであってもよい。なお、変更後の優先度３２の値が上限優先度３６を超えるものとなる場合には、優先度３２の値を上限優先度３６と同じ値に変更することとしてもよい。
【００２７】
つづいて、優先度制御部１は、ステップＡ４において優先度３２の値を変更し、かつ、タスク状態３１の現在の値が「実行可能」である場合には、実行キュー４の中のタスク情報３のポインタの並び順を変更する（ステップＡ５）。すなわち、優先度制御部１は、実行キュー４に格納されているタスク情報３のポインタを、タスクの優先度が高い順、すなわち本実施の形態においては優先度３２の値が大きい順に、キューの先頭から並ぶように並び替える。
【００２８】
このような一連の処理により、タスクの優先度が変化する様子を図４に示す。
【００２９】
図４において、破線部分は、タスクのタスク状態３１が「待ち」あるいは「実行可能」であることを示す。一方、実線部分は、タスク状態３１が「実行中」であることを示す。なお、この例では、タスクの優先度制御フラグ３４は「オン」になっているものとする。
【００３０】
タスクの優先度３２は、生成直後は初期優先度３５に設定される。このとき、タスクの優先度３２が他のタスクの優先度より相対的に低ければ、他の優先度の高いタスクにＣＰＵが割当てられる。そのため、タスクは「実行可能」状態にあったとしても、直ちに「実行」状態に遷移することはできず、「実行可能」状態が維持される。その後、優先度制御部１により、タスクの優先度３２が一定周期で高く変更されてゆく。ある時点において、タスクの優先度３２が他のタスクの優先度よりも高くなると、すなわち、実行キュー４の先頭にタスクのタスク情報３が位置すると、タスクはＣＰＵの割当てを受けることができるようになる。ＣＰＵが割当てられると、タスクは「実行」状態に遷移し、処理を開始する。
【００３１】
ここで、タスクは優先度が２段高くなった時点で処理を開始している。仮に、システムにかかる負荷がより低く、すなわち他の優先度の高いタスクがより少なければ、前記タスクはより早い時点で処理を開始するであろう。他方、他に優先度の高いタスクが多く存在していれば、前記タスクはより遅い時点で処理を開始するであろう。
【００３２】
このように、本実施の態様によれば、タスクは、その時々のシステムの負荷の状態に応じた適切な優先度でイベントの処理を実行することができる。
【００３３】
実施の形態２
以下、図を用いて実施の態様２にかかるタスク制御システムについて説明する。
【００３４】
なお、本実施の態様におけるタスクは、発生したイベントを受付けて該イベントに応じた処理を行う態様のものを想定している。かかるタスクの優先度を動的に変更すると、発生するイベントを即時に受付けられない可能性がある。すなわち、イベント発生時点で、該イベントを受付けるべきタスクの優先度が他のタスクの優先度に比べ低い場合は、該タスクは、前述の優先度制御によりＣＰＵの使用権を獲得できるようになる時点まで、該イベントの受付処理を開始することができない。このようにして、イベントの受付の遅延が起こりうる。イベントには、緊急性が高く即時に受付けるべきものも存在するため、かかる遅延は可能な限り起こらないことが望ましい。本実施の形態は、かかるイベントの受付の遅延を抑制しつつ、タスクの適切な優先度を決定するものである。
【００３５】
図５は本発明の実施の形態２にかかるタスク制御システムの構成図である。図５にかかる構成は、図１に示した構成に加えて第２の優先度制御部５を備える。また、図６に示すように、タスク情報３はイベント待ち優先度３７を含んでいる。
【００３６】
イベント待ち優先度３７は、タスク状態３に含まれる情報である。タスクがイベントの発生待ちを行う際、優先度３２の値が、イベント待ち優先度３７に基づいて設定される。イベント待ち優先度３７は、タスクがイベントを可能な限り早く受付けることができるよう、他のタスクがとりうる優先度に比べて十分に高い値であることが望ましい。一例として、イベント待ち優先度３７は、図１における上限優先度３６と同じ値であっても良い。あるいは、上限優先度３６をそのままイベント待ち優先度３７として扱うこととしても良い。
【００３７】
第２の優先度制御部５は、発生したイベントの受付けおよびイベント処理の終了の際、タスク情報３の内容を変更する制御を行う制御部である。第２の優先度制御部５は、例えばタスク自身であってよい。あるいは、第２の優先度制御部５は、優先度制御部１と同じであっても良く、これとは別個の制御部であっても良い。
【００３８】
つづいて、実施の形態２にかかるタスク制御システムの処理を、図７のシーケンス図を用いて説明する。
【００３９】
タスクが生成されると、第２の優先度制御部５が、タスクの優先度３２の値をイベント待ち優先度３７に設定する。さらに、第２の優先度制御部５は、タスクの優先度制御フラグ３４を「オフ」にする（ステップＢ１）。ここで、第２の優先度制御部５とは、例えばタスク自身である。また、イベント待ち優先度３７は、例えば上限優先度３６と同じ情報を使用する。
【００４０】
この後、タスクは、イベントの待機のため「待ち」状態に遷移する（ステップＢ２）。
【００４１】
イベントが発生すると、タスクは「実行」状態へと遷移し、イベントの受信処理を実行する（ステップＢ２）。該受信処理には、例えば、イベントに伴って発生する割込のクリア等が含まれる。
【００４２】
つづいて、第２の優先度制御部５は、タスクの優先度３２を初期優先度３５に変更する。このとき、該タスクより他のタスクの優先度が高ければ、他のタスクにＣＰＵの使用権が移るため、該タスクは「実行可能」状態に遷移する。また、第２の優先度制御部５は、タスクの優先度制御フラグ３４を「オン」にする（ステップＢ４）。これを契機として、優先度制御部１が、該タスクに対する優先度制御処理を開始する。優先度制御部１による処理の内容は、実施の形態１で述べたものと同様である。すなわち、優先度制御部１は、所定の周期で、該タスクの優先度３２の値を現在より高い値に変更する。ある時点において、該タスクの優先度３２が他のタスクの優先度よりも高くなると、該タスクはＣＰＵの使用権を獲得する。
【００４３】
タスクは、ＣＰＵの使用権を獲得すると、ステップＢ２で受付けたイベントに応じた処理を実行する（ステップＢ５）。イベントの処理が終了すると、第２の優先度制御部５が、再びステップＢ１の処理を実行する。すなわち、タスクの優先度３２の値をイベント待ち優先度３７に設定し、優先度制御フラグ３４を「オフ」にする。その後、タスクは「待ち」状態に遷移し（ステップＢ２）、イベントの発生を待機する。
【００４４】
このような一連の処理により、タスクの優先度が変化する様子を図８に示す。
【００４５】
図８において、破線部分は、タスクのタスク状態３１が「待ち」あるいは「実行可能」であることを示す。一方、実線部分は、タスク状態３１が「実行中」であることを示す。
【００４６】
第２の優先度制御部５は、タスク生成直後、タスクの優先度３２をイベント待ち優先度３７に設定する。タスクは「待ち」状態でイベント（ａ）の発生を待機する。イベント（ａ）が発生すると、タスクは「実行」状態に遷移し、イベント（ａ）の受信処理を開始する。タスクがイベント（ａ）の受信処理を終えると、第２の優先度制御部５は、タスクの優先度３２を初期優先度３５に変更する。このとき、該タスクより他のタスクの優先度が高ければ、他のタスクにＣＰＵの使用権が移るため、該タスクは「実行可能」状態に遷移する。その後、優先度制御部１により、タスクの優先度３２が一定周期で高く変更されてゆく。ある時点において、タスクの優先度３２が他のタスクの優先度よりも高くなると、すなわち、実行キュー４の先頭にタスクのタスク情報３が位置すると、タスクはＣＰＵの割当てを受けることができるようになる。ＣＰＵが割当てられると、タスクは「実行」状態に遷移し、イベント（ａ）の処理を開始する。タスクがイベントの処理を終えると、第２の優先度制御部５は、タスクの優先度３２をイベント待ち優先度３７に変更する。その後、タスクは「待ち」状態に遷移し、次のイベント（ｂ）の発生を待機する。イベント（ｂ）が発生すると、イベント（ａ）の場合と同様の処理を繰返す。
【００４７】
ここで、イベント（ａ）の場合、タスクは、優先度が１段高くなった時点でイベント（ａ）の処理を開始している。これは、システムにかかる負荷が低く、すなわち他の優先度の高いタスクが少なかったためである。他方、イベント（ｂ）の場合には、タスクは、優先度が３段高くなった時点でイベント（ｂ）の処理を開始している。これは、イベント（ａ）の場合に比べ、イベント（ｂ）の場合のほうが、他の優先度の高いタスクが多く存在していたためである。
【００４８】
このように、本実施の態様によれば、タスクは、イベントの受付はできるだけ早く行いつつも、その時々のシステムの負荷の状態に応じた適切な優先度でイベントの処理を実行することができる。
【００４９】
その他の実施の形態
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、タスクの優先度３２は、実施の態様１および２でしめしたように段階的に高めることに代えて、時間等を変数として含む所定の計算式等で定義される上昇幅にしたがって高めることとしても良い。
【符号の説明】
【００５０】
１    優先度制御部
２    タスク管理テーブル
３    タスク情報
３１  タスク状態
３２  優先度
３３  その他の管理情報
３４  優先度制御フラグ
３５  初期優先度
３６  上限優先度
３７  イベント待ち優先度
４    実行キュー
５    第２の優先度制御部
【図１】
2012155596.tif 000003
【図２】
2012155596.tif 000004
【図３】
2012155596.tif 000005
【図４】
2012155596.tif 000006
【図５】
2012155596.tif 000007
【図６】
2012155596.tif 000008
【図７】
2012155596.tif 000009
【図８】
2012155596.tif 000010