JP2016173821A - コンピュータシステム内における複数のハイパーバイザーの共同運用を容易にするためのシステムおよび方法 - Google Patents

コンピュータシステム内における複数のハイパーバイザーの共同運用を容易にするためのシステムおよび方法 Download PDF

Info

Publication number
JP2016173821A
JP2016173821A JP2016052123A JP2016052123A JP2016173821A JP 2016173821 A JP2016173821 A JP 2016173821A JP 2016052123 A JP2016052123 A JP 2016052123A JP 2016052123 A JP2016052123 A JP 2016052123A JP 2016173821 A JP2016173821 A JP 2016173821A
Authority
JP
Japan
Prior art keywords
hypervisor
mode
processor
persistent
engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016052123A
Other languages
English (en)
Other versions
JP2016173821A5 (ja
JP6530723B2 (ja
Inventor
アイ.リェヴチェンコ ヴャチェスラフ
I Levchenko Vyacheslav
アイ.リェヴチェンコ ヴャチェスラフ
ワイ.クマギン イゴール
Y Kumagin Igor
ワイ.クマギン イゴール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of JP2016173821A publication Critical patent/JP2016173821A/ja
Publication of JP2016173821A5 publication Critical patent/JP2016173821A5/ja
Application granted granted Critical
Publication of JP6530723B2 publication Critical patent/JP6530723B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Abstract

【課題】複数のハイパーバイザーの効果的かつ効率的な同時実行を容易にする。【解決手段】コンピュータシステム100において、複数のハイパーバイザーの共同運用が調整される。永続的なハイパーバイザー110aと1つ以上の他のハイパーバイザー110bが実行されている。ハイパーバイザー110bは、スケジューラエンジン120によって制御される動作方式に従って、スーパーバイザー・モードで実行され、永続的なハイパーバイザーは、ハンドラ・エンジン210の制御においてハイパーバイザー・モードで実行される。ハンドラ・エンジンは、ハイパーバイザー・モードとスーパーバイザー・モード間のプロセッサモード推移の試みを監視し、その試みに応答し、永続的なハイパーバイザーの必要に応じて、中断と再開を調整する。【選択図】図2A

Description

発明分野
本発明は、概して情報処理に関するものであり、特に、コンピュータの仮想化技術に関するものである。より詳細には、本発明は、コンピュータシステム内の複数のハイパーバイザーの共同運用に関するものである。
背景技術
今日のコンピュータシステムは、いろいろな用途(大規模データセンター又はパーソナルコンピューティング)において仮想化技術の利用が増加しているようである。仮想化とは、単一のコンピュータシステム上で、複数のオペレーティング・システムを実行し、利用可能なハードウェアリソースの利用率を最大化するような構成をサポートするものである。
例えば、パーソナルコンピュータのユーザは複数の仮想マシンを利用することができ、それにより、その単一のマシンでの異なるオペレーティング・システムにおいて、様々なアプリケーションを同時に実行することが可能となる。
多くの場合、仮想化は、ウェブホスティングサービスを提供する場合のような大容量サーバにおいて見られる
仮想マシンの運用は、一般に、ハイパーバイザーの使用が必要であり、ハイパーバイザーが、仮想マシンの実行を調整し、
仮想マシンのマネージャー又はディスパッチャーとして機能する。一般的に、ハイパーバイザーは、また、仮想マシンモニター(VMM)と呼ばれる。
コンピュータシステムに複数のハイパーバイザーがある場合、ハイパーバイザーの運用を適切に調整することが必要となる。仮想マシンにおけるハイパーバイザーの共同運用は、典型的には、それらの設計によって提供される。ハイパーバイザーが、コンピューティング・プラットフォームの制御を行うとき、プロセッサ状態(例えばプロテクションリング)は一時的に変化し、ハイパーバイザーのアクションが完了した後、プロセッサが初期状態に戻される。たとえば、Windowsオペレーティング・システムでは、異なる製造業者による複数の仮想マシンが、同時に動作している場合、スケジューラは、オペレーティング・システム内の通常のスレッドで行う方法と同じ方法で、(例えば、さまざまなスレッドの権限を考慮して)ハイパーバイザーを実行するための時間を割り当てる。
ハイパーバイザーコード自体は、特定のタイムクォンタム時間割当て量の満了時にその実行を正確に完了する。
しかし、このタイムクォンタムは、必ずしもOSのスケジューラによって割り当てられたタイムクォンタムと一致しないことに留意すべきである。
複数のハイパーバイザーが同時に使用されるシステムでは、従来のマルチタスク技術が効率的に機能しない可能性があり、最悪の場合には、それらは有効に機能しない場合さえある。これらの問題は、複数のハイパーバイザー間で、他のハイパーバイザーよりも高い特権レベルで実行されるハイパーバイザーが存在する場合、さらに悪化する。
例えば、永続的なハイパーバイザーが、非常に重要な仮想マシンを実行するために使用される場合、1つ又は複数の非永続的なハイパーバイザーと並んで、従来のマルチタスク技術は、永続的なハイパーバイザー用の永続的な運用を適切に行うことを確実するという点において困難性を有している。もう一つの問題は、他の従来のハイパーバイザーは、永続的なハイパーバイザーの存在を認識しないかもしれないし、ハイパーバイザー・モードのプロセッサ上での実行を先に行なおうとしたときに、オペレーティング・システムをクラッシュする可能性があるという問題である。従って、複数のハイパーバイザーの効果的かつ効率的な同時実行を容易にするために、解決策が必要となる。
発明の概要
本発明の一実施態様は、複数のハイパーバイザーの共同運用を調整するための専用のシステムに対応するものである。システムは、プロセッサ、データストレージ、及び入力/出力機能を有するコンピューティング・プラットフォームを備えている専用機である。プロセッサは、ハイパーバイザー・モードとスーパーバイザー・モードの間の切り替え可能であり、ハイパーバイザー・モードはスーパーバイザー・モードよりも高い特権レベルを提供する。コンピューティング・プラットフォームは命令を含み、その命令を実行すると、コンピューティング・プラットフォームは、永続的なハイパーバイザー及び非永続的なハイパーバイザーと、スーパーバイザー・モードで非永続的なハイパーバイザーの運用を調整するように構成されたスケジューラエンジンと、ハイパーバイザー・モードで、永続的なハイパーバイザーの運用を調整するように構成されたハンドラ・エンジンと、を実装する。
ハンドラ・エンジンは、ハイパーバイザー・モードとスーパーバイザー・モードの間で、プロセッサのモード推移の試みを監視し、その試みに応答する。ハイパーバイザー・モードからスーパーバイザー・モードへのモード推移の試みに応答して、ハンドラ・エンジンは、プロセッサの状態の保存することを含む、永続的なハイパーバイザーの実行を中断し、スーパーバイザー・モードで非永続的なハイパーバイザーを実行するようにプロセッサ状態を推移する。
スーパーバイザー・モード命令の実行の終了に応答して、ハンドラ・エンジンは、プロセッサ状態を保存することを含む、非永続的なハイパーバイザーの実行を中断し、ハイパーバイザー・モードで永続的なハイパーバイザーを実行するようにプロセッサ状態を推移する。
本発明は、添付の図面に関連し、本発明の様々な実施形態の以下の詳細な説明を考慮して、より完全に理解することができる。
図1は、永続的なハイパーバイザー及び1つ又は複数の非永続的なハイパーバイザーを含む、複数のハイパーバイザーが動作している、従来のオペレーティング・システムの一部を示す図である。
図2Aは、一実施形態に係るシステム内の複数のハイパーバイザーの実行を確実にするためのシステムを示す図である。
図2Bは、一実施形態に係るハンドラ・エンジンの例示的なアーキテクチャーを示すブロック図である。
図3は、一実施形態に係る、図2Aから図2Bに示されたシステムの運用のプロセスを示す。
図4は、本発明の態様の実装がなされた、改善された機能を有する専用機として実行されるコンピュータシステムを示す図である。
本発明は、種々の修正及び代替の形態が容易であり、その具体的態様は、図面に例として示されており、詳細に説明する。しかしながら、その意図は、本発明を記載される特定の実施形態に限定するものではないということが理解されるべきである。それどころか、本意図は、添付の特許請求の範囲によって定義される本発明の精神および範囲内に入るすべての修正、均等物、および代替物をカバーするものである。
詳細な説明
I 用語
以下の用語は、本明細書で使用される用語の定義を規定する。この用語集は本願のみに適用可能である。
「コンピューティング・プラットフォーム」、「コンピュータ」及び「コンピュータシステム」:相互操作可能な電子デバイスのシステム又は電子デバイスであり、1つ又は複数のプロセッサ、データストレージ、入出力デバイスなどのハードウェアを含む。それは、ハードウェアにより実行されるソフトウェア命令に従って情報を格納及び操作することができる。
それは、1つの物理的なマシンであってもよく、又は、複数の物理的なマシン間に分散してもよい。
クラウドコンピューティング分散モデルの場合、役割又は機能によって、又は、プロセススレッドによって、分散することもできる。
例として、ルータ、スイッチなどのネットワークデバイスなどとともに、デスクトップ又はモバイル型のパーソナルコンピュータ(PC)、スマートフォン、及びタブレットを含む。
コンピューティング・プラットフォームは、スタンドアロンデバイス、又は、組み込みデバイスであってもよく、組み込みデバイスは、より大きなデバイス又はシステムの一部であってもよい。
「データストレージ」:1つ又は複数の電子ハードウェアデバイスであって、物理的ストレージ媒体にデータを格納する。例としては、揮発性ストレージ(例えば、ランダムアクセスメモリ(RAM)、静的又は動的)、非揮発性ストレージ(例えば、電気的消去可能プログラマブル読み出し専用メモリ、磁気ディスク、等)が挙げられる。
「ドライバ」:デバイス(ディスクドライブ等)と、デバイス(オペレーティング・システム・シェル等)を用いるプログラムの間の通訳のような役目を担うエンジン又はコンポーネントである。ドライバは通常、プログラムから汎用コマンドを受け取り、その後、デバイスのために専用のコマンドに変換する。
「エンジン」:実世界のデバイス、コンポーネント、又はコンポーネント配置であり、マイクロプロセッサシステム及びプログラム命令セット(エンジンに特定の機能を実装するようにエンジンを適用させるもの)によって、ハードウェア又はハードウェア及びソフトウェアの組合せを用いて実装される。
それは、(実行される間に)マイクロプロセッサシステムを専用のデバイスに変換する。
エンジンはまた、
ハードウェアのみによって容易となる特定の機能、及びハードウェアとソフトウェアの組み合わせによって容易となる他の機能の、両者の組み合わせとして実装することもできる。
ある実装形態では、エンジンの少なくとも一部、場合によっては、全部は、1つ又は複数のコンピュータのプロセッサ上で実行することができ、それは、オペレーティング・システム、システム・プログラム、及びアプリケーションプログラムを実行する。
一方、マルチタスク、マルチスレッド、そこでの適切な分散(例えば、クラスタ、ピア・ツー・ピア、クラウド等)処理、又は他の類似の技術を使用してエンジンを実装する。
さらに、エンジンは、1つ以上のサブエンジンにより、構成されることができ、そのそれぞれが、それ自体でエンジンとみなすことができる。
「ハイパーバイザー」:仮想マシンモニター(VMM)とも呼ばれる。それは、プロセッサによって実行可能なプログラムであり、仮想マシンの実行を調整し、仮想マシンのマネージャー又はディスパッチャーとして振舞う。
ハイパーバイザーは、仮想オペレーティングプラットフォームを有するゲスト・オペレーティング・システム又はシステム・プログラムを提示し、且つ、ゲスト・オペレーティング・システム又はシステム・プログラムの実行を管理する。
「ハイパーバイザー・モード」:スーパーバイザー・モードよりもさらに高い特権レベルとして関連付けられたプロセッサモードである。ハイパーバイザー・モードは、典型的には、専用の命令を提供する。
その命令により、1つ又は複数のハイパーバイザーの能力を、異なるオペレーティング・システム又はその他のシステム・プログラムに分けることが容易となり、それにより、相互に影響を与えることを回避され、各々がスーパーバイザー・モードで実行される。
典型的に、スーパーバイザー・モードはプロテクションリング0として指定されているシステムでは、ハイパーバイザー・モードは、プロテクションリング1として指定されている。
「入力/出力デバイス」又は「入力/出力機能」:コンピュータシステムの電子的ハードウェア部分である。それにより、コンピュータシステムへの入出力する情報の流れを容易にする。
例として、ネットワークインターフェースデバイス、モニター、キーボード、マウス、プリンタ、シリアルポートなど)が挙げられる
「永続的なハイパーバイザー」:運用の通常の流れで、オペレーティング・システム又は他の不可欠なプログラムのアクティブで継続的なプロセスとして実行されることが期待されているハイパーバイザーである。この永続的な動作方式は、定期的又は非永続的な方式とは異なり、それは、永続的なハイパーバイザーが実行している一方で、定期的なハイパーバイザーのシャットダウンが終了した後に、ハイパーバイザーは特定のタスクの為に時々使用されるという方式である。永続的なハイパーバイザーの例は、非常に重要な仮想マシンの継続的な実行を必要とするハイパーバイザーを含んでおり、又はハイパーバイザーは、ウイルス対策プロセス等として、セキュリティ関連の運用の実行を確実にするために必要である。
「プロセッサ」:基本算術演算、論理演算、一時的なストレージ、及び、システムの入力/出力運用を実行することにより、コンピュータプログラムの命令を実行するコンピュータシステムの電子ハードウェア部分である。典型的に、プロセッサは、(単一のチップ上に集積型)マイクロプロセッサとして実装されている。この定義は、複数の相互接続された集積回路上に実装されるプロセッサ回路を含む。現代のプロセッサは、典型的には、複数のプロセッシングコアを含み、複数のプロセッシングコア間で作業負荷を分散することができる。
「プロセッサモード」:「特権レベル」とも呼ばれ、あるコンピュータアーキテクチャーのプロセッサ用の動作方式である。それは、運用タイプ及び範囲において、1つ又は複数の制限が選択的に適用され、特定のプロセスによって行なわれ、プロセッサによって実行されることができる。例えば、高度に信頼できるカーネルコード、及び、ある場合において、高度に信頼できるドライバ、又はその他のシステム・プログラムは、スーパーバイザー・モードと呼ばれる、無制限(又は比較的少ない制限)モードでの実行が許可されており、一方、他のプロセス(オペレーティング・システムの非監視部を含む)は、ユーザーモードと呼ばれる、比較的より制限されたモードで実行し、且つ、その代わりに制限された運用を実行するために、より信頼できるカーネルを要求するシステムコールを使用する必要がある。プロセッサモードは、プロテクションリングアーキテクチャーをサポートしている。
「プロテクションリング」:コンピュータシステムのアーキテクチャー内の権限における、2つ又はそれ以上の階層レベル又はレイヤーである。これは、一般的に、あるアーキテクチャーによって強いられたハードウェアであり、そのアーキテクチャーは、ハードウェア又はマイクロコードレベルで、異なるプロセッサモードを提供する。例えば、リングは、伝統的に、ほとんどの権限(最も信頼されている、通常はゼロが採番される)から、最も少ない権限(最も信頼されてない、通常最も高いリング番号が採番される)に階層的に配置される。典型的には、リング0は、オペレーティング・システムのカーネルが実行されるレベルであり、そして、高い番号のリングは、増大した制限のある特権レベルに関連付けられている。ある現代のプロセッサは、リング0よりもさらに高い特権レベルをサポートしており、それは、リング-1と呼ばれる。
「スーパーバイザー・モード」:高度に信頼できるオペレーティング・システムのカーネルプロセス、及び、特定の高度に信頼できるドライバなどの、より高いの特権レベルのプロセスに関連付けられたプロセッサモード。スーパーバイザー・モードは、様々なディスクリプタテーブル用のレジスタを変更するなどの、センシティブなマシンコード運用、又は、割り込みを無効にするなどを行う運用、の実行を許可する。スーパーバイザー・モードは、また、制限されたアドレス空間へのアクセス権を与えることができ、それは、ユーザーモードプロセスによってアクセスできない、メモリ管理ハードウェア、及び、特定の周辺機器である。
「システムの仮想マシン」:完全なオペレーティング・システムの実行をサポートする完全なシステムプラットフォームを提供する仮想マシン。これらは通常、既存のアーキテクチャーをエミュレートし、仮想マシンにおける複数のインスタンスを提供するために構築され、それぞれが分けられたコンピューティング環境を提供している。このタイプのアーキテクチャーは、クラウド・コンピューティング・サービス、ウェブホスティング、および他の多くのサービスをサポートしているサーバ上のユビキタスである。システムの仮想マシンは、ホストマシンとして知られている物理的なコンピュータシステムのハードウェア上、又はホストマシンで直接実行するオペレーティング・システムの上で、直接実行できる(オペレーティング・システムレベルの仮想化として知られている)。例としては、Windowsの仮想PC、VMware、Oracle VM等を含む。
「ユーザーモード」:アプリケーションプログラム等の低い特権レベルのプロセスに関連付けられたプロセッサモード。ユーザーモードは、データを変更又は破壊、入力/出力機能及び周辺機器にアクセス、様々なプログラムの実行を調整、が可能となるセンシティブな運用の実行を禁止する。ユーザーモードで実行中のプロセスは、その代わりにアクションのこれらの種類を実行するために、より高い特権レベルのプロセスを要求しなければならない。
「仮想マシン」は、ホストマシンのハードウェアを使用して、物理マシンのようにプログラムを実行するコンピュータシステムにおけるソフトウェアベースが実装されたものである。仮想マシンは、実際のマシンのいずれかに対応するその使用及び程度に基づいて、2つの主要な分類(システムの仮想マシン、およびプロセスの仮想マシン)に分けられる。
「永続的なハイパーバイザー及び非永続的なハイパーバイザーを実行するための手段」:永続的なハイパーバイザー110a及び非永続的なハイパーバイザー110bを実行するための、1つ又は複数の処理ユニット404、システムメモリ406、及びコード。後述する様々な実施形態の各々のいずれか(又は組合せ)、又は、それらの構造的均等物の各々のいずれかである。
「ハンドラ・エンジンを実行するための手段」:ハンドラ・エンジン210を実行するための、1つ又は複数の処理ユニット404、システムメモリ406、及びコード。後述する様々な実施形態の各々のいずれか(又は組合せ)、又は、それらの構造的均等物の各々のいずれかである。
II. 好ましい実施形態の説明
本発明の態様は、他のハイパーバイザーも存在する場合、コンピュータシステム内でのハイパーバイザーの1つの永続的な運用を容易にするコンピュータ的解決に対応するものであり、そこでは、それら他のハイパーバイザーは、同じプロセッサコアで定期的に動作する。この文脈において、ハイパーバイザーの持続性は、ハイパーバイザーが、運用の通常の流れでは、オペレーティング・システム又は他の不可欠なプログラムのアクティブで継続的なプロセスとして実行されることが期待される、ことを意味する。この永続的な動作方式は、定期的又は非永続的な方式とは異なり、それは、永続的なハイパーバイザーが実行している状態の一方で、定期的なハイパーバイザーのシャットダウンが終了した後に、ハイパーバイザーは、特定のタスクの為に時々使用されるという方式である。
永続的なハイパーバイザー110аの例は、非常に重要な仮想マシンの継続的な実行を必要とするハイパーバイザーであってもよく、又は、多くのウイルス対策プロセス等として、セキュリティ関連の運用の実行を確実にするために必要とされるハイパーバイザーであってもよい。非永続的なハイパーバイザー110bの例には、仮想マシンのディスパッチャーとすることができ、また、仮想マシンモニター(VMM)と呼ばれ、それは、California Palo AltoにあるVMWare株式会社製のもの、California Redwood CityにあるOracle株式会社製、及び、Florida Fort LauderdaleにあるCitrix Systems 株式会社によるXen等である。
永続的なハイパーバイザー110aは、一般的に、非永続的なハイパーバイザー110bのいずれかのものより高い特権レベルで実行されるであろう。例えば、オペレーティング・システムよりも高い特権レベルを有するプロテクションリングをサポートする最新のプロセッサで、ハイパーバイザー110aは、より高い特権レベル(例えば、プロテクションリング1、すなわち、「ハイパーバイザー・モード」)で実行するであろう。一方、非永続的なハイパーバイザー110bは、オペレーティング・システムの特権レベルで実行することになるであろう。
本発明の態様に係るコンピュータシステムは、様々なエンジンを含み、その各々は、機能又は機能セットが自主的に実行するように、構築、プログラム、構成、又は、それ以外の方法で適用される。本明細書で使用されているエンジンという用語は、実世界のデバイス、コンポーネント、又は、ハードウェアを用いて実装されているコンポーネントの配置を意味している。ハードウェアを用いる場合、例えば、特定用途向け集積回路(ASIC)又はフィールド・プログラマブル・ゲート・アレイ(FPGA)よって、実装される。ハードウェアとソフトウェアとの組み合わせとして、マイクロプロセッサシステム、及び、プログラム命令セット等によって、特別に自主的な機能を実装するようにエンジンに適応する。これにより(実行している間に)マイクロプロセッサシステムを専用機に変換される。エンジンは、ハードウェアのみによって容易となる特定の機能、及びハードウェアとソフトウェアの組み合わせによって容易となる他の機能の、両者の組み合わせとして実装することもできる。特定の実施態様では、エンジンの少なくとも一部、及び場合によっては、全てが、1つ又は複数のコンピュータのプロセッサを用いて、実装される。そのコンピュータは、また、エンジンを実装しながら(それにより専用機となる)、オペレーティング・システム、システム・プログラム、及びアプリケーションプログラムを実行する。各エンジンは、物理的及び論理的に適切である様々な構成のいずれかで、物理的に実現することができ、概して、制約が明示的に示されている場合を除き、本明細書に例示的に示される任意で特定の実装に制限されるものではない。また、エンジンは、それ自体が1つ以上のサブエンジンで構成されることができ、その各々は、それ自体でエンジンとみなすことができる。
また、本明細書で説明した実施形態で、様々なエンジンの各々は、定義された機能に対応するものである。しかしながら、他の意図される実施形態では、各機能が複数のエンジンに分散されてもよいことが理解されるべきである。同様に、他の意図される実施形態では、複数の定義された機能は、これらの複数の機能を実行する単一のエンジンによって、おそらく他の機能と並んで、又は本明細書に具体的に例に示されているものとは異なって、エンジンセットの中で分散される、ように実装されることができる。
図1は、従来のオペレーティング・システム(OS)10の一部を示す図であり、そのOS上で複数のハイパーバイザーが動作している。それは、例えば、永続的に実行されるハイパーバイザー110a、及び、他のハイパーバイザー110b(そこには一つ以上が存在することができる)である。ハイパーバイザー110a及び110bの従来の運用の場合には、従来のタスクスケジューラ120は、各々のハイパーバイザーを実行するための時間を割り当てるだろう。例えば、Windows OSにおいて、スケジューラ120は、優先順位に応じて、マルチタスク制御を管理し、優先度の高いスレッドは第一の優先順位で実行することを意味している。その結果、スケジューラ120を使用しているOS10内で、高い優先順位が割り当てられている場合であったとしても、
ハイパーバイザー110аの永続的な運用を確実することは不可能である。というのも、遅かれ早かれ、スケジューラ120は、ハイパーバイザー110bのコードの実行のために、タイムクォンタムを割り当てるだろう。この文脈では、ハイパーバイザー110bの1つを実行するということは、ハイパーバイザーのもとで動作している仮想マシンの実行であることを本質的に意味している。
様々な実施形態で、タスクスケジューラ120と同様にハイパーバイザー110a, 110bは、各々物理的にエンジンとして実現され、そのエンジンは、コンピューティング・プラットフォームの関連部分(例えば、ハードウェア、必要なファームウェア又はソフトウェアにおける全てのコンポーネントでの組み合わせ)を含んでいる。コンポーネントは、例えば、コンピュータシステムの基本入力/出力システム、デバイスドライバ、ライブラリ、及び他のプログラム命令の関連するパーツであり、プログラム命令は、コンピューティング・プラットフォームのストレージ媒体に格納され、コンピュータシステムのプロセッサ(複数可)に実行されている。
永続的なハイパーバイザー110aは、いくつかの理由のためにウイルス対策の運用を実行する間に必要となることに留意されたい。
まず、ハイパーバイザーは、OSコアでの悪質なコードの実行(スーパーバイザー・モード、リング0)レベル(例えば、ルートキット)の検出を可能にできる。
次に、ハイパーバイザーは、PatchGuardなどのOSコアプロテクションを避けるために必要とされることができる。
マルチコアプロセッサでは、ハイパーバイザーの個別のコピーは、各コアにおいて動作するのではなく、異なる対応の前後関係を有している。
図2Aは、一実施形態に係るシステム内における複数のハイパーバイザーの実行を確実にするためのシステムを示す。図に示すように、オペレーティング・システム100は、永続的なハイパーバイザー110aを取り仕切る。本実施形態において、永続的なハイパーバイザー110aは、(ハイパーバイザー部110bとは異なり)、スケジューラ120によって制御されておらず、ハンドラ210によって制御され、ハンドラは、システムの状態情報220を監視する。ハンドラ210は、様々な実施形態において、エンジンとして物理的に実装され、そのエンジンは、コンピューティング・ハードウェア及び対応するソフトウェア・コンポーネントを含む。関連する実施形態において、ハンドラ210は、コンピューティング・ハードウェア上で実行される専用のOSドライバを使用して実装されている
一般的には、プロセッサがハイパーバイザー・モードで(プロテクションリング1)である場合に、任意のハイパーバイザー110bがそのコードの実行を開始しようとする時、プロセッサの動作モードの変更は、最初に生じる。なぜなら、この時間の間に、仮想マシンの次の起動の準備することを担うコマンドが実行されるためである。
例えば、Page Directory及びCR3のレジストリが完全にリロードされる。
仮想マシン110bの起動における他の例としては、(VMWareの場合)vmrunコマンドの実行である。
これらのパラメータとコマンドのいずれかは、システムの状態情報220として、図2Aにまとめて表されている。
ハンドラ210は、対応するハイパーバイザー110bを実行するかどうかの必要性を見極めるために、特定のパラメータに対する任意の修正又はコマンドの実行(それらを傍受することによって)を監視する。したがって、ハンドラ210は、永続的なハイパーバイザー110aの実行を停止するだろう。
図2Bは、一実施形態に係るハンドラ・エンジン210の例示的なアーキテクチャーを示すブロック図である。
コマンド検出エンジン250及びパラメータ変更モニターエンジン252は、システムの状態情報220をモニターするために、各々がプログラムされるか、又は別な方法で構成される。
コマンド検出エンジンは、コマンドを検出し、一方、パラメータ変更モニター252は、オペレーティング・システム内の特定のパラメータの変更を検出する。
ハイパーバイザー実行検出器256は、検出したコマンドとパラメータの変更を、基準に照らして比較し、ハイパーバイザー110bの実行のためのコールを指示し、又は、永続的なハイパーバイザー110aにおける運用を再開するように適合するためのコールを指示する。
このような基準は、プロセッサの状態の変化、Page Directory又はCR3のレジスタのリロード、或いは、vmrunコマンドの生成を含めることができる。
関連する実施形態において、インターセプター・エンジン258は、モード推移の試みにおける、コマンド又はパラメータ変更を示す存在を検出したことに応答して、
特定の一連のアクションが行われるまで、そのコマンドの実行又はモード推移を保持するために、
プログラムされ、又は別な方法で構成される。
永続的なハイパーバイザー実行制御エンジン260は、以下に詳細に説明するように、そのようなアクションを行うように、プログラムされ、又は別な方法で構成される。
以下は、一実施形態に係る、ハンドラ210を構成する他のエンジンと連携して、永続的なハイパーバイザー実行制御エンジン260による、永続的なハイパーバイザー110aのアクティブ化及び非アクティブ化におけるプロセスについての、より詳細な説明である。このプロセスは、次のアクションが含まれる。
a.プロセッサの以前の状態の保存(例えば、ハイパーバイザー・モードにおいて、ハイパーバイザー110bの1つのコードを実行した最後の瞬間。例:プロテクションリング1)。
b.異なるモードでの永続的なハイパーバイザー110aのコードの実行、例えば、スーパーバイザー・モード(プロテクションリング0)。
c.ハイパーバイザー110bにおける任意のコードを実行する試みの決定。
d.ハイパーバイザー110bによって、仮想化のアクティブ化のための命令を正確に取り扱うために、プロセッサの以前の状態の復元。
e. スーパーバイザー・モードでのハイパーバイザー110bのコードを実行するのに先立って、
ハイパーバイザー・モードの終了、及び、ハイパーバイザー110aの最後の命令へ制御の推移。
この運用により、
ハイパーバイザー110bがハイパーバイザー・モードで実行され、ハイパーバイザー110bが永続的なハイパーバイザー110aの存在に気づかない場合、
永続的なハイパーバイザー110aは、ハイパーバイザー・モードからスーパーバイザー・モードに切り替えられることを確実になる。
従って、永続的なハイパーバイザー110aのスレッドにおける次の命令は、
すでに異なるプロテクションリングの範囲内で、実行が継続されているので、
ハイパーバイザー・モード外ですでに実行されている。(一般的に、それはカーネルの優先レベルに対応するリング0になるだろう)
図3は、一実施形態に係る運用のプロセスを示す。
工程310において、ハンドラ210は、(コマンド検出器250及びパラメータ変更モニター252を使用して)システムのステータス情報220を監視する。
工程320において、ハイパーバイザー実行検出エンジン256が、システムの状態が変化した(例えば、ページディレクトリが上書きされ、又はvmrunコマンドが実行される)と判断した場合、
その後、工程330で、永続的なハイパーバイザー110aの実行は、永続的なハイパーバイザー実行制御部260によって停止される。
関連する実施形態において、工程320では、追加のチェックが、ハイパーバイザー実行検出エンジン256によって実行され、すなわち、CR3レジストリのリロードがコールされるようにプロセッサモードが決定される。
レジストリのリロードがカーネルモードからコールされた場合、
前後関係の単なる切替であると考えられ、
そして、ユーザーモードからコールされた場合、例えば、仮想マシンのプロセスからのコールがあったという、さらなる確認をすることが可能である。
このようなチェックにより、システムは、永続的なハイパーバイザー110aの停止の場合に備えて、その停止の必要性が絶対にないのに停止することを防ぐために、「偽のアクティベーション」の数を最小限にすることを可能となる。
工程340で、ハイパーバイザー実行検出エンジン256は、永続的なハイパーバイザー110aを再開することについての適性をチェックする。このアクションは、次の条件のうち1つ又は複数に応答することができる。
ハイパーバイザー110bの1つを実行するため、スケジューラ120によって割り当てられた実行タイムクォンタムは、満了となった。
システム120の状態変化が生じた。
ハンドラ210は、ハイパーバイザー110bの実行を監視し、その運用の終了に関する通知を受け取る(例えば、ハイパーバイザーの開発者が提供する、公式アプリケーションプログラマブルインターフェース、又はAPIを介して)。
工程350で、ハイパーバイザー110bのいずれかが実行を完了したと判定され、その後、工程360において、永続的なハイパーバイザー110aは、永続的なハイパーバイザー実行制御部260により再開される。
複数の異なるハイパーバイザー110bが存在する実施形態では、
最初のハイパーバイザー110bの実行完了後すぐに永続的なハイパーバイザー110aの再開するのに先立ち、
永続的なハイパーバイザー110aは、実行を再開する前に、それらの実行を完了するために、すべてのハイパーバイザー110bを待つ。
一実施形態では、永続的なハイパーバイザー110aの運用の再開は、タイマーの手順を用いて行われる。(例えば、Windows OSで、これはKeSetTimerコールを使用して行うことができる)
例えば、指定した時間の満了時(実行タイムクォンタムが期限切れとなったとき)に、
スケジューラ120は、コードが実行される(例えば、永続的なハイパーバイザー110aのスタート)べきかを決定する。
タイマーは、ハイパーバイザー110bのうちの1つが運用を完了し、永続的なハイパーバイザー110Aを起動することができるように、引き続き起動する次の時間を許可するためにリセットすることができる。
永続的なハイパーバイザー110aが停止されるべき時の他の一例は、システム220のステータス情報での、電力関連の変更に関するものである。例えば、「休止状態」モードを実行する時である。
この目的のために、電源に関連する機能(WindowsOSではPower Managementのコールバック関数)、又は、システム変数(WindowsOSではSYSTEM_POWER_STATE)は、監視されている。
永続的なハイパーバイザー110aを停止する必要がある他の例は、一部のコードを起動することである。
それは、また、プロセッサの状態、例えば、エミュレータ(QEMU (Quick Emulator)及び他の類似のプログラム、それらは、ウイルス対策アプリケーションで使用含む)に大きな変化をもたらす。しかし、エミュレータ及び永続的なハイパーバイザー110aが、ウイルス対策製品に含まれている場合、そのから、エミュレータの運用後、後者は自動的に永続的なハイパーバイザー部110aを起動することができる。
図4は、コンピュータシステム400をより詳細に示す図であり、本明細書に記載されるように、本発明の態様を実装し、改良された機能を有する専用のマシンになる。コンピュータシステム400は、パーソナルコンピュータ402などのコンピューティングデバイスを含んでもよい。パーソナルコンピュータ402は、1つ又は複数の処理ユニット404、システムメモリ406、ビデオ・インターフェース408、出力周辺インターフェース410、ネットワークインターフェース412、ユーザ入力インターフェース414、リムーバブル416及び非リムーバブル418メモリインターフェース、及び、種々のコンポーネントを結合する、システムバス又は高速通信チャネル420、を含む。様々な実施形態では、処理ユニット404は、複数の論理コアを有していてもよく、
論理コアは、システムメモリ406又はメモリ(リムーバブル416及び非リムーバブル418のメモリインターフェース418に装着された)などのコンピュータ可読媒体上に格納された情報を処理することができる。コンピュータ402のシステムメモリ406は、リードオンリーメモリ(ROM)422等の不揮発性メモリ又は、ランダムアクセスメモリ(RAM)424等の揮発性メモリを含んでもよい。ROM422は、コンピュータ402の他の部分と通信するのに役立つように、基本入力/出力システム(BIOS)426を含むことができる。RAM424は、オペレーティング・システム428、アプリケーションプログラム430、及び、他のプログラム・エンジン432等の、種々のソフトウェアアプリケーションのパーツを格納することができる。
さらに、RAM424は、プログラム又はアプリケーションデータ434のような他の情報を格納することができる。様々な実施形態において、RAM424は操作又は動作され、低レイテンシ且つ効率的なアクセスを必要とする情報を格納する。様々な実施形態では、RAM424は、ダブルデータレート(DDR)メモリ、エラー訂正メモリ(ECC)、又は、他のメモリ技術を備え、様々なレイテンシ、及び、RAMBUS 又は DDR2 及びDDR3等の構成を有している。
リムーバブル416及び非リムーバブル418のメモリインターフェースは、コンピュータ402をSSD等のディスクドライブ又は回転ディスクドライブと接続してもよい。
これらのディスクドライブ436は、オペレーティング・システム438、アプリケーションプログラム440、及び、その他のプログラム・エンジン442等の種々のソフトウェアアプリケーションのためのさらなるストレージを提供することができる。さらに、ディスクドライブ436は、プログラム又はアプリケーションデータ444等の他の情報を格納することができる。種々の実施形態では、ディスクドライブ436は、他のストレージ媒体と同様に、低レイテンシを必要としない情報を格納する。
さらに、オペレーティング・システム438、アプリケーションプログラム440のデータ、プログラム・エンジン442、及びプログラム又はアプリケーションデータ444は、上記に示すように、様々な実施形態で、RAM424に格納されているものと同じ情報であってもよく、又は、異なるデータであってもよい。それは、データを格納しているRAM424の潜在的に誘導されるものである。
さらに、リムーバル不揮発性メモリインターフェース416は、コンピュータ402を、磁気ポータブルディスクに接続し、それは、フロッピーディスク448、Iomega(登録商標)、Zip 又は Jazz、及び光ディスクドライブ450などの磁気媒体を利用するものである。Blu-Ray(登録商標)、DVD-R/ RW、CD-R/ RW及び他の類似のフォーマット等のコンピュータ可読媒体のストレージ用に、光学媒体452を利用する。
さらに他の実施形態では、リムーバルメモリの容量を増大させるために、ポータブル筐体54内に収容される、SSD又は回転ディスクを利用する。
コンピュータ402は、ローカルエリアネットワーク(LAN)458又は広域ネットワーク(WAN)460を介して1つ又は複数のリモートコンピュータ456と通信するためのネットワークインターフェース412を利用してもよい。ネットワークインターフェース412は、通信が可能となるように、ネットワークインターフェースカード(NIC)又は他のインターフェース(モデム462等)を利用することができる。モデム462は、電話回線、同軸ケーブル、光ファイバ、電力線、又は無線経由の通信を有効にすることができる。リモートコンピュータ456は、
類似のハードウェア及びソフトウェア構成を有してもよく、又は、リモートアプリケーションプログラム466を含んでいるメモリ464を有してもよい、そのプログラムは、コンピュータ402に追加のコンピュータ可読命令を提供することができる。様々な実施形態では、リモートコンピュータのメモリ464は、識別されたファイル情報などの情報を格納するために利用することができ、ファイル情報は、後でローカルシステムメモリ406にダウンロードすることができる。さらに、様々な実施形態において、リモートコンピュータ456は、アプリケーションサーバ、管理サーバ、クライアントコンピュータ、又はネットワーク機器であってもよい。
ユーザは、マウス468及びキーボード470等のユーザ入力インターフェース414に接続された入力デバイスを用いてコンピュータ402に情報を入力することができる。
さらに、入力デバイスは、トラックパッド、指紋スキャナ、ジョイスティック、バーコードスキャナ、メディアスキャナ等であってもよい。
ビデオ・インターフェース408は、モニター472等の表示に視覚情報を提供することができる。
ビデオ・インターフェース408は、組み込みインターフェースであってもよいし、個別のインターフェースであってもよい。
さらに、コンピュータは、コンピュータ402の運用の自由度を増加させるために、複数のビデオ・インターフェース408、ネットワークインターフェース412、及び、リムーバブル416及び非リムーバブル418インターフェースを利用することができる。
さらに、様々な実施形態は、コンピュータ402の性能及び機能を変化させるために、複数のモニター472及び複数のビデオ・インターフェース408を利用する。
他のコンピュータ・インターフェースは、出力周辺インターフェース410等をコンピュータ402に含めることができる。このインターフェースは、コンピュータ402に追加機能を提供するために、プリンタ474又はスピーカ476、或いは、他の周辺装置に接続することができる。
コンピュータ402における、様々な代替の構成と実装は、本発明の精神の範囲内にある。
これらの変化は、制限はなく、ユニバーサル・シリアル・バス(USB)、プリンターポート、PCIバス、PCIエクスプレス、又は、上記に示した様々なコンポーネントの統合したもの(ノースブリッジやサウスブリッジなどのチップセットコンポーネント)等のシステムバス420に接続された追加のインターフェース、を含んでも良い。
例えば、種々の実施形態において、処理ユニット404は、システムメモリ406からのデータのより効率的(システムバス420が提供するよりも)な転送を可能にするために、組込み型メモリコントローラ(図示せず)を含んでもよい。
上記の実施形態は、例示であり、限定を意図するものではない。追加の実施形態は、特許請求の範囲内である。加えて、本発明の態様について、特定の実施形態を参照して説明してきたが、特許請求の範囲によって定義されるような、本発明の範囲から逸脱することなく、改変がなされ得ることを当業者は、認識するだろう。
関連技術の当業者は、本発明が上記の任意の個々の実施形態に示したよりも、より少ない機能を備えることができることを認識するだろう。
本明細書に記載の実施形態は、本発明の様々な特徴を組み合わせた方法の網羅的な提示であることを意味するものではない。
従って、実施形態は、明示的な記載がない限り、相互に機能の排他的な組合せではない。
むしろ、本発明は、当業者によって理解されるように、異なる個々の実施形態から選択された、異なる個々の機能の組み合わせを含むことができる。
上記文書のいずれの援用も、本明細書の明示的な開示に反しない主題の組み込みに限られる。
更に、上記文書のいずれの援用も、
文書に含まれる特許請求の範囲が、本出願の特許請求の範囲に援用されないように制限されている。
しかしながら、文書のいずれかにおける特許請求の範囲は、具体的に除外されない限り、本明細書の開示の一部として組み込まれる。
上記文書のいずれの援用も、文書で提供される任意の定義が、本明細書に明示的に含まれていない限り、本明細書に参考として援用されないように制限されている。
本発明のための請求項を解釈する目的のために、
米国特許法112条第6項の条文は、具体的な用語“means for” 又は “step for”が、請求項に記載されてない限り、適用されるものではない、ということが明白に意図されている。

Claims (21)

  1. 複数のハイパーバイザーの共同運用を調整するためのシステムであって、
    前記システムは、プロセッサ、データストレージ、及び入力/出力機能、を有するコンピューティング・プラットフォームを備え、
    前記プロセッサは、ハイパーバイザー・モードとスーパーバイザー・モードの間の切替が可能であり、
    前記ハイパーバイザー・モードは、前記スーパーバイザー・モードよりも高い特権レベルを提供し、
    前記コンピューティング・プラットフォームは、命令を含み、
    前記命令は、前記コンピューティング・プラットフォームによって実行された時、前記コンピューティング・プラットフォームが、
    永続的なハイパーバイザー及び非永続的なハイパーバイザーと、
    前記スーパーバイザー・モードでの前記非永続的なハイパーバイザーの運用を調整するように構成されるスケジューラエンジンと、
    前記ハイパーバイザー・モードで、前記永続的なハイパーバイザーの運用を調整するように構成されるハンドラ・エンジンと、を実装し、
    前記ハンドラ・エンジンは、前記ハイパーバイザー・モードと前記スーパーバイザー・モード間で、前記プロセッサのモード推移の試みを監視しその試みに応答し、
    前記ハイパーバイザー・モードから前記スーパーバイザー・モードへのモード推移の試みに応答して、前記ハンドラ・エンジンは、前記プロセッサの状態の保存することを含む、前記非永続的なハイパーバイザーの実行を中断し、及び、前記スーパーバイザー・モードで前記非永続的なハイパーバイザーを実行するようにプロセッサ状態を推移する、という命令であり、
    前記スーパーバイザー・モード命令の実行の終了に応答して、前記ハンドラ・エンジンは、前記プロセッサ状態を保存することを含む、前記非永続的なハイパーバイザーの実行を中断し、及び、前記ハイパーバイザー・モードで前記永続的なハイパーバイザーを実行するようにプロセッサ状態を推移する、
    システム。
  2. 前記ハンドラ・エンジンは、オペレーティング・システム・ドライバを使用して実現される、請求項1に記載のシステム。
  3. 前記ハンドラ・エンジンは、前記ハイパーバイザー・モードと前記スーパーバイザー・モードの間でのプロセッサモード推移を示す前記コンピューティング・プラットフォームの状態情報をモニターするように構成される、請求項1に記載のシステム。
  4. 前記ハンドラ・エンジンは、前記ハイパーバイザー・モードと前記スーパーバイザー・モードの間でのプロセッサモード推移に関連する少なくとも一つのコマンドをモニターするように構成される、請求項1に記載のシステム。
  5. 前記少なくとも一つのコマンドはvmrunコマンドを含む、請求項4に記載のシステム。
  6. 前記ハンドラ・エンジンは、前記ハイパーバイザー・モードと前記スーパーバイザー・モードの間でのプロセッサモード推移に関連する少なくとも一つのパラメータの状態変化を検出するように構成される請求項1に記載のシステム。
  7. 前記パラメータの状態変化は、ページディレクトリのリロードを含む、請求項6に記載のシステム。
  8. 前記パラメータの状態変化は、CR3レジスタのリロードを含む、請求項6に記載のシステム。
  9. 前記ハンドラ・エンジンは、インターセプター・エンジンを含み、
    前記インターセプター・エンジンは、
    前記永続的なハイパーバイザーの運用を制御するための一連のアクションが完了するまで、
    モード変更の試みの検出に応答して、
    前記プロセッサのモード変更の実行を中断するように構成される、
    請求項1に記載のシステム。
  10. 前記ハンドラ・エンジンは、以下のように構成される、
    前記ハイパーバイザー・モードから前記スーパーバイザー・モードへのモード推移の試みに応答して、
    前記ハンドラ・エンジンは、前記モード推移によって生じるプロセッサモードを決定し、
    前記プロセッサモードの決定に基づいて、
    前記永続的なハイパーバイザーの中断は許可され、又は許可されない、
    請求項1に記載のシステム。
  11. 前記ハンドラ・エンジンは、
    前記非永続的なハイパーバイザーの実行を停止するというコールを示す状況に対応する為に、前記スケジューラエンジンをモニターするように構成され、
    前記状況に応答して、
    前記ハンドラ・エンジンは、中断された永続的なハイパーバイザーの運用を再開する、
    請求項1に記載のシステム。
  12. ハイパーバイザー・モードとスーパーバイザー・モードの間での切り替え可能なプロセッサを備えたコンピューティング・システム内における、複数のハイパーバイザーの共同運用を調整するための方法であって、
    前記ハイパーバイザー・モードは、前記スーパーバイザー・モードより高い特権レベルを提供し、
    前記方法は、
    前記コンピューティング・システムによって、永続的なハイパーバイザー及び非永続的なハイパーバイザーを実行するステップと、
    前記コンピューティング・システムによって、前記ハイパーバイザー・モードで前記永続的なハイパーバイザーの運用を調整するハンドラ・エンジンを実行し、
    前記ハンドラ・エンジンは、前記ハイパーバイザー・モードと前記スーパーバイザー・モード間でのプロセッサのモード推移の試みを監視し、その試みに応答し、
    前記ハイパーバイザー・モードから前記スーパーバイザー・モードへのモード推移の試みに応答して、前記ハンドラ・エンジンは、前記プロセッサの状態を保存することを含む、前記永続的なハイパーバイザーの実行を中断し、前記スーパーバイザー・モードで前記非永続的なハイパーバイザーを実行するプロセッサの推移する、ステップと、を有し、
    前記非永続的なハイパーバイザーは、スケジューラエンジンによって制御された動作方式に応じて、前記スーパーバイザー・モードで実行され、
    前記スーパーバイザー・モードの命令の実行の終了に応答して、前記ハンドラ・エンジンが、前記プロセッサ状態の保存することを含む、前記非永続的なハイパーバイザーの実行を中断し、前記永続的なハイパーバイザー・モードで前記ハイパーバイザーを実行するようにプロセッサ状態の推移する、
    方法。
  13. 前記ハンドラ・エンジンは、前記ハイパーバイザー・モードと前記スーパーバイザー・モードとの間でプロセッサモード推移を示すコンピューティング・プラットフォームの状態情報をモニターする、請求項12に記載の方法。
  14. 前記ハンドラ・エンジンは、前記ハイパーバイザー・モードと前記スーパーバイザー・モードとの間のプロセッサモード推移に関連する少なくとも一つのコマンドをモニターする、請求項12に記載の方法。
  15. 前記少なくとも一つのコマンドは、vmrunコマンドを含む、請求項14に記載の方法。
  16. 前記ハンドラ・エンジンが、前記ハイパーバイザー・モードと前記スーパーバイザー・モードとの間のプロセッサモードの推移に関連する少なくとも1つのパラメータの状態変化を検出する、請求項12に記載の方法。
  17. 前記パラメータの状態変化が、ページディレクトリ又はCR3レジスタのリロードを含む、請求項16に記載の方法。
  18. 前記ハンドラ・エンジンが、
    モード変更を行う試みの検出に応答して、
    永続的なハイパーバイザーの動作を制御するための一連のアクションが完了するまで、
    プロセッサのモード変更の実行を中断する、
    請求項12に記載の方法。
  19. 前記ハイパーバイザー・モードから前記スーパーバイザー・モードへのモード推移の試みに応答して、
    前記ハンドラ・エンジンは、発信された前記モード遷移によって生じるプロセッサモードを決定し、
    前記プロセッサモードの決定に基づいて、
    前記永続的なハイパーバイザーの中断は許可され、又は、許可されない、
    請求項12に記載の方法。
  20. 前記ハンドラ・エンジンは、
    非永続的なハイパーバイザーの実行を停止するというコールを示す状況に対応する為に、
    前記スケジューラエンジンをモニターするように構成され、
    前記状況に応答して、
    前記ハンドラ・エンジンは、中断された永続的なハイパーバイザーの運用を再開する、
    請求項12に記載の方法。
  21. ハイパーバイザー・モードとスーパーバイザー・モードの間で切り替え可能なプロセッサを備えたコンピューティング・システム内における、複数のハイパーバイザーの共同運用を調整するためのシステムであって、
    前記ハイパーバイザー・モードは、前記スーパーバイザー・モードよりも高い特権レベルを提供し、
    前記システムは、
    永続的なハイパーバイザーと非永続的なハイパーバイザーを実行するための手段と、
    前記ハイパーバイザー・モードで前記永続的なハイパーバイザーの運用を調整するように前記ハンドラ・エンジンを実行し、
    前記ハンドラ・エンジンは、前記ハイパーバイザーと前記スーパーバイザー・モード間のプロセッサのモード推移の試みを監視し、その試みに応答し、
    前記ハイパーバイザー・モードから前記スーパーバイザー・モードへのモード推移の試みに応答して、前記ハンドラ・エンジンは、前記プロセッサの状態を保存することを含む、前記永続的なハイパーバイザーの実行を中断し、前記スーパーバイザー・モードで前記非永続的なハイパーバイザーを実行するようにプロセッサを推移する、手段と、を備え、
    前記非永続的なハイパーバイザーは、スケジューラエンジンによって制御された動作方式に応じて、前記スーパーバイザー・モードで実行され、
    前記スーパーバイザー・モードの命令の実行の終了に応答して、前記ハンドラ・エンジンが、前記プロセッサ状態の保存することを含む、前記非永続的なハイパーバイザーの実行を中断し、前記永続的なハイパーバイザー・モードで、前記ハイパーバイザーを実行するようにプロセッサ状態の推移する、
    システム。
JP2016052123A 2015-03-16 2016-03-16 コンピュータシステム内における複数のハイパーバイザーの共同運用を容易にするためのシステムおよび方法 Active JP6530723B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/659,049 US9286105B1 (en) 2015-03-16 2015-03-16 System and method for facilitating joint operation of multiple hypervisors in a computer system
US14/659,049 2015-03-16

Publications (3)

Publication Number Publication Date
JP2016173821A true JP2016173821A (ja) 2016-09-29
JP2016173821A5 JP2016173821A5 (ja) 2019-01-10
JP6530723B2 JP6530723B2 (ja) 2019-06-12

Family

ID=52875587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016052123A Active JP6530723B2 (ja) 2015-03-16 2016-03-16 コンピュータシステム内における複数のハイパーバイザーの共同運用を容易にするためのシステムおよび方法

Country Status (4)

Country Link
US (2) US9286105B1 (ja)
EP (1) EP3070605A1 (ja)
JP (1) JP6530723B2 (ja)
CN (1) CN105511941B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286105B1 (en) 2015-03-16 2016-03-15 AO Kaspersky Lab System and method for facilitating joint operation of multiple hypervisors in a computer system
KR101729680B1 (ko) * 2015-12-01 2017-04-25 한국전자통신연구원 경량 하이퍼바이저에 기반하는 운영체제의 제공 방법 및 장치
US10127068B2 (en) * 2016-06-30 2018-11-13 Amazon Technologies, Inc. Performance variability reduction using an opportunistic hypervisor
US10708136B2 (en) * 2017-06-20 2020-07-07 Microsoft Technology Licensing, Llc Standardization of network management across cloud computing environments and data control policies
US11016798B2 (en) 2018-06-01 2021-05-25 The Research Foundation for the State University Multi-hypervisor virtual machines that run on multiple co-located hypervisors
US10915353B2 (en) * 2019-04-01 2021-02-09 International Business Machines Corporation Intelligent processor for user-provided routines in a transaction processing system
US11640315B2 (en) 2019-11-04 2023-05-02 Vmware, Inc. Multi-site virtual infrastructure orchestration of network service in hybrid cloud environments
US11709698B2 (en) * 2019-11-04 2023-07-25 Vmware, Inc. Multi-site virtual infrastructure orchestration of network service in hybrid cloud environments

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009003749A (ja) * 2007-06-22 2009-01-08 Hitachi Ltd 仮想化プログラム及び仮想計算機システム
US20110066786A1 (en) * 2009-09-14 2011-03-17 Vmware, Inc. Method of Suspending and Resuming Virtual Machines
JP2011070663A (ja) * 2009-09-22 2011-04-07 Internatl Business Mach Corp <Ibm> コンピュータ・システムにおける入れ子式仮想化の性能改善
US20130145363A1 (en) * 2011-12-05 2013-06-06 Ravello Systems Ltd. System and method thereof for running an unmodified guest operating system in a para-virtualized environment

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2353113B (en) 1999-08-11 2001-10-10 Sun Microsystems Inc Software fault tolerant computer system
US7552426B2 (en) 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7802110B2 (en) 2004-08-25 2010-09-21 Microsoft Corporation System and method for secure execution of program code
JP4982971B2 (ja) 2004-09-29 2012-07-25 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
CN101490645A (zh) * 2006-07-10 2009-07-22 Vm设备有限公司 用以设备虚拟化的方法及设备
DE102006048173A1 (de) * 2006-10-10 2008-04-17 Robert Bosch Gmbh Verfahren zum Umschalten eines Systems mit mehreren Ausführungseinheiten
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8321931B2 (en) 2008-03-31 2012-11-27 Intel Corporation Method and apparatus for sequential hypervisor invocation
US8275971B2 (en) 2008-08-27 2012-09-25 International Business Machines Corporation Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
US8873375B2 (en) 2009-07-22 2014-10-28 Broadcom Corporation Method and system for fault tolerance and resilience for virtualized machines in a network
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US8918575B2 (en) * 2009-09-14 2014-12-23 Broadcom Corporation Method and system for securely programming OTP memory
RU2445686C2 (ru) 2010-01-21 2012-03-20 Игорь Вячеславович Стручков Способ установки, настройки, администрирования и резервного копирования программного обеспечения
US8539484B1 (en) 2010-05-26 2013-09-17 HotLink Corporation Multi-platform computer system management for virtualized environments
EP2609511B1 (en) * 2010-08-26 2016-10-19 Freescale Semiconductor, Inc. Memory management unit for a microprocessor system, microprocessor system and method for managing memory
CN102770846B (zh) 2010-12-21 2016-08-31 松下电器(美国)知识产权公司 虚拟计算机系统控制装置及虚拟计算机系统控制方法
US9158592B2 (en) 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
US8621274B1 (en) 2011-05-18 2013-12-31 Netapp Inc. Virtual machine fault tolerance
US9904564B2 (en) 2011-11-15 2018-02-27 Red Hat Israel, Ltd. Policy enforcement by hypervisor paravirtualized ring copying
JP5630671B2 (ja) 2012-09-18 2014-11-26 横河電機株式会社 フォールトトレラントシステム
US8762948B1 (en) * 2012-12-20 2014-06-24 Kaspersky Lab Zao System and method for establishing rules for filtering insignificant events for analysis of software program
US9286105B1 (en) 2015-03-16 2016-03-15 AO Kaspersky Lab System and method for facilitating joint operation of multiple hypervisors in a computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009003749A (ja) * 2007-06-22 2009-01-08 Hitachi Ltd 仮想化プログラム及び仮想計算機システム
US20110066786A1 (en) * 2009-09-14 2011-03-17 Vmware, Inc. Method of Suspending and Resuming Virtual Machines
JP2011070663A (ja) * 2009-09-22 2011-04-07 Internatl Business Mach Corp <Ibm> コンピュータ・システムにおける入れ子式仮想化の性能改善
US20130145363A1 (en) * 2011-12-05 2013-06-06 Ravello Systems Ltd. System and method thereof for running an unmodified guest operating system in a para-virtualized environment

Also Published As

Publication number Publication date
US20160274931A1 (en) 2016-09-22
CN105511941B (zh) 2019-04-19
JP6530723B2 (ja) 2019-06-12
US9864626B2 (en) 2018-01-09
EP3070605A1 (en) 2016-09-21
US9286105B1 (en) 2016-03-15
CN105511941A (zh) 2016-04-20

Similar Documents

Publication Publication Date Title
JP6530723B2 (ja) コンピュータシステム内における複数のハイパーバイザーの共同運用を容易にするためのシステムおよび方法
EP3555744B1 (en) Kernel soft reset using non-volatile ram
US8909946B2 (en) Efficient power management of a system with virtual machines
KR101019937B1 (ko) 보안 운영 시스템 스위칭
RU2398267C2 (ru) Иерархическая виртуализация посредством многоуровневого механизма виртуализации
US7865893B1 (en) System and method for starting virtual machine monitor in common with already installed operating system
US7743389B2 (en) Selecting between pass-through and emulation in a virtual machine environment
JP6063941B2 (ja) システム管理要求のための仮想高特権モード
US20100318997A1 (en) Annotating virtual application processes
US20180365421A9 (en) Multiple Hardware-Separated Computer Operating Systems within a Single Processor Computer System to Prevent Cross-Contamination between Systems
US10948967B2 (en) Mobile device virtualization solution based on bare-metal hypervisor with optimal resource usage and power consumption
KR20070086843A (ko) 가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법
TWI443508B (zh) 用於超管理器負載之記憶體管理
JP2014026669A (ja) マルチモードコンピュータオペレーション
WO2018039967A1 (zh) 虚拟机切换方法、装置、电子设备和计算机程序产品
US10552345B2 (en) Virtual machine memory lock-down
US9864708B2 (en) Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels
US11169837B2 (en) Fast thread execution transition
US9535772B2 (en) Creating a communication channel between different privilege levels using wait-for-event instruction in systems operable at multiple levels hierarchical privilege levels
WO2013189180A1 (zh) 虚拟化系统中关闭中断的方法和装置
US11726811B2 (en) Parallel context switching for interrupt handling
US20230066447A1 (en) Execution of code in system memory
CN113826072A (zh) 系统管理模式中的代码更新

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180821

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20181120

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190517

R150 Certificate of patent or registration of utility model

Ref document number: 6530723

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250