(57)【要約】【課題】既に行われているデータ処理が完了するのを待つこと無く、新たに要求されたデータ処理を迅速に開始することを可能とするネットワークシステム、情報処理装置、マスタ装置および処理継承方法を提供する。【解決手段】情報処理を実行する実行手段と、実行手段による第１の処理の実行中に第２の処理の実行要求があったとき、他の情報処理装置に第１の処理を継承するための継承処理を行う継承手段とを備え、上記の実行手段は、継承処理が終了したのち第２の処理の実行を開始する。【選択図】        図１
2005327093.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置を含むネットワークシステムにおける情報処理装置であって、
情報処理を実行する実行手段と、
前記実行手段による第１の処理の実行中に第２の処理の実行要求があったとき、他の情報処理装置に前記第１の処理を継承するための継承処理を行う継承手段と
を備え、
前記実行手段は、前記継承処理が終了したのち第２の処理の実行を開始する
ことを特徴とする情報処理装置。
【請求項２】
前記実行手段は、前記継承処理の実行期間中に、前記第２の処理の開始に必要な初期処理を実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記実行手段は、前記継承処理の実行期間中に、前記他の情報処理装置が第１の処理の実行を開始した後においても、所定の期間にわたって前記第１の処理の実行を継続する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記複数の情報処理装置の中から、前記第１の処理の実行に適した他の情報処理装置を選定する選定手段
をさらに備えたことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記選定手段は、前記第２の処理の実行要求を受けたときに、前記実行手段による前記第１の処理および第２の処理の並列実行が可能か否かを判断し、これが不可能であると判断したときに他の情報処理装置の選定を行う
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記継承処理は、
前記選定された情報処理装置に対して前記第１の処理の継承を要求する処理と、
前記第１の処理の継承を要求したのち、前記実行手段による前記第１の処理の実行を中断させる処理と
を含むことを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記複数の情報処理装置が、複数のスレーブ装置と、これらのスレーブ装置を管理するマスタ装置とを含む場合において、
一のスレーブ装置として機能する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記継承処理は、前記第１の処理を他のスレーブ装置に継承させることを求める継承要求を前記マスタ装置に送る処理を含む
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記継承処理はさらに、自スレーブ装置に関する装置情報を前記マスタ装置に送る処理を含む
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
複数の情報処理装置を含むネットワークシステムにおける情報処理装置であって、
他の情報処理装置において実行されている第１の処理を継承することを求める継承要求を受けたとき、前記第１の処理の実行に必要な前処理を行う前処理手段と、
前記前処理が終了したのち、前記第１の処理の実行を開始する第２の実行手段と
を備えたことを特徴とする情報処理装置。
【請求項１１】
複数の情報処理装置を含むネットワークシステムであって、
前記複数の情報処理装置のうち一の情報処理装置は、
情報処理を実行する実行手段と、
前記実行手段による第１の処理の実行中に第２の処理の実行要求があったとき、他の情報処理装置に前記第１の処理を継承するための継承処理を行う継承手段と
を備えるとともに、前記継承処理が終了したのち第２の処理の実行を開始するように構成され、
前記複数の情報処理装置のうち他の情報処理装置は、
前記第１の処理を継承することを求める継承要求を受けたとき、前記第１の処理の実行に必要な前処理を行う前処理手段と、
前記前処理が終了したのち、前記第１の処理の実行を開始する第２の実行手段と
を備えたことを特徴とするネットワークシステム。
【請求項１２】
前記複数の情報処理装置が、複数のスレーブ装置と、これらのスレーブ装置を管理するマスタ装置とを含む場合において、
前記一の情報処理装置および前記他の情報処理装置がそれぞれスレーブ装置として機能する
ことを特徴とする請求項１１に記載のネットワークシステム。
【請求項１３】
前記一の情報処理装置としての一のスレーブ装置における前記継承手段が実行する前記継承手段は、前記第１の処理を他のいずれかのスレーブ装置に継承させることを求める継承要求を前記マスタ装置に送る処理を含み、
前記マスタ装置は、
前記一のスレーブ装置から前記継承要求を受けたときに、前記複数のスレーブ装置の中から、前記第１の処理の実行に適した他のスレーブ装置を選定する第２の選定手段と、
選定したスレーブ装置に対して前記第１の処理の継承を要求する継承要求手段と
を備えたことを特徴とする請求項１２に記載のネットワークシステム。
【請求項１４】
前記第２の選定手段は、各スレーブ装置に関する装置情報を収集し、これらの装置情報に基づいて、前記第１の処理の実行に適した他のスレーブ装置を選定する
ことを特徴とする請求項１３に記載のネットワークシステム。
【請求項１５】
複数のスレーブ装置と、これらのスレーブ装置を管理するマスタ装置とを含むネットワークシステムにおけるマスタ装置であって、
前記複数のスレーブ装置のうち一のスレーブ装置から、そのスレーブ装置において実行されている第１の処理を継承することを求める継承要求を受けたとき、前記複数のスレーブ装置の中から、前記第１の処理の実行に適した他のスレーブ装置を選定する第２の選定手段と、
選定したスレーブ装置に対して前記第１の処理の継承を要求する継承要求手段と
を備えたことを特徴とするマスタ装置。
【請求項１６】
前記第２の選定手段は、各スレーブ装置に関する装置情報を収集し、これらの装置情報に基づいて、前記第１の処理の実行に適した他のスレーブ装置を選定する
ことを特徴とする請求項１５に記載のマスタ装置。
【請求項１７】
複数の情報処理装置を含むネットワークシステムに適用される方法であって、
前記複数の情報処理装置のうち第１の処理の実行中の一の情報処理装置において、第２の処理の実行要求がなされたとき、他の情報処理装置に前記第１の処理を継承するための継承処理を行い、この継承処理が終了したのち第２の処理の実行を開始し、
前記複数の情報処理装置のうち他の情報処理装置において、前記第１の処理を継承することを求める継承要求を受けたとき、前記第１の処理の実行に必要な前処理を行い、この前処理が終了したのち、前記第１の処理の実行を開始する
ことを特徴とする処理継承方法。
【請求項１８】
前記一の情報処理装置において、
前記継承処理の実行期間中に、前記第２の処理の開始に必要な初期処理を実行する
ことを特徴とする請求項１７に記載の処理継承方法。
【請求項１９】
前記一の情報処理装置において、
前記継承処理の実行期間中に、前記他の情報処理装置が第１の処理の実行を開始した後においても、所定の期間にわたって前記第１の処理の実行を継続する
ことを特徴とする請求項１７に記載の処理継承方法。
【請求項２０】
前記一の情報処理装置による前記継承処理において、
前記一の情報処理装置による前記第１および第２の処理の並列実行が可能か否かを判断し、これが不可能であると判断したとき、前記第１の処理を実行させるのに適した情報処理装置を選定する
ことを特徴とする請求項１７に記載の処理継承方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の情報処理装置を含むネットワークシステム、このようなネットワークシステムに含まれる情報処理装置、このようなネットワークシステムに適用される処理継承方法、ならびにマスタスレーブ方式のネットワークシステムにおけるマスタ装置に関する。
【背景技術】
【０００２】
近年、ネットワークの普及につれ、情報機器、家電機器、およびゲーム機器（以下、情報処理装置という）のネットワーク化が進んでいる。そのような多様な目的と機能を持った様々な情報処理装置は、一般的には、自身の処理能力に応じてデータ処理を受け付ける一方、自身の処理能力を超えるデータ処理を拒否するというアルゴリズムを有していた。そのような情報処理装置は、例えば特許文献１において提案されている。
【特許文献１】特開平６−１６８１４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、例えば、あるデータ処理を要求しようとしたが、そのデータ処理を行うことができる情報処理装置はすでに別のデータ処理を行っているので、空いている処理能力だけでは新たに要求するデータ処理を行うことができない、というケースを考える。このようなケースにおいて、その情報処理装置において新たに要求しようとするデータ処理を行うには、既に行われているデータ処理が完了した後に新たなデータ処理を要求するという方法が考えられる。しかし、この方法では新たに要求しようとするデータ処理を直ちに行うことができず、処理に重大な遅延が生ずる。
【０００４】
本発明は、かかる問題点に鑑みてなされたものであり、その目的は、既に行われているデータ処理が完了するのを待つこと無く、新たなデータ処理を迅速に開始することを可能とするネットワークシステム、情報処理装置、マスタ装置および処理継承方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の第１の情報処理装置は、情報処理を実行する実行手段と、実行手段による第１の処理の実行中に第２の処理の実行要求があったとき、他の情報処理装置に第１の処理を継承するための継承処理を行う継承手段とを備え、上記の実行手段は、継承処理が終了したのち第２の処理の実行を開始するようにしたものである。
【０００６】
本発明の第２の情報処理装置は、他の情報処理装置において実行されている第１の処理を継承することを求める継承要求を受けたとき、第１の処理の実行に必要な前処理を行う前処理手段と、前処理が終了したのち、第１の処理の実行を開始する第２の実行手段とを備えたものである。
【０００７】
本発明のネットワークシステムは、複数の情報処理装置を含んで構成されるものである。この複数の情報処理装置のうち一の情報処理装置は、情報処理を実行する実行手段と、実行手段による第１の処理の実行中に第２の処理の実行要求があったとき、他の情報処理装置に第１の処理を継承するための継承処理を行う継承手段とを備えるとともに、前記継承処理が終了したのち第２の処理の実行を開始するようにしたものである。上記の複数の情報処理装置のうち他の情報処理装置は、第１の処理を継承することを求める継承要求を受けたとき、第１の処理の実行に必要な前処理を行う前処理手段と、前処理が終了したのち、第１の処理の実行を開始する第２の実行手段とを備えたものである。
【０００８】
本発明のマスタ装置は、複数のスレーブ装置のうち一のスレーブ装置から、そのスレーブ装置において実行されている第１の処理を継承することを求める継承要求を受けたとき、複数のスレーブ装置の中から、第１の処理の実行に適した他のスレーブ装置を選定する第２の選定手段と、選定したスレーブ装置に対して第１の処理の継承を要求する継承要求手段とを備えたものである。
【０００９】
本発明の処理継承方法は、複数の情報処理装置のうち第１の処理の実行中の一の情報処理装置において、第２の処理の実行要求がなされたとき、他の情報処理装置に第１の処理を継承するための継承処理を行い、この継承処理が終了したのち第２の処理の実行を開始し、複数の情報処理装置のうち他の情報処理装置において、第１の処理を継承することを求める継承要求を受けたとき、第１の処理の実行に必要な前処理を行い、この前処理が終了したのち、第１の処理の実行を開始するものである。
【００１０】
本発明の第１の情報処理装置では、実行手段による第１の処理の実行中に第２の処理の実行要求があったときは、継承手段によって、他の情報処理装置に第１の処理を継承するための継承処理が行われ、この継承処理が終了したのち、上記の実行手段によって、第２の処理の実行が開始される。ここで、「継承処理」とは、一の情報処理装置において実行中の処理の続きを他の情報処理装置に実行させるための一連の処理を指し、例えば、一の情報処理装置において実行中の処理の継承を他の情報処理装置に要求したのち、一の情報処理装置において実行中の処理を中断する処理などが継承処理に含まれる。
【００１１】
本発明の第２の情報処理装置では、他の情報処理装置において実行されている第１の処理を継承することを求める継承要求を受けたとき、前処理手段によって、第１の処理の実行に必要な前処理が行われる。この前処理が終了したのち、第２の実行手段によって、第１の処理の実行が開始される。ここで、「前処理」とは、例えば第２の処理にかかるプログラムをプロセッサにロードすることを指す。
【００１２】
本発明のネットワークシステムでは、一の情報処理装置において、実行手段による第１の処理の実行中に第２の処理の実行要求があったとき、継承手段によって、他の情報処理装置に第１の処理を継承するための継承処理が行われ、この継承処理が終了したのち、上記の実行手段によって、第２の処理の実行が開始される。一方、他の情報処理装置においては、第１の処理を継承することを求める継承要求を受けたとき、前処理手段によって、第１の処理の実行に必要な前処理が行われ、この前処理が終了したのち、第２の実行手段によって、第１の処理の実行が開始される。
【００１３】
本発明のマスタ装置では、複数のスレーブ装置のうち一のスレーブ装置から、そのスレーブ装置において実行されている第１の処理を継承することを求める継承要求を受けたとき、第２の選定手段によって、複数のスレーブ装置の中から、第１の処理の実行に適した他のスレーブ装置が選定される。継承要求手段によって、選定したスレーブ装置に対して第１の処理の継承が要求される。ここで、「マスタ装置」とは、スレーブ装置を管理する情報処理装置であって、スレーブ装置の親機に相当する情報処理装置を指す。「スレーブ装置」とは、マスタ装置に管理される情報処理装置であって、マスタ装置の子機に相当する情報処理装置を指す。
【００１４】
本発明の処理継承方法では、第１の処理の実行中の一の情報処理装置において、第２の処理の実行要求がなされたとき、他の情報処理装置に第１の処理を継承するための継承処理が行われる。この継承処理が終了したのち第２の処理の実行が開始される。一方、他の情報処理装置においては、第１の処理を継承することを求める継承要求を受けたとき、第１の処理の実行に必要な前処理が行われる。この前処理が終了したのち、第１の処理の実行が開始される。
【発明の効果】
【００１５】
本発明のネットワークシステム、第１の情報処理装置および処理継承方法によれば、既に行われているデータ処理が完了するのを待つこと無く、新たに要求されたデータ処理を迅速に開始することができる。
【００１６】
本発明の第２の情報処理装置によれば、他の情報処理装置から要求された処理の継承を確実に行うことができる。
【００１７】
本発明のマスタ装置によれば、情報処理装置間での処理の継承に要する処理を集中管理することにより、継承処理を円滑に行うことができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１９】
（ネットワークシステムの基本構成）
図１は、本実施の形態にかかるネットワークシステムの構成例を表すものである。なお、本実施の形態にかかる第１および第２の情報処理装置、マスタ装置ならびに処理継承方法は本実施の形態にかかるネットワークシステムによって具現化されるので、以下、併せて説明する。
【００２０】
このネットワークシステムは、ネットワーク９と、このネットワーク９に接続された複数の情報処理装置１Ａ〜１Ｄとを含んでいる。ネットワーク９は、例えばＬＡＮ（ローカルエリアネットワーク）である。情報処理装置１Ａ〜１Ｄは、例えばパーソナルコンピュータ等の情報機器、家電機器、およびゲーム機器などに相当する。
【００２１】
なお、以下の説明において、情報処理装置１Ｄは、スレーブ装置を管理するマスタ装置であって、スレーブ装置の親機に相当する情報処理装置とする。また、情報処理装置１Ａ〜１Ｃは、マスタ装置に管理されるスレーブ装置であって、マスタ装置の子機に相当する情報処理装置とする。
【００２２】
情報処理装置１Ａは情報処理コントローラ２０Ａを備える。情報処理コントローラ２０Ａは、メインプロセッサ２１Ａ−１、サブプロセッサ２２Ａ−１，２３Ａ−１，２４Ａ−１、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５ＡおよびＤＣ（ディスクコントローラ）２７Ａを有する。
【００２３】
ここで、情報処理コントローラ２０Ａは、主として、実行手段、第２の実行手段、選定手段、第２の選定手段、継承要求手段、継承手段および前処理手段の一具体例に相当する。
【００２４】
メインプロセッサ２１Ａ−１は、サブプロセッサ２２Ａ−１等によるプログラム実行（データ処理）のスケジュール管理と、情報処理装置１Ａの全般的な管理とを行うようになっているが、それ以外のことも行うようにしてもよい。その場合には、メインプロセッサ２１Ａ−１はサブプロセッサ２２Ａ−１等としても機能することになる。ここで、メインプロセッサ２１Ａ−１は、ＬＳ（ローカルストレージ）２１Ａ−２を有する。サブプロセッサ２２Ａ−１等は、１つでもよいが、複数とするが望ましい。本実施の形態では、複数とする。
【００２５】
サブプロセッサ２２Ａ−１等は、メインプロセッサ２１Ａ−１の制御によって並列的かつ独立に、プログラムを実行し、データを処理するようになっている。さらに、場合によってメインプロセッサ２１Ａ−１内のプログラムがサブプロセッサ２２Ａ−１等内のプログラムと連携して動作するように構成することもできる。サブプロセッサ２２Ａ−１等も、ＬＳ（ローカルストレージ）２２Ａ−２，２３Ａ−２，２４Ａ−２を有する。
【００２６】
ＤＭＡＣ２５Ａは、情報処理コントローラ２０Ａに接続されたメインメモリ２６Ａに格納されているプログラムおよびデータにアクセスするものである。メインメモリ２６Ａの例として、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）が挙げられる。ＤＣ（ディスクコントローラ）２７Ａは、情報処理コントローラ２０Ａに接続された外部記録部２８Ａ−１，２８Ａ−２に対してサブプロセッサ２２Ａ−１等が直接アクセスすることを可能にするための制御を行うものである。ここで、外部記録部２８Ａ−１等の例として、ハードディスク、ＭＯ（マグネトロオプティカルディスク），ＤＶＤ±ＲＷ（ディジタルヴァーサタイルディスクリライタブル）などの光ディスク、メモリディスク、ＳＲＡＭ（スタティックＲＡＭ）、ＲＯＭ（リードオンリメモリ）などが挙げられる。したがって、ＤＣ２７Ａは、ディスクコントローラと称するが、機能的には外部記録部コントローラである。
【００２７】
情報処理コントローラ２０Ａは、外部記録部２８Ａ−１等が複数接続されるように構成することができる。メインプロセッサ２１Ａ−１、サブプロセッサ２２Ａ−１等、ＤＭＡＣ２５ＡおよびＤＣ２７Ａは、バス２９Ａによって接続されている。
【００２８】
情報処理コントローラ２０Ａには、情報処理コントローラ２０Ａを備える情報処理装置１Ａをネットワーク９全体を通して一意的に識別できる識別子が、情報処理装置ＩＤとして割り当てられている。メインプロセッサ２１Ａ−１およびサブプロセッサ２２Ａ−１等に対しても同様に、それぞれを特定できる識別子が、メインプロセッサＩＤおよびサブプロセッサＩＤとして割り当てられている。情報処理コントローラ２０Ａは、ワンチップＩＣ（集積回路）として構成されていることが望ましい。
【００２９】
他の情報処理装置１Ｂ，１Ｃ，１Ｄもまた、上記と同様の構成を有する。なお、以下の説明において、情報処理装置１Ａ，１Ｂ，１Ｃ，１Ｄを総称する場合には、適宜単に情報処理装置１と記すものとする。他の構成要素を総称する場合についても同様とする。
【００３０】
（ソフトウェアセル３０の構成）
本ネットワークシステムは、各情報処理装置１の間で一意的に識別することができるソフトウェアセル３０（以下で詳述）を伝送することにより、各情報処理装置１がそれぞれが持つ情報（例えば、ハードウェア、ソフトウェアおよび使用環境など）を把握することができるようになっている。さらに、本ネットワークシステムは、これらの情報に基づいて、各情報処理装置１の間で協調動作やデータの共有を行うことを可能にしている。
【００３１】
図２は、本実施の形態におけるソフトウェアセル３０の構成例を表すものである。本ネットワークシステムは、上述のようにネットワーク９を介して協調動作やデータの共有などを行うために、所定のフォーマットを有するソフトウェアセル３０というオブジェクトを用いる。このソフトウェアセル３０は、ネットワーク９と複数の情報処理装置１の中で各ソフトウェアセル３０を識別するための識別子（送信元ＩＤ３０−１，送信先ＩＤ３０−２，応答先ＩＤ３０−３）、セルインターフェース３０−４、ＤＭＡ（ダイレクトメモリアクセス）コマンド３０−５、プログラム３０−６、データ３０−７、のそれぞれを格納する所定のフォーマットを有する。
【００３２】
送信元ＩＤ３０−１は、ソフトウェアセル３０の送信元である情報処理装置１のネットワークアドレス、その情報処理装置１内の情報処理コントローラ２０が備えるメインプロセッサ２１−１およびサブプロセッサ２２−１等の識別子（メインプロセッサＩＤおよびサブプロセッサＩＤ）を有する。送信先ＩＤ３０−２は、ソフトウェアセル３０の送信先である情報処理装置１のネットワークアドレスなど、上記と同様の情報を有する。応答先ＩＤ３０−３は、ソフトウェアセル３０の実行結果の応答先である情報処理装置１のネットワークアドレスなど、上記と同様の情報を有する。
【００３３】
セルインターフェース３０−４は、ソフトウェアセル３０の利用に必要な情報であり、グローバルＩＤ３０−８、必要なサブプロセッサの情報３０−９、サンドボックスサイズ３０−１０、および前回のソフトウェアセルＩＤ３０−１１から構成される。グローバルＩＤ３０−８は、ネットワーク全体を通してソフトウェアセル３０を一意的に識別できるものであり、送信元ＩＤ、およびソフトウェアセル３０の作成または送信の日時（日付および時刻）に基づいて作成される。必要なサブプロセッサの情報３０−９は、ソフトウェアセル３０の実行に必要なサブプロセッサ２２−１等の数が設定される。サンドボックスサイズ３０−１０は、ソフトウェアセル３０の実行に必要なメインメモリ２６内のメモリ容量、およびサブプロセッサ２２−１等のＬＳ２２−２等内のメモリ容量が設定される。前回のソフトウェアセルＩＤ３０−１１は、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセル３０内の、前回のソフトウェアセル３０の識別子である。
【００３４】
ソフトウェアセル３０の実行セクションは、ＤＭＡコマンド３０−５、プログラム３０−６およびデータ３０−７から構成される。ここで、ＤＭＡコマンド３０−５は、プログラムの起動に必要な一連のＤＭＡコマンドを有し、プログラム３０−６は、メインプロセッサ２１−１またはサブプロセッサ２２−１等によって実行されるプログラムを有する。ここでのデータ３０−７は、このプログラム３０−６によって処理されるデータである。ＤＭＡコマンド３０−５には、ロードコマンド３０−１２、キックコマンド３０−１６、機能プログラム実行コマンド３０−２１、ステータス要求コマンド３０−１９、およびステータス返信コマンド３０−２０等のコマンドがある。
【００３５】
ロードコマンド３０−１２は、メインメモリ２１−１内の情報をサブプロセッサ２２−１等内のＬＳ２２−２等にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス３０−１３、サブプロセッサＩＤ３０−１４およびＬＳアドレス３０−１５を含む。メインメモリアドレス３０−１３は、情報のロード元であるメインメモリ２６内の所定領域のアドレスを示す。サブプロセッサＩＤ３０−１４およびＬＳアドレス３０−１５は、情報のロード先であるサブプロセッサ２２−１等の識別子およびＬＳ２２−２等のアドレスを示す。
【００３６】
キックコマンド３０−１６は、プログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサＩＤ３０−１７およびプログラムカウンタ３０−１８を含む。サブプロセッサＩＤ３０−１７は、キック対象のサブプロセッサ２２−１等を識別し、プログラムカウンタ３０−１８は、プログラム実行用プログラムカウンタ３０−１８のためのアドレスを与える。
【００３７】
機能プログラム実行コマンド３０−２１は、ある情報処理装置１が他の情報処理装置１に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンド３０−２１を受信した情報処理装置１内の情報処理コントローラ２０は、機能プログラムＩＤ３０−２２によって、起動すべき機能プログラム６０を識別する。ここで、機能プログラム６０とは、後述の図４に示す、メインメモリ２６が記憶するソフトウェアの構成図において、機能プログラム６０にカテゴライズされるプログラムを指す。
【００３８】
ステータス要求コマンド３０−１９は、送信先ＩＤ３０−２で示される情報処理装置１の現在の動作状態（状況）に関する装置情報を、応答先ＩＤ３０−３で示される情報処理装置１宛に送信要求するコマンドである。
【００３９】
ステータス返信コマンド３０−２０は、上記のステータス要求コマンド３０−１９を受信した情報処理装置１が、自身の装置情報をソフトウェアセル３０に含まれる応答先ＩＤ３０−３で示される情報処理装置１に応答するコマンドである。
【００４０】
図３は、ＤＭＡコマンド３０−５がステータス返信コマンド３０−２０である場合における、ソフトウェアセル３０のデータ領域の構造を表すものである。情報処理装置ＩＤ４０−１は、ステータス返信コマンド３０−２０の送信先の情報処理装置ＩＤを指す。情報処理装置ＩＤ４０−１は、電源投入時、その情報処理装置１内の情報処理コントローラ２０に含まれるメインプロセッサ２１−１によって、電源投入時の日時、情報処理装置１のネットワークアドレスおよび情報処理装置１内の情報処理コントローラ２０に含まれるサブプロセッサ２２−１等の数などに基づいて生成される。
【００４１】
情報処理装置種別ＩＤ４０−２は、個々の情報処理装置１の特徴を表す値を有する。情報処理装置１の特徴とは、例えば、ハードディスクレコーダ、ＰＤＡ（パーソナルディジタルアシスタント）、ＰＳ３（プレーステーションスリー：登録商標）などを指す。また、情報処理装置種別ＩＤは、映像音声記録、映像音声再生など、情報処理装置１の機能を表す。情報処理装置１の特徴を表す値は予め決定されているものとし、各情報処理装置１は、情報処理装置種別ＩＤ４０−２を読み出すことにより、各情報処理装置１の特徴を把握することが可能である。
【００４２】
ＭＳ（マスタスレーブ）ステータス４０−３は、個々の情報処理装置１がマスタ装置またはスレーブ装置のいずれで動作しているかを表すもので、これが０に設定されている場合にはマスタ装置として動作していることを示し、１に設定されている場合にはスレーブ装置として動作していることを示す。
【００４３】
メインプロセッサ動作周波数４０−４は、情報処理コントローラ２０内のメインプロセッサ２１−１の動作周波数を表す。メインプロセッサ使用率４０−５は、メインプロセッサ２１−１で現在動作している全てのプログラムについての、メインプロセッサ２１−１での使用率を表す。メインプロセッサ使用率４０−５は、対象メインプロセッサ２１−１の全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるＭＩＰＳを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率４０−９についても同様である。
【００４４】
サブプロセッサ数４０−６は、情報処理コントローラ２０が備えるサブプロセッサ２２−１等の数を表す。サブプロセッサＩＤ４０−７は、情報処理コントローラ２０内のサブプロセッサ２２Ａ−１等を識別するための識別子である。
【００４５】
サブプロセッサステータス４０−８は、サブプロセッサ２２−１等の状態を表すものであり、unused, reserved, busyなどの状態がある。 unusedは、サブプロセッサ２２−１等が現在使用されてなく、使用の予約もされていないことを示す。 reservedは、現在は使用されていないが、予約されている状態を示す。 busyは、現在使用中であることを示す。
【００４６】
サブプロセッサ使用率４０−９は、サブプロセッサ２２−１等で現在実行している、またはサブプロセッサ２２−１等に実行が予約されているプログラムについての、サブプロセッサ２２−１等での使用率を表す。すなわち、サブプロセッサ使用率４０−９は、サブプロセッサステータス４０−８がbusyである場合には、現在の使用率を示し、サブプロセッサステータス４０−８がreservedである場合には、後に使用される予定の推定使用率を示す。
【００４７】
サブプロセッサＩＤ４０−７、サブプロセッサステータス４０−８およびサブプロセッサ使用率４０−９は、各サブプロセッサ２２−１等に対して一組ずつ設定され、１つの情報処理コントローラ２０内のサブプロセッサ２２−１等に対応する組数が設定される。
【００４８】
メインメモリ総容量４０−１０およびメインメモリ使用量４０−１１は、それぞれ、情報処理コントローラ２０に接続されているメインメモリ２６の総容量および現在使用中の容量を表す。
【００４９】
外部記録部数４０−１２は、情報処理コントローラ２０に接続されている外部記録部２８−１等の数を表す。外部記録部ＩＤ４０−１３は、情報処理コントローラ２０に接続されている外部記録部２８−１等を一意的に識別する情報である。外部記録部種別ＩＤ４０−１４は、外部記録部２８−１等の種類（例えば、ハードディスク、ＣＤ±ＲＷ、ＤＶＤ±ＲＷ、メモリディスク、ＳＲＡＭ、ＲＯＭなど）を表す。
【００５０】
外部記録部総容量４０−１５および外部記録部使用量４０−１６は、それぞれ、外部記録部ＩＤ４０−１３によって識別される外部記録部２８−１等の総容量および現在使用中の容量を表す。
【００５１】
外部記録部ＩＤ４０−１３、外部記録部種別ＩＤ４０−１４、外部記録部総容量４０−１５および外部記録部使用量４０−１６は、各外部記録部２８−１等に対して一組設定されるものであり、情報処理コントローラ２０に接続されている外部記録部２８−１等の数の組数だけ設定される。すなわち、１つの情報処理コントローラ２０に複数の外部記録部２８−１等が接続されている場合、各外部記録部２８−１等には異なる外部記録部ＩＤ４０−１３が割り当てられ、外部記録部種別ＩＤ４０−１４、外部記録部総容量４０−１５および外部記録部使用量４０−１６も別々に管理される。
【００５２】
（メインメモリ２６が記憶するソフトウェアの構成）
図４は、メインメモリ２６が記憶するソフトウェアの構成を表したものである。これらのソフトウェアは、情報処理装置１に電源が投入される前は、情報処理コントローラ２０に接続されている外部記録部２８−１等に記録されている。各ソフトウェアは、機能または特徴によって、制御プログラム５０、機能プログラム６０、またはデバイスドライバ７０にカテゴライズされる。制御プログラム５０は、各情報処理コントローラ２０のメインプロセッサ２１−１が実行するもので、後述のＭＳ（マスタスレーブ）マネージャ５０−１および能力交換プログラム５０−２を有する。機能プログラム６０は、メインプロセッサ２１−１が実行するもので、記録用６０−１、再生用６０−２、素材検索用６０−３など、情報処理装置１の機能に応じたものを有する。デバイスドライバ７０は、情報処理装置１の入出力用で、放送受信７０−１、モニタ出力７０−２、ビットストリーム入出力７０−３、ネットワーク入出力７０−４など、情報処理装置１のデバイスに応じたものを有する。
【００５３】
次に、以上のような構成のネットワークシステムの動作について説明する。
【００５４】
まず、基本的な動作について説明する。この説明の中で、(Ａ)メインメモリへのプログラムのロード、(Ｂ)ネットワークシステムにおけるマスタスレーブの決定、(Ｃ)マスタ装置およびスレーブ装置における装置情報の授受、(Ｄ)情報処理装置１がネットワークから切断された場合、そして(Ｅ)他装置におけるプログラムの実行、について順次説明する。なお、以下、説明の簡略化のため、自身の情報処理装置１を自装置１、他の情報処理装置１を他装置１と称する。また、ネットワークに新規に接続された情報処理装置１を新規装置１と称する。
【００５５】
（Ａ  メインメモリへのプログラムのロード）
ケーブルの差し込みなどによって情報処理装置１が物理的にネットワーク９に接続された状態で、情報処理装置１に主電源が投入され、情報処理装置１が電気的、機能的にもネットワークに接続されると、その情報処理装置１の情報処理コントローラ２０のメインプロセッサ２１−１は、制御プログラム５０に属する各プログラム、およびデバイスドライバ７０に属する各プログラムを、メインメモリ２６にロードする。ロード手順としては、具体的には、メインプロセッサ２１−１は、まず、ＤＣ２７に読み出し命令を実行させることによって、外部記録部からプログラムを読み出し、次に、ＤＭＡＣ２５に書き込み命令を実行させることによって、そのプログラムをメインメモリ２６に書き込む。
【００５６】
機能プログラム６０に属する各プログラムについては、必要なときに必要なプログラムだけをロードするようにしてもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするようにしてもよい。また、機能プログラム６０に属する各プログラムは、ネットワーク９に接続された全ての情報処理装置１の外部記録部２８−１等に記録されている必要はない。いずれか１つの情報処理装置１の外部記録部２８−１等に記録されていれば、以下で詳述するように、ソフトウェアセル３０を用いることで機能プログラム６０に属する各プログラムを他装置１からロードすることができるからである。
【００５７】
図２のソフトウェアセル３０に示したように、機能プログラム６０には、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムＩＤ３０−２２として割り当てられる。機能プログラムＩＤ３０−２２は、機能プログラム６０作成の段階で、作成日時や情報処理装置ＩＤなどから決定される。
【００５８】
（Ｂ  ネットワークシステムにおけるマスタスレーブの決定）
上述したネットワークシステムでは、ある情報処理装置１への主電源投入時、その情報処理装置１の情報処理コントローラ２０のメインプロセッサ２１−１は、マスタスレーブマネージャ（以下、ＭＳマネージャ）５０−１をメインメモリ２６にロードし、実行する。
【００５９】
ＭＳマネージャ５０−１は、自装置１がネットワークに接続されていることを検知すると、同じネットワークに接続されている他装置１の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置１が物理的にネットワークに接続されているだけでなく、電気的および機能的にもネットワークに接続されていることを示す。
【００６０】
ＭＳマネージャ５０−１が同じネットワーク９に接続されている他装置１の存在を確認する方法を以下に示す。ＭＳマネージャは、ＤＭＡコマンド３０−５がステータス要求コマンド３０−１９であり、送信元ＩＤ３０−１および応答先ＩＤ３０−３が自装置１であり、さらに送信先ＩＤ３０−２が不特定の情報処理装置１であるソフトウェアセル３０を生成して、自装置１が接続されたネットワーク９上に送信して、ネットワーク接続確認用のタイマを設定する。タイマのタイムアウト時間は、例えば１０分とされる。
【００６１】
ネットワークシステム上に他装置１が接続されている場合、他装置１は上記のソフトウェアセル３０を受信する。そのソフトウェアセル３０を受信した他装置１は、上記応答先ＩＤ３０−３で特定される情報処理装置１に対して、ＤＭＡコマンド３０−５がステータス返信コマンド３０−２０で、かつデータとして自身（他装置１）の装置情報を含むソフトウェアセル３０を送信する。このステータス返信コマンド３０−２０のソフトウェアセル３０には、少なくとも他装置１を特定する情報（情報処理装置ＩＤ４０−１、メインプロセッサに関する情報、サブプロセッサに関する情報など）および他装置１のＭＳステータス４０−３が含まれる。
【００６２】
ステータス要求コマンド３０−１９を発行した情報処理装置１のＭＳマネージャ５０−１は、上記ネットワーク接続確認用のタイマがタイムアウトするまで、ネットワーク９上の他装置１から送信されるソフトウェアセル３０の受信を監視する。その結果、ＭＳステータス＝０（マスタ装置）を示すステータス返信コマンド３０−２０が受信された場合には、自装置１の装置情報テーブルにおけるＭＳステータスを１に設定する。これによって、この情報処理装置１はスレーブ装置となる。
【００６３】
一方、上記ネットワーク接続確認用のタイマがタイムアウトするまでの間にステータス返信コマンド３０−２０を全く受信しなかった場合、またはＭＳステータス＝０（マスタ装置）を示すステータス返信コマンド３０−２０を受信しなかった場合には、自装置１の装置情報テーブルにおけるＭＳステータスを０に設定する。これによって、この情報処理装置１はマスタ装置となる。
【００６４】
すなわち、いずれの装置もネットワーク９に接続されていない状態、またはネットワーク９上にマスタ装置が存在しない状態において、新たな情報処理装置１がネットワーク９に接続されると、この情報処理装置１は自動的にマスタ装置として設定される。一方、ネットワーク９上に既にマスタ装置が存在する状態において、新たな情報処理装置１がネットワークに接続されると、この情報処理装置１は自動的にスレーブ装置として設定される。
【００６５】
マスタ装置およびスレーブ装置のいずれについても、ＭＳマネージャ５０−１は、定期的にＤＭＡコマンド３０−５がステータス要求コマンド３０−１９であるソフトウェアセル３０をネットワーク９上の他装置に送信してステータス情報を照会することにより、他装置１の状況を監視する。その結果、ネットワーク９に接続されている情報処理装置１の主電源が遮断され、またはネットワーク９から情報処理装置１が切り離されることにより、あらかじめ判定用に設定された所定期間内に特定の他装置１からＤＭＡコマンド３０−５がステータス返信コマンド３０−２０であるソフトウェアセル３０が返信されなかった場合や、ネットワーク９に新たな情報処理装置１が接続された場合など、ネットワーク９の接続状態に変化があった場合には、その情報を後述の能力交換プログラム５０−２に通知する。
【００６６】
（Ｃ  マスタ装置およびスレーブ装置における装置情報の授受）
メインプロセッサ２１−１は、ＭＳマネージャ５０−１から、ネットワーク９上の他装置の照会および自装置のＭＳステータスの設定完了の通知を受けると、能力交換プログラム５０−２を実行する。
【００６７】
能力交換プログラムは、自装置１がマスタ装置である場合には、ネットワークに接続されている全ての他装置１の装置情報、すなわち各スレーブ装置の装置情報を取得する。他装置１の装置情報の取得は、ＤＭＡコマンド３０−５がステータス要求コマンド３０−１９であるソフトウェアセル３０を生成して他装置に送信し、その後、ＤＭＡコマンド３０−５がステータス返信コマンド３０−２０で、かつデータとして他装置１の装置情報を含むソフトウェアセル３０を他装置１から受信することによって可能である。
【００６８】
能力交換プログラム５０−２は、マスタ装置である自装置１の装置情報テーブルと同様に、ネットワーク９に接続されている全ての他装置１（各スレーブ装置）の装置情報を格納するための領域を自装置のメインメモリ２６に確保し、これら情報を他装置１（スレーブ装置）の装置情報テーブルとして記録する。すなわち、マスタ装置のメインメモリ２６には、自装置１を含むネットワークに接続されている全ての情報処理装置１の装置情報が、装置情報テーブルとして記録される。
【００６９】
一方、能力交換プログラム５０−２は、自装置１がスレーブ装置である場合には、ネットワークに接続されている全ての他装置１の装置情報、すなわちマスタ装置および自装置１以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ＩＤ４０−１およびＭＳステータス４０−３を、自装置１のメインメモリ２６に記録する。すなわち、スレーブ装置のメインメモリ２６には、自装置１の装置情報が、装置情報テーブルとして記録されるとともに、自装置１以外のネットワーク９に接続されているマスタ装置および各スレーブ装置についての情報処理装置ＩＤ４０−１およびＭＳステータス４０−３が、別の装置情報テーブルとして記録される。
【００７０】
また、マスタ装置およびスレーブ装置のいずれについても、能力交換プログラム５０−２は、上記のようにＭＳマネージャ５０−１から、新たにネットワーク９に情報処理装置１が接続されたことが通知されたときには、その情報処理装置１の装置情報を取得し、上述したようにメインメモリ２６に記録する。
【００７１】
なお、ＭＳマネージャ５０−１および能力交換プログラム５０−２は、メインプロセッサ２１−１で実行されるとは限らず、いずれかのサブプロセッサ２２−１等で実行されるようにしてもよい。また、ＭＳマネージャ５０−１および能力交換プログラム５０−２は、情報処理装置１の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【００７２】
（Ｄ  情報処理装置１がネットワークから切断された場合）
マスタ装置およびスレーブ装置のいずれにおいても、ＭＳマネージャ５０−１は、定期的に第１のステータス要求コマンド３０−１９をネットワーク９上の他装置１に送信して装置情報を照会することにより、他装置１の状況を監視する。その結果、ネットワーク９に接続されている情報処理装置１の主電源が遮断され、またはネットワーク９から情報処理装置１が切り離されることにより、あらかじめ判定用に設定された所定期間内に特定の他装置１から第１のステータス返信コマンド３０−２０が返信されなかった場合には、その情報を後述の能力交換プログラム５０−２に通知する。
【００７３】
マスタ装置およびスレーブ装置のいずれにおいても、能力交換プログラム５０−２は、上記のようにＭＳマネージャ５０−１から、ネットワーク９に接続されている情報処理装置１の主電源が遮断され、またはネットワーク９から情報処理装置１が切り離されたことが通知されたときには、その情報処理装置１の装置情報テーブルを自装置１のメインメモリから削除する。
【００７４】
さらに、このようにネットワーク９から切断された情報処理装置１がマスタ装置である場合には、以下のような方法によって、新たにマスタ装置が決定される。
【００７５】
具体的には、例えば、ネットワーク９から切断されていないスレーブ装置は、それぞれ、自装置１および他装置１の情報処理装置ＩＤを数値に置き換えて、自装置１の情報処理装置ＩＤを他装置１の情報処理装置ＩＤと比較する。そして、自装置１の情報処理装置ＩＤがネットワーク９から切断されていないスレーブ装置の中で最小である場合、そのスレーブ装置は、ＭＳステータスを０に設定することにより、マスタ装置に移行する。新たにマスタ装置となった情報処理装置１は、上述したように、ネットワーク９に接続されている全ての他装置１（各スレーブ装置）の装置情報を取得して、メインメモリ２６に記録する。
【００７６】
（Ｅ  他装置におけるプログラムの実行）
情報処理装置１Ａが同じネットワーク９に接続されている他装置１Ｂにプログラムを実行させる方法を以下に示す。情報処理装置１Ａ内の情報処理コントローラ２０Ａに含まれるメインプロセッサ２１Ａ−１は、ＤＭＡコマンド３０−５がロードコマンド３０−１２およびキックコマンド３０−１６であるソフトウェアセル３０を生成し、ネットワーク９を介して情報処理装置１Ｂの情報処理コントローラ２０Ｂに送信する。送信元の情報処理装置１Ａ、送信先の情報処理装置１Ｂ、および応答先の情報処理装置１Ａは、それぞれ、上記の送信元ＩＤ３０−１、送信先ＩＤ３０−２および応答先ＩＤ３０−３によって識別される。
【００７７】
ソフトウェアセル３０を受信した情報処理装置１Ｂ内の情報処理コントローラ２０Ｂに含まれるメインプロセッサ２１Ｂ−１は、そのソフトウェアセル３０をメインメモリ２６Ｂに格納する。さらに、送信先のメインプロセッサ２１Ｂ−１は、ソフトウェアセル３０を読み出し、それに含まれるＤＭＡコマンド３０−５を処理する。
【００７８】
具体的には、送信先のメインプロセッサ２１Ｂ−１は、まず、ロードコマンド３０−１２を実行する。これによって、ロードコマンド３０−１２で指示されたメインメモリアドレス３０−１３から、ロードコマンド３０−１２に含まれるサブプロセッサＩＤ３０−１４およびＬＳアドレス３０−１５で特定されるサブプロセッサ２２Ｂ−１等内のＬＳ２２Ｂ−２等の所定領域に、情報がロードされる。
【００７９】
ただし、ロードされるプログラムまたはデータが送信先の情報処理装置１Ｂのメインメモリ２６Ｂ内にあらかじめロードされていない場合には、送信先の情報処理装置１Ｂの外部記録部２８Ｂ−１等からメインメモリ２６Ｂ内にそのプログラムまたはデータをあらかじめロードしておいてもよい。ただし、その外部記録部２８Ｂ−１等に、そのプログラムまたはデータが記録されていない場合には、(イ)あらかじめDMAコマンド３０−５がプログラム要求コマンドであるソフトウェアセル３０を他装置１に送信して、他装置１からDMAコマンド３０−５がプログラム返信コマンドであるソフトウェアセル３０を受信することによりそのプログラムまたはデータをメインメモリ２６Ｂ内にロードするようにしてもよいし、(ロ)DMAコマンドがロードコマンドであるソフトウェアセル３０のデータ領域に格納しておいたそのプログラム３０−６またはデータ３０−７を、ロードコマンドを実行する際にメインメモリ２６Ｂ内にロードするようにしてもよい。
【００８０】
次に、メインプロセッサ２１Ｂ−１は、キックコマンド３０−１６を、キックコマンド３０−１６に含まれるサブプロセッサＩＤ３０−１７で指示されたサブプロセッサ２２Ｂ−１等に、キックコマンド３０−１６に含まれるプログラムカウンタ３０−１８と共に出力する。指示されたサブプロセッサ２２Ｂ−１等は、そのキックコマンド３０−１６およびプログラムカウンタ３０−１８に従って、プログラムを実行する。そして、実行結果をメインメモリ２６Ｂに格納した後、実行を完了したことをメインプロセッサ２１Ｂ−１に通知する。
【００８１】
なお、送信先の情報処理装置１Ｂ内の情報処理コントローラ２０Ｂにおいてソフトウェアセル３０を実行するプロセッサはサブプロセッサ２２Ｂ−１等に限定されるものではなく、メインプロセッサ２１Ｂ−１であってもよい。
【００８２】
この場合には、送信元の情報処理装置１Ａは、送信先の情報処理装置１Ｂ宛に、機能プログラム６０およびその機能プログラム６０によって処理されるデータを含み、ＤＭＡコマンド３０−５がロードコマンド３０−１２であるソフトウェアセル３０を送信し、メインメモリ２６Ｂに機能プログラム６０およびそれによって処理されるデータを記憶させる。次に、送信元の情報処理装置１Ａは、送信先の情報処理装置１Ｂ宛に、送信先の情報処理装置１Ｂ内の情報処理コントローラ２０ＢについてのメインプロセッサＩＤ、メインメモリアドレス、機能プログラム６０を識別するための機能プログラムＩＤ３０−２２、およびプログラムカウンタを含み、ＤＭＡコマンドが機能プログラム実行コマンドであるソフトウェアセル３０を送信して、メインプロセッサ２１Ｂ−１に機能プログラム６０を実行させる。
【００８３】
以上のように、本ネットワークシステムでは、送信元の情報処理装置１Ａは、プログラムをソフトウェアセル３０によって送信先の情報処理装置１Ｂに送信するとともに、そのプログラムを送信先の情報処理装置１Ｂ内の情報処理コントローラ２０Ｂに含まれるプロセッサにロードさせ、このプログラムを送信先の情報処理装置１Ｂに実行させることができる。
【００８４】
したがって、本ネットワークシステムでは、ユーザが送信先の情報処理装置１Ｂを操作しなくても、自動的にプログラムを送信先の情報処理装置１Ｂ内の情報処理コントローラ２０Ｂに実行させることができる。また、本ネットワークシステムでは、情報処理装置１Ｂは、他装置１Ａから実行要求されたプログラムを有していない場合には、ネットワークに接続された他装置１からそれらを取得することができる。
【００８５】
次に、本ネットワークシステムにおける、処理を継承する際の一連の動作について説明する。この説明の中で、(Ｆ)処理の要求先の選定、(Ｇ)処理の継承、について順次説明する。
【００８６】
（Ｆ  処理の要求先の選定）
各情報処理装置１は、上述のソフトウェアセル３０を用いて処理の継承を行うが、その処理の継承を行う際に用いられる、処理の要求先を選定するための基本的な手順について説明する。
【００８７】
図５は、ユーザからの実行要求を処理する手順の一具体例を表したものである。ユーザがネットワーク９に接続されている情報処理装置１Ａ（スレーブ装置）において、その情報処理装置１Ａに対して第1の処理を要求する操作を行った（ステップS１０１）場合、第１の処理を要求された情報処理装置１Ａの情報処理コントローラ２０Ａに含まれるメインプロセッサ２１Ａ−１は、実行要求された第１の処理にかかるプログラムが要求するスペックを自装置１Ａが満たすか否か判定する（ステップＳ１０２）。そして、自装置１Ａがそのスペックを満たさないと判定した場合には、情報処理装置１Ｄ（マスタ装置）に第１の処理の実行要求先を探すように要求する（ステップＳ１０４）。一方、自装置１Ａがそのスペックを満たすと判定した場合には、自装置１Ａが第１の処理を実行する（ステップＳ１０３）。ここで、実行要求先の検索要求は、例えば、ＤＭＡコマンド３０−５が実行要求先検索要求コマンドであるソフトウェアセル３０によって行われる。
【００８８】
なお、ユーザが第１の処理を要求する情報処理装置１Ａと異なる情報処理装置１Ｃ（スレーブ装置）において、情報処理装置１Ａに対して第1の処理を要求する操作を行った場合、情報処理装置１Ｃの情報処理コントローラ２０Ｃに含まれるメインプロセッサ２１Ｃ−１は、ユーザの操作情報を情報処理装置１Ａに送信する。操作情報の送信は、例えば、ＤＭＡコマンド３０−５が操作情報送信コマンドであるソフトウェアセル３０によって行われる。その後、情報処理装置１Ａの情報処理コントローラ２０Ａに含まれるメインプロセッサ２１Ａ−１は、実行要求された第１の処理にかかるプログラムが要求するスペックを自装置１Ａが満たすか否か判定する（ステップＳ１０２）。そして、自装置１Ａがそのスペックを満たさないと判定した場合には、情報処理装置１Ｄに第１の処理の実行要求先を探すように要求する（ステップＳ１０４）。一方、自装置１Ａがそのスペックを満たすと判定した場合には、自装置１Ａが第１の処理を実行する（ステップＳ１０３）。ここで、実行要求先の検索要求は、例えば、ＤＭＡコマンド３０−５が実行要求先検索要求コマンドであるソフトウェアセル３０によって行われる。
【００８９】
その後、情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、実行要求された第１の処理を実行するのに必要な機能プログラム６０を選択する。その際、必要であれば、情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、上記の方法によって自装置１Ｄの外部記録部２８Ｄ−１等からメインメモリ２６Ｄに機能プログラム６０をロードするか、他装置１（スレーブ装置）から受信した機能プログラム６０をロードしてもよい。
【００９０】
機能プログラム６０には、その実行単位ごとに必要となる、図３に示した各情報として表される情報処理装置種別ＩＤ４０−１、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量４０−１１、外部記録部２８−１等に関する条件などの、装置に関する要求スペックが規定されている。
【００９１】
情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、その機能プログラム６０について必要となる上記要求スペックを読み出す。また、能力交換プログラム５０−２によってメインメモリ２６Ｄに記録された装置情報テーブルを参照し、他装置１の装置情報を読み出す。ここでの装置情報は、図３に示した情報処理装置ＩＤ以下の各情報を示し、メインプロセッサ２１−１、サブプロセッサ２２−１等、メインメモリ２６および外部記録部２８−１等に関する情報である。
【００９２】
情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、ネットワーク９上に接続された他装置１の上記装置情報と、機能プログラム６０実行に必要となる上記要求スペックとを順次比較する。
【００９３】
そして、例えば、機能プログラム６０が録画機能を必要とする場合には、情報処理装置種別ＩＤに基づいて、録画機能を有する情報処理装置１のみを特定して抽出する。さらに、機能プログラム６０を実行するために必要なメインプロセッサ２１−１またはサブプロセッサ２２−１等の処理能力、メインメモリ使用量４０−１１、外部記録部２８−１等に関する条件を確保できる情報処理装置１Ｂ（スレーブ装置）を、実行要求候補装置として選定する（ステップＳ１０５）。ここで、複数の実行要求候補装置が特定された場合には、これらの候補装置から１つの実行要求候補装置を選定する。
【００９４】
実行要求する情報処理装置１が選定されたら、情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、その選定された情報処理装置１Ｂについて、自装置内の情報処理コントローラ２０Ｄに含まれるメインメモリ２６Ｄに記録されている情報処理装置１Ｂの装置情報テーブルを更新する（ステップS１０６）。
【００９５】
さらに、情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、ＤＭＡコマンド３０−５がロードコマンド３０−１２および機能プログラム実行コマンド３０−２１であるソフトウェアセル３０を生成し、そのソフトウェアセル３０のセルインタフェース３０−４に、その機能プログラム６０に関する必要なサブプロセッサの情報３０−９およびサンドボックスサイズ３０−１０（図２参照）を設定して、上記実行要求される情報処理装置１Ｂに対して送信する（ステップS１０７）。
【００９６】
機能プログラム６０の実行を要求された情報処理装置１Ｂは、その機能プログラム６０を実行する（ステップS１０８）とともに、自装置１Ｂの装置情報テーブルを更新する（ステップＳ１０９）。その際、必要であれば、情報処理装置１Ｂ内の情報処理コントローラ２０Ｂに含まれるメインプロセッサ２１Ｂ−１は、上記の方法によって自装置１Ｂの外部記録部２８Ｂ−１等からメインメモリ２６Ｃに機能プログラム６０をロードしてもよい。また、機能プログラム６０の実行を要求された情報処理装置１Ｂの外部記録部２８Ｂ−１等に、必要な機能プログラム６０が記録されていない場合には、他装置１からその機能プログラム６０を受信して、その機能プログラム６０をロードしてもよいし、DMAコマンド３０−５がロードコマンド３０−１２であるソフトウェアセル３０のデータ領域に機能プログラム６０が格納されたものを受信して、その機能プログラム６０をロードしてもよい。
【００９７】
機能プログラム６０の実行終了（ステップS１１０）後、機能プログラム６０を実行した情報処理装置１Ｂ内の情報処理コントローラ２０Ｂに含まれるメインプロセッサ２１Ｂ−１は、終了通知を情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１に送信する（ステップS１１１）とともに、自装置１Ｂの装置情報テーブルを更新する（ステップS１１２）。情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、その終了通知を受信して、機能プログラム６０を実行した情報処理装置１Ｂの装置情報テーブルを更新する（ステップS１１３）。
【００９８】
情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、自装置１Ｄおよび他装置１の装置情報テーブルの参照結果から、この機能プログラム６０を実行することができる情報処理装置１として、自身を選択する場合もあり得る。その場合には、情報処理装置１Ｄがこの機能プログラム６０を実行する。なお、上記の機能プログラム６０は、サブプロセッサ２２−１等に実行させるプログラム等であってもよい。
【００９９】
以上のように、本ネットワークシステムでは、ソフトウェアセル３０を用いることにより処理の要求先を選定することができる。
【０１００】
（Ｇ  処理の継承）
次に、処理の継承について説明する。
【０１０１】
図６および図７は、情報処理装置１Ｂ（スレーブ装置）で実行中の第１の処理を中断して、その第１の処理を情報処理装置１Ｃ（スレーブ装置）に継承する手順の一具体例を表したものである。具体的には、情報処理装置１Ｂに対して第２の処理の要求を行ったが、その第２の処理を行うことができる情報処理装置１Ｂはすでに別のデータ処理（第１の処理）を行っていて、空いている処理能力だけでは新たに要求された第２の処理を行うことができない場合に、実行途中の第１の処理を情報処理装置１Ｃに継承して、第２の処理を情報処理装置１Ｂで行えるようにする手順の一具体例を表したものである。図８は、図６および図７に示した処理の継承の様子を時間軸に沿って表したものである。以下、これらの図を参照しながら上述の処理の継承について説明する。
【０１０２】
ユーザがネットワーク９に接続されている情報処理装置１Ｂにおいて、その情報処理装置１Ｂに対して第２の処理を要求する操作を行った（ステップS２０１）場合、第２の処理を要求された情報処理装置１Ｂの情報処理コントローラ２０Ｂに含まれるメインプロセッサ２１Ｂ−１は、自装置１Ｂの空いている処理能力が、実行要求された第２の処理にかかるプログラムが要求するスペックを満たすか否か判定する（ステップＳ２０２）。その結果、そのスペックを満たさないと判定した場合であって、仮に実行中の第１の処理を他装置１に継承した場合には、自装置１Ｂの処理能力が上記のスペックを満たすと判定（ステップＳ２０４）したときは、情報処理装置１Ｄ（マスタ装置）に第１の処理の継承要求先を探すように要求する（ステップＳ２０６）とともに、情報処理装置１Ｄに第２の処理の制御を要求する（ステップＳ２０７）。なお、第１の処理の継承要求先を探すように要求する際に、あわせて自装置１Ｂの装置情報を情報処理装置１Ｄに送るようにしてもよい。ここで、第２の処理の制御とは、情報処理装置１Ｂが第１の処理の継承の手順の進行状況に応じて第２の処理を行えるようにするために、情報処理装置１Ｄが情報処理装置１Ｂを制御することを指す。一方、自装置１Ｂの空いている処理能力がそのスペックを満たすと判定した場合には、自装置１Ｂが実行中の第１の処理と並列して第２の処理を実行する（ステップＳ２０３）。また、自装置１Ｂの空いている処理能力がそのスペックを満たさないと判定した場合であって、仮に実行中の第１の処理を他装置１に継承したとしても、自装置１Ｂの処理能力が上記のスペックを満たさないと判定（ステップＳ２０４）したときは、原則として第２の処理の実行は不可能である旨をユーザに通知する（ステップＳ２０５）。ただし、分散処理をすることによって第２の処理を実行できる場合には第２の処理を分散処理するように情報処理装置１Ｄに要求するようにしてもよい。
【０１０３】
なお、ユーザが第２の処理を要求する情報処理装置１Ｂと異なる情報処理装置１Ａにおいて、情報処理装置１Ｂに対して第1の処理を要求する操作を行った場合、情報処理装置１Ａの情報処理コントローラ２０Ａに含まれるメインプロセッサ２１Ａ−１は、ユーザの操作情報を情報処理装置１Ｂに送信する。操作情報の送信は、例えば、ＤＭＡコマンド３０−５が操作情報送信コマンドであるソフトウェアセル３０によって行われる。その後、情報処理装置１Ｂの情報処理コントローラ２０Ｂに含まれるメインプロセッサ２１Ｂ−１は、自装置１Ｂの空いている処理能力が、実行要求された第２の処理にかかるプログラムが要求するスペックを満たすか否か判定する（ステップＳ２０２）。その結果、そのスペックを満たさないと判定した場合であって、仮に実行中の第１の処理を他装置１に継承した場合には、自装置１Ｂの空いている処理能力が上記のスペックを満たすと判定（ステップＳ２０４）したときは、情報処理装置１Ｄに第１の処理の継承要求先を探すように要求する（ステップＳ２０６）とともに、情報処理装置１Ｄに第２の処理の制御を要求する（ステップＳ２０７）。なお、第１の処理の継承要求先を探すように要求する際に、あわせて自装置１Ｂの装置情報を情報処理装置１Ｄに送るようにしてもよい。ここで、第２の処理の制御とは、情報処理装置１Ｂが第１の処理の継承の手順の進行状況に応じて第２の処理を行えるようにするために、情報処理装置１Ｄが情報処理装置１Ｂを制御することを指す。一方、自装置１Ｂの空いている処理能力がそのスペックを満たすと判定した場合には、自装置１Ｂが実行中の第１の処理と並列して第２の処理を実行する（ステップＳ２０３）。また、自装置１Ｂの空いている処理能力がそのスペックを満たさないと判定した場合であって、仮に実行中の第１の処理を他装置１に継承したとしても、自装置１Ｂの処理能力が上記のスペックを満たさないと判定（ステップＳ２０４）したときは、原則として第２の処理の実行は不可能である旨をユーザに通知する（ステップＳ２０５）。ただし、分散処理をすることによって第２の処理を実行できる場合には第２の処理を分散処理するように情報処理装置１Ｄに要求するようにしてもよい。
【０１０４】
その後、情報処理装置１Ｄ内の情報処理コントローラ２０Ｄに含まれるメインプロセッサ２１Ｄ−１は、上記で詳述した方法と同様の方法によって第１の処理の継承先を選定する（ステップＳ２０８）。
【０１０５】
続いて、情報処理装置１Ｄは、ＤＭＡコマンド３０−５がロードコマンド３０−１２であるソフトウェアセル３０を生成し、そのソフトウェアセル３０のセルインタフェース３０−４に、継承される第１の処理に係るプログラムの実行に必要なプロセッサの情報３０−９およびサンドボックスサイズ３０−１０（図２参照）を設定して、選定された情報処理装置１Ｃに対して送信する（ステップS２０９）（図８参照）。これは、第１の処理の前処理要求に相当する。ただし、継承される第１の処理に係るプログラム、または継承される第１の処理に係るプログラムおよびデータ（以下、継承される第１の処理に係るプログラム等という）が情報処理装置１Ｃのメインメモリ２６Ｃ内にあらかじめロードされていない場合には、上で詳述したように対処すればよい。
【０１０６】
上記のソフトウェアセル３０を受信した情報処理装置１Ｃは、ロードコマンド３０−１２を実行する。すると、継承される第１の処理に係るプログラム等が、メインメモリ２６Ｃからロードコマンド３０−１２に含まれるサブプロセッサＩＤ３０−１４に対応したサブプロセッサ２２Ｃ−１等にロードされる。このようにして、第１の処理の実行に必要な前処理を行う（ステップS２１０）（図８参照）。なお、ここで、何らかの原因でロードコマンド３０−１２の実行を失敗するなどして処理の継承の準備が完了できなかった場合には、エラーメッセージを情報処理装置１Ｄに送信する。第１の処理の準備が完了した場合には、情報処理装置１Ｃは、処理の継承の準備が完了した旨の通知を情報処理装置１Ｄに対して行う（ステップS２１１）。
【０１０７】
情報処理装置１Ｄは、処理の継承の準備が完了した旨の通知を受信した場合には、ＤＭＡコマンド３０−５がロードコマンド３０−１２、およびキックコマンド３０−１６または機能プログラム実行コマンド３０−２１であるソフトウェアセル３０を生成し、そのソフトウェアセル３０のセルインタフェース３０−４に、第２の処理の初期処理の実行に必要なプロセッサの情報３０−９およびサンドボックスサイズ３０−１０（図２参照）を設定して、情報処理装置１Ｂに送信する（ステップS２１２）（図８参照）。これは、第２の処理の初期処理の実行要求に相当する。ここで、初期処理とは、例えば第２の処理において画面表示を行う処理が含まれている場合にはその画面表示を行うための処理を指す。
【０１０８】
上記のソフトウェアセル３０を受信した情報処理装置１Ｂは、キックコマンド３０−１６または機能プログラム実行コマンド３０−２１を実行する。すると、キックコマンド３０−１６または機能プログラム実行コマンド３０−２１に含まれるプロセッサＩＤで指示されたプロセッサは、キックコマンド３０−１６または機能プログラム実行コマンド３０−２１に含まれるプログラムカウンタに従って、第２の処理の初期処理を実行する（ステップS２１３）（図８参照）。なお、情報処理装置１Ｂは、この第２の処理の初期処理を実行するのに十分な処理能力を有しているものとする。情報処理装置１Ｂは、この第２の処理の初期処理の実行を開始した場合には、第２の処理の初期処理の実行を開始した旨の通知を情報処理装置１Ｄに対して行う（ステップS２１４）。
【０１０９】
情報処理装置１Ｄは、第２の処理の初期処理の実行を開始した旨の通知を受信した場合は、ＤＭＡコマンドがキックコマンド３０−１６または機能プログラム実行コマンド３０−２１であるソフトウェアセル３０を生成し、情報処理装置１Ｃに送信する（ステップS２１５）（図８参照）。これは、第１の処理の実行要求に相当する。上記のソフトウェアセル３０を受信した情報処理装置１Ｃは、キックコマンド３０−１６または機能プログラム実行コマンド３０−２１を実行する。すると、キックコマンド３０−１６または機能プログラム実行コマンド３０−２１に含まれるプロセッサＩＤで指示されたプロセッサは、キックコマンド３０−１６または機能プログラム実行コマンド３０−２１に含まれるプログラムカウンタに従って、第１の処理を中途から実行する（ステップS２１１）（図８参照）。したがって、この時点では、情報処理装置１Ｂおよび情報処理装置１Ｃは、ともに重複して第１の処理を行っていることになる。その後、情報処理装置１Ｃは、第１の処理の実行を開始した旨の通知を情報処理装置１Ｄに対して行う（ステップS２１７）。
【０１１０】
情報処理装置１Ｄは、第１の処理の実行を開始した旨の通知を受信した場合には、第１の処理を停止要求を情報処理装置１Ｂに通知する（ステップS２１８）。すると、情報処理装置１Ｂは、その第１の処理を停止する（ステップS２１９）（図８参照）。その後は、情報処理装置１Ｂは、第２の処理の初期処理に続く処理を行う（ステップS２２０）（図８参照）。情報処理装置１Ｂは、第２の処理の初期処理に続く処理を開始した場合には、その旨を情報処理装置１Ｄに通知する（ステップS２２１）。これにより、一連の処理の継承の動作が完了する。
【０１１１】
なお、継承処理を行う際に、例えば、情報処理装置１Ｃが第１の処理を開始した時刻または情報処理装置１Ｂが第１の処理を終了した時刻など、継承前に処理されたデータと継承後に処理されたデータを縫合するのに必要なデータを所定のメモリに記憶しておく。
【０１１２】
本実施の形態にかかるネットワークシステム、情報処理装置、マスタ装置および情報処理方法によれば、第１の処理の実行中に第２の処理の実行要求があったときは、他装置に第１の処理を継承するようにしたので、例えば、新たなデータ処理が要求されたが、そのデータ処理を行うことができる情報処理装置がすでに別のデータ処理を行っているので、空いている処理能力だけでは新たなデータ処理を行うことができないという場合であっても、既に行われているデータ処理が完了するのを待つこと無く、新たに要求されたデータ処理を迅速に開始することができる。
【０１１３】
また、情報処理装置が実行中のデータ処理を他装置に継承している間に、新たに要求されたデータ処理の初期処理を行うようにしたので、新たに要求されたデータ処理をより迅速に開始することができる。また、継承前に処理されたデータと継承後に処理されたデータに重複部分を設けるようにしたので、継承前に処理されたデータと継承後に処理されたデータとを確実に縫合することができる。
【０１１４】
以上、１つの実施の形態を挙げて本発明を説明したが、本発明は、これらに限定されず、種々の変形が可能である。
【図面の簡単な説明】
【０１１５】
【図１】ネットワークシステムおよび情報処理装置１の概略構成図である。
【図２】ソフトウェアセルの概略構成図である。
【図３】ソフトウェアセルのデータ領域の概略構成図である。
【図４】メインメモリが記憶するソフトウェアの概略構成図である。
【図５】実行要求を処理する手順の一具体例を表した流れ図である。
【図６】処理を継承する手順の一具体例を表した流れ図である。
【図７】処理を継承する手順の一具体例を表した流れ図である。
【図８】図６および図７の手順を模式的に表した模式図である。
【符号の説明】
【０１１６】
１Ａ，１Ｂ，１Ｃ，１Ｄ…情報処理装置１、９…ネットワーク、２０Ａ，２０Ｂ，２０Ｃ，２０Ｄ…情報処理コントローラ２０、２１Ａ−１，２１Ｂ−１…メインプロセッサ、２１Ａ−２，２１Ｂ−２…ＬＳ（ローカル・ストレージ）、２２Ａ−１，２２Ｂ−１，２３Ａ−１，２３Ｂ−１，２４Ａ−１，２４Ｂ−１…サブプロセッサ、２５Ａ，２５Ｂ…ＤＭＡＣ（ダイナミック・メモリ・アクセス・コントローラ）、２６Ａ，２６Ｂ…メインメモリ、２７Ａ，２７Ｂ…ＤＣ（デバイス・コントローラ）、２８Ａ−１，２８Ａ−２，２８Ｂ−１，２８Ｂ−２…外部記録部、２９Ａ，２９Ｂ…バス、３０…ソフトウェアセル３０、３０−１…送信元ＩＤ、３０−２…送信先ＩＤ、３０−３…応答先ＩＤ、３０−４…参照先ＩＤ、３０−５…ＤＭＡコマンド、３０−６…プログラム、３０−７…データ、３０−８…ステータス要求コマンド３０−１９、３０−９…ステータス返信コマンド３０−２０、４０−１…情報処理装置ＩＤ、４０−２…情報処理装置種別ＩＤ、４０−３…ＭＳステータス、４０−４…メインプロセッサ動作周波数、４０−５…メインプロセッサ使用率、４０−６…サブプロセッサ数、４０−７…サブプロセッサＩＤ、４０−８…サブプロセッサ・ステータス、４０−９…サブプロセッサ使用率、４０−１０…メインメモリ総容量、４０−１１…メインメモリ使用量、４０−１２…外部記録部数、４０−１３…外部記録部ＩＤ、４０−１４…外部記録部種別ＩＤ、４０−１５…外部記録部総容量、４０−１６…外部記録部使用量、５０…制御プログラム、５０−１…ＭＳマネージャ、５０−２…能力交換プログラム、６０…機能プログラム、７０…デバイスドライバ、８０…重複、８１…処理能力。
【図１】
2005327093.tif 000003
【図２】
2005327093.tif 000004
【図３】
2005327093.tif 000005
【図４】
2005327093.tif 000006
【図５】
2005327093.tif 000007
【図６】
2005327093.tif 000008
【図７】
2005327093.tif 000009
【図８】
2005327093.tif 000010