(57)【要約】【課題】  チェックポイントリスタート機能によりシステム障害発生時にジョブの再実行を行った場合でもジョブ開始からジョブ終了までの一貫した課金情報によりジョブの課金を行うことが可能な技術を提供する。【解決手段】  チェックポイントリスタート機能によりシステム障害発生時にチェックポイントから再実行されるジョブの課金を行うチェックポイントリスタートジョブ課金方法において、ジョブ内のプロセスが終了する毎にそのプロセスのシステム使用資源量から課金情報を生成して課金情報格納領域内に格納するステップと、ジョブのチェックポイントを採取する際に、そのジョブをリスタートする為のジョブ構成情報と共に前記課金情報格納領域内の課金情報を退避ファイルに退避するステップと、ジョブのリスタートを行う際に、そのジョブのジョブ構成情報に対応する課金情報を退避ファイルから前記課金情報格納領域内に回復するステップと、ジョブ終了時に、前記課金情報格納領域内のそのジョブの課金情報を返却するステップとを有するものである。【選択図】図４
2006031067.tif 000002
【特許請求の範囲】
【請求項１】
チェックポイントリスタート機能によりシステム障害発生時にチェックポイントから再実行されるジョブの課金を行うチェックポイントリスタートジョブ課金方法において、
ジョブ内のプロセスが終了する毎にそのプロセスのシステム使用資源量から課金情報を生成して課金情報格納領域内に格納するステップと、
ジョブのチェックポイントを採取する際に、そのジョブをリスタートする為のジョブ構成情報と共に前記課金情報格納領域内の課金情報を退避ファイルに退避するステップと、
ジョブのリスタートを行う際に、そのジョブのジョブ構成情報に対応する課金情報を退避ファイルから前記課金情報格納領域内に回復するステップと、
ジョブ終了時に、前記課金情報格納領域内のそのジョブの課金情報を返却するステップとを有することを特徴とするチェックポイントリスタートジョブ課金方法。
【請求項２】
ジョブ開始またはジョブのリスタートから次のチェックポイントまたはジョブ終了までの課金情報を前記課金情報格納領域内の中間課金情報領域に格納し、ジョブのリスタート毎に前記中間課金情報領域の課金情報を累計して前記課金情報格納領域内の累計課金情報領域に格納することを特徴とする請求項１に記載されたチェックポイントリスタートジョブ課金方法。
【請求項３】
ジョブ起動時にそのジョブＩＤを前記課金情報格納領域内に登録してジョブＩＤと課金情報とを対応付け、ジョブの終了時に前記課金情報格納領域内のそのジョブのジョブＩＤと対応付けられた課金情報を返却することを特徴とする請求項１または請求項２のいずれかに記載されたチェックポイントリスタートジョブ課金方法。
【請求項４】
ジョブのチェックポイントを採取する際にその時点で実行中のプロセスのプロセスＩＤをプロセスＩＤ予約ファイルに格納し、ジョブのリスタートでプロセスを再起動する場合にはチェックポイント採取時と同一のプロセスＩＤでプロセスを再起動し、ジョブのリスタート以外でプロセスを起動する場合には前記プロセスＩＤ予約ファイルに格納されていないプロセスＩＤでプロセスを起動することを特徴とする請求項１乃至請求項３のいずれか１項に記載されたチェックポイントリスタートジョブ課金方法。
【請求項５】
チェックポイントリスタート機能によりシステム障害発生時にチェックポイントから再実行されるジョブの課金を行うチェックポイントリスタートジョブ課金装置において、
ジョブ内のプロセスが終了する毎にそのプロセスのシステム使用資源量から課金情報を生成して課金情報格納領域内に格納するプロセス終了処理部と、
ジョブのチェックポイントを採取する際に、そのジョブをリスタートする為のジョブ構成情報と共に前記課金情報格納領域内の課金情報を退避ファイルに退避するチェックポイント処理部と、
ジョブのリスタートを行う際に、そのジョブのジョブ構成情報に対応する課金情報を退避ファイルから前記課金情報格納領域内に回復するリスタート処理部と、
ジョブ終了時に、前記課金情報格納領域内のそのジョブの課金情報を返却するジョブ終了処理部とを備えることを特徴とするチェックポイントリスタートジョブ課金装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はチェックポイントリスタートジョブの課金を行うチェックポイントリスタートジョブ課金技術に関し、特にリスタート後にジョブ管理ソフトウェアがユーザジョブのプロセス課金情報を取得・集計する際に、ジョブ開始からの一貫した課金情報をオペレーティングシステムから取得できるチェックポイントリスタートジョブ課金技術に適用して有効な技術に関するものである。
【背景技術】
【０００２】
ある時点（チェックポイント）でのジョブの実行状況に関する情報を記録しておき、ジョブが異常終了した場合にチェックポイント時の状態から処理を再実行するチェックポイントリスタートに関する技術として、例えば下記特許文献１、特許文献２及び特許文献３に記載のものが知られている。
【０００３】
下記特許文献１に記載のものは、分散システムにおけるチェックポイントリスタートを実現する技術に関するものであるが、ジョブの課金についての考慮はなされていない。
下記特許文献２に記載のものは、並列計算機システムにおける並列ジョブのチェックポイントリスタートを実現する技術に関するものであるが、ジョブの課金についての考慮はなされていない。
下記特許文献３に記載のものは、チェックポイント情報の管理方法に関する技術であるが、課金情報の管理方法についての考慮はなされていない。
【０００４】
【特許文献１】特開平７−１６８７９４号公報
【特許文献２】特開平１０−１１６２６１号公報
【特許文献３】特開平１０−２６９１２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前記の様に従来のチェックポイントリスタートに関する技術ではジョブの課金についての考慮がなされておらず、システム障害等によりジョブをチェックポイントからリスタートした場合にオペレーティングシステムがジョブ開始からチェックポイントまでのプロセス課金情報を知る手段が無く、ジョブ管理ソフトウェアはジョブ開始からの一貫した課金情報を得られなかった。
【０００６】
また従来のジョブの課金情報の単位は、課金の情報の単位としては小さいものであるプロセス単位であり、その課金情報のデータ量は膨大になっていた為、チェックポイントの際に課金情報を退避する場合にはその膨大なデータ量の退避を行わなければならないという問題があり、更にシステム障害後のリスタートの際には、その退避した膨大なデータ量の課金情報がリスタートされたどのプロセスに対応するものであるかを識別するのが困難であるという問題があった。
【０００７】
本発明の目的は上記問題を解決し、チェックポイントリスタート機能によりシステム障害発生時にジョブの再実行を行った場合でもジョブ開始からジョブ終了までの一貫した課金情報によりジョブの課金を行うことが可能な技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、チェックポイントリスタート機能によりシステム障害発生時にチェックポイントから再実行されるジョブの課金を行うチェックポイントリスタートジョブ課金装置において、チェックポイント時に退避した課金情報をリスタート時に回復してジョブの課金を行うものである。
【０００９】
本発明では、ジョブをチェックポイントからリスタートした場合においてもジョブ開始から終了までの一貫した課金情報を採取する為に、オペレーティングシステムのメモリ空間に、課金情報を格納する為の課金情報格納領域を設け、ジョブが開始され、そのジョブ内のプロセスが実行されると、ジョブ内のプロセスが終了する毎にそのプロセスのシステム使用資源量から課金情報を生成して課金情報格納領域内の課金情報に加算して格納する。
【００１０】
前記の様にしてジョブを実行している際にジョブのチェックポイントを採取する場合には、実行中のプロセスを一旦停止した後、そのプロセスのシステム使用資源量から課金情報を生成して前記課金情報格納領域内の課金情報に加算し、そのジョブをリスタートする為のジョブ構成情報（プロセス数、実行可能プログラム名等）と共に前記課金情報格納領域内の課金情報を退避ファイルに退避する。
【００１１】
その後、ジョブを実行中にシステム障害が発生し、ジョブのリスタートを行う場合には、そのジョブのジョブ構成情報に対応する課金情報を退避ファイルから読み出して前記課金情報格納領域内に回復した後、そのジョブ構成情報に従って当該ジョブのリスタートを行う。
【００１２】
ジョブがリスタートされ、そのジョブ内のプロセスの実行が再開されると、前記と同様にしてジョブ内のプロセスが終了する毎にそのプロセスのシステム使用資源量から課金情報を生成して前記課金情報格納領域内の課金情報に加算して格納し、そのジョブ内のプロセスが全て終了した場合には、前記課金情報格納領域内のそのジョブの課金情報を返却する。
【発明の効果】
【００１３】
本発明によれば、チェックポイントリスタート機能によりシステム障害発生時にジョブの再実行を行った場合でもジョブ開始からジョブ終了までの一貫した課金情報によりジョブの課金を行うことが可能である。
【発明を実施するための最良の形態】
【００１４】
以下にチェックポイントリスタート機能によりシステム障害発生時にチェックポイントから再実行されるジョブの課金を行う一実施形態のチェックポイントリスタートジョブ課金装置について説明する。
【００１５】
図１は本実施形態のチェックポイントリスタートジョブ課金装置のシステム構成を示す図である。図１に示す様に本実施形態のチェックポイントリスタートジョブ課金装置は、ジョブＩＤ登録処理部１０１と、プロセス終了処理部１０２と、チェックポイント処理部１０３と、リスタート処理部１０４と、ジョブ終了処理部１０５とを有している。
【００１６】
ジョブＩＤ登録処理部１０１は、ジョブ起動時にそのジョブのジョブＩＤをジョブ課金情報格納領域８内に登録してジョブＩＤと課金情報とを対応付ける処理部である。プロセス終了処理部１０２は、ジョブ２内のプロセスが終了する毎にそのプロセスのシステム使用資源量から課金情報を生成してジョブ課金情報格納領域８内に格納する処理部である。
【００１７】
チェックポイント処理部１０３は、ジョブ２のチェックポイントを採取する際に、ジョブ２をリスタートする為のジョブ構成情報と共にジョブ課金情報格納領域８内の課金情報を退避ファイル７に退避する処理部である。
【００１８】
リスタート処理部１０４は、ジョブ２のリスタートを行う際に、ジョブ２のジョブ構成情報に対応する課金情報を退避ファイル７からジョブ課金情報格納領域８内に回復する処理部である。ジョブ終了処理部１０５は、ジョブ終了時に、ジョブ課金情報格納領域８内のジョブ２の課金情報を返却する処理部である。
【００１９】
チェックポイントリスタートジョブ課金装置をジョブＩＤ登録処理部１０１、プロセス終了処理部１０２、チェックポイント処理部１０３、リスタート処理部１０４及びジョブ終了処理部１０５として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００２０】
図１においてオペレーティングシステム１は、ユーザのジョブ２を管理している。ジョブ２はプロセスグループ３aから構成されており、プロセスグループ３aはジョブ監視用プロセス４aによりジョブ内で最初に生成されるジョブ起動用プロセス４bとその子プロセス４cから構成されている。これらのプロセスはオペレーティングシステム１の中で一つのジョブ２として処理される。
【００２１】
チェックポイント要求時にはチェックポイント情報格納領域５に対象ジョブのジョブ構成情報（プロセス数、実行可能プログラム名等）を格納し、その格納したジョブ構成情報をジョブ課金情報格納領域８の課金情報と共に外部記憶装置６の退避ファイル７に書き込む。また、プロセス終了時にはジョブ課金情報格納領域８の個々のプロセスの課金情報を集計格納し、ジョブ終了時にはその集計した課金情報をジョブ管理ソフトウェア１１に通知する。ここで、外部記憶装置９の課金ファイル１０にも課金情報を書き込む様にしても良い。
【００２２】
図２は本実施形態のジョブ内でプロセスグループを管理するテーブルの例を示す図である。図２では、ジョブＩＤ設定時にオペレーティングシステム１のジョブ課金情報格納領域８に生成されるジョブエントリテーブル２００と、プロセスグループ生成時にジョブ課金情報格納領域８に生成されるプロセスグループエントリテーブル２０５の例を表している。
【００２３】
ジョブＩＤ２０１はオペレーティングシステム１内でジョブを識別する為のＩＤである。プロセスグループ情報リスト領域アドレス２０２はジョブ内に存在するプロセスグループの情報を格納するプロセスグループエントリテーブル２０５のアドレスを指している。ジョブ中間課金情報２０３は、ジョブ開始またはリスタートから、チェックポイントまたはジョブ終了までのジョブの中間の課金情報を格納する為のフィールドであり、ジョブ累計課金情報２０４はジョブ開始から終了までのジョブ中間課金情報２０３を累計する為のフィールドである。この２つのフィールドはジョブ終了待ちシステムコール発行時に「０」にクリアされ、ジョブ内のプロセスグループ終了を確認する度に該当するプロセスグループエントリテーブル２０５のプロセスグループ中間課金情報２０９とプロセスグループ累計課金情報２１０がそれぞれ加算される。
【００２４】
プロセスグループエントリテーブル２０５は、ジョブ内に存在するプロセスグループの課金情報を示したテーブルであり、ジョブ内でプロセスグループが生成されるとジョブエントリテーブル２００のプロセスグループ情報リスト領域アドレス２０２や他のプロセスグループエントリテーブル２０５のＮＥＸＴエントリアドレス２０６にリンクされるテーブルである。プロセスグループエントリテーブル２０５にはＮＥＸＴエントリアドレス２０６、プロセスグループＩＤ２０７、ステータス２０８、プロセスグループ中間課金情報２０９、プロセスグループ累計課金情報２１０がある。
【００２５】
ＮＥＸＴエントリアドレス２０６は、複数のプロセスグループが生成されている場合に次のプロセスグループエントリテーブルのアドレスを指しており、プロセスグループＩＤ２０７は、グループを形成している複数のプロセスを識別する為のＩＤであり、ステータス２０８にはプロセスグループ内の全プロセスが終了しているか又は動作中であるかの情報が格納される。
【００２６】
プロセスグループ中間課金情報２０９には、ジョブ開始またはリスタートからチェックポイントまたはジョブ終了までのプロセスグループの中間の課金情報が格納されており、ジョブ内のプロセスが終了する度にプロセス課金情報が加算される。プロセスグループ累計課金情報２１０にはジョブ開始から終了までのプロセスグループ中間課金情報２０９を累計した課金情報が格納されており、リスタートまたはジョブの終了を行う度にプロセスグループ中間課金情報２０９が加算される。その後、リスタートの際にプロセスグループ中間課金情報２０９は「０」にクリアされる。
【００２７】
図３は本実施形態のジョブ投入からチェックポイント採取までの詳細を示す図である。図３では、ユーザがバッチジョブを投入し、ジョブ内にプロセスグループが生成され、チェックポイントを採取するまでの動作を表している。
【００２８】
ユーザがジョブ管理ソフトウェア１１にジョブを投入すると、ジョブ管理ソフトウェア１１はシステムで一意なＩＤを決定し、ジョブ監視用プロセス４aを生成してジョブＩＤを渡す。ジョブ監視用プロセス４aは、ジョブ起動用プロセス４bを生成してジョブＩＤを渡す。ジョブ起動用プロセス４bは、渡されたジョブＩＤをプロセス４bに設定する為のジョブＩＤ登録システムコールを発行する。この時、オペレーティングシステム１は、ジョブ課金情報格納領域８aにジョブエントリテーブル２００aを生成する。
【００２９】
ジョブ起動用プロセス４bは、その後プロセスグループ３aを生成するシステムコールを発行し、オペレーティングシステム１は、プロセスグループエントリテーブル２０５aを生成して、ジョブ起動用プロセス４bのジョブＩＤと同じジョブエントリテーブル２００aにリンクさせる。そしてジョブ起動用プロセス４bはユーザが投入したジョブのプログラムをローディングし、ジョブが開始される。
【００３０】
ジョブ監視用プロセス４aはジョブ起動を確認すると、ジョブ終了待ちシステムコールを発行してジョブ課金情報が採取されるまで待機する。プロセス４cはジョブ起動用プロセス４bの子プロセスであり、同じプロセスグループ３aに所属している。プロセス４cが生成時にジョブＩＤをプロセス４bから継承することにより、オペレーティングシステム１はそれらを同一ジョブとして認識できる様にする。また、前記の様にジョブのリスタート以外でプロセスを起動する場合には、プロセスＩＤ予約ファイル１２に格納されていないプロセスＩＤで当該プロセスの起動を行うものとする。
【００３１】
ユーザが明示的またはジョブ管理ソフトウェア１１が暗黙的にジョブ２aのチェックポイント採取を要求すると、オペレーティングシステム１は当該ジョブ２ａの退避処理を行う。
【００３２】
退避処理では、まず、ジョブ内のジョブ起動用プロセス４bと子プロセス４cを停止させ、ジョブＩＤ、プロセスＩＤ、プロセスグループを形成しているプロセスを示すプロセス管理情報、プロセス数や実行可能プログラム名等のジョブ構成情報をチェックポイント情報格納領域５aに格納する。
【００３３】
次にジョブ起動用プロセス４bと子プロセス４cのシステム使用資源量から課金情報の値Ａを算出し、ジョブエントリテーブル２００aにリンクするプロセスグループエントリテーブル２０５aのプロセスグループ中間課金情報２０９aに加算する。
【００３４】
そしてチェックポイント情報格納領域５aとジョブ課金情報格納領域８aを退避ファイル７に書き込み、また、ジョブ内プロセスのプロセスＩＤが他プロセスに割当てられない様、そのプロセスＩＤをプロセスＩＤ予約ファイル１２に予約して、ジョブを再開する。
【００３５】
図４は本実施形態のジョブリスタートからジョブ課金通知までの詳細を示す図である。図４ではシステム障害等によりリブート後にジョブ管理ソフトウェア１１が当該ジョブをリスタートしてからジョブ終了後にジョブ課金を取得するまでの動作を表している。
【００３６】
システム障害等によりシステムがリブートされると、ジョブ管理ソフトウェア１１は実行中だったジョブ２aのジョブ監視用プロセス４dを生成してジョブＩＤを渡し、ジョブ監視用プロセス４dはジョブ起動用プロセス４eを生成してジョブＩＤを渡す。ジョブ起動用プロセス４eは渡されたジョブＩＤを指定してリスタートをオペレーティングシステム１に要求し、オペレーティングシステム１は退避ファイル７から回復処理を行う。ジョブ監視用プロセス４dはジョブ終了待ちシステムコールを再発行してジョブ終了を待つ。
【００３７】
回復処理では、まず、退避ファイル７からジョブ構成情報をチェックポイント情報格納領域５ｂに回復し、これに従ってジョブを再生成する。これにより、ジョブ起動用プロセス４eの子プロセス４fも再生成される。回復ジョブ内の全プロセスにはチェックポイント採取時と同一のジョブＩＤを設定し、各プロセスにはチェックポイント採取時と同一のプロセスＩＤを割当てる。
【００３８】
次に退避ファイル７からジョブエントリテーブル２００aとプロセスグループエントリテーブル２０５aをジョブ課金情報格納領域８ｂに回復し、ジョブエントリテーブル２００ｂとプロセスグループエントリテーブル２０５ｂとする。そして、プロセスグループエントリテーブル２０５ｂの回復された値Ａであるプロセスグループ中間課金情報２０９ｂをプロセスグループ累計課金情報２１０ｂに加算してプロセスグループ中間課金情報２０９ｂを「０」にクリアし、ジョブ起動用プロセス４eと子プロセス４fにチェックポイント時のプログラム状態を回復してジョブを再起動する。
【００３９】
その後、ジョブ２bの状態が遷移し、プロセス４fが終了するとプロセスグループエントリテーブル２０５cのプロセスグループ中間課金情報２０９cにプロセス４fの課金情報を加算する。ジョブ起動用プロセス４eが終了すると、プロセス４fと同じプロセスグループエントリテーブル２０５cのプロセスグループ中間課金情報２０９cにジョブ起動用プロセス４eの課金情報を加算する。これにより、プロセスグループ３bのプロセスグループ中間課金情報２０９cは値Ｂとなる。
【００４０】
オペレーティングシステム１は、プロセスグループ３ｂの全プロセスの終了により、プロセスグループエントリテーブル２０５cのステータス２０８cに、全プロセスが終了したことを示すフラグを立て、ジョブ終了待ちシステムコールを受け付けたジョブ終了処理部１０５に通知する。ジョブ終了待ちシステムコールを受け付けたジョブ終了処理部１０５は、ジョブエントリテーブル２００cにリンクされている全てのプロセスグループエントリテーブル２０５cのステータス２０８cに終了フラグが設定されたことを検知すると、プロセスグループエントリテーブル２０５cの値Ｂであるプロセスグループ中間課金情報２０９cをプロセスグループ累計課金情報２１０cに集計して、それぞれをジョブエントリテーブル２００cのジョブ中間課金情報２０３cとジョブ累計課金情報２０４cに加算し、ジョブ監視用プロセス４dに通知する。ジョブ監視用プロセス４dはジョブ課金情報をジョブ管理ソフトウェア１１に通知する。
【００４１】
図５は本実施形態のジョブＩＤ登録処理の処理手順を示すフローチャートである。図５に示す様にジョブＩＤ登録処理部１０１は、ジョブ起動時にジョブ管理ソフトウェア１１から指定されたジョブＩＤをジョブ課金情報格納領域８内のジョブエントリテーブル２００に登録してジョブＩＤと課金情報とを対応付ける処理を行う。
【００４２】
ジョブ起動用プロセスは生成されると初めにジョブＩＤ登録システムコールを発行する。本システムコールが発行されるとオペレーティングシステム１のジョブＩＤ登録処理部１０１は、まず、そのジョブＩＤ登録システムコールで指定されたジョブＩＤに一致するジョブエントリテーブル２００をジョブ課金情報格納領域８から検索する（ステップ５００）。同一ジョブＩＤのジョブエントリテーブル２００があった場合にはシステムエラーとなる（ステップ５０１）。
【００４３】
次にジョブＩＤ登録処理部１０１は、ジョブＩＤ登録システムコールを発行したジョブ起動用プロセスに、そのジョブＩＤ登録システムコールで指定されたジョブＩＤを設定する（ステップ５０２）。そして、前記指定されたジョブＩＤに対するジョブエントリテーブル２００をオペレーティングシステム１内のジョブ課金情報格納領域８に生成し、前記指定されたジョブＩＤをジョブＩＤ２０１に格納すると共にジョブ中間課金情報２０３及びジョブ累計課金情報２０４を「０」にクリアする（ステップ５０３）。
【００４４】
図６は本実施形態のプロセスグループ終了待ち処理の処理手順を示すフローチャートである。図６ではオペレーティングシステム１がジョブ終了を待ってジョブ課金を返す際の動作概要を表しており、ジョブ終了処理部１０５は、ジョブ終了時にジョブ課金情報格納領域８内のジョブ２のジョブＩＤに対応する課金情報を返却する処理を行う。
【００４５】
ジョブ監視用プロセスはジョブ起動を確認してジョブ終了待ちシステムコールを発行する。本システムコールが発行されるとオペレーティングシステム１のジョブ終了処理部１０５は、まず、ジョブ終了待ちシステムコールで指定されたジョブＩＤに一致するジョブＩＤ２０１を持つジョブエントリテーブル２００をジョブ課金情報格納領域８から検索する（ステップ６００）。前記指定されたジョブＩＤと同一ジョブＩＤのジョブエントリテーブル２００がなかった場合にはシステムエラーとなり（ステップ６０１）、同一ジョブＩＤのジョブエントリテーブル２００があった場合で、そのジョブがリスタートしていなければ（ステップ６０２）、そのジョブのジョブ中間課金情報２０３とジョブ累計課金情報２０４を「０」にクリアする（ステップ６０３）。
【００４６】
次にジョブ終了処理部１０５は、同一ジョブＩＤのジョブエントリテーブル２００のプロセスグループ情報リスト領域アドレス２０２やプロセスグループエントリテーブル２０５のＮＥＸＴエントリアドレス２０６を辿り、前記指定されたジョブＩＤに対応する全プロセスグループエントリテーブル２０５に対して課金集計処理を行う（ステップ６０４〜ステップ６０８）。この課金集計処理では、まずプロセスグループエントリテーブル２０５のステータス２０８を読み出してその内容を確認する（ステップ６０５）。ステータス２０８がプロセスグループの終了を示していない場合にはそのプロセスグループの終了まで待機し（ステップ６０６）、ステータス２０８がプロセスグループの終了を示している場合にはそのプロセスグループエントリテーブル２０５のプロセスグループ中間課金情報２０９とプロセスグループ累計課金情報２１０を、ジョブエントリテーブル２００のジョブ中間課金情報２０３とジョブ累計課金情報２０４にそれぞれ加算する（ステップ６０７）。
【００４７】
そして全プロセスグループエントリテーブル２０５に対する課金集計処理を終了したと判定すると（ステップ６０８）、前記ジョブ終了待ちシステムコールで指定されたジョブＩＤに対応するジョブエントリテーブル２００のジョブ中間課金情報２０３とジョブ累計課金情報２０４の値を、当該ジョブ終了待ちシステムコールを発行した発行元のジョブ監視用プロセスに返す（ステップ６０９）。
【００４８】
図７は本実施形態のチェックポイント処理の処理手順を示すフローチャートである。図７ではジョブのチェックポイント要求により、オペレーティングシステム１がジョブ２のジョブ構成情報を退避する際の動作概要を表しており、チェックポイント処理部１０３は、チェックポイント情報格納領域５a内の情報と共にジョブ課金情報格納領域８ａ内の課金情報を退避ファイル７に退避する処理を行う。
【００４９】
本処理でオペレーティングシステム１のチェックポイント処理部１０３は、まず、チェックポイント要求で指定されたジョブＩＤに一致するジョブエントリテーブル２００aをジョブ課金情報格納領域８aから検索する（ステップ７００）。前記指定されたジョブＩＤと同一ジョブＩＤのジョブエントリテーブル２００がなかった場合には、システムエラーとなり（ステップ７０１）、同一のジョブエントリテーブル２００aがあった場合には、そのジョブ内の全プロセスを停止させる（ステップ７０２）。
【００５０】
次に、停止処理が成功したかを確認し（ステップ７０３）、失敗した場合には、ジョブ内の全プロセスの実行を再開（ステップ７０９）させた後にシステムエラーとなり（ステップ７１０）、成功した場合には、ジョブ内の全プロセスのシステム使用資源量から課金情報（プロセス課金）を算出した後、ジョブエントリテーブル２００aにリンクする全プロセスグループエントリテーブル２０５aから該当するプロセスグループのテーブルを見つけ、そのプロセスグループ中間課金情報２０９aに前記算出したプロセス課金を加算する（ステップ７０４）。
【００５１】
そして、そのジョブのジョブＩＤ、前記停止処理を行ったプロセスのプロセスＩＤ、プロセスグループを形成する複数のプロセスの親子関係等の情報と各プロセスのプロセスＩＤとを示すプロセス管理情報、それらのプロセスの数や、各プロセスに対応する実行可能プログラム名等のジョブ構成情報をチェックポイント情報格納領域５aに格納した後、それらのジョブ構成情報を格納したチェックポイント情報格納領域５aに加えて、ジョブエントリテーブル２００ａ及びプロセスグループエントリテーブル２０５ａを格納したジョブ課金情報格納領域８aの情報も退避ファイル７へ書き込み、ジョブ構成情報と課金情報の退避を行う（ステップ７０５）。
【００５２】
また、チェックポイント情報格納領域５a内のプロセスＩＤとプロセスＩＤ予約ファイル１２中の情報とを比較してそれらのプロセスＩＤがプロセスＩＤ予約ファイル１２に予約されているかを確認し（ステップ７０６）、前記プロセスＩＤが予約されていない場合には、そのプロセスＩＤをプロセスＩＤ予約ファイル１２に格納して予約を行う（ステップ７０７）。予約されたプロセスＩＤは予約解除されるまで他プロセスに割当てられない。
【００５３】
そして、退避ファイル７への書き込が成功したかを確認し（ステップ７０８）、失敗した場合には、ジョブ内の全プロセスの実行を再開させ（ステップ７０９）、プロセスＩＤ予約ファイル１２の予約を解除した後にシステムエラーとなり（ステップ７１０）、成功した場合には、ジョブ内の全プロセスの実行を再開させた後にチェックポイント完了メッセージを出力する（ステップ７１１）。
【００５４】
図８は本実施形態のリスタート処理の処理手順を示すフローチャートである。図８ではジョブのリスタート要求により、オペレーティングシステム１がジョブをリスタートする際の動作概要を表しており、リスタート処理部１０４は、ジョブ２のジョブ構成情報に対応する課金情報を退避ファイル７からジョブ課金情報格納領域８b内に回復する処理を行う。
【００５５】
本処理でオペレーティングシステム１のリスタート処理部１０４は、まず、リスタート要求で指定されたジョブＩＤに対するチェックポイントの退避ファイル７が存在するかを確認し（ステップ８００）、存在しない場合には、システムエラーとなり（ステップ８０１）、存在する場合には、前記指定されたジョブＩＤに対応するジョブ構成情報を退避ファイル７から取出してチェックポイント情報格納領域５ｂに設定し、本情報に従いジョブを回復する（ステップ８０２）。回復したジョブのプロセスには、チェックポイント情報格納領域５ｂに設定されたジョブ構成情報内のプロセスＩＤを設定することにより、プロセスＩＤ予約ファイル１２に予約したプロセスＩＤと同一のプロセスＩＤを割当てる（ステップ８０３）。
【００５６】
次に、ジョブ回復の成功を確認し（ステップ８０４）、失敗した場合には、回復したジョブの後始末（ステップ８０５）をした後にシステムエラーとなり（ステップ８０６）、成功した場合には、退避ファイル７から前記指定されたジョブＩＤに対応するジョブエントリテーブル２００bとプロセスグループエントリテーブル２０５bを取出してジョブ課金情報格納領域８ｂに設定し（ステップ８０７）、ジョブエントリテーブル２００ｂにリンクする全プロセスグループエントリテーブル２０５ｂについて、そのプロセスグループ中間課金情報２０９ｂをプロセスグループ累計課金情報２１０ｂに加算した後にプロセスグループ中間課金情報２０９ｂを「０」にクリアする処理をそれぞれ行う（ステップ８０８）。
そして、ジョブ内の全プロセスの実行を再開してリスタート完了メッセージを出力する（ステップ８０９）。
【００５７】
図９は本実施形態のジョブ内プロセス終了処理の処理手順を示すフローチャートである。図９ではジョブ内でプロセスが終了した際の動作を表しており、プロセス終了処理部１０２は、ジョブ２内のプロセスが終了する毎にそのプロセスのシステム使用資源量から課金情報を生成してジョブ課金情報格納領域８内に格納する処理を行う。
【００５８】
ジョブ内のプロセスが終了するとオペレーティングシステム１のプロセス終了処理部１０２は、まず、終了プロセスのジョブＩＤに一致するジョブＩＤ２０１を持つジョブエントリテーブル２００をジョブ課金情報格納領域８から検索する（ステップ９００）。終了プロセスのジョブＩＤと同一ジョブＩＤのジョブエントリテーブル２００がなかった場合にはシステムエラーになり（ステップ９０１）、同一のジョブエントリテーブル２００ａがあった場合にはステップ９０２へ進む。
【００５９】
そして、その終了プロセスの属するプロセスグループのＩＤに一致するプロセスグループＩＤ２０７を持つプロセスグループエントリテーブル２０５を検索する（ステップ９０２）。ここで、前記終了プロセスのプロセスグループＩＤは、プロセスグループを形成する複数のプロセスの親子関係等の情報と各プロセスのプロセスＩＤとを示すプロセス管理情報を格納したプロセス管理テーブルを参照し、親子関係の最上位のプロセスのプロセスＩＤを検索することにより得られるものとする。
【００６０】
同一プロセスグループＩＤのプロセスグループエントリテーブルがなかった場合は、システムエラーになり（ステップ９０３）、あった場合は、その終了プロセスのシステム使用資源量からプロセス課金を算出して課金レコードを課金ファイル１０に書き込んだ後（ステップ９０４）に、同一プロセスグループＩＤのプロセスグループエントリテーブル２０５のプロセスグループ中間課金情報２０９に前記算出したプロセス課金を加算する（ステップ９０５）。
【００６１】
次に、プロセスＩＤ予約ファイル１２から前記終了プロセスのプロセスＩＤを削除してその終了プロセスの予約を解除する（ステップ９０６）。そして、当該終了プロセスがプロセスグループ内で最後のプロセスであるかどうかを判定し（ステップ９０７）、最後のプロセスであった場合にはプロセスグループエントリテーブル２０５のステータス２０８を全プロセス終了済みにする（ステップ９０８）。そして、そのプロセスグループエントリテーブル２０５のプロセスグループ累計課金情報２１０にプロセスグループ中間課金情報２０９を加算する（ステップ９０９）。その後、当該ジョブに一致するジョブＩＤで発行されたジョブ終了待ちシステムコールを受け付けてプロセスグループの終了を待っているジョブ終了処理部１０５にプロセスグループの終了を通知する。また、課金ファイル１０にもプロセスグループ累計課金情報２１０を書き込む（ステップ９１０）。
【００６２】
前記の様に本実施形態では、チェックポイントの際には、ジョブＩＤ、プロセスＩＤやプロセス管理情報を含むジョブ構成情報とジョブＩＤ及びプロセスグループＩＤに対応付けられた課金情報とを退避しておき、リスタートの際には、チェックポイント時と同じジョブＩＤ、プロセスＩＤ及びプロセスグループでジョブを回復すると共に前記ジョブＩＤ及びプロセスグループＩＤに対応付けられた課金情報を回復することにより、チェックポイントまでの課金情報とリスタート後の課金情報とを同一のジョブＩＤ及びプロセスグループＩＤで識別してジョブの課金を行うので、ジョブをどのチェックポイントからリスタートした場合でもジョブ開始からの一貫した課金情報を正確かつ効率的に得ることができる。
【００６３】
以上説明した様に本実施形態のチェックポイントリスタートジョブ課金装置によれば、チェックポイント時に退避した課金情報をリスタート時に回復してジョブの課金を行うので、チェックポイントリスタート機能によりシステム障害発生時にジョブの再実行を行った場合でもジョブ開始からジョブ終了までの一貫した課金情報によりジョブの課金を行うことが可能である。
【図面の簡単な説明】
【００６４】
【図１】本実施形態のチェックポイントリスタートジョブ課金装置のシステム構成を示す図である。
【図２】本実施形態のジョブ内でプロセスグループを管理するテーブルの例を示す図である。
【図３】本実施形態のジョブ投入からチェックポイント採取までの詳細を示す図である。
【図４】本実施形態のジョブリスタートからジョブ課金通知までの詳細を示す図である。
【図５】本実施形態のジョブＩＤ登録処理の処理手順を示すフローチャートである。
【図６】本実施形態のプロセスグループ終了待ち処理の処理手順を示すフローチャートである。
【図７】本実施形態のチェックポイント処理の処理手順を示すフローチャートである。
【図８】本実施形態のリスタート処理の処理手順を示すフローチャートである。
【図９】本実施形態のジョブ内プロセス終了処理の処理手順を示すフローチャートである。
【符号の説明】
【００６５】
１…オペレーティングシステム、２…ジョブ、３…プロセスグループ、４…プロセス、５…チェックポイント情報格納領域、６…外部記憶装置、７…退避ファイル、８…ジョブ課金情報格納領域、９…外部記憶装置、１０…課金ファイル、１１…ジョブ管理ソフトウェア、１０１…ジョブＩＤ登録処理部、１０２…プロセス終了処理部、１０３…チェックポイント処理部、１０４…リスタート処理部、１０５…ジョブ終了処理部、２００…ジョブエントリテーブル、２０１…ジョブＩＤ、２０２…プロセスグループ情報リスト領域アドレス、２０３…ジョブ中間課金情報、２０４…ジョブ累計課金情報、２０５…プロセスグループエントリテーブル、２０６…ＮＥＸＴエントリアドレス、２０７…プロセスグループＩＤ、２０８…ステータス、２０９…プロセスグループ中間課金情報、２１０…プロセスグループ累計課金情報、１２…プロセスＩＤ予約ファイル
【図１】
2006031067.tif 000003
【図２】
2006031067.tif 000004
【図３】
2006031067.tif 000005
【図４】
2006031067.tif 000006
【図５】
2006031067.tif 000007
【図６】
2006031067.tif 000008
【図７】
2006031067.tif 000009
【図８】
2006031067.tif 000010
【図９】
2006031067.tif 000011