(57)【特許請求の範囲】
【請求項１】
リアルタイム・マルチタスキング・システムのためにフレキシブル・モデルに合致するタスクのプロセスをオフライン・スケジューリングすることをコンピュータに行わせるための方法であって、前記コンピュータは、前記タスクを定めるソースコードをコンパイルするためのツール群により指令され、前記方法は、
ａ）前記コンピュータにより、ハードウェア・リソース要求および時間的制約を各プロセスに割り当てるステップと、
ｂ）前記コンピュータにより、前記プロセスの時間的制約に対応する期間を有する時間スロットを各プロセスに割り当てるステップと、
ｃ）前記コンピュータにより、２つの選択可能プロセス（ａ，ｃ）のうちの一方または他方の実行が決定される分岐点を特定するステップと、
ｄ）前記コンピュータにより、共通の時間スロット（＋２）を前記２つの選択可能プロセスに割り当てるステップと、
ｅ）前記コンピュータにより、前記２つの選択可能プロセスのリソース要求のうちの大きい方に等しいリソース要求（ｍａｘ（ａ，ｂ））を前記共通の時間スロットに割り当てるステップと、
ｆ）前記コンピュータにより、各分岐点に対してステップｃ）以降を反復するステップと、
ｇ）前記コンピュータにより、前記結果的に生成された時間スロットを前記タスクに関連付けられた実行テンプレートにおいて組織化するステップであって、結果的に生成されたテンプレートは、少なくとも１つのプロセスおよびリソース要求にそれぞれ関連付けられた一連の連続する時間スロットにより定められるステップと、
ｈ）前記コンピュータにより、前記リアルタイム・マルチタスキング・システムのための静的なスケジューリング・パラメータを、前記実行テンプレートから生成するステップであって、前記時間スロットは、対応するプロセスを実行するために使用される、前記リアルタイム・マルチタスキング・システムの同期点を構成し、各時間スロットに関連付けられたリソース要求は、前記対応するプロセスが時間内に実行に移されることをチェックするために使用される、前記リアルタイム・マルチタスキング・システムのウォッチドッグを構成するステップと、
を含む、方法。
【請求項２】
前記ソースコードは、前記タスクを表現するグラフの遷移ノードにより接続された１組のプロセスを定め、各遷移ノードはマルチタスキング・システム上で前記タスクを実行するときにタイムベースにしたがって同期点を定め、前記方法は、
・前記コンピュータにより、各プロセスに割り当てられた前記時間スロットの範囲を、前記プロセスのソース遷移ノードおよび宛先遷移ノードから定めるステップと、
・前記コンピュータにより、共通のソース・ノード（１）および２つのそれぞれのターゲット・ノード（２、３）を有する２つの選択可能プロセスに対して、前記２つのターゲット・ノードをマージされたターゲット・ノード（２＿３）へとマージするステップと、
・前記コンピュータにより、両方の選択可能プロセスに共通する前記時間スロットを、前記共通のソース・ノードおよび前記マージされたターゲット・ノード（２＿３）から定めるステップと、
を含む、請求項１に記載の方法。
【請求項３】
ステップｃ）において異なる時間的制約を有する２つの選択可能プロセス（ｂ＋１、ｃ＋４）に対して、
・前記コンピュータにより、前記２つの選択可能プロセス（ｃ+4)のうちの最長の時間的制約を有する第１選択可能プロセス（ｃ）において中間遷移ノード（３ｂ）を作り、それにより前記ソース・ノードと前記中間遷移ノードとの間に第１部分的選択可能プロセス（ｃ１）、および前記中間遷移ノードと前記第１選択可能プロセスのターゲット・ノードとの間に第２部分的プロセス（ｃ２）、が形成されるステップと、
・前記コンピュータにより、前記第１部分的選択可能プロセスに対して、第１リソース要求（ｃ１）および前記第２選択可能プロセスの時間的制約に等しい時間的制約（１）を割り当てるステップと、
・前記コンピュータにより、前記第２部分的プロセスに対して、第２リソース要求（ｃ２）であって、前記第１リソース要求および前記第２リソース要求の合計が前記第１選択可能プロセスのリソース要求に等しくなるような第２リソース要求（ｃ２）、および、前記２つの選択可能プロセスの時間的制約の差異に等しい時間的制約（ｃ２）、を割り当てるステップと、
・前記コンピュータにより、ステップｄ）にしたがって、前記第１部分的選択可能プロセス（ｃ１＋１）および前記第２選択可能プロセス（ｂ＋１）を続行するステップと、
を含む、請求項２に記載の方法。
【請求項４】
前記マルチタスキング・システムにおいて実行される、
・前記コンピュータにより、それぞれの時間スロットにおいて、進行中のプロセスの実行が前記時間スロットに割り当てられた前記リソース要求に適合することを前記ウォッチドッグを使用してチェックするステップと、
・前記コンピュータにより、前記進行中のプロセスの実行が前記リソース要求を超過し、前記進行中のプロセスが前記第１部分的選択可能プロセス（ｃ１）である場合、障害についての通知を省略するように前記ウォッチドッグを構成するステップと、
を含む、請求項３に記載の方法。
【請求項５】
・前記コンピュータにより、前記第１部分的選択可能プロセス（ｃ１）の実行時に状態変数を設定（Ｂ＝１）するステップと、
・前記コンピュータにより、前記進行中のプロセスの実行が前記リソース要求を超過し、前記状態変数が設定されている場合、障害についての通知を省略するように前記ウォッチドッグを構成するステップと、
・前記コンピュータにより、マージされたターゲット・ノード（２＿３）に対応する同期点において前記状態変数をクリアするステップと、
を含む、請求項４に記載の方法。
【請求項６】
各時間的制約は時間単位を定める整数であり、前記方法は、前記グラフの環状部分に対する、
・前記コンピュータにより、より長い時間的制約を有する各プロセス（ｃ２｜ｄ）を、前記環状部分における前記時間的制約の最大公約数である、より短い時間的制約を有する１組の部分的プロセスに分割し、それにより前記グラフの環状部分は、全部が同一の正規化された時間的制約を有する、一連の全体的グラフまたは部分的グラフを画成する正規化された部分グラフへと変形される、ステップと、
・前記コンピュータにより、より長い時間的制約を有する各プロセスのリソース要求を、前記対応する部分的プロセス間に分配し、それにより前記部分的プロセスのリソース要求の合計は前記より長い時間的制約を有する前記プロセスのリソース要求に等しい、ステップと、
を含む、請求項３に記載の方法。
【請求項７】
・前記コンピュータにより、前記部分グラフの第１部分の終端の遷移ノード（１、２、３＿３ｂ）が前記部分グラフの第２部分の始端のそれぞれのノード（４ａ、４ｂ、４）とマージされ、それにより、２つの連続するマージされたノードが、その２つのマージされたノードのうちの第１のものの２つのノードをそれぞれの起点として有する前記プロセスに共通な時間スロットを画成するよう、前記部分グラフの第１部分の終端を前記部分グラフの第２部分の始端上に重ね合わせるステップと、
・前記コンピュータにより、このように定められた前記共通の時間スロットに対して、前記２つのマージされたノードのうちの第１のものに関連付けられた前記プロセスのリソース要求のうちの最大のものに等しいリソース要求と、前記正規化された時間的制約に等しい時間的制約と、を割り当てるステップと、
を含む、請求項６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイムベースにより設定された強制的なタイムラインを有するプロセスを実行するよう設計されたクリティカル・リアルタイム・システムに関する。本発明は特に、実装において高レベルの性能を要求するリアルタイム・システムと、システム内の各タスクに割り当てられたハードウェア実行リソースの使用において高レベルのセキュリティが要求されるクリティカル・システムと、に関する。
【０００２】
本発明は特に、輸送（自動車、鉄道、船舶、航空宇宙）、産業オートメーション、エネルギー、および、通信ネットワークにおけるように制御されたリソース割り当てが重要となる他のシステムなどの分野において使用されるシステムなどの、プロセス制御システムに適用される。
【背景技術】
【０００３】
クリティカル・リアルタイム・システムでは、タスクはしばしば周期的な活動としてモデル化され、それにより、タスク・スケジューリングに対して固定された優先ポリシーに基づくマルチタスキング・システムが達成され、性能の達成に関する保証がもたらされる。係るシステムについては、例えば［”Ｓｃｈｅｄｕｌｉｎｇ  ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｍｕｌｔｉｐｒｏｇｒａｍｍｉｎｇ  ｉｎ  ａ  ｈａｒｄ  ｒｅａｌ−ｔｉｍｅ  ｅｎｖｉｒｏｎｍｅｎｔ”，  Ｃ．  Ｌｉｕ，  Ｊ．  Ｌａｙｌａｎｄ，  Ｊｏｕｒｎａｌ  ｏｆ  ｔｈｅ  ＡＣＭ，  ｖｏｌ．  ２０，  ｎｏ．  １，  ｐｐ．  ４６−６１］の記事で説明されている。
【０００４】
しかしこのアプローチは、本来は周期的でない特定のリアルタイム活動を周期的なタスクに任意に分割することにより、周期的タスクの非常に簡単なモデルがマルチタスキング・システムの設計を複雑化または制限する場合には、柔軟性に欠ける。実際、非周期的なリアルタイム活動が周期的活動の形態で実装される場合、時間的制約を別個に満足するためには、結果的にタスクの総数が増加することとなるか、または実行ペースが増大することとなる。それにより各タスクは各周期的実行に対してもはや有用ではなくなる場合がある。その結果、マルチタスキング・システムの性能に悪影響が及ぶこととなる。
【０００５】
例えば［“Ｇｉｏｔｔｏ：  Ａ  Ｔｉｍｅ−Ｔｒｉｇｇｅｒｅｄ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｅｍｂｅｄｄｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ”，  Ｔｈｏｍａｓ  Ａ．  Ｈｅｎｚｉｎｇｅｒ，  Ｂｅｎｊａｍｉｎ  Ｈｏｒｏｗｉｔｚ，  ａｎｄ  Ｃｈｒｉｓｔｏｐｈ  Ｍｅｙｅｒ  Ｋｉｒｓｃｈ，  ＥＭＳＯＦＴ  ２００１，  ｐｐ．  １６６−１８４，  ２００１，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ］および［“Ａ  ｍｅｔｈｏｄ  ａｎｄ  ａ  ｔｅｃｈｎｉｑｕｅ  ｔｏ  ｍｏｄｅｌ  ａｎｄ  ｅｎｓｕｒｅ  ｔｉｍｅｌｉｎｅｓｓ  ｉｎ  ｓａｆｅｔｙ  ｃｒｉｔｉｃａｌ  ｒｅａｌ−ｔｉｍｅ  ｓｙｓｔｅｍｓ”，  Ｃ．  Ａｕｓｓａｇｕｅｓ，  Ｖ．  Ｄａｖｉｄ，  Ｆｏｕｒｔｈ  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｅｎｇｉｎｅｅｒｉｎｇ  ｏｆ  Ｃｏｍｐｌｅｘ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ，  １９９８］の記事で説明されるアプローチなどの他のアプローチでは、各タスクが一連の一時的活動として説明される、より柔軟なタスク・モデルが提案されている。次にタスクは、時間的制約を有するプロセスのグラフの形態で形式化される。ここでは、米国特許第７，２９９，３８３号で提案されるように、プロセスは必要に応じて条件付きであってもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
それによりマルチタスキング・システムの高い柔軟性と、高レベルの性能と、さらにはタスクをスケジューリングすることが可能であるという形式的な保証と、を達成することが可能となるが、このことは一般に、システムにおいて動的なスケジューリングが必要となることを保証する。その結果、タスクまたはタスクのプロセスがスケジューリングに対して競合するという点で、および、それによりタスクが並列タスクの前または後に実行され得ることとなるという点で、タスク間で時間的な干渉が生じることとなる。
【０００７】
実行の安全性が最重要課題であるクリティカル・システムでは、すべての可能なスケジューリングの組み合わせを網羅的にテストすること、または障害状況が存在しないことを証明すること、が不可能であるため、システムを動的にスケジューリングすることは避けられる。テストすべき組み合わせが少ないシステムが好適であり、したがってタスク間の時間的干渉を制限するシステムが好適である。それにより通常、静的なアプローチが使用され、その結果、柔軟性が欠落することとなる。
【課題を解決するための手段】
【０００８】
柔軟なタスク・モデルに基づくが、しかし時間的干渉が制限される実装が提供される、リアルタイム・システムを構築することが必要となる。
【０００９】
本発明は、１組の逐次的プロセスおよび選択可能プロセスから構成されるタスクを実行するための方法に関する。この方法は、
ａ）ハードウェア・リソース要求および時間的制約を各プロセスに割り当てるステップと、
ｂ）プロセスの時間的制約に対応する期間を有する時間スロットを各プロセスに割り当てるステップと、
ｃ）２つの選択可能プロセスのうちの一方または他方の実行が決定される分岐点を特定するステップと、
ｄ）共通の時間スロットを２つの選択可能プロセスに割り当てるステップと、
ｅ）２つの選択可能プロセスのリソース要求のうちの大きい方に等しいリソース要求を共通の時間スロットに割り当てるステップと、
ｆ）各分岐点に対してステップｃ）以降を反復するステップと、
ｇ）結果的に生成された時間スロットをタスクに関連付けられた実行テンプレートにおいて組織化するステップと、
ｈ）実行テンプレートの時間スロットに割り当てられたリソース要求にしたがってタスクの実行を制約するよう、リアルタイム・マルチタスキング・システムを構成するステップと、
を含む。
【００１０】
この方法は、遷移ノードにより接続された１組のプロセスを定めるグラフの形態でタスクを表現するステップであって、各遷移ノードはマルチタスキング・システム上でタスクを実行するときにタイムベースにしたがって同期点を定める、ステップと、プロセスのソース遷移ノードおよび宛先遷移ノードから各プロセスに割り当てられた時間スロットの範囲を定めるステップと、共通のソース・ノードおよび２つのそれぞれのターゲット・ノードを有する２つの選択可能プロセスに対して、２つのターゲット・ノードを、マージされたターゲット・ノードへとマージするステップと、共通のソース・ノードおよびマージされたターゲット・ノードから両方の選択可能プロセスに対して共通な時間スロットを定めるステップと、を含み得る。
【００１１】
この方法は、ステップｃ）において異なる時間的制約を有する２つの選択可能プロセスに対して、２つの選択可能プロセスのうちで最長の時間的制約を有する第１選択可能プロセスにおいて、中間遷移ノードを作り、それにより、ソース・ノードと中間ノードとの間に第１部分的選択可能プロセス、および中間ノードと第１選択可能プロセスのターゲット・ノードとの間に第２部分的プロセス、が生成されるステップと、第１リソース要求、および第２選択可能プロセスの時間的制約に等しい時間的制約、を第１部分的選択可能プロセスに割り当てるステップと、第１リソース要求および第２リソース要求の合計が第１選択可能プロセスのリソース要求に等しくなるような第２リソース要求、および２つの選択可能プロセスの時間的制約の差異に等しい時間的制約、を第２部分的プロセスに割り当てるステップと、ステップｄ）にしたがって第１部分的選択可能プロセスおよび第２選択可能プロセスを進行するステップと、を含み得る。
【００１２】
この方法は、各時間スロットにおいて、進行中のプロセスが時間スロットに割り当てられたリソース要求に適合することをウォッチドッグによりチェックするステップと、進行中のプロセスの実行がリソース要求を超過し、且つ進行中のプロセスが第１部分的選択可能プロセスである場合に、障害に関するウォッチドッグによる通知を省略するするステップと、を含み得る。
【００１３】
この方法は、第１部分的選択可能プロセスの実行時に状態変数を設定するステップと、進行中のプロセスがリソース要求を超過し、且つ状態変数が設定されている場合、障害に関するウォッチドッグによる通知を省略するステップと、マージされたターゲット・ノードに対応する同期点において状態変数をクリアするステップと、を含み得る。
【００１４】
この方法は、グラフの環状部分に対して、より長い時間的スロットを有する各プロセスを、環状分における時間スロットの最大公約数である、より短い時間スロットを有する、１組の部分的プロセスへと分割し、それによりグラフの環状部分が、全部が同一の正規化された時間的制約を有する、一連の全体的プロセスまたは部分的プロセスを画成する正規化された部分グラフへと変形されるステップと、より長い時間的制約を有する各プロセスのリソース要求を対応する部分的プロセス間で分配し、それにより部分的プロセスのリソース要求の合計がより長い時間的制約を有するプロセスのリソース要求と等しくなる、ステップと、を含み得る。
【００１５】
この方法は、部分グラフの第１部分の終端の遷移ノードが部分グラフの第２部分の始端のそれぞれのノードと一致し、それにより２つの連続するペアの一致するノードが、第１ペアの２つのノードをそれぞれの起点として有するプロセスに共通の時間スロットを画成するするよう、部分グラフの第１部分の終端を部分グラフの第２部分の始端上に重ね合わせるステップと、第１ペアのノードに関連付けられたプロセスのリソース要求のうちの最大のものに等しいリソース要求と、正規化された時間的制約に等しい時間的制約と、を、このように画成された共通の時間スロットに対して割り当てるステップと、を含み得る。
【００１６】
他の利点および特徴は、例示目的のためにのみ提供され、且つ添付の図面に表現される、本発明の特定的な実施形態に関する以下の説明から、より明らかとなるであろう。
【図面の簡単な説明】
【００１７】
【図１】同一の時間的制約を有する分岐選択肢を有する、フレキシブル・タスク・モデルにしたがうリアルタイム・タスク・グラフの１例である。
【図２Ａ】図１のグラフの可能な処理順序のうちの１つの部分的実行トレースを示す図である。
【図２Ｂ】並列タスクの実行トレースを示す図である。
【図３Ａ】図１のグラフの変形を示す図である。
【図３Ｂ】図１のグラフの変形を示す図である。
【図３Ｃ】結果的に生成された静的実行テンプレートを示す図である。
【図４】異なる時間的制約を有する分岐選択肢を有する、フレキシブル・タスク・モデルにしたがうリアルタイム・タスク・グラフの１例である。
【図５Ａ】時間的制約の第１選択肢に対する、図４のグラフの変形を示す図である。
【図５Ｂ】時間的制約の第１選択肢に対する、図４のグラフの変形を示す図である。
【図５Ｃ】結果的に生成された静的実行テンプレートを示す図である。
【図６Ａ】時間的制約の第2選択肢に対する、図４のグラフの変形を示す図である。
【図６Ｂ】時間的制約の第2選択肢に対する、図４のグラフの変形を示す図である。
【図６Ｃ】時間的制約の第2選択肢に対する、図４のグラフの変形を示す図である。
【図７Ａ】図５Ｃの実行テンプレートに対する、最適化ステップを示す図である。
【図７Ｂ】図５Ｃの実行テンプレートに対する、最適化ステップを示す図である。
【発明を実施するための形態】
【００１８】
図１はフレキシブル・タスク・モデルにしたがう代表的なリアルタイム・タスク・グラフである。このグラフでは、以下で説明する他のグラフと同様に、タスクを構成する各プロセスは、２つの遷移ノード（ソース・ノードおよびターゲット・ノード）間の有向弧により表される。これらのノードは、プロセスの起動を組織化するためにタスクの実行時にオペレーティング・システムにより使用される同期点である。各プロセスには、対応する同期点間の期間を示す時間的制約が割り当てられる。
【００１９】
加えて、時間的制約の範囲内でプロセスが実行されるためには、各プロセスは物理的なリソース要求（ＣＰＵ占有、メモリ・フットプリント）も有する。
【００２０】
グラフの各弧（またはプロセス）は、ｘ＋Ｎという情報が注釈されている。ここでｘはリソース要求の指標であり、Ｎは時間的制約の指標である。リソース要求ｘは時間（すなわち、全てのハードウェア・リソースが存在するものと仮定して、プロセスを完了するために必要となる時間）として表現され得る。時間的制約は、時間単位を定める整数であり得る。したがってｘおよびＮを同一の時間の単位で表すならば、ｘおよびＮの値はｘ≦Ｎとなるよう選択される。ｘ＝Ｎである場合、プロセスは、時間的制約により定められる時間スロット全体を通して、全てのハードウェア・リソースを要求し、そのため他のプロセスを同一スロット内で並列して実行することは不可能である（リソース要求および時間的制約の計算は本開示の主題ではないため、詳細には説明しない）。
【００２１】
以後、リソース要求を示すために使用される文字はプロセスも指すものとする。
【００２２】
このグラフまたはタスクは、任意に組織化された分岐およびループを含むため、「フレキシブル・モデル」にしたがうものとみなされる。各分岐は実行時に、動的、且つ予測不可能な様式で、決定され、プロセスの実行シーケンスは一般に非周期的である。その結果は、以下で理解されるであろう。
【００２３】
図２Ａは図１のグラフの代表的な実行トレースを示す。実行時に交差されるノードが、プロセスの時間的制約により定められるステップで時間軸上に示される。このようにノードは、固定された同期点に配置され、オペレーティング・システムは対応するプロセスを同期点において起動する。
【００２４】
各プロセスの実行には、そのリソース要求と、実際に利用可能なリソースと、にしたがって可変の時間が必要となり得る。オペレーティング・システムはウォッチドッグ・プロセスも実行し、ウォッチドッグ・プロセスは各プロセスによる実行に費やされる時間を計るよう構成されている。当該プロセスに割り当てられた時間的要求をプロセスが超過した場合、ウォッチドッグが異常を通知する。したがって時間的要求は実行時間割当量とみなされ得る。
【００２５】
図１のグラフのタスクの実行はノード１で開始される。ノード１において、２つの選択可能プロセスａとｂとの間の第１分岐が生じる。ノード２に至るプロセスｂが実行のために選択される。プロセスｄがノード２とノード４との間で実行される。ノード４において、新規分岐がプロセスｆとプロセスｇとの間で発生し、ノード２に至るプロセスｇが実行のために選択される。プロセスｃがノード３とノード５との間で実行される。ノード５において、新規分岐がプロセスｅとプロセスｈとの間で発生し、ノード２に至るプロセスｈが実行のために選択される。
【００２６】
一般に、プロセスに対して設定されるリソース要求は時間的制約よりも著しく小さい。このことは、タスクを実行した後に、他のタスクを並列して実行するにあたり利用可能なリソースが残されることを意味する。
【００２７】
図２Ｂは、図２Ａのタスクと並列して実行されるタスクの実行トレースを示す。この並列タスクは一連のプロセスｍ、ｎ、ｐ、ｑ、およびｒを含み、これらのプロセスｍ、ｎ、ｐ、ｑ、およびｒは、同一のラベルを用いて定められるリソース要求を有する。理解を支援するために、このタスクは、時間的制約については異なるが同期点については図２Ａのタスクの同期点と整列した状態で、示されている。このタスクが図２Ａのタスクと並列してスケジューリングされるためには、同期点間の任意の間隔において、プロセスのリソース要求の合計が時間的制約と適合することが望ましい。この事例に対して満足されるべき不等式の可能な組み合わせが時間軸の下に示されている。
【００２８】
したがって２つのタスクを並列的にスケジューリングするためには、プロセスの順序を知り、それにより必要なパラメータを導き出すことが必要となる。この順序がオフラインで判定可能ならば、スケジューリングもオフラインで（すなわち静的に）実行可能となる。タスクがフレキシブル・モデルにしたがうならば、すなわちタスクが特に分岐を含むならば、順序をオフラインで知ることは一般に不可能である。スケジューリングは従来は動的に（すなわち実行時に）達成されるものであり、実行時に分岐条件の特定が可能となる。
【００２９】
クリティカル・リアルタイム・システムでは、システムがあらゆる可能なスケジューリングの組み合わせに対して安全であることを検証することがさらに望ましい。係る検証は従来、全部の組み合わせをテストすることにより達成された。スケジューリングが動的に達成される場合には、テストすべき組み合わせの個数は実際的には不可能な数値となる。
【００３０】
フレキシブル・モデルにしたがうタスクの静的またはオフラインのスケジューリングのための方法体系について、ここで開示する。この方法体系は、スケジューリングの組み合わせの個数を制限し、それにより従来のツールを使用して係る個数を網羅的に検証することを可能にすることを目指すものである。各タスクに対して、いわゆる静的な「実行テンプレート」を確立することについて検討する。係る実行テンプレートはオフライン・スケジューリング・ツールにより開発可能である。
【００３１】
この目的のために単一の時間スロットが、実行テンプレートにおいて、分岐に後続し得る２つの選択可能プロセスに割り当てられる。単一のスロットに割り当てられるリソース要求は、２つの選択可能プロセスのうちのより大きいリソース要求に等しくなるよう定められる。しかしスロットに割り当てられた時間的制約、すなわちスロットの境界は、まだ定められていない。
【００３２】
第１のアプローチでは、選択可能プロセスが同一の時間的制約を有する状況が解決されるであろう。より一般的な場合では、以下で論じるように、任意の状況を、２つの選択可能プロセスが同一の時間的制約を有する状況へと変える変形を見出すことが可能である。
【００３３】
図１のグラフでは、各分岐（ノード１、ノード４、およびノード５）に後続する選択可能プロセスは偶然、同一の時間的制約を有する。
【００３４】
図３Ａは図１のグラフを変形することにおける第１のステップを示す。２つの選択可能プロセスａおよびｂの２つのターゲット・ノード２および３は、単一のノード２＿３へとマージされる。ノード２およびノード３をノード４およびノード５に接続していた弧は全部、ノード２＿３に接続される。ノード１からノード２およびノード３に至っていた２つの弧は単一の弧へとマージされる。この一意的な弧は、プロセスａおよびプロセスｂのいずれも表す「アンビバレント」なプロセスに関連付けられ、ａ｜ｂ＋２と表記される。この表記により示されるように、プロセスａおよびプロセスｂの共通の時間的制約（＋２）がアンビバレントなプロセスの時間的制約である。アンビバレントなプロセスのリソース要求はプロセスａおよびプロセスｂのリソース要求の最大値ｍａｘ（ａ，ｂ）に等しくなるよう定められる。
【００３５】
プロセスｃおよびプロセスｄ（これらは分岐選択肢ではなかった）が、マージされたノード２＿３から始まる選択肢となった点に注意すべきである。ノード２およびノード３がマージされたため、ノード４およびノード５のそれぞれからノード２およびノード３へと至る選択肢ｆおよびｇと、ｅおよびｈと、が一緒にクループ化されている点にも注意すべきである。この段階において、これらの選択肢物は単一の弧（弧ａ｜ｂ＋２）により表され得る。
【００３６】
図３Ｂは図１のグラフを変形することにおける最終のステップを示す。選択可能プロセスｃおよびｄのターゲット・ノード４および５はノード４＿５へとマージされる。ノード２＿３からノード４＿５へと至る同一の時間的制約（＋４）を有する２つのプロセスｃおよびｄが存在し、逆方向に進む同一の時間的制約（＋２）を有する４つのプロセスｅ、ｆ、ｇ、およびｈが存在する。選択可能プロセスａおよびｂに当てはまるルールによれば、同一のソース・ノードから同一のターゲット・ノードに進み且つ同一の時間的制約を有する全部の弧は、アンビバレントなプロセスに割り当てられる単一の弧へとマージされる。アンビバレントなプロセスは時間的制約を保持し、アンビバレントなプロセスのリソース要求は、マージされた弧のリソース要求のうちの最大のものに等しく設定される。したがって、ノード２＿３からノード４＿５に進み且つリソース要求ｍａｘ（ｃ，ｄ）を有する単一のアンビバレントなプロセスｃ｜ｄ＋４と、逆方向に進み且つリソース要求ｍａｘ（ｅ，ｆ，ｇ，ｈ）を有する単一のアンビバレントなプロセスｅ｜ｆ｜ｇ｜ｈ＋２と、が取得される。このようにしてグラフにおける全部の選択肢を除去することが可能であり、それにより、環状に実行される環状部分により終端される線形経路を有するグラフがもたらされる。
【００３７】
図３Ｃは、図２Ａの実行トレースと同じフォーマットにおける、図３Ｂの変形されたグラフから決定された実行テンプレートを示す。テンプレートとトレースとの間の顕著な差異は、テンプレートが図３Ｂの変形されたグラフを使用してオフラインで決定され得るという点である。
【００３８】
時間ｔ＝０において、選択可能プロセスａおよびｂのうちの一方の実行が、ノード１において決定される。選択肢がいずれであったとしても、選択肢は、ノード１とノード２＿３との間で画成される単一のスロットにおいて実行され、スロットの期間は両方の選択肢に適合する。したがってプロセスｃおよびｄのうちの任意の一方が、ノード２＿３と４＿５との間で画成される次のスロットにおいて実行される。最終的に、プロセスｅ、ｆ、ｇ、およびｈのうちの１つがノード４＿５とノード２＿３との間で画成されるスロットで実行される。次に実行はノード２＿３以降で新規サイクルＲにおいて再開される。
【００３９】
ノード１、２＿３、４＿５、および２＿３間のスロットに割り当てられるリソース要求は、それぞれｍａｘ（ａ，ｂ）、ｍａｘ（ｃ，ｄ）、およびｍａｘ（ｅ，ｆ，ｇ，ｈ）である。
【００４０】
この実行テンプレートは、タスクのグラフを定めるソース・コードを処理するコンパイル用ツール群の中間生成物であり得る。テンプレートは、オペレーティング・システムがタスクを実行することと、その安全な動作（特に時間スロットに割り当てられたリソース要求）をチェックすることと、を行うことを可能にするパラメータを提供する。係るリソース要求は、対応するプロセスが時間通りに完了することを確保するウォッチドッグを構成するために使用され得る。
【００４１】
この方法体系がタスクの実行には影響を及ぼさず、しかしプロセスの実行制約を変更することに注意すべきである。なぜならウォッチドッグが、正確なリソース要求ではなく、最大化されたリソース要求を評価するよう構成されているためである。
【００４２】
さらにテンプレートは任意の時間において、タスクがリソース要求および時間的制約についてどのように変化していくかを予測することを可能にする。実際、図３Ｃのテンプレートの環状部分Ｒは、図２Ａの第１ノード２以降、所望により反復され得る。それにより、いずれの選択肢が分岐の後に実行されたとしても、実行トレースの任意の時点におけるリソース要求および時間的制約を予測することが可能となる。唯一のマイナス面は、リソース要求の値が正確な値ではなく、最大化されている点である。
【００４３】
各タスクがシステム上で実行されるよう、同様のテンプレートが生成される。これらのテンプレートにおいて定められた時間スロットの期間および対応するリソース要求は、オフライン・スケジューリング・ツールにより使用可能である。オフライン・スケジューリング・ツールは、オペレーティング・システムに対して静的スケジューリング・パラメータを生成することができる。
【００４４】
図４は、異なる時間的制約を有する選択可能プロセスを含む代表的なグラフである。係る時間的制約は、図１のグラフよりも、より一般的な状況に対応する。実行はノード１で開始され、プロセスはノード２へと至る。ノード２において、時間的制約が＋１であるプロセスｂまたは時間的制約が＋４であるプロセスｃの間の分岐が生じる。プロセスｂはノード３へと至り、その一方でプロセスｃはノード４へと至る。時間的制約が＋３であるプロセスｄはノード３からノード４へと至る。最終的に、プロセスｅはノード４からノード１へと至る。
【００４５】
図１のグラフのように変形させて、それにより静的な実行テンプレートが画成されるよう、このグラフを変更することについて検討する。図５Ａ〜図５Ｃはこのための方法体系を示す。
【００４６】
図５Ａは図４グラフについての第１の変形ステップを示す。最長の時間的制約を有する選択可能プロセス、すなわちプロセスｃにおいて、中間ノード３ｂが挿入される。ノード２およびノード３ｂを接続する弧はプロセスｃの部分ｃ１を表すものとみなされ、部分ｃ１は、選択可能プロセスｂと同一の時間的制約＋１が割り当てられる。ノード３ｂおよびノード４を接続する弧はプロセスｃの残余の部分ｃ２を表し、部分ｃ２はプロセスｃの時間的制約の補数である＋３が割り当てられる。部分的プロセスｃ１およびｃ２のリソース要求についてはｃ１＋ｃ２＝ｃが成り立つ。リソース要求ｃ１とリソース要求ｃ２との間のリソース要求ｃの分配は任意であり得る。この分配は、例えば選択可能プロセスのリソース要求と、それらの最大値と、の間の偏差を最小化するために、最適化され得る。例えばｃ＝２、ｂ＝０．８、およびｄ＝１である場合、値ｃ１＝０．９およびｃ２＝１．１の値が０．１の最大偏差をもたらす。
【００４７】
リソース要求（ｃ１）を追加する事実は、ウォッチドッグにより監視するべき実行制約（本来は不必要である制約）を追加することに対応することについて、ここで注意されたい。初期の制約が、プロセスｃの実行がリソース要求ｃを満足することであるのに対して、特定的な方策が講じられないかぎりウォッチドッグはポイント２以降、部分的プロセスｃ１の実行がリソース要求ｃ１を満足することをチェックするであろう。
【００４８】
これらの制約を満足する第１のアプローチは、開発者またはツール群が、適応された部分的プロセスｃ１およびｃ２へとプロセスｃを分割することである。このことは、タスクの変更された実行特性が返されることにより、既存のオペレーティング・システムを未変更で使用することを可能にする。
【００４９】
好適なアプローチはオペレーティング・システムの簡単な変更を含む。図５Ａに示すようにノード２の分岐の２つの選択可能プロセスは、実行時に採られた選択肢を特定するために状態変数またはフラグＢが割り当てられている。実行される選択肢が未変更の弧（ｂ）に対応する場合、フラグＢはデフォルトのクリアされた値（例えば０）に保たれる。選択肢が変更された弧（ｃ１）に対応する場合、フラグＢはプロセス自体により、またはオペレーティング・システムにより、設定される。このフラグの使用については、図５Ｃとの関連で、より詳細に説明する。
【００５０】
図５Ｂは、図５Ａのグラフの最終的な変形を示す。ノード３ｂが挿入され、それにより同一の時間的制約を有する２つの選択可能プロセスが作られたことにより、これらの選択可能プロセスのターゲット・ノード３および３ｂは、図３Ａに関連して説明した方法体系にしたがって、マージされ得る。これにより、アンビバレントなプロセスｂ｜ｃ１がノード２とマージされたノード３＿３ｂとの間に作られる。プロセスｂ｜ｃ１は時間的制約＋１、およびリソース要求ｍａｘ（ｂ，ｃ１）を有する。
【００５１】
フラグＢを使用して、アンビバレントなプロセスはｂ（Ｂ＝０）｜ｃ１（Ｂ＝１）と示される。
【００５２】
同一の時間的制約＋３を有するノード３および３ｂからノード４へと至るプロセスｄおよびｃ２は、時間的制約＋３およびリソース要求ｍａｃ（ｃ２｜ｄ）を有する単一のアンビバレントなプロセスｃ２｜ｄへとマージされ得る。
【００５３】
図５Ｃは図５Ｂの変形されたグラフから決定された実行テンプレートを示す。このテンプレートは一連のノード１、２、３＿３ｂ、４の順序にしたがって反復可能である。
【００５４】
フラグＢが使用されず、部分的プロセスｃ１がその対応するスロットにおいて実行される場合、ウォッチドッグはポイント２以降、プロセスｃ１がそのリソース要求ｃ１に適合することをチェックする。このことは、最初に強制されたものではないが、部分的プロセスｃ１がこの制約を満足するよう指定されることを伴う。
【００５５】
フラグＢは、係る部分的プロセスに対する制約が緩和されるよう、この状況においてウォッチドッグを無効化するために使用される。
【００５６】
選択可能プロセスｂが実行される場合、フラグＢは本来のクリア状態に保たれる。これにより、プロセスについての通常監視を実施するようウォッチドッグに通知される。
【００５７】
選択可能部分的プロセスｃ１が実行される場合、フラグＢが（プロセス自体により、またはオペレーティング・システムにより）設定される。この場合、リソース要求ｃ１に超過が発生したとしてもウォッチドッグが障害を報告することはない。フラグＢはポイント３＿３ｂでクリアされ、それによりウォッチドッグはポイント３＿３ｂ以降、通常の動作を実施する。
【００５８】
このようにフラグＢを使用することにより、プロセスｃを２つの部分的プロセスへと実際に分割することは不要となる。本来のプロセスｃがポイント２において起動され得、その実行は、障害が通知されることなく、ポイント３＿３ｂを越えて継続し得る。プロセスｃの実行がリソース要求ｃ１＋ｃ２を超過した場合にのみ、障害が通知されるであろう。これは、本来のグラフの制約に対応する。スケジューリングの目的のために、プロセスｃのリソース要求を２つの値ｃ１およびｃ２に分配することについて考える。
【００５９】
上述のように、中間ノード３ｂが挿入された後、プロセスｃ２およびｄは同一の時間的制約を有する。これらの値は、説明の簡略化のために選択されたものである。一般的な場合では、時間的制約は異なる値となるであろう。その場合には以下の事例で示すように、プロセスｃに対して使用された技法を反復するとよい。
【００６０】
図６Ａ〜図６Ｃは、プロセスｄの異なる値の時間的制約に対する、図４のグラフの変形ステップを示す。ここでは時間的制約は、＋３に代わって、＋６となっている。
【００６１】
図６Ａは図５Ａのステップに対応する。唯一の相違点はプロセスｄの時間的制約の値である。
【００６２】
図６Ｂではノード３および３ｄがマージされている。ノード３＿３Ｂおよび４が２つの弧ｃ２＋３およびｄ＋６により接続される。これらの弧は異なる時間的制約を有する。
【００６３】
図６Ｃでは、ノード４が２つのノードに分割される。これら２つのノードのうちの一方のノード４’はプロセスｃ２＋３のターゲットを形成し、他方のノード４”はプロセスｄ＋６のターゲットを形成する。ノード４’および４”のそれぞれはプロセスｅ＋１によりノード１に接続される。
【００６４】
このステップ以降、最長の時間的制約を有するプロセス、すなわちｄ＋６に中間ノードを挿入して、同一の時間的制約を有する２つの選択可能プロセス、すなわちｃ２＋３およびｄ１＋３を作り、以下同様の操作を繰り返し、その結果、グラフを、環状グラフまたは環状部分により終端されるグラフへと変形することにより、図６Ａまたは図５Ａのステップの手順が反復される。
【００６５】
任意のグラフから、この方法により、環状部分を含む有限個の異なる期間の時間スロットから形成された実行テンプレートが生成される。いくつかのタスクを並列的にスケジューリングするために、専用ツールは、テンプレート内に含まれるリソース要求およびスロット期間を使用して、それにより、並列に実行可能であるテンプレートの組み合わせを、したがって並列に実行可能なタスクを、見出すであろう。このようにしてスケジューリングは、プロセスの順序をマッチングすること（１タスク毎に複数）に代わって、テンプレートをマッチングすること（１タスク毎に１つ）へと低減される。
【００６６】
システム検証テストをさらに簡略化するために、同一の時間スロットを有する短い実行テンプレートを有することが望ましい。
【００６７】
図７Ａおよび図７Ｂは、時間スロットの長さを正規化し、テンプレートを短縮するための方法体系を示す。
【００６８】
図７Ａは１例として図５Ｃのテンプレートの処理ステップを示す。テンプレートの環状部分において、より長いスロットを、いくつかのより短いスロットに分割することについて検討する。なお、より短いスロットの長さは環状部分のスロットの最大公約数である。図７Ａのテンプレートでは、長さが３であるノード３＿３ｂとノード４との間のスロットは、長さが１である３つのスロットに分割される。これは結果的に、中間遷移ノード４ａおよび４ｂをグラフの弧ｃ２｜ｄに挿入することとなる。
【００６９】
したがってアンビバレントなプロセスｃ２｜ｄは３つの部分的なアンビバレントなプロセス［ｃ２｜ｄ］０〜［ｃ２｜ｄ］２に分割される。これらの部分的なアンビバレントなプロセスは同一の時間的制約１を有する。プロセスｃ２｜ｄの初期のリソース要求、すなわちｍａｘ（ｃ２，ｄ）は、重みｐ０、ｐ１、およびｐ２を使用して３つの部分的プロセスに分配される。なおｐ０、ｐ１、およびｐ２については、ｐ０＋ｐ１＋ｐ２＝１が成り立つ。
【００７０】
図５Ａの中間ノード３ｂに関して、中間ノード４ａおよび４ｂは同期点となる。この同期点以降、ウォッチドッグはプロセスの実行時間を監視する。プロセスｃ２｜ｄを実際に分割することを避けるために、フラグＳを使用することが好適である。フラグＳはフラグＢのように、プロセスがそのリソース要求を超過した場合に報告を省略するよう、ウォッチドッグに対して指示する。フラグＳは、プロセスｃ２｜ｄ（すなわち基本的にプロセスｃおよびｄのうちのいずれかの開始点）以降、無条件に設定され、次に最後の中間同期点（４ｄ）においてクリアされる。
【００７１】
この技法は時間スロットの期間を正規化する。この正規化は検証テストを簡略化するための第１の改善である。
【００７２】
図７Ｂは、図７Ａの正規化された実行テンプレートを短縮するためのステップを示す。テンプレートの第２の半体は、ノード４ａ、４ｂおよび４がそれぞれノード１、２、および３＿３ｂとマージするよう、第１の半体上に重ね合わされている。したがって期間が１の、３つの時間スロットのみが残っている。第１の時間スロットでは、フラグＢおよびＳが使用される場合、プロセスａおよび［ｃ２｜ｄ］１のうちのいずれかが実行され得、実際は、プロセスａ、ｃ、およびｄのいずれかが実行される。第２の時間スロットでは、プロセスｂ、ｃ１、および［ｃ２｜ｄ］２のうちのいずれかが実行され得、実際は、プロセスｂ、ｃ、およびｄのいずれかが実行される。最後の時間スロットでは、プロセスｅおよび［ｃ２｜ｄ］０のうちのいずれかが実行され得、実際は、プロセスｅ、ｃ、およびｄのいずれかが実行される。
【００７３】
これらのスロットのリソース要求は、選択可能プロセスに対するのと同一の決定ルールにしたがう。これらのリソース要求は、それぞれｍａｘ｛ａ，ｐ１・ｍａｘ（ｃ２，ｄ）｝、ｍａｘ｛ｂ，ｃ１，ｐ２・ｍａｘ（ｃ２，ｄ）｝、およびｍａｘ｛ｅ，ｐ０・ｍａｘ（ｃ２，ｄ）｝に等しい。
【００７４】
検討された代表的なテンプレート（偶数個のスロットを有して、完全に環状である）に対しては、テンプレートのサイズは１／２になる。任意の状況では、テンプレートは線形部分を含み、係る線形部分には、偶数個のスロットを含み得る環状部分（図３Ｂ、図３Ｃ）が後続する。重ね合わせの方法は正規化された環状部分に適用される。正規化された環状部分が奇数個のスロットを有する場合でさえも、重ね合わせの方法は適用可能である。係る場合には、事実、重ね合わせは部分的に行われ得る。それにより、テンプレートのサイズ低減はわずかに犠牲になる。
【図１】
0006524064.tif 000002
【図２Ａ】
0006524064.tif 000003
【図２Ｂ】
0006524064.tif 000004
【図３Ａ】
0006524064.tif 000005
【図３Ｂ】
0006524064.tif 000006
【図３Ｃ】
0006524064.tif 000007
【図４】
0006524064.tif 000008
【図５Ａ】
0006524064.tif 000009
【図５Ｂ】
0006524064.tif 000010
【図５Ｃ】
0006524064.tif 000011
【図６Ａ】
0006524064.tif 000012
【図６Ｂ】
0006524064.tif 000013
【図６Ｃ】
0006524064.tif 000014
【図７Ａ】
0006524064.tif 000015
【図７Ｂ】
0006524064.tif 000016