(57)【要約】  実行中のオペレーティングシステムが既に存在する後でのハイパーバイザの起動。オペレーティングシステムそれ自体がハイパーバイザを起動し得る。コンピューティングシステム上で実行中の物理リソースを発見するために、ハイパーバイザの代わりに実行中のオペレーティングシステムが使用され得る。他のオペレーティングシステムまたはオペレーティングシステムインスタンスはハイパーバイザが作動した後に起動され得る。
2009537897.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステム（１００）の１つまたは複数のプロセッサ（１０２）によって実行される場合、ハイパーバイザを起動させるために実行中のオペレーティングシステムを使用する方法を前記コンピューティングシステム（１００）に実行させる１つまたは複数のコンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読媒体（１０４）を含むコンピュータプログラム製品であって、前記方法は、
オペレーティングシステム（４０１）がハイパーバイザ（４０５）を起動する（２１１Ｂ）動作と、
前記起動されたハイパーバイザ（４０５）が、前記コンピューティングシステム（１００）の少なくとも１つの物理リソース（４０２）を、前記ハイパーバイザ（４０５）を起動した前記オペレーティングシステム（４０１）に対して仮想化する（２２１）動作と、
を含むことを特徴とするコンピュータプログラム製品。
【請求項２】
前記１つまたは複数のコンピュータ可読媒体は、物理メモリおよび記憶媒体であることを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項３】
前記１つまたは複数のコンピュータ可読媒体は、物理メモリ媒体であることを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項４】
前記１つまたは複数のコンピュータ可読媒体は、物理記憶媒体であることを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項５】
前記コンピュータ実行可能命令は、前記コンピューティングシステムの１つまたは複数のプロセッサで実行される場合、前記コンピューティングシステムが、
前記オペレーティングシステムが前記少なくとも１つの物理リソースを発見する動作と、
前記オペレーティングシステムが、前記対応する物理リソースの識別を少なくとも含む、前記少なくとも１つの物理リソースに関する状態情報を前記ハイパーバイザに提供する動作と、
をさらに実行するようにさらに構成されていることを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項６】
前記コンピュータ実行可能命令は、前記コンピューティングシステムの１つまたは複数のプロセッサで実行される場合、前記コンピューティングシステムが、
前記ハイパーバイザが前記オペレーティングシステムに対する仮想マシンインスタンスを起動する動作と、
前記オペレーティングシステムによって提供される状態情報を用いて前記仮想マシンインスタンスを初期化する動作と、
前記仮想マシンインスタンスの初期化の後に前記ハイパーバイザが前記オペレーティングシステムを再開する動作と、
前記オペレーティングシステムが再開された後に前記少なくとも１つの物理リソースを仮想化するために前記ハイパーバイザが前記仮想マシンインスタンスを使用する動作と、
をさらに実行するようにさらに構成されていることを特徴とする請求項５に記載のコンピュータプログラム製品。
【請求項７】
前記コンピュータ実行可能命令は、前記コンピューティングシステムの１つまたは複数のプロセッサで実行される場合、前記コンピューティングシステム上で起動される各追加のオペレーティングシステムに対して、前記コンピューティングシステムが、
前記ハイパーバイザが各追加のオペレーティングシステムに対して対応する仮想マシンインスタンスを起動する動作と、
前記対応する仮想マシンインスタンスが起動された後に前記対応する追加のオペレーティングシステムを起動する動作と、
前記対応する追加のオペレーティングシステムに対して前記少なくとも１つの物理リソースを仮想化するために前記ハイパーバイザが前記対応する仮想マシンインスタンスを使用する動作と、
をさらに実行するようにさらに構成されていることを特徴とする請求項６に記載のコンピュータプログラム製品。
【請求項８】
前記コンピュータ実行可能命令は、前記コンピューティングシステムの１つまたは複数のプロセッサで実行される場合、前記コンピューティングシステムが、
前記ハイパーバイザを起動した前記オペレーティングシステムに対して前記コンピューティングシステムの少なくとも１つの物理リソースを前記起動されたハイパーバイザが仮想化する動作をさらに実行するようにさらに構成されていることを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項９】
前記コンピュータ実行可能命令は、前記コンピューティングシステムの１つまたは複数のプロセッサで実行される場合、前記コンピューティングシステムが、
前記オペレーティングシステムが一時的な仮想マシンインスタンスを生成する動作と、
インターセプトを生成する命令を用いて前記一時的な仮想マシンインスタンスを初期化する動作と、
前記初期化する動作の後に前記一時的な仮想マシンインスタンスを再開する動作と、
前記一時的な仮想マシンインスタンスを再開する前記動作から生じる前記インターセプトを検出すると、前記一時的な仮想マシンインスタンスがハイパーバイザ状態を使用しての動作を開始する動作とを実行するようにされるコンピュータ実行可能命令をさらに含むことを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項１０】
前記コンピュータ実行可能命令は、前記コンピューティングシステムの１つまたは複数のプロセッサで実行される場合、前記一時的な仮想マシンインスタンスの前記生成の前に、前記コンピューティングシステムが、
あらゆるマスク不可能な割り込みを動作不可能にする動作を実行するようにされるコンピュータ実行可能命令をさらに含むことを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１１】
前記コンピュータ実行可能命令は、前記コンピューティングシステムの１つまたは複数のプロセッサで実行される場合、前記一時的な仮想マシンインスタンスが前記ハイパーバイザ状態の使用を開始した後に、前記コンピューティングシステムが、
前記ハイパーバイザを起動する動作と、
前記一時的な仮想マシンインスタンスを破棄する動作と、
を実行するようにされるコンピュータ実行可能命令をさらに含むことを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１２】
前記オペレーティングシステムおよび前記ハイパーバイザのうちの一方は３２ビットモードで動作し、前記オペレーティングシステムおよび前記ハイパーバイザのうちの他方は６４ビットモードで動作することを特徴とする請求項１１に記載のコンピュータプログラム製品。
【請求項１３】
前記オペレーティングシステムおよび前記ハイパーバイザは、異なるページング機構を使用して動作することを特徴とする請求項１１に記載のコンピュータプログラム製品。
【請求項１４】
ハイパーバイザ（４０５）を起動するための実行中のオペレーティングシステム（４０１）を使用してハイパーバイザ（４０５）を起動する方法（２００）であって、
前記オペレーティングシステム（４０１）によって検出された複数の物理リソース（２１２）を示す情報をハイパーバイザ（４０５）がルートオペレーティングシステム（４０１）から受信する動作と、
ハイパーバイザ（４０５）が前記ルートオペレーティングシステムに対する仮想マシンインスタンスを起動する（２３１）動作と、
前記オペレーティングシステムによって検出された前記複数の物理リソースを示す前記情報と整合する状態を用いて前記仮想マシンを初期化する（２３２）動作と、
前記状態を使用して初期化された前記仮想マシンインスタンスを介して前記ルートオペレーティングシステムが前記複数の物理リソースと間接的にインターフェースをとるように、前記ルートオペレーティングシステムを再開する（２３３）動作と、
を含むことを特徴とする方法。
【請求項１５】
前記ハイパーバイザの実行後に、１つまたは複数の追加のオペレーティングシステムを起動する動作をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記１つまたは複数の追加のオペレーティングシステムの各々に対して、対応する仮想マシンインスタンスが前記対応する追加のオペレーティングシステムとインターフェースをとることを開始する動作をさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
オペレーティングシステム（４０１）と、
前記オペレーティングシステム（４０１）によって起動され、前記コンピューティングシステムの少なくとも１つの物理リソース（４０２）を前記オペレーティングシステム（４０１）に対して仮想化するように構成されているハイパーバイザ（４０５）と、
を有する１つまたは複数のコンピュータ可読媒体（１０４）を含むことを特徴とするコンピュータプログラム製品。
【請求項１８】
前記１つまたは複数のコンピュータ可読媒体は、物理メモリおよび記憶媒体であることを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
前記１つまたは複数のコンピュータ可読媒体は、物理メモリ媒体であることを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項２０】
前記１つまたは複数のコンピュータ可読媒体は、物理記憶媒体であることを特徴とする請求項１７に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行中のオペレーティングシステムの下でのハイパーバイザの起動に関する。
【背景技術】
【０００２】
オペレーティングシステムの主要な機能のうちの１つは、コンピューティングシステム上の物理リソースとのインターフェースをとることである。通常のオペレーティングシステムは、物理リソースに不適切なやり方でアクセスすることを防ぐことが可能である。例えば、１つのアプリケーションがメモリの特定のセグメントを使用している場合、オペレーティングシステムは、メモリのそのセグメントがその同じオペレーティングシステムにより管理されている別のアプリケーションによって変更されることから保護することが可能である。そうでなければ、そのアプリケーションが予想通りに機能しない可能性がある。そのようなアクセス保護は、多くの場合、そのオペレーティングシステムがコンピューティングシステム上で実行中の唯一のオペレーティングシステムであるという仮定に基づいている。
【０００３】
しかしながら、場合によっては同じコンピューティングシステム上に複数のオペレーティングシステムを実行させることが有利であり得る。その場合、リソースを用いての安全な動作を確実にするための各オペレーティングシステムでの黙示的保護は、もはや不十分である可能性がある。オペレーティングシステムは、別のオペレーティングシステムによる同じ物理リソースへのアクセスを制御することが不可能であり得るし、そのような他の実行中のオペレーティングシステムの存在を認識する機構を有してさえいない可能性がある。
【０００４】
ハイパーバイザは、１つまたは複数の実行中のオペレーティングシステムとプロセッサ、Ｉ／Ｏポート、メモリ、割り込み、その他保護されている物理リソースとの間に介在されるように構成されているソフトウェア層である。ハイパーバイザは、オペレーティングシステムに対して機能的に多重化し、リソースを各オペレーティングシステムに仮想的な方法で明示する。例えば、単純な例として、１つのプロセッサおよび１ギガバイト（ＧＢ）のランダムアクセスメモリ（ＲＡＭ）を有するコンピューティングシステム上で２つのオペレーティングシステムが実行中であると仮定する。ハイパーバイザは、プロセッサ周期の半分を各オペレーティングシステムに割り当てることが可能であり、メモリの半分、ＲＡＭの５１２メガバイト（ＭＢ）を各オペレーティングシステムに割り当てることが可能である。さらに、ハイパーバイザは、ＲＡＭの５１２ＭＢだけを利用可能であることが両方のオペレーティングシステムに見えるように、各オペレーティングシステムに対して対処されたＲＡＭの仮想範囲を提供することが可能である。
【０００５】
オペレーティングシステムが物理リソースとの通信を試みる場合およびその反対の場合、ハイパーバイザは適切なバッファリングおよび変換を実行し、各オペレーティングシステムが自分の環境を、あたかもそれがコンピューティングシステム上で実行中の唯一のオペレーティングシステムであるかのように経験することを可能にする。さらに、これを行うハイパーバイザは、コンピューティングシステム上の物理リソースが複数のオペレーティングシステムインスタンスによって共有され得る一方で、それでも保護され得るやり方である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来的には、ハイパーバイザはオペレーティングシステムを実行する前に起動されている。これは、物理リソースの仮想ビュー（ｖｉｒｔｕａｌｉｚｅｄ  ｖｉｅｗ）を示すことによってハイパーバイザが仮想マシンでオペレーティングシステムを開始することを可能にする。仮想マシンでオペレーティングシステムを即座に開始するために、ハイパーバイザは物理リソースおよびそれらの本質的特性を発見するための拡張コードを含む。物理リソースの発見は、何らかの実行中のオペレーティングシステムの存在前に行われるために、この発見プロセスでオペレーティングシステムをあてにすることが不可能である。従って、物理リソースを発見するためのハイパーバイザ内のコードは非常に複雑になる可能性がある。
【課題を解決するための手段】
【０００７】
本発明の原理はこの簡潔な要約に要約されている実施形態に限定されないが、本明細書で説明されている実施形態のいくつかは、実行中のオペレーティングシステムが既に存在している後にハイパーバイザを起動することに関する。必ずではないが、コンピューティングシステム上で実行中の物理リソースを発見するために、ハイパーバイザの代わりに実行中のオペレーティングシステムが使用され得る。従って、必要に応じて、ハイパーバイザは、同じ機能性を実行するコードを有する必要があるよりもむしろ、リソースを発見するためにオペレーティングシステムに依存してよい。
【０００８】
この「課題を解決するための手段」は、以下の「発明を実施するための最良の形態」でさらに説明される概念から選択したものを単純化された形式で紹介するために提供されている。この「課題を解決するための手段」は、特許請求される主題の鍵となる特徴または本質的特徴を特定することを意図するものではないし、特許請求される主題の範疇を決定することを支援するために使用されることを意図するものでもない。
【０００９】
本発明の上記および他の利点と特徴とをさらに容易化するために、本発明のより詳細な説明が、添付の図面に図示されているそれらの特定の実施形態を参照して提供される。これらの図面が本発明の典型的な実施形態だけを表しており、それゆえにその範疇を限定するものとみなされないことを理解されたい。本発明は、添付の図面の使用を介してさらなる特異性および詳細を用いて描写および説明される。
【発明を実施するための最良の形態】
【００１０】
本発明の実施形態によれば、実行中のオペレーティングシステムが既に存在している後でハイパーバイザが起動され得る。コンピューティングシステム上で実行中の物理リソースを発見するために、ハイパーバイザの代わりに実行中のオペレーティングシステムが使用され得る。他のオペレーティングシステムインスタンスは、ハイパーバイザが作動した後に起動され得る。本発明の原理が実行され得る全体的なコンピューティング環境が、最初に図１に関して説明される。次に、本発明の実施形態に関するさらなる詳細がその後の図面に関して説明される。
【００１１】
コンピューティングシステムは、今やますます多種多様な形式をとるようになっている。コンピューティングシステムは、例えば、携帯型デバイス、電化製品、ラップトップ型コンピュータ、デスクトップ型コンピュータ、メインフレーム、分散型コンピューティングシステム、または従来的にはコンピューティングシステムとみなされていなかったデバイスでもよい。この説明および特許請求の範囲では、用語「コンピューティングシステム」は、少なくとも１つのプロセッサと、プロセッサによって実行され得るコンピュータ実行可能な命令を有することが可能なメモリとを含むあらゆるデバイスまたはシステム、またはそれらの組み合わせを含むものとして広範に規定される。メモリはあらゆる形式であってよく、コンピューティングシステムの性質および形式に依存してよい。コンピューティングシステムは、ネットワーク環境上に分散されてよいし、複数の構成要素コンピューティングシステムを含んでよい。
【００１２】
図１を参照すると、その最も基本的な構成で、コンピューティングシステム１００が少なくとも１つの処理装置１０２およびメモリ１０４を通常含んでいる。メモリ１０４は、揮発性、不揮発性、またはこの２つの何らかの組み合わせであり得る物理的なシステムメモリであってよい。揮発性メモリの例は、ランダムアクセスメモリ（ＲＡＭ）を含む。不揮発性メモリの例は、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、または同等物を含む。本明細書では、用語「メモリ」は、物理記憶媒体等の不揮発性大容量記憶装置を参照にも同様に使用され得る。そのような記憶装置は、取り外し可能または取り外し不可能であってもよいし、限定するものではないがＰＣＭＣＩＡカード、磁気および光学ディスク、磁気テープ、および同等物を含んでよい。
【００１３】
本明細書で使用されているように、用語「モジュール」または「構成要素」は、コンピューティングシステム上で実行するソフトウェアオブジェクトまたはルーチンを指し得る。本明細書で説明される種々の構成要素、モジュール、エンジンおよびサービスがコンピューティングシステム上で実行するオブジェクトまたはプロセス、例えば、別個のスレッドとして実装され得る。本明細書で説明されるシステムおよび方法は、ソフトウェアで実装され得るが、ハードウェアで、およびソフトウェアとハードウェアとの組み合わせでの実装が同様に可能であり、意図されている。
【００１４】
以下の説明では、本発明の実施形態が、１つまたは複数のコンピューティングシステムによって実行される動作を参照して説明されている。そのような動作がソフトウェアで実行される場合、その動作を実行する関連コンピューティングシステムの１つまたは複数のプロセッサが、コンピュータ実行可能命令が実行されることに応じてコンピューティングシステムの動作を指示する。そのような動作の例は、データの操作を含む。コンピュータ実行可能命令および操作されるデータは、コンピューティングシステム１００のメモリ１０４に記憶され得る。
【００１５】
コンピューティングシステム１００は、例えば、ネットワーク１１０を介してコンピューティングシステム１００が他のコンピューティングシステムと通信することを可能にする通信チャネル１０８を同様に含み得る。通信チャネル１０８は、通信媒体の例である。通信媒体は、通常、搬送波もしくは他の移送機構等の変調されたデータ信号でコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを実施し、あらゆる情報配信媒体を含む。限定ではなく例として、通信媒体は、有線ネットワークおよび直接有線接続等の有線媒体と、音響、無線、赤外線および他の無線媒体等の無線媒体とを含む。本明細書で使用される用語コンピュータ可読媒体は、記憶媒体および通信媒体の両方を含む。
【００１６】
本発明の範疇の範囲内の実施形態は、コンピュータ実行可能命令もしくはデータ構造を搬送するコンピュータ可読媒体、またはコンピュータ実行可能命令もしくはデータ構造が記憶されているコンピュータ可読媒体を同様に含む。そのようなコンピュータ可読媒体は、汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体であってよい。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイスなどの物理記憶媒体および／またはメモリ媒体、またはコンピュータ実行可能命令もしくはデータ構造の形式で所望のプログラムコード手段を搬送もしくは記憶するために使用され得て、汎用もしくは専用コンピュータによりアクセスされ得るあらゆる他の媒体を含んでよい。情報がネットワークまたは別の通信接続、配線接続、無線、または配線接続もしくは無線の組み合わせのいずれかを介してコンピュータに転送または提供されると、コンピュータはその接続をコンピュータ可読媒体として適切にみなす。従って、あらゆるそのような接続がコンピュータ可読媒体と適切に呼ばれる。上記の組み合わせも同様にコンピュータ可読媒体の範疇の範囲内に含まれるべきである。
【００１７】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータもしくは専用処理装置に特定の機能もしくは機能群を実行させる命令およびデータを含む。主題が構造的特徴および／または方法論的動作に特有の専門用語で説明されているが、添付の特許請求の範囲で規定される主題は必ずしも本明細書で説明されている特定の特徴または動作に限定されるものではないことを理解されたい。むしろ、本明細書で説明されている特定の特徴および動作は、特許請求の範囲を実装する例示の形式として開示されている。
【００１８】
図２は、実行中のオペレーティングシステムがハイパーバイザを起動する方法２００のフローチャートを示す。この説明および特許請求の範囲では、「ハイパーバイザ」は、１つまたは複数の実行中のオペレーティングシステムと保護される物理リソースとの間に配置されるように構成されているソフトウェア層である。ハイパーバイザは、保護される物理リソースをオペレーティングシステムに対して機能的に多重化し、リソースを各オペレーティングシステムに仮想的なやり方で明示する。従って、ハイパーバイザは、オペレーティングシステムとコンピューティングシステムの物理リソースとの間の特殊な抽象層として動作する。
【００１９】
例えば、単純な例として、１つのプロセッサおよび１ギガバイト（ＧＢ）のランダムアクセスメモリ（ＲＡＭ）を有するコンピューティングシステム上で２つのオペレーティングシステムが実行中であると仮定する。ハイパーバイザは、プロセッサ周期の半分を各オペレーティングシステムに割り当てることが可能であり、メモリの半分、ＲＡＭの５１２メガバイト（ＭＢ）を各オペレーティングシステムに割り当てることが可能である。さらに、ハイパーバイザは、ＲＡＭの５１２ＭＢだけを利用可能であることが両方のオペレーティングシステムに見えるように、各オペレーティングシステムに対して対処されたＲＡＭの仮想範囲を提供することが可能である。オペレーティングシステムが物理リソースとの通信を試みる場合およびその反対の場合、ハイパーバイザは適切なバッファリングおよび変換を実行し、各オペレーティングシステムが自分の環境を、あたかもそれがコンピューティングシステム上で実行中の唯一のオペレーティングシステムであるかのように経験することを可能にする。
【００２０】
従来的なハイパーバイザ構成とは異なり、本発明の実施形態は、オペレーティングシステムが起動された後に、たとえオペレーティングシステムがコンピューティングシステムの物理リソースを既に発見していたとしても、ハイパーバイザが起動されることを可能にする。ハイパーバイザを開始するオペレーティングシステムが、発見された物理リソースの状態を示す情報をハイパーバイザに渡す。従って、ハイパーバイザは、コンピューティングシステムの物理リソースを発見するための別個のコードを有する必要がない。
【００２１】
一度、オペレーティングシステムがハイパーバイザを起動し、コンピューティングシステムの発見された物理リソースに関する情報をハイパーバイザに渡すと、オペレーティングシステムは実行を中断して制御をハイパーバイザに渡すことが可能である。次にハイパーバイザは、コンピューティングシステムの物理リソースのあらゆる保護されているリソースへの将来のアクセス要求を処理するために、仮想マシンインスタンスをセットアップする。仮想マシンインスタンスは、保護されている物理リソースのオペレーティングシステムの概念と整合する状態を用いて初期化される。これが達成されると、オペレーティングシステムは、仮想マシン環境で再開される。しかしながら、仮想マシン環境では、オペレーティングシステムは、物理リソースと直接的にではなく、ハイパーバイザを介して物理リソースと間接的にインターフェースをとる。オペレーティングシステムが前に物理リソースについて発見した情報を、オペレーティングシステムとの通信専用の仮想マシンが引き受けるため、変化はオペレーティングシステムにトランスペアレントである。
【００２２】
場合によっては、および保護されている物理リソースのいくつかについては、オペレーティングシステムは、ハイパーバイザの使用なしで保護されている物理リソースを発見することが可能でない可能性があり、そしてその同じ保護されている物理リソースにハイパーバイザを介してトランスペアレントなやり方で、後で間接的にインターフェースをとる。その場合、オペレーティングシステムは、後でハイパーバイザを介して動作し得ることを理解し、従って、後でトランスペアレントなやり方で仮想化され得ない物理リソースのいずれも無視するように構成されてよい。例えば、オペレーティングシステムローダは、他のオペレーティングシステム構成要素に特定の保護されている物理リソースを使用しないように通知するように構成されてよい。
【００２３】
図２に戻って参照すると、ルートオペレーティングシステムが起動されると方法２００が開始される（動作２０１）。「ルート」オペレーティングシステムは、ハイパーバイザが作動した後に起動され得るオペレーティングシステムとは対照的にハイパーバイザを起動するオペレーティングシステムである。図４Ａは、ハイパーバイザの不在時にオペレーティングシステム４０１がコンピューティングシステムの物理リソース４０２と直接的に通信する４０２、動作のこの段階の構成４００Ａを示す。
【００２４】
次にルートオペレーティングシステムは、図２の左の列に、列の見出し「ルートオペレーティングシステム」の下に示されている複数の動作を実行する。例えば、ルートオペレーティングシステムは、少なくとも１つの物理リソースを発見する（動作２１１Ａ）。オペレーティングシステムは、オペレーティングシステムを起動した直後に実行される、コンピューティングシステムの物理リソースを発見する命令を通常、有する。図４Ａを参照すると、例えば、オペレーティングシステム４０１は、物理リソース状態４０３を発見する。コンピューティングシステムの物理リソースの発見は、複雑なタスクであってよい。
【００２５】
オペレーティングシステムをハイパーバイザの起動前の状態で再開するために、オペレーティングシステムは、ハイパーバイザを起動する前に物理マシンの状態を捕捉する。一実施形態では、捕捉された状態は、全ての物理プロセッサおよび物理ＡＰＩＣの状態を含む。物理プロセッサ状態は、
１．汎用レジスタ
２．浮動小数点およびＸＭＭレジスタ
３．制御レジスタ（ＣＲ）
４．デバッグレジスタ（ＤＲ）
５．命令ポインタ（ＲＩＰ）、スタックポインタ（ＲＳＰ）およびフラグレジスタ（ＲＦＬＡＧＳ）
６．セグメントベース、範囲およびアクセス権を含む、ＣＳ、ＤＳ、ＳＳ、ＥＳ、ＦＳ、ＧＳおよびＴＲセグメントに関するセグメント状態
７．グローバルディスクリプタテーブルレジスタ（ＧＤＴＲ）、割り込みディスクリプタテーブルレジスタ（ＩＤＴＲ）およびローカルディスクリプタテーブルレジスタ（ＬＤＴＲ）
８．カーネルＧＳベース（ＫｅｒｎｅｌＧｓＢａｓｅ）、スター（Ｓｔａｒ）、Ｌスター（Ｌｓｔａｒ）、Ｃスター（Ｃｓｔａｒ）、Ｓｆマスク（Ｓｆｍａｓｋ）、シスエンタＣｓ（ＳｙｓｅｎｔｅｒＣｓ）、シスエンタＥｉｐ（ＳｙｓｅｎｔｅｒＥｉｐ）、シスエンタＥｓｐ（ＳｙｓｅｎｔｅｒＥｓｐ）およびＡｐｉｃベースＭＳＲを含む特定モデル固有レジスタ（ＭＳＲ）
を含む。
【００２６】
物理ローカルＡＰＩＣ状態は、
１．ローカルＡＰＩＣ  ＩＤ
２．割り込み要求レジスタ（ＩＲＲ）
３．割り込みサービスレジスタ（ＩＳＲ）
４．タスク優先度レジスタ（ＴＰＲ）
を含み得る。
【００２７】
さらに、ハイパーバイザが起動される際に、ハードウェアの他の態様がハイパーバイザにブートパラメータとして提供され得る。これらは、
１．実行時にホットプラグされ得るものを含む、現在のおよび潜在的な論理プロセッサ
２．ＢＩＯＳでハイパースレッドスレッディングが可能であるかまたは不可能であるか
３．ハイパーバイザがブートされる時点でＲＡＭで投入される、現在の物理ＲＡＭ範囲−システム物理アドレス範囲
４．ブート時には関連リソースを有さないが、実行時に投入され得るものを含む物理ノード
５．物理ノード間のメモリアクセス比率
６．電力管理タイマなどハイパーバイザがアクセスする必要のある特定ハードウェア機能のアドレス
を含み得る。
【００２８】
オペレーティングシステムは、オペレーティングシステムと物理リソースとの間に介在させるハイパーバイザ（動作２１１Ｂ）を同様に起動する。例えば、図４Ｂを参照すると、ハイパーバイザ４０５がルートオペレーティングシステム４０１と物理リソース４０２との間に介在している。この起動の一部として、オペレーティングシステムは、少なくとも保護する物理リソースに関する状態情報をハイパーバイザに提供する（動作２１２）。この状態情報は、ハイパーバイザによって防護される保護物理リソースの関連状態を発見するためにハイパーバイザが必要とする全ての情報を含む。１つの実施形態では、状態情報は、上記で説明されている捕捉状態を含み得る。最低限、状態情報は、対応する物理リソースの少なくとも識別を含む。
【００２９】
さらに、起動の一部として、オペレーティングシステムは、ハイパーバイザに制御を渡す。次に、ハイパーバイザは、図２の右の列に見出し「ハイパーバイザ」の下に示されているように動作を実行する。特に、ハイパーバイザは、コンピューティングシステムの保護されている物理リソースをルートオペレーティングシステムに対して仮想化するために必要なタスクを次に実行する（動作２２１）。
【００３０】
例えば、ハイパーバイザは、ルートオペレーティングシステムに対して仮想マシンインスタンスを生成し得る（動作２３１）。図４Ｂを参照すると、ブロック４２１がオペレーティングシステム４０１に対する仮想マシンインスタンスを示す。一度、初期化されて作動すると、仮想マシンインスタンス４２１は、オペレーティングシステム４０１に対して物理リソース４０２に関するプロキシとして機能する。仮想マシンインスタンス４２１は、オペレーティングシステム４０１から物理リソースに関するサービス要求を受信し、仮想マシンインスタンス４２１にとってアクセス可能な状態情報に応じて、要求の適切な変換およびバッファリングを実行する。次に、仮想マシンインスタンス４２１は、ハイパーバイザ４０５が適切なサービスを物理リソース４０２から要求するようにさせる。仮想マシンインスタンス４２１は、必要に応じて、適切な変換およびバッファリングと共に、要求の結果をオペレーティングシステム４０１に折り返し報告する可能性がある。
【００３１】
仮想マシンインスタンス４２１は、仮想マシンインスタンスにとってアクセス可能な状態情報に応じて異なる振る舞いをする。ハイパーバイザは、オペレーティングシステム４０１が物理リソース４０２に関して既に発見している状態情報を引き受ける。従って、ハイパーバイザ４０５は、オペレーティングシステムによって提供される少なくともいくつかの状態情報を用いて仮想マシンインスタンス４２１を初期化する（動作２３２）。例えば、ハイパーバイザ４０５は、オペレーティングシステムによって提供される捕捉状態を用いて仮想マシンを初期化し得る。このやり方で、仮想マシンインスタンス４２１は、オペレーティングシステムによって検出された物理リソースを示す情報と整合する状態で初期化される。次に、オペレーティングシステムは、仮想マシン環境で再開される（動作２３３および動作２１４）。この環境で、図４Ｂに見られるように、オペレーティングシステム４０１が物理リソース４０２と直接的にインターフェースをとる代わりに、仮想マシンインスタンス４２１およびハイパーバイザ４０５の使用を介して物理リソース４０２がオペレーティングシステム４０１に対して仮想化される。仮想マシン４２１によって使用される状態情報がオペレーティングシステム４０１によって発見された状態情報と整合するので、いくつかの実施形態におけるオペレーティングシステム４０１には変化がトランスペアレントである。
【００３２】
１つの実施形態では、物理プロセッサの振る舞いを模倣する仮想プロセッサ抽象を介して仮想化が提供される。同様に、それは物理ＡＰＩＣの振る舞いを模倣する仮想ＡＰＩＣを提供する。これは以下のようにして達成される。
１．仮想プロセッサの状態が、物理プロセッサの捕捉されている状態に初期化される。
２．仮想ＡＰＩＣの状態が、物理ローカルＡＰＩＣの捕捉されている状態に初期化される。
３．ハイパーバイザのインストールは、オペレーティングシステムが特権的物理ハードウェアリソースにアクセスすることを防ぐためにインターセプトする。例えば、ローカルＡＰＩＣへの全てのアクセスがハイパーバイザにトラップされるように、ハイパーバイザを起動する前にローカルＡＰＩＣが予め配置されていたゲスト物理アドレスは存在しないものとしてマークされる。
【００３３】
ハイパーバイザが起動された後、ハイパーバイザは追加のオペレーティングシステム、同じオペレーティングシステムのインスタンスまたは異なるオペレーティングシステムのインスタンスのいずれかを起動し得る。例えば、図４Ｃを参照すると、省略記号４１４によって示される可能性がある他の多数のうち、オペレーティングシステム４１２および４１３が追加で起動されてよい。図３は、追加のオペレーティングシステムに対して同様に物理リソースを仮想化する方法３００のフローチャートを示す。追加のオペレーティングシステムが起動されると、最初にハイパーバイザは対応する仮想マシンインスタンスを起動し（動作３０１）、次にそれを介してオペレーティングシステムが起動される（動作３０２）。ハイパーバイザは、対応する追加のオペレーティングシステムに対して１つまたは複数の物理リソースを仮想化するために対応する仮想マシンインスタンスを使用する（動作３０３）。
【００３４】
オペレーティングシステムを開始する際に各オペレーティングシステムが物理リソースの発見を実行すると、情報に関する種々の要求が対応する仮想マシンインスタンスによってインターセプトされる。物理リソースに関連付けられている実際の状態情報を見つける代わりに、対応する仮想マシンが仮想化されている状態情報をオペレーティングシステムに提供する。
【００３５】
場合によっては、ハイパーバイザを起動するオペレーティングシステムが異なる環境の種類である可能性がある。例えば、オペレーティングシステムが３２ビットモードで動作しているのに対して、起動されるハイパーバイザが６４ビットモードで動作している、またはその逆である可能性がある。同様に、オペレーティングシステムとハイパーバイザとが異なるページングモードで動作する可能性がある。本発明の実施形態によっては、オペレーティングシステムとハイパーバイザとが異なる環境で動作している場合でさえ、オペレーティングシステムがハイパーバイザを起動することを可能にする。
【００３６】
図５は、ハイパーバイザを起動する準備で、オペレーティングシステムがハイパーバイザの環境に入るための方法５００のフローチャートを示す。オペレーティングシステムが起動される図５の動作２０１から、最初に、オペレーティングシステムは、あらゆるマスク不可能な割り込みを動作不可能にし（動作５０１）、あらゆるマスク可能な割り込みをマスクする。マスク不可能な割り込みは、多数の異なるやり方で動作不可能にされ得る。結局、オペレーティングシステムがハイパーバイザオペレーティング環境に移行中である際に、初期状態のハイパーバイザがロードされる前に確実に割り込みまたは例外が発生しないように注意が払われるべきである。オペレーティングシステム環境を出た後だが、ハイパーバイザ環境に入る前に割り込みまたは例外が発生する場合、割り込みディスクリプタテーブルまたはスタックが存在しないため、恐らくプロセッサは割り込みまたは例外を処理不可能である。多くの例外は、それらがソフトウェアから生じるので容易に回避され得る。マスク可能なハードウェア割り込みは、ＲＦＬＡＧＳレジスタのＩＦビットを消去することによってこのプロセスの間、抑制することが可能である。
【００３７】
マスク不可能な割り込み（ＮＭＩ）は、２つの機構のうちのいずれかで抑制され得る。
【００３８】
１．ＮＭＩを自己配信（ｓｅｌｆ  ｄｅｌｉｖｅｒ）し、ＩＲＥＴ命令を実行しない：これは、オペレーティングシステムの割り込みディスクリプタテーブルのＮＭＩハンドラアドレスが異なるハンドラを指し示すように一時的に修正することによって達成され得る。次にＮＭＩが現在のプロセッサに配信され得る。これは、プロセッサがＮＭＩハンドラとして提供されているアドレスに飛ぶことを生じさせる。ＮＭＩハンドラで、最初のＮＭＩハンドラアドレスを復活させ、継続することが可能である。ｘ８６アーキテクチャでは、ＮＭＩが受信された後、ＩＲＥＴ命令が実行されるまでＮＭＩがマスクされるので、これはさらなるＮＭＩを効果的にマスクする。
【００３９】
２．有効な割り込みディスクリプタテーブル（ＩＤＴ）およびスタックを用いて常に実行する：これは一時的なＩＤＴおよびスタックを生成することによって達成され得る。一時的なページテーブルは、一時的なＩＤＴ、ＮＭＩハンドラおよびスタックをそれらの最初の仮想アドレスおよびそれらの各物理アドレスにマッピング可能である。これは、プロセッサが一時的なページテーブルを用いて実行されている際にＮＭＩが到達する場合、ハンドラに正しく配信されることを確実にする。
【００４０】
一度、割り込みがマスクされるか、さもなければ動作不可能にされる（動作５０１）と、一時的な仮想マシンインスタンスが生成される（動作５０２）。次にオペレーティングシステムがインターセプトを生じる命令で一時的な仮想マシンインスタンスを初期化する（動作５０３）。インターセプトは、オペレーティングシステムからハイパーバイザへの制御の転送である。一時的な仮想マシンインスタンスが再開される（動作５０４）と、仮想マシンインスタンスは、インターセプトを生じる命令を実行し、従ってインターセプトが生成される（動作５０５）。結果として、一時的な仮想マシンインスタンスは、ハイパーバイザ状態を使用して実行を開始し（動作５０６）、それにより、オペレーティングシステムがハイパーバイザモードでの動作を継続する（動作５０７）。オペレーティングシステムは、次にハイパーバイザを起動し得る。一時的な仮想マシンインスタンスは、それがオペレーティングシステムを、ハイパーバイザを起動するために必要なハイパーバイザモードにするために必要であっただけであるので、任意選択的に破棄され得る（動作５０８）。
【００４１】
従って、本発明の実施形態は、コンピューティングシステム上に実行中のオペレーティングシステムが既に存在している後でさえも、ハイパーバイザの起動を可能にする。実施形態によっては、オペレーティングシステムとハイパーバイザとが異なる環境である場合でさえも、オペレーティングシステムがハイパーバイザを起動し得る。
【００４２】
本発明は、その精神または本質的特性から逸脱することなしに他の特定の形式で実施され得る。説明されている実施形態は、あらゆる点で例示的であり限定的でないとみなされるべきである。本発明の範疇は、それゆえに、前述の説明によってよりもむしろ添付の特許請求の範囲によって示される。特許請求の範囲の同等物の意味および範囲に入る全ての変更は、それらの範疇にあると受け入れられるべきである。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施形態が用いられ得るコンピューティング環境を示す説明図である。
【図２】実行中のオペレーティングシステムを使用してハイパーバイザを起動する方法を示すフローチャートである。
【図３】追加のオペレーティングシステムインスタンスを起動する方法を示すフローチャートである。
【図４Ａ】ハイパーバイザの不在の場合に、ルートオペレーティングシステムがコンピューティングシステムの物理リソースと直接的に通信する構成を示す説明図である。
【図４Ｂ】オペレーティングシステムが、オペレーティングシステムと物理リソースとの間の仲介として動作するようにハイパーバイザを起動させている構成を示す説明図である。
【図４Ｃ】ハイパーバイザによって追加のオペレーティングシステムが起動され、サポートされている構成を示す説明図である。
【図５】オペレーティングシステムをハイパーバイザの環境に移送する方法を示すフローチャートである。
【図１】
2009537897.tif 000003
【図２】
2009537897.tif 000004
【図３】
2009537897.tif 000005
【図４Ａ】
2009537897.tif 000006
【図４Ｂ】
2009537897.tif 000007
【図４Ｃ】
2009537897.tif 000008
【図５】
2009537897.tif 000009
【国際調査報告】
2009537897.tif 000010
2009537897.tif 000011