(57)【要約】【課題】  各機器状態やネットワーク環境の変化を考慮した分散処理を可能にする。【解決手段】  分散正当性判断部６４−１は、機能格納部６１−１に格納されている実行対象の機能の機能情報および機器情報格納部６２−１に格納されている自機器１と周辺機器２との機器情報から、自機器１や周辺機器２の略現時点のハードウエア条件や、実行対象の略現時点のソフトウエア条件を認識する。そして、分散正当性判断部６４−１は、認識された各条件、分散機器検索部６３−１による算出された通信インフラの略現時点の帯域等に基づいて、自機器１と周辺機器２とによる実行対象の分散処理の正当性を判断し、正当性があると判断した場合、その機能を構成する各機能要素のそれぞれを、自機器１と周辺機器２とのうちのいずれかに割り振る。本発明は、複数の情報処理装置で分散処理を行う情報処理システムに適用可能である。【選択図】  図２
2006092432.tif 000002
【特許請求の範囲】
【請求項１】
所定の通信インフラを用いて周辺機器と通信を行うことで、前記周辺機器と協調動作して所定の機能の分散処理を実行する情報処理装置において、
ソフトウエアとしての複数の機能要素から構成される機能を実行対象として、前記情報処理装置自身と前記周辺機器のそれぞれが略現時点で要求しているハードウエア条件、前記実行対象が略現時点で要求しているソフトウエア条件、および、前記通信インフラの略現時点の帯域に基づいて、前記情報処理装置自身と前記周辺機器とによる前記実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、前記実行対象を構成する複数の前記機能要素のそれぞれの処理を、前記情報処理装置自身と前記周辺機器のうちのいずれかに割り振る正当性判断手段と、
前記正当性判断手段により正当性がないと判断された場合、前記実行対象を自分自身で実行し、前記正当性判断手段により正当性があると判断された場合、前記実行対象を構成する複数の前記機能要素のうちの、前記正当性判断手段により前記情報処理装置自身に割り振られた第１の機能要素を自分自身で実行し、前記正当性判断手段により前記周辺機器に割り振られた第２の機能要素を前記周辺機器に実行させる制御を行い、前記第１の機能要素と前記第２の機能要素とのそれぞれの実行結果を合成することで、前記実行対象の分散処理を実行する機能実行手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記通信インフラを用いて通信を行うことが可能な他の情報処理装置の中から、前記実行対象を構成する複数の前記機能要素のうちの少なくとも１つを保有し、かつ、略現在それを実行可能な他の情報処理装置を前記周辺機器として検索する検索手段をさらに備え、
前記正当性判断手段は、前記情報処理装置自身と前記検索手段により検索された前記周辺機器とによる前記実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、前記実行対象を構成する複数の前記機能要素のうちの、前記周辺機器が略現在実行可能な機能要素を前記第２の機能要素として前記周辺機器に割り当て、それ以外の機能要素を前記第１の機能要素として前記情報処理装置自身に割り当てる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
所定の通信インフラを用いて周辺機器と通信を行うことで、前記周辺機器と協調動作して所定の機能の分散処理を実行する情報処理装置の情報処理方法において、
ソフトウエアとしての複数の機能要素から構成される機能を実行対象として、前記情報処理装置自身と前記周辺機器のそれぞれが略現時点で要求しているハードウエア条件、前記実行対象が略現時点で要求しているソフトウエア条件、および、前記通信インフラの略現時点の帯域に基づいて、前記情報処理装置自身と前記周辺機器とによる前記実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、前記実行対象を構成する複数の前記機能要素のそれぞれの処理を、前記情報処理装置自身と前記周辺機器のうちのいずれかに割り振る正当性判断ステップと、
前記正当性判断ステップの処理により正当性がないと判断された場合、前記実行対象を前記情報処理装置自身に実行させる制御を行い、前記正当性判断手段により正当性があると判断された場合、前記実行対象を構成する複数の前記機能要素のうちの、前記正当性判断ステップの処理により前記情報処理装置自身に割り振られた第１の機能要素を前記情報処理装置自身に実行させる制御を行い、前記正当性判断ステップの処理により前記周辺機器に割り振られた第２の機能要素を前記周辺機器に実行させる制御を行い、前記第１の機能要素と前記第２の機能要素とのそれぞれの実行結果を合成することで、前記実行対象の分散処理の実行を制御する機能実行制御ステップと
を含むことを特徴とする情報処理方法。
【請求項４】
所定の通信インフラを用いて周辺機器と通信を行うことで、前記周辺機器と協調動作して所定の機能の分散処理を実行する主装置と、前記周辺機器とを制御するコンピュータに実行させるプログラムであって、
ソフトウエアとしての複数の機能要素から構成される機能を実行対象として、前記主装置と前記周辺機器のそれぞれが略現時点で要求しているハードウエア条件、前記実行対象が略現時点で要求しているソフトウエア条件、および、前記通信インフラの略現時点の帯域に基づいて、前記主装置と前記周辺機器とによる前記実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、前記実行対象を構成する複数の前記機能要素のそれぞれの処理を、前記主装置と前記周辺機器のうちのいずれかに割り振る正当性判断ステップと、
前記正当性判断ステップの処理により正当性がないと判断された場合、前記実行対象を前記主装置に実行させる制御を行い、前記正当性判断手段により正当性があると判断された場合、前記実行対象を構成する複数の前記機能要素のうちの、前記正当性判断ステップの処理により前記主装置に割り振られた第１の機能要素を前記主装置に実行させる制御を行い、前記正当性判断ステップの処理により前記周辺機器に割り振られた第２の機能要素を前記周辺機器に実行させる制御を行い、前記第１の機能要素と前記第２の機能要素とのそれぞれの実行結果を合成することで、前記実行対象の分散処理の実行を制御する機能実行制御ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法並びにプログラムに関し、特に、分散機器の状態変化やネットワークの環境変化を考慮した分散処理ができる情報処理装置および方法並びにプログラムに関する。
【背景技術】
【０００２】
近年、グリッドコンピューティングが注目されている。グリッドコンピューティングとは、ネットワークにつながる複数の情報処理装置を協調動作させて高い演算性能を実現する技術である。この技術は例えば、特許文献１乃至５に開示されている。
【０００３】
この技術を利用することで、複数の情報処理装置による分散処理が容易に実現可能になる。
【特許文献１】特開２００２−３４２１６５号公報
【特許文献２】特開２００２−３５１８５０号公報
【特許文献３】特開２００２−３５８２８９号公報
【特許文献４】特開２００２−３６６５３３号公報
【特許文献５】特開２００２−３６６５３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１乃至５等の従来の技術を単体または組合せで利用して分散処理が実行される場合、分散機器の現在の状態を把握することなく、かつ、その実行環境のネットワークとの距離や現在の状態に関わらず、動作可能と仮定された分散機器が実行対象機器として固定されて利用されることになる。
【０００５】
このため、固定された分散機器の現在の状態やネットワークの現在の環境によっては、分散処理のリアルタイム性が保たれないばかりか、最悪、分散処理の実行が不可能になる恐れがある、という課題があった。換言すると、従来、分散機器の状態変化やネットワークの環境変化を考慮しない分散処理が行われていた、という課題があった。
【０００６】
本発明は、このような状況に鑑みてなされたものであり、分散機器の状態変化やネットワークの環境変化を考慮した分散処理ができるようにするものである。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、所定の通信インフラを用いて周辺機器と通信を行うことで、周辺機器と協調動作して所定の機能の分散処理を実行する情報処理装置である。詳細には、本発明の情報処理装置は、ソフトウエアとしての複数の機能要素から構成される機能を実行対象として、情報処理装置自身と周辺機器のそれぞれが略現時点で要求しているハードウエア条件、実行対象が略現時点で要求しているソフトウエア条件、および、通信インフラの略現時点の帯域に基づいて、情報処理装置自身と周辺機器とによる実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、実行対象を構成する複数の機能要素のそれぞれの処理を、情報処理装置自身と周辺機器のうちのいずれかに割り振る正当性判断手段と、正当性判断手段により正当性がないと判断された場合、実行対象を自分自身で実行し、正当性判断手段により正当性があると判断された場合、実行対象を構成する複数の機能要素のうちの、正当性判断手段により情報処理装置自身に割り振られた第１の機能要素を自分自身で実行し、正当性判断手段により周辺機器に割り振られた第２の機能要素を周辺機器に実行させる制御を行い、第１の機能要素と第２の機能要素とのそれぞれの実行結果を合成することで、実行対象の分散処理を実行する機能実行手段とを備えることを特徴とする。
【０００８】
通信インフラを用いて通信を行うことが可能な他の情報処理装置の中から、実行対象を構成する複数の機能要素のうちの少なくとも１つを保有し、かつ、略現在それを実行可能な他の情報処理装置を周辺機器として検索する検索手段をさらに設け、正当性判断手段は、情報処理装置自身と検索手段により検索された周辺機器とによる実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、実行対象を構成する複数の機能要素のうちの、周辺機器が略現在実行可能な機能要素を第２の機能要素として周辺機器に割り当て、それ以外の機能要素を第１の機能要素として情報処理装置自身に割り当てるようにすることができる。
【０００９】
本発明の情報処理方法は、所定の通信インフラを用いて周辺機器と通信を行うことで、周辺機器と協調動作して所定の機能の分散処理を実行する情報処理装置の情報処理方法である。詳細には、本発明の情報処理方法は、ソフトウエアとしての複数の機能要素から構成される機能を実行対象として、情報処理装置自身と周辺機器のそれぞれが略現時点で要求しているハードウエア条件、実行対象が略現時点で要求しているソフトウエア条件、および、通信インフラの略現時点の帯域に基づいて、情報処理装置自身と周辺機器とによる実行対象の分散処理の実行について正当性を判断し、正当性があると判断した場合、実行対象を構成する複数の機能要素のそれぞれの処理を、情報処理装置自身と周辺機器のうちのいずれかに割り振る正当性判断ステップと、正当性判断ステップの処理により正当性がないと判断された場合、実行対象を情報処理装置自身に実行させる制御を行い、正当性判断手段により正当性がないと判断された場合、実行対象を構成する複数の機能要素のうちの、正当性判断ステップの処理により情報処理装置自身に割り振られた第１の機能要素を情報処理装置自身に実行させる制御を行い、正当性判断ステップの処理により周辺機器に割り振られた第２の機能要素を周辺機器に実行させる制御を行い、第１の機能要素と第２の機能要素とのそれぞれの実行結果を合成することで、実行対象の分散処理の実行を制御する機能実行制御ステップとを含むことを特徴とする。
【００１０】
本発明のプログラムは、所定の通信インフラを用いて周辺機器と通信を行うことで、周辺機器と協調動作して所定の機能の分散処理を実行する主装置と、周辺機器とを制御するコンピュータに実行させるプログラムである。詳細には、本発明のプログラムは、ソフトウエアとしての複数の機能要素から構成される機能を実行対象として、主装置と周辺機器のそれぞれが略現時点で要求しているハードウエア条件、実行対象が略現時点で要求しているソフトウエア条件、および、通信インフラの略現時点の帯域に基づいて、主装置と周辺機器とによる実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、実行対象を構成する複数の機能要素のそれぞれの処理を、主装置と周辺機器のうちのいずれかに割り振る正当性判断ステップと、正当性判断ステップの処理により正当性がないと判断された場合、実行対象を主装置に実行させる制御を行い、正当性判断手段により正当性がないと判断された場合、実行対象を構成する複数の機能要素のうちの、正当性判断ステップの処理により主装置に割り振られた第１の機能要素を主装置に実行させる制御を行い、正当性判断ステップの処理により周辺機器に割り振られた第２の機能要素を周辺機器に実行させる制御を行い、第１の機能要素と第２の機能要素とのそれぞれの実行結果を合成することで、実行対象の分散処理の実行を制御する機能実行制御ステップとを含むことを特徴とする。
【００１１】
本発明の情報処理装置および方法、並びにプログラムにおいては、所定の通信インフラを用いて周辺機器と通信が行われることで、周辺機器と協調動作して所定の機能の分散処理が実行される。詳細には、ソフトウエアとしての複数の機能要素から構成される機能が実行対象とされて、情報処理装置自身または主装置自身（以下、情報処理装置のみを記述すると周辺機器のそれぞれが略現時点で要求しているハードウエア条件、実行対象が略現時点で要求しているソフトウエア条件、および、通信インフラの略現時点の帯域に基づいて、情報処理装置自身と周辺機器とによる実行対象の分散処理の実行についての正当性が判断される。正当性がないと判断された場合、実行対象が情報処理装置自身単体により実行される。これに対して、正当性があると判断された場合、上述した略現時点のハードウエアおよびソフトウエア条件並びに通信インフラの略現在の帯域に基づいて、実行対象を構成する複数の機能要素のそれぞれの処理が、情報処理装置自身と周辺機器のうちのいずれかに割り振られ、情報処理装置自身に割り振られた第１の機能要素が情報処理装置自身により実行され、周辺機器に割り振られた第２の機能要素が周辺機器により実行され、第１の機能要素と第２の機能要素とのそれぞれの実行結果が合成されることで、実行対象の分散処理が実行される。
【発明の効果】
【００１２】
以上のごとく、本発明によれば、所定の機能の分散処理が可能になる。特に、分散機器の状態変化やネットワークの環境変化を考慮した分散処理が可能になる。
【発明を実施するための最良の形態】
【００１３】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００１４】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
【００１５】
本発明によれば、情報処理装置が提供される。この情報処理装置（例えば、図１の情報処理装置１や２）は、所定の通信インフラ（例えば、図１のネットワーク３を含む通信インフラ）を用いて周辺機器（例えば、図１の情報処理装置１に着目している場合には情報処理装置２であり、情報処理装置２に着目している場合には情報処理装置１である）と通信を行うことで、前記周辺機器と協調動作して所定の機能の分散処理を実行する情報処理装置である。詳細にはこの情報処理装置は、ソフトウエアとしての複数の機能要素から構成される機能（例えば、図３の機能要素A,B,C,Dから構成される機能Pや、機能要素A,D,E,Fから構成される機能Q）を実行対象として、前記情報処理装置自身と前記周辺機器のそれぞれが略現時点で要求しているハードウエア条件、前記実行対象が略現時点で要求しているソフトウエア条件（例えば、これらのハードウエア条件やソフトウエア条件として、図１１の情報処理装置１の機器情報、図１２の情報処理装置２の機器情報、および、図１３の機能Qの機能情報のそれぞれの各項目のうちの少なくとも１つの記述値が利用可能である）、および、前記通信インフラの略現時点の帯域（例えば、図４のステップＳ４の算出値であり、算出方法の具体例については後述する）に基づいて、前記情報処理装置自身と前記周辺機器とによる前記実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、前記実行対象を構成する複数の前記機能要素のそれぞれの処理を、前記情報処理装置自身と前記周辺機器のうちのいずれかに割り振る正当性判断手段（例えば、図１の情報処理コントローラ１１−１または１１−２に設けられる図２の分散正当性判断部６４−１または６４−２）と、前記正当性判断手段により正当性がないと判断された場合、前記実行対象を自分自身で実行し、前記正当性判断手段により正当性があると判断された場合、前記実行対象を構成する複数の前記機能要素のうちの、前記正当性判断手段により前記情報処理装置自身に割り振られた第１の機能要素を自分自身で実行し、前記正当性判断手段により前記周辺機器に割り振られた第２の機能要素を前記周辺機器に実行させる制御を行い、前記第１の機能要素と前記第２の機能要素とのそれぞれの実行結果を合成することで、前記実行対象の分散処理を実行する機能実行手段（例えば、図１の情報処理コントローラ１１−１または１１−２に設けられる図２の分散機能実行部６５−１または６５−２）とを備えることを特徴とする。
【００１６】
この情報処理装置（例えば、図１と図２の情報処理装置２）は、前記通信インフラを用いて通信を行うことが可能な他の情報処理装置の中から、前記実行対象を構成する複数の前記機能要素のうちの少なくとも１つを保有し、かつ、略現在それを実行可能な他の情報処理装置（例えば、図３の機能Qに含まれる機能要素A,D,E,Fのうちの機能要素A,Dを含む機能Pを保有する情報処理装置１）を前記周辺機器として検索する検索手段（例えば、図１の情報処理コントローラ１１−１または１１−２に設けられる図２の分散機器検索部６３−１または６３−２）をさらに設け、前記正当性判断手段は、前記情報処理装置自身と前記検索手段により検索された前記周辺機器とによる前記実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、前記実行対象を構成する複数の前記機能要素のうちの、前記周辺機器が略現在実行可能な機能要素を前記第２の機能要素として前記周辺機器に割り当て、それ以外の機能要素を前記第１の機能要素として前記情報処理装置自身に割り当てる（例えば、図１４に示されるように、機能Qに含まれる機能要素A,D,E,Fのうちの、機能要素A,Dを情報処理装置（周辺機器）１に割り当て、機能要素E,Fを情報処理装置２自身に割り当てる）ようにすることができる。
【００１７】
本発明によれば、情報処理方法が提供される。この情報処理方法は、所定の通信インフラ（例えば、図１のネットワーク３を含む通信インフラ）を用いて周辺機器（例えば、図１の情報処理装置１に着目している場合には情報処理装置２であり、情報処理装置２に着目している場合には情報処理装置１である）と通信を行うことで、前記周辺機器と協調動作して所定の機能の分散処理を実行する情報処理装置（例えば、図１の情報処理装置１や２）の情報処理方法である。詳細には、この情報処理方法は、ソフトウエアとしての複数の機能要素から構成される機能を実行対象として、前記情報処理装置自身と前記周辺機器のそれぞれが略現時点で要求しているハードウエア条件、前記実行対象が略現時点で要求しているソフトウエア条件、および、前記通信インフラの略現時点の帯域に基づいて、前記情報処理装置自身と前記周辺機器とによる前記実行対象の分散処理の実行についての正当性を判断し、正当性があると判断した場合、前記実行対象を構成する複数の前記機能要素のそれぞれの処理を、前記情報処理装置自身と前記周辺機器のうちのいずれかに割り振る正当性判断ステップ（例えば、図４の「分散準備処理」のうちのステップＳ７以降の処理）と、前記正当性判断ステップの処理により正当性がないと判断された場合、前記実行対象を前記情報処理装置自身に実行させる制御を行い、前記正当性判断手段により正当性があると判断された場合、前記実行対象を構成する複数の前記機能要素のうちの、前記正当性判断ステップの処理により前記情報処理装置自身に割り振られた第１の機能要素を前記情報処理装置自身に実行させる制御を行い、前記正当性判断ステップの処理により前記周辺機器に割り振られた第２の機能要素を前記周辺機器に実行させる制御を行い、前記第１の機能要素と前記第２の機能要素とのそれぞれの実行結果を合成することで、前記実行対象の分散処理の実行を制御する機能実行制御ステップ（例えば、図６と図７の「実行元による機能実行処理」）とを含むことを特徴とする。
【００１８】
本発明よれば、プログラムが提供される。このプログラムは、上述した本発明の情報処理方法に対応するプログラムであって、例えば図１の情報処理コントローラ１１−１や１１−２等のコンピュータにより実行されるプログラムである。なお、この本発明のプログラムで言う主装置とは、上述した本発明の情報処理方法で言う情報処理装置に対応する。
【００１９】
さらに本発明によれば、当然ながら、上述した本発明のプログラムが記録された記録媒体も提供される。
【００２０】
次に、図面を参照して、本発明の実施の形態について説明する。
【００２１】
図１は、本発明が適用される情報処理システムの構成例を示している。換言すると、図１は、本発明が適用されるＮ個（Ｎは、１以上の任意の整数値である。ただし図１の例では２とされている）の情報処理装置からなる情報処理システムの構成例を示している。
【００２２】
図１に示されるように、この情報処理システムは、情報処理装置１，２のそれぞれが所定のネットワーク３を介して相互に接続されることで構成されている。
【００２３】
以下、係る情報処理装置１，２のハードウエア構成例について説明していく。はじめに、情報処理装置１のハードウエア構成例について説明する。
【００２４】
情報処理装置１は、情報処理コントローラ１１−１、ネットワークインタフェース１２−１、メインメモリ１３−１、記憶装置１４−１、および、ドライブ１５−１を含むように構成される。
【００２５】
情報処理コントローラ１１−１は、メインメモリ１３−１や記憶装置１４−１に記憶された各種のプログラムを実行し、情報処理装置１全体を制御する。
【００２６】
情報処理コントローラ１１−１は、メインプロセスユニット（MPU ： Main Processing Unit）２１−１、および、サブプロセスユニット（SPU : Sub Processing Unit）３１−１乃至３３−１のそれぞれがバス５１−１を介して相互に接続されることで構成されている。
【００２７】
MPU２１−１には、専用のメモリ２２−１が接続されている。従って、MPU２１−１は、メインメモリ１３−１等からロードしたデータやプログラムを、メモリ２２−１に一時的に記憶させることができる。そして、MPU２１−１は、メモリ２２−１からデータやプログラムを読み出し、それらのデータやプログラムに基づいて各種処理を実行することができる。
【００２８】
例えばMPU２１−１は、SPU３１−１乃至３３−１によるプログラムの実行のスケジュール管理、および、情報処理コントローラ１１−１（情報処理装置１）全体の管理を行うための各種処理を実行することができる。
【００２９】
また例えば、MPU２１−１は、分散処理を実行する他の情報処理装置の管理を行うための各種処理を実行することができる。ここで言う他の情報処理装置とは、図１の例では、情報処理装置２が該当する
【００３０】
このように、MPU２１−１は、管理のためのプログラムを実行するように構成されていると言える。ただし、MPU２１−１は、管理のためのプログラム以外のプログラムを実行するように構成することもできる。この場合、MPU２１−１はSPUとして機能する。
【００３１】
SPU３１−１乃至３３−１のそれぞれは、MPU２１−１の制御に基づいて、並列的かつ独立にプログラムを実行してデータを処理する。さらに、必要に応じて、MPU２１−１が実行するプログラムが、SPU３１−１乃至３３−１のそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能である。
【００３２】
SPU３１−１乃至３３−１のそれぞれには、専用のメモリ４１−１乃至４３−１のそれぞれが接続されている。従って、SPU３１−１乃至３３−１のそれぞれは、自分自身専用のメモリ４１−１乃至４３−１のそれぞれに対して、データやプログラムを必要に応じて一時的に記憶させることができる。そして、SPU３１−１乃至３３−１のそれぞれは、自分自身専用のメモリ４１−１乃至４３−１のそれぞれからデータやプログラムを読み出し、それらのデータやプログラムに基づいて各種の処理を実行することができる。
【００３３】
このように、図１の例では、情報処理装置１には３つのSPU３１−１乃至３３−１が設けられている。ただし当然ながら、SPUの個数は、図１の例に限定されず任意の個数で構わない。
【００３４】
係る構成の情報処理コントローラ１１−１には、ネットワークインタフェース１２−１、メインメモリ１３−１、記憶装置１４−１、およびドライブ１５−１が接続されている。より正確には図１の例では、情報処理コントローラ１１−１のうちの、MPU２１−１にはネットワークインタフェース１２−１およびメインメモリ１３−１が接続されており、バス５１−１には記憶装置１４−１およびドライブ１５−１が接続されている。
【００３５】
ネットワークインタフェース１２−１は、例えば、モデム、ターミナルアダプタ、無線通信機器等より構成される。係る構成のネットワークインタフェース１２−１は、ネットワーク３を介する他の情報処理装置との間の通信を制御する。ここで言う他の情報処理装置とは、図１の例では、情報処理装置２が該当する
【００３６】
メインメモリ１３−１は、例えばRAM（Random Access Memory）等により構成される。メインメモリ１３−１には、MPU２１−１およびSPU３１−１乃至３３−１のうちの少なくとも１つが実行する各種のプログラムや、それらの各種のプログラムの実行時に利用される若しくは生成される各種データが適宜記憶される。
【００３７】
記憶装置１４−１は、例えば、フラッシュメモリ、ハードディスクドライブ等の1以上の外部記憶装置により構成される。即ち、記憶装置１４−１は、複数個の外部記憶装置から構成されることも多々ある。記憶装置１４−１には、MPU２１−１およびSPU３１−１乃至３３−１のうちの少なくとも１つが実行する各種のプログラムや、それらの各種のプログラムの実行時に利用される若しくは生成される各種データが適宜記憶される。さらに、記憶装置１４−１には、情報処理コントローラ１１−１から供給されたデータ等、その他のデータも適宜記憶される。
【００３８】
ドライブ１５−１は、必要に応じてバス５１−１に接続される。ドライブ１５−１には、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどよりなるリムーバブル記録媒体１６−１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶装置１４−１やメインメモリ１３−１等にインストールされる。
【００３９】
以上、情報処理装置１の構成例について説明した。
【００４０】
情報処理装置２も、上述した情報処理装置１と基本的に同様の構成を有する。即ち、図１に示される情報処理装置２の各ブロックのそれぞれは、ハイフォン“−”の前の符号が同一の情報処理装置１のブロックに対応する。例えば、情報処理装置２の情報処理コントローラ１１−２は、情報処理装置１の情報処理コントローラ１１−１に対応する。このように、情報処理装置２は、情報処理装置１と基本的に同様の構成を有することから、情報処理装置１と基本的に同様の動作（処理）を行うことが当然ながらできる。
【００４１】
また、情報処理装置１，２のそれぞれは、上述した構成に限定されず、必要に応じて、各種機能を追加したり削除したりすることが可能であり、各種機能のそれぞれに対応した構成（ブロック等）をそれぞれもつことが可能である。
【００４２】
さらにまた、図１の例では、ネットワーク３には２台の情報処理装置１，２が接続されているが、ネットワーク３に接続される情報処理装置の台数は、図１の例に限定されず、任意の台数でよい。この場合、ネットワーク３に接続される図示せぬ他の情報処理装置は、情報処理装置１，２と基本的に同様の構成を有していると好適であるが、他の構成を有していても勿論よい。
【００４３】
係る図１の構成の情報処理装置１，２からなる情報処理システムは、上述したグリッドコンピューティングを実現することが可能である。即ち、例えば情報処理装置１，２は、ネットワーク３を含む通信インフラを利用して相互に通信を行うことで協調動作して、所定の機能を実現する分散処理を実行することができる。この場合、情報処理装置１，２のそれぞれは、例えば図２に示されるような機能的構成を有することができる。即ち、図２は、情報処理装置１，２からなる情報処理システムの機能的構成例を示している。
【００４４】
以下、情報処理装置１，２の機能的構成例について説明する。はじめに、情報処理装置１の機能的構成例について説明する。
【００４５】
メインメモリ１３−１には、機能格納部６１−１と機器情報格納部６２−１とが設けられている。
【００４６】
機能格納部６１−１には、１以上の機能プログラムが格納される。
【００４７】
機能プログラムとは、ユーザに提供する機能を実現するためのプログラムを指す。例えば、機能プログラムとしては、映像や音声の記録再生機能を実現するためのプログラムや、記録された映像データの中から所定の映像データを探すための検索機能を実現するためのプログラムが存在する。この機能プログラムは、主にSPU３１−１乃至３３−１のうちの少なくともひとつにより実行される。
【００４８】
機能格納部６１−１にはさらに、各機能プログラムのそれぞれの識別IDやバージョン、各機能プログラムのそれぞれが要求するソフトウエア条件等を含む情報（以下、機能情報と称する）も格納されている。
【００４９】
なお、以下、機能プログラムを、機能と単に称する。また、機能格納部６１−１に格納されている機能の具体例については、図３を参照して後述し、機能情報の具体例については、図１３を参照して後述する。
【００５０】
機器情報格納部６２−１には、情報処理装置１自身の特徴、性能、略現在の状態等を示す情報（以下、機器情報と称する）が格納される。略現在の状態の中には、略現在実行可能な機能も含む。即ち、具体例については図１１を参照して後述するが、情報処理装置１の機器情報には、情報処理装置１が要求しているハードウエア条件が主に含まれ、必要に応じて、略現在実行可能な機能が要求しているソフトウエア条件等他の情報も含まれる。
【００５１】
さらに機器情報格納部６２−１には、必要に応じて、他の情報処理装置の機器情報も格納されることもある。即ち、詳細については後述するが、図２の例では、機器情報格納部６２−１には、情報処理装置２の機器情報も格納されることがある。
【００５２】
なお、機能格納部６１−１と機器情報格納部６２−１とのそれぞれは、図１の例ではメインメモリ１３−１に設けられているが、必要に応じて、記憶装置１４−１等に設けられてもよい。この場合、機能格納部６１−１と機器情報格納部６２−１とは特に組になる必要は無い。即ち例えば、機能格納部６１−１と機器情報格納部６２−１とのうちの一方がメインメモリ１３−１に設けられ、他方が記憶装置１４−１に設けられてもよい。
【００５３】
情報処理コントローラ１１−１には、分散機器検索部６３−１乃至機器情報提供部６６−１が設けられている。
【００５４】
より正確には例えば、分散機器検索部６３−１乃至機器情報提供部６６−１のそれぞれはソフトウエアとして構成され、メインメモリ１３−１や記憶装置１４−１に格納されている。そこで、情報処理コントローラ１１−１は、分散機器検索部６３−１乃至機器情報提供部６６−１のそれぞれを必要に応じてメインメモリ１３−１や記憶装置１４−１からロードして、実行する。
【００５５】
分散機能実行部６５−１を除く分散機器検索部６３−１乃至機器情報提供部６６−１を実行するプロセッサは、主にMPU２１−１とされるが、SPU３１−１乃至３３−１とされてもよいし、或いは、MPU２１−１およびSPU３１−１乃至３３−１のうちの任意の数の任意の組合せとされてもよい。
【００５６】
同様に、分散機能実行部６５−１を実行するプロセッサは、主にSPU３１−１乃至３３−１のうちの１以上とされるが、MPU２１−１とされてもよいし、或いは、MPU２１−１およびSPU３１−１乃至３３−１のうちの任意の数の任意の組合せとされてもよい。例えば、所定の機能が情報処理装置１，２とで分散処理される場合、SPU３１−１乃至３３−１のうちの１以上は、その機能のうちの情報処理装置１に割り当てられた部分（後述する機能要素に対応）を実行し、かつ、MPU２１−１は、情報処理装置２に割り当てられた部分を情報処理装置２に実行させるための制御を行ったり、分散処理全体の管理を行うことで、分散機能実行部６５−１を実行してもよい。
【００５７】
分散機器検索部６３−１は、機能格納部６１−１に格納されている所定の機能が実行される場合、その機能の分散機器の候補となる周辺機器を検索する。なお、ここで言う分散機器とは、その機能の分散処理を負担させる機器を指す。また、ここで言う周辺機器とは、ネットワーク３に接続されている情報処理装置のうちの、情報処理装置１自身を除く他の情報処理装置を指す。従って、例えば図１と図２の例では、情報処理装置２が、周辺機器として分散機器検索部６３−１により検索されることになる。
【００５８】
従って、以下、情報処理装置１に着目して説明を行っている場合、情報処理装置１を自機器１と称し、情報処理装置２を周辺機器２と称する。逆に、情報処理装置２に着目して説明を行っている場合、情報処理装置２を自機器２と称し、情報処理装置１を周辺機器１と称する。
【００５９】
このとき、分散機器検索部６３−１は、周辺機器２の機器情報を取得し、機器情報格納部６２−１に格納する。
【００６０】
また、分散機器検索部６３−１は、自機器１と周辺機器２との間の通信インフラの略現在の帯域（略現在の通信速度）を算出する。
【００６１】
さらにまた必要に応じて、分散機器検索部６３−１は、検索された周辺機器が、実行対象の機能のうちの少なくとも一部分（後述する機能要素）を保有し、かつ、略現在それを実行可能な状態であるか否かを判定する。実行可能な状態とは、実行対象の機能のうちの少なくとも一部分が、メモリマップされたプログラム実行可能領域にロードされている状態を指す。メモリマップされたプログラム実行可能領域とは、例えば図１の例では、メモリ２２−１、メモリ４１−１乃至４３−１等の少なくとも一部の領域を指す。
【００６２】
そして、分散機器検索部６３−１は、上述した各種処理結果を分散正当性判断部６４−１に提供する。
【００６３】
なお、分散機器検索部６３−１は、ネットワーク３に接続された周辺機器を１つも検索できなかった場合、即ち、ネットワーク３に周辺機器が接続されていない場合、上述した各処理を特に行わずに、その時点で、「周辺機器が存在しない」という処理結果を分散正当性判断部６４−１に提供する。
【００６４】
分散正当性判断部６４−１は、分散機器検索部６３−１の処理結果が提供されると、自機器１と周辺機器２とで実行対象の機能の分散処理を実行することについての正当性を判断する。即ち、分散正当性判断部６４−１は、自機器１と周辺機器２とで実行対象の機能の分散処理を実行するのが妥当であるか否かを判断する。このとき、分散正当性判断部６４−１は、分散機器検索部６３−１の処理結果、例えば、分散機器検索部６３−１により算出された通信インフラの略現在の帯域を、その判断材料として利用することができる。さらに、分散正当性判断部６４−１は、機器情報格納部６２−１に格納されている自機器１自身と周辺機器２とのそれぞれの機器情報等を、その判断材料として利用することもできる。
【００６５】
分散正当性判断部６４−１は、自機器１と周辺機器２とで実行対象の機能の分散処理を行うことについて正当性がないと判断した場合、即ち、自機器１のみで実行対象の機能を実行すると判断した場合またはその実行自体を行わないと判断した場合、その判断結果を分散機能実行部６５−１に通知する。
【００６６】
これに対して、分散正当性判断部６４−１は、自機器１と周辺機器２とで実行対象の機能の分散処理を行うことについて正当性があると判断した場合、自機器１と周辺機器２とのそれぞれに対する機能の割り振りを行う。即ち、分散正当性判断部６４−１は、その機能のうちのどの部分の処理を自機器１で受け持たせ、また、どの部分の処理を周辺機器２で受け持たせるのかを決定する。このとき、分散正当性判断部６４−１は、機器情報格納部６２−１に格納されている自機器１自身と周辺機器２とのそれぞれの機器情報、および、分散機器検索部６３−１から提供された通信インフラの略現在の帯域等を、その割り振りの判断材料として必要に応じて利用することができる。
【００６７】
具体的には例えば、詳細については図３を参照して後述するが、機能格納部６１−１に格納されている機能がモジュール化されている場合がある。即ち、その機能が複数のモジュールにより構成されている場合がある。このような場合、分散正当性判断部６４−１は、その機能のうちのどのモジュールの処理を自機器１で受け持たせ、また、どのモジュールの処理を周辺機器２で受け持たせるのかを決定する。なお、以下、機能を構成する各モジュールのそれぞれを、機能要素と称する。
【００６８】
この場合、「周辺機器２は、実行対象の機能を構成する機能要素のうちの少なくとも１つを保有し、かつ、略現在それを実行可能である」ということが、分散機器検索部６３−１により認識されて分散正当性判断部６４−１に通知されているときには、分散正当性判断部６４−１は、実行対象の機能を構成する各機能要素の割り振りを行う際に、周辺機器２で略現在実行可能な機能要素を周辺機器２に割り振り、それ以外の機能要素を自機器１に割り振ることができる。
【００６９】
以上の内容をまとめると、分散正当性判断部６４−１は、機能格納部６１−１に格納されている実行対象の機能についての機能情報、および、機器情報格納部６２−１に格納されている自機器１と周辺機器２とのそれぞれの機器情報から、自機器１と周辺機器２とのそれぞれが略現在要求しているハードウエア条件と、実行対象の機能が略現在要求しているソフトウエア条件とを認識する。分散正当性判断部６４−１は、これらの略現在のハードウエア条件とソフトウエア条件とに加えて、分散機器検索部６３−１から通知された通信インフラの略現在の帯域に基づいて、自機器１と周辺機器２とが協調動作して実行対象の分散処理を実行することについての正当性を判断する。
【００７０】
そして、分割正当性判断部６４−１は、正当性があると判断した場合、これらの略現在のハードウエア条件およびソフトウエア条件並びに通信インフラの帯域等を適宜利用しながら、実行対象の機能を構成する各機能要素のそれぞれを、自機器１と周辺機器２とのうちのいずれか一方に割り振る。このとき必要に応じて、分散正当性判断部６４−１は、周辺機器２で略現在実行可能な機能要素を周辺機器２に割り振り、それ以外の機能要素を自機器１に割り振ることができる。
【００７１】
その後、分割正当性判断部６４−１は、その処理結果を分散機能実行部６５−１に通知する。
【００７２】
この通知を受けた分散機能実行部６５−１は、機能格納部６１−１に格納されている機能のうちの、実行対象の機能を実行する。
【００７３】
詳細には例えば、「自機器１のみで実行対象の機能を実行させる」という内容の情報が処理結果として分散正当性判断部６４−１から通知された場合、分散機能実行部６５−１は、実行対象の機能の全てを機能格納部６１−１からロードして、実行する。
【００７４】
これに対して例えば、「自機器１と周辺機器２とで実行対象の機能の分散処理を行わせる」という内容の第１の情報、および、「実行対象の機能を構成する各機能要素のそれぞれの割り振り結果」を示す第２の情報が処理結果として分散正当性判断部６４−１から通知された場合、分散機能実行部６５−１は、その第２の情報に基づいて、実行対象の機能を構成する各機能要素のうちの、自機器１に割り振られた第１の機能要素を機能格納部６１からロードし、かつ、周辺機器２に割り振られた第２の機能要素の実行依頼を周辺機器２に発行する。周辺機器２は、この実行依頼を受けると、第２の機能要素を実行して、その実行結果を自機器１に送信する。分散機能実行部６５−１は、第１の機能要素を実行し、かつ、第２の機能要素の実行結果を周辺機器２から取得し、第１の機能要素の実行結果と第２の機能要素の実行結果とを合成する。このようにして、自機器１と周辺機器２とで実行対象の機能の分散処理が行われる。
【００７５】
以上の内容をまとめると、実行対象の機能の分散処理の実行に正当性がないと自機器１の分散正当性判断部６４−１により判断された場合、分散機器検索部６３−１は、実行対象を自分自身で実行する。これに対して、分散機器検索部６３−１は、実行対象の機能の分散処理の実行に正当性があると分散正当性判断部６４−１により判断された場合、実行対象を構成する複数の機能要素のうちの、分散正当性判断部６４−１により自機器１自身に割り振られた第１の機能要素を自分自身で実行し、分散正当性判断部６４−１により周辺機器２に割り振られた第２の機能要素を周辺機器２に実行させる制御を行い、第１の機能要素と第２の機能要素とのそれぞれの実行結果を合成することで、実行対象を実行する。
【００７６】
ところで、この分散機能実行部６５−１に対応する周辺機器２側の分散機能実行部６５−２から自機器１に対して、所定の機能を構成する機能要素のうちの少なくとも１つの実行依頼が発行される場合も当然ながらある。このような場合、自機器１の分散機能実行部６５−１は、実行依頼を受けた機能要素を機能格納部６１−１からロードして実行し、その実行結果を周辺機器２に送信する。このとき、分散機能実行部６５−１は、必要に応じてその他情報も周辺機器２に送信する。なお、詳細については後述するように、この実行依頼を受けた時点では、実行依頼された機能要素はロード済みである場合が多く、このような場合、分散機能実行部６５−１は、その機能要素を直ちに実行することが可能である。
【００７７】
機器情報提供部６６−１は、上述した分散機器検索部６３−１に対応する周辺機器２側の分散機器検索部６３−２から機器情報の取得依頼を受けたとき、機器情報格納部６２−１から自機器１の機器情報を取得して、周辺機器２に送信する（提供する）。
【００７８】
換言すると、自機器１の分散機器検索部６３−１が、上述したように、周辺機器２の機器情報を取得する場合、周辺機器２の機器情報の取得依頼を周辺機器２に対して発行する。
すると、周辺機器２の機器情報提供部６６−２は、機器情報格納部６２−２から周辺機器２の機器情報を取得して、自機器１に送信してくる。そこで、自機器１の分散機器検索部６３−１は、周辺機器２の機器情報を受信し、機器情報格納部６２−１に記憶させる。
【００７９】
なお、この機器情報の取得依頼は、周辺機器２宛てに送信されてもよいが、ブロードキャスト信号として送信されてもよい。詳細については後述するが、後者の場合、分散機器検索部６３−１は、機器情報を受信することで、その機器情報で特定される周辺機器を認識（検索）することができる。即ち、後者の場合、周辺機器の検索とその機器情報の取得とを一括して行うことが可能になる。
【００８０】
以上説明したように、図２の例の情報処理コントローラ１１−１においては、４つの分散機器検索部６３−１乃至機器情報提供部６６−１といった機能ブロックが設けられている。即ち、図２の例では、情報処理コントローラ１１−１の処理単位は、４つの分散機器検索部６３−１乃至機器情報提供部６６−１であると言える。ただし当然ながら、情報処理コントローラ１１−１の処理単位は、図２の例に限定されず任意の単位でよい。即ち、情報処理コントローラ１１−１にとっては、上述した分散機器検索部６３−１乃至機器情報提供部６６−１のそれぞれに対応する処理の全てを総合的に実行可能であればよく、その処理単位は特に限定されない。従って例えば、分散機器検索部６３−１乃至機器情報提供部６６−１を、任意の数の任意の処理を行う機能ブロックに分割または統合することが可能である。
【００８１】
以上、情報処理装置１の機能的構成例について説明した。
【００８２】
情報処理装置２も、上述した情報処理装置１と基本的に同様の機能的構成を有する。即ち、図２に示される情報処理装置２の各機能ブロックのそれぞれは、ハイフォン“−”の前の符号が同一の情報処理装置１の機能ブロックに対応する。例えば、情報処理装置２の分散正当性判断部６４−２と分散機能実行部６５−２とのそれぞれは、情報処理装置１の分散正当性判断部６４−１と分散機能実行部６５−１とのそれぞれに対応する。このように、情報処理装置２は、情報処理装置１と基本的に同様の機能的構成を有することから、情報処理装置１と基本的に同様の動作（処理）を行うことができる。
【００８３】
さらにまた、上述したように、ネットワーク３に接続される情報処理装置の台数は、図１の例に限定されず、任意の台数でよい。この場合、ネットワーク３に接続される図示せぬ他の情報処理装置は、情報処理装置１，２と基本的に同様の機能的構成を有していると好適であるが、他の機能的構成を有していても勿論よい。ただし、情報処理装置１または２が、図示せぬ他の情報処理装置も分散機器として利用する場合、即ち、図示せぬ他の情報処理装置に対しても分散処理を負担させる場合、図示せぬ他の情報処理装置は、機器情報提供部６６−１，６６−２および分散機能実行部６５−１，６５−２のそれぞれに対応するソフトウエアまたはハードウエアを有している必要がある。
【００８４】
次に、図３以降の図面を参照して、係る機能的構成を有する情報処理装置１，２とで実行される所定の機能の分散処理の詳細について説明する。
【００８５】
なお、以下、周辺機器からの実行依頼ではなく、自機器の判断で所定の機能のうちの少なくとも一部を実行する場合、その自機器を実行元の自機器（情報処理装置）と称する。この場合、後述するように、実行元の自機器が、その機能のうちの少なくとも一部の実行依頼を周辺機器に対して発行することがある。このようなとき、その周辺機器を依頼先の周辺機器（情報処理装置）と称する。
【００８６】
上述したように、情報処理装置１，２は、相互分散可能である環境下に存在している。また、情報処理装置１，２のそれぞれは、実行または保持している機能（プログラム）またはデータの情報を相互交換することが可能である。相互交換される機能としては、例えば画像処理コーデック等のプログラム群が該当する。また、相互交換される情報としては、その機能に必要な情報の他、例えばユーザの嗜好情報等が該当する。これらの機能やデータの抽象度（粒度や階層）は、情報処理システムにおけるロード/実行アーキテクチャや、情報処理システム内の通信インフラの略現在の帯域（略現在の通信速度）によって変化する。ロード/実行アーキテクチャとは、情報処理装置１，２が要求するハードウエア条件や、機能が要求するソフトウエア条件等を指す。
【００８７】
また、上述したように、情報処理装置１，２は、メモリマップされたプログラム実行可能領域にプログラムをロードして実行することができる。例えば図１の例では、情報処理装置１，２は、大容量のプログラム格納領域として利用されるNAND Flash memory等からなる記憶装置１４−１，１４−２、或いは、メインメモリ１３−１，１３−２に記憶されている所定の機能を、所定の１以上のプロセッサの実行可能メモリ領域へロードして実行することができる。ここで言うプロセッサとは、図１の例では、MPU２１−１およびSPU３１−１乃至３３−１、並びに、MPU２１−２およびSPU３１−２乃至３３−２のうちの少なくとも１つを指す。従って、ここで言う実行可能メモリ領域とは、図１の例では、メモリ２２−１およびメモリ４１−１乃至４３−１、並びに、メモリ２２−２およびメモリ４１−２乃至４３−２のうちの少なくとも１つの領域を指す。なお、メインメモリ１３−１，１３−２は、本実施の形態ではプログラム格納領域として取り扱われているが、必要に応じて、実行可能メモリ領域として取り扱うことも可能である。
【００８８】
以上のような情報処理装置１，２は、図３に示されるような機能P，Qのそれぞれを保有しているとする。即ち、図３に示されるように、情報処理装置１の機能格納部６１−１には機能Pが格納され、その機能Pの実行指示があった場合には、情報処理コントローラ１１−１によりその機能Pがロードされて実行されることが可能であるとする。同様に、情報処理装置２の機能格納部６１−２には機能Qが格納され、その機能Qの実行指示があった場合には、情報処理コントローラ１１−２によりその機能Qがロードされて実行されることが可能であるとする。
【００８９】
さらに、機能格納部６１−１には、機能Pの識別IDやバージョン、機能Pが要求する各種ソフトウエア条件等を含む機能情報が、機能Pと対応付けられて格納されているとする。同様に、機能格納部６１−２には、機能Qの識別IDやバージョン、機能Qが要求する各種ソフトウエア条件等を含む機能情報が、機能Qと対応付けられて格納されているとする。なお、機能情報の具体例については、図１３を参照して後述する。
【００９０】
機能Pは、４つの機能要素A,B,C,D、および、データx,yから構成されている。
【００９１】
機能要素A,B,C,Dのそれぞれは、同時に変更される共通データが少なく、高い独立性が保たれており、かつ、分散処理可能な単位であるとする。さらにここでは簡略化し、機能要素A,B,C,Dのそれぞれは、共通データが全くなく、全く独立した構成要素群とする。
【００９２】
データxは、機能Pを実行するために必要なデータを示すとする。データyは、機能Pを実行することによって得られる結果を示すとする。
【００９３】
機能Qは、機能要素A,D,E,F、および、データx,wから構成されているとする。
【００９４】
機能要素A,D,E,Fのそれぞれも、同時に変更される共通データが少なく、高い独立性が保たれており、かつ、分散処理可能な単位であるとする。さらにここでは簡略化し、機能要素A,D,E,Fのそれぞれも、共通データが全くなく、全く独立した構成要素群とする。
【００９５】
データxは、機能Qを実行するために必要なデータを示すとする。データwは、機能Qを実行することによって得られる結果を示すとする。
【００９６】
ここで注目すべき点は、機能要素A,Dおよびデータxは機能P,Qの両者共に存在する共通構成要素である、という点である。これらの共通構成要素は、情報処理装置１，２において、プログラム性能は同一であるとする。プログラム性能とは、実行速度、実時間性能、品質等を指す。
【００９７】
以下、この図３に示される機能P,Qがロードされていない状態で、最初に、情報処理装置１が機能Pを実行し、次に、情報処理装置１，２が協調動作して機能Qの分散処理を実行するとする。
【００９８】
この場合、情報処理装置１，２からなる情報処理システムは、例えば、図４乃至図８に示される各フローチャートに従った処理を実行する。
【００９９】
即ち、図４のフローチャートは、実行元の自機器が実行対象の機能を実行する場合におけるその前処理、即ち、準備処理の例を示している。即ち、図４のフローチャートは、自機器だけでその機能を実行するのか、或いは、自機器と周辺機器との分散処理でその機能を実行するのか等、実行対象の機能の処理形態を判断し、分散処理でその機能を実行すると判定した場合には、その機能を構成する各機能要素の割り振りを行う、といった実行元の自機器が実行する処理の例を示している。以下、このような図４の処理を「分散準備処理」と称する。
【０１００】
図５のフローチャートは、実行元の自機器が図４の「分散準備処理」を実行している場合に周辺機器側で実行される処理である。即ち、図５のフローチャートは、図４の「分散準備処理」に必要な情報のうちの周辺機器の機器情報を、周辺機器から実行元の自機器に提供するために、周辺機器が実行する処理の例を示している。以下、このような図５の処理を「機器情報送信処理」と称する。
【０１０１】
図６と図７のフローチャートは、実行元の自機器が図４の「分散準備処理」の実行後に実行する処理である。即ち、図６と図７のフローチャートは、自機器自身が所定の機能を実行する、または、自機器が周辺機器と協調動作して所定の機能の分散処理を実行する、といった処理の例を示している。以下、このような図６と図７の処理を「実行元による機能実行処理」と称する。
【０１０２】
図８のフローチャートは、実行元の自機器が図６と図７（特に図７）の「実行元による機能実行処理」を実行している場合に周辺機器側が実行する処理である。即ち、図８のフローチャートは、実行対象の機能を構成する各機能要素のうちの実行元から要請された機能要素を実行する、といった周辺機器が実行する処理の例を示している。以下、このような図８の処理を「依頼先による機能実行処理」と称する。
【０１０３】
ところで、いまの場合、上述したように、図３に示される機能P,Qがロードされていない状態で、最初に、情報処理装置１が機能Pを実行する。従って、最初に、情報処理装置１が実行元の自機器として図４の「分散準備処理」を実行することになる。これに伴い、情報処理装置２が周辺機器として図５の「機器情報送信処理」を実行することになる。その後、情報処理装置１が図６と図７（特に図６）の「実行元による機能実行処理」を実行することになる。
【０１０４】
このように情報処理装置１が機能Pを最初に実行する場合の、情報処理装置１，２の処理の相互の関係が図９のアローチャートに示されている。そこで、以下、図４、図５および図６のフローチャート並びに図９のアローチャートを主に参照して、情報処理装置１が機能Pを最初に実行する場合の情報処理装置１，２の処理について説明する。
【０１０５】
はじめに、ステップＳ１において、情報処理装置１の図２の分散機器検索部６３−１は、ネットワーク３に接続された周辺機器のサーチを行う。
【０１０６】
詳細には例えば、ステップＳ１において、分散機器検索部６３−１は、Ethernet（登録商標）,IEEE802.11或いはBluetooth等で規定された通信インフラを用いて、ネットワーク３に対してブロードキャスト信号を送信する。即ち、分散機器検索部６３−１は、物理層での接続を試みる。そして、分散機器検索部６３−１は、その接続後、リンク層やアプリケーション層の接続を行い、最終的に機器情報の受信を行うためのコマンド（上述した機器情報の取得要求に対応）を発行し、それに対する返信を待つ。
【０１０７】
この間、情報処理装置２の機器情報提供部６６−２は、ステップＳ２１において、周辺機器からサーチを受けたか否かを判定している。
【０１０８】
なお、図５の「機器情報送信処理」においては当然ながら、それを実行する情報処理装置２が自機器となり、図４の「分散準備処理」を実行する情報処理装置１が他機器となる。ただし、これまで、実行元である情報処理装置１に着目して説明を行っており、ここで、図面の記載通りに説明すること、即ち、周辺機器と自機器とを逆転して説明することはいたずらに混乱を招くことになる。そこで、図５の「機器情報送信処理」を説明している範囲内では、自機器や周辺機器といった名称は使用せずに説明していく。
【０１０９】
ブロードキャスト信号が受信されない限り、ステップＳ２１において、サーチを受けていないと判定されて、処理はステップＳ２１に戻され、サーチを受けたか否かが再度判定される。即ち、いまの場合、ネットワーク３には２台の情報処理装置１，２が接続されているだけなので、情報処理装置１からのブロードキャスト信号が受信されるまで、ステップＳ２１の判定処理が繰り返される。
【０１１０】
従って、ステップＳ１の処理で情報処理装置１から送信されたブロードキャスト信号が情報処理装置２のネットワークインタフェース１２−２に受信されると、ステップＳ２１において、情報処理装置２の機器情報提供部６６−２は、それを取得することで、情報処理装置１からサーチを受けたと判定して、処理をステップＳ２２に進める。
【０１１１】
ステップＳ２２において、情報処理装置２の機器情報提供部６６−２は、情報処理装置２自身の機器情報を機器情報格納部６２−２から取得して、情報処理装置１に対してネットワークインタフェース１２−２およびネットワーク３を介して送信する。
【０１１２】
この間、ステップＳ２において、情報処理装置１の分散機器検索部６３−１は、周辺機器が存在するか否かを判定している。
【０１１３】
仮に、所定の時間が経過しても、ブロードキャスト信号に対する返信、即ち、周辺機器の機器情報が全く送信されてこない場合、ステップＳ２において、周辺機器が存在しないと判定されて、「分散準備処理」は終了となる。この場合、自機器１単体で実行対象の機能の実行が可能であるならば、その機能は自機器１のみにより実行される。即ち、詳細については後述するが、ステップＳ１１の処理が完了して「分散準備処理」が終了した場合には、実行対象の機能は自機器と周辺機器との分散処理により実行される。これに対して、ステップＳ２の処理でNOであると判定された等、それ以外の理由で「分散準備処理」が終了した場合には、その機能は自機器のみにより実行されるか、或いは、その機能は実行されない。
【０１１４】
これに対して、いまの場合、上述したようにステップＳ２２の処理で周辺機器２の機器情報が送信されてくるので、情報処理装置１のネットワークインタフェース１２−１は、周辺機器２の機器情報を受信することになる。
【０１１５】
すると、情報処理装置１の分散機器検索部６３−１は、ステップＳ２において、周辺機器２が存在すると判定し、ステップＳ３において、周辺機器２の機器情報を取得して、機器情報格納部６１−１に記憶させる。
【０１１６】
なお、機器情報の具体例については、図１１と図１２とを参照して後述する。
【０１１７】
ステップＳ４において、情報処理装置１の分散機器検索部６３−１は、自機器１と周辺機器２との間の通信インフラの略現在の帯域（略現在の通信速度）を算出する。
【０１１８】
なお、この通信インフラの略現在の帯域は、後述するステップＳ９の処理で利用される。ただし、いまの場合には、即ち、情報処理装置１が機能Pを最初に実行する場合には、ステップＳ９の処理は実行されない。そこで、通信インフラの略現在の帯域の演算方法等については後述する。
【０１１９】
ステップＳ５において、情報処理装置１の分散機器検索部６３−１は、自機器１の保有機能Pの識別IDと同一の識別IDの機能が、周辺機器２に既にロードされているか否かを判定する。
【０１２０】
即ち、このステップＳ５の処理で（正確には後述するステップＳ６も含む）、周辺機器２は、実行対象の機能Pを構成する機能要素A,B,C,Dのうちの少なくとも１つを保有し、かつ、略現在それを実行可能な状態であるか否かの判定が行われるのである。
【０１２１】
いまの場合、周辺機器２において機能Qはまだロードされていないので、ステップＳ５において、自機器１の保有機能Pの識別IDと同一の識別IDの機能が、周辺機器２に既にロードされていないと判定されて、「分散準備処理」は終了となる。この場合にも、上述したように、実行対象の機能は自機器のみにより実行されるか、或いは、実行されない。即ち、いまの場合、後述するように、機能Pは情報処理装置１のみにより実行される。
【０１２２】
なお、情報処理装置１が機能Pを最初に実行する場合におけるステップＳ５の判定処理に関連する事項のうちの、ステップＳ５の判定処理でNOであると判定されること以外の事項の説明については、ここでは省略し、後述することにする。ステップＳ５の判定処理でNOであると判定されること以外の事項とは、例えば、機能の識別ID、ステップＳ５の判定処理のさらなる詳細内容、および、ステップＳ５の判定処理でYESであると判定された際のそれ以降の処理といった事項を指す。
【０１２３】
情報処理装置１の分散機器検索部６３−１は、ステップＳ５の処理でNOであると判定したこと、即ち、機能Pは自機器１のみにより実行されるべきであることを、分散正当性判断部６４−１を介して分散機能実行部６５−１に通知すると、「分散準備処理」を終了させる。
【０１２４】
なお、より正確には、分散正当性判断部６４−１は、分散機器検索部６３−１からの通知を受けると、自機器１単体で機能Pの実行が可能か否かを判断し、実行可能であると判断した場合にのみ、機能Pは自機器１のみにより実行されるべきであることを、分散機能実行部６５−１に通知することになる。即ち、分散正当性判断部６４−１が実行不可能であると判断した場合には、機能Pは実行されずに、所定のエラー処理が実行されることになる。
【０１２５】
ただし、ここでは、分散正当性判断部６４−１は、実行可能であると判断して、機能Pは自機器１のみにより実行されるべきであることを、分散機能実行部６５−１に通知するとする。この場合、情報処理装置１の分散機能実行部６５−１は、この通知を受け取ると、機能Pを実行するための図６の「実行元による機能実行処理」を開始させる。
【０１２６】
即ち、ステップＳ４１において、情報処理装置１の分散機能実行部６５−１は、周辺機器２との間で分散実行するか否かを判定する。
【０１２７】
いまの場合、ステップＳ５の処理でNOであると判定したこと、即ち、機能Pは自機器１のみにより実行されるべきであることが分散正当性判断部６４−１から通知されたので、ステップＳ４１の処理でNOであると判定されて、処理はステップＳ４２に進む。
【０１２８】
このように、情報処理装置１が機能Pを最初に実行する場合においては、ステップＳ４１の判定処理でNOであると判定されることになるので、ステップＳ４１の判定処理でYESであると判定された際のそれ以降の処理については、ここでは省略し、後述することにする。
【０１２９】
ステップＳ４２において、情報処理装置１の分散機能実行部６５−１は、機能Pに含まれる全構成要素A,B,C,Dを機能格納部６１−１からロードする。
【０１３０】
また、ステップＳ４３において、情報処理装置１の分散機能実行部６５−１は、機能Pに含まれる全データx,yを機能格納部６１−１からロードする。
【０１３１】
そして、ステップＳ４４において、情報処理装置１の分散機能実行部６５−１は、機能Pを実行する。即ち、分散機能実行部６５−１は、データx,yを適宜用いて全構成要素A,B,C,Dのそれぞれを実行することで、機能Pを実行する。
【０１３２】
なお、機能Pの実行が完了すると、情報処理装置１による機能Pについての図６の「実行元により機能実行処理」も終了となるが、ここでは、情報処理装置１が機能Pを実行中に、今度は、情報処理装置２が機能Qを実行するための処理を開始したとする。
【０１３３】
以下、情報処理装置１が機能Pを実行中に（より正確には、機能Pを実行可能な状態で）情報処理装置２が機能Qを実行する場合における、情報処理装置１，２の処理（以下、機能Q用処理と称する）について説明する。
【０１３４】
この機能Q用処理を実現するためには、今度は、情報処理装置２が実行元の自機器として図４の「分散準備処理」を実行することになる。これに伴い、情報処理装置１が周辺機器として図５の「機器情報送信処理」を実行することになる。次に、情報処理装置２が図６と図７（特に図７）の「実行元による機能実行処理」を実行することになる。これに伴い、情報処理装置１が図８の「依頼先による機能実行処理」を実行することになる。
【０１３５】
このような機能Q用処理の相互の関係が図１０のアローチャートに示されている。そこで、以下、図４乃至図８のフローチャート並びに図１０のアローチャートを主に参照して、機能Q用処理について説明する。
【０１３６】
はじめに、ステップＳ１において、情報処理装置２の図２の分散機器検索部６３−２は、ネットワーク３に接続された周辺機器のサーチを行う。即ち上述したように、分散機器検索部６３−２は、ネットワーク３に対してブロードキャスト信号を送信する。
【０１３７】
この間、情報処理装置１の機器情報提供部６６−１は、ステップＳ２１において、周辺機器からサーチを受けたか否かを判定している。
【０１３８】
なお、上述したように、図５の「機器情報送信処理」においては当然ながら、それを実行する情報処理装置１が自機器となり、図４の「分散準備処理」を実行する情報処理装置２が他機器となる。ただし、上述したように、図５の「機器情報送信処理」を説明している範囲内では、自機器や周辺機器といった名称は使用せずに説明していく。
【０１３９】
ステップＳ１の処理で情報処理装置２から送信されたブロードキャスト信号が情報処理装置１のネットワークインタフェース１２−１に受信されると、ステップＳ２１において、機器情報提供部６６−１は、それを取得することで、情報処理装置２からサーチを受けたと判定して、処理をステップＳ２２に進める。
【０１４０】
ステップＳ２２において、情報処理装置１の機器情報提供部６６−１は、情報処理装置１自身の機器情報を機器情報格納部６２−１から取得して、情報処理装置２に対してネットワークインタフェース１２−１およびネットワーク３を介して送信する。
【０１４１】
この間、ステップＳ２において、情報処理装置２の分散機器検索部６３−２は、周辺機器が存在するか否かを判定している。
【０１４２】
仮に、所定の時間が経過しても、ブロードキャスト信号に対する返信、即ち、周辺機器の機器情報が全く送信されてこない場合、ステップＳ２において、周辺機器が存在しないと判定されて、「分散準備処理」は終了となる。この場合、上述したように、機能Qは自機器２のみにより実行されるか或いは実行されない。
【０１４３】
これに対して、いまの場合、上述したようにステップＳ２２の処理で周辺機器１の機器情報が送信されてくるので、情報処理装置２のネットワークインタフェース１２−２は、周辺機器１の機器情報を受信することになる。
【０１４４】
すると、情報処理装置２の分散機器検索部６３−２は、ステップＳ２において、周辺機器１が存在すると判定し、ステップＳ３において、周辺機器１の機器情報を取得して、機器情報格納部６２−２に記憶させる。
【０１４５】
具体的には例えばいま、周辺機器１の機器情報として、図１１に示される機器情報が取得されて、機器情報格納部６２−２に格納されたとする。
【０１４６】
また、このとき例えば、自機器２の機器情報として、図１２に示される機器情報も機器情報格納部６２−２に格納されているとする。
【０１４７】
即ち、図１１と図１２とのそれぞれは、情報処理装置１，２のそれぞれの機器情報の例を示している。
【０１４８】
図１１と図１２に示されるように、機器情報には、「CPU」、「メモリ」、「動作周波数」、「プロセッサ利用率」、「プロセッサ利用率予測値」、「空きメモリ」、「OFFスケジュール」、および「保持プログラム  識別ID : version」といった項目が設けられている。
【０１４９】
「CPU」には、MPUとSPUに関する情報が記述される。例えば、「内容」に示されるように、「CPU」には、数、バージョン、ベンダ、およびMIPS(Million Instructions Per Second)値のそれぞれがその順番に記述される。
【０１５０】
具体的には例えば、図１１の例の情報処理装置１の機器情報の「CPU」には、“2”，“0.53/0.53”，“sany”.500と記述されている。これにより、情報処理装置１には、“2”個のプロセッサが設けられ、それぞれのバージョンは“0.53/0.53”であり、ベンダは“sany”であり、かつ、MIPS値は500であることがわかる。一方、図１２の例の情報処理装置２の機器情報の「CPU」には、“1”，“0.53/0.53”，“sany”.300と記述されている。これにより、情報処理装置２には、“1”個のプロセッサが設けられ、そのバージョンは“0.53/0.53”であり、ベンダは“sany”であり、かつ、MIPS値は300であることがわかる。
【０１５１】
なお、図１の例では、情報処理装置１には、１つのMPU２１−１と３つのSPU３１−１乃至３３−１との総計４個のプロセッサが設けられており、図１の例に併せると、情報処理装置１の機器情報の「CPU」の数としては、“4”が記述されることになる。ただし、上述したように、SPUの個数は、図１の例に特に限定されない。そこで、この機能Q用処理の説明の範囲内では、図１１の機器情報の記述に併せて、情報処理装置１には２つのプロセッサ、即ち、１つのMPU２１−１と１つのSCPU３１−１とが設けられているとする。
【０１５２】
同様に、図１の例では、情報処理装置２には、１つのMPU２１−２と３つのSPU３１−２乃至３３−２との総計４個のプロセッサが設けられており、図１の例に併せると、情報処理装置２の機器情報の「CPU」の数としては、“4”が記述されることになる。ただし、上述したように、SPUの個数は、図１の例に特に限定されない。そこで、この機能Q用処理の説明の範囲内では、図１２の機器情報の記述に併せて、情報処理装置２には１つのプロセッサ、即ち、１つのMPU２１−２のみが設けられているとする。
【０１５３】
「メモリ」には、「内容」に示されるように、プログラム実行可能領域を有するメモリの総サイズが記述される。具体的には例えば、図１１の例の情報処理装置１の機器情報の「メモリ」には、“1024Mbit”と記述されている。これにより、情報処理装置１のMPU２１−１用の専用メモリ２２−１とSPU３１−１用の専用メモリ４１−１との総サイズは、“1024Mbit”であることがわかる。一方、図１２の例の情報処理装置２の機器情報の「メモリ」には、“256Mbit”と記述されている。これにより、情報処理装置２のMPU２１−２用の専用メモリ２２−２のサイズは、“256Mbit”であることがわかる。
【０１５４】
「動作周波数」には、プロセッサの動作クロックが、プロセッサの数だけ記述される。なお、動的に変化するクロックは通常状態での値が記述される。具体的には例えば、図１１の例の情報処理装置１の機器情報の「動作周波数」には、“2G/2GHz”と記述されている。これにより、情報処理装置１において、MPU２１−１の動作クロックは“2GHz”であり、かつ、SPU３１−１の動作クロックは“2GHz”であることがわかる。一方、図１２の例の情報処理装置２の機器情報の「動作周波数」には、“500MHz”と記述されている。これにより、情報処理装置２のMPU２１−２の動作クロックは“500MHz”であることがわかる。
【０１５５】
「プロセッサ利用率」には、プロセッサの略現在の利用率［%］が、プロセッサの数だけ記述される。具体的には例えば、図１１の例の情報処理装置１の機器情報の「プロセッサ利用率」には、“30%/30%”と記述されている。これにより、情報処理装置１において、MPU２１−１の略現在の利用率は“30%”であり、かつ、SPU３１−１の略現在の利用率は“30%”であることがわかる。一方、図１２の例の情報処理装置２の機器情報の「プロセッサ利用率」には、“90%”と記述されている。これにより、情報処理装置２のMPU２１−２の略現在の利用率は“90%”であることがわかる。
【０１５６】
「プロセッサ利用率予測値」には、プロセッサのスケジュールが組まれている場合に所定の時間[min]経過後に予め予想されるプロセッサ利用率［%］が記述される。具体的には例えば、図１１の例の情報処理装置１の機器情報の「プロセッサ利用率予測値」には、“5min:20%/10%;10min:10%/5%”と記述されている。これにより、情報処理装置１のMPU２１−１の利用率は略現在“30%”であるが、“5min”後には“20%”まで下がり、さらに“10min”後には“10％”まで下がることが予測されていることがわかる。また、情報処理装置１のSPU３１−１の利用率は略現在“30%”であるが、“5min”後には“10%”まで下がり、さらに“10min”後には“5％”まで下がることが予測されていることがわかる。一方、図１２の例の情報処理装置２の機器情報の「プロセッサ利用率予測値」には、“5min:90%;10min:90%”と記述されている。これにより、情報処理装置２のMPU２１−２の利用率は、“5min”後にも、さらに“10min”後にも“90%”のまま維持されることが予測されていることがわかる。
【０１５７】
「空きメモリ」には、上述した「メモリ」に記述されたサイズのうちの、現在使用可能な総空きサイズが記述される。具体的には例えば、図１１の例の情報処理装置１の機器情報の「空きメモリ」には、“800Mbit”と記述されている。これにより、情報処理装置１のMPU２１−１用の専用メモリ２２−１とSPU３１−１用の専用メモリ４１−１との総空きサイズは、即ち、使用可能なサイズは“800Mbit”であることがわかる。一方、図１２の例の情報処理装置２の機器情報の「空きメモリ」には、“100Mbit”と記述されている。これにより、情報処理装置２のMPU２１−２用の専用メモリ２２−２の空きサイズは、即ち、使用可能なサイズは、“100Mbit”であることがわかる。
【０１５８】
「OFFスケジュール」には、「内容」に示されるように、電源OFFがスケジュールされている場合に、そのことを示す情報が記述される。なお、図１１の例の情報処理装置１の機器情報の「OFFスケジュール」にも、図１２の例の情報処理装置２の機器情報の「OFFスケジュール」にも、何も記述されていないので（Noneであるので）、情報処理装置１，２何れにおいても、電源OFFが特にスケジュールされていないことがわかる。
【０１５９】
「保持プログラム  識別ID : version」には、自機器が保持している機能（プログラム）の識別IDとバージョン（version）とが記述される。
【０１６０】
自機器が保持している機能とは、プログラム実行可能領域にロードされた機能を指す場合もあるし、プログラム実行可能領域へのロードの有無に関わらず、プログラム格納領域に格納されている機能を指す場合もある。本実施の形態では例えば、前者が採用されているとする。
【０１６１】
識別IDとは、機能毎に一意に付されたユニークな値を指す。この識別IDにより、所定の機能が識別可能になる。ただし、所定の識別IDを有する機能を構成する機能要素やデータのうちの所定の一部のみが更新された場合には、識別IDはそのままで、バージョンだけが変更されることがある。例えば、図３の例では、機能P,Qのそれぞれには、識別IDとして“uniqidxx”が付されているとする。ただし、機能Pの機能要素A,B,C,Dのうちの機能要素B,Cのそれぞれが、例えば機能要素D,Eのそれぞれに更新され（それに伴い、データyがデータwに更新され）、その結果として機能Qになったとする。この場合、機能P，Qのそれぞれを識別するためには、異なるバージョンが付されることになる。例えば、機能Pにはバージョンとして”1.1a”が付されていたとすると、機能Qにはバージョンとして“1.1b”が付されることになる。
【０１６２】
この識別IDとバージョンとは、各機能のそれぞれに対応付けられた機能情報から得られる。なお、機能情報の詳細については、図１３を参照して後述する。
【０１６３】
具体的には例えば、図１１の例の情報処理装置１の機器情報の「保持プログラム  識別ID : version」には、“uniqidxx:1.1a/uniqidyy:1.4”と記述されている。これにより、情報処理装置１のMPU２１−１用の専用メモリ２２−１とSPU３１−１用の専用メモリ４１−１とのうちのいずれか一方には、識別IDが“uniqidxx”であってバージョンが“1.1a”である機能Pがロードされていることがわかる。また、情報処理装置１のMPU２１−１用の専用メモリ２２−１とSPU３１−１用の専用メモリ４１−１とのうちのいずれか一方には、識別IDが“uniqidyy”であってバージョンが“1.4”である図３には図示せぬ機能がロードされていることがわかる。
【０１６４】
また例えば、図１２の例の情報処理装置２の機器情報の「保持プログラム  識別ID : version」には、“uniqidxx:1.1b/uniqidyy:1.6”と記述されている。これにより、情報処理装置１のMPU２１−２用の専用メモリ２２−２には、識別IDが“uniqidxx”であってバージョンが“1.1b”である機能Qがロードされていることがわかる。また、情報処理装置２のMPU２１−２用の専用メモリ２２−２には、識別IDが“uniqidyy”であってバージョンが“1.6”である図３には図示せぬ機能がロードされていることがわかる。
【０１６５】
なお、いまの場合、即ち、機能Q用処理が実行される場合、図４と図１０のステップＳ３の処理の時点では、情報処理装置２は機能Qをまだロードしていないので、情報処理装置２の機器情報の「保持プログラム  識別ID : version」には、“uniqidxx:1.1b”は記述されていないことになる。
【０１６６】
係る機器情報のうちの情報処理装置１の機器情報が、図４と図１０のステップＳ３の処理で取得されると、処理はステップＳ４に進む。
【０１６７】
ステップＳ４において、情報処理装置２の図２の分散機器検索部６３−２は、自機器２と周辺機器１との間の通信インフラの略現在の帯域（略現在の通信速度）を算出する。
【０１６８】
例えばステップＳ４において、分散機器検索部６３−２は、所定のデータ量のデータ（周辺機器１の機器情報等）が周辺機器１から返信されてくるまでの通信時間に基づいて、略現在の通信速度を演算する。具体的には例えば、データ量が1024kbitであるデータの通信時間（接続までの時間等除く）が500msecであった場合、略現在の通信速度として2048(=1024/500)kbpsが算出される。
【０１６９】
ステップＳ５において、情報処理装置２の分散機器検索部６３−２は、自機器２の保有機能の識別IDと同一の識別IDの機能が、周辺機器１に既にロードされているか否かを判定する。
【０１７０】
例えばいまの場合、自機器２の保有機能とは、機能格納部６１−２に格納されている機能Qである。機能Qの識別IDは上述したように“uniqidxx”であって、同じく機能格納部６１−２に格納されている「機能Qの機能情報」から取得可能である。具体的には例えば、図１３に示されるような「機能Qの機能情報」が機能格納部６１−２に格納されており、この「機能Qの機能情報」から機能Qの識別IDが取得可能である。即ち、図１３は、「機能Qの機能情報」の一例を示している。この「機能Qの機能情報」には、「識別ID」という項目が含まれており、この「識別ID」に、機能Qの識別IDとして“uniqidxx”が記述されている。なお、「機能Qの機能情報」のその他の項目については後述する。
【０１７１】
また、周辺機器１にこの時点でロードされている機能Pの識別IDも上述したように、“uniqidxx”であり、この機能Pの識別IDは、ステップＳ３の処理で取得された図１１の「周辺機器１の機器情報」に記述されている。
【０１７２】
従って、分散機器検索部６３−１は、自機器２に保有されている「機能Qの機能情報」と、「周辺機器１の機器情報」とを比較し、共に“uniqidxx”が記述されていることを認識すると、ステップＳ５の処理でYESであると判定して、処理をステップＳ６に進める。
【０１７３】
なお、仮に、自機器２に保有されている「機能Qの機能情報」と、「周辺機器１の機器情報」とに共通する識別IDが存在しない場合、ステップＳ５の処理でNOであると判定されて、「分散準備処理」は終了となる。この場合、上述したように、機能Qは情報処理装置２のみにより実行されるか或いは実行されない。
【０１７４】
ステップＳ６において、情報処理装置２の分散機器検索部６３−２は、自機器２と周辺機器１との機能がコンパチビリティ（互換性）を有しているか否かを判定する。
【０１７５】
なお、ここでは例えば、２つの機能において、共通する機能要素が少なくとも１つ存在すれば、２つの機能はコンパチビリティを有しているとする。また、共通する機能要素が存在するか否かの判定手法は特に限定されない。例えば機能要素単位で識別IDを付与し、識別IDが一致する機能要素が存在するか否かを判定する、といった判定手法を採用することができる。ただしここでは、説明の簡略上例えば、２つの機能のバージョンを比較することで、共通する機能要素が存在するか否かを判定する、といった判定手法が採用されているとする。
【０１７６】
この場合、機能Qのバージョンは上述したように“1.1b”であって、例えば図３と図１４に示されるように、機能格納部６１−２に格納されている「機能Qの機能情報」から取得可能である。即ち、図１３に示されるように、「機能Qの機能情報」には、「バージョン」という項目が含まれており、この「バージョン」に、機能Qのバージョンとして“1.1b”が記述されている。なお、「機能Qの機能情報」のその他の項目については後述する。
【０１７７】
また、機能Pのバージョンは上述したように、“1.1a”であり、この機能Pのバージョンは、ステップＳ３の処理で取得された図１１の「周辺機器１の機器情報」に記述されている。
【０１７８】
なお、バージョン“1.1a”の機能Pとバージョン“1.1b”の機能Qとはコンパチビリティを有しているとされ、そのこと自体は情報処理装置２にとって既知であるとする。
【０１７９】
この場合、情報処理装置２の分散機器検索部６３−２は、自機器２に保有されている「機能Qの機能情報」と、取得された「周辺機器１の機器情報」とを比較し、その結果として、ステップＳ６の処理で、バージョン“1.1a”の機能Pとバージョン“1.1b”の機能Qとはコンパチビリティを有していると判定する。
【０１８０】
なお、仮にバージョン“1.1a”の機能Pとバージョン“1.1b”の機能Qとがコンパチビリティを有していない（互換性が無い）場合、ステップＳ６の処理でNOであると判定されて、「分散準備処理」は終了となる。この場合、上述したように、機能Qは情報処理装置２のみにより実行されるか、或いは実行されない。
【０１８１】
このように、情報処理装置２の分散機器検索部６３−２は、ステップＳ１乃至Ｓ６の処理を実行することで、ネットワーク３を含む通信インフラを用いて通信を行うことが可能な周辺機器の中から、「実行対象の機能Qを構成する機能要素A,D,E,Fのうちの少なくとも１つを保有し、かつ、略現在それを実行可能な周辺機器」として周辺機器１を検索するとともに、通信インフラの略現在の帯域を算出するのである。
【０１８２】
ステップＳ６の処理でYESであると判定されると、ステップＳ１乃至Ｓ６の処理結果、即ち、「実行対象の機能Qを構成する機能要素A,D,E,Fのうちの少なくとも１つを保有し、かつ、略現在それを実行可能な周辺機器とは、情報処理装置１であること」、および、「自機器２と周辺機器１との間の略現在の通信インフラの略現在の帯域（略現在の通信速度）」が、分散機器検索部６３−２から分散正当性判断部６４−２に供給される。これにより、処理はステップＳ７に進む。
【０１８３】
ステップＳ７において、情報処理装置２の分散正当性判断部６４−２は、自機器２のメモリ空き容量は充分に存在するか否かを判定する。
【０１８４】
メモリ空き容量が充分であるとは、図１２の「自機器２の機器情報」の「空きメモリ」の記述サイズが、機能Qを実行するために必要なサイズであることを指す。
【０１８５】
機能Qを実行するために必要なサイズは、機能Qがメモリに展開されたときのプログラムサイズと、プログラム実行に必要なヒープやスタックのメモリサイズとの加算サイズであって、それぞれ図１３の「機能Qの機能情報」から取得可能である。即ち、図１３の「機能Qの機能情報」の「プログラムサイズ」の項目には、機能Qがメモリに展開されたときのプログラムサイズが記述される。例えば図１３の例では、「プログラムサイズ」には“100Mbit”が記述されている。また、「メモリサイズ」の項目には、プログラム実行に必要なヒープやスタックのメモリサイズが記述される。例えば図１３の例では、“500Mbit/100Mbit”が記述されている。なお、「機能Qの機能情報」のその他の項目については後述する。
【０１８６】
そこで、ステップＳ７において、情報処理装置２の分散正当性判断部６４−２は、「機能Qの機能情報」の「プログラムサイズ」の記述値100Mbit”および「メモリサイズ」の記述値“500Mbit/100Mbit”に基づいて、機能Qを実現するために必要なサイズは700(=100+500+100)Mbitであると算出する。そして、分散正当性判断部６４−２は、機能Qを実現するために必要なサイズである700Mbitと、「自機器２の機器情報」の「空きメモリ」の記述値である“100Mbit”とを比較し、その比較の結果として、自機器２のメモリ空き容量は充分に存在しないと判定し、処理をステップＳ８に進める。
【０１８７】
即ち、自機器２のメモリ空き容量が充分に存在しない場合、機能Qの実行のためには周辺機器１との分散処理が必要になる。即ち、ステップＳ７の処理でNOであると判定されると、分散処理の正当性を判断するための処理はさらに継続される必要がある。そこで、ステップＳ７の処理でNOであると判定されると、ステップＳ８に処理が進められるのである。
【０１８８】
換言すると、仮に「自機器２の機器情報」の「空きメモリ」の記述値が“700Mbit”を超えているような場合、機能Qの実行のために分散処理は特に必須ではなくなり、このため、ステップＳ７の処理でYESであると判定されて、「分散準備処理」は終了となる。この場合、上述したように、機能Qは情報処理装置２のみにより実行される。
【０１８９】
なお、周辺機器１側にもメモリ空き容量が充分に存在しないと機能Qの分散処理の実行は不可能である。そこで、図４には図示されていないが実際には、分散正当性判断部６４−２は、自機器２と全く同様に、周辺機器１に対しても、そのメモリ空き容量が充分に存在するか否かを判定すると好適である。
【０１９０】
そして、分散正当性判断部６４−２は、周辺機器１側にメモリ空き容量が充分に存在しないと判定した場合、「機能Qの実行は不可能」といったメッセージをユーザに呈示する等、所定のエラー処理を実行した後、「分散準備処理」を終了させると好適である。
【０１９１】
ただし、いまの場合には、ステップＳ３の処理で取得された図１１の「周辺機器１の機器情報」の「空きメモリ」の記述値は“800Mbit”とされており、周辺機器１のメモリ空き容量が充分に存在すると判定されることになる。即ち、自機器２と周辺機器１との分散処理により、機能Qの実行は可能であると判定されることになる。
【０１９２】
従って、周辺機器１側の「空きメモリ」のチェックが行われたとしても、いまの場合結局、処理はステップＳ８に進むことになる。
【０１９３】
ステップＳ８において、情報処理装置２の分散正当性判断部６４−２は、自機器２と周辺機器１とのそれぞれの予測実行時間を算出する。
【０１９４】
ここでは例えば、機器の性能に依存しない正規化された値で表現された「機能Qの予測実行時間」が、ステップＳ８の処理で算出されるとする。具体的には例えば、「機能Qの予測実行時間」は、「機能Qの標準実行時間」÷「機器の性能比（対100MIPS）」で演算される。「機能Qの標準実行時間」は、「機能Qの機能情報」の「実行時間」に記述されている。例えば図１３の例では、「実行時間」には“15sec”が記述されている。また、「機器の性能比（対100MIPS）」は、各機器の機器情報の「CPU」のMIPS値として記述されている。例えば図１１の例の「周辺機器１の機器情報」では、「CPU」のMIPS値として500が記述されている。従って、周辺機器１側で機能Qを実行する場合の「機能Qの予測実行時間」は3sec(=15/(500/100)sec)となる。同様に、図１２の例の「自機器２の機器情報」では、「CPU」のMIPS値として300が記述されている。従って、自機器２で機能Qを実行する場合の「機能Qの予測実行時間」は5sec(15/(300/100)sec)となる。
【０１９５】
ステップＳ９において、情報処理装置２の分散正当性判断部６４−２は、要求リアルタイム性能と比較するための値を算出する。
【０１９６】
要求リアルタイム性能とは、例えば、実行対象の機能が被分割機能であれば、他分割機能要素との結合度を示す許容通信を指す。その他例えば、割込み遅延時間、プログラムメモリ転送時間、スタックメモリ転送時間、および、ヒープメモリ転送時間等も、要求リアルタイム性能のひとつである。さらに例えば、分割元や他分割機能要素とデータの関連性を示すデータ結合度等も、要求リアルタイム性能のひとつである。
【０１９７】
これらの要求リアルタイム性能は、「機能Qの機能情報」の「要求リアルタイム性能」に記述（定義）されている。例えば、図１３の例では、「要求リアルタイム性能」には、“許容スタックメモリ転送時間:50sec”が記述されている。即ち、図１３の例では、要求リアルタイム性能として、許容スタックッメモリ転送時間のみが定義されている。
【０１９８】
従って、この場合、情報処理装置２の分散正当性判断部６４−２は、ステップＳ９において、要求リアルタイム性能と比較するための値として「略現在のスタックメモリ転送時間」を算出することになる。「略現在のスタックメモリ転送時間」は例えば、「転送スタックメモリ量(bit)」÷「通信インフラの略現在の帯域（略現在の通信速度）(bps)」で算出可能である。「転送スタックメモリ量(bit)」は、「機能Qの機能情報」の「メモリサイズ」のスタックメモリサイズに記述されている。例えば図１３の例では、「メモリサイズ」には“100Mbit”が記述されている。また、「通信インフラの略現在の帯域（略現在の通信速度）(bps)」は、上述したステップＳ４の処理で算出済みである、いまの場合、上述したように2048(kbps)が算出されている。従って、「略現在のスタックメモリ転送時間」として48.82sec(=100M/2048k)が算出される。
【０１９９】
ステップＳ１０において、情報処理装置２の分散正当性判断部６４−２は、予測実行時間や要求リアルタイム性能等の観点から、自機器２と周辺機器１との機能Qの分散処理は可能であるか否かを判定する。
【０２００】
具体的には例えば、ステップＳ９の処理で「略現在のスタックメモリ転送時間」として48.82sec(=100M/2048k)が算出されており、かつ、図１３の「機能Qの機能情報」には要求スタックメモリ転送時間が“50sec”と定義されていることから、分散正当性判断部６４−２は、要求リアルタイム性能の観点からは、自機器２と周辺機器１との機能Qの分散処理は可能であると判定することができる。
【０２０１】
なお、「予測実行時間や要求リアルタイム性能等の観点から」と「等」を記述したのは、予測実行時間や要求リアルタイム性能以外の観点からも、自機器２と周辺機器１との機能Qの分散処理は可能であるか否かを判定することが当然ながら可能であるからである。具体的には例えば、図１３の例では定義されていないが、「機能Qの機能情報」には「オプション」の項目が設けられている。従って、この「オプション」の記述値に基づいても、自機器２と周辺機器１との機能Qの分散処理は可能であるか否かを判定することが可能であるからである。なお、「オプション」の項目には、「内容」に示される通り、バイトアラインする等の特殊Load方法に関する情報が記述される。
【０２０２】
ステップＳ１０において、自機器２と周辺機器１との機能Qの分散処理は不可能であると判定された場合、「分散準備処理」は終了となる。この場合、ステップＳ７の処理で自機器２のメモリ空き容量は充分に存在しないと既に判定されていることから、機能Qは、分散処理のみならず、自機器２単体での実行も不可能であることがわかる。そこで、このような場合、図４には図示していないが、自機器２は、「機能Qの実行は不可能」といったメッセージをユーザに呈示する等、所定のエラー処理を実行した後、「分散準備処理」を終了させると好適である。
【０２０３】
これに対して、ステップＳ１０において、自機器２と周辺機器１との機能Qの分散処理は可能であると判定された場合、処理はステップＳ１１に進む。
【０２０４】
ステップＳ１１において、情報処理装置２の分散正当性判断部６４−２は、周辺機器１に分散実行させるべき機能要素を決定する。
【０２０５】
なお、以下、周辺機器に分散実行させるべき機能要素を、周辺機器機能要素と称する。一方、自機器に分散実行させるべき機能要素を、自機器機能要素と称する。
【０２０６】
具体的には例えば、上述したステップＳ５とＳ６の処理で、「周辺機器１は、実行対象の機能Qを構成する機能要素A,D,E,Fのうちの少なくとも１つを保有し、かつ、略現在それを実行可能である」ということが、分散機器検索部６３−２により認識されて分散正当性判断部６４−２に既に通知されている。
【０２０７】
また、ここでは、機能Pと機能Qとの同一機能要素や異なる機能要素は、バージョンにより判定可能であるとする。即ち、バージョン“1.1b”の機能Qのうちの、機能要素A,Dが、バージョン“1.1a”の機能Pにも含まれており、機能E,Fが、機能Pには含まれていないことが、分散正当性判断部６４−２にとって既知のことであるとする。
【０２０８】
即ち、ステップＳ１１の処理開始時点で、分散正当性判断部６４−２は、機能Qを構成する機能要素A,D,E,Fのうちの機能要素A,Dが、周辺機器１で略現在実行可能であることがわかっているとする。
【０２０９】
この場合、ステップＳ１１において、分散正当性判断部６４−２は、図１４に示されるように、機能Qのうちの、機能要素A,Dを周辺機器１機能要素として決定し、残りの機能E,Fを自機器２機能要素として決定することが可能である。
【０２１０】
なお、機能Pと機能Qとの同一機能要素や異なる機能要素が、バージョンにより判定不可能な場合、例えば、上述したように、機能要素単位で識別IDを付し、この機能要素単位の識別IDを比較することで判定可能になる。
【０２１１】
以上説明したように、分散正当性判断部６４−２は、結局、ステップＳ７乃至Ｓ１１の処理を実行することで、自機器２と周辺機器１とのそれぞれが略現在要求しているハードウエア条件、実行対象の機能Qが略現在要求しているソフトウエア条件、および、通信インフラの略現在の帯域（略現在の通信速度）に基づいて、自機器２と周辺機器１とによる機能Qの分散処理の正当性を判断し、正当性があると判断した場合、その機能Qを構成する各機能要素のそれぞれを、自機器１と周辺機器２とのうちのいずれか一方に割り振る。
【０２１２】
なお、ここで言う、自機器２と周辺機器１とのそれぞれが略現在要求しているハードウエア条件、および、実行対象の機能Qが略現在要求しているソフトウエア条件とは、情報述したように、「周辺機器１の機器情報（図１１参照）」、「自機器２の機器情報（図１２参照）」、および、「機能Qの機能情報（図１３参照）」の記述値のうちの少なくとも１つを指す。
【０２１３】
このようにして、ステップＳ１０の処理で、自機器２と周辺機器１との機能Qの分散処理は可能であると判定されて、ステップＳ１１の処理で周辺機器１機能要素が決定されると、ステップＳ１０およびＳ１１の処理結果は、情報処理装置２の分散正当性判断部６４−２から分散機能実行部６５−２に通知される。
【０２１４】
すると、図１０に示されるように、情報処理装置２は、図４の「分散準備処理」を終了させ、図６の「実行元による機能実行処理」を開始させる。
【０２１５】
即ち、情報処理装置２の分散機能実行部６５−２は、ステップＳ４１において、周辺機器１との間で分散実行すると判定して、処理を図７のステップＳ４５に進める。
【０２１６】
ステップＳ４５において、情報処理装置２の分散機能実行部６５−２は、機能Qに含まれる機能要素A,D,E,Fのうちの周辺機器１機能要素A,Dについて、その実行依頼を周辺機器１に対して発行する。
【０２１７】
この間、図８の「依頼先による機能実行処理」のステップＳ７１において、情報処理装置１の機器情報提供部６５−１は、実行依頼が情報処理装置２から発行されたか否かを判定している。
【０２１８】
なお、当然ながら、図８の「依頼先による機能実行処理」を実行する情報処理装置１から見た場合、情報処理装置２が周辺機器となり、情報処理装置１が自機器となる。ただし、これまで、実行元である情報処理装置２に着目して説明を行っており、ここで、図面の記載通りに説明すること、即ち、周辺機器と自機器とを逆転して説明することはいたずらに混乱を招くことになる。そこで、図８の「依頼先による機能実行処理」を説明している範囲内では、自機器や周辺機器といった名称は使用せずに説明していく。これに伴い、図８の「依頼先による機能実行処理」を説明している範囲内では、周辺機器１機能要素A,Dを、依頼機能要素A,Dと称することにする。
【０２１９】
実行依頼が発行されない限り、ステップＳ７１において、実行依頼が情報処理装置２から発行されていないと判定されて、処理はステップＳ７１に戻され、実行依頼が情報処理装置２から発行されたか否かが再度判定される。即ち、情報処理装置２から実行依頼が発行されるまで、ステップＳ７１の判定処理が繰り返される。
【０２２０】
そして、依頼機能要素A,Dの実行依頼が情報処理装置２から発行されると、ステップＳ７１においてYESであると判定されて、処理はステップＳ７２に進む。
【０２２１】
ステップＳ７２において、情報処理装置１の分散機能実行部６５−１は、図１４に示されるように、データx（以下、機能実行必要データxと称する）を利用して、依頼機能要素A,Dを少なくとも実行する。「少なくとも」と記述したのは、このとき、分散機能実行部６５−１は、機能要素B,Cも実行する可能性があるからである。
【０２２２】
ステップＳ７３において、情報処理装置１の分散機能実行部６５−１は、機能実行必要データxと、依頼機能要素A,Dの実行結果とを、ネットワークインタフェース１２−１とネットワーク３とを介して情報処理装置２に送信する。
【０２２３】
この間、情報処理装置２の分散機能実行部６５−２は、ステップＳ４６において、図１４に示されるように、機能Qに含まれる機能要素A,D,E,Fのうちの、自機器２機能要素E,Fをロードし、ステップＳ４７において、機能Qに含まれるデータx,wのうちのデータw（以下、機能実行結果データwと称する）をロードする。
【０２２４】
ステップＳ４８において、情報処理装置２の分散機能実行部６５−２は、機能実行必要データxと、周辺機器１機能要素A,Dの実行結果とを、周辺機器１からネットワークインタフェース１２−１２を介して取得する。
【０２２５】
図７のステップＳ４９において、情報処理装置２の分散機能実行部６５−２は、周辺機器１から取得された機能実行必要データxは、そのままの状態で使用可能であるか否かを判定する。
【０２２６】
情報処理装置２の分散機能実行部６５−２は、図７のステップＳ４９において、周辺機器１から取得された機能実行必要データxは、そのままの状態で使用不可能である（使用可能ではない）と判定した場合、図７のステップＳ５０において、周辺機器１から取得された機能実行必要データxと、自機器２で保有している機能実行必要データxとを合成する。その後、処理はステップＳ５１に進む。
【０２２７】
即ち、機能実行必要データxが情報処理装置１，２の相互で変更される可能性がある場合には、情報処理装置１，２のうちの何れかがマスタとなって、各機能実行必要データxのそれぞれを管理するか、或いは、各機能実行必要データxのそれぞれに時間情報を付けるかして、各機能実行必要データxを最後にマージする処理が必要になる。この処理が、図７の例ではステップＳ５０の処理に対応する。
【０２２８】
これに対して、図７のステップＳ４９において、周辺機器１から取得された機能実行必要データxは、そのままの状態で使用可能であると判定された場合、図７のステップＳ５０の処理は実行されずに、そのまま処理はステップＳ５１に進む。
【０２２９】
ステップＳ５１において、情報処理装置２の分散機能実行部６５−２は、機能実行必要データxを利用して、図１４に示されるように、自機器２機能要素E,Fを実行する。
【０２３０】
なお、ここでは、説明の簡略上、ステップＳ５１の処理は、ステップＳ４８の処理の後とされているが、ステップＳ４８とＳ５１の処理の順番は、後述するステップＳ５２の前であれば特に限定されない。即ち、ステップＳ５１の処理がステップＳ４８の処理の前に実行されることもあるし、ステップＳ４８とＳ５１の処理がほぼ同時に実行されることもある。
【０２３１】
ステップＳ５２において、情報処理装置２の分散機能実行部６５−２は、ステップＳ４８の処理で取得された周辺機器１機能要素A,Dの実行結果と、ステップＳ５１の処理により実行された自機器２機能要素E,Fの実行結果とを合成することで、機能Qを実行する。
【０２３２】
ステップＳ５３において、情報処理装置２の分散機能実行部６５−２は、機能Qの実行の終了が指示されたか否かを判定する。
【０２３３】
なお、ステップＳ５３の判定条件は特に限定されず、例えば、ユーザからの終了指示があったことを判定条件としてもよいし、或いは、所定の単位量のデータ毎に機能Qが実行される場合には、１単位量の最後のデータに対する機能Qの実行が完了したことを判定条件としてもよい。
【０２３４】
ステップＳ５３において、機能Qの実行の終了がまだ指示されていないと判定された場合、処理はステップＳ４８に戻され、それ以降の処理が繰り返される。
【０２３５】
即ち、この間、情報処理装置１の分散機能実行部６５−１は、ステップＳ７３の処理で、機能実行必要データxと、依頼機能要素A,Dの実行結果とを情報処理装置２に送信すると、ステップＳ７４において、機能実行停止依頼が情報処理装置２から発行されたか否かを判定する。そして、分散機能実行部６５−１は、それが発行されていないと判定すると、処理をステップＳ７２に戻し、それ以降の処理を繰り返す。即ち、機能実行停止依頼が情報処理装置２から発行されるまで、ステップＳ７２乃至Ｓ７４のループ処理が繰り返され、機能実行必要データxと、依頼機能要素A,Dの実行結果とが、情報処理装置１から情報処理装置２に対して順次（例えば、所定の１単位量のデータ毎に）転送されてくる。
【０２３６】
そこで、情報処理装置２の分散機能実行部６５−２も、ステップＳ４８乃至Ｓ５３のループ処理を繰り返すことで、周辺機器１から順次転送されてくる周辺機器１機能要素A,Dの実行結果と、自分自身で順次実行した自機器２機能要素E,Fの実行結果とを順次合成していくことで、機能Qを順次（例えば、所定の１単位量のデータ毎に）実行する。
【０２３７】
その後、機能Qの実行の終了が指示されると、次のステップＳ５３の処理でYESであると判定されて、処理はステップＳ５４に進む。
【０２３８】
ステップＳ５４において、情報処理装置２の分散機能実行部６５−２は、機能実行停止依頼を、周辺機器１に対してネットワークインタフェース１２−２とネットワーク３を介して発行する。これにより、図６と図７の「実行元による機能実行処理」は終了となる。
【０２３９】
一方、情報処理装置１の分散機能実行部６５−１は、その機能実行停止依頼をネットワークインタフェース１２−１を介して取得すると、次のステップＳ７４の処理でYESであると判定する。これにより、図８の「依頼先による機能実行処理」も終了となる。
【０２４０】
以上、図３乃至図１４を参照して、情報処理装置１，２とで実行される機能Qの分散処理の詳細について説明した。即ち、図３乃至図１４を参照して説明した分散処理とその前処理こそが、本発明の分散処理とその前処理の一例である。
【０２４１】
係る本発明の分散処理とその前処理が実行されることで、上述した従来の課題を解決できる効果を奏することが可能になる。即ち、上述したように、情報処理装置１または２は、自機器と周辺機器とのそれぞれが略現在要求しているハードウエア条件、実行対象の機能が略現在要求しているソフトウエア条件、および、通信インフラの略現在の帯域（略現在の通信速度）に基づいて、自機器と周辺機器とによる機能の分散処理の実行の正当性を判断し、正当性があると判断した場合、その機能を構成する各機能要素のそれぞれを、自機器と周辺機器とのうちのいずれか一方に割り振る、といった分散処理の前処理を実行することができる。これにより、分散機器の状態やネットワークの環境の変化を考慮した分散処理を行うことができる、という効果を奏することが可能になる。
【０２４２】
さらに、情報処理装置１または２は、上述したように、実行対象の機能を構成する機能要素のうちの少なくとも１つを保有し、かつ、略現在それを実行可能な周辺機器を検索し、機能要素の割り振りを行う際に、その周辺機器で略現在実行可能な機能要素をその周辺機器に割り振る、といった分散処理の前処理を実行することができる。これによりさらに例えば、次の第１の効果と第２の効果を奏することが可能になる。
【０２４３】
第１の効果とは、実行リソースを二重にメモリ（プログラム実行領域を有するメモリ）に展開する必要がなくなるために、例えば上述した例では機能Qのうちの機能要素A,Dを情報処理装置1,2の両方のメモリに展開する必要がなくなるために、他のプログラムを実行できる等のメモリリソースの有効活用が可能になるという効果である。
【０２４４】
第２の効果とは、周辺機器機能要素の依頼先である周辺機器の状態は、例えば上述した図１０の例の情報処理装置１の状態は、その周辺機器機能要素を既に実行できる状態であるため、それを改めてロードする必要がなく、その結果、ロードするための時間が削減可能になるという効果である。
【０２４５】
なお、本発明に係る分散処理の容易な理解を目的として、上述した例では、２台の情報処理装置１，２からなる情報処理システムが利用され、機能P,Qが利用された。ただし当然ながら、３台以上の情報処理装置からなる情報処理システムであっても、上述した一連の処理を基本的に実行することで、所定の機能の上述した分散処理の実行が容易に可能になる。また、機能P,Qのみならず、何れの機能であっても、２以上の情報処理装置からなる情報処理システムが上述した一連の処理を基本的に実行することで、その機能の上述した分散処理の実行が容易に可能になる。
【０２４６】
また、上述した例では、機器情報は基本的に自機器に格納されており、図４の「分散準備処理」が行われた時点、より正確には、ステップＳ３の終了時点で、周辺機器の機器情報が自機器に取得される。即ち、自機器と周辺機器との機器情報の共有タイミングは、上述した例ではステップＳ３の終了時点とされている。ただし当然ながら、機器情報の共有タイミングは、上述した例に限定されず、任意のタイミングでよい。例えば、自機器がロードしたプログラムやデータのリストを分散処理可能な機器に対して、任意のタイミングでブロードキャスト（broadcast）通信することにより、情報共有しておくこともできる。
【０２４７】
さらに、機器情報に含まれる機能の識別IDは、上述した例では、プログラム実行可能エリアへダウンロードされた機能の識別IDとされたが、共有実行可能な機能の識別IDとされてもよい。
【０２４８】
さらにまた、上述した例では、機能がモジュール化されている場合におけるその機能の分散処理を行うための一連の処理とされたが、機能が階層化されている場合であっても、この一連の処理と基本的に同様の処理を実行することで、その機能の分散処理が可能になる。
【０２４９】
ところで、上述した一連の処理は、上述したようにソフトウエアにより実行させることもできるが、ハードウエアにより実行させることができる。
【０２５０】
また、上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０２５１】
このようなプログラムを含む記録媒体は、図１に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フロッピディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini Disk）を含む）、もしくは半導体メモリなどよりなるリムーバブル記録媒体（パッケージメディア）１６−１や１６−２により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているメインメモリ１３−１や１３−２や、記憶装置１４−１や１４−２に含まれるハードディスクなどで構成される。
【０２５２】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２５３】
また、本明細書において、システムとは、複数の装置や処理部により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２５４】
【図１】本発明が適用される情報処理システム、即ち、本発明が適用される情報処理装置からなる情報処理システムのハードウエア構成例を示すブロック図である。
【図２】図１の情報処理システムの機能的構成例を示すブロック図である。
【図３】図１と図２の２台の情報処理装置に保有されている機能プログラムの例を示す図である。
【図４】図１と図２の情報処理装置のうちの、機能の実行元の情報処理装置が実行する「分散準備処理」の例を説明するフローチャートである。
【図５】図１と図２の情報処理装置のうちの、「分散準備処理」を実行する情報処理装置以外の情報処理装置が実行する「機器情報送信処理」の例を説明するフローチャートである。
【図６】図１と図２の情報処理装置のうちの、機能の実行元の情報処理装置が実行する「実行元による機能実行処理」の例を説明するフローチャートである。
【図７】図１と図２の情報処理装置のうちの、機能の実行元の情報処理装置が実行する「実行元による機能実行処理」の例を説明するフローチャートである。
【図８】図１の情報処理装置のうちの、「実行元による機能実行処理」を実行する情報処理装置から依頼された情報処理装置が実行する「依頼先による機能実行処理」の例を説明するフローチャートである。
【図９】図１と図２の２台の情報処理装置が図３の機能の分散処理を行う場合における、その２台の処理の関係例を説明するアローチャートである。
【図１０】図１と図２の２台の情報処理装置が図３の機能の分散処理を行う場合における、その２台の処理の関係例を説明するアローチャートである。
【図１１】図１と図２の２台の情報処理装置のうちの一方の機器情報の例を示す図である。
【図１２】図１と図２の２台の情報処理装置のうちの他方の機器情報の例を示す図である。
【図１３】図３の２つの機能のうちの一方の機能情報の例を示す図である。
【図１４】図１１の処理を模式的に説明する図である。
【符号の説明】
【０２５５】
１，２  情報処理装置  ３  ネットワーク，  １１−１，１１−２  情報処理コントローラ，  １２−１，１２−２  ネットワークインタフェース，  １３−１，１３−２  メインメモリ，  １４−１，１４−２  記憶装置，  １５−１，１５−２  ドライブ，  １６−１，１６−２  リムーバブル記録媒体，  ２１−１，２１−２  MPU，  ２２−１，２２−２  メモリ，  ３１−１乃至３３−１，３１−２乃至３３−２  SPU，  ４１−１乃至４３−１，４１−２乃至４３−２  メモリ，  ５１−１，５１−２  バス，  ６１−１，６１−２  機能格納部，  ６２−１，６２−２  機器情報格納部，  ６３−１，６３−２  分散機器検索部，  ６４−１，６４−２  分散正当性判断部，  ６５−１，６５−２  分散機能実行部，  ６６−１，６６−２  機器情報提供部
【図１】
2006092432.tif 000003
【図２】
2006092432.tif 000004
【図３】
2006092432.tif 000005
【図４】
2006092432.tif 000006
【図５】
2006092432.tif 000007
【図６】
2006092432.tif 000008
【図７】
2006092432.tif 000009
【図８】
2006092432.tif 000010
【図９】
2006092432.tif 000011
【図１０】
2006092432.tif 000012
【図１１】
2006092432.tif 000013
【図１２】
2006092432.tif 000014
【図１３】
2006092432.tif 000015
【図１４】
2006092432.tif 000016