(57)【特許請求の範囲】
【請求項１】
クライアント・コンポーネントとサーバ・コンポーネントとを備え、前記クライアント・コンポーネントの有するプログラムが前記サーバ・コンポーネントの有する関数に対して遠隔手続き呼出しを行う情報処理システムであって、
前記クライアント・コンポーネントは、
前記関数の戻り値情報を保持するための保持手段と、
前記プログラムから前記関数に対する遠隔手続き呼出しの要求を受け付ける呼出手段と、
を備え、
前記サーバ・コンポーネントは、
前記呼出手段から前記関数の戻り値を要求された場合に前記関数を実行して得られた第１戻り値を前記呼出手段に返す実行手段と、
前記プログラムからの遠隔手続き呼出しに対する前記サーバ・コンポーネントの処理負荷を抑制するモードに設定された場合に、前記呼出手段から前記関数の戻り値を要求されていない状態で前記関数を実行して得られた第２戻り値を含む戻り値情報を前記保持手段に保持させる設定手段と、
を備え、
前記呼出手段は、
前記保持手段に前記戻り値情報が保持されていない場合に、前記関数に対して遠隔手続き呼出しを行い、返された前記第１戻り値を前記プログラムに返し、
前記保持手段に前記戻り値情報が保持されている場合に、前記関数に対する遠隔手続き呼出しを行わずに、前記戻り値情報に含まれる前記第２戻り値を前記プログラムに返す
ことを特徴とする情報処理システム。
【請求項２】
前記サーバ・コンポーネントは、前記関数に対して遠隔手続き呼出しを行うクライアント・コンポーネントの宛先情報を記憶する管理手段をさらに備え、
前記設定手段は、前記管理手段により記憶される前記宛先情報を参照して、前記クライアント・コンポーネントに前記戻り値情報を保持させる
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記設定手段は、前記抑制するモードを解除する場合に、前記保持手段に保持された戻り値情報を削除することを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記設定手段は、前記関数の前記第２戻り値の利用回数の上限を前記第２戻り値に関連付けて前記戻り値情報に設定し、
前記呼出手段は、前記戻り値情報に含まれる前記第２戻り値の利用回数が前記上限に達した場合に、前記第２戻り値を削除する
ことを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記設定手段は、前記抑制するモードに設定された場合に、その時点で前記関数を実行して得られた戻り値を、前記第２戻り値として前記戻り値情報に含めることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
前記設定手段は、前記抑制するモードに設定された場合に、前記関数の実行においてエラーが発生した場合の戻り値を、前記第２戻り値として前記戻り値情報に含めることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項７】
クライアント・コンポーネントとサーバ・コンポーネントとを備える情報処理システムにおいて、前記クライアント・コンポーネントの有するプログラムが前記サーバ・コンポーネントの有する関数に対して遠隔手続き呼出しを行う情報処理方法であって、
前記クライアント・コンポーネントは、前記関数の戻り値情報を保持するための保持手段を備え、
前記情報処理方法は、
前記サーバ・コンポーネントが、前記プログラムからの遠隔手続き呼出しに対する前記サーバ・コンポーネントの処理負荷を抑制するモードに設定された場合に、前記クライアント・コンポーネントから前記関数の戻り値を要求されていない状態で前記関数を実行して得られた第２戻り値を含む戻り値情報を前記保持手段に保持させる設定工程と、
前記クライアント・コンポーネントが、前記プログラムから前記関数に対する遠隔手続き呼出しの要求を受け付ける呼出工程と、
前記サーバ・コンポーネントが、前記呼出工程において前記関数の戻り値を要求された場合に前記関数を実行して得られた第１戻り値を前記クライアント・コンポーネントに返す実行工程と、
前記保持手段に前記戻り値情報が保持されていない場合に、前記関数に対して遠隔手続き呼出しを行い、返された前記第１戻り値を前記プログラムに返し、前記保持手段に前記戻り値情報が保持されている場合に、前記関数に対する遠隔手続き呼出しを行わずに、前記戻り値情報に含まれる前記第２戻り値を前記プログラムに返す工程と、を有することを特徴とする情報処理方法。
【請求項８】
コンピュータを、
クライアント・コンポーネントの有するプログラムからの遠隔手続き呼出しに対応する関数を有するサーバ・コンポーネントを有する情報処理装置であって、
前記クライアント・コンポーネントから前記関数の戻り値を要求された場合に前記関数を実行して得られた第１戻り値を前記クライアント・コンポーネントに返す実行手段と、
前記クライアント・コンポーネントからの遠隔手続き呼出しに対する前記サーバ・コンポーネントの処理負荷を抑制するモードに設定された場合に、前記クライアント・コンポーネントの保持手段に、前記クライアント・コンポーネントから前記関数の戻り値を要求されていない状態で前記関数を実行して得られた第２戻り値を含む戻り情報を保持させる設定手段と、を有することを特徴とする情報処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法、およびコンピュータプログラムに関する。
【背景技術】
【０００２】
製品の多様化、機能の複雑化、ソフトウェア肥大化の傾向が続く現在のシステム開発において、ソフトウェアは役割の観点で分割されドメイン毎の開発が行われる。さらにソフトウェアをソフトウェアの部品であるコンポーネントとして再利用して開発の効率化、品質の向上を実現していくコンポーネント開発が注目されている。近年、製品の要件やハードウェアの特性に応じて一つの機器内で複数のプロセッサ（ＣＰＵ）やオペレーティングシステム（ＯＳ）を用いて開発することが一般的となっている。その結果、機器内においても分散環境下でのコンポーネント開発が必要となっている。一般に分散環境下の異なるＣＰＵ／ＯＳ上でコンポーネント開発をする場合には、コンポーネント開発ミドルウェア上で開発が行われる。コンポーネント開発ミドルウェアは環境間のデータ表現形式（バイトオーダ、アラインメント）の差異の吸収処理（データマーシャリング）やＣＰＵやプロセスが異なるコンポーネント間のサービス呼出しをサポートする。コンポーネント開発ミドルウェアの利用により、コンポーネントの位置透過性が実現し、開発者は遠隔手続き呼出しにより同一プロセス内の関数を実行するのと同様に分散環境にあるサービスを利用することが可能となる。コンポーネント開発ミドルウェアによる遠隔手続き呼出しによって、コンポーネントのアプリケーションロジックと開発環境固有の実装とを切り離し、開発のし易さとコンポーネントの再利用性を向上させている。
【０００３】
遠隔手続き呼出しでは通常の同一プロセス内の関数呼出しとは異なり下記の課題がある。まず、遠隔手続き呼出しの内部処理では「コンポーネント間の通信処理」に加えて「データマーシャリング」が行われている。そのため、同一プロセス内の関数を実行する場合と比較して実行に時間がかかるだけではなく、頻繁に呼出しを行う場合にシステム全体のスループット低下にもつながる。そこで、有効な結果が得られない無駄な呼出しを抑制する必要があるが、有効な結果を取得する為のタイミング制御にも通信が発生し、オーバヘッドが掛かる。次に、遠隔手続き呼出しでは分散環境下のサーバのサービスを実行するため、サーバがビジー状態か否かを同一プロセスの場合と同等な低い通信オーバヘッドで監視することが困難である。そのため、サーバが他のリクエストやサーバ自身の処理でビジー状態の場合に、クライアントが長時間ブロックして処理が中断する。
【０００４】
特許文献１では、上記の課題を解決する手法として、リソースの空き状況を専用の遠隔手続き呼出しで確認する手法やリソースの空き状況を管理する専用のコンポーネントを用意して空き状況を事前に問い合わせる。この手法では、クライアントではリソースの解放待ちによるブロックの回避が可能になる。しかしながら、サーバでは、遠隔手続き呼出しがクライアントからのリクエストドリブンで行われる。そのため、クライアントが過剰に呼出しを実行することによってサーバアプリケーションの処理スループットを低下させることとなり、次のような問題がある。第１に、サーバ・コンポーネントからの返信内容に変化がない場合であっても、クライアントへ処理を通知する仕組みが無い為、過剰にリクエストを処理することがある。第２に、サーバ・コンポーネントが高優先度の処理を実行する必要があっても、クライアントからのリクエストに答える必要があり、高優先度の処理が中断される。第３に、機器の省電力モードなどでサーバ・コンポーネントを休止状態にする必要があっても、サービスを直に中断することが出来ない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３５４４１４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、クライアントからの遠隔手続き呼出しをサーバから抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題に鑑みて、本発明に係る情報処理システムは、クライアント・コンポーネントとサーバ・コンポーネントとを備え、前記クライアント・コンポーネントの有するプログラムが前記サーバ・コンポーネントの有する関数に対して遠隔手続き呼出しを行う情報処理システムであって、前記クライアント・コンポーネントは、前記関数の戻り値情報を保持するための保持手段と、前記プログラムから前記関数に対する遠隔手続き呼出しの要求を受け付ける呼出手段と、を備え、前記サーバ・コンポーネントは、前記呼出手段から前記関数の戻り値を要求された場合に前記関数を実行して得られた第１戻り値を前記呼出手段に返す実行手段と、前記プログラムからの遠隔手続き呼出しに対する前記サーバ・コンポーネントの処理負荷を抑制するモードに設定された場合に、前記呼出手段から前記関数の戻り値を要求されていない状態で前記関数を実行して得られた第２戻り値を含む戻り値情報を前記保持手段に保持させる設定手段と、を備え、前記呼出手段は、前記保持手段に前記戻り値情報が保持されていない場合に、前記関数に対して遠隔手続き呼出しを行い、返された前記第１戻り値を前記プログラムに返し、前記保持手段に前記戻り値情報が保持されている場合に、前記関数に対する遠隔手続き呼出しを行わずに、前記戻り値情報に含まれる前記第２戻り値を前記プログラムに返すことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、クライアントからの遠隔手続き呼出しをサーバから抑制する技術が提供される。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る情報処理装置１００の構成ブロック図の一例。
【図２】本実施形態に係るＲＰＣインスタンス１５０の詳細ブロック図の一例。
【図３】本実施形態に係るＲＰＣインスタンス１５０の相関図の一例。
【図４】本実施形態に係るサーバＲＰＣインスタンス２２０の動作の一例のフローチャート。
【図５】本実施形態に係るクライアント情報テーブル２２４の一例。
【図６】本実施形態に係る通常モードにＲＰＣ要求を受信した場合のクライアントＲＰＣインスタンス２１０の動作の一例のフローチャート。
【図７】本実施形態に係る優先モードに設定された場合のサーバＲＰＣインスタンス３０３の動作の一例のフローチャート。
【図８】本実施形態に係る戻り値情報８００の一例。
【図９】本実施形態に係る戻り値情報９００の別の例。
【図１０】本実施形態に係る節電モードに移行する場合の情報処理装置１００全体の動作のシーケンス図。
【発明を実施するための形態】
【００１０】
以下、添付の図面に従って本発明に係る実施形態を説明する。以下において、遠隔手続き呼出しを単に「ＲＰＣ（リモート・プロシージャ・コール）」と表す。
【００１１】
＜第１の実施形態＞
〔情報処理装置１００の構成図〕
図１を用いて本実施形態に係る情報処理装置１００の構成を説明する。本実施形態では、本発明に係る情報処理システムの例として、ノードＸ１１０、ノードＹ１２０、およびユーザ・インタフェース１３０を備える情報処理装置１００を扱う。ノードＸ１１０、ノードＹ１２０、およびユーザ・インタフェース１３０は内部ネットワーク１４０で相互に接続されており、これらが協調動作して情報処理装置１００を動作させる。
【００１２】
ノードＸ１１０は、ＣＰＵ１１１、メモリ１１２、コンポーネントＡ１１３、コンポーネントＢ１１４、およびデバイス１１８を含む。ＣＰＵ１１１は、ノードＸ１１０全体の動作を司る。メモリ１１２は、ノードＸ１１０で使用されるコンピュータプログラムやデータなどを記憶し、ＲＯＭやＲＡＭなどで実現される。コンポーネントＡ１１３は、ノードＸ１１０で利用されるプログラムの部品であり、関数Ａ１１５およびＲＰＣインスタンス１５０を含む。ＲＰＣインスタンス１５０は、コンポーネントＡ１１３がＲＰＣを実行する際に用いられるプログラムであるが、詳細は後述する。コンポーネントＢ１１４も同様に、ノードＸ１１０で利用されるプログラムの部品であり、関数Ｂａ１１６、関数Ｂｂ１１７、およびＲＰＣインスタンス１５０を含む。本実施例では、関数Ｂａ１１６および関数Ｂｂ１１７は、デバイス１１８の状態を取得する関数であるとする。例えば、デバイス１１８が搬送アームである場合に、関数Ｂａ１１６は搬送アーム先端の位置を取得し、関数Ｂｂ１１７は搬送アーム先端の高さを取得する。ノードＹ１２０は、ＣＰＵ１２１、メモリ１２２、関数Ｃ１２５を含むコンポーネントＣ１２３、および関数Ｄ１２６を含むコンポーネントＤ１２４を含む。ノードＹ１２０に含まれる各要素はノードＸ１１０に含まれる各要素と同様のため、説明を省略する。
【００１３】
ユーザ・インタフェース１３０は、モード・ボタン１３１および節電ボタン１３２を含む。モード・ボタン１３１は、情報処理装置１００の状態を通常モードと優先モードとの間で切り替えるためのボタンである。優先モードに設定された場合に、ノードＸ１１０はコンポーネントＢ１１４よりもコンポーネントＡ１１３を優先して動作する。節電ボタン１３２は、情報処理装置１００の状態を通常モードと節電モードとの間で切り替えるためのボタンである。節電モードに設定された場合に、ノードＸ１１０はデバイス１１８の電源をＯＦＦにする。
【００１４】
続いて、図２を用いてＲＰＣインスタンス１５０の詳細を説明する。ＲＰＣインスタンス１５０は、コンポーネントに対してＲＰＣの機能を提供する。ＲＰＣインスタンス１５０は、クライアントＲＰＣインスタンス２１０とサーバＲＰＣインスタンス２２０との一方または両方を含む。クライアントＲＰＣインスタンス２１０は、呼出部２１１および保持部２１２を含む。呼出部２１１は、呼出元関数２００から呼出先関数２３０に対するＲＰＣ要求を受け付ける。呼出部２１１は、呼出元関数２００から取得した呼出先関数名、ノード名、返信先情報、および引数データを通信用のフォーマットにシリアライズして実行部２２１に送信し、呼出先関数２３０の戻り値を要求する。そして、呼出部２１１は、実行部２２１から受信したデータをデシリアライズして呼出先関数２３０の戻り値を取得し、該戻り値を呼出元関数２００に返す。保持部２１２は、戻り値情報２１３を保持する。戻り値情報２１３の詳細は後述する。
【００１５】
サーバＲＰＣインスタンス２２０は、実行部２２１、管理部２２２、および設定部２２３を含む。実行部２２１は、呼出部２１１からＲＰＣ要求を受信した場合に、受信したデータをデシリアライズして取得した関数名に対応する呼出先関数２３０を実行して、戻り値を得る。そして、実行部２２１は、得られた戻り値を通信用フォーマットにシリアライズして、受信していた返信先情報に基づいて呼出部２１１に送信する。管理部２２２は、クライアント情報テーブル２２４、優先モード情報テーブル２２５、および節電モード情報テーブル２２６を管理する。これらのテーブルの詳細は後述する。設定部２２３は、情報処理装置１００のモードが切り替わる場合に、保持部２１２の戻り値情報２１３を設定または削除する。
【００１６】
続いて、図３を用いて各コンポーネントが有するＲＰＣインスタンス１５０について説明する。本実施形態では、呼出先関数２３０を含むコンポーネントには、サーバＲＰＣインスタンス２２０が一つずつ含まれるとする。以下、呼出先関数２３０を含むコンポーネントをサーバ・コンポーネントと呼ぶ。また、呼出元関数２００を含むコンポーネントには、サーバ・コンポーネントに対応するクライアントＲＰＣインスタンス２１０が含まれる。以下、呼出元関数２００を含むコンポーネントをクライアント・コンポーネントと呼ぶ。具体的には、コンポーネントＡ１１３は、クライアントＲＰＣインスタンス３０２を介してコンポーネントＢ１１４に含まれる関数を利用する。コンポーネントＣ１２３は、クライアントＲＰＣインスタンス３０４を介してコンポーネントＡ１１３に含まれる関数を利用し、クライアントＲＰＣインスタンス３０５を介してコンポーネントＢ１１４に含まれる関数を利用する。コンポーネントＤ１２４は、クライアントＲＰＣインスタンス３０６を介してコンポーネントＡ１１３に含まれる関数を利用し、クライアントＲＰＣインスタンス３０７を介してコンポーネントＢ１１４に含まれる関数を利用する。一方、コンポーネントＡ１１３は、サーバＲＰＣインスタンス３０１を介してコンポーネントＣ１２３とコンポーネントＤ１２４とからＲＰＣを受け付ける。コンポーネントＢ１１４は、サーバＲＰＣインスタンス３０３を介してコンポーネントＡ１１３、コンポーネントＣ１２３、およびコンポーネントＤ１２４からＲＰＣを受け付ける。
【００１７】
〔サーバ側のＲＰＣ応答処理〕
図４のフローチャートを用いて、ＲＰＣの要求を受信した場合のサーバＲＰＣインスタンス２２０の動作について説明する。例として、コンポーネントＣ１２３の有する関数Ｃ１２５がコンポーネントＢ１１４の有する関数Ｂａ１１６をＲＰＣで利用する場合を扱う。このフローチャートの動作は、コンピュータで読み取り可能な記憶媒体であるメモリ１１２に記憶されたコンピュータプログラムをＣＰＵ１１１が処理することによって実行される。
【００１８】
Ｓ４０１で、コンポーネントＢ１１４の有するサーバＲＰＣインスタンス３０３の実行部２２１は、コンポーネントＣ１２３の有するクライアントＲＰＣインスタンス３０５の呼出部２１１からＲＰＣ要求を受信する。Ｓ４０２で、実行部２２１は、ＲＰＣの要求してきたクライアント・コンポーネントの名称、該コンポーネントを含むノード名、および該コンポーネント返信先情報を関連づけて、管理部２２２の有するクライアント情報テーブル２２４に登録する。Ｓ４０３で、実行部２２１は、ＲＰＣ要求に含まれる関数Ｂａ１１６を実行して戻り値を取得する。Ｓ４０４で、実行部２２１は、取得した戻り値を呼出部２１１に送信する。
【００１９】
図５を用いてコンポーネントＢ１１４の有するサーバＲＰＣインスタンス３０３のクライアント情報テーブル２２４について説明する。管理部２２２は、クライアント情報テーブル２２４として、クライアント名５１１、ノード名５１２、および返信先情報５１３を関連付けて記憶する。クライアント名５１１は、コンポーネントＢ１１４にＲＰＣ要求を送信したクライアント・コンポーネントの名称である。ノード名５１２は、クライアント・コンポーネントを含むノードの名称である。返信先情報５１３は、クライアント・コンポーネントのクライアントＲＰＣインスタンス２１０の宛先である。なお、管理部２２２は、クライアント名５１１やノード名５１２をそれぞれに割り当てられたＩＤで管理してもよい。本実施形態では、ＲＰＣ要求を送信したクライアント・コンポーネントをクライアント情報テーブル２２４に登録するが、個別に手動で登録してもかまわない。
【００２０】
〔通常モードのクライアント側のＲＰＣ処理〕
図６のフローチャートを用いて、通常モードにＲＰＣ要求を受信した場合のクライアントＲＰＣインスタンス２１０の動作について説明する。例として、コンポーネントＣ１２３の有する関数Ｃ１２５がコンポーネントＢ１１４の有する関数Ｂａ１１６をＲＰＣで利用する場合を扱う。このフローチャートの動作は、コンピュータで読み取り可能な記憶媒体であるメモリ１２２に記憶されたコンピュータプログラムをＣＰＵ１２１が処理することによって実行される。
【００２１】
Ｓ６０１で、コンポーネントＣ１２３の有するクライアントＲＰＣインスタンス３０５の呼出部２１１は、関数Ｃ１２５から関数Ｂａ１１６に対するＲＰＣ要求を受け付ける。Ｓ６０２で、呼出部２１１は、関数Ｂａ１１６の戻り値が戻り値情報２１３に設定されているか否かを判定する。通常モードの場合には、戻り値情報２１３は設定されていない（Ｓ６０２において「ＮＯ」）ので、処理はＳ６０３に移行する。Ｓ６０３で、呼出部２１１は実行部２２１に対してＲＰＣ要求を送信する。ＲＰＣ要求の詳細は前述の通りであるため、ここでは繰り返さない。Ｓ６０６で、呼出部２１１は取得した関数Ｂａ１１６の戻り値を関数Ｃ１２５に返す。
【００２２】
〔優先モード時のＲＰＣ処理〕
情報処理装置１００が優先モードに設定された場合の動作について説明する。本実施形態では、モード・ボタン１３１の押下によって情報処理装置１００が通常モードから優先モードに切り替わった場合に、ノードＸ１１０はコンポーネントＡ１１３の動作を優先する。そのため、ノードＸ１１０は、可能な限りコンポーネントＢ１１４の動作を行わないようにする。図３を用いて前述したとおり、コンポーネントＢ１１４は、コンポーネントＡ１１３、コンポーネントＣ１２３、およびコンポーネントＤ１２４にサービスを提供する。ここで、コンポーネントＢ１１４が一切のＲＰＣ要求を拒絶した場合には、コンポーネントＡ１１３からの要求も拒絶してしまい、コンポーネントＡ１１３の処理が優先されない。また、単純に、コンポーネントＢ１１４がコンポーネントＡ１１３以外からの要求を無視した場合には、キューがあふれてしまい、状態の不整合が発生してしまうおこれがある。したがって、コンポーネントＡ１１３の動作を優先するために、コンポーネントＢ１１４は、コンポーネントＡ１１３以外からのＲＰＣ要求を抑制する。そのために、本実施形態では、コンポーネントＢ１１４は、コンポーネントＡ以外のコンポーネントに対して、戻り値情報２１３を設定する。戻り値情報２１３を設定されたコンポーネントは、コンポーネントＢ１１４にＲＰＣ要求を行わずに、戻り値情報２１３から取得した戻り値を呼出元関数２００に返す。
【００２３】
まず、図７のフローチャートを用いて、情報処理装置１００が優先モードに設定された場合のサーバＲＰＣインスタンス３０３の動作について説明する。このフローチャートの動作は、コンピュータで読み取り可能な記憶媒体であるメモリ１１２に記憶されたコンピュータプログラムをＣＰＵ１１１が処理することによって実行される。Ｓ７０１で、コンポーネントＢ１１４の有するサーバＲＰＣインスタンス３０３の設定部２２３は、どのモード変更が行われるかを判定する。優先モードの場合（Ｓ７０１において「優先モード切替」）に、処理はＳ７０２に移行する。Ｓ７０２で、設定部２２３は、管理部２２２の有する優先モード情報テーブル２２５から、優先モード情報を取得する。
【００２４】
図５を用いて、優先モード情報テーブル２２５について説明する。管理部２２２の保持する優先モード情報テーブル２２５は、優先モードの切替時に戻り値情報を設定するクライアントに関する優先モード情報を含む。優先モード情報は、クライアント名５２１、関数名５２２、戻り値タイプ５２３、および利用回数５２４を関連付けた情報である。クライアント名５２１は、コンポーネントＢの有するクライアント・コンポーネントの名称である。関数名５２２は、当該クライアント・コンポーネントがＲＰＣ要求を行う呼出先関数２３０の名称である。戻り値タイプ５２３は、情報処理装置１００が優先モードに設定される場合に、クライアントに設定される戻り値の種類である。戻り値タイプ５２３が「直前値」の場合に、設定部２２３は、戻り値情報を設定する時点で呼出先関数２３０を実行した戻り値を設定する。戻り値タイプ５２３が「エラー値」の場合に、設定部２２３は、呼出先関数２３０を実行した際にエラーだった場合の戻り値を設定する。利用回数５２４は、クライアント・コンポーネントにおいて、呼出部２１１が保持部２１２に設定された戻り値を利用できる回数である。情報処理装置１００が優先モードに設定されている間は、呼出部２１１が常に戻り値情報に含まれる戻り値を参照できるように、利用回数５２４は無制限に設定される。このように、優先モード情報テーブル２２５は、情報処理装置１００が優先モードに設定された場合に戻り値情報を設定すべきクライアント・コンポーネントの情報を保持する。優先モード情報テーブル２２５は、事前に設定される。
【００２５】
図７に戻り、Ｓ７０４で、実行部２２１は、関数名５２２で指定された関数を、戻り値タイプ５２３に従って実行し、戻り値を取得する。Ｓ７０５で、設定部２２３は、取得した戻り値をクライアントＲＰＣインスタンス２１０の戻り値情報２１３に設定する。ここで、クライアントＲＰＣインスタンス２１０の返信先情報は、クライアント情報テーブル２２４に登録されているものを利用できる。なお、ノード名５１２が同一であるクライアントに関しては、戻り値情報をまとめて各ノードに送信してもよい。
【００２６】
図８を用いて、情報処理装置１００が優先モードに設定された場合におけるコンポーネントＣ１２３の有するクライアントＲＰＣインスタンス３０５の戻り値情報８００を説明する。図３を用いて説明したように、クライアントＲＰＣインスタンス３０５は、コンポーネントＣ１２３からコンポーネントＢ１１４に対してＲＰＣを行う場合に利用されるＲＰＣインスタンス１５０である。戻り値情報８００は、関数リスト８１０とデータリスト８２０とを含む。関数リスト８１０は、コンポーネントＣ１２３がＲＰＣで利用するコンポーネントＢ１１４の関数の一覧である。関数名８１１は、ＲＰＣで利用する関数の名称である。データリストＩＤ８１２は、各関数が参照するデータリスト８２０のＩＤである。データリスト８２０は、それぞれの関数に対する戻り値を含む。データリストＩＤ８２１は、データリスト８２０のＩＤであり、データリストＩＤ８１２に対応する。戻り値８２２は、優先モード時にコンポーネントＢ１１４の関数に対するＲＰＣが要求された場合に、呼出部２１１が呼出元関数２００に返す戻り値である。残り利用回数８２３は、呼出部２１１が戻り値８２２を利用可能な回数の残数である。後続データリスト８２４は、他のデータリスト８２０へのリンクである。情報処理装置１００が優先モードにある場合には、戻り値情報８００に示すデータがコンポーネントＣ１２３の有するクライアントＲＰＣインスタンス３０５の保持部２１２に設定される。
【００２７】
続いて、再び図６のフローチャートを用いて、優先モード時にＲＰＣ要求を受け付けた場合のクライアントＲＰＣインスタンス２１０の動作について説明する。Ｓ６０１で、呼出部２１１が例えば関数Ｃ１２５から関数Ｂａ１１６に対するＲＰＣ要求を受け付けたとする。Ｓ６０２で、呼出部２１１は、保持部２１２に戻り値情報２１３が設定されているか否かを判定する。図８の戻り値情報８００に示すとおり、関数Ｂａ１１６の戻り値情報２１３が設定されている（Ｓ６０２において「ＹＥＳ」）ため、処理はＳ６０４に移行する。Ｓ６０４で、呼出部２１１は戻り値情報２１３から関数Ｂａ１１６の戻り値を取得する。Ｓ６０５で、呼出部２１１は戻り値情報２１３を更新する。優先モードの場合に更新の必要はない。Ｓ６０６で、呼出部２１１は関数Ｂａ１１６の戻り値を関数Ｃ１２５に返す。このように、コンポーネントＣ１２３からコンポーネントＢ１１４に実際にＲＰＣを行うことなく、関数Ｃ１２５に対して関数Ｂａ１１６の戻り値を返すことが出来る。そのため、コンポーネントＢ１１４は、コンポーネントＡ１１３からのＲＰＣ要求だけを処理することが出来る。
【００２８】
続いて、再びモード・ボタン１３１が押されて、優先モードから通常モードに変更された場合の情報処理装置１００の動作について、図７のフローチャートを用いて説明する。Ｓ７０１で、設定部２２３は優先モードの切替であると判定し、Ｓ７０２で、設定部２２３は優先モード情報テーブル２２５から優先モード情報を取得する。Ｓ７０３で、設定部２２３は、優先モードを解除する（Ｓ７０３において「ＮＯ」）と判定し、Ｓ７０６で、設定部２２３は、取得した優先モード情報に従って、保持部２１２の戻り値情報２１３を削除する。例えば、設定部２２３は、図８に示す戻り値情報８００を削除する。これにより、呼出部２１１は、再び通常モードのＲＰＣ処理を行うことになる。
【００２９】
〔節電モード時のＲＰＣ処理〕
情報処理装置１００が節電モードに設定された場合の動作について説明する。本実施形態では、節電ボタン１３２の押下によって情報処理装置１００が通常モードから節電モードに切り替わった場合に、デバイス１１８の電源をＯＦＦにする。節電モードに移行の際に、コンポーネントＡ１１３の関数Ａ１１５は、デバイス１１８の状態を取得するため、コンポーネントＢ１１４の関数Ｂａ１１６を２回呼び出す必要があるとする。ここで、関数Ａ１１５が関数Ｂａ１１６を呼び出すまでに時間を要するとすると、関数Ｂａ１１６の呼出が終了するまで、ノードＸ１１０はデバイス１１８の電源がＯＦＦにできない。そこで、コンポーネントＢ１１４は、関数Ｂａ１１６の戻り値を事前に取得して、コンポーネントＡ１１３に登録する。こうすることによって、ノードＸ１１０はデバイス１１８の電源を早期にＯＦＦにすることが可能となる。関数Ｂａ１１６の戻り値はコンポーネントＡ１１３に設定されているため、デバイス１１８の電源がＯＦＦになった後でも、関数Ａ１１５は処理を継続できる。
【００３０】
まず、図７のフローチャートを用いて、情報処理装置１００が節電モードに設定された場合のサーバＲＰＣインスタンス２２０の動作について説明する。Ｓ７０１で、節電モードへの切替である（Ｓ７０１において「節電モード切替」）であるため、処理はＳ７０７に移行する。Ｓ７０７で、設定部２２３は、管理部２２２の有する節電モード情報テーブル２２６から、節電モード情報を取得する。図５を用いて、節電モード情報テーブル２２６について説明する。管理部２２２の保持する節電モード情報テーブル２２６は、節電モードの切替時に戻り値情報を設定するクライアントに関する節電モード情報を含む。節電モード情報は、クライアント名５３１、関数名５３２、戻り値タイプ５３３、および利用回数５３４を含む情報である。これらは優先モード情報と同様であるため、説明を省略する。情報処理装置１００が節電モードに設定されている間は、節電モードへの移行に必要な回数だけ「直前値」を返すように利用回数５３４を「２回」に設定し、それ以降は「エラー値」を返すように利用回数５３４は無制限に設定される。このように、節電モード情報テーブル２２６は、情報処理装置１００が節電モードに設定された場合に戻り値情報を設定すべきクライアント・コンポーネントの情報を保持する。節電モード情報テーブル２２６は、事前に設定される。図７に戻り、Ｓ７０９、Ｓ７１０が処理されるが、これらの動作は前述のＳ７０４、Ｓ７０５の動作とそれぞれ同様のため、説明を繰り返さない。
【００３１】
図９を用いて、情報処理装置１００が節電モードに設定された場合におけるコンポーネントＡ１１３の有するクライアントＲＰＣインスタンス３０２の戻り値情報９００を説明する。関数リスト９０１には、関数Ｂａに対してータリストＩＤ「１」が設定される。データリスト９０２の残り利用関数には「２」が設定される。つまり、データリスト９０２の戻り値の利用回数の上限は２回である。また、データリスト９０２には、後続データリストが指定される。
【００３２】
続いて、再び図６のフローチャートを用いて、節電モード時にＲＰＣの要求を受信した場合のクライアントＲＰＣインスタンス２１０の動作について説明する。Ｓ６０５以外の処理は前述の優先モード時の処理と同様のため、説明は繰り返さない。Ｓ６０５で、呼出部２１１は戻り値情報２１３を更新する。図９を用いて、戻り値情報２１３の更新について説明する。データリスト９０２に保持される戻り値が使用された場合に、呼出部２１１は、残り利用回数を１回減らす。そして、残り利用回数が０回になった場合に、呼出部２１１は、関数リスト９０１のデータリストＩＤをデータリスト９０２の後続データリストに切り替える。その結果、保持部２１２は、戻り値情報９１０を保持することになる。従って、この場合に呼出部２１１が関数Ａ１１５から関数Ｂａに対するＲＰＣ要求を受け付けた場合は、データリスト９１３の戻り値を返すことになる。なお、説明のためにデータリスト９１２を記載しているが、メモリ容量を節約するために、データリスト９１２は削除するのが望ましい。
【００３３】
再び節電ボタン１３２が押されて、節電モードから通常モードに変更された場合の情報処理装置１００の動作については、優先モードから通常モードに変更される場合と同様であるため、説明を繰り返さない。
【００３４】
図１０のシーケンス図を用いて、節電モードに移行する場合の情報処理装置１００全体の動作を説明する。節電ボタン１３２が押下されると、Ｓ１００１で、コンポーネントＡ１１３に対して節電モードへの移行が通知され、Ｓ１００２で、コンポーネントＢ１１４に対して節電モードへの移行が通知される。コンポーネントＢ１１４は、Ｓ１００３で関数Ｂａ１１６を実行して、Ｓ１００４でデバイス１１８の状態を取得する。Ｓ１００５で、コンポーネントＢ１１４はコンポーネントＡ１１３に対して戻り値情報を設定する。その後、Ｓ１００６で、コンポーネントＢ１１４はデバイス１１８の電源をＯＦＦにする。Ｓ１００７で、コンポーネントＡ１１３は関数Ａ１１５で関数Ｂａ１１６へのＲＰＣを要求するが、戻り値情報が設定するため、コンポーネントＢ１１４への要求を行わずに、デバイス１１８の状態を取得する。
【００３５】
以上により、本発明によれば、クライアント・コンポーネントからのＲＰＣ要求をサーバ・コンポーネントから抑制することが可能となる。また、クライアント・コンポーネントでは、実際にＲＰＣ要求を行わなくても、呼出先関数の戻り値を得ることができ、処理を継続することが可能となる。その結果、クライアント・コンポーネントとサーバ・コンポーネントとの間の通信負荷を減らすことが出来る。さらに、節電モードに変更する場合に必要となる関数を事前に実行することで、早期に節電モードに移行可能となる。また、サーバ・コンポーネントは戻り値情報の利用回数の上限を設定することにより、不適当な戻り値をクライアント・コンポーネントが利用し続けることを防止することが可能となる。
【図１】
0005635760.tif 000002
【図２】
0005635760.tif 000003
【図３】
0005635760.tif 000004
【図４】
0005635760.tif 000005
【図５】
0005635760.tif 000006
【図６】
0005635760.tif 000007
【図７】
0005635760.tif 000008
【図８】
0005635760.tif 000009
【図９】
0005635760.tif 000010
【図１０】
0005635760.tif 000011