(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-19
(45)【発行日】2022-12-27
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
G06F 9/54 20060101AFI20221220BHJP
G06F 13/10 20060101ALI20221220BHJP
G06F 9/455 20060101ALI20221220BHJP
【FI】
G06F9/54 A
G06F13/10 330C
G06F9/455 150
(21)【出願番号】P 2021041781
(22)【出願日】2021-03-15
【審査請求日】2021-10-11
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100106909
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】園田 博文
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2019-164661(JP,A)
【文献】特開2017-108231(JP,A)
【文献】特開昭63-20541(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/54
G06F 13/10
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
制御部と、
通信用メモリを備えた複数の仮想マシンと、
前記複数の仮想マシン間で通信される実データと、前記複数の仮想マシンのデータ読出し又は書込み用のデータテーブルと、データブロック管理テーブルとを記憶するシステムメモリと、
前記複数の仮想マシン間の通信を行わせる通信用メモリドライバと、により構成され、
前記制御部は、
前記データブロック管理テーブルを参照して前記通信用メモリドライバに設定された論理ブロックアドレスにより示される複数のデータブロックよりなり、該データブロックは複数のクラスタにより構成される仮想通信用メモリを生成し、
前記仮想通信用メモリに前記複数の仮想マシンの前記通信用メモリと対応付けて複数の仮想メモリを生成し、
前記データテーブルを参照して、前記複数の仮想マシン間の通信を制御し、
前記データブロック管理テーブルを更新するようにした、
情報処理装置。
【請求項2】
前記データブロック管理テーブルは、前記クラスタ毎に割り当てられた実メモリのアドレスと、前記クラスタ毎の書込みデータのデータパターンと、前記実メモリのアドレスの有効又は無効を示す実メモリ割り当てフラグとを格納した、請求項1に記載の情報処理装置。
【請求項3】
前記データテーブルは、前記通信用メモリドライバが前記複数の仮想マシンの夫々について読出し又は書込みを行うときの前記論理ブロックアドレスと、前記複数の仮想マシンの状態情報と、前記複数の仮想マシンの夫々について読み出される実データが保存されているか否かに係る有効又は無効を示す保存データフラグと、前記複数の仮想マシン間で通信される実データを一時的に格納する記憶領域のアドレスを示すデータ保存アドレスとを格納した、
請求項1に記載の情報処理装置。
【請求項4】
前記制御部は、前記データブロック管理テーブルを参照して、前記複数の仮想メモリを有する前記仮想通信用メモリを生成するメモリ制御部と、前記データテーブルを参照して前記複数の仮想マシン間の通信を制御する通信制御部と、を具備する、請求項1に記載の情報処理装置。
【請求項5】
通信用メモリを備えた複数の仮想マシンと、前記複数の仮想マシン間の通信を行わせる通信用メモリドライバを搭載し、前記複数の仮想マシン間で通信される実データと、前記複数の仮想マシンのデータ読出し又は書込み用のデータテーブルと、データブロック管理テーブルとを記憶した情報処理装置に適用される情報処理方法であって、
データブロック管理テーブルを参照して、
前記データブロック管理テーブルを参照して前記通信用メモリドライバに設定された論理ブロックアドレスにより示される複数のデータブロックよりなり、該データブロックは複数のクラスタにより構成される仮想通信用メモリを生成し、
前記仮想通信用メモリに前記複数の仮想マシンの前記通信用メモリと対応付けて複数の仮想メモリを生成し、
前記データテーブルを参照して、前記複数の仮想マシン間の通信を制御し、
前記データブロック管理テーブルを更新するようにした、
情報処理方法。
【請求項6】
通信用メモリを備えた複数の仮想マシンと、前記複数の仮想マシン間の通信を行わせる通信用メモリドライバを搭載し、前記複数の仮想マシン間で通信される実データと、前記複数の仮想マシンのデータ読出し又は書込み用のデータテーブルと、データブロック管理テーブルとを記憶した情報処理装置のコンピュータに適用されるプログラムであって、
データブロック管理テーブルを参照して、
前記データブロック管理テーブルを参照して前記通信用メモリドライバに設定された論理ブロックアドレスにより示される複数のデータブロックよりなり、該データブロックは複数のクラスタにより構成される仮想通信用メモリを生成し、
前記仮想通信用メモリに前記複数の仮想マシンの前記通信用メモリと対応付けて複数の仮想メモリを生成し、
前記データテーブルを参照して、前記複数の仮想マシン間の通信を制御し、
前記データブロック管理テーブルを更新するようにした、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、同一ホストマシン上の仮想マシン間で通信を行う情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
コンピュータなどの情報機器では、1台のコンピュータ上で複数のコンピュータやオペレーティングシステム(OS)を動作させる場合や、別のアーキテクチャ用のソフトウェアを動作させる場合に、仮想マシンが用いられている。仮想マシンが動く情報機器(以下、「ホストマシン」という)は、ランダムアクセスメモリ(RAM)などを用いて仮想マシンを動かしている。仮想マシンは、他の仮想マシンやコンピュータと通信を行うことができる。ホストマシン上に仮想マシンが複数存在する場合、仮想マシンは他の仮想マシンと通信が可能である。しかし、同一のホストマシン上の仮想マシン同士であっても、仮想マシン間の通信は、TCP/IP(Transmission Control Protocol/Internet Protocol)などのネットワーク通信プロトコルを使用する必要がある。TCP/IP規格では、アプリケーション層、トランスポート層、インターネット層、ネットワークインタフェース層などの複数の階層を介して通信を行っている。
【0003】
同一ホストマシン上の仮想マシン間のデータ通信について、例えば、特許文献1と特許文献2が挙げられる。特許文献1は、同一ホストマシン上の仮想マシン間で通信を行う場合に、メモリアクセスで通信を行うことにより各通信階層の制御処理による通信のオーバヘッドを削減できる情報処理装置を開示している。特許文献2は、ホスト計算機上の仮想計算機間のデータ通信を可能とするためにハイパーバイザ・コール(HVC)を用いて通知を行うハイパーバイザプログラムを開示している。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2019-164661号公報
【文献】国際公開第2019/012958号
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述のように、ホストマシン上の仮想マシン間の通信はTCP/IPなどのネットワーク通信プロトコルを使用しているが、通信データ中の通信制御データが大きいため、通信する実データが少ないときに通信効率が低下し、複数の通信処理層を経由する必要があるため、通信処理のオーバヘッドが大きい。また、ネットワーク通信用の入出力(I/O)は他のI/O処理と比較して優先度が低いため、システムのI/O負荷が高くなったときに通信性能が低下しやすい。このため、従来の技術では同一ホストマシン上の仮想マシン同士で頻繁に通信を実行する必要がある場合、高性能な通信を実現することが困難であるという課題があった。
【0006】
この課題を改善する先行技術として、特許文献1が挙げられる。特許文献1は、ネットワーク通信プロトコルではなくメモリアクセスのプロトコルを用いて仮想マシン間での通信を行う通信方法を開示しており、この通信方法により同一ホストマシン上の仮想マシン同士で高速な通信が可能となる。特許文献1による通信手段の実施例では、仮想通信メモリを実装しており、仮想ハードディスク(VHD又はVHDX)でフォーマットした仮想メモリを仮想マシンに定義した通信用メモリに対応させている。換言すれば、通信用メモリドライバをRAMディスクドライバとしてホストマシンにインストールして仮想通信用メモリをRAMディスクとして作成し、RAMディスクを仮想マシン用の仮想ディスクボリュームとして設定している。これにより、仮想マシンの通信用メモリを仮想ディスクボリュームとして仮想マシンに実装し、ホストマシン上の仮想通信用メモリ(又は、RAMディスク)との対応付けを行っている。この実施例によるホストマシン上の仮想通信用メモリと仮想マシン上の通信用メモリの実装方法は、仮想マシンの実現方式に依存しないため、仮想マシンに動作環境を適用するハイパーバイザプログラム(Hyper-VやVMwareなど)が異なっていても、ハイパーバイザプログラムや通信手段を実装したアプリケーションを改造することなく実装することが可能という利点がある。
【0007】
但し、データ通信で使用されるパケット値のデータ容量は一般的には最大で64KBであり、実際に使用するメモリ容量は制御用領域を含めても数メガバイト以下であるのに対して、特許文献1では通信用として使用する仮想ディスクボリュームを仮想マシン毎に設定する必要があり、一般的な仮想マシンに設定可能な仮想ディスクボリュームの記憶容量は1GB単位であることから、データ通信を行う仮想マシン毎に最低でも1GB強のメモリリソースが必要になるとともに、メモリリソースの確保がボトルネックとなり、ホストマシン上に多数の仮想マシンを定義した場合に、仮想マシン間の通信手段を実装することが困難である。また、特許文献2は、送信側の仮想計算機からのHVCを用いた送信メモリ領域の通知を受信し、受信側の仮想計算機からのHVCを用いた受信メモリ領域の通知を受信し、送信メモリ領域にあるデータを受信メモリ領域にコピーするハイパーバイザプログラムを開示しているが、メモリリソースを確保して仮想計算機間の通信手段を実装する困難性を解消するものではない。
【0008】
本発明は、上述の課題を解決する情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の第一の態様は、制御部と、通信用メモリを備えた複数の仮想マシンと、複数の仮想マシン間で通信される実データと、複数の仮想マシンのデータ読出し又は書込み用のデータテーブルと、データブロック管理テーブルとを記憶するシステムメモリと、複数の仮想マシン間の通信を行わせる通信用メモリドライバと、により構成される情報処理装置である。制御部は、データブロック管理テーブルを参照して通信用メモリドライバに設定された論理ブロックアドレスにより示される複数のデータブロックよりなり、該データブロックは複数のクラスタにより構成される仮想通信用メモリを生成し、仮想通信用メモリに複数の仮想マシンの通信用メモリと対応付けて複数の仮想メモリを生成し、データテーブルを参照して複数の仮想マシン間の通信を制御し、データブロック管理テーブルを更新する。
【0010】
本発明の第二の態様は、通信用メモリを備えた複数の仮想マシンと、複数の仮想マシン間の通信を行わせる通信用メモリドライバを搭載し、複数の仮想マシン間で通信される実データと、複数の仮想マシンのデータ読出し又は書込み用のデータテーブルと、データブロック管理テーブルとを記憶した情報処理装置に適用される情報処理方法である。情報処理方法は、データブロック管理テーブルを参照して通信用メモリドライバに設定された論理ブロックアドレスにより示される複数のデータブロックよりなり、該データブロックは複数のクラスタにより構成される仮想通信用メモリを生成し、仮想通信用メモリに複数の仮想マシンの通信用メモリと対応付けて複数の仮想メモリを生成し、データテーブルを参照して、複数の仮想マシン間の通信を制御し、データブロック管理テーブルを更新する。
【0011】
本発明の第三の態様は、通信用メモリを備えた複数の仮想マシンと、複数の仮想マシン間の通信を行わせる通信用メモリドライバを搭載し、複数の仮想マシン間で通信される実データと、複数の仮想マシンのデータ読出し又は書込み用のデータテーブルと、データブロック管理テーブルとを記憶した情報処理装置のコンピュータに適用されるプログラムである。プログラムは、情報処理装置のコンピュータにより、データブロック管理テーブルを参照して通信用メモリドライバに設定された論理ブロックアドレスにより示される複数のデータブロックよりなり、該データブロックは複数のクラスタにより構成される仮想通信用メモリを生成し、仮想通信用メモリに複数の仮想マシンの通信用メモリと対応付けて複数の仮想メモリを生成し、データテーブルを参照して、複数の仮想マシン間の通信を制御し、データブロック管理テーブルを更新する。
【発明の効果】
【0012】
本発明によれば、ホストマシン上の仮想マシン間でのデータ通信を行うための通信手段の実装に必要となるメモリリソースを削減できるという効果が得られる。
【図面の簡単な説明】
【0013】
【
図1】本発明の一実施形態に係る情報処理装置の構成を示すブロック図である。
【
図2】本発明の一実施形態に係る情報処理装置の機能を示すブロック図である。
【
図3】本発明の一実施形態に係るコマンド及び宛先情報の一例を示すデータテーブルである。
【
図4】本発明の一実施形態に係る通信用メモリのアドレスの一例を示すデータテーブルである。
【
図5】本発明の一実施形態に係る仮想マシンの通信用メモリ及び通信用メモリドライバの論理ブロックアドレス(LBA)の一例を示すデータテーブルである。
【
図6】本発明の一実施形態に係る通信用メモリ記憶部で管理する識別データの一例を示すデータテーブルである。
【
図7】本発明の一実施形態に係る仮想マシン間の通信において、仮想通信用メモリに書き込む仮想マシン間通信パケットデータの一例を示す。
【
図8】本発明の一実施形態に係る仮想マシンの仮想通信用メモリの実メモリ割り当て状態に関するデータブロック管理テーブルの一例を示す。
【
図9】本発明の一実施形態に係る情報処理装置の仮想通信用メモリに対する入出力処理の概要を示すフローチャートである。
【
図10】本発明の一実施形態に係る情報処理装置の仮想通信用メモリに対する通常のファイルアクセス入出力処理を示すフローチャートである。
【
図11】
図10に示される仮想通信用メモリに対する通常のファイルアクセス入出力処理における実メモリ割り当て済みアドレスに対する処理を示すフローチャートである。
【
図12】本発明の一実施形態に係る情報処理装置のシステムメモリのデータ構造を示すブロック図である。
【
図13】本発明の一実施形態に係る情報処理装置の制御部の最小構成を示すブロック図である。
【
図14】本発明の一実施形態に係る情報処理方法を示すフローチャートである。
【発明を実施するための形態】
【0014】
本発明に係る情報処理装置及び情報処理方法について実施例とともに添付図面を参照して詳細に説明する。
【0015】
図1は、本発明の一実施形態に係る情報処理装置1の構成(物理的構成及び論理的構成)を示すブロック図である。情報処理装置1は、ハードウェア構成として少なくともプロセッサ(又は制御部)とメモリ(又は記憶部)を具備するものであり、所定のプログラムを実行することにより論理的構成が実装される。具体的には、情報処理装置1は、制御部100と、システムメモリ200と、通信用メモリドライバ300と、仮想通信用メモリ400と、第一仮想マシン500と、第二仮想マシン600と、を備える。なお、本実施形態における仮想マシンは、ホスト型でもよいし、ハイパーバイザ型でもよい。つまり、同一ホストマシン上で動作する仮想マシンであれば、仮想マシンの稼働方式や稼働数は問わない。本実施形態では説明を簡単にするため、ホストマシン上で動作する2台の仮想マシン間での通信を実装した構成としているが、新たに仮想マシンの定義を追加することで複数の仮想マシン間で通信を行うことができる。
【0016】
制御部100は、CPU(Central Processing Unit)などのプロセッサを用いて構成される。制御部100は、プログラムをメインメモリに展開し、プロセッサがプログラムを実行することにより所定の処理を実現する。本実施形態では、制御部100は、プログラムを実行することで
図2に示す機能を実現する。システムメモリ200は、通信用メモリ記憶部210、通信データ記憶部220、データブロック管理部230を備える。
【0017】
通信用メモリ記憶部210は、後述する
図3乃至
図5に示すデータテーブルを予め記憶している。また、通信用メモリ記憶部210は、種々の処理のコマンド(以下、「指示データ」という)や、識別ID、通信IDなどの情報(以下、「識別データ」という)を、後述する
図6のデータテーブルに記憶する。通信データ記憶部220は、第一仮想マシン500と第二仮想マシン600との間で通信される実データを記憶する。データブロック管理部230は、後述する
図8のデータブロック管理テーブルを記憶する。
【0018】
通信用メモリドライバ300は、仮想通信用メモリ400を生成する。制御部100は、通信用メモリドライバ300の機能を用いて所定プログラムを実行する。
【0019】
仮想通信用メモリ400は、第一仮想メモリ410及び第二仮想メモリ420を備える。なお、第一仮想メモリ410及び第二仮想メモリ420のフォーマットは、VHDやVHDXなど仮想メモリで使用できるフォーマットであれば、どのフォーマットを使用してもよい。また、第一仮想メモリ410及び第二仮想メモリ420は、第一通信用メモリ520及び第二通信用メモリ620と対応付けられている。
【0020】
第一仮想マシン500は、第一アプリケーション510と第一通信用メモリ520を備える。第一アプリケーション510は、第一仮想マシン500が第二仮想マイン600とデータの送受信を行う際、第一通信用メモリ520を通して送受信の命令を通信用メモリドライバ300へ通知する。
【0021】
第一通信用メモリ520は、第一アプリケーション510から通知された送受信の命令を通信用メモリドライバ300へ通知して通信を行う。なお、第一通信用メモリ520は、後述するメモリ制御部110によって、第一仮想メモリ410とアドレスが対応付けられている。
【0022】
第二仮想マシン600は、第二アプリケーション610と第二通信用メモリ620を備える。第二アプリケーション610は、第二仮想マシン600が第一仮想マシン500とデータの送受信を行う際、第二通信用メモリ620を通して送受信の命令を通信用メモリドライバ300へ通知する。
【0023】
第二通信用メモリ620は、第二アプリケーション610から通知された送受信の命令を通信用メモリドライバ300へ通知して通信を行う。なお、第二通信用メモリ620は、後述するメモリ制御部110によって、第二仮想メモリ420とアドレスが対応付けられている。
【0024】
なお、システムメモリ200及び通信用メモリドライバ300は、物理的な記憶装置に対応し、仮想通信用メモリ400は論理的(又は仮想的)な記憶領域に対応する。
【0025】
図2は、本発明の一実施形態に係る情報処理装置1の制御部100の機能を示すブロック図である。制御部100は、所定プログラムを実行することにより、メモリ制御部110と、データ判定部120と、データ登録部130と、通信制御部140とを実装する。
【0026】
メモリ制御部110は、仮想マシンと通信を行うための仮想の通信用メモリ(仮想通信用メモリ400)を構成する。先ず、メモリ制御部110は、メインメモリから記憶領域を確保する代わりに、
図1のデータブロック管理部230にあるデータブロック管理テーブル(
図8)に初期値を設定することで、通信用メモリドライバ300によりアクセスする仮想通信用メモリ400を生成する。
【0027】
メモリ制御部110は、
図1のデータブロック管理部230にあるデータブロック管理テーブル(
図8)のエントリを各仮想メモリに割り当てることで、仮想通信用メモリ400に第一仮想メモリ410及び第二仮想メモリ420を生成する。
【0028】
次に、メモリ制御部110は、仮想マシンを構成している機構(例えば、ハイパーバイザープログラムなど)が提供している標準機能を用いて、第一仮想メモリ410及び第二仮想メモリ420を、第一通信用メモリ520及び第二通信用メモリ620に対応付ける。
【0029】
これにより、第一仮想マシン500及び第二仮想マシン600が、第一通信用メモリ520及び第二通信用メモリ620に対して入出力(I/O)処理を実行したときに、通信用メモリドライバ300に第一通信用メモリ520及び第二通信用メモリ620への入出力(I/O)処理の要求が来るため、メモリ制御部110に入出力(I/O)制御情報を渡して仮想通信用メモリ400に第一通信用メモリ520及び第二通信用メモリ620をアクセスさせる。
【0030】
なお、本実施形態では、2台の仮想マシン間での通信を想定しているため、仮想通信用メモリ400内に生成する仮想メモリは2台としているが、3台以上の複数の仮想マシン間での通信を行う場合、仮想マシンの台数に応じて複数の仮想メモリを生成する必要がある。この場合、メモリ制御部110は、複数の仮想メモリを複数の仮想マシンに備えられる通信用メモリと1対1で対応付けられる。
【0031】
データ判定部120は、情報処理装置1のオペレーティングシステム(OS)がWindows(登録商標)の場合、プロセスからファイルへアクセスが行われるときには入出力要求パケット(I/O Request Packet (IRP))が発行される。入出力要求パケットの情報には、通信用メモリのアドレスに対応した論理ブロックアドレス(Logical Block Addressing (LBA))や実データが含まれており、データ判定部120は、プロセスから受け取った入出力要求パケットの情報に基づいて、実データ及び識別データを判定する。
【0032】
データ判定部120が受け取った入出力要求パケットが仮想マシン間の通信であると判定した場合、データ判定部120は、送信要求及び受信要求の発行元の識別IDとしてLBAを使用する。そして、データ判定部120は、判定結果に基づいて取得したデータをデータ登録部130へ送る。
【0033】
データ判定部120が受け取った入出力要求パケットが仮想マシン間の通信ではないと判定した場合、データ判定部120は、メモリ制御部110に入出力(I/O)制御情報を送る。メモリ制御部110は、
図1のデータブロック管理部230と仮想通信用メモリ400を用いて第一通信用メモリ520と第二通信用メモリ620への通常のファイルアクセスとして入出力要求パケットを処理する。
【0034】
データ登録部130は、データ判定部120から受け取った通信用データをシステムメモリ200に登録する。本実施形態では、一例として、データ登録部130は、データ判定部120から受け取った識別ID、通信ID、保存データフラグを通信用メモリ記憶部210に登録する。
【0035】
データ登録部130は、通信制御部140の処理結果に基づいて、仮想マシンが制御された状態を表す情報(以下、「状態情報」という)を通信制御部140から受け取り、通信用メモリ記憶部210に登録する。データ登録部130は、データ判定部120から受け取った実データを通信データ記憶部220に登録する。
【0036】
通信制御部140は、複数の仮想マシン間の通信を制御する。通信制御部140は、後述する
図6のデータテーブルに基づいて、仮想マシンのデータ通信を制御する。具体的には、通信制御部140は、オペレーティングシステム(OS)が発行する入出力要求パケットなどの識別データに基づいて、仮想マシン間の通信を制御する。
【0037】
例えば、第一アプリケーション510から初期化リクエストがあった場合、通信制御部140は、指示データ中のコマンドが書込用初期設定の「INIT_W」、送り元IDが「AP1」であることを確認すると、
図6のデータテーブルに入出力要求パケット(IRP)中の論理ブロックアドレス(LBA)を識別ID「LBA_AP1_W」として設定し、通信ID「AP1」を設定して、状態「アイドル」を設定することで、第一仮想アプリケーション510の書込用初期設定を実行する。
【0038】
図3は、本発明の一実施形態に係るコマンド及び宛先情報の一例を示すデータテーブルである。通信用メモリ記憶部210は、書き込みの初期設定を行う指示データと、読み出しの初期設定を行う指示データと、送信を行う指示データを予め記憶する。また、通信用メモリ記憶部210には、通信の宛先や送り元を示す宛先情報も同様に記憶されている。
図3のデータテーブルには、一例として、指示データの項目として「INIT_W」、「INIT_R」、「TX」が記憶されており、宛先情報の項目として「AP1」、「AP2」が記憶されている。なお、
図3のデータテーブルは、本願実施形態のデータフォーマットの一例であり、情報処理装置1において使用される通信方法に合わせて適宜変更してもよい。
【0039】
図4は、本発明の一実施形態に係る通信用メモリのアドレスの一例を示すデータテーブルである。
図4のデータテーブルに示す送信用アドレスと受信用アドレスは、仮想マシン上のアプリケーション(第一仮想マシン500の第一アプリケーション510や第二仮想マシン600の第二アプリケーション610)が通信用メモリ(第一通信用メモリ520や第二通信用メモリ620)に入出力(IO)指示を発行して
図3に示す初期設定コマンド(INIT_WやINIT_R)を書き込んで通信用初期設定を行うときに使用されるアドレスである。仮想マシン上のアプリケーションは、自身で通信用初期設定を行うときに使用するアドレスを予め記憶している。
【0040】
図4のデータテーブルでは、仮想マシン上の各アプリケーションが通信用初期設定を行うときのアドレスの一例として、第一通信用メモリ520について送信用アドレス「0xXXXXXXX1」と受信用アドレス「0xYYYYYYY1」が設定されており、第二通信用メモリ620について送信用アドレス「0xXXXXXXX2」と受信用アドレス「0xYYYYYYY2」が設定されている。
【0041】
図5は、本発明の一実施形態に係る仮想マシンの通信用メモリ及び通信用メモリドライバの論理ブロックアドレス(LBA)の一例を示すデータテーブルである。なお、論理ブロックアドレス(LBA)とは、記憶装置においてデータの位置を示すアドレスを指定する方法である。論理ブロックアドレス(LBA)は、論理ブロックを含むブロックアドレス空間の先頭からのブロックオフセットを表す。
【0042】
仮想通信用メモリ400と仮想マシンの通信用メモリの対応付けは、仮想通信用メモリ400中の第一仮想メモリ410と第二仮想メモリ420を第一仮想マシン500と第二仮想マシン600用の仮想ディスクボリュームとして設定し、仮想ディスクボリュームを第一通信用メモリ520と第二通信用メモリ620として使用することにより実現される。これにより、仮想マシン上で動作するオペレーティングシステム(OS)及び仮想マシンの動作環境を提供している機構(ハイパーバイザプログラムなど)の標準機能によって、通信用メモリで入出力(I/O)に使用する論理ブロックアドレスが仮想通信用メモリ400の論理ブロックアドレスに変換される。通信用メモリドライバ300が入出力要求パケット(IRP)で受け取る論理ブロックアドレスは、上記のように変換された後の仮想通信用メモリ400の論理ブロックアドレスとなる。
【0043】
図5のデータテーブルでは、
図4のデータテーブルで示した通信用メモリ(第一通信用メモリ520と第二通信用メモリ620)の送信用アドレスと受信用アドレスが変換されて、仮想通信用メモリ400の論理ブロックアドレス(LBA)が生成されたときの値の例として、「LBA_AP1_W」、「LBA_AP1_R」、「LBA_AP2_W」、「LBA_AP2_R」が示されている。これらの値は、通信制御部140について前述したように、仮想マシン上のアプリケーションが通信用の初期設定処理を実行したときに、後述する
図6のデータテーブルに書き込まれて記憶される。
【0044】
図6は、本発明の一実施形態に係る通信用メモリ記憶部210で管理する識別データの一例を示すデータテーブルである。本実施形態では、通信用メモリ記憶部210で管理する識別データのデータテーブル(以下、「通信用管理テーブル」という)では、識別ID、通信ID、状態情報、保存データフラグ、データ保存アドレスからなる5つのデータ項目が記述される。
【0045】
通信用管理テーブルでは、識別IDとして、通信用メモリドライバ300の論理ブロックアドレス(LBA)が登録される。つまり、
図5のデータテーブルに記述された通信用メモリの送信用アドレスと受信用アドレスに対応付けて、
図6の通信用管理テーブルの識別IDが登録される。通信IDとして、宛先情報が登録される。つまり、
図3のデータテーブルの宛先情報(AP1、AP2)に対応付けて、通信IDが登録される。
【0046】
通信用管理テーブルにおける状態として、本実施形態では、「初期設定中」、「アイドル」、「送信要求中」、「送信完了待ち」、「受信要求中」、「受信完了待ち」の6つの状態情報のうち、いずれか1つの状態情報が登録される。状態情報は、通信制御部140の処理に従って、データ登録部130によって登録される。なお、初期設定前の時点では、識別IDによる管理情報が存在しないため、通信用管理テーブルの状態として、「初期状態」が示される。
【0047】
通信用管理テーブルでは、データ登録部130によって保存された実データが存在するか否かに応じて保存データフラグが登録される。保存データフラグの種別として、「有効」及び「無効」があり、保存データが存在する場合には「有効」、保存データが無い場合には「無効」が保存データフラグとして登録される。
【0048】
通信用管理テーブルでは、保存データアドレスとして、初期設定時に、通信データを一時的に格納する記憶領域の先頭アドレスがデータ登録部130によって登録される。なお、保存データフラグ及びデータ保存アドレスは、通信用管理テーブルの受信用の識別IDのエントリに格納される。本実施形態では、
図6の通信用管理テーブルに記述される4行の情報のうち、偶数番目のエントリを受信用の識別IDを格納するエントリとしている。
【0049】
図7は、本発明の一実施形態に係る仮想マシン間の通信において、仮想マシン上で動作するアプリケーションが通信データの送受信要求を行うときに、仮想通信用メモリ400に書き込む仮想マシン間通信パケットデータの一例を示す。
図7では、一例として、第一仮想マシン500上で動作する第一アプリケーション510が第二仮想マシン600上で動作する第二アプリケーション610宛に通信データの送信を要求するときの仮想マシン間通信パケットデータを示している。この場合、
図7の送信用アドレスは、
図4に示される第一通信用メモリ520の送信用アドレス「0xXXXXXXX1」となる。仮想マシン間通信パケットのデータ部には通信データが設定されており、ヘッダ部には、
図3に示される送信コマンド「TX」、宛先ID「AP2」、送り元ID「AP1」が設定されるとともに、データ部に書き込まれた通信データのデータ長が有効データ長として設定される。
【0050】
図8は、本発明の一実施形態に係る仮想マシンの仮想通信用メモリ400の実メモリ割り当て状態に関するデータブロック管理テーブルの一例を示す。
図8のデータブロック管理テーブルは、
図1のシステムメモリ200のデータブロック管理部230に実装されており、メモリ制御部110によってデータブロック管理データの更新が行われる。なお、データブロック管理テーブルには、「クラスタ番号」、「実メモリ割り当てフラグ」、「データパターン」、「実メモリアドレス」の4つの項目が登録される。
【0051】
データブロック管理テーブルにおいて、クラスタ番号は、仮想通信用メモリ400に割り当てられた仮想メモリ領域全体をクラスタ容量の単位で分割したときに各クラスタの順に割り振った番号を示す。なお、クラスタ容量は、論理ブロック容量の倍数で定義するものとし、本実施形態では、論理ブロック容量を512バイトとし、クラスタ容量を64キロバイト(=65536バイト=512バイト×128)としている。
【0052】
データブロック管理テーブルにおいて、実メモリ割り当てフラグは、後述の実メモリアドレスに記憶されているアドレス値の有効/無効を示す。本実施形態では、実メモリ割り当てフラグとして、1バイトを割り当てており、有効=0x01、無効=0x00とし、初期値を無効(0x00)としている。
【0053】
データブロック管理テーブルにおいて、データパターンは、クラスタ番号に対応する各クラスタに書き込まれているとみなされるデータパターンを示す。データパターンの値は、実メモリ割り当てフラグが無効の場合に、該当するクラスタ番号のクラスタからの読み出し要求が実行されるときに使用される。本実施形態では、データパターンとして1バイトが割り当てられており、初期値を「0x00」としている。
【0054】
データブロック管理テーブルにおいて、実メモリアドレスは、クラスタ番号に対応する各クラスタに割り当てられた実メモリのアドレスを示す。実メモリアドレスとして、該当するクラスタ番号のデータを記憶するために確保したメモリバッファのアドレス値を設定するとともに、実メモリ割り当てフラグを有効に設定する。
【0055】
次に、本発明の一実施形態に係る情報処理装置1における仮想通信用メモリ400に対する入出力(I/O)処理について
図9乃至
図11を参照して詳細に説明する。仮想マシン上で動作するアプリケーション(第一仮想マシン500の第一アプリケーション510又は第二仮想マシン600の第二アプリケーション610)から仮想通信用メモリ400に入出力(I/O)指示が発行されると、通信用メモリドライバ300に入出力要求パケット(IRP)による入出力(I/O)処理要求が来る。この入出力要求パケットには、
図5のデータテーブルに例示されるような仮想通信用メモリ400に対応付けられた論理ブロックアドレス(LBA)や入出力(I/O)処理用のデータバッファアドレスなどの情報が格納されている。データバッファアドレスは、入出力要求が書き込み指示の場合には書込データが格納されたメモリバッファアドレスであり、読み出し指示の場合には読み出したデータを格納するメモリバッファアドレスである。
【0056】
図9は、本発明の一実施形態に係る情報処理装置1の仮想通信用メモリ400に対する入出力処理の概要を示すフローチャートである(ステップS100乃至S300)。先ず、制御部100のデータ判定部120は、通信用メモリドライバ300から入出力要求パケット(IRP)の情報を受け取って、入出力要求が通信用コマンドの処理要求か否か判定する(S100)。具体的には、入出力要求で示される処理要求コマンドが読み出し指示の場合、論理ブロックアドレスが
図6の通信用管理テーブルに記憶されている読み出し用の識別IDと一致しているときに通信用コマンドと判定する。一方、処理要求コマンドが書き込み要求の場合、論理ブロックアドレスが
図6の通信用管理テーブルに記憶されている書き込み用の識別IDと一致しているときの他に、書き込みデータの内容が
図3に示される書込用初期設定コマンド「INIT_W」又は読出用初期設定コマンド「INIT_R」であるときにも、通信用コマンドと判定する。
【0057】
ステップS100において、データ判定部120が通信用コマンドと判定した場合、通信用のコマンド処理が動作し(S300)、通信用コマンドではないと判定した場合、仮想通信用メモリ400に対する通常のファイルアクセス入出力(I/O)処理が動作する(S200)。通信用のコマンド処理(S300)は、従来技術と同様であり、例えば、仮想マシン間の通信における初期設定処理、送信処理、受信処理からなり、前述の特許文献1の
図8乃至
図10に示される処理過程と同様であるため、その詳細内容の説明を割愛する。
【0058】
次に、仮想通信用メモリ400に対する通常のファイルアクセス入出力(I/O)処理(S200)の動作について
図10乃至
図11を参照して詳細に説明する。
図10は、本発明の一実施形態に係る情報処理装置1の仮想通信用メモリ400に対する通常のファイルアクセス入出力処理を示すフローチャートである(ステップS201乃至S211)。これは、制御部100のデータ判定部120が通信用のコマンドではないと判定した場合にメモリ制御部110が実行する処理過程を示している。
【0059】
メモリ制御部110は、入出力要求パケット(IRP)の入出力(I/O)処理要求で示される論理ブロックアドレス(LBA)、データカウント、入出力用メモリバッファのアドレスを確認し、処理要求データ数、開始LBA、開始バッファアドレスを記憶するとともに、開始LBAに対応するクラスタ番号を算出して記憶する(S201)。
【0060】
クラスタ番号は、仮想通信用メモリ400のデータブロックを管理するデータブロック管理テーブル(
図8)を参照するための番号である。本実施形態では、論理ブロック容量を512バイト、クラスタ容量を64キロバイト(=65536バイト=512バイト×128)とするため、開始LBAを128で割って小数点以下を切り捨てた値がクラスタ番号となる。
【0061】
次に、クラスタ番号を用いてデータブロック管理テーブル(
図8)の実メモリ割り当てフラグを確認する(S202)。ステップS202において、クラスタ番号が実メモリ割り当て済みクラスタを示すと判定すると、メモリ制御部110は、後述する
図11に示される実メモリ割り当て済みアドレスに対する処理を実行する。ステップS202において、クラスタ番号が実メモリ割り当て済みのクラスタを示さないと判定すると、メモリ制御部110は、入出力処理要求が読出しコマンドか否か判定する(S203)。
【0062】
ステップS203において読出しコマンドと判定すると、メモリ制御部110は、データブロック管理テーブル(
図8)に記述されているデータパターンがクラスタに書き込まれているものと見做して、I/O発行元にデータを転送する(S207)。具体的には、クラスタ番号、開始LBA、処理要求データ数を用いてクラスタ内での読み出しを開始する相対論理ブロックアドレスと読出し処理データ数を算出し、開始バッファアドレスに対して読出し処理データ数分のクラスタのデータパターンを書き込む。その後、後述するステップS209を実行する。
【0063】
ステップS203において読出しコマンドではない(つまり、書込みコマンド)と判定すると、メモリ制御部110は、一時クラスタバッファを準備して、一時クラスタバッファに入出力要求で指示された書込みデータを書き込む(S204)。具体的には、一時クラスタバッファの有効フラグがリセットされている場合、クラスタ容量のサイズで実メモリを割り当てて一時クラスタバッファを作成してフラグを有効にした後、クラスタ番号と開始LBAと処理要求データ数を用いてクラスタ内で書込みを開始する相対論理ブロックアドレスと書込み処理データ数を算出し、開始バッファアドレスから書込みデータを処理データ数分読み出して、一時クラスタバッファの相対ブロックアドレスから書込みを行う。
【0064】
ステップS204で一時クラスタバッファに書き込んだデータを確認し、メモリ制御部110は、書込みデータが全て同一のデータパターンか否か確認する(S205)。ステップS205において書込みデータが全て同一のデータパターンであると判定すると、一時クラスタバッファ内の未書込み領域にも同一データパターンのデータが書き込まれていたものと見做して、クラスタのデータブロック管理テーブルに当該データパターンを設定する(S208)。その後、後述するステップS209を実行する。
【0065】
ステップS205において書込みデータが全て同一データパターンでは無いと判定した場合、データブロック管理テーブルに一時クラスタバッファのアドレスを記憶して、実メモリ割り当てフラグ(又は、実メモリ確保フラグ)を有効化する(S206)。具体的には、一時クラスタバッファ内の未書込み領域に、データブロック管理テーブル(
図8)に記述されたデータパターンでデータを書き込んで一時クラスタバッファ内のデータを全て確定させた後、実メモリアドレスとして一時クラスタバッファのアドレスを記憶して、実メモリ割り当てフラグを有効に設定し、一時クラスタバッファの有効フラグをリセットする。
【0066】
1つのクラスタに対する処理を終了すると、メモリ制御部110は、残りの処理要求データ数、次に処理する開始LBA、開始バッファアドレス、及びクラスタ番号を算出して記憶する(S209)。具体的には、メモリ制御部110は、処理データ数を用いて残りの処理要求データ数を算出して処理要求データ数を更新する。更新した処理要求データ数がゼロでない場合、続けて次のクラスタの処理を実行するために、処理データ数を用いて開始LBAと開始バッファアドレスを更新し、クラスタアドレスに1を加算して更新する(S209)。
【0067】
ステップS209で更新した処理データ数がゼロでない場合、ステップS210を経由してステップS202に分岐して、次のクラスタで入出量処理を実行する。一方、ステップS210で処理データ数がゼロであると判定すると、メモリ制御部110は、I/O要求元へ終了報告を行い(S211)、通常のファイルアクセス入出力処理(
図10)を終了する。
【0068】
図11は、
図10に示す仮想通信用メモリ400に対する通常のファイルアクセス入出力処理において、実メモリ割り当て済みアドレスに対する処理を示すフローチャートである(ステップS220乃至S222)。
図10のステップS202において、ステップS201で算出したクラスタ番号が実メモリ割り当て済みクラスタを示すと判定すると、メモリ制御部110は、入出力要求が読出しコマンドか否か判定する(S220)。ステップS220にて読出しコマンドと判定すると、メモリ制御部110は、データブロック管理テーブル(
図8)に記憶される実メモリアドレスが示すメモリバッファからデータを読み出してI/O発行元に転送する(S222)。
【0069】
具体的には、クラスタ番号と開始LBAと処理要求データ数を用いてクラスタ内で読み出しを開始する相対論理ブロックアドレスと読出し処理データ数を算出する。次に、データブロック管理テーブルに記憶される実メモリアドレスが示すメモリバッファの相対論理アドレスから処理データ数分のデータを読み出して、開始バッファアドレスに書き込む。
【0070】
ステップS220にて読出しコマンドではない(書込みコマンド)と判定すると、メモリ制御部110は、データブロック管理テーブルに記憶される実メモリアドレスが示すメモリバッファにI/O発行元からのデータを書き込む(S221)。具体的には、クラスタ番号と開始LBAと処理要求データ数を用いてクラスタ内で書込みを開始する相対論理アドレスと書込み処理データ数を算出する。次に、開始バッファアドレスから処理データ数分のデータを読み出して、データブロック管理テーブルに記憶される実メモリアドレスが示すメモリバッファの相対論理ブロックアドレスから書き込む。
【0071】
次に、本発明の一実施形態に係る情報処理装置1のシステムメモリ200のデータ構造1200について、
図12を参照して説明する。データ構造1200は、3つの領域1210、1220、1230より構成されており、
図1に示す通信用メモリ記憶部210、通信データ記憶部220、データブロック管理部230に対応している。第1の領域1210は、
図3に示すようなコマンド(INIT_W、INIT_Rなど)と通信宛先/送り元ID(第一仮想マシンのアプリケーションAP1、第二仮想マシンのアプリケーションAP2)との対応付けを記憶する。第2の領域1220は、仮想マシン間で通信される実データを記憶する。第3の領域1230は、
図8に示すようなデータブロック管理テーブルを記憶しており、クラスタ番号、実メモリ割り当てフラグ(有効/無効)、データパターン、実メモリアドレスから構成される。
【0072】
次に、本発明の一実施形態に係る情報処理装置1の制御部100の最小構成1100について、
図13を参照して説明する。最小構成1100は、メモリ制御部1110と通信制御部1140から構成されている。メモリ制御部1110は、
図8に示すデータブロック管理テーブルに初期値を設定することで通信用メモリドライバ300によりアクセスする仮想通信用メモリ400を生成する。
図1に示したように、仮想通信用メモリ400には複数の仮想マシンに対応した複数の仮想メモリが形成される。また、メモリ制御部1110は、複数の仮想メモリと複数の仮想マシンに実装される複数の通信用メモリと対応付ける。
【0073】
通信制御部1140は、
図6に示すデータテーブルに相当するデータ構造1150を参照して複数の仮想マシン間の通信を制御する。データ構造1150には、識別ID(LBA_AP1_W、LBA_AP1_Rなどの論理ブロックアドレス)、通信ID(仮想マシンのアプリケーションAP1、AP2など)、状態(初期設定、アイドル、送信要求、受信要求など)、保存データフラグ(実データの存在/不存在に基づく有効/無効)、データ保存アドレス(LBA_AP1_R用バッファアドレスなど)が記憶される。
【0074】
次に、本発明の一実施形態に係る情報処理装置1の制御部100(最小構成1100)の動作について、
図14のフローチャートを参照して説明する(ステップS1110乃至S1130)。先ず、メモリ制御部110は、
図8に示すデータブロック管理テーブルを用いて仮想通信用メモリ400を生成する(S1110)。そして、仮想通信用メモリ400に形成される複数の仮想メモリと複数の仮想マシンの通信用メモリとを対応付ける(S1120)。その後、通信制御部1140は、
図6のデータテーブル(データ構造1150)を参照して複数の仮想マシン間のデータ通信を制御する。例えば、仮想マシンのアプリケーションAP1との通信において読出し処理を行う場合、識別IDは「LBA_AP1_R」となり、保存データフラグが有効であり実データが存在する場合、LBA_AP1_R用バッファアドレスから実データを読み出す。
【0075】
本実施形態では、従来技術(例えば、特許文献1)による仮想マシン間の通信方法において、ホストマシン上の仮想通信用メモリ(RAMディスク)の実メモリ割り当て状態を管理するデータブロック管理テーブルを実装したことに特徴を有している。メモリ制御部110は、仮想通信用メモリ400(RAMディスク)の初期設定で実データを格納するための実メモリの確保を行わず、RAMディスクの全てのデータブロックに「0x00」のデータパターンが書き込まれた状態としてデータブロック管理部230の管理情報(データブロック管理テーブル)を設定する。メモリ制御部110は、仮想通信用メモリ400に有効なデータが書き込まれた場合のみに実メモリの割り当てを行い、データブロック管理部230の管理情報(データブロック管理テーブル)を更新する。これにより、従来技術(例えば、特許文献1)による仮想マシン間の通信手段を実装するときに必要な大量の無駄なメモリリソースの確保を不要にして、少ないメモリリソースでの実装が可能となり、多数の仮想マシンを定義した場合の仮想マシン間の通信手段の実装が容易になる。
【0076】
本実施形態は、同一ホストマシン上の仮想マシン間で通信を行う場合に、ネットワーク通信用のプロトコルを使用せず、メモリアクセスで通信を行うことにより、各通信階層の制御処理による通信のオーバヘッドを削減でき、仮想マシン間の通信手段を実装するときに必要となるメモリリソースを削減でき、通信手段の実装を容易にするという効果を奏する。具体的には、下記の効果(利点)を実現することができる。
【0077】
(1)同一ホストマシン上の仮想マシン間での通信手段は、ネットワークプロトコルを用いた通信よりも高性能な通信を実現できる。また、該通信手段は仮想マシンの実現方法に依存しないため、仮想マシンに動作環境を提供するハイパーバイザプログラム(Hyper-VやVMwareなど)が異なっていても、ハイパーバイザプログラムや通信手段を実装したアプリケーションを改造することなく通信手段を実装することが可能である。
(2)仮想マシンの通信用メモリを仮想ディスクボリュームとして仮想マシンに実装することにより、仮想マシンの通信を行うアプリケーションが使用する送信用アドレスや受信用アドレスを仮想ディスクボリュームに書き込んだ送信用ファイルや受信用ファイルのアドレスとして扱うことが可能であり、アプリケーションは、送信用ファイルへの書込みや受信用ファイルの読出しによって簡単に仮想マシン間の高速通信を実現することができる。
【0078】
(3)本実施形態は、高性能で汎用的な仮想マシン間の通信手段を実現するときに必要であった大量の無駄なメモリリソースの確保が不要になるという利点がある。
(4)同一ホストマシン上の仮想マシン間での通信手段をプログラムとして構成してホストマシンにインストールすることができる。これにより、ホストマシン上に多数の仮想マシンが定義されている場合であっても、仮想マシンの実現方式によらず、高性能な仮想マシン間の通信を容易に実現できる。
【0079】
(5)本実施形態では、ホストマシン上に2つの仮想マシンを実装した構成を提供しているが、本発明は仮想マシンの実装数に依存しないため、多数の仮想マシンをホストマシン上に実装した環境でも実施可能である。
(6)また、本発明は、ホストマシンとホストマシン上で動作する仮想マシン間の高速通信手段としても実施可能である。
【0080】
複数の仮想マシン間の通信を制御するよう構成された情報処理装置(例えば、パーソナルコンピュータや端末装置)は、コンピュータシステムを有している。そして、上述した処理過程(
図9乃至
図11、
図14)は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリなどをいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【0081】
上述のコンピュータシステムとは、オペレーティングシステム(OS)などのソフトウェアや周辺機器等のハードウェアを含むものとする。また、コンピュータシステムは、ホームページ提供環境(或いは、ブラウザ表示機能)を備えたWWWシステムも含むものとする。また、コンピュータ読み取り可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROMなどの可搬媒体、コンピュータシステムに内蔵されるハードディスクなどの記憶装置のことをいう。さらに、コンピュータ読み取り可能な記録媒体とは、インターネットなどのネットワークや電話回線などの通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0082】
また、上記プログラムは、このプログラムを記憶装置などに格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する伝送媒体は、インターネットなどのネットワーク(通信網)や電話回線などの通信回線のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、上述した機能の一部を実現するためのものであっても良い。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(又は、差分プログラム)であっても良い。
【0083】
最後に、本発明は上述の実施形態に限定されるものではなく、情報処理装置の構成も
図1、
図2、
図12、
図13の構成に限定されるものではない。また、
図3乃至
図8に示した表形式も一例であり、限定的なものではない。さらに、
図9乃至
図11、
図14に示した処理フローも一例であり、限定的なものではない。本発明は、添付した特許請求の範囲に定義される技術的範囲内での種々の変形例や設計変更及び改造を包含するものである。
【産業上の利用可能性】
【0084】
本発明は、同一ホストマシン上に構築された複数の仮想マシン間の通信に加えて、ホストマシンと仮想マシンとの間の通信にも適用可能である。
【符号の説明】
【0085】
1 情報処理装置
100 制御部
110 メモリ制御部
120 データ判定部
130 データ登録部
140 通信制御部
200 システムメモリ
210 通信用メモリ記憶部
220 通信データ記憶部
230 データブロック管理部
300 通信用メモリドライバ
400 仮想通信用メモリ
410 第一仮想メモリ
420 第二仮想メモリ
500 第一仮想マシン
510 第一アプリケーション
520 第一通信用メモリ
600 第二仮想マシン
610 第二アプリケーション
620 第二通信用メモリ
1100 制御部の最小構成
1110 メモリ制御部
1120 通信制御部
1150 データ構造(データテーブル)
1200 システムメモリ