(57)【要約】【課題】オーバーヘッドを回避して、処理負荷を抑制する。【解決手段】仮想環境上で動作するゲストＯＳ６０と、ゲストＯＳ６０を動作させるホストＯＳ３０とを有する情報処理装置１００において、ゲストＯＳ６０により動作され、ホストＯＳ３０を介さずにＶｉｄｅｏハードウェア２１を制御するＶｉｄｅｏドライバ６２と、ホストＯＳ３０により動作され、Ｖｉｄｅｏドライバ６２が起動する前に、Ｖｉｄｅｏドライバ６２により実行される初期化処理や復帰処理を代替して実行する代替ドライバ３２と、を備え、Ｖｉｄｅｏドライバ６２は、起動した後、代替ドライバ３２により実行された所定の処理の内容を引き継ぐ。【選択図】図２
2017068824.tif 000002
【特許請求の範囲】
【請求項１】
仮想環境上で動作する第１の処理部と、前記第１の処理部を動作させる第２の処理部とを有する情報処理装置において、
前記第１の処理部により動作され、前記第２の処理部を介さずに直接ハードウェアを制御する直接制御部と、
前記第２の処理部により動作され、前記直接制御部が起動する前に、前記直接制御部により実行される所定の処理を代替して実行する代替制御部と、を備え、
前記直接制御部は、起動した後、前記代替制御部により実行された前記所定の処理の内容を引き継ぐ、情報処理装置。
【請求項２】
前記代替制御部は、代替して実行した前記所定の処理の内容を記憶部に記憶し、
前記直接制御部は、起動した後、前記記憶部を参照して実行された前記所定の処理の内容を引き継ぐ、請求項１に記載の情報処理装置。
【請求項３】
前記所定の処理は、前記直接制御部により実行される前記ハードウェアの初期化処理である、請求項１または２に記載の情報処理装置。
【請求項４】
前記所定の処理は、前記直接制御部により実行される省エネルギー状態からの復帰処理である、請求項１または２に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。
【背景技術】
【０００２】
ＯＳ（Operating  System）の準仮想化・仮想化技術とは、過去のＯＳを新しいシステム上でそのまま実行することで過去の資産をそのまま継承するための技術として発展してきた。
【０００３】
また、近年では、クラウド環境の発展により、ハードウェアに依存することなくサーバ環境をネットワーク上に提供する土台となる技術として準仮想化・仮想化技術が利用されている。また、組み込み分野でもハードウェアのシステム性能の向上から過去の資産の再利用や複数ハードウェアの統合を目的として準仮想化・仮想化技術の導入が検討され実現化されつつある。
【０００４】
準仮想化・仮想化技術を備えた情報処理装置では、仮想環境上で動作するゲストＯＳと、ゲストＯＳを動作させるホストＯＳとが備えられており、例えば、ゲストＯＳが仮想環境上でファイルシステムを実現するものなどがある。
【０００５】
さらに、このような情報処理装置では、ゲストＯＳ上で動作するパススルードライバが起動された場合、当該パススルードライバがホストＯＳを介さずハードウェアを直接制御して初期化等の所定の処理を行うものがある。例えば、準仮想化したドライバがＨＤＤ（Hard  Disk  Drive）などのハードウェアに直接アクセスすることができるコンピュータが開示されている（特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の準仮想化・仮想化技術を備えた情報処理装置では、装置の起動時や省エネルギー状態からの復帰時において、ホストＯＳの起動、仮想化管理ソフトウェアの起動、ゲストＯＳの起動、という順序で起動される。従って、例えば、特許文献１の情報処理装置において、ゲストＯＳ上にある準仮想化したパススルードライバを起動するためには、ゲストＯＳが起動されるまで待機する必要があるため、オーバーヘッドが生じて、処理負荷が増大してしまう。
【０００７】
本発明は、上記に鑑みてなされたものであって、オーバーヘッドを回避して、処理負荷を抑制できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、仮想環境上で動作する第１の処理部と、前記第１の処理部を動作させる第２の処理部とを有する情報処理装置において、前記第１の処理部により動作され、前記第２の処理部を介さずに直接ハードウェアを制御する直接制御部と、前記第２の処理部により動作され、前記直接制御部が起動する前に、前記直接制御部により実行される所定の処理を代替して実行する代替制御部と、を備え、前記直接制御部は、起動した後、前記代替制御部により実行された前記所定の処理の内容を引き継ぐ。
【発明の効果】
【０００９】
本発明によれば、オーバーヘッドを回避して、処理負荷を抑制できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態の情報処理装置のハードウェア構成の一例を示すブロック図である。
【図２】図２は、実施形態の情報処理装置の構成の一例を示す図である。
【図３】図３は、実施形態の情報処理装置における起動処理の流れを示すフローチャートである。
【図４】図４は、実施形態の情報処理装置の起動時における代替ドライバの初期化処理の流れを示すフローチャートである。
【図５】図５は、実施形態の情報処理装置の起動時におけるＶｉｄｅｏドライバの初期化処理の流れを示すフローチャートである。
【図６】図６は、実施形態の情報処理装置における省エネ復帰処理の流れを示すフローチャートである。
【図７】図７は、実施形態の情報処理装置の省エネ復帰時における代替ドライバの復帰処理の流れを示すフローチャートである。
【図８】図８は、実施形態の情報処理装置の省エネ復帰時におけるＶｉｄｅｏドライバの復帰処理の流れを示すフローチャートである。
【図９】図９は、従来の情報処理装置の構成の一例を示す図である。
【図１０】図１０は、従来の情報処理装置の構成の他の例を示す図である。
【図１１】図１１は、従来の情報処理装置におけるＶｉｄｅｏドライブの起動までの流れを示す図である。
【図１２】図１２は、従来の情報処理装置におけるＶｉｄｅｏドライブの省エネルギー状態への移行から復帰までの流れを示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら、本発明にかかる情報処理装置の実施形態を詳細に説明する。本実施形態の情報処理装置は、準仮想化技術が用いられている。
【００１２】
図１は、本実施形態の情報処理装置のハードウェア構成の一例を示すブロック図である。図１に示すように、情報処理装置１００は、ＣＰＵ（Central  Processing  Unit）やＧＰＵ（Graphics  Processing  Unit）などの制御装置１１と、ＲＯＭ（Read  Only  Memory）やＲＡＭ（Random  Access  Memory）などの主記憶装置１２と、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）などの補助記憶装置１３と、ディスプレイなどの表示装置１４と、マウス、キーボード、タッチパネル、又はキースイッチなどの入力装置１５と、通信インタフェースなどの通信装置１６と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００１３】
但し、情報処理装置１００のハードウェア構成は、これに限定されず、ＩＣ（Integrated  Circuit）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、及び各種センサなどを更に備えていてもよい。
【００１４】
情報処理装置１００は、例えば、ＰＣ（Personal  Computer）、スマートフォン、タブレット端末、ウェアラブル端末、画像形成装置、プロジェクタ、テレビ会議装置、電子黒板、蛍光灯、カメラ、エアコン、冷蔵庫、自販機、及び産業用機器などが挙げられる。画像形成装置は、例えば、印刷装置、複写機、複合機、スキャナ装置、及びファクシミリ装置などが挙げられる。複合機は、複写機能、印刷機能、スキャナ機能、及びファクシミリ機能のうち少なくとも２つの機能を有するものである。
【００１５】
図２は、本実施形態の情報処理装置の構成の一例を示す図である。図２に示すように、情報処理装置１００は、図１で示した構成等を備えたＨＷ（Hardware：ハードウェア）２０と、ホストＯＳ（Operating  System）３０と、ゲストＯＳ５０と、ゲストＯＳ６０と、Ｖｉｒｔｉｏ５１、６１と、図１で示した主記憶装置１２と、を主に備えている。ホストＯＳ３０、ゲストＯＳ５０、６０、およびＶｉｒｔｉｏ５１、６１は、例えば、制御装置１１および主記憶装置１２により実現できる。ここで、ホストＯＳ３０が第２の処理部に相当し、ゲストＯＳ６０が第１の処理部に相当する。
【００１６】
ホストＯＳ３０（Ｄｏｍ０）は、情報処理装置１００上の基盤となるＯＳであって、ゲストＯＳ５０、６０を動作させる。詳細には、ホストＯＳ３０は、ゲストＯＳ５０、６０を動作させるための仮想環境を構築するソフトウェアであるＶＭ（Virtual  Machine）を動作させる。例えば、ホストＯＳ３０は、ＬＩＮＵＸ（登録商標）などである。
【００１７】
ゲストＯＳ５０（ＤｏｍＵ１）およびゲストＯＳ６０（ＤｏｍＵ２）は、情報処理装置１００の仮想環境上で動作するＯＳであって、ホストＯＳ３０により動作される。仮想環境とは、物理的なコンピュータ環境とは別の仮想的な環境であって、本実施形態では、ホストＯＳ３０上で動作するＶＭによって仮想的に構築されたコンピュータ環境である。
【００１８】
Ｖｉｒｔｉｏ５１、６１は、仮想環境上で動作する、標準化された仮想化ドライバ群である。本実施形態では、ホストＯＳ３０およびゲストＯＳ５０、６０間のＶＭ間通信を実現するインタフェースの役割を果たしている。但し、これに限定されず、例えば、ＶＭにＸｅｎを用いる場合には、ＸｅｎＳｏｃｋｅｔを、ＶＭ間通信を実現するインタフェースに用いてもよいし、ベンダが独自に提供するインタフェースを、ＶＭ間通信を実現するインタフェースに用いてもよい。
【００１９】
ＨＷ２０は、ほとんどのモジュールがホストＯＳ３０によって、モジュールそれぞれに対応するドライバを介して制御されている。また、図２に示すように、ＨＷ２０は、Ｖｉｄｅｏハードウェア２１を備えている。このＶｉｄｅｏハードウェア２１は、ゲストＯＳ６０によって、ホストＯＳ３０を介さず直接制御（パススルー）されている。
【００２０】
一方、ゲストＯＳ６０は、Ｖｉｄｅｏドライバ６２を備えている。Ｖｉｄｅｏドライバ６２は、ゲストＯＳ６０上で動作するものであり、情報処理装置１００の一部のハードウェア（本実施形態の例ではＶｉｄｅｏハードウェア２１）を、ホストＯＳ３０を介さず直接制御（パススルー）している。ここで、Ｖｉｄｅｏドライバ６２が、直接制御部に相当する。
【００２１】
また、図２に示すように、ホストＯＳ３０は、仮想化管理部３１と、代替ドライバ３２と、を備えている。仮想化管理部３１は、情報処理装置１００における仮想化を管理するものであって、例えば、ホストＯＳ３０が完全に起動した後にゲストＯＳ５０、６０を起動し管理する（図２矢印参照）。
【００２２】
代替ドライバ３２（ＤＯＭ０ドライバ）は、ゲストＯＳ６０からホストＯＳ３０を介さず直接制御（パススルー）されるハードウェア（ここでは、Ｖｉｄｅｏハードウェア２１）に対応するドライバである。通常、Ｖｉｄｅｏハードウェア２１は、ゲストＯＳ６０のＶｉｄｅｏドライバ６２がホストＯＳ３０を介さずに直接制御するものであるが、本実施形態の代替ドライバ３２は、ゲストＯＳ６０が起動するまでは、Ｖｉｄｅｏドライバ６２が行う所定の処理を肩代わりするものである。ここで、代替ドライバ３２が、代替制御部に相当する。
【００２３】
主記憶装置１２は、仮想記憶領域２０３、２０４を有している。ここで、各ドライバは、通常、ドライバ構造体と呼ばれるドライバ個別の記憶領域を有しておりこれを基に動作する。図２に示すように、本実施形態の主記憶装置１２では、ホストＯＳ３０から見た仮想記憶領域２０３に代替ドライバ構造体２０１を有し、ゲストＯＳ６０から見た仮想記憶領域２０４にＶｉｄｅｏドライバ構造体２０２を有している。代替ドライバ構造体２０１が記憶部に相当する。
【００２４】
例えば、代替ドライバ３２は、情報処理装置１００の起動時に、ホストＯＳ３０が起動してゲストＯＳ６０にあるＶｉｄｅｏドライバ６２が起動するまで機能し、Ｖｉｄｅｏハードウェア２１の初期化処理を代替して実行する。そして、代替ドライバ３２は、代替して実行した初期化処理の内容を代替ドライバ構造体２０１（記憶部）に記憶する。
【００２５】
そして、Ｖｉｄｅｏドライバ６２が起動した後、Ｖｉｄｅｏドライバ６２は、代替ドライバ構造体２０１を参照して、代替ドライバ３２により実行された初期化処理の内容を引き継ぐ。これにより、ゲストＯＳ６０のＶｉｄｅｏドライバ６２が起動する前に、Ｖｉｄｅｏハードウェア２１を初期化して利用ができる。
【００２６】
また、例えば、代替ドライバ３２は、情報処理装置１００の省エネルギー状態（省エネ状態）からの復帰時に、ホストＯＳ３０が起動（復帰）してゲストＯＳ６０にあるＶｉｄｅｏドライバ６２が起動（復帰）するまで機能し、Ｖｉｄｅｏハードウェア２１の省エネルギー状態からの復帰処理を代替して実行する。そして、代替ドライバ３２は、代替して実行した復帰処理の内容を代替ドライバ構造体２０１（記憶部）に記憶する。
【００２７】
そして、Ｖｉｄｅｏドライバ６２が起動（復帰）した後、Ｖｉｄｅｏドライバ６２は、代替ドライバ構造体２０１を参照して、代替ドライバ３２により実行された復帰処理の内容を引き継ぐ。これにより、ゲストＯＳ６０のＶｉｄｅｏドライバ６２が起動する前に、Ｖｉｄｅｏハードウェア２１を復帰させて利用ができる。
【００２８】
ここで、準仮想化された従来の情報処理装置について例を挙げて説明する。図９は、従来の情報処理装置の構成の一例を示す図である。図９に示すように、情報処理装置３００は、ＨＷ３２０と、ホストＯＳ３３０と、ゲストＯＳ３５０と、ゲストＯＳ３６０と、Ｖｉｒｔｉｏ３５１、３６１と、を主に備えている。
【００２９】
ＨＷ３２０は、さらに、ＡＳＩＣ（Application  Specific  Integrated  Circuit）３２２、ＧＰＵ（Graphics  Processing  Unit）３２１を備えている。また、ゲストＯＳ３５０は、ホストＯＳ３３０を介さずＡＳＩＣ３２２を制御するＡＳＩＣドライバ３５２を備えている。また、ゲストＯＳ３６０は、さらに、ホストＯＳ３３０を介さずＧＰＵ３２１を制御するＧＰＵドライバ３６２を備えている。
【００３０】
このように、情報処理装置３００では、ゲストＯＳ３５０、３６０がホストＯＳ３３０を介さず直接ＨＷ３２０のＡＳＩＣ３２２やＧＰＵ３２１を制御するＡＳＩＣドライバ３５２やＧＰＵドライバ３６２、いわゆるパススルードライバを備えている。
【００３１】
次に、従来の情報処理装置を参照して、装置の起動について説明する。図１０は、従来の情報処理装置の構成の他の例を示す図である。図１０に示すように、情報処理装置４００は、ＨＷ４２０と、ホストＯＳ４３０と、ゲストＯＳ４５０と、ゲストＯＳ４６０と、Ｖｉｒｔｉｏ４５１、４６１と、を主に備えている。そして、ホストＯＳ４３０は、仮想化管理部４３１を備えている。また、ゲストＯＳ４６０は、Ｖｉｄｅｏドライバ４６２を備え、ＨＷ４２０はＶｉｄｅｏハードウェア４２１を備えている。図１０に示す情報処理装置４００は、本実施形態の情報処理装置１００における代替ドライバ３２を有していないが、他の各部の構成および機能は同様である（図２参照）。
【００３２】
情報処理装置４００では、ホストＯＳ（Ｄｏｍ０）４３０が完全に起動し、マルチプロセス動作が可能になった後、ホストＯＳ４３０に備えられている仮想化管理部４３１により、仮想環境上のゲストＯＳ４５０（ＤｏｍＵ１）およびゲストＯＳ４６０（ＤｏｍＵ２）を起動する。
【００３３】
ここで、情報処理装置４００におけるＶｉｄｅｏドライブの起動までの流れについて説明する。図１１は、従来の情報処理装置におけるＶｉｄｅｏドライブの起動までの流れを示す図である。図１１（ａ）〜（ｃ）のそれぞれは、情報処理装置４００が起動している部分を表示している。
【００３４】
すなわち、図１１（ａ）は、ホストＯＳ４３０の起動が完了した直後の状態を示している。ホストＯＳ４３０の起動後は、初期起動プロセスとして仮想化管理部４３１が起動する。図１１（ｂ）は、（ａ）の状態から、ゲストＯＳ４５０が起動された状態を示している。そして、図１１（ｃ）は、さらに、ゲストＯＳ４６０が起動され、パススルードライバであるＶｉｄｅｏドライバ４６２が起動され、Ｖｉｄｅｏハードウェア４２１を初期化処理して利用可能となった状態を示している。
【００３５】
図１１（ａ）〜（ｃ）に示すように、従来の情報処理装置４００では、ホストＯＳ４３０が起動し、仮想化管理部４３１がゲストＯＳ４５０、４６０を起動し、さらにゲストＯＳ４６０のＶｉｄｅｏドライバ４６２が起動するまで、パススルーの対象となったハードウェア（ここでは、Ｖｉｄｅｏハードウェア４２１）の初期化処理等の処理や使用をすることができない。
【００３６】
また、従来の情報処理装置４００では、ゲストＯＳ４６０が起動するまで、ホストＯＳ４３０がパススルー対象のＶｉｄｅｏハードウェア４２１を使用するケースであっても、Ｖｉｄｅｏハードウェア４２１の状態をゲストＯＳ４６０のＶｉｄｅｏドライバ４６２に引き継ぐ機能がないため、再度初期化からやり直して使用しなければならなかった。
【００３７】
このようにパススルードライバ（本実施形態ではＶｉｄｅｏドライバ４６２）の制御が後回しになるのは、装置の起動時だけでなく省エネルギー状態（Suspend  to  RAM、Suspend  to  HDD）からの復帰時（省エネ復帰時）にも起きる。省エネ復帰時は、周辺回路にも電源が入り、それに対応するデバイスドライバも省エネ復帰処理を行う必要がある。その際、仮想環境上のゲストＯＳ４５０、４６０の省エネ復帰は、ホストＯＳ４３０の省エネ復帰が完了した後に行われる。
【００３８】
図１２は、従来の情報処理装置におけるＶｉｄｅｏドライブの省エネルギー状態への移行から復帰までの流れを示す図である。図１２（ａ）〜（ｃ）は、省エネルギー状態への移行（省エネ移行）の流れを示しており、図１２（ｄ）〜（ｆ）は、省エネルギー状態からの復帰（省エネ復帰）の流れを示している。
【００３９】
すなわち、図１２（ａ）は、ホストＯＳ４３０もゲストＯＳ４５０、４６０も起動されている通常状態を示している。図１２（ｂ）は、ゲストＯＳ４５０、４６０、Ｖｉｒｔｉｏ４５１、４６１、Ｖｉｄｅｏハードウェア４２１が省エネ状態へ移行した仮想環境のサスペンド状態を示している。図１２（ｃ）は、さらに、ホストＯＳ４３０も省エネ状態へ移行し、全てが省エネ状態になったサスペンド状態を示している。
【００４０】
図１２（ｄ）は、（ｃ）と同様サスペンド状態を示している。図１２（ｅ）は、省エネ状態からホストＯＳ４３０が復帰した復帰状態を示している。図１２（ｆ）は、さらに、ゲストＯＳ４５０、４６０、Ｖｉｒｔｉｏ４５１、４６１、Ｖｉｄｅｏハードウェア４２１が復帰し、全てが復帰した通常状態を示している。
【００４１】
図１２（ｄ）〜（ｆ）に示すように、従来の情報処理装置４００では、ホストＯＳ４３０が起動（復帰）し、仮想化管理部４３１がゲストＯＳ４５０、４６０を起動（復帰）し、さらにゲストＯＳ４６０のＶｉｄｅｏドライバ４６２が起動（復帰）するまで、パススルーの対象となったハードウェア（ここでは、Ｖｉｄｅｏハードウェア４２１）を復帰させて使用することができない。
【００４２】
つまり、従来の情報処理装置４００は、パススルードライバであるＶｉｄｅｏドライバ４６２により、ゲストＯＳ４６０から直接制御されているＶｉｄｅｏハードウェア４２１の初期化処理や復帰処理は、ゲストＯＳ４６０が起動されないとできない。従って、パススルー対象のハードウェア（Ｖｉｄｅｏハードウェア４２１）が利用可能になるための初期化処理や復帰処理は、ゲストＯＳ４６０の起動時間分だけ遅れるため、システム全体として利用可能な状態になる時間はその分遅れてしまう。
【００４３】
また、デバイスによっては、初期化処理や省エネ復帰処理に物理的に時間がかかるものがあり（例えば、ＨＤＤのスピンアップなど）、初期化処理や省エネ復帰処理をできるだけ早く実行することでシステムのパフォーマンスを上げることができる。反対に、パススルー対象のデバイスの初期化処理や省エネ復帰処理に時間を要するものである場合、大幅にパフォーマンスを悪化させてしまう。
【００４４】
そこで、本実施形態の情報処理装置１００（図２参照）は、パススルー対象のハードウェアの初期化処理や省エネ復帰処理を代替して実行し、その内容を引き継ぐ代替ドライバ３２を備えている。そして、ゲストＯＳ６０上のパススルードライバであるＶｉｄｅｏドライバ６２は、代替ドライバ３２で初期化処理や省エネ復帰処理が実行されたハードウェアの情報を引き継ぐ機能を備えている。
【００４５】
次に、本実施形態の情報処理装置１００による起動処理について説明する。図３は、本実施形態の情報処理装置における起動処理の流れを示すフローチャートである。図３（ａ）の部分は、ホストＯＳ３０の起動処理を示しており、図３（ｂ）の部分は、ゲストＯＳ６０の起動処理を示している。
【００４６】
まず、ホストＯＳ３０の起動処理を説明する。情報処理装置１００の電源が投入されると、ホストＯＳ３０は、システム全体の初期化処理を行い（ステップＳ１０２）、その後、個別のドライバの初期化処理を行う（ステップＳ１０４）。
【００４７】
このとき、ホストＯＳ３０は、準仮想化対象のハードウェアモジュールであるＶｉｄｅｏハードウェア２１に対応する代替ドライバ３２の初期化処理を行う。そして、代替ドライバ３２は、初期化処理した内容を自己が有する代替ドライバ構造体２０１に記憶する（ステップＳ１０６）。
【００４８】
ドライバを含むホストＯＳ３０の初期化処理が終わると、ホストＯＳ３０は、プロセスの初期化・起動を行う（ステップＳ１０８）。このプロセスにおいて、ホストＯＳ３０は、ゲストＯＳ５０、６０を操作する仮想化管理部３１を起動する（ステップＳ１１０）。仮想化管理部３１は、ゲストＯＳ５０、６０を起動する（ステップＳ１１２、１１４）。そして、ホストＯＳ３０のシステムが動作状態となる（ステップＳ１１６）。
【００４９】
次に、ゲストＯＳ６０の起動処理を説明する。ゲストＯＳ６０が起動されると、ゲストＯＳ６０は、仮想化ＯＳとしてのシステムの初期化処理を行い（ステップＳ１２２）、その後、ドライバの初期化処理を行う（ステップＳ１２４）。
【００５０】
このとき、パススルードライバであるＶｉｄｅｏドライバ６２を初期化する際、Ｖｉｒｔｉｏ６１によるＶＭ間通信を介して、ホストＯＳ３０の代替ドライバ３２の代替ドライバ構造体２０１にアクセスして、Ｖｉｄｅｏハードウェア２１の初期化処理の内容を引き継ぐ。そして、Ｖｉｄｅｏドライバ６２は、引き継いだＶｉｄｅｏハードウェア２１の初期化処理の内容を自己が有するＶｉｄｅｏドライバ構造体２０２に記憶する（ステップＳ１２６）。
【００５１】
ドライバを含むゲストＯＳ６０の初期化処理が終わると、ゲストＯＳ６０は、プロセスの初期化・起動を行う（ステップＳ１２８）。そして、ゲストＯＳ６０のシステムが動作状態となる（ステップＳ１３０）。
【００５２】
ここで、Ｖｉｒｔｉｏ５１、６１によるＶＭ間通信において、代替ドライバ３２の代替ドライバ構造体２０１にアクセスするための手段は通常備えられていないが、ホストＯＳ３０側のバックエンドドライバとして通信用ドライバを備えることで容易にアクセスが実現できる。
【００５３】
たとえば、本実施形態の情報処理装置１００のＶｉｄｅｏドライバ６２の場合であれば、ビデオモード（解像度、リフレッシュレートなど）の情報を引き継ぐことでビデオチップの再初期化が不要となる。このように、起動時に代替ドライバ３２でＶｉｄｅｏハードウェア２１の初期化処理を実行することにより、ハードウェアの初期化処理に必須となる時間をパススルードライバ起動前から初期化することで見かけ上なくすことができる。
【００５４】
次に、図３におけるステップＳ１０６の初期化処理について詳述する。図４は、本実施形態の情報処理装置の起動時における代替ドライバの初期化処理の流れを示すフローチャートである。
【００５５】
Ｖｉｄｅｏハードウェア２１に対応する代替ドライバ３２は、ホストＯＳ３０によりシステムの初期化処理が行われると（ステップＳ１８２）、初期化処理の内容を、代替ドライバ構造体２０１に記憶する（ステップＳ１８４）。
【００５６】
この代替ドライバ３２は、初期化処理と省エネ復帰処理とを実行する機能のみを有するドライバであって、他のＯＰＥＮ/ＣＬＯＳＥといったシステムコールに対してはすべてエラーを返すように設計している。
【００５７】
また、初期化処理としてデバイスの初期化を行うが、時間のかかる処理に関しては終了の待ち合わせを行わない。すなわち、例えば、発信回路の安定時間など数１００ｍｓ単位で起動された場合、初期化処理のトリガのみかけておいて、パススルードライバで完了を待つことでハードウェア初期化の待ち時間とゲストＯＳ６０の起動時間とを並列化して全体の待ち時間の短縮をはかることができる。
【００５８】
次に、図３におけるステップＳ１２６の初期化処理について詳述する。図５は、本実施形態の情報処理装置の起動時におけるＶｉｄｅｏドライバの初期化処理の流れを示すフローチャートである。
【００５９】
まず、Ｖｉｄｅｏドライバ６２は、代替ドライバ構造体２０１からＶｉｒｔｉｏ６１を介して初期化処理の内容を読み込む（ステップＳ１９２）。この部分は各ドライバ実装に依存する。Ｖｉｄｅｏドライバ６２の場合、例えば、解像度設定、リフレッシュレート、現在使用しているビデオメモリ位置などの情報が初期化処理の内容となる。
【００６０】
そして、デバイスを初期化することなく、これらの情報（初期化の内容）を引き継ぐことで、Ｖｉｄｅｏドライバ６２の初期化処理となり（ステップＳ１９４）、引き継いだ内容をＶｉｄｅｏドライバ構造体２０２に記憶する。
【００６１】
また、代替ドライバ３２でハードウェアの初期化のトリガをかけている場合、初期化完了を確認、もしくは完了していない場合、継続して完了待ちを実施する。
【００６２】
次に、本実施形態の情報処理装置１００による省エネ復帰処理について説明する。図６は、本実施形態の情報処理装置における省エネ復帰処理の流れを示すフローチャートである。図６（ａ）の部分は、ホストＯＳ３０の省エネ復帰処理を示しており、図６（ｂ）の部分は、ゲストＯＳ６０の省エネ復帰処理を示している。
【００６３】
情報処理装置１００が省エネ状態から復帰する場合、周辺回路として電源が落とされてしまうデバイスは、省エネ移行前に現状復帰するため、デバイスの初期化を含めた復帰処理が必要となる。
【００６４】
まず、ホストＯＳ３０の省エネ復帰処理を説明する。起動時と同様に、情報処理装置１００の復帰処理が開始されると、ホストＯＳ３０は、システム全体の復帰処理を行い（ステップＳ１４２）、その後、各ドライバの復帰処理ルーチンが呼び出され、ドライバの復帰処理を行う（ステップＳ１４４）。
【００６５】
このとき、ホストＯＳ３０は、代替ドライバ３２に関しても復帰処理ルーチンが呼び出され、ホストＯＳ３０は、代替ドライバ３２の復帰処理を行う。そして、代替ドライバ３２は、初期化した処理内容を自己が有する代替ドライバ構造体２０１に記憶する（ステップＳ１４６）。
【００６６】
ドライバを含むホストＯＳ３０の復帰処理が終わると、ホストＯＳ３０は、プロセスの復帰を行う（ステップＳ１４８）。このプロセスにおいて、ホストＯＳ３０は、ゲストＯＳ５０、６０を操作する仮想化管理部３１を復帰する（ステップＳ１５０）。仮想化管理部３１は、ゲストＯＳ５０、６０を復帰する（ステップＳ１５２、１５４）。そして、ホストＯＳ３０のシステムが動作状態となる（ステップＳ１５６）。
【００６７】
次に、ゲストＯＳ６０の復帰処理を説明する。ゲストＯＳ６０が復帰されると、ゲストＯＳ６０は、仮想化ＯＳとしてのシステムの復帰処理を行い（ステップＳ１６２）、その後、各ドライバの復帰処理ルーチンが呼び出され、ドライバの復帰処理を行う（ステップＳ１６４）。
【００６８】
このとき、パススルードライバであるＶｉｄｅｏドライバ６２を復帰する際、復帰処理ルーチンが呼び出され、Ｖｉｒｔｉｏ６１によるＶＭ間通信を介して、ホストＯＳ３０の代替ドライバ３２の代替ドライバ構造体２０１にアクセスして、Ｖｉｄｅｏハードウェア２１の復帰処理の内容を引き継ぐ。そして、Ｖｉｄｅｏドライバ６２は、引き継いだＶｉｄｅｏハードウェア２１の復帰処理の内容を自己が有するＶｉｄｅｏドライバ構造体２０２に記憶する（ステップＳ１６６）。
【００６９】
ドライバを含むゲストＯＳ６０の復帰処理が終わると、ゲストＯＳ６０は、プロセスの復帰を行う（ステップＳ１６８）。そして、ゲストＯＳ６０のシステムが動作状態となる（ステップＳ１７０）。
【００７０】
これにより、不要な再初期化を回避して、ゲストＯＳ６０の起動（復帰）を待つことなく、先に代替ドライバ３２により復帰処理を開始することができる。
【００７１】
次に、図６におけるステップＳ１４６の復帰処理について詳述する。図７は、本実施形態の情報処理装置の省エネ復帰時における代替ドライバの復帰処理の流れを示すフローチャートである。
【００７２】
Ｖｉｄｅｏハードウェア２１に対応する代替ドライバ３２は、ホストＯＳ３０によりシステムの復帰処理が行われると（ステップＳ２０２）、復帰処理の内容を、代替ドライバ構造体２０１に記憶する（ステップＳ２０４）。
【００７３】
なお、具体的な復帰処理の内容は、個別のドライバによって異なる。Ｖｉｄｅｏドライバ６２の場合、例えば、ビデオモード（解像度、リフレッシュレート）のレジューム処理（再設定処理）などの情報が復帰処理の内容となる。そして、代替ドライバ３２は、それらの設定値を代替ドライバ構造体２０１に記憶する。
【００７４】
次に、図６におけるステップＳ１６６の復帰処理について詳述する。図８は、本実施形態の情報処理装置の省エネ復帰時におけるＶｉｄｅｏドライバの復帰処理の流れを示すフローチャートである。
【００７５】
まず、Ｖｉｄｅｏドライバ６２は、代替ドライバ構造体２０１からＶｉｒｔｉｏ６１を介して復帰処理の内容を読み込む（ステップＳ２１２）。Ｖｉｄｅｏドライバ６２の場合、例えば、ビデオモード（解像度、リフレッシュレート）のレジューム処理（再設定処理）などの情報が復帰処理の内容となる。この情報を元にパススルードライバ（Ｖｉｄｅｏドライバ６２）で必要な復帰処理を行う。
【００７６】
そして、デバイスを復帰処理することなく、これらの情報（復帰処理の内容）を引き継ぐことで、Ｖｉｄｅｏドライバ６２の復帰処理となり（ステップＳ２１４）、引き継いだ内容をＶｉｄｅｏドライバ構造体２０２に記憶する。
【００７７】
このように、本実施形態の準仮想化された情報処理装置１００は、ホストＯＳ３０を介さず直接制御（パススルー）されるＶｉｄｅｏハードウェア２１に対応する代替ドライバ３２を、ホストＯＳ３０に備えている。この代替ドライバ３２は、情報処理装置１００の起動時や省エネ復帰時に、パススルードライバであるＶｉｄｅｏドライバ６２が起動（復帰）するまで機能する。そして、代替ドライバ３２がＶｉｄｅｏハードウェア２１の初期化処理や復帰処理を実行した後に、Ｖｉｄｅｏドライバ６２が起動（復帰）した場合にその処理の内容を引き継ぐ。これにより、Ｖｉｄｅｏドライバ６２は、初期化処理や復帰処理を再度行うことなく、Ｖｉｄｅｏハードウェア２１を利用することができるため、オーバーヘッドを回避して、処理負荷を抑制できる。
【符号の説明】
【００７８】
１１  制御装置
１２  主記憶装置
１３  補助記憶装置
１４  表示装置
１５  入力装置
１６  通信装置
２０  ＨＷ
２１  Ｖｉｄｅｏハードウェア
３０  ホストＯＳ
３１  仮想化管理部
３２  代替ドライバ
５０、６０  ゲストＯＳ
５１、６１  Ｖｉｒｔｉｏ
６２  Ｖｉｄｅｏドライバ
１００  情報処理装置
２０１  代替ドライバ構造体
２０２  Ｖｉｄｅｏドライバ構造体
２０３、２０４  仮想記憶領域
【先行技術文献】
【特許文献】
【００７９】
【特許文献１】特開２０１２−３８１１７号公報
【図１】
2017068824.tif 000003
【図２】
2017068824.tif 000004
【図３】
2017068824.tif 000005
【図４】
2017068824.tif 000006
【図５】
2017068824.tif 000007
【図６】
2017068824.tif 000008
【図７】
2017068824.tif 000009
【図８】
2017068824.tif 000010
【図９】
2017068824.tif 000011
【図１０】
2017068824.tif 000012
【図１１】
2017068824.tif 000013
【図１２】
2017068824.tif 000014