(57)【特許請求の範囲】
【請求項１】
中央処理装置割り当ての対象となるプロセスを生成し、前記プロセス実行中にチェックポイント要求を受け付け前記プロセスの処理を中断し、リスタート要求を受け付けると、前記プロセスの処理を再開するチェックポイント・リスタート装置であって、
前記プロセスに割り当てられていた中断時のプロセス識別子と、前記プロセスを再開可能な状態に保持する情報とを保持するチェックポイントファイルと、
前記チェックポイント要求を受け付けたときに、前記チェックポイントファイルを生成するチェックポイントファイル生成部と、
前記プロセスが再開したときに割り当てられる再開時のプロセス識別子と、前記中断時のプロセス識別子とを対応づけるプロセス識別子変換テーブルと、
前記リスタート要求を受け付けたときに、前記チェックポイントファイルに基づいて、前記プロセスを再開させ、前記プロセス識別子変換テーブルを生成するリスタート処理部と、
再開したプロセスがシステムコールを処理する場合、前記プロセス識別子変換テーブルに基づいて、前記中断時のプロセス識別子と前記再開時のプロセス識別子とを変換するプロセス識別子変換部と、を備え、
前記チェックポイントファイル生成部は、前記中断時のプロセス識別子を開放し、
前記再開したプロセスは、新たに前記再開のプロセス識別子が割り当てられ、
前記リスタート処理部は、前記再開するプロセスの内部処理では、前記中断時のプロセス識別子を用いて処理を実行するように再開させ、
前記プロセス識別子変換部は、前記再開したプロセスから前記中断時のプロセス識別子を前記システムコールの引数として受け取り、受け取った引数を前記再開時のプロセス識別子に変換して前記システムコールの処理を実施させ、前記再開時のプロセス識別子を前記システムコールの処理の返却値として受け取り、受け取った返却値を前記中断時のプロセス識別子に変換して前記再開したプロセスへ出力するチェックポイント・リスタート装置。
【請求項２】
中央処理装置割り当ての対象となるプロセスを生成し、前記プロセス実行中にチェックポイント要求を受け付け前記プロセスの処理を中断し、リスタート要求を受け付けると、前記プロセスの処理を再開するチェックポイント・リスタート装置であり、
前記プロセスに割り当てられていた中断時のプロセス識別子と、前記プロセスを再開可能な状態に保持する情報とを保持するチェックポイントファイルと、
前記チェックポイント要求を受け付けたときに、前記チェックポイントファイルを生成するチェックポイントファイル生成部と、
前記プロセスが再開したときに割り当てられる再開時のプロセス識別子と、前記中断時のプロセス識別子とを対応づけるプロセス識別子変換テーブルと、
前記リスタート要求を受け付けたときに、前記チェックポイントファイルに基づいて、前記プロセスを再開させ、前記プロセス識別子変換テーブルを生成するリスタート処理部と、
再開したプロセスがシステムコールを処理する場合、前記プロセス識別子変換テーブルに基づいて、前記中断時のプロセス識別子と前記再開時のプロセス識別子とを変換するプロセス識別子変換部と、を備える、前記チェックポイント・リスタート装置が実行するチェックポイント・リスタート方法において、
前記チェックポイントファイル生成部が、前記中断時のプロセス識別子を開放し、
前記再開したプロセスは、新たに前記再開のプロセス識別子が割り当てられ、
前記リスタート処理部が、前記再開するプロセスの内部処理では、前記中断時のプロセス識別子を用いて処理を実行するように再開させ、
前記プロセス識別子変換部が、前記再開したプロセスから前記中断時のプロセス識別子を前記システムコールの引数として受け取り、受け取った引数を前記再開時のプロセス識別子に変換して前記システムコールの処理を実施させ、前記再開時のプロセス識別子を前記システムコールの処理の返却値として受け取り、受け取った返却値を前記中断時のプロセス識別子に変換して前記再開したプロセスへ出力するチェックポイント・リスタート方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおけるプロセス識別子の保証に関する。特に、チェックポイント／リスタート機能を提供する環境においてリスタート対象となったプロセス識別子の保証に関する。
【背景技術】
【０００２】
チェックポイント・リスタート機能を有する基本ソフトウェアとして、特許文献１にチェックポイント採取の際にプロセス識別子を予約する方式が開示されている。この技術では、チェックポイントファイルからリスタートする際に、チェックポイント採取時と同じプロセス識別子が割り当てられるように、そのプロセス識別子を他のプロセスが使用できないように予約していた。
【０００３】
しかしながら、チェックポイント採取時に予約したプロセス識別子がいつの時点で不要になったかが自動的にはわからなかった。このため、管理者や利用者によって不要になったプロセス識別子を明示的に開放する必要があった。また、同時に予約されたプロセス識別子でプロセス識別子が枯渇しないようにチェックポイント数の制限値を設けていた。このため、制限値以上のチェックポイントの採取ができなかったり、チェックポイント数が制限値に到達しないように、予約されたプロセス識別子を使わなくなった時点でプロセス識別子の予約を開放する必要があった。
【０００４】
このように、プロセス識別子を予約することによってプロセス識別子を保証するため、プロセス識別子を有効に利用できないという問題があった。また、運用において開放作業が必要になるという問題点があった。
【０００５】
また、別の方式では、リスタート時に当該プロセス識別子が他のプロセスによって使用中である場合には、リスタートに失敗してしまうため、チェックポイントファイルからのリスタートが確実に行えなかった。
【特許文献１】特開平６−２３０９８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、このような事情に鑑みてなされたものであり、プロセス識別子を仮想化し、プロセス識別子を有効に利用してプロセスのリスタートを確実にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るチェックポイント・リスタート装置の一態様は、中央処理装置割り当ての対象となるプロセスを生成し、前記プロセス実行中にチェックポイント要求を受け付け前記プロセスの処理を中断し、リスタート要求を受け付けると、前記プロセスの処理を再開するチェックポイント・リスタート装置であって、前記プロセスに割り当てられていた中断時のプロセス識別子と、前記プロセスを再開可能な状態に保持する情報とを保持するチェックポイントファイルと、前記チェックポイント要求を受け付けたときに、前記チェックポイントファイルを生成するチェックポイントファイル生成部と、前記プロセスが再開したときに割り当てられる再開時のプロセス識別子と、前記中断時のプロセス識別子とを対応づけるプロセス識別子変換テーブルと、前記リスタート要求を受け付けたときに、前記チェックポイントファイルに基づいて、前記プロセスを再開させ、前記プロセス識別子変換テーブルを生成するリスタート処理部と、再開したプロセスがシステムコールを処理する場合、前記プロセス識別子変換テーブルに基づいて、前記中断時のプロセス識別子と前記再開時のプロセス識別子とを変換するプロセス識別子変換部と、を備える。
【０００８】
また、本発明に係るチェックポイント・リスタート方法の一態様は、中央処理装置割り当ての対象となるプロセスを生成し、前記プロセス実行中にチェックポイント要求を受け付け前記プロセスの処理を中断し、リスタート要求を受け付けると、前記プロセスの処理を再開するチェックポイント・リスタート方法であって、前記チェックポイント要求を受け付けたときに、前記プロセスに割り当てられていた中断時のプロセス識別子と、前記プロセスを再開可能な状態に保持する情報とを保持するチェックポイントファイルを生成し、前記リスタート要求を受け付けたときに、前記チェックポイントファイルに基づいて、前記プロセスを再開させ、前記プロセスが再開したときに割り当てられる再開時のプロセス識別子と、前記中断時のプロセス識別子とを対応づけるプロセス識別子変換テーブルを生成し、再開したプロセスがシステムコールを処理する場合、前記プロセス識別子変換テーブルに基づいて、前記中断時のプロセス識別子と前記再開時のプロセス識別子とを変換する。
【発明の効果】
【０００９】
本発明によれば、プロセス識別子を仮想化することによって、プロセス識別子を有効に利用してプロセスのリスタートを確実にすることが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明を省略する。
【００１１】
大規模科学技術計算などでは、プログラムの実行が数日間や数週間におよぶ場合がある。このようなプログラムの実行において、実行の途中で計算機などの障害が発生すると、それまでの実行が無駄になってしまい、また最初からプログラムの実行を開始しなければならない。この問題を解決するため、プログラムの実行の再開が可能となるように、ファイルなどにプログラムの状態を保存しておくチェックポイント機能と、このチェックポイントからプログラムの実行を再開するリスタート機能が必要となる。
【００１２】
このような、チェックポイント・リスタート機能の実装において、チェックポイント採取時のプロセス識別子とリスタート後のプロセス識別子が同じでないとリスタート後のプロセスの動作が保証できない場合がある。
【００１３】
本発明の好適な実施形態は、チェックポイント・リスタート機能を備えるコンピュータシステムにおいて、プロセスがリスタートした際に、チェックポイント時と同じプロセス識別子があたかも割り当てられたが如く動作するようにプロセス識別子の仮想化を行うことで、チェックポイント数を制限することなく、確実にチェックポイント・リスタートを可能にするものである。以下に詳細を説明する。
【００１４】
（実施形態１）
図１は、本発明に係る実施形態１のチェックポイント・リスタート装置の構成例を示す図である。チェックポイント・リスタート装置は、中央処理装置（ＣＰＵ）割り当ての対象となるプロセスを生成し、前記プロセス実行中にチェックポイント要求を受け付け前記プロセスの処理を中断し、リスタート要求を受け付けると、前記プロセスの処理を再開する機能を有する。図１を参照すると、本実施形態のチェックポイント・リスタート装置は、プロセス生成部１、チェックポイントファイル生成部２、チェックポイントファイル３、リスタート処理部４、プロセス識別子変換テーブル５、プロセス識別子変換部６、及び、システムコール処理部７を備える。
【００１５】
プロセス生成部１は、中央処理装置割り当ての対象となるプロセスを生成する。図１では、プロセス生成部１がプロセス１０を生成した状態を示している。プロセス１０は、チェックポイント・リスタートを行う対象となる。
【００１６】
チェックポイントファイル生成部２は、チェックポイント要求を受け付けたときに、チェックポイント採取を行い、チェックポイントファイル３を生成する。具体的には、チェックポイントファイル生成部は、プロセス１０の状態を再度実施可能な状態にフリーズし、プロセス１０に割り当てられていた中断時のプロセス識別子を含む、再開に必要な情報をチェックポイントファイル３へ格納する。プロセス１０を中断させたとき、プロセス１０に割り当てられていたプロセス識別子（中断時のプロセス識別子）は、開放され、他のプロセスに割り当てることができるようになる。
【００１７】
チェックポイントファイル３は、中断時のプロセス識別子と、前記プロセスを再開可能な状態に保持する情報とを保持する記憶領域である。図２にチェックポイントファイル３の構成例を示す。図２では、複数のプロセスについて格納できる領域を有するファイル例を示したが、プロセス毎に一つずつファイルを生成してもよい。
【００１８】
リスタート処理部４は、リスタート要求を受け付けたときに、チェックポイントファイル３に基づいて、リスタートプロセス２０を生成し、中断したプロセス１０をリスタートプロセス２０として再開させる機能と、プロセス識別子変換テーブル５を生成する機能とを備える。リスタートプロセス２０には、中断時のプロセス識別子とは別に、新たにリスタートプロセス２０へ再開時のプロセス識別子が割り当てられる。リスタート処理部４は、リスタートプロセス２０の内部処理では、中断時のプロセス識別子を用いて処理を実行するように再開させる。また、中断時のプロセス識別子と再開時のプロセス識別子とを対応づけて、プロセス識別子変換テーブル５へ格納する。
【００１９】
プロセス識別子変換テーブル５は、再開時のプロセス識別子と、中断時のプロセス識別子とを対応づける記憶領域である。図３にプロセス識別子変換テーブル５の構成例を示す。図３では、複数のプロセスについて格納できる領域を有するテーブル例を示したが、プロセス毎に一つずつテーブルを生成してもよい。
【００２０】
プロセス識別子変換部６は、再開したリスタートプロセス２０がシステムコールを処理する場合、プロセス識別子変換テーブル５に基づいて、中断時のプロセス識別子と再開時のプロセス識別子とを変換する。すなわち、プロセス識別子変換部６は、リスタートプロセス２０からのシステムコール要求においてプロセス識別子の仮想化を行う。具体的には、プロセス識別子変換部６は、リスタートプロセス２０がシステムコール要求を発行する際やシステムコール要求の返却値を返却する処理において、その引数や返却値にプロセス識別子が使用されているかどうかを調べ、プロセス識別子が使用されている場合には、プロセス識別子変換テーブル５を参照して、プロセス識別子の変換を行う機能を備える。
【００２１】
システムコール処理部７は、システムコール要求によって要求された処理を行い、結果を返却する機能を備える。本実施形態では、システムコールは、リスタートプロセス２０から直接呼び出すのではなく、プロセス識別子変換部６を介して呼び出され、返却値についても、プロセス識別子変換部６を介してリスタートプロセス２０へ返却されることになる。なお、チェックポイント・リスタート装置において、システムコールは、プロセス１０の場合も含め、すべてのプロセスにおいてプロセス識別子変換部６を介して呼び出される構成にしてもよい。プロセス識別子変換部６は、プロセス識別子変換テーブルを参照し、登録されているプロセスであるか否かを毎回確認することによって、プロセス識別子の変換が必要であるか否かを判断することができる。
【００２２】
図１に示すチェックポイント・リスタート装置の動作の概略は次のようになる。プロセス１０はチェックポイントファイル生成部２によってチェックポイントファイル３が生成される。この際、チェックポイントファイル３にはプロセス識別子の情報も同時に保存しておく。このチェックポイントファイル３を使用してリスタート処理部４がリスタート処理を行う際に、チェックポイントファイル３に保存しておいたプロセス識別子とリスタート時に新たに割り当てられたプロセス識別子の情報をもとにプロセス識別子変換テーブル５を作成しておく。リスタート処理部４によって、リスタートされたリスタートプロセス２０がプログラムを実行中、システムコールを発行した際に、プロセス識別子変換部６によって引数や返却値にプロセス識別子が指定されているかどうかを判別する。もしプロセス識別子を使用している場合、システムコール処理部７に要求を発行したり、システムコール処理部７からの返却値をリスタートプロセス２０に返却する際に、プロセス識別子変換テーブル５を参照して、プロセス識別子の仮想化を行う。
【００２３】
次に、図１、図４を参照して本実施例の動作について詳細に説明する。図４は、本実施形態のチェックポイント・リスタート装置の動作例を示すフローチャートである。まず、プロセス生成部１は、プロセス１０を生成し、プロセス１０の実行が開始される（Ｓ１１）。プロセス１０は、利用者からの要求（チェックポイント要求）などによって処理が中断され（Ｓ１２）、チェックポイントファイル生成部２は、後でプログラムの実行の再開ができるようにチェックポイントファイル３を生成する（Ｓ１３）。この時、プロセス１０のプロセス識別子が１００であった場合、チェックポイントファイル生成部２はチェックポイントファイル３にプロセス識別子が１００であったという情報も格納しておく（図２参照）。
【００２４】
後に利用者がプロセス１０の実行の再開を要求すると（Ｓ１４）、リスタート処理部４は、リスタートの要求を受け付け、チェックポイントファイル３から以前実行していた時のプロセス識別子（中断時のプロセス識別子、ここでは１００）の情報を取得する。リスタートプロセス２０にリスタート時に新たに割り当てられたプロセス識別子（再開時のプロセス識別子、ここでは２００とする）の情報とともに、中断時のプロセス識別子をプロセス識別子変換テーブル５に登録する（Ｓ１５）。リスタートプロセス２０が処理の実行を開始する（Ｓ１６）。
【００２５】
リスタートプロセス２０がシステムコールを発行する際に（Ｓ１７でＹＥＳ）、プロセス識別子変換部６は、そのシステムコールの引数や返却値にプロセス識別子があるかどうかを調べ、もし引数や返却値にプロセス識別子が含まれている場合、プロセス識別子変換テーブル５を参照し、プロセス識別子の変換を行い、システムコール処理部７によってシステムコールを処理させる（Ｓ１８）。例えば、リスタートプロセス２０が、自プロセス識別子を調べるｇｅｔｐｉｄ（）システムコールを発行する場合を説明する。プロセス識別子変換部６は、当該システムコールが引数にプロセス識別子を含まないため、その要求をそのままシステムコール処理部７に渡す。システムコール処理部７は当該プロセスのプロセス識別子である２００をプロセス識別子変換部に返却する。プロセス識別子変換部６は、プロセス識別子変換テーブル５を参照し、実際には２００であるプロセス識別子は、チェックポイント採取時（チェックポイントファイル生成時）の１００に変換する必要があると判断し、リスタートプロセスには１００が返却されるように変換する。リスタートプロセス２０の処理が終了するまで（Ｓ１９でＹＥＳ）、ステップＳ１６からＳ１９までの処理を繰り返す。
【００２６】
（その他の実施形態）
実施形態１では、プロセスがシステムコールを発行する場合に、プロセス識別子の仮想化を行う場合を一例として説明した。システムコールの他に、外部プログラムを参照する場合についても、プロセス識別子を引数、あるいは返却値として用いる場合に、実施形態１と同様にプロセス識別子の仮想化を行う。
【００２７】
本発明の好適な実施形態によれば、次のような効果を奏する。第一の効果として、プロセス識別子を予約する機能を必要とせず、そのためプロセス識別子の予約数の増加によるプロセス識別子の枯渇の心配がなく運用できる。また、管理者などが定期的に予約されたプロセス識別子を開放する処理の必要がなくなる。これは、プロセス識別子の予約をすることなく、チェックポイント採取時と同一のプロセス識別子が割り当てられたようにリスタートプロセスが振舞うことができるからである。
【００２８】
また、第２の効果として、確実にチェックポイント採取を実施することができる。これは、プロセス識別子の予約の必要がないため、チェックポイントの数に制限値を設ける必要がないためである。
【００２９】
第３の効果として、プロセス識別子の予約機能を有していない場合でも、同一のプロセス識別子を失敗することなく割り当てることができるため、効率的にリスタート処理することができる。これは、チェックポイント採取時のプロセス識別子の値にかかわらず、リスタート時点で利用可能な任意のプロセス識別子を割り当てることができるためである。
【００３０】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【００３１】
【図１】本発明に係る実施形態１のチェックポイント・リスタート装置の構成例を示す図である。
【図２】チェックポイントファイルの構成例を示す図である。
【図３】プロセス識別子変換テーブルの構成例を示す図である。
【図４】実施形態１のチェックポイント・リスタート装置の動作例を示すフローチャートである。
【符号の説明】
【００３２】
１  プロセス生成部
２  チェックポイントファイル生成部
３  チェックポイントファイル
４  リスタート処理部
５  プロセス識別子変換テーブル
６  プロセス識別子変換部
７  システムコール処理部７
１０  プロセス
２０  リスタートプロセス
【図１】
0004992745.tif 000002
【図２】
0004992745.tif 000003
【図３】
0004992745.tif 000004
【図４】
0004992745.tif 000005