(57)【特許請求の範囲】
【請求項１】
ネットワークに接続される第１のコンピュータから第２のコンピュータにエージェントを移動させるコンピュータ・システムであって、
前記コンピュータの各々は、エージェント実行環境を提供する手段をそれぞれ有し、当該エージェント実行環境を提供する手段の各々には、エージェントを構成する一以上の「エージェント・プログラムの名前及びバージョン情報の組」に対して、一の「状態データ」と一以上の「プログラム・コード」がそれぞれ存在し、当該エージェント実行環境を提供する手段の各々にそれぞれ設けられたキャッシュ機構は、エージェントを構成する一以上の「エージェント・プログラムの名前及びバージョン情報の組」と、当該一以上の「エージェント・プログラムの名前及びバージョン情報の組」に対応する一以上の「プログラム・コード」と、当該一以上の「プログラム・コード」の「送信先を示す情報」とをそれぞれ記憶し、
前記第１のコンピュータ上の前記エージェント実行環境を提供する手段は、
エージェントの移動に対する要求に応答して、当該エージェントを構成する、一以上の「エージェント・プログラムの名前及びバージョン情報の組」に対応する一以上の「プログラム・コード」を、当該エージェント実行環境を提供する手段内の前記キャッシュ機構から取り出すモジュールと、
前記エージェントを構成する、一以上の「エージェント・プログラムの名前及びバージョン情報の組」を含むブロック、「状態データ」のブロック、当該エージェント実行環境を提供する手段内の前記キャッシュ機構から取り出された一以上の「プログラム・コード」を含むブロック、の順番の送信用のビット列に変換する変換モジュールと、
前記送信用のビット列を前記第２のコンピュータ上の前記エージェント実行環境を提供する手段に送信する通信モジュールとをさらに有し、
前記変換モジュールが、前記エージェントを構成する、「エージェント・プログラムの名前とバージョン情報の組」が複数存在する場合は、前記キャッシュ機構に記憶された「プログラム・コード」の「送信先を示す情報」に基づいて、前記第２のコンピュータ上の前記エージェント実行環境を提供する手段に送信したことのない「プログラム・コード」が先に、送信したことのある「プログラム・コード」が後となるように、「プログラム・コード」のブロック内の各「プログラム・コード」を順番に並べ、かつ当該「プログラム・コード」のブロック内の順番に相応するように、「エージェント・プログラムの名前とバージョン情報の組」のブロック内の各「エージェント・プログラムの名前とバージョン情報の組」を順番に並べることを特徴とするコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、移動エージェントに関し、より詳しくは、移動エージェントがあるコンピュータから他のコンピュータに移動する際の処理に関する。
【０００２】
【従来の技術】
移動エージェントが移動する際の従来の処理を図１及び図２を用いて説明する。計算機Ａ（１）は、ネットワーク２５に接続されており、このネットワーク２５には計算機Ｂ（２７）も接続されている。計算機Ａ及びＢは、どのような計算機であってもよく、１又は複数のプロセッサと、メインメモリなどを有しており、様々なプログラムを実行できる。なお、ハードディスク装置のような記憶装置はオプションである。計算機Ａ（１）はネットワーク２５を介して通信を行うので、通信用のアダプタ、アダプタと協働する通信モジュール２３及び４９なども備えている。計算機Ａ（１）は、移動エージェントの実行環境３（以下、エージェント実行環境又は単に実行環境ということがある）を提供するプログラムを実行している。移動エージェント５ａは、エージェント・プログラムであるプログラムＡ（７）及びプログラムＢ（９）と、プログラムの状態１１で構成され、エージェント実行環境３上にて活動する。エージェント・プログラムとは、エージェント自身の挙動を定義するプログラムであり、プロセッサで解釈・実行される機械コードや、オブジェクト指向システムにおけるクラス、インタプリタで実行するソース・プログラム等である。一方、プログラムの状態１１とは、プログラム中で使用されている変数や、スタック・フレーム等で表される。
【０００３】
エージェント・プログラムは図１に示したように、１以上のプログラムから構成され、エージェント・プログラムを構成している個々のプログラムは、対応するプログラム・コードを参照する機構（ポインタ）を有している。すなわち、図１で示したように、エージェント５ａを構成するプログラムＡ（７）とプログラムＢ（９）に各々対応するプログラム・コードは、エージェント実行環境３に設けられたキャッシュ１３内にプログラム・コードＡ（１５）及びプログラム・コードＢ（１７）として記憶されている。このキャッシュ１３は、このエージェント実行環境３の管理下にあるエージェントのプログラム・コードと共に、移動したエージェントのプログラム・コードを所定期間保持している。例えば、図１ではプログラム・コードＸ（１９）は、移動したエージェントのプログラム・コードである。なお、キャッシュ１３は、計算機Ａ（１）のメインメモリだけでなく、計算機Ａ（１）の他の記憶装置にプログラム・コードを保管するようにしてもよい。
【０００４】
エージェント実行環境３は、移動エージェントが活動するために必要な計算機資源及びサービスを提供するプログラムであり、エージェントの生成・停止・移動等を制御する機構を有し且つエージェント自身やその管理情報などを状態として保持する。また、実行環境３は、プログラムの元となるプログラム・コードを読み込み、プログラムに変換する機能を有し、さらに変換されたプログラムを実行することができる。エージェント実行環境がプログラム・コードをそのまま実行する場合には、プログラムとプログラム・コードは等しくてもよい。エージェント実行環境３は、通信モジュール２３を介してネットワーク２５に接続された他の計算機上の実行環境と通信を行う。各エージェント実行環境はネットワーク上で一意に決まる名前を有しており、各通信モジュールはこの名前を用いて通信を行うエージェント実行環境を特定することができる。計算機Ｂ（２７）内の実行環境２９も実行環境３と同じである。計算機Ｂ（２７）内の通信モジュール４９も、計算機Ａ（１）におけるものと同じである。なお、図１には、計算機Ａ（１）から計算機Ｂ（２７）へエージェント５ａが移動する際に必要なもののみが示されている。
【０００５】
では、エージェント５ａが計算機Ａ（１）から計算機Ｂ（２７）に移動する際の動作を説明する。エージェント５ａ自身又は外部から移動要求が実行環境３に発行されると、実行環境３は、エージェント５ａの実行を停止して、ビット列生成モジュール２１がエージェント５ａの状態及びエージェントが使用しているプログラム・コードを送信用ビット列に変換する。移動先は移動要求に含まれる。プログラムの状態１１はプログラム・コードに依存するので、その実行の状態を再構成するためには、先にプログラム・コードを読み込んで実行環境２９に再構成した後、状態１１をその上で再構成する必要がある。よって、実際に転送されるビット列は、通常図２のように、プログラム・コードのビット列を先頭にし、プログラムの状態１１のビット列は、最後に送ることになる。
【０００６】
ビット列生成モジュール２１が生成した送信用ビット列（図２）は、通信モジュール２３により、移動先の実行環境２９を実行している計算機Ｂ（２７）の通信モジュール４９に送信される。通信モジュール４９は、受信したビット列をエージェント復元モジュール３９に渡す。エージェント復元モジュール３９は、プログラム・コードをキャッシュ４１に格納するとともに、プログラムに変換し、プログラムＡ（３３）及びプログラムＢ（３５）を生成する。さらに、受信した状態１１に関するビット列を、生成したプログラムＡ及びプログラムＢに合わせて再構成し、状態３７を生成する。このようにしてエージェント復元モジュール３９は、エージェント５ｂを実行環境２９上に復元する。なお、キャッシュ４１には、プログラムＡ（３３）に対応してプログラム・コードＡ（４３）、プログラムＢ（３５）に対応してプログラム・コードＢ（４５）が格納される。また、キャッシュ４１は、他のプログラム・コードＸ（４７）を保持している。
【０００７】
このような従来のエージェントの移動では、移動元の計算機から送られてきた全てのビット列を受信しないとエージェントを移動先の計算機で復元することができないので、時間がかかるという問題があった。
【０００８】
さらに、情報転送を行う方法として、以前転送されたプログラム・コードを保持しておき、同じ名前のプログラム・コードが存在する場合にはそれを再利用して効率化を図るキャッシュ技術がある。しかし、（１）同じ名前を用いていても、バージョンが異なる場合があり、実際に使用したいプログラム・コードであるか判断できない。（２）要求元はどのようなキャッシュが転送先に存在するのかの正確な情報を前もって知る事は通常できない。よって、どのプログラム・コードを送るかの判断に手間がかかる。
【０００９】
なお、移動エージェントについては、例えば米国特許５６０３０３１号に詳しく記載されている。この米国特許には、一度交換したエージェントのオブジェクトについてはダイジェストを送り、オブジェクト自体は送らないとする技術が記載されている。しかし、一度交換したエージェントのオブジェクトであっても、いつまで同一性を保持できるのか不明である。同一性を保持するのであれば、そのための手数がかかる。
【００１０】
【発明が解決しようとする課題】
よって、本発明の目的は、エージェントの移動時間の短縮を図ることを目的とする。
【００１１】
また、エージェントの移動時間をより少ない処理で短縮することも目的である。
【００１２】
別のいい方をすると、他の計算機においてエージェントの復元をより高速に実行することである。
【００１３】
【課題を解決するための手段】
基本的には図１に記載した機構を用いるが、各エージェントは、プログラム名だけでなく、使用しているプログラム・コードのバージョン情報も保持する。また、各エージェント実行環境は、プログラムの名前及びバージョンと、プログラムに対応するプログラム・コードをキャッシュ機構に保持する。エージェント転送時には、名前及びバージョン情報を先頭に付加し、名前及びバージョン情報の次に状態データ、そして最後にプログラム・コードを送信する。そして、転送先のエージェントの実行環境では、名前及びバージョン情報を用いて、可能な限りキャッシュ機構に保持されているプログラム・コードを用い、キャッシュされていない場合には転送されてきたプログラム・コードを用いるようにする。
【００１４】
なお、これの変形として、プログラム・コードを最初送らずに、転送先に存在しないとされたプログラム・コードのみを送るようにする態様や、名前及びバージョン情報と状態データとプログラム・コードの位置情報を送信し、転送先に存在しない場合には位置情報を用いて転送先の実行環境が自主的にプログラム・コードを取得するようにする態様が考えられる。
【００１５】
以上をまとめると、エージェントの実行環境は、エージェント・プログラムの名前及びバージョンと、エージェント・プログラムに対応するプログラム・コードとを記憶するキャッシュ機構と、第１エージェントの移動に応答して、当該第１エージェントのエージェント・プログラムに対応するプログラム・コードをキャッシュ機構から取り出すモジュールと、第１エージェントの前記エージェント・プログラムの名前及びバージョンと、第１エージェントの状態データと、キャッシュ機構から取り出されたプログラム・コードとを、この順番で送信用のビット列に変換する変換モジュールとを有する。このようにすれば、送信先は、最初の名前及びバージョン情報でキャッシュから必要なプログラム・コードを取り出すことができるようになる。そして、次に送られてくる状態データでエージェントを復元することができるので、エージェントが復元される時間は短縮される。なお、キャッシュに必要なプログラム・コードが存在しない場合でも、以前と同様の時間でエージェントは復元される。
【００１６】
上で述べた変換モジュールは、第１エージェントのエージェント・プログラムに対応するプログラム・コードが複数ある場合に、プログラム・コードを、第１エージェントの移動先のエージェントの実行環境に存在しない確率の高い順に並べるようにすることも考えられる。このようすれば、転送先のキャッシュに存在しない場合でも、より速くエージェントを復元することができる。
【００１７】
この移動先のエージェントの実行環境に存在しない確率の高い順は、プログラム・コードの作成順であっても、移動先のエージェントの実行環境に送信したことのないプログラム・コードを先に、送信したことのあるプログラム・コードを後とする順番であってもよい。さらに、プログラム・コードを、そのサイズの小さい順に並べても一定の効果がある。
【００１８】
また、本発明の他の態様では、エージェントの実行環境は、エージェント・プログラムの名前及びバージョンと、エージェント・プログラムに対応するプログラム・コードとを記憶するキャッシュ機構と、第１エージェントの移動に応答して、第１エージェントのエージェント・プログラムの名前及びバージョンと、第１エージェントの状態データとを、送信用のビット列に変換する変換モジュールとを有する。もし、送信先のキャッシュに全てのプログラム・コードが存在すればこれで問題ない。
【００１９】
第１エージェントの移動先のエージェントの実行環境から、必要なエージェント・プログラムの名前及びバージョンが送られてきた場合には、当該必要なエージェント・プログラムの名前及びバージョンに対応するプログラム・コードをキャッシュ機構から取り出すモジュールをさらに有し、変換モジュールは、キャッシュ機構から取り出されたプログラム・コードを送信用のビット列に変換するようにする。
【００２０】
本発明のさらに他の態様では、エージェントの実行環境は、第１エージェントの移動に応答して、第１エージェントのエージェント・プログラムの名前及びバージョンと、第１エージェントのエージェント・プログラムに対応するプログラム・コードのプログラム・コード位置情報と、第１エージェントの状態データとを、送信用のビット列に変換する変換モジュールとを有する。プログラム・コード位置情報を送信しておけば、送信先のエージェントの実行環境は、キャッシュに保持していない必要なプログラム・コードを取得できるようになるので、プログラム・コードを送信する必要がなくなる。
【００２１】
以上送信側の実行環境の特徴を説明したが、受信側のエージェントの実行環境は、エージェント・プログラムの名前及びバージョン、及びエージェント・プログラムに対応するプログラム・コードとを記憶するキャッシュ機構と、エージェントの実行環境に移動してくる第１エージェントの前記エージェント・プログラムの名前及びバージョンの受信に応答して、当該エージェント・プログラムの名前及びバージョンに対応するプログラム・コードをキャッシュ機構から取り出す検索モジュールと、プログラム・コードから第１エージェントのエージェント・プログラムを生成するプログラム定義モジュールと、受信した第１エージェントの状態を復元する状態復元モジュールとを有する。
【００２２】
先に説明した本発明の最初の態様に対しては、受信したエージェント・プログラムの名前及びバージョンに対応するすべてのプログラム・コードを検索モジュールがキャッシュ機構から取り出せなかった場合、受信した第１エージェントのプログラム・コードをプログラム定義モジュールに出力するモジュールをさらに有するようにする。
【００２３】
また、二番目の態様に対しては、受信したエージェント・プログラムの名前及びバージョンに対応するすべてのプログラム・コードを検索モジュールがキャッシュ機構から取り出せなかった場合、必要なエージェント・プログラムの名前及びバージョンを送信するモジュールをさらに有するようにする。
【００２４】
さらに、三番目の態様に対しては、受信したエージェント・プログラムの名前及びバージョンに対応するすべてのプログラム・コードを検索モジュールがキャッシュ機構から取り出せなかった場合、受信したプログラム・コード位置情報を用いて、取り出せなかったプログラム・コードを取得するモジュールをさらに有するようにする。
【００２５】
以上述べた本発明は、処理のフローとして把握することも可能である。また、当該処理を実施するコンピュータ・プログラムとして実施することも可能である。この際、コンピュータ・プログラムを、ＣＤ−ＲＯＭ、フロッピー・ディスクなどの記憶媒体に格納することは当業者が通常実施することである。
【００２６】
【発明の実施の形態】
図３に本発明におけるエージェントの構成を示す。以下、従来技術の説明の欄で説明した構成要素から大きく変更のないものは、同一の参照符合を用いて説明する。エージェント５ａは、エージェント・プログラムと、状態１１と、エージェント・プログラムのプログラム名及びバージョン情報から構成される。図３では、エージェント・プログラムは、プログラムＡ及びプログラムＢで構成され、それぞれの名前はＡ及びＢである。また、プログラムＡのバージョンは２、プログラムＢのバージョンは３となっている。バージョンは、名前が同一のプログラム・コード群において内容が異なるプログラム・コードに一意に関係付けられる情報である。なお、番号であっても他の符合であってもよい。
【００２７】
このエージェント５ａが活動する実行環境を図４を用いて説明する。計算機Ａで実行されるエージェントの実行環境３は、プログラム・コードを保管するキャッシュ機構５９と、エージェント変換モジュール５１を含む。さらに、エージェント変換モジュール５１は、プログラム・コード検索モジュール５３と、状態抽出モジュール５５と、ビット列生成モジュール５７を含む。なお図４においては、エージェント５ａのエージェント・プログラムの表示は省略されており、プログラム６１、６３、６５の名前（ibm.Aglet、ibm.Hello、isv.Server）及びバージョン（２１、１０、７）が記載されている。
【００２８】
キャッシュ機構５９は、過去若しくは現在のエージェントで使用されているプログラム・コードを保持しており、プログラム名及びバージョンの２つの情報を用いて対応するプログラム・コードを取り出すことができる。キャッシュされたプログラム・コードは永続的に保存されている必要はなく、それを使用しているエージェントが存在しなくなった後は、任意の時間で削除してよい。削除の手法は任意であり、本発明の主要部でないのでここでは説明を省略する。
【００２９】
では、図４の動作を図５と共に説明する。エージェント５ａは、エージェント実行環境３に移動要求dispatch(d1) を発行する（ステップ１１０）。このｄ１は、移動先のエージェント実行環境の名前である。なお、ここではエージェント５ａ自体が移動要求を発しているが、エージェント以外のものが移動要求を発する場合もある。移動要求を受け取ったエージェント実行環境３は、エージェント５ａの実行を停止した後、エージェント５ａで使用されているプログラムの名前及びバージョンを取得する（ステップ１２０）。この図４の例では、プログラム６１の名前ibm.Agletとバージョン２１と、プログラム６３の名前ibm.Helloとバージョン１０と、プログラム６５の名前isv.Serverとバージョン７が取り出される。このプログラムの名前及びバージョンはプログラム・コード検索モジュール５３に渡される。検索モジュール５３は、このプログラムの名前及びバージョンをキーとしてキャッシュ機構５９を検索し、必要なプログラム・コードを取得する（ステップ１３０）。図４の例では、キャッシュ機構５９の５９ｂと５９ｃと５９ｄが取り出される。検索モジュール５３は、プログラムの名前及びバージョンと、キャッシュ機構５９から取り出したプログラム・コードを独立した情報として、ビット列生成モジュール５７に渡す。
【００３０】
一方、エージェント５ａ内の状態は、状態抽出モジュール５５により取り出され、状態抽出モジュール５５は状態データをビット列生成モジュール５７に渡す。ビット列生成モジュール５７では、図４に示したように、先頭にプログラムの名前及びバージョンを、次に状態データを、そして最後にプログラム・コードを並べて、送信用ビット列を生成する（ステップ１４０）。この送信用ビット列は図１の通信モジュール２３に渡され、通信モジュール２３が移動先ｄ１に送信する（ステップ１５０）。
【００３１】
一方、エージェント５ａの移動先の実行環境２９は、図６のような構成となっている。実行環境２９は、キャッシュ機構７５とエージェント復元モジュール６７とを含んでいる。エージェント復元モジュール６７は、ビット列解析モジュール７７と、プログラム・コード検索モジュール７１と、状態復元モジュール６９と、プログラム定義モジュール７３とを含んでいる。キャッシュ機構７５は、動作は送信元のキャッシュ機構５９と同様であるが、保持しているプログラム・コードは必ずしも同一ではない。
【００３２】
では、図７と共に図６の動作を説明する。エージェント５ａの移動先の実行環境２９は、通信モジュール４９を介してビット列を受け取る（ステップ２１０）。受信したビット列はバッファに入れられる。受け取ったビット列をビット列解析モジュール７７が解析し、プログラムの名前及びバージョンを取り出して、プログラム・コード検索モジュール７１に渡す。なお、ビット列解析モジュール７７は、プログラムの名前及びバージョンが受信された時点で動作を開始できる。また、エージェントの状態データを状態復元モジュール６９に渡す。この段階では、プログラム・コードは読み出す必要はない。そして、プログラム・コード検索モジュール７１は、キャッシュ機構７５を検索し、プログラムの名前及びバージョンの合致するプログラム・コードを取り出す（ステップ２２０）。図６の例では、キャッシュ機構７５の７５ｂと７５ｃが送られてきたプログラムの名前及びバージョンに合致する。
【００３３】
次に、検索モジュール７１は、全ての必要なプログラム・コードがキャッシュ機構７５から取得できたかどうか判断する（ステップ２３０）。もし、全てのプログラム・コードがキャッシュ機構７５から取得できないようであれば、バッファに受信したビット列の中からキャッシュ機構７５から取得できなかったプログラム・コードを読み出す（ステップ２４０）。図６の場合には、名前ibm.Hello及びバージョン１０のプログラム・コードはキャッシュ機構７５にないので、このプログラム・コードを読み出す。そして、キャッシュ機構７５から取得したプログラム・コード及び必要な場合には受信したプログラム・コードをプログラム定義モジュール７３に渡す。このプログラム定義モジュール７３は、得られたプログラム・コードを実行可能なプログラムに変換する（ステップ２５０）。エージェント５ｂが使用するプログラム全てが用意されると、エージェント状態復元モジュール６９が、ビット列解析モジュール７７から渡された状態データを、プログラム６１乃至６５に対する状態として復元し、エージェント全体を復元する（ステップ２６０）。
【００３４】
以上のようにすると、エージェントを復元するために必要なプログラム・コードの一部がキャッシュ機構の中に存在した場合、送られてきたビット列中のプログラム・コードを全て読み込むことなくエージェントを復元することができるようになるので、転送開始からエージェントの活動再開までの時間の短縮が期待できる。
【００３５】
上の実施例では、プログラム・コードの送信順番については何等考慮していないが、移動先のキャッシュ機構に必要なプログラム・コードがない場合には送信したプログラム・コードを用いるため、プログラム・コードの送信順番を工夫すればより速くエージェントを復元できるようになる。以下、このプログラム・コードの送信順番について記載する。
【００３６】
基本的には、エージェントの移動先のキャッシュ機構に存在しない確率が高いプログラム・コードの順番で送信するべきである。この確率は、プログラム・コードの作成日時、これまでに移動先に送ったプログラム・コードの名前及びバージョンのリスト等から決定される。プログラム・コードの作成日時が若いほど、移動先に転送されている可能性は低くなるからである。よって、送信元のキャッシュ機構や、エージェント自体が、プログラムの名前及びバージョンと共にプログラム・コードの作成日時の情報を保持しておき、ビット列生成モジュール５７がその情報を元に並べ変えればよい。
【００３７】
また、キャッシュ機構又はキャッシュ機構とは別に、プログラム・コードの名前及びバージョンと、転送先を保持しておき、この転送先の情報から、以前に送ったことがあるプログラム・コードか否かを転送時に判断し、送ったことがあるプログラム・コードの場合は送信する順番を後ろの方にすることも考えられる。
【００３８】
さらに、プログラムのサイズを小さい順に並べる方法も考えられる。このようにすれば、先頭に配置されたプログラム・コードが使用されない場合でも、転送の無駄を少なくすることができる。
【００３９】
さらに他の実施例としては、送信元のエージェント実行環境内のビット列生成モジュール５７が、プログラムの名前及びバージョンと、エージェントの状態データとのみを送るようにすることも考えられる。この場合、送信先のエージェント実行環境には、プログラム・コード検索モジュール６９がキャッシュ機構７５から取り出せなかったプログラム・コードの名前及びバージョンの情報を送信元に送り返すモジュールを設ける必要がある。この取り出せなかったプログラム・コードについては、送信元のエージェント実行環境内のプログラム・コード検索モジュール５３が、必要とされたプログラム・コードの名前及びバージョンに合致するプログラム・コードを取り出し、それをビット列生成モジュール５７が送信用ビット列に変換し、通信モジュール２３が送信先のエージェント実行環境に送信する。この実施例の動作を図８にまとめておく。
【００４０】
また別の実施例として、送信元のエージェント実行環境内のビット列生成モジュール５７が、プログラムの名前及びバージョンと、エージェントの状態データと、プログラム・コード位置情報とを送るようにすることも考えられる。位置情報は、当該プログラム・コードが格納されている場所を示すものであり、例えば、ファイル・システムのパス情報やＷＷＷ（World Wide Web）で使用されているＵＲＬ（Uniform Resource Locator）などが考えられる。図９にこの場合のエージェントのブロック図を示す。エージェント・プログラムに含まれる各プログラムは、プログラム名、バージョン、位置情報を保持している。例えば図９の例では、プログラム名ibm.Agletであるプログラムは、バージョン２１であって、位置は/use/localである。また、プログラム名ibm.Helloであるプログラムは、バージョン１０であって、位置はhttp://lib.com/である。送信元のエージェント実行環境内のビット列生成モジュール５７は、エージェントからこれらの情報を取り出し、状態抽出モジュール５５からエージェントの状態データを受取り、図１０のような送信用ビット列を生成する。ここでは、プログラムの名前とバージョンと共に先頭にプログラム・コード位置情報が配置されているが、状態の後に配置することもできるし、状態の前にまとめて配置することもできる。
【００４１】
送信先の計算機Ｂ（２７）を図１１に示す。エージェント実行環境２９において、エージェント復元モジュール６７内のプログラム・コード検索モジュール９０が図６とは異なる。このプログラム・コード検索モジュール９０は、図１０のビット列中のプログラム名及びバージョンを用いて、キャッシュ機構７５を検索する。そして、キャッシュ機構７５から必要なプログラム・コードを取り出せた場合には、このプログラム・コードをプログラム定義モジュール７３に渡す。一方、キャッシュ機構７５から必要なプログラム・コードが取り出せなかった場合には、ビット列中の位置情報を用いて必要なプログラム・コードを取り出す。図１１の例では、位置情報が/usr/localである場合には、計算機Ｂ（２７）のファイル・システム９２からプログラム・コードを取り出す。また、位置情報がhttp://lib.com/である場合には、プログラム・コード検索モジュール９０は通信モジュール４９に当該アドレスのサーバに接続するよう命ずる。そして、このアドレスのサーバから必要なプログラム・コードを取り出す。なお、ここでは、キャッシュ機構７５を使用するようになっているが、キャッシュ機構７５を用いずに、最初から位置情報を用いて必要なプログラム・コードを取得するようにすることも可能である。このようにすれば、エージェントの移動元から送られる情報が軽減されるので、ネットワークの負荷が軽減される。また、必要なプログラム・コードが送信先のローカルなファイル・システム内にある限りにおいては、再度ネットワークを介して取得する必要が無くなる点も有用な効果である。
【００４２】
以上述べた実施例は一例であって、特にエージェント実行環境に含まれるモジュールの分け方は任意であり、どのようなモジュール分けになっていても、上記のような機能を全体として実施していれば本発明の効果を奏することができる。また、エージェント実行環境は送信側になることも受信側になることもあるのが通常であり、その場合図４における実行環境３及び図６における実行環境２９の両方の機能を１つの実行環境が保持する。しかし、図４及び図６のように送信側又は受信側の機能しか有しない場合も考えられる。
【００４３】
【効果】
以上述べたように、エージェントの移動時間の短縮を図ることができた。
【００４４】
なた、エージェントの移動時間をより少ない処理で短縮することもできた。
【００４５】
他の計算機においてエージェントの復元をより高速に実行することもできた。
【図面の簡単な説明】
【図１】エージェントの移動の際に行われる、従来の処理を説明するための図である。
【図２】エージェントの移動の際に送信される、従来のビット列の一例を示した図である。
【図３】本発明のエージェントの構成の一例を示したブロック図である。
【図４】本発明の送信側のエージェント実行環境の一例を示したブロック図である。
【図５】図４の動作を説明するための図である。
【図６】本発明の受信側のエージェント実行環境の一例を示したブロック図である。
【図７】図６の動作を説明するための図である。
【図８】第２の実施例の動作を説明するための図である。
【図９】第３の実施例のエージェントの構成を説明するための図である。
【図１０】第３の実施例の送信用ビット列の構成を説明するための図である。
【図１１】第３の実施例の受信側計算機の構成を説明するための図である。
【符号の説明】
１  計算機Ａ    ３，２９  エージェント実行環境
５ａ，５ｂ  エージェント
７，９，３３，３５  エージェント・プログラム
１１，３７  エージェントの状態
１３，４１  キャッシュ
１５，１７，１９．４３，４７  プログラム・コード
２１  ビット列生成モジュール
２３，４９  通信モジュール
２５  ネットワーク
３９  エージェント復元モジュール
５１  エージェント変換モジュール
５３  プログラム・コード検索モジュール
５５  状態抽出モジュール
５７  ビット列生成モジュール
５９  キャッシュ機構
６７  エージェント復元モジュール
６９  状態復元モジュール
７１  プログラム・コード検索モジュール
７３  プログラム定義モジュール
７５  キャッシュ機構
７７  ビット列解析モジュール
９０  プログラム・コード検索モジュール
９２  ファイル・システム
【図１】
0003845497.tif 000002
【図２】
0003845497.tif 000003
【図３】
0003845497.tif 000004
【図４】
0003845497.tif 000005
【図５】
0003845497.tif 000006
【図６】
0003845497.tif 000007
【図７】
0003845497.tif 000008
【図８】
0003845497.tif 000009
【図９】
0003845497.tif 000010
【図１０】
0003845497.tif 000011
【図１１】
0003845497.tif 000012