(57)【特許請求の範囲】
【請求項１】
ユーザが要望したサービスを提供するためのアプリケーションプログラムを実行する複数のサービスエージェントと、該サービスエージェントが前記アプリケーションプログラムを実行するために必要とする資源を前記サービスエージェントに提供する複数の資源管理エージェントを含み、
システムに同時に現れるサービスエージェントの最大数をnS、サービスエージェントが必要とする資源の総数をrS、同時に、あらかじめ決めておく、停止故障してよい資源管理エージェントの数の上限をfMとすると、前記資源管理エージェントの総数はfM＋１で、停止故障しない数の資源管理エージェントが管理する資源の総数の下限がrS＋fM×（nS−１）であり、
前記各サービスエージェントは、資源の利用権を資源管理エージェントから獲得する際、資源1個につき1つの要求メッセージを全ての資源管理エージェントに対して順次送信する手段と、前記資源管理エージェントから要求メッセージに応答して利用許可メッセージを受信すると、該資源管理エージェントから資源の利用権を獲得する手段と、自己が必要とする全ての資源の利用権を獲得できると、アプリケーションプログラムを実行する手段を含み、
前記各資源管理エージェントは、あるサービスエージェントから要求メッセージが送信されてきた場合、そのとき自己が停止故障していなければ該要求メッセージを受信する手段と、前記要求メッセージを受信すると、自己が管理する資源の中に未だ他のサービスエージェントに利用権を設定していない資源があれば要求メッセージを送信したサービスエージェントに利用許可メッセージを送信し、自己が管理する資源全てに既に他のサービスエージェントに利用権を設定しているならば要求メッセージを送信したサービスエージェントに利用不可メッセージを送信する手段を含む
非同期エージェントシステム。
【請求項２】
ユーザが要望したサービスを提供するためのアプリケーションプログラムを実行する複数のサービスエージェントと、該サービスエージェントが前記アプリケーションプログラムを実行するために必要とする資源を前記サービスエージェントに提供する複数の資源管理エージェントを含み、システムに同時に現れるサービスエージェントの最大数をnS、サービスエージェントが必要とする資源の総数をrS、同時に、あらかじめ決めておく、停止故障してよい資源管理エージェントの数の上限をfMとすると、前記資源管理エージェントの総数はfM＋１で、停止故障しない数の資源管理エージェントが管理する資源の総数の下限がrS＋fM×（nS−１）である非同期エージェントシステムにおける資源利用方法であって、
前記サービスエージェントは、資源の利用権を資源管理エージェントから獲得する際、資源1個につき１つの要求メッセージを全ての資源管理エージェントに対して順次送信し、ある資源管理エージェントから利用不可メッセージを受信すると、未だ要求メッセージを送信していない資源管理エージェントに要求メッセージを送信し、ある資源管理エージェントから利用許可メッセージを受信すると、該資源管理エージェントから資源の利用権を獲得し、当該サービスエージェントが必要とする個数の資源全ての資源利用権を獲得できると、アプリケーションプログラムを実行し、未だ利用権を獲得できていない資源が存在するならば、全ての資源利用権を獲得できるまで、要求メッセージを送信し、
前記各資源管理エージェントは、あるサービスエージェントから要求メッセージが送信されてきた場合、そのとき自己が停止故障していなければ、該要求メッセージを受信し、自己が管理する資源の中に未だ他のサービスエージェントに利用権を設定していない資源が存在するならば該サービスエージェントに利用許可メッセージを送信し、自己が管理する資源全てに対して既に他のサービスエージェントに利用権を設定しているならば該サービスエージェントに利用不可メッセージを送信する、
非同期エージェントシステムにおける資源利用方法。
【請求項３】
ユーザが要望したサービスを提供するためのアプリケーションプログラムを実行する複数のサービスエージェントと、該サービスエージェントが前記アプリケーションプログラムを実行するために必要とする資源を前記サービスエージェントに提供する複数の資源管理エージェントを含み、システムに同時に現れるサービスエージェントの最大数をnS、サービスエージェントが必要とする資源の総数をrS、同時に、あらかじめ決めておく、停止故障してよい資源管理エージェントの数の上限をfMとすると、前記資源管理エージェントの総数はfM＋１で、停止故障しない数の資源管理エージェントが管理する資源の総数の下限がrS＋fM×（nS−１）である非同期エージェントシステムにおいて、前記各サービスエージェントで実行される資源利用プログラムであって、
資源の利用権を資源管理エージェントから獲得する際、資源1個につき1つの要求メッセージを全ての資源管理エージェントに対して順次送信する手順と、ある資源管理エージェントから利用不可メッセージを受信すると、未だ要求メッセージを送信していない資源管理エージェントに要求メッセージを送信する手順と、ある資源管理エージェントから利用許可メッセージを受信すると、該資源管理エージェントから資源の利用権を獲得し、当該サービスエージェントが必要とする個数の資源全ての資源利用権を獲得できると、アプリケーションプログラムを実行する手順と、未だ利用権を獲得できていない資源が存在するならば、全ての資源利用権を獲得できるまで、要求メッセージを送信する手順とをコンピュータに実行させるための資源利用プログラム。
【請求項４】
ユーザが要望したサービスを提供するためのアプリケーションプログラムを実行する複数のサービスエージェントと、該サービスエージェントが前記アプリケーションプログラムを実行するために必要とする資源を前記サービスエージェントに提供する複数の資源管理エージェントを含み、システムに同時に現れるサービスエージェントの最大数をnS、サービスエージェントが必要とする資源の総数をrS、同時に、あらかじめ決めておく、停止故障してよい資源管理エージェントの数の上限をfMとすると、前記資源管理エージェントの総数はfM＋１で、停止故障しない数の資源管理エージェントが管理する資源の総数の下限がrS＋fM×（nS−１）である非同期エージェントシステムにおいて、前記各資源管理エージェントで実行される資源利用プログラムであって、
あるサービスエージェントから要求メッセージが送信されてきた場合、その時自己が停止故障していなければ、該要求メッセージを受信する手順と、自己が管理する資源の中に未だ他のサービスエージェントに利用権を設定していない資源が存在するならば該サービスエージェントに利用許可メッセージを送信する手順と、自己が管理する資源全てに対して既に他のサービスエージェントに利用権を設定しているならば該サービスエージェントに利用不可メッセージを送信する手順とをコンピュータに実行させるための資源利用プログラム。
【請求項５】
請求項３または４に記載の資源利用プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ユーザが要望したサービスを提供するためのアプリケーションプログラムを実行する複数のサービスエージェントと、サービスエージェントがアプリケーションプログラムを実行するために必要とする資源をサービスエージェントに提供する複数の資源管理エージェントを含む非同期エージェントシステムに関する。
【０００２】
【従来の技術】
大規模ネットワーク上で、あるユーザの代理としてユーザが要望したサービスを提供するためのアプリケーションプログラムを自律的に実行するソフトウェアをエージェントと呼ぶ。エージェントには、各ユーザの要望に応じて非同期に生成され、ユーザはそのエージェントが実行するアプリケーションプログラムのサービスを受ける形態で利用される場合がある。以下では、このように、ユーザの要望により非同期に生成されてサービスを提供するエージェントをサービスエージェントと呼ぶ。サービスエージェントは、アプリケーションプログラムを実行するためにCPUやメモリといった資源を必要とする。以下では、資源を可算できるものとして抽象的に扱う。非同期に生成されるサービスエージェントに対し、あらかじめ各サービスエージェントのための資源を準備することはできず、サービスエージェントのための資源は共有資源として準備される。サービスエージェントは、生成された後に資源利用権を獲得し、アプリケーションプログラムを実行する。ここで、１つの資源は高々１つのサービスエージェントが占有的に使用しなければならない。複数のサービスエージェントが同時に資源を必要とする場合、資源をどのサービスエージェントに利用させるかを決定しなければならない。このように、エージェントの資源利用の要望に対して、どのエージェントに資源利用権を与えるかを決定することを一般に資源配置と呼ぶ。
【０００３】
従来の資源配置の技術として、同じ資源を必要として競合するエージェントが相互に通信を行うことにより、どのエージェントが資源を利用できるかを決定する分散処理方式（参考文献：G. Ricart and R. K. Agrawala, An Optimal Algorithm for Mutual Exclusion in Computer Networks, Comm. ACM, Vol. 24, No. 24, No. 1, pp. 9-17, 1981.)や、トークンと呼ぶ制御信号を競合するエージェントの間で周回させ、トークンを持つエージェントに資源利用権を与えるトークリング方式（参考文献：G. Le Lann, Distributed systems-towards a formal approach, Information Processing '77, pp. 155-160, 1977.)などがある。これらの方式は、競合するエージェント同士で通信を行うために、あらかじめ競合相手を知っておく必要がある。
【０００４】
また、システム内に資源利用権を管理する資源管理エージェントが存在し、サービスエージェントが資源管理エージェントにリクエストメッセージを出すことにより資源利用の要求を出し、リクエストメッセージに対する応答メッセージを資源管理エージェントがサービスエージェントへ送ることにより資源利用権を与える手法も考えられる。このように、資源管理エージェントが資源利用権を与えるサービスエージェントを決定する資源割当の手法を、資源取引と呼ぶ。資源取引は１個の資源管理エージェントが集中的に資源を管理し、各サービスエージェントがその唯一の資源管理エージェントとの通信により資源利用権を獲得する方法により、簡単に実現できる。しかし、この方法は耐故障性の観点から見ると、優れた手法とはいえない。すなわち、唯一の資源管理エージェントが故障して全く動作しなくなったならば、どのサービスエージェントも資源利用権を獲得することができなくなる。そこで、システム内に複数の資源管理エージェントを存在させ、各サービスエージェントは複数の資源管理エージェントとの通信により資源利用権を獲得する方法が考えられる。この方法ならば、いくつかの資源管理エージェントが故障した場合でも、正常に動作し続ける資源管理エージェントがいれば、その正常な資源管理エージェントとの通信によりサービスエージェントが資源利用権を獲得する手法が考えられる。
【０００５】
【発明が解決しようとする課題】
本発明では、複数のサービスエージェントと複数の資源管理エージェントとの間での通信によりサービスエージェントが共有資源の利用権を獲得するような資源取引の問題を対象とする。
【０００６】
従来の方法では、共有資源はサービスエージェントが同時に要求するかもしれない数よりも少ないかもしれない必要最小限の数だけを準備する。また、同時に多くのサービスエージェントからのリクエストがあって１つの資源を競合する場合には、あるサービスエージェントにのみ利用権を与え、他のサービスエージェントは先に利用権を与えられたサービスエージェントが資源を解放するまで待たせる。しかし、サービスエージェントは資源を利用できない限りアプリケーションプログラムを実行することはできないので、従来の方法では、あるサービスエージェントのユーザは、他のサービスエージェントが資源を解放するまでサービスを利用できない。このような方法では、他の速度の遅いサービスエージェントの動作のために正常な速度のサービスエージェントがサービスを提供できないこともあり、正常なサービスエージェントの良好なサービス提供が妨害される。
【０００７】
そこで、本発明の目的は、サービスエージェントが資源管理エージェントから資源利用権を獲得するとき、他のサービスエージェントの中に動作速度が遅かったり停止故障しているエージェントがいる場合でも、また、あらかじめ決めておいたある特定数以下の資源管理エージェントが停止故障する場合でも、正常なサービスエージェントが資源利用権を獲得することが妨害されないような資源利用ができる非同期エージェントシステムおよび資源利用方法を提供することにある。ここで、エージェントの停止故障とはそのエージェントが一切動作しなくなるような故障であり、停止故障したエージェントはメッセージの送受信も全くできなくなる。
【０００８】
【課題を解決するための手段】
本発明の非同期エージェントシステムでは、システムに同時に現れるサービスエージェントの最大数をnS、サービスエージェントが必要とする資源の総数をrS、同時に、あらかじめ決めておく、停止故障してよい資源管理エージェントの数の上限をfMとすると、資源管理エージェントの総数はfM＋１で、停止故障しない数の資源管理エージェントが管理する資源の総数の下限がrS＋fM×（nS−１）である。
【０００９】
rSは実際にサービスエージェントが利用する資源として、あるサービスエージェントに提供される資源として必要な数である。また、各サービスエージェントは同時にfＭ＋1個の資源管理エージェントへ資源要求をするため、各サービスエージェントに対して、実際には利用しない高々計fＭ個の資源が提供される場合がある。最後に資源を要求するサービスエージェントには、そのサービスエージェントが実際に必要とする個数の資源が提供できればよいので、サービスエージェントの総数ｎSに対してfＭ×（ｎS−１）が実際には利用されない資源として必要な数になる。
【００１０】
各サービスエージェントは、資源の利用権を資源管理エージェントから獲得する際、全ての資源管理エージェントに対して資源1個につき1つの要求メッセージを順次送信し、ある資源管理エージェントから利用不可メッセージを受信すると、未だ要求メッセージを送信していない資源管理エージェントに要求メッセージを送信し、ある資源管理エージェントから使用許可メッセージを受信すると、該資源管理エージェントから資源の利用権を獲得し、当該サービスエージェントが必要とする個数資源全ての資源利用権を獲得できると、アプリケーションプログラムを実行し、未だ利用権を獲得できていない資源が存在するならば、全ての資源利用権を獲得できるまで、要求メッセージを送信する。
【００１１】
各資源管理エージェントは、あるサービスエージェントから要求メッセージが送信されてきた場合、その時点で自己が停止故障していなければ、該要求メッセージを受信し、自己が管理する資源の中に未だ他のサービスエージェントに利用権を設定していない資源が存在するならば該サービスエージェントに利用許可メッセージを送信し、自己が管理する資源全てに対して既に他のサービスエージェントに利用権を設定しているならば該サービスエージェントに利用不可メッセージを送信する。
【００１２】
サービスエージェント、資源管理エージェントのそれぞれのプログラムに、他のサービスエージェントからのメッセージ受信を待たされるところがないこと、十分多くの資源を停止故障しない資源管理エージェントが管理していることより、他のサービスエージェントの動作速度に影響を受けることなく資源利用権を獲得できる。また、最後に資源を要求するサービスエージェント以外のサービスエージェントに、実際には利用しないのに提供される資源の数が高々fM×（nS−１）個であることより、rS＋fM×（nS−１）が、資源管理エージェントが準備しなければならない資源の総数の最適な最小値である。
【００１３】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。
【００１４】
図１は本発明の一実施形態の非同期エージェントシステムの概念図である。
【００１５】
この非同期エージェントシステムは、複数のホスト１とそれらの間で通信するための通信線２から構成される通信ネットワーク上で動作する複数のサービスエージェント３および複数の資源管理エージェント４と、サービスエージェント３が利用する資源５（CPU、メモリ等）から成る。エージェント３，４は非同期に動作し、各エージェント３，４は他のエージェント３，４がどのような状態であるかを直接見ることはできない。
【００１６】
サービスエージェント３はユーザの要望（情報検索、商取引など）に応えるために非同期に生成され、ユーザにサービスを提供するためのアプリケーションプログラムを実行するソフトウェアである。資源管理エージェント４は、サービスエージェント３がアプリケーションプログラムを実行するために必要とする資源５を管理し、サービスエージェント３の要望に応じて資源５の利用権を与えるソフトウェアである。資源管理エージェント４は、システム起動時から永久的に活動し続ける。一方、サービスエージェント３は、システム起動後に途中で新たに生成される。生成されるサービスエージェント３は、既に内部で活動しているエージェントが生成することも、システム外部の計算機やエージェントが命令により生成することもできる。このシステムでは、システム内にいる任意の２つのエージェントの間でメッセージを送信・受信することにより通信する。ただし、本発明では、他のサービスエージェント３の動作速度に影響を受けないような資源利用を行うため、図２に示すようにサービスエージェント３同士、資源管理エージェント４同士の間で資源取引のための通信を直接行うことはない。１つのサービスエージェント３と１つの資源管理エージェント４の間で通信を行うとき、一方がメッセージを送信してから他方がメッセージを受信するまで遅延がある。この遅延は一定ではなく、システムの状況により変化する。通信は、同じホスト１にいるエージェント間でも、異なるホスト１にいるエージェント間でも、同様に行える。遅延は、同じホスト１にいるエージェント間での通信よりも異なるホスト１にいるエージェント間の通信の方が長い場合が多いが、本発明では送信から受信までの遅延がどのような場合でも適用可能であるので、以下では両者を区別しない。サービスエージェント３は、生成されたとき、システム内にいる全ての資源管理エージェント４の名前を知っている。資源管理エージェント４は、システム起動時にはどのサービスエージェント３の情報も知らないが、サービスエージェント３からメッセージを受信することにより、サービスエージェント３の情報を知識に蓄えていく。
【００１７】
なお、資源管理エージェント４は必ずしも１つのホスト１上に１個が存在する必要はなく、１つのホスト１に複数の資源管理エージェントがいても、資源管理エージェントが１つもいないホスト１があってもよい。ただし、異なるホスト１にいるサービスエージェント３も資源管理エージェント４と通信することは可能である。また、ネットワーク内にあるどの資源にも所有者として１つの資源管理エージェント４がいる。
【００１８】
本実施形態では、停止故障してよい資源管理エージェント４の数の上限があらかじめ設定されている。以下では、あらかじめ決めておく、停止故障してよい資源管理エージェント４の数の上限をfMとする。また、システム内にいる停止故障しない資源管理エージェント４が管理する資源の数は、ある特定数以上でなければならない。以下では、停止故障しない数の資源管理エージェント４が管理する資源の総数は少なくともrM個でなければならないとする。さらに、システムに現れるサービスエージェント３の数とそれらのサービスエージェント３が必要とする資源の数の上限も設定しておく必要がある。以下では、システムに同時に現れるサービスエージェント３の数は高々nS個、これらサービスエージェント３が必要とする資源の数の和をrSとする。
【００１９】
各エージェント３、４は識別子とプログラムから構成される。エージェント３、４が持つ識別子は、システム内にいるどのエージェントとも異なる。以下では、識別子iのエージェントを、エージェント３iまたは４iと記す。
【００２０】
資源管理エージェント４のプログラムは、資源の管理を行うための資源利用プログラムのみを持つ。いま、資源管理エージェント４が管理する資源の数を４. rとする。資源管理エージェント４の資源利用プログラムでは、サービスエージェント３からの要望に応じて、４.r個のそれぞれの資源に対して複数のサービスエージェント３が同時に利用することがないように、サービスエージェント３に資源利用権を与える。
【００２１】
サービスエージェント３のプログラムは資源利用プログラムとアプリケーションプログラムから構成される。サービスエージェント３は非同期に生成されるが、生成されたときは資源利用プログラムを実行する。資源利用プログラムを完了した後、アプリケーションプログラムに移行してユーザへのサービス提供を開始する。サービスエージェント３は、アプリケーションプログラムを実行するために必要な資源の数を知っている。いま、サービスエージェント３がアプリケーションプログラムのために必要とする資源の数を３. r と記す。サービスエージェント３の資源利用プログラムでは、３. r 個の資源を獲得するために資源管理エージェント４と通信をする手続きを実行する。アプリケーションプログラムは、ユーザの要望に応えるためのプログラムである。なお、本実施形態では、アプリケーションプログラム実行のために必要な資源の数があらかじめわかってさえいれば、どのようなアプリケーションプログラムの下でも動作する。
【００２２】
エージェント３、４はメッセージを送信・受信することによりシステム内にいるどのエージェント３、４とも通信できる。ただし、他のサービスエージェント３の動作速度に影響を受けないような資源利用を行うため、資源利用プログラム実行中のサービスエージェント３同士、資源管理エージェント４同士の間では、直接通信することはしない。エージェントがメッセージを送信するときは、送信先がどのホストにいるかに関係なく、送信先を識別子により指定する。なお、本発明では、通信が同じホスト上のエージェント間で行われたものか、異なるホスト上のエージェント間で行われたものかは区別しないので、以下ではエージェントがどのホストに滞在しているかは考慮しない。エージェントがメッセージを送信してから、送信先のエージェントが受信するまで、一定に定まってはいない遅延があるが、送信されたメッセージを送信先のエージェントが永久に受信しないということはない。なお、エージェントjがエージェントiからメッセージを受信したとき、エージェントjはそのメッセージが識別子iのエージェントから送られてきたものであることを理解できる。
【００２３】
資源利用プログラムは、あらかじめ決めておいたある特定数fM以下の資源管理エージェント４が停止故障する場合でも、正常なサービスエージェント３が資源利用権を獲得することが妨害されないようにする。ただし、そのためには、rM≧rS＋fM×（nS―１）が成立するようにシステムを構成しておかなければならない。
【００２４】
資源利用プログラムでは、サービスエージェント３は資源管理エージェント４に対して資源の利用権を要求するメッセージを資源1個毎に送り、さらに、サービスエージェント３は同時に並行して（fM＋１）個の資源管理エージェント４と資源利用権の取り引きをする。同時にfM個以下の資源管理エージェント４としか取り引きしないならば、取り引き先全てが停止故障しているときにサービスエージェント３のプログラムの進行が止まるためである。また、並行して（fM＋１）個の資源管理エージェント４と資源利用権の取り引きをするならば、サービスエージェント３が必要数の資源利用権の獲得を確定させた後でも、資源管理エージェント４はまだサービスエージェント３に資源利用権を与え続ける。すなわち、サービスエージェント３に提供される資源数は、実際に必要な資源数よりも多くなる。そこで、サービスエージェント３に与えられる資源を、そのサービスエージェント３が実際に必要な資源数に近付けるためにサービスエージェント３は１個ずつ資源を要求する。
【００２５】
サービスエージェント３、資源管理エージェント４は資源利用プログラムで以下のメッセージを使う。
【００２６】
・要求メッセージ：サービスエージェント３が１個の資源を資源管理エージェント４へ要求するためのメッセージ。
【００２７】
・利用許可メッセージ：サービスエージェント３の要求に対し、１個の資源が利用できることを資源管理エージェント４がサービスエージェント３へ知らせるためのメッセージ。
【００２８】
・利用不可メッセージ：サービスエージェント３の要求に対し、どの資源も利用できないことを資源管理エージェント４がサービスエージェント３へ知らせるためのメッセージ。
【００２９】
サービスエージェント３iがri個の資源を必要とするときを考える。サービスエージェント３iはまず、資源管理エージェント４のリストから適当な(fM＋１)個の資源管理エージェント４を選択する。それらの資源管理エージェント４を４1,４2,・・・,４fM+1とする。サービスエージェント３iは、各資源管理エージェント４1,４2,・・・,４fM+1に要求メッセージを送信する。サービスエージェント３iからの要求メッセージを受信した資源管理エージェント４jは、自分が管理する資源の中にその時点で提供可能な資源が存在するならば、サービスエージェント３に利用許可メッセージを送信し、提供可能な資源の数を１つ減らす。全ての資源の利用権を既にあるサービスエージェント３に提供しているならば、すなわち、管理する４j.r個の資源の利用権をあるサービスエージェント３に提供しているならば、資源管理エージェント４jはエージェント３iに利用不可メッセージを送信する。資源管理エージェント４1,４2,・・・,４fM+1のうち少なくとも１個の資源管理エージェント４は停止故障をしておらず、利用許可メッセージまたは利用不可メッセージをサービスエージェント３へ送信する。すなわち、サービスエージェント３iはやがてある資源管理エージェント４から利用許可メッセージか利用不可メッセージを受信する。サービスエージェント３iが資源管理エージェント４jから利用不可メッセージを受信したとき、まだ要求メッセージを送信していない資源管理エージェント４が存在するならば、そのような資源管理エージェント４の１つへ要求メッセージを送信する。サービスエージェント３iが資源管理エージェント４jから利用許可メッセージを受信したとき、ri個の資源利用権が獲得できたならば、資源利用プログラムを完了してアプリケーションプログラムへ移行する。資源管理エージェント４jから利用許可メッセージを受信したときにまだri個の資源が獲得できていないならば、再び資源管理エージェント４jへ要求メッセージを送信する。サービスエージェント３iは、ri個の資源の利用権が獲得できるまで、要求メッセージの送信と利用許可／利用不可メッセージの受信を繰り返す。
【００３０】
図３はサービスエージェント３の資源利用プログラムの処理手順のフローチャートを示す。なお、フローチャート内に現れるPopは、集合から１要素を取り出して出力する操作を表す。ただし、集合が空集合のときは、Popはφを出力する。また、図４に資源管理エージェント４の資源利用プログラムの処理手順のフローチャートを示す。本プログラムにおいて使用するメッセージや変数の表記の説明をする。
【００３１】
・メッセージ
―要求メッセージ：Requestと記す。
【００３２】
―利用許可メッセージ：Response(1)と記す。
【００３３】
―利用不可メッセージ：Response(0)と記す。
【００３４】
・サービスエージェント３が使用する変数
―３.S：資源管理エージェント４の識別子の集合。サービスエージェント３がまだRequestを送信したことない相手を表す。初期値はシステム内の全ての資源管理エージェント４。
【００３５】
―３.k：正整数。サービスエージェント３が資源利用権を獲得しなければならない数。初期値はr３。
【００３６】
・資源管理エージェント４が使用する変数
―４.k：正整数。資源管理エージェント４が管理する資源のうち、どのサービスエージェント３にも資源利用権を与えていない資源の数を表す。初期値はr４。
【００３７】
以下、サービスエージェント３の資源利用プログラムの処理の概要を説明をする。資源管理エージェント４の個数tを初期化する（ステップ１１）。サービスエージェント３はまず、資源管理エージェント４の集合４.Sから１つの要素を抜き出し、その資源管理エージェント４に要求メッセージRequestを送信する操作を（fM＋１）回繰り返す（ステップ１２、１３）。資源管理エージェント４から利用不可メッセージRequest(0)を受信したとき、資源管理エージェント４の集合４.Sから要素を抜き出し、その資源管理エージェント４に要求メッセージRequestを送信する（ステップ１５〜１７）。資源管理エージェント４から許可メッセージResponse(1)を受信したとき（ステップ１８）、３.kを１減らす（ステップ１９）。サービスエージェント３が獲得しなければならない資源利用権の数３.kが0かどうか判定する（ステップ２０）。０でなければ、要求メッセージRequestをサービスエージェント３へ再び送信する（ステップ２１）。ステップ２０で３.kが０になったとき、サービスエージェント３は資源利用プログラムを終了し、アプリケーションプログラムへ移行する（ステップ２２）。アプリケーションプログラム移行後に資源利用プログラムのためのメッセージを受信したときは、無視する。
【００３８】
なお、ステップ１４と１８の「受信」はサービスエージェント３が配達されたメッセージを処理するという意味である。ある資源管理エージェント４へ要求メッセージRequestを送信してから次の資源管理エージェント４へ要求メッセージRequestを送信するまでにメッセージResponse(０)、Response(１)が配達されることがあるが、その場合は要求メッセージRequestの送信を終えるまで処理を保留する。
【００３９】
次に、資源管理エージェント４の資源利用プログラムの処理の概要を説明する。資源管理エージェント４は、システムの運用開始から永久に以下の操作を繰り返す。サービスエージェント３から要求メッセージRequestを受信したとき（ステップ１３）、どのサービスエージェント３にも資源利用権を与えていない資源の数を表す４.kが０になったか判定する（ステップ３２）。４.kが正であれば、サービスエージェント３へ許可メッセージResponse(1)を送信して４.kを１減らす（ステップ３３）。４.kが０になってからサービスエージェント３から要求メッセージRequest受信したとき、サービスエージェント３へ利用不可メッセージResponse(0)を送信する（ステップ３４）。
【００４０】
次に、本システムにおける、このプログラムによる動作例を示す。
【００４１】
高々１個の資源管理エージェント４が停止故障すること想定し、図５に示すように、システムには、4個の資源管理エージェント４1,４2,４3,４4がいるとし、それぞれが管理する資源５の数を３個、３個、２個、２個とし、また、高々３個のサービスエージェント３1,３2,３3が順に生成され、うち高々２個が２個の資源を要求し、残りのサービスエージェントが要求する資源の数は１個の場合を考える。このシステムでは、どの３個以上の資源管理エージェント４の組み合わせでも、提供する資源の総数rMはrS＋fM×（nS―１）＝７以上になっており、停止故障しない資源管理エージェント４が提供する資源の総数は十分多い。なお、図６から図２４中の実線の矢印は利用許可メッセージの送信を示す。
【００４２】
動作例１
停止故障しない資源管理エージェント４が管理する全ての資源が最終的にあるサービスエージェント３に占有される例：
１.  資源管理エージェント４1が停止故障し、全く動作しなくなる（図６）。
【００４３】
２.  ２個の資源が必要なサービスエージェント３1が生成され、資源管理エージェント４2,４3に要求メッセージRequestを送信する（図７）。
【００４４】
３.  ２個の資源が必要なサービスエージェント３2が生成され、資源管理エージェント４2,４4に要求メッセージRequestを送信する（図７）。
【００４５】
４.  資源管理エージェント４2,４3がそれぞれサービスエージェント３1から要求メッセージRequestを受信し、それぞれサービスエージェント３1へ利用許可メッセージResponse(1)を送信する（図８）。ここで、４2.k＝２、４3.k＝１になる。
【００４６】
５.  資源管理エージェント４2,４4がそれぞれサービスエージェント３2から要求メッセージRequestを受信し、それぞれサービスエージェント３2へ利用許可メッセージResponse(1)を送信する（図８）。ここで、４2.k＝１、４4.k＝１になる。
【００４７】
６.  サービスエージェント３1が資源管理エージェント４2から利用許可メッセージResponse(1)を受信すると、まだ３.k＝１なので、資源管理エージェント４2へ要求メッセージRequestを送信する（図９）。
【００４８】
７.  資源管理エージェント４2はサービスエージェント３1から要求メッセージRequestを受信し、サービスエージェント３1へ利用許可メッセージResponse(1)を送信する（図9）。ここで、４2.k＝０になる。
【００４９】
８.  サービスエージェント３1が資源管理エージェント４3から利用許可メッセージResponse(1)を受信する（図９）。３1.k＝０になったので、サービスエージェント３1はアプリケーションプログラムへ移行する。
【００５０】
９.  サービスエージェント３2が資源管理エージェント４4から利用許可メッセージResponse(1)を受信するが、まだ３2.k＝１なので、資源管理エージェント４4へ要求メッセージRequestを送信する（図１０）。
【００５１】
１０.  資源管理エージェント４4はサービスエージェント３2から要求メッセージRequestを受信し、サービスエージェント３2へ利用許可メッセージResponse(1)を送信する（図１１）。ここで、４4.k＝０になる。
【００５２】
１１.  サービスエージェント３2が資源管理エージェント４4から利用許可メッセージResponse(1)を受信する（図１２）。３2.k＝０になったので、サービスエージェント３2はアプリケーションプログラムへ移行する。
【００５３】
１２.  １個の資源が必要なサービスエージェント３3が生成され、資源管理エージェント４2,４4に要求メッセージRequestを送信する（図１３）。
【００５４】
１３.  資源管理エージェント４2,４4がサービスエージェント３3からそれぞれ要求メッセージRequestを受信し、４2.k＝０、４4.k＝０なのでともにサービスエージェント３3へ利用不可メッセージResponse(0)を送信する（図１３）。
【００５５】
１４.  サービスエージェント３3が資源管理エージェント４2から利用不可メッセージResponse(0)を受信し、さらにサービスエージェント３3が資源管理エージェント４3へ要求メッセージRequestを送信する（図１４）。
【００５６】
１５.  サービスエージェント３3が資源管理エージェント４4から利用不可メッセージResponse(0)を受信し、さらにサービスエージェント３3が資源管理エージェント４1へ要求メッセージRequestを送信する（図１４）。
【００５７】
１６.  資源管理エージェント４3がサービスエージェント３3から要求メッセージRequestを受信し、サービスエージェント３3へ利用許可メッセージResponse(1)を送信する（図１５）。
【００５８】
１７.  サービスエージェント３3が資源管理エージェント４3から利用許可メッセージResponse(1)を受信する（図１５）。３3.k＝０になったので、サービスエージェント３3はアプリケーションプログラムへ移行する。
【００５９】
動作例２
サービスエージェント３が送信した要求メッセージRequestの送信先が停止故障している例：
１.  資源管理エージェント４2が停止故障し、全く動作しなくなる（図１６）。
【００６０】
２.  ２個の資源が必要なサービスエージェント３1が生成され、資源管理エージェント４2,４3に要求メッセージRequestを送信する（図１７）。
【００６１】
３.  ２個の資源が必要なサービスエージェント３2が生成され、資源管理エージェント４2,４4に要求メッセージRequestを送信する（図１７）。
【００６２】
４.  資源管理エージェント４3がサービスエージェント３1から要求メッセージRequestを受信し、サービスエージェント３1へ利用許可メッセージResponse(1)を送信する（図１８）。ここで、４3.k＝１になる。
【００６３】
５.  資源管理エージェント４4がサービスエージェント３2から要求メッセージRequestを受信し、サービスエージェント３2へ利用許可メッセージResponse(1)を送信する（図１８）。ここで、４4.k＝１になる。
【００６４】
６.  サービスエージェント３1が資源管理エージェント４3から利用許可メッセージResponse(1)を受信するが、まだ４1.k＝１なので、資源管理エージェント４3へ要求メッセージRequestを送信する（図１９）。
【００６５】
７.  資源管理エージェント４3はサービスエージェント３1から要求メッセージRequestを受信し、サービスエージェント４1へ利用許可メッセージResponse(1)を送信する（図１９）。ここで、４3.k＝０になる。
【００６６】
８.  サービスエージェント３1が資源管理エージェント４3から利用許可メッセージResponse(1)を受信する（図１９）。３1.k＝０になったので、サービスエージェント３1はアプリケーションプログラムへ移行する。
【００６７】
９.  サービスエージェント３2が資源管理エージェント４4から利用許可メッセージResponse(1)を受信するが、まだ３2.k＝１なので、資源管理エージェント４4へ要求メッセージRequestを送信する（図２０）。
【００６８】
１０.  資源管理エージェント４4はサービスエージェント３2から要求メッセージRequest を受信し、サービスエージェント３2へ利用許可メッセージResponse(1)を送信する（図２０）。ここで４4.k＝０になる。
【００６９】
１１.  サービスエージェント３2が資源管理エージェント４4から利用許可メッセージResponse(1)を受信する（図２０）。３2.k＝０になったので、サービスエージェント３2はアプリケーションプログラムへ移行する。
【００７０】
１２.  １個の資源が必要なサービスエージェント３3が生成され、資源管理エージェント４2,４4に要求メッセージRequestを送信する（図２１）。
【００７１】
１３.  資源管理エージェント４4がサービスエージェント３3から要求メッセージRequestを受信し、４4.k＝０なのでサービスエージェント３3へ利用不可メッセージResponse(0)を送信する（図２２）。
【００７２】
１４.  サービスエージェント３3が資源管理エージェント４4から利用不可メッセージResponse(0)を受信し、さらにサービスエージェント３3が資源管理エージェント４3へ要求メッセージRequestを送信する（図２２）。
【００７３】
１５.  資源管理エージェント４3がサービスエージェント３3から要求メッセージRequestを受信し、４3.k＝０なので、サービスエージェント３3へ利用不可メッセージResponse(0)を送信する（図２３）。
【００７４】
１６.  サービスエージェント３3が資源管理エージェント４3から利用不可メッセージResponse(0)を受信し、さらにサービスエージェント３3が資源管理エージェント４1へ要求メッセージRequestを送信する（図２３）。
【００７５】
１７.  資源管理エージェント４1がサービスエージェント３3から要求メッセージRequestを受信し、サービスエージェント３3へ利用不可メッセージResponse(１)を送信する（図２４）。
【００７６】
１８.  サービスエージェント３3が資源管理エージェント４1から利用許可メッセージResponse(1)を受信する（図２４）。３3.k＝０になったので、サービスエージェント３3はアプリケーションプログラムへ移行する。
【００７７】
なお、資源は、先にも述べたようにＣＰＵ、メモリ等の各コンピュータが有するハードウェア資源のことであり、本方法を実装する際には、動作するエージェントの目的により適宜選択すればよく、ＣＰＵ、メモリ等になんら限定されない。
【００７８】
なお、資源利用プログラムは、コンピュータシステムで実行するためにコンピュータ読み取り可能な記録媒体に記録される。コンピュータ読み取り可能な記録媒体とは、フロッピーディスク、光磁気ディスク、CD―ROM等の記録媒体、コンピュータシステムに内蔵されるハードディスク装置等の記憶装置を指す。さらに、コンピュータ読み取り可能な記録媒体は、インターネットを介してプログラムを送信する場合のように、短時間の間、動的にプログラムを保持するもの（伝送媒体もしくは伝送波）、その場合のサーバとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含む。
【００７９】
【発明の効果】
以上に説明したように、本発明によれば、ユーザが要望したサービスを提供するためのアプリケーションプログラムを実行する複数のサービスエージェントと、サービスエージェントがアプリケーションプログラムを実行するために必要とする資源を提供する複数の資源管理エージェントを含むエージェントシステムにおいて、あらかじめ決めておいたある特定数以下の資源管理エージェントが停止故障することを想定したときに資源管理エージェントが準備しなければいけない資源の総数が最適な最小値で、サービスエージェントが資源管理エージェントから資源利用権を獲得するときに他のサービスエージェントの動作速度に影響を受けることなく資源利用権を獲得できる。
【図面の簡単な説明】
【図１】本発明の一実施形態の非同期エージェントシステムの構成図である。
【図２】図１の非同期エージェントシステムにおけるメッセージ送受信の関係を示す図である。
【図３】サービスエージェントの資源利用プログラムの処理を示すフローチャートである。
【図４】資源管理エージェントの資源利用プログラムの処理を示すフローチャートである。
【図５】動作例を説明する資源管理エージェントとサービスエージェントの構成を示す図である。
【図６】第１の動作例の状況図である。
【図７】第１の動作例の状況図である。
【図８】第１の動作例の状況図である。
【図９】第１の動作例の状況図である。
【図１０】第１の動作例の状況図である。
【図１１】第１の動作例の状況図である。
【図１２】第１の動作例の状況図である。
【図１３】第１の動作例の状況図である。
【図１４】第１の動作例の状況図である。
【図１５】第１の動作例の状況図である。
【図１６】第２の動作例の状況図である。
【図１７】第２の動作例の状況図である。
【図１８】第２の動作例の状況図である。
【図１９】第２の動作例の状況図である。
【図２０】第２の動作例の状況図である。
【図２１】第２の動作例の状況図である。
【図２２】第２の動作例の状況図である。
【図２３】第２の動作例の状況図である。
【図２４】第２の動作例の状況図である。
【符号の説明】
１    ホスト
２    通信線
３、３1〜３3    サービスエージェント
４、４1〜４4    資源管理エージェント
５    資源
【図１】
0003878881.tif 000002
【図２】
0003878881.tif 000003
【図３】
0003878881.tif 000004
【図４】
0003878881.tif 000005
【図５】
0003878881.tif 000006
【図６】
0003878881.tif 000007
【図７】
0003878881.tif 000008
【図８】
0003878881.tif 000009
【図９】
0003878881.tif 000010
【図１０】
0003878881.tif 000011
【図１１】
0003878881.tif 000012
【図１２】
0003878881.tif 000013
【図１３】
0003878881.tif 000014
【図１４】
0003878881.tif 000015
【図１５】
0003878881.tif 000016
【図１６】
0003878881.tif 000017
【図１７】
0003878881.tif 000018
【図１８】
0003878881.tif 000019
【図１９】
0003878881.tif 000020
【図２０】
0003878881.tif 000021
【図２１】
0003878881.tif 000022
【図２２】
0003878881.tif 000023
【図２３】
0003878881.tif 000024
【図２４】
0003878881.tif 000025