(57)【特許請求の範囲】
【請求項１】
複数の監視対象プログラムによるそれぞれのプロセスの死活を監視するプロセス監視システムであって、
記憶手段と、
複数のプロセス監視手段と
を含み、
各上記プロセス監視手段が、複数の上記プロセス監視手段のうち自己以外の少なくとも一つのプロセス監視手段の動作状況を監視し、かつ、複数の上記プロセス監視手段のうち自分以外の少なくとも一つのプロセス監視手段から自己の動作状況を監視される、ように複数の上記プロセス監視手段の間の監視が構成されており、
各上記プロセス監視手段は、
複数の上記監視対象プログラムのうち対応する監視対象プログラムに組み込まれるプログラムによって実現され、
当該プロセス監視手段が起動した際に上記記憶手段にプロセス情報を保存するプロセス情報登録手段と、
セマフォに基づきオペレーティングシステムが解放するイベントを監視することによって、当該プロセス監視手段の監視対象であるプロセス監視手段の動作状況を監視するプロセス停止検知手段と、
上記プロセス停止検知手段が監視対象であるプロセス監視手段の停止を検知した場合に、上記記憶手段に登録された上記プロセス情報を参照して上記停止したプロセス監視手段に対応する監視対象プログラムを実行した後、自プロセスを終了させる独立プロセス再起動手段と
を含み、
各上記プロセス監視手段を実現する上記プログラムはダイナミックリンクライブラリとして構成されている
ことを特徴とするプロセス監視システム。
【請求項２】
複数の監視対象プログラムによるそれぞれのプロセスの死活を監視するプロセス監視システムであって、
記憶手段と、
複数のプロセス監視手段と
を含み、
各上記プロセス監視手段が、複数の上記プロセス監視手段のうち自己以外の少なくとも一つのプロセス監視手段の動作状況を監視し、かつ、複数の上記プロセス監視手段のうち自分以外の少なくとも一つのプロセス監視手段から自己の動作状況を監視される、ように複数の上記プロセス監視手段の間の監視が構成されており、
各上記プロセス監視手段は、
当該プロセス監視手段が起動した際に上記記憶手段に、当該プロセス監視手段および当該プロセス監視手段の監視対象である監視対象プログラムによるプロセスのそれぞれのプロセス情報を保存するプロセス情報登録手段と、
セマフォに基づきオペレーティングシステムが解放するイベントを監視することによって、当該プロセス監視手段の監視対象であるプロセス監視手段の動作状況および当該プロセス監視手段の監視対象である監視対象プログラムによるプロセスの死活を監視するプロセス停止検知手段と、
上記プロセス停止検知手段が監視対象であるプロセス監視手段または監視対象プログラムによるプロセスの停止を検知した場合に、上記記憶手段に登録された上記プロセス情報を参照して上記停止したプロセス監視手段または監視対象プログラムによるプロセスを再起動した後、自プロセスを終了させる独立プロセス再起動手段と
を含み、
各上記プロセス監視手段を実現するプログラムはそれぞれ各上記監視対象プログラムから分離されている
ことを特徴とするプロセス監視システム。
【請求項３】
請求項１または請求項２に記載のプロセス監視システムにおいて、
上記プロセス監視手段の個数は、上記監視対象プログラムの個数と同じであり、
各上記プロセス監視手段は、複数の上記プロセス監視手段のうち自己以外の一つのプロセス監視手段の動作状況を監視し、かつ、複数の上記プロセス監視手段のうち自分以外の一つのプロセス監視手段から自己の動作状況を監視されることにより、複数の上記プロセス監視手段の間の監視が環状に構成されている
ことを特徴とするプロセス監視システム。
【請求項４】
記憶手段と、
それぞれが、複数の監視対象プログラムのうち対応する監視対象プロセスに組み込まれるダイナミックリンクライブラリによって実現される、複数のプロセス監視手段と
を含み、
各上記プロセス監視手段が、複数の上記プロセス監視手段のうち自己以外の少なくとも一つのプロセス監視手段の動作状況を監視し、かつ、複数の上記プロセス監視手段のうち自分以外の少なくとも一つのプロセス監視手段から自己の動作状況を監視される、ように複数の上記プロセス監視手段の間の監視が構成されている
プロセス監視システムにおけるプロセス監視方法であって、
各上記プロセス監視手段が、当該プロセス監視手段が起動した際に上記記憶手段にプロセス情報を保存するプロセス情報登録ステップと、
各上記プロセス監視手段が、セマフォに基づきオペレーティングシステムが解放するイベントを監視することによって、当該プロセス監視手段の監視対象であるプロセス監視手段の動作状況を監視するプロセス停止検知ステップと、
各上記プロセス監視手段が、上記プロセス停止検知ステップにて監視対象であるプロセス監視手段の停止を検知した場合に、上記記憶手段に登録された上記プロセス情報を参照して上記停止したプロセス監視手段に対応する監視対象プログラムを実行した後、自プロセスを終了させる独立プロセス再起動ステップと
を有することを特徴とするプロセス監視方法。
【請求項５】
記憶手段と、
それぞれが、複数の監視対象プログラムのそれぞれから分離されているプログラムによって実現される、複数のプロセス監視手段と
を含み、
各上記プロセス監視手段が、複数の上記プロセス監視手段のうち自己以外の少なくとも一つのプロセス監視手段の動作状況を監視し、かつ、複数の上記プロセス監視手段のうち自分以外の少なくとも一つのプロセス監視手段から自己の動作状況を監視される、ように複数の上記プロセス監視手段の間の監視が構成されている
プロセス監視システムにおけるプロセス監視方法であって、
各上記プロセス監視手段が、当該プロセス監視手段が起動した際に上記記憶手段に、当該プロセス監視手段および当該プロセス監視手段の監視対象である監視対象プログラムによるプロセスのそれぞれのプロセス情報を保存するプロセス情報登録ステップと、
各上記プロセス監視手段が、セマフォに基づきオペレーティングシステムが解放するイベントを監視することによって、当該プロセス監視手段の監視対象であるプロセス監視手段の動作状況および当該プロセス監視手段の監視対象である監視対象プログラムによるプロセスの死活を監視するプロセス停止検知ステップと、
各上記プロセス監視手段が、上記プロセス停止検知ステップにて監視対象であるプロセス監視手段または監視対象プログラムによるプロセスの停止を検知した場合に、上記記憶手段に登録された上記プロセス情報を参照して上記停止したプロセス監視手段または監視対象プログラムによるプロセスを再起動した後、自プロセスを終了させる独立プロセス再起動ステップと
を有することを特徴とするプロセス監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム上のプロセスが何らかの理由によって終了した場合、システムの正常動作を担保するため、当該終了プロセスを再起動する、プロセス監視技術に関する。
【背景技術】
【０００２】
コンピュータシステム上のプロセスを監視し、プロセスが不具合によって終了した場合や、悪意の第三者によって終了した場合などに、このイベントを捕捉して、終了したプロセスを再起動させるプロセス監視技術に関するニーズは、システム全体の正常運用管理や悪意の第三者によるシステムへの妨害行為の排除といった様々な利用形態が想定されることから、非常に高い（非特許文献１，２参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】安齋希美、“PostgreSQL多機能ミドルウェア pgpool-II 最新活用方法”、平成25年2月12日、SRA OSS, Inc. Japan、[平成25年10月9日検索]、インターネット〈URL: http://www.sraoss.co.jp/event_seminar/2013/20130212_pgpool_seminar_sraoss.pdf〉
【非特許文献２】北村雅人、“UNIX／NT サーバー 高信頼性確保のための方策”、2001年6月、株式会社シーエーシー技術レポート誌「SOFTECHS」Vol．24  No．1、[平成25年10月9日検索]、インターネット〈URL: http://www.cac.co.jp/softechs/pdf/st2401_05.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のプロセス監視技術では、監視専用のプログラムを監視対象のプログラム（以下、監視対象プログラムという）に組み込まなくてはならず、監視対象プログラムの大きな改変が必要であるという課題があった。
また、通常、プロセスが他のプロセスを単純に生成した場合にはプロセスに親子関係ができるが、この場合、親プロセスを終了すると芋づる式にプロセスツリー全体が終了され、最悪の場合すべてのプロセスが終了してしまい、プロセスの監視と再起動が実施できなくなり監視不能に陥るという課題もあった。
【０００５】
本発明は、監視対象プログラムへの影響が少ないながらも監視不能に陥ることを防ぐことのできるプロセス監視技術を提供する。
【課題を解決するための手段】
【０００６】
本発明のプロセス監視技術は、複数の監視対象プログラムによるそれぞれのプロセスの死活を監視するプロセス監視技術であって、複数のプロセス監視手段のそれぞれが、複数の監視対象プログラムのうち対応する監視対象プロセスに組み込まれるダイナミックリンクライブラリによって実現されるものであり、各プロセス監視手段が、複数のプロセス監視手段のうち自己以外の少なくとも一つのプロセス監視手段の動作状況を監視し、かつ、複数のプロセス監視手段のうち自分以外の少なくとも一つのプロセス監視手段から自己の動作状況を監視されるように複数のプロセス監視手段の間の監視が構成されている。そして、各プロセス監視手段は、当該プロセス監視手段が起動した際に記憶手段にプロセス情報を保存しておき、各プロセス監視手段は、当該プロセス監視手段の監視対象であるプロセス監視手段の動作状況を監視する。さらに、各プロセス監視手段は、監視対象であるプロセス監視手段の停止が検知された場合に、記憶手段に登録されたプロセス情報を参照して、当該プロセス監視手段と同じプロセスツリーに含まれないように、停止したプロセス監視手段に対応する監視対象プログラムを実行する。
【０００７】
あるいは、本発明のプロセス監視技術は、複数の監視対象プログラムによるそれぞれのプロセスの死活を監視するプロセス監視技術であって、複数のプロセス監視手段のそれぞれが各監視対象プログラムから分離されているプログラムによって実現されるものであり、各プロセス監視手段が、複数のプロセス監視手段のうち自己以外の少なくとも一つのプロセス監視手段の動作状況を監視し、かつ、複数のプロセス監視手段のうち自分以外の少なくとも一つのプロセス監視手段から自己の動作状況を監視されるように複数のプロセス監視手段の間の監視が構成されている。そして、各プロセス監視手段は、当該プロセス監視手段が起動した際に記憶手段に、当該プロセス監視手段および当該プロセス監視手段の監視対象である監視対象プログラムによるプロセスのそれぞれのプロセス情報を保存しておき、各プロセス監視手段は、当該プロセス監視手段の監視対象であるプロセス監視手段の動作状況および当該プロセス監視手段の監視対象である監視対象プログラムによるプロセスの死活を監視する。さらに、各プロセス監視手段は、監視対象であるプロセス監視手段または監視対象プログラムによるプロセスの停止が検知された場合に、記憶手段に登録されたプロセス情報を参照して、当該プロセス監視手段と同じプロセスツリーに含まれないように、停止したプロセス監視手段または監視対象プログラムによるプロセスを再起動する。
【発明の効果】
【０００８】
本発明によると、プロセス監視手段が、監視対象プロセスに組み込まれるダイナミックリンクライブラリあるいは監視対象プロセスから独立したプログラムによって実現され、さらに、停止したプロセスの再起動を起動元のプロセスと同じプロセスツリーに含まれないようにしているため、監視対象プログラムへの影響が少ないながらも監視不能に陥ることを防ぐことができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態のシステム構成例を示す図。
【図２】プロセスの親子関係の分断を説明する図。
【図３】第２実施形態のシステム構成例を示す図。
【発明を実施するための形態】
【００１０】
＜第１実施形態＞
第１実施形態のプロセス監視システム１００は、Ｎ個（ただし、Ｎは２以上の予め定められた整数である）の監視対象プログラム１３０1，１３０2，…，１３０N-1，１３０Nによるそれぞれのプロセスの死活を監視するシステムであり、記憶手段であるレジストリ１１０と、Ｎ個のプロセス監視手段１２０1，１２０2，…，１２０N-1，１２０Nを含んでいる。Ｎ個のプロセス監視手段１２０1，１２０2，…，１２０N-1，１２０Nはそれぞれレジストリ１１０にアクセス可能に構成されている。
【００１１】
なお、本明細書におけるレジストリとの呼称は、特定のオペレーティングシステムを前提とするものではなく、アプリケーションが使用する記憶領域を一般的に指すものとする。
【００１２】
プロセス監視手段１２０1，１２０2，…，１２０N-1，１２０Nはそれぞれ、プロセス監視手段１２０1，１２０2，…，１２０N-1，１２０Nのうち自己以外の少なくとも一つのプロセス監視手段の動作状況を監視し、かつ、プロセス監視手段１２０1，１２０2，…，１２０N-1，１２０Nのうち自分以外の少なくとも一つのプロセス監視手段から自己の動作状況を監視されるように、プロセス監視手段１２０1，１２０2，…，１２０N-1，１２０Nの間の監視が構成されている。
つまり、任意のプロセス監視手段１２０i（i∈{1,2,…,N-1,N}）は、少なくとも一つのプロセス監視手段１２０j（j∈{1,2,…,N-1,N}-{i}）の動作状況を監視し、かつ、少なくとも一つのプロセス監視手段１２０k（k∈{1,2,…,N-1,N}-{i}）から自己（つまりプロセス監視手段１２０i）の動作状況を監視される。
【００１３】
図１に示す例では、任意のプロセス監視手段と当該プロセス監視手段の監視対象となるプロセス監視手段との間に、プロセス監視手段を識別するために付された符号１２０の添え字についての巡回置換（N N-1 … 2 1）が成立しているため、複数のプロセス監視手段の間の監視が環状（あるいは循環状と呼称しても差し支えない）に構成されている。つまり、この例では、プロセス監視手段１２０Nはプロセス監視手段１２０N-1の動作状況を監視し、プロセス監視手段１２０N-1はプロセス監視手段１２０N-2の動作状況を監視し、・・・、プロセス監視手段１２０2はプロセス監視手段１２０1の動作状況を監視し、プロセス監視手段１２０1はプロセス監視手段１２０Nの動作状況を監視している。
【００１４】
プロセス監視手段１２０1，１２０2，…，１２０N-1，１２０Nはそれぞれ、Ｎ個の監視対象プログラム１３０1，１３０2，…，１３０N-1，１３０Nのうち対応する監視対象プログラムに組み込まれるプログラムによって実現されるが、これらのプログラムはそれぞれダイナミックリンクライブラリとして構成されている。図１に示す例では、任意のプロセス監視手段１２０i（i∈{1,2,…,N-1,N}）は監視対象プログラム１３０iに組み込まれるダイナミックリンクライブラリによって実現される。このようにプロセス監視手段を実現するためのプログラムをダイナミックリンクライブラリとして構成することによって、監視対象プログラムの改変は使用するライブラリを指定するコードの追加だけで済み、監視対象プログラムのローディング時にプロセス監視手段を容易に実現できるようになる。
【００１５】
なお、本明細書におけるダイナミックリンクライブラリとの呼称は、特定のオペレーティングシステムを前提とするものではなく、動的リンクを使ったライブラリを一般的に指すものとする。
【００１６】
任意のプロセス監視手段１２０i（i∈{1,2,…,N-1,N}）は、プロセス情報登録手段１２１iと、プロセス停止検知手段１２２iと、独立プロセス再起動手段１２３iを含む。
【００１７】
プロセス情報登録手段１２１i（i∈{1,2,…,N-1,N}）は、プロセス監視手段１２０iが起動した際にレジストリ１１０に監視対象プログラム１３０iのプロセス情報を保存する。プロセス情報の具体例として、プロセスIDと実行ファイルパスが挙げられる。なお、各プロセス監視手段にはレジストリ登録順に１から始まる連続のレジストリ番号が付与されているとする（この明細書では、プロセス監視手段を識別するために付された符号１２０の添え字をレジストリ番号に一致させている）。
【００１８】
プロセス停止検知手段１２２i（i∈{1,2,…,N-1,N}）は、プロセス監視手段１２０iの監視対象であるプロセス監視手段１２０j（j∈{1,2,…,N-1,N}-{i}）の動作状況を監視する。例えば、図１に示した環状の監視構成であれば、プロセス停止検知手段１２２iは、プロセス監視手段１２０iの監視対象であるプロセス監視手段１２０i-1（ただし、i=1の場合はプロセス監視手段１２０Nである）の動作状況を監視する。この監視方法の具体例としては、監視対象のプロセスハンドルを取得してプロセスが停止したシグナルを受信する方法や、セマフォに基づいてオペレーティングシステムが解放するイベントを監視する方法などが挙げられる。
【００１９】
独立プロセス再起動手段１２３i（i∈{1,2,…,N-1,N}）は、プロセス停止検知手段１２２iが監視対象のプロセス監視手段１２０j（j∈{1,2,…,N-1,N}-{i}）の停止を検知した場合に、レジストリ１１０に登録されているプロセス情報を参照して、プロセス監視手段１２０iと同じプロセスツリーに含まれないように、停止したプロセス監視手段１２０jに対応する監視対象プログラム１３０jを実行して、監視対象プログラム１３０jによるプロセスを再起動させる。例えば、図１に示した環状の監視構成であれば、独立プロセス再起動手段１２３iは、プロセス停止検知手段１２２iが監視対象のプロセス監視手段１２０i-1（ただし、i=1の場合はプロセス監視手段１２０Nである）の停止を検知した場合に、レジストリ１１０に登録されているプロセス情報を参照して、プロセス監視手段１２０iと同じプロセスツリーに含まれないように、停止したプロセス監視手段１２０i-1に対応する監視対象プログラム１３０i-1を実行して、監視対象プログラム１３０i-1によるプロセスを再起動させる（監視対象プログラム１３０i-1が実行されると、プロセス監視手段１２０i-1も起動される）。
ここで、「同じプロセスツリーに含まれないように」とは、プロセス監視手段１２０iと再起動されるプロセス監視手段１２０i-1との間の親子関係を分断することであり、これは、例えば、いわゆる二重forkによって実現できる（図２参照）。
つまり、独立プロセス再起動手段１２３i（i∈{1,2,…,N-1,N}）は、プロセス停止検知手段が監視対象の終了を検知すると呼び出され、終了したプロセスを生成（再起動）した後、自プロセス（独立プロセス再起動手段）を終了する。これによって生成（再起動）プロセスは親プロセス（例えば、プロセス監視手段や独立プロセス再起動手段）を持たない孤児プロセスとなる。結果として本来では一つのプロセスツリーでつながっていた、プロセス監視手段と生成（再起動）プロセス（つまり、再起動されたプロセス監視手段）の親子関係が切れ、独立したプロセスツリーへと切り離される。これによって、芋づる式に監視対象プロセスが停止し、最悪の場合に、監視と再起動が実施できなくなることを回避できる。
【００２０】
なお、このような監視構成によると、Ｎ個のプロセス監視手段のうちのＮ−１個のプロセス監視手段が何らかの事由で終了しても全てのプロセス監視手段を再起動させることができ、とくに環状の監視構成であれば、各プロセス監視手段は前段のプロセス監視手段のプロセスを監視するだけでよいという利点もある。
【００２１】
図１に示す環状監視の例では、任意のプロセス監視手段１２０i（i∈{1,2,…,N-1,N}）は、一つのプロセス監視手段１２０j（j∈{1,2,…,N-1,N}-{i}）の動作状況を監視するとしたが、一つのプロセス監視手段が二つ以上のプロセス監視手段を監視し、あるいは、二つ以上のプロセス監視手段が一つのプロセス監視手段を監視する構成であってもよい。
【００２２】
＜第２実施形態＞
第２実施形態のプロセス監視システム２００は、Ｎ個（ただし、Ｎは２以上の予め定められた整数である）の監視対象プログラム２３０1，２３０2，…，２３０N-1，２３０Nによるそれぞれのプロセスの死活を監視するシステムであり、記憶手段であるレジストリ２１０と、Ｎ個のプロセス監視手段２２０1，２２０2，…，２２０N-1，２２０Nを含んでいる。Ｎ個のプロセス監視手段２２０1，２２０2，…，２２０N-1，２２０Nはそれぞれレジストリ２１０にアクセス可能に構成されている。
【００２３】
プロセス監視手段２２０1，２２０2，…，２２０N-1，２２０Nはそれぞれ、プロセス監視手段２２０1，２２０2，…，２２０N-1，２２０Nのうち自己以外の少なくとも一つのプロセス監視手段の動作状況を監視し、かつ、プロセス監視手段２２０1，２２０2，…，２２０N-1，２２０Nのうち自分以外の少なくとも一つのプロセス監視手段から自己の動作状況を監視されるように、プロセス監視手段２２０1，２２０2，…，２２０N-1，２２０Nの間の監視が構成されている。
つまり、任意のプロセス監視手段２２０i（i∈{1,2,…,N-1,N}）は、少なくとも一つのプロセス監視手段２２０j（j∈{1,2,…,N-1,N}-{i}）の動作状況を監視し、かつ、少なくとも一つのプロセス監視手段２２０k（k∈{1,2,…,N-1,N}-{i}）から自己（つまりプロセス監視手段２２０i）の動作状況を監視される。
【００２４】
図３に示す例では、任意のプロセス監視手段と当該プロセス監視手段の監視対象となるプロセス監視手段との間に、プロセス監視手段を識別するために付された符号２２０の添え字についての巡回置換（N N-1 … 2 1）が成立しているため、複数のプロセス監視手段の間の監視が環状（あるいは循環状と呼称しても差し支えない）に構成されている。つまり、この例では、プロセス監視手段２２０Nはプロセス監視手段２２０N-1の動作状況を監視し、プロセス監視手段２２０N-1はプロセス監視手段２２０N-2の動作状況を監視し、・・・、プロセス監視手段２２０2はプロセス監視手段２２０1の動作状況を監視し、プロセス監視手段２２０1はプロセス監視手段２２０Nの動作状況を監視している。
【００２５】
プロセス監視手段２２０1，２２０2，…，２２０N-1，２２０Nはそれぞれ、Ｎ個の監視対象プログラム２３０1，２３０2，…，２３０N-1，２３０Nのいずれからも分離されている独立のプログラムによって実現される。
【００２６】
任意のプロセス監視手段２２０i（i∈{1,2,…,N-1,N}）は、プロセス情報登録手段２２１iと、プロセス停止検知手段２２２iと、独立プロセス再起動手段２２３iを含む。
【００２７】
プロセス情報登録手段２２１i（i∈{1,2,…,N-1,N}）は、プロセス監視手段２２０iが起動した際にレジストリ２１０に、プロセス監視手段２２０iおよびプロセス監視手段２２０iの監視対象である監視対象プログラム２３０iによるプロセスのそれぞれのプロセス情報を保存する。プロセス情報の具体例として、プロセスIDと実行ファイルパスが挙げられる。なお、各プロセス監視手段にはレジストリ登録順に１から始まる連続のレジストリ番号が付与されているとする（この明細書では、プロセス監視手段を識別するために付された符号１２０の添え字をレジストリ番号に一致させている）。
【００２８】
プロセス停止検知手段２２２i（i∈{1,2,…,N-1,N}）は、プロセス監視手段２２０iの監視対象であるプロセス監視手段２２０j（j∈{1,2,…,N-1,N}-{i}）の動作状況およびプロセス監視手段２２０iの監視対象である監視対象プログラム２３０iによるプロセスの死活を監視する。例えば、図３に示した環状の監視構成であれば、プロセス停止検知手段２２２iは、プロセス監視手段２２０iの監視対象であるプロセス監視手段２２０i-1（ただし、i=1の場合はプロセス監視手段２２０Nである）の動作状況およびプロセス監視手段２２０iの監視対象である監視対象プログラム２３０iによるプロセスの死活を監視する。この監視方法の具体例としては、監視対象である監視対象プログラムによるプロセスとプロセス監視手段のそれぞれのプロセスハンドルを取得してプロセスが停止したシグナルを受信する方法や、セマフォに基づきオペレーティングシステムが解放するイベントを監視する方法などが挙げられる。
【００２９】
独立プロセス再起動手段２２３i（i∈{1,2,…,N-1,N}）は、プロセス停止検知手段２２２iが監視対象のプロセス監視手段２２０j（j∈{1,2,…,N-1,N}-{i}）または監視対象プログラム２３０iによるプロセスの停止を検知した場合に、レジストリ２１０に登録されているプロセス情報を参照して、プロセス監視手段２２０iと同じプロセスツリーに含まれないように、停止したプロセス監視手段２２０jを実現するためのプログラムまたは停止した監視対象プログラム２３０iを実行して、プロセス監視手段２２０jまたは監視対象プログラム２３０iによるプロセスを再起動させる。例えば、図３に示した環状の監視構成であれば、独立プロセス再起動手段２２３iは、プロセス停止検知手段２２２iが監視対象のプロセス監視手段２２０i-1（ただし、i=1の場合はプロセス監視手段２２０Nである）または監視対象プログラム２３０iによるプロセスの停止を検知した場合に、レジストリ２１０に登録されているプロセス情報を参照して、プロセス監視手段２２０iと同じプロセスツリーに含まれないように、停止したプロセス監視手段２２０i-1を実現するためのプログラムまたは停止した監視対象プログラム２３０iを実行して、プロセス監視手段２２０i-1または監視対象プログラム２３０iによるプロセスを再起動させる。
ここで、「同じプロセスツリーに含まれないように」とは、プロセス監視手段２２０iと再起動されるプロセス監視手段２２０i-1との間の親子関係、あるいは、プロセス監視手段２２０iと再起動される監視対象プログラム２３０iによるプロセスとの間の親子関係、を分断することであり、これは、例えば、いわゆる二重forkによって実現できる（図２参照）。
つまり、独立プロセス再起動手段２２３i（i∈{1,2,…,N-1,N}）は、プロセス停止検知手段が監視対象の終了を検知すると呼び出され、終了したプロセスを生成（再起動）した後、自プロセス（独立プロセス再起動手段）を終了する。これによって生成（再起動）プロセスは親プロセス（例えば、プロセス監視手段や独立プロセス再起動手段）を持たない孤児プロセスとなる。結果として本来では一つのプロセスツリーでつながっていた、プロセス監視手段と生成（再起動）プロセス（つまり、再起動されたプロセス）の親子関係が切れ、独立したプロセスツリーへと切り離される。これによって、芋づる式に監視対象プロセスが停止し、最悪の場合に、監視と再起動が実施できなくなることを回避できる。
【００３０】
第２実施形態によると、第１実施形態と比較して、一つのプロセス監視手段が監視する対象の数は１から２に増加するが、プロセス監視手段を実現するためのプログラムが監視対象プログラムから分離されているため、監視対象プログラムに何らの変更を加える必要がない。
【００３１】
なお、第２実施形態においても、上述の監視構成によると、Ｎ個のプロセス監視手段のうちのＮ−１個のプロセス監視手段が何らかの事由で終了しても全てのプロセス監視手段を再起動させることができ、とくに環状の監視構成であれば、各プロセス監視手段は前段のプロセス監視手段のプロセスを監視するだけでよいという利点もある。
【００３２】
図３に示す環状監視の例では、任意のプロセス監視手段２２０i（i∈{1,2,…,N-1,N}）は、一つのプロセス監視手段２２０j（j∈{1,2,…,N-1,N}-{i}）の動作状況を監視するとしたが、一つのプロセス監視手段が二つ以上のプロセス監視手段を監視し、あるいは、二つ以上のプロセス監視手段が一つのプロセス監視手段を監視する構成であってもよい。
【００３３】
＜補記＞
プロセス監視システムは、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（Central Processing Unit）〔キャッシュメモリやレジスタなどを備えていてもよい〕、メモリであるＲＡＭやＲＯＭ、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、ＣＤ−ＲＯＭなどの記録媒体を読み書きできる装置（ドライブ）などを設けるとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【００３４】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている（外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくなどでもよい）。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。
【００３５】
ハードウェアエンティティでは、外部記憶装置〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にＣＰＵで解釈実行・処理される。その結果、ＣＰＵが所定の機能（プロセス監視手段）を実現する。
【図１】
0005986974.tif 000002
【図２】
0005986974.tif 000003
【図３】
0005986974.tif 000004