(57)【特許請求の範囲】
【請求項１】
実コンピュータシステム（１００）上で仮想マシンソフトウェア（３００）を実行することであって、該仮想マシンソフトウェアはハイパーバイザ（２００）を含み、１つの仮想マシンが複数の仮想デバイス（２２０、２２１）を備える、仮想マシンソフトウェア（３００）を実行することと、
前記複数の仮想デバイスのそれぞれを、前記実コンピュータシステム内の実デバイス（１１０）の一意のサブセットに関連付けることと、
前記ハイパーバイザが、前記仮想マシン内の仮想ファームウェア（３１６）へ、前記複数の仮想デバイスの１つ又は２つ以上の仮想デバイスを前記仮想マシンからイジェクト（eject）することを要求するイジェクト要求を送信することと、
前記仮想ファームウェア内の仮想デバイス資源オブジェクトが、前記仮想マシン上で実行される仮想デバイス資源ドライバ（３１５）へ前記イジェクト要求を転送することと、
前記仮想デバイス資源ドライバが、前記転送された要求に応答して、前記１つ又は２つ以上の仮想デバイスのそれぞれの前記仮想マシンからの個別のイジェクトを引き起こすことと
を含む方法。
【請求項２】
前記仮想デバイス資源オブジェクトは、前記複数の仮想デバイス（２２０、２２１）のデバイスタイプに関連付けられる
請求項１に記載の方法。
【請求項３】
前記イジェクト要求に含まれるメトリックに基づいて、前記イジェクト要求を満たすのに必要な仮想デバイス（２２０、２２１）の個数を求めることと、
少なくとも求められた個数の仮想デバイスが利用可能である場合に、必要であると判断された前記仮想デバイスを前記仮想マシンからイジェクトすることと、
前記複数の仮想デバイスのいずれが、前記イジェクト要求を満たすのに使用されるのかを判断することと、
をさらに含み、
前記必要な仮想デバイスの個数を求めること、及び、前記複数の仮想デバイスのいずれが使用されるのかを判断することは、前記仮想デバイス資源ドライバ（３１５）によって行われる
請求項１に記載の方法。
【請求項４】
前記仮想デバイス資源ドライバ（３１５）は、
前記要求に含まれる仮想デバイスのリストに基づいて、いずれの仮想デバイス（２２０、２２１）がイジェクト用に特定されるのかを判断し、
前記要求にリストされた前記仮想デバイスが利用可能である場合に、前記リストされた仮想デバイスを前記仮想マシンからイジェクトする
請求項１に記載の方法。
【請求項５】
前記ハイパーバイザ（２００）が、１つ又は２つ以上の仮想デバイス（２２０、２２１）を前記仮想マシンに追加する要求を前記仮想デバイス資源オブジェクトへ送信することと、
前記仮想デバイス資源オブジェクトが、前記追加する要求を、前記仮想デバイス資源ドライバ（３１５）へ転送することと、
前記仮想デバイス資源ドライバが、前記１つ又は２つ以上の仮想デバイスを、それぞれ、前記仮想マシンに個別に追加することと
をさらに含む請求項１に記載の方法。
【請求項６】
コンピュータシステムであって、
仮想マシンを実施する仮想マシンソフトウェア（３００）を実行する実プロセッサであって、前記仮想マシンは、仮想プロセッサと、仮想資源デバイスドライバと、仮想デバイス資源オブジェクトを含む仮想ファームウェア（３１６）と、複数の仮想デバイス（２２０、２２１）とを備える、実プロセッサと、
前記実プロセッサに結合され、前記仮想マシンソフトウェアは、前記複数の仮想デバイスのそれぞれを、該実デバイスの一意の一部分（subdivision）に関連付ける実デバイス（１１０）と
を備え、
前記実プロセッサ上で実行されるハイパーバイザ（２００）は、前記複数の仮想デバイスの１つ又は２つ以上の仮想デバイスを前記仮想マシンからイジェクトする要求を前記仮想ファームウェアへ送信し、
前記仮想ファームウェアの中の仮想デバイス資源オブジェクトは、前記イジェクトする要求を仮想デバイス資源ドライバに転送し、
前記仮想デバイス資源ドライバは、前記要求された１つ又は２つ以上の仮想デバイスを前記仮想マシンから個別にイジェクトさせる
コンピュータシステム。
【請求項７】
前記仮想デバイス資源オブジェクトは、前記複数の仮想デバイス（２２０、２２１）のデバイスタイプに関連付けられている
請求項６に記載のコンピュータシステム。
【請求項８】
前記実デバイス（１１０）は、
実メモリデバイス
を備え、
前記複数の仮想デバイス（２２０、２２１）は、
それぞれが前記実メモリデバイスによって占有されたアドレス空間の一意の部分範囲（sub-range）に関連付けられている複数の仮想メモリデバイス
を備える
請求項６に記載のコンピュータシステム。
【請求項９】
前記仮想デバイス資源ドライバは、
前記イジェクトする要求に含まれるメトリックに基づいて、割り当て解除する要求を満たすのに必要な仮想デバイス（２２０、２２１）の個数を求め、さらに、前記複数の仮想デバイスのいずれが、前記イジェクトする要求を満たすのに使用されるよう選択されるのかを判断し、
少なくとも求められた個数の仮想デバイスが、前記仮想デバイス資源ドライバによって使用中でないと判断された場合に、必要であると判断され使用されるように選択される前記仮想デバイスをイジェクトする
請求項６に記載のコンピュータシステム。
【請求項１０】
前記仮想デバイス資源ドライバは、
前記要求において提示されている仮想デバイスのリストに基づいて、いずれの仮想デバイス（２２０、２２１）がイジェクト用に特定されるのかを判断し、
前記要求においてリストされている前記仮想デバイスが利用可能である場合に、前記リストされた仮想デバイスを前記仮想マシンからイジェクトする
請求項６に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンデバイスの動的割り当てに関する。
【背景技術】
【０００２】
仮想マシンソフトウェアの使用は、近年、前例のない成長を経験している。仮想マシンソフトウェアは、当初、ソフトウェア試験プラットフォームとして設計されたが、実コンピュータシステムのハードウェアをエミュレート及び／又はシミュレートして、実マシン上で実行されるソフトウェアを、エミュレート／シミュレートされた環境内において変更なしで実行することを可能にする。仮想化ソフトウェアによって提供される仮想化されたマシンは、このような仮想マシン上で実行されているソフトウェアには、実コンピュータシステムに見える。
【０００３】
実コンピュータシステムのホットスワップ可能なデバイスの出現によって、今や、実マシンと同じデバイスのホットスワップをエミュレート／シミュレートすることができる仮想マシンが利用可能である。この仮想ホットスワップ能力によって、単一の実コンピュータシステム上で実行される複数の仮想マシンは、仮想化されたハードウェア資源を必要に応じて仮想マシンの構成に動的に追加及び除去することが可能になる。さらに、仮想マシンは、実コンピュータシステムをエミュレート／シミュレートするため、Ｉｎｔｅｌ（登録商標）による拡張可能ファームウェアインターフェース（Extensible Firmware Interface: ＥＦＩ）、及びオープン工業規格（open industry standard）であるアドバンストコンフィギュレーションアンドパワーインターフェース（Advanced Configuration and Power Interface: ＡＣＰＩ）のような、仮想化されたハードウェアに対する業界標準ファームウェアインターフェースを含む、実コンピュータシステムのファームウェアもエミュレート／シミュレートする。
【０００４】
このようなファームウェアインターフェースを使用すると、ハードウェアは、実コンピュータシステム／仮想化されたコンピュータシステム内の組み込みファームウェアによって一連のオブジェクトとして表される。これらのオブジェクトのそれぞれは、コンピュータシステム内のプロセッサ上で実行されているソフトウェア（たとえば、オペレーティングシステム）によってファームウェアインターフェースを介して管理することができる。これらのオブジェクトによって、特に、デバイスを、「ホットスワップ可能」なデバイス、すなわち、コンピュータシステムを電源切断もリブートもすることなく、コンピュータシステムにプラグ接続するか又はコンピュータシステムからプラグ接続解除することができるデバイスとして、動作させることが可能になる。たとえば、デバイスがプラグ接続されたとき、ファームウェアは、そのデバイスハードウェアが初期化されると、そのデバイスが利用可能であることをオペレーティングシステムに通知する。この通知は、コンピュータシステムによって使用されるファームウェアインターフェースを介して（たとえば、１つ又は２つ以上のＡＣＰＩ通知メッセージを介して）提供される。同様に、デバイスがプラグ接続解除される場合、ファームウェアは、そのデバイスをイジェクト（eject）する要求が受信されたことをオペレーティングシステムに通知する。オペレーティングシステムは、デバイスが使用中でないことを検証し、次いで、（たとえば、１つ又は２つ以上のＡＣＰＩ要求を介して）ハードウェアを「イジェクト」する要求を、ファームウェアインターフェースを介して、ファームウェアへ発行する。
【０００５】
ハードウェア資源を仮想化することができることによって、実マシンの実ハードウェア資源のサブセットを、サイズ又は容量が削減された個別の仮想ハードウェア資源として表すことが可能になり、さらに、これらの仮想化された資源を、１つ又は２つ以上の仮想マシンへのホットスワップイン及び仮想マシンからのホットスワップアウトが可能になる。したがって、たとえば、実コンピュータシステム内の１ＧＢメモリを、その実コンピュータシステム上で実行される１つ又は２つ以上の仮想マシン間で動的に割り当てられる８つの１２８ＭＢの仮想メモリとして表すことができる。仮想マシンに割り当てられた各資源は、そのマシンの仮想ファームウェアによってオブジェクト（たとえば、ＡＣＰＩオブジェクト）として表される。このオブジェクトは、ファームウェアインターフェースによって、仮想マシン上で実行されるオペレーティングシステムに対してアクセス可能とされる。各仮想メモリは、必要に応じて、実コンピュータシステム上で実行される仮想マシンのいずれにも仮想的にホットスワップインすることができるし、そのような仮想マシンのいずれからも仮想的にホットスワップアウトすることもできる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、所与の資源のサブセットの割り当てにおいてより大きな柔軟性を達成するために、より多くのオブジェクトが使用されることがある。多くの仮想化された資源を使用することによって、実資源をよりきめ細かく割り当てることが可能になり、仮想資源が使用中であり再割り当てに利用可能でないとの理由で、仮想資源をイジェクトする要求が拒否される可能性が低減される。しかし、仮想化された資源の個数が増加するにつれて、多数の仮想化された資源を再割り当てすることに関連付けられるオーバーヘッド（overhead）が、システム、特に、多数のこのような再割り当てを行うシステム（たとえば、仮想マシン間で動的な負荷バランシングを行うシステム）の性能に悪影響を与える可能性がある。
【課題を解決するための手段】
【０００７】
本発明にかかる方法は、実コンピュータシステム（１００）上で仮想マシンソフトウェア（３００）を実行することであって、該仮想マシンソフトウェアはハイパーバイザ（２００）を含み、１つの仮想マシンが複数の仮想デバイス（２２０、２２１）を備える、仮想マシンソフトウェア（３００）を実行することと、前記複数の仮想デバイスのそれぞれを、前記実コンピュータシステム内の実デバイス（１１０）の一意のサブセットに関連付けることと、前記ハイパーバイザが、前記仮想マシン内の仮想ファームウェア（３１６）へ、前記複数の仮想デバイスの１つ又は２つ以上の仮想デバイスを前記仮想マシンからイジェクト（eject）することを要求するイジェクト要求を送信することと、前記仮想ファームウェア内の仮想デバイス資源オブジェクトが、前記仮想マシン上で実行される仮想デバイス資源ドライバ（３１５）へ前記イジェクト要求を転送することと、前記仮想デバイス資源ドライバが、前記転送された要求に応答して、前記１つ又は２つ以上の仮想デバイスのそれぞれの前記仮想マシンからの個別のイジェクトを引き起こすこととを含む。
【０００８】
ここで、この発明の例示的な実施形態の詳細な説明のために、添付図面を参照する。
【発明を実施するための最良の形態】
【０００９】
表記及び用語
以下の説明及び特許請求の範囲の全体にわたって、特定のシステムコンポーネントを指すために、特定の用語が使用される。当業者には理解されるように、コンピュータ会社によって、１つのコンポーネントを異なる名前で指す場合がある。
本明細書は、名前は異なるが、機能は異ならないコンポーネントを区別することは意図していない。
以下の解説及び特許請求の範囲において、「含む（including）」及び「備える（comprising）」という用語は、限定のない様式で使用され、したがって、「〜を含むが、これらに限定されるものではない」ことを意味するように解釈されるべきである。
また、「結合する（"couple" or "couples"）」という用語は、間接的な電気接続、直接的な電気接続、光電気接続、又は無線電気接続のいずれをも意味するように意図されている。
したがって、第１のデバイスが第２のデバイスに結合する場合、その接続は、直接的な電気接続を通じている場合もあるし、他のデバイス及び接続を介して間接的な電気接続を通じている場合もあるし、光電気接続を通じている場合もあるし、無線電気接続を通じている場合もある。加えて、「システム」という用語は、２つ以上のハードウェアコンポーネント及びソフトウェアコンポーネント又はこれらのいずれか（ハードウェアコンポーネント及び／又はソフトウェアコンポーネント）の集まりを指し、コンピュータ、コンピュータの一部、コンピュータの組み合わせ等の電子デバイスを指すのに使用される場合がある。
さらに、「ソフトウェア」という用語は、ソフトウェアを記憶するのに使用される媒体にかかわらず、プロセッサ上で実行することができる任意の実行可能コードを含む。
したがって、不揮発性メモリに記憶されて、「組み込みファームウェア」と呼ばれることもあるコードは、ソフトウェアの定義内に含まれる。
また、「実コンピュータシステム」という用語は、たとえば、図２Ａ及び図２Ｂに示すコンピュータシステム等、実際の物理的なコンピュータシステムを指す。
「仮想マシン」という用語は、コンピュータシステムのシミュレーション、エミュレーション、又は他の同様の機能表現を指し、それによって、仮想マシンは、１つ又は２つ以上の実コンピュータシステム又は物理コンピュータシステムを画定する物理的境界によって制約されない１つ又は２つ以上の機能コンポーネントを含む。
これらの機能コンポーネントには、実デバイス又は物理デバイス、相互接続バス、及びネットワーク、並びに、１つ又は２つ以上のＣＰＵ上で実行されるソフトウェアプログラムが含まれ得る。
仮想マシンは、たとえば、１つの実コンピュータシステム内又は物理コンピュータシステム内の一部の機能コンポーネントを含むが、すべての機能コンポーネントを含むとは限らない機能コンポーネントのサブセットを含む場合もあるし、複数の実コンピュータシステム又は物理コンピュータシステムの一部の機能コンポーネントを含む場合もあるし、或る実コンピュータシステム又は物理コンピュータシステムのすべての機能コンポーネントを含むが、別の実コンピュータシステム又は物理コンピュータシステムの一部のコンポーネントしか含まない場合もあるし、複数の実コンピュータシステム又は物理コンピュータシステムのすべての機能コンポーネントを含む場合もある。
他の多くの組み合わせが可能であり、このようなすべての組み合わせは、本開示の範囲内にあるように意図されている。
さらに、「仮想」という用語は、他のコンポーネント、システム、及び／又はサブシステム（たとえば、メモリ、ファームウェア、資源、ストレージデバイス、及び入出力デバイス）に関連付けられると、同様に、仮想マシンの一部又は仮想マシンソフトウェアプログラムの一部として実施されるコンポーネント、システム、及び／又はサブシステムのシミュレーション、エミュレーション、又は他の同様の機能表現を指す。
【００１０】
図１は、少なくともいくつかの例示的な実施形態に従って構成された、仮想化ソフトウェア（ハイパーバイザ及び１つ又は２つ以上の仮想マシンを含む）を実行するのに適切なコンピュータシステム１００を示している。
このコンピュータシステム１００は、処理ロジック１０２（たとえば、マイクロプロセッサ）及び揮発性ストレージ１１０（たとえば、ランダムアクセスメモリ、すなわちＲＡＭ）を含む。ハイパーバイザ２００（「仮想マシンモニタ」と呼ぶことがある）は、メモリ１１０にロードされてプロセッサ１０２によって実行される１つ又は２つ以上の仮想マシンソフトウェアプログラムを含む。
ハイパーバイザ２００は、ハイパーバイザ２００によって作成される動作環境内で実行される１つ又は２つ以上の仮想マシンに対する制御、及びそれらの仮想マシン間の分離を維持する。いくつかの例示的な実施形態では、ハイパーバイザ２００は、基本入出力システム（ＢＩＯＳ）ソフトウェアを含む一方、他の例示的な実施形態では、ＢＩＯＳが、ハイパーバイザ２００を含む。
さらに他の例示的な実施形態では、ハイパーバイザ２００は、プロセッサ１０２上で実行されるオペレーティングシステムの一部として含まれる一方、さらに他の例示的な実施形態では、ハイパーバイザ２００は、プロセッサ１０２上ですでに実行されているオペレーティングシステム内でアプリケーションプログラムとして実行される。
ＢＩＯＳソフトウェア、オペレーティングシステムソフトウェア、及びハイパーバイザソフトウェアの他の変形及び組み合わせは、当業者に明らかになり、このようなすべての変形及び組み合わせは、本開示の範囲内にある。
【００１１】
図１のハイパーバイザ２００によって作成される動作環境内で実行される３つの仮想マシン（ＶＭ３００、ＶＭ４００、及びＶＭ５００）が示されている。
各仮想マシンは、コンピュータシステム１００と同様の実コンピュータシステムをエミュレート及び／又はシミュレートする。
したがって、各仮想マシンは、仮想プロセッサ（ｖＰｒｏｃ３１２、４１２、及び５１２）、仮想メモリデバイス（ＶＭ３００内に含まれるｖＭｅｍ［０］（２２０）及びｖＭｅｍ［１］（２２１）、ＶＭ４００内のｖＭｅｍ［２］（２２２）、及びＶＭ５００内のｖＭｅｍ［３］（２２３））、並びに仮想ファームウェア（ｖＦ／Ｗ３１６、４１６、及び５１６）を含む。
仮想ファームウェアは、たとえば、ＢＩＯＳコード（図示せず）、及び仮想マシン３００の仮想ファームウェア３１６内に示されている仮想アドバンストコントロールアンドパワーインターフェース（virtual Advanced Control and Power Interface：ｖＡＣＰＩ）ファームウェア３１８のようなハードウェア・電力制御インターフェースコードのような、実ファームウェアに含まれるプログラムと同様のプログラムを含む。
図１の実施形態は、仮想ＡＣＰＩファームウェアを含むが、他の例示的な実施形態は、他の仮想化されたハードウェアインターフェースファームウェア（たとえば、Ｉｎｔｅｌ（登録商標）による拡張可能ファームウェアインターフェース（ＥＦＩ））を含んでもよく、このようなすべての仮想化されたハードウェアインターフェースファームウェアが、本開示の範囲内にある。
【００１２】
ｖＡＣＰＩ３１８は、仮想マシン３００の仮想化されたハードウェアに対するインターフェースを、仮想プロセッサ３１２上で実行されるソフトウェアに提供する。
このようなソフトウェアには、たとえば、図１のオペレーティングシステム３１４（仮想メモリ資源ドライバ（ｖＭＲＤｖｒ）３１５を含む）が含まれる。
ｖＡＣＰＩ３１８は、一連のオブジェクトを保持する。これらのオブジェクトは、それぞれが仮想化されたハードウェア要素に対応すると共に、それぞれが仮想化された各ハードウェア要素の構成及びステータスに関連する情報を含む。
したがって、たとえば、ｖＭｅｍＯｂｊ［０］（仮想メモリオブジェクト３２０）は、ｖＭｅｍ［０］（仮想メモリデバイス２２０）に関連する情報を含む仮想マシン３００内の仮想化されたＡＣＰＩオブジェクトであり、同様に、ｖＭｅｍＯｂｊ［１］（仮想メモリオブジェクト３２１）は、ｖＭｅｍ［１］（仮想メモリデバイス２２１）に関連する情報を含む仮想化されたＡＣＰＩオブジェクトである。
これらのオブジェクト内に含まれる情報は、たとえば、仮想マシン３００のメモリアドレス空間内のデバイスのベースアドレス及びアドレス範囲を含むことができる。
【００１３】
図１の例示的な実施形態の仮想ＡＣＰＩ３１８は、仮想メモリ資源オブジェクト（ｖＭＲｓｒｃＯｂｊ）３３０も保持する。この仮想メモリ資源オブジェクト３３０は、仮想デバイスグループ（ここでは、図示されている例示的な実施形態における、仮想メモリデバイスグループ）のデバイスタイプに関連付けられている。
仮想メモリ資源オブジェクト３３０は、仮想メモリデバイスグループを「ホットスワップ」する（すなわち、対応する仮想マシンをリセットもリブートもすることなく仮想メモリデバイスを追加又は除去する）ためのステータス及び制御の単一のポイントを提供する。
したがって、たとえば、特定のメモリ量をイジェクトする要求が、（たとえば、汎用イベント、すなわちＧＰＥを介して）ハイパーバイザ２００からｖＡＣＰＩ３１８によって受信された場合、集約された単一のイジェクト通知が、ｖＡＣＰＩ３１８によって仮想メモリ資源オブジェクト３３０へ送信される。
仮想メモリ資源オブジェクト３３０は、次に、要求を仮想メモリ資源ドライバ３１５へ送信する。
また、仮想メモリ資源オブジェクト３３０は、デバイスオブジェクトグループについてのステータス及び／又は情報を得るための単一のポイントも提供する。
したがって、たとえば、仮想メモリ資源ドライバ３１５は、仮想マシン内の仮想メモリのそれぞれについての情報（たとえば、イジェクトされる仮想メモリデバイスに対応する仮想メモリオブジェクトのリスト、又は、イジェクトされるメモリ量のサイズ）を得る単一のクエリを仮想メモリ資源オブジェクト３３０へ発行することができる。
【００１４】
仮想メモリ資源ドライバ３１５は、オペレーティングシステム３１４と対話（interact）して、要求を満たすのに十分な仮想メモリデバイスが使用中でないか、又は、メモリ外へ移動させることができる（メモリをイジェクトに利用可能にする）スワップ可能なタスクによってアクセスされているか否かを判断する。
仮想メモリ資源ドライバ３１５が、要求を満たすのに十分な仮想メモリデバイスを特定した場合、各仮想メモリデバイスに対する個別のイジェクト要求が、仮想メモリ資源ドライバ３１５によって内部（すなわち、オペレーティングシステム３１４内）で生成され、イジェクトされるメモリデバイスに対応する各仮想メモリオブジェクト（たとえば、図１の仮想メモリオブジェクト３２０）へ送信される。
個別のイジェクトオペレーションが完了すると、仮想メモリ資源オブジェクト３３０は、（仮想メモリ資源ドライバ３１５から受信された完了ステータスに基づいて）集約されたイジェクトの完了ステータスをハイパーバイザ２００へ返す。
【００１５】
図１の例示的な実施形態の仮想メモリ資源オブジェクト３３０及び仮想メモリ資源ドライバ３１５のオペレーションによって、単一の要求を使用して複数の仮想メモリデバイスのイジェクトが可能になり、さらに、１つ又は２つ以上の仮想メモリデバイスのイジェクトを最初に試みることなく、イジェクト要求を拒否することが可能になる。
仮想メモリ資源ドライバ３１５は、個別のイジェクト要求のいずれかが個別の仮想メモリオブジェクトへ発行される前に、十分なメモリデバイスが要求を満たすのに利用可能であるかどうかを判断するので、要求は、当該要求が、要求されたメモリ量のイジェクトに成功することができない限り、システムの構成を変更しないことになる。
さらに、仮想メモリ資源ドライバ３１５へ向けられる単一の要求を使用することに加えて、オリジナルの要求を満たすのに必要な数の個別のイジェクトのみを発行する結果、各仮想メモリデバイスの個別のイジェクトを試みると共に、場合によっては、仮想マシン内の仮想メモリデバイスのすべてのイジェクトを１つずつ試みなければならないハイパーバイザと比較して、イジェクトオペレーションはより効率的なものとなる。
また、必要とされるものよりも多くのメモリデバイスが利用可能である場合、仮想メモリ資源ドライバは、イジェクトするのに必要なオーバーヘッドが最小となる仮想メモリデバイス（たとえば、データをスワップアウトすることを必要とするメモリではなく、使用中でないメモリ）をイジェクトするように選択することができる。このような選択によって、イジェクトの実行全体をより高速にすることが可能になる。
【００１６】
少なくともいくつかの例示的な実施形態では、ハイパーバイザ２００によって仮想資源オブジェクト３３０へ送信される、仮想メモリデバイスをイジェクトする要求は、イジェクトするメモリ量ではなく、イジェクト用に特定された特定の仮想メモリデバイスのリストを含む。
このような実施形態では、仮想資源オブジェクト３３０は、この場合も、仮想メモリ資源ドライバ３１５へ単一の要求を送信するが、すべての利用可能なメモリをスキャンして要求を満たすのに十分な仮想メモリデバイスを見つける代わりに、要求内にリストされた仮想メモリデバイスのみがチェックされて、それらの仮想メモリデバイスに対応するメモリ範囲が使用中でない（又は、スワップ可能なタスクによって使用されている）かが判断される。
リストされたデバイスのいずれかが利用可能でない場合、要求は拒否される。そうでない場合、イジェクト要求は、リストされた各仮想メモリデバイスに対応する各仮想メモリオブジェクトへ送信される。
個別のイジェクトオペレーションがすべて完了すると、仮想メモリ資源オブジェクト３３０は、（仮想メモリ資源ドライバ３１５から受信された完了ステータスに基づいて）集約されたイジェクトの完了ステータスをハイパーバイザ２００へ返す。
【００１７】
少なくともいくつかの例示的な実施形態では、図１（仮想メモリデバイス２２４〜２２７（ｖＭｅｍ［４〜７］）に示すように、ハイパーバイザ２００は、割り当てられていない仮想メモリデバイス（すなわち、仮想マシンに追加されていない仮想メモリデバイス）のレポジトリを保持する。
必要に応じて、このレポジトリ内の仮想メモリデバイスを、１つ又は２つ以上の仮想マシンからイジェクトされた仮想メモリデバイスと共に利用して、仮想メモリデバイスを、コンピュータシステム１００内の他の仮想マシンに提供することができる。
他の例示的な実施形態では、ハイパーバイザ２００内の割り当てられていない仮想メモリデバイスのプールに仮想メモリデバイスを保持するのではなく、仮想メモリデバイスが必要とされる時に、「オンザフライ（on-the-fly）」で仮想メモリデバイスを作成して、仮想マシンに割り当てることができる。
【００１８】
図１の例示的な実施形態の割り当てられている仮想メモリデバイス及び割り当てられていない仮想メモリデバイスの双方は、メモリ１１０内に含まれる１つ又は２つ以上の実メモリデバイスの一部分又はサブセットを含む。
したがって、たとえば、少なくとも１つの例示的な実施形態では、メモリ１１０は４つの１ＧＢの実メモリデバイス（たとえば、４つの１ＧＢのデュアルインラインメモリモジュール、すなわちＤＩＭＭ）を含む一方、各仮想メモリデバイスは、２５６ＭＢの実メモリのみを含む。
仮想メモリ２２０〜２２３は、第１のＤＩＭＭの１ＧＢのメモリを利用し、仮想メモリ２２４〜２２７は、第２のＤＩＭＭの１ＧＢのメモリを利用し、残りの２つのＤＩＭＭの残りの２ＧＢのメモリは、ハイパーバイザ２００、及び／又は、実プロセッサ１０２上で実行される他の任意のアプリケーションプログラムによって利用される。
実メモリデバイス及び仮想メモリデバイスの他の多くの編成及び組み合わせが当業者に明らかになり、このようなすべての編成及び組み合わせは、本開示の範囲内にある。
【００１９】
図２Ａ及び図２Ｂは、図１の仮想化ソフトウェア（ハイパーバイザ２００並びに仮想マシン３００、４００、及び５００）を実行するのに適した例示的なコンピュータシステム１００を示している。
図示するように、例示的なコンピュータシステム１００は、筐体１８０、ディスプレイ１４０、及び入力デバイス１７０を含む。
コンピュータシステム１００は、処理ロジック１０２、揮発性ストレージ１１０、及び不揮発性ストレージ１６４を含む。
処理ロジック１０２は、ハードウェア（たとえば、マイクロプロセッサ）、ソフトウェア（たとえば、マイクロコード）、又はハードウェア及びソフトウェアの組み合わせで実施することができる。
また、コンピュータシステム１００は、コンピュータ可読媒体も含む。コンピュータ可読媒体には、揮発性ストレージ１１０（たとえば、ランダムアクセスメモリ（ＲＡＭ））、不揮発性ストレージ１６４（たとえば、フラッシュＲＡＭ、読み出し専用メモリ（ＲＯＭ）、ハードディスクドライブ、フロッピー（登録商標）ディスク（たとえば、フロッピー（登録商標）１９４）、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ、たとえばＣＤ１９６）、又はそれらの組み合わせが含まれる。
【００２０】
揮発性ストレージ１１０及び不揮発性ストレージ１６４のいずれか又は双方は、たとえば、処理ロジック１０２によって実行されてコンピュータシステム１００に本明細書で説明する機能の一部又はすべてを提供するソフトウェアを含む。
また、コンピュータシステム１００は、ネットワークインターフェース（ネットＩ／Ｆ）１６２も含む。このネットワークインターフェース１６２によって、コンピュータシステム１００は、イーサネット（登録商標）ジャック１９２によって図２Ａの例において表されているローカルエリアネットワーク及び／又は有線若しくは無線のワイドエリアネットワークを介して情報を受信することが可能になる。
ビデオインターフェース（ビデオＩ／Ｆ）１４２は、ディスプレイ１４０に結合している。
ユーザは、入力デバイス１７０（たとえば、キーボード）及び／又はポインティングデバイス１７２（たとえば、マウス）を介してこのステーションと対話する。入力デバイス１７０及びポインティングデバイス１７２は、周辺インターフェース１６８に結合している。
ディスプレイ１４０は、入力デバイス１７０及び／又はポインティングデバイス１７２と共に、合わせてユーザインターフェースとして動作することができる。
【００２１】
コンピュータシステム１００は、さまざまなバスが一連のハブ又はブリッジを通じて、図２Ｂに示されるさまざまな要素を相互接続するバスベースのコンピュータとすることができる。
これら一連のハブ又はブリッジは、メモリコントローラハブ（ＭＣＨ）１０４（「ノースブリッジ」と呼ばれることがある）及びインターフェースコントローラハブ（ＩＣＨ）１０６（「サウスブリッジ」と呼ばれることがある）を含む。
図２Ｂの例示的な実施例のバスは、処理ロジック１０２をＭＣＨ１０４に結合するフロントサイドバス１０３と、ビデオインターフェース１４２をＭＣＨ１０４に結合するアクセラレーテッド（accelerated）グラフィックスポート（ＡＧＰ）バス１４１と、ネットワークインターフェース１６２、不揮発性ストレージ１６４、周辺インターフェース１６８、及びＩＣＨ１０６を互いに結合する周辺コンポーネント相互接続（ＰＣＩ）バス１６１と、１つ又は２つ以上のＰＣＩエクスプレスデバイス１５２をＭＣＨ１０４に結合するＰＣＩエクスプレス（ＰＣＩｅ）バス１５１と、ＭＣＨ１０４を揮発性ストレージ１１０内のデュアルインラインメモリモジュール（ＤＩＭＭ）１２０及び１３０に結合するメモリバス１１１とを含む。
【００２２】
周辺インターフェース１６８は、入力デバイス１７０からの信号、及び、ポインティングデバイス１７２のような他の入力デバイスから信号を受け取り、それらの信号をＰＣＩバス１６１上での通信に適した形式に変換する。
ビデオインターフェース１４２は、ＡＧＰバス１４１から情報を受け取ってこの情報をディスプレイ１４０に適した形式に変換するグラフィックスカード又は他の適切なビデオインターフェースを含むことができる。
処理ロジック１０２は、他のシステム要素から情報を収集する。この情報には、周辺インターフェース１６８からの入力データ、ならびに、不揮発性ストレージ１６４若しくは揮発性ストレージ１１０からのプログラム命令及び他のデータ、又は、ネットワークインターフェース１６２を介してローカルエリアネットワーク若しくはワイドエリアネットワークに結合されている他のシステム（たとえば、実行可能コードのコピーを記憶して配信するのに使用されるサーバ）からのプログラム命令及び他のデータが含まれる。
処理ロジック１０２は、プログラム命令（たとえば、ハイパーバイザ２００）を実行し、それに応じてデータを処理する。
プログラム命令は、さらに、ビデオインターフェース１４２及びディスプレイ１４０を介してユーザに提示される情報のようなデータを他のシステム要素へ送信するように処理ロジック１０２を構成することができる。
ネットワークインターフェース１６２によって、処理ロジック１０２は、ネットワーク（たとえば、インターネット）を介して他のシステムと通信することが可能になる。
揮発性ストレージ１１０は、処理ロジック１０２の情報の低遅延一時ストアとして機能することができ、不揮発性ストレージ１６４は、情報の長期（ただし、より高遅延）ストアとして機能することができる。
【００２３】
処理ロジック１０２は、不揮発性ストレージ１６４に記憶されているか又はネットワークインターフェース１６２を介して受信される１つ若しくは２つ以上のプログラムに従って動作し、したがって、コンピュータシステム１００が、全体としてそのように動作する。
処理ロジック１０２は、より高速なアクセスを得るために、プログラムの一部を揮発性ストレージ１１０にコピーすることができ、入力デバイス１７０のユーザによる作動に応答して、プログラム間の切り換え又は追加プログラムの実行を行うことができる。
追加プログラムは、不揮発性ストレージ１６４から取り出すこともできるし、ネットワークインターフェース１６２を介して他のロケーションから取り出すか又は受信することもできる。
これらのプログラムの１つ又は２つ以上は、コンピュータシステム１００上で実行され、コンピュータシステムに、本明細書で開示する少なくともいくつかの機能を実行させる。
【００２４】
図３Ａ〜図３Ｃは、少なくともいくつかの例示的な実施形態による、ハイパーバイザ２００による仮想メモリデバイスの仮想マシン３００への追加の一例を示している。
図３Ａは、仮想メモリデバイス２２０がすでに割り当てられている仮想マシン３００を示している。
仮想メモリデバイス２２１及び２２２は、ハイパーバイザ２００によって、割り当てられていない仮想メモリデバイスとして割り当てられていない仮想メモリデバイスのプール内に保持される。これらのメモリデバイスは、要求に応じた割り当てに利用可能である。
図３Ａ〜図３Ｃの実施形態は、割り当てられていない仮想メモリデバイスの静的なプールを示しているが、他の例示的な実施形態では、たとえば、割り当て要求が（たとえば、コンピュータシステム１００に関連付けられているユーザインターフェースを介して要求を発行するオペレータから）ハイパーバイザ２００によって受信されるとき、ハイパーバイザ２００によって監視されるように各仮想マシンにすでに割り当てられているメモリのメモリ利用レベルに基づいて要求がハイパーバイザ２００によって内部で生成されるとき、又は、仮想マシンによって監視された仮想マシンのメモリ利用レベルに基づいて、要求が仮想マシンによってハイパーバイザに対して生成されるときのように、「必要に応じて」又は「オンザフライ」で、仮想メモリデバイスは生成される。
【００２５】
図３Ａは、仮想メモリデバイスを追加する初期要求３５１が、ハイパーバイザ２００からｖＡＣＰＩ３１８へ送信されることを示している。
ハイパーバイザ２００は、仮想「ホットプラグ」指示の形で（たとえば、ＡＣＰＩ汎用イベント、すなわちＧＰＥとして）、この追加要求をｖＡＣＰＩ３１８へ送信する。
図３Ｂは、この要求に対する初期応答を示している。図３Ｂでは、仮想メモリデバイス２２１及び２２２と、仮想プロセッサ３１２を仮想メモリデバイス２２０に結合するバスとの間の破線によって示すように、これまで割り当てられていない仮想メモリデバイス２２１及び２２２は、仮想マシン３００に追加されるが、使用するにはまだ利用可能ではない。
仮想メモリデバイスオブジェクト３２１及び３２２は、ｖＡＣＰＩ３１８によって追加されるが、（それらのメモリオブジェクトの周りの破線によって示すように）オペレーティングシステム３１４によってまだ認識されていない。
少なくともいくつかの例示的な実施形態では、仮想メモリオブジェクトは、ＡＣＰＩ名前空間にすでに存在し、仮想メモリデバイス２２１及び２２２の追加に応答して、無効状態から有効状態に遷移される。
ホットプラグ通知３５３は、仮想メモリ資源オブジェクト３３０によって仮想メモリ資源ドライバ３１５へ転送され、仮想メモリデバイス２２１及び２２２の、仮想マシン３００の仮想ハードウェア構成への追加を反映する。
少なくともいくつかの例示的な実施形態では、この通知３５３は、新しい仮想メモリオブジェクトのリストを含む一方、他の例示的な実施形態では、新しい仮想メモリオブジェクトのリストは、仮想メモリ資源オブジェクトに問い合わせることによって得ることができる。
仮想メモリ資源ドライバ３１５は、２つの個別のホットプラグ指示（各仮想メモリデバイス当たり１つ）を内部で生成し、図３Ｃに示すように、追加された仮想メモリデバイスをオペレーティングシステム３１４に認識させ、オペレーティングシステム３１４の構成にデバイスを追加させる。
個別の仮想メモリデバイスの追加が完了すると、仮想メモリ資源ドライバ３１５は、完了ステータス３５５を仮想メモリ資源オブジェクト３３０へ送信し、仮想メモリ資源オブジェクト３３０は、次に、完了ステータス３５７をハイパーバイザ２００へ返す。
【００２６】
図４Ａ〜図４Ｄは、少なくともいくつかの例示的な実施形態による、或る仮想マシンから別の仮想マシンへの仮想メモリデバイスの再割り当てを示している。
図４Ａは、仮想メモリデバイス２２０、２２１、及び２２２が仮想マシン３００にすでに割り当てられており、仮想メモリデバイス２２３が仮想マシン４００にすでに割り当てられていることを示している。
仮想マシン３００から仮想マシン４００へ仮想メモリを再割り当てする要求が受信されると、ハイパーバイザ２００は、まず、「ホットプラグ解除」指示又は「イジェクト」指示の形で、必要なメモリを割り当て解除する要求４５１をｖＡＣＰＩ３１８へ発行する。
いくつかの例示的な実施形態では、この要求は、イジェクトされる仮想メモリデバイスをリストすることができる一方、他の例示的な実施形態では、この要求は、仮想メモリ資源ドライバ３１５内の１つ又は２つ以上の機能によって、必要な個数の仮想メモリデバイスに変換される１つ又は２つ以上のメトリック（たとえば、メモリサイズ、並びに、ライトバック、揮発性／不揮発性、及びメモリ局所性のようなメモリ属性）を指定することができる。
【００２７】
図４Ｂを参照すると、仮想集約オブジェクト３３０が、イジェクト要求４５３を仮想メモリ資源ドライバ３１５へ転送し、仮想メモリ資源ドライバ３１５は、必要な資源が利用可能であるか否かを判断する。
図４Ａ〜図４Ｅの例では、この要求は、２つの利用可能な仮想メモリデバイスを必要とする。これらの仮想メモリデバイスは、仮想マシン３００から利用可能であり、仮想マシン３００から割り当て解除（イジェクト）することができる。
図４Ｂは、仮想メモリオブジェクト３２１及び３２２の除去（メモリオブジェクトの破線の境界によって示される）、並びに、対応する仮想メモリデバイス２２１及び２２２の除去（仮想メモリデバイス２２１及び２２２から、仮想メモリデバイス２２０を仮想プロセッサ３１２に結合するバスへの破線によって示される）を示している。
図４Ｃに示すように、イジェクトの完了時に、仮想メモリ資源ドライバ３１５は、完了ステータス４５５を仮想メモリ資源オブジェクト３３０へ送信し、仮想メモリ資源オブジェクト３３０は、次に、完了ステータス４５７をハイパーバイザ２００へ送信する。
【００２８】
仮想メモリデバイス２２１及び２２２が仮想メモリ３００から割り当て解除（イジェクト）されると、ハイパーバイザ２００は、割り当て要求４５９（図４Ｃ）をｖＡＣＰＩ４１８へ（「ホットプラグ」指示の形で）送信し、ｖＡＣＰＩ４１８は、次に、（破線の仮想メモリオブジェクトによって示される）仮想メモリオブジェクト４２１及び４２２を作成し、図４Ｄに示すように、ホットプラグ通知メッセージ（４６１）を仮想メモリ資源ドライバ４１５へ送信する。
また、図４Ｄは、仮想メモリデバイス２２１及び２２２の仮想マシン４００への追加、並びに、この追加の初期認識（仮想メモリデバイス２２１及び２２２から、仮想メモリデバイス２２３及び仮想プロセッサ４１２を結合するバスへの破線によって示される）も示している。
図４Ｅは、仮想メモリデバイス２２１及び２２２の仮想マシン４００への結果の割り当てを示している。
仮想メモリデバイス２２１及び２２２の追加の完了時に、仮想メモリ資源ドライバは、完了ステータス４６３を仮想メモリ資源オブジェクト４３０へ送信し、仮想メモリ資源オブジェクト４３０は、次に、完了ステータス４６５をハイパーバイザ２００へ送信する。
【００２９】
少なくともいくつかの例示的な実施形態では、仮想デバイスをイジェクトする要求は、イジェクトされる仮想デバイスの特性を反映するメトリックを含む。
したがって、たとえば、（たとえば、図４Ａ〜図４Ｃに示すような）このような実施形態における仮想メモリデバイス２２１及び２２２を仮想マシン３００からイジェクトする要求は、イジェクトされるメモリ量をバイト単位で含む。
仮想メモリデバイスのサイズに基づいて、必要なデバイスの個数が、仮想メモリ資源ドライバ３１５内の１つ又は２つ以上の機能によって求められ、要求を満たすのに必要な個数のデバイスが使用中でない場合、又は、スワップ可能なタスクによって使用中であり、したがって利用可能である場合には、要求された仮想メモリはイジェクトされる。
たとえば、各仮想メモリデバイスが１２８ＭＢであり、且つ２ＧＢのメモリのイジェクトが要求されている場合、少なくとも１６個のメモリデバイスが利用可能であるときに、要求されたメモリはイジェクトされることになる。
異なるタイプの仮想デバイスに関連付けられている他のメトリックを、仮想デバイスをイジェクトする要求内で使用することができ、このようなすべてのメトリック及び仮想デバイスのタイプが、本開示の範囲内にある。
デバイスの要求が、特定の要求されたデバイスのリストではなくメトリックに基づくものとすることを可能にすることによって、仮想デバイスを要求及び／又は管理するプログラム（たとえば、仮想マシン上で実行されるアプリケーション、又は、ハイパーバイザプログラム）は、要求を行うことに先立って、どのデバイスが使用中であるのかの追跡もチェックも行う必要がないため、資源の負荷バランシングが簡単になる。
【００３０】
図５は、少なくともいくつかの例示的な実施形態による、或る仮想マシンから別の仮想マシンへ１つ又は２つ以上の仮想デバイスをイジェクトして追加する（すなわち、再割り当てする）方法６００を示している。
第１の仮想マシンに現在割り当てられている１つ又は２つ以上の仮想デバイスをイジェクト（割り当て解除）する要求が、第１の仮想マシン内の仮想資源オブジェクトへ送信される（ブロック６０２）。
ブロック６０４に示すように、この要求を満たすのに必要な仮想デバイスが、第１の仮想マシンによって使用中でない場合、又は、使用中であるが利用可能にできる場合（たとえば、メモリデバイスからスワップアウト及び／又はクリアすることができるコンテンツ）、要求された仮想デバイスは、第１の仮想マシンからイジェクトされる（ブロック６０８）。
ブロック６０４に示すように、必要な仮想デバイスが使用中であり、且つ、利用可能にできない（すなわち、クリアすることができない）場合、この要求は拒否され（ブロック６０６）、この方法は終了する（ブロック６１６）。
イジェクトされたデバイスが、別の仮想マシンに追加されることになっていない場合（ブロック６１０）、この方法は終了する（ブロック６１６）。
要求された仮想デバイスがイジェクトされ（ブロック６０８）、且つ、イジェクトされたデバイスの１つ又は２つ以上が第２の仮想マシンに追加されることになっている場合（ブロック６１０）、１つ又は２つ以上の仮想デバイスを仮想マシンに追加するコマンドが、第２の仮想マシン内の仮想デバイス資源オブジェクトへ送信される（ブロック６１２）。
この要求によって、仮想ホットプラグイベントが、仮想マシンによって生成されサービスされて、要求された仮想デバイスが、仮想マシンに追加され（ブロック６１４）、この方法は終了する（ブロック６１６）。
【００３１】
上記解説は、本発明の原理及びさまざまな実施形態の例示であるように意図されている。
上記開示が十分に理解されると、当業者には、多数の変形及び変更が明らかになる。
たとえば、本開示の例示的な実施形態の少なくともいくつかは、仮想メモリデバイスの追加及びイジェクトを説明しているが、ほんの数例を挙げると、仮想ハードディスク、仮想ネットワークアダプタ、仮想プロセッサ（１つの仮想マシン当たり２つ以上、又は、異なる実効速度の仮想プロセッサ）のようなデバイスを含む、他の多くの仮想デバイスを、本明細書で説明するように追加及びイジェクトすることができる。
また、説明したイジェクト要求に設けられるメトリックは、メモリサイズに限定されるものではなく、イジェクトすることができる多くの仮想デバイスに関連付けられる任意の数のメトリックとすることができる。
このようなメトリックの例には、仮想ハードディスクの転送帯域幅、仮想ネットワークアダプタの通信帯域幅、仮想プロセッサの個数、（たとえば、１００万命令毎秒、すなわちＭＩＰＳ単位の）仮想プロセッサの処理能力、及び仮想プロセッサの速度が含まれ得る。
これらのそれぞれは、１つ又は２つ以上の実デバイスの対応するメトリックの比率として表すことができる。
添付の特許請求の範囲は、このようなすべての変形及び変更を包含するように解釈されることが意図されている。
【図面の簡単な説明】
【００３２】
【図１】少なくともいくつかの例示的な実施形態による、仮想マシンソフトウェアの複数のインスタンスを実行するコンピュータシステムを示す図である。
【図２Ａ】少なくともいくつかの例示的な実施形態に従って構成された図１のコンピュータシステムの一例を示す図である。
【図２Ｂ】少なくともいくつかの例示的な実施形態に従って構成された図２Ａのコンピュータシステムのブロック図である。
【図３Ａ】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図３Ｂ】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図３Ｃ】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図４Ａ】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図４Ｂ】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図４Ｃ】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図４Ｄ】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図４Ｅ】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図５】少なくともいくつかの例示的な実施形態に従って第１の仮想マシンから仮想デバイスをイジェクトして、オプションとして、仮想デバイスを第２の仮想マシンに再割り当てするための方法を示す図である。
【符号の説明】
【００３３】
１００・・・コンピュータシステム
１０２・・・処理ロジック
１１０・・・揮発性ストレージ
１４０・・・ディスプレイ
１４２・・・ビデオＩ／Ｆ
１５２・・・ＰＣＩｅデバイス
１６２・・・ネットＩ／Ｆ
１６４・・・不揮発性ストレージ
１６８・・・周辺Ｉ／Ｆ
１７２・・・ポインティングデバイス
１７０・・・入力デバイス
２００・・・ハイパーバイザ
３００，４００，５００・・・仮想マシン（ＶＭ）
３１２，４１２，５１２・・・仮想プロセッサ（ｖＰｒｏｃ）
２２０，２２１，２２２，２２３・・・仮想メモリデバイス（ｖＭｅｍ）
３１４・・・オペレーティングシステム
３１５・・・仮想メモリ資源ドライバ（ｖＭＲＤｖｒ）
３１６，４１６，５１６・・・仮想ファームウェア（ｖＦ／Ｗ）
３１８・・・ｖＡＣＰＩ
３２０，３２１，４２１，４２２・・・仮想メモリオブジェクト
３３０，４３０・・・仮想メモリ資源オブジェクト
【図１】
0005376496.tif 000002
【図２Ａ】
0005376496.tif 000003
【図２Ｂ】
0005376496.tif 000004
【図３Ａ】
0005376496.tif 000005
【図３Ｂ】
0005376496.tif 000006
【図３Ｃ】
0005376496.tif 000007
【図４Ａ】
0005376496.tif 000008
【図４Ｂ】
0005376496.tif 000009
【図４Ｃ】
0005376496.tif 000010
【図４Ｄ】
0005376496.tif 000011
【図４Ｅ】
0005376496.tif 000012
【図５】
0005376496.tif 000013