(57)【要約】【課題】  アプリケーションレベルのチェックポインティングを容易に実現できるようにすること。【解決手段】  被初期化変数識別手段１は、プログラム１１を解析して、プログラム１１の実行が開始されてから最初にプログラム中断点に到るまでに更新される変数を識別する。更新変数識別手段２は、プログラム１１を解析して、最初に前記プログラム中断点を通過し次に該プログラム中断点に到るまでに更新される変数を識別する。中間データ退避・復帰ライブラリ生成手段３は、被初期化変数識別手段１と更新変数識別手段２で得られた情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成する。ライブラリコール生成手段４は、プログラム１１のプログラム中断点に前記ライブラリをコールするプログラムを組み込む。【選択図】  図１
2005322078.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行を中断する位置であるプログラム中断点における実行結果を退避し、前記プログラムの実行再開時に前記退避したデータを復帰させて、前記プログラム中断点から前記プログラムを実行再開するようにしたチェックポインティング方式において、
前記プログラムのプログラム中断点において退避及び復帰が必要な変数を識別する変数識別手段と、
前記変数識別手段で得られた変数に関する情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成する中間データ退避・復帰ライブラリ生成手段と、
前記プログラムのプログラム中断点に前記ライブラリをコールするプログラムを組み込むライブラリコール生成手段とを備え、
前記ライブラリをコールするプログラムが前記ライブラリをコールし、前記プログラムが前記プログラム中断点において実行再開することを特徴とするチェックポインティング方式。
【請求項２】
前記変数識別手段は、前記プログラムの実行が開始されてから最初に前記プログラム中断点に到るまでに更新される変数を識別する被初期化変数識別手段と、最初に前記プログラム中断点を通過し次に該プログラム中断点に到るまでに更新される変数を識別する更新変数識別手段とによって構成され、
前記中間データ退避・復帰ライブラリ生成手段は、前記被初期化変数識別手段と前記更新変数識別手段で得られた情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成することを特徴とする請求項１記載のチェックポインティング方式。
【請求項３】
前記プログラム中断点の情報は前記プログラムに組み込まれて成ることを特徴とする請求項１又は２記載のチェックポインティング方式。
【請求項４】
前記被初期化変数識別手段は、前記プログラムを解析して、指定されたプログラム中断点までに更新される変数のリストを被初期化変数リストとして被初期化変数リスト記憶手段に記憶し、
前記更新変数識別手段は、前記プログラムを解析して、指定されたプログラム中断点から開始して次に該指定されたプログラム中断点に制御が戻ってくるまでに更新される変数のリストを更新変数リストとして更新変更リスト記憶手段に記憶し、
前記中間データ退避・復帰ライブラリ生成手段は、前記被初期化変数リスト記憶手段に記憶された被初期化変数リストに登録されていて、かつ、前記更新変更リスト記憶手段に記憶された更新変数リストに登録された変数を、プログラムの実行を再開するために必要とする中間データとして退避するサブルーチンと中間データを復帰させるサブルーチンを生成し、中間データ退避・復帰ライブラリとして中間データ退避・復帰ライブラリ記憶手段に記憶することを特徴とする請求項１乃至３のいずれか一に記載のチェックポインティング方式。
【請求項５】
コンピュータを、
プログラムの実行を中断する位置であるプログラム中断点において退避及び復帰が必要な変数を識別する変数識別手段と、前記変数識別手段で得られた変数に関する情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成する中間データ退避・復帰ライブラリ生成手段と、前記プログラムのプログラム中断点に前記ライブラリをコールするプログラムを組み込むライブラリコール生成手段として機能させることを特徴とするプログラム。
【請求項６】
前記変数識別手段が、前記プログラムの実行が開始されてから最初に前記プログラム中断点に到るまでに更新される変数を識別する被初期化変数識別手段と、最初に前記プログラム中断点を通過し次に該プログラム中断点に到るまでに更新される変数を識別する更新変数識別手段とによって構成され、前記中間データ退避・復帰ライブラリ生成手段が、前記被初期化変数識別手段と前記更新変数識別手段で得られた情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成するように前記コンピュータを機能させることを特徴とする請求項５記載のプログラム。
【請求項７】
前記被初期化変数識別手段が、前記プログラムを解析して、指定されたプログラム中断点までに更新される変数のリストを被初期化変数リストとして被初期化変数リスト記憶手段に記憶し、
前記更新変数識別手段が、前記プログラムを解析して、指定されたプログラム中断点から開始して次に該指定されたプログラム中断点に制御が戻ってくるまでに更新される変数のリストを更新変数リストとして更新変更リスト記憶手段に記憶し、
前記中間データ退避・復帰ライブラリ生成手段が、前記被初期化変数リスト記憶手段に記憶された被初期化変数リストに登録されていて、かつ、前記更新変更リスト記憶手段に記憶された更新変数リストに登録された変数を、プログラムの実行を再開するために必要とする中間データとして退避するサブルーチンと中間データを復帰させるサブルーチンを生成し、中間データ退避・復帰ライブラリとして中間データ退避・復帰ライブラリ記憶手段に記憶するように前記コンピュータを機能させることを特徴とする請求項５又は６記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションレベルのチェックポインティング方式、及び、前記チェックポインティング方式を実現するためのプログラムに関する。
【背景技術】
【０００２】
近年計算機性能の向上に伴い、計算機シミュレーションが自動車の設計などに実用されるようになってきた。このような計算機シミュレーションでは扱うモデルの規模によって、結果が得られるまでに数日といった時間を必要とするものも少なくない。１つの計算結果を得るために必要とする時間が長いということは、次のような問題を生じさしめる。
第１には、中途で何らかの原因によって、計算機システムが停止した場合、それまでの結果が失われてしまう。この場合、通常、計算を最初から再実行する必要あるため、結果が得られるまでの時間が長くなってしまう。
【０００３】
第２には、計算の中途でより高い優先順位のジョブが発生しても、先に投入されたジョブの実行が完了するまで、計算を開始できない。これは、優先的に後から発生した優先順位の高いジョブを実行したいというユーザの意図に反する。このような問題を解決するためには、プログラムの実行を中断し、それまでの実行結果を退避し、実行を再開する時点で、退避したデータを復帰し、その時点から計算を再開すれば良い。このような手法はチェックポインティングとして周知の技術である（例えば、特許文献１〜３参照）。
チェックポインティングを実現するには、ＯＳ（Operating System）レベルでプログラムとしての計算が使用しているデータを制御用の情報を含めてすべて退避させる方式と、アプリケーションレベルでプログラムの所定の場所において実行の再開に必要なデータを明示的に退避させる２つの方式がある。
【０００４】
前者はアプリケーションに依存しないので、どのようなプログラムでも実行の中断や再実行が可能である。一方、後者は、プログラムに手を加える必要がある反面、プログラムの作成者が意図したポイント、多くは、反復して計算すべき計算の実行が完了し、退避あるいは復帰すべきデータが最も少なくなるポイントにおいてデータを退避あるいは復帰させるので、データの退避あるいは復帰に必要とするオーバヘッドを少なくすることができる。また、退避あるいは復帰させるデータの表現形式を任意に定めることができるので、例えば、ＯＳの異なるシステム間でジョブを引き継ぐことも可能である。前者の方式では、データの表現形式がＯＳに依存し、該ジョブの引継ぎは困難である。
【０００５】
【特許文献１】特開２００１−９２６５０号公報
【特許文献２】特開２００１−１６６９６６号公報
【特許文献３】特開昭６３−３７４２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
オーバヘッドの観点からアプリケーションレベルのチェックポインティング方式がより実用的と考えられるが、プログラムに手を加えなければならないといった問題がある。即ち、プログラムの何処でプログラムの実行を中断するべきかを決め、そのポイントでプログラムの実行を中断し又実行を再開するためにはどのデータを退避及び復帰させる必要があるかを判断し、明示的にそれらのデータを退避あるいは復帰させるライブラリを作成し、該ライブラリを明示的に呼び出すようにプログラムを更新しなければならない。このような作業はチェックポインティングを行おうとするアプリケーションの規模が大きかったり、プログラムの構造が複雑な場合、非常に困難な作業となる。
【０００７】
本発明は、アプリケーションレベルでのチェックポインティングを容易に実現可能にすることを課題としている。
また、本発明は、アプリケーションレベルでのチェックポインティングを容易に行うことを可能にするためのプログラムを提供することを課題としている。
【課題を解決するための手段】
【０００８】
本発明によれば、プログラムの実行を中断する位置であるプログラム中断点における実行結果を退避し、前記プログラムの実行再開時に前記退避したデータを復帰させて、前記プログラム中断点から前記プログラムを実行再開するようにしたチェックポインティング方式において、前記プログラムのプログラム中断点において退避及び復帰が必要な変数を識別する変数識別手段と、前記変数識別手段で得られた変数に関する情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成する中間データ退避・復帰ライブラリ生成手段と、前記プログラムのプログラム中断点に前記ライブラリをコールするプログラムを組み込むライブラリコール生成手段とを備え、前記ライブラリをコールするプログラムが前記ライブラリをコールし、前記プログラムが前記プログラム中断点において実行再開することを特徴とするチェックポインティング方式が提供される。
【０００９】
変数識別手段は、プログラムのプログラム中断点において退避及び復帰が必要な変数を識別する。中間データ退避・復帰ライブラリ生成手段は、前記変数識別手段で得られた変数に関する情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成する。ライブラリコール生成手段は、前記プログラムのプログラム中断点に前記ライブラリをコールするプログラムを組み込む。前記ライブラリをコールするプログラムが前記ライブラリをコールし、前記プログラムが前記プログラム中断点において実行再開する。
【００１０】
ここで、前記変数識別手段は、前記プログラムの実行が開始されてから最初に前記プログラム中断点に到るまでに更新される変数を識別する被初期化変数識別手段と、最初に前記プログラム中断点を通過し次に該プログラム中断点に到るまでに更新される変数を識別する更新変数識別手段とによって構成され、前記中間データ退避・復帰ライブラリ生成手段は、前記被初期化変数識別手段と前記更新変数識別手段で得られた情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成するように構成してもよい。
【００１１】
また、前記プログラム中断点の情報は前記プログラムに組み込まれて成るように構成してもよい。
また、前記被初期化変数識別手段は、前記プログラムを解析して、指定されたプログラム中断点までに更新される変数のリストを被初期化変数リストとして被初期化変数リスト記憶手段に記憶し、前記更新変数識別手段は、前記プログラムを解析して、指定されたプログラム中断点から開始して次に該指定されたプログラム中断点に制御が戻ってくるまでに更新される変数のリストを更新変数リストとして更新変更リスト記憶手段に記憶し、前記中間データ退避・復帰ライブラリ生成手段は、前記被初期化変数リスト記憶手段に記憶された被初期化変数リストに登録されていて、かつ、前記更新変更リスト記憶手段に記憶された更新変数リストに登録された変数を、プログラムの実行を再開するために必要とする中間データとして退避するサブルーチンと中間データを復帰させるサブルーチンを生成し、中間データ退避・復帰ライブラリとして中間データ退避・復帰ライブラリ記憶手段に記憶するように構成してもよい。
【００１２】
また、本発明によれば、コンピュータを、プログラムの実行を中断する位置であるプログラム中断点において退避及び復帰が必要な変数を識別する変数識別手段と、前記変数識別手段で得られた変数に関する情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成する中間データ退避・復帰ライブラリ生成手段と、前記プログラムのプログラム中断点に前記ライブラリをコールするプログラムを組み込むライブラリコール生成手段として機能させることを特徴とするプログラムが提供される。
【００１３】
コンピュータはプログラムを実行することにより、プログラムの実行を中断する位置であるプログラム中断点において退避及び復帰が必要な変数を識別する変数識別手段と、前記変数識別手段で得られた変数に関する情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成する中間データ退避・復帰ライブラリ生成手段と、前記プログラムのプログラム中断点に前記ライブラリをコールするプログラムを組み込むライブラリコール生成手段として機能する。
【００１４】
ここで、前記変数識別手段が、前記プログラムの実行が開始されてから最初に前記プログラム中断点に到るまでに更新される変数を識別する被初期化変数識別手段と、最初に前記プログラム中断点を通過し次に該プログラム中断点に到るまでに更新される変数を識別する更新変数識別手段とによって構成され、前記中間データ退避・復帰ライブラリ生成手段が、前記被初期化変数識別手段と前記更新変数識別手段で得られた情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成するように前記コンピュータを機能させるよう前記プログラムを構成してもよい。
【００１５】
また、前記被初期化変数識別手段が、前記プログラムを解析して、指定されたプログラム中断点までに更新される変数のリストを被初期化変数リストとして被初期化変数リスト記憶手段に記憶し、前記更新変数識別手段が、前記プログラムを解析して、指定されたプログラム中断点から開始して次に該指定されたプログラム中断点に制御が戻ってくるまでに更新される変数のリストを更新変数リストとして更新変更リスト記憶手段に記憶し、前記中間データ退避・復帰ライブラリ生成手段が、前記被初期化変数リスト記憶手段に記憶された被初期化変数リストに登録されていて、かつ、前記更新変更リスト記憶手段に記憶された更新変数リストに登録された変数を、プログラムの実行を再開するために必要とする中間データとして退避するサブルーチンと中間データを復帰させるサブルーチンを生成し、中間データ退避・復帰ライブラリとして中間データ退避・復帰ライブラリ記憶手段に記憶するように前記コンピュータを機能させるよう前記プログラムを構成してもよい。
【発明の効果】
【００１６】
本発明のチェックポインティング方式によれば、アプリケーションレベルのチェックポインティングを実現するために必要とするプログラムの変更を最小限にすることが可能になり、アプリケーションレベルでのチェックポインティングを容易に実現することが可能になる。
また、本発明のプログラムをコンピュータが実行することにより、アプリケーションレベルでのチェックポインティングを容易に行うことが可能になる。
【発明を実施するための最良の形態】
【００１７】
先ず、本発明の実施の形態の概要を説明すると、本実施の形態に係るチェックポインティング方式は、プログラムの実行中断点（プログラム中断点）における実行結果を退避し、前記プログラムの実行再開時に前記退避したデータを復帰させて、前記実行中断点から前記プログラムを実行再開するようにしたアプリケーションレベルのチェックポインティング方式である。
【００１８】
本実施の形態においては、実行対象であるプログラム上でプログラムの実行を中断し再実行を開始するべき点（プログラム中断点）を指示行で指定する。被初期化変数解析手段は、プログラム中断点までに値が確定する変数を、該変数への代入関係に着目し、確定する。更に更新変数解析手段はプログラム中断点から再びプログラム中断点に制御が戻ってくる間に更新される変数を、該変数への代入に関係に着目し、確定する。プログラムの実行の中断が指示されると、プログラムの再開に必要な中間データが退避する。プログラムが再実行されると、プログラム中断点まではプログラムの実行は通常通り進む。プログラム中断点において再実行のための中間データが与えられている場合、データを置き換え、次の処理に進む。データを置き換えた時点で、プログラムを中断する前に得られた結果が反映され、プログラムの実行が中断されたにもかかわらず、プログラム上は実行が継続して行われる。
【００１９】
即ち、プログラム上で指示したプログラム中断点においてプログラムの実行を中断あるいは再開するために必要な中間データを退避あるいは復帰させるライブラリを生成し、そのライブラリをコールするプログラムを元のプログラム上に自動的に挿入することによりアプリケーションレベルのチェックポインティングを実現するようにしている。また、本実施の形態に係るチェックポインティング用のプログラムは、該プログラムをコンピュータに実行させることによって、前記コンピュータに前記チェックポインティング方式を実現させることを可能にするものである。
【００２０】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図１は、本実施の形態に係るチェックポインティング方式の構成を示す機能ブロック図であり、コンピュータ及び該コンピュータに実行させるためのプログラムを用いて実現される機能を用いて表したブロック図である。
図１を参照すると、本発明の実施の形態は、被初期化変数識別手段１と、更新変数識別手段２と、中間データ退避・復帰ライブラリ生成手段３と、ライブラリコール生成手段４と、被初期化変数リスト記憶手段１２１と、更新変更リスト記憶手段２１１と、中間データ退避・復帰ライブラリ記憶手段３２１とを含んでいる。尚、被初期化変数リスト記憶手段１２１、更新変更リスト記憶手段２１１及び中間データ退避・復帰ライブラリ記憶手段３２１は記憶手段を構成している。
【００２１】
被初期化変数識別手段１は、アプリケーションレベルのチェックポインティングを可能としたいプログラム１１を入力として、該プログラム１１のフローを解析し、指定されたプログラム中断点までに更新される変数のリストを被初期化変数リスト１２として出力し、被初期化変数リスト１２を被初期化変数リスト記憶手段１２１に記憶する。尚、コンピュータによる実行処理の対象であるプログラム１１には、予め、プログラム１１実行の中断点を指示するための指示がプログラム１１の所定の位置に組み込まれている。
【００２２】
更新変数識別手段２は、該プログラム１１を入力として、該プログラム１１の入れ子構造を解析し、指定されたプログラム中断点から開始して次に該指定されたプログラム中断点に制御が戻ってくるまでに更新される変数のリストを更新変数リスト２１として出力し、更新変更リスト２１を更新変更リスト記憶手段２１１に記憶する。
尚、被初期化変数識別手段１及び更新変数識別手段２は、プログラム１１を解析することによって、プログラム１１のプログラム中断点において退避及び復帰が必要な変数を識別する変数識別手段を構成している。
【００２３】
中間データ退避・復帰ライブラリ生成手段３は、前記被初期化変数リスト１２に登録されていて、かつ、前記更新変数リスト２１に登録された変数を、プログラムの実行を再開するために必要とする中間データ３１として退避する、つまり、中間データ３１として書き出すサブルーチンと復帰、つまり、中間データ３１を読み込むルーチンを生成し、中間データ退避・復帰ライブラリ３２として出力し、中間データ退避・復帰ライブラリ３２を中間データ退避・復帰ライブラリ記憶手段３２１に記憶する。
【００２４】
ライブラリコール生成手段４は、前記プログラム１１を入力として、プログラム中のプログラム中断点の指示に後続して、例えば、プログラムの中断を指示するファイルが存在した場合には、中間データ退避・復帰ライブラリ３２の中間データを書き出すサブルーチンを呼び出し、プログラムの実行を停止させるコードを、また、最初にプログラムの実行が該プログラム中断点に来た時、実行の再開に必要とする中間データ３１が存在する場合に該中間データ３１を読み込むサブルーチンを呼び出すコードをそれぞれ埋め込み、アプリケーションレベルのチェックポインティングに対応したプログラム４１として出力する。
なお、プログラムの中断を指示するファイルにより中間データを出力しプログラムの実行を中断する制御を例に挙げたが、プログラムの中断を指示する方法は問わないし、中間データを書き出す動作とプログラムを中断させる操作に分割しても何等支障はない。
図２乃至図４は、本実施の形態の動作を示す流れ図である。
【００２５】
以下、図１乃至図４を参照して本実施の形態の動作について詳細に説明する。
まず、被初期化変数識別手段１によりプログラム１１を入力として被初期化変数リスト１２を、更新変数識別手段２によりプログラム１１を入力として更新変数リスト２１をそれぞれ得る。被初期化変数識別手段１は、プログラム１１に基づいて得た被初期化変数リスト１２を被初期化変数リスト記憶手段１２１に記憶し又、更新変数識別手段２は、プログラム１１に基づいて得た更新変数リスト２１を更新変数リスト記憶手段２１１に記憶する。
【００２６】
中間データ退避・復帰ライブラリ生成手段３により被初期化変数リスト１２と該新変数リスト２１を入力として中間データ退避・復帰ライブラリ３２を得ると同時に、ライブラリコール生成手段４によりプログラム１１を入力としてアプリケーションレベルのチェックポインティングに対応したプログラム４１を得、プログラム４１をコンパイルし中間データ退避・復帰ライブラリ３２とリンクすることにより実行形式のプログラム５１を作成する。なお、中間データ退避・復帰ライブラリ生成手段３は、被初期化変数リスト１２と該新変数リスト２１に基づいて得た中間データ退避・復帰ライブラリ３２を中間データ退避・復帰ライブラリ記憶手段３２１に記憶する。
【００２７】
実行形式のプログラム５１を実行中に、プログラム実行中断の指示を受けて、プログラム５１の実行を中断する必要が生じた場合には（図３参照）、中断を指示するファイルを作成すればよい。該中断を指示するファイルが作成された後初めて所定のプログラム中断点に到達した時点で、それまでの計算結果が中間データ３１として出力される。中間データ３１は記憶手段に記憶される。プログラム５１の実行を再開する場合には、中間データ３１を中間データ退避・復帰ライブラリ３２の読み込みサブルーチンが認識できる場所に置き、プログラム５１を通常通り実行すれば、中間データ３１を作成したプログラム中断点の直後からプログラム５１の実行が再開される（図４参照）。
【００２８】
なお、被初期化変数識別手段１を省略することも可能である。この場合、プログラム中断点から再度プログラム実行点に制御が戻るまでに更新された変数を全て中間データとして退避及び復帰する。これらの中にはプログラムの中断点からあとに初期化される変数も含まれる。これらは、原理的には、中間でデータとして退避及び復帰する必要のないもので、これらを退避及び復帰するために無駄が生じるが、プログラムの中断及び再実行の動作にはなんら影響はない。
【００２９】
以上述べたように、本実施の形態に係るチェックポインティング方式は、プログラムの実行中断点における実行結果を退避し、前記プログラムの実行再開時に前記退避したデータを復帰させて、前記実行中断点から前記プログラムを実行再開するようにしたチェックポインティング方式において、プログラムの実行を中断及び再開するために必要な中間データを退避及び復帰させるライブラリを生成し、前記ライブラリをコールするためのプログラムを前記プログラムに挿入することによりチェックポインティングを行い、これにより前記プログラムを再開実行するようにしている。
【００３０】
すなわち、本実施の形態に係るチェックポインティング方式は、プログラムの実行を中断する位置であるプログラム中断点における実行結果を退避し、前記プログラムの実行再開時に前記退避したデータを復帰させて、前記プログラム中断点から前記プログラムを実行再開するようにしたチェックポインティング方式において、前記プログラムのプログラム中断点において退避及び復帰が必要な変数を識別する変数識別手段と、前記変数識別手段で得られた変数に関する情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成する中間データ退避・復帰ライブラリ生成手段と、前記プログラムのプログラム中断点に前記ライブラリをコールするプログラムを組み込むライブラリコール生成手段とを備え、前記ライブラリをコールするプログラムが前記ライブラリをコールし、前記プログラムが前記プログラム中断点において実行再開することを特徴としている。
【００３１】
ここで、前記変数識別手段は、前記プログラムの実行が開始されてから最初に前記プログラム中断点に到るまでに更新される変数を識別する被初期化変数識別手段１と、最初に前記プログラム中断点を通過し次に該プログラム中断点に到るまでに更新される変数を識別する更新変数識別手段２とによって構成され、中間データ退避・復帰ライブラリ生成手段３は、被初期化変数識別手段１と更新変数識別手段２で得られた変数に関する情報から前記プログラム中断点において実行を再開するために必要とする中間データを退避及び復帰させるためのライブラリを生成するようにしている。
【００３２】
また、前記プログラム中断点の情報はプログラム１１に予め組み込まれており、前記プログラム中断点の数は適宜、１つ、あるいは、複数用いる。
また、被初期化変数識別手段１は、プログラム１１のフローを解析し、指定されたプログラム中断点までに更新される変数のリストを被初期化変数リスト１２として被初期化変数リスト記憶手段１２１に記憶するようにしている。
また、更新変数識別手段２は、プログラム１１を解析し、指定されたプログラム中断点から開始して次に該指定されたプログラム中断点に制御が戻ってくるまでに更新される変数のリストを更新変数リスト２１として更新変更リスト記憶手段２１１に記憶するようにしている。
【００３３】
中間データ退避・復帰ライブラリ生成手段３は、被初期化変数リスト記憶手段１２１に記憶された被初期化変数リスト１２に登録されていて、かつ、更新変更リスト記憶手段２１１に記憶された更新変数リスト２１に登録された変数を、プログラムの実行を再開するために必要とする中間データとして退避するサブルーチンと中間データを復帰させるサブルーチンを生成し、中間データ退避・復帰ライブラリ３２として中間データ退避・復帰ライブラリ記憶手段３２１に記憶するようにしている。
【００３４】
したがって、中間データ３１を退避及び復帰させる中間データ退避・復帰ライブラリ３２が自動的に生成され、かつ、中断を指示するファイルを作成すれば中間データ３１を出力してプログラムの実行を中断し、中間データ３１があれば中間データを作成したプログラム中断点の直後からプログラムの実行を再開することができる。プログラム１１の中にプログラム１１の中断点のみを指定するだけで、必要のあるデータだけを退避あるいは復帰する効率の良いアプリケーションレベルのチェックポインティングを容易に実現することができる。
【００３５】
また、アプリケーションレベルのチェックポインティングにおいて、プログラムの実行の中断及び再実行を可能ならしめるために行う中間データの退避及び復帰をプログラム上のプログラム中断点の指示に基づき自動的に行うことが可能になる。
また、アプリケーションレベルでのチェックポインティングを容易に実現することが可能になる。
また、アプリケーションレベルのチェックポインティングをプログラムの実行を中断する点の指定を行う作業のみでよいため、アプリケーションレベルのチェックポインティングを実現するために必要とするプログラムの変更作業を極めて少なくすることができる。この結果、容易にアプリケーションレベルのチックポインティングを利用できるようになる。
【００３６】
また、任意のプログラムにおいて、ソース上でプログラムの実行を中断する点が明示的に指示された場合、自動的に、該プログラム中断点において退避あるいは復帰するべきデータを決定し、それらを退避あるいは復帰するライブラリを生成し、かつ該ライブラリを中断点において呼びだすプログラムを元のプログラムに自動的に組み込み、アプリケーションレベルのチェックポインティングを容易に実現できる方式を提供することが可能になる。
また、本実施の形態に係るチェックポインティング用プログラムをコンピュータが実行することにより、前記チェックポインティング方式を実現することが可能になる。したがって、アプリケーションレベルでのチェックポインティングを容易に行うことを可能にするためのプログラムを提供することが可能になる。
【産業上の利用可能性】
【００３７】
自動車等の設計時に使用する計算機シミュレーションシステム、ソフトウェア開発支援システム、デバッグシステム等、各種のコンピュータを用いたシステムにおけるチェックポインティング方式に適用可能である。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施の形態の構成を示すブロック図
【図２】本発明の実施の形態の動作を示す流れ図
【図３】本発明の実施の形態の動作を示す流れ図
【図４】本発明の実施の形態の動作を示す流れ図
【符号の説明】
【００３９】
１・・・変数識別手段を構成する被初期化変数識別手段
２・・・変数識別手段を構成する更新変数識別手段
３・・・中間データ退避・復帰ライブラリ生成手段
４・・・ライブラリコール生成手段
１１・・・アプリケーションレベルのチェックポインティングを可能としたいプログラム
１２・・・被初期化変数リスト
２１・・・更新変数リスト
３１・・・中間データ
３２・・・中間データ退避・復帰ライブラリ
４１・・・アプリケーションレベルのチェックポインティングに対応したプログラム
５１・・・実行形式のプログラム
１２１・・・記憶手段を構成する被初期化変数リスト記憶手段
２１１・・・記憶手段を構成する更新変数リスト記憶手段
３２１・・・記憶手段を構成する中間データ退避・復帰ライブラリ記憶手段
【図１】
2005322078.tif 000003
【図２】
2005322078.tif 000004
【図３】
2005322078.tif 000005
【図４】
2005322078.tif 000006