(57)【特許請求の範囲】
【請求項１】
共有メモリの実体である共有ページと、各共有ページのインデックス値を集めたデータである共有設定ページと、各共有設定ページのページフレーム番号とインデックス値を対応付けて記憶するグラントテーブルとを有するサーバと、
グラントテーブルのインデックス値を管理するデータベースを有するホストと、
前記共有ページ及び共有設定ページがマップされる共有ページ領域、及び共有設定ページ領域を有するクライアントと
を有することを特徴とするメモリ共有装置。
【請求項２】
前記クライアントは、共有設定ページごとに、マップ管理用ハンドル値及びマップ先頭仮想アドレスを記憶する個別設定メモリ領域をさらに有することを特徴とする、請求項１に記載のメモリ共有装置。
【請求項３】
共有メモリの実体である共有ページと、
各共有ページのインデックス値を集めたデータである共有設定ページと、
各共有設定ページのページフレーム番号とインデックス値を対応付けて記憶するメモリ共有許可表と
共有ページ及び共有設定ページを確保し、そのページフレーム番号を取得するメモリ取得部と、
メモリ取得部で取得した共有ページおよび共有設定ページのページフレーム番号と、共有を許可する第２通信装置のＩＤ値をメモリ共有許可表に登録するメモリ共有状態更新部と、
共有設定蓄積部に登録された、第２通信装置に関する情報を定期的に取得する共有設定取得部と
を有する第１通信装置と、
第１通信装置の共有ページを第２通信装置のメモリ空間にマップするための領域である共有ページ領域と、
第１通信装置の共有設定ページを第２通信装置のメモリ空間にマップするための領域である共有設定ページ領域と、
共有ページ領域、共有設定ページ領域をマップするためのメモリ空間を取得し、その仮想アドレスを取得するメモリマップ領域取得部と、
メモリマッピングの実行要求を出すメモリマッピング要求部と、
共有設定蓄積部のデータを読み出す第２の共有設定取得部と
第２通信装置に関する情報を共有設定蓄積部に書き込む共有設定記録部と
を有する第２通信装置と
共有設定ページに対するメモリ共有許可表のインデックス値を蓄積する共有設定蓄積部と、
第１通信装置、第２通信装置間のメモリマッピングを行うメモリマッピング実施部と
を有する管理装置と
を具備することを特徴とするメモリ共有装置。
【請求項４】
前記第２通信装置は、共有設定ページごとに、マップ管理用ハンドル値及びマップ先頭仮想アドレスを記憶する個別設定メモリ領域をさらに有することを特徴とする、請求項３に記載のメモリ共有装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ共有装置に関する。
【背景技術】
【０００２】
２台のマシン間を共有メモリＨＷで接続し、ＩＰネットワークを物理的に遮断することで、通したくないＩＰパケットを遮断するための装置（ＩＰパケット遮断装置と呼ぶ）があるが、より安価かつ高速にデータの送受信を行いたいというニーズがある。このニーズに応えるため、ＩＰパケット遮断装置に必要な２台のマシン上で動作するＯＳを仮想化し、物理的には１台のマシン上で２つの仮想化したＯＳを動作させ、その間でデータの送受信を行えるようにしたＩＰパケット遮断装置が提案されている。
【０００３】
このような従来の技術の一つとして、資源割り当てシステム、資源割り当て方法およびプログラムが提案されている(例えば、特許文献１）。この技術の概要は以下のとおりである。VMM(Virtual Machine Monitor)にメモリなどの資源割り当ての調停プログラムを組み込んでおく。ゲストＯＳ上のサービスから資源割り当て要求がきたときに、VMMの負荷（その資源の使用量・使用率）にあわせて割り当てる資源の量を決定する。
【０００４】
また、仮想化したＯＳ間で高速にデータの送受信を行う別の技術として、ホスト間通信のためのシステムおよび方法が提案されている(例えば、特許文献２）。この技術は、１つのシステム内で動作している複数のＯＳ間の通信を行わせるための技術であって、複数のＯＳ間の通信を行わせるためにホスト間通信用ゲートウェイというものを組み込む必要がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１６９６７２号公開公報
【特許文献２】特開２００７−１９３８１２号公開公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のようなＩＰパケット遮断装置を実現するためには、仮想化環境Xen（Xen:仮想マシン環境を実現するためのソフトウエア）上でのＯＳ仮想化及びメモリ共有を行う。仮想化したＯＳ（ゲストＯＳ)間はネットワーク接続が存在しないことが前提となる。これは、セキュリティ維持のためであり、要求の待ち受け部分を作ることができない。
【０００７】
かかる従来の方式では、共有させたいページ領域の管理が煩雑であるという問題があった。図１０は、従来の、ネットワーク接続ができないゲストＯＳ間でのページ領域の管理の処理を示す図である。
【０００８】
従来の一般的な方式では、ハイパーバイザ（ＶＭＭ）上に、仮想化ホストＯＳ、仮想化ゲストＯＳ(サーバ）、仮想化ゲストＯＳ（クライアント）が提供されている。仮想化ゲストＯＳ(サーバ）はゲストＯＳ間で共有したい実メモリ領域、グラントテーブル、サーバアプリケーションを有している。また、仮想化ゲストＯＳ（クライアント）はマップ領域、グラントテーブル、クライアントアプリケーションを有している。なお、上記「グラントテーブル」、「ホストＯＳ」、「ゲストＯＳ」、「サーバ」、「クライアント」の意味については後述する。
【０００９】
図１０に示した従来の一般的な方式において、1ページの実メモリ領域をゲストＯＳ間で共有するためには以下の処理を踏む必要があった。
【００１０】
（１）サーバアプリケーションは、共有したい実メモリ領域のページのフレーム番号を取得する。
（２）サーバアプリケーションは取得したフレーム番号をグラントテーブルに登録し、そのフレーム番号に対応するインデックス値を取得する。
（３）サーバアプリケーションは、仮想化ホストＯＳが管理するデータベースに取得したインデックス値を登録させる。
（４）ページを共有する相手先であるゲストＯＳ（クライアント）のクライアントアプリケーションは、データベースよりインデックス値を取得する。
（５）上記（４）に続いて、クライアントアプリケーションはハイパーバイザにマップ要求を出す。
（６）ハイパーバイザは上記マップ要求に応じて、仮想化ゲストＯＳ(サーバ)側のグラントテーブルに対してマップ処理を行う。以上で共有するための処理が終了する。
【００１１】
上記処理において、データベースは共有するページごとに、マッピング許可するゲストＯＳ、グラントテーブルのインデックス値を管理する必要があり、そのため共有に要する処理が煩雑で処理速度が遅くなるという問題があった。
【００１２】
また、従来の方式では、グラントテーブルへのページ領域の登録時に共有先のＯＳを決めうちしなくてはならず、柔軟でないという問題もあった。より詳しく述べると、サーバ側では、自身で管理しているグラントテーブルにクライアントのＩＤ値・提供するメモリのページフレーム番号を事前に登録する。一方、クライアント側では、サーバのＩＤ値とグラントテーブルのインデックス値を使ってメモリマップを要求する。ところが、サーバが確保した実メモリを、複数のクライアントに任意長に分割して提供する容易な手段がない。そのため、共有先のＯＳを決めうちしなくてはならず、柔軟でないという問題があった。
【００１３】
なお、前述の特許文献１に開示された技術は、ゲストＯＳ間のメモリ割り当ての手法ではなく、ホストＯＳ(VMM)とゲストＯＳ間のリソース割り当て方法であり、高負荷のサービスがゲストＯＳ上で動作したときにもシステム全体をサービス不能に陥らせないことが主目的である。このため、本提案の課題を解決することはできない。
【００１４】
また、前述の特許文献２に開示された技術は、直接ホスト同士でメモリを共有してしまうのではなく、ホスト間通信用ゲートウェイを通して仮想デバイスが管理しているメモリ内容のアクセス許可を得るというものであって、仮想化したＯＳ（ゲストＯＳ)間はネットワーク接続が存在しないという本発明の課題の前提条件を満たしていない。
【００１５】
本発明の目的は、仮想化環境にて共有メモリを用いたメモリ共有装置の作成をおこなうことにある。
【課題を解決するための手段】
【００１６】
上記課題を解決する手段として、本発明は以下の特徴を有する。
本発明は、メモリ共有装置として提案される。
このメモリ共有装置は、共有メモリの実体である共有ページと、各共有ページのインデックス値を集めたデータである共有設定ページと、各共有設定ページのページフレーム番号とインデックス値を対応付けて記憶するグラントテーブルとを有するサーバと、グラントテーブルのインデックス値を管理するデータベースを有するホストと、前記共有ページ及び共有設定ページがマップされる共有ページ領域、及び共有設定ページ領域を有するクライアントとを有することを特徴とする。
【００１７】
[本明細書における用語の定義]
１．グラントテーブル
「グラントテーブル」とは、仮想化環境（VMM）上で提供されている機能で、共有させたい実メモリ領域のページフレーム番号および共有先のＯＳ（Operating System,以下「ＯＳ」）を示すＩＤ値を宣言するためのテーブルをいう。共有先のＯＳからは、このテーブルのどの場所に上記宣言が書かれているかを事前に知っておかなくてはならない。
２．ホストＯＳ
「ホストＯＳ」とは、仮想化環境上で動作するＯＳであって、動作中のゲストＯＳの管理・デバイスの管理等を行うＯＳをいう。
３．ゲストＯＳ
「ゲストＯＳ」とは、仮想化環境上で動作するＯＳであって、一般的なアプリケーションを動作させるためのＯＳをいう。
４．サーバ
「サーバ」とは、共有したい実メモリ領域を確保するゲストＯＳをいう。
５．クライアント
「クライアント」とは、共有したいメモリ領域を自身の仮想アドレス空間にマップするゲストＯＳをいう。
【発明の効果】
【００１８】
本発明によれば、共有させたいページの管理を最小限度にすることができる。
【図面の簡単な説明】
【００１９】
【図１】共有設定ページのデータ構成例の一つを示した図
【図２】クライアントを限定した場合の共有設定ページの作成手順の例を示す図
【図３】クライアントを任意にしてもよい場合の共有設定ページの作成手順の例を示す図
【図４】個別設定メモリ領域のデータ構成例を示す図
【図５】メモリ共有装置の構成例を示したブロック図
【図６】図５に示したメモリ共有装置の、クライアントを限定した場合動作例を示すフローチャート
【図７】図５に示したメモリ共有装置の、クライアントを限定した場合動作例を示すフローチャート
【図８】図５に示したメモリ共有装置の、クライアントを限定した場合動作例を示すフローチャート
【図９】ＩＰ分離装置の構成例を示したブロック図
【図１０】従来の、ネットワーク接続ができないゲストＯＳ間でのページ領域の管理の処理を示す図
【発明を実施するための形態】
【００２０】
[１．本発明の主な構成要素]
まず、本発明の一実施形態であるメモリ共有装置の主な構成要素について説明する。
【００２１】
[１．１．共有設定ページ]
本発明は、共有設定ページを有することを特徴の一つとしている。「共有設定ページ」とは、確保した実メモリ（ページ）に関する情報を共有するための機構（情報）である。共有設定ページを用いることにより、共有させたいページ領域のホストＯＳ上での管理を最小限にすることが可能となる。
【００２２】
図１は、共有設定ページのデータ構成例の一つを示した図である。この例では、共有設定ページ１０は、1ページ（４０９６バイト長）のデータで構成される。先頭４バイトには、確保ページ数が格納される。以降の４バイトごとに、該当実ページのグラントテーブルのインデックス値が格納される。ゲストＯＳからまだマップされていない場合には初期値が格納される。次共有設定ページが存在する場合には、当該ページ最終の４バイトには次共有設定ページのインデックス値が格納される。
【００２３】
共有設定ページ１０は、サーバによって作成され、保持される。この共有設定ページ１０の作成手順については後述する。共有設定ページ１０は、メモリを共有するクライアント-サーバ間ごとに別々に作成され、クライアントごとに違う内容が見えることになる。共有設定ページ１０の先頭ページに対するグラントテーブルのインデックス値のみホストＯＳ上のデータベースにて管理される。
【００２４】
クライアントからマップ要求があれば、共有設定ページ１０のインデックス値部分が更新される。なお、共有設定ページ１０への書き込みは実メモリを確保したゲストＯＳしか行わないようにする。
【００２５】
[１．２．共有設定ページの作成手順]
次に、上記共有設定ページ１０の作成手順について説明する。なお、クライアントを限定した場合と、クライアントを任意に設定してよい場合とに分けて説明する。
【００２６】
[１．２．１．クライアントを限定した場合の作成手順]
まず、クライアントを限定した場合の作成手順について説明する。図２は、クライアントを限定した場合の共有設定ページ１０の作成手順の例を示す図である。
【００２７】
前述の通り、共有設定ページ１０は、サーバ１００によって作成される。サーバ１００は共有設定記録部１１０と、共有メモリ用ページ１２０と、それぞれのゲストＯＳに対応する複数の共有設定ページ１０と、グラントテーブル１３０とを有している。なお、共有設定記録部１１０は、サーバ１００外にあるデータベース２００に書き込みを行うことが可能なように接続されている。
【００２８】
サーバは、クライアント（ゲストＯＳ）用の共有設定ページ１０を事前に用意しておく。次に、共有設定記録部１１０は、各共有設定ページ１０のページフレーム番号を取得し、取得したページフレーム番号をグラントテーブル１３０に登録する。グラントテーブル１３０には、それぞれのページフレーム番号とOSの識別情報（ＩＤ）のペアとインデックス値が対応付けされて記憶される。次に、共有設定記録部１１０は、グラントテーブル１３０からインデックス値を取得し、このインデックス値をホストＯＳ上のデータベース２００に登録する。以上で、共有設定ページの作成が終了する。
【００２９】
[１．２．２．クライアントを任意にしてもよい場合の作成手順]
次に、クライアントを任意にしてもよい場合の作成手順について説明する。図３は、クライアントを任意にしてもよい場合の共有設定ページ１０の作成手順の例を示す図である。
【００３０】
前述と同様に、共有設定ページ１０は、サーバ１００によって作成される。サーバ１００は共有設定記録部１１０と、共有メモリ用ページ１２０と、それぞれのゲストＯＳ（クライアント）に対応する複数の共有設定ページ１０と、グラントテーブル１３０と、共有設定取得部１４０を有している。なお、共有設定記録部１１０は、サーバ１００外にあるデータベース２００に書き込みを行うことが可能なように接続されている。また、クライアントとして設定されるゲストＯＳ１６０があり、ゲストＯＳ１６０は、共通設定記録部１５０を有している。共通設定記録部１５０はデータベース２００に書き込みを行うことが可能なように接続されている。
【００３１】
クライアントであるゲストＯＳ１６０の共通設定記録部１５０はメモリ共有要求をデータベース上に登録させる。
【００３２】
サーバ１００では、共有設定取得部１４０にて、ホストＯＳ上データベース２００を定期的に監視する。サーバ１００の共有設定取得部１４０は、共有要求があったことをホストＯＳ上データベース２００から読み取ったら、そのゲスト１６０に対応する共有設定ページ１０を動的に作成する。
【００３３】
次に、サーバ１００の共有設定記録部１１０は、作成された共有設定ページ１０のページフレーム番号を取得し、取得したページフレーム番号をグラントテーブル１３０に登録する。グラントテーブル１３０には、それぞれのページフレーム番号とOSの識別情報（ＩＤ）のペアとインデックス値が対応付けされて記憶される。次に、サーバ１００の共有設定記録部１１０は、グラントテーブル１３０からインデックス値を取得し、このインデックス値をホストＯＳ上のデータベース２００に登録する。以上で、共有設定ページの作成が終了する。
【００３４】
[１．２．個別設定メモリ領域]
本発明は、上記共有設定ページ１０の利用に加えて、個別設定メモリ領域を特徴としてさらに備えていてもよい。
【００３５】
個別設定メモリ領域とは、各クライアントが管理する、マップしたメモリ（ページ）を管理するための情報である。図４に、個別設定メモリ領域のデータ構成例を示す。図４に示すように、個別設定メモリ領域４００は、共通設定ページ１０と一対一対応の関係となるように構成される。個別設定メモリ領域４００は、1ページ（４０９６バイト長）のデータで構成される。先頭４バイトには、確保ページ数が格納される。以降の４バイトごとに、マップ管理用ハンドル値（仮想化環境への要求があるときに使用する）及びマップ先頭仮想アドレス（マップ解除時に使用する）が格納される。これにより、同一ゲストＯＳから複数個共有メモリを要求しても実現可能となり、メモリ共有先ＯＳを柔軟に決められるように管理できることとなる。
【００３６】
[２．メモリ共有装置の構成例]
次に、本発明の一実施形態である、メモリ共有装置の構成例について説明する。図５は、本発明の一実施形態である、メモリ共有装置の構成例を示したブロック図である。
【００３７】
メモリ共有装置は、例えばコンピュータ、ワークステーションなどの情報処理装置によって実現される装置である。この情報処理装置は、演算処理装置（ＣＰＵ）、主メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、入出力装置（Ｉ／Ｏ）、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。メモリ共有装置５００は、第１通信装置１と、第２通信装置２と、管理装置３とを有している。第１通信装置１はゲストＯＳ(サーバ１００）に相当する。第２通信装置２はゲストＯＳ(クライアント１６０）に相当し、管理装置３は、ホストＯＳに相当する。
【００３８】
第１通信装置１並びに第２通信装置２は、ともに共有メモリを用いたデータ送受信を行う装置として機能する。第１通信装置１並びに第２通信装置２はそれぞれ複数台あってよい。第１通信装置１並びに第２通信装置２は、管理装置３上で動作するように仮想化されている。管理装置３は、第１通信装置１並びに第２通信装置２が使用するリソース管理を行う装置である。
【００３９】
第１通信装置１並びに第２通信装置２、及び管理装置３は、一台の情報処理装置(コンピュータ、ワークステーション、移動体通信装置など）上に実現されるものであってよい。
【００４０】
[２．１．第１通信装置]
次に、第１通信装置１の構成について説明する。第１通信装置１は、共有ページ１１、共有設定ページ１２、メモリ取得部１３、メモリ共有状態更新部１４、メモリ共有許可表１５、共有設定取得部１６、共有設定記録部１７を有している。なお、上記の各構成要素は、ＣＰＵ,プログラム、メモリなどの記憶装置によって実現される機能に相当するものであって、実際にこれら各構成要素に相当する回路、機器が情報処理装置内に装備されていることを要求するものではない（第２通信装置２、管理装置３においても同様）。
【００４１】
メモリ取得部１３は、共有ページ１１及び共有設定ページ１２を読み取り可能に接続されている。メモリ共有状態更新部１４は、共有設定ページ１２、メモリ取得部１３、メモリ共有許可表１５、共有設定取得部１６、及び共有設定記録部１７に接続されている。なお、ここで「接続」とは、データや命令等をやりとりできる関係にあることをいい、物理的に接続されていることに限定されることはない（第２通信装置２、管理装置３の説明においても同様）。
【００４２】
また、共有設定取得部１６、共有設定記録部１７は後述する共有設定蓄積部３１に接続されている。メモリ共有許可表１５は後述するメモリマッピング実施部３２に接続されている。
【００４３】
上記各構成要素は、以下の機能をそれぞれ有する。  
共有ページ１１は、第１通信装置１及び第２通信装置２間でのデータ送受信に利用する共有メモリの実体であって、前述の共有メモリ用ページ１２０に相当する。
共有設定ページ１２は、第１通信装置１及び第２通信装置２間で共有ページ１１を共有しあうために必要である、メモリ共有許可表のインデックス値を集めたデータであり、前述の共有設定ページ１０に相当する。
メモリ取得部１３は、実メモリを取得する側の通信装置にて動作し、共有ページ１１、共有設定ページ１２を確保し、そのページフレーム番号を取得する。
メモリ共有状態更新部１４は、メモリ取得部１３で取得した共有ページ１１および共有設定ページ１２のページフレーム番号と、共有を許可する第２通信装置２のＩＤ値をメモリ共有許可表１５に登録する。
メモリ共有許可表１５は、第１通信装置１内のページのうち、どのページをどの通信装置へ向けて共有可能にするかを管理した表(データ)であって、前述のグラントテーブル１３に相当する。なお、メモリ共有許可表１５は、管理装置３によって用意されたものが使用される。
【００４４】
共有設定取得部１６は、後述する共有設定蓄積部３１に登録された、第２通信装置２に関する情報を定期的に取得する機能を有する。共有設定取得部１６は、前述の共有設定取得部１６０に相当する。
【００４５】
共有設定記録部１７は、共有設定ページ１２に対するメモリ共有許可表１５のインデックス値を共有設定蓄積部３１に書き込む機能を有する。
【００４６】
[２．２．第２通信装置２]
次に、第２通信装置２の構成要素について説明する。第２通信装置２は、共有ページ領域２１、共有設定ページ領域２２、メモリマップ領域取得部２３、メモリマッピング要求部２４、個別設定メモリ領域２５、共有設定取得部２６、及び共有設定記録部２７を有している。メモリマップ領域取得部２３は、共有ページ領域２１及び共有設定ページ領域２２に読み取り可能に接続されている。メモリマッピング要求部２４は、メモリマップ領域取得部２３、個別設定メモリ領域２５、及び共有設定取得部２６に接続されている。
【００４７】
また、メモリマッピング要求部２４、共有設定取得部２６、及び共有設定記録部２７は後述する共有設定蓄積部３１に接続されている。また、共有ページ領域２１、共有設定ページ領域２２は、後述するメモリマッピング実施部３２に接続されている。
【００４８】
以下に、上記各構成要素の機能を述べる。  
共有ページ領域２１、共有設定ページ領域２２はそれぞれ、第１通信装置１の共有ページ１１、共有設定ページ１２を第２通信装置２のメモリ空間にマップするための領域である。共有処理が終わると、第２通信装置２において共有ページ１１、共有設定ページ１２と同じ内容を読み書きできるようになる。
【００４９】
メモリマップ領域取得部２３は、共有ページ領域２１、共有設定ページ領域２２をマップするためのメモリ空間を取得し、その仮想アドレスを取得する。
【００５０】
メモリマッピング要求部２４は、メモリマッピング実施部３２メモリマッピングの実行要求を出す機能を有する。
【００５１】
個別設定メモリ領域２５は、先の[１．２．個別設定メモリ領域]の項で述べた、各クライアントが管理する、マップしたメモリ（ページ）を管理するための情報（データ）である。個別設定メモリ領域２５は、メモリマッピング要求部２４により共有ページ１１を共有ページ領域２１にマップできた際、その仮想アドレス等を記録する。
【００５２】
共有設定取得部２６（本発明の第２の共有設定取得部に相当する）は、共有設定蓄積部３１のデータを読み出す機能を有する。
【００５３】
共有設定記録部２７（本発明の第２の共有設定記録部に相当する）は、第２通信装置２に関する情報を共有設定蓄積部３１に書き込む機能を有する。
【００５４】
[２．３．管理装置３]
次に、管理装置３の構成要素について説明する。管理装置３は、共有設定蓄積部３１と、メモリマッピング実施部３２とを有している。
【００５５】
共有設定蓄積部３１は、共有設定ページ１２に対するメモリ共有許可表１５のインデックス値などを蓄積する機能を有し、前述のデータベース２００に相当する。
【００５６】
メモリマッピング実施部３２は、第１通信装置１、第２通信装置２間のメモリマッピングを実際に行う機能を有する。管理装置３の仮想化環境によって提供される。
【００５７】
[３．メモリ共有装置の動作例]
次に、上記の構成を有するメモリ共有装置の動作例について説明する。
【００５８】
[３．１．クライアントを限定した場合の作成手順]
図６は、図５に示したメモリ共有装置の、クライアントを限定した場合動作例を示すフローチャートである。以下、図５のブロック図及び図６を参照しながら、クライアントを限定した場合のメモリ共有装置の動作例を説明する。
【００５９】
まず初めに、第１通信装置１のメモリ取得部１３は、メモリ(図略)上に共有ページ１１及び共有設定ページ１２のページを確保する（ステップＳ１）。ページが確保されると、メモリ共有状態更新部１４は、メモリ共有許可表１５へ共有設定ページの登録を行う（ステップＳ２）。メモリ共有許可表１５への登録が終了すると、共有設定記録部１７は、管理装置３の共有設定蓄積部３１に、メモリ共有する通信装置(この例では、第１通信装置１)の情報、及び共有設定ページの情報(インデックス値)を書き込みさせる（Ｓ３）。
【００６０】
次に、第２通信装置２の共有設定記録部２７は、管理装置３の共有設定蓄積部３１に、その通信装置の情報を書き込む（Ｓ４）。次に、第２通信装置２の共有設定取得部２６は、共有設定蓄積部３１からステップＳ３にて書き込まれた共有設定ページの情報を取得する（Ｓ５）。次に、メモリマップ領域取得部２３は、共有設定ページ領域２２の領域を確保する（Ｓ６）。領域を確保した後、メモリマップ領域取得部２３はメモリマッピング要求部２４にメモリマップ要求を出す（Ｓ７）。メモリマップ要求を受けたメモリマッピング要求部２４は、メモリマッピング実施部３２にメモリマップ要求を送る（Ｓ８）。
【００６１】
メモリマップ要求を受けたメモリマッピング実施部３２は、メモリ共有許可表１５を参照し（Ｓ９）、メモリ共有許可表１５の内容に応じて、共有ページ領域２１、共有設定ページ領域２２へのメモリマッピングを行う（Ｓ１０）。以上で、第１通信装置１、第２通信装置２間のメモリ共有処理が終了する。
【００６２】
[３．２．クライアントを任意にしてもよい場合の動作例]
図７、図８は、図５に示したメモリ共有装置の、クライアントを限定した場合動作例を示すフローチャートである。以下、図５のブロック図及び図７、図８を参照しながら、クライアントを任意にしてもよい場合のメモリ共有装置の動作例を説明する。
【００６３】
まず、第２通信装置２のメモリマップ領域取得部２３は、共有設定ページ領域２２から設定情報を読み込む（Ｓ１１）。次に、メモリマップ領域取得部２３は、共有設定ページ領域２２の設定情報に応じて、共有ページ領域２１の領域を確保する（Ｓ１２）。次に、メモリマップ領域取得部２３は、メモリマッピング要求部２４にメモリマップ要求を出す（Ｓ１３）。メモリマップ要求を受けたメモリマッピング要求部２４は、管理装置３の共有設定蓄積部３１にメモリマップ要求を送る（Ｓ１４）。メモリマップ要求は共有設定蓄積部３１に登録される。
【００６４】
第１通信装置１の共有設定取得部１６は、定期的に共有設定蓄積部３１を監視して、自分に対するマップ要求が登録されていないかどうかを調べる。自分に対するマップ要求が登録されている場合は、共有設定取得部１６は共有設定蓄積部３１はこのマップ要求にかかる共有設定を読み込む（Ｓ１５）。共有設定を読み込んだ共有設定取得部１６は、メモリ共有状態更新部１４に通知する。通知を受けたメモリ共有状態更新部１４は、共有設定ページ１２を更新する（対応する共有設定ページの追加；Ｓ１６）。また、メモリ共有状態更新部１４は、更新された共有設定ページの内容に応じてメモリ共有許可表１５の更新を行う(ページフレーム番号、インデックス値の追加；Ｓ１７)。
【００６５】
次に、第２通信装置２のメモリマップ領域取得部２３は、共有設定ページ領域２２から設定情報を読み込む（Ｓ１８）。この時点では共有ページ領域２１、共有設定ページ領域のマッピングは完了していない。次に、メモリマップ領域取得部２３は、メモリマッピング要求部２４にメモリマップ要求を出す（Ｓ１９）。メモリマップ要求を受けたメモリマッピング要求部２４は、管理装置３のメモリマッピング実施部３２にメモリマップ要求を送る（Ｓ２０）。
【００６６】
メモリマップ要求を受けたメモリマッピング実施部３２は、メモリ共有許可表１５を参照し（Ｓ２１）、メモリ共有許可表１５の内容に応じて、共有ページ領域２１、共有設定ページ領域２２へのメモリマッピングを行う（Ｓ２２）。さらに、メモリマッピング実施部３２は、メモリ許可表１５の内容に応じて、個別設定メモリ領域に格納させる情報（個別設定と呼ぶ）を生成し、これをメモリマッピング要求部２４に返却する（Ｓ２３）。個別設定を受けたメモリマッピング要求部２４は、個別設定の内容に応じて個別設定メモリ領域２５を更新する（Ｓ２４）。これにより、個別設定メモリ領域２５には共有設定ページ１２と一対一対応となる個別設定メモリ領域が作成される。以上で、クライアントを任意にしてもよい場合の第１通信装置１、第２通信装置２間のメモリ共有処理は終了する。
【００６７】
[４．ＩＰ分離装置]
本実施形態にかかるメモリ共有装置は、仮想化環境にて共有メモリを用いたＩＰ分離装置（ＩＰ(Internet Protocol)ネットワークを切断し、通したくないＩＰパケットを遮断するための装置）としても使用可能である。
【００６８】
本実施形態にかかるＩＰ分離装置は、共有メモリを使用させることにより、２つのゲストＯＳ間を安全な方法でＩＰ接続する。いったんゲストＯＳ間でＩＰ以外のデータパケットに変換＆フィルタリングすることが可能となる。また、２つのゲストＯＳ間の通信を監視・不正アクセスを検知するゲストＯＳをもう一つ作成するようにしてもよい。
【００６９】
図９は、本実施形態にかかるＩＰ分離装置の構成例を示したブロック図である。なお、基本的な構成は図３に示す装置と同様であり、同一の構成要素については同一の参照符号を付した。ゲストＯＳ（サーバ）１００はサーバ側ＩＰ分離装置アプリケーション３２０と、共有メモリ用ページ１２０と、それぞれのゲストＯＳに対応する複数の共有設定ページ１０と、グラントテーブル１３０とを有している。サーバ１００外にあるデータベース２００に書き込みを行うことが可能なように接続されている。また、クライアントとして設定されるゲストＯＳ１６０があり、ゲストＯＳ１６０は、クライアント側ＩＰ分離装置アプリケーション３１０と、共有メモリ用ページ１２０と、共有設定ページ１０を有している。ゲストＯＳ１００、１６０を管理するＯＳであるホストＯＳ１７０は、データベース２００を有している。
【００７０】
サーバ側ＩＰ分離装置アプリケーション３２０は、図５に示したメモリ取得部１３、メモリ共有状態更新部１４、共有設定取得部１６、共有設定記録部１７に相当する構成要素である。サーバ側ＩＰ分離装置アプリケーション３２０は内部セキュアＬＡＮと通信可能に接続されている。クライアント側ＩＰ分離装置アプリケーション３１０は、メモリマップ領域取得部２３、メモリマッピング要求部２４、メモリマッピング要求部２４、個別設定メモリ領域２５、共有設定取得部２６、及び共有設定記録部２７に相当する構成要素である。クライアント側ＩＰ分離装置アプリケーション３１０は、外部インターネットに通信可能に接続されている。
【００７１】
サーバ側ＩＰ分離装置アプリケーション３２０は、例えばＩＰパケットのＩＰヘッダを除いたものを共有メモリ用ページに書き込むことができる機能をさらに有しており、クライアント側ＩＰ分離装置アプリケーション３１０は本実施形態のメモリ共有装置としての機能により、共有メモリの内容を参照することによって、ＩＰヘッダを有さない通信パケットとして取得できる。これにより、本発明の一形態であるＩＰ分離装置９００は、内部セキュアＬＡＮのようなネットワークと、外部インターネットのような別のネットワークを、特定のプロトコルに基づく通信パケットを直接通信させることなく、ネットワーク間接続を行うことを可能とする。
【００７２】
[５．まとめ]
本実施態様によれば、共有させたいページの管理を最小限度にすることができる。管理装置３の共有設定蓄積部３１に、前もって登録すべきページは「共有設定ページ１２の先頭」のみで足りるからである。
【００７３】
また、本実施態様によれば、メモリ共有先のＯＳが２つ以上ある場合でも、事前の取り決めを最小限にしてそれぞれに共有させることが可能となる。
【００７４】
一方、従来の手法では、メモリ共有先のＯＳを示すＩＤ値を事前にグラントテーブルに登録しなければならす、共有するメモリ量が常に決めうちとなり、柔軟性がなかった。
【００７５】
上述した実施の形態は、本発明の好適な具体例であるから、技術的に好ましい種々の限定が付されているが、本発明の趣旨を逸脱しない範囲であれば、適宜組合わせ及び変更することができることはいうまでもない。
【符号の説明】
【００７６】
１…第１通信装置；  ２…第２通信装置；  ３…管理装置
１１…共有ページ；  １２…共有設定ページ；  １３…メモリ取得部；  １４…メモリ共有状態更新部；  １５…メモリ共有許可表；  １６…共有設定取得部；  １７…共有設定記録部；  ２１…共有ページ領域；  ２２…共有設定ページ領域；  ２３…メモリマップ領域取得部；  ２４…メモリマッピング要求部；；  ２５…個別設定メモリ領域；  ２６…共有設定取得部；  ２７…共有設定記録部
【図１】
0005457916.tif 000002
【図２】
0005457916.tif 000003
【図３】
0005457916.tif 000004
【図４】
0005457916.tif 000005
【図５】
0005457916.tif 000006
【図６】
0005457916.tif 000007
【図７】
0005457916.tif 000008
【図８】
0005457916.tif 000009
【図９】
0005457916.tif 000010
【図１０】
0005457916.tif 000011