(57)【要約】  仮想マシン（１２）のゲストオペレーティングシステム（１２０）は、仮想マシン（１３）を宛先とするデータを、宛先ＩＤと送信元ＩＤとともに、共有メモリ（１１１）に書き込む。配送管理部（１８１）は、配送情報テーブル（１６１）に、宛先ＩＤと送信元ＩＤに対応した配送先として情報処理装置（２１）が指定されていると判別すると、データを通信部（１８２）に供給する。通信部（１８２）は、配送管理部（１８１）から供給されたデータを情報処理装置に送信する。配送管理部（１８１）は、配送情報テーブル（１６１）に宛先ＩＤと送信元ＩＤに対応した配送先が指定されていないと判別すると、第１データを共有メモリ（１１２）に書き込んで仮想マシン（１３）に配送する。
2019180812.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンを複数含む仮想環境が構築された情報処理装置であって、
前記情報処理装置上で動作するルートオペレーティングシステムと、
前記仮想マシン上でそれぞれ動作するゲストオペレーティングシステムと、
前記ゲストオペレーティングシステムと前記ルートオペレーティングシステムとがアクセス可能な共有メモリと、
前記仮想マシンが指定するデータの宛先を示す宛先情報及び当該データの送信元を示す送信元情報と、当該データを実際に配送する先である配送先との関係を指定する配送情報記憶手段と、
を備え、
前記ルートオペレーティングシステムは、前記仮想マシンが出力したデータの配送を管理する配送管理手段と、他の情報処理装置と通信経路を介して通信する通信手段とを含み、
複数の前記仮想マシンのうちの第１仮想マシンの前記ゲストオペレーティングシステムが、複数の前記仮想マシンのうちの第２仮想マシンを宛先とする第１データを、前記宛先情報及び前記送信元情報とともに、前記共有メモリに書き込むと、前記配送管理手段は、前記配送情報記憶手段に前記宛先情報及び前記送信元情報に対応した配送先が指定されているか否かを判別し、
前記配送情報記憶手段に前記宛先情報及び前記送信元情報に対応した配送先として前記他の情報処理装置が指定されていると判別すると、前記配送管理手段は、前記第１データを前記通信手段に供給し、前記通信手段は、前記配送管理手段から供給された前記第１データを前記他の情報処理装置に送信し、
前記配送管理手段は、前記配送情報記憶手段に前記宛先情報及び前記送信元情報に対応した配送先が指定されていないと判別すると、前記第１データを前記第２仮想マシンに配送する、
情報処理装置。
【請求項２】
前記配送管理手段は、前記配送情報記憶手段に前記宛先情報及び前記送信元情報に対応した配送先として前記情報処理装置上の複数の前記仮想マシンのうちの第３仮想マシンが指定されていると判別すると、前記第１データを前記第３仮想マシンに配送する、
請求項１に記載の情報処理装置。
【請求項３】
前記配送情報記憶手段は、前記宛先情報及び前記送信元情報と前記仮想マシン上で動作するアプリケーションを識別する識別情報とに基づいて、前記仮想マシン間でやり取りされるデータの配送先を指定し、
前記第１仮想マシンの前記ゲストオペレーティングシステムは、前記第１仮想マシン上で動作するアプリケーションが出力したデータであって、前記第２仮想マシンを宛先とするデータを、前記宛先情報及び前記送信元情報と前記識別情報とともに、前記共有メモリに書き込み、
前記配送管理手段は、前記共有メモリから読み出した前記宛先情報及び前記送信元情報と前記識別情報とに基づいて、前記第１データを配送する先を判別する、
請求項１または２に記載の情報処理装置。
【請求項４】
前記配送情報記憶手段の前記配送先の指定が有効であるか否かが設定された有効無効設定条件記憶手段をさらに備え、
前記配送管理手段は、前記共有メモリから読み出した前記第１データについて、前記配送情報記憶手段に前記配送先が指定されている場合、前記有効無効設定条件記憶手段において、前記配送先の指定が有効であると判別した場合、前記配送情報記憶手段において指定された前記配送先に前記第１データを配送する、
請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第１仮想マシンの前記ゲストオペレーティングシステムは、前記第１データを前記共有メモリに書き込むと、前記ルートオペレーティングシステムに前記共有メモリにデータを書き込んだ旨を通知し、
前記ルートオペレーティングシステムは、前記第１仮想マシンの前記ゲストオペレーティングシステムからデータを書き込んだ旨の通知を受けると、前記共有メモリから前記第１データを読み出す、
請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記配送管理手段は、前記第１データをその配送先に配送するため前記第１データを前記共有メモリに書き込むと、前記第１データを配送した先の前記仮想マシンの前記ゲストオペレーティングシステムに、前記共有メモリに前記第１データを書き込んだ旨を通知し、
前記第１データを配送した先の前記仮想マシンの前記ゲストオペレーティングシステムは、前記配送管理手段から前記第１データを書き込んだ旨の通知を受けると、前記共有メモリから前記第１データを読み出す、
請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
仮想マシンを複数含む仮想環境が構築された情報処理装置で、仮想マシン間でやり取りされるデータを配送する方法であって、
前記情報処理装置は、
前記情報処理装置上で動作するルートオペレーティングシステムと、
前記仮想マシン上でそれぞれ動作するゲストオペレーティングシステムと、
前記ゲストオペレーティングシステムと前記ルートオペレーティングシステムとがアクセス可能な共有メモリと、
前記仮想マシンが指定するデータの宛先を示す宛先情報及び当該データの送信元を示す送信元情報と、当該データを実際に配送する先である配送先との関係を指定する配送情報記憶手段と、
を備え、
複数の前記仮想マシンのうちの第１仮想マシンの前記ゲストオペレーティングシステムが、複数の前記仮想マシンのうちの第２仮想マシンを宛先とする第１データを、前記宛先情報及び前記送信元情報とともに、前記共有メモリに書き込むステップと、
前記ルートオペレーティングシステムが、前記配送情報記憶手段に、前記共有メモリに書き込まれた前記宛先情報及び前記送信元情報に対応した配送先が指定されているか否かを判別するステップと、
前記ルートオペレーティングシステムが、前記配送情報記憶手段に前記第１データの前記配送先が指定されていると判別した場合、前記配送情報記憶手段の前記配送先として他の情報処理装置が指定されているか否かを判別するステップと、
前記ルートオペレーティングシステムが、前記配送情報記憶手段に前記宛先情報及び前記送信元情報に対応した配送先として前記他の情報処理装置が指定されていると判別した場合、前記第１データを前記他の情報処理装置に送信するステップと、
前記ルートオペレーティングシステムが、前記配送情報記憶手段に前記宛先情報及び前記送信元情報に対応した配送先が指定されていないと判別した場合、前記第１データを前記第２仮想マシンに配送するステップと、
を含む方法。
【請求項８】
仮想マシンを複数含む仮想環境が構築された情報処理装置上で動作するルートオペレーティングシステムが実行するプログラムであって、
前記情報処理装置は、
前記ルートオペレーティングシステムと、
前記仮想マシン上でそれぞれ動作するゲストオペレーティングシステムと、
前記ゲストオペレーティングシステムと前記ルートオペレーティングシステムとがアクセス可能な共有メモリと、
前記仮想マシン間でやり取りされるデータの宛先を示す宛先情報及び当該データの送信元を示す送信元情報と当該データを実際に配送する先である配送先との関係を指定する配送情報記憶手段と、
を備え、
前記ルートオペレーティングシステムに、
複数の前記仮想マシンのうちの第１仮想マシンの前記ゲストオペレーティングシステムが、複数の前記仮想マシンのうちの第２仮想マシンを宛先とする第１データを、前記宛先情報及び前記送信元情報とともに、前記共有メモリに書き込むと、前記配送情報記憶手段に、前記宛先情報及び前記送信元情報とに対応した配送先が指定されているかを判別し、
前記第１データについて前記配送情報記憶手段に前記配送先が指定されていると判別した場合、前記配送情報記憶手段に前記配送先として他の情報処理装置が指定されているか否かを判別し、
前記配送情報記憶手段に前記宛先情報及び前記送信元情報に対応した配送先として前記他の情報処理装置が指定されていると判別した場合、前記第１データを前記他の情報処理装置に送信し、
前記配送情報記憶手段に前記宛先情報及び前記送信元情報に対応した配送先が指定されていないと判別した場合に、前記第１データを前記第２仮想マシンに配送する、
ことを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
仮想環境を構築した情報処理装置の仮想マシン上で複数のアプリケーションが連携して動作することがある。例えば、ファクトリーオートメーションの分野では、リアルタイムオペレーティングシステムが動作する仮想マシン上で駆動機器、検査装置等を制御する制御用のアプリケーションが実行される。さらに、非リアルタイムオペレーティングシステムが動作する他の仮想マシン上で、検査装置が出力した検査データを処理する情報処理用のアプリケーションが実行される。【０００３】
仕様の変更、不具合等のため、あるアプリケーションを修正することがある。この場合、本番環境とは別のテスト環境で、修正後のアプリケーションを実行して動作検証をすることが通常である。テスト環境では、テスト用のダミーデータを使用して検証を行うこともあるが、本番環境で収集したデータを使用して検証を行うことが望ましい場合がある。例えば、本番環境だけで発生する不具合に対応するためアプリケーションを修正した場合である。【０００４】
特許文献１には、同一の情報処理装置に本番環境とテスト環境とを構築して、本番環境とテスト環境とがファイル資源を共有することが記載されている。このような構成とすることで、テスト環境で、本番環境で収集したデータを使用して検証を行うことができる。【０００５】
仮想環境を構築した情報処理装置において、特許文献１のように本番用の情報処理装置にテスト環境を構築するためには、その情報処理装置に１つ以上の仮想マシンを新たに追加する必要がある。しかし、仮想マシンの追加により、既存の仮想マシンの動作が不安定になり、本番環境の稼働状態に悪影響を与えることがある。例えば、ファクトリーオートメーションの分野では、駆動機器、検査装置等を制御する制御用のアプリケーションが実行されている仮想マシンの動作が不安定になると、駆動機器、検査装置等の稼働状態に悪影響を与えてしまう。最悪の場合、駆動機器、検査装置等が暴走するといった問題が発生することも予想される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−２３５０１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の問題は、検証の際には、駆動機器、検査装置等を制御する制御用のアプリケーションといったアプリケーションを、別の情報処理装置の仮想マシン上で実行することで未然に防ぐことができる。しかしながら、この場合、異なる情報処理装置で動作する仮想マシンが通信する必要がある。【０００８】
通信先を別の情報処理装置上の仮想マシンに変更する場合、本番環境の仮想マシンの設定及び当該仮想マシン上で動作するアプリケーションの設定の変更が必要となり、本番環境の動作に悪影響を及ぼす可能性があった。【０００９】
本発明は上記実情に鑑みてなされたものであり、仮想マシン側の設定を変更することなく、複数の情報処理装置をまたがった仮想マシン間の通信を可能とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の情報処理装置は、仮想マシンを複数含む仮想環境が構築された情報処理装置である。情報処理装置は、情報処理装置上で動作するルートオペレーティングシステムと、仮想マシン上でそれぞれ動作するゲストオペレーティングシステムと、ゲストオペレーティングシステムとルートオペレーティングシステムとがアクセス可能な共有メモリと、仮想マシンが指定するデータの宛先を示す宛先情報及び当該データの送信元を示す送信元情報と、当該データを実際に配送する先である配送先との関係を指定する配送情報記憶手段と、を備える。ルートオペレーティングシステムは、仮想マシンが出力したデータの配送を管理する配送管理手段と、他の情報処理装置と通信経路を介して通信する通信手段とを含む。複数の仮想マシンのうちの第１仮想マシンのゲストオペレーティングシステムが、複数の仮想マシンのうちの第２仮想マシンを宛先とする第１データを、宛先情報及び送信元情報とともに、共有メモリに書き込むと、配送管理手段は、配送情報記憶手段に宛先情報及び送信元情報に対応した配送先が指定されているか否かを判別する。配送情報記憶手段に宛先情報及び送信元情報に対応した配送先として他の情報処理装置が指定されていると判別すると、配送管理手段は、第１データを通信手段に供給し、通信手段は、配送管理手段から供給された第１データを他の情報処理装置に送信する。配送管理手段は、配送情報記憶手段に宛先情報及び送信元情報に対応した配送先が指定されていないと判別すると、第１データを第２仮想マシンに配送する。
【発明の効果】
【００１１】
本発明の情報処理装置では、配送管理手段が、第１仮想マシンが共有メモリに書き込んだ第１データについて、配送情報記憶手段に宛先情報及び送信元情報に対応した配送先として他の情報処理装置が指定されていると判別すると、第１データを通信手段に供給し、通信手段は、配送管理手段から供給された第１データを他の情報処理装置に送信する。このような構成を備えることで、仮想マシン側の設定を変更することなく、複数の情報処理装置の仮想マシンが、情報処理装置間をまたがって、通信することを可能とする。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係る情報処理システムの構成の概要を示す図
【図２】実施の形態に係る情報処理装置のハードウェア構成を示すブロック図
【図３】実施の形態に係る情報処理装置の機能ブロック図
【図４】実施の形態に係る共有メモリにセットされるデータの構成を示す図
【図５】実施の形態に係る配送情報テーブルに登録されるデータの一例を示す図
【図６】実施の形態に係る起動条件テーブルに登録されるデータの一例を示す図
【図７】実施の形態に係る起動条件テーブルに登録されるデータの他の例を示す図
【図８】実施の形態に係る情報処理装置間で送受信されるデータの構成を示す図
【図９】実施の形態に係る送信側の情報処理装置の配送管理部の第１配送処理のフローチャート
【図１０】実施の形態に係る送信側の情報処理装置の通信部の送信処理のフローチャート
【図１１】実施の形態に係る受信側の情報処理装置の通信部の受信処理のフローチャート
【図１２】実施の形態に係る受信側の情報処理装置の配送管理部の第２配送処理のフローチャート
【図１３】変形例に係る情報処理装置の機能ブロック図
【図１４】変形例に係る配送情報テーブルに登録されるデータの一例を示す図
【図１５】変形例に係る情報処理装置の配送管理部の配送処理のフローチャート
【図１６】配送情報テーブルに登録されるデータの他の例を示す図
【図１７】起動条件テーブルに登録されるデータの他の例を示す図
【図１８】配送情報テーブルに登録されるデータのさらに他の例を示す図
【発明を実施するための形態】
【００１３】
（実施の形態）
図１に示すように、本実施の形態に係る情報処理システム１００は、通信経路５０を介して相互通信が可能な情報処理装置１１と情報処理装置２１とを含む。情報処理装置１１は、ＦＡ制御システムの本番環境として稼働する装置である。情報処理装置２１は、ＦＡ制御システムのテスト環境用の装置である。
【００１４】
ここでは、情報処理装置１１は工場内に設置され、情報処理装置２１は工場外に設置されている。このため、情報処理装置１１と情報処理装置２１とは、通信経路５０を介して接続されている。通信経路５０は、不図示のＬＡＮ（Local Area Network）の一部を構成する。
【００１５】
情報処理装置１１、２１にはそれぞれ仮想環境が構築されている。情報処理装置１１では、仮想マシン１２及び１３が動作する。情報処理装置２１では、仮想マシン２２及び２３が動作する。なお、図１では、ホストマシンである情報処理装置１１、２１にそれぞれインストールされたルートオペレーティングシステムの図示を省略している。
【００１６】
仮想マシン１２はプログラマブルロジックコントローラとして機能する。仮想マシン１２は、工場内の駆動機器９１及び９２と、検査装置９３とに接続されている。仮想マシン１２は、本発明の第１仮想マシンの一例である。仮想マシン１２のゲストオペレーティングシステム（以下、ゲストＯＳと称する）１２０は、制御用のアプリケーション１３０を実行する。アプリケーション１３０は、プログラマブルロジックコントローラのファームウェアである。アプリケーション１３０は、駆動機器９１及び９２の制御に係る処理と、検査装置９３の検査データの収集処理とを行う。アプリケーション１３０は、例えば、検査データとして検査装置９３が製造部品を撮影した画像データを収集し、その画像データを仮想マシン１３に送信する。
【００１７】
仮想マシン１３は、情報処理を行うコンピュータとして機能する。仮想マシン１３は、本発明の第２仮想マシンの一例である。仮想マシン１３のゲストＯＳ１４０は、現場の検査データを解析し、生産ラインへフィードバックする品質管理アプリケーションといった、情報処理用のアプリケーション１５０を実行する。アプリケーション１５０は、検査装置９３の検査データを解析する解析処理を行う。アプリケーション１５０は、例えば、仮想マシン１２のアプリケーション１３０から受信した検査装置９３が撮影した画像データを解析し、不良品の個数を修正した集計データといった、解析に基づく品質状況を示すデータを生成し、生成した品質状況を示すデータを、仮想マシン１２に送信する。
【００１８】
仮想マシン２２は、仮想マシン１２と同様の構成を備え、プログラマブルロジックコントローラとして機能する。仮想マシン１２とは異なり、仮想マシン２２は、実機の制御を行わない。仮想マシン２２にはシミュレータ９４が接続されている。シミュレータ９４は、パーソナルコンピュータがシミュレーション用のプログラムを実行することで実現される。
【００１９】
仮想マシン２３は、仮想マシン１３と同様の構成を備え、情報処理を行うコンピュータとして機能する。
【００２０】
本番環境の稼働時においては、情報処理装置１１の仮想マシン１２及び１３が協働して動作する。アプリケーションの動作検証時には、テスト環境用の情報処理装置２１の仮想マシン２２及び２３が協働して動作する。
【００２１】
さらに、本実施の形態では、本番環境で収集したデータを使用して、アプリケーションの動作検証を行うため、情報処理装置１１の仮想マシン１２と、情報処理装置２１の仮想マシン２３とが協働して動作することができる。また、情報処理装置１１の仮想マシン１３と情報処理装置２１の仮想マシン２２とが協働して動作することができる。このため、情報処理装置１１、２１のいずれも、仮想マシンのひとつが同一情報処理装置の他の仮想マシン宛てに送信したデータを、ユーザが指定した他の情報処理装置に配送することができる。言い換えると、仮想マシンのひとつが同一情報処理装置の他の仮想マシン宛てに送信したデータを、ユーザが指定した他の情報処理装置に転送することができる。
【００２２】
図２に示すように、情報処理装置１１はハードウェア構成として、プロセッサ１と、主記憶部２と、補助記憶部３と、通信制御部４と、を有する。主記憶部２、補助記憶部３、通信制御部４はいずれも内部バス９を介してプロセッサ１に接続されており、プロセッサ１と通信する。なお、情報処理装置２１のハードウェア構成も、情報処理装置１１の構成と同様である。
【００２３】
プロセッサ１は、ＣＰＵ（Central Processing Unit）を含む。プロセッサ１は、補助記憶部３に記憶される各種プログラムを実行して、情報処理装置１１の各種機能を実現する。
【００２４】
主記憶部２は、揮発性メモリを含み、プロセッサ１のワークメモリとして用いられる。プロセッサ１は、主記憶部２に補助記憶部３に格納されたプログラム、パラメータ等をロードし、主記憶部２にロードしたプログラム、パラメータ等を使用して各種処理を行う。
【００２５】
補助記憶部３は、不揮発性メモリを含む。補助記憶部３は、プログラム、パラメータ等を格納する。補助記憶部３は、後述の配送管理部１８１の機能を実現するためのプログラム００１と、通信部１８２の機能を実現するためのプログラム００２とを格納する。さらに、補助記憶部３には、仮想マシン１２、１３を作成するプログラム、仮想マシン１２のアプリケーション１３０を実行するためのプログラム、仮想マシン１３のアプリケーション１５０を実行するためのプログラム等が格納されている。
【００２６】
通信制御部４は、通信経路５０を介した通信を行うためのネットワークインタフェースを含む。通信制御部４は、通信経路５０を介して伝送された信号を受信して、受信した信号が示すデータをプロセッサ１に出力する。また、通信制御部４は、プロセッサ１から供給されたデータを示す信号を、通信経路５０を介して、情報処理装置２１に送信する。
【００２７】
図３に示すように、情報処理装置１１は機能的には、仮想マシン１２及び１３を管理するハイパーバイザ１１０と、仮想マシン１２上で動作するゲストＯＳ１２０及びアプリケーション１３０と、仮想マシン１３上で動作するゲストＯＳ１４０及びアプリケーション１５０と、ホストマシンである情報処理装置１１にインストールされ、ホストマシン上で動作するルートオペレーティングシステム（以下、ルートＯＳと称する）１８０と、仮想マシン１２と仮想マシン１３間でやり取りされるデータを配送する宛先である配送先が登録されている配送情報テーブル１６１と、配送情報テーブル１６１に登録されている情報の有効または無効に関する情報が登録されている起動条件テーブル１６２と、を含む。配送情報テーブル１６１は、本発明の配送情報記憶手段の一例である。起動条件テーブル１６２は、本発明の有効無効設定条件記憶手段の一例である。
【００２８】
ハイパーバイザ１１０は、後述のルートＯＳ１８０の制御に従って、仮想マシン１２及び１３を作成し、作成した仮想マシン１２及び１３を管理する。ハイパーバイザ１１０は、プロセッサ１が補助記憶部３に記憶する専用のプログラムを実行することによって実現される。
【００２９】
ハイパーバイザ１１０は、仮想マシン１２に割り当てられた共有メモリ１１１と、仮想マシン１３に割り当てられた共有メモリ１１２と、仮想デバイスドライバであるバックエンドドライバ１１３とを有する。共有メモリ１１１は、ゲストＯＳ１２０とルートＯＳ１８０との間のデータ交換に使用される。このため、ゲストＯＳ１２０とルートＯＳ１８０とが共有メモリ１１１にアクセス可能である。以下、共有メモリ１１１にデータを書き込むことを、データをセットするという場合がある。共有メモリ１１２は、補助記憶部３により実現される。共有メモリ１１２は、ゲストＯＳ１４０とルートＯＳ１８０との間のデータ交換に使用される。このため、ゲストＯＳ１４０とルートＯＳ１８０とが共有メモリ１１２にアクセス可能である。共有メモリ１１２は、補助記憶部３により実現される。
【００３０】
本実施の形態において、ゲストＯＳ１２０とゲストＯＳ１４０は直接データのやり取りをすることができない。このため、ルートＯＳ１８０が、共有メモリ１１１、１１２を使用して、ゲストＯＳ１２０とゲストＯＳ１４０との間のデータの受け渡しを行う。例えば、ゲストＯＳ１２０がゲストＯＳ１４０にデータを送信する場合、まず、ゲストＯＳ１２０は、ゲストＯＳ１４０に送信するデータを共有メモリ１１１にセットする。ルートＯＳ１８０は、ゲストＯＳ１２０が共有メモリ１１１にセットしたデータを読み出す。ルートＯＳ１８０は、読み出したデータを、共有メモリ１１２にセットする。ゲストＯＳは、ルートＯＳ１８０が共有メモリ１１２にセットしたデータを読み出す。このようにして、ゲストＯＳ１２０からゲストＯＳ１４０へデータが渡される。ゲストＯＳ１４０からゲストＯＳ１２０にデータを渡す場合も同様である。
【００３１】
バックエンドドライバ１１３は、ルートＯＳ１８０の制御に従って、共有メモリ１１１及び１１２に対するデータの読み書きを行う。
【００３２】
ゲストＯＳ１２０は、仮想マシン１２上で実行されるオペレーティングシステムである。本実施の形態では、ゲストＯＳ１２０としてＲＴＯＳ（Real Time Operating System）を想定している。ゲストＯＳ１２０は、ルートＯＳ１８０から指示されるとアプリケーション１３０を起動する。また、ゲストＯＳ１２０は、ルートＯＳ１８０との間で、共有メモリ１１１を使用したデータ交換を行う。ゲストＯＳ１２０は、プロセッサ１が補助記憶部３に格納されているプログラムを実行することにより実現される。
【００３３】
ゲストＯＳ１２０は、仮想デバイスドライバであるフロントエンドドライバ１２１を有している。フロントエンドドライバ１２１は、ゲストＯＳ１２０の制御の下、共有メモリ１１１に対するデータの読み書きを行う。
【００３４】
ゲストＯＳ１２０は、フロントエンドドライバ１２１を制御して、アプリケーション１３０の出力データを共有メモリ１１１に書き込む。
【００３５】
図４に、ゲストＯＳ１２０が共有メモリ１１１にセットするデータのフォーマットの一例を示す。共有メモリ１１１にセットされるデータは、ヘッダ１０１０と、データ部１０２０と、誤り検出符号１０３０とを含む。
【００３６】
ヘッダ１０１０は、宛先の仮想マシンの識別情報である宛先ＩＤ（Identification）１０１１と、送信元の仮想マシンの識別情報である送信元ＩＤ１０１２と、データを出力したアプリケーションを識別する識別情報を示す情報である種別１０１３と、データ部１０２０のサイズを示す情報であるサイズ１０１４とを含む。宛先ＩＤ１０１１は、本発明の宛先情報の一例であり、送信元ＩＤ１０１２は、本発明の送信元情報の一例である、種別１０１３は、本発明の識別情報の一例である。
【００３７】
例えば、仮想マシン１２が仮想マシン１３にアプリケーション１３０の出力データを送信する場合は、次のような値がヘッダ１０１０の各部にセットされる。宛先ＩＤ１０１１には仮想マシン１３を示すＩＤが、送信元ＩＤ１０１２には仮想マシン１２を示すＩＤが、種別１０１３の値には、アプリケーション１３０の識別情報がセットされる。
【００３８】
データ部１０２０は、アプリケーション１３０の出力データを含む。例えば、データ部１０２０は、アプリケーション１３０が検査装置９３から収集した検査データを含む。誤り検出符号１０３０は、誤り検出のための符号である。誤り検出の方式として、例えば、ＣＲＣ（Cyclic Redundancy Check）、パリティ、ハミング等を採用することができる。
【００３９】
また、ゲストＯＳ１２０は、フロントエンドドライバ１２１を制御して、ルートＯＳが共有メモリ１１１にセットしたデータを読み出す。ルートＯＳ１８０が共有メモリ１１１にセットするデータのフォーマットも図４に示す例と同様である。
【００４０】
図３に示すゲストＯＳ１２０は、さらに、フロントエンドドライバ１２１を制御して、ルートＯＳ１８０との間で仮想バスを介したバス通信を行う。具体的には、ゲストＯＳ１２０は、共有メモリ１１１にデータを書き込んだ旨を通知するデータセット通知のシグナルを、フロントエンドドライバ１２１を制御してルートＯＳ１８０に送信する。このシグナルを受けて、ルートＯＳ１８０は共有メモリ１１１からデータを読み出す。
【００４１】
また、ルートＯＳ１８０が共有メモリ１１１にデータをセットした場合、ルートＯＳ１８０はフロントエンドドライバ１２１に、データをセットしたことを通知するデータセット通知のシグナルを送信する。フロントエンドドライバ１２１がこのシグナルを受けると、ゲストＯＳ１２０は、フロントエンドドライバ１２１を制御して共有メモリ１１１からデータを読み出す。
【００４２】
アプリケーション１３０は、駆動機器９１及び９２の制御に係る処理と、検査装置９３の検査データの収集処理とを行う。アプリケーション１３０は、検査装置９３から検査データを収集し、その検査データを仮想マシン１３に送信する。アプリケーション１３０は、ゲストＯＳ１２０が、補助記憶部３に格納されているプログラムを実行することにより起動される。
【００４３】
ゲストＯＳ１４０は、仮想マシン１３上で実行されるオペレーティングシステムである。本実施の形態では、ゲストＯＳ１４０として非リアルタイムＯＳを想定している。ゲストＯＳ１４０は、ルートＯＳ１８０から指示されるとアプリケーション１５０を起動する。また、ゲストＯＳ１４０は、ルートＯＳ１８０との間で、共有メモリ１１２を使用したデータ交換を行う。ゲストＯＳ１４０は、プロセッサ１が補助記憶部３に格納されているプログラムを実行することにより実現される。
【００４４】
ゲストＯＳ１４０は、仮想デバイスドライバであるフロントエンドドライバ１４１を有している。フロントエンドドライバ１４１は、ゲストＯＳ１４０の制御の下、共有メモリ１１２に対するデータの読み書きを行う。ゲストＯＳ１４０は、フロントエンドドライバ１４１を制御して、アプリケーション１５０の出力データを共有メモリ１１２に書き込む。ゲストＯＳ１４０が共有メモリ１１２にセットするデータのフォーマットは、図４に示した例と同様である。ここでは、データ部１０２０に、アプリケーション１５０が出力したデータがセットされる。また、ゲストＯＳ１４０は、フロントエンドドライバ１４１を制御して、ルートＯＳ１８０が共有メモリ１１２にセットしたデータを読み出す。ルートＯＳ１８０が共有メモリ１１２にセットするデータのフォーマットも図４に示す例と同様である。
【００４５】
図３に示すゲストＯＳ１４０は、さらに、フロントエンドドライバ１４１を制御して、ルートＯＳ１８０との間で仮想バスを介したバス通信を行う。ゲストＯＳ１４０は、共有メモリ１１２にデータをセットすると、データセット通知のシグナルを、フロントエンドドライバ１４１を制御してルートＯＳ１８０に送信する。このシグナルを受けて、ルートＯＳ１８０は、バックエンドドライバ１１３を使用して共有メモリ１１２からデータを読み出す。
【００４６】
また、ルートＯＳ１８０が共有メモリ１１２にデータをセットした場合、ルートＯＳ１８０はフロントエンドドライバ１４１に、データセット通知のシグナルが送信する。フロントエンドドライバ１４１がこのシグナルを受けると、ゲストＯＳ１４０は、フロントエンドドライバ１４１を制御して、共有メモリ１１２からデータを読み出す。
【００４７】
アプリケーション１５０は、検査装置９３の検査データを解析する解析処理を行う。アプリケーション１５０は、例えば、仮想マシン１２のアプリケーション１３０から受信した検査データを解析し、解析に基づく品質状況を示すデータを生成し、生成した品質状況を示すデータを、仮想マシン１２に送信する。アプリケーション１５０は、ゲストＯＳ１４０が、補助記憶部３に格納されているプログラムを実行することにより起動される。
【００４８】
ゲストＯＳ１２０、１４０は、ヘッダ１０１０の宛先ＩＤ１０１１に宛先の仮想マシンを示すＩＤをセットして、宛先の仮想マシンを指定する。宛先として同じ情報処理装置１１の仮想マシン１２、１３のいずれかが指定される。ただし、上述したように、ユーザが他の情報処理装置に転送するよう指定した場合、ルートＯＳ１８０は、仮想マシン１２、１３が共有メモリ１１１、１１２にセットしたデータを、ユーザが指定する宛先に転送する。さらに、ルートＯＳ１８０は、ユーザの指定に基づいて、仮想マシン１２、１３が共有メモリ１１１、１１２にセットしたデータのヘッダ１０１０の情報を書き換える。配送情報テーブル１６１と起動条件テーブル１６２とは、上記のルートＯＳ１８０の処理に使用される。
【００４９】
配送情報テーブル１６１には、仮想マシン１２、１３がデータを配送する宛先である配送先があらかじめ登録されている。配送情報テーブル１６１への登録は次のように行われる。まず、ユーザは不図示の登録用のツールを使用して、配送情報テーブル１６１に登録するデータを作成する。ユーザは、登録用のツールを通信ケーブルで情報処理装置１１に接続し、作成したデータを情報処理装置１１にアップロードして、配送情報テーブル１６１にデータを登録する。ここで、登録用のツールは、パーソナルコンピュータに専用プログラムをインストールしたものである。
【００５０】
配送情報テーブル１６１には、ゲストＯＳ１２０、１４０が共有メモリ１１１、１１２にセットしたヘッダ１０１０の情報と、データの配送先との対応を示す情報が格納されている。より具体的には、配送情報テーブル１６１には、宛先の仮想マシンを示す宛先ＩＤ１０１１と、送信元の仮想マシンを示す送信元ＩＤ１０１２と、当該データを出力したアプリケーションの識別情報である種別１０１３とから、データの配送先が指定されている。さらに、配送情報テーブル１６１では、送信時に更新するヘッダ１０１０の値も指定されている。
【００５１】
図５に、配送情報テーブル１６１に登録されるデータの一例を示す。以下、仮想マシン１２を識別するＩＤを「ＶＭ１２」、仮想マシン１３を識別するＩＤを「ＶＭ１３」、仮想マシン２２を識別するＩＤを「ＶＭ２２」、仮想マシン２３を識別するＩＤを「ＶＭ２３」として説明を行う。また、種別１０１３にセットする値には、数値計算用のアプリケーションの識別情報である「ＡＰＰ１」と、制御用のアプリケーションの識別情報である「ＡＰＰ２」と、画像処理用のアプリケーションの識別情報である「ＡＰＰ３」が含まれるものとする。
【００５２】
図５に示すように、配送設定のＮｏ．１では、宛先ＩＤ１０１１が“ＶＭ１３”であり、送信元ＩＤ１０１２が“ＶＭ１２”であり、種別１０１３が“ＡＰＰ１”である場合に、配送先を“情報処理装置２１”とすることが指定されている。図示する例では、情報処理装置を識別する情報として、“情報処理装置２１”といった値が登録されているが、配送先として、情報処理装置のＩＰ（Internet Protocol）アドレスを指定してもよい。
【００５３】
配送設定Ｎｏ．１の更新ヘッダの宛先ＩＤ１０１１は“ＶＭ２３”、送信元ＩＤ１０１２は“ＶＭ２２”、種別１０１３は“ＡＰＰ１”である。これはヘッダ１０１０の宛先ＩＤ１０１１を“ＶＭ２３”に、送信元ＩＤ１０１２を“ＶＭ２２”に、種別１０１３を“ＡＰＰ１”に更新するよう指定されていることを示す。
【００５４】
例えば、仮想マシン１２のゲストＯＳ１２０が、数値計算用のアプリケーションが出力したデータを仮想マシン１３宛てのデータとして図４に示すフォーマットで共有メモリ１１１に格納したとする。この場合、当該データのヘッダ１０１０には、宛先ＩＤ１０１１“ＶＭ１３”、送信元ＩＤ１０１２“ＶＭ１２”、種別１０１３“ＡＰＰ１”がセットされている。この場合、図５に示すように、ヘッダ１０１０にセットされた情報に合致する配送設定はＮｏ．１である。配送設定のＮｏ．１では、配送先として“情報処理装置２１”が指定されている。このため、後述の配送管理部１８１と通信部１８２とにより、当該データは情報処理装置２１に配送される。
【００５５】
さらに、配送設定のＮｏ．１に従って、配送管理部１８１により、ヘッダ１０１０の宛先ＩＤ１０１１が“ＶＭ２３”に、送信元ＩＤ１０１２が“ＶＭ２２”に、種別１０１３が“ＡＰＰ１”に更新される。このため、当該データを受信した情報処理装置２１の仮想マシン２３では、受信したデータが同じ情報処理装置２１の仮想マシン２２の数値計算プリケーションから出力されたものであるとみなされる。
【００５６】
図５に示すように、配送設定のＮｏ．２では、宛先ＩＤ１０１１が“ＶＭ１３”であり、送信元ＩＤ１０１２が“ＶＭ１２”であり、種別１０１３が“ＡＰＰ２”である場合に、配送先を“情報処理装置２１”とすることが指定されている。さらに、配送設定のＮｏ．２では、ヘッダ１０１０の宛先ＩＤ１０１１を“ＶＭ２３”に、送信元ＩＤ１０１２を“ＶＭ２２”に、種別１０１３を“ＡＰＰ３”に更新することが指定されている。
【００５７】
図３に示す仮想マシン１２が制御用のアプリケーションの出力データを、仮想マシン１３宛てのデータとして共有メモリ１１１に格納した場合、図５に示す配送設定のＮｏ．２に従って、当該データは、情報処理装置２１に配送される。配送の際に、ヘッダ１０１０の各値が、配送設定のＮｏ．２の更新ヘッダの値で更新されるため、情報処理装置２１が受信したデータの宛先ＩＤ１０１１は“ＶＭ２３”、送信元ＩＤ１０１２は“ＶＭ２２”、種別１０１３は“ＡＰＰ３”となっている。このため、情報処理装置２１の仮想マシン２３では、受信したデータが同じ情報処理装置２１の仮想マシン２２の画像処理用のアプリケーションから出力されたものであるとみなされる。
【００５８】
配送設定のＮｏ．３では、宛先ＩＤ１０１１が“ＶＭ１２”であり、送信元ＩＤ１０１２が“ＶＭ１３”であり、種別１０１３が“ＡＰＰ２”である場合に、更新ヘッダの情報が登録されていない。これは、当該データをどこにも配送しないことを示す。
【００５９】
図３に示す仮想マシン１３が制御用のアプリケーションの出力データを、仮想マシン１２宛てのデータとして共有メモリ１１２に格納した場合、図５に示す配送設定のＮｏ．３に従って、当該データはどこにも配送されない。即ち、仮想マシン１３から仮想マシン１２に向けた通信が遮断される。
【００６０】
配送設定のＮｏ．４では、宛先ＩＤ１０１１が“ＶＭ１３”であり、送信元ＩＤ１０１２が“ＶＭ１２”であり、種別１０１３が“ＡＰＰ３”である場合に、配送先として“ローカルホスト”、即ち、自機の情報処理装置１１が指定されている。配送設定のＮｏ．４では、ヘッダ１０１０の宛先ＩＤ１０１１を“ＶＭ１３”、送信元ＩＤ１０１２を“ＶＭ１２”、種別１０１３を“ＡＰＰ１”に更新することが指定されている。
【００６１】
図３に示す仮想マシン１２が画像処理用のアプリケーションの出力データを、仮想マシン１３宛てのデータとして共有メモリ１１１に格納した場合、図５に示す配送設定のＮｏ．４に従って、当該データは、同一の情報処理装置１１の仮想マシン１３に配送される。配送の際に、ヘッダ１０１０の各値が、配送設定のＮｏ．４の更新ヘッダの値で更新されるため、仮想マシン１３が受信したデータの種別１０１３は“ＡＰＰ３”となっている。このため、仮想マシン１３では、受信したデータが数値計算用のアプリケーションから出力されたものであるとみなされる。
【００６２】
起動条件テーブル１６２には、配送情報テーブル１６１の各配送設定を有効にするか、無効にするかを示す情報があらかじめ登録されている。起動条件テーブル１６２のデータも、配送情報テーブル１６１のデータと同様に、ユーザが登録用のツールを使用して作成し、情報処理装置１１にアップロードすることで、起動条件テーブル１６２に登録される。
【００６３】
実施の形態において、配送情報テーブル１６１の各配送設定は、起動条件テーブル１６２で決められた条件が満たされた場合に、有効または無効となる。
【００６４】
図６に、起動条件テーブル１６２に登録されるデータの一例を示す。ここでは、情報処理装置１１の補助記憶部３の指定されたメモリアドレスに格納されている値と閾値との関係で、有効あるいは無効とするよう指定されている。図示する例では、配送設定のＮｏ．１は、指定されたメモリアドレスの値が閾値と一致したときに有効となる、配送設定のＮｏ．２は、指定されたメモリアドレスの値が閾値未満であるときに有効となる。配送設定のＮｏ．３は、指定されたメモリアドレスの値が閾値以上であるときに無効となる。
【００６５】
図７に、起動条件テーブル１６２に登録されるデータの他の例を示す。ここでは、指定された期間、配送設定を有効または無効にすることが指定されている。図示する例では、配送設定のＮｏ．４は、指定された開始日時・開始時刻から終了日時・終了時刻までの間、有効となる。
【００６６】
図３に示すように、ルートＯＳ１８０は、情報処理装置１１にインストールされており、情報処理装置１１に電源が投入されると、最初に起動される。ルートＯＳ１８０は、ハイパーバイザ１１０に、仮想マシン１２及び１３を作成させ、管理させる。ルートＯＳ１８０は、プロセッサ１が補助記憶部３に格納されているプログラムを実行することにより実現される。
【００６７】
ルートＯＳ１８０は、配送管理部１８１と通信部１８２とを含む。配送管理部１８１は、ルートＯＳ１８０が補助記憶部３のプログラム００１を実行することで実現される。通信部１８２は、ルートＯＳ１８０が補助記憶部３のプログラム００２を実行することで、実現される。配送管理部１８１は、本発明の配送管理手段の一例である。通信部１８２は、本発明の通信手段の一例である。
【００６８】
配送管理部１８１は、送信元が仮想マシン１２、１３であるデータ、宛先として仮想マシン１２、１３が指定されているデータの配送に係る処理を行う。
【００６９】
まず、配送管理部１８１が、仮想マシン１２、１３が共有メモリ１１１、１１２にデータをセットした場合に行う処理を説明する。配送管理部１８１は、仮想マシン１２、１３が共有メモリ１１１、１１２にセットしたデータをそれぞれ、前述の配送情報テーブル１６１と起動条件テーブル１６２とに基づいた配送先に、あるいは、仮想マシン１２、１３がそれぞれ指定した宛先に配送する。
【００７０】
例えば、データセット通知のシグナルの受信により、仮想マシン１２が共有メモリ１１１にデータをセットしたと判別すると、配送管理部１８１は、バックエンドドライバ１１３を制御して、共有メモリ１１１からデータを読み出す。配送管理部１８１は、読み出したデータの宛先ＩＤ１０１１と送信元ＩＤ１０１２と種別１０１３とに基づいて、配送情報テーブル１６１に配送先が登録されているか否かを判別する。
【００７１】
配送管理部１８１は、共有メモリ１１１から読み出したデータについて、配送情報テーブル１６１の配送先として他の情報処理装置である情報処理装置２１が指定されている場合は、ヘッダ１０１０を更新して、当該データを配送先の情報処理装置２１を示す情報とともに、通信部１８２に送信する。配送管理部１８１は、共有メモリ１１１から読み出したデータについて、配送情報テーブル１６１に、配送設定が登録されていない場合、ヘッダ１０１０を更新せずに、当該データを仮想マシン１３の共有メモリ１１２に、バックエンドドライバ１１３を制御して書き込む。また、配送管理部１８１は、共有メモリ１１１から読み出したデータについて、配送情報テーブル１６１の配送先として自機の情報処理装置１１の仮想マシン１３が指定されている場合は、ヘッダ１０１０を更新して、当該データを仮想マシン１３の共有メモリ１１２に、バックエンドドライバ１１３を制御して書き込む。
【００７２】
以上が、配送管理部１８１が、仮想マシン１２、１３が共有メモリ１１１、１１２にデータをセットした場合に行う処理である。
【００７３】
続いて、配送管理部１８１が、通信部１８２が情報処理装置２１から通信パケットを受信した場合に行う処理を説明する。
【００７４】
配送管理部１８１は、通信部１８２から通信パケットから通信用ヘッダ１０４０を取り除いたデータを受け取ると、当該データのヘッダ１０１０の宛先ＩＤに基づいて、仮想マシン１２または１３に当該データを配送する。例えば、宛先ＩＤ１０１１が仮想マシン１３を示す場合、配送管理部１８１は、バックエンドドライバ１１３を制御して、当該データを共有メモリ１１２に書き込み、フロントエンドドライバ１４１にデータセット通知のシグナルを送信する。宛先ＩＤ１０１１が仮想マシン１２を示す場合も、配送管理部１８１は同様の処理を行う。このようにして、他の情報処理装置である情報処理装置２１から送信されたデータは、仮想マシン１２または１３に配送される。
【００７５】
通信部１８２は、通信経路５０を介して、情報処理装置２１と、通信パケットの送受信を行う。
【００７６】
まず、通信部１８２が、配送管理部１８１から情報処理装置２１宛てのデータを受信した場合に、通信部１８２が行う処理を説明する。通信部１８２は、配送管理部１８１から図４に示すような情報処理装置２１宛てのデータと、配送先の情報とを受信すると、配送先の情報を含めた通信用ヘッダ１０４０を生成する。例えば、通信経路５０は、通信経路５０が含まれるＬＡＮのプロトコルに応じたＩＰヘッダを通信用ヘッダ１０４０として生成する。通信部１８２は、図８に示すような、配送管理部１８１から受信した情報処理装置２１宛てのデータに、通信用ヘッダ１０４０を付加した通信パケット１１００を生成する。通信部１８２は、生成した通信パケット１１００を、通信経路５０から情報処理装置２１に送信する。
【００７７】
続いて、通信部１８２が情報処理装置２１から通信パケットを受信した場合に、通信部１８２が行う処理を説明する。通信部１８２は、情報処理装置２１から通信パケット１１００を受信すると、通信パケット１１００から通信用ヘッダ１０４０を取り除いたデータを、配送管理部１８１に送信する。
【００７８】
以上、情報処理装置１１の各部の構成を説明したが、情報処理装置２１も同様の構成を有する。
【００７９】
次に、情報処理装置１１の仮想マシン１２、１３が送信側である場合の一連の処理の流れを説明する。以下、仮想マシン１２、１３が共有メモリ１１１、１１２にセットするデータを共有メモリデータということがある。共有メモリデータは、本発明の第１データの一例である。
【００８０】
まず、仮想マシン１２、１３のいずれかから共有メモリデータのデータセット通知を受けた配送管理部１８１の第１配送処理を説明する。
【００８１】
図９に示すように、配送管理部１８１は、決められた周期で、データセット通知のシグナルを受信したか否かを判別する（ステップＳ１０１）。配送管理部１８１は、データセット通知のシグナルを受信したと判別すると（ステップＳ１０１；Ｙｅｓ）、バックエンドドライバ１１３を制御して、仮想マシン１２と１３のうち、データセット通知のシグナルを送信した仮想マシンに割り当てられた共有メモリから共有メモリデータを読み出し（ステップＳ１０２）。読み出したデータを補助記憶部３の決められた領域に格納する。例えば、仮想マシン１２からデータセット通知のシグナルを受信すると、配送管理部１８１は、共有メモリ１１１から共有メモリデータを読み出す。以下、配送管理部１８１は、補助記憶部３の決められた領域に格納したデータに対して下記の処理を実行する。
【００８２】
配送管理部１８１は、共有メモリから読み出したデータのヘッダ１０１０の宛先ＩＤ１０１１と送信元ＩＤ１０１２と種別１０１３とに基づいて、配送情報テーブル１６１に配送先が設定されているか否かを判別する（ステップＳ１０３）。例えば、共有メモリ１１１から読み出したデータの宛先ＩＤ１０１１が仮想マシン１３を示す“ＶＭ１３”であり、送信元ＩＤ１０１２が仮想マシン１２を示す“ＶＭ１２”であり、種別１０１３が“ＡＰＰ１”である場合、配送情報テーブル１６１の配送設定のＮｏ．１に一致するため、配送管理部１８１は、配送先が指定されていると判別する（ステップＳ１０３；Ｙｅｓ）。
【００８３】
配送管理部１８１は、起動条件テーブル１６２を参照して、配送設定が有効であるか否かを判別する（ステップＳ１０４）。例えば、配送管理部１８１は、配送設定のＮｏ．１について、指定されたメモリアドレス「０Ｘ１００００００」の値が閾値「１００」であると判別すると、配送設定が有効であると判別する（ステップＳ１０４；Ｙｅｓ）。
【００８４】
配送管理部１８１は、配送情報テーブル１６１の更新ヘッダとして指定された値で、共有メモリ１１１から読み出した共有メモリデータのヘッダ１０１０の値を更新する（ステップＳ１０５）。例えば、配送設定Ｎｏ．１の場合、配送管理部１８１は、宛先ＩＤ１０１１を“ＶＭ２３”に、送信元ＩＤ１０１２を“ＶＭ２２”に、種別１０１３を“ＡＰＰ１”に更新する。
【００８５】
配送管理部１８１は、配送情報テーブル１６１の配送先の情報処理装置を示す情報と、ヘッダ１０１０の値を更新した共有メモリデータとを通信部１８２に供給する（ステップＳ１０６）。
【００８６】
一方、ステップ１０３で、配送管理部１８１は、配送先が指定されていないと判別すると（ステップＳ１０３；Ｎｏ）、バックエンドドライバ１１３を制御して、読み出した共有メモリデータに含まれる宛先ＩＤ１０１１が示す仮想マシンの共有メモリに、共有メモリデータを書き込む（ステップＳ１０７）。その後、配送管理部１８１は、宛先ＩＤ１０１１が示す仮想マシンのフロントエンドドライバに対して、データセット通知のシグナルを送信する（ステップＳ１０８）。例えば、共有メモリ１１１から読み出した共有メモリデータの宛先ＩＤ１０１１が仮想マシン１３を示す“ＶＭ１３”である場合、配送管理部１８１は、その共有メモリデータを仮想マシン１３の共有メモリ１１２に書き込む。その後、配送管理部１８１は、仮想マシン１３のフロントエンドドライバ１４１に、データセット通知のシグナルを送信する。
【００８７】
また、ステップＳ１０４で、配送管理部１８１は、配送設定が有効でないと判別すると（ステップＳ１０４；Ｎｏ）、上述のステップＳ１０７とＳ１０８の処理を実行する。以上が、配送管理部１８１が、仮想マシン１２、１４のいずれかからデータセット通知のシグナルを受けたときに行う処理である。
【００８８】
続いて、図９のステップＳ１０６で、配送管理部１８１から配送先の情報処理装置の情報と、共有メモリデータとを供給された通信部１８２の送信処理を説明する。
【００８９】
図１０に示すように、通信部１８２は、決められた周期で、配送管理部１８１から、配送先の情報処理装置を示す情報と、送信する共有メモリデータとを受信したか否かを判別する（ステップＳ２０１）。通信部１８２は、配送先の情報処理装置を示す情報と、送信する共有メモリデータとを受信した場合（ステップＳ２０１；Ｙｅｓ）、配送先の情報処理装置を示す情報を含めた通信用ヘッダ１０４０を生成する（ステップＳ２０２）。
【００９０】
通信部１８２は、ステップＳ２０２で生成した通信用ヘッダ１０４０を、ステップＳ２０１で配送管理部１８１から受信した送信する共有メモリデータに付加して、通信パケットを生成する（ステップＳ２０３）。その後、通信部１８２は、通信経路５０から通信パケットを送信する（ステップＳ２０４）。以上が、通信部１８２の送信処理である。
【００９１】
以上、情報処理装置１１を例に説明したが、情報処理装置２１の仮想マシン２２、２３が送信側である場合も同様である。
【００９２】
次に、情報処理装置１１の仮想マシン１２、１３が受信側である場合の一連の処理の流れを説明する。
【００９３】
まず、情報処理装置２１から共有メモリデータを含む通信パケットが送信された場合の、通信部１８２の受信処理を説明する。
【００９４】
図１１に示すように、通信部１８２は、決められた周期で通信経路５０から通信パケットを受信したか否かを判別し（ステップＳ３０１）、受信したと判別すると（ステップＳ３０１；Ｙｅｓ）、受信パケットから共有メモリデータを取り出す（ステップＳ３０２）。具体的には、通信パケットから、図８に示す通信用ヘッダ１０４０を取り除く。図１１に示すように、通信部１８２は、共有メモリデータを配送管理部１８１に供給する（ステップＳ３０３）。以上が、通信部１８２の通信処理である。
【００９５】
続いて、図１１のステップＳ３０３で、通信部１８２から、共有メモリデータが供給された配送管理部１８１の第２配送処理を説明する。
【００９６】
図１２に示すように、配送管理部１８１は、決められた周期で通信部１８２から共有メモリデータが供給されたか否かを判別し（ステップＳ４０１）。共有メモリデータが供給されると（ステップＳ４０１；Ｙｅｓ）、下記の処理を実行する。配送管理部１８１は、受信した共有メモリデータの宛先ＩＤ１０１１が示す仮想マシンの共有メモリに、バックエンドドライバ２１３を制御して、共有メモリデータをセットする（ステップＳ４０２）。配送管理部１８１は、データをセットした旨を通知するデータセット通知のシグナルを、宛先ＩＤ１０１１が示す仮想マシンのフロントエンドドライバに通知する（ステップＳ４０３）。以上が共有メモリデータを受信した配送管理部１８１の第２配送処理である。
【００９７】
以上、情報処理装置１１を例に説明したが、情報処理装置２１の仮想マシン２２、２３が受信側である場合も同様である。
【００９８】
以上説明したように、本発明の実施の形態に係る情報処理装置１１では、仮想マシン１２と仮想マシン１３とのデータのやり取りがルートＯＳ１８０を介して行われる。仮想マシン１２と仮想マシン１３間のデータを情報処理装置２１に転送するよう指定されている場合には、そのデータは、情報処理装置２１に転送される。このように、複数の情報処理装置の仮想マシンが、情報処理装置間をまたがって、通信することができる。
【００９９】
上記説明においては、情報処理装置１１内の仮想マシン１２と仮想マシン１３間でやり取りされるデータを他の情報処理装置２１に転送したが、情報処理装置１１内に仮想マシン間でデータを転送することができる。以下、変形例において説明する。
【０１００】
（変形例）
図１３に示すように、変形例に係る情報処理装置１１は、仮想マシン１２と１３に加え、仮想マシン１４を有する。なお、図１３においては、情報処理装置２１の構成の図示を省略しているが、情報処理装置２１に係る構成は、実施の形態と同様である。
【０１０１】
仮想マシン１４は、仮想マシン１３と同様に情報処理を行うコンピュータとして機能する。仮想マシン１４は、本発明の第３仮想マシンの一例である。仮想マシン１４のゲストＯＳ１７０は、仮想マシン１３のゲストＯＳ１４０と同様に、情報処理用のアプリケーション１９０を実行する。仮想マシン１４は、仮想マシン１３と同様の構成を有するため、ここでは仮想マシン１４のハードウェア、機能についての説明を省略する。
【０１０２】
変形例においては、情報処理装置１１内の仮想マシン１２と仮想マシン１３間でやり取りされるデータを、同じ情報処理装置１１の仮想マシン１４に転送することを想定して説明する。この場合、配送情報テーブル１６１に登録されるデータの例を図１４に示す。ここでは、仮想マシン１４を識別するＩＤを「ＶＭ１４」とする。その他の仮想マシンを識別するＩＤと、種別１０１３の値とは実施の形態と同様である。配送設定Ｎｏ．１からＮｏ．４の内容は、実施の形態と同様であるため説明を省略する。
【０１０３】
図１４に示すように、配送設定のＮｏ．５には、宛先ＩＤ１０１１が“ＶＭ１３”であり、送信元ＩＤ１０１２が“ＶＭ１２”であり、種別１０１３が“ＡＰＰ１”である場合に、配送先に“ローカルホスト”が指定されている。さらに、ヘッダ１０１０の各値について、宛先ＩＤ１０１１を“ＶＭ１４”に、送信元ＩＤ１０１２を“ＶＭ１２”に、種別１０１３を“ＡＰＰ１”に更新することが指定されている。
【０１０４】
配送設定のＮｏ．５に従って、データがどのように配送されるかを説明する。なお、配送設定Ｎｏ．５は有効にされているものとする。仮想マシン１２が数値計算用のアプリケーションの出力データを、仮想マシン１３宛てて共有メモリ１１１にセットし、データセット通知をルートＯＳ１８０に送信したと仮定する。この場合、共有メモリ１１１の宛先ＩＤ１０１１には“ＶＭ１３”、送信元ＩＤ１０１２には“ＶＭ１２”、種別１０１３には“ＡＰＰ１”がセットされる。
【０１０５】
以下、図１４を参照しながら、配送管理部１８１の変形例に係る第１配送管理処理を説明する。なお、実施の形態と異なる構成を中心に説明する。
【０１０６】
配送管理部１８１は、仮想マシン１２からデータセット通知のシグナルを受信したと判別すると（ステップＳ１０１；Ｙｅｓ）、バックエンドドライバ１１３を制御して、仮想マシン１２に割り当てられた共有メモリ１１１から共有メモリデータを読み出し（ステップＳ１０２）、読み出したデータを補助記憶部３の決められた領域に格納する。
【０１０７】
配送管理部１８１は、共有メモリから読み出したデータのヘッダ１０１０の宛先ＩＤ１０１１と送信元ＩＤ１０１２と種別１０１３とに基づいて、配送情報テーブル１６１に配送先が設定されているか否かを判別する（ステップＳ１０３）。ここでは、図１４に示すように、宛先ＩＤ１０１１と、送信元ＩＤ１０１２と、種別１０１３の値が、配送設定のＮｏ．５に一致するため、図１５に示すように、配送管理部１８１は、配送先が指定されていると判別する（ステップＳ１０３；Ｙｅｓ）。
【０１０８】
配送管理部１８１は、起動条件テーブル１６２を参照して、配送設定が有効であるか否かを判別し（ステップＳ１０４）、配送設定のＮｏ．５が有効であると判別する（ステップＳ１０４；Ｙｅｓ）。
【０１０９】
配送管理部１８１は、配送情報テーブル１６１の更新ヘッダとして指定された値で、共有メモリ１１１から読み出した共有メモリデータのヘッダ１０１０の値を更新する（ステップＳ１０５）。図１４に示すように、配送設定のＮｏ．５の場合、配送管理部１８１は、宛先ＩＤ１０１１を“ＶＭ１４”に、送信元ＩＤ１０１２を“ＶＭ１２”に、種別１０１３を“ＡＰＰ１”に更新する。
【０１１０】
図１５に示すように、配送管理部１８１は、配送情報テーブル１６１の配送先が、他の情報処理装置であるか、即ち、情報処理装置１１以外であるかを判別する（ステップＳ１０９）。図１４に示すように、配送設定のＮｏ．５の場合、配送先は”ローカルホスト”なので、図１５に示すように、配送管理部１８１は、配送先が他の情報処理装置２１ではないと判別する（ステップＳ１０９；Ｎｏ）。
【０１１１】
配送管理部１８１は、バックエンドドライバ１１３を制御して、配送設定が示す宛先の仮想マシンの共有メモリに、共有メモリデータを書き込む（ステップＳ１１０）。ここでは、配送管理部１８１は、仮想マシン１４に割り当てられた共有メモリ１１４に共有メモリデータを書き込む。その後、配送管理部１８１は、仮想マシン１４のフロントエンドドライバ１７１に対して、データセット通知のシグナルを送信する（ステップＳ１１１）。
【０１１２】
一方、図１５に示すように、ステップＳ１０６で、配送管理部１８１は、配送先が他の情報処理装置であると判別すると（ステップＳ１０９；Ｙｅｓ）、配送情報テーブル１６１の配送先の情報処理装置を示す情報と、ヘッダ１０１０の値を更新した共有メモリデータとを通信部１８２に供給する（ステップＳ１１２）。
【０１１３】
また、ステップＳ１０３で、配送管理部１８１が、配送情報テーブル１６１に配送先が指定されていないと判別した場合（ステップＳ１０３；Ｎｏ）の処理は、実施の形態と同様である。ステップＳ１０４で、配送設定が有効でないと判別した場合（ステップＳ１０４；Ｙｅｓ）の処理は、実施の形態と同様である。
【０１１４】
以上、実施の形態、変形例において説明したように、本発明に係る情報処理装置では、仮想マシン間でやり取りされるデータについて、配送情報テーブル１６１において、他の情報処理装置に転送するよう指定されている場合、本来の宛先の仮想マシンにではなく、指定された他の情報処理装置にデータを送信する。このような構成を備えることで、仮想マシン側の設定を変更することなく、複数の情報処理装置をまたがって仮想マシン間の通信が可能である。
【０１１５】
変形例においては、配送管理部１８１は、配送情報テーブル１６１に、仮想マシンが共有メモリに書き込んだ宛先ＩＤ１０１１とは異なる仮想マシンが宛先として指定されている場合、指定されている仮想マシンに割り当てられた共有メモリにデータを配送する。このように、同一情報処理装置内の仮想マシンにもデータを転送することができる。
【０１１６】
配送情報テーブル２６１では、宛先ＩＤ１０１１と送信元ＩＤ１０１２と種別１０１３とに基づいて、データの配送先を指定されている。このため、特定のアプリケーションについて、情報処理装置をまたいだ、仮想マシン間の通信が可能である。また、同一の情報処理装置内の仮想マシン間の通信についても、同様に特定のアプリケーション間のデータのやり取りを可能にする。
【０１１７】
起動条件テーブル２６２において、配送情報テーブル２６１のそれぞれの配送設定が有効であるか無効であるかを設定することができるため、例えば、アプリケーション間のデータのやり取りについて検証する場合には、対象アプリケーション以外のアプリケーションの無関係な通信を排除することができる。
【０１１８】
仮想マシンのゲストオペレーティングシステムは、共有メモリにデータを書き込んだ旨を通知するデータセットのシグナルを、ルートオペレーティングシステムに送信する。これにより、ルートオペレーティングシステムは、データセットのシグナルを受けたときに、共有メモリのデータを読みにいけばよく、各仮想マシンに割り当てられた共有メモリを監視する必要がない。また、ルートオペレーティングシステムは、ヘッダ１０１０の情報によらずとも、共有メモリに書き込んだ仮想マシンを判別することができる。
【０１１９】
配送管理部１８１は、共有メモリに書き込んだ旨を通知するデータセットのシグナルを対象となるゲストオペレーティングシステムに通知する。これにより、ゲストオペレーティングシステムは、データセットのシグナルを受けたときに、共有メモリのデータを読みにいけばよく、共有メモリを監視する必要がない。
【０１２０】
また、１つの情報処理装置に、多くの仮想マシンを動作させた場合には、複数の仮想マシンは、物理的に１台の情報処理装置のハードウェアリソースを使用することになるので、リソース不足になることも生じる。しかし、実施の形態では、２台以上の情報処理装置の仮想マシン間の通信が可能であるため、情報処理装置のハードウェアリソースの不足といった事態を回避することができる。
【０１２１】
上述の例では、起動条件テーブル１６２、２６２を使用して、配送設定の有効または無効を指定した。しかし、情報処理装置１１、２１は、起動条件テーブル１６２、２６２を使用しなくてもよい。この場合、配送情報テーブル１６１、２６１に登録されている全ての配送設定を有効とするものとし、配送設定を無効にしたい場合は、配送情報テーブル１６１、２６１からその配送設定を削除するようにしてもよい。この場合、情報処理装置１１、２１はそれぞれ、起動条件テーブル１６２、２６２のテーブルを１つだけ有すればよいので、テーブルのメンテナンスの操作が容易である。
【０１２２】
あるいは、図１６に示すように、配送情報テーブル１６１、２６１に、起動条件のフィールドを追加してもよい。この場合も、情報処理装置１１、２１はそれぞれ、起動条件テーブル１６２、２６２のテーブルを１つだけ有すればよいので、テーブルのメンテナンスの操作が容易である。
【０１２３】
あるいは、起動条件テーブル１６２、２６２が有効／無効を指定するフィールドのみを有してもよい。図１７に示す例では、条件に応じて有効または無効を指定するのではなく、単純に有効または無効を指定している。
【０１２４】
あるいは、配送情報テーブル１６１、２６１に、図１８に示すように、有効／無効を指定するフィールドを追加し、この値を変更することで、配送情報の有効または無効を指定するようにしてもよい。図１８に示す例では、条件に応じて有効または無効を指定するのではなく、単純に有効または無効を指定している。
【０１２５】
実施の形態、変形例では、各仮想マシンに１つずつ共有メモリを割り当てたが、全ての仮想マシンが、他の仮想マシンに送信するデータを同じ共有メモリに書き込んでもよい。この場合でも、ルートＯＳ１８０は、共有メモリに書き込まれたヘッダ１０１０の送信元ＩＤ１０１２により、どの仮想マシンが書き込んだデータであるか判別することができる。
【０１２６】
１つの情報処理装置に構築する仮想マシンの数は、２つまたは３つに限らず、それより多くてもよい。あるいは、１つの情報処理装置に構築する仮想マシンの数は、１つだけでもよい。例えば、情報処理装置２１には仮想マシン２３だけを構築してもよい。この場合も、仮想マシン２２にはシミュレータ９４を接続してもよい。例えば、仮想マシン１３のアプリケーション１５０の動作を検証する場合、情報処理装置１１の仮想マシン１３と、情報処理装置２１の仮想マシン２３とが通信を行うことで、駆動機器９１及び９２と、検査装置９３との動作状況に影響を与えずにすむ。また、情報処理装置２１は、１つの仮想マシン２３を構築可能なスペックを有していればよいので、例えば、情報処理装置２１のスペックを、情報処理装置１１のスペックと同等のものとする必要がない。従って、コストを削減することが可能である。
【０１２７】
上述の例では、通信経路５０はＬＡＮの一部を構成するものであったため、情報処理装置１１と２１とは、ＬＡＮを使用した通信を行った。しかし、通信経路５０は、これに限られず、例えば、通信経路５０としてＵＳＢ規格の通信ケーブルを使用し、情報処理装置１１と２１とは、ＵＳＢを介して通信してもよい。あるいは、通信経路５０は、有線ケーブルでなくてもよく、情報処理装置１１と２１とは、無線ＬＡＮ、ＷＰＡＮ（Wireless Personal Area Network）を使用して通信してもよい。
【０１２８】
上述の例では、１つの仮想マシンが１つのアプリケーションだけを実行する例を説明したが、１つの仮想マシンが複数のアプリケーションを実行してもよい。
【０１２９】
上記のルートＯＳ１８０が実行するプログラムを記録する記録媒体としては、ＵＳＢメモリ、フレキシブルディスク、ＣＤ、ＤＶＤ、Ｂｌｕ−ｒａｙ（登録商標）、ＭＯ、ＳＤカード、メモリースティック（登録商標）、その他、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ、磁気テープを含むのコンピュータ読取可能な記録媒体を使用することができる。
【０１３０】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【０１３１】
００１，００２  プログラム、１  プロセッサ、２  主記憶部、３  補助記憶部、４  通信制御部、９  バス、１１，２１  情報処理装置、１２，１３，１４，２２，２３  仮想マシン、５０  通信経路、９１，９２  駆動機器、９３  検査装置、９４  シミュレータ、１００  情報処理システム、１１０，２１０  ハイパーバイザ、１１１，１１２，１１４，２１１，２１２  共有メモリ、１１３，２１３  バックエンドドライバ、１２０，１４０，２２０，２４０  ゲストオペレーティングシステム、１２１，１４１，１７１，２２１，２４１  フロントエンドドライバ、１３０，１５０，１９０，２３０，２５０  アプリケーション、１６１，２６１  配送情報テーブル、１６２，２６２  起動条件テーブル、１８０，２８０  ルートＯＳ、１８１，２８１  配送管理部、１８２，２８２  通信部、１０１０  ヘッダ、１０１１  宛先ＩＤ、１０１２  送信元ＩＤ、１０１３  種別、１０１４  サイズ、１０２０  データ部、１０３０  誤り検出符号、１０４０  通信用ヘッダ、１１００  通信パケット
【図１】
2019180812.tif 000003
【図２】
2019180812.tif 000004
【図３】
2019180812.tif 000005
【図４】
2019180812.tif 000006
【図５】
2019180812.tif 000007
【図６】
2019180812.tif 000008
【図７】
2019180812.tif 000009
【図８】
2019180812.tif 000010
【図９】
2019180812.tif 000011
【図１０】
2019180812.tif 000012
【図１１】
2019180812.tif 000013
【図１２】
2019180812.tif 000014
【図１３】
2019180812.tif 000015
【図１４】
2019180812.tif 000016
【図１５】
2019180812.tif 000017
【図１６】
2019180812.tif 000018
【図１７】
2019180812.tif 000019
【図１８】
2019180812.tif 000020
【国際調査報告】
2019180812.tif 000021
2019180812.tif 000022