(57)【要約】【課題】ゲストOS内の時刻をホストOS内の時刻に反映させることが困難。【解決手段】計算機上で仮想計算機を構築・動作させる際、ある仮想計算機内部における時刻設定要求または時刻補正要求を、実計算機および他仮想計算機にも反映させる。また、それらの反映の要否および反映・被反映の関係を管理・制御する。仮想計算機内ＯＳ内に時刻設定要求、時刻補正要求・モード変更要求を受け付ける時刻連携機能を設け、一方実計算機ＯＳ内にそれらを統括管理する時刻統括機能を設け、両者を連携させる。【選択図】  図６
2014134989.tif 000002
【特許請求の範囲】
【請求項１】
計算機システムは、ゲストOSとホストOSを備え、
前記ゲストOSは、
前記ゲストOSにおける時刻を管理する時刻機能部と、
前記ゲストOSが時刻運用モードを受信し、ホストOSに送信する時刻連携部とを備え、
前記ホストOSは、
前記ホストOSにおける時刻を管理する時刻機能部と、
前記ゲストOSから受信した時刻運用モードの変更要求に応じて時刻を補正する、又は前記ホストOS内で、時刻運用モードの変更要求に応じて時刻を補正する時刻連携部と、
を備えることを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記ゲストOSは、運用モードの状態を記憶する全体モード情報記憶部を更に備え、
前記ゲストOSは、前記時刻運用モードの変更を受信すると、前記全体モード情報記憶部に記憶された前記運用モードに基づいて前記変更の可否を判断することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記時刻運用モードには、マスターモード、スレーブモード、独立モードを含み、
前記ホストOSがマスターモードまたはスレーブモードである場合には、ホストOSの仮想計算機が持つ現在時刻を表す情報を更新する際に、前記ホストOSが持つ時刻の変化に同期する仮想デバイスが提供する情報を用い、
独立モードである場合には、計算機ハードウェアが備える、仮想計算機外オペレーティングシステムに依存しないデバイスが提供する情報を用いることを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記ゲストＯＳのモードを変更する要求を受け付け、当該要求が独立モードから他モードへの変更、または、他モードから独立モードへの変更である場合には、前記時刻を表す情報を更新する際に用いるデバイスを切り替えることを特徴とする計算機システム。
【請求項５】
請求項３に記載の計算機システムであって、
前記ゲストＯＳのモードを変更する要求を受け付け、
前記ゲストＯＳのモードをマスターに変更する要求である場合には、前記ゲストＯＳの現在時刻情報を仮想計算機外オペレーティングシステムおよびスレーブモードのホストＯＳに設定し、
前記ゲストＯＳのモードをスレーブに変更する要求である場合には、ゲストＯＳの現在時刻情報を前記ホストＯＳに設定する
ことを特徴とする計算機システム。
【請求項６】
ゲストOSとホストOSを管理する計算機管理方法において、
前記ゲストOSは、
前記ゲストOSにおける時刻を管理し、
前記ゲストOSが時刻運用モードを受信し、ホストOSに送信し、
前記ホストOSは、
前記ホストOSにおける時刻を管理し、
前記ゲストOSから受信した時刻運用モードの変更要求に応じて時刻を補正する、又は前記ホストOS内で、時刻運用モードの変更要求に応じて時刻を補正する
ことを特徴とする計算機管理方法。
【請求項７】
請求項６に記載の計計算機管理方法であって、
前記ゲストOSは、運用モードの状態を全体モード情報記憶部に記憶し、
前記ゲストOSは、前記時刻運用モードの変更を受信すると、前記全体モード情報記憶部に記憶された前記運用モードに基づいて前記変更の可否を判断することを特徴とする計算機管理方法。
【請求項８】
請求項７に記載の計算機管理方法であって、
前記時刻運用モードには、マスターモード、スレーブモード、独立モードを含み、
前記ホストOSがマスターモードまたはスレーブモードである場合には、ホストOSの仮想計算機が持つ現在時刻を表す情報を更新する際に、前記ホストOSが持つ時刻の変化に同期する仮想デバイスが提供する情報を用い、
独立モードである場合には、計算機ハードウェアが備える、仮想計算機外オペレーティングシステムに依存しないデバイスが提供する情報を用いることを特徴とする計算機管理方法。
【請求項９】
請求項８に記載の計算機管理方法であって、
前記ゲストＯＳのモードを変更する要求を受け付け、当該要求が独立モードから他モードへの変更、または、他モードから独立モードへの変更である場合には、前記時刻を表す情報を更新する際に用いるデバイスを切り替えることを特徴とする計算機管理方法。
【請求項１０】
請求項８に記載の計算機管理方法であって、
前記ゲストＯＳのモードを変更する要求を受け付け、
前記ゲストＯＳのモードをマスターに変更する要求である場合には、前記ゲストＯＳの現在時刻情報を仮想計算機外オペレーティングシステムおよびスレーブモードのホストＯＳに設定し、
前記ゲストＯＳのモードをスレーブに変更する要求である場合には、ゲストＯＳの現在時刻情報を前記ホストＯＳに設定する
ことを特徴とする計算機管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機上の仮想的な計算機システム及び計算機管理方法に関する。
【背景技術】
【０００２】
計算機を運用するにあたって、計算機を構成するハードウェア、および、計算機内のＣＰＵが実行する基本ソフト（オペレーティングシステム、以降ＯＳと表記）が、現在時刻を表す情報（以降、時刻情報）を保有・管理する方法（以降、時刻管理と表記）が知られている。この時刻情報は、ある処理の実行要否の判断や、逆に、ある処理が実行されたタイミングの把握や、処理に要した所要時間の算出などの目的で用いられる。
【０００３】
また、近年、計算機の運用における利便性の向上などの目的にて、ある計算機（以降、ホストマシンと表記）上で仮想的な計算機ハードウェア（以降、ゲストマシンと表記）を１台または複数台再現し、各々のゲストマシン上で独立にソフトウェアを実行する「計算機仮想化」技術が広く用いられている。計算機仮想化技術には、ゲストマシンを実現する機構を備えるハードウェアまたはソフトウェアの位置付けにより様々なものがあるが、近年はホストマシン上で単一のＯＳ（ホストＯＳ）を実行し、このホストＯＳが備える機構を用いてゲストマシンを構築し、ゲストマシン上でＯＳ（ゲストＯＳ）およびアプリケーションを実行する方法がある。
【０００４】
このような計算機仮想化技術を適用したシステムにおいて、ホストマシン上で適切な時刻管理が行われていることを前提に、ホスト上の時刻情報を用いてゲストの時刻管理を行う方法が用いられている。
【０００５】
例えば、非特許文献１には、仮想マシンの中に、仮想クロックデバイス（KVM:ｋｖｍｃｌｏｃｋ  又は  ＰＶｃｌｏｃｋ）を備え、ホストOSの時刻機能の進み方と同一になるよう仮想マシンが仮想クロックデバイスを制御する技術が記載されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】”ＫＶＭ”、 [online]、[平成24年7月25日検索]、インターネット(URL: http://www.linux-kvm.org/page/Main_Page)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
計算機仮想化技術を、例えば制御システム等の、実世界におけるタイミング制御を行うようなシステムに適用する場合、仮想マシン内で動作するアプリケーションプログラムの制御に基づくホストOS内の時刻管理が必要とされることがある。これは、制御システムの運用上の制約により、制御システムの動作に支障が発生しない方法・タイミングで時刻情報の変更・補正を行う必要があることによる。しかしながら特許文献１に記載の技術では、仮想マシン内で動作するアプリケーションプログラムの制御に基づくホストOS内の時刻管理を行うことができない。
【０００８】
さらに、例えば、ある任意の仮想マシンについて、テスト等の必要により、一時的に実時刻と異なる時刻情報を設定したい場合がある。しかしながら非特許文献１に記載の技術では、時刻管理に関するホストマシン・ゲストマシン間の連携について、必要に応じて動的にホスト・ゲストの関係を変更することが困難である。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明では、ゲストOSは、ゲストOSにおける時刻を管理する時刻機能部と、ゲストOSが時刻運用モードを受信し、ホストOSに送信する時刻連携部とを備え、ホストOSは、ホストOSにおける時刻を管理する時刻機能部と、ゲストOSから受信した時刻運用モードの変更要求に応じて時刻を補正する、又は前記ホストOS内で、時刻運用モードの変更要求に応じて時刻を補正する時刻連携部と、を備える。
【発明の効果】
【００１０】
本発明によれば、ゲストOS内の時刻をホストOS内の時刻に反映させることができ、更に、時刻管理に関するゲスト・ホスト間の関係を動的に変更することができる。例えば、特定のゲストマシンにおける時刻管理に、ホストマシンや他ゲストマシンを同期させることや、特定のゲストマシンを一時的に同期から切り離すことができる。
【図面の簡単な説明】
【００１１】
【図１】計算機システムの一例を示す図である。
【図２】時刻機能の一例を示す図である。
【図３】時刻設定要求の一例を示す図である。
【図４】時刻補正要求の一例を示す図である。
【図５】仮想化技術を適用した計算機システムの一例を示す図である。
【図６】時刻連携機能及び時刻統括機能を導入した計算機システムの一例を示す図である。
【図７】時刻連携機能の一例を示す図である。
【図８】時刻統括機能の一例を示す図である。
【図９】全体モード情報の一例を示す図である。
【図１０】時刻設定要求発生時のフローの一例の前半を示す図である。
【図１１】時刻設定要求発生時のフローの一例の後半を示す図である。
【図１２】時刻設定情報の一例を示す図である。
【図１３】時刻補正要求発生時のフローの一例を示す図である。
【図１４】時刻補正情報の一例を示す図である。
【図１５】モード変更要求発生時のフローの一例を示す図である。
【図１６】モード変更処理のフローの一例を示す図である。
【図１７】モード変更要求の一例を示す図である。
【図１８】モード変更情報の一例を示す図である。
【図１９】モード変更結果情報の一例を示す図である。
【図２０】時刻統括機能の別の一例を示す図である。
【図２１】ホスト内モード変更要求の一例を示す図である。
【図２２】時刻設定情報の別の一例を示す図である。
【図２３】モード変更結果情報の別の一例を示す図である。
【発明を実施するための形態】
【００１２】
本発明の一実施形態の説明に先立ち、実施形態が前提とする時刻管理の仕組み、および、計算機仮想化環境について述べる。
図１から図５は公知技術の説明図である。
【００１３】
まず、計算機における既存の時刻管理の仕組みとして、一例を図１に示す。計算機１は、ハードウェアとして少なくともＣＰＵ２とメモリ３を備えている。尚、ＣＰＵ２は複数個存在してもよい。メモリ３上には少なくともオペレーティングシステム（ＯＳ）１０、および、アプリケーションプログラム１１が展開されているものとする。また、計算機はクロックデバイス４およびリアルタイムクロック（ＲＴＣ）５を備える。ここで、クロックデバイスとは、タイマ割込をＣＰＵ２に通知すること、または、ＣＰＵ２から参照可能なレジスタに時間経過に応じて増減するカウンタ値を設定すること、などにより、ＣＰＵ２に時間経過を表す情報を提供する任意のデバイスである。クロックデバイス４は、例えばＰｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｖａｌ  Ｔｉｍｅｒ（ＰＩＴ）や、Ｈｉｇｈ  Ｐｒｅｃｉｓｉｏｎ  Ｅｖｅｎｔ  Ｔｉｍｅｒ（ＨＰＥＴ）やＴｉｍｅｓｔａｍｐ  Ｃｏｕｎｔｅｒ（ＴＳＣ）である。このような計算機において、ＣＰＵ２はＯＳ１０内時刻機能２０の働きにより、時刻管理を行う。尚、本発明にて時刻情報とは実時刻（現在時刻）または特定のタイミングを表す情報であり、日付やタイムゾーン等の情報を含んでよい。
【００１４】
図２は、時刻機能２０の構成の一例を示したものである。時刻機能２０は、OS10の時刻を管理する機能である。また時刻機能２０は、時刻情報を保持するための領域であるＯＳ時刻情報領域２１、時間の経過に応じてＯＳ時刻情報領域２１を更新する機能である時刻更新機能２２を備える。さらに、計算機の起動または停止の際に、計算機の動作状態によらずに時刻管理を行うデバイスであるＲＴＣ５から時刻情報を復元、または逆にＲＴＣ５へ時刻情報を退避する機能である時刻退避・復元機能２３を備える。さらに、アプリケーションプログラム１１やその他プログラムの実行により発生する要求に応じた処理を行う時刻提供機能２４、時刻設定機能２５、時刻補正機能２６を備える。ここで時刻提供機能２４とはアプリケーションプログラム１１やその他プログラムの実行に必要な時刻情報を提供する機能であり、時刻設定機能２５とは、時刻情報と実時刻のずれを瞬時に解消するなどの目的で新たな時刻情報をＯＳ時刻情報領域２１に設定する機能であり、時刻補正機能２６とは、時刻情報が不連続に変化しないよう徐々に時刻情報と実時刻のずれを解消するなどの目的で時刻更新機能２２による更新幅を調整する機能である。これらの機能は、例えばＬｉｎｕｘ（登録商標）におけるｄａｔｅコマンドやｓｅｔｔｉｍｅｏｆｙｄａｙ関数、ａｄｊｔｉｍｅ関数として提供される。従って、これらの機能はアプリケーションプログラム１１やユーザから呼び出される。時刻設定機能２５は、例えば図３に示すような時刻設定要求２７をアプリケーションプログラム１１またはユーザから受け付ける。時刻設定要求２７には、例えば新たに設定されるべき時刻である新時刻２８が含まれる。また、時刻補正機能２６は、例えば図４に示すような時刻補正要求２９を受け付ける。時刻補正要求２９には、例えば時刻の進み方に対する補正内容を表す補正値３０が含まれる。
【００１５】
既存の時刻管理の仕組みを図５に示す。仮想化技術を適用した計算機には、１台以上の仮想マシン１０１が存在する。仮想マシン１０１は、プログラムおよびデータとしてメモリ３内に展開される。仮想マシン１０１は、計算機１におけるＣＰＵ２、メモリ３、クロックデバイス４、ＲＴＣ５に相当する、仮想ＣＰＵ１０２、仮想マシンメモリ１０３、仮想クロックデバイス１０４、仮想ＲＴＣ１０５を備える。また、実計算機上のＯＳ１０またはその上で動作するプログラムと情報の伝達を行うための仮想通信インタフェース（仮想通信Ｉ／Ｆ）１０６を備えていてもよい。
【００１６】
仮想マシンメモリ１０３内には、計算機１上のＯＳ１０と同様に、ゲストＯＳ１１０が存在し、さらにゲストＯＳ１１０は時刻機能１２０を備える。この時刻機能１２０は、連携対象が仮想クロックデバイス１０４や仮想ＲＴＣ１０５であることを除き、計算機１上の時刻機能２０と同様である。
【００１７】
ここで、仮想クロックデバイス１０４は、仮想マシン１０１の働きによりつくられ、ホストＯＳ１０内時刻機能２０が保持する時刻情報に基づく動作を行う擬似デバイスか、あるいはパススルー方式により透過的に参照可能となった計算機１内クロックデバイス４であってよい。また、仮想クロックデバイス１０４は一つの仮想マシン１０１内に複数種類存在してよく、それらには擬似デバイスとパススルー方式により参照されるクロックデバイス４の両方が含まれてよい。また、仮想ＲＴＣ１０５は、例えばホストＯＳ１０内時刻機能２０が保持する時刻情報に基づき時刻情報を提供する擬似デバイスであってよい。
【００１８】
以上で述べた既存の時刻管理方式、および、計算機仮想化環境に基づく本発明の実施形態について以降で述べる。尚、以降にて任意の仮想マシン１０１のことを、仮想マシン１０１外の機能・事象と区別する目的で、各々ゲスト・ホストと表記することがある。
【００１９】
図６は、本発明の実施形態の一例を示す図である。本実施形態では、図５に示した仮想化環境に加え、ゲストＯＳ１１０内に時刻連携機能１４０、ホストＯＳ１０内に時刻統括機能４０を新たに設ける。これらの時刻統括機能４０および時刻連携機能１４０が仮想通信Ｉ／Ｆ１０６を介して互いに連携することで、柔軟なホスト・ゲスト間時刻管理連携を実現する。
【００２０】
本実施形態における時刻連携機能１４０の構成を図７に示す。時刻連携機能１４０には、モード変更受付機能１４１、時刻設定受付機能１４２、時刻補正受付機能１４３、ホスト要求受付機能１４４、ゲストモード情報１４５が含まれる。
【００２１】
ここで、時刻設定受付機能１４２、時刻補正受付機能１４３は、時刻機能１２０内時刻設定機能２５および時刻補正機能２６と同様または類似の呼出インタフェースを備え、時刻設定要求２７および時刻補正要求２９を受け付けるものとする。本実施形態では、アプリケーションプログラム１１の書き換え、ゲストＯＳ１１０の書き換え等の方法により、アプリケーションプログラム１１が発行した時刻設定要求２７および時刻補正要求２９は、時刻設定機能２７や時刻補正機能２６ではなく時刻設定受付機能１４２および時刻補正受付機能１４３により処理されるものとする。
【００２２】
また、ホスト要求受付機能１４４は、後述するモード変更情報や時刻設定情報、時刻補正情報を、時刻統括機能４０から仮想通信Ｉ／Ｆ１０６経由で受け付け処理する機能である。
【００２３】
モード変更受付機能１４１及びゲストモード情報１４５に関する説明に先立ち、本実施形態における仮想マシン１０１のモード管理について概要を述べる。本実施形態では、動作中の各仮想マシン１０１について各々マスター・スレーブ・独立のいずれかのモードをとるものとする。ここで、マスターとは当該仮想マシン１０１内での時刻設定・補正がホストＯＳ１０及び他ゲストＯＳに伝達・適用される状態であり、スレーブとは逆にマスターまたはホストＯＳ１０における時刻設定・補正が当該仮想マシン１０１にも自動的に適用される状態である。独立とは、ホストＯＳ１０や他仮想マシン１０１と無関係に時刻設定・補正が実行・適用される状態である。
以上で述べたモード管理を実現するため、時刻連携機能１４０はモード変更受付機能１４１及びゲストモード情報１４５を備える。モード変更受付機能１４１はアプリケーションプログラム１１またはユーザから当該ゲストのモード変更要求を受け付け、適切な処理を行う機能であり、ゲストモード情報１４５は当該ゲストのモードを記憶する領域である。すなわち、ゲストモード情報１４５として、先に述べたゲストが取りうるモードである、マスター、スレーブ、独立いずれかを示す識別子が記載される。
【００２４】
次に、本実施形態における時刻統括機能４０の構成を図８に示す。時刻統括機能４０は少なくとも、マスターモードの仮想マシン１０１内時刻連携機能１４０からの要求を受け付けるゲスト要求受付機能４１と、各仮想マシン１０１のモードを保持・管理するデータ領域である全体モード情報４４を備える。また、ホスト内における時刻設定要求２７および時刻補正要求２９を処理するため、時刻設定受付機能４２、時刻補正受付機能４３を備えていてもよい。全体モード情報４４は、図９に示す通り、各仮想マシン１０１について、ゲスト識別子４５およびモード４６を保持する。
【００２５】
以上で述べた構成を踏まえ、本実施形態における時刻管理に関する処理フローを説明する。尚、処理フローはメモリ上のプログラムとして実現された機能により実現されるため、以降では、仮想ＣＰＵ１０２またはＣＰＵ２がある機能Ａ内の処理Ｂを行うことを、単に機能Ａが処理Ｂを行う、と表記する。実行の主体は、機能Ａが仮想マシン１０１内である場合は仮想マシン１０１内の任意の仮想ＣＰＵ１０２であり、仮想マシン１０１外である場合は任意のＣＰＵ２である。
【００２６】
まず、ある仮想マシン１０１上にて、アプリケーションプログラム１１が時刻設定要求２７を発行した場合のフローについて、時刻設定情報１５０を送受信するまでのフローを示した図１０、時刻設定情報１５０を送受信した後のフローを示した図１１を用いて説明する。最初に、時刻設定受付機能１４２が時刻設定要求２７をアプリケーションプログラム１１またはユーザから受け付ける（Ｓ１０１）。次に、時刻設定受付機能１４２は、当該ゲストがスレーブモードであるかどうか、ゲストモード情報１４５を参照することで判定する（Ｓ１０２）。判定の結果、スレーブモードであった場合は時刻設定受付機能１４２の実行を終了する（Ｓ１０３）。このとき、時刻設定要求２７を発行したアプリケーションプログラム１１に対して、単に設定の成功を示す結果コードを返してもよいし、エラーを示す結果コードを返してもよい。スレーブモードでなかった場合は、当該ゲスト内の時刻設定機能２５を呼び出し、時刻設定要求２７と同様の要求を時刻設定機能２５に対して行う（Ｓ１０４）。次に、当該ゲストが独立モードであるか否か、ゲストモード情報１４５を参照することで判定する（Ｓ１０５）。独立モードであった場合は、時刻設定受付機能１４２の実行を終了する（Ｓ１０６）。
【００２７】
当該ゲストが独立モードでもなかった場合、すなわち、マスターモードであった場合、時刻設定情報１５０を、仮想通信Ｉ／Ｆ１０６を介して、ホスト内、ゲスト要求受付機能４１に対して送信する。ここで、時刻設定情報１５０とは、図１２に示すような、時刻設定要求２７と同じ新時刻２８を備えるデータである。また、時刻設定要求２７が発生した仮想マシン１０１を示すゲスト識別子４５を備えていてもよい。ホスト側、時刻統括機能４０内ゲスト要求受付機能４１は、時刻設定情報１５０を受信することで処理を開始する（Ｓ１０８）。
【００２８】
時刻設定情報１５０を受信したゲスト要求受付機能４１は、まず時刻機能２０内時刻設定機能２５を呼び出し、時刻設定情報１５０内新時刻２８を含む時刻設定要求２７を行う（Ｓ１０９）。次に、全体モード情報４４を参照し、スレーブモードである各仮想マシン１０１内ホスト要求受付機能１４４に対して、仮想通信Ｉ／Ｆ１０６を介して時刻設定情報１５０を送信する。ここで、時刻設定情報１５０内新時刻２８は、Ｓ１０８にて受信した時刻設定情報１５０内新時刻２８と同じものとする。時刻設定情報を受信した（Ｓ１１１）、スレーブモードである仮想マシン１０１内のホスト要求受付機能１４４は、各仮想マシン１０１内の時刻設定機能２５を呼び出し、時刻設定要求２７を発行する（Ｓ１１２）。この時刻設定要求２７内新時刻２８は、時刻設定情報１５０内新時刻２８と同じものとする。以上をもって、アプリケーションプログラム１１が時刻設定要求２７を発行した場合のフローを終了する（Ｓ１１３）。
【００２９】
次に、ある仮想マシン１０１上にて、アプリケーションプログラム１１が時刻補正要求２９を発行した場合のフローについて、図１３を用いて説明する。最初に、時刻補正受付機能１４３が時刻補正要求２９を受け付ける（Ｓ２０１）。次に、時刻補正受付機能１４３は、当該ゲストがスレーブモードであるかどうか、ゲストモード情報１４５を参照することで判定する（Ｓ２０２）。判定の結果、スレーブモードであった場合は時刻補正受付機能１４３の実行を終了する（Ｓ２０３）。このとき、時刻補正要求２９を発行したアプリケーションプログラム１１に対して、単に補正の成功を示す結果コードを返してもよいし、エラーを示す結果コードを返してもよい。スレーブモードでなかった場合は、当該ゲストが独立モードであるかどうか同様に判定する（Ｓ２０４）。独立モードであった場合は、当該ゲスト内の時刻補正機能２６を呼び出し、時刻補正要求２９と同様の要求を時刻補正機能２６に対して行い（Ｓ２０５）、時刻補正受付機能１４３の実行を終了する（Ｓ２０６）。
【００３０】
当該ゲストが独立モードでもなかった場合、すなわち、マスターモードであった場合、時刻補正情報１６０を、仮想通信Ｉ／Ｆ１０６を介して、ホスト内、ゲスト要求受付機能４１に対して送信する（Ｓ２０７）。ここで、時刻補正情報１６０とは、図１４に示すような、時刻補正要求２９と同じ補正値３０を備えるデータである。時刻設定情報１５０同様、時刻補正情報１６０はゲスト識別子４５を含んでもよい。
【００３１】
ホスト側、時刻統括機能４０内ゲスト要求受付機能４１は、時刻補正情報１６０を受信することで処理を開始する（Ｓ２０８）。ゲスト要求受付機能４１は、時刻機能２０内時刻補正機能２６を呼び出し、時刻補正情報１６０内補正値３０を含む時刻補正要求２９を行い（Ｓ２０９）、実行を終了する（Ｓ２１０）。尚、時刻設定の場合と異なり、マスターモードおよびスレーブモードの仮想マシン１０１内の時刻の進み方は、後述するモード変更の際のクロックソース設定により、自動的にホストの時刻機能２０が提供する時刻の進み方に同期するため、各仮想マシン１０１内時刻補正機能２６を呼び出す必要はない。
【００３２】
最後に、ある仮想マシン１０１上にて、アプリケーションプログラム１１がモード変更要求１７０を発行した場合のフローについて、全体のフローを示した図１５、モード変更処理部分のフローを示した図１６を用いて説明する。尚、モード変更要求１７０は、図１７に示すように、当該仮想マシン１０１の遷移先モードである新モード１７１を含む。
【００３３】
まず、モード変更受付機能１４１がアプリケーションプログラム１１またやユーザからモード変更要求１７０を受け付ける（Ｓ３００）。次に、モード受付機能１４１は、モード変更情報１８０を、仮想通信Ｉ／Ｆ１０６を介して、ホスト内、ゲスト要求受付機能４１に対して送信する（Ｓ３０１）。ここでモード変更情報１８０とは、図１８に示すような、モード変更要求１７０と同じ新モード１７１を備えるデータである。
【００３４】
ホスト側、時刻統括機能４０内ゲスト要求受付機能４１は、モード変更情報１８０を受信することで処理を開始する（Ｓ３０３）。ゲスト要求受付機能４１は、まず、全体モード情報４４を参照し、モード変更情報１８０に記されたモード変更により矛盾が発生しないか判定する（Ｓ３０３）。ここで、矛盾が発生するとは、既にマスターモードである仮想計算機１０１が存在する状態で、新たに別の仮想計算機１０１がマスターモードに遷移し、マスターモードの仮想計算機１０１が複数になることを意味する。矛盾が発生しない場合のみ、ゲスト要求受付機能１４１は全体モード情報４４の、モード変更情報１８０内ゲスト識別子４５に対応する箇所のモード４６を、新モード１７１記載の内容に変更する（Ｓ３０４）。矛盾が発生した場合は、Ｓ３０５にすすむ。次に、仮想通信Ｉ／Ｆ１０６を介して、モード変更結果情報１９０をモード変更情報１８０の送信元であるモード変更受付機能１４１に送信する（Ｓ３０５）。ここで、モード変更結果情報１９０とは、図１９に示す通り、少なくとも変更可否１９１を含む。また、先のモード変更情報１８０における新モードがスレーブである場合は、スレーブモードへの変更時に設定すべき時刻を示す新時刻１９２を含んでもよい。
【００３５】
モード変更受付機能１４１は、モード変更結果情報１９０を受信し処理を再開する（Ｓ３０６）。モード変更結果情報１９０にて、モード変更可否１９１が可となっていた場合のみ、後述するモード変更処理を実行し（Ｓ３０８）、処理を終了する（Ｓ３０９）。
【００３６】
モード変更処理（Ｓ３０８）の内容について図１６を用いて述べる。モード変更受付機能１４１はモード変更処理の実行開始後（Ｓ３５１）、まずモード変更が独立モードと他のモードの間の変更であるか否かを判定する。ここで、独立モードと他のモードの間の変更であるとは、マスターモードまたはスレーブモードから独立モードへの変更であるか、逆に独立モードからマスターモードまたはスレーブモードへの変更であることを意味する。本条件に合致する場合は、時刻機能１２０内時刻更新機能２２に対して、クロックソースの切替を要求する（Ｓ３５３）。クロックソースとは、時刻更新機能２２が時刻更新の基準とするクロックデバイス４、仮想マシン１０１内では仮想クロックデバイス１０４のことである。独立モードから他モードへの遷移である場合は、クロックソースとしてホストＯＳ１０内時刻機能２０が保持する時刻情報に基づき動作する擬似デバイス方式を採用している仮想クロックデバイス１０４を、逆の場合はパススルー方式により透過的に参照可能なクロックデバイス４を切替先として選択する。これにより、独立モードの場合はホストＯＳ１０とは直接無関係な仮想クロックデバイス１０４を、他のモードである場合はホストＯＳ１０と進み方が一致する仮想クロックデバイス１０４をクロックソースとして選択することになる。
【００３７】
次に、遷移元・遷移先モードが各々独立モード・スレーブモードであるか判定する（Ｓ３５４）。独立モードからスレーブモードへの遷移の場合は、ホスト側の時刻に同期するため、スレーブモード当該仮想マシン１０１内時刻設定機能２５に対して、時刻設定要求２７を発行し（Ｓ３５５）、実行を終了する（Ｓ３５６）。ここで、時刻設定要求２７内新時刻２８としては、モード変更結果情報１９０内新時刻１９２記載のものを用いる。
【００３８】
独立モードからスレーブモードへの遷移でなかった場合は、独立モードからマスターモードへの遷移であるか判定する（Ｓ３５７）。マスターモードへの遷移の場合のみ、ホストおよびスレーブモードのゲストの時刻を同期させるため、仮想通信Ｉ／Ｆ１０６を介して、ホスト内、ゲスト要求受付機能４１に対して時刻設定情報１５０を送信する（Ｓ３５８）。ここで、時刻設定情報１５０内新時刻２８としては、送信時点にて当該ゲスト内時刻提供機能２４から取得した時刻情報を用いる。尚、ゲスト要求受付機能４１が時刻設定情報１５０を受信してからのフローは、図１１内Ｓ１０８以降のものと同じであるため省略する。以上をもって、モード変更処理Ｓ３０８を終了する（Ｓ３５９）。
【００３９】
以上で述べた実施形態の一例の通り、本発明を用いることで時刻管理に関するゲスト・ホスト間の連携を柔軟に設定・制御することが可能となる。例えば、特定のゲストマシンにおける時刻管理に、ホストマシンや他ゲストマシンを同期させることや、特定のゲストマシンを一時的に同期から切り離すことができる。
【００４０】
ただし、実施形態は本例に限らない。例えば、ゲスト・ホスト間で仮想通信Ｉ／Ｆを介した情報転送の要否をゲストモード情報１４５または全体モード情報４４に基づき判断する箇所については、送信元で要否を判断する代わりに受信側にてゲストモード情報１４５または全体モード情報４４に基づき採用要否を判断してもよい。
【００４１】
また、本例ではモード変更受付機能１４１を仮想計算機１０１内時刻連携機能１４０内に設けることでゲスト側でのモード変更操作を可能としているが、時刻統括機能４０内に同様の機能を設け、ホスト側にて任意のゲストのモード変更を可能としてもよい。この場合、図２０に示す通り、時刻統括機能４０はモード変更受付機能４７を備え、図２１に示すホスト内モード変更要求２００を受け付ける。モード変更受付機能４７の動作は、ゲスト要求受付機能１４１が、先に述べたホスト内モード変更要求２００内ゲスト識別子４５、新モード１７１を含むモード変更情報１８０を受信した場合（Ｓ３０２）以降の処理に準ずる。これにより、ホスト内アプリケーションプログラムまたはユーザからモード変更が可能となる。
【００４２】
さらに、ホスト・ゲストにて時刻設定機能２５を呼び出すタイミングがずれることにより時刻にずれが発生することを防ぐため、時刻設定情報１５０およびモード変更結果情報１９０について、図２２および図２３に示す通り、新時刻２８、新時刻１９２に加え、基準カウンタ値４８、カウンタ倍率４９を含んでもよい。ここで、基準カウンタ値４８とは、時刻設定機能呼出（Ｓ１０４）や、モード変更結果情報１９０送信（Ｓ３０５）、マスターへの遷移に伴う時刻設定情報１５０送信（Ｓ３５８）時点におけるパススルー方式のクロックデバイス４または仮想クロックデバイス１０４が備えるカウンタの値であり、カウンタ倍率とは、例えば時刻更新機能２２がＯＳ時刻情報領域２１の更新の際の増分算出に用いている、前記パススルー方式のクロックデバイス４または仮想クロックデバイス１０４のカウンタ値の変動量と実時間の比率を示す値、例えば一秒間にカウンタ値が増加する量である。
【００４３】
このとき、ゲスト要求受付機能４１やホスト要求受付機能１４４が時刻設定情報１５０に基づき時刻設定機能２５を呼び出す際（Ｓ１０９、Ｓ１１２）、あるいは、モード変更結果情報１９０に基づき時刻設定機能を呼び出す際（Ｓ３５５）、単に時刻設定情報１５０内新時刻２８またはモード変更結果情報１９０内新時刻１９２を時刻設定要求２７内新時刻２８に設定するのではなく、改めて前記パススルー方式のクロックデバイス４または仮想クロックデバイス１０４のカウンタ値を取得し、基準カウンタ値４８との差分を算出した後、カウンタ倍率４９を用いて実時間に変換した値を時刻設定情報１５０内新時刻２８またはモード変更結果情報１９０内新時刻１９２の値に加算し、加算後の値を時刻設定要求２７内新時刻２８に設定する。ここで、カウンタ倍率４９を用いて実時間に変換するとは、例えばカウンタ倍率４９が一秒間にカウンタ値が増加する量である場合は、カウンタ値の差分をカウンタ倍率４９で除した値を算出することである。これにより、時刻管理機能１４０および時刻統括機能４０の処理フローおよび相互通信に遅延が発生する場合でも、時刻の同期が可能となる。
【符号の説明】
【００４４】
１      計算機
２      ＣＰＵ
３      メモリ
４      クロックデバイス
５      ＲＴＣ
１０    ＯＳ（ホストＯＳ）
１１    アプリケーションプログラム
２０    時刻機能
４０    時刻統括機能
１０１  仮想マシン
１０２  仮想ＣＰＵ
１０３  仮想マシンメモリ
１０４  仮想クロックデバイス
１０５  仮想ＲＴＣ
１０６  仮想通信Ｉ／Ｆ
１１０  ゲストＯＳ
１４０  時刻連携機能
【図１】
2014134989.tif 000003
【図２】
2014134989.tif 000004
【図３】
2014134989.tif 000005
【図４】
2014134989.tif 000006
【図５】
2014134989.tif 000007
【図６】
2014134989.tif 000008
【図７】
2014134989.tif 000009
【図８】
2014134989.tif 000010
【図９】
2014134989.tif 000011
【図１０】
2014134989.tif 000012
【図１１】
2014134989.tif 000013
【図１２】
2014134989.tif 000014
【図１３】
2014134989.tif 000015
【図１４】
2014134989.tif 000016
【図１５】
2014134989.tif 000017
【図１６】
2014134989.tif 000018
【図１７】
2014134989.tif 000019
【図１８】
2014134989.tif 000020
【図１９】
2014134989.tif 000021
【図２０】
2014134989.tif 000022
【図２１】
2014134989.tif 000023
【図２２】
2014134989.tif 000024
【図２３】
2014134989.tif 000025