(57)【特許請求の範囲】
【請求項１】
タスク・スケジューリングを改良するためのコンピュータ・プログラムであって、
コンピューティング装置に、
複数のスケジュール可能なタスクの実行が可能であるか否かを計算するステップであって、各タスクが、付随するコストおよび付随する締切を有する、前記計算するステップと、
前記実行が可能であると計算された場合、各タスクについて、前記付随するコストに追加の時間を付加して、各タスク用に改定されたコストを算出するステップと、
前記計算するステップおよび前記算出するステップの操作を反復的に繰り返して、全てのタスクの全ての呼び出しが締切に間に合うか否かを判断し、前記実行がもはや可能でないと計算されるまで繰り返すステップと、
前記繰り返すステップの操作の後に、前記算出され且つ前記改定されたコストをタスクの実行時間の上限として使用するステップと
を実行させるコンピュータ・プログラム。
【請求項２】
前記追加の時間が各タスクについての前記付随するコストの一定割合である、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記追加の時間が、一部のタスクについては零であると共に、残りのすべてのタスクについてはタスクについての付随するコストの一定割合である、請求項１に記載のコンピュータ・プログラム。
【請求項４】
前記算出するステップの最初の試行では、追加の時間がタスクについての付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
請求項１に記載のコンピュータ・プログラム。
【請求項５】
前記算出するステップの最初の試行では、一部のタスクについては追加の時間が零であると共に、残りのすべてのタスクについてはタスクについての付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記使用するステップが、
実行時に、タスク群のうちの特定のタスクがそれに付随するコストを超過しているか否かを判断するステップと、
もしそうである場合、
（１）前記特定のタスクについての付随する締切までの残存時間、または、（２）前記特定のタスクの実行時間の上限、のうちの最小のものに到達するまで、前記特定のタスクが実行するのを許すステップと
を含む、請求項１に記載のコンピュータ・プログラム。
【請求項７】
タスク・スケジューリングを改良するシステムであって、
複数のスケジュール可能なタスクの実行が可能であるか否かを計算する手段であって、各タスクが、付随するコストおよび付随する締切を有する、前記計算する手段と、
前記実行が可能であると計算された場合、各タスクについて、前記付随するコストに追加の時間を付加して、各タスク用に改定されたコストを算出する手段と、
前記計算する手段および前記算出する手段の操作を反復的に繰り返して、全てのタスクの全ての呼び出しが締切に間に合うか否かを判断し、前記実行がもはや可能でないと計算されるまで繰り返す手段と、
前記繰り返す手段の操作の後に、前記算出され且つ前記改定されたコストをタスクの実行時間の上限として使用する手段と
を含むシステム。
【請求項８】
前記追加の時間が各タスクについての前記付随するコストの一定割合である、請求項７に記載のシステム。
【請求項９】
前記追加の時間が、一部のタスクについては零であると共に、残りのすべてのタスクについてはタスクについての付随するコストの一定割合である、請求項７に記載のシステム。
【請求項１０】
前記算出する手段の最初の試行では、追加の時間がタスクについての付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
請求項７に記載のシステム。
【請求項１１】
前記算出する手段の最初の試行では、一部のタスクについては追加の時間が零であると共に、残りのすべてのタスクについてはタスクについての付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
請求項７に記載のシステム。
【請求項１２】
前記使用する手段が、
実行時に、タスク群のうちの特定のタスクがそれに付随するコストを超過しているか否かを判断する手段と、
もしそうである場合、
（１）前記特定のタスクについての付随する締切までの残存時間、または、（２）前記特定のタスクの実行時間の上限、のうちの最小のものに到達するまで、前記特定のタスクが実行するのを許す手段と
を含む、請求項７に記載のシステム。
【請求項１３】
タスク・スケジューリングを改良する方法であって、
コンピューティング装置に、
複数のスケジュール可能なタスクの実行が可能であるか否かを計算するステップであって、各タスクが、付随するコストおよび付随する締切を有する、前記計算するステップと、
前記実行が可能であると計算された場合、各タスクについて、前記付随するコストに追加の時間を付加して、各タスク用に改定されたコストを算出するステップと、
前記計算するステップおよび前記算出するステップの操作を反復的に繰り返して、全てのタスクの全ての呼び出しが締切に間に合うか否かを判断し、前記実行がもはや可能でないと計算されるまで繰り返すステップと、
前記繰り返すステップの操作の後に、前記算出され且つ前記改定されたコストをタスクの実行時間の上限として使用するステップと
を実行させる、方法。
【請求項１４】
前記追加の時間が各タスクについての前記付随するコストの一定割合である、請求項１３に記載の方法。
【請求項１５】
前記追加の時間が、一部のタスクについては零であると共に、残りのすべてのタスクについてはタスクについての付随するコストの一定割合である、請求項１３に記載の方法。
【請求項１６】
前記算出するステップの最初の試行では、追加の時間がタスクについての付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
請求項１３に記載の方法。
【請求項１７】
前記算出するステップの最初の試行では、一部のタスクについては追加の時間が零であると共に、残りのすべてのタスクについてはタスクについての付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
請求項１３に記載の方法。
【請求項１８】
前記使用するステップが、
実行時に、タスク群のうちの特定のタスクがそれに付随するコストを超過しているか否かを判断するステップと、
もしそうである場合、
（１）前記特定のタスクについての付随する締切までの残存時間、または、（２）前記特定のタスクの実行時間の上限、のうちの最小のものに到達するまで、前記特定のタスクが実行するのを許すステップと
を含む、請求項１３に記載の方法。
【請求項１９】
タスク・スケジューリングを改良するためのコンピュータ・プログラムであって、
コンピューティング装置に、
複数のスケジュール可能なタスクの実行が可能であるか否かを計算するステップであって、前記タスクの夫々が付随するコストおよび付随する締切を有するステップと、
各タスクの次の実行のために許容されるタスク特定の最大の拡張コストを計算するステップであって、全ての前記タスクについてまとめられたときの前記最大の拡張コストは、前記複数のタスクの実行を可能であるように維持することを可能にし、各タスクのために許容される前記最大の拡張コストは、最初の次の実行について、改訂されたコストを計算するために前記タスクについて付随するコストの一定のパーセントを使用し、そして他の次の実行について、前記改訂されたコストの一定のパーセントを使用することによって漸増的に計算されるステップと、
前記スケジュール可能なタスクのいずれかが、タスクの次の実行の間にその付随するコストを超えると決定されると、そのタスクについての追加的な許容可能な実行時間の上限として、そのタスクについて前記最大の拡張コストを使用するステップと
を実行させるコンピュータ・プログラム。
【請求項２０】
前記最初の次の実行について、前記タスクのサブセットのために、前記最大の拡張コストを計算する場合に、零が、一定のパーセントの代わりに使用される、請求項１９に記載のコンピュータ・プログラム。
【請求項２１】
前記残存時間が前記タスクについての前記最大の拡張コストよりも大きくない場合に、追加的な許容可能な実行時間の上限として、前記タスクの付随する締切まで残存時間を使用することをさらに含む、請求項１９に記載のコンピュータ・プログラム。
【請求項２２】
スク・スケジューリングを改良するシステムであって、
複数のスケジュール可能なタスクの実行が可能であるか否かを計算する手段であって、前記タスクの夫々が付随するコストおよび付随する締切を有する手段と、
各タスクの次の実行のために許容されるタスク特定の最大の拡張コストを計算する手段であって、全ての前記タスクについてまとめられたときの前記最大の拡張コストは、前記複数のタスクの実行を可能であるように維持することを可能にし、各タスクのために許容される前記最大の拡張コストは、最初の次の実行について、改訂されたコストを計算するために前記タスクについて付随するコストの一定のパーセントを使用し、そして他の次の実行について、前記改訂されたコストの一定のパーセントを使用することによって漸増的に計算される手段と、
前記スケジュール可能なタスクのいずれかが、タスクの次の実行の間にその付随するコストを超えると決定されると、そのタスクについての追加的な許容可能な実行時間の上限として、そのタスクについて前記最大の拡張コストを使用する手段と
を含むシステム。
【請求項２３】
前記最初の次の実行について、前記タスクのサブセットのために、前記最大の拡張コストを計算する場合に、零が、一定のパーセントの代わりに使用される、請求項２２に記載のシステム。
【請求項２４】
前記残存時間が前記タスクについての前記最大の拡張コストよりも大きくない場合に、追加的な許容可能な実行時間の上限として、前記タスクの付随する締切まで残存時間を使用することをさらに含む、請求項２２に記載のシステム。
【請求項２５】
タスク・スケジューリングを改良する方法であって、
コンピューティング装置に、
複数のスケジュール可能なタスクの実行が可能であるか否かを計算するステップであって、前記タスクの夫々が付随するコストおよび付随する締切を有するステップと、
各タスクの次の実行のために許容されるタスク特定の最大の拡張コストを計算するステップであって、全ての前記タスクについてまとめられたときの前記最大の拡張コストは、前記複数のタスクの実行を可能であるように維持することを可能にし、各タスクのために許容される前記最大の拡張コストは、最初の次の実行について、改訂されたコストを計算するために前記タスクについて付随するコストの一定のパーセントを使用し、そして他の次の実行について、前記改訂されたコストの一定のパーセントを使用することによって漸増的に計算されるステップと、
前記スケジュール可能なタスクのいずれかが、タスクの次の実行の間にその付随するコストを超えると決定されると、そのタスクについての追加的な許容可能な実行時間の上限として、そのタスクについて前記最大の拡張コストを使用するステップと
を含む方法。
【請求項２６】
前記最初の次の実行について、前記タスクのサブセットのために、前記最大の拡張コストを計算する場合に、零が、一定のパーセントの代わりに使用される、請求項２５に記載の方法。
【請求項２７】
前記残存時間が前記タスクについての前記最大の拡張コストよりも大きくない場合に、追加的な許容可能な実行時間の上限として、前記タスクの付随する締切まで残存時間を使用することをさらに含む、請求項２５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にコンピュータ・システムに関し、特にタスクのスケジューリングを通じてリアルタイム・システムの動作を改良する方法、システム、コンピュータ・プログラム製品に関する。
【０００２】
【従来の技術】
リアルタイム・システムで実行されるタスクは、その実行特性（「リリース（release)特性」とも呼ばれる）の観点から極めて予測可能である、という傾向がある。特に、実行モデルの１つに、「周期的タスク・モデル」と呼ばれているタスク・モデルがある。この周期的タスク・モデルにおけるタスクの実行パターンは、タスクの周期とコストという２つの値の観点から予測可能である。あるタスクの周期とは、当該タスクの自然実行頻度の逆数で表わされる時間間隔のことである。あるタスクのコストとは、これも時間間隔であるが、当該タスクが１つの周期内で必要な作業を完了するのに要する最大時間のことである。例えば、５日ごとに１回実行するが、この５日間で２分間しか実行しないタスクを考える。この場合、このタスクの周期は５日であり、そのコストは２分間である。同様に、上記と同じシステムで、１０ミリ秒ごとに１回実行し、コストが１０マイクロ秒である別のタスクを考えることもできる。（第１番目の周期を除く）各周期は、先行する周期の終わりで直ちに開始する。意味的に正しい実行パターンは、次のようなものである。すなわち、タスクのインスタンスは、すべての周期の始めで実行可能状態になり、自分か呼ばれている周期が終わる少し前に自分の作業を完了する必要がある。タスクが呼び出されている周期の終わりは、締切と呼ばれている。
【０００３】
上述した周期的タスク・モデルに従う１組の周期的タスクの場合、すべてのタスクのすべての呼び出しが締切に間に合うか否かを計算するのは容易である。この判断（以下、実行可能性判断と呼ぶ）をなすのに、次に示す方程式を用いることができる。
【数１】
0003759040.tif 000002
ただし、ＣI はタスクＩの実行コスト、ＴI はタスクＩの周期である（すべてのＩ＝１・・・Ｎにわたって同一の時間単位を用いる）。また、タスク間の優先順位は、周知の単調比率優先順位割り当て（rate-monotonic priority assignment: ＲＭＡ）アルゴリズムに従って割り当てる。（要するに、周期が短いタスクの場合、すべての締切が間に合うか否かをこのように判断するシステムの実行可能性は、当技術分野では公知である）。
【０００４】
大部分のリアルタイム・システムでは、予期される（スケジュール可能な）タスクの他に、実行可能であるけれども、スケジューリング・プロセスまたは上述した実行可能性判断プロセスにおいて考慮に入れることのできない別のエンティティが存在する。ここでは、これらのエンティティを「スケジュール不可エンティティ（non-schedulable entity: ＮＳＥ）」と呼ぶ。ＮＳＥは、実行時間を必要とすると共に、通常のシステムの動作にとって一般に不可欠のものである。ＮＳＥの一例として、ハードウェア割込みイベントがある。一般に、ハードウェア割込みなどのＮＳＥがいつ生じるのか（あるいは生じるのか否か）を予測することはできない。したがって、実行可能性アルゴリズムとスケジューリング・アルゴリズムは、通常、ＮＳＥを無視する。
【０００５】
しかしながら、ＮＳＥが実行する時に必要とする実行時間によって、タスクが締切を守れなくなる可能性がある。たとえ実行可能性アルゴリズムが実行可能であることを示したスケジュールに従ってタスクをディスパッチした場合であっても、そうである。この理由は、システムはスケジュール済みのタスクに優先してある種のＮＳＥ（例えばハードウェア割込み）を実行しうるからである。実行可能性アルゴリズムはＮＳＥを無視するから、スケジューリング・プロセスは、スケジュール済みのタスクの実行中に実行するすべてのＮＳＥの実行時間を、当該スケジュール済みのタスクに誤って割り当ててしまいがちである。例えば、特定のタスクのコストが２０ＡＴＵ（arbitrary time unit:任意時間単位）である場合、システムは、２０ＡＴＵの実行時間後に当該タスクが完了しているものと予期する。当該タスクが上記の時間内に完了していない場合（このことは２０ＡＴＵの間にＮＳＥが実行していた場合に成り立つ）、通常、システムはエラー状態を生成し、当該タスクは失敗する。
【０００６】
ここで、ＮＳＥの実行とスケジュール済みのタスクの実行とを区別しうるリアルタイム・システムがいくつか存在する、という点に留意する必要がある。実例としては、Ｒｅａｌ−ｔｉｍｅ  ＭａｃｈとＬｉｎｕｘ／ＲＴがある。しかし、これらのシステムは、通常、実行可能性アルゴリズムにＮＳＥを含めていない。（様々な理論的理由から、実行可能性の計算でＮＳＥを無視することは、理由のある取り組みである。多くの場合、ＮＳＥは、全実行時間のほんのわずかな部分を占めるだけである。したがって、ＮＳＥは、システムの実行可能性に大した影響を与えない。しかし、これには、ＮＳＥは互いに無関係であることが知られており、それゆえ、ＮＳＥには累積効果がない、ということが言える必要がある。この仮定は、常に成り立つわけではない。また、例えば、ＮＳＥが割込みを無効にすると、ディスパッチャすなわちスケジューラは、プロセッサに十分な頻度でアクセスできなくなるので、システムが影響を受けていないことを保証することができなくなる）。
【０００７】
後述するように、ＮＳＥの発生に起因してタスクが予定の実行時間を超過した結果取り消されると、深刻な非効率が生じる。システム全体の実行可能性が保証される限り、タスクの取り消しを避け、完了するまでタスクを実行する可能性を増大させるのが望ましい。
【０００８】
「マルチメディア・コンピュータのオペレーティング・システムと方法」なる名称の米国特許第５６４０５６３号には、リアルタイム・システムにおいて、タスク・スケジューリング操作によって生じるプロセッサのオーバーヘッドを低減するために、開始時刻ではなく、締切（すなわち必要な終了時刻）に従ってタスクをスケジュールする手法が教示されている。しかし、この特許には、ＮＳＥが存在する場合における実行を処理する手法は教示されていない。
【０００９】
「プロジェクトを構成するタスクをスケジュールするコンピュータ実現方法」なる名称の米国特許第５４０８６６３号には、（プロジェクトの全所要時間すなわちプロジェクトのコストを含む）タスクの所要時間の効果が全体として不満足な場合におけるプロジェクト・スケジューリングを最適化する手法が教示されている。この特許では、タスクに割り当ててプロジェクトの用に供すべき資源を繰り返し調整して、プロジェクトの所要時間を短縮できるか否かを調べる。しかし、この特許にも、ＮＳＥが存在する場合における実行を処理する手法は教示されていない。特に、タスクが所定の時間間隔よりも長く実行を続けるのを可能にする手法が教示されていない。
【００１０】
上述した点から、従来技術の問題点を解消する改良されたタスク・スケジューリング手法が求められている。
【００１１】
【発明が解決しようとする課題】
本発明の目的は、タスク・スケジュール用の改良された手法を提供することである。
【００１２】
本発明の別の目的は、予定された実行時間を超過したタスクの実行を取り消すのを避けることのできる手法を提供することである。
【００１３】
本発明の別の目的は、システム全体が実行可能性を維持していることを保証しながら上記手法を実現することである。
【００１４】
【課題を解決するための手段】
上記目的を達成するために、本発明は、改良したタスク・スケジューリング手法を実現する方法、システム、およびコンピュータ・プログラム製品を提供する。
上記手法は、
各タスクが付随するコストおよび付随する締切を有する複数のタスクの実行が可能であるか否かを計算することと、
前記実行が可能であると計算された場合、各タスクについて付随するコストに追加の時間を付加して、各タスク用に改定されたコストを算出することと、
前記実行がもはや可能でないと計算されるまで、前記計算する手段および前記算出する手段の操作を反復的に繰り返すことと
を備えている。
この手法は、さらに、
前記反復的に繰り返すことの操作の後、前記改定されたコストをタスクの実行時間の上限として使用すること
を備えることができる。
【００１５】
本発明の一側面では、前記追加の時間がタスクに付随するコストの一定割合である。本発明の別の側面では、前記追加の時間が、一部のタスクについては零であると共に、残りのすべてのタスクについてはタスクに付随するコストの一定割合である。本発明のさらに別の側面では、前記算出することの最初の試行では、追加の時間がタスクに付随するコストの一定割合であり、残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である。本発明のさらに別の側面では、前記算出することの最初の試行では、一部のタスクについては追加の時間が零であると共に、残りのすべてのタスクについてはタスクに付随するコストの一定割合であり、残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である。
【００１６】
前記使用することは、さらに、
実行時に、タスク群のうちの特定のタスクがそれに付随するコストを超過しているか否かを判断することと、
もしそうである場合、
（１）前記特定のタスクに付随する締切までの残存時間、または、（２）前記特定のタスクの実行時間の上限、のうちの最小のものに到達するまで、前記特定のタスクが実行するのを許すことと
を備えることができる。
【００１７】
【発明の実施の形態】
図１は、本発明を実現することのできるコンピューティング装置を示す図である。コンピューティング装置１０には市販されている標準型のコンピューティング装置を用いるのが望ましい。コンピューティング装置１０は、ＣＰＵ（central processing unit)１２、メモリ１４、長期間記憶装置１６、そして（任意事項として）ネットワーク伝送機能１８を備えている。メモリ１４には主記憶装置および／または補助記憶装置を用いることができる。（「Ａおよび／またはＢ」は「ＡおよびＢ、Ａ、またはＢ」を表わす）。長期間記憶装置１６にはハード・ディスク駆動装置、ディスケット駆動装置、テープ駆動装置などのうちの少なくとも１つを用いることができる。本発明を実現するコンピュータ・プログラムの命令はメモリ１４（および／または長期間記憶装置１６）に格納するのが望ましい。
【００１８】
コンピューティング装置１０には、サーバ、メインフレーム、シングル・ユーザのワークステーションなど任意の型のコンピューティング装置を用いることができる。本発明の通常の使用では、コンピューティング装置１０上で、一連のリアルタイム・タスクが実行されている。
【００１９】
本発明を使用する際に依拠するシステムの中には、第１のコンピューティング装置１０で実行されているアプリケーションが第２のコンピューティング装置２０で実行されているアプリケーションと情報を交換するものがある。マシン相互間の伝送は、ネットワーク４０を使って行なわれる。（図１には図示してない）別の構成では、交換される情報は、単一のマシン内で１つのプロセスから別のプロセスに伝送することができる、あるいは、別の方法（例えば通信チャネルへの直接接続など）でマシン相互間で伝送することができる。
【００２０】
コンピューティング装置１０について述べたのと同様に、コンピューティング装置２０には市販されている標準のコンピューティング装置を用いるのが望ましい。コンピューティング装置２０も、ＣＰＵ２２、メモリ２４（これは主記憶装置および／または補助記憶装置でありうる）、少なくとも１つの長期間記憶装置２６、および、ネットワーク伝送機能２８を備えている。あるいは、コンピューティング装置２０は、ＲＯＭメモリ２４を使用してもよく、そして、長期間記憶装置２６を備えていなくてもよい。
【００２１】
ネットワーク４０には、ＬＡＮ（local area network）またはＷＡＮ（wide area network)を用いることができる。あるいは、他の任意の型のネットワーキング構成を用いてもよい。適切な通信ハードウェアとソフトウェアの他に、このようなネットワーキング構成も、当技術分野では公知である。
【００２２】
図２は、本発明を実現できるネットワーク構成４０の一例を示す図である。ネットワーク４０は、複数の個別ネットワーク、例えば無線ネットワーク４２やネットワーク４４を含むことができる。各ネットワークは、図１に関して説明した型の個別のコンピューティング装置を複数台備えることができる。さらに、当業者が認識しうるように、少なくとも１つのＬＡＮ（図示せず）を含めてもよい。この場合、ＬＡＮは、ホスト・プロセッサに接続されたインテリジェント・ワークステーションを複数台備えることができる。
【００２３】
さらに図２を参照する。ネットワーク４２、４４は、ゲートウェイ・コンピュータ４６やアプリケーション・サーバ４７（これらはデータ・リポジトリ４８にアクセスしうる）として、メインフレーム・コンピュータやサーバを備えることができる。ゲートウェイ・コンピュータ４６は、各ネットワーク４４への出入口として機能する。ゲートウェイ・コンピュータ４６は通信リンク５０ａによって別のネットワーク４２に接続されているのが望ましい。ゲートウェイ・コンピュータ４６は、通信リンク５０ｂ、５０ｃを使って少なくとも１つの有線装置または無線装置１０にも接続されているのが望ましい。ゲートウェイ・コンピュータ４６は、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手できるＥＳＡ（Enterprise Systems Archtecture）／３７０コンピュータ、ＥＳＡ／３９０コンピュータなどを使って構築することができる。アプリケーションによっては、例えばＡＳ（Application System）／４００などの中型コンピュータを使うこともできる。（「ＥＳＡ／３７０」、「ＥＳＡ／３９０」、「ＡＳ／４００」はインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である）。
【００２４】
また、ゲートウェイ・コンピュータ４６は、記憶装置（例えばデータ・リポジトリ４８）に接続されていてもよい。さらに、ゲートウェイ・コンピュータ４６は、少なくとも１つのコンピューティング装置１０に直接にあるいは間接に接続されていてもよい。
【００２５】
当業者は、次の点を理解することができる。すなわち、ゲートウェイ・コンピュータ４６は、ネットワーク４２から地理的に大変離れた場所に設置してもよい。同様に、コンピューティング装置１０は、ネットワーク４２、４４から相当に離れた場所に置かれてもよい。例えば、ネットワーク４２をカリフォルニア州に設置し、ゲートウェイ・コンピュータ４６をテキサス州に設置し、少なくとも１つのコンピューティング装置１０をニューヨーク州に設置することができる。コンピューティング装置１０は、多数の等価な接続媒体、例えばセルラー電話、無線周波数ネットワーク、サテライト・ネットワークなどをまたいで、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol)などのネットワーキング・プロトコルを使って無線ネットワーク４２に接続することができる。無線ネットワーク４２はネットワーク接続５０ａを使ってゲートウェイ・コンピュータ４６に接続するのが望ましい。ネットワーク接続５０ａには、例えば、ＩＰ、Ｘ．２５、フレーム・リレー、ＩＳＤＮ（Integrated Services Digital Network:サービス総合ディジタル網) 、ＰＳＴＮ（Public SwitchedTelephone Network: 公衆交換電話網) などの上のＴＣＰまたはＵＤＰ（User Datagram Protocol）などがある。あるいは、コンピューティング装置１０は、ディジタル接続５０ｂ、５０ｃを使ってゲートウェイ・コンピュータ４６に直接に接続することができる。さらに、無線ネットワーク４２とネットワーク４４は、図２に示したものと同様の仕方で、少なくとも１つの別のネットワーク（図示せず）に接続することができる。
【００２６】
好適な実施形態では、本発明をコンピュータ・ソフトウェアで実現している。あるいは、本発明は、ハードウェアで、またはソフトウェアとハードウェアの組み合わせで実現することもできる。ソフトウェアで実現する実施形態では、図１に示すように、本発明を実現するソフトウェア・プログラミング・コードは、通常、ＣＤ−ＲＯＭやハード・ディスク駆動装置などある種の長期間記憶装置１６からＣＰＵ１２が取り出して、メモリ１４にロードする。（あるいは、ソフトウェア・プログラミング・コードの一部または全部を、ＲＯＭメモリ１４から直接に取り出すこともできる）。ソフトウェア・プログラミング・コードは、コンピューティング装置と共に使用する様々な公知の媒体、例えばディスケット、ハード・ディスク、ＣＤ−ＲＯＭなどの上に実現することもできる。また、ソフトウェア・プログラミング・コードは、このような媒体に載せて配付することができるし、あるいは、あるコンピューティング装置のメモリまたは記憶装置から、ある種のネットワークを介して、別のコンピューティング装置に、このような別のコンピューティング装置によって配付することができる。あるいは、ソフトウェア・プログラミング・コードは、長期間記憶装置１６から直接にアクセスすることもできる。メモリ中のソフトウェア・プログラミング・コードを物理媒体上に実現る手法と方法、および／または、当該ソフトウェア・プログラミング・コードをネットワークを介して配付する手法と方法は、周知であるので、ここではこれ以上説明しない。
【００２７】
ここで、ここでの説明はリアルタイム・システムの観点からのものであるが、これは説明目的のためであって限定を意図していない、という点に留意する必要がある。
【００２８】
本発明は、システム全体が実行可能であり続けていることを保証しながら、予定の実行時間（すなわちコスト）を超過したタスクの実行を取り消すのを避ける改良されたタスク・スケジューリング手法を提供するものである。特に、ＲＭＡ割り当てアルゴリズムを使う周期的タスクのシステムであって、使用率がＮ＊（２＊＊（１／Ｎ）−１）以下のものにおいて、本発明は、自分のコスト・パラメータよりも長く実行するタスクを呼び出すのを可能にする手法を提供するものである。コスト・パラメータは周期当たりの当該タスクの最大理論実行時間であり、決して超過してはならないものであるけれども、本発明では、ＮＳＥの存在下で効力を発揮する計算された拡張コストを用いている。
【００２９】
一例として、あるタスク「タスク１」の呼び出しコストが１０ＡＴＵ（任意時間単位）であり、タスク１の周期が１００ＡＴＵである、と仮定する。また、タスク１の実行中に、少なくとも１つのＮＳＥが合計１ＡＴＵの間実行する、と仮定する。さらに、スケジューラは、このＮＳＥ時間を別のものとして考慮せずに、それをタスク１の実行に割り当てる、と仮定する。この場合、スケジューラがタスク１用に１０ＡＴＵを累積した時に、タスク１は、実際には９ＡＴＵしか実行していない。したがって、その作業は完了できない可能性がある。従来技術によるシステムの多くは、タスク１がそのコスト・パラメータに到達したということを認識できない。したがって、何もしない。これらのシステムでは、タスク１は完了するまで実行し続ける。（これらのシステムは「撃ちてし止まん（run-to-block）」システムと呼ばれている）。このような長時間実行タスクが検査を受けずにすべて実行し続けると、システム全体の実行可能性は、極めて危険な状態になる。本発明は、タスク１がそのコスト・パラメータに到達したことを認識できるようなシステムを指向している。ここでは、そのようなシステムを「実行時間累積システム（execution time accumulating system）」と呼ぶ。本発明の手法を使うと、長時間実行タスクが実行し続けるのを許した場合に他のタスクが締切を守れなくなるか否かに関し、実行時間の決定を動的に行なうことが可能になる。さらに、本発明の手法は、他のタスクがすべて時間通りに完了するのを保証しながら、特定の長時間実行タスクに与えることのできる余分の時間を決定する方法を提供する。
【００３０】
次に、図３と図４を参照して、本発明の好適な実施形態を詳細に説明する。
【００３１】
図３に示す論理を使って、タスクが安全に実行しうるために追加する時間の上限を計算する。ここでは、この追加の時間を「拡張コスト（cost extension）」と呼ぶ。拡張コストの上限は、システムの実行可能性が保証されない値に到達するまで、漸増させながら計算する。好適な実施形態では、タスクのコストの一定割合を漸増的に加えることにより、各タスクごとに拡張コストを計算する。好適な実施形態では、この一定割合は、タスクのコスト・パラメータの１パーセントである。
【００３２】
図３の論理は、ブロック３００で、１からＮ（Ｎはシステム内のスケジュール可能なタスクの数）の拡張コスト値（図３ではＥi と表記）を零に初期化することにより開始する。各スケジュール可能なタスクは、拡張コスト、周期、締切の各値を格納する状態変数を備えているのが望ましい。本発明を使用する場合には、この状態変数にタスクの拡張コストに追加する値を格納する。
【００３３】
ブロック３１０で、各タスクのコストをその周期で除算したものを合計することにより、実行可能性分析（ＦＡ）の計算を実行する。次いで、ブロック３２０で、この合計値と図中の式（従来のシステムで使用している式と同じもの）とを比較して、すべてのタスクのすべての呼び出しが締切に間に合うか否かを判断する。ブロック３２０の試験の結果がＮｏの場合、システムは実行可能ではない。制御はブロック３６０に進む。図３の論理の初回の試行からブロック３６０に到達した場合、使用すべき拡張コストの値はすべて零である。したがって、システムは、従来技術の場合と同様に動作する。
【００３４】
ブロック３２０の試験の結果がＹｅｓの場合（すなわちシステムが実行可能である場合）、プロセスはブロック３３０に進む。ブロック３３０では、各タスクのコストの一定割合を計算する。この一定割合が１パーセントである場合、式（０．０１）Ｃi は、この試行で加算すべき追加の時間を定めている。この追加の時間を、各タスクの前回計算した拡張コストＥi に加算する。加算した結果を、各タスクのコスト・パラメータＣi に加算する。そして、その合計値を、各タスクの周期Ｔi で除算する。このプロセスを１からＮのスケジュール可能なタスクの各々について繰り返して、システムの新たな実行可能性分析（ＦＡ）値を定める。その後、ブロック３４０で、得られた結果と図中に示す使用率の式とを比較して、すべてのタスクのすべての呼び出しが締切に間に合うか否かを判断する。この試験の結果がＹｅｓの場合、ブロック３５０で、１からＮのスケジュール可能なタスクの各々のコストについて、新たな漸増拡張コストを生成する。次いで、制御はブロック３３０に戻って実行可能性分析（ＦＡ）計算を繰り返す。ブロック３４０の試験の結果がＮｏの場合（すなわち、拡張コストの現在の計算の後、システムがもはや実行可能でない場合）、制御はブロック３６０に進む。制御がブロック３６０に到達した場合、ブロック３６０に示すように、各タスクの拡張コストの上限は、既に発見されており、その値はＥi に格納されている（ただし、各タスクは各回の拡張コストの計算における一定割合として同一の値を用いるものと仮定している）。以上で、図３のプロセスは完了する。
【００３５】
図３に示す論理の別の実施形態では、一定割合の値として別の値を用いている。さらに別の実施形態では、拡張コストは、一部のタスクに対してだけ計算し、残りのタスクに対しては計算しない。例えば、長時間実行タスクには拡張を許すが、短いタスクには許さない（これは、長時間実行タスクは完了しないとシステム資源の観点から短いタスクよりも高くつく、という原理に基づいている）。この場合、短いタスクの拡張コストは零である、と考えられる。さらに別の実施形態では、漸増計算プロセスの間に一定割合として同一でない値を用いている。このアプローチの一例として、長時間実行タスクには短いタスクよりも大きな一定割合値を割り当てる。例えば、長時間実行タスクには２パーセントを使用し、短いタスクには１パーセントを使用する（この結果、長時間実行タスクには短いタスクよりも大きな拡張コストが割り当てられる）。あるいは、別の実施形態では、（ブロック３３０に示したように）タスクのコストに基づかずに、計算したての拡張コストに基づいて、各試行において追加の時間を計算している。この結果、長時間実行タスクは、幾何数列を使って拡張される。上述したこれらの実施形態を取り扱うのに図３に示す論理をどのように変更したらよいかは、当業者にとって明らかである。
【００３６】
図４の論理は、実行時に、特定の周期において呼び出されている間にコスト・パラメータを超過したタスクが安全に実行し続けうるか否かを判断すると共に、続けうる場合の継続期間を判断するのに使う。各タスクの拡張コストを知ることにより、スケジューラは、他のタスクの実行に影響を与えることなく、この判断をなすことができる。このように、リアルタイム・システムは、ＮＳＥの存在下で、本発明の教示を使わない従来技術の場合よりも長い時間間隔にわたって、通常の状態（すなわち、すべてのタスクが締切を守ることのできる状態）を維持することができる。したがって、たとえＮＳＥがあるタスクの実行時間の一部を消費したとしても、当該タスクは完了するまで実行することができる。拡張コストは、コスト・オーバーラン（超過）が生じているのが検出されると配分される（したがって、タスクの実行時間を累積しない、従来技術の「撃ちてし止まん」システムには、本発明は無用であると思われる）。次に、本発明の好適な実施形態を使用したときにコスト・オーバーランを処理する仕方を、図４の論理を参照して説明する。
【００３７】
実行中のタスクに対してコスト・オーバーランが検出されると、制御はブロック４００に至る。次いで、ブロック４１０で、このタスクは拡張コスト値（これは例えば図３の処理中に状態変数に格納される）を有するか否かを検査する。Ｎｏの場合、タスクの実行は拡張されず、制御をブロック４８０に進め従来技術の場合と同様に通常のコスト・オーバーラン・ハンドラを呼び出す。オーバーラン処理が完了すると、図４のこの呼び出しは完了する。
【００３８】
ブロック４１０の検査の結果がＹｅｓの場合、ブロック４２０で処理を継続する。ブロック４２０では、拡張コスト（Ｅi ）の最小値と、（図４中に「Ｄ」で示す）締切までの残存時間とを計算する。次いで、ブロック４３０で、拡張コストがＤよりも小さいか否かを検査する。Ｙｅｓならば、ブロック４４０で、当該タスクはその拡張コストの間実行し続けることを許される。図３を参照して説明したように、この拡張コストとは、当該タスクが他のスケジュール可能なタスクに影響を与えることなく実行し続けうる時間の上限のことである。当該タスクがこの追加の時間（拡張コスト）の間実行し続けた後、制御はブロック４６０に進む。ブロック４６０では、当該タスクが未（いま）だに実行しているか否かを検査する。Ｙｅｓの場合、当該タスクの締切は守られなかったことを意味する（すなわち、当該タスクがシステム中で他のタスクに影響を与えることなく実行を完了する、ということを保証できない）。したがって、ブロック４７０で締切ミス・ハンドラを呼び出す。締切ミス・ハンドラが（本発明の一部を形成しない従来技術の手法を使って）その処理を完了したら、コスト・オーバーラン・ハンドラを呼び出す（ブロック４８０）。必要な場合には、コスト・オーバーラン処理に、本発明に従う拡張コストを有するタスクが未だにコストをオーバーランしている状況を処理する論理を付加することができる。例えば、拡張コスト内に完了できないようなコスト超過タスクに関する統計をとることができる。
以上で当該タスクに関する図４の処理は終了する。
【００３９】
ブロック４６０の検査の結果がＮｏならば、当該タスクは拡張コストの間に実行を完了したことを意味する。好適な実施形態では、ブロック４８０でコスト・オーバーラン・ハンドラを呼び出す。以上で当該タスクに関する図４の処理は終了する。
【００４０】
ブロック４３０に戻り、現在のタスクの締切までの残存時間が当該タスクの拡張コスト以下の場合、ブロック４５０で、当該タスクが締切に至るまで実行し続けるのを許す。次いで、ブロック４６０で、当該タスクが別のオーバーラン状況に遭遇しているか否かを検査する（すなわち、当該タスクが締切に到達したのに完了していないか否かを検査する）。Ｙｅｓならば、ブロック４７０について上述したように、締切ミス・ハンドラを呼び出す。この処理の後、ブロック４８０について上述したように、コスト・オーバーラン・ハンドラを呼び出す。また、ブロック４６０の検査の結果がＮｏの場合（当該タスクが締切に間に合った場合）、ブロック４８０でコスト・オーバーラン・ハンドラを呼び出す。
以上で図４の処理は終了する。
【００４１】
上述したように、本発明は、システム全体の中で他のタスクに影響を与えることなく、実行時間累積システムにおいてコスト見積もりをオーバーランしたタスクの実行時間を安全に拡張するための極めて効率的な手法を提供するものである。この手法は、複雑なスケジューラを使用している多数の環境において役立つものと思われる。上記環境には、例えばリアルタイム・システムを実現するのにReal-Time Specification for Java（商標）を使っているような環境がある。（「Java」はサン・マイクロシステムズ社の商標である）。本発明を使用すると、タスクの締切を有する実行環境において柔軟性が増す。この結果、そのようなシステムを設計・管理するのが容易になると共に、操作が効率的になる。
【００４２】
以上、本発明の好適な実施形態を説明したが、この実施形態に対する変形と変更は、いったん本発明の基本概念を学んだ当業者にとって容易に想到しうるものである。したがって、特許請求の範囲は、好適な実施形態と、本発明の本旨と範囲の内にあるようなすべての変形および変更とを含むように解釈すべきである。
【００４３】
まとめとして以下の事項を開示する。
（１）タスク・スケジューリングを改良するコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は少なくとも１つのコンピュータ読み取り可能な媒体に組み込まれており、
各タスクが付随するコストおよび付随する締切を有する複数のタスクの実行が可能であるか否かを計算するコンピュータ読み取り可能なプログラム・コード手段と、
前記実行が可能であると計算された場合、各タスクについて付随するコストに追加の時間を付加して、各タスク用に改定されたコストを算出するコンピュータ読み取り可能なプログラム・コード手段と、
前記実行がもはや可能でないと計算されるまで、前記計算するコンピュータ読み取り可能なプログラム・コード手段、および前記算出するコンピュータ読み取り可能なプログラム・コード手段の操作を反復的に繰り返すコンピュータ読み取り可能なプログラム・コード手段と、
前記反復的に繰り返すコンピュータ読み取り可能なプログラム・コード手段の操作の後、前記改定されたコストをタスクの実行時間の上限として使用するコンピュータ読み取り可能なプログラム・コード手段と
を備えたコンピュータ・プログラム製品。
（２）前記追加の時間がタスクに付随するコストの一定割合である、
上記（１）に記載のコンピュータ・プログラム製品。
（３）前記追加の時間が、一部のタスクについては零であると共に、残りのすべてのタスクについてはタスクに付随するコストの一定割合である、
上記（１）に記載のコンピュータ・プログラム製品。
（４）前記算出するコンピュータ読み取り可能なプログラム・コード手段の最初の試行では、追加の時間がタスクに付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
上記（１）に記載のコンピュータ・プログラム製品。
（５）前記算出するコンピュータ読み取り可能なプログラム・コード手段の最初の試行では、一部のタスクについては追加の時間が零であると共に、残りのすべてのタスクについてはタスクに付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
上記（１）に記載のコンピュータ・プログラム製品。
（６）前記使用するコンピュータ読み取り可能なプログラム・コード手段が、実行時に、タスク群のうちの特定のタスクがそれに付随するコストを超過しているか否かを判断するコンピュータ読み取り可能なプログラム・コード手段と、
もしそうである場合、
（１）前記特定のタスクに付随する締切までの残存時間、または、（２）前記特定のタスクの実行時間の上限、のうちの最小のものに到達するまで、前記特定のタスクが実行するのを許すコンピュータ読み取り可能なプログラム・コード手段と
を備えている、
上記（１）に記載のコンピュータ・プログラム製品。
（７）タスク・スケジューリングを改良するシステムであって、
各タスクが付随するコストおよび付随する締切を有する複数のタスクの実行が可能であるか否かを計算する手段と、
前記実行が可能であると計算された場合、各タスクについて付随するコストに追加の時間を付加して、各タスク用に改定されたコストを算出する手段と、
前記実行がもはや可能でないと計算されるまで、前記計算する手段および前記算出する手段の操作を反復的に繰り返す手段と
備えたシステム。
（８）さらに、
前記反復的に繰り返す手段の操作の後、前記改定されたコストをタスクの実行時間の上限として使用する手段
を備えた、
上記（７）に記載のシステム。
（９）前記追加の時間がタスクに付随するコストの一定割合である、
上記（７）に記載のシステム。
（１０）前記追加の時間が、一部のタスクについては零であると共に、残りのすべてのタスクについてはタスクに付随するコストの一定割合である、
上記（７）に記載のシステム。
（１１）前記算出する手段の最初の試行では、追加の時間がタスクに付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
上記（７）に記載のシステム。
（１２）前記算出する手段の最初の試行では、一部のタスクについては追加の時間が零であると共に、残りのすべてのタスクについてはタスクに付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
上記（７）に記載のシステム。
（１３）前記使用する手段が、
実行時に、タスク群のうちの特定のタスクがそれに付随するコストを超過しているか否かを判断する手段と、
もしそうである場合、
（１）前記特定のタスクに付随する締切までの残存時間、または、（２）前記特定のタスクの実行時間の上限、のうちの最小のものに到達するまで、前記特定のタスクが実行するのを許す手段と
を備えている、
上記（７）に記載のシステム。
（１４）タスク・スケジューリングを改良する方法であって、
各タスクが付随するコストおよび付随する締切を有する複数のタスクの実行が可能であるか否かを計算するステップと、
前記実行が可能であると計算された場合、各タスクについて付随するコストに追加の時間を付加して、各タスク用に改定されたコストを算出するステップと、前記実行がもはや可能でないと計算されるまで、前記計算する手段および前記算出する手段の操作を反復的に繰り返すステップと
備えた方法。
（１５）さらに、
前記反復的に繰り返す手段の操作の後、前記改定されたコストをタスクの実行時間の上限として使用するステップ
を備えた、
上記（１４）に記載の方法。
（１６）前記追加の時間がタスクに付随するコストの一定割合である、
上記（１４）に記載の方法。
（１７）前記追加の時間が、一部のタスクについては零であると共に、残りのすべてのタスクについてはタスクに付随するコストの一定割合である、
上記（１４）に記載の方法。
（１８）前記算出するステップの最初の試行では、追加の時間がタスクに付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
上記（１４）に記載の方法。
（１９）前記算出するステップの最初の試行では、一部のタスクについては追加の時間が零であると共に、残りのすべてのタスクについてはタスクに付随するコストの一定割合であり、
残りの試行では、追加の時間が各タスク用に改定されたコストの一定割合である、
上記（１４）に記載の方法。
（２０）前記使用するステップが、
実行時に、タスク群のうちの特定のタスクがそれに付随するコストを超過しているか否かを判断するステップと、
もしそうである場合、
（１）前記特定のタスクに付随する締切までの残存時間、または、（２）前記特定のタスクの実行時間の上限、のうちの最小のものに到達するまで、前記特定のタスクが実行するのを許すステップと
を備えている、
上記（１４）に記載の方法。
【図面の簡単な説明】
【図１】  本発明を実現することのできるコンピューティング装置のブロック図である。
【図２】  本発明を実現することのできるネットワーク化されたコンピューティング環境を示す図である。
【図３】  本発明の改良された実行可能性アルゴリズムを実現するのに使用しうる論理の好適な実施形態のフローチャートを示す図である。
【図４】  本発明に従い実行時にタスクの実行をモニタするのに使用しうる論理の好適な実施形態のフローチャートを示す図である。
【符号の説明】
１０  コンピューティング装置
１２  ＣＰＵ
１４  メモリ
１６  長期間記憶装置
１８  ネットワーク電送機能
２０  コンピューティング装置
２２  ＣＰＵ
２４  メモリ
２６  長期間記憶装置
２８  ネットワーク伝送機能
４０  ネットワーク
４２  無線ネットワーク
４４  ネットワーク
４６  ゲートウェイ・コンピュータ
４７  アプリケーション・サーバ
４８  データ・リポジトリ
５０ａ、５０ｂ、５０ｃ  通信リンク
【図１】
0003759040.tif 000003
【図２】
0003759040.tif 000004
【図３】
0003759040.tif 000005
【図４】
0003759040.tif 000006