(57)【特許請求の範囲】
【請求項１】
複数の対話型タスクを有する情報処理システムにおいて、システム内のタスクの異常終了を通知する方法であって、
１つまたは複数の各ターゲット・タスクごとに、前記ターゲット・タスクと対話しており、前記ターゲット・タスクが異常終了したときに通知を送るべき他のタスクの１つまたは複数のエントリを含む類縁性リストを定義する段階と、
ターゲット・タスクおよび別のタスクを指定する類縁性要求を受け取とったことに応答して、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された類縁性リストに追加する段階と、
ターゲット・タスクの異常終了を検出したことに応答して、前記ターゲット・タスクについて定義された前記類縁性リストに含まれる他のそれぞれのタスクに通知する段階とを含み、
前記タスクがユーザ・タスクであり、前記段階が、オペレーティング・システムのカーネルによって実行され、
前記類縁性要求が、前記別のタスクから出される、
方法。
【請求項２】
前記類縁性要求が第１のタイプのものであり、
ターゲット・タスクおよび別のタスクを指定する第２のタイプの類縁性要求を受け取ったことに応答して、前記ターゲット・タスクについて定義された前記類縁性リストから前記別のタスクのエントリを削除する段階をさらに含む
請求項１に記載の方法。
【請求項３】
前記追加段階が、
前記ターゲット・タスクについて前記類縁性リストがすでに定義されているかどうかを判定する段階と、
前記ターゲット・タスクについて前記類縁性リストがすでに定義されている場合に、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する段階と、
前記ターゲット・タスクについて前記類縁性リストがまだ定義されていない場合に、前記ターゲット・タスクについて前記類縁性リストを定義し、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する段階と
を含む、請求項１に記載の方法。
【請求項４】
前記タスクが、別個のアドレス空間を有するプロセスである、請求項１に記載の方法。
【請求項５】
前記類縁性要求が、前記ターゲット・プロセスについて定義された前記類縁性リスト上で実行されるオペレーションのタイプを指定する、請求項１に記載の方法。
【請求項６】
前記類縁性要求が、前記ターゲット・タスクが異常終了したときに前記別のタスクのために生成されるイベントを指定する、請求項１に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、タスク終了を通知する方法および装置に関し、より詳細には、クライアント／サーバ・システムにおいてプロセス終了を通知する方法および装置に関する。
【０００２】
【従来の技術】
クライアント／サーバ・コンピュータ・システムは当技術分野でよく知られている。クライアント／サーバ・システムでは、クライアント・プロセス（または単に「クライアント」）が、同じシステムまたは別のシステムのサーバ・プロセス（または単に「サーバ」）に、指定のサービスを実行するよう求める要求を発行する。サーバ・プロセスは要求を受け取ると、要求されたサービスを実行し、その結果を応答としてクライアント・プロセスに返す。
【０００３】
単一システムでクライアント／サーバ・アプリケーションを実行する際に、クライアントがサーバに要求を送り、サーバからの応答を待たなければならない場合がよくある。同様に、複数のサーバ・プロセスが複数のクライアント・プロセスと通信しなければならない場合も起こりうる。クライアントがあるサーバからの応答を待っている間に、そのサーバが終了した場合、ユーザまたはオペレータがクライアント・プロセスを終了させる要求を行うまで、クライアント・プロセスが待機状態のままになる可能性がある。同様に、サーバが、クライアントからの応答を待っている間に、クライアントが終了してしまうこともある。クライアントおよびサーバの論理にタイマ・コールを追加し、待機状態がタイムアウトされるようにすることができるが、こうすると経路長が不必要に長くなり、クライアントまたはサーバ・アプリケーションが適当な時間枠を拾い上げることが必要となる。
【０００４】
ＵＮＩＸ（商標）ベースのシステムには、複数のプロセス間の接続状況を追跡するのに使用することができるいくつかのプログラミング構成がある。アプリケーションが、子プロセスを作成するためにｆｏｒｋ（）またはｓｐａｗｎ（）サービスを使用する場合、これらの２つプロセスは、ＵＮＩＸフレームワークによって相互に結合される。すなわち子プロセスが終了した場合、親プロセスにはＳＩＧＣＨＬＤ信号が送られる。親プロセスが終了した場合には子プロセスにＳＩＧＨＵＰ信号が送られる。しかし、対話しているサーバ・プロセスとクライアント・プロセスは通常、この親子関係以外の方法で相互結合されているので、この機構は、ＵＮＩＸベースのシステムでの一般的な通知機構としてはあまり有効ではない。
【０００５】
【発明が解決しようとする課題】
本発明の目的は、失敗プロセスと対話しているプロセスに、そのプロセスの失敗を確実に通知する方法および装置を提供することにある。
【０００６】
【課題を解決するための手段】
この問題は、以下で説明する本発明のｐｉｄ類縁性サービスによって解決される。用語ｐｉｄはプロセス識別子を表す。サーバ・プロセスおよびクライアント・プロセスはともに固有のＰＩＤを有する。ｐｉｄ類縁性サービスは、クライアント・プロセスとサーバ・プロセスの一方が終了となったときに、待機中の他方のプロセスに信号を送りそのことを通知する機構が提供されるような類縁性または結びつきをクライアント・プロセスとサーバ・プロセスの間に作り出すのに使用される。
【０００７】
本発明によれば、オペレーティング・システムのプロセスはそれぞれ、そのプロセスが終了したときにそのことを（信号を介して）通知したいプロセスを識別するｐｉｄ類縁性リストを任意選択で有することができる。ｐｉｄ類縁性サービスは、クライアントがそのｐｉｄを、サーバのｐｉｄ類縁性リストに追加したり、またはサーバがそのｐｉｄを、クライアントのｐｉｄ類縁性リストに追加する機構を提供する。どのプロセスがｐｉｄ類縁性サービスを使用するかはアプリケーションが決定する。
【０００８】
本発明の動作の例として、クライアントが、メッセージ待ち行列を使用してサーバに要求を送ろうとしていると仮定する。（ｍｓｇｓｎｄシステム・コールを発行することによって）サーバの入力待ち行列に要求を入れる前に、クライアントは、そのｐｉｄをサーバのｐｉｄ類縁性リストに追加するｐｉｄ類縁性サービスを呼び出す。クライアントは次いで、ｍｓｇｓｎｄシステム・コールを発行し、その要求をサーバの入力待ち行列に入れる。クライアントは次いで、ｍｓｇｒｃｖシステム・コールを発行しサーバからの応答を待つ。メッセージ待ち行列での待機中に、サーバが終了する可能性がある。これが起きた場合、カーネルはｐｉｄ類縁性リストを調べ、ｐｉｄ類縁性リストにある（ｐｉｄで表される）それぞれのプロセスに信号を送る。この信号は、クライアント・プロセスをｍｓｇｒｃｖ待機の状態から目覚めさせ、現在の要求を失敗させ、呼出し側プロセスに制御を戻すことを可能にする。
【０００９】
メッセージ待ち行列を使用したクライアント／サーバ通信の以上の説明は、プロセスが通信する方法の一例に過ぎない。これらのプロセスが、共用メモリ、セマフォ、またはその他の通信機構を使用することもできる。この例では、クライアントおよびサーバを単純なシングル・スレッド・プロセスとして説明している。サーバをマルチスレッドとし、複数のクライアントからの多くの要求を同時に処理させることも可能である。このようなサーバが終了した場合には、そのｐｉｄ類縁性リスト中の全てのクライアントにそのことが通知される。
【００１０】
【発明の実施の形態】
最初に図２および図３について説明する。本発明の実施形態は、システムのカーネル・アドレス空間２０４内にＰＩＤ類縁性サービス２２１を含む。このシステムはさらに、プロセス２０６（プロセスＡ）および２１６（プロセスＢ）を含む１つまたは複数のユーザ・アドレス空間２０２を有する。カーネル・アドレス空間２０４は、中央処理装置（ＣＰＵ）、主記憶および２次記憶装置、ならびに当技術分野では従来から知られており、そのためここでは図示しないさまざまな周辺装置を有する汎用コンピュータ上で、ユーザ・アドレス空間２０２内の１つまたは複数のユーザ・プログラムとともに実行されるオペレーティング・システム（ＯＳ）のカーネル（別個には図示していない）の一部である。本発明は、特定のハードウェアまたはソフトウェア・プラットフォームに限定されるものではないが、Ｓ／３９０  Ｐａｒａｌｌｅｌ  Ｅｎｔｅｒｐｒｉｓｅ  Ｓｅｒｖｅｒ（商標）Ｇ４またはＧ５プロセッサなどのＩＢＭ  Ｓ／３９０（商標）プロセッサ上で実行されるＩＢＭ（商標）ＯＳ／３９０（商標）オペレーティング・システムの一部として実装することが好ましい。
【００１１】
次に図１について説明する。システム内のそれぞれのプロセスは、それに関連したプロセス情報ブロック（ＰＩＢ）１１４を有する。それぞれのＰＩＢ１１４は、プロセスを一意的に識別するプロセス識別子（ＰＩＤ）１１６、ＰＩＤ類縁性リスト（ＰＡＬ）１２０へのポインタ１１８、および本発明に関係せず、そのため図示されていないその他の項目を含む。リスト１２０にＰＩＤを追加するｐｉｄ類縁性サービス２２１が呼び出されるたびに、エントリ１２２がリスト中に作成される。それぞれのエントリ１２２には、イベント通知先のプロセスのＰＩＤ１２４、および信号番号とすることができるイベント・タイプ１２６が含まれる。
【００１２】
ｐｉｄ類縁性パラメータ・リスト（ＰＬ）１００には、アプリケーション・プログラムによって指定され、ｐｉｄ類縁性サービス２２１に入力されるパラメータ、およびｐｉｄ類縁性サービス２２１から出力されるパラメータが含まれる。これらのパラメータには、機能コード１０２、ターゲット・プロセス・パラメータ１０４、イベント・プロセス・パラメータ１０６、イベント・パラメータ１０８、およびリターン・コード１１０が含まれる。パラメータ１０２〜１０８は、呼出し側アプリケーションからＰＩＤ類縁性サービス２２１に供給される入力パラメータであり、リターン・コード１１０は、ＰＩＤ類縁性サービス２２１から呼出し側アプリケーションに戻される出力パラメータである。
【００１３】
機能コード１０２は、アプリケーション・プログラムが要求しているｐｉｄ類縁性サービス機能を指定する。サポートされる機能コード１０２は、類縁性リスト１２０へのエントリ１２２の追加、および類縁性リスト１２０からのエントリ１２２の削除である。
【００１４】
ターゲット・プロセス・パラメータ１０４は、その類縁性リスト１２０が、機能コード・パラメータ１０２によって指定されたオペレーションのターゲットであるターゲット・プロセス（ＰＩＤによって識別される）を指定する。
【００１５】
指定されたイベント・プロセス・パラメータ１０６の使い方は、機能コード・パラメータ１０２の指定によって異なる。イベント・プロセス・パラメータ１０６は、ターゲット・プロセスが終了したときにイベントを送達するプロセスを識別する。アプリケーションが、類縁性リスト１２０にエントリ１２２を追加する機能コード１０２を指定したときには、このパラメータ１０６の内容が、ターゲット・プロセス・パラメータ１０４によって指定されたプロセスの類縁性リスト１２０のエントリ１２４にコピーされる。アプリケーションが、類縁性リスト１２０からエントリ１２２を削除する機能コード１０２を指定すると、このパラメータ１０６の内容が、ターゲット・プロセス・パラメータ１０４によって指定されたプロセスの類縁性リスト１２０に存在するエントリ１２４と比較される。一致するプロセス識別子１２４を有するエントリ１２２が見つかった場合、このエントリはクリアされ再使用が可能となる。
【００１６】
イベント・パラメータ１０８は、ターゲット・プロセス１０４が終了したときに生成するイベント１２６を指定する。機能コード・パラメータ１０２がエントリ１２２の削除を要求しているときにはこのパラメータ１０８は使用されない。機能コード・パラメータ１０２の指定が、類縁性リスト１２０へのエントリ１２２の追加であるときには、このパラメータ１０８の内容が、ターゲット・プロセス・パラメータ１０４によって指定されたプロセスの類縁性リスト１２０のエントリ１２６にコピーされる。
【００１７】
第５のパラメータ１１０は、ｐｉｄ類縁性サービスによって生成されたリターン・コードを含む。このパラメータは、ｐｉｄ類縁性サービスの成功または失敗をアプリケーション・プログラムに指示するのに使用される。
【００１８】
図２に、クライアント・プログラムがそのＰＩＤを、サーバのｐｉｄ類縁性リスト１２０に追加するときのｐｉｄ類縁性サービス２２１の使用法を示す。図２には、ユーザ・アドレス空間２０２およびカーネル・アドレス空間２０４が示されている。カーネル・アドレス空間２０４は、アプリケーションがその他のユーザ・アドレス空間２０２と通信するサービスが提供される場所である。この例では、ユーザ・アドレス空間２０２が、サーバ・アドレス空間２１６（プロセスＢ）と通信するクライアント・アドレス空間２０６（プロセスＡ）を含む。
【００１９】
クライアント２０６は最初に、サーバ２１６に作業要求を割り当てる（段階２０８）。先に論じたように、これを実施する１つの手段は、メッセージ待ち行列にメッセージを入れることである。段階２０８で作業要求を割り当てた後、クライアント２０６は、カーネル・アドレス空間２０４の中の待機機能２１２を呼び出してサーバ２１６からの応答を待つ（段階２１０）。待機機能２１２を、汎用待機機能、またはメッセージまたは信号を待つｍｓｇｒｃｖのような機能とすることができる。これが、ＵＮＩＸシステムでの標準的なプログラミング習慣である。例えば、参照によって本明細書に組み込まれるＷ．Ｒ．スティーブンズ（Stevens）著「UNIX Network Programming」（1990）の１２６〜１３７ページに記載されているように、ＵＮＩＸシステムでは、別のプロセスにメッセージを送りたいプロセスが、ｍｓｇｓｎｄシステム・コールを発行して、メッセージ待ち行列にメッセージを入れることができる。この別のプロセスはこれを受けてｍｓｇｒｃｖシステム・コールを発行し、メッセージ待ち行列からメッセージを取り出すことができる。
【００２０】
プロセスＢとして示されているサーバ・スペース２１６では、サーバが、クライアント２０６から作業要求を受け取る（段階２１８）。これを、ｍｓｇｒｃｖのような機能を使用して実施し、段階２０８でクライアント２０６がメッセージ待ち行列に入れたメッセージを受け取ることができる。段階２１８で作業要求を受け取った後、サーバ２１６は、追加を指定した機能コード１０２、プロセスＢ（それ自体）がターゲットのターゲット・プロセスＰＩＤ１０４、プロセスＡが指定されたイベント・プロセス１０６、および特定の信号とすることができるイベント１０８を有する本発明のｐｉｄ類縁性サービス（ｐｉｄ＿ａｆｆｉｎｉｔｙ）２２１を呼び出す（段階２２０）。この段階が完了すると、万一何かが起きてサーバ・プロセス２１６が終了した場合、要求したイベント１０８を用いてクライアント・プロセス２０６にこのことが通知されることが保証される。
【００２１】
次にサーバ２１６が、段階２０８で割り当てられた作業要求を処理する（段階２２０）。エラーが発生しないと仮定すると、サーバ２１６は、作業要求を処理し（段階２２２）、クライアント２０６にその完了を通知する（段階２２６）。この通知を、作業要求の結果とともにメッセージをクライアント２０６に送ることによって実施することができる。サーバ２１６から送られたｍｓｇｓｎｄによって、ｍｓｇｒｃｖ待機２１２中のクライアント２０６は目覚める。段階２２６でクライアント・プロセス２０６に通知した後、サーバ２１６は、プロセスＢ２１６（それ自体）にセットされたターゲット・プロセス１０４のＰＩＤ類縁性リスト１２０の中のエントリ１２２を削除する機能コード１０２で、ｐｉｄ類縁性サービス２２１を呼び出す（段階２２８）。イベント・プロセス１０６は、プロセスＡ２０６にセットされる。ｐｉｄ類縁性サービス２２１がその要求の処理を完了すると、クライアント・プロセス２０６のエントリ１２２が、サーバ・プロセス２１６のＰＩＤ類縁性リスト１２０から除かれる。
【００２２】
このサーバ処理中に終了イベント２２４が発生し、サーバが、段階２２２の作業要求の処理を完了することができなくなったと仮定する。この場合は、カーネル２０４がプロセス終了２３０を制御する。プロセス終了２３０の一部として、カーネルは、終了したプロセス２１６のＰＩＤ類縁性リスト１２０の全てのエントリ１２２を処理する。ＰＩＤ類縁性リスト１２０のエントリ１２２が埋められている場合（段階２３２）、カーネルはイベント１２６を生成し、そのイベントのターゲットを、ＰＩＤ類縁性リスト１２０のエントリ１２２の中のＰＩＤ１２４とする（段階２３４）。
【００２３】
段階２３４でのイベントの生成によって、待機状態２１２にあるターゲット・プロセス２０６が再開され（段階２３６）、プロセスＡ２０６のイベント出口２３８への異常イベント１２６の送達が開始される。イベント出口２３８のクライアント・コードに、これが応答を待っていたサーバ２１６（プロセスＢ）の終了が通知される（段階２４０）。これによってクライアント・イベント出口２３８は、要求を終了するか、または再試行するかを決定することができる。通知があったときにクライアントが何をするかは本発明の一部ではなく、したがってここで説明はしない。
【００２４】
図３に、ｐｉｄ類縁性サービス２２１によってサポートされた別のモデルを示す。このケースでは、クライアント・プロセス３０２（プロセスＣ）が、それがすぐに通信するサーバ・プロセス３２０（プロセスＤ）のＰＩＤを決定する。これを、共用メモリ、構成ファイル、または本発明に関係しないその他の手段を用いて実施することができる。クライアント・プロセス３０２は次いで、追加を指定した機能コード１０２、プロセスＤ３２０（サーバ）をターゲットとするターゲット・プロセスＰＩＤ１０４、プロセスＣ３０２（クライアント自体）にセットされたイベント・プロセス１０６、およびその要求を処理している間にサーバ３２０が終了した場合にそれが受け取りたいイベント１０８を有するｐｉｄ類縁性サービス２２１を呼び出す（段階３０４）。
【００２５】
クライアント３０２は次いで、メッセージ待ち行列またはその他の通信機構を介してサーバ・プロセス３２０に作業を割り当てる（段階３０６）。クライアント３０２は次いで、待機サービス２１２を呼び出し、サーバ３２０からの応答を待つ（段階３０８）。待機サービス２１２は、要求の機能が完了するか、または異常イベントを受け取るまで、クライアント３０２をスリープ状態に置く。
【００２６】
その間にサーバ３２０は、作業要求を受け取り（段階３２２）、作業を処理する（段階３２４）。全てがうまくいった場合、サーバ３２０はクライアント３０２に、作業の完了を通知する（段階３２８）。段階３２８での通知によってクライアント・プロセス３０２は、成功を指示するリターン・コードで待機機能２１２を終了させる。待機状態から戻って制御を回復すると、クライアント３０２は、段階３０４で実施されたコールを取り消すｐｉｄ類縁性サービス２２１を呼び出す（段階３１０）。段階３１０のコールは、機能コード１０２を削除要求にセットし、ターゲット・プロセス・パラメータ１０４がサーバ・プロセスＤ３２０を識別し、イベント・プロセス・パラメータ１０６がこのクライアント３０２を識別する。
【００２７】
終了イベント３２６がサーバ３２０で発生した場合、プロセス終了サービス（ｐｒｏｃｅｓｓ＿ｔｅｒｍ）２３０が開始される。プロセス終了サービス２３０は、サーバ・プロセスＤ３２０のＰＩＤ類縁性リスト１２０の中のそれぞれのエントリに対して実行され（段階２３２）、これが、要求のイベント１２６を生成し、ターゲットのＰＩＤ１２４に送られる（段階２３４）。この場合、ターゲットＰＩＤ１２４はクライアント・プロセスＣ３０２の識別子であり、イベント１２６は、段階３０４でイベント・パラメータ１０８に入れられたものである。
【００２８】
段階２３４でイベントが生成されると、これによって、クライアント・プロセスＣ３０２が中断した待機２１２から抜け出す（段階３４０）。待機機能２１２は次に、段階３０８の後の呼出し元へ戻す代わりに、イベント出口３１１へ制御を渡す。イベント出口３１１には、サーバ・プロセスＤの終了が通知される（段階３１２）。この時点でクライアント・コード３０２は、要求を終了させるか、再試行するか、または別のサービスを要求するかのいずれかを実行することができる。
【００２９】
図４に、ＰＩＤ類縁性サービス２２１の処理を示す。サービス２２１は最初に、呼出し元のパラメータの妥当性を検査する（段階４０２）。機能コード１０２、ターゲット・プロセスＰＩＤ１０４、イベント・プロセスＰＩＤ１０６、またはイベント１０８が無効である場合、サービス２２１は、固有の失敗リターン・コードをセットし（段階４０４）、呼出し元へ戻す（段階４０６）。全てのパラメータが有効であると仮定すると、サービス２２１は、ターゲット・プロセス１０４をプロセス・ロックする（段階４０８）。このロックによって、複数の呼出し元のターゲット・プロセス１０４のＰＩＤ類縁性リスト（以下ＰＡＬ）１２０の更新が逐次化される。
【００３０】
ターゲット・プロセス１０４がＰＡＬ１２０をまだ持っていない場合（段階４１０）、ＰＡＬ１２０用の記憶域が獲得され、ＰＡＬ１２０の位置が、プロセス情報ブロック（ＰＩＢ）１１４のフィールド１１６に記憶される（段階４１２）。次に、追加処理が要求されているのか、または削除処理が要求されているのかを判定するために、機能コード１０２が試験される（段階４１６）。追加処理が要求されている場合の処理は、図５に記載されている（段階４１８）。
【００３１】
削除処理の場合、入力されたイベント・プロセスＰＩＤ１０６と一致するＰＩＤ１２４を有するエントリ１２２を求めてＰＡＬ１２０が走査される（段階４１４）。一致するエントリ１２２が見つかった場合（段階４２０）、このエントリ１２２がクリアされ、ＰＡＬ１２０の最後のエントリ１２２が、クリアされたエントリに移動されて、テーブルはすき間のない状態に維持される（段階４２２）。次いでプロセス・ロックが解除され、呼出し元に制御が戻される（段階４０６）。エントリ１２２が見つからない場合は、削除段階４２２が実行されずにプロセス・ロックが解除され、呼出し元に制御が戻される（段階４０６）。
【００３２】
図５に、ＰＡＬ１２０にエントリを追加する処理を示す。ターゲット・プロセスＰＩＤ１０４が試験され、呼出し元のＰＩＤ１１６と同じであるかどうかが判定される（段階５０２）。これらが一致する場合には、呼出し側プロセスが終了した場合に、イベント・プロセス１０６に信号（イベント１０８）が送られることを意味する。ＰＡＬ１２０にエントリ１２２を追加する前に、呼出し側プロセスが、イベント・プロセス１０６に信号（イベント１０８）を送ることができるかどうかを判定するための試験が実施される（段階５０４）。呼出し元が信号（イベント１０８）を送ることが許されていない場合、サービスは、エラー・コードをセットし（段階５０８）、プロセス・ロックを解除して、呼出し元に戻す（段階５１８）。
【００３３】
初期の試験の後、コードは、ＰＡＬ１２０の中をループする（段階５０６）。ＰＡＬ１２０の中のエントリ１２２を調べ、現在のＰＩＤ１２４が、イベントＰＩＤ１０８と同じ場合には（段階５１０）、このエントリのＰＩＤ１２４の上にイベントｐｉｄ１０６を記憶し、エントリ１２２のイベント１２６の上にイベント１０８を記憶することによってこのエントリ１２２が上書きされる（段階５１２）。段階５１０でＰＩＤが一致しない場合で、ＰＡＬ１２０に他のエントリがある場合には（段階５１４）、段階５０６に戻ってループが継続される。
【００３４】
ＰＡＬの中にイベントＰＩＤ１０６が見つからない場合、新しいエントリ１２２が選択される。これには普通、ＰＡＬ１２０の中の使用されていない次のエントリ１２２が使用される。ＰＡＬ１２０がいっぱいの場合には、より大きな新しいＰＡＬが用意され、古いＰＡＬ１２０が新しいＰＡＬにコピーされ、新しいＰＡＬのアドレスがＰＩＢ１１４のフィールド１１６に記憶される。プロセスはロックされている（段階４０８）ので、これは安全に実施される。古いＰＡＬが新しいＰＡＬにコピーされると、古いＰＡＬは解放される。次いで段階５１２で、ＰＡＬの中の使用されていないエントリ１２２を使用して、新しいエントリが記憶される。プロセス・ロックが解除され、呼出し元に制御が戻される（段階５１８）。
【００３５】
まとめとして、本発明の構成に関して以下の次項を開示する。
【００３６】
（１）複数の対話型タスクを有する情報処理システムにおいて、タスク終了を通知する方法であって、
１つまたは複数の各ターゲット・タスクごとに、前記ターゲット・タスクが終了したときに通知を送るべき他のタスクの１つまたは複数のエントリを含む類縁性リストを定義する段階と、
ターゲット・タスクおよび別のタスクを指定する類縁性要求を受け取とったことに応答して、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された類縁性リストに追加する段階と、
ターゲット・タスクの終了を検出したことに応答して、前記ターゲット・タスクについて定義された前記類縁性リストに含まれる他のそれぞれのタスクに通知する段階と
を含む方法。
（２）前記類縁性要求が、前記ターゲット・タスクから出される、上記（１）に記載の方法。
（３）前記類縁性要求が、前記別のタスクから出される、上記（１）に記載の方法。
（４）前記類縁性要求が第１のタイプのものであり、
ターゲット・タスクおよび別のタスクを指定する第２のタイプの類縁性要求を受け取ったことに応答して、前記ターゲット・タスクについて定義された前記類縁性リストから前記別のタスクのエントリを削除する段階をさらに含む
上記（１）に記載の方法。
（５）前記追加段階が、
前記ターゲット・タスクについて前記類縁性リストがすでに定義されているかどうかを判定する段階と、
前記ターゲット・タスクについて前記類縁性リストがすでに定義されている場合に、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する段階と、
前記ターゲット・タスクについて前記類縁性リストがまだ定義されていない場合に、前記ターゲット・タスクについて前記類縁性リストを定義し、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する段階と
を含む、上記（１）に記載の方法。
（６）前記タスクが、別個のアドレス空間を有するプロセスである、上記（１）に記載の方法。
（７）前記タスクがユーザ・タスクであり、前記段階が、オペレーティング・システムのカーネルによって実行される、上記（１）に記載の方法。
（８）前記類縁性要求が、前記ターゲット・プロセスについて定義された前記類縁性リスト上で実行されるオペレーションのタイプを指定する、上記（１）に記載の方法。
（９）前記類縁性要求が、前記ターゲット・タスクが終了したときに前記別のタスクのために生成されるイベントを指定する、上記（１）に記載の方法。
（１０）複数の対話型タスクを有する情報処理システムにおいて、タスク終了を通知する装置であって、
１つまたは複数の各ターゲット・タスクごとに、前記ターゲット・タスクが終了したときに通知を送るべき他のタスクの１つまたは複数のエントリを含む類縁性リストを定義する手段と、
ターゲット・タスクおよび別のタスクを指定する類縁性要求を受け取とったことに応答して、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された類縁性リストに追加する手段と、
ターゲット・タスクの終了を検出したことに応答して、前記ターゲット・タスクについて定義された前記類縁性リストに含まれる他のそれぞれのタスクに通知する手段と
を備える装置。
（１１）前記類縁性要求が第１のタイプのものであり、
ターゲット・タスクおよび別のタスクを指定する第２のタイプの類縁性要求を受け取ったことに応答して、前記ターゲット・タスクについて定義された前記類縁性リストから前記別のタスクのエントリを削除する手段をさらに備える
上記（１０）に記載の装置。
（１２）前記追加手段が、
前記ターゲット・タスクについて前記類縁性リストがすでに定義されているかどうかを判定する手段と、
前記ターゲット・タスクについて前記類縁性リストがすでに定義されている場合に、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する手段と、
前記ターゲット・タスクについて前記類縁性リストがまだ定義されていない場合に、前記ターゲット・タスクについて前記類縁性リストを定義し、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する手段と
を含む、上記（１０）に記載の装置。
（１３）タスク終了を通知する方法段階を実行するマシン実行可能な命令プログラムを具現化したマシン可読のプログラム記憶装置において、前記方法段階が、
１つまたは複数の各ターゲット・タスクごとに、前記ターゲット・タスクが終了したときに通知を送るべき他のタスクの１つまたは複数のエントリを含む類縁性リストを定義する段階と、
ターゲット・タスクおよび別のタスクを指定する類縁性要求を受け取とったことに応答して、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する段階と、
ターゲット・タスクの終了を検出したことに応答して、前記ターゲット・タスクについて定義された前記類縁性リストに含まれる他のそれぞれのタスクに通知する段階と
を含むプログラム記憶装置。
（１４）前記類縁性要求が第１のタイプのものであり、前記方法段階が、
ターゲット・タスクおよび別のタスクを指定する第２のタイプの類縁性要求を受け取ったことに応答して、前記ターゲット・タスクについて定義された前記類縁性リストから前記別のタスクのエントリを削除する段階をさらに含む
上記（１３）に記載のプログラム記憶装置。
（１５）前記追加段階が、
前記ターゲット・タスクについて前記類縁性リストがすでに定義されているかどうかを判定する段階と、
前記ターゲット・タスクについて前記類縁性リストがすでに定義されている場合に、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する段階と、
前記ターゲット・タスクについて前記類縁性リストがまだ定義されていない場合に、前記ターゲット・タスクについて前記類縁性リストを定義し、前記別のタスクのエントリを、前記ターゲット・タスクについて定義された前記類縁性リストに追加する段階と
を含む、上記（１３）に記載のプログラム記憶装置。
【図面の簡単な説明】
【図１】ｐｉｄ類縁性サービスに渡されるパラメータのリスト、プロセス情報ブロック、およびｐｉｄ類縁性リストを示す図である。
【図２】それ自体のＰＩＤ類縁性リストに別のプロセスのＰＩＤを追加するためのフローおよび論理、ならびに呼出し側プロセスの終了の結果を示す図である。
【図３】ターゲット・プロセスのＰＩＤ類縁性リストに、呼出し元のＰＩＤを追加するためのフローおよび論理、ならびにそのターゲット・プロセスの終了によって開始されるアクションを示す図である。
【図４】ＰＩＤ類縁性サービスへの入口およびエントリ削除処理を示す図である。
【図５】ＰＩＤ類縁性サービスのエントリ追加論理を示す図である。
【符号の説明】
１００  ｐｉｄ類縁性パラメータ・リスト（ＰＬ）
１０２  機能コード
１０４  ターゲット・プロセス・パラメータ
１０６  イベント・プロセス・パラメータ
１０８  イベント・パラメータ
１１０  リターン・コード
１１４  プロセス情報ブロック（ＰＩＢ）
１１６  プロセス識別子（ＰＩＤ）
１１８  ポインタ
１２０  類縁性リスト
１２４  エントリ
１２４  プロセス識別子
２０２  ユーザ・アドレス空間
２０４  カーネル・アドレス空間
２０６  プロセスＡ
２１２  待機機能
２１６  プロセスＢ
２２１  ＰＩＤ類縁性サービス
２３０  プロセス終了
２３６  段階
３０２  プロセスＣ
３１１  イベント出口
３２０  プロセスＤ
３２６  終了イベント
３４０  段階
【図１】
0003701816.tif 000002
【図２】
0003701816.tif 000003
【図３】
0003701816.tif 000004
【図４】
0003701816.tif 000005
【図５】
0003701816.tif 000006