(57)【要約】【課題】ネットワークにかかる負荷を抑えつつ、分散配置されたデータに対するコンピューティング処理を高速に実行する。【解決手段】中央拠点１０１のプログラムからの移送要求の受信時にプログラム実行中の状態に基づいて、中央拠点１０１から分散拠点１０２へのプログラムの移送タイミングを設定し、そのプログラムの移送タイミングに基づいてアプリ状態領域１３１および通信管理状態領域１３３の状態情報を中央拠点１０１から分散拠点１０２に移送する。【選択図】図１
2019067301.tif 000002
【特許請求の範囲】
【請求項１】
プログラムからの移送要求の受信時に前記プログラム実行中の状態に基づいて、前記プログラムの移送タイミングを設定するイベント管理部と、
前記イベント管理部にて設定された移送タイミングに基づいて前記プログラムの状態情報を移送する状態送信部とを備えるプログラム実行装置。
【請求項２】
前記イベント管理部は、
前記プログラムの実行に用いられる状態領域とワーク領域とをメモリに確保するメモリ領域確保部と、
前記プログラムによる現在実行中のイベント処理の完了まで前記プログラムの移送を待機させる移送待機部とを備え、
前記状態送信部は、前記イベント処理の完了通知に基づいて、前記状態領域に保持された状態情報を移送する請求項１に記載のプログラム実行装置。
【請求項３】
前記プログラムによる現在実行中のイベント処理の完了後に、前記ワーク領域が初期化され、前記状態送信部は、前記ワーク態領域に保持されたワーク情報は移送しない請求項２に記載のプログラム実行装置。
【請求項４】
前記プログラムからのデータ送信要求に基づいてデータ送信処理を実行するデータ送信処理部と、
前記プログラムからのデータ受信要求に基づいてデータ受信処理を実行するデータ受信処理部と、
前記データ送信処理および前記データ受信処理を管理する通信管理部とをさらに備え、
前記通信管理部は、
前記データ送信処理部および前記データ受信処理部にて参照されるセッション情報格納領域を前記状態領域に配置し、
前記データ送信処理部および前記データ受信処理部にて参照または更新されるバッファ領域を前記ワーク領域に配置し、
前記イベント処理の完了通知に基づいて、前記バッファ領域が空になるまで前記プログラムの移送を待機させる請求項２または３に記載のプログラム実行装置。
【請求項５】
前記通信管理部は、
アプリケーションごとに設けられ、前記プログラムの移送先のプログラム実行基盤とデータ送受信を行う仮想ＮＩＣ制御部を備える請求項４に記載のプログラム実行装置。
【請求項６】
前記プログラムはアプリケーションとオペレーティングシステムとを備え、
前記メモリ領域確保部は、前記アプリケーションの実行に用いられるアプリ状態領域とアプリワーク領域とを前記メモリに確保するとともに、前記オペレーティングシステムの実行に用いられる通信管理状態領域と通信管理ワーク領域とを前記メモリに確保し、
前記状態送信部は、前記イベント処理の完了通知に基づいて、前記アプリ状態領域に保持されたアプリ状態情報、前記通信管理状態領域に保持された通信管理状態情報、前記アプリ状態領域のアドレス情報および前記通信管理状態領域のアドレス情報を移送する請求項２から５のいずれか１項に記載のプログラム実行装置。
【請求項７】
前記通信管理状態領域にはＴＣＰ／ＩＰセッション状態が記憶され、
前記通信管理ワーク領域にはバッファ領域が確保され、
前記オペレーティングシステムは、前記アプリケーションのイベント処理の完了を示すコミット通知の受信後に前記バッファ領域を初期化する請求項６に記載のプログラム実行装置。
【請求項８】
前記アプリケーションが前記プログラムの状態情報の移送先を指定する請求項６または７に記載のプログラム実行装置。
【請求項９】
前記プログラムからの要求に基づいて、前記プログラムで実行されるデータを保持するファイルサーバのＩＰアドレスを検出するデータアクセス部を備え、
前記状態送信部は、前記ＩＰアドレスに基づいて決定される移送先に前記プログラムの状態情報を移送する請求項１から８のいずれか１項に記載のプログラム実行装置。
【請求項１０】
前記データアクセス部は、前記プログラムからのファイルＧｅｔ要求またはファイルＰｕｔ要求に基づいて前記ＩＰアドレスを検出する請求項９に記載のプログラム実行装置。
【請求項１１】
前記状態送信部から移送された前記プログラムの状態情報に基づいて前記プログラムの状態を復元し、前記プログラムの実行を引き継ぐ状態復元部をさらに備える請求項１から１０のいずれか１項に記載のプログラム実行装置。
【請求項１２】
第１プログラム実行基盤が設けられた第１拠点と第２プログラム実行基盤が設けられた第２拠点との間でプログラムを移送させて前記プログラムを実行するプログラム実行方法であって、
前記第１拠点のプログラムからの移送要求の受信時に前記プログラム実行中の状態に基づいて、前記第１拠点から前記第２拠点への前記プログラムの移送タイミングを設定し、、
前記プログラムの移送タイミングに基づいて前記プログラムの状態情報を前記第１拠点から前記第２拠点に移送するプログラム実行方法。
【請求項１３】
前記プログラムの実行に用いられる状態領域とワーク領域とを前記第１拠点のメモリに確保し、
前記プログラムによる現在実行中のイベント処理の完了まで前記プログラムの移送を待機させ、
前記イベント処理の完了通知に基づいて、前記状態領域に保持された状態情報を前記第１拠点から前記第２拠点に移送する請求項１２に記載のプログラム実行方法。
【請求項１４】
前記プログラムからのデータ送信要求に基づいてデータ送信処理を実行し、
前記プログラムからのデータ受信要求に基づいてデータ受信処理を実行し、
前記データ送信処理および前記データ受信処理にて参照されるセッション情報格納領域を前記状態領域に配置し、
前記データ送信処理および前記データ受信処理にて参照または更新されるバッファ領域を前記ワーク領域に配置し、
前記イベント処理の完了通知に基づいて、前記バッファ領域が空になるまで前記プログラムの移送を待機させる請求項１３に記載のプログラム実行方法。
【請求項１５】
前記第１拠点のプログラムからの要求に基づいて、前記プログラムで実行されるデータを保持する前記第２拠点のファイルサーバのＩＰアドレスを検出し、
前記ＩＰアドレスに基づいて決定される前記第２拠点に前記プログラムの状態情報を移送する請求項１２から１４のいずれか１項に記載のプログラム実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散配置されたデータの処理を実行することが可能なプログラム実行装置およびプログラム実行方法に関する。
【背景技術】
【０００２】
広域分散配置されたデータに対するコンピューティング処理を高速に実行する装置および方法としては、非特許文献１、２に記載の技術が知られている。
【０００３】
非特許文献１記載の技術では、特定のデバイスから遠隔に離れたデバイスにアプリケーションを移送し、アプリケーションの実行を継続する技術を提供している。
【０００４】
非特許文献２記載の技術は、アプリケーションの現在実行中の状態情報だけでなく、オペレーティングシステム（以下、ＯＳと称す。）の現在実行中の状態情報を遠隔のサーバに転送することを可能にする。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｃｉｓｃｏ，  “Ａｐｐｌｉｃａｔｉｏｎ  Ｃｏｎｔｅｘｔ  Ｔｒａｎｓｆｅｒ  ｆｏｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｒｅｓｏｕｒｃｅｓ”，  Ｐａｔｅｎｔ  ＵＳ２０１３／０２１２２１２，  Ａｕｇ．  ２０１３．
【非特許文献２】Ｈｓｕ，  “Ａｐｐｌｉｃａｔｉｏｎ  Ｍｉｇｒａｔｉｏｎ  ｗｉｔｈ  Ｄｙｎａｍｉｃ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｃｏｎｔａｉｎｅｒｓ”，  Ｐａｔｅｎｔ  ＵＳ  ２０１４／０１３７１２５  Ａ１，  Ｍａｙ，  ２０１４．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、アプリケーションの移送の際にアプリケーションの現在実行中の状態情報のみを転送する方法では、ネットワーク通信プロトコルスタック等のＯＳ機能の現在実行中の状態が転送されない。このため、ネットワーク通信等のＯＳ機能を用いながらコンピューティング処理を行うアプリケーションに適用できなかった。
【０００７】
また、アプリケーションおよびＯＳが現在実行中のワーク状態を含む全ての状態を移送させながらアプリケーションおよびＯＳを実行させると、多大なデータのネットワーク転送が発生することがあり、実行遅延を招くことがあった。
【０００８】
本発明は、上記事情に鑑みなされたものであり、その目的は、ネットワークにかかる負荷を抑えつつ、分散配置されたデータに対するコンピューティング処理を高速に実行することが可能なプログラム実行装置およびプログラム実行方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、第１の観点に係るプログラム実行装置は、プログラムからの移送要求の受信時に前記プログラム実行中の状態に基づいて、前記プログラムの移送タイミングを設定するイベント管理部と、前記イベント管理部にて設定された移送タイミングに基づいて前記プログラムの状態情報を移送する状態送信部とを備える。
【発明の効果】
【００１０】
本発明によれば、ネットワークにかかる負荷を抑えつつ、分散配置されたデータに対するコンピューティング処理を高速に実行することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施形態に係るプログラム実行システムのシステム構成を示すブロック図である。
【図２】図２は、実施形態に係るプログラム実行システムのハードウェア構成を示すブロック図である。
【図３】図３は、実施形態に係るファイルロケーションデータのデータ構造を示す図である。
【図４】図４は、実施形態に係るデータアクセス部の処理を示すフローチャートである。
【図５】図５は、実施形態に係るイベント管理部の全体的な処理を示すフローチャートである。
【図６】図６は、実施形態に係るイベント管理部の領域確保要求処理に使用するデータ構造を示す図である。
【図７】図７は、実施形態に係るイベント管理部の領域確保要求処理を示すフローチャートである。
【図８】図８は、実施形態に係るイベント管理部のイベント送信要求処理およびイベント受信要求処理に使用するイベントリストのデータ構造を示す図である。
【図９】図９は、実施形態に係るイベント管理部のイベント送信要求処理を示すフローチャートである。
【図１０】図１０は、実施形態に係るイベント管理部のイベント受信要求処理を示すフローチャートである。
【図１１】図１１は、実施形態に係るイベント管理部のファイルＧｅｔ要求処理およびファイルＰｕｔ要求処理要求処理を示すフローチャートである。
【図１２】図１２は、実施形態に係るイベント管理部のイベント処理完了要求処理を示すフローチャートである。
【図１３】図１３は、実施形態に係る状態送信部の処理を示すフローチャートである。
【図１４】図１４は、実施形態に係る状態復元部の処理を示すフローチャートである。
【図１５】図１５は、実施形態に係る通信管理部の構成を示すブロック図である。
【図１６】図１６は、実施形態に係るＴＣＰ／ＩＰセッション状態情報のデータ構造を示す図である。
【図１７】図１７は、実施形態に係るＴＣＰ／ＩＰ ａｃｋ状態情報のデータ構造を示す図である。
【図１８】図１８は、実施形態に係るデータ送信要求イベント受信時の通信管理部の処理を示すフローチャートである。
【図１９】図１９は、実施形態に係るデータ受信要求イベント受信時の通信管理部の処理を示すフローチャートである。
【図２０】図２０は、実施形態に係るコミット通知受信時の通信管理部の処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決部に必須であるとは限らない。
【００１３】
図１は、実施形態に係るプログラム実行システムの構成を示すブロック図である。なお、以下の説明では、中央拠点１０１がプログラムの移送元、分散拠点１０２がプログラムの移送先である場合を例にとる。
【００１４】
図１において、プログラム実行システムには、中央拠点１０１および分散拠点１０２が設けられている。中央拠点１０１および分散拠点１０２は、通信ネットワークを介して接続されている。この通信ネットワークは、インターネットなどの広域通信網であってもよいし、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であってもよいし、これらが混在していてもよい。中央拠点１０１および分散拠点１０２には、プログラムにより処理されるデータを分散配置することができる。この時、中央拠点１０１および分散拠点１０２間でプログラムを移送させつつ、中央拠点１０１および分散拠点１０２に分散配置されたビックデータの分析などを行うことができる。
【００１５】
また、中央拠点１０１には、ファイルロケーション管理サーバ１１５およびファイルサーバ１１６が設けられている。分散拠点１０２には、ファイルサーバ１１７が設けられている。ファイルロケーション管理サーバ１１５には、ファイルロケーションデータ１３５が格納されている。ファイルロケーションデータ１３５は、どの分析対象ファイル１３６、１３７がどのファイルサーバ１１６、１１７に格納されているかを管理する。ファイルサーバ１１６、１１７には、分析対象ファイル１３６、１３７がそれぞれ格納されている。
【００１６】
また、中央拠点１０１および分散拠点１０２には、プログラム実行基盤１１１、１１２および主メモリ１１３、１１４がそれぞれ設けられている。プログラム実行基盤１１１、１１２は、主メモリ１１３、１１４に記憶されたプログラムを実行することにより、プログラム実行装置１０３、１０４を中央拠点１０１および分散拠点１０２にそれぞれ実現することができる。
【００１７】
プログラム実行装置１０３、１０４は、中央拠点１０１および分散拠点１０２間でプログラムを移送させつつ、中央拠点１０１および分散拠点１０２に分散配置されたデータの処理を行う。ここで、中央拠点１０１から分散拠点１０２へプログラムを移送する場合、そのプログラムで使用されるワーク領域を初期化可能なステップまで中央拠点１０１でプログラムを実行し、その次のステップから分散拠点１０２でそのプログラムの実行が引き継がれるように移送タイミングを設定することができる。
【００１８】
プログラム実行装置１０３、１０４で実行されるプログラムで使用される領域は、ワーク領域と状態領域に分けて管理することができる。プログラムには、アプリケーションおよびＯＳを含むことができる。この時、プログラムで使用される領域をプリケーションおよびＯＳごとにワーク領域と状態領域に分けて管理することができる。ワーク領域を初期化可能なステップまで中央拠点１０１でプログラムを実行してから、そのプログラムを分散拠点１０２に移送することにより、中央拠点１０１から分散拠点１０２へのワーク情報の送信を不要とすることができる。
【００１９】
プログラム実行装置１０３、１０４には、分析アプリ１２１、１２１´、通信管理部１２２、１２２´、イベント管理部１２３、１２５およびデータアクセス部１２４、１２６が設けられている。さらに、プログラム実行装置１０３には状態送信部１２７が設けられ、プログラム実行装置１０４には状態復元部１２８が設けられている。
【００２０】
分析アプリ１２１、１２１´は、分析を行うためのアプリケーションを実行する。ここで言う分析には、データを加工する一連の処理を含むことができる。この時、分析アプリ１２１、１２１´は分析対象ファイル１３６、１３７をＧｅｔ／Ｐｕｔすることができる。通信管理部１２２、１２２´は、分析アプリ１２１、１２１´からのデータ送信要求に基づいてデータ送信処理を実行したり、分析アプリ１２１、１２１´からのデータ受信要求に基づいてデータ受信処理を実行したりする。通信管理部１２２、１２２´は、分析アプリ１２１、１２１´が使用するＯＳに組み込むことができる。
【００２１】
イベント管理部１２３、１２５は、分析アプリ１２１、１２１´からの移送要求の受信時に、分析アプリ１２１、１２１´および通信管理部１２２、１２２´の実行中の状態に基づいて、分析アプリ１２１、１２１´および通信管理部１２２、１２２´の移送タイミングを設定する。データアクセス部１２４、１２６は、分析アプリ１２１、１２１´からの要求に基づいて、分析アプリ１２１、１２１´で処理されるデータを保持するファイルサーバ１１６、１１７のＩＰアドレスを検出する。状態送信部１２７は、イベント管理部１２３にて設定された移送タイミングに基づいてアプリ状態領域１３１および通信管理状態領域１３３の状態情報を移送する。状態復元部１２８は、状態送信部１２７から移送されたアプリ状態領域１３１および通信管理状態領域１３３の状態情報に基づいて、中央拠点１０１の分析アプリ１２１および通信管理部１２２の状態を分散拠点１０２上で復元し、分析アプリ１２１および通信管理部１２２の実行を引き継ぐ。
【００２２】
イベント管理部１２３には、メモリ領域確保部１２３ａおよび移送待機部１２３ｂが設けられている。メモリ領域確保部１２３ａは、アプリ状態領域１３１、アプリワーク領域１３２、通信管理状態領域１３３および通信管理ワーク領域１３４を主メモリ１１３に確保する。移送待機部１２３ｂは、分析アプリ１２１および通信管理部１２２による現在実行中のイベント処理の完了まで分析アプリ１２１および通信管理部１２２の移送を待機させる。なお、ここで言うイベントとは、ユーザ入力やＯＳなどからの要求に応じて処理を実行するプログラムの実行単位である。この時、イベント単位でプログラミングを行うことができる。また、プログラムの実行に用いられるワーク領域はイベントごとに初期化することができる。
【００２３】
ここで、イベント管理部１２３は、分析アプリ１２１および通信管理部１２２に対して、アプリ状態領域１３１、アプリワーク領域１３２、通信管理状態領域１３３および通信管理ワーク領域１３４を確保するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供することができる。さらに、イベント管理部１２３は、分析アプリ１２１が移送先を指定するＡＰＩおよび移送準備完了を宣言するＡＰＩを提供することができる。
【００２４】
主メモリ１１３、１１４には、アプリ状態領域１３１、１３１´、アプリワーク領域１３２、１３２´、通信管理状態領域１３３、１３３´および通信管理ワーク領域１３４、１３４´がそれぞれ格納される。アプリ状態領域１３１、１３１´およびアプリワーク領域１３２、１３２´は、分析アプリ１２１、１２１´がそれぞれ使用する。通信管理状態領域１３３、１３３´および通信管理ワーク領域１３４、１３４´は、通信管理部１２２、１２２´がそれぞれ使用する。
【００２５】
アプリ状態領域１３１、１３１´には、分析アプリ１２１、１２１´が実行中の状態情報がそれぞれ格納される。アプリワーク領域１３２、１３２´には、分析アプリ１２１、１２１´が実行中のワーク情報がそれぞれ格納される。通信管理状態領域１３３、１３３´には、通信管理部１２２、１２２´が実行中のイベント処理に関する状態情報がそれぞれ格納される。通信管理ワーク領域１３４、１３４´には、通信管理部１２２、１２２´が実行中のイベント処理に関するワーク情報がそれぞれ格納される。
【００２６】
そして、イベント管理部１２３は、分析アプリ１２１または通信管理部１２２がアプリ状態領域１３１、アプリワーク領域１３２、通信管理状態領域１３３および通信管理ワーク領域１３４を確保するＡＰＩを呼び出すと、アプリ状態領域１３１、アプリワーク領域１３２、通信管理状態領域１３３および通信管理ワーク領域１３４のアドレス情報を管理するテーブルを更新し、アプリ状態領域１３１、アプリワーク領域１３２、通信管理状態領域１３３および通信管理ワーク領域１３４を主メモリ１１３上に確保する。
【００２７】
さらに、イベント管理部１２３は、分析アプリ１２１が移送先を指定するＡＰＩを呼び出すと、分析アプリ１２１がアプリワーク領域１３２内のデータの参照／更新処理を完了し、移送準備完了を宣言するＡＰＩを呼び出すまで待機する。
【００２８】
さらに、イベント管理部１２３は、分析アプリ１２１が移送準備完了を宣言するＡＰＩを呼び出すと、通信管理部１２２にコミット通知を発行し、通信管理部１２２による通信管理ワーク領域１３４内のデータの参照／更新処理完了を待ち合わせる。その後、イベント管理部１２３は、分析アプリ１２１および通信管理部１２２の移送指示を状態送信部１２７に発行する。
【００２９】
移送指示を受けた状態送信部１２７は、アプリ状態領域１３１および通信管理状態領域１３３の状態情報と、アプリ状態領域１３１、アプリワーク領域１３２、通信管理状態領域１３３および通信管理ワーク領域１３４のアドレス情報を状態復元部１２８に送信する。
【００３０】
状態復元部１２８は、状態送信部１２７から受信したアプリ状態領域１３１および通信管理状態領域１３３の状態情報を主メモリ１１４上にコピーし、アプリ状態領域１３１および通信管理状態領域１３３の状態を分散拠点１０２上で復元する。この時、アプリ状態領域１３１および通信管理状態領域１３３の状態情報を記憶するアプリ状態領域１３１´および通信管理状態領域１３３´を主メモリ１１４上に確保することができる。
【００３１】
さらに、状態復元部１２８は、状態送信部１２７から受信したアプリワーク領域１３２および通信管理ワーク領域１３４のアドレス情報に基づいて、アプリワーク領域１３２´および通信管理ワーク領域１３４´を主メモリ１１４上に確保する。そして、アプリワーク領域１３２´および通信管理ワーク領域１３４´を初期化し、分析アプリ１２１および通信管理部１２２の移送先である分散拠点１０２において、分析アプリ１２１´および通信管理部１２２´を実行する。
【００３２】
ここで、分析アプリ１２１および通信管理部１２２が現在実行中のイベント処理の完了まで分析アプリ１２１および通信管理部１２２の移送を待機させることにより、アプリワーク領域１３２および通信管理ワーク領域１３４のワーク情報を分析アプリ１２１および通信管理部１２２の移送先に送信することなく、分析アプリ１２１および通信管理部１２２の実行を移送先で引き継がせることができる。この時、分析アプリ１２１の状態情報だけでなく通信管理部１２２の状態情報も移送先に送信することができる。このため、ネットワーク転送にかかる負荷の増大を抑制しつつ、ネットワーク通信等のＯＳ機能を用いながらコンピューティング処理を行うアプリケーションに適用することができる。
【００３３】
なお、分析アプリ１２１、１２１´は、データアクセス部１２３、１２４をそれぞれ介して分析対象ファイルの１３６、１３７Ｇｅｔ／Ｐｕｔ操作を行うことができる。そして、データアクセス部１２３、１２４は、分析アプリ１２１、１２１´からのファイルＧｅｔ要求またはファイルＰｕｔ要求に基づいて、移送先のＩＰアドレスを検出することができる。
【００３４】
この時、分析アプリ１２１、１２１´がその移送先を指定することにより、分析アプリ１２１、１２１´の移送先で使用される分析対象ファイル１３６、１３７の保存先を精度よく検出することができ、分析アプリ１２１、１２１´の移送先を効率よく見つけ出すことができる。
【００３５】
なお、上述した実施形態では、ＯＳの状態情報として通信管理に関する状態情報を例にとったが、ＯＳの状態情報は、通信管理に関する状態情報以外であってもよい。
【００３６】
図２は、実施形態に係るプログラム実行システムのハードウェア構成を示すブロック図である。
図２において、プログラム実行基盤１１１、１１２には、ＣＰＵ２０１、２０２およびＩ／Ｏ制御部２０３、２０４がそれぞれ設けられている。ＣＰＵ２０１、２０２は、メモリバス２１１、２１２をそれぞれ介して主メモリ１１３、１１４と接続されている。
【００３７】
主メモリ１１３には、状態送信プログラム１２７ｐ、データアクセスプログラム１２５ｐ、イベント管理プログラム１２３ｐ、通信管理プログラム１２２ｐおよび分析アプリプログラム１２１ｐが格納される。そして、ＣＰＵ２０１が状態送信プログラム１２７ｐ、データアクセスプログラム１２５ｐ、イベント管理プログラム１２３ｐ、通信管理プログラム１２２ｐおよび分析アプリプログラム１２１ｐを実行することにより、状態送信部１２７、データアクセス部１２５、イベント管理部１２３、通信管理部１２２および分析アプリ１２１を中央拠点１０１上で実現することができる。
【００３８】
また、ＣＰＵ２０１は、プログラムの指示に応じて主メモリ１１３上のアプリ状態領域１３１、アプリワーク領域１３２、通信管理状態領域１３３、通信管理ワーク領域１３４の参照／更新処理を行う。
【００３９】
さらに、ＣＰＵ２０１、２０２は、Ｉ／Ｏバス２１３、２１４をそれぞれ介してＩ／Ｏ制御部２０３、２０４と接続されている。そして、ＣＰＵ２０１、２０２は、プログラムの指示に応じてファイルローケーションサーバ１１５やファイルサーバ１１６、１１７に対してＩ／Ｏ処理を実行する。また、ＣＰＵ２０１、２０２は、遠隔のプログラム実行基盤１１１、１１２のＩ／Ｏ制御部２３、２０４に対してデータ送信を行い、遠隔のプログラム実行基盤１１１、１１２に接続された主メモリ１１３、１１４にデータを書き込むこともできる。
【００４０】
図３は、実施形態に係るファイルロケーションデータのデータ構造を示す図である。
図３において、ファイルロケーションデータ１３５には、分析対象ファイル１３６、１３７ごとにエントリを設けることができる。
【００４１】
ファイルロケーションデータ１３５には、グローバルファイル名３０１を格納するフィールド、ファイルサーバＩＰアドレス３０２を格納するフィールドおよびローカルファイル名３０３を格納するフィールドを設けることができる。
【００４２】
グローバルファイル名３０１は、全拠点に存在する分析対象ファイル１３６、１３７を一意に識別し、分析アプリ１２１が分析対象ファイル１３６、１３７を指定するために使用することができる。ファイルサーバＩＰアドレス３０２は、分析対象ファイル１３６、１３７を格納しているファイルサーバ１１６、１１７を特定することができる。ローカルファイル名３０３は、ファイルサーバ１１６、１１７におけるファイル管理で使用することができる。
【００４３】
図４は、実施形態に係るデータアクセス部の処理を示すフローチャートである。
図４において、データアクセス部１２３は、イベント管理部１２３、１２４からのＧｅｔ要求またはＰｕｔ要求の受信を契機に動作を開始する（ステップ４０１）。Ｇｅｔ要求またはＰｕｔ要求には、アクセス対象となる分析対象ファイル１３６、１３７を指定するグローバルファイル名３０１と、実行要否の種別を示す情報があわせて与えられる。
【００４４】
次に、データアクセス部１２３は、ファイルロケーション管理サーバ１１５からファイルロケーションデータ１３５を取得する（ステップ４０２）。この際、ステップ４０１で指定されたグローバルファイル名３０１に合致するエントリを検索し、そのエントリに対応するファイルサーバＩＰアドレス３０２およびローカルファイル名３０３を取得する。
【００４５】
次に、データアクセス部１２３は、ステップ４０１にて与えられた実行要否種別を検査する（ステップ４０３）。、実行要であれば、ステップ４０２で取得したファイルサーバＩＰアドレス３０２で指定されたファイルサーバ１１６、１１７に対してＩ／Ｏを発行し、ローカルファイル名３０３で指定されたファイルのＧｅｔ操作もしくはＰｕｔ操作を行う（ステップ４０４）。
【００４６】
次に、データアクセス部１２３は、ステップ４０４のＧｅｔ操作もしくはＰｕｔ操作の実行結果をイベント管理部１２３に送信し（ステップ４０５）、処理を終了する。
【００４７】
一方、ステップ４０３において実行不要と判定した場合には、ステップ４０２で取得したファイルサーバＩＰアドレス３０２、ローカルファイル名３０３の情報をイベント管理部１２３に通知する（ステップ４０６）。この時、データアクセス部１２３は、ファイルサーバ１１６、１１７に対する実際のＧｅｔ操作もしくはＰｕｔ操作を行わずに処理を終了する。
【００４８】
図５は、実施形態に係るイベント管理部の全体的な処理を示すフローチャートである。
図５において、イベント管理部１２３は、分析アプリ１２１または通信管理部１２２からのイベント処理要求受信を契機に動作を開始する（ステップ５０１）。
次に、イベント管理部１２３は、ステップ５０１で要求されたイベントの種類を判別する（ステップ５０２）。
【００４９】
イベントの種類には、領域確保要求、イベント送信要求、イベント受信要求、ファイルＧｅｔ要求、ファイルＰｕｔ要求およびイベント処理完了要求がある。イベント管理部１２３は、これらいずれかのイベント処理要求を受信すると、それぞれの要求処理を実行する（ステップ５０３からステップ５０８）。各要求処理の詳細は後述する。
次に、イベント管理部１２３は、分析アプリ１２１または通信管理部１２２にイベント処理完了を通知し（ステップ５０９）、処理を完了する。
【００５０】
図６は、実施形態に係るイベント管理部の領域確保要求処理に使用するデータ構造を示す図である。
図６において、イベント管理部１２３は、空き領域リスト６０１と使用領域リスト６０２というデータ構造を利用して主メモリ１１３の領域を管理し、空き領域リスト６０１と使用領域リスト６０２で管理されるデータを主メモリ１１３上に保持する。空き領域リスト６０１には未使用メモリ領域の情報が格納され、使用領域リスト６０２には使用中メモリ領域の情報が格納される。
【００５１】
空き領域リスト６０１は、それぞれの未使用メモリ領域の領域開始アドレス６１１および領域サイズ６１２の情報をリスト構造で管理する。
【００５２】
使用領域リスト６０２は、それぞれの使用中メモリ領域について、使用しているプログラム名６２１、主メモリ１１３に割り当てられた領域が状態領域かワーク領域かを識別する領域種別６２２、領域開始アドレス６２３および領域サイズ６２４の情報をリスト構造で管理する。
【００５３】
図７は、実施形態に係るイベント管理部の領域確保要求処理を示すフローチャートである。
図７において、イベント管理部１２３は、分析アプリ１２１または通信管理部１２２から領域確保要求を受け取る（ステップ７０１）。領域確保要求には、主メモリ１１３に確保される領域が状態領域かワーク領域かを識別する領域種別６２２および領域サイズ６２４の情報を含む。
【００５４】
次に、イベント管理部１２３は、空き領域リスト６０１を探索し、指定した領域サイズ以上の未使用のメモリ領域を取得する（ステップ７０２）。そして、空き領域リスト６０１を更新し、取得したメモリ領域を空き領域リスト６０１から削除する。さらに、確保したメモリ領域の領域開始アドレス６２３を、分析アプリ１２１または通信管理部１２２に通知する。
【００５５】
次に、イベント管理部１２３は、使用領域リスト６０２を更新し、ステップ７０２で確保したメモリ領域を使用メモリ領域として管理する（ステップ７０３）。
【００５６】
図８は、実施形態に係るイベント管理部のイベント送信要求処理およびイベント受信要求処理に使用するイベントリストのデータ構造を示す図である。
図８において、イベント管理部１２３は、分析アプリ１２１または通信管理部１２２からイベント送信要求が発行されたが、分析アプリ１２１または通信管理部１２２からイベント受信要求が発行されていないため、イベント管理部１２３にて滞留しているイベントの一覧をイベントリスト８０１というデータ構造を用いて管理する。この時、イベントリスト８０１のデータ構造を主メモリ１１３上に保持する。
【００５７】
イベントリスト８０１には、イベント送信要求を発行した送信先プログラム名８１１、イベント送信要求で送信されたイベント種別８１２およびイベント送信要求であわせて送信されたイベント情報８１３を格納するエントリがリスト状に接続される。
【００５８】
図９は、実施形態に係るイベント管理部のイベント送信要求処理を示すフローチャートである。
図９において、イベント管理部１２３は、分析アプリ１２１または通信管理部１２２からイベント送信要求を受け取る（ステップ９０１）。イベント送信要求には、送信先プログラム名８１１、イベント種別８１２、イベントと付随して送信されるイベント情報８１３が含まれる。
【００５９】
次に、イベント管理部１２３は、送信先プログラム名８１１、イベント種別８１２およびイベント情報８１３を格納したエントリを生成する。そして、そのエントリをイベントリスト８０１に接続することでイベントリスト８０１を更新し（ステップ９０２）、処理を完了する。
【００６０】
図１０は、実施形態に係るイベント管理部のイベント受信要求処理を示すフローチャートである。
図１０において、イベント管理部１２３は、分析アプリ１２１または通信管理部１２２からイベント送信要求を受け取る（ステップ１００１）。
次に、イベント管理部１２３は、イベントリスト８０１を探索する。そして、ステップ１００１にてイベント受信要求を発行したプログラムを送信先プログラム名８１１に格納するエントリを検索する（ステップ１００２）。
【００６１】
次に、イベント管理部１２３は、送信先プログラム名８１１が合致するエントリが存在すれば、そのエントリに格納されているイベント種別８１２およびイベント情報８１３を、ステップ１００１にてイベント受信要求を発行したプログラムに通知する。さらに、当該エントリをイベントリスト８０１から削除することでイベントリスト８０１を更新し（ステップ１００３）、処理を完了する。
【００６２】
図１１は、実施形態に係るイベント管理部のファイルＧｅｔ要求処理およびファイル
Ｐｕｔ要求処理要求処理を示すフローチャートである。
図１１において、イベント管理部１２３は、分析アプリ１２１からファイルＧｅｔ要求またはファイルＰｕｔ要求を受け取る（ステップ１１０１）。ファイルＧｅｔ要求またはファイルＰｕｔ要求には、ＧｅｔまたはＰｕｔの対象となる分析対象ファイル１３６、１３７かを識別するグローバルファイル名３０１が含まれる。また、ファイルＧｅｔ要求またはファイルＰｕｔ要求を発行したプログラムを、分析対象ファイル１３６、１３７と同一拠点に属するプログラム実行基盤１１１、１１２にＧｅｔまたはＰｕｔ操作の前に移送すべきかを示す移送要求の有無を示す情報も含まれる。
【００６３】
次に、イベント管理部１２３は、ファイルＧｅｔ要求またはファイルＰｕｔ要求を発行したプログラムの移送要求の有無を判別する（ステップ１１０２）。移送要求がある場合、イベント管理部１２３は、データアクセス部１２５にＧｅｔ要求またはＰｕｔ要求を発行する（ステップ１１０３）。このＧｅｔ要求またはＰｕｔ要求には、ステップ１１０１にて分析アプリ１２１から受信したグローバルファイル名３０１を含める。また、Ｇｅｔ操作またはＰｕｔ操作の実行不要を示す情報も含める。
【００６４】
次に、イベント管理部１２３は、データアクセス部１２５から、ファイルサーバＩＰアドレス３０２およびローカルファイル名３０３を含むファイルロケーションデータ１３５を取得する（ステップ１１０４）。
次に、イベント管理部１２３は、状態送信部１２７に移送要求を発行する（ステップ１１０５）。この移送要求には、Ｇｅｔ／Ｐｕｔ要求種別の他に、ステップ１１０４にて取得したファイルサーバＩＰアドレス３０２をもとに決定した移送先情報、さらに、ステップ１１０１で受信したグローバルファイル名３０１を含む。本移送要求発行後、処理を終了する。
【００６５】
一方、ステップ１１０２において移送要求がない場合、イベント管理部１２３は、データアクセス部１２５にＧｅｔ要求またはＰｕｔ要求を発行する（ステップ１１０６）。このＧｅｔ要求またはＰｕｔ要求は、ステップ１１０１で受信したグローバルファイル名３０１の他に、Ｇｅｔ操作またはＰｕｔ操作の実行要を示す情報を含む。
次に、イベント管理部１２３は、データアクセス部か１２５らＧｅｔ応答またはＰｕｔ応答を受信する（ステップ１１０７）。
次に、イベント管理部１２３は、ステップ１１０７で受信したＧｅｔ応答またはＰｕｔ応答を分析アプリ１２１に送信し（ステップ１１０８）、処理を終了する。
【００６６】
図１２は、実施形態に係るイベント管理部のイベント処理完了要求処理を示すフローチャートである。
図１２において、イベント管理部１２３は、分析アプリ１２１からイベント処理完了通知を受信する（ステップ１２０１）。
次に、イベント管理部１２３は、通信管理部１２２にコミット通知を送信する（ステップ１２０２）。このコミットは、分析アプリ１２１のイベント処理の完了の確定を示すことができる。通信管理部１２２は、コミット通知を受信すると、通信管理ワーク領域１３４を初期化することができる。
次に、イベント管理部１２３は、状態送信部１２７にコミット通知を送信し（ステップ１２０３）、処理を終了する。
【００６７】
図１３は、実施形態に係る状態送信部の処理を示すフローチャートである。
図１３において、状態送信部１２７は、イベント管理部１２３からの移送要求の受信を契機に動作を開始する（ステップ１３０１）。この移送要求には、Ｇｅｔ／Ｐｕｔ要求種別、移送先情報およびグローバルファイル名３０１が含まれる。
次に、状態送信部１２７は、イベント管理部１２３、１２４からのコミット通知の受信を待ち合わせる（ステップ１３０２）。
【００６８】
次に、状態送信部１２７は、データ情報復元部１２８に対するＩ／Ｏ処理を実行し、移送実行に必要な移送情報の転送を行う。本ステップで転送される移送情報には、ステップ１３０１で受信したＧｅｔ／Ｐｕｔ要求種別、グローバルファイル名３０１、主メモリ１１３に格納されているアプリ状態領域１３１および通信管理状態領域１３３の状態情報、使用領域リスト６０２が含まれる。使用領域リスト６０２を参照することにより、アプリ状態領域１３１および通信管理状態領域１３３の主メモリ１１３上の場所を得ることができる（ステップ１３０３）。この移送情報の転送を行ったら、処理を終了する。
【００６９】
ここで、状態送信部１２７がデータ情報復元部１２８に移送情報を転送する際に、アプリワーク領域１３２および通信管理ワーク領域１３４のワーク情報を転送しないようにすることにより、ネットワーク転送にかかる負荷の増大を抑制することができ、プログラムの移送に伴う遅延を低減することができる。
【００７０】
また、イベント管理部１２３、１２４からのコミット通知の受信を待ち合わせてから、状態送信部１２７がデータ情報復元部１２８に移送情報を転送することにより、中央拠点１０１から移送されたプログラムの分散拠点１０２での実行時に、中央拠点１０１のアプリワーク領域１３２および通信管理ワーク領域１３４のワーク情報を不要とすることができる。
【００７１】
さらに、状態送信部１２７はアプリ状態領域１３１の状態情報とともに通信管理状態領域１３３の状態情報をデータ情報復元部１２８に転送することにより、ネットワーク通信等のＯＳ機能を用いながらコンピューティング処理を行うアプリケーションに適用することができる。
【００７２】
図１４は、実施形態に係る状態復元部の処理を示すフローチャートである。
図１４において、状態復元部１２８は、状態送信部１２７からの移送情報の受信を契機に動作を開始する（ステップ１４０１）。本移送情報には、Ｇｅｔ／Ｐｕｔ要求種別、グローバルファイル名３０１、主メモリ１１３に格納されているアプリ状態領域１３１および通信管理状態領域１３３の状態情報および使用領域リスト６０２が含まれる。
【００７３】
次に、状態復元部１２８は、ステップ１４０１で受信した使用領域リスト６０２を主メモリ１１４にコピーする（ステップ１４０２）。
【００７４】
次に、状態復元部１２８は、ステップ１４０１で受信したアプリ状態領域１３１および通信管理状態領域１３３の状態情報を主メモリ１１４にコピーする。さらに、ステップ１４０１で受信した使用領域リスト６０２の情報から、主メモリ１１４のアプリワーク領域１３２´および通信管理ワーク領域１３４´のアドレスを算出し、そのアプリワーク領域１３２´および通信管理ワーク領域１３４を初期化する（ステップ１４０３）。
【００７５】
次に、状態復元部１２８は、ステップ１４０１で受信したＧｅｔ／Ｐｕｔ要求種別に応じて、データアクセス部１２５、１２６に対してＧｅｔ要求もしくはＰｕｔ要求を発行する（ステップ１４０４）。このＧｅｔ要求もしくはＰｕｔ要求には、ステップ１４０１で受信したグローバルファイル名３０１が含まれる。さらに、分析対象ファイル１３６、１３７に対するＧｅｔ処理やＰｕｔ処理の実行要を示す情報が含まれる。
【００７６】
次に、状態復元部１２８は、データアクセス部１２５、１２６からＧｅｔ応答またはＰｕｔ応答を受信するのを待ち合わせる（ステップ１４０５）。
次に、状態復元部１２８は、ステップ１４０４で受信したＧｅｔ応答またはＰｕｔ応答を分析アプリ１２１´に通知し（ステップ１４０６）、処理を終了する。
【００７７】
図１５は、実施形態に係る通信管理部の構成を示すブロック図である。
図１５において、通信管理部１２２には、ソケット管理部１５０１、ＴＣＰ／ＩＰプロトコルスタック１５０２および仮想ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ)制御部１５０３が設けられている。
【００７８】
ソケット管理部１５０１は、イベント管理部１２３を介して分析アプリ１２１からデータ送信要求イベントやデータ受信要求イベントを受信し、ＴＣＰ／ＩＰプロトコルスタック１５０２に対する送信要求発行や、ＴＣＰ／ＩＰプロトコルスタック１５０２が受信したデータの分析アプリ１２１への通知を行う。
【００７９】
ＴＣＰ／ＩＰプロトコルスタック１５０２は、ＴＣＰ／ＩＰプロトコルに従ったデータの送受信処理を行う。この送受信処理に必要な状態情報を保持するために、ＴＣＰ／ＩＰセッション状態領域１５１１が通信管理状態領域１３３、１３３´に確保され、ＴＣＰ／ＩＰ  ａｃｋ状態領域１５１２が通信管理ワーク領域１３４、１３４´に確保される。
【００８０】
仮想ＮＩＣ制御部１５０３は、プログラム実行基盤１１１、１１２のＩ／Ｏ制御部２０３、２０４とデータを送受することで、遠隔拠点にあるプログラム実行装置のプログラム実行基盤１１１、１１２との通信ネットワークを介したデータ送受信を行う。
【００８１】
ソケット管理部１５０１、ＴＣＰ／ＩＰプロトコルスタック１５０２、仮想ＮＩＣ制御部１５０３およびＩ／Ｏ制御部２０３、２０４の間でデータの送受信を行うため、ソケット送信バッファ領域１５１３、ソケット受信バッファ領域１５１４、仮想ＮＩＣ制御部送信バッファ領域１５１５、仮想ＮＩＣ制御部受信バッファ領域１５１６、Ｉ／Ｏ制御部送信バッファ領域１５１７、Ｉ／Ｏ制御部受信バッファ領域１５１８が通信管理ワーク領域１３４、１３４´に確保される。
【００８２】
ここで、ＴＣＰ／ＩＰ  ａｃｋ状態領域１５１２、ソケット送信バッファ領域１５１３、ソケット受信バッファ領域１５１４、仮想ＮＩＣ制御部送信バッファ領域１５１５、仮想ＮＩＣ制御部受信バッファ領域１５１６、Ｉ／Ｏ制御部送信バッファ領域１５１７、Ｉ／Ｏ制御部受信バッファ領域１５１８を通信管理ワーク領域１３４、１３４´に確保することにより、コミット通知の受信後にこれらの領域に格納されたデータを削除することが可能となり、通信管理部１２２の移送の際に転送するデータ量を削減することができる。
【００８３】
また、ＴＣＰ／ＩＰセッション状態領域１５１１のみを通信管理状態領域１３３、１３３´に確保し、プログラムの移送時にＴＣＰ／ＩＰセッション状態領域１５１１が通信管理状態領域１３３、１３３´に保持されたままにすることにより、中央拠点１０１と分散拠点１０２との間で通信を確立することが可能となる。
【００８４】
図１６は、実施形態に係るＴＣＰ／ＩＰセッション状態情報のデータ構造を示す図である。
図１６において、ＴＣＰ／ＩＰセッション状態領域１５１１に格納されるＴＣＰ／ＩＰセッション状態情報はソケットごとにエントリが存在するテーブル構造を持つ。各エントリには、ソケットＩＤ１６０１、当該ソケットのコネクション情報を格納するローカルＩＰアドレス１６０２、ローカルポート番号１６０３、リモートＩＰアドレス１６０４、リモートポート番号１６０５の他に、ＴＣＰ／ＩＰパケットに付与されるシーケンス番号を格納する送信シーケンス番号１６０６、受信シーケンス番号１６０７を格納するフィールドが存在する。
【００８５】
中央拠点１０１のプログラムの移送先が分散拠点１０２である場合、ローカルＩＰアドレス１６０２およびローカルポート番号１６０３は中央拠点１０１に割り当て、リモートＩＰアドレス１６０４およびリモートポート番号１６０５は分散拠点１０２に割り当てることができる。ローカルＩＰアドレス１６０２、ローカルポート番号１６０３、リモートＩＰアドレス１６０４およびリモートポート番号１６０５を用いることで、中央拠点１０１と分散拠点１０２との間で移送の通信を行うことができる。
【００８６】
送信シーケンス番号１６０６および受信シーケンス番号１６０７は、データ通信に失敗した時やデータの欠落があった場合などの再送用に用いることができる。
【００８７】
図１７は、実施形態に係るＴＣＰ／ＩＰ  ａｃｋ状態情報のデータ構造を示す図である。
図１７において、ＴＣＰ／ＩＰ  ａｃｋ状態領域１５１２に格納されるＴＣＰ／ＩＰ  ａｃｋ状態情報はソケットごとにエントリが存在するテーブル構造を持つ。各エントリには、ソケットＩＤ１７０１の他に、ａｃｋ済み番号１７０２を格納するフィールドが存在する。ａｃｋ済み番号１７０２は、送信データに対して受信されたａｃｋのシーケンス番号を管理する。
【００８８】
図１８は、実施形態に係るデータ送信要求イベント受信時の通信管理部の処理を示すフローチャートである。
図１８において、イベント管理部１２３、１２４は、分析アプリ１２１からの通信管理部宛データ送信要求イベントのイベント送信要求を受信する（ステップ１８０１）。本イベントには、イベント種別８１２としてデータ送信要求イベントを識別する情報が存在し、イベント情報８１３としてソケットＩＤ１６０１や送信データを指定する情報が存在する。
【００８９】
次に、通信管理部１２２は、イベント受信要求をイベント管理部１２３、１２４に送信する（ステップ１８０２）。このイベント受信要求は、イベント管理部１２３、１２４からａｃｋを受信するための予約である。このイベント受信要求は、ステップ１８０６の後に実行してもよいし、ステップ１８０７の後に実行してもよい。
【００９０】
次に、ソケット管理部１５０１は、イベント管理部１２３、１２４からステップ１８０１で送信されたデータ送信要求イベントを受信する（ステップ１８０３）。この際、イベント情報８１３としてステップ１８０１にてあわせて送信されたソケットＩＤ１６０１や送信データを指定する情報も受信する。
【００９１】
次に、ソケット管理部１５０１は、ステップ１８０３で受信したソケットＩＤ１６０１および送信データをソケット送信バッファ領域１５１３に格納し、ＴＣＰ／ＩＰプロトコルスタック１５０２に送信要求を発行する（ステップ１８０４）。
【００９２】
次に、ＴＣＰ／ＩＰプロトコルスタック１５０２は、ソケット送信バッファ領域１５１３に格納された送信データの送信処理を行う（ステップ１８０５）。この時、ソケット送信バッファ領域１５１３に格納されているソケットＩＤ１６０１に合致するＴＣＰ／ＩＰセッション状態情報のエントリを検索し、そのエントリに対応するローカルＩＰアドレス１６０２、ローカルポート番号１６０３、リモートＩＰアドレス１６０４、リモートポート番号１６０５および送信シーケンス番号１６０６をＴＣＰ／ＩＰヘッダとして送信データに付与する。そして、当該送信データを仮想ＮＩＣ制御部送信バッファ領域１５１５に格納する。また、そのエントリの送信シーケンス番号１６０６を更新し、連続した送信シーケンス番号が次の送信データに付与されるよう制御する。さらに、仮想ＮＩＣ制御部１５０３に送信要求を発行する。
【００９３】
次に、仮想ＮＩＣ制御部１５０３は、仮想ＮＩＣ制御部送信バッファ領域１５１５に格納されているデータをＩ／Ｏ制御部送信バッファ領域１５１７に移動する。そして、Ｉ／Ｏ制御部２０３、２０４に対して送信要求を発行する（ステップ１８０６）。
【００９４】
次に、Ｉ／Ｏ制御部２０３、２０４は、Ｉ／Ｏ制御部送信バッファ領域１５１７内のデータをリモートＩＰアドレス１６０４で指定されたプログラム実行基盤１１１、１１２に送信する。さらに、Ｉ／Ｏ制御部送信バッファ領域１５１７内のデータを削除する（ステップ１８０７）。
【００９５】
次に、Ｉ／Ｏ制御部２０３、２０４は、遠隔のプログラム実行基盤１１１、１１２からａｃｋデータを受信する。そして、仮想ＮＩＣ時制御部１５０３に対してａｃｋデータ受信通知を発行する（ステップ１８０８）。
【００９６】
次に、仮想ＮＩＣ制御部１５０３は、ＴＣＰ／ＩＰプロトコルスタック１５０２に対してａｃｋデータ受信通知を発行する（ステップ１８０９）。
【００９７】
次に、ＴＣＰ／ＩＰプロトコルスタック１５０２は、ＴＣＰ  ａｃｋ状態情報に対応するエントリのａｃｋ済み番号を、ＴＣＰ／ＩＰセッション状態情報の対応するエントリの送信シーケンス番号１６０６の値に更新する。そして、ソケット送信バッファ領域１５１３に格納していた送信データを削除する（ステップ１８１０）。
【００９８】
図１９は、実施形態に係るデータ受信要求イベント受信時の通信管理部の処理を示すフローチャートである。
図１９において、Ｉ／Ｏ制御部２０３、２０４は、遠隔のプログラム実行基盤１１１、１１２からデータを受信し、Ｉ／Ｏ制御部受信バッファ領域１５１８に受信データを格納する。そして、仮想ＮＩＣ制御部１５０３に受信通知を発行する（ステップ１９０１）。
【００９９】
次に、仮想ＮＩＣ制御部１５０３は、Ｉ／Ｏ制御部受信バッファ領域１５１８内のデータを仮想ＮＩＣ制御部受信バッファ領域１５１６に移動し、ＴＣＰ／ＩＰプロトコルスタック１５０２に対して受信通知を発行する（ステップ１９０２）。
【０１００】
次に、ＴＣＰ／ＩＰプロトコルスタック１５０２は、仮想ＮＩＣ制御部受信バッファ領域１５１６のデータをソケット受信バッファ領域１５１４に移動する。そして、ソケット管理部１５０１に受信通知を発行する。さらに、仮想ＮＩＣ制御部受信バッファ領域１５１６に格納されているデータに付与されているローカルＩＰアドレス１６０２、ローカルポート番号１６０３、リモートＩＰアドレス１６０４およびリモートポート番号１６０５に対応するＴＣＰ／ＩＰセッション状態情報のエントリを検索し、そのエントリに対応するソケットＩＤ１６０１および受信シーケンス番号１６０７の値を取得する。ソケットＩＤ１６０１の値はソケット受信バッファ領域１５１４に受信データとあわせて格納する。また、受信シーケンス番号１６０７と、仮想ＮＩＣ制御部受信バッファ領域１５１６に格納されているデータに付与されている送信シーケンス番号１６０６が一致することを検査し、遠隔のプログラム実行基盤１１１、１１２から欠落や順番の入れ替えなくデータが到達していることを確認する。そして、ａｃｋデータ送信要求を仮想ＮＩＣ制御部１５０３経由でＩ／Ｏ制御部２０３、２０４に発行し、遠隔のプログラム実行基１１１、１１２盤にａｃｋデータを送信する（ステップ１９０３）。この送信の後、ＴＣＰ／ＩＰセッション状態情報の受信シーケンス番号１６０７を更新し、次の受信データに対するａｃｋデータ送信も正しく行えるよう制御する。
【０１０１】
次に、イベント管理部１２３、１２４は、分析アプリ１２１からの通信管理部宛データ受信要求イベントを受信する（ステップ１９０４）。このイベントには、イベント種別８１２としてデータ送信要求イベントを識別する情報が存在し、イベント情報８１３としてソケットＩＤ１６０１や受信バッファアドレスを指定する情報が存在する。
次に、通信管理部１２２は、イベント受信要求をイベント管理部１２３、１２４に送信する（ステップ１９０５）。
【０１０２】
次に、ソケット管理部１５０１は、イベント管理部１２３、１２４からステップ１８０１で送信されたデータ受信要求イベントを受信する（ステップ１９０６）。この際、イベント情報８１３としてステップ１９０４にてあわせて送信されたソケットＩＤ１６０１や受信バッファアドレスを指定する情報も受信する。
次に、ソケット管理部１５０１は、ステップ１９０６で受信したソケットＩＤ１６０１に対応するソケット受信バッファ領域１５１４内のデータを、ステップ１９０６で受信した受信バッファアドレスで指定される領域に移動し、ソケット受信バッファ領域１５１４に格納していたデータを削除し（ステップ１９０７）、処理を完了する。
【０１０３】
図２０は、実施形態に係るコミット通知受信時の通信管理部の処理を示すフローチャートである。
図２０において、ソケット管理部１５０１は、イベント管理部１２３、１２４からのコミット通知を受信する（ステップ２００１）。
次に、ソケット管理部１５０１は、ソケット送信バッファ領域１５１３内のデータが空になるまで待ち合わせる（ステップ２００２）。この時、ステップ１８０１からステップ１８１１で示される実行中の分析アプリ１２１からのデータ送信要求イベント処理が完全に処理し終わるまで待ち合わせることができる。
【０１０４】
次に、ソケット管理部１５０１は、ソケット受信バッファ領域（１５１４）内のデータが空になるまで待ち合わせる（ステップ２００３）。この時、ステップ１９０１からステップ１９０８で示される実行中の分析アプリ１２１からのデータ受信要求イベント処理が完全に処理し終わるまで待ち合わせることができる。この待ち合わせが完了すれば、コミット通知受信時の処理が完了する。そして、この待ち合わせの完了後にプログラムを移送することができる。
【符号の説明】
【０１０５】
１０１…中央拠点、１０２…分散拠点、１０３、１０４…プログラム実行装置、１１１、１１２…プログラム実行基盤、１１３、１１４…主メモリ、１２１…分析アプリ、１２２…通信管理部、１２３、１２５…イベント管理部、１２３ａ…メモリ領域確保部、１２３ｂ…移送待機部、１２４、１２６…データアクセス部、１２７…状態送信部、１２８…状態復元部、１３１…アプリ状態領域、１３２…アプリワーク領域、１３３…通信管理状態領域、１３４…通信管理ワーク領域
【図１】
2019067301.tif 000003
【図２】
2019067301.tif 000004
【図３】
2019067301.tif 000005
【図４】
2019067301.tif 000006
【図５】
2019067301.tif 000007
【図６】
2019067301.tif 000008
【図７】
2019067301.tif 000009
【図８】
2019067301.tif 000010
【図９】
2019067301.tif 000011
【図１０】
2019067301.tif 000012
【図１１】
2019067301.tif 000013
【図１２】
2019067301.tif 000014
【図１３】
2019067301.tif 000015
【図１４】
2019067301.tif 000016
【図１５】
2019067301.tif 000017
【図１６】
2019067301.tif 000018
【図１７】
2019067301.tif 000019
【図１８】
2019067301.tif 000020
【図１９】
2019067301.tif 000021
【図２０】
2019067301.tif 000022