(57)【特許請求の範囲】
【請求項１】
計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理するプロセス管理部のプロセス状態の管理方法であって、
前記プロセス管理部は、前記要求を受け取ると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断し、この判断によってあると判断された場合に、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう更新されるまで、前記第１のプロセスへ前記応答を遅延して通知し、
前記プロセス管理部は、それぞれのプロセス状態の取得の開始を示す指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断し、この判断によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう更新されるまで、前記プロセス群のそれぞれへ前記指示を遅延して通知するようにしたことを特徴とするプロセス状態の管理方法。
【請求項２】
前記プロセス管理部は、前記プロセス群からプロセス状態の取得の完了を示す通知をそれぞれ受けて、前記第１期間情報を、前記プロセスの状態を取得している期間でない旨に更新し、
前記プロセス管理部は、前記指示を受けて前記第２のプロセスの生成を行っている期間であるか否かの判断によって否と判断された場合に、前記プロセス群のそれぞれへプロセス状態の取得の指示を通知するとともに、前記第１期間情報を前記プロセス群のプロセス状態を取得している期間中である旨に更新するようにしたことを特徴とする請求項１記載のプロセス状態の管理方法。
【請求項３】
前記プロセス管理部は、前記第１のプロセスおよび第２のプロセスから第２のプロセスの生成の終了を示す通知をそれぞれ受けて、前記第２期間情報を、前記第２プロセスの生成を行っている期間でない旨に更新し、
前記プロセス管理部は、前記要求を受けて前記プロセスの状態を取得している期間であるか否かの判断によって否と判断された場合に、前記第１のプロセスへプロセスの生成を許可する応答を通知するとともに、前記第２期間情報を前記第２のプロセスの生成を行っている期間である旨に更新するようにしたことを特徴とする請求項１または請求項２に記載のプロセス状態の管理方法。
【請求項４】
計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理する第１手段と、
前記第１のプロセスから、前記第１のプロセスと同じ第２のプロセスの生成を開始したい旨を示す要求を受け、この要求を許可する応答を前記第１のプロセスへ通知する第２手段と、
前記プロセス群のプロセス状態の取得の開始の指示を受け、前記プロセス群へ前記プロセス群のプロセス状態の取得を指示する第３手段とを備えるプロセス管理部のプロセス状態の管理方法であって、
前記第２手段は、前記要求を受けると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断し、この判断によってあると判断された場合には、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう前記第１手段で更新された後に、前記第１のプロセスへ前記応答を通知するようにし、
前記第３手段は、前記指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断し、この判断によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう前記第１手段で更新された後に、前記プロセス群のそれぞれへ前記指示を通知するようにしたことを特徴とするプロセス状態の管理方法。
【請求項５】
計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理するプロセス管理装置であって、
前記要求を受け取ると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断する第１判断手段と、
前記第１判断手段によってあると判断された場合に、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう更新されるまで、前記第１のプロセスへ前記応答を遅延して通知する第１通知手段と、
それぞれのプロセス状態の取得の開始を示す指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断する第２判断手段と、
前記第２判断手段によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう更新されるまで、前記プロセス群のそれぞれへ前記指示を遅延して通知する第２通知手段とを備えたことを特徴とするプロセス管理装置。
【請求項６】
計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理する第１手段と、
前記第１のプロセスから、前記第１のプロセスと同じ第２のプロセスの生成を開始したい旨を示す要求を受け、この要求を許可する応答を前記第１のプロセスへ通知する第２手段と、
前記プロセス群のプロセス状態の取得の開始の指示を受け、前記プロセス群へ前記プロセス群のプロセス状態の取得を指示する第３手段と、
前記要求を受けると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断する第１判断手段と、
前記第１判断手段によってあると判断された場合には、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう前記第１手段で更新された後に、前記第１のプロセスへ前記応答を通知する第１通知手段と、
前記指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断する第２判断手段と、
前記第２判断手段によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう前記第１手段で更新された後に、前記プロセス群のそれぞれへ前記指示を通知する第２通知手段とを備えたことを特徴とするプロセス管理装置。
【請求項７】
計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理する、コンピュータに実行させるプログラムを記憶した記憶媒体であって、
前記要求を受け取ると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断させ、この判断によってあると判断された場合に、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう更新されるまで、前記第１のプロセスへ前記応答を遅延し通知させる第１プログラムコードと、
それぞれのプロセス状態の取得の開始を示す指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断させ、この判断によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう更新されるまで、前記プロセス群のそれぞれへ前記指示を遅延し通知させる第２プログラムコードとを備えたことを特徴とするコンピュータに実行させるプログラムを記憶した記憶媒体。
【請求項８】
計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理させる第１プログラムコードと、
前記第１のプロセスから、前記第１のプロセスと同じ第２のプロセスの生成を開始したい旨を示す要求を受け、この要求を許可する応答を前記第１のプロセスへ通知させる第２プログラムコードと、
前記プロセス群のプロセス状態の取得の開始の指示を受け、前記プロセス群へ前記プロセス群のプロセス状態の取得を指示させる第３プログラムコードと、
前記要求を受けると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断させる第４プログラムコードと、
前記第４プログラムコードによってあると判断された場合には、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう前記第１手段で更新された後に、前記第１のプロセスへ前記応答を通知させる第５プログラムコードと、
前記指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断させる第６プログラムコードと、
前記第６プログラムコードによってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう前記第１手段で更新された後に、前記プロセス群のそれぞれへ前記指示を通知させる第７プログラムコードとを備えたことを特徴とするコンピュータに実行させるプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセス状態の管理方法およびプロセス状態管理システムに関し、特に、あるプロセスから他のプロセスが生成される場合の、チェックポイントを用いたプロセス状態の管理用法及び該方法を実現するシステムに関する。
【０００２】
【従来の技術】
従来から、計算機におけるプログラム実行の信頼性を向上させる方法として、チェックポイントに従ったプログラムの実行方法が知られている。これは、プログラムの実行に際し、所定のチェックポイント・タイミングに従ってプログラムの実行体であるプロセスの状態を定期・不定期に取得し、プログラムの実行中に障害が発生した場合には、直近のチェックポイントに取得したおけるプロセスの状態から当該プログラムを再実行するという方法である。ここで、チェックポイントとは、プログラムの実行を経時的に見た場合に、プロセスの状態を取得するための処理を行う時点をいうものとし、チェックポイント・タイミングとは、あるチェックポイントから次のチェックポイントまでの範囲をいうものとする。
【０００３】
ところで、単独で動作するプロセスにおいては、そのプロセスの途中状態のみのチェックポイントで、プロセスの状態を取得すればよいが、複数のプログラムがプロセス間通信等の関係をもって動作するような場合においては、１つのプロセスについて、チェックポイントに従って当該プロセスの状態を取得するのみでは不十分である。すなわち、再実行した場合に矛盾が生じないようにするためには、チェックポイントごとに相互に関係がある複数のプロセスの状態を取得する必要がある。以下では、便宜上、各プロセスごとについてのチェックポイントをローカルチェックポインといい、相互に関係があるプロセスについてのローカルチェックポイントの集合を分散チェックポイントというものとする。
【０００４】
上述のように、複数のプロセスがプロセス間通信等の関係をもって動作するような場合においては、これら相互に関係がある複数のプロセスの状態を一貫性が保たれるように（矛盾なく）取得しなければならない。この点につき、図を参照しつつ、さらに詳細に説明する。
【０００５】
すなわち、図１は、分散チェックポイントの例を示す図である。同図（ａ）〜（ｃ）は、３つのプロセスｐ１，ｐ２，ｐ３がそれぞれメッセージ送受信を行ないながら処理を進めている場合における３通りの分散チェックポイントＣＨ１，ＣＨ２，ＣＨ３を示している。メッセージｍは送信側の番号、受信側の番号を添字にもつ。
【０００６】
同図（ａ）における分散チェックポイントＣＨ１においては、ローカルチェックポイントｃｈ１１，ｃｈ１２，ｃｈ１３に従って各プロセスの状態が取得された場合に、各メッセージに関して矛盾した状態がないため、直近のチェックポイントに戻り（ロールバック）再実行（リスタート）を行っても、正常にメッセージの送受信が行なわれる。しかしながら、同図（ｂ）における分散チェックポイントＣＨ２は、メッセージｍ３２に注目すると、ローカルチェックチェックポイントｃｈ１３ではｐ３はまだメッセージを送っていない状態であるにも関わらず、ローカルチェックポイントｃｈ１２ではｐ２はメッセージを受けた状態にあることになる。そのため、いずれかのプロセスにおいて障害が発生することにより、分散チェックポイントＣＨ１までロールバックし、再実行を行なった場合、ｍ３２に関して矛盾した状態になる。同様に、同図（ｃ）における分散チェックポイントＣＨ３に関しても、メッセージｍ２３に関して矛盾した状態になる。
【０００７】
従来、提案されている分散チェックポイントの一貫性を保証する方法は、メッセージ送受信を対象にしており、同期型チェックポイント生成方式と、非同期型チェックポイント生成方式がある。
【０００８】
ところで、同期型チェックポイントに従ったプロセスの状態の取得方法として、"K.M. Chandy and L. Lamport: Distributed Snapshots:Determining Global States of Distributed Systems, ACM Trans. Computer Syst., Vol. 3, No. 1, pp. 63-75, Feb 1985" が知られている。この方法は上記の例と同様に、プロセス間通信としてメッセージ送受信を対象にしており、一貫性のある分散チェックポイントとは、未送信かつ受信済みのメッセージが存在しない状態であると定義している。未送信かつ受信済みのメッセージが存在する状態とは、上述した図１（ｂ）の場合におけるメッセージｍ２３が存在する状態である。
【０００９】
また、ＣＨ３では、ｍ２３が失われることになるため、送信済みで未受信のメッセージは取得情報として保存する。より具体的なアルゴリズムとして、分散チェックポイントに従ったプロセス状態の保存時に、マーカと呼ばれるメッセージを送り合うことで矛盾を引き起こすメッセージを検出し、それらを保存することで全体として一慣性のある状態を構築し、プロセス状態の保存を行なう。
【００１０】
また、一般的なオペレーティングシステムでは、新たなプロセスを生成するに際し、現在動作しているプロセスが自分と同じものを新たに生成するようなことが行われてる。例えば、ＵＮＩＸにおける、forkシステムコールがそれに相当し、それを呼び出したプロセスと同じ内容のプロセスが生成される。forkシステムコールを呼び出したプロセスは親プロセスと呼ばれ、該親プロセスから新たに生成されたプロセスは子プロセスと呼ばれている。
【００１１】
図２は、同期型チェックポイントにおける新たなプロセスを生成する場合のチェックポイントの例を示す図である。同図において、プロセスＡは分散チェックポイントＣＰ（ｎ）、ＣＰ（ｎ＋１）を生成し、その間にプロセスＢをforkシステムコールで生成している。このとき、ＣＰ（ｎ＋１）では、プロセスＡは、プロセスＢとは無関係であるため、チェックポイントは生成されない。その後、メッセージｍ１，ｍ２により、プロセスＡ，Ｂは関係を持つことになる。すなわち、障害Ｆ１が発生した場合、プロセスＡはＣＰ（ｎ＋１）までロールバックして、リスタートすることになるが、プロセスＢはチェックポイントを持っていないため、プロセスの状態が取得されず、正常にリスタートできないという問題点がある。
【００１２】
【発明が解決しようとする課題】
複数のプロセスを対象にした分散チェックポイントであって、同期型チェックポイント方法においては、あるプロセスから他のプロセスが生成されるような場合に、プロセスの状態を相互に矛盾なく取得することができず、そのため、プログラムの実行中に障害等が発生して、再実行しなければならないような場合、正常に再実行することができないという問題点があった。
【００１３】
本発明は、上記問題点に鑑みてなされたもので、同期型チェックポイント方法において、あるプロセスから他の新たなプロセスが生成されるような場合であってもプロセスの状態を相互に矛盾なく取得することができるプロセス状態の管理方法及びシステムを提供することを目的とする。
【００１４】
【課題を解決するための手段】
本発明は、計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理するプロセス管理部のプロセス状態の管理方法であって、前記プロセス管理部は、前記要求を受け取ると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断し、この判断によってあると判断された場合に、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう更新されるまで、前記第１のプロセスへ前記応答を遅延して通知し、前記プロセス管理部は、それぞれのプロセス状態の取得の開始を示す指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断し、この判断によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう更新されるまで、前記プロセス群のそれぞれへ前記指示を遅延して通知するようにした。
また、本発明は、計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理する第１手段と、前記第１のプロセスから、前記第１のプロセスと同じ第２のプロセスの生成を開始したい旨を示す要求を受け、この要求を許可する応答を前記第１のプロセスへ通知する第２手段と、前記プロセス群のプロセス状態の取得の開始の指示を受け、前記プロセス群へ前記プロセス群のプロセス状態の取得を指示する第３手段とを備えるプロセス管理部のプロセス状態の管理方法であって、前記第２手段は、前記要求を受けると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断し、この判断によってあると判断された場合には、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう前記第１手段で更新された後に、前記第１のプロセスへ前記応答を通知するようにし、前記第３手段は、前記指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断し、この判断によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう前記第１手段で更新された後に、前記プロセス群のそれぞれへ前記指示を通知するようにした。
また、本発明は、計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理するプロセス管理装置であって、前記要求を受け取ると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断する第１判断手段と、前記第１判断手段によってあると判断された場合に、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう更新されるまで、前記第１のプロセスへ前記応答を遅延して通知する第１通知手段と、それぞれのプロセス状態の取得の開始を示す指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断する第２判断手段と、前記第２判断手段によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう更新されるまで、前記プロセス群のそれぞれへ前記指示を遅延して通知する第２通知手段とを備えた。
また、本発明は、計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理する第１手段と、前記第１のプロセスから、前記第１のプロセスと同じ第２のプロセスの生成を開始したい旨を示す要求を受け、この要求を許可する応答を前記第１のプロセスへ通知する第２手段と、前記プロセス群のプロセス状態の取得の開始の指示を受け、前記プロセス群へ前記プロセス群のプロセス状態の取得を指示する第３手段と、前記要求を受けると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断する第１判断手段と、前記第１判断手段によってあると判断された場合には、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう前記第１手段で更新された後に、前記第１のプロセスへ前記応答を通知する第１通知手段と、前記指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断する第２判断手段と、前記第２判断手段によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう前記第１手段で更新された後に、前記プロセス群のそれぞれへ前記指示を通知する第２通知手段とを備えた。
また、本発明は、計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理する、コンピュータに実行させるプログラムを記憶した記憶媒体であって、前記要求を受け取ると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断させ、この判断によってあると判断された場合に、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう更新されるまで、前記第１のプロセスへ前記応答を遅延し通知させる第１プログラムコードと、それぞれのプロセス状態の取得の開始を示す指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断させ、この判断によってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう更新されるまで、前記プロセス群のそれぞれへ前記指示を遅延し通知させる第２プログラムコードとを備えた。
また、本発明のコンピュータに実行させるプログラムを記憶した記憶媒体は、計算機上でプログラムが実行される際の実行体である第１のプロセスであって、前記第１のプロセスと同じ内容の第２のプロセスの生成を開始したい旨を示す要求を行って、この要求に対する許可を示す応答を受けて前記第２のプロセスを生成する機能を備える前記第１のプロセスと前記第１のプロセスと相互に関係がある他のプロセスとからなるプロセス群の、プロセス状態を取得している期間中であるか否かを示す第１期間情報、および前記第１のプロセスが前記第１のプロセスと同じ内容の第２のプロセスの生成を行っている期間中であるか否かを示す第２期間情報を更新管理させる第１プログラムコードと、前記第１のプロセスから、前記第１のプロセスと同じ第２のプロセスの生成を開始したい旨を示す要求を受け、この要求を許可する応答を前記第１のプロセスへ通知させる第２プログラムコードと、前記プロセス群のプロセス状態の取得の開始の指示を受け、前記プロセス群へ前記プロセス群のプロセス状態の取得を指示させる第３プログラムコードと、前記要求を受けると、前記第１期間情報に基づいて、前記プロセス群のプロセス状態を取得している期間中であるか否かを判断させる第４プログラムコードと、前記第４プログラムコードによってあると判断された場合には、前記第１期間情報が前記プロセス群のプロセス状態を取得している期間中でないことを示すよう前記第１手段で更新された後に、前記第１のプロセスへ前記応答を通知させる第５プログラムコードと、前記指示を受けると、前記第２期間情報に基づいて、前記第２のプロセスの生成を行っている期間中であるか否かを判断させる第６プログラムコードと、前記第６プログラムコードによってあると判断された場合には、前記第２期間情報が前記第２のプロセスの生成を行っている期間中でないことを示すよう前記第１手段で更新された後に、前記プロセス群のそれぞれへ前記指示を通知させる第７プログラムコードとを備えた。
【００１５】
本発明によれば、同期型チェックポイントに従ったプロセス状態の取得をするに際し、新たなプロセスが生成されるような場合にも、分散チェックポイントに従ったプロセス状態の取得（生成、保存）が矛盾なく行うことができるようになる。
【００３０】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照しつつ、説明する。
図３は、本発明に係るチェックポイントを用いたプロセス状態の管理方法およびプロセス状態管理システムを実現するハードウェアの概略構成を示す図である。本発明の実施の形態においては、計算機上でプログラムが実行される際の実行体をプロセスと呼ぶこととする。同図において、計算機１ａ，１ｂ，１ｃは、プログラムからプロセスを生成し、該プロセスを実行する。また、計算機１ａ，１ｂ，１ｃは、通信路２を介して相互に接続されている。
【００３１】
図４は、本発明に係るプロセス状態の管理方法等を実現するためのプログラムを説明するための概念図である。同図（ａ）に示すように、本発明に係るプロセス状態の管理方法は、アプリケーションプログラムとオペレーティングシステムとの間に実現したり、同図（ｂ）に示すように、アプリケーションの一部としてまたはオペレーティングシステムの一部として実現してもよい。さらに、図示はしていないが、独立に存在する必要はなく、アプリケーションの包含され、またはオペレーティングシステムに包含されていてもよく、特にこだわるものではない。
【００３２】
このように、本発明は、計算機（コンピュータ）によって実現され、後述する本発明の各機能は、プログラムが実行されることにより、実現することができる。
【００３３】
図５は、プロセス間通信及びプロセスの生成を説明するための概念図である。同図において、プロセスＰは、あるプログラムのコンピュータ上における実行体として把握することができる。このプロセスは１つの計算機内の他のプロセスと通信し、または２以上の計算機間のプロセス同士が通信を行いながら、実行される。また、プロセスは、他のプロセスを新たに生成することもできる。これは、例えば、ＵＮＩＸでいうforkシステムコール等によって、実現することができる。このようなプロセス群は、例えば、オペレーティングシステムやプロセスを管理するプロセスによって管理される。
【００３４】
図６は、本発明に係るチェックポイントを用いたプロセス状態の管理方法を実現するシステムの概略構成を示す図である。プロセス管理部６１は、各プロセスごとのローカルチェックポイントに従ったプロセス状態の保存を指示するプロセス状態チェックポイント指示部６１１を有する。また、プロセス管理部６１は、相互に関係があるプロセス群（プロセスグループ）を管理するためのプロセス管理テーブル６１２を有する。図７は、プロセス管理テーブル６１２の構成の一例を示す図である。同図に示すように、プロセス管理テーブル６１２は、グループＩＤフィールド７１、プロセス名フィールド７２、fork情報フィールド７３及びＣＰフィールド７４を有する。グループＩＤフィールドには、相互に関係があるプロセスを、例えば、ＩＤ番号等により管理するためのものである。プロセス名フィールド７２には、あるグループに所属するプロセスのプロセス名が登録される。また、fork情報フィールドは、さらに親プロセスＩＤフィールドと子プロセスＩＤフィールドを有し、それぞれfork処理を行う親プロセスとそれによって生成された子プロセスのプロセスＩＤが登録される。さらに、ＣＰフラグフィールド７４には、そのグループに所属するプロセス群がチェックポイントに従ってプロセス状態を保存中か否かを示すための値が登録される。
【００３５】
図６に戻り、各プロセス６２は、ローカルチェックポイントに従ってプロセス状態の保存を行うプロセス状態保存部６２１及び新たなプロセスを生成するための制御を行うfork制御部６２２を有する。
【００３６】
以上のようなチェックポイントを用いたプロセス状態の管理方法を機能実現手段の観点から把握すると以下のようになる。
すなわち、図８は、本発明に係るプロセス状態の管理方法を実現するシステムの機能ブロック図である。
【００３７】
同図において、プログラム実行部８１は、アプリケーションプログラムをプロセスとして実行する。このプログラム実行部８１は、プログラムの実行形式を問わず、コンパイラ実行、インタプリタ実行またはその他の実行形式であってもかまわない。プログラム実行部６１がアプリケーションプログラムを実行している間、fork実行監視部８２は、fork関数によりシステムコールが呼び出されようとしているか否かを監視する。このfork実行監視部８２は、forkシステムコールが呼び出されるべきことを検出すると、その旨をfork管理部８３に通知する。fork管理部８３は、親プロセスまたは子プロセスにより動作が異なる。ここで、親プロセスとは、新たなプロセスを生成したプロセスをいい、子プロセスとは、親プロセスから生成されたプロセスをいう。fork管理部８３は、forkシステムコールが呼び出される前においては、呼び出したプロセス（親プロセス）のプロセスＩＤをプロセス状態取得指示部８４に通知する。また、forkシステムコールを呼び出した後においては、親プロセスのfork管理部８３は、生成された子プロセスのプロセスＩＤをプロセス状態取得指示部８４に通知し、子プロセスのfork管理部８３は、自己のプロセスＩＤをプロセス状態取得指示部８４に通知する。
【００３８】
チェックポイントタイミング決定部８５は、実行中のプロセスの状態を保存するためのタイミング（チェックポイント・タイミング）を決定するためのものである。チェックポイントタイミング決定部８５は、例えば、他のプロセスまたはオペレーティングシステムにより管理されるタイマに基づいて、定期・不定期にチェックポイントを決定する。チェックポイントタイミング決定部８５は、チェックポイントであると判断した場合には、プロセス状態を保存するため、プロセス状態取得指示部８４にその旨通知する。
【００３９】
プロセス状態取得指示部８４は、fork管理部８３からの通知により、またはチェックポイントタイミング決定部８５からの通知により、プロセス状態を保存するようにプロセス状態取得部８６に指示を行うために、プロセス管理テーブル８７を参照し、必要ならばプロセス管理テーブル８７に所定の情報を登録する。
【００４０】
プロセス状態取得部８７は、プロセス状態取得指示部８４の指示に従い、必要ならばプログラム実行部８１から情報を取り込んで、プロセスごとのプロセス状態を生成し、これをプロセス状態記憶部８８に記憶する。
【００４１】
以上のように構成された本発明に係るシステムは、以下のように動作する。
図９は、fork制御部の動作処理を説明するための図である。
新たにプロセスを生成するプロセス（親プロセス）のfork実行監視部８２は、forkシステムコールが呼び出されることを検出すると、fork管理部８３にその旨通知する。fork管理部８３は、forkシステムコールが呼び出される前に、プロセス状態取得指示部８４に自分のプロセスＩＤを通知し（ＳＴ９０１）、プロセス状態取得指示部８４からの応答を待機する（ＳＴ９０２）。そして、プロセス状態取得指示部８４による後述する所定の動作処理を行うことによって応答が返ってきた場合には、fork管理部８３はforkシステムコールを実行する（ＳＴ９０３）。
【００４２】
fork管理部８３は、forkシステムコールの実行後、親プロセスと子プロセスの双方に分かれて処理を続けることとなる（ＳＴ９０４）。親プロセスにおけるfork管理部８３は、生成された子プロセスのプロセスＩＤをプロセス状態取得指示部８４に通知し（ＳＴ９０５）、該プロセス状態取得指示部８４からの応答を待機する（ＳＴ９０７）。一方、子プロセスのfork管理部８３は、自己のプロセスＩＤをプロセス状態取得指示部８４に通知し（ＳＴ９０６）、応答を待機する（ＳＴ９０７）。以上がfork制御部における動作処理である。
【００４３】
次にプロセス状態取得指示部８４の動作処理について説明する。
図１０は、プロセス生成時におけるプロセス状態取得指示部８４の動作処理を説明するための図である。
【００４４】
上述のようにfork管理部８３は、forkシステムコールが呼び出される前に、プロセス状態取得指示部８４に自分のプロセスＩＤを通知し、プロセス状態取得指示部８４からの応答を待機する。そして、プロセス状態取得指示部８４は、すでにそのプロセスの属するグループのfork情報フィールドに所定の情報（プロセスＩＤ）が登録されているか否かを判断し（ＳＴ１００１）、登録されていると判断した場合には、fork情報がクリアされるのを待機する（ＳＴ１００２）。また、fork情報フィールドに登録されていない場合や、fork情報フィールドがクリアされた場合には、当該プロセスが所属するグループのＣＰフラグフィールドを調べ、ＣＰフラグがセットされているか否かを判断する（ＳＴ１００３）。そして、プロセス状態取得指示部８４は、ＣＰフラグがセットされていると判断した場合には、それがクリアされるまで待機する（ＳＴ１００４）。その後、プロセス状態取得指示部８４は、当該グループのfork情報の親プロセスＩＤフィールドに、fork管理部８３から通知されたプロセスＩＤを登録して応答を返す（ＳＴ１００５）。一方、ＣＰフラグがセットされていない場合は、待機することなくグループのfork情報の親プロセスＩＤフィールドに、通知されたプロセスＩＤを登録し、応答を返す（ＳＴ１００５）。
【００４５】
図１１は、親プロセスのfork管理部８３が子プロセスのプロセスＩＤをプロセス状態取得指示部８４に通知した場合の動作処理を説明するための図である。
上述のようにfork管理部８３は、forkシステムコールの実行後、親プロセスと子プロセスの双方に分かれて処理を続けることとなる。親プロセスにおけるfork管理部８３は、生成された子プロセスのプロセスＩＤをプロセス状態取得指示部８４に通知し、該プロセス状態取得指示部８４からの応答を待機する。
【００４６】
プロセス状態取得指示部８４は、当該プロセスが所属するグループのfork情報の子プロセスＩＤフィールドに、通知されたプロセスＩＤを登録し（ＳＴ１１０１）、さらに親プロセスが所属するグループと同一のグループのプロセス名フィールドに子プロセスのプロセスＩＤを登録し（ＳＴ１１０２）、応答を返す（ＳＴ１１０３）。
【００４７】
図１２は、子プロセスのfork管理部８３が自己のプロセスＩＤをプロセス状態取得指示部８４に通知した場合の動作処理を説明するための図である。
上述のように子プロセスのfork管理部８３は、自己のプロセスＩＤをプロセス状態取得指示部８４に通知し、応答を待機する。プロセス状態取得指示部８４は、通知されたプロセスＩＤが当該グループのfork情報フィールドの子プロセスＩＤフィールドに登録されているか否かを判断する（ＳＴ１２０１）。これは、プロセスの並行動作に基づく挙動の非決定性ゆえ、親プロセスによる子プロセスのプロセスＩＤの通知よりも前に、子プロセスが自己のプロセスＩＤを通知する場合があるためである。ＳＴ１２０１において、登録されていないと判断した場合には、フィールドの内容が一致するまで、すなわち、登録されるまで待機し（ＳＴ１２０２）、以降の処理を行う。一方、登録されていると判断した場合には、そのfork情報をクリアし、応答を返す（ＳＴ１２０３）。
【００４８】
図１３は、プロセス状態取得指示部８４の動作処理を説明するための図である。また、図１４は、各プロセスのプロセス状態取得部８７の動作処理を説明するための図である。
【００４９】
プロセス状態取得指示部８４は、あるプロセスグループのチェックポイントにおけるプロセス状態の取得に際し、そのグループのＣＰフラグをセットする（図１３のＳＴ１３０１）。その後、グループのfork情報フィールドを調べ、そのfork情報がセットされているか否かを判断する（ＳＴ１３０２）。プロセス状態取得指示部８４は、そのfork情報がセットされていると判断した場合には、そのfork情報がクリアされるのを待機する（ＳＴ１３０３）。一方、fork情報がセットされていないと判断した場合には、チェックポイントにおけるプロセス状態の生成処理を継続する。すなわち、各プロセスのプロセス状態取得部８７にチェックポイントにおけるプロセス状態の取得を指示し（ＳＴ１３０４）、各プロセスのチェックポイントにおけるプロセス状態の取得が終了することを待機する（ＳＴ１３０５）。プロセス状態の取得指示があるまで待機していた各プロセスのプロセス状態取得部８７は、該取得指示を受けて、チェックポイントにおけるプロセス状態を生成、保存し（図１４のＳＴ１４０１，ＳＴ１４０２）、応答を返す（ＳＴ１４０３）。プロセス状態取得指示部８４は、各プロセスのチェックポイントにおけるプロセス状態の取得が終了した後、当該グループのＣＰフラグをクリアする（図１３のＳＴ１３０６）。
【００５０】
図１５は、本発明に係るプロセス状態の管理方法における一連の動作処理を説明するための図である。
同図（ａ）は、プロセスの生成要求が先に発生し、その後、チェックポイントにおけるプロセス状態の取得が行われた場合の状態を示す図であり、同図（ｂ）は、チェックポイントにおけるプロセス状態の取得が先に行われ、その後、プロセスの生成要求が発生した場合の状態を示す図である。
【００５１】
まず、同図（ａ）において、fork処理が開始されると、最初の親プロセスからのfork情報の通知により、チェックポイントタイミング決定部により通知されたチェックポイント（ＣＰ）におけるプロセス状態の生成は、該fork処理が終了するまで遅延されることとなる。すなわち、親（となる）プロセスにおいてfork実行に基づく一連の処理が開始されると（図中Ａ点、以下同じ。）、親プロセスが自己のプロセスＩＤをプロセス管理部に通知し（Ｂ）、プロセス管理部からの応答があるまで待機する。プロセス管理部は、所定の処理を経て親プロセスに応答を返し（Ｃ）、親プロセスは、該応答によってforkシステムコールを実行する（Ｄ）。
【００５２】
親プロセスによるforkシステムコールを実行後、親プロセスは、生成された子プロセスのプロセスＩＤをプロセス管理部に通知し（Ｅ）、登録された旨の応答を受ける（Ｆ）。一方、子プロセスは、自己のプロセスＩＤをプロセス管理部に通知し（Ｇ）、fork情報フィールドの内容がクリアされた旨の応答を受ける（Ｈ）。以上のforkシステムコールに基づく一連の処理が終了した後、プロセス管理部は、各プロセスにプロセス状態の取得を指示する（Ｉ１，Ｉ２）。取得指示を受けた各プロセスは、自己のプロセス状態を取得し、終了した旨をプロセス管理部に通知する（Ｊ１，Ｊ２）。
【００５３】
これにより、新たなプロセスが生成される間は、プロセス状態の取得のためのチェックポイントであると決定されても、該プロセス生成が完了するまで遅延されることとなり、分散チェックポイントに従ったプロセス状態の取得を矛盾なく行うことができるようになる。
【００５４】
一方、同図（ｂ）において、チェックポイントタイミング決定部８５によりチェックポイントであると決定され（Ａ）、ＣＰフラグはＯＮとなる（Ｃ）。その後、プロセスの生成要求が発生したとする（Ｂ）。従って、親プロセスが自己のプロセスＩＤを通知しても（Ｄ）、チェックポイントにおけるプロセス状態の取得指示が通知され（Ｅ）、チェックポイントにおける一連の処理が終了した旨の通知（Ｆ）があるまで、登録された旨の応答は返されないこととなる（Ｇ）。そして、該応答を受けた後に、forkシステムコールが実行され、子プロセスが生成されることとなる（Ｈ）。
【００５５】
これにより、チェックポイントに従ったプロセス状態の取得中は、新たなプロセスの生成は、該一連のチェックポイントに基づく処理が終了するまで遅延されるので、新たなプロセス生成を行うような場合にも分散チェックポイントに従ったプロセス状態の取得を矛盾なく行うことができるようになる。
【００５６】
なお、本発明は、親プロセスから他のプロセスが生成され、さらに当該他のプロセスから子プロセスが生成される場合においても、同様に、矛盾なくプロセス状態の取得を行うことができる。
また、本発明は、複数の親プロセスのそれぞれから複数の子プロセスが生成される倍においても、同様に実現可能である（図１６）。
【００５７】
【発明の効果】
本発明によれば、同期型チェックポイントに従ったプロセス状態の取得をするに際し、新たなプロセスが生成されるような場合にも、分散チェックポイントに従ったプロセス状態の取得（生成、保存）が矛盾なく行うことができるようになる。
【図面の簡単な説明】
【図１】  分散チェックポイントの例を示す図。
【図２】  同期型チェックポイントにおける新たなプロセスを生成する場合のチェックポイントの例を示す図。
【図３】  本発明に係るプロセス状態の管理方法等を実現するハードウェアの概略構成を示す図。
【図４】  本発明に係るプロセス状態の管理方法等を実現するためのプログラムを説明するための概念図。
【図５】  プロセス間通信及びプロセスの生成を説明するための概念図。
【図６】  本発明に係るプロセス状態の管理方法を実現するシステムの概略構成を示す図。
【図７】  プロセス管理テーブルの構成の一例を示す図。
【図８】  本発明に係るプロセス状態の管理方法を実現するシステムの機能ブロック図。
【図９】  fork制御部の動作処理を説明するための図。
【図１０】  プロセス生成時におけるプロセス状態取得指示部の動作処理を説明するための図。
【図１１】  親プロセスのfork管理部がfork情報をプロセス状態取得指示部に通知した場合の動作処理を説明するための図。
【図１２】  子プロセスのfork管理部がfork情報をプロセス状態取得指示部に通知した場合の動作処理を説明するための図。
【図１３】  プロセス状態取得指示部の動作処理を説明するための図。
【図１４】  各プロセスのプロセス状態取得部の動作処理を説明するための図
【図１５】  本発明に係るプロセス状態の管理方法における一連の動作処理を説明するための図。
【図１６】  本発明に係るプロセス状態の管理方法における一連の動作処理を説明するための図。
【符号の説明】
１…計算機
２…通信路
６１…プロセス管理部
６１１，８４…プロセス状態取得指示部
６１２，８６…プロセス管理テーブル
６２…プロセス
６２１，８７…プロセス状態取得部
６２２…fork制御部
８１…プログラム実行部
８２…fork実行監視部
８３…fork管理部
８５…チェックポイントタイミング決定部
８８…プロセス状態記憶部
【図１】
0003725318.tif 000002
【図２】
0003725318.tif 000003
【図３】
0003725318.tif 000004
【図４】
0003725318.tif 000005
【図５】
0003725318.tif 000006
【図６】
0003725318.tif 000007
【図７】
0003725318.tif 000008
【図８】
0003725318.tif 000009
【図９】
0003725318.tif 000010
【図１０】
0003725318.tif 000011
【図１１】
0003725318.tif 000012
【図１２】
0003725318.tif 000013
【図１３】
0003725318.tif 000014
【図１４】
0003725318.tif 000015
【図１５】
0003725318.tif 000016
【図１６】
0003725318.tif 000017