(57)【要約】【課題】チェックポイント時のプロセスＩＤをリスタート時に用いるソフトウェアを任意の計算機で実行する。【解決手段】計算機１０１上でＯＳ１２１を実行し、ＯＳ１２１上で実行するプロセス１１１にプロセスＩＤ１１２を割り当てるプロセス管理方法において、ＯＳ１２１の起動時に、プロセスＩＤ１１２を格納する領域を計算機１０１の記憶装置上に設定する処理と、前記領域を第１の領域と、第２の領域に分割する処理と、前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する処理と、ＯＳ１２１がプロセス１１１を生成する際に、予め設定されたプロセスに対して前記第２の領域のプロセスＩＤを割り当て、他のプロセスに対しては前記第１の領域のプロセスＩＤを割り当てる処理と、を含む。【選択図】図１
2008046889.tif 000002
【特許請求の範囲】
【請求項１】
計算機上でオペレーティングシステムを実行し、前記オペレーティングシステム上で実行するプロセスにプロセスＩＤを割り当てるプロセス管理方法において、
前記オペレーティングシステムの起動時に、前記プロセスＩＤを格納する領域を計算機の記憶装置上に設定する処理と、
前記領域を第１の領域と、第２の領域に分割する処理と、
前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する処理と、
前記オペレーティングシステムがプロセスを生成する際に、予め設定されたプロセスに対して前記第２の領域のプロセスＩＤを割り当て、他のプロセスに対しては前記第１の領域のプロセスＩＤを割り当てる処理と、
を含むことを特徴とするプロセス管理方法。
【請求項２】
前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する処理は、
予め設定した連続する値を、前記１の領域と第２の領域で分割し、前記第１のプロセスＩＤと前記第２のプロセスＩＤとをそれぞれ連続する値に設定することを特徴とする請求項１に記載のプロセス管理方法。
【請求項３】
前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する処理は、
予め設定した連続する値について、前記第１のプロセスＩＤまたは前記第２のプロセスＩＤの一方を割り当てたことを特徴とする請求項１に記載のプロセス管理方法。
【請求項４】
前記計算機は複数の計算機を含んで構成され、
前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する処理は、
前記第２のプロセスＩＤを、前記計算機毎に予め割り当てることを特徴とする請求項１に記載のプロセス管理方法。
【請求項５】
前記プロセスＩＤを格納する領域を計算機の記憶装置上に設定する処理は、
前記オペレーティングシステムの起動時に引数を付与し、この引数に基づいて前記領域を設定することを特徴とする請求項１に記載のプロセス管理方法。
【請求項６】
前記プロセスＩＤを格納する領域を計算機の記憶装置上に設定する処理は、
前記オペレーティングシステムの起動時に読み込む情報を指令し、この情報に基づいて前記領域を設定することを特徴とする請求項１に記載のプロセス管理方法。
【請求項７】
前記プロセスＩＤを割り当てる処理は、
前記生成するプロセスに前記プロセスＩＤが指定されている場合には、前記第２のプロセスＩＤとして前記指定されたプロセスＩＤを当該プロセスに割り当てることを特徴とする請求項１に記載のプロセス管理方法。
【請求項８】
前記プロセスＩＤを割り当てる処理は、
前記生成するプロセスが、予め設定したライブラリを参照している場合には、前記第２のプロセスＩＤを当該プロセスに割り当てることを特徴とする請求項１に記載のプロセス管理方法。
【請求項９】
前記プロセスＩＤとして前記第２のプロセスＩＤが設定されたプロセスについて、予め設定されたタイミングで当該プロセスの実行状態を保存する処理をさらに含むことを特徴とする請求項１に記載のプロセス管理方法。
【請求項１０】
前記計算機は複数の計算機を含んで構成され、
前記保存された実行状態に基づいて、前記プロセスを再開する処理をさらに含み、
前記プロセスＩＤを割り当てる処理は、
前記保存された実行状態に含まれるプロセスＩＤを、前記第２のプロセスＩＤに含む計算機を前記複数の計算機から検索する処理と、
前記実行状態に含まれるプロセスＩＤを、前記第２のプロセスＩＤに含む計算機に、当該プロセスの実行を指令する処理と、
を含むことを特徴とする請求項９に記載のプロセス管理方法。
【請求項１１】
前記実行状態に含まれるプロセスＩＤを、前記第２のプロセスＩＤに含む計算機に当該プロセスの実行を指令する処理は、
前記計算機で、前記実行状態に含まれるプロセスＩＤが使用中の場合には、当該プロセスの終了をまって、前記計算機に当該プロセスの実行を指令することを特徴とする請求項１０に記載のプロセス管理方法。
【請求項１２】
前記実行状態に含まれるプロセスＩＤを、前記第２のプロセスＩＤに含む計算機に当該プロセスの実行を指令する処理は、
前記計算機で、前記実行状態に含まれるプロセスＩＤが使用中の場合には、当該プロセスの実行状態を保存して終了させ、前記計算機に当該プロセスの実行を指令することを特徴とする請求項１０に記載のプロセス管理方法。
【請求項１３】
前記オペレーティングシステムの起動後に、前記プロセスＩＤを格納する領域の変更指令を受け付ける処理と、
前記受け付けた変更指定に基づいて、前記設定された第１の領域または第２の領域を変更する処理と、
をさらに含むことを特徴とする請求項１に記載のプロセス管理方法。
【請求項１４】
計算機上でオペレーティングシステムを実行し、前記オペレーティングシステム上で実行するプロセスにプロセスＩＤを割り当てるプログラムであって、
前記オペレーティングシステムの起動時に、前記プロセスＩＤを格納する領域を計算機の記憶装置上に設定する手順と、
前記領域を第１の領域と、第２の領域に分割する手順と、
前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する手順と、
前記オペレーティングシステムがプロセスを生成する際に、予め設定されたプロセスに対して前記第２の領域のプロセスＩＤを割り当て、他のプロセスに対しては前記第１の領域のプロセスＩＤを割り当てる手順と、
を計算機に実行させることを特徴とするプログラム。
【請求項１５】
前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する手順は、
予め設定した連続する値を、前記１の領域と第２の領域で分割し、前記第１のプロセスＩＤと前記第２のプロセスＩＤとをそれぞれ連続する値に設定することを特徴とする請求項１４に記載のプログラム。
【請求項１６】
前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する手順は、
予め設定した連続する値について、前記第１のプロセスＩＤまたは前記第２のプロセスＩＤの一方を割り当てたことを特徴とする請求項１４に記載のプログラム。
【請求項１７】
前記計算機は複数の計算機を含んで構成され、
前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する手順は、
前記第２のプロセスＩＤを、前記計算機毎に予め割り当てることを特徴とする請求項１４に記載のプログラム。
【請求項１８】
前記プロセスＩＤを格納する領域を計算機の記憶装置上に設定する手順は、
前記オペレーティングシステムの起動時に引数を受け付けて、この引数に基づいて前記領域を設定することを特徴とする請求項１４に記載のプログラム。
【請求項１９】
前記プロセスＩＤを格納する領域を計算機の記憶装置上に設定する手順は、
前記オペレーティングシステムの起動時に読み込む情報を受け付けて、この情報に基づいて前記領域を設定することを特徴とする請求項１４に記載のプログラム。
【請求項２０】
前記プロセスＩＤを割り当てる手順は、
前記生成するプロセスに前記プロセスＩＤが指定されている場合には、前記第２のプロセスＩＤとして前記指定されたプロセスＩＤを当該プロセスに割り当てることを特徴とする請求項１４に記載のプログラム。
【請求項２１】
前記プロセスＩＤを割り当てる手順は、
前記生成するプロセスが、予め設定したライブラリを参照している場合には、前記第２のプロセスＩＤを当該プロセスに割り当てることを特徴とする請求項１４に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行中のソフトウェアのチェックポイントで実行状態を生成して記憶し、ソフトウェアのリスタート時に記憶しておいたチェックポイントの実行状態を利用する計算機システムに関し、特に、オペレーティングシステムでチェックポイント及びリスタート機能を提供する計算機システムに関する。
【背景技術】
【０００２】
複数の計算機をネットワークなどで接続した並列計算機システムでは、長時間に渡る計算の実行を継続するために、チェックポイント／リスタート機能を備えたものが知られている。チェックポイント／リスタート機能は、各計算機毎に実行中のプロセスの実行状態を定期的に保存しておき、計算機やＯＳ等に障害が発生したときなどに保存しておいた実行状態からプロセスの再開を可能にする技術である。
【０００３】
通常、プロセスには生成時に各計算機上で固有のプロセス識別子（プロセスＩＤ）が割り当てられ、プロセスの実行が終了するとプロセスＩＤは再利用される。このため、チェックポイント時のプロセスＩＤが別のプロセスへ割り当てられ、プロセスのリスタート時に同一のプロセスＩＤを割り当てることができない場合がある。プロセスによっては、実行時に自身のプロセスＩＤを記録して使用することがあるため、リスタート時に同一のプロセスＩＤを割り当てる手段が必要となる。
【０００４】
リスタート時に同一のプロセスＩＤを割り当てる技術としては、チェックポイントでプロセスＩＤを予約ファイルに登録しておき、リスタート時には予約ファイルからプロセスに対応するプロセスＩＤを取得して、リスタート時にチェックポイント時と同一のプロセスＩＤを保証する技術が知られている（例えば、特許文献１、２）。
【特許文献１】特開２００６−３１０６７号
【特許文献２】特開平６−２３０９８１号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記従来例では、障害が発生したときなどで、計算機を再起動してチェックポイントの記録からプロセスのリスタートを行う際には、当該プロセスが予約ファイルに登録したプロセスＩＤを使用し、他のプロセスが予約ファイルのプロセスＩＤを使用するのを禁止することで、チェックポイント時のプロセスＩＤをリスタート時に割り当てることを保証している。
【０００６】
上記従来例では同一の計算機でリスタート時にチェックポイント時のプロセスＩＤを割り当てることを保証することはできる。しかしながら、チェックポイントで実行状態を記録した計算機が故障した場合に、当該プロセスのリスタートを他の計算機で行うと、このプロセスが必要とするプロセスＩＤを保証することはできない。
【０００７】
つまり、他の計算機では起動するサービス（デーモン）等の違いによって、実行させようとするプロセスに必要となるプロセスＩＤが、既に他のサービスなどに割り当てられてしまう場合がある。このため、リスタート時にチェックポイント時と同一のプロセスＩＤを必要とするプロセスは、他の計算機でリスタートすることができない場合があった。特に、上記並列計算機システムやブレードサーバなど、複数のノード（計算機）を備えた計算機システムでは、ひとつのノード（計算機）に障害が発生しても、障害によって停止したプロセスを他のノードで実行することは可能であるが、障害が発生した計算機で割り当てられたプロセスＩＤまでは保証することはできなかった。
【０００８】
そこで本発明は、上記問題点に鑑みてなされたもので、チェックポイント時のプロセスＩＤをリスタート時に用いるソフトウェアを任意の計算機で実行することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、計算機上でオペレーティングシステムを実行し、前記オペレーティングシステム上で実行するプロセスにプロセスＩＤを割り当てるプロセス管理方法において、前記オペレーティングシステムの起動時に、前記プロセスＩＤを格納する領域を計算機の記憶装置上に設定する処理と、前記領域を第１の領域と、第２の領域に分割する処理と、前記第１の領域に第１のプロセスＩＤを設定し、前記第２の領域に第２のプロセスＩＤを設定する処理と、前記オペレーティングシステムがプロセスを生成する際に、予め設定されたプロセスに対して前記第２の領域のプロセスＩＤを割り当て、他のプロセスに対しては前記第１の領域のプロセスＩＤを割り当てる処理と、を含む。
【００１０】
さらに、前記プロセスＩＤとして前記第２のプロセスＩＤが設定されたプロセスについて、予め設定されたタイミングで当該プロセスの実行状態を保存する処理をさらに含む。
【発明の効果】
【００１１】
したがって、本発明は、プロセスＩＤを第１のプロセスＩＤと第２のプロセスＩＤの２つに分割し、予め設定したプロセスについてのみ第２のプロセスＩＤを割り当てる。予め設定したプロセスを再起動する際には、第２のプロセスＩＤを割り当てることを保証することができる。特に、プロセスＩＤを第１のプロセスＩＤと第２のプロセスＩＤの２つに分割した計算機間では、他の計算機でも保存された実行状態のプロセスＩＤを第２のプロセスＩＤで割り当ててプロセスの再起動を行うことができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１３】
図１は、第１の実施形態を示し、本発明を適用する計算機システムのブロック図である。本発明を適用する計算機システム１は、複数の計算機１０１、１０１−２〜ｎをネットワーク１０３で接続し、各計算機間で相互に通信可能となっている。ネットワーク１０３にはストレージ装置１４０が接続されており、このストレージ装置１４０は各計算機１０１、１０１−２〜１０１−ｎから読み書き可能な共有ストレージ装置として機能する。なお、計算機同士とストレージ装置１４０の接続はネットワーク１０３に代わって、バスやスイッチで構成することができる。また、ネットワーク１０３には計算機システム１の各計算機１０１、１０１−２〜１０１−ｎに対して設定を行ったり、各計算機１０１〜１０１−ｎに実行させるプロセス（プログラム）を指示するための管理コンソール（または管理端末）１５０が接続される。また、各計算機１０１、１０１−２〜ｎ間には並列処理の同期を行うために、図示はしないが、バリア同期装置を備えても良い。
【００１４】
各計算機１０１、１０１−２〜１０１−ｎは、それぞれＣＰＵ２とメモリ３を備えて、オペレーティングシステム（以下、ＯＳ）１２１とプロセス１１１及びチェックポイント生成ライブラリ１３０を実行する。なお、各計算機１０１〜１０１−ｎでは、任意の数（図中ｎ個）のプロセス１１１−ｎを実行することができる。
【００１５】
次に、各計算機で実行されるソフトウェアについて、以下に説明する。なお、計算機１０１、１０１−２〜１０１−ｎは同様の構成であるので、以下では計算機１０１のみについて説明し、他の計算機１０１−２〜１０１−ｎの説明は省略する。
【００１６】
図１において、ＯＳ１２１上で実行されるプロセス１１１は、後述するチェックポイント機能を利用するアプリケーションソフトウェアを示しており、各プロセス１１１は、ＯＳ１２１から割り当てられた識別子としてのプロセスＩＤ１１２と、使用するメモリ３のアドレス領域など計算機１０１のリソースの割り当てを含む実行状態１１３を有する。
【００１７】
チェックポイント生成ライブラリ１３０は、プロセス１１１の実行状態を定期的に保存するチェックポイント機能を提供する。チェックポイント機能は、予め指定されたタイミングでプロセス１１１の実行状態をストレージ装置１４０に保存する。チェックポイント機能を利用するプロセス１１１は、管理コンソール１５０からタスク（またはジョブ）を投入する際に、チェックポイント機能を利用する指定を予め設定されたものである。また、チェックポイント機能を実行するタイミングはタスクの投入時などにコンソール１５０が設定するものとし、例えば、チェックポイントを実行する周期（例えば、数分）を設定する。チェックポイント生成ライブラリ１３０は、コンソール１５０からの指定のあったプロセス１１１のみについてチェックポイント機能を実行し、その他のプロセスについてはチェックポイント機能を実行しない。
【００１８】
チェックポイント生成ライブラリ１３０は、コンソール１５０から指定されたタスクのプロセス１１１について、所定のタイミングになる度にプロセス１１１の実行状態をストレージ装置１４０に実行状態退避ファイル１０２として保存する。実行状態退避ファイル１０２は、チェックポイント機能を実行する度に最新の実行状態が格納される。このとき、実行状態退避ファイル１０２は、最新の実行状態で上書きして良いし、新たなファイルとして作成しても良い。
【００１９】
ここで、実行状態退避ファイル１０２は、各計算機１０１〜１０１−ｎ毎に設定されており、並列処理を計算機１０１〜１０１−ｎで実行する場合では、一つのタスクを各計算機１０１〜１０１−ｎに割り当てて、各計算機１０１〜１０１−ｎのＯＳ１２１がプロセス１１１として実行し、各計算機１０１〜１０１−ｎのチェックポイント生成ライブラリ１３０がストレージ装置１４０の実行状態退避ファイル１０２〜ｎへ実行状態を書き込む。
【００２０】
ここで、プロセス１１１の実行状態退避ファイル１０２の内容は、実行状態１１３の内容などが含まれており、例えば、プロセスＩＤ１１２、プロセス名、レジスタ状態、実行した計算機のＩＤ（ＩＰアドレスなど）、プロセス１１１のメモリ空間、ファイルへのアクセス状態などが格納される。そして、チェックポイント生成ライブラリ１３０が生成した実行状態退避ファイル１０２は、後述のリスタート機能で利用される。
【００２１】
次に、ＯＳ１２１の機能のうち、チェックポイント機能とリスタート機能に関する部分について説明する。その他の機能については、公知のＯＳと同様の機能を備えるものである。
【００２２】
ＯＳ１２１は、実行する全てのプロセスにプロセスＩＤを割り当てるため、プロセスＩＤ領域指定モジュール１２２と、プロセスＩＤ割り当てモジュール１２３と、プロセスＩＤ領域分割モジュール１２４と、プロセスＩＤ割り当て管理テーブル１２５を備える。
【００２３】
プロセスＩＤ領域指定モジュール１２２は、ＯＳ１２１の起動時にメモリ３（またはストレージ装置１４０）上にプロセスＩＤを格納する領域を予約し、この領域にプロセスＩＤ割り当て管理テーブル１２５を設定する。プロセスＩＤ割り当て管理テーブル１２５は、後述するように、プロセスＩＤを予め設定したものでＯＳ１２１が予め設定したプロセスＩＤとプロセスＩＤ毎の割り当て状況を含む。
【００２４】
プロセスＩＤ領域分割モジュール１２４は、プロセスＩＤ領域指定モジュール１２２がメモリ３上に予約したプロセスＩＤ割り当て管理テーブル１２５のプロセスＩＤについて、チェックポイント機能を使用するプロセス１１１に割り当てるプロセスＩＤの領域と、チェックポイント機能を使用しないプロセスに割り当てるプロセスＩＤの領域に分割する。プロセスＩＤ領域分割モジュール１２４によって、メモリ３上のプロセスＩＤ割り当て管理テーブル１２５は、チェックポイント機能を利用するプロセス１１１に割り当てるプロセスＩＤの領域と、チェックポイント機能を利用しないプロセス（通常のプロセス）に割り当てるプロセスＩＤ領域の２つに分割される。
【００２５】
プロセスＩＤ割り当てモジュール１２３は、ＯＳ１２１が生成するプロセス１１１のプロセスＩＤ１１２を、チェックポイント機能の利用の有無に基づいて、プロセスＩＤ領域分割モジュール１２４が分割したプロセスＩＤ割り当て管理テーブル１２５からプロセスＩＤ１１２を後述するように割り当てる。
【００２６】
また、ＯＳ１２１は、プロセス１１１のリスタート機能を提供するプロセス再開制御モジュール１１０１を含む。プロセス再開制御モジュール１１０１は、後述するように、再開するプロセス１１１を実行可能な計算機を計算機システム１内で検索し、当該プロセス１１１にチェックポイントを生成した時点のプロセスＩＤ１１２を優先して割り当て、割り当てが成功した場合には実行させる。
【００２７】
次に、プロセス１１１にプロセスＩＤ１１２を割り当てる処理の詳細について、以下に詳述する。
【００２８】
＜プロセスＩＤ領域指定モジュール＞
図２は、プロセスＩＤ領域指定モジュール１２２の処理を示すフローチャートで、ＯＳ１２１の起動時に実行される。
【００２９】
プロセスＩＤ領域指定モジュール１２２は、ＯＳ１２１が起動するときに実行され、管理コンソール１５０から入力された引数に基づいて、メモリ３上の所定の領域をプロセスＩＤ割り当て管理テーブル１２５を読み込むために予約する（４０１）。引数は、管理コンソール１５０を操作する管理者などがＯＳ１２１を起動する際に入力するもので、プロセスＩＤ領域指定モジュール１２２は、この引数に対応するメモリ３上の領域（メモリ空間）を確保して終了する。本実施形態では、プロセスＩＤ領域指定モジュール１２２が、ＯＳ１２１に予め設定されたプロセスＩＤ１１２を、引数に応じて確保した領域へ書き込むものとする。プロセスＩＤ領域指定モジュール１２２の処理が完了すると、ＯＳ１２１はプロセスＩＤ領域分割モジュール１２４を起動する。プロセスＩＤ領域分割モジュール１２４は、プロセスＩＤ領域指定モジュール１２２が確保したメモリ３上の領域の大きさに合わせて、プロセスＩＤ割り当て管理テーブル１２５を設定する。
【００３０】
＜プロセスＩＤ管理テーブル＞
図３は、プロセスＩＤ割り当て管理テーブル１２５の一例を示す説明図である。プロセスＩＤ割り当て管理テーブル１２５は、ＯＳ１２１に予め設定されたプロセスＩＤ１１２の最小値から、上記図２のプロセスＩＤ領域指定モジュール１２２が確保したメモリ３上の領域に応じた最大値までを設定する。図３の例では、プロセスＩＤ１１２の最小値は「０」から開始され、メモリ３上の領域が許容する最大値「ｎ」までが設定される。
【００３１】
プロセスＩＤ割り当て管理テーブル１２５は、プロセスＩＤ１１２毎に一つのエントリを形成する。各エントリには、当該プロセスＩＤ１１２が既にプロセス１１１へ割り当てられたか否かを示す割り当て可否２０１の欄と、チェックポイント機能の利用の有無を判定するための領域指定の有無２０２の２つの設定欄を備えている。
【００３２】
領域指定有無２０２の欄は、プロセスＩＤ領域分割モジュール１２４によって、後述するように設定され、割り当て可否２０１の欄は、プロセスＩＤ割り当てモジュール１２３によって、後述するように設定される。図３の例では、プロセスＩＤ１１２が「３」以下の領域が、チェックポイント機能を利用しない「指定外領域」として設定され、プロセスＩＤ１１２が「４」以上領域が、チェックポイント機能を利用する「指定領域」として設定された例を示している。なお、指定外領域のプロセスＩＤ１１２が第１のプロセスＩＤであり、指定領域のプロセスＩＤ１１２が第２のプロセスＩＤである。
【００３３】
すなわち、プロセスＩＤ領域分割モジュール１２４は、メモリ３上に確保された領域のうち前半部をチェックポイント機能を利用しない指定外領域として設定し、後半部をチェックポイント機能を利用する指定領域に設定する。
【００３４】
＜プロセスＩＤ領域分割モジュール＞
プロセスＩＤ領域分割モジュール１２４は、上記図２のプロセスＩＤ領域指定モジュール１２２が終了した後に、ＯＳ１２１によって起動される。図４にプロセスＩＤ領域分割モジュール１２４で行われる処理の一例を示す。
【００３５】
プロセスＩＤ領域分割モジュール１２４は、プロセスＩＤ領域指定モジュール１２２が確保した領域に、ＯＳ１２１に予め設定されたプロセスＩＤ１１２の最小値から、領域の上限までのプロセスＩＤ１１２を備えたプロセスＩＤ割り当て管理テーブル１２５を設定し、指定領域と指定外領域に分割する。なお、確保したメモリ３上の領域が十分大きい場合には、プロセスＩＤ領域分割モジュール１２４は、ＯＳ１２１に予め設定された最小値から最大値までのプロセスＩＤ１１２を、プロセスＩＤ割り当て管理テーブル１２５に設定する。また、プロセスＩＤ領域分割モジュール１２４は、ＯＳ１２１に予め設定された指定外領域のプロセスＩＤ１１２の最大値を優先して確保した後に、指定外領域のプロセスＩＤ１１２を確保する。また、プロセスＩＤ１１２の最大値は、指定領域のプロセスＩＤ１１２の最大値に対応する。
【００３６】
ステップ６０１では、上記図２のプロセスＩＤ領域指定モジュール１２２で確保したメモリ３上の領域を取得する。また、プロセスＩＤ領域分割モジュール１２４は、ＯＳ１２１からプロセスＩＤ割り当て管理テーブル１２５のプロセスＩＤ１１２の最大値と、指定外領域の最大値とを取得する。
【００３７】
次に、ステップ６０２では、ＯＳ１２１に予め設定されたプロセスＩＤ１１２の指定領域の最大値が、メモリ３上の領域に設定可能なプロセスＩＤ１１２の最大値を超えているか否かを判定する。この判定は、メモリ３上の領域の容量と、ＯＳ１２１に設定されたプロセスＩＤ１１２の最小値から最大値までのプロセスＩＤ１１２を設定したときのプロセスＩＤ割り当て管理テーブル１２５の容量を比較することで行うことができる。
【００３８】
プロセスＩＤ１１２の最大値がメモリ３上の領域に収まらない場合には、ステップ６０３で管理コンソール１５０に警告を表示する。次にステップ６０４で、メモリ３上の領域からはみ出したプロセスＩＤ１１２を削除する。
【００３９】
次に、ステップ６０５では、チェックポイント機能を利用する指定領域のプロセスＩＤ１１２が、確保されたメモリ３上の領域に割り当て可能であるか否かを判定する。つまり、プロセスＩＤ領域指定モジュール１２２が確保したメモリ３上の領域が小さい場合には、図３に示したプロセスＩＤ１１２のうち、指定外領域のプロセスＩＤ１１２だけしか割り当てられない場合が生じる。このため、指定領域のプロセスＩＤ１１２が割り当てられるか否かを判定する。
【００４０】
メモリ３上に確保された領域に指定領域のプロセスＩＤ１１２が設定可能な場合には、ステップ６０６へ進む。ステップ６０６では、プロセスＩＤ領域分割モジュール１２４が、所定の指定外領域と指定領域のプロセスＩＤ１１２を備えたプロセスＩＤ割り当て管理テーブル１２５を確保されたメモリ３上の領域に設定する。そして、プロセスＩＤ領域分割モジュール１２４は、指定外領域のプロセスＩＤ１１２のエントリについては、プロセスＩＤ割り当て管理テーブル１２５の領域指定２０２に「無」を設定し、指定領域のプロセスＩＤ１１２についてはプロセスＩＤ割り当て管理テーブル１２５の領域指定２０２に「有」を設定して処理を終了する。
【００４１】
指定領域のプロセスＩＤ１１２をメモリ３上の領域に割り当てることができない場合には、ステップ６０７で管理コンソール１５０に警告（またはエラー）を表示する。そしてステップ６０８では割り当て可能なプロセスＩＤ１１２でプロセスＩＤ割り当て管理テーブル１２５を構成し、メモリ３上に確保された領域に当該テーブル１２５を設定する。
【００４２】
以上の処理により、計算機１０１の起動時には、管理コンソール１５０が与えた引数に応じてメモリ３上の領域を確保し、確保された領域の大きさに応じたプロセスＩＤ１１２の最大値を含むプロセスＩＤ割り当て管理テーブル１２５が設定される。そして、プロセスＩＤ領域分割モジュール１２４は、プロセスＩＤ割り当て管理テーブル１２５の割り当て可否２０１に「無」を設定して処理を終了する。
【００４３】
なお、上記図２、図４の処理を計算機１０１−２〜１０１−ｎでそれぞれ実行することで、各計算機１０１〜１０１−ｎのそれぞれにプロセスＩＤ割り当て管理テーブル１２５が設定される。
【００４４】
＜プロセスＩＤ割り当てモジュール＞
次に、ＯＳ１２１がチェックポイント機能を利用するプロセスを生成する度にプロセスＩＤ１１２を割り当てるプロセスＩＤ割り当てモジュール１２３が行う処理について以下に説明する。図５〜図７は、プロセスＩＤ割り当てモジュール１２３で行われる処理の一例を示すフローチャートで、ＯＳ１２１がプロセスを生成する度に実行される。
【００４５】
図５のステップ７０１では、生成するプロセス１１１に指定されたプロセスＩＤ１１２がある場合、プロセスＩＤ割り当て管理テーブル１２５の「指定領域」に、該当するプロセスＩＤ１１２が含まれているか、または、指定領域のプロセスＩＤ１１２を割り当てるか否かを判定する。
【００４６】
プロセス１１１の生成時にプロセスＩＤ１１２が指定されている場合は、例えば、障害が発生して再起動（リスタート）時に実行状態退避ファイル１０２に記録されているプロセスＩＤを復元する場合や、タスクの投入時に管理コンソール１５０からプロセスＩＤを指定した場合などである。また、タスクの投入時にチェックポイント機能の利用を指定した場合には、プロセス１１１の生成時に、指定領域のプロセスＩＤ１１２を用いる。これらの場合には、図６の処理へ進む。
【００４７】
一方、指定されたプロセスＩＤ１１２がプロセスＩＤ割り当て管理テーブル１２５の指定領域に無い場合、または、プロセス１１１がチェックポイント機能を利用しない場合は、図７の処理へ進む。
【００４８】
まず、図６の処理について説明する。プロセスＩＤ割り当てモジュール１２３は、ステップ９０１でチェックポイント機能を利用する指定領域のプロセスＩＤ１１２を割当可能か否かを判定する。指定領域のプロセスＩＤ１１２を割り当て可能な場合には、ステップ９０３へ進む。
【００４９】
一方、指定領域のプロセスＩＤ１１２を割り当てることができない場合には、ステップ９０２へ進む。ステップ９０２では、ＯＳ１２１の戻り値に、プロセスＩＤ１１２を割り当てられなかったことを示すエラーコードを設定して処理を終了する。この場合、プロセスＩＤ１１２が割り当てられないので、ＯＳ１２１は管理コンソール１５０へ警告などを送信し、プロセス１１１を起動しない。
【００５０】
指定領域のプロセスＩＤ１１２を割り当て可能な場合のステップ９０３では、プロセス１１１に割り当てるプロセスＩＤの値が指定されているか否かを判定する。プロセスＩＤ１１２の値が指定されていない場合には、ステップ９０４へ進む。一方、プロセスＩＤ１１２の値が指定されている場合には、ステップ９０６へ進む。
【００５１】
ステップ９０４では、プロセスＩＤ割り当て管理テーブル１２５の指定領域から、割り当て可否２０１が「可」のプロセスＩＤ１１２を抽出する。そして、抽出したプロセスＩＤ１１２の割り当て可否２０１を「否」に更新する。次に、ステップ９０５では、ステップ９０４で抽出したプロセスＩＤの値をＯＳ１２１への戻り値に設定して処理を終了する。この戻り値を受け付けたＯＳ１２１は、生成するプロセス１１１に指定領域のプロセスＩＤ１１２を付与して実行する。このプロセス１１１は所定のタイミングでチェックポイント機能を起動して、実行状態退避ファイル１０２を生成することになる。
【００５２】
次に、ステップ９０６では、プロセス１１１に指定されたプロセスＩＤ１１２を割り当て可能か否かを判定する。この判定は、プロセス１１１に指定されているプロセスＩＤ１１２に対応するプロセスＩＤ割り当て管理テーブル１２５のエントリで、割り当て可否が２０１が「可」であれば割り当て可能と判定し、「否」であれば割り当て不能と判定する。割り当て可能であればステップ９０７へ進み、割り当て不能であればステップ９０９へ進む。
【００５３】
ステップ９０７では、プロセス１１１に指定されたプロセスＩＤ１１２に対応するプロセスＩＤ割り当て管理テーブル１２５のエントリで、割り当て可否２０１を「否」に更新する。次に、ステップ９０８では、指定されたプロセス１１１のプロセスＩＤの値をＯＳ１２１への戻り値に設定して処理を終了する。この戻り値を受け付けたＯＳ１２１は、生成するプロセス１１１に指定されたプロセスＩＤ１１２を付与して実行する。このプロセス１１１は所定のタイミングでチェックポイント機能を起動して、実行状態退避ファイル１０２を生成することになる。
【００５４】
一方、ステップ９０９では、ＯＳ１２１の戻り値に、指定されたプロセスＩＤ１１２を割り当てられなかったことを示すエラーコードを設定して処理を終了する。この場合、プロセスＩＤ１１２が割り当てられないので、ＯＳ１２１は管理コンソール１５０へ警告などを送信し、プロセス１１１を起動しない。
【００５５】
次に、図５の判定で、指定されたプロセスＩＤ１１２が指定領域にない場合、またはプロセス１１１がチェックポイント機能を利用しない場合の処理を、図７のフローチャートに示す。
【００５６】
ステップ１００１では、指定外領域のプロセスＩＤ１１２を割り当てることが可能であるか否かを判定する。指定外領域のプロセスＩＤ１１２を割り当て可能であればステップ１００２に進み、割り当て不能の場合にはステップ１００４へ進む。
【００５７】
ステップ１００２では、プロセスＩＤ割り当てモジュール１２３が、プロセスＩＤ割り当て管理テーブル１２５の指定外領域のプロセスＩＤ１１２を抽出する。そして、プロセスＩＤ割り当てモジュール１２３は、抽出したプロセスＩＤ１１２のエントリで、割り当て可否２０１を「否」に更新する。次に、ステップ１００３では、このプロセスＩＤ１１２の値を戻り値としてＯＳ１２１へ通知する。これにより、ＯＳ１２１はチェックポイント機能を利用しないプロセス１１１にチェックポイント機能を利用しないプロセスＩＤ１１２を割り当てて、当該プロセス１１１を実行する。
【００５８】
一方、指定外領域のプロセスＩＤ１１２を割り当てることができない場合には、ステップ１００４で、上記ステップ９０２と同様に、エラーコードをＯＳ１２１への戻り値に設定し、プロセス１１１の起動を中止する。
【００５９】
以上の図５〜図７の処理によって、ＯＳ１２１が生成するプロセス１１１がチェックポイント機能を利用するか否かに応じて、チェックポイント機能を利用する指定領域と、利用しない指定外領域に分割されたプロセスＩＤ割り当て管理テーブル１２５から、割り当て可能なプロセスＩＤを抽出してプロセス１１１に割り当てる。
【００６０】
また、障害後の再起動などで、プロセスＩＤ１１２が指定されている場合には、指定されたプロセスＩＤ１１２がプロセスＩＤ割り当て管理テーブル１２５で割り当て可能であれば、当該プロセス１１１にこのプロセスＩＤを割り当てる。一方、割り当て不能な場合には、ＯＳ１２１へエラーを通知することで、プロセスＩＤを指定して起動するプロセスを中止する。これは、上述のように、実行時に自身のプロセスＩＤを記録して使用するプロセス１１１では、リスタート時にチェックポイント時のプロセスＩＤを割り当てなければ実行できないためであり、この種のプロセス１１１にチェックポイント時以外のプロセスＩＤを割り当てても円滑に実行できないので、プロセス１１１の起動を中止するのである。
【００６１】
＜チェックポイント生成ライブラリ＞
チェックポイント生成ライブラリ１３０は、プロセス１１１が所定のタイミングになると、当該プロセス１１１の実行状態を、ストレージ装置１４０の実行状態退避ファイル１０２へ書き込んで更新する。
【００６２】
チェックポイント生成ライブラリ１３０は、上記処理を繰り返し、計算機１０１が停止すると、その時点の実行状態退避ファイル１０２がストレージ装置１４０に保持される。
【００６３】
＜プロセス再開制御モジュール＞
次に、障害などにより実行を中断したプロセス１１１を再開する際に呼び出されるプロセス再開制御モジュール１１０１の処理について、以下に説明する。プロセス再開制御モジュール１１０１は、管理コンソール１５０からの指令に基づいて実行される。
【００６４】
管理コンソール１５０からは、実行する計算機１０１〜１０１−ｎのいずれか一つと、実行するプロセス１１１と、当該プロセス１１１の実行状態退避ファイル１０２〜１０２−ｎを指定する。指定された計算機１０１では、プロセス再開制御モジュール１１０１を起動する。
【００６５】
プロセス再開制御モジュール１１０１は、再開するプロセス１１１（以下再開プロセス１１１とする）の実行状態退避ファイル１０２を読み込んでから、まず、上記図５、図６のプロセスＩＤ割り当てモジュール１２３を起動して、当該計算機１０１で、チェックポイント時のプロセスＩＤ１１２を割り当てられる場合には、自計算機１０１で再開プロセス１１１を実行する。
【００６６】
自計算機１０１で、チェックポイント時のプロセスＩＤ１１２を割り当てられない場合には、図８に示す処理を開始する。
【００６７】
プロセス再開制御モジュール１１０１は、まず、ステップ１２０１で、計算機システム１で再開プロセス１１１を実行可能な計算機１０１〜１０１−ｎが残っているか否かを判定する。再開プロセス１１１を実行可能な計算機１０１〜１０１−ｎが残っていない場合には、ステップ１２０２で、ＯＳ１２１へ実行可能な計算機１０１が無いことを示すエラーコードを戻り値として終了する。ＯＳ１２１は、計算機システム１内の計算機１０１〜１０１−ｎで、プロセス１１１のリスタートができないことを管理コンソール１５０へ通知して、プロセス１１１の再開を停止する。
【００６８】
一方、再開プロセス１１１を実行可能な計算機があれば、ステップ１２０３へ進む。ステップ１２０３では、プロセス再開制御モジュール１１０１が、実行状態退避ファイル１０２から読み込んだプロセスＩＤ１１２を、再開プロセス１１１を実行可能な計算機１０１で、チェックポイント機能を利用する指定領域に割り当てているか否かを判定する。
【００６９】
例えば、プロセス１１１を実行していた計算機１０１−ｎ（図中第１の計算機）が障害により停止し、計算機１０１でプロセス再開制御モジュール１１０１を実行し、計算機１０１では、再開プロセス１１１のチェックポイント時のプロセスＩＤ１１２を割り当てられないため、計算機１０１−２を選択したものとする。
【００７０】
計算機１０１のプロセス再開制御モジュール１１０１は、計算機１０１−２に対して、再開プロセス１１１の実行状態退避ファイル１０２−ｎのプロセスＩＤ１１２を、指定領域に割り当てているか否かを尋ねるメッセージを送信する。計算機１０１−２のＯＳ１２１から、尋ねたプロセスＩＤ１１２が指定領域にあるという返信を受けた場合、計算機１０１のプロセス再開制御モジュール１１０１は、ステップ１２０４に進む。一方、実行したいプロセスＩＤ１１２が指定領域にないという返信を受けた場合には、計算機１０１のプロセス再開制御モジュール１１０１は、ステップ１２０１へ戻る。
【００７１】
ステップ１２０４では、計算機１０１のプロセス再開制御モジュール１１０１が、計算機１０１−２に対して、再開プロセス１１１のプロセスＩＤ１１２を、現在割り当て可能であるか否かを尋ねるメッセージを送信する。計算機１０１−２のＯＳ１２１から、尋ねたプロセスＩＤ１１２が割り当て可能であるという返信を受けた場合、ステップ１２０５に進む。なお、計算機１０１−２では、ＯＳ１２１がプロセスＩＤ割り当て管理テーブル１２５を参照し、問い合わせのあったプロセスＩＤ１１２の割り当て可否２０１が「可」であれば、計算機１０１に対して、プロセスＩＤ１１２を割り当て可能と返信する。
【００７２】
ステップ１２０５では、計算機１０１のプロセス再開制御モジュール１１０１が、計算機１０１−２に対して、再開プロセス１１１の実行の依頼と、実行状態退避ファイル１０２−ｎの通知を行って処理を終了する。
【００７３】
計算機１０１−２では、計算機１０１から依頼された再開プロセス１１１に、チェックポイント時のプロセスＩＤ１１２を割り当てて実行を開始する。このときの処理は、上記図５、図６と同様に行われる。
【００７４】
以上のように、本発明では、計算機システム１内の計算機１０１〜１０１−ｎで、プロセスＩＤ割り当て管理テーブル１２５を、指定外領域と指定領域の２つの領域に分けておき、チェックポイント機能を利用するプロセスＩＤ１１２を指定領域に割り当てておくことで、再起動時に異なる計算機１０１−２を選択して場合でも、チェックポイント時のプロセスＩＤ１１２を割り当てることを保証することが可能となる。
【００７５】
なお、計算機１０１〜１０１−ｎの起動時には、プロセスＩＤ割り当て管理テーブル１２５を設定する領域を指定するための引数を同様の値として、プロセスＩＤ割り当て管理テーブル１２５の領域を各計算機１０１〜１０１−ｎで同様としておくことが望ましい。また、計算機システム１内では、各計算機１０１〜１０１−ｎで設定するプロセスＩＤ割り当て管理テーブル１２５の指定外領域のプロセスＩＤの数を等しく設定しおくことが望ましい。これにより、各計算機１０１〜１０１−ｎのプロセスＩＤ割り当て管理テーブル１２５の指定外領域と指定領域の境界を等しくすることができ、再開プロセス１１１にチェックポイント時のプロセスＩＤ１１２を割り当てることを保証することができる。
【００７６】
なお、上記計算機システム１としては、並列計算機やブレードサーバあるいはクラスタサーバなど、複数の計算機（または、ノード）を備えたものであれば本発明を適用することができる。
【００７７】
また、上記計算機システム１で実行されるプロセス１１１は、並列処理に限定されるものではなく、実行中にチェックポイント機能を利用し、障害が発生した後に実行状態退避ファイル１０２を用いて再起動するソフトウェアであれば本発明を適用することができる。
【００７８】
＜第２実施形態＞
図９は第２の実施形態を示し、前記第１実施形態のプロセスＩＤ割り当て管理テーブル１２５を、チェックポイント機能を利用しない指定外領域のプロセスＩＤのプロセスＩＤ割り当て管理テーブル１２５−１と、チェックポイント機能を利用する指定外領域のプロセスＩＤ割り当て管理テーブル１２５−２の２つに分割したものである。その他の構成は、前記第１実施形態と同様である。
【００７９】
図９（Ａ）に示す指定外領域のプロセスＩＤのプロセスＩＤ割り当て管理テーブル１２５−１は、プロセスＩＤ１１２に全てのプロセスＩＤを格納し、各エントリのうち指定外領域で使用しないプロセスＩＤ（つまり、指定領域のプロセスＩＤ）について割り当て可否２０１のフィールドを割り当て禁止（図中、否（固定））とし、指定外領域で使用するプロセスＩＤについて、割り当て可否２０１のフィールドに現在の割り当て状態を書き込み可能としたものである。図９（Ａ）では、プロセスＩＤ１１２が０または偶数の値のエントリが、指定外領域のプロセスＩＤとして割り当て可能に設定され、奇数のプロセスＩＤが指定外領域では割り当て禁止に設定される。
【００８０】
一方、図９（Ｂ）に示す指定領域のプロセスＩＤのプロセスＩＤ割り当て管理テーブル１２５−２は、プロセスＩＤ１１２に全てのプロセスＩＤを格納し、各エントリのうち指定領域で使用しないプロセスＩＤ（つまり、指定外領域のプロセスＩＤ）について割り当て可否２０１のフィールドを割り当て禁止（図中、否（固定））とし、指定領域で使用するプロセスＩＤについて、割り当て可否２０１のフィールドに現在の割り当て状態を書き込み可能としたものである。図９（Ｂ）では、プロセスＩＤ１１２が奇数の値のエントリが、指定領域のプロセスＩＤとして割り当て可能に設定され、０または偶数のプロセスＩＤが指定外領域では割り当て禁止に設定される。
【００８１】
上記の例では、指定外領域のプロセスＩＤ１１２と指定領域のプロセスＩＤ１１２が交互に出現することとなる。なお、図９の例では、一連の値を交互に指定外領域と指定領域に割り当てる例を示したが、これに限定されるものではなく、任意の値を指定外領域または指定領域のいずれか一方のプロセスＩＤとして割り当てることができる。
【００８２】
＜第３実施形態＞
図１０は第３の実施形態を示し、前記第１実施形態のプロセスＩＤ領域指定モジュール１２２の処理を、予め設定したファイルを読み込んでメモリ３上の領域を確保するようにしたものである。その他の構成は、前記第１実施形態と同様である。
【００８３】
プロセスＩＤ領域指定モジュール１２２は、ＯＳ１２１が起動するときに実行され、管理コンソール１５０から指定されたファイルの値に基づいて、メモリ３上の所定の領域をプロセスＩＤ割り当て管理テーブル１２５を読み込むために予約する（４０１’）。このファイルは、例えばストレージ装置１４０に予め格納されたものであり、ファイルの内容としては前記第１実施形態の引数と同様に、計算機１０１〜１０１−ｎのメモリ３上に確保する領域の大きさなどが含まれる。
【００８４】
このファイルは、管理コンソール１５０を操作する管理者などがＯＳ１２１を起動する際に指定するもので、プロセスＩＤ領域指定モジュール１２２は、このファイルを読み込んでメモリ３上の領域（メモリ空間）を確保して終了する。
【００８５】
このように、ＯＳ１２１の起動時に引数を指定するのに代わって、ファイルを指定してプロセスＩＤ割り当て管理テーブル１２５を読み込み領域を確保するようにしても良い。
【００８６】
＜第４実施形態＞
図１１、図１２は第４の実施形態を示し、前記第１実施形態に示した計算機１０１〜１０１−ｎで、プロセスＩＤ割り当て管理テーブル１２５を管理するプロセスＩＤ管理ライブラリ１６０を実行し、図５に示したプロセスＩＤ割当モジュール１２３がプロセスＩＤ管理ライブラリ１６０の参照の有無に応じて割り当てるプロセスＩＤの種類を変更する要にしたものである。その他の構成は、前記第１実施形態と同様である。
【００８７】
図１１において、チェックポイント機能を利用するプロセス１１１とチェックポイント生成ライブラリ１３０は、プロセスＩＤ管理ライブラリ１６０を介してプロセスＩＤ割り当て管理テーブル１２５を参照し、チェックポイント生成ライブラリ１３０はプロセスＩＤ割り当て管理テーブル１２５の指定領域のプロセスＩＤについては、所定のタイミングで実行状態退避ファイル１０２を更新する。
【００８８】
プロセスＩＤ割当モジュール１２３は、図５に代わって図１２の処理を実行する。図１２において、ステップ７０１’では、生成するプロセス１１１がプロセスＩＤ管理ライブラリ１６０を参照しているか否かを判定する。
【００８９】
チェックポイント機能を利用するプロセス１１１は、プロセスＩＤ管理ライブラリ１６０を参照しており、チェックポイント機能を利用しないプロセス１１１はプロセスＩＤ管理ライブラリ１６０を参照しない。
【００９０】
このため、プロセスＩＤ割り当てモジュール１２３は、プロセスＩＤ管理ライブラリ１６０を参照するプロセス１１１の場合、プロセスＩＤ割り当て管理テーブル１２５の「指定領域」に該当するプロセスＩＤ１１２を割り当てるため前記第１実施形態の図６の処理へ進む。一方、プロセス１１１がプロセスＩＤ管理ライブラリ１６０を参照していなければ、指定外領域のプロセスＩＤを割り当てるため前記第１実施形態の図７の処理に進む。
【００９１】
このように、プロセスＩＤ割り当てモジュール１２３は、プロセスＩＤ割り当て管理テーブル１２５を管理するプロセスＩＤ管理ライブラリ１６０の参照の有無に応じて割り当てるプロセスＩＤの種類を選択することができる。
【００９２】
＜第５実施形態＞
図１３は第５の実施形態を示し、前記第１実施形態のプロセス再開制御モジュール１１０１の他の例を示す。その他の構成は、前記第１実施形態と同様である。
【００９３】
プロセス再開制御モジュール１１０１は、自計算機１０１で、チェックポイント時のプロセスＩＤ１１２を割り当てられない場合には、図１３に示す処理を開始する。
【００９４】
図１３の処理では、ステップ１２０１から１２０３までが前記第１実施形態の図８と同様である。つまり、計算機システム１内で検索する計算機が残っていなければ、ＯＳ１２１へエラーを通知し、リスタートするプロセス１１１に割り当てる指定領域のプロセスＩＤがなければ次の計算機１０１−２〜１０１−ｎを検索する。
【００９５】
指定領域のプロセスＩＤがリスタートするプロセスＩＤ１１２を含む計算機１０１〜１０１−ｎが見つかるとステップ１３０４の処理に進む。ステップ１３０４では、リスタートするプロセス１１１のプロセスＩＤ１１２を使用している他のプロセス１１１を停止可能であるか否かを、検索した計算機（以下、計算機１０１−２とする）に問い合わせる。計算機１０１−２が、停止可能と返信した場合には、計算機１０１のプロセス再開制御モジュール１１０１はステップ１３０５へ進んで、計算機１０１−２に対してリスタートするプロセス１１１のプロセスＩＤを割り当てている他のプロセスの停止及び退避を依頼する。
【００９６】
そして、計算機１０１のプロセス再開制御モジュール１１０１は、ステップ１３０７へ進んで、リスタートするプロセス１１１の再開を計算機１０１−２へ依頼して処理を終了する。
【００９７】
一方、ステップ１３０４で、計算機１０１−２がリスタートするプロセス１１１のプロセスＩＤ１１２を使用する他のプロセスを停止できないと返信した場合、計算機１０１のプロセス再開制御モジュール１１０１は、ステップ１３０６で、当該プロセスＩＤ１１２の処理が完了したか否かを計算機１０１−２に問い合わせ、当該プロセスＩＤ１１２の処理が完了するまで待機する。そして、計算機１０１−２からプロセスＩＤ１１２の処理の完了を受信すると、計算機１０１のプロセス再開制御モジュール１１０１は、ステップ１３０７へ進んで、計算機１０１−２に対してリスタートするプロセス１１１の再開を依頼して処理を終了する。
【００９８】
以上のように、リスタートするプロセス１１１に割り当てるプロセスＩＤ１１２が、他の計算機１０１−２で使用中の場合には、このプロセスＩＤ１１２を使用する他の計算機１０１−２の処理が完了するのを待ってから、当該他の計算機１０１−２へプロセス１１１のリスタートを指令することができる。
【００９９】
＜第６実施形態＞
図１４、図１５は第６の実施形態を示し、前記第１実施形態の図３に示した指定領域のプロセスＩＤを計算機１０１〜１０１−ｎ毎に区分けし、さらに、前記第１実施形態の図６に示したプロセスＩＤ割り当てモジュール１２３の処理の一部を変更した例を示す。その他の構成は、前記第１実施形態と同様である。
【０１００】
図１４は、プロセスＩＤ割り当て管理テーブル１２５の一例を示し、プロセスＩＤ１１２の値が０〜３を指定外領域のプロセスＩＤとし、４〜ｎを指定領域のプロセスＩＤとする。そして、指定領域のプロセスＩＤ１１２を計算機システム１内の計算機１０１〜１０１−ｎ毎に予め割り当てたものである。
【０１０１】
このプロセスＩＤ割り当て管理テーブル１２５は、図１の計算機１０１〜１０１−ｎで同じフォーマットのものを使用する。例えば、計算機１０１では、指定領域のプロセスＩＤとして４〜７を使用し、計算機１０１−２では指定領域のプロセスＩＤとして８から１１を割り当てる。指定領域のプロセスＩＤは、自計算機に割り当てられたもののみを、自計算機のプロセス１１１に割り当てるように制限しておき、他の計算機のプロセス１１１を実行するときのみ、他の計算機に割り当てられた指定領域のプロセスＩＤを割り当て可能とするものである。
【０１０２】
つまり、計算機１０１−２が障害で停止した場合、他の計算機では、プロセスＩＤ１１２が８〜１１の指定領域が計算機１０１−２用として予め確保されているので、停止した計算機１０１−２で指定領域のプロセスＩＤ１１２を用いていたプロセス１１１を、他の計算機１０１、１０１−３〜ｎの何れでも実行可能となる。
【０１０３】
図１５は、前記第１実施形態の図６の処理に代わって行われるプロセスＩＤ割り当てモジュール１２３の処理である。
【０１０４】
図１５で、ステップ９０１〜９０３及び９０７、９０８は前記第１実施形態の図６と同様で、指定領域のプロセスＩＤ１１２が割り当て不能であればＯＳ１２１へエラーを返す。指定領域のプロセスＩＤ１１２を割り当て可能で、ＯＳ１２１が生成するプロセス１１１にプロセスＩＤ１１２が指定されていれば、ステップ９０７、９０８で該当するプロセスＩＤ１１２を割り当てる。
【０１０５】
一方、プロセスＩＤ１１２が指定されていなければ、ステップ１４０１で、図１４のように計算機１０１〜１０１−ｎ毎に分割された指定領域のプロセスＩＤ１１２から、当該計算機１０１〜１０１−ｎに割り当てられた指定領域のプロセスＩＤ１１２のみを選択するように制限する。
【０１０６】
ステップ１４０２では、当該計算機１０１〜１０１−ｎに割り当てられた指定領域のプロセスＩＤ１１２のうち、割り当て可否２０１が「可」のプロセスＩＤ１１２があるか否かを判定する。割り当て可否２０１に「可」のプロセスＩＤ１１２がなければ、ステップ１４０５へ進んでＯＳ１２１にエラーを通知する。
【０１０７】
一方、ステップ１４０３では、当該計算機１０１〜１０１−ｎに割り当てられた指定領域のプロセスＩＤ１１２に、割り当て可否２０１が「可」のプロセスＩＤ１１２があれば、このプロセスＩＤを選択する。そして、選択したプロセスＩＤ１１２の割り当て可否２０１を「否」に更新する。次に、ステップ１４０４では、ステップ１４０３で選択したプロセスＩＤの値をＯＳ１２１への戻り値に設定して処理を終了する。この戻り値を受け付けたＯＳ１２１は、生成するプロセス１１１に指定領域のプロセスＩＤ１１２を付与して実行する。このプロセス１１１は所定のタイミングでチェックポイント機能を利用することになる。
【０１０８】
このように、プロセスＩＤ割り当て管理テーブル１２５の指定領域のプロセスＩＤを予め計算機システム１内の計算機１０１〜１０１−ｎ毎に割り当てておくことで、障害が発生した計算機のプロセス１１１を、他の計算機１０１〜１０１−ｎでチェックポイント時のプロセスＩＤ１１２を確実に割り当ててリスタートすることが可能となる。
【０１０９】
＜第７実施形態＞
図１６、図１７は、第７の実施形態を示し、前記第１実施形態の図４に示したプロセスＩＤ領域分割モジュール１２４の処理を、ＯＳ１２１の起動後にプロセスＩＤ割り当て管理テーブル１２５を設定する領域を割り当て、または変更するようにしたものである。その他の構成は、前記第１実施形態と同様である。この処理は、ＯＳ１２１の起動後に、指定領域や指定外領域のプロセスＩＤ１１２が不足したときなどに、プロセスＩＤの設定を変更可能にするものである。
【０１１０】
図１６のステップ１５０１では、ＯＳ１２１の起動後に、管理コンソール１５０からプロセスＩＤ領域の指定を受け付ける。
【０１１１】
次に、ステップ６０２〜６０８では、前記第１実施形態の図４と同様にして、指定されたメモリ３上の領域に応じてプロセスＩＤ割り当て管理テーブル１２５を割り当てる。
【０１１２】
次に、図１７のステップ１６０１では、プロセスＩＤ割り当て管理テーブル１２５のうち、新たに指定外領域となるプロセスＩＤで領域指定２０２が「有」となっているプロセスＩＤ１１２を割り当て可能か判定する。新たに指定外領域となるプロセスＩＤ１１２が割り当て可能であれば、ステップ１６０２で、この指定外領域のプロセスＩＤ１１２の領域指定２０２を「無」に更新して解放し、プロセスＩＤ１１２を指定外領域のプロセスＩＤとする。
【０１１３】
一方、新たに指定外領域となるプロセスＩＤ１１２が割り当て可能でない場合には、ステップ１６０３で管理コンソール１５０に警告を通知して表示させ、ログに記録する。そして、ステップ１６０４で、新たに指定外領域となるプロセスＩＤのうち、割り当て可能なプロセスＩＤ１１２の領域指定２０２を「無」に更新して処理を終了する。
【０１１４】
以上の処理によって、ＯＳ１２１の起動後に、プロセスＩＤ割り当て管理テーブル１２５の内容を変更することが可能となる。
【０１１５】
＜第８実施形態＞
図１８は、第８の実施形態を示し、前記第１実施形態の図１に示したストレージ装置を各計算機１０１〜１０１−ｎ内に設けたもので、その他の構成は前記第１実施形態と同様である。
【０１１６】
各計算機１０１〜１０１−ｎ内には、ストレージ装置１４１が設けられ、実行状態退避ファイル１０２が格納される。
【０１１７】
本実施形態では、各計算機１０１〜１０１−ｎで実行状態退避ファイル１０２〜１０２−ｎを生成してローカルのストレージ装置１４１に保存するときに、各計算機間をまたがって実行状態退避ファイル１０２のパリティデータ(保護データ)１７０を生成する。そして、各パリティデータ１７０を隣の計算機などに保存しておく。これにより、故障した計算機を除いた各計算機１０１〜１０１−ｎに保存されている実行状態退避ファイル１０２と保護データ１７０から、故障した計算機に保存されていた実行状態退避ファイル１０２を復元し、リスタートを実行することが可能となる。
【０１１８】
＜捕捉＞
２１．前記プロセスＩＤとして前記第２のプロセスＩＤが設定されたプロセスについて、予め設定されたタイミングで当該プロセスの実行状態を保存する手順をさらに含むことを特徴とする請求項１３に記載のプログラム。
【０１１９】
２２．前記計算機は複数の計算機を含んで構成され、
前記保存された実行状態に基づいて、前記プロセスを再開する手順をさらに含み、
前記プロセスＩＤを割り当てる手順は、
前記保存された実行状態に含まれるプロセスＩＤを、前記第２のプロセスＩＤに含む計算機を前記複数の計算機から検索する手順と、
前記実行状態に含まれるプロセスＩＤを、前記第２のプロセスＩＤに含む計算機に当該プロセスの実行を指令する手順と、
を含むことを特徴とする上記２１に記載のプログラム。
【０１２０】
２３．前記実行状態に含まれるプロセスＩＤを、前記第２のプロセスＩＤに含む計算機に当該プロセスの実行を指令する手順は、
前記計算機で、前記実行状態に含まれるプロセスＩＤが使用中の場合には、当該プロセスの終了をまって、前記計算機に当該プロセスの実行を指令することを特徴とする２２に記載のプログラム。
【０１２１】
２３−１．前記実行状態に含まれるプロセスＩＤを、前記第２のプロセスＩＤに含む計算機に当該プロセスの実行を指令する手順は、
前記計算機で、前記実行状態に含まれるプロセスＩＤが使用中の場合には、当該プロセスの実行状態を保存して終了させ、前記計算機に当該プロセスの実行を指令することを特徴とする２２に記載のプログラム。
【０１２２】
２４．前記オペレーティングシステムの起動後に、前記プロセスＩＤを格納する領域の変更指令を受け付ける手順と、
前記受け付けた変更指定に基づいて、前記設定された第１の領域または第２の領域を変更する手順と、
をさらに含むことを特徴とする請求項１３に記載のプログラム。
【産業上の利用可能性】
【０１２３】
以上のように、本発明はチェックポイント機能を利用するソフトウェアのリスタート時に、チェックポイント時のプロセスＩＤを割り当てることを保証できるので、ＯＳやＯＳの拡張モジュールに適用することができる。あるいはチェックポイント機能を利用する並列計算機システムに適用することができる。
【図面の簡単な説明】
【０１２４】
【図１】第１の実施形態を示し、本発明を適用する計算機システムのブロック図である。
【図２】プロセスＩＤ領域指定モジュールの処理の一例を示すフローチャート。
【図３】プロセスＩＤ割り当て管理テーブルの一例を示す説明図。
【図４】プロセスＩＤ領域分割モジュールで行われる処理の一例を示すフローチャート。
【図５】プロセスＩＤ割り当てモジュールで行われる処理の一例を示すフローチャート。
【図６】同じく、プロセスＩＤ割り当てモジュールで行われる処理の一例を示すフローチャート。
【図７】同じく、プロセスＩＤ割り当てモジュールで行われる処理の一例を示すフローチャート。
【図８】プロセス再開制御モジュールで行われる処理の一例を示すフローチャート。
【図９】第２の実施形態を示し、プロセスＩＤ割り当て管理テーブルの他の例を示す説明図で、（Ａ）は指定外領域のプロセスＩＤを示し、（Ｂ）は指定領域のプロセスＩＤを示す。
【図１０】第３の実施形態を示し、プロセスＩＤ領域指定モジュールの処理の一例を示すフローチャート。
【図１１】第４の実施形態を示し、計算機システムのブロック図。
【図１２】同じく、第４の実施形態を示し、プロセスＩＤ割り当てモジュールの処理の一例を示すフローチャート。
【図１３】第５の実施形態を示し、プロセス再開制御モジュールで行われる処理の一例を示す。
【図１４】第６の実施形態を示し、プロセスＩＤ割り当て管理テーブルの一例を示す説明図。
【図１５】同じく、第６の実施形態を示し、プロセスＩＤ割り当てモジュールで行われる処理の一例を示すフローチャート。
【図１６】第７の実施形態を示し、プロセスＩＤ領域分割モジュールの処理の一例を示すフローチャート。
【図１７】同じく、第７の実施形態を示し、プロセスＩＤ領域分割モジュールの処理の一例を示すフローチャートの後半部。
【図１８】第８の実施形態を示し、計算機システムのブロック図。
【符号の説明】
【０１２５】
１  計算機システム
１０１〜１０１−ｎ  計算機
１０２  実行状態退避ファイル
１１１  プロセス
１２１  ＯＳ
１２２  プロセスＩＤ領域指定モジュール
１２３  プロセスＩＤ割り当てモジュール
１２４  プロセスＩＤ領域分割モジュール
１２５  プロセスＩＤ割り当て管理テーブル
１３０  チェックポイント生成ライブラリ
１１０１  プロセス再開制御モジュール
【図１】
2008046889.tif 000003
【図２】
2008046889.tif 000004
【図３】
2008046889.tif 000005
【図４】
2008046889.tif 000006
【図５】
2008046889.tif 000007
【図６】
2008046889.tif 000008
【図７】
2008046889.tif 000009
【図８】
2008046889.tif 000010
【図９】
2008046889.tif 000011
【図１０】
2008046889.tif 000012
【図１１】
2008046889.tif 000013
【図１２】
2008046889.tif 000014
【図１３】
2008046889.tif 000015
【図１４】
2008046889.tif 000016
【図１５】
2008046889.tif 000017
【図１６】
2008046889.tif 000018
【図１７】
2008046889.tif 000019
【図１８】
2008046889.tif 000020