(57)【要約】  複数のＯＳが稼働する計算機であって、計算機は複数の記憶媒体を有するストレージ装置と接続し、複数のＯＳは、ストレージ装置に対するアクセスを制御する第１のＯＳ、及び仮想計算機を生成する第２のＯＳを含み、第１のＯＳ及び第２のＯＳには、論理的に分割された計算機リソースが割り当てられ、仮想計算機上では、アプリケーションを実行する第３のＯＳが稼動し、第２のＯＳは、アプリケーションと第１のＯＳとの間で通信するために用いられるメモリ領域である共有領域を管理する共有領域管理部を有し、第３のＯＳは、アプリケーションからの要求に応じて第２のＯＳに対して共有領域の確保を要求し、ゲスト仮想アドレス空間に確保された共有領域をマッピングするエージェントを有する。
2017006458.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムが稼働する計算機であって、
前記計算機は、計算機リソースとして、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるＩ／Ｏデバイスを備え、
前記計算機は、複数の記憶媒体を有するストレージ装置と接続し、
前記複数のオペレーティングシステムは、前記ストレージ装置に対するアクセスを制御する第１のオペレーティングシステム、及び少なくとも一つの仮想計算機を生成する第２のオペレーティングシステムを含み、
前記第１のオペレーティングシステム及び前記第２のオペレーティングシステムには、分割された前記計算機リソースが割り当てられ、
前記少なくとも一つの仮想計算機上では、アプリケーションを実行する第３のオペレーティングシステムが稼動し、
前記第２のオペレーティングシステムは、前記アプリケーションと前記第１のオペレーティングシステムとの間で通信するために用いられるメモリ領域である共有領域を管理する共有領域管理部を有し、
前記第３のオペレーティングシステムは、前記アプリケーションからの要求に応じて前記第２のオペレーティングシステムに対して前記共有領域の確保を要求し、前記アプリケーションに割り当てられる仮想的なメモリの位置を示すゲスト仮想アドレス空間に前記確保された共有領域をマッピングするエージェントを有することを特徴とする計算機。
【請求項２】
請求項１に記載の計算機であって、
前記第２のオペレーティングシステムは、前記共有領域を用いた前記第１のオペレーティングシステムと前記アプリケーションとの間の通信を制御する処理部を有し、
前記共有領域管理部は、
前記エージェントから前記共有領域の確保要求を受け付けた場合、所定のサイズの前記共有領域を確保し、
前記仮想計算機に含まれる論理メモリの物理的な位置を示すゲスト物理アドレス空間における、前記確保された共有領域にアクセスするための第１のアドレスを前記エージェントに通知し、
前記エージェントは、
前記第１のアドレスを用いて、前記ゲスト仮想アドレス空間に前記確保された共有領域をマッピングし、
前記ゲスト仮想アドレス空間にマッピングされた共有領域にアクセスするための第２のアドレスを前記アプリケーションに通知し、
前記アプリケーションは、前記第２のアドレスを受け付けた後、前記エージェントを介して前記処理部に前記共有領域を用いた処理の開始要求を送信し、
前記処理部は、
前記共有領域管理部から、前記第２のオペレーティングシステムが管理するホスト物理アドレス空間における、前記確保された共有領域にアクセスするための第３のアドレスを取得し、
前記第１のオペレーティングシステムに前記第３のアドレスを通知し、
前記第１のオペレーティングシステムは、前記第３のアドレスを用いて前記アプリケーションと通信することによって、前記共有領域を用いた処理を実行することを特徴とする計算機。
【請求項３】
請求項２に記載の計算機であって、
前記第２のオペレーティングシステムは、前記仮想計算機の起動時に、当該仮想計算機に割り当てられるメモリ領域の一部を前記共有領域として割り当てることを特徴とする計算機。
【請求項４】
請求項３に記載の計算機であって、
前記共有領域管理部は、
前記共有領域を複数のブロックに分割して管理し、
前記エージェントから前記共有領域の確保要求を受け付けた場合、少なくとも一つのブロックを前記アプリケーションに提供する共有領域として確保することを特徴とする計算機。
【請求項５】
複数のオペレーティングシステムが稼働する計算機におけるメモリ領域管理方法であって、
前記計算機は、計算機リソースとして、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるＩ／Ｏデバイスを備え、
前記計算機は、複数の記憶媒体を有するストレージ装置と接続し、
前記複数のオペレーティングシステムは、前記ストレージ装置に対するアクセスを制御する第１のオペレーティングシステム、及び少なくとも一つの仮想計算機を生成する第２のオペレーティングシステムを含み、
前記第１のオペレーティングシステム及び前記第２のオペレーティングシステムには、分割された前記計算機リソースが割り当てられ、
前記少なくとも一つの仮想計算機上では、アプリケーションを実行する第３のオペレーティングシステムが稼動し、
前記メモリ領域管理方法は、
前記アプリケーションが、前記第３のオペレーティングシステムを介して前記アプリケーションと前記第１のオペレーティングシステムとの間で通信するために用いるメモリ領域である共有領域の確保要求を発行する第１のステップと、
前記第２のオペレーティングシステムが、前記共有領域の確保要求に基づいて、前記共有領域を確保する第２のステップと、
前記第３のオペレーティングシステムが、前記アプリケーションに割り当てられる仮想的なメモリの位置を示すゲスト仮想アドレス空間に前記確保された共有領域をマッピングする第３のステップと、を含むことを特徴とするメモリ領域管理方法。
【請求項６】
請求項５に記載のメモリ領域管理方法であって、
前記第２のステップは、
所定サイズの前記共有領域を確保するステップと、
前記仮想計算機に含まれる論理メモリの物理的な位置を示すゲスト物理アドレス空間における、前記確保された共有領域にアクセスするための第１のアドレスを前記アプリケーションに通知するステップと、を含み、
前記第３のステップは、
前記第１のアドレスを用いて、前記ゲスト仮想アドレス空間に前記確保された共有領域をマッピングするステップと、
前記ゲスト仮想アドレス空間にマッピングされた共有領域にアクセスするための第２のアドレスを前記アプリケーションに通知するステップと、を含み、
前記メモリ領域管理方法は、
前記アプリケーションが、前記第２のアドレスを受け付けた後、前記第３のオペレーティングシステムを介して前記第２のオペレーティングシステムに前記共有領域を用いた処理の開始要求を送信するステップと、
前記第２のオペレーティングシステムが、前記処理の開始要求を受け付けた場合、前記第２のオペレーティングシステムが管理するホスト物理アドレス空間における、前記確保された共有領域にアクセスするための第３のアドレスを取得するステップと、
前記第２のオペレーティングシステムが、前記第１のオペレーティングシステムに前記第３のアドレスを通知するステップと、
前記第１のオペレーティングシステムが、前記第３のアドレスを用いて前記アプリケーションと通信することによって、前記共有領域を用いた処理を実行するステップと、を含むことを特徴とするメモリ領域管理方法。
【請求項７】
請求項６に記載のメモリ領域管理方法であって、
前記第２のオペレーティングシステムが、前記仮想計算機の起動時に、当該仮想計算機に割り当てられるメモリ領域の一部を前記共有領域として割り当てるステップを含むことを特徴とするメモリ領域管理方法。
【請求項８】
請求項７に記載のメモリ領域管理方法であって、
前記第２のオペレーティングシステムが、前記共有領域を複数のブロックに分割して管理するステップを含み、
前記第２のステップでは、少なくとも一つのブロックを前記アプリケーションに提供する共有領域として確保することを特徴とするメモリ領域管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のホストＯＳが稼働する計算機システムにおいて、ホストＯＳと、当該ホストＯＳ又は他のホストＯＳが管理するゲストＯＳとが共有するメモリ領域の制御技術に関する。
【背景技術】
【０００２】
近年、物理計算機上のハードウェアリソースを有効に活用するために、一台の物理計算機上で二つ以上のＯＳ（オペレーティングシステム）を起動する技術が注目されている（例えば、特許文献１及び特許文献２参照）。【０００３】
特許文献１には、「マルチオペレーティングシステム計算機は、優先度が設定された複数のタスクを優先度順に実行する第１のＯＳ（オペレーティングシステム）と、前記第１のＯＳと異なる第２のＯＳとを動作ＯＳとして交互に動作させるマルチオペレーティングシステム計算機であって、前記第１のＯＳが動作ＯＳとして動作しているときに前記複数のタスクのうち所定の優先度が設定された所定のタスクであって動作ＯＳの切替え契機を特定するための切替え契機タスクとして用いられるタスクが実行された場合に、動作ＯＳを前記第１のＯＳから前記第２のＯＳに切り替えるＯＳ切替え部」を備えることが記載されている。【０００４】
また、特許文献２には、「第１のＯＳと第２のＯＳとの少なくとも２つのＯＳを起動するマルチＯＳ起動装置において、（１）メモリ領域を有し、前記メモリ領域に対してメモリ空間が定義される１次記憶部と、（２）セカンドブートローダと、前記第２のＯＳとを記憶する２次記憶部と、（３）ＣＰＵに対する制御情報を示すコンテキストであって前記第１のＯＳ用のコンテキストである第１のコンテキストで動作する前記第１のＯＳのもとで動作するファーストブートローダを前記第１のコンテキストで動作中の前記第１のＯＳのもとで動作させることにより、前記第１のＯＳが管理する第１のメモリ空間として前記第１のコンテキストにより前記１次記憶装置に対して定義された前記１次記憶部のメモリ領域に前記２次記憶部から前記セカンドブートローダと前記第２のＯＳとを前記ファーストブートローダにロードさせるＯＳ実行部と、（４）前記第１のメモリ空間として定義されたメモリ領域にロードされた前記セカンドブートローダを前記第１のコンテキストで動作中の前記第１のＯＳのもとで実行することにより前記第２のＯＳが管理する第２のメモリ空間として定義されるメモリ領域と前記セカンドブートローダ及び前記第２のＯＳがロードされたメモリ領域とを含む第３のメモリ空間を前記１次記憶部に対して定義する前記セカンドブートローダ用のコンテキストを前記セカンドブートローダに生成させると共に生成された前記セカンドブートローダ用のコンテキストへ前記第１のコンテキストから切り替えさせ、前記セカンドブートローダ用のコンテキストのもとで前記セカンドブートローダを実行することにより前記第３のメモリ空間に含まれる前記第２のメモリ空間として定義された前記１次記憶部のメモリ領域に前記ファーストブートローダによって前記１次記憶部のメモリ領域にロードされた前記第２のＯＳを前記セカンドブートローダにロードさせると共に前記第２のＯＳ用のコンテキストを生成させ、生成された前記第２のＯＳ用のコンテキストへ前記セカンドブートローダ用のコンテキストから切り替えさせ、前記第２のＯＳ用のコンテキストのもとで前記セカンドブートローダに前記第２のＯＳの起動を実行させるローダ実行部と」を備えることが記載されている。【０００５】
このマルチＯＳ技術を利用し、例えば、第１のＯＳ（ホストＯＳ１）としてホストＯＳ１を搭載し、第２のＯＳ（ホストＯＳ２）としてハイパバイザを搭載し、さらにハイパバイザ上の複数の論理計算機上のＯＳ（ゲストＯＳ１〜ゲストＯＳｎ）としてサーバ制御ＯＳを搭載することによって、省スペース化・低価格化が期待できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−１４９３８５号公報
【特許文献２】国際公開第２００９／１１３３９４号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一つの物理計算機と不揮発性の記憶媒体とが接続され、物理計算機に不揮発性の記憶媒体へのアクセスを制御するホストＯＳ１及び複数のゲストＯＳを管理するホストＯＳ２を搭載する計算機システムを一例にして考える。【０００８】
各ゲストＯＳはＩ／Ｏ処理の応答性能を高めるために、データをキャッシングするためのメモリを設けている。メモリは揮発性であるため、不意の電源遮断が発生した場合にデータが失われないように、ホストＯＳ１又はホストＯＳ２は、不揮発性の記憶媒体にデータを退避する。電源が復旧し、ゲストＯＳが再起動する場合、退避されたデータをメモリに戻すためには、ゲストＯＳ上のアプリケーションは、不揮発性の記憶媒体にアクセス可能なホストＯＳ１との間で通信を行いホストＯＳ１が出力したデータをメモリ上に戻す必要がある。【０００９】
前述したような障害復旧を実現するためには、ホストＯＳ１とゲストＯＳ上のアプリケーションとが通信するためのメモリ領域（共有領域）を確保する必要がある。【００１０】
独立した計算機リソースを有する複数のホストＯＳが稼働する計算機において、一つのホストＯＳが管理する仮想計算機と、当該ホストＯＳ又は他のホストＯＳとの間の通信制御に用いるメモリ領域を確保する計算機、及びメモリ領域の管理方法を提供する。
【課題を解決するための手段】
【００１１】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数のオペレーティングシステムが稼働する計算機であって、前記計算機は、計算機リソースとして、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるＩ／Ｏデバイスを備え、前記計算機は、複数の記憶媒体を有するストレージ装置と接続し、前記複数のオペレーティングシステムは、前記ストレージ装置に対するアクセスを制御する第１のオペレーティングシステム、及び少なくとも一つの仮想計算機を生成する第２のオペレーティングシステムを含み、前記第１のオペレーティングシステム及び前記第２のオペレーティングシステムには、分割された前記計算機リソースが割り当てられ、前記少なくとも一つの仮想計算機上では、アプリケーションを実行する第３のオペレーティングシステムが稼動し、前記第２のオペレーティングシステムは、前記アプリケーションと前記第１のオペレーティングシステムとの間で通信するために用いられるメモリ領域である共有領域を管理する共有領域管理部を有し、前記第３のオペレーティングシステムは、前記アプリケーションからの要求に応じて前記第２のオペレーティングシステムに対して前記共有領域の確保を要求し、前記アプリケーションに割り当てられる仮想的なメモリの位置を示すゲスト仮想アドレス空間に前記確保された共有領域をマッピングするエージェントを有することを特徴とする。
【発明の効果】
【００１２】
複数のオペレーティングシステム間でメモリ領域を共有し、当該メモリ領域を介してデータの送受信が可能となる。前述した以外の課題、構成及び効果は、以下の実施形態の説明によって明らかにされる。
【図面の簡単な説明】
【００１３】
【図１】実施例１の計算機システムのハードウェア構成の一例を示す図である。
【図２】実施例１の計算機システムの論理構成の一例を示す図である。
【図３】実施例１の管理情報の一例を示す図である。
【図４】実施例１の共有領域のマッピング関係及び構造を示す図である。
【図５Ａ】実施例１の計算機システムの共有領域を用いた処理の流れを示すシーケンス図である。
【図５Ｂ】実施例１の計算機システムの共有領域を用いた処理の流れを示すシーケンス図である。
【図６】実施例１のエージェントが実行するマッピング処理の一例を説明するフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を用いて実施例を説明する。
【実施例１】
【００１５】
図１は、実施例１の計算機システムのハードウェア構成の一例を示す図である。【００１６】
計算機システムは、物理計算機１０及び外部ストレージ装置２０から構成される。物理計算機１０は、外部ストレージ装置２０と直接、又は、ネットワークを介して接続される。ネットワークとしては、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）で構成されたＳＡＮ等が考えられる。【００１７】
物理計算機１０は、プロセッサ１１０、ＲＡＭ１２０、チップセット１３０、ＦＰＧＡ１４０、内部ストレージデバイス１５０、電源部１６０、及びＩ／Ｏデバイス１７０を備える。【００１８】
プロセッサ１１０は、ＲＡＭ１２０に格納されるプログラム（命令）を読み出し、読み出されたプログラム（命令）を実行する。プロセッサ１１０は、複数のＣＰＵコア１１１を有する。プロセッサ１１０がプログラムを実行することによって、ＯＳ等の機能が実現される。以下、プログラムを主体に処理を説明する場合、当該プログラムがプロセッサ１１０によって実行されていることを示す。【００１９】
ＲＡＭ１２０は、プロセッサ１１０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。また、ＲＡＭ１２０は、各プログラムのワークエリアを含む。【００２０】
チップセット１３０は、プロセッサ１１０、ＲＡＭ１２０、及びＩ／Ｏデバイス１７０間のデータの入出力を管理する。ＦＰＧＡ１４０は、所定の演算を行う回路である。本実施例では、ＦＰＧＡ１４０は、データ転送等を行う。なお、ＦＰＧＡ１４０は、ＲＡＭ１４１を含む。【００２１】
内部ストレージデバイス１５０は、不揮発性の記憶媒体であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）又はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が考えられる。本実施例では、不意に電源が遮断した時に、ＲＡＭ１４１に格納されるデータが内部ストレージデバイス１５０に格納される。なお、ＲＡＭ１１２０に格納されるデータが内部ストレージデバイス１５０に格納されてもよい。【００２２】
電源部１６０は、物理計算機１０の電源を制御する。Ｉ／Ｏデバイス１７０は、外部装置と接続することによって、外部から情報を入力し、外部に情報を出力するためのデバイスである。Ｉ／Ｏデバイス１７０は、例えば、ＮＩＣ、ＦＣ  ＨＢＡ等が考えられる。【００２３】
外部ストレージ装置２０は、ＯＳのプログラム、ＯＳ上で動作する各種アプリケーションのプログラムコード、及びアプリケーションが扱うデータ等を格納する。外部ストレージ装置２０は、複数の記憶媒体を備える。本実施例では、外部ストレージ装置２０は、記憶媒体として四つのＨＤＤ１９０を備える。なお、物理計算機１０は、複数の記憶媒体、及びコントローラを備えるストレージシステムと接続されてもよい。【００２４】
図２は、実施例１の計算機システムの論理構成の一例を示す図である。【００２５】
本実施例の計算機システムでは、物理計算機１０の計算機リソースが分割され、ホストＯＳ１（２００）及びホストＯＳ２（２１０）のそれぞれに分割された計算機リソースが割り当てられる。計算機リソースには、ＲＡＭ１２０が含まれる。本実施例では、ＲＡＭ１２０のメモリ領域（記憶領域）が二つに分割され、ホストＯＳ１（２００）及びホストＯＳ２（２１０）のそれぞれに分割されたメモリ領域が割り当てられる。以下の説明では、分割されたメモリ領域を分割ＲＡＭとも記載する。【００２６】
ホストＯＳ１（２００）に割り当てられた計算機リソースは、ホストＯＳ１（２００）によって占有的に使用され、ホストＯＳ２（２１０）に割り当てられた計算機リソースは、ホストＯＳ２（２１０）によって占有的に使用される。【００２７】
本実施例のホストＯＳ１（２００）は、ストレージ制御ＯＳに対応する。ストレージ制御ＯＳは、外部ストレージ装置２０に対する読出処理及び書込処理を制御する。ホストＯＳ１（２００）は、ゲストＯＳ２３０と内部ストレージデバイス１５０との間のバックアップ処理及びリストア処理を実行する。【００２８】
本実施例のホストＯＳ２（２１０）は、ハイパバイザ等のＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）に対応する。ＶＭＭは、仮想マシン技術を用いて、ホストＯＳ２（２１０）に割り当てられた計算機リソースの一部を用いて一つ以上の仮想計算機（ＬＰＡＲ２２０）を生成し、生成されたＬＰＡＲ２２０上でゲストＯＳ２３０を起動させる。ゲストＯＳ２３０では、さらに、所定の処理を行うアプリケーション２３２が稼働する。【００２９】
ホストＯＳ２（２１０）は、ホストＯＳ２（２１０）に割り当てられた分割ＲＡＭのホスト物理アドレス空間と、ＬＰＡＲ２２０に割り当てられた論理ＲＡＭのゲスト物理アドレス空間との間のマッピングを管理する。【００３０】
分割ＲＡＭのホスト物理アドレス空間は、分割ＲＡＭの物理的な位置を示すアドレス空間である。論理ＲＡＭのゲスト物理アドレス空間は、論理ＲＡＭの物理的な位置を示すアドレス空間である。なお、ホストＯＳ１（２００）も、自身に割り当てられた分割ＲＡＭのホスト物理アドレスを管理する。【００３１】
ゲストＯＳ２３０は、論理ＲＡＭのゲスト物理アドレス空間とゲスト仮想アドレス空間との間のマッピングを管理する。ここで、ゲスト仮想アドレス空間は、ゲストＯＳ２３０がアプリケーション２３２に割り当てられる仮想的なＲＡＭの位置を示すアドレス空間である。【００３２】
ＬＰＡＲ２２０は、論理プロセッサ、論理ＲＡＭ（論理メモリ）、及び論理Ｉ／Ｏデバイスを有する。本実施例のホストＯＳ２（２１０）は、ＬＰＡＲ２２０に対して共有領域２２１を割り当てる。共有領域２２１は、アプリケーション２３２とホストＯＳ１（２００）との間の通信等に用いられるメモリ領域である。【００３３】
本実施例のホストＯＳ２（２１０）は、共有領域管理部２１１及び処理部２１２を有し、また、管理情報２１３を保持する。【００３４】
共有領域管理部２１１は、ＬＰＡＲ２２０に対して共有領域２２１を割り当て、当該共有領域２２１を管理する。共有領域管理部２１１は、共有領域２２１を複数のブロックに分割し、ブロック単位に共有領域２２１の状態を管理する。以下の説明ではブロック単位の共有領域２２１を単にブロックとも記載する。処理部２１２は、共有領域２２１を用いたホストＯＳ１（２００）とゲストＯＳ２３０との間の通信を制御する。管理情報２１３は、共有領域２２１を管理するための情報であり、共有領域管理部２１１によって管理される。管理情報２１３の詳細については図３を用いて説明する。【００３５】
本実施例のゲストＯＳ２３０は、エージェント２３１を含む。エージェント２３１は、アプリケーション２３２が発行した共有領域２２１に関する要求をホストＯＳ２（２１０）に渡し、また、ホストＯＳ２（２１０）に対して共有領域２２１の確保を依頼する。また、エージェント２３１は、仮想アドレス空間に確保された共有領域２２１をマッピングし、共有領域２２１がマッピングされた仮想アドレスをアプリケーション２３２に返す。これによって、アプリケーション２３２は、共有領域２２１を使用することができる。【００３６】
図３は、実施例１の管理情報２１３の一例を示す図である。【００３７】
管理情報２１３は、ブロックＩＤ３０１、ゲスト物理アドレス３０２、ホスト物理アドレス３０３、サイズ３０４、及び割当状態３０５を含む。【００３８】
ブロックＩＤ３０１は、ブロックの識別番号である。ゲスト物理アドレス３０２は、ゲスト物理アドレス空間上におけるブロックの開始アドレスである。ホスト物理アドレス３０３は、ホスト物理アドレス空間上におけるブロックの開始アドレスである。サイズ３０４は、ブロックのサイズである。本実施例では、全てのブロックのサイズが同一であるものとする。なお、各ブロックのサイズは異なっていてもよい。【００３９】
割当状態３０５は、ブロックがアプリケーション２３２に対して割り当てられているか否かを示す情報である。本実施例の割当状態３０５には「ＯＮ」又は「ＯＦＦ」のいずれかが格納される。割当状態３０５が「ＯＮ」の場合、ブロックがアプリケーション２３２に割り当てられていることを示す。割当状態３０５が「ＯＦＦ」の場合、ブロックがアプリケーション２３２に割り当てられていないことを示す。【００４０】
本実施例では、一つのＬＰＡＲ２２０に対して一つの共有領域２２１が割り当てられる。そのため、ホストＯＳ２（２１０）は、ＬＰＡＲ２２０の数と同数の管理情報２１３を保持する。【００４１】
図４は、実施例１の共有領域のマッピング関係及び構造を示す図である。【００４２】
物理計算機１０のＲＡＭ１２０のメモリ領域は、二つに分割され、ホストＯＳ１及びホストＯＳ２のそれぞれに分割されたメモリ領域が割り当てられる。ホストＯＳ１（２００）及びホストＯＳ２（２１０）のそれぞれは、割り当てられたメモリ領域を独立したホスト物理アドレス空間として管理する。【００４３】
ホストＯＳ２（２１０）は、割り当てられたメモリ領域の一部をホストＯＳ２（２１０）の制御用の領域として確保する。また、ホストＯＳ２（２１０）は、割り当てられたメモリ領域の一部をＬＰＡＲ２２０の領域として確保し、ＬＰＡＲ２２０に当該領域を割り当てる。【００４４】
ＬＰＡＲ２２０は、ＬＰＡＲ２２０の領域を、ゲストＯＳ２３０の領域と、ＬＰＡＲ２２０の制御用の領域とに分割する。なお、ゲストＯＳ２３０の領域には、ＭＭＩＯ用の領域、Ｆ／Ｗ用の領域、ＲＡＭ用の領域、及びゲストＯＳ２３０の制御用の領域が含まれる。【００４５】
ホストＯＳ２（２１０）は、ＬＰＡＲ２２０を起動時に、制御用の領域に、共有領域２２１を割り当てる。すなわち、制御用の領域の一部が共有領域２２１として使用される。共有領域２２１のデータ構造は、データ領域及び通信用領域から構成される。データ領域は、ホストＯＳ１（２００）によってバックアップされたデータを用いたリストアを行うために、ホストＯＳ１（２００）から送信されたデータを格納するメモリ領域である。通信用領域は、アプリケーション２３２とホストＯＳ１（２００）との間で通信に用いるメモリ領域である。【００４６】
なお、図４に示す共有領域２２１のデータ構造は論理的な構造を示すものである。したがって、データ領域及び通信用領域は連続的なメモリ領域でなくてもよい。なお、通常起動時にも共有領域２２１を割り当てることによって、例えば、ホストＯＳ２（２１０）及びアプリケーション２３２がメモリを共有すること等ができる。【００４７】
図４に示すように、共有領域２２１は、ゲストＯＳ２３０の領域とは異なるため、ゲストＯＳ２３０からは論理ＲＡＭとして認識されないメモリ領域である。また、共有領域２２１は、ホストＯＳ２に割り当てられたメモリ領域に含まれるため、アプリケーション２３２との間の通信以外にはホストＯＳ１（２００）からアクセスされることはない。【００４８】
図５Ａ及び図５Ｂは、実施例１の計算機システムの共有領域２２１を用いた処理の流れを示すシーケンス図である。本実施例では、共有領域を用いた処理の一例として、共有領域を用いたリストア処理について説明する。【００４９】
ホストＯＳ１（２００）は、物理計算機１０の電源部１６０の障害等の電源遮断時にキャッシング用にＲＡＭ１２０に格納されるデータを外部ストレージ装置２０にバックアップする（ステップＳ１０１）。その後、物理計算機１０は再起動を行う。【００５０】
ホストＯＳ２（２１０）の共有領域管理部２１１は、ＬＰＡＲ２２０の起動時に、ＬＰＡＲ２２０に共有領域２２１を割り当てる（ステップＳ１０２）。【００５１】
例えば、共有領域管理部２１１は、ＬＰＡＲ２２０の起動時に、ＬＰＡＲ２２０に割り当てられたメモリ領域のうち、制御用のメモリ領域から共有領域２２１用の領域を確保する。【００５２】
また、共有領域管理部２１１は、ホスト物理アドレス空間のアドレスが連続するメモリ領域を共有領域２２１として確保する。このとき、共有領域管理部２１１は、確保されたメモリ領域をブロック単位に分割し、各ブロックに識別番号を付与する。【００５３】
共有領域管理部２１１は、管理情報２１３にブロックの数だけエントリを生成し、ブロックＩＤ３０１に付与された識別番号を設定する。また、共有領域管理部２１１は、各エントリのホスト物理アドレス３０３に各ブロックの開始アドレスを設定し、また、サイズ３０４に各ブロックのサイズを設定する。さらに、共有領域管理部２１１は、各エントリの割当状態３０５に「ＯＦＦ」を設定する。【００５４】
共有領域管理部２１１は、ＬＰＡＲ２２０の起動時、確保されたメモリ領域のアドレスに基づいて各ブロックのゲスト物理アドレス及びホスト物理アドレスを取得し、各エントリのゲスト物理アドレス３０２及びホスト物理アドレス３０３に取得されたゲスト物理アドレス及びホスト物理アドレスを設定する。以上がステップＳ１０２の処理の説明である。【００５５】
ＬＰＡＲ２２０が起動し、さらに、ＬＰＡＲ２２０上でゲストＯＳ２３０が起動した後、アプリケーション２３２の処理が開始される。このとき、アプリケーション２３２は、バックアップ処理が実行されたか否かを判定する。例えば、ホストＯＳ２（２１０）を介して、ホストＯＳ１（２００）に対して問い合わせることによって、前述した判定をすることができる。ここでは、バックアップ処理が実行されたと判定するものとする。【００５６】
この場合、アプリケーション２３２は、エージェント２３１に対して共有領域２２１の確保要求を発行する（ステップＳ１０３）。なお、当該確保要求には、確保するメモリ領域のサイズが含まれる。【００５７】
エージェント２３１は、共有領域管理部２１１にアプリケーション２３２から受け取った共有領域２２１の確保要求を出す（ステップＳ１０４）。【００５８】
共有領域管理部２１１は、エージェント２３１から共有領域２２１の確保要求を受信した場合、管理情報２１３を参照して、アプリケーション２３２のゲスト仮想アドレス空間に割り当てる共有領域２２１（ブロック）を確保する（ステップＳ１０５）。すなわち、アプリケーション２３２に提供するブロックが選択される。さらに、共有領域管理部２１１は、マッピングするゲスト物理アドレスをエージェント２３１に通知する（ステップＳ１０６）。【００５９】
具体的には、共有領域管理部２１１は、管理情報２１３の各エントリの割当状態３０５を参照し、管理情報２１３が「ＯＦＦ」であるエントリが要求サイズ分連続している箇所を検索する。共有領域管理部２１１は、検索されたエントリ群を選択し、選択されたエントリ群の割当状態３０５に「ＯＮ」を設定する。共有領域管理部２１１は、選択されたエントリ群の先頭のブロックＩＤ３０１及びゲスト物理アドレス３０２に格納される値をエージェント２３１に通知する。このとき、共有領域管理部２１１がエージェントに渡すアドレスは、マッピングするアドレスであるため、アプリケーション２３２に使用させる領域までのオフセットも合わせて通知する。【００６０】
エージェント２３１は、共有領域管理部２１１からゲスト物理アドレスを受け取った場合、当該ゲスト物理アドレスをゲスト仮想アドレス空間にマッピングする（ステップＳ１０７）。本実施例では、ＯＳの機能を用いてゲスト物理アドレスがゲスト仮想アドレスにマッピングされる。具体的な処理については図６を用いて説明する。【００６１】
エージェント２３１は、マッピングしたゲスト仮想アドレスをアプリケーション２３２に通知する（ステップＳ１０８）。【００６２】
具体的には、エージェント２３１は、マッピング結果及びオフセットに基づいて、アプリケーション２３２が使用する先頭ブロックのゲスト仮想アドレス、ゲスト物理アドレス、ファイルディスクリプタ、ブロックの識別番号、サイズ等の確保された共有領域の解放に必要な情報をアプリケーション２３２に通知する。【００６３】
アプリケーション２３２は、エージェント２３１からゲスト物理アドレスを受け取った場合、ホストＯＳ１（２００）との通信を開始するために、ホストＯＳ２（２１０）に対して共有領域２２１を用いて処理の開始要求を発行する（ステップＳ１０９）。なお、当該開始要求には、ステップＳ１０３において発行された共有領域２２１の確保要求に含まれるサイズ、及び、エージェント２３１から受け取ったブロックの識別番号が含まれる。【００６４】
エージェント２３１は、処理部２１２にアプリケーション２３２から受け取った処理の開始要求を発行する（ステップＳ１１０）。【００６５】
処理部２１２は、エージェント２３１から処理の開始要求を受け取った場合、共有領域管理部２１１に確保されたブロックのホスト物理アドレスを要求する（ステップＳ１１１）。当該ホスト物理アドレスの要求には、ステップＳ１０８において発行され、ステップＳ１０９の開始要求で入力されたブロックの識別番号が含まれる。【００６６】
共有領域管理部２１１は、ホスト物理アドレスの要求を受け取った場合、管理情報２１３に基づいて、確保されたブロックのホスト物理アドレスを処理部２１２に通知する（ステップＳ１１２）。【００６７】
具体的には、共有領域管理部２１１は、管理情報２１３を参照し、ブロックＩＤ３０１がホスト物理アドレスの要求に含まれるブロックの識別番号と一致するエントリを検索する。共有領域管理部２１１は、検索されたエントリのホスト物理アドレス３０３に格納されるアドレスを処理部２１２に通知する。【００６８】
処理部２１２は、共有領域管理部２１１からホスト物理アドレスを受け取った場合、ホストＯＳ１（２００）にホスト物理アドレスを通知する（ステップＳ１１３）。このとき、処理部２１２は、ステップＳ１０９の開始要求の入力に含まれるサイズもホスト物理アドレスと合わせて通知する。これによって、ホストＯＳ１（２００）は、アプリケーション２３２に割り当てられた共有領域２２１にアクセスが可能となる。【００６９】
ホストＯＳ１（２００）は、ホスト物理アドレスの通知を受け取った場合、共有領域２２１を用いた処理を実行する（ステップＳ１１４）。本実施例では、共有領域２２１を用いたリストア処理が実行される。リストア処理は公知のものであるため詳細な説明は省略する。【００７０】
アプリケーション２３２は、リストア処理が完了した後、エージェント２３１に完了通知を発行する（ステップＳ１１５）。エージェント２３１は、処理部２１２にアプリケーション２３２から受け取った完了通知を発行する（ステップＳ１１６）。【００７１】
処理部２１２は、エージェント２３１から完了通知を受け取った場合、ホストＯＳ１（２００）に完了通知を発行する（ステップＳ１１７）。【００７２】
ホストＯＳ１（２００）は、処理部２１２から完了通知を受け取った場合、これ以降、共有領域２２１へアクセスすることがないように、完了処理を実行する（ステップＳ１１８）。完了処理は公知のものであるため詳細な説明は省略する。【００７３】
アプリケーション２３２は、エージェント２３１に解放要求を発行する（ステップＳ１１９）。当該解放要求には、ステップＳ１０８において、エージェント２３１から受け取った各種情報が含まれる。エージェント２３１は、共有領域管理部２１１にアプリケーション２３２から受け取った解放要求を発行する（ステップＳ１２０）。【００７４】
共有領域管理部２１１は、エージェント２３１から解放要求を受け取った場合、アプリケーション２３２に対して割り当てられたブロックを全て解放する（ステップＳ１２１）。このとき、共有領域管理部２１１は、管理情報２１３を参照し、解放されたブロックに対応するエントリの割当状態３０５を全て「ＯＦＦ」に更新する。【００７５】
共有領域管理部２１１は、アンマップ用のアドレスを算出するためのオフセットをエージェント２３１に通知する（ステップＳ１２２）。【００７６】
エージェント２３１は、共有領域管理部２１１からオフセットを受け付けた場合、当該オフセットを用いて、ゲスト仮想アドレス空間からブロックをアンマップする（ステップＳ１２３）。【００７７】
図６は、実施例１のエージェント２３１が実行するマッピング処理の一例を説明するフローチャートである。【００７８】
エージェント２３１は、スペシャルファイルをｏｐｅｎする（ステップＳ２０１）。エージェント２３１は、スペシャルファイルのｏｐｅｎに成功したか否かを判定する（ステップＳ２０２）。【００７９】
スペシャルファイルのｏｐｅｎに失敗したと判定された場合、エージェント２３１は、エラーと判定して処理を終了する。スペシャルファイルのｏｐｅｎに成功したと判定された場合、エージェント２３１は、ブロックのゲスト物理アドレスをゲスト仮想アドレスにマッピングするためにｍｍａｐを実行する（ステップＳ２０３）。エージェント２３１は、ｍｍａｐが成功したか否かを判定する（ステップＳ２０４）。【００８０】
ｍｍａｐが失敗したと判定された場合、エージェント２３１は、エラーと判定して処理を終了する。ｍｍａｐが成功したと判定された場合、エージェント２３１は、ｍｍａｐの実行結果として、アプリケーション２３２に対してゲスト仮想アドレスを返す（ステップＳ２０５）。【００８１】
なお、共有領域２２１をアンマップする場合、エージェント２３１は、ｍｕｎｍａｐを実行する。【００８２】
以上で説明したように、本実施例によれば、それぞれ独立した計算機リソースを有するホストＯＳ１（２００）及びホストＯＳ２（２１０）が稼働する計算機において、ホストＯＳ２が管理するＬＰＡＲ２２０上のアプリケーションと、ホストＯＳ１（２００）とが通信するための共有領域を確保することができる。【００８３】
したがって、独立した計算機リソースを使用するホストＯＳ１（２００）とホストＯＳ２上のアプリケーション２３２との間で通信等の処理が可能となる。【００８４】
なお、共有領域の使用方法は、ホストＯＳ１（２００）とホストＯＳ２上のアプリケーション２３２との間の通信に限定されるものではない。本発明を応用して、例えば、ホストＯＳ２とアプリケーション２３２との間の通信、又はホストＯＳ２とエージェント２３１との間の通信にも共有領域を使用することが可能である。【００８５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。【００８６】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。【００８７】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ等の広範囲のプログラム又はスクリプト言語で実装できる。【００８８】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。【００８９】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【図１】
2017006458.tif 000003
【図２】
2017006458.tif 000004
【図３】
2017006458.tif 000005
【図４】
2017006458.tif 000006
【図５Ａ】
2017006458.tif 000007
【図５Ｂ】
2017006458.tif 000008
【図６】
2017006458.tif 000009
【国際調査報告】
2017006458.tif 000010
2017006458.tif 000011