(57)【要約】【課題】  処理を実行させるノードを効率良く選択することにより、ネットワーク上の通信量を大幅に削減し、分散処理システムの処理能力を高めることが可能な情報処理装置、分散処理システム、分散処理方法及びそのプログラムを提供すること。【解決手段】  情報処理装置１が、所定の探索条件を指定した移動エージェントを生成して情報処理装置２へ送信すると、移動エージェントは情報処理装置２が探索条件を満たすか否かを判定し、満たさない場合には更に情報処理装置３へ移動する。移動エージェントは、情報処理装置３が探索条件を満たすと判定した場合には、情報処理装置３の計算資源を予約した上で、情報処理装置１へ発見通知を送信する。それに対して情報処理装置１は、情報処理装置３を分散処理に使用する旨を通知し、続いてジョブを送信することにより情報処理装置３においてジョブが実行される。【選択図】  図１５
2006048290.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された他の情報処理装置とともに所定の処理を実行することが可能な情報処理装置であって、
当該情報処理装置及び前記他の情報処理装置の間を移動し、前記所定の処理を実行可能な前記他の情報処理装置を探索する移動エージェントを生成する生成手段と、
前記生成された移動エージェントを前記他の情報処理装置へ送信する第１の送信手段と、
前記送信された移動エージェントから、当該移動エージェントが探索した他の情報処理装置の探索結果の通知を受信する第１の受信手段と、
前記受信された探索結果通知を基に、前記所定の処理を実行可能な他の情報処理装置へ当該所定の処理の実行命令を送信する第２の送信手段と
を具備することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記生成された移動エージェントに、前記所定の処理を実行可能な前記他の情報処理装置を探索するための探索条件を少なくとも設定する設定手段を更に具備し、
前記移動エージェントは、前記探索条件を基に前記所定の処理を実行可能な他の情報処理装置を探索することを特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記探索条件は、前記他の情報処理装置のプロセッサ使用率を基に設定されることを特徴とする情報処理装置。
【請求項４】
請求項２に記載の情報処理装置であって、
前記情報処理装置及び前記他の情報処理装置はそれぞれ複数のプロセッサを有し、
前記探索条件は、前記他の情報処理装置の使用プロセッサ数を基に設定されることを特徴とする情報処理装置。
【請求項５】
請求項２に記載の情報処理装置であって、
前記探索条件は、前記他の情報処理装置のメモリ使用率を基に設定されることを特徴とする情報処理装置。
【請求項６】
請求項１に記載の情報処理装置であって、
前記設定手段は、前記移動エージェントが当該情報処理装置及び前記他の情報処理装置間を移動する際の移動範囲を更に設定し、
前記移動エージェントは、前記設定された移動範囲内の他の情報処理装置へ移動することを特徴とする情報処理装置。
【請求項７】
請求項６に記載の情報処理装置であって、
前記移動範囲は、当該情報処理装置及び前記他の情報処理装置の前記ネットワークにおけるＩＰアドレスを基に設定されることを特徴とする情報処理装置。
【請求項８】
請求項６に記載の情報処理装置であって、
前記移動範囲は、当該情報処理装置と前記移動エージェントとの間に存在する前記他の情報処理装置の数を基に設定されることを特徴とする情報処理装置。
【請求項９】
請求項６に記載の情報処理装置であって、
前記移動範囲は、前記移動エージェントが要する当該情報処理装置との通信時間を基に設定されることを特徴とする情報処理装置。
【請求項１０】
請求項１に記載の情報処理装置であって、
前記設定手段は、前記移動エージェントが生存する生存時間を更に設定し、
前記移動エージェントは、前記送信された時から前記生存時間が経過したときに消滅することを特徴とする情報処理装置。
【請求項１１】
請求項１に記載の情報処理装置であって、
前記移動エージェントは、前記他の情報処理装置の動作状態に関する情報を取得する手段と、前記取得した情報を基に、他の情報処理装置が前記探索条件を満たすか否かを判断する手段とを有することを特徴とする情報処理装置。
【請求項１２】
請求項１１に記載の情報処理装置であって、
前記移動エージェントは、前記他の情報処理装置が前記探索条件を満たす場合に、当該他の情報処理装置内で前記所定の処理を実行するための計算資源を予約する手段を更に有することを特徴とする情報処理装置。
【請求項１３】
請求項１２に記載の情報処理装置であって、
前記移動エージェントは、前記計算資源を予約してから所定時間経過したときに前記計算資源の予約を解除する手段を更に有することを特徴とする情報処理装置。
【請求項１４】
請求項１２に記載の情報処理装置であって、
当該情報処理装置及び前記他の情報処理装置は、それぞれの装置を識別するための識別情報を有し、
前記探索結果通知は、前記所定の処理を実行可能な他の情報処理装置の識別情報であることを特徴とする情報処理装置。
【請求項１５】
請求項１４に記載の情報処理装置であって、
前記他の情報処理装置は前記ネットワーク上に複数存在し、
前記第１の送信手段は、前記移動エージェントを前記複数の他の情報処理装置へそれぞれ送信し、
前記第２の送信手段は、前記第１の受信手段により前記複数の他の情報処理装置の識別情報が受信された場合に、複数の他の情報処理装置のうち一の情報処理装置を選択して当該他の情報処理装置へ前記実行命令を送信し、
当該情報処理装置は、前記第２の送信手段により選択されなかった他の情報処理装置に送信された前記移動エージェントに、前記計算資源の予約の解除を指示する手段を更に具備することを特徴とする情報処理装置。
【請求項１６】
請求項１に記載の情報処理装置であって、
前記他の情報処理装置において生成及び送信された移動エージェントを受信する第２の受信手段と、
前記受信された移動エージェントから前記他の情報処理装置へ送信された前記探索結果通知を基に前記他の情報処理装置から送信された前記所定の処理の実行命令を受信する第３の受信手段と、
前記受信された実行命令を基に前記所定の処理を実行する実行手段と
を更に具備することを特徴とする情報処理装置。
【請求項１７】
請求項１６に記載の情報処理装置であって、
前記他の情報処理装置から送信された移動エージェントを認証する手段と、
前記認証手段により前記移動エージェントが認証されない場合に、前記移動エージェントを破棄する手段と
を更に具備することを特徴とする情報処理装置。
【請求項１８】
ネットワークを介して接続された第１及び第２の情報処理装置が所定の処理を分散して実行する分散処理システムであって、
前記第１の情報処理装置は、
前記分散処理システム内を移動し、前記所定の処理を実行可能な前記第２の情報処理装置を探索する移動エージェントを生成する手段と、
前記生成された移動エージェントを前記第２の情報処理装置へ送信する手段と、
前記送信された移動エージェントから、当該移動エージェントが探索した第２の情報処理装置の探索結果の通知を受信する手段と、
前記受信された探索結果通知を基に、前記所定の処理を実行可能な第２の情報処理装置へ当該所定の処理の実行命令を送信する手段とを有し、
前記第２の情報処理装置は、
前記送信された移動エージェントを受信する手段と、
前記第１の情報処理装置から前記所定の処理の実行命令を受信する手段と、
前記受信された実行命令を基に前記所定の処理を実行する手段とを有する
ことを特徴とする分散処理システム。
【請求項１９】
情報処理装置が、ネットワークを介して接続された他の情報処理装置とともに所定の処理を実行する方法であって、
当該情報処理装置及び前記他の情報処理装置の間を移動し、前記所定の処理を実行可能な前記他の情報処理装置を探索する移動エージェントを生成するステップと、
前記生成された移動エージェントを前記他の情報処理装置へ送信するステップと、
前記送信された移動エージェントから、当該移動エージェントが探索した他の情報処理装置の探索結果の通知を受信するステップと、
前記受信された探索結果通知を基に、前記所定の処理を実行可能な他の情報処理装置へ当該所定の処理の実行命令を送信するステップと
を具備することを特徴とする分散処理方法。
【請求項２０】
ネットワークを介して接続された他の情報処理装置とともに所定の処理を実行することが可能な情報処理装置に、
当該情報処理装置及び前記他の情報処理装置の間を移動し、前記所定の処理を実行可能な前記他の情報処理装置を探索する移動エージェントを生成するステップと、
前記生成された移動エージェントを前記他の情報処理装置へ送信するステップと、
前記送信された移動エージェントから、当該移動エージェントが探索した他の情報処理装置の探索結果の通知を受信するステップと、
前記受信された探索結果通知を基に、前記所定の処理を実行可能な他の情報処理装置へ当該所定の処理の実行命令を送信するステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の処理を分散して実行することが可能な情報処理装置、分散処理システム、分散処理方法及びそのプログラム関する。
【背景技術】
【０００２】
従来から、ネットワークに接続された複数の情報処理装置間で一の処理を分散して実行するネットワークシステムが存在する。このようなネットワークシステムにおいては、例えば、各情報処理装置間でソフトウェアセルを用いてプログラムやデータをやり取りして、各情報処理装置を協調動作させることにより、高い演算能力を実現することが可能である。（例えば、特許文献１参照）。  
【特許文献１】特開２００２−３６６５３３号公報（図１等）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のような分散処理システムにおいては、処理を割り当てるノードとしての情報処理装置を選択するために、分散処理システムを構成する多数の情報処理装置からプロセッサ使用率やメモリ使用率等の装置情報を予め取得しておく必要がある。しかしながら、ネットワーク上に多数の情報処理装置が存在し、各情報処理装置が処理を割り当てる情報処理装置を選択しようとする場合には、上記装置情報を取得するために大量の通信トラフィックが発生し、ネットワークを混雑させてシステムの性能を大幅に低下させてしまう可能性がある。
【０００４】
以上のような事情に鑑み、本発明の目的は、処理を実行させるノードを効率良く選択することにより、ネットワーク上の通信量を大幅に削減し、分散処理システムの処理能力を向上させることが可能な情報処理装置、分散処理システム、分散処理方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【０００５】
上述の課題を解決するため、本発明の情報処理装置は、ネットワークを介して接続された他の情報処理装置とともに所定の処理を実行することが可能な情報処理装置であって、当該情報処理装置及び前記他の情報処理装置の間を移動し、前記所定の処理を実行可能な前記他の情報処理装置を探索する移動エージェントを生成する生成手段と、前記生成された移動エージェントを前記他の情報処理装置へ送信する第１の送信手段と、前記送信された移動エージェントから、当該移動エージェントが探索した他の情報処理装置の探索結果の通知を受信する第１の受信手段と、前記受信された探索結果通知を基に、前記所定の処理を実行可能な他の情報処理装置へ当該所定の処理の実行命令を送信する第２の送信手段とを具備する。
【０００６】
上記情報処理装置は、例えばＰＣ（Personal Computer）や、ハードディスクレコーダ、ＰＤＡ（Personal Digital Assistance）、テレビ等の家電機器であり、コンピュータとしての機能を有していればどのような装置であってもよい。また上記所定の処理とは、例えば上記情報処理装置が画像処理アプリケーションを実行可能なＰＣの場合には画像処理、ハードディスクレコーダの場合にはコンテンツの記録処理等、複数の情報処理装置で分散可能な処理である。
【０００７】
上記構成によれば、上記生成及び送信した移動エージェントが上記所定の処理を実行可能な他の情報処理装置を自動的に探索して探索結果を通知するため、所定の処理を実行可能な他の情報処理装置を効率良く把握し、処理を実行させることができる。
【０００８】
上記情報処理装置は、前記生成された移動エージェントに、前記所定の処理を実行可能な前記他の情報処理装置を探索するための探索条件を少なくとも設定する設定手段を更に具備し、前記移動エージェントは、前記探索条件を基に前記所定の処理を実行可能な他の情報処理装置を探索するものであってもよい。上記所定の処理を実行可能な他の情報処理装置を移動エージェントに探索させる際に予め探索条件を設定しておくことで、移動エージェントの探索処理も容易になり、また上記情報処理装置も移動エージェントからの探索結果通知を受信するだけで上記所定の処理を実行可能な他の情報処理装置を容易に把握することができる。
【０００９】
上記情報処理装置において、前記探索条件は、前記他の情報処理装置のプロセッサ使用率を基に設定されるものであってもよい。上記所定の処理を実行可能な他の情報処理装置を判断するパラメータをプロセッサ使用率とし、当該判断を移動エージェントに行わせることで、移動エージェントからの探索結果通知を基に、例えばプロセッサ使用率が所定の割合以下の情報処理装置に上記所定の処理を容易に実行させることができる。
【００１０】
上記情報処理装置及び前記他の情報処理装置はそれぞれ複数のプロセッサを有し、前記探索条件は、前記他の情報処理装置の使用プロセッサ数を基に設定されるものであってもよい。これにより、上記情報処理装置及び他の情報処理装置がいわゆるマルチプロセッサ環境にある場合には、例えば使用プロセッサ数が所定の値以下の他の情報処理装置を効率良く把握して処理を実行させることができる。
【００１１】
上記情報処理装置において、前記探索条件は、前記他の情報処理装置のメモリ使用率を基に設定されるものであってもよい。これにより、上記所定の処理の実行に必要な空きメモリを有する他の情報処理装置を効率良く把握して、処理を実行させることができる。
【００１２】
上記情報処理装置において、前記設定手段は、前記移動エージェントが当該情報処理装置及び前記他の情報処理装置間を移動する際の移動範囲を更に設定し、前記移動エージェントは、前記設定された移動範囲内の他の情報処理装置へ移動するものであってもよい。移動範囲を設定することにより、探索条件を満たす情報処理装置を発見するまで移動エージェントがネットワーク上を延々と移動し続けて、ネットワークに通信トラフィックが生じてしまうようなことを防ぐことができる。
【００１３】
上記情報処理装置において、前記移動範囲は、当該情報処理装置及び前記他の情報処理装置の前記ネットワークにおけるＩＰアドレスを基に設定されるものであってもよい。例えば同一フロアや同一ビルでＥｔｈｅｒｎｅｔ（登録商標）等に接続され、ＩＰアドレスのうち同一のネットワークアドレス部分（上位２４ｂｉｔが共通）を有する情報処理装置間を移動範囲とすることができる。
【００１４】
上記情報処理装置において、前記移動範囲は、当該情報処理装置と前記移動エージェントとの間に存在する前記他の情報処理装置の数を基に設定されるものであってもよい。例えば、パケットが宛先に到達するまでに経由する装置の数を表すｈｏｐ数をカウントすることにより、例えば上記情報処理装置から１ｈｏｐで届く情報処理装置まで、というような移動範囲を設定することができる。
【００１５】
上記情報処理装置において、前記移動範囲は、前記移動エージェントが要する当該情報処理装置との通信時間を基に設定されるものであってよい。当該通信時間の計測には、例えばＩＣＭＰ(Internet Control Message Protocol)を用いることができる。これにより、例えば上記情報処理装置から２０ｍｓ以内で移動できる位置まで、というような移動範囲を設定することができる。
【００１６】
上記情報処理装置において、前記設定手段は、前記移動エージェントが生存する生存時間を更に設定し、前記移動エージェントは、前記送信された時から前記生存時間が経過したときに消滅するものであってもよい。これにより、上記移動エージェントがネットワーク上を移動し続けてネットワークに通信トラフィックが生じてしまうことを、上記移動範囲を制限する方法とは別の方法により防ぐことができる。
【００１７】
上記情報処理装置において、前記移動エージェントは、前記他の情報処理装置の動作状態に関する情報を取得する手段と、前記取得した情報を基に、他の情報処理装置が前記探索条件を満たすか否かを判断する手段とを有していてもよい。動作状態に関する情報とは、上記プロセッサ使用率や使用プロセッサ数、メモリ使用率といった情報である。移動エージェントが、送信先の他の情報処理装置内でこれらの情報を自動的に取得することで、上記情報処理装置は自らの処理に拠らなくとも所定の処理を実行可能な他の情報処理装置を効率良く把握することができる。
【００１８】
上記情報処理装置において、前記移動エージェントは、前記他の情報処理装置が前記探索条件を満たす場合に、当該他の情報処理装置内で前記所定の処理を実行するための計算資源を予約する手段を更に有していてもよい。計算資源を予約しておくことで、移動エージェントから探索結果の通知を受けた後、上記実行命令を送信するまでの間に他の情報処理装置に計算資源を使われてしまうことを防ぐことができる。
【００１９】
上記情報処理装置において、前記移動エージェントは、前記計算資源を予約してから所定時間経過したときに前記計算資源の予約を解除する手段を更に有していてもよい。これにより、所定時間経過後は他の情報処理装置が別の処理のために計算資源を用いることができるため、上記予約の状態が長時間続くことにより計算資源が使用されない時間を極力無くし、システムを効率的に稼動させることができる。
【００２０】
上記情報処理装置及び前記他の情報処理装置は、それぞれの装置を識別するための識別情報を有し、前記探索結果通知は、前記所定の処理を実行可能な他の情報処理装置の識別情報であってもよい。これにより、上記情報処理装置は上記識別情報を受信するだけで上記所定の処理を実行可能な他の情報処理装置の存在を把握することができる。
【００２１】
上記情報処理装置において、前記他の情報処理装置は前記ネットワーク上に複数存在し、前記第１の送信手段は、前記移動エージェントを前記複数の他の情報処理装置へそれぞれ送信し、前記第２の送信手段は、前記第１の受信手段により前記複数の他の情報処理装置の識別情報が受信された場合に、複数の他の情報処理装置のうち一の情報処理装置を選択して当該他の情報処理装置へ前記実行命令を送信し、当該情報処理装置は、前記第２の送信手段により選択されなかった他の情報処理装置に送信された前記移動エージェントに、前記計算資源の予約の解除を指示する手段を更に具備していてもよい。移動エージェントを複数送信することで、上記所定の処理を実行可能な他の情報処理装置を迅速に把握することができるとともに、選択されなかった他の情報処理装置の計算資源の予約解除を指示することで、予約解除により解放された計算資源を他の用途に使用させる等、システムを効率良く稼動させることができる。
【００２２】
上記情報処理装置は、前記他の情報処理装置において生成及び送信された移動エージェントを受信する第２の受信手段と、前記受信された移動エージェントから前記他の情報処理装置へ送信された前記探索結果通知を基に前記他の情報処理装置から送信された前記所定の処理の実行命令を受信する第３の受信手段と、前記受信された実行命令を基に前記所定の処理を実行する実行手段とを更に具備していてもよい。他の情報処理装置から移動エージェントを受信することで、他の情報処理装置のマスター装置として機能するだけでなく、他の情報処理装置へ自身の動作状態を報知し、自身が実行可能な場合には、マスターである他の情報処理装置から指示された処理をスレーブとして実行することができる。
【００２３】
上記情報処理装置は、前記他の情報処理装置から送信された移動エージェントを認証する手段と、前記認証手段により前記移動エージェントが認証されない場合に、前記移動エージェントを破棄する手段とを更に具備していてもよい。当該認証には、例えばＲＳＡ公開鍵暗号方式等が用いられる。これにより、移動エージェントが何者かに改竄されていないか、信頼できる発信元か等の確認をすることができ、それらの確認が取れない場合には移動エージェントを破棄できるため、悪意ある移動エージェントにより、情報が漏洩したり上記情報処理装置及びシステム全体の動作が不安定になったりすることを防ぐことができる。
【００２４】
本発明の分散処理システムは、ネットワークを介して接続された第１及び第２の情報処理装置が所定の処理を分散して実行する分散処理システムであって、前記第１の情報処理装置は、前記分散処理システム内を移動し、前記所定の処理を実行可能な前記第２の情報処理装置を探索する移動エージェントを生成する手段と、前記生成された移動エージェントを前記第２の情報処理装置へ送信する手段と、前記送信された移動エージェントから、当該移動エージェントが探索した第２の情報処理装置の探索結果の通知を受信する手段と、前記受信された探索結果通知を基に、前記所定の処理を実行可能な第２の情報処理装置へ当該所定の処理の実行命令を送信する手段とを有し、前記第２の情報処理装置は、前記送信された移動エージェントを受信する手段と、前記第１の情報処理装置から前記所定の処理の実行命令を受信する手段と、前記受信された実行命令を基に前記所定の処理を実行する手段とを有している。
【００２５】
この構成によれば、上記移動エージェントの探索処理により、上記分散処理システムにおいて所定の処理を実行させるノードとしての第２の情報処理装置を効率良く選択して分散処理を行い、通信量を削減してシステムの処理能力を向上させることができる。
【００２６】
本発明の分散処理方法は、情報処理装置が、ネットワークを介して接続された他の情報処理装置とともに所定の処理を実行する方法であって、当該情報処理装置及び前記他の情報処理装置の間を移動し、前記所定の処理を実行可能な前記他の情報処理装置を探索する移動エージェントを生成するステップと、前記生成された移動エージェントを前記他の情報処理装置へ送信するステップと、前記送信された移動エージェントから、当該移動エージェントが探索した他の情報処理装置の探索結果の通知を受信するステップと、前記受信された探索結果通知を基に、前記所定の処理を実行可能な他の情報処理装置へ当該所定の処理の実行命令を送信するステップとを具備する。
【００２７】
また、本発明のプログラムは、ネットワークを介して接続された他の情報処理装置とともに所定の処理を実行することが可能な情報処理装置に、当該情報処理装置及び前記他の情報処理装置の間を移動し、前記所定の処理を実行可能な前記他の情報処理装置を探索する移動エージェントを生成するステップと、前記生成された移動エージェントを前記他の情報処理装置へ送信するステップと、前記送信された移動エージェントから、当該移動エージェントが探索した他の情報処理装置の探索結果の通知を受信するステップと、前記受信された探索結果通知を基に、前記所定の処理を実行可能な他の情報処理装置へ当該所定の処理の実行命令を送信するステップとを実行させるものである。
【発明の効果】
【００２８】
本発明によれば、処理を実行させるノードを効率良く選択することにより、ネットワーク上の通信量を大幅に削減し、分散処理システムの処理能力を向上させることができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施の形態を図面に基づき説明する。
【００３０】
まず、本実施形態において前提となるネットワークシステムについて説明する。図１は、当該ネットワークシステムの一例を示し、ネットワーク９を介して複数の情報処理装置１、２、３、４が接続されたものである。情報処理装置１、２、３、４は、例えばＰＣや各種のＡＶ機器、ポータブル機器等である。
【００３１】
情報処理装置１について示すと、情報処理装置１は、コンピュータ機能部として情報処理コントローラ１１を備える。情報処理コントローラ１１は、メインプロセッサ２１−１、サブプロセッサ２３−１，２３−２，２３−３、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５−１及びＤＣ（ディスクコントローラ）２７−１を有する。
【００３２】
メインプロセッサ２１−１は、サブプロセッサ２３−１，２３−２，２３−３によるプログラム実行（データ処理）のスケジュール管理と、情報処理コントローラ１１（情報処理装置１）の全般的な管理とを行う。ただし、メインプロセッサ２１−１内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ２１−１はサブプロセッサとしても機能することになる。メインプロセッサ２１−１は、ＬＳ（ローカルストレージ）２２−１を有する。
【００３３】
サブプロセッサは、１つでもよいが、望ましくは複数とする。本例は、複数の場合である。各サブプロセッサ２３−１，２３−２，２３−３は、メインプロセッサ２１−１の制御によって並列的かつ独立にプログラムを実行し、データを処理する。更に、場合によってメインプロセッサ２１−１内のプログラムがサブプロセッサ２３−１，２３−２，２３−３内のプログラムと連携して動作するように構成することもできる。後述する機能プログラムもメインプロセッサ２１−１内で動作するプログラムである。各サブプロセッサ２３−１，２３−２，２３−３も、ＬＳ（ローカルストレージ）２４−１，２４−２，２４−３を有する。
【００３４】
ＤＭＡＣ２５−１は、情報処理コントローラ１１に接続されたＤＲＡＭ（ダイナミックＲＡＭ）などからなるメインメモリ２６−１に格納されているプログラム及びデータにアクセスするものであり、ＤＣ２７−１は、情報処理コントローラ１１に接続された外部記録部２８−１，２８−２にアクセスするものである。
【００３５】
外部記録部２８−１，２８−２は、固定ディスク（ハードディスク）でも、リムーバブルディスクでもよく、また、ＭＯ，ＣＤ±ＲＷ，ＤＶＤ±ＲＷなどの光ディスク、メモリディスク、ＳＲＡＭ（スタティックＲＡＭ）、ＲＯＭなど、各種のものを用いることができる。したがって、ＤＣ２７−１は、ディスクコントローラと称するが、外部記録部コントローラである。図１の例のように、情報処理コントローラ１１に対して外部記録部２８を複数接続できるように、情報処理コントローラ１１を構成することができる。
【００３６】
メインプロセッサ２１−１、各サブプロセッサ２３−１，２３−２，２３−３、ＤＭＡＣ２５−１及びＤＣ２７−１は、バス２９−１によって接続される。
【００３７】
情報処理コントローラ１１には、当該の情報処理コントローラ１１を備える情報処理装置１を、ネットワーク全体を通して一意的に識別できる識別子が、情報処理装置ＩＤとして割り当てられる。
【００３８】
メインプロセッサ２１−１及び各サブプロセッサ２３−１，２３−２，２３−３に対しても同様に、それぞれを特定できる識別子が、メインプロセッサＩＤ及びサブプロセッサＩＤとして割り当てられる。
【００３９】
情報処理コントローラ１１は、ワンチップＩＣ（集積回路）として構成することが望ましい。他の情報処理装置２、３、４も、上記と同様に構成される。ここで、図１において親番号が同一であるユニットは枝番号が異なっていても、特に断りがない限り同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
【００４０】
上述したように、１つの情報処理コントローラ内の各サブプロセッサ２３は、独立にプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ２６内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ２３からメインメモリ２６へのアクセスは、以下のような手順によって行う。
【００４１】
図２（Ａ）に示すように、メインメモリ２６は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサＩＤ及びＬＳアドレス（ローカルストレージアドレス）を含むものとされる。また、各メモリロケーションには、後述のアクセスキーも割り振られる。Ｆ／Ｅビットは、以下のように定義される。
【００４２】
Ｆ／Ｅビット＝０は、サブプロセッサ２３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、Ｆ／Ｅビット＝０は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に１に設定される。
【００４３】
Ｆ／Ｅビット＝１は、当該メモリロケーションのデータがサブプロセッサ２３によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ２３によって読み出された後に０に設定される。また、Ｆ／Ｅビット＝１は、当該メモリロケーションがデータ書き込み不可であることを示す。
【００４４】
更に、上記Ｆ／Ｅビット＝０（読み出し不可／書き込み可）の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。Ｆ／Ｅビット＝０のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ２３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ２３のサブプロセッサＩＤ及びＬＳアドレスを書き込む。
【００４５】
その後、データ書き込み側のサブプロセッサ２３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビット＝１（読み出し可／書き込み不可）に設定されたとき、予め読み出し予約情報として追加セグメントに書き込まれたサブプロセッサＩＤ及びＬＳアドレスに読み出される。
【００４６】
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し／書き込みを制御することによって、前段階の処理を行うサブプロセッサ２３が、処理済みのデータをメインメモリ２６上の所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ２３が前処理後のデータを読み出すことが可能となる。
【００４７】
図２（Ｂ）に示すように、各サブプロセッサ２３内のＬＳ２４も、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含むものとされる。
【００４８】
サブプロセッサ２３がメインメモリ２６内のデータを自身のＬＳ２４のメモリロケーションに読み出すときには、対応するビジービットを１に設定して予約する。ビジービットが１であるメモリロケーションには、他のデータは格納することができない。ＬＳ２４のメモリロケーションに読み出し後、ビジービットは０になり、任意の目的に使用できるようになる。
【００４９】
図２（Ａ）に示すように、さらに、各情報処理コントローラと接続されたメインメモリ２６には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ２６内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ２３に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ２３は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。メインメモリ２６は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【００５０】
更に、メインメモリ２６の排他的な制御を実現するために、図２（Ｃ）に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のＳＲＡＭ等の比較的高速のメモリに格納され、ＤＭＡＣ２５と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサＩＤ、サブプロセッサキー及びキーマスクが含まれる。
【００５１】
サブプロセッサ２３がメインメモリ２６を使用する際のプロセスは、以下の通りである。まず、サブプロセッサ２３はＤＭＡＣ２５に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、自身のサブプロセッサＩＤと、使用要求先であるメインメモリ２６のアドレスが含まれる。
【００５２】
ＤＭＡＣ２５は、このコマンドを実行する前に、キー管理テーブルを参照して、使用要求元のサブプロセッサのサブプロセッサキーを調べる。次に、ＤＭＡＣ２５は、調べた使用要求元のサブプロセッサキーと、使用要求先であるメインメモリ２６内の図２（Ａ）に示したメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、上記のコマンドを実行する。
【００５３】
図２（Ｃ）に示したキー管理テーブル上のキーマスクは、その任意のビットが１になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが０または１になることができる。例えば、サブプロセッサキーが１０１０であるとする。通常、このサブプロセッサキーによって１０１０のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが０００１に設定されている場合には、キーマスクのビットが１に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー１０１０によってアクセスキーが１０１０または１０１１のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００５４】
以上のようにして、メインメモリ２６のサンドボックスの排他性が実現される。すなわち、１つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ２６の所定アドレスにアクセスできるようになり、データを保護することができる。
【００５５】
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のプログラムと連携動作するものとする。第１のサブプロセッサにより出力された処理結果データを一旦メインメモリに格納し、第２のサブプロセッサに入力したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的な処理を可能にする。
【００５６】
より具体的には、他の情報処理装置からのデータ→第１のサブプロセッサによる処理→第１のメインメモリ領域→第２のサブプロセッサによる処理→第２のメインメモリ領域、という手順で多段階処理が行われるときには、
第１のサブプロセッサのサブプロセッサキー：０１００、
第１のメインメモリ領域のアクセスキー    ：０１００、
第２のサブプロセッサのサブプロセッサキー：０１０１、
第２のメインメモリ領域のアクセスキー    ：０１０１
というような設定のままだと、第２のサブプロセッサは第１のメインメモリ領域にアクセスすることができない。そこで、第２のサブプロセッサのキーマスクを０００１にすることにより、第２のサブプロセッサによる第１のメインメモリ領域へのアクセスを可能にすることができる。
【００５７】
図１のネットワークシステムでは、情報処理装置１、２、３、４間での分散処理のために、情報処理装置１、２、３、４間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、コマンド、プログラム及びデータを含むソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置に送信することによって、処理を分散することができる。
【００５８】
図３に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ＩＤ、送信先ＩＤ、応答先ＩＤ、セルインターフェース、ＤＭＡコマンド、プログラム及びデータによって構成される。
【００５９】
送信元ＩＤには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレス及び当該情報処理装置の情報処理装置ＩＤ、更に、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ２１及び各サブプロセッサ２３の識別子（メインプロセッサＩＤ及びサブプロセッサＩＤ）が含まれる。
【００６０】
送信先ＩＤ及び応答先ＩＤには、それぞれ、ソフトウェアセルの送信先である情報処理装置、及びソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
【００６１】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ、必要なサブプロセッサの情報、サンドボックスサイズ及び前回のソフトウェアセルＩＤから構成される。
【００６２】
グローバルＩＤは、ネットワーク全体を通して当該ソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ及びソフトウェアセルの作成または送信の日時（日付及び時刻）に基づいて作成される。
【００６３】
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数を設定する。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ２６内及びサブプロセッサ２３のＬＳ２４内のメモリ量を設定する。前回のソフトウェアセルＩＤは、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【００６４】
ソフトウェアセルの実行セクションは、ＤＭＡコマンド、プログラム及びデータから構成される。ＤＭＡコマンドには、プログラムの起動に必要な一連のＤＭＡコマンドが含まれ、プログラムには、サブプロセッサ２３によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【００６５】
更に、ＤＭＡコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、及びステータス返信コマンドが含まれる。
【００６６】
ロードコマンドは、メインメモリ２６内の情報をサブプロセッサ２３内のＬＳ２４にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサＩＤ及びＬＳアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ２６内の所定領域のアドレスを示す。サブプロセッサＩＤ及びＬＳアドレスは、情報のロード先であるサブプロセッサ２３の識別子及びＬＳ２４のアドレスを示す。
【００６７】
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサＩＤ及びプログラムカウンタを含む。サブプロセッサＩＤは、キック対象のサブプロセッサ２３を識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
【００６８】
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムＩＤによって、起動すべき機能プログラムを識別する。
【００６９】
ステータス要求コマンドは、送信先ＩＤで示される情報処理装置の現在の動作状態（状況）に関する装置情報を、応答先ＩＤで示される情報処理装置宛に送信要求するコマンドである。機能プログラムについては後述するが、図６に示す情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ２６にロードされ、メインプロセッサ２１により実行される。
【００７０】
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先ＩＤで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【００７１】
図４に、ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
【００７２】
情報処理装置ＩＤは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のＩＤを示す。情報処理装置ＩＤは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１によって、電源投入時の日時、情報処理装置のネットワークアドレス及び情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３の数などに基づいて生成される。
【００７３】
情報処理装置種別ＩＤには、当該情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、オーディオプレーヤや、ハードディスクレコーダ等である。また、情報処理装置種別ＩＤは、音響再生、動画記録再生等の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別ＩＤを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
【００７４】
ＭＳ（マスター／スレーブ）ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが０に設定されている場合にはマスター装置として動作していることを示し、１に設定されている場合にはスレーブ装置として動作していることを示す。
【００７５】
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ２１の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ２１で現在動作している全てのプログラムについての、メインプロセッサ２１での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるＭＩＰＳを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
【００７６】
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ２３の数を表す。サブプロセッサＩＤは、当該の情報処理コントローラ内の各サブプロセッサ２３を識別するための識別子である。
【００７７】
サブプロセッサステータスは、各サブプロセッサ２３の状態を表すものであり、ｕｎｕｓｅｄ，ｒｅｓｅｒｖｅｄ，ｂｕｓｙなどの状態がある。ｕｎｕｓｅｄは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。ｒｅｓｅｒｖｅｄは、現在は使用されていないが、予約されている状態を示す。ｂｕｓｙは、現在使用中であることを示す。
【００７８】
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがｂｕｓｙである場合には、現在の使用率を示し、サブプロセッサステータスがｒｅｓｅｒｖｅｄである場合には、後に使用される予定の推定使用率を示す。
【００７９】
サブプロセッサＩＤ、サブプロセッサステータス及びサブプロセッサ使用率は、１つのサブプロセッサ２３に対して一組設定され、１つの情報処理コントローラ内のサブプロセッサ２３に対応する組数が設定される。
【００８０】
メインメモリ総容量及びメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ２６の総容量及び現在使用中の容量を表す。
【００８１】
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部２８の数を表す。外部記録部ＩＤは、当該の情報処理コントローラに接続されている外部記録部２８を一意的に識別する情報である。外部記録部種別ＩＤは、当該の外部記録部の種類（例えば、ハードディスク、ＣＤ±ＲＷ、ＤＶＤ±ＲＷ、メモリディスク、ＳＲＡＭ、ＲＯＭなど）を表す。
【００８２】
外部記録部総容量及び外部記録部使用量は、それぞれ、外部記録部ＩＤによって識別される外部記録部２８の総容量及び現在使用中の容量を表す。
【００８３】
外部記録部ＩＤ、外部記録部種別ＩＤ、外部記録部総容量及び外部記録部使用量は、１つの外部記録部２８に対して一組設定されるものであり、当該の情報処理コントローラに接続されている外部記録部２８の数の組数だけ設定される。すなわち、１つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部ＩＤが割り当てられ、外部記録部種別ＩＤ、外部記録部総容量及び外部記録部使用量も別々に管理される。
【００８４】
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、以上のような構成のソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置及び当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、及び各装置内の情報処理コントローラは、それぞれ、上記の送信元ＩＤ、送信先ＩＤ及び応答先ＩＤによって識別される。
【００８５】
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、そのソフトウェアセルをメインメモリ２６に格納する。さらに、送信先のメインプロセッサ２１は、ソフトウェアセルを読み出し、それに含まれるＤＭＡコマンドを処理する。具体的には、送信先のメインプロセッサ２１は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサＩＤ及びＬＳアドレスで特定されるサブプロセッサ内のＬＳ２４の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
【００８６】
次に、メインプロセッサ２１は、キックコマンドを、これに含まれるサブプロセッサＩＤで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に出力する。指示されたサブプロセッサは、そのキックコマンド及びプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ２６に格納した後、実行を完了したことをメインプロセッサ２１に通知する。
【００８７】
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ２３に限定されるものではなく、メインプロセッサ２１がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
【００８８】
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラム及びそのメインメモリ用プログラムによって処理されるデータを含み、ＤＭＡコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ２６にメインメモリ用プログラム及びそれによって処理されるデータを記憶させる。次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムＩＤなどの識別子、及びプログラムカウンタを含み、ＤＭＡコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ２１に当該メインメモリ用プログラムを実行させる。
【００８９】
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
【００９０】
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
【００９１】
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。更に、各サブプロセッサ間ではＤＭＡ方式によりデータ転送を行い、また上述したサンドボックスを使用することによって、１つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
【００９２】
ソフトウェアセルの使用による分散処理の結果、図５の上段に示すようにネットワーク９に接続されている複数の情報処理装置１、２、３、４は、図５の下段に示すように、仮想的な１台の情報処理装置７として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
【００９３】
図６に、個々の情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部２８に記録されているものである。各プログラムは、機能または特徴によって、制御プログラム、機能プログラム及びデバイスドライバにカテゴライズされる。
【００９４】
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ２１が実行するもので、後述のＭＳ（マスター／スレーブ）マネージャ及び能力交換プログラムを含む。
【００９５】
機能プログラムは、メインプロセッサ２１が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
【００９６】
デバイスドライバは、情報処理コントローラ（情報処理装置）の入出力（送受信）用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラ毎に情報処理装置に応じたものが備えられる。
【００９７】
情報処理装置が物理的にネットワーク９に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク９に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、制御プログラムに属する各プログラム、及びデバイスドライバに属する各プログラムを、メインメモリ２６にロードする。
【００９８】
ロード手順としては、メインプロセッサ２１は、まず、ＤＣ２７に読み出し命令を実行させることによって、外部記録部２８からプログラムを読み出し、次に、ＤＭＡＣ２５に書き込み命令を実行させることによって、そのプログラムをメインメモリ２６に書き込む。
【００９９】
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
【０１００】
ここで、機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部２８に記録されている必要はなく、いずれか１つの情報処理装置の外部記録部２８に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図５の下段に示すように、仮想的な１台の情報処理装置７として機能プログラムを実行することができる。
【０１０１】
また、前述したようにメインプロセッサ２１によって処理される機能プログラムは、サブプロセッサ２３によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこでメインプロセッサ２１が外部記録部２８から機能プログラムを読み出し、メインメモリ２６に書き込む際に対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ２６に書き込むものとする。この場合、連携動作するサブプロセッサプログラムは１個である場合もあるし、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ２６に書き込むことになる。メインメモリ２６に書き込まれたサブプロセッサプログラムはその後、サブプロセッサ２３内のＬＳ２４に書き込まれ、メインプロセッサ２１によって処理される機能プログラムと連携動作する。
【０１０２】
図３のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムＩＤとして割り当てられる。機能プログラムＩＤは、機能プログラムの作成の段階で、作成日時や情報処理装置ＩＤなどから決定される。
【０１０３】
そしてサブプロセッサプログラムにもサブプロセッサプログラムＩＤが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムＩＤは、連携動作する相手となる機能プログラムの機能プログラムＩＤと関連性のある識別子、例えば機能プログラムＩＤを親番号とした上で最後尾に枝番号を付加させたもの等であることもあり得るし、連携動作する相手となる機能プログラムの機能プログラムＩＤとは関連性のない識別子であってもよい。いずれにしても機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムＩＤを自プログラム内に互いに記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは複数個ある全てのサブプロセッサプログラムのサブプロセッサプログラムＩＤを記憶しておくことになる。
【０１０４】
メインプロセッサ２１は、自身が動作する情報処理装置の装置情報（動作状態に関する情報）を格納するための領域をメインメモリ２６に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報である。
【０１０５】
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、マスター／スレーブマネージャ（以下、ＭＳマネージャ）をメインメモリ２６にロードし、実行する。
【０１０６】
ＭＳマネージャは、自身が動作する情報処理装置がネットワーク９に接続されていることを検知すると、同じネットワーク９に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク９に接続されているだけでなく、電気的・機能的にもネットワーク９に接続されていることを示す。また、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
【０１０７】
ＭＳマネージャが同じネットワーク９に接続されている他の情報処理装置の存在を確認する方法を以下に示す。
【０１０８】
ＭＳマネージャは、ＤＭＡコマンドがステータス要求コマンドであり、送信元ＩＤ及び応答先ＩＤが当該情報処理装置で、送信先ＩＤを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信して、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば１０分とされる。
【０１０９】
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他の装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先ＩＤで特定されるステータス要求コマンドを発行した情報処理装置に対して、ＤＭＡコマンドがステータス返信コマンドであり、かつデータとして自身（その他装置）の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報（情報処理装置ＩＤ、メインプロセッサに関する情報、サブプロセッサに関する情報など）及び当該他装置のＭＳステータスが含まれる。
【０１１０】
ステータス要求コマンドを発行した情報処理装置のＭＳマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、ＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるＭＳステータスを１に設定する。これによって、当該装置は、スレーブ装置となる。
【０１１１】
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるＭＳステータスを０に設定する。これによって、当該装置は、マスター装置となる。
【０１１２】
すなわち、いずれの装置もネットワーク９に接続されていない状態、またはネットワーク９上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク９上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にスレーブ装置として設定される。
【０１１３】
マスター装置及びスレーブ装置のいずれについても、ＭＳマネージャは、定期的にステータス要求コマンドをネットワーク９上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されることにより、予め判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク９に新たな情報処理装置が接続された場合など、ネットワーク９の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
【０１１４】
メインプロセッサ２１は、ＭＳマネージャから、ネットワーク９上の他装置の照会及び自装置のＭＳステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
【０１１５】
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク９に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。他装置の装置情報の取得は、上述したように、ＤＭＡコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、ＤＭＡコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
【０１１６】
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を格納するための領域を自装置のメインメモリ２６に確保し、これら情報を他装置（スレーブ装置）の装置情報テーブルとして記録する。すなわち、マスター装置のメインメモリ２６には、自装置を含むネットワーク９に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
【０１１７】
一方、自装置がスレーブ装置である場合には、能力交換プログラムは、ネットワーク９に接続されている全ての他装置の装置情報、すなわちマスター装置及び自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ＩＤ及びＭＳステータスを、自装置のメインメモリ２６に記録する。すなわち、スレーブ装置のメインメモリ２６には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク９に接続されているマスター装置及び各スレーブ装置についての情報処理装置ＩＤ及びＭＳステータスが、別の装置情報テーブルとして記録される。
【０１１８】
また、マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、新たにネットワーク９に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ２６に記録する。
【０１１９】
なお、ＭＳマネージャ及び能力交換プログラムは、メインプロセッサ２１で実行されることに限らず、いずれかのサブプロセッサ２３で実行されてもよい。また、ＭＳマネージャ及び能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０１２０】
マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ２６から削除する。
【０１２１】
更に、このようにネットワーク９から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
【０１２２】
具体的には、例えば、ネットワーク９から切断されていない情報処理装置は、それぞれ、自装置及び他装置の情報処理装置ＩＤを数値に置き換えて、自装置の情報処理装置ＩＤを他装置の情報処理装置ＩＤと比較し、自装置の情報処理装置ＩＤがネットワーク９から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、ＭＳステータスを０に設定し、マスター装置として、上述したように、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を取得して、メインメモリ２６に記録する。
【０１２３】
図５の下段に示したようにネットワーク９に接続されている複数の情報処理装置１、２、３、４を仮想的な１台の情報処理装置７として動作させるためには、マスター装置がユーザの操作及びスレーブ装置の動作状態を把握する必要がある。
【０１２４】
図７に、４台の情報処理装置が仮想的な１台の情報処理装置７として動作する様子を示す。情報処理装置１がマスター装置、情報処理装置２、３、４がスレーブ装置Ａ、Ｂ、Ｃとして、動作しているものとする。
【０１２５】
ユーザがネットワーク９に接続されている情報処理装置を操作した場合、操作対象がマスター装置１であれば、その操作情報は、マスター装置１において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置１に送信される。すなわち、ユーザの操作対象がマスター装置１とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置１において把握される。操作情報の送信は、例えば、ＤＭＡコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
【０１２６】
そして、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、上記の方法によって自装置の外部記録部２８−１、２８−２からメインメモリ２６−１に機能プログラムをロードするが、他の情報処理装置（スレーブ装置）がマスター装置１に機能プログラムを送信してもよい。
【０１２７】
機能プログラムには、その実行単位毎に必要となる、図４に示した各情報として表される情報処理装置種別ＩＤ、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件等の、装置に関する要求スペックが規定されている。
【０１２８】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、予め能力交換プログラムによってメインメモリ２６−１に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリ及び外部記録部に関する情報である。
【０１２９】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ネットワーク９上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
【０１３０】
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別ＩＤに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。更に、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から１つの実行要求候補装置を特定して選択する。
【０１３１】
実行要求するスレーブ装置が特定されたら、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ１１に含まれるメインメモリ２６−１に記録されている当該スレーブ装置の装置情報テーブルを更新する。
【０１３２】
更に、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ＤＭＡコマンドが機能プログラム実行コマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、機能プログラムに関する必要なサブプロセッサの情報及びサンドボックスサイズ（図３参照）を設定して、上記実行要求されるスレーブ装置に対して送信する。
【０１３３】
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、上記の方法によって自装置の外部記録部２８からメインメモリ２６に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
【０１３４】
機能プログラムの実行を要求されたスレーブ装置の外部記録部２８に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
【０１３５】
サブプロセッサプログラムについては、前述のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
【０１３６】
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、終了通知をマスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
【０１３７】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、自装置及び他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置１が当該機能プログラムを実行する。
【０１３８】
図７の例で、ユーザがスレーブ装置Ａ（情報処理装置２）を操作し、当該操作に応じた機能プログラムを別のスレーブ装置Ｂ（情報処理装置３）が実行する場合について、図８を用いてその分散処理の例を説明する。
【０１３９】
図８の例では、ユーザがスレーブ装置Ａを操作することによって、スレーブ装置Ａを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Ａは、ステップ８１で、その操作情報をマスター装置１に送信する。
【０１４０】
マスター装置１は、ステップ７２で、その操作情報を受信し、さらにステップ７３に進んで、自装置のメインメモリ２６−１に記録されている自装置及び他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Ｂが選択される場合である。
【０１４１】
次に、マスター装置１は、ステップ７４で、その選択したスレーブ装置Ｂに対して機能プログラムの実行を要求する。
【０１４２】
スレーブ装置Ｂは、ステップ９５で、その実行要求を受信し、さらにステップ９６に進んで、実行要求された機能プログラムを実行する。
【０１４３】
以上のように、ユーザは、１台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置１、２、３、４を仮想的な１台の情報処理装置７として動作させることができる。
【０１４４】
次に、以上説明したネットワークシステムに、本発明を適用した場合の実施の形態について説明する。
【０１４５】
上述のネットワークシステムにおいては、各情報処理装置はＤＭＡコマンドがステータス要求コマンドであるソフトウェアセルを送信先ＩＤで示される情報処理装置宛に送信し、当該情報処理装置からステータス返信コマンドの応答を受けることにより当該情報処理装置のプロセッサ動作周波数、プロセッサ使用率等の装置情報を取得し、当該装置情報を基に所定の処理（以下、ジョブという）を割り当てている。
【０１４６】
しかし、多数の各情報処理装置が他の情報処理装置の装置情報を取得するためにソフトウェアセルを送受信すると、ネットワークに大量の通信トラフィックが発生して、システムの性能を低下させる可能性がある。そこで本実施形態においては、上記装置情報の取得に移動エージェントを用いることとしている。
【０１４７】
図９は、本実施形態における分散処理システムの構成を示した図である。同図において、上記図７と同様の構成となる部分については同一の符号を付し、説明を省略する。
【０１４８】
同図に示すように、本実施形態における分散処理システムは、例えば上記情報処理装置１、２及び３で構成され、ネットワーク９を介して相互に接続されている。ネットワーク９は例えばEthernet（登録商標）、Fibre Channel、IEEE１３９４等であり、バス型、ツリー型、リング型等様々なトポロジをとることができる。またネットワーク９は無線でも有線でも構わない。接続される情報処理装置の数も３台に限定されるものではない。
【０１４９】
各情報処理装置は、上記図７等における各情報処理コントローラに加えて、それぞれエージェントプラットフォーム３１、３２及び３３を有している。各エージェントプラットフォームは、各情報処理装置で実行されるプログラムであり、移動エージェントの生成・発信・移動及び実行手段をそれぞれ提供する。
【０１５０】
また、上記図１の場合と同様、各情報処理装置の各情報処理コントローラは、上記メインプロセッサ、サブプロセッサ等をそれぞれ有し、上記ＤＭＡコマンド等によりソフトウェアセルを実行したり、各種データをやり取りしたりすることが可能である。よって、各情報処理装置には、それぞれを識別するための上記情報処理装置ＩＤが付与されている。
【０１５１】
図１０は、本実施形態における移動エージェントを示した図である。同図に示すように、移動エージェント４０は、電子署名４１、探索条件４２、生存時間４３、移動範囲４４、発信元ＩＤ４５、エージェントＩＤ４６、エージェントプログラム４７及びデータ４８で構成される。移動エージェント４０は、各情報処理装置のエージェントプラットフォーム上で生成され、異なる情報処理装置の上記エージェントプラットフォーム間を移動して、滞在中のエージェントプラットフォーム上でエージェントプログラム４７を実行することが可能である。
【０１５２】
電子署名４１は、移動エージェント４０の発信元を確認したり、移動エージェントが改竄されていないか等を確認したりするために用いられる。上記エージェントプログラム４７の実行前には当該電子署名４１により移動先の情報処理装置内で認証が行われる。電子署名４１は、例えばＲＳＡ公開鍵暗号方式、楕円曲線暗号方式、ＥｌＧａｍａｌ暗号方式等の暗号方式を用いて、秘密鍵により特定の符号を暗号化することで作成される。同図においては、例えば発信元等を示すデータが「１Ｅ８７Ａ０４Ｆ７Ｂ９Ｃ００２Ｄ」という文字列に暗号化されている。
【０１５３】
探索条件４２は、上記移動エージェント４０が探索する情報処理装置の条件を示しており、例えば各情報処理装置のプロセッサ動作周波数、各情報処理装置が複数のプロセッサ（サブプロセッサ）を有する場合には未使用（または使用）プロセッサ数をパラメータとする。同図においては、プロセッサ動作周波数が１ＧＨｚ以上、未使用プロセッサ数が２以上、という探索条件を満たす情報処理装置が探索されることになる。
【０１５４】
生存時間４３は、上記移動エージェント４０が本分散処理システム内で生存できる時間を示している。移動エージェント４０は発信されてから当該生存時間４３が経過すると消滅する。なお、移動エージェント４０は、当該生存時間４３に達した時に上記エージェントプログラム４７が実行途中の場合には、当エージェントプログラム４７の終了を待って消滅するようにしてもよい。同図においては、生存時間４３は移動エージェント４０が発信されてから１２０秒となっている。
【０１５５】
当該生存時間４３を設定することで、上記探索条件４２を満たす情報処理装置を発見するまで移動エージェント４０が延々とシステム内を移動し続けることによりネットワーク９に通信トラフィックが発生することを防ぐことができる。
【０１５６】
移動範囲４４は、上記移動エージェント４０がネットワーク９上で移動することができる範囲を示している。当該移動範囲４４は例えばＩＰアドレスの範囲で示され、同図においては、ネットワーク９においてＩＰアドレスが１９２．１６８．０．Ｘ（０≦Ｘ≦２５５）である情報処理装置までを移動範囲としている。
【０１５７】
移動エージェント４０は、一の情報処理装置に移動した後、次に移動する情報処理装置を決定する際に、前記移動範囲４４を参照して、当該移動範囲４４で与えられた範囲内の情報処理装置を適宜選択して移動する。分散処理システムにおいては、あまりにも距離が離れている情報処理装置にジョブを割り当てても、通信時間等の影響で効果的な分散処理を行うことができないが、上記移動範囲４４を設定することで距離の近い情報処理装置の中から、ジョブを割り当て可能な情報処理装置を探索してジョブを実行させることができ、システムの稼動効率が低下することを防ぐことができる。また、移動エージェントが延々と移動し続けて通信トラフィックが生じることも防ぐことができる。
【０１５８】
発信元ＩＤ４５は、移動エージェント４０を発信した情報処理装置を識別するためのＩＤであり、ネットワーク９に存在する全ての情報処理装置に対して付与される。当該発信元ＩＤ４５は例えば同図に示すようにＩＰアドレスで表され、また情報処理装置が割り当てるジョブの発信元プロセスを識別するプロセス番号を含む。
【０１５９】
移動エージェント４０は、上記探索条件４２を満たす情報処理装置を発見すると、当該発信元ＩＤ４５に対応する発信元の情報処理装置に対して発見通知を送信する。なお、当該発信元ＩＤは、上記電子署名４１と併せて移動エージェント４０の認証に用いられてもよい。同図においては、ＩＰアドレスが１９２．１６８．０．１、プロセス番号が５となっている。
【０１６０】
エージェントＩＤ４６は、移動エージェント４０が何の用途に用いられるものであるかを識別するために、発信元の情報処理装置において移動エージェント生成時に付与されるＩＤである。
【０１６１】
移動エージェント４０は、当該移動エージェント４０の発信元の情報処理装置に上記発見通知を送信する際に、当該発見通知に当該エージェントＩＤ４６を付加して送信する。移動エージェント４０の発信元の情報処理装置は、当該エージェントＩＤ４６を参照して、送信した移動エージェント４０が何の用途に使うためのものであったかを判断する。例えば、エージェントＩＤ４６は、情報処理装置が他の情報処理装置へ割り当てようとするジョブと関連付けられ、発見通知を受信した情報処理装置は当該エージェントＩＤに関連付けられたジョブを、移動エージェント４０が発見通知を送信した滞在先の情報処理装置に対して送信する。
【０１６２】
エージェントプログラム４７は、移動エージェント４０が滞在する情報処理装置の上記エージェントプラットフォーム上で実行されるプログラムであり、上記探索条件４２を基に、上記プロセッサ動作周波数や未使用プロセッサ数等の当該滞在先の情報処理装置の装置情報を取得し、当該取得した情報から、滞在先の情報処理装置が探索条件４２を満たすか否かを判断する。そして、探索条件４２を満たすと判断した場合には、滞在先の情報処理装置の情報処理装置ＩＤを発信元の情報処理装置に対して送信する。当該エージェントプログラム４７の動作の詳細については後述する。
【０１６３】
データ４８は、上記エージェントプログラム４７の実行状態の一部あるいは全部を記録したものである。移動エージェント４０は、移動前の情報処理装置において上記実行状態の一部あるいは全部をデータ４８として保持し、移動後の情報処理装置においてデータ４８を参照して実行状態を復元する。
【０１６４】
また、同図に示すように、データ４８は、移動エージェント４０の移動履歴４９等、実行状態以外に移動エージェント４０の活動に必要な情報を含んでいてもよい。移動履歴４９は、移動エージェント４０が発信後に滞在した情報処理装置の履歴であり、例えば情報処理装置のＩＰアドレスのリストで表される。また、移動履歴４９は、移動エージェント４０が滞在した情報処理装置の上記装置情報を含んでいてもよい。
【０１６５】
次に、以上説明した移動エージェント４０を用いた各情報処理装置の動作について説明する。
【０１６６】
まず、移動エージェント４０の発信元の情報処理装置の動作について説明する。図１１は、情報処理装置が移動エージェント４０を発信してから他の情報処理装置へジョブを送信するまでの動作の流れを示したフローチャートである。
【０１６７】
同図に示すように、まず、情報処理装置は、例えばユーザから所定のジョブの実行を指示されると、自身のエージェントプラットフォーム上で移動エージェント４０を生成し（ステップ５１）、当該生成した移動エージェント４０を他の情報処理装置のエージェントプラットフォームへ送信する（ステップ５２）。この際、同一のエージェントＩＤを持つ複数の移動エージェントを生成して複数の情報処理装置へ発信するようにしてもよい。
【０１６８】
続いて、情報処理装置は、所定の時間間隔で移動エージェント４０を発信してからの経過時間を計測し、所定の制限時間を越えたか否かを確認する（ステップ５３）。所定の制限時間を越えた場合（ステップ５３のＮＯ）には、例えば情報処理装置が有する表示部（図示せず）を介してユーザにエラーを通知し、他の情報処理装置へのジョブの割り当て処理を中止する。なお、この場合、再度移動エージェント４０を生成及び発信して探索条件を満たす他の情報処理装置を探索するようにしてもよいし、分散処理を行わずに自身でジョブを実行するようにしてもよい。
【０１６９】
制限時間を越えていない場合（ステップ５３のＹＥＳ）には、移動エージェント４０から他の情報処理装置の発見通知が届いたか否かを確認する（ステップ５４）。発見通知が届いていない場合（ステップ５４のＮＯ）には、届くまで確認処理を繰り返す。上記制限時間は例えば１分、３分等任意に設定することが可能である。また当該制限時間は厳密に守られなくてもよく、一定の幅を持たせるようにしても構わない。
【０１７０】
移動エージェント４０から発見通知が届いた場合（ステップ５４のＹＥＳ）には、当該発見通知に含まれるエージェントＩＤ及び自身のメインメモリ２６−１等に記憶してある発見通知のログを参照し、既に同じエージェントＩＤの移動エージェント４０から発見通知が届いていたか否かを確認する（ステップ５５）。これは、複数の移動エージェント４０を発信していた場合には、複数の発見通知が届く可能性があるためである。
【０１７１】
同一のエージェントＩＤを有する発見通知が既に届いていた場合（ステップ５５のＹＥＳ）には、上記発見通知を送信した移動エージェント４０に対して、その移動エージェント４０が滞在している情報処理装置は分散処理に使用しない旨を応答し（ステップ５７）、処理を終了する。まだ届いていない場合（ステップ５５のＮＯ）には、当該発見通知を送信した移動エージェント４０に対して、当該移動エージェントが滞在している情報処理装置を分散処理に使用する旨を応答し（ステップ５６）、実行させるためのジョブを当該滞在先の情報処理装置に対して送信する（ステップ５８）。
【０１７２】
上記ジョブは、例えば情報処理装置がハードディスクレコーダの場合にはテレビ番組の記録処理であり、上記動作により、移動エージェント発信元の情報処理装置と上記探索条件を満たす情報処理装置とが協働して番組記録処理を実行することになる。なお、当該番組記録処理の場合には、上記探索条件４２としてＨＤＤの空き容量を設定してもよい。
【０１７３】
なお、本実施形態においては、移動エージェント４０の発信元の情報処理装置が通常マスター装置として機能し、移動エージェント４０の送信先の情報処理装置がスレーブ装置として機能する。
【０１７４】
次に、他の情報処理装置のエージェントプラットフォームが、移動エージェント４０を受信した場合の当該エージェントプラットフォームの動作について説明する。図１２は、当該動作の流れを示したフローチャートである。
【０１７５】
同図に示すように、エージェントプラットフォームは、ネットワーク９を介して送信された移動エージェント４０を受信する（ステップ６１）。続いて、当該移動エージェント４０に含まれる電子署名４１を、予め発信元の情報処理装置から与えられた暗号鍵（公開鍵）によって復号化し、得られた復号データと期待値とを比較することで移動エージェントの認証を行う（ステップ６２）。復号データと期待値が一致すれば、移動エージェント４０の発信元が正しい（信用できる）こと及び移動エージェントが通信途中に改竄されていないことが保証される。認証には、電子署名以外の情報、例えば発信元ＩＤ４５や予め決められた鍵やパスワード等を併用してもよい。
【０１７６】
上記認証により移動エージェント４０の発信元が確認されると、エージェントプラットフォームは、当該発信元の情報処理装置からの移動エージェント４０の受付が許可されているか否かを判定する（ステップ６３）。受付を許可しない場合としては、例えばエージェントプラットフォームがある特定の他の情報処理装置とのみ分散処理を実行することが予め決められているような場合が考えられる。
【０１７７】
移動エージェント４０の受付を許可または禁止するために必要な発信元の情報処理装置に関する情報は、例えば発信元の情報処理装置の情報処理装置ＩＤや、当該情報処理装置ＩＤと、移動エージェント４０を発信したエージェントプログラム４７に固有な識別情報とを組み合わせた符号で表される。当該情報は例えば予め各情報処理装置に対して与えられ、各情報処理装置の外部記憶部等に格納されており、各情報処理装置のエージェントプラットフォームは当該情報を参照して上記判定を行う。
【０１７８】
上記移動エージェント４０が許可されていない発信元から発信されたものであった場合（ステップ６３のＮＯ）、エージェントプラットフォームは、当該移動エージェント４０を破棄する（ステップ６５）。具体的には、受信した移動エージェント４０を格納していたメモリ領域を解放し、処理を終了する。
【０１７９】
上記移動エージェント４０が許可された発信元から発信されたものであった場合（ステップ６３のＹＥＳ）には、エージェントプラットフォームは、移動エージェント４０の一部であるエージェントプログラム４７を実行する（ステップ６４）。当該エージェントプログラム４７の実行により、当該移動エージェント４０の滞在先の情報処理装置、すなわち当該エージェントプラットフォームを有する情報処理装置の装置情報が取得され、上記探索条件を満たすか否かの判定等が行われる。
【０１８０】
次に、上記エージェントプログラム４７が、移動エージェント４０の滞在先のエージェントプラットフォーム上で実行する処理について説明する。図１３は、当該処理の流れを示したフローチャートである。エージェントプログラム４７はエージェントプラットフォームによって起動される。
【０１８１】
まず、エージェントプログラム４７は、滞在先の情報処理装置のプロセッサ動作周波数等の装置情報を取得し、当該装置情報と上記探索条件４２とを比較することにより、当該探索条件４２を満たすか否かを判定する（ステップ１０１）。当該装置情報の取得は、滞在先の情報処理装置が持つ装置情報ファイルを参照したり、エージェントプラットフォームが提供するサービスを利用したりすることにより行う。
【０１８２】
探索条件を満たす場合（ステップ１０１のＹＥＳ）、移動エージェント４０の発信元の情報処理装置からジョブが送信されるまでの間に滞在先の情報処理装置の計算資源が使われないよう、予め定められた量の計算資源を予約し（ステップ１０２）、発信元の情報処理装置に対して発見通知を送信する（ステップ１０３）。なお計算資源の量は、上記探索条件４２で設定された量としてもよい。
【０１８３】
発信通知を送信すると、エージェントプログラム４７は、当該滞在先の情報処理装置を分散処理に利用するか否かを示す、発信元の情報処理装置からの応答パケットを待つ（ステップ１０４）。このとき、一定時間応答パケットが届かない場合には、エージェントプログラム４７は、上記計算資源の予約を解除し、処理を終了するようにしてもよい。
【０１８４】
応答パケットを受信すると（ステップ１０４のＹＥＳ）、応答パケットに含まれるデータの内容から、発信元の情報処理装置が、移動エージェント４０の滞在先の情報処理装置を分散処理に利用するか否かを判定する（ステップ１０５）。利用しない場合（ステップ１０５のＮＯ）には計算資源の予約を解除して終了し（ステップ１０６）、利用する場合（ステップ１０５のＹＥＳ）には計算資源を予約したまま終了する。
【０１８５】
滞在先の情報処理装置が上記探索条件４２を満たさない場合には、エージェントプログラム４７は、自身の生存時間４３が経過したか否かを確認する（ステップ１０７）。経過していた場合（ステップ１０７のＹＥＳ）には処理を終了し、経過してない場合（ステップ１０７のＮＯ）には、次の情報処理装置へ移動するため、ネットワーク９の情報を取得する（ステップ１０８）。そして、当該取得した情報を基に、移動範囲４４内で未到達の情報処理装置が有るか否かを確認し（ステップ１０９）、既に移動範囲４４内の情報処理装置を全て移動していた場合（ステップ１０９のＮＯ）には処理を終了する。
【０１８６】
移動範囲内４４で未到達の情報処理装置が存在する場合（ステップ１０９のＹＥＳ）には、移動履歴４９に次に移動する情報処理装置のＩＰアドレスを追加して（ステップ１１０）、当該次の情報処理装置に自身を送信する（ステップ１１１）。
【０１８７】
次の移動先の情報処理装置のエージェントプラットフォーム上でも上記と同様の処理が行われる。
【０１８８】
なお、上記移動範囲内か否かを判定する際には、上述したように各情報処理装置のＩＰアドレスを参照する。図１４は、移動エージェント４０の移動範囲の例を示した図である。
【０１８９】
同図においては、移動エージェントは情報処理装置１から発信されており、ＩＰアドレスの上位２４ｂｉｔが１９２．１６８．０（１９２．１６８．０．Ｘ、０≦Ｘ≦２５５）という条件が与えられているため、移動エージェントが情報処理装置１から移動できる範囲は、情報処理装置２及び３までである。従って、上記ステップ１０９において、まだ移動していない情報処理装置が、情報処理装置４や５のようにＩＰアドレスの上位２４ｂｉｔが１９２．１６８．０でない装置しかないことが確認された場合には、移動エージェント４０はそれ以上移動することなく処理を終了する。
【０１９０】
図１５は、移動エージェント４０が発信されてからジョブが実行されるまでに各情報処理装置間でやり取りされる情報の流れを示したシーケンス図である。同図においては、情報処理装置１が移動エージェント４０を情報処理装置２へ送信した場合の情報処理装置１、２及び３における情報の流れを示している。また、情報処理装置２は情報処理装置１が設定した探索条件４２を満たさず、情報処理装置３は当該探索条件を満たすものとする。
【０１９１】
同図に示すように、まず、情報処理装置１のエージェントプラットフォーム３１は、移動エージェント４０を生成して、情報処理装置２へ発信する（ステップ１２１）。情報処理装置２のエージェントプラットフォーム３２は移動エージェント４０を受信して、認証後、エージェントプログラム４７を実行する。エージェントプログラム４７は、情報処理装置２の装置情報を取得して、探索条件４２を満たすか否かを判定する。この場合情報処理装置２は探索条件４２を満たさないため、エージェントプログラム４７は移動先の情報処理装置を探す。この場合は上記移動範囲内の情報処理装置３が選択されたものとし、エージェントプログラム４７は移動エージェント４０を情報処理装置３へ送信する（ステップ１２２）。
【０１９２】
情報処理装置３のエージェントプラットフォーム３３は、移動エージェント４０を受信し、認証後、エージェントプログラム４７を実行する。エージェントプログラム４７は、情報処理装置３の装置情報を取得して、探索条件４２を満たすか否かを判定する。この場合情報処理装置３は探索条件４２を満たすため、エージェントプログラム４７は情報処理装置３の計算資源を予約し、情報処理装置１に対して発見通知を送信する（ステップ１２３）。
【０１９３】
発見通知を受信した情報処理装置１は、情報処理装置３を分散処理に利用する旨を移動エージェント４０へ応答する（ステップ１２４）。当該応答を受信した移動エージェント４０は、上記計算資源を予約したまま消滅する。そして情報処理装置１は、情報処理装置３へジョブを送信する（ステップ１２５）。当該ジョブは上記ＤＭＡコマンドを含むソフトウェアセルにより送信される。例えば情報処理装置１、２及び３がハードディスクレコーダであった場合には、番組記録要求コマンドを含むソフトウェアセルが情報処理装置１から情報処理装置３へ送信される。
【０１９４】
情報処理装置３へ送信されたジョブは分散処理システムの機構により情報処理装置３で実行され、その実行結果が情報処理装置１へ送信される（ステップ１２６）。当該実行結果もソフトウェアセルで送信され、例えば上記ハードディスクレコーダの場合には番組記録応答コマンドを含むソフトウェアセルが送信される。
【０１９５】
以上説明したように、本実施形態によれば、各情報処理装置が生成及び発信した移動エージェント４０が、自身に設定された探索条件４２を基に、ジョブを実行可能な情報処理装置を自動的に探索して発信元の情報処理装置へ通知するため、各情報処理装置の装置情報を、通信トラフィックを生じさせること無く効率良く取得して、分散処理システムを円滑に稼動させることができる。
【０１９６】
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【０１９７】
上述の実施形態においては、上記探索条件４２としてプロセッサ動作周波数及び未使用プロセッサ数を指定し、また移動範囲４４としてＩＰアドレスを指定していたが、探索条件４２及び移動範囲４４はこれらに限られるものではない。以下、本発明の他の実施形態について説明する。
【０１９８】
図１６は、本発明の他の実施形態における移動エージェント４０を示した図である。同図に示すように、本実施形態においては、探索条件４２として、プロセッサ使用率及び空きメモリ量を指定しており、例えばプロセッサ使用率が３０％以下で、空きメモリ量が１２８ＭＢ以上の情報処理装置が探索される。
【０１９９】
また、移動範囲４４としては、移動エージェント４０の発信元の情報処理装置から移動エージェント４０の滞在先の情報処理装置までの間に存在する情報処理装置の数、及び発信元の情報処理装置までの通信時間が指定されている。
【０２００】
上記発信元の情報処理装置から移動エージェント４０の滞在先の情報処理装置までの間に存在する情報処理装置の数は、例えばｈｏｐ数で表すことができる。ｈｏｐ数とはパケットが宛先に到達するまでに経由する装置の数を示すもので、発信元から宛先に直接届く場合のｈｏｐ数は１であり、"１ｈｏｐで届く"のように表現する。同図の例では、発信元から３ｈｏｐで届く範囲、すなわち発信元の情報処理装置から滞在先の情報処理装置までの間に存在する情報処理装置の数が３台である範囲が指定されている。
【０２０１】
また上記発信元の情報処理御装置までの通信時間は、ＩＣＭＰを用いることにより計測することができる。ＩＣＭＰは、ＴＣＰ／ＩＰパケットの転送中において発生した各種のエラーの通知や、動作の確認（Ｅｃｈｏ検査）等を行なうために利用される制御用プロトコルである。同図の例では、発信元の情報処理装置までの通信時間が１０ｍｓまでの範囲が指定されている。
【０２０２】
図１７は、本実施形態における移動エージェント４０の移動範囲４４の例を示した図である。同図に示すように、情報処理装置１から発信された移動エージェント４０が移動できる範囲を判断する際には、まず情報処理装置１からのｈｏｐ数を確認する。移動エージェント４０が情報処理装置４に滞在する場合には、ｈｏｐ数は２であるため、ｈｏｐ数３という上記条件を満たすことになる。そして、もう一つの条件である通信時間を計測する。具体的には、移動エージェント４０は、例えば情報処理装置４へ移動すると、上記ＩＣＭＰのＥｃｈｏ要求を情報処理装置１へ送信し、情報処理装置１からＥｃｈｏ応答が返ってきた時間から通信時間を求めて、移動範囲内にあるか否かを確認する。仮に、移動エージェント４０が情報処理装置４から送信したＥｃｈｏ要求及びそのＥｃｈｏ応答により、情報処理装置１との通信時間が２０ｍｓであった場合には、上記１０ｍｓという条件を満たさないため、移動エージェント４０は情報処理装置２へ戻って、再度移動範囲内の情報処理装置を選択する（例えば情報処理装置３）。
【０２０３】
次に、本実施形態におけるエージェントプログラム４７の動作について説明する。図１８は、当該動作の流れを示したフローチャートである。同図において、上記図１３と同様の処理となる箇所については説明を省略または簡略化する。
【０２０４】
まず、エージェントプログラム４７は、ある情報処理装置に移動すると、上記ｈｏｐ数及び通信時間を計測して（ステップ２０１）、自身が移動範囲内にあるか否かを確認する（ステップ２０２）。移動範囲内に無かった場合（ステップ２０２のＮＯ）には、エージェントプログラム４７は実行を終了して、前に滞在していた情報処理装置へ戻り、他に移動範囲内の情報処理装置がある場合には当該情報処理装置へ移動し、無い場合には処理を終了する。
【０２０５】
移動範囲内にあった場合（ステップ２０２のＹＥＳ）には、上記プロセッサ使用率及び空きメモリ量の探索条件４２を満たすか否かを判定し（ステップ２０３）、探索条件４２を満たす場合（ステップ２０３のＹＥＳ）には、上記図１３のステップ１０２〜１０６と同様の処理が行われる（ステップ２０４〜２０８）。
【０２０６】
探索条件４２を満たさなかった場合（ステップ２０３のＮＯ）には、自身の生存時間を確認し（ステップ２０９）、生存時間内である場合（ステップ２０９）には次に移動すべき情報処理装置を選択して当該選択された情報処理装置のＩＰアドレスを移動履歴４９に追加して（ステップ２１０）、自身を当該選択された情報処理装置へ送信する。移動後は以上の処理が繰り返される。
【０２０７】
なお、上記探索条件４２としては、上述した以外にも、メモリの総容量、外部記憶部の容量、通信性能、情報処理装置が持つプログラム等、様々なパラメータを指定することができる。
【０２０８】
また、本実施形態においては、上記移動範囲４４は、上記ｈｏｐ数と通信時間とのＡＮＤ条件を指定していたが、もちろんそれらのＯＲ条件で指定するものであっても構わない。
【０２０９】
上記実施形態においては、移動エージェントの認証は、移動エージェントを受信した情報処理装置のエージェントプラットフォームが行っていたが、例えばネットワーク９上に認証サーバを設けておき、移動エージェント４０を受信した情報処理装置が当該認証サーバに電子署名４１や発信元ＩＤ４５を送信して、当該認証サーバから認証結果を受信することで実現しても構わない。
【０２１０】
また、上記実施形態においては、移動エージェント４０の受付許可／禁止の判定に必要な、発信元の情報処理装置に関する情報は、当該移動エージェントを受信した情報処理装置が予め保持していたが、特定の管理サーバをネットワーク９上に設けて、当該管理サーバから判定に必要な情報を取得するようにしてもよい。
【０２１１】
更に、上記認証サーバと管理サーバとを組み合わせて、移動エージェント発信元の認証と移動エージェントの受付許可判定を認証管理サーバが行い、その結果をエージェントプラットフォームが受信するようにしても構わない。
【図面の簡単な説明】
【０２１２】
【図１】本発明の一実施形態において前提となるシステムの構成を示した図である。
【図２】情報処理装置が備える情報処理コントローラの説明に供する図である。
【図３】ソフトウェアセルの一例を示す図である。
【図４】ＤＭＡコマンドがステータス返信コマンドである場合のソフトウェアセルのデータ領域を示す図である。
【図５】複数の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図６】情報処理コントローラのソフトウェア構成の一例を示す図である。
【図７】４台の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図８】図７のシステムにおける分散処理の例を示す図である。
【図９】本発明の一実施形態におけるシステムの構成を示した図である。
【図１０】本発明の一実施形態における移動エージェントを示した図である。
【図１１】情報処理装置が移動エージェント４０を発信してから他の情報処理装置へジョブを送信するまでの動作の流れを示したフローチャートである。
【図１２】移動エージェント４０を受信したエージェントプラットフォームの動作の流れを示したフローチャートである。
【図１３】エージェントプログラム４７が滞在先のエージェントプラットフォーム上で実行する処理の流れを示したフローチャートである。
【図１４】移動エージェント４０の移動範囲の例を示した図である。
【図１５】移動エージェント４０が発信されてからジョブが実行されるまでに各情報処理装置間でやり取りされる情報の流れを示したシーケンス図である。
【図１６】本発明の他の実施形態における移動エージェント４０を示した図である。
【図１７】本発明の他の実施形態における移動エージェント４０の移動範囲の例を示した図である。
【図１８】本発明の他の実施形態におけるエージェントプログラム４７の処理の流れを示したフローチャートである。
【符号の説明】
【０２１３】
１、２、３…情報処理装置
９…ネットワーク
４０…移動エージェント
４１…電子署名
４２…探索条件
４３…生存時間
４４…移動範囲
４５…発信元ＩＤ
４６…エージェントＩＤ
４７…エージェントプログラム
４８…データ
４９…移動履歴
【図１】
2006048290.tif 000003
【図２】
2006048290.tif 000004
【図３】
2006048290.tif 000005
【図４】
2006048290.tif 000006
【図５】
2006048290.tif 000007
【図６】
2006048290.tif 000008
【図７】
2006048290.tif 000009
【図８】
2006048290.tif 000010
【図９】
2006048290.tif 000011
【図１０】
2006048290.tif 000012
【図１１】
2006048290.tif 000013
【図１２】
2006048290.tif 000014
【図１３】
2006048290.tif 000015
【図１４】
2006048290.tif 000016
【図１５】
2006048290.tif 000017
【図１６】
2006048290.tif 000018
【図１７】
2006048290.tif 000019
【図１８】
2006048290.tif 000020