(57)【特許請求の範囲】
【請求項１】
複数のデータ処理装置に含まれる第１データ処理装置が、
データの写しを作成するとともに前記データの写しを保存するメモリの第１アドレスを含む復元情報を作成し、
データの書き込み先が自第１データ処理装置以外のときには、前記データの写しを自第１データ処理装置のメモリに保存し、前記複数のデータ処理装置に含まれる第２データ処理装置に前記データを送信し、
データの書き込み先が自第１データ処理装置のときには、前記データを自第１データ処理装置のメモリに保存し、前記データの写しを前記第２データ処理装置に送信し、
前記複数のデータ処理装置の少なくとも一のデータ処理装置のメモリであって前記複数のデータ処理装置で共有される共有メモリに前記復元情報を保存すること
を特徴とするデータ処理方法。
【請求項２】
前記データの写しが送信されるとき、通信速度に基づいて前記複数のデータ処理装置の中から前記第２データ処理装置が選択されること
を特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記復元情報は、
前記データの写しを保存するメモリを含むデータ処理装置の識別子と、
前記データを保存するメモリを含むデータ処理装置の識別子と、
前記メモリに保存される前記データの前記第１アドレスと、
を含むことを特徴とする請求項１または２に記載のデータ処理方法。
【請求項４】
前記復元情報は、前記データを保存するメモリを含むデータ処理装置の識別子と前記メモリに保存される前記データのアドレスとを含み、
前記復元情報の前記識別子が前記共有メモリに保存される他の復元情報の識別子と一致するときは、前記他の復元情報のアドレスを前記復元情報のアドレスに更新すること
を特徴とする請求項１乃至請求項３の何れか一に記載のデータ処理方法。
【請求項５】
前記データの読み出しエラーが発生するとき、前記共有メモリに保存される前記復元情報に基づいて前記データの写しを読み出すこと
を特徴とする請求項１乃至請求項４の何れか一に記載のデータ処理方法。
【請求項６】
複数のデータ処理装置のうちの第１データ処理装置で機能するとともにメモリアクセス情報に基づくデータの写しを作成する制御ユニットと、
前記メモリアクセス情報に基づいて、データの書き込み先が自第１データ処理装置以外のときには、前記データの写しを自第１データ処理装置のメモリに保存し、前記複数のデータ処理装置に含まれる第２データ処理装置に前記データを送信し、データの書き込み先が自第１データ処理装置のときには、前記データを自第１データ処理装置のメモリに保存し、前記データの写しを前記第２データ処理装置に送信する通信ユニットと、
前記データの写しを保存するメモリのアドレスを含む復元情報を作成するとともに、前記複数のデータ処理装置で共有される共有メモリに前記復元情報を保存する復元ユニットと、を含むこと
を特徴とするデータ処理システム。
【請求項７】
前記複数のデータ処理装置の通信速度を取得する通信速度監視ユニットを含むこと
を特徴とする請求項６に記載のデータ処理システム。
【請求項８】
前記通信ユニットは、前記通信速度に基づいて前記第２データ処理装置を選択すること  を特徴とする請求項７に記載のデータ処理システム。
【請求項９】
前記通信ユニットは、前記第２データ処理装置から前記アドレスを取得し、前記復元ユニットに送信すること
を特徴とする請求項６乃至請求項８の何れか一に記載のデータ処理システム。
【請求項１０】
前記復元情報は、前記データを保存するメモリを含むデータ処理装置の識別子と前記メモリに保存される前記データのアドレスとを含み、
前記復元ユニットは、前記復元情報の前記識別子が前記共有メモリに保存される他の復元情報の識別子と一致するときは、前記他の復元情報のアドレスを前記復元情報のアドレスに更新すること
を特徴とする請求項６乃至請求項９の何れか一に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の端末間で構築する仮想共有メモリの信頼性を高め、効率的に復元できるデータ処理方法およびデータ処理システムに関する。
【背景技術】
【０００２】
従来、ネットワークでつながった複数の端末間で仮想的な共有メモリを構築し、複数の端末で仮想メモリ空間を共有する技術が開示されている（たとえば、下記特許文献１参照。）。また、異種の端末間でデータを共有するために、端末の属性とアプリケーションの種別ごとにデータ変換式をテーブル化しておき、共有データを他の端末に送信する際、テーブルを参照してデータを変換してから送信する技術が開示されている（たとえば、下記特許文献２参照。）。
【０００３】
また、ネットワークでつながった複数の端末間でデジタルデータを共有する際のデータ・バックアップ方法が公開されている（たとえば、下記特許文献３参照。）。この技術は、バックアップをとりたいデータＡと他端末にある補助データＢとの排他的論理和をとってパリティを生成し、データＡを保持する端末と補助データＢを保持する端末と以外の端末にパリティを配置する。これにより、仮にデータＡが再生不可能だとしても、補助データとパリティの排他的論理和をとることでデータＡの復元が可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２５４７６１号公報
【特許文献２】特開平１１−１４９４０３号公報
【特許文献３】特開２００８−１５７３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１，２の技術では、ネットワーク障害などで端末間のつながりが途切れるとデータの参照がおこなえず、仮想的な共有メモリが破壊される問題があった。また、特許文献３の技術によるバックアップでは、バックアップをとるために送信する補助データおよびパリティデータのサイズが大きく、書込み要求が発生してからすべての処理が完了するまでに時間を要するため、バックアップの応答性能を向上できなかった。
【０００６】
上記各特許文献の技術では、ネットワークを通じて補助データやパリティデータを頻繁にやりとりするが、ネットワークの通信速度は、端末内部のメモリの読み書きの速度に対して圧倒的に遅い。したがって、書込み要求が発生してからすべての処理が完了するまでの時間のうち、通信に多くの時間を要することとなり、高い応答性能を実現することが困難である。これにより、仮想共有メモリが破壊されたとき、その復旧に時間がかかることになる。
【０００７】
開示のデータ処理方法およびデータ処理システムは、上述した問題点を解消するものであり、複数の端末間で構築する仮想共有メモリの信頼性を高め、効率的に復元できることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、開示技術は、複数のデータ処理装置に含まれる第１データ処理装置が、データの写しを作成するとともに前記データの写しを保存するメモリの第１アドレスを含む復元情報を作成し、データの書き込み先が自第１データ処理装置以外のときには、前記データの写しを自第１データ処理装置のメモリに保存し、前記複数のデータ処理装置に含まれる第２データ処理装置に前記データを送信し、データの書き込み先が自第１データ処理装置のときには、前記データを自第１データ処理装置のメモリに保存し、前記データの写しを前記第２データ処理装置に送信し、前記複数のデータ処理装置の少なくとも一のデータ処理装置のメモリであって前記複数のデータ処理装置で共有される共有メモリに前記復元情報を保存すること、を含む。
【発明の効果】
【０００９】
開示のデータ処理方法およびデータ処理システムによれば、複数の端末間で構築する仮想共有メモリの信頼性を高め、効率的に復元できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、データ処理システムに含まれる端末装置の構成を示すブロック図である。
【図２】図２は、図１に示したコンピュータを用いたシステムの適用例を示す図である。
【図３−１】図３−１は、グループ構成情報の例を示す図表である。
【図３−２】図３−２は、復元情報の例を示す図表である。
【図４】図４は、仮想共有メモリ構築時におけるデータ書込み時の動作処理を示すフローチャートである。
【図５】図５は、仮想共有メモリ構築時におけるデータ読込み時の動作処理を示すフローチャートである。
【図６】図６は、データのコピーの書込み先を説明する図である。
【図７−１】図７−１は、書込み時に制御部がおこなう処理内容を示すフローチャートである。
【図７−２】図７−２は、読込み時に制御部がおこなう処理内容を示すフローチャートである。
【図８−１】図８−１は、送信側の端末の通信部がおこなう処理内容を示すフローチャートである。
【図８−２】図８−２は、受信側の端末の通信部がおこなう処理内容を示すフローチャートである。
【図９】図９は、復元部がおこなう処理内容を示すフローチャートである。
【図１０】図１０は、通信速度監視部がおこなう処理内容を示すフローチャートである。
【図１１】図１１は、データの書込み先が他端末であった場合の処理時間を示すタイムチャートである。
【図１２】図１２は、データの書込み先が自端末であった場合の処理時間を示すタイムチャートである。
【発明を実施するための形態】
【００１１】
（実施の形態）
開示技術は、複数の端末でデータを共有し、仮想共有メモリを形成する。そして、データの冗長情報を何れかの端末に保存しておく。この際、データの書込み先に基づき、冗長情報を書込む先を選択する。この冗長情報として、耐障害性を高めるためにデータのコピーを用いる。仮想共有メモリにデータを書込む際、実際の書込み先物理メモリが他端末の物理メモリであった場合、コピーを自端末に書込む。書込み先が自端末の物理メモリであった場合、グループの中で自端末と最も高速に通信をおこなえる端末の物理メモリにコピーを書込む。これによってデータ復元時における冗長情報の受け渡しにかかる通信時間を最小とする。また、冗長情報としてデータのコピーを用いる。このコピーは、パリティを用いるより耐障害性が高く、パリティ生成のための補助データを必要とせず、パリティとサイズは同等であり、冗長情報を作るのに必要な通信量を減らすことができる。
【００１２】
（端末装置の構成）
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。図１は、データ処理システムに含まれる端末装置の構成を示すブロック図である。図１に示す端末装置（端末）１００は、データ処理システムを構成する複数のデータ処理装置のうちの１台を図示したものであり、たとえば、携帯電話機を用いて構成できる。この端末装置１００は、ハードウェア１０１と、オペレーティングシステム（ＯＳ）１０２と、ソフトウェア１０３とを有する。ハードウェア１０１は、ＣＰＵ１１１と、メモリ１１２と、キャリア通信部１１３と、アドホック通信部１１４と、Ｉ／Ｏ１１５と、ストレージ１１６と、メモリコントローラ１１７とを含む。ＯＳ１０２は、メモリ管理部１２１と、通信ライブラリ１２２と、を含む。ソフトウェア１０３は、通信処理をおこなうアプリケーション（アプリ）１３１を含む。
【００１３】
ＣＰＵ１１１は、端末装置１００の全体の処理を制御し、ＯＳ１０２のプログラム（メモリ管理部１２１、通信ライブラリ１２２）、およびソフトウェア１０３のアプリケーション１３１を実行する。図示のように、端末装置１００は、複数のＣＰＵ１１１を搭載し並列処理する構成であってもよい。メモリ１１２は、ＣＰＵ１１１の実行時にアクセスされ、他の複数の端末とともに仮想共有メモリを構築する。また、このメモリ１１２には、復元情報１１８と、グループ構成情報１１９の領域を含む。キャリア通信部１１３は、図示しない基地局を介して他の端末との間で通信をおこなう。アドホック通信部１１４は、他の端末装置１００との間でアドホック通信をおこなう際に用いられる。Ｉ／Ｏ１１５は、端末装置１００に対するデータ入出力用のインターフェースである。ストレージ１１６は、フラッシュメモリ等の記憶媒体である。
【００１４】
ＯＳ１０２のメモリ管理部１２１は、仮想共有メモリ実現部１２３と、アドレス変換部１２４と、高信頼ライブラリ１２５とが設けられる。高信頼ライブラリ１２５は、制御部（制御ユニット）１２６と、通信部（通信ユニット）１２７と、復元部（復元ユニット）１２８と、通信速度監視部（通信速度監視ユニット）１２９と、を含む。複数の端末を用いた仮想共有メモリは、仮想メモリ実現部１２３により管理される。
【００１５】
高信頼ライブラリ１２５は、グルーピングされた複数の端末１００で仮想共有メモリを構築する際に、仮想共有メモリに耐障害性を持たせる機能を有する。高信頼ライブラリ１２５が仮想共有メモリ実現部１２３からメモリアクセス情報を取得すると、制御部１２６が耐障害性のための冗長情報を作成・配置先を決定する。冗長情報の配置先が他の端末１００であった場合、通信部１２７により配置先として最適な端末１００を選択し、冗長情報を送信する。また、制御部１２６は、仮想共有メモリ実現部１２３からメモリアクセス情報を取得し、通信部１２７にデータの写しであるコピーの情報を送信する。また、通信部１２７は、メモリアクセスとコピーの情報を復元部１２８に送信する。
【００１６】
通信部１２７は、制御部１２６からコピーの情報を取得し、グループ構成情報１１９から、仮想共有メモリを構築している複数の端末情報、および端末の通信速度などの情報を取得する。また、通信部１２７は、通信ライブラリ１２２を用いて他端末にデータの冗長情報であるコピーを送信する。この通信ライブラリ１２２は、コンピュータ間の通信や一つのコンピュータ上のプロセス間の通信を実現するプログラム群で、ＯＳ１０２が標準的に備えている。
【００１７】
復元部１２８は、冗長情報が存在する端末１００の位置を復元情報１１８として作成し、グループの端末１００全体と共有する。復元部１２８は、制御部１２６からメモリアクセスとコピーの情報を取得すると、復元情報１１８に書込む。通信速度監視部１２９は、周期的にグループの端末との通信速度を取得し、端末情報と通信速度をグループ構成情報１１９に書込む。図１に示す構成例では、メモリ管理部１２１内部に高信頼ライブラリ１２５を配置する例としたが、これに限らず、ＯＳ１０２内であればメモリ管理部１２１の外部に高信頼ライブラリ１２５を配置し、高信頼ライブラリ１２５とメモリ管理部１２１とが相互に情報をやりとりする構成としてもよい。
【００１８】
（システムの適用例）
図２は、図１に示したコンピュータを用いたシステムの適用例を示す図である。図２において、ネットワークＮＷは、サーバ２０１，２０２とクライアント２３１〜２３４とが通信可能なネットワークであり、たとえば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、携帯電話網などで構成される。
【００１９】
サーバ２０２は、クラウド２２０を構成するサーバ群（サーバ２２１〜２２５）の管理サーバである。クライアント２３１〜２３４のうち、クライアント２３１はノート型パソコン、クライアント２３２はデスクトップ型パソコン、クライアント２３３は携帯電話機（スマートフォン、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）でもよい）、クライアント２３４はタブレット型端末である。図２のサーバ２０１，２０２，２２１〜２２５、クライアント２３１〜２３４は、たとえば、図１に示したデータ処理装置により実現される。
【００２０】
図３−１は、グループ構成情報の例を示す図表である。仮想共有メモリを構築する際に用いられるグループ構成情報１１９は、グループの各端末の識別子と、自端末と該端末との通信速度と、の対応表である。端末識別子は、各端末を一意に特定できるもので、たとえば、図示のＭＡＣアドレスとしたり、ＳＩＭ番号、電話番号などを用いることができる。通信速度は、単位時間あたりに端末間でやりとりできるデータ量で、図示のようにｂｐｓ（ｂｉｔ  ｐｅｒ  ｓｅｃｏｎｄ）等を用いることができる。
【００２１】
図３−２は、復元情報の例を示す図表である。復元情報１１８は、データが読み出し不能な場合に、コピーデータを読み出すために用いる。データとコピーそれぞれが書込まれている端末識別子と、物理メモリアドレスの対応表である。データとは、仮想共有メモリで実際に扱われるデータであり、コピーとは前記データの冗長情報として作成されたコピーである。物理メモリアドレスとは、データおよびコピーの内容が実際に保持されている物理メモリ内のアドレスのことである。
【００２２】
（システムの処理内容）
（データおよびコピーの書込みの全体処理について）
図４は、仮想共有メモリ構築時におけるデータ書込み時の動作処理を示すフローチャートである。まず、アプリケーション（アプリ）１３１がメモリ１１２に書込み要求を発行すると（ステップＳ４０１）、メモリ管理部１２１は、書込み先が仮想共有メモリであるか判断する（ステップＳ４０２）。書込み先が仮想共有メモリでなかった場合は（ステップＳ４０２：自端末のメモリ）、メモリ管理部１２１は、自端末のメモリ１１２に対する通常のメモリ書込み処理をおこない（ステップＳ４０３）、処理を終了する。一方、書込み先が仮想共有メモリであった場合は（ステップＳ４０２：仮想共有メモリ）、仮想共有メモリ実現部１２３によるメモリアクセス情報に基づき、仮想共有メモリ（他端末のメモリ）に対する書込み処理をおこなう（ステップＳ４０４）。
【００２３】
この後、仮想共有メモリ実現部１２３が書込み処理を終えると、高信頼ライブラリ１２５は、書込んだデータのコピーを作成し（ステップＳ４０５）、データの物理的な書込み先が自端末かどうか判断する（ステップＳ４０６）。データの書込み先が自端末であった場合は（ステップＳ４０６：自端末のメモリ）、グループを構成している端末のうち自端末との通信速度が最速の端末にコピーを書込む（ステップＳ４０７）。一方、書込み先が他端末であった場合は（ステップＳ４０６：他端末のメモリ）、コピーを自端末に書込む（ステップＳ４０８）。その後、書込んだデータと、コピーの書込む位置を復元情報１１８に反映させ、復元情報１１８を更新し（ステップＳ４０９）、処理を終了する。
【００２４】
（データおよびコピーの読込みの全体処理について）
図５は、仮想共有メモリ構築時におけるデータ読込み時の動作処理を示すフローチャートである。はじめに、アプリがメモリ１１２に読込み要求を発行すると（ステップＳ５０１）、メモリ管理部１２１は、読込み先が仮想共有メモリであるか判断する（ステップＳ５０２）。読込み先が仮想共有メモリでなければ（ステップＳ５０２：自端末のメモリ）、メモリ管理部１２１は自端末のメモリ１１２から通常のメモリ読込み処理をおこなう（ステップＳ５０３）。一方、読込み先が仮想共有メモリであった場合は（ステップＳ５０２：仮想共有メモリ）、仮想共有メモリ実現部１２３によるメモリアクセス情報に基づき、仮想共有メモリから読込み処理をおこなう（ステップＳ５０４）。
【００２５】
この後、仮想共有メモリ実現部１２３が読込み処理を終えると、高信頼ライブラリ１２５は、この読込み処理が成功したか判断する（ステップＳ５０５）。読込みに成功した場合は（ステップＳ５０５：Ｙｅｓ）、高信頼ライブラリ１２５は何もせず、処理を終了する。一方、読込みに失敗した場合には（ステップＳ５０５：Ｎｏ）、復元部１２８が復元情報１１８を読み出し、この読込みに失敗したデータに対応するコピーを保持する端末を特定し（ステップＳ５０６）、特定した端末からコピーを取得し（ステップＳ５０７）、処理を終了する。
【００２６】
図６は、データのコピーの書込み先を説明する図である。図４に示した書込み処理において、仮想共有メモリにデータを書込む際、（ａ）実際の書込み先物理メモリが他端末６０１のメモリ１１２であった場合には、コピーを自端末６００に書込む。一方、（ｂ）書込み先が自端末６００のメモリ１１２であった場合には、グループの中で自端末６００と最も高速に通信をおこなえる端末６０２のメモリ１１２にコピーを書込む。
【００２７】
（書込み時における制御部の処理について）
図７−１は、書込み時に制御部がおこなう処理内容を示すフローチャートである。高信頼ライブラリ１２５の制御部１２６は、仮想共有メモリ実現部１２３の書込み処理実行を契機に処理実行する。はじめに、制御部１２６は、仮想共有メモリ実現部１２３から書込みデータと、書込み先の端末識別子と物理メモリアドレスを取得する（ステップＳ７０１）。
【００２８】
つぎに、取得した書込みデータのコピーを作成したのち（ステップＳ７０２）、取得した端末識別子が自身の端末識別子と一致するか判断する（ステップＳ７０３）。一致した場合は（ステップＳ７０３：Ｙｅｓ）、通信部１２７にコピーのデータを送信し（ステップＳ７０４）、通信部１２７からコピーの書込み先である端末識別子と物理メモリアドレスを取得し（ステップＳ７０５）、ステップＳ７０７に移行する。一致しなかった場合は（ステップＳ７０３：Ｎｏ）、自端末のメモリ１１２にコピーを書込み（ステップＳ７０６）、ステップＳ７０７に移行する。ステップＳ７０７では、制御部１２６は、復元部１２８にデータを書込んだ先の端末識別子と物理メモリアドレスと、コピーを書込んだ先の端末識別子と物理メモリアドレスとを送信し（ステップＳ７０７）、復元情報１１８を更新して、終了する。
【００２９】
（読込み時における制御部の処理について）
図７−２は、読込み時に制御部がおこなう処理内容を示すフローチャートである。制御部１２６は、仮想共有メモリ実現部１２３の読込み処理実行を契機に処理実行する。まず、仮想共有メモリ実現部１２３から読込みデータと、読込み先の端末識別子と物理メモリアドレスを取得する（ステップＳ７１１）。
【００３０】
つぎに、復元情報１１８から端末識別子と物理メモリアドレスの一覧を取得し（ステップＳ７１２）、この一覧の中に仮想共有メモリ実現部１２３から取得した端末識別子と物理メモリアドレスに一致するエントリが存在するか判断する（ステップＳ７１３）。エントリが存在した場合は（ステップＳ７１３：Ｙｅｓ）、データに対応するコピーの存在位置（端末識別子と物理メモリアドレス）からコピーを取得し（ステップＳ７１４）、コピーの取得が成功したか判断する（ステップＳ７１５）。コピーの取得に成功した場合は（ステップＳ７１５：Ｙｅｓ）、このコピーを仮想共有メモリ実現部１２３に送信し（ステップＳ７１６）、処理を終了する。エントリが存在しなかった場合（ステップＳ７１３：Ｎｏ）、およびコピーの取得に失敗した場合は（ステップＳ７１５：Ｎｏ）、読込みに失敗したことを示すエラー通知を仮想共有メモリ実現部１２３に送信し（ステップＳ７１７）、処理を終了する。
【００３１】
（送信側の通信部の処理について）
図８−１は、送信側の端末の通信部がおこなう処理内容を示すフローチャートである。通信部１２７は、制御部１２６がデータのコピーを送信することを契機に処理実行する。まず、通信部１２７は、制御部１２６から送られてきたコピーを受け取ると（ステップＳ８０１）、グループ構成情報１１９から端末識別子と通信速度の一覧を取得する（ステップＳ８０２）。つぎに、取得した一覧から通信速度が最も速い端末を選択し（ステップＳ８０３）、この端末に対して通信ライブラリ１２２を用いてコピーのデータを送信する（ステップＳ８０４）。その後、送信先の端末からコピーを書込んだ先のメモリ１１２の物理メモリアドレスを取得し（ステップＳ８０５）、制御部１２６に、コピーを配置した端末の端末識別子と取得した物理メモリアドレスを送信し（ステップＳ８０６）、処理を終了する。
【００３２】
（受信側の通信部の処理について）
図８−２は、受信側の端末の通信部がおこなう処理内容を示すフローチャートである。通信部１２７は、他端末の通信部１２７がコピーを送信することを契機に処理実行する。まず、通信部１２７は、他端末の通信部１２７からコピーを受け取る（ステップＳ８１１）。つぎに、自端末のメモリ１１２に受け取ったコピーを書込む（ステップＳ８１２）。その後、コピーを送信してきた端末の通信部１２７に対して、受け取ったコピーを書込んだメモリ１１２の物理メモリアドレスを送信し（ステップＳ８１３）、処理を終了する。
【００３３】
（復元部の処理について）
図９は、復元部がおこなう処理内容を示すフローチャートである。データを復元するためにおこなっておく処理内容について記載してある。復元部１２８は、制御部１２６が端末識別子などを送信することを契機に処理実行する。まず、復元部１２８は、制御部１２６からデータを書込んだ先の端末識別子と物理メモリアドレスと、コピーを書込んだ先の端末識別子と物理メモリアドレスと、を取得する（ステップＳ９０１）。つぎに、復元情報１１８から端末識別子と物理メモリアドレスの一覧を取得する（ステップＳ９０２）。
【００３４】
その後、取得した一覧の中に制御部１２６から取得した端末識別子と物理メモリアドレスに一致するエントリが存在するか判断する（ステップＳ９０３）。エントリが存在する場合は（ステップＳ９０３：Ｙｅｓ）、このエントリにあるコピーの書込み先の端末識別子と物理メモリアドレスが、制御部１２６から取得したコピーの書込み先の端末識別子と物理メモリアドレスと一致するか判断する（ステップＳ９０４）。一致した場合は（ステップＳ９０４：Ｙｅｓ）、そのまま動作を終了する。一方、一致しなかった場合は（ステップＳ９０４：Ｎｏ）、このエントリに制御部１２６から取得したコピーの書込み先の端末識別子と物理メモリアドレスを上書き登録し（ステップＳ９０５）、ステップＳ９０７に移行する。
【００３５】
ステップＳ９０３において、エントリが存在しなかった場合は（ステップＳ９０３：Ｎｏ）、新たにエントリを追加作成し、制御部１２６から取得したデータとコピーの端末識別子と物理メモリアドレスを登録し（ステップＳ９０６）、ステップＳ９０７に移行する。ステップＳ９０７では、グループ端末全体にこのエントリの変更（更新）を通知し（ステップＳ９０７）、処理を終了する。
【００３６】
（通信速度監視部の処理について）
図１０は、通信速度監視部がおこなう処理内容を示すフローチャートである。通信速度監視部１２９は、周期的に以下の処理を実行する。たとえば、端末１００が一定時間ごとに基地局との接続を確認する周期と同期して実行してもよい。通信速度監視部１２９は、まず、グループ構成情報からエントリ数Ｎと端末識別子リストＩＤを取得する（ステップＳ１００１）。つぎに、自端末と、リストに存在するすべての端末の通信速度を測定する。具体的には、端末数ｉを初期値０にし（ステップＳ１００２）、端末数ｉがエントリ数Ｎ未満であれば（ステップＳ１００３：Ｙｅｓ）、ある一つの端末（端末識別子リストＩＤｉ）の通信速度Ｔｉを測定する（ステップＳ１００４）。通信速度の測定は、たとえば、小さなデータ（たとえば３２Ｂｙｔｅのデータ）を実際に端末に送信して、送信した時刻と返答を受け取った時刻から求めることができる。
【００３７】
その後、測定した端末の通信速度をグループ構成情報１１９に登録し（ステップＳ１００５）、端末数ｉをインクリメントし（ステップＳ１００６）、ステップＳ１００３に戻る。以降、ステップＳ１００４〜ステップＳ１００６の処理をおこない、エントリ数Ｎのグループすべての端末に対して、同様に通信速度の測定と登録をおこなう。グループすべての端末に対する測定が終了すれば（ステップＳ１００３：Ｎｏ）、処理を終了する。
【００３８】
（データ冗長化処理にかかる時間について）
図６に示したように、４台の端末がグルーピングされ仮想共有メモリを構築している状況においてデータ冗長化処理にかかる時間について考察する。図６に示した状況で自端末６００は仮想共有メモリに対して書込みをおこなっている。このとき、仮想共有メモリ実現部１２３は、仮想アドレスから端末識別子と物理アドレスへの変換をおこない、自端末は、この端末の変換されたアドレスに対してデータの書込みをおこなう。以下の例では、データのサイズは１ＭＢｙｔｅ、通信速度は自端末−書込み先端末間が４Ｍｂｐｓ、書込み先端末−パリティ配置端末間が８Ｍｂｐｓ、その他は図６に記載した通りとする。
【００３９】
（書込み先が他端末の場合）
図１１は、データの書込み先が他端末であった場合の処理時間を示すタイムチャートである。はじめに、従来技術、すなわち、補助データの作成およびパリティの送信をおこなう構成について説明する。この従来技術では、アプリからメモリ書込み要求が発生すると（ステップＳ１１０１）、メモリ管理部にて仮想アドレスから物理アドレスへの変換（論物変換）がおこなわれる（ステップＳ１１０２）。この論物変換は、端末のメモリ１１２に格納されている対応表を参照することでおこなわれるため、その実行時間は遅くとも数百ｕｓ〜数ｍｓ程度である。論物変換によって書込み先の端末と物理アドレスが得られると、自端末は、書込み先端末に対してデータを送信する（ステップＳ１１０３）。データは、１ＭＢｙｔｅであり、自端末−書込み先端末間の通信速度は４Ｍｂｐｓであるため、データ送信には２ｓかかる。
【００４０】
書込み先端末はデータの受信を終えると、グループの端末に対して補助データの問い合わせをする（ステップＳ１１０４）。問い合わせる内容は、必要なデータの量や端末識別子などで、発生する通信量は多くても数Ｋｂｙｔｅであるため補助データ問い合わせ時間は数ｍｓ程度である。問い合わせ後、書込み先端末は補助データの受信をおこなう（ステップＳ１１０５）。補助データは、少なくとも１ＭＢｙｔｅ以上であるので、この受信には最低でも２ｓかかる。補助データの受信が終わると、書込み先端末はパリティを作成する（ステップＳ１１０６）。パリティはデータと補助データの排他的論理和をとることで作成され、少なくとも１ＭＢｙｔｅのパリティを作成することになる。ＣＰＵの動作周波数を１ＧＨｚ、ＩＰＣ（Ｉｎｓｔｒｕｃｔｉｏｎ  ｐｅｒ  Ｃｙｃｌｅ）を１、１命令あたり４Ｂｙｔｅのデータを扱えると仮定すると、２５０ｕｓでパリティを作成することができる。キャッシュミスなどのオーバーヘッドを考慮しても数ｍｓ程度である。
【００４１】
パリティの作成が終わると、書込み先端末はパリティ問い合わせをおこなう（ステップＳ１１０７）。パリティ問い合わせは、パリティを格納できる空き容量を持つ端末を探すためにおこなわれる。問い合わせる内容は、上述した補助データ問い合わせとほぼ同様で、問い合わせ時間は数ｍｓ程度である。パリティ問い合わせ後、書込み先端末はパリティ配置先端末に対してパリティを送信する（ステップＳ１１０８）。パリティは１ＭＢｙｔｅで、書込み先端末−パリティ配置先端末間の通信速度は８Ｍｂｐｓであるため、パリティの送信にかかる時間は１ｓである。パリティ送信後、書込み先端末は、復元情報を作成する（ステップＳ１１０９）。
【００４２】
復元情報は、データが読み出せない場合に補助データとパリティからデータを復元する際に利用される情報で、具体的にはデータの存在位置（端末の識別子と物理メモリアドレスなど）と、補助データとパリティの存在位置と、の対応表である。復元情報の作成は、論物変換のときと同様に、端末のメモリ１１２の参照となるため、その時間は数ｍｓ程度である。復元情報を作成後、書込み先端末は、作成した復元情報をグループすべての端末へ送信する（ステップＳ１１１０）。復元情報はデータと補助データ、パリティそれぞれの存在位置でありそのサイズは数Ｋｂｙｔｅ程度であるので、復元情報送信にかかる時間は補助データ問い合わせのときと同様に数ｍｓ程度である。以上から、従来技術では、データ冗長化処理にかかる全体時間は５．１ｓ程度となる。
【００４３】
つぎに、開示技術でのデータ冗長化処理について説明する。上述した実施の形態では、アプリ１３１からメモリ書込要求が発生すると（ステップＳ１１０１）、メモリ管理部１２１にて仮想アドレスから物理アドレスへの変換（論物変換）がおこなわれる（ステップＳ１１１１）。これは、従来技術の場合と同様であり、論物変換にかかる時間は数ｍｓ程度である。論物変換後、自端末はコピーの作成をおこなう（ステップＳ１１１２）。コピーは、データと全く同じ内容であり、そのサイズは１ＭＢｙｔｅとなるので、パリティ作成と同様に、コピーの作成の時間は、数百ｕｓ〜数ｍｓ程度である。このとき作成されたコピーは自端末のメモリ１１２上に格納される。
【００４４】
コピー作成の後、自端末は書込み先端末に対してデータを送信する（ステップＳ１１１３）。データは１ＭＢｙｔｅであり、自端末−書込み先端末間の通信速度は４Ｍｂｐｓであるため、データ送信には２ｓかかる。データ送信の後、自端末は復元情報１１８を作成する（ステップＳ１１１４）。復元情報１１８は、データが読み出せない場合にコピーをデータの代わりにする際に利用される情報で、具体的にはデータの存在位置（端末の識別子と物理メモリアドレスなど）と、コピーの存在位置と、の対応表である。復元情報の作成は、論物変換のときと同様に、端末のメモリ１１２への参照となるため、その時間は数ｍｓ程度である。
【００４５】
復元情報１１８を作成後、自端末は作成した復元情報１１８をグループすべての端末へ送信する（ステップＳ１１１５）。復元情報１１８は、データと補助データ、パリティそれぞれの存在位置であり、そのサイズは数Ｋｂｙｔｅ程度であるので、復元情報１１８の送信にかかる時間は、補助データ問い合わせのときと同様に数ｍｓ程度である。以上から、開示技術では、データ冗長化処理にかかる全体時間は２．１ｓ程度となる。このように、開示技術によれば、従来技術の５．１ｓの半分以下の時間で済む。
【００４６】
（書込み先が自端末の場合）
図１２は、データの書込み先が自端末であった場合の処理時間を示すタイムチャートである。はじめに、従来技術について説明する。従来技術では、アプリからメモリ書込要求が発生すると（ステップＳ１２０１）、メモリ管理部にて仮想アドレスから物理アドレスへの変換（論物変換）がおこなわれる（ステップＳ１２０２）。この論物変換は、端末のメモリ１１２に格納されている対応表を参照することでおこなわれるため、その実行時間は遅くとも数百ｕｓ〜数ｍｓ程度である。論物変換によって書込み先の端末と物理アドレスが得られると、自端末はグループの端末に対して補助データの問い合わせをする（ステップＳ１２０３）。問い合わせる内容は、必要なデータの量や端末識別子などで、発生する通信量は、多くても数Ｋｂｙｔｅであるため補助データ問い合わせ時間は数ｍｓ程度である。問い合わせ後、自端末は補助データの受信をおこなう（ステップＳ１２０４）。補助データは、少なくとも１ＭＢｙｔｅ以上であるので、この受信には最低でも２ｓかかる。
【００４７】
補助データの受信が終わると、自端末はパリティを作成する（ステップＳ１２０５）。パリティは、データと補助データの排他的論理和をとることで作成され、少なくとも１ＭＢｙｔｅのパリティを作成することになる。ＣＰＵの動作周波数を１ＧＨｚ、ＩＰＣ（Ｉｎｓｔｒｕｃｔｉｏｎ  ｐｅｒ  Ｃｙｃｌｅ）を１、１命令あたり４Ｂｙｔｅのデータを扱えると仮定すると、２５０ｕｓでパリティを作成することができる。キャッシュミスなどのオーバーヘッドを考慮しても数ｍｓ程度である。パリティの作成が終わると、自端末はパリティ問い合わせをおこなう（ステップＳ１２０６）。パリティ問い合わせは、パリティを格納できる空き容量を持つ端末を探すためにおこなわれる。問い合わせる内容は、補助データ問い合わせとほぼ同様で、問い合わせ時間は数ｍｓ程度である。
【００４８】
パリティ問い合わせ後、自端末はパリティ配置先端末に対してパリティを送信する（ステップＳ１２０７）。パリティは、１ＭＢｙｔｅで、書込み先端末−パリティ配置先端末間の通信速度は８Ｍｂｐｓであるため、パリティの送信にかかる時間は１ｓである。パリティ送信後、自端末は復元情報を作成する（ステップＳ１２０８）。復元情報は、データが読み出せない場合に補助データとパリティからデータを復元する際に利用される情報で、具体的にはデータの存在位置（端末の識別子と物理メモリアドレスなど）と、補助データとパリティの存在位置と、の対応表である。復元情報の作成は、論物変換のときと同様端末のメモリ１１２への参照となるため、その時間は数ｍｓ程度である。復元情報を作成後、自端末は作成した復元情報をグループすべての端末へ送信する（ステップＳ１２０９）。復元情報は、データと補助データ、パリティそれぞれの存在位置であり、そのサイズは数Ｋｂｙｔｅ程度であるので、復元情報送信にかかる時間は補助データ問い合わせのときと同様に数ｍｓ程度である。以上から、従来技術ではデータ冗長化処理にかかる全体時間は３．１ｓ程度となる。
【００４９】
つぎに、開示技術でのデータ冗長化処理について説明する。上述した実施の形態では、アプリ１３１からメモリ書込要求が発生すると、メモリ管理部１２１にて仮想アドレスから物理アドレスへの変換（論物変換）がおこなわれる（ステップＳ１２１１）。これは従来技術の場合と同様なので、論物変換にかかる時間は数ｍｓ程度である。論物変換後、自端末はコピーの作成をおこなう（ステップＳ１２１２）。コピーは、データと全く同じ内容でありそのサイズは１ＭＢｙｔｅとなるので、パリティ作成と同様にコピーの作成にかかる時間は数百ｕｓ〜数ｍｓ程度である。このとき作成されたコピーは、自端末のメモリ１１２上に格納される。
【００５０】
コピー作成の後、自端末は、コピー問い合わせをおこなう（ステップＳ１２１３）。コピー問い合わせは、コピーを配置するのに適した端末を選択するためにおこなわれる。問い合わせる内容は、補助データ問い合わせとほぼ同様で、問い合わせ時間は数ｍｓ程度である。コピー問い合わせ後、自端末はコピー配置先端末に対してコピーを送信する（ステップＳ１２１４）。コピーは、１ＭＢｙｔｅで、自端末−コピー配置先端末間の通信速度は８Ｍｂｐｓであるため、コピーの送信にかかる時間は１ｓである。
【００５１】
コピー送信後、自端末は復元情報１１８を作成する（ステップＳ１２１５）。復元情報１１８は、データが読み出せない場合にコピーをデータの代わりとする際に利用される情報で、具体的にはデータの存在位置（端末の識別子と物理メモリアドレスなど）と、コピーの存在位置と、の対応表である。復元情報１１８の作成は、論物変換のときと同様、端末のメモリ１１２への参照となるため、その時間は数ｍｓ程度である。復元情報１１８を作成後、自端末は作成した復元情報をグループすべての端末へ送信する（ステップＳ１２１６）。復元情報１１８は、データとコピーそれぞれの存在位置であり、そのサイズは数Ｋｂｙｔｅ程度であるので、復元情報１１８の送信にかかる時間は、補助データ問い合わせのときと同様に、数ｍｓ程度である。以上から、開示技術によれば、データ冗長化処理にかかる全体時間は１．１ｓ程度となる。このように、従来技術の１／３程度の時間で済む。
【００５２】
以上説明した開示技術によれば、複数の端末で仮想共有メモリを構築することにより、大きなメモリ容量を得ることができるようになる。開示の技術では、複数の端末がネットワークを介して接続された構成であり、ネットワーク状況の変化により、ある端末への接続がおこなえないときを想定している。これに対応すべく、あらかじめデータのコピーを作成し、データの書き込み先の端末と異なる端末にコピーを配置しておく。これにより、ネットワーク上で接続できない端末が生じても、コピーを用いてデータを復元でき、仮想共有メモリのデータ内容を維持でき、信頼性を向上できるようになる。
【００５３】
また、ネットワークの通信速度を考慮してグループの中で自端末と最も高速に通信をおこなえる端末の物理メモリにコピーを書込む構成であるため、データ復元を短時間でおこなうことができるようになる。また、データのコピーを用いてデータ復元するため、パリティを用いるに比して耐障害性が高く、パリティ生成のための補助データを必要とせず、通信量を減らし、効率的に復元できるようになる。
【００５４】
上述した本実施の形態に関し、さらに以下の付記を開示する。
【００５５】
（付記１）複数のデータ処理装置に含まれる第１データ処理装置が、
データの写しを作成するとともに前記データの写しを保存するメモリの第１アドレスを含む復元情報を作成し、
前記複数のデータ処理装置に含まれる第２データ処理装置に前記データまたは前記データの写しを送信し、
前記複数のデータ処理装置の少なくとも一のデータ処理装置のメモリであって前記複数のデータ処理装置で共有される共有メモリに前記復元情報を保存すること
を特徴とするデータ処理方法。
【００５６】
（付記２）前記データの写しが送信されるとき、通信速度に基づいて前記複数のデータ処理装置の中から前記第２データ処理装置が選択されること
を特徴とする付記１に記載のデータ処理方法。
【００５７】
（付記３）前記データは、前記第１データ処理装置のメモリに保存されること
を特徴とする付記２に記載のデータ処理方法。
【００５８】
（付記４）前記データが送信されるとき、前記データの写しは前記第１データ処理装置のメモリに保存されること
を特徴とする付記１乃至付記３の何れか一に記載のデータ処理方法。
【００５９】
（付記５）前記復元情報は、
前記データの写しを保存するメモリを含むデータ処理装置の識別子と、
前記データを保存するメモリを含むデータ処理装置の識別子と、
前記メモリに保存される前記データのアドレスと、
を含むことを特徴とする付記１乃至付記４の何れか一に記載のデータ処理方法。
【００６０】
（付記６）前記復元情報は、前記データを保存するメモリを含むデータ処理装置の識別子と前記メモリに保存される前記データのアドレスとを含み、
前記復元情報の識別子が前記共有メモリに保存される他の復元情報の識別子と一致するときは、前記他の復元情報のアドレスを前記復元情報のアドレスに更新すること
を特徴とする付記１乃至付記４の何れか一に記載のデータ処理方法。
【００６１】
（付記７）前記データの読み出しエラーが発生するとき、前記共有メモリに保存される前記復元情報に基づいて前記データの写しを読み出すこと
を特徴とする付記１乃至付記６の何れか一に記載のデータ処理方法。
【００６２】
（付記８）複数のデータ処理装置のうちの第１データ処理装置で機能するとともにメモリアクセス情報に基づくデータの写しを作成する制御ユニットと、
前記メモリアクセス情報に基づいて、前記複数のデータ処理装置の第２データ処理装置に前記データの写しを送信するかまたは前記データの写しを前記第１データ処理装置のメモリに保存する通信ユニットと、
前記データの写しを保存するメモリのアドレスを含む復元情報を作成するとともに、前記複数のデータ処理装置で共有される共有メモリに前記復元情報を保存する復元ユニットと、を含むこと
を特徴とするデータ処理システム。
【００６３】
（付記９）前記複数のデータ処理装置の通信速度を取得する通信速度監視ユニットを含むこと
を特徴とする付記８に記載のデータ処理システム。
【００６４】
（付記１０）前記通信ユニットは、前記通信速度に基づいて前記第２データ処理装置を選択すること
を特徴とする付記９に記載のデータ処理システム。
【００６５】
（付記１１）前記通信ユニットは、前記第２データ処理装置から前記アドレスを取得し、前記復元ユニットに送信すること
を特徴とする付記８乃至付記１０の何れか一に記載のデータ処理システム。
【００６６】
（付記１２）前記通信ユニットは、
前記メモリアクセスが前記第１データ処理装置に対するときは前記データの写しを前記第２データ処理装置に送信し、
前記メモリアクセスが前記第１データ処理装置以外のデータ処理装置に対するときは前記データの写しを前記第１データ処理装置のメモリに保存すること
を特徴とする付記８乃至付記１１の何れか一に記載のデータ処理システム。
【００６７】
（付記１３）前記復元情報は、前記データを保存するメモリを含むデータ処理装置の識別子と前記メモリに保存される前記データのアドレスとを含み、
前記復元ユニットは、前記復元情報の識別子が前記共有メモリに保存される他の復元情報の識別子と一致するときは、前記他の復元情報のアドレスを前記復元情報のアドレスに更新すること
を特徴とする付記８乃至付記１２の何れか一に記載のデータ処理システム。
【００６８】
（付記１４）前記通信ユニットは、
前記データの写しを送信されるとき、通信速度に基づいて前記複数のデータ処理装置の中から前記第２データ処理装置を選択すること
を特徴とする付記８乃至付記１３の何れか一に記載のデータ処理システム。
【符号の説明】
【００６９】
１００  端末装置（端末）
１０１  ハードウェア
１０２  オペレーティングシステム（ＯＳ）
１０３  ソフトウェア
１１２  メモリ
１１３  キャリア通信部
１１４  アドホック通信部
１１６  ストレージ
１１７  メモリコントローラ
１１８  復元情報
１１９  グループ構成情報
１２１  メモリ管理部
１２２  通信ライブラリ
１２３  仮想共有メモリ実現部
１２４  アドレス変換部
１２５  高信頼ライブラリ
１２６  制御部
１２７  通信部
１２８  復元部
１２９  通信速度監視部
１３１  アプリケーション（アプリ）
【図１】
0005870999.tif 000002
【図２】
0005870999.tif 000003
【図３−１】
0005870999.tif 000004
【図３−２】
0005870999.tif 000005
【図４】
0005870999.tif 000006
【図５】
0005870999.tif 000007
【図６】
0005870999.tif 000008
【図７−１】
0005870999.tif 000009
【図７−２】
0005870999.tif 000010
【図８−１】
0005870999.tif 000011
【図８−２】
0005870999.tif 000012
【図９】
0005870999.tif 000013
【図１０】
0005870999.tif 000014
【図１１】
0005870999.tif 000015
【図１２】
0005870999.tif 000016