(57)【要約】【課題】一側面によれば、通信処理の遅延を防止することが可能なデータ送信方法を提供する。【解決手段】一側面によれば、処理プロセス５が、ロックを獲得したプロセスに異常が発生した場合にセマフォ管理部３によりアンロックされるセマフォであって、自己についてのセマフォのロックの獲得をセマフォ管理部３に要求し、セマフォ管理部３から自己についてのセマフォのロックを獲得する。送信元の処理プロセス５が、送信先の処理プロセス５にデータを送信する場合に、送信先の処理プロセス５についてのセマフォのロックの獲得をセマフォ管理部３に要求し、セマフォ管理部３からロックを獲得することができた場合、送信先の処理プロセス５を再起動した後に、データを送信先の処理プロセス５に送信する。【選択図】図５
2014010585.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセスが、
ロックを獲得したプロセスに異常が発生した場合にプロセス状態情報管理部によりアンロックされるプロセス状態情報であって、前記第１のプロセスについてのプロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得し、
第２のプロセスが、
前記第１のプロセスにデータを送信する場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合、前記第１のプロセスを再起動した後に、前記データを前記第１のプロセスに送信する
ことを特徴とするデータ送信方法。
【請求項２】
前記第２のプロセスが、前記第１のプロセスについての前記プロセス状態情報のロックを獲得できない場合に、前記データを前記第１のプロセスに送信する
ことを特徴とする請求項１に記載のデータ送信方法。
【請求項３】
前記第１のプロセスが起動された場合に、前記第１のプロセスは、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求して、前記第１のプロセスについての前記プロセス状態情報のロックを獲得する
ことを特徴とする請求項１に記載のデータ送信方法。
【請求項４】
前記第１のプロセスが起動された場合に、前記第１のプロセスは、前記第１のプロセスについての前記プロセス状態情報の生成を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部が、前記第１のプロセスからの要求に基づいて、前記第１のプロセスについての前記プロセス状態情報を生成する
ことを特徴とする請求項１に記載のデータ送信方法。
【請求項５】
前記第２のプロセスが、前記第１のプロセスについての異常検出履歴であって、異常検出の時刻を含む異常検出履歴を保持し、
前記第２のプロセスが、前記第１のプロセスにデータを送信する場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得の前記プロセス状態情報管理部への要求に先立って、前記第１のプロセスについての前記異常検出履歴があるか否かを判断し、前記異常検出履歴がある場合に、前記異常検出の時刻からの経過時間が規定値以下であるか否かを判断し、前記経過時間が規定値以下である場合に、前記データを前記第１のプロセスに送信する
ことを特徴とする請求項１に記載のデータ送信方法。
【請求項６】
前記第２のプロセスが、前記経過時間が規定値以下でない場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記第２のプロセスが、前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合に、前記第１のプロセスを再起動した後に、前記データを前記第１のプロセスに送信し、前記第１のプロセスについての前記プロセス状態情報のロックを獲得できない場合に、前記データを前記第１のプロセスに送信する
ことを特徴とする請求項５に記載のデータ送信方法。
【請求項７】
前記第２のプロセスが、前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合に、前記異常検出の時刻を更新する
ことを特徴とする請求項６に記載のデータ送信方法。
【請求項８】
プロセス状態情報のロックを獲得したプロセスに異常が発生した場合に、前記プロセス状態情報をアンロックするプロセス状態情報管理部と、
第１のプロセスを実行し、第１のプロセスについてのプロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得する第１のプロセス実行部と、
第２のプロセスを実行し、前記第１のプロセスにデータを送信する場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合、前記第１のプロセスを再起動した後に、前記データを前記第１のプロセスに送信する第２のプロセス実行部とを含む
ことを特徴とするデータ送信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ送信方法、データ送信装置に関する。
【背景技術】
【０００２】
コンピュータにおいては、通信の種々の機能毎に分割された複数のプロセスを組み合わせることによって、種々の通信を実現している。これらの通信を行う複数のプロセスのいずれかで何らかの異常が発生した場合、通信が不可能となる。そこで、通信を行う複数のプロセス、換言すれば、複数の被監視プロセスを監視して、被監視プロセスが異常終了したことやハングアップしたことが検出された場合に、被監視プロセスを再起動して、通信を再開する。
【０００３】
例えば、親プロセスが常駐の複数の子プロセスＰ１〜Ｐｎを順次起動すると、子プロセスＰ１〜Ｐｎはプロセス起動通知手段により共通のセマフォをロックした後に稼働を開始し、すべての子プロセスが稼働するとセマフォのセマフォ値は０になり、親プロセスは最後にプロセス監視手段を起動し、セマフォのロック待ち状態として監視を行い、子プロセスに異常終了が発生するとセマフォのロックが解除され、プロセス監視手段が直ちに認識し、異常終了した子プロセスを検出し、再起動させることが提案されている。
【０００４】
また、管理プロセスと被管理プロセスとをソケットインタフェースにより接続して、被管理プロセスが動作中は管理プロセスによるソケットインタフェースの読み込みをブロックし、一方、被管理プロセスが動作を終了すると、ソケットインタフェースはクローズされ、管理プロセスはソケットインタフェースの読み込みが可能になり、読み込みができたとき、被管理プロセスが動作を終了したと判断することが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−４４３７６号公報
【特許文献２】特開平１０−２１０９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、プロセス監視手段により各処理プロセスの状態を監視し、異常終了した子プロセスを検出し、再起動させる場合、異常の発生からプロセス監視手段による異常の検出までにある程度の時間を要する。この結果、通信処理の遅延を生じる可能性がある。
【０００７】
一側面では、本発明は、通信処理の遅延を防止することが可能なデータ送信方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
一態様のデータ送信方法は、第１のプロセスが、ロックを獲得したプロセスに異常が発生した場合にプロセス状態情報管理部によりアンロックされるプロセス状態情報であって、第１のプロセスについてのプロセス状態情報のロックの獲得をプロセス状態情報管理部に要求し、プロセス状態情報管理部から第１のプロセスについてのプロセス状態情報のロックを獲得する。第２のプロセスが、第１のプロセスにデータを送信する場合に、第１のプロセスについてのプロセス状態情報のロックの獲得をプロセス状態情報管理部に要求し、プロセス状態情報管理部から第１のプロセスについてのプロセス状態情報のロックを獲得することができた場合、第１のプロセスを再起動した後に、データを第１のプロセスに送信する。
【発明の効果】
【０００９】
一側面によれば、通信処理の遅延を防止することができる。
【図面の簡単な説明】
【００１０】
【図１】コンピュータの一例を示す図である。
【図２】セマフォ及び異常情報の説明図である。
【図３】コンピュータのハードウェアの構成の一例を示す図である。
【図４】データ送信及びプロセス監視の説明図である。
【図５】データ送信及びプロセス監視の説明図である。
【図６】セマフォの処理フローチャートである。
【図７】データ送信及びプロセス監視の処理フローチャートである。
【図８】本発明者が検討したプロセス監視処理の説明図である。
【図９】本発明者が検討したプロセス監視処理の説明図である。
【発明を実施するための形態】
【００１１】
図８及び図９は、本発明者が検討したプロセス監視処理の説明図である。
【００１２】
例えば、図８に示すように、複数の処理プロセス５０５は、各々、通信制御を実行するプロセスである。複数の処理プロセス５０５は、通信キュー格納部５０７を介して、プロセス間で通信を行う。例えば、送信元である処理プロセスＢは、データ＃５０１を通信キュー格納部５０７に格納し、送信先である処理プロセスＡは、通信キュー格納部５０７に格納されたデータ＃５０１を取得する。
【００１３】
プロセス管理部５１０は、複数の処理プロセス５０５を監視する。具体的には、プロセス管理部５１０は、予め定められた時間間隔Ｔで定期的に、処理プロセス５０５の各々を監視する。プロセス管理部５１０は、処理プロセス５０５の異常終了やハングアップ等を検出した場合、異常終了した、換言すれば、ダウンした処理プロセス５０５を再起動する。これにより、通信処理が再開され、コンピュータ全体としてのダウンタイムの最小化が図られる。
【００１４】
ここで、図９に示すように、最初のデータ＃５０１が送受信され、かつ、プロセス管理部５１０による処理プロセスＡの状態監視が正常に終了した直後に、処理プロセスＡで異常が発生したとする。この場合、処理プロセスＢは、処理プロセスＡの異常を検出することはできないので、２番目のデータ＃５０２を送信する。これにより、データ＃５０２は、通信キュー格納部５０７に格納される。
【００１５】
この後、先の処理プロセスＡの状態監視から監視時間間隔Ｔが経過すると、プロセス管理部５１０は、再度処理プロセスＡの状態を監視する。この時点までに、処理プロセスＡにおいて異常が発生してから、時間ｔ５０１が経過している。例えば、プロセス管理部５１０は、処理プロセスＡに応答を求めるが、処理プロセスＡからの応答を得ることができないので、処理プロセスＡの異常を検出する。
【００１６】
そこで、プロセス管理部５１０は、処理プロセスＡにおける異常の発生を検出すると、処理プロセスＡを再起動する。再起動された処理プロセスＡは、通信キュー格納部５０７に格納されたデータ＃５０２を取得する。これにより、処理プロセスＡと処理プロセスＢとの間における通信処理が再開される。この時点までに、処理プロセスＢがデータ＃５０２を送信してから、時間ｔ５０２が経過している。
【００１７】
以上のように、異常の発生から検出までには、タイムラグｔ５０１が存在する。このタイムラグｔ５０１は、最長で、監視時間間隔Ｔよりやや短い時間となる。また、通信の開始から完了までの時間ｔ５０２は、最長で、監視時間間隔Ｔに処理プロセス５０５の再起動の時間を加算した時間となる。この結果、通信処理が遅延してしまう。また、通信処理の遅延の結果、データが長い時間通信キュー格納部５０７に滞留するため、通信キュー格納部５０７がオーバーフローする可能性があり、オーバーフローによるデータの欠損が発生してしまう。
【００１８】
なお、監視時間間隔Ｔをより短く設定することにより、通信処理が遅延する時間を短縮することは可能である。しかし、複数の処理プロセス５０５について監視時間間隔Ｔをより短く設定すると、監視のためのＣＰＵ使用時間が増大し、例えば、本来の通信処理のためのＣＰＵ使用時間が低下する。従って、通信の開始から完了までの時間ｔ５０２を、異常が無い場合における通信の開始から完了までの時間とほぼ等しい程度までに、監視時間間隔Ｔを短くすることはできない。
【００１９】
以下のデータ送信方法は、通信処理の遅延を防止し、通信キューのオーバーフローによるデータの欠損の発生を防止する。
【００２０】
図１は、データ送信装置であるコンピュータの一例を示す図である。
【００２１】
コンピュータ１は、データ送信装置であると共に、プロセスを実行するプロセス実行装置であり、プロセスを監視するプロセス実行監視装置である。コンピュータ１は、オペレーティングシステム（ＯＳ）２と、セマフォ管理部３と、セマフォ格納部４と、処理プロセス５と、異常情報格納部６と、通信キュー格納部７とを含む。
【００２２】
ＯＳ２は、コンピュータ１の主メモリ上に常駐し、ＯＳ実行部、例えばＣＰＵにおいて実行される。セマフォ管理部３は、実際には、ＯＳ２に含まれる。セマフォ管理部３は、セマフォを管理する。セマフォは、セマフォ格納部４に格納される。セマフォ格納部４は、セマフォ管理部３が使用する例えばメモリ上の記憶領域である。
【００２３】
セマフォ管理部３は、プロセス状態情報管理部の一例である。セマフォ管理部３は、処理プロセス５の間におけるプロセス間通信に用いられるセマフォを管理する。セマフォは、処理プロセス５の現在の状態を示すプロセス状態情報の一例である。セマフォは、処理プロセス５に対応して設けられ、対応する処理プロセス５に異常が発生しているか又は発生していないかを示す情報である。セマフォは、ロック及びアンロックのいずれかの状態を取る。
【００２４】
セマフォ管理部３は、処理プロセス５の状態、換言すれば、処理プロセス５に異常が発生しているか又は発生していないかを管理する。処理プロセス５は、起動された場合、自己に対応するセマフォの生成及び自己に対応するセマフォのロックの獲得をセマフォ管理部３に要求する。また、処理プロセス５は、異常が発生した場合、異常が発生したことをセマフォ管理部３に通知する。これにより、セマフォ管理部３は、処理プロセス５の状態を管理することができ、異常が発生した処理プロセス５に対応するセマフォをアンロックすることができる。なお、処理プロセス５は、異常が発生したことの通知に代えて、自己のセマフォのロックの解放、換言すれば、アンロックをセマフォ管理部３に要求するようにしても良い。
【００２５】
セマフォ管理部３は、処理プロセス５からのロックの獲得の要求に応じて、要求した処理プロセス５に対応するセマフォをロックする。ロックされたセマフォの状態は排他的状態である。換言すれば、ロックされたセマフォについては、ロックを獲得している処理プロセス５以外の処理プロセス５による獲得が許されない。セマフォ管理部３は、セマフォをロックする処理を一体不可分に実行する。
【００２６】
また、セマフォ管理部３は、ロックを獲得した処理プロセス５に異常が発生した場合に、異常が発生した処理プロセス５に対応するセマフォをアンロックする。アンロックされたセマフォの状態は非排他的状態である。換言すれば、アンロックされたセマフォについては、そのセマフォが対応する処理プロセス５以外の処理プロセス５による獲得が許される。セマフォ管理部３は、セマフォをアンロックする処理を一体不可分に実行する。
【００２７】
なお、プロセス状態情報として、セマフォに代えて、例えば、ＯＳ２が備えるファイルのアドバイザリロック機能などを用いるようにしても良い。換言すれば、プロセス状態情報として、セマフォと同様の機能である、複数の処理プロセス５の間における処理同期の制御や割り込み処理の制御を行う機能により得られる情報を利用して、送信先である処理プロセス５の状態を検出するようにしても良い。
【００２８】
また、セマフォ管理部３のようなプロセス状態情報管理部を、ＯＳ２の外部に設けるようにしても良い。この場合、複数の処理プロセス５の間における処理同期の制御や割り込み処理の制御についての情報をＯＳ２から取得して、プロセス状態情報のロック及びアンロックの状態を示す情報を生成するようにしても良い。
【００２９】
処理プロセス５は、例えば、ＯＳ２がコマンドを実行することにより起動される。複数の処理プロセス５がコンピュータにおける通信の種々の機能毎に分割して生成及び起動され、複数の処理プロセス５を組み合わせることによりコンピュータにおける種々の通信処理が実行される。処理プロセス５は、対応する処理プロセス実行部において実行される。異なる処理プロセス５は、同一又は異なる処理プロセス実行部において実行される。換言すれば、異なる処理プロセス５は、同一又は異なる物理ＣＰＵ又は論理ＣＰＵにおいて実行される。
【００３０】
処理プロセス５は、コンピュータ１において、予め定められた処理、例えば予め定められた通信処理を実行する。コンピュータ１は、通信プロトコルの各階層やアプリケーションとのインタフェースの各階層等の各階層、換言すれば、各機能に分割した複数の処理プロセス５を生成して起動する。そして、コンピュータ１は、複数の処理プロセス５を組み合わせることによって、種々の通信を制御して、種々の接続先コンピュータとの間での通信に対応する。
【００３１】
処理プロセス５は、プロセス実行部、例えばＣＰＵにおいて実行される。処理プロセス５は、自己の実行したプロセス間通信についての異常情報を、異常情報格納部６に保持する。異常情報格納部６は、処理プロセス５が使用する例えばメモリ上の記憶領域であり、処理プロセス５に対応して設けられる。異常情報格納部６は、例えば処理プロセス５の起動時に処理プロセス５により獲得される。
【００３２】
処理プロセス５は、前述したように、種々の接続先コンピュータとの間での種々の通信のために、他の処理プロセス５との間において、通信キュー格納部７を用いた通信を実行する。通信キュー格納部７は、複数の処理プロセス５により共有される共有メモリであり、プロセス間通信の通信キューを格納する。
【００３３】
例えば、送信元である処理プロセス５は、送信対象のデータを、複数の処理プロセス５により共有される通信キュー格納部７に、通信キューとして格納する。データが送信されるのは、換言すれば、送信対象のデータが通信キュー格納部７に通信キューとして格納されるのは、後述するように、送信先である処理プロセス５についてのセマフォのロックを獲得できない場合である。通信キューは、実際には、送信対象のデータの他に、宛先情報を含む。宛先情報は、例えば送信先の処理プロセス５の識別情報である。処理プロセス５は、通信キュー格納部７にアクセスして、宛先情報として自己の識別情報を含む通信キューを取得する。これにより、送信元である処理プロセス５から送信先である処理プロセス５に、データが送信される。
【００３４】
具体的には、処理プロセス５は、自己が起動された場合に、自己についてのセマフォの生成をセマフォ管理部３に要求する。セマフォの生成は、処理プロセス５の起動をトリガとして要求される。セマフォ管理部３は、処理プロセス５からの要求に基づいて、処理プロセス５についてのセマフォを生成する。これにより、処理プロセス５が起動されると、起動された処理プロセス５に対応するセマフォが生成される。
【００３５】
また、処理プロセス５は、自己が起動された場合に、例えば自己についてのセマフォの生成に続いて、自己についてのセマフォのロックの獲得をセマフォ管理部３に要求する。セマフォのロックの獲得は、処理プロセス５の起動をトリガとして、セマフォの生成の要求の後に要求される。セマフォ管理部３は、処理プロセス５からの要求に基づいて、処理プロセス５についてのセマフォのロックを、処理プロセス５に与える。これにより、処理プロセス５は、自己についてのセマフォのロックを獲得する。従って、起動後に処理プロセス５がデータの受信側、換言すれば、データの送信先となった場合、送信先である処理プロセス５は、異常発生によりロックが解除されない限り、自己についてのセマフォのロックを獲得した状態にある。
【００３６】
なお、セマフォ管理部３に代わって、ＯＳ２がセマフォの生成及びセマフォのロックの獲得又は解除を実行するようにしても良い。
【００３７】
図２（Ａ）は、セマフォの説明図であり、セマフォの一例を示す。
【００３８】
セマフォ格納部４は複数のセマフォを格納する。セマフォは、各々、セマフォＩＤ、プロセス、ロック獲得／解除を含む。セマフォＩＤは、セマフォを一意に特定する識別情報である。プロセスは、セマフォに対応する処理プロセス５の名前である。処理プロセス５の名前は、処理プロセス５を一意に特定する識別情報である。ロック獲得／解除は、セマフォの状態を示す。ロック獲得／解除が例えば「１」である場合、セマフォがロックされていること、換言すれば、獲得されていることを示す。ロック獲得／解除が例えば「０」である場合、セマフォがアンロックされていること、換言すれば、解除されていることを示す。
【００３９】
セマフォ管理部３は、処理プロセス５からのセマフォの生成の要求に応じて、セマフォ格納部４に、セマフォＩＤ、プロセス、ロック獲得／解除を格納することにより、セマフォを生成し保持する。セマフォＩＤは、例えばセマフォの生成の要求の順に与えられる。プロセスとしては、セマフォのロックの獲得を要求した処理プロセス５の名前が格納される。ロック獲得／解除は、生成時には「０」とされる。
【００４０】
前述したように、処理プロセス５は、自己が起動された場合に、自己についてのセマフォのロックを獲得する。一方、セマフォ管理部３は、ロックを獲得した処理プロセス５に異常が発生した場合に、異常が発生した処理プロセス５に対応するセマフォをアンロックする。従って、処理プロセス５に異常が発生しない限り、自己のセマフォのロックを獲得した状態が続くはずである。換言すれば、ロック獲得／解除の「１」は、セマフォがＯＳ２によりアンロックされていないので、セマフォに対応する処理プロセス５に異常が発生していないことを示す。また、ロック獲得／解除の「０」は、セマフォがＯＳ２によりアンロックされているので、セマフォに対応する処理プロセス５に異常が発生していることを示す。
【００４１】
送信元である処理プロセス５は、アプリケーションからのデータの送信の要求を受けると、データの送信を行う。送信元である処理プロセス５は、送信先である処理プロセス５にデータを送信する場合に、送信先である処理プロセス５についてのセマフォのロックの獲得をセマフォ管理部３に要求する。セマフォのロックの獲得は、処理プロセス５の起動時の他に、アプリケーションからのデータの送信要求、又は、データの送信をトリガとして要求される。データの送信をトリガとするセマフォのロックの獲得の要求は、処理プロセス５が送信元となる場合に実行される。データの送信をトリガとするセマフォのロックの獲得の要求は、セマフォが処理プロセス５に異常が発生しているか又は発生していないかを示すので、送信先である処理プロセス５の生存を確認する処理である。
【００４２】
送信元である処理プロセス５は、送信先である処理プロセス５についてのセマフォのロックを獲得できない場合に、データを送信先である処理プロセス５に送信する。送信元である処理プロセス５が送信先である処理プロセス５についてのセマフォのロックを獲得できないということは、送信先である処理プロセス５がセマフォのロックを獲得した状態にあること、換言すれば、送信先である処理プロセス５に異常が発生していないことを示す。従って、送信元である処理プロセス５は、データの送信を実行する。これにより、送信元である処理プロセス５は、送信先である処理プロセス５が正常であることを確認した上で、データを送信することができる。
【００４３】
一方、送信元である処理プロセス５は、送信先である処理プロセス５についてのセマフォのロックを獲得することができた場合に、送信先である処理プロセス５を再起動する。送信元である処理プロセス５が送信先である処理プロセス５についてのセマフォのロックを獲得することができたということは、送信先である処理プロセス５がセマフォのロックを解放した状態にあること、換言すれば、送信先である処理プロセス５に異常が発生したことを示す。従って、送信元である処理プロセス５は、この時点ではデータの送信を実行せずに、送信先である処理プロセス５を再起動する。処理プロセス５は、他の処理プロセス５を再起動する機能を有する。
【００４４】
なお、送信元である処理プロセス５は、送信先である処理プロセス５の再起動に先立って、送信先である処理プロセス５について獲得したセマフォのロックの解放を、セマフォ管理部３に要求する。セマフォ管理部３は、送信先である処理プロセス５についてのセマフォのロックの解放の要求を受けると、送信先である処理プロセス５を解放、換言すれば、アンロックする。これにより、送信先である処理プロセス５は、再起動後に自己についてのセマフォのロックを獲得することができる。
【００４５】
送信先である処理プロセス５を再起動した後、送信元である処理プロセス５は、データの送信を実行する。これにより、データの送信をトリガとして、送信先の処理プロセス５の生存状態をチェックすることにより、処理プロセス５における異常の発生を速やかに検出することができる。また、異常が発生した処理プロセス５を速やかに再起動することができる。この結果、定期的なプロセス監視を行う場合よりも、処理プロセス５における異常の発生を速やかに検出することができ、通信処理の遅延を最小化することができる。
【００４６】
ここで、送信先である処理プロセス５を再起動した場合、送信元である処理プロセス５は、再起動した送信先である処理プロセス５についてのセマフォのロックの獲得をセマフォ管理部３に要求することなく、送信先である処理プロセス５の再起動の処理に続けてデータの送信を実行する。これは、再起動から殆ど時間が経過していないので、再起動後の処理プロセス５には異常が発生していないと考えられるからである。これにより、速やかにデータの送信を実行することができる。一方、再起動された送信先である処理プロセス５は、自己のセマフォのロックの獲得する処理を実行する。
【００４７】
なお、送信先である処理プロセス５を再起動した後、送信元である処理プロセス５が、送信先である処理プロセス５についてのセマフォのロックの獲得をセマフォ管理部３に要求するようにしても良い。
【００４８】
ここで、送信先である処理プロセス５が再起動されるまでには、ある程度、時間が経過してしまう。このため、送信先の処理プロセス５の異常検出から再起動までの間に、再度、データの送信のためにセマフォのロックの獲得を要求すると、必ずロックを獲得することができ、再起動の処理が重ねて実行されてしまう。そこで、送信元である処理プロセス５は、送信先である処理プロセス５についての異常検出履歴に基づいて、送信先の処理プロセス５の異常検出から再起動までの間における、セマフォのロックの獲得処理を抑止する。これにより、送信先である処理プロセス５の再起動の処理が重ねて実行されてしまうことを防止することができる。
【００４９】
なお、処理プロセス５の異常検出から再起動までの時間がより短くなるように、処理プロセス５の起動のためのパラメタを設定するようにしても良い。
【００５０】
処理プロセス５は、他の処理プロセス５についての異常検出履歴を保持する。これにより、送信元である処理プロセス５は、送信先である処理プロセス５についての異常検出履歴を保持することができる。異常検出履歴は、異常情報の一例であって、異常検出の時刻を含む。
【００５１】
図２（Ｂ）は、異常情報の説明図であり、異常情報の一例を含む。
【００５２】
異常情報格納部６は、複数の異常情報を格納する。異常情報は、各々、プロセス、異常検出履歴、異常検出時刻を含む。プロセスは、通信処理において、通信の相手となった、換言すれば、送信先となった処理プロセス５の名前である。異常検出履歴は、送信先となった処理プロセス５において、異常を検出したことを示す情報である。異常検出時刻は、送信先となった処理プロセス５における異常を検出した時刻である。
【００５３】
送信元である処理プロセス５は、送信先である処理プロセス５のセマフォのロックを獲得した場合に、異常情報格納部６に、プロセス、異常検出履歴、異常検出時刻を格納することにより、異常情報を生成し保持する。異常情報は、送信先である処理プロセス５毎に生成され、異常の検出の都度に更新される。送信先である処理プロセス５のセマフォのロックを獲得した場合とは、送信先である処理プロセス５の異常を検出した場合であり、結果としてデータが送信されないので、データの送信に失敗した場合である。
【００５４】
実際には、送信元である処理プロセス５は、送信先である処理プロセス５についてのセマフォのロックを獲得する都度に、プロセス、異常検出履歴、異常検出時刻を更新する。例えば、プロセスとしては、セマフォのロックを獲得した送信先の処理プロセス５の名前が格納される。異常検出履歴としては、例えば「異常発生」を示す情報が格納される。異常検出時刻としては、送信先である処理プロセス５についてのセマフォのロックを獲得した時刻が格納される。
【００５５】
送信元である処理プロセス５は、送信先である処理プロセス５にデータを送信する場合に、異常情報格納部６に格納された異常情報を参照して、送信先である処理プロセス５についての異常検出履歴があるか否かを判断する。異常検出履歴の有無の判断は、送信先である処理プロセス５についてのセマフォのロックの獲得のセマフォ管理部３への要求に先立って、実行される。
【００５６】
送信元である処理プロセス５は、送信先である処理プロセス５についての異常検出履歴がない場合に、送信先である処理プロセス５についてのセマフォのロックの獲得を、セマフォ管理部３へ要求する。これにより、送信先である処理プロセス５についての異常検出履歴がない場合は、送信先である処理プロセス５における異常の発生の有無が全く判らないので、セマフォにより送信先である処理プロセス５の状態が判断される。
【００５７】
一方、送信元である処理プロセス５は、送信先である処理プロセス５についての異常検出履歴がある場合に、異常検出の時刻からの経過時間が規定値以下であるか否かを判断する。規定値は、例えば、処理プロセス５の再起動に要する時間である。
【００５８】
そして、送信元である処理プロセス５は、経過時間が規定値以下である場合に、データを送信先である処理プロセス５に送信する。経過時間が規定値以下である場合には、処理プロセス５の再起動が終了しておらず、かつ、再起動の実行である。従って、送信先である処理プロセス５が再起動されると、異常が発生していない状態で、データを受信することができる。そこで、送信元である処理プロセス５は、送信先である処理プロセス５についてのセマフォのロックの獲得を要求することなく、データを送信する。これにより、送信先の処理プロセス５の異常検出から再起動までの間における、セマフォのロックの獲得処理を抑止することができ、また、速やかにデータを送信することができる。
【００５９】
一方、送信元である処理プロセス５は、経過時間が規定値以下でない場合に、換言すれば、規定値より長い時間が経過している場合に、送信先である処理プロセス５についてのセマフォのロックの獲得をセマフォ管理部３に要求する。経過時間が規定値以下でない場合には、処理プロセス５の再起動が終了している。従って、送信元である処理プロセス５は、送信先である処理プロセス５についてのセマフォのロックの獲得を要求した後に、データを送信する。
【００６０】
図３は、コンピュータのハードウェアの構成の一例を示す図である。
【００６１】
ＣＰＵ１０１は、メモリ１０２に含まれる主メモリ上に常駐するＯＳ２に従って、コンピュータ１を制御する。ＣＰＵ１０１は、メモリ１０２に含まれる主メモリ上に存在する、ＯＳ２に含まれるセマフォ管理プログラムや、複数の処理プロセス５を含む通信制御プログラムを実行する。これにより、セマフォ管理部３、複数の処理プロセス５が実現される。セマフォ管理プログラムや通信制御プログラムは、例えば、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disk）等の可搬型記憶媒体１０７に格納され、可搬型記憶媒体１０７からＣＤ−ＲＯＭドライブやＤＶＤドライブ等の駆動装置１０８を介して記憶装置１０６に入力され、記憶装置１０６からメモリ１０２にロードされる。
【００６２】
セマフォ格納部４、異常情報格納部６、通信キュー格納部７は、例えばメモリ１０２に設けられる。セマフォ格納部４、異常情報格納部６、通信キュー格納部７を記憶装置１０６に設けるようにしても良い。
【００６３】
入力装置１０４は、例えばキーボードであり、マウス等を含んでも良い。出力装置１０５は、例えばディスプレイであり、プリンタ等の出力装置を含んでも良い。ＣＰＵ１０１、メモリ１０２、通信インタフェース１０３、入力装置１０４、出力装置１０５、記憶装置１０６、駆動装置１０８は、バス１０９を介して、相互に接続される。
【００６４】
通信インタフェース１０３は、例えば、送受信装置であり、ネットワークに接続され、ネットワークを介して他のコンピュータに接続される。これにより、コンピュータ１は、他のコンピュータとの間で通信を行う。
【００６５】
セマフォ管理プログラムや通信制御プログラムは、ＬＡＮ（Local Area Network）またはインターネットなどのネットワークを介して、入力されて記憶装置１０６に記憶され、ＣＰＵ１０１によって実行されるようにしても良い。また、セマフォ管理プログラムや通信制御プログラムを格納した可搬型記憶媒体１０７から駆動装置１０８を介して、入力されて記憶装置１０６に記憶され、ＣＰＵ１０１によって実行されるようにしても良い。
【００６６】
図４及び図５は、データ送信及びプロセス監視の説明図である。図４及び図５において、送信先である処理プロセス５を処理プロセスＡといい、送信元である処理プロセス５を処理プロセスＢという。
【００６７】
例えば、送信元である処理プロセスＢは、アプリケーションからのデータの送信要求に応じて、データ＃１、＃２を通信キュー格納部７に格納する。送信先である処理プロセスＡは、通信キュー格納部７に格納されたデータ＃１、＃２を取得して、取得したデータ＃１、＃２を他のアプリケーションに送信する。また、処理プロセスＡ及び処理プロセスＢの間でデータ＃１が送受信された後に、処理プロセスＡで異常が発生するとする。
【００６８】
例えば、処理プロセスＡ及び処理プロセスＢは、各々、自己が起動されると、自己についてのセマフォの生成をセマフォ管理部３に要求し、続いて、自己についてのセマフォのロックの獲得をセマフォ管理部３に要求する。セマフォ管理部３は、処理プロセスＡ及び処理プロセスＢからの要求に基づいて、処理プロセスＡ及び処理プロセスＢについてのセマフォを生成し、処理プロセスＡ及び処理プロセスＢについてのセマフォのロックを、処理プロセスＡ及び処理プロセスＢに与える。これにより、処理プロセスＡ及び処理プロセスＢは、自己についてのセマフォのロックを獲得する。
【００６９】
この状態で、送信元である処理プロセスＢは、アプリケーションからの送信先である処理プロセスＡへのデータ＃１の送信要求に応じて、データ＃１の送信処理を開始する。
【００７０】
まず、処理プロセスＢは、データ＃１の送信をトリガとして、処理プロセスＡについてのセマフォのロックの獲得をセマフォ管理部３に要求する。
【００７１】
しかし、この時点では、処理プロセスＡにおいて異常は発生していないので、処理プロセスＡが自己についてのセマフォのロックを獲得したままである。従って、処理プロセスＢは、処理プロセスＡについてのセマフォのロックを獲得できない。そこで、処理プロセスＢは、データ＃１を処理プロセスＡに送信する。具体的には、処理プロセスＢは、データ＃１を通信キュー格納部７に格納する。
【００７２】
処理プロセスＡは、通信キュー格納部７に格納されたデータ＃１を取得する。これにより、処理プロセスＢと処理プロセスＡとの間におけるプロセス間通信が完了する。処理プロセスＡは、取得したデータ＃１を、他のアプリケーションに送信する。
【００７３】
この後、最初のデータ＃１が送受信された直後に、処理プロセスＡで異常が発生する。処理プロセスＡは、異常が発生したことをセマフォ管理部３に通知する。これに応じて、セマフォ管理部３は、セマフォのロックを獲得した処理プロセスＡに異常が発生したので、異常が発生した処理プロセスＡに対応するセマフォをアンロックする。この時点では、処理プロセスＢは、処理プロセスＡの異常を検出していない。
【００７４】
この状態で、送信元である処理プロセスＢは、アプリケーションからの処理プロセスＡへのデータ＃２の送信要求に応じて、データ＃２の送信処理を開始する。
【００７５】
まず、処理プロセスＢは、データ＃２の送信をトリガとして、処理プロセスＡについてのセマフォのロックの獲得をセマフォ管理部３に要求する。なお、この時、処理プロセスＡについての異常検出履歴はないものとする。
【００７６】
しかし、この時点では、処理プロセスＡにおいて異常が発生しているので、処理プロセスＡについてのセマフォはアンロックされている。従って、処理プロセスＢは、処理プロセスＡについてのセマフォのロックを獲得することができる。
【００７７】
そこで、処理プロセスＢは、処理プロセスＡについてのセマフォのロックを獲得することができたので、処理プロセスＡの異常を検出したと判断する。そして、処理プロセスＢは、異常を検出した処理プロセスＡを再起動する。
【００７８】
この後、処理プロセスＢは、処理プロセスＡの異常の検出から予め定められた時間が経過した後に、データ＃２を処理プロセスＡに送信する。具体的には、処理プロセスＢは、データ＃２を通信キュー格納部７に格納する。
【００７９】
処理プロセスＡは、通信キュー格納部７に格納されたデータ＃２を取得する。これにより、処理プロセスＢと処理プロセスＡとの間におけるプロセス間通信が完了する。処理プロセスＡは、取得したデータ＃２を、他のアプリケーションに送信する。
【００８０】
以上によれば、図５において、異常の発生から検出までには、タイムラグが存在する。このタイムラグは、図９におけるタイムラグｔ５０１と同等である。しかし、図９においては、処理プロセスＢが処理プロセスＡの異常を知らずにデータ＃２を通信キュー格納部７に格納してしまうので、タイムラグｔ５０１は、ほぼ通信の開始から完了までの時間ｔ５０２の長さに反映されてしまう。
【００８１】
一方、図５においては、処理プロセスＢが処理プロセスＡの異常を検出して、処理プロセスＡを再起動した後に、データ＃２を通信キュー格納部７に格納する。従って、処理プロセスＢからみた場合に、タイムラグの開始は、例えば、処理プロセスＡの異常の検出の時点であると考えられる。従って、図５における異常の発生から検出までのタイムラグは、通信の開始から完了までの時間に含まれず、問題にならない。
【００８２】
これにより、処理プロセスＢは、処理プロセスＡにおける異常の発生を検出してから、データ＃２の送信を完了するまでに、時間ｔ１しか要さない。時間ｔ１は、処理プロセスＡの再起動の時間を含む。この結果、通信処理の遅延をより短い時間に抑えることができる。また、通信処理の遅延を抑えることができるので、データが長い時間通信キュー格納部７に滞留することを防止して、通信キュー格納部７のオーバーフローによるデータの欠損が発生することを防止することができる。
【００８３】
なお、図４及び図５においては、処理プロセスＢは、データ＃２の送信に先立って、処理プロセスＡについてのセマフォのロックを獲得したので、この時点で、処理プロセスＡについての異常情報、特に、異常検出時刻を更新する。
【００８４】
また、この後、処理プロセスＢが、処理プロセスＡへのデータ＃３の送信の要求を受けた場合には、処理プロセスＡについてのセマフォのロックの獲得の要求に先立って、前述したように、異常検出履歴の有無や、異常検出の時刻からの経過時間が判断され、判断結果に基づいて、データ＃３が送信されるか、又は、処理プロセスＡについてのセマフォのロックの獲得が実行される。
【００８５】
図６は、セマフォの処理フローチャートである。
【００８６】
ＯＳ２が、起動コマンドを実行することにより、処理プロセス５を起動する（ステップＳ１１）。なお、データの送信先である処理プロセス５についてのセマフォが、主として、説明の対象であるので、以下の説明において、処理プロセス５を送信先プロセス５ということとする。
【００８７】
送信先プロセス５は、起動されると、セマフォ管理部３に、自己についてのセマフォの生成を要求する（ステップＳ１２）。セマフォ管理部３は、送信先プロセス５からセマフォの生成の要求を受けると、セマフォの生成を要求した送信先プロセス５についてのセマフォを生成する（ステップＳ１３）。
【００８８】
送信先プロセス５は、セマフォの生成の要求に続けて、セマフォ管理部３に、自己についてのセマフォのロックの獲得を要求する（ステップＳ１４）。セマフォ管理部３は、送信先プロセス５からセマフォのロックの獲得の要求を受けると、セマフォのロックの獲得を要求した送信先プロセス５にセマフォのロックを獲得させる（ステップＳ１５）。これにより、起動された送信先プロセス５は、起動後に自己についてのセマフォのロックを獲得する。ステップＳ１２〜Ｓ１５は一体不可分に実行される。以上により、起動された送信先プロセス５はセマフォのロックを獲得し、送信先プロセス５において異常が発生するまでは、この状態が維持される。
【００８９】
図７は、データ送信及びプロセス監視の処理フローチャートである。
【００９０】
データの送信元である処理プロセス５は、異常情報格納部６を参照して、送信先プロセス５に異常検出履歴があるか否かを判断する（ステップＳ２１）。なお、以下の説明において、データの送信元である処理プロセス５を送信元プロセス５ということとする。
【００９１】
送信元プロセス５は、送信先プロセス５に異常検出履歴がある場合（ステップＳ２１  ＹＥＳ）、更に、送信先プロセス５に異常検出履歴における異常検出時刻、換言すれば、前回の異常検出からの経過時間が規定値以下であるか否かを判断する（ステップＳ２２）。
【００９２】
ステップＳ２１において送信先プロセス５に異常検出履歴がない場合（ステップＳ２１  ＮＯ）、及び、ステップＳ２２において経過時間が規定値以下でない場合（ステップＳ２２  ＮＯ）、送信元プロセス５は、送信先プロセス５についてのセマフォのロックの獲得をセマフォ管理部３に要求する。
【００９３】
この後、送信元プロセス５は、セマフォのロックの獲得の要求から予め定められた時間が経過した後に、送信先プロセス５についてのセマフォのロックの獲得ができなかったか否かを判断する（ステップＳ２３）。
【００９４】
送信先プロセス５についてのセマフォのロックの獲得が不可ではなかった、換言すれば、獲得できた場合（ステップＳ２３  ＮＯ）、送信元プロセス５は、本来獲得できないはずのセマフォのロックを獲得することができたので、送信先プロセス５についての異常を検出したと判断する。
【００９５】
そこで、送信元プロセス５は、送信先プロセス５に異常検出履歴における異常検出時刻を更新し（ステップＳ２４）、獲得した送信先プロセス５についてのセマフォのロックを開放し、換言すれば、セマフォのロックを解除し（ステップＳ２５）、送信先プロセス５を再起動する（ステップＳ２６）。
【００９６】
この後、送信元プロセス５は、通信キュー格納部７へ送信対象のデータを複写することにより、データを送信する（ステップＳ２７）。
【００９７】
ステップＳ２２において経過時間が規定値以下である場合（ステップＳ２２  ＹＥＳ）、送信元プロセス５は、ステップＳ２３〜Ｓ２６を省略して、ステップＳ２７を実行する。また、ステップＳ２３において送信先プロセス５についてのセマフォのロックの獲得が不可であった、換言すれば、獲得できなかった場合（ステップＳ２３  ＹＥＳ）、送信元プロセス５は、ステップＳ２４〜Ｓ２６を省略して、ステップＳ２７を実行する。
【００９８】
例えば、送信元プロセス５が、送信先プロセス５への第１のデータの送信要求に基づいてステップＳ２１〜２７の処理を実行後に、同一の送信先プロセス５への第２のデータの送信要求を受ける。この場合、第１のデータについてのステップＳ２４において異常検出時刻が更新されるので、送信元プロセス５は、第２のデータについての処理において、送信先プロセス５に異常検出履歴があることを知って、前回の異常検出からの経過時間が規定値以下である場合にはデータを送信し、経過時間が規定値以下でない場合には送信先プロセス５のセマフォのロックの獲得の可否に基づいて処理を実行する。
【００９９】
なお、送信元プロセス５が、第１のデータの送信要求に基づいてステップＳ２１〜２７の処理を実行中に、第２のデータの送信要求を受ける場合がある。この場合、例えば、送信元プロセス５は、第１のデータについてのステップＳ２１〜２７の処理の後に、第２のデータについてのステップＳ２１〜２７の処理を実行する。
【０１００】
以上により、送信先プロセス５において異常が発生しない限り、他の処理プロセス５は送信先プロセス５についてのセマフォのロックを獲得することができないので、送信先プロセス５に異常が発生していないことを確認してデータを送信することができる。また、送信先プロセス５において異常が発生した場合、他の処理プロセス５は送信先プロセス５についてのセマフォのロックを獲得することができるので、送信先プロセス５を再起動し、その後、データを送信することができる。
【０１０１】
以上の説明から理解されるように、以下のような実施の態様が把握される。
【０１０２】
（付記１）  第１のプロセスが、
ロックを獲得したプロセスに異常が発生した場合にプロセス状態情報管理部によりアンロックされるプロセス状態情報であって、前記第１のプロセスについてのプロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得し、
第２のプロセスが、
前記第１のプロセスにデータを送信する場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合、前記第１のプロセスを再起動した後に、前記データを前記第１のプロセスに送信する
ことを特徴とするデータ送信方法。
【０１０３】
（付記２）  前記第２のプロセスが、前記第１のプロセスについての前記プロセス状態情報のロックを獲得できない場合に、前記データを前記第１のプロセスに送信する
ことを特徴とする付記１に記載のデータ送信方法。
【０１０４】
（付記３）  前記第１のプロセスが起動された場合に、前記第１のプロセスは、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求して、前記第１のプロセスについての前記プロセス状態情報のロックを獲得する
ことを特徴とする付記１に記載のデータ送信方法。
【０１０５】
（付記４）  前記第１のプロセスが起動された場合に、前記第１のプロセスは、前記第１のプロセスについての前記プロセス状態情報の生成を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部が、前記第１のプロセスからの要求に基づいて、前記第１のプロセスについての前記プロセス状態情報を生成する
ことを特徴とする付記１に記載のデータ送信方法。
【０１０６】
（付記５）  前記第１のプロセスを再起動した場合、前記第２のプロセスは、再起動した前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求することなく、前記第１のプロセスの再起動の処理に続けて前記データの送信を実行する
ことを特徴とする付記１に記載のデータ送信方法。
【０１０７】
（付記６）  前記第２のプロセスは、前記第１のプロセスの再起動に先立って、前記第１のプロセスについて獲得した前記プロセス状態情報のロックの解放を、前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部は、前記第１のプロセスについての前記プロセス状態情報のロックの解放の要求を受けると、前記第１のプロセスについての前記プロセス状態情報をアンロックする
ことを特徴とする付記１に記載のデータ送信方法。
【０１０８】
（付記７）  前記第２のプロセスが、前記第１のプロセスについての異常検出履歴であって、異常検出の時刻を含む異常検出履歴を保持し、
前記第２のプロセスが、前記第１のプロセスにデータを送信する場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得の前記プロセス状態情報管理部への要求に先立って、前記第１のプロセスについての前記異常検出履歴があるか否かを判断し、前記異常検出履歴がある場合に、前記異常検出の時刻からの経過時間が規定値以下であるか否かを判断し、前記経過時間が規定値以下である場合に、前記データを前記第１のプロセスに送信する
ことを特徴とする付記１に記載のデータ送信方法。
【０１０９】
（付記８）  前記第１のプロセスについての前記異常検出履歴がない場合に、前記第２のプロセスが、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求する
ことを特徴とする付記７に記載のデータ送信方法。
【０１１０】
（付記９）  前記第２のプロセスが、前記経過時間が規定値以下でない場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記第２のプロセスが、前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合に、前記第１のプロセスを再起動した後に、前記データを前記第１のプロセスに送信し、前記第１のプロセスについての前記プロセス状態情報のロックを獲得できない場合に、前記データを前記第１のプロセスに送信する
ことを特徴とする付記７に記載のデータ送信方法。
【０１１１】
（付記１０）  前記第２のプロセスが、前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合に、前記異常検出の時刻を更新する
ことを特徴とする付記９に記載のデータ送信方法。
【０１１２】
（付記１１）  プロセス状態情報のロックを獲得したプロセスに異常が発生した場合に、前記プロセス状態情報をアンロックするプロセス状態情報管理部と、
第１のプロセスを実行し、第１のプロセスについてのプロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得する第１のプロセス実行部と、
第２のプロセスを実行し、前記第１のプロセスにデータを送信する場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合、前記第１のプロセスを再起動した後に、前記データを前記第１のプロセスに送信する第２のプロセス実行部とを含む
ことを特徴とするデータ送信装置。
【０１１３】
（付記１２）  第１のプロセスが、
ロックを獲得したプロセスに異常が発生した場合にプロセス状態情報管理部によりアンロックされるプロセス状態情報であって、前記第１のプロセスについてのプロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得し、
第２のプロセスが、
前記第１のプロセスにデータを送信する場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合、前記第１のプロセスを再起動した後に、前記データを前記第１のプロセスに送信する
ことを特徴とするプログラム。
【０１１４】
（付記１３）  プロセス間通信を実行するプログラムを記録する記憶媒体であって、
前記プログラムは、
第１のプロセスが、
ロックを獲得したプロセスに異常が発生した場合にプロセス状態情報管理部によりアンロックされるプロセス状態情報であって、前記第１のプロセスについてのプロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得し、
第２のプロセスが、
前記第１のプロセスにデータを送信する場合に、前記第１のプロセスについての前記プロセス状態情報のロックの獲得を前記プロセス状態情報管理部に要求し、
前記プロセス状態情報管理部から前記第１のプロセスについての前記プロセス状態情報のロックを獲得することができた場合、前記第１のプロセスを再起動した後に、前記データを前記第１のプロセスに送信する
ことを特徴とする記憶媒体。
【符号の説明】
【０１１５】
１    コンピュータ
２    オペレーティングシステム（ＯＳ）
３    セマフォ管理部
４    セマフォ格納部
５    処理プロセス
６    異常情報格納部
７    通信キュー格納部
【図１】
2014010585.tif 000003
【図２】
2014010585.tif 000004
【図３】
2014010585.tif 000005
【図４】
2014010585.tif 000006
【図５】
2014010585.tif 000007
【図６】
2014010585.tif 000008
【図７】
2014010585.tif 000009
【図８】
2014010585.tif 000010
【図９】
2014010585.tif 000011