(57)【要約】【課題】  仮想化されたコンピュータシステム内に常駐するオペレーティングシステム（ＯＳ）またはアプリケーションソフトウェアに対するライセンス収入を徴収するための手段を提供すること。【解決手段】  本発明の一実施形態では、仮想マシン環境内のレガシのＯＳまたはアプリケーションに対するライセンス収入を徴収し、さらに、１回払いではなく、継続的な定期収入をソフトウェアメーカに提供する手段を提供する。より詳細には、仮想マシン環境においてライセンスマネージャを使用してソフトウェアライセンスの実施を提供するシステムおよび方法により、レガシのＯＳまたはアプリケーションをサポートするコンピュータシステム内のライセンス収入を徴収する改良された方法を提供する。また、仮想マシン環境内で動作するＯＳおよびアプリケーションに対してソフトウェアのサポートおよびアップグレードの増分を提供する。【選択図】  図４
2006018815.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン環境内の複数の仮想マシンが使用するためにソフトウェア製品をライセンス許諾する方法であって、前記ソフトウェア製品を仮想マシン単位でライセンス許諾することを含むことを特徴とする方法。
【請求項２】
前記仮想マシン環境内の前記複数の仮想マシンのうちの各仮想マシンに対してライセンス遵守を実施することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記仮想マシン環境内の前記複数の仮想マシンのうちの各仮想マシンに対してライセンス遵守を実施する前記要素は、前記各仮想マシンに対するライセンスカード仮想装置を自動的に利用することをさらに含み、前記ライセンスカード仮想装置は、ライセンスマネージャへと論理的に結合され、前記ライセンスマネージャにより、前記ソフトウェア製品の前記仮想マシン上での実行は、前記仮想マシンに関する前記ソフトウェア製品に対するライセンスが、前記仮想マシンに利用可能であり、前記仮想マシンに割り当て可能であるときに限り、行うことができるようになることを特徴とする請求項２に記載の方法。
【請求項４】
前記ソフトウェア製品はオペレーティングシステムであることを特徴とする請求項３に記載の方法。
【請求項５】
ある仮想マシンに関する追加のライセンスが要求されると、前記ライセンスマネージャは、少なくとも１つの新しいライセンスをライセンスベンダから入手することを特徴とする請求項３に記載の方法。
【請求項６】
前記仮想マシン環境内のある仮想マシンに関する少なくとも１つの追加のライセンスの入手を、前記仮想マシンに関するそのようなライセンスが存在せず利用可能であるとき自動的に行うことを特徴とする請求項１に記載の方法。
【請求項７】
前記ソフトウェア製品はオペレーティングシステムであり、
ライセンスカード仮想装置を含む仮想マシンを開始すること、
ライセンスキーが利用可能な場合、前記仮想マシンの前記ライセンスカードに前記ライセンスキーを割り当てること、および
ライセンスキーが利用可能でない場合、前記仮想マシンの実行を停止すること
を前記方法を実施するためにさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
ライセンスキーを割り当てる前記要素の前に、必要な場合、ライセンスキーが利用可能になるかどうかを判断すること、および、利用可能でない場合、少なくとも１つの追加のライセンスキーをライセンスベンダから得ることをさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
仮想マシン環境内の複数の仮想マシンが使用するためにソフトウェア製品をライセンス許諾するためのシステムであって、前記ソフトウェア製品を仮想マシン１つずつでライセンス許諾するための少なくとも１つのサブシステムを含むことを特徴とするシステム。
【請求項１０】
前記仮想マシン環境内の前記複数の仮想マシンのうちの各仮想マシンに対してライセンス遵守を実施するための少なくとも１つのサブシステムをさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記各仮想マシンに対するライセンスカード仮想装置を利用するための少なくとも１つのサブシステムをさらに含み、前記ライセンスカード仮想装置は、ライセンスマネージャへと論理的に結合され、前記ライセンスマネージャにより、前記ソフトウェア製品の前記仮想マシン上での実行は、前記仮想マシンに関する前記ソフトウェア製品に対するライセンスが、前記仮想マシンに利用可能であり、前記仮想マシンに割り当て可能であるときに限り、行うことができるようになることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記ソフトウェア製品はオペレーティングシステムであることを特徴とする請求項１１に記載のシステム。
【請求項１３】
ある仮想マシンに関する追加のライセンスが要求されると、前記ライセンスマネージャは、少なくとも１つの新しいライセンスをライセンスベンダから入手するための少なくとも１つのサブシステムをさらに含むことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記仮想マシン環境内のある仮想マシンに関する少なくとも１つの追加のライセンスの入手を、前記仮想マシンに関するそのようなライセンスが存在せず利用可能であるとき自動的に行う少なくとも１つのサブシステムをさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１５】
前記ソフトウェア製品はオペレーティングシステムであり、
ライセンスカード仮想装置を含む仮想マシンを開始すること、
ライセンスキーが利用可能な場合、前記仮想マシンの前記ライセンスカードに前記ライセンスキーを割り当てること、および
ライセンスキーが利用可能でない場合、前記仮想マシンの実行を停止すること
のための少なくとも１つのサブシステムをさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１６】
ライセンスキーを割り当てる前記要素の前に、必要な場合、ライセンスキーが利用可能になるかどうかを判断すること、および、利用可能でない場合、少なくとも１つの追加のライセンスキーをライセンスベンダから得ることのための少なくとも１つのサブシステムとをさらに含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
仮想マシン環境内の複数の仮想マシンが使用するためにソフトウェア製品をライセンス許諾するためのコンピュータ可読命令を含むコンピュータ可読媒体であって、前記コンピュータ可読命令は、前記ソフトウェア製品を仮想マシン単位でライセンス許諾することを含むことを特徴とするコンピュータ可読媒体。
【請求項１８】
前記仮想マシン環境内の前記複数の仮想マシンのうちの各仮想マシンに対してライセンス遵守を実施するための命令をさらに含むことを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記仮想マシン環境内の前記複数の仮想マシンのうちの各仮想マシンに対してライセンス遵守を実施することが、前記各仮想マシンに対するライセンスカード仮想装置を利用することによって行われる命令をさらに含み、前記ライセンスカード仮想装置は、ライセンスマネージャへと論理的に結合され、前記ライセンスマネージャにより、前記ソフトウェア製品の前記仮想マシン上での実行は、前記仮想マシンに関する前記ソフトウェア製品に対するライセンスが、前記仮想マシンに利用可能であり、前記仮想マシンに割り当て可能であるときに限り、行うことができるようになることを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２０】
前記ソフトウェア製品はオペレーティングシステムである命令をさらに含むことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
ある仮想マシンに関する追加のライセンスが要求されると、前記ライセンスマネージャは、少なくとも１つの新しいライセンスをライセンスベンダから入手するための命令をさらに含むことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項２２】
前記仮想マシン環境内のある仮想マシンに関する少なくとも１つの追加のライセンスの入手を、前記仮想マシンに関するそのようなライセンスが存在せず利用可能であるとき自動的に行うための命令をさらに含むことを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項２３】
前記ソフトウェア製品はオペレーティングシステムであり、
ライセンスカード仮想装置を含む仮想マシンを開始すること、
ライセンスキーが利用可能な場合、前記仮想マシンの前記ライセンスカードに前記ライセンスキーを割り当てること、および
ライセンスキーが利用可能でない場合、前記仮想マシンの実行を停止すること
のための命令をさらに含むことを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項２４】
ライセンスキーを割り当てる前記要素の前に、必要な場合、ライセンスキーが利用可能になるかどうかを判断すること、および、利用可能でない場合、少なくとも１つの追加のライセンスキーをライセンスベンダから得ることのための命令をさらに含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
仮想マシン環境内の複数の仮想マシンが使用するためにソフトウェア製品をライセンス許諾するためのハードウェア制御装置であって、前記ソフトウェア製品を仮想マシン単位でライセンス許諾する手段を含むことを特徴とするハードウェア制御装置。
【請求項２６】
前記仮想マシン環境内の前記複数の仮想マシンのうちの各仮想マシンに対してライセンス遵守を実施する手段をさらに含むことを特徴とする請求項２５に記載のハードウェア制御装置。
【請求項２７】
前記各仮想マシンに対するライセンスカード仮想装置を自動的に利用する手段をさらに含み、前記ライセンスカード仮想装置は、ライセンスマネージャへと論理的に結合され、前記ライセンスマネージャにより、前記ソフトウェア製品の前記仮想マシン上での実行は、前記仮想マシンに関する前記ソフトウェア製品に対するライセンスが、前記仮想マシンに利用可能であり、前記仮想マシンに割り当て可能であるときに限り、行うことができるようになることを特徴とする請求項２６に記載のハードウェア制御装置。
【請求項２８】
前記ソフトウェア製品はオペレーティングシステムであることを特徴とする請求項２７に記載のハードウェア制御装置。
【請求項２９】
ある仮想マシンに関する追加のライセンスが要求されると、前記ライセンスマネージャは、少なくとも１つの新しいライセンスをライセンスベンダから入手することになる手段をさらに含むことを特徴とする請求項２７に記載のハードウェア制御装置。
【請求項３０】
前記仮想マシン環境内のある仮想マシンに関する少なくとも１つの追加のライセンスの入手を、前記仮想マシンに関するそのようなライセンスが存在せず利用可能であるとき自動的に行う手段をさらに含むことを特徴とする請求項２５に記載のハードウェア制御装置。
【請求項３１】
前記ソフトウェア製品はオペレーティングシステムであり、
ライセンスカード仮想装置を含む仮想マシンを開始する手段と、
ライセンスキーが利用可能な場合、前記仮想マシンの前記ライセンスカードに前記ライセンスキーを割り当てる手段と、
ライセンスキーが利用可能でない場合、前記仮想マシンの実行を停止する手段と
をさらに含むことを特徴とする請求項２５に記載のハードウェア制御装置。
【請求項３２】
ライセンスキーを割り当てる前記要素の前に、必要な場合、ライセンスキーが利用可能になるかどうかを判断する手段と、利用可能でない場合、少なくとも１つの追加のライセンスキーをライセンスベンダから得る手段とをさらに含むことを特徴とする請求項３１に記載のハードウェア制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、（「プロセッサ仮想化」としても知られる）仮想マシン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）および仮想マシン環境で実行されるソフトウェアの分野に関する。より詳細には、本発明は直接には、仮想マシン環境を用いてオペレーティングシステムのライセンス収入を徴収するための方法に関する。
【背景技術】
【０００２】
コンピュータは、ある特定の組のシステム命令を実行するように設計された汎用の中央処理装置（ＣＰＵ）を含む。類似のアーキテクチャまたは設計仕様を有するあるグループのプロセッサは、同じプロセッサファミリの一員と考えることができる。一般的なプロセッサファミリの例としては、アリゾナ州フェニックスのＭｏｔｏｒｏｌａ，Ｉｎｃ．の製造するモトローラ６８０Ｘ０プロセッサファミリ、カリフォルニア州サニーヴェイルのＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎの製造するインテル８０Ｘ８６ファミリ、Ｍｏｔｏｒｏｌａ，Ｉｎｃ．で製造され、カリフォルニア州クパチノのＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃ．製コンピュータで使用されているＰｏｗｅｒＰＣプロセッサファミリがある。あるグループのプロセッサが、その類似のアーキテクチャおよび設計の考慮のために同じファミリの中にあることはあるが、プロセッサは１つのファミリ内部でそのクロック速度および他のパフォーマンスのパラメータにしたがって非常に様々である可能性がある。
【０００３】
マイクロプロセッサのファミリそれぞれにより、そのプロセッサファミリに特異な命令が実行される。あるプロセッサまたはプロセッサのあるファミリが実行できる１組の命令の全体は、そのプロセッサの命令セットとして知られている。一例として、インテル８０Ｘ８６プロセッサファミリの使用する命令セットは、ＰｏｗｅｒＰＣファミリの使用する命令セットとは互換性がない。インテル８０Ｘ８６命令セットは、ＣＩＳＣ（複合命令セットコンピュータ）フォーマットに基づいている。モトローラのＰｏｗｅｒＰＣ命令セットは、ＲＩＳＣ（縮小命令セットコンピュータ）フォーマットに基づいている。ＣＩＳＣプロセッサは、多数の命令を使用し、その一部はかなり複雑な機能を実行できるが、それらの実行には一般に多くのクロックサイクルが必要である。ＲＩＳＣプロセッサは、より少ない数の利用可能な命令を使用し、ずっと高速に実行される、より単純な１組の機能を遂行する。
【０００４】
プロセッサファミリがコンピュータシステム間で特異であることは、通常、そのコンピュータシステムのハードウェアアーキテクチャの他の要素どうしに互換性がないことにつながる。インテル８０Ｘ８６プロセッサファミリに属するプロセッサで製造したコンピュータシステムは、ＰｏｗｅｒＰＣプロセッサファミリに属するプロセッサで製造したコンピュータシステムのハードウェアアーキテクチャとは異なるハードウェアアーキテクチャを持つことになる。プロセッサの命令セットおよびコンピュータシステムのハードウェアアーキテクチャが特異であるために、アプリケーションソフトウェアプログラムは、通常、特定のオペレーティングシステムを動作させる特定のコンピュータシステム上で動作するように書かれる。
【０００５】
コンピュータの製造者は、その製品ラインに関連するマイクロプロセッサファミリ上で、アプリケーションを減らすのでなくより多く動作させることによって、そのマーケットシェアを最大化したいと考える。あるコンピュータシステム上で動作できるオペレーティングシステムおよびアプリケーションプログラムの数を拡大するために、技術の一分野が開発されてきており、そこでは、ホストと呼ばれるあるタイプのＣＰＵを有する所与のコンピュータがエミュレータプログラムを含み、これにより、そのホストコンピュータは、ゲストと呼ばれる関係のないタイプのＣＰＵの命令をエミュレートできることになる。したがって、ホストコンピュータにより、所与のゲスト命令に応答して１つまたは複数のホスト命令の呼び出しを引き起こすアプリケーションが実行されることになる。このため、ホストコンピュータは、それ自体のハードウェアアーキテクチャ向けに設計されたソフトウェアと、関係のないハードウェアアーキテクチャを有するコンピュータ向けに書かれたソフトウェアのどちらも動作させることができるのである。より具体的な例としては、たとえば、アップルコンピュータの製造したコンピュータシステムは、ＰＣベースのコンピュータシステム向けに書かれたオペレーティングシステムおよびプログラムを動作させることができる。また、エミュレータプログラムを使用して、単一のＣＰＵ上で複数の互換性のないオペレーティングシステムを動作させることもできる可能性がある。この構成では、各オペレーティングシステムは互いに互換性がないが、エミュレータプログラムは２つのオペレーティングシステムのうちの１つをホストすることができ、これにより、そうでなければ互換性のないオペレーティングシステムを同じコンピュータシステム上でコンカレントに動作させることができるようになっている。
【０００６】
ゲストコンピュータシステムがホストコンピュータシステム上でエミュレートされるとき、そのゲストコンピュータシステムは、ホストコンピュータシステム内では、ある特定のハードウェアアーキテクチャの動作の純粋なソフトウェア表現として存在するのに過ぎないため、「仮想マシン」（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）と呼ばれる。エミュレータ、仮想マシン、およびプロセッサエミュレーションという用語は、コンピュータシステム全体のハードウェアアーキテクチャを模倣（ｍｉｍｉｃ）またはエミュレートする能力を表すために、ときどき入れ替えて使用することがある。一例として、カリフォルニア州サンマテオのＣｏｎｎｅｃｔｉｘ  Ｃｏｒｐｏｒａｔｉｏｎの作り出したＶｉｒｔｕａｌ  ＰＣソフトウェアは、インテル８０Ｘ８６ペンティアム（登録商標）プロセッサならびに様々なマザーボードコンポーネントおよびカードを含むコンピュータ全体をエミュレートする。こうしたコンポーネントの動作は、ホストマシン上で動作中の仮想マシンの中でエミュレートされる。オペレーティングシステム上で、ＰｏｗｅｒＰＣプロセッサを有するコンピュータシステムなどのホストコンピュータのソフトウェアおよびハードウェアアーキテクチャを実行するエミュレータプログラムにより、ゲストコンピュータシステム全体の動作が模倣される。
【０００７】
エミュレータプログラムは、ホストマシンのハードウェアアーキテクチャと、エミュレートされた環境の内部で動作するソフトウェアの送信する命令との間の中継点（ｉｎｔｅｒｃｈａｎｇｅ）として働く。このエミュレータプログラムは、物理コンピュータハードウェア上で直接動作するオペレーティングシステムである、ホストオペレーティングシステム（ＨＯＳ）とすることができる。あるいは、エミュレートされた環境は、仮想マシンモニタ（ＶＭＭ、ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｍｏｎｉｔｏｒ）とすることもできるはずであり、これは、ハードウェアの直接に上位で動作するソフトウェアレイヤであり、マシンの資源すべての仮想化を、そのＶＭＭが仮想化しているハードウェアと同じであるインターフェースを露出（ｅｘｐｏｓｅ）させることによって行う（これにより、このＶＭＭはその上位で動作するオペレーティングシステムレイヤに気付かれずに動作できるようになる）。ホストオペレーティングシステムとＶＭＭは、同じ物理ハードウェア上で並んで動作することができる。
【０００８】
複数の仮想マシンを単一のホストマシン上で確立することができる。この想定条件（ｓｃｅｎａｒｉｏ）では、ある特定のプロセッサファミリのホストマシンが、同じプロセッサファミリのいくつかの仮想マシンをホストすることができる。このコンピューティング環境では、仮想マシンはそれぞれそれ自体のスタンドアロンのコンピュータシステムとして動作し、これにより、ユーザは別々のオペレーティングシステムまたは単一のオペレーティングシステムの複数のインスタンスを仮想マシンの１つまたは複数上にインストールすることができる。各仮想マシンは、他の仮想マシンすべておよびホストマシンとは独立であるため、ある仮想マシン内部で動作するソフトウェアは、他のどの仮想マシン、または下位にあるホストマシンの動作にも影響を及ぼさない。したがって、エミュレートされたコンピューティング環境では、関係のあるオペレーティングシステムのアレイまたは同じオペレーティングシステムのコンカレントな複数のインスタンスを含めて、いくつものオペレーティングシステムを単一のホストコンピュータシステム上でサポートすることができる。
【０００９】
このエミュレートされたコンピューティング環境では、ユーザは、複数の仮想化されたコンピュータシステムを単一の物理コンピュータシステム上で動作させることができ、これにより、複数のコンピュータシステムをサポートするための複数のハードウェアシステムの必要性が省かれる。追加の物理コンピュータシステムを購入し構成することの代案として、追加の仮想マシンを既存のコンピュータシステム上で確立することができる。複数の独立な仮想マシンを単一の物理ホストマシン上で動作させることにより、数ある利益のうちでも特に、ソフトウェアアプリケーションを複数のコンピューティング環境間でテストし、レガシのソフトウェアアプリケーションまたはオペレーティングシステムをサポートする能力が提供される。また、複数の仮想マシンを単一のホストマシン上で動作させることは、物理マシンの数およびそれに対応する維持コストが低減される点で、コストの節約にもつながる。また、複数の仮想マシンを単一のホストマシン上で動作させることにより、オペレーティングシステムとアプリケーションソフトウェアとの分離（ｉｓｏｌａｔｉｏｎ）の利益が提供される。
【００１０】
さらに、顧客は、しばしば、レガシのソフトウェア技術を使用し続けることを希望するが、たとえば、これは、その顧客が、ビジネスにとって緊要なシステムを、または最新（ｍｏｄｅｒｎ）のどのオペレーティングシステムにもアップグレードを１度も行わなかったという理由でレガシのオペレーティングシステム上に残さなければならない何かのアプリケーションを、もっているためである。レガシのオペレーティングシステムの例としては、ＭＳ−ＤＯＳ（商標）、Ｗｉｎｄｏｗｓ（登録商標）３．Ｘ（商標）、Ｗｉｎｄｏｗｓ（登録商標）９５（商標）、Ｗｉｎｄｏｗｓ（登録商標）９８（商標）、Ｗｉｎｄｏｗｓ（登録商標）Ｍｅ（商標）、Ｗｉｎｄｏｗｓ（登録商標）ＮＴ（商標）、およびＷｉｎｄｏｗｓ（登録商標）２０００（商標）がある。通常、ソフトウェアメーカは、ある時点で製品を「取り扱い終了」（ｅｎｄ−ｏｆ−ｌｉｆｅ）にするが、これはこうしたオペレーティングシステムにはそれ以上サポートが提供されないことを意味する。たとえば、ソフトウェアサポートサイクルが７年間のことがあるが、顧客が特定のオペレーティングシステムを１５年間動作させる必要があることもあろう。さらに、こうしたオペレーティングシステムは、通常、永久（ｐｅｒｐｅｔｕａｌ）ライセンスとともに購入されるが、追加の能力が必要となった場合に、「取り扱い終了」の製品に対して追加のライセンスを延長または入手することは問題となる。あるいは、レガシオペレーティングシステムを購入する機構がないために、こうした顧客がこのレガシソフトウェアを不法に動作させることもあろう。レガシオペレーティングシステムおよびレガシソフトウェアアプリケーションに関してライセンス契約（ｌｉｃｅｎｓｅ  ａｇｒｅｅｍｅｎｔ）を実施できることは、顧客が、本人の使用の際、本人は合法であるとの保証を受け、不法に動作させることに関連して生じうるどのようなペナルティも回避できるようにするのに、有益であるはずである。レガシのオペレーティングシステムまたはアプリケーションに関するソフトウェアライセンスを延長および／または入手するための、およびこれを合法的に行うための、ソフトウェアライセンス許諾（ｌｉｃｅｎｓｉｎｇ）機構が必要とされている。
【００１１】
しかも、ソフトウェアメーカは、一般には、レガシオペレーティングシステムの継続的な（ｏｎｇｏｉｎｇ）サポートを提供しないが、これは、そうするためには、ソフトウェアメーカは、たとえば、Ｗｉｎｄｏｗｓ（登録商標）９５の構成をすべてサポートするために様々なＷｉｎｄｏｗｓ（登録商標）９５時代のＰＣを維持しなければならず、そのようなサポートを提供することのコストは、そのようなサポートを提供することから生じる収入をはるかに凌ぐという理由で実際的ではないためである。しかし、この問題に対する１つの解決策は、ソフトウェアメーカが仮想マシン環境を使用して、あるコンピューティング装置内のハードウェア装置のほとんどどのような構成の仮想的な複製も、そのコンピュータのあらゆる構成を物理的に必要とせずに行うことである。このようにして、単一の仮想マシン環境により、レガシオペレーティングシステムをサポートするコスト面で効率のよいやり方が提供されて、ソフトウェアメーカにとっては新たなビジネスの機会が提供される。このサポートが加われば、レガシソフトウェアシステムへの消費者の関心も、特にレガシシステムを仮想マシンとして自分の最新（ｍｏｄｅｒｎ）のシステム上に加えることを考えている消費者にとっては、増大し、そうして販売の機会がさらにもたらされる。したがって、特に仮想マシン環境内部にある、ソフトウェアライセンスを延長し、レガシのオペレーティングシステムまたはアプリケーションに対するサポートを維持するためのソフトウェアライセンス許諾機構が必要とされている。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ソフトウェア技術のライセンス許諾は、ソフトウェアメーカにとって主要な収入源である。特に、このビジネスの大きな部分は、オペレーティングシステムソフトウェアのライセンス許諾である。しかし、オペレーティングシステムソフトウェアのライセンス許諾の現行の方式は、物理ハードウェア（すなわち、ライセンスはハードウェア単位に生じる）に基づいており、これは各物理コンピュータシステムが単一のオペレーティングシステムしか含まないものと仮定する旧式のモデルである。しかし、このライセンス許諾方式（ハードウェア単位のアプローチ）およびこのライセンス許諾方式を実施する既存のソフトウェア機構は、コンカレントな複数のオペレーティングシステムが、単一の物理ホストマシン上で動作する複数の仮想マシンの一部として存在する可能性のある状況にはそぐわない。したがって、単一の物理ホストマシン上で動作する複数の仮想マシンの一部として存在するコンカレントな複数のオペレーティングシステムのライセンス許諾を実施するためのライセンス許諾方式およびソフトウェア機構が必要とされている。
【００１３】
しかしながら、さらに、ソフトウェア開発者にとってキャッシュフローの問題が、オペレーティングシステムをライセンス許諾するための現行の機構には存在する。たとえば、パーソナルコンピュータ（ＰＣ）の場合、ライセンスの購入は、ＰＣが購入されたときの１回払い（ｏｎｅ−ｔｉｍｅ  ｔｒａｎｓａｃｔｉｏｎ）で行われ、普通、そのライセンスがカバーするのは、そのソフトウェア製品の単一のコンピュータシステムに対する使用である（すなわち、ライセンスはハードウェア単位である）。その結果、ライセンス収入が徴収されるのは、数年に１回だけ、ユーザが新しいコンピュータおよび新しいオペレーティングシステムへとアップグレードするときになる。ソフトウェアメーカが、継続的なライセンス許諾の定期収入（ｒｅｖｅｎｕｅ  ｓｔｒｅａｍ）を達成することができ、また顧客が、ソフトウェアのアップグレードやサポートなど、価値の増分（ｉｎｃｒｅｍｅｎｔａｌ  ｖａｌｕｅ）を、コスト面で効率のよい、実際的なやり方で受け取ることができるようにするための、仮想マシン環境で使用するためのソフトウェアライセンス許諾モデルが必要とされている。
【課題を解決するための手段】
【００１４】
本発明のいくつかの実施形態では、エミュレートされたコンピュータシステムに常駐するオペレーティングシステムまたはアプリケーションソフトウェアに関するライセンス収入を徴収する手段が提供される（本明細書で使用する「エミュレートされたコンピュータシステム」という用語は、動作の際、ゲストオペレーティングシステムの命令のエミュレートと直接実行の両方または一方を行うシステムを含むが、それに限定されない仮想化コンピュータシステムのすべてを指す）。
【００１５】
これらの実施形態のうちの特定のものは、具体的には、仮想マシン環境においてレガシのオペレーティングシステムまたはアプリケーションに対するライセンス収入の徴収を、１回払い（ｏｎｅ−ｔｉｍｅ  ｔｒａｎｓａｃｔｉｏｎ）ではなく、継続的な定期収入をソフトウェアメーカに提供する形で行う手段を提供することを対象とする。
【００１６】
本発明の特定の諸実施形態は、仮想マシン環境においてライセンスマネージャを使用することによってソフトウェアライセンスの実施を提供するシステムおよび方法を対象とし、それにより、レガシのオペレーティングシステムまたはアプリケーションをサポートするコンピュータシステム内のライセンス収入を徴収する改良された方法を提供する。さらに、特定の諸実施形態では、ライセンスマネージャと通信してライセンスキーを要求するために、ライセンスカードを含めて、エミュレートされた周辺装置を使用する。ライセンスマネージャの機能は、仮想マシン内で使用するオペレーティングシステムソフトウェア上でソフトウェアライセンス制限の監視および実施を行うことである。こうした諸実施形態のあるものでは、ライセンスマネージャの機能を、コンピュータシステムのホストＯＳまたはＶＭＭ内に置き、ハードウェアシステム単位で実行させることができ、あるいは、ライセンスマネージャの機能は、利用可能なすべてのライセンスの集中リポジトリ（ｃｅｎｔａｌｉｚｅｄ  ｒｅｐｏｓｉｔｏｒｙ）として働く別の物理マシン上に置くこともでき、これにより、企業レベルの構成全体にわたるライセンスの管理を、ライセンスを組織全体にわたる物理システム上のＶＭＭに供給することによって行う手段が提供される。最後に、本発明のいくつかの実施形態は、仮想マシン環境内で動作するオペレーティングシステムおよびアプリケーションに対してソフトウェアのサポートおよびアップグレードの増分を提供することを対象とする。
【００１７】
以上の要約、および以下の望ましい実施形態の詳細な説明は、添付の図面と併せ読むときによりよく理解される。本発明を例示する目的で、図面中には本発明の例示的な構成（ｃｏｎｓｔｒｕｃｔｉｏｎｓ）を示しているが、本発明を、開示する特定の方法および手段（ｉｎｓｔｒｕｍｅｎｔａｌｉｔｉｅｓ）に限定するものではない。
【発明を実施するための最良の形態】
【００１８】
発明性のある主題（ｉｎｖｅｎｔｉｖｅ  ｓｕｂｊｅｃｔ  ｍａｔｔｅｒ）を、法令の要件を満たすように具体性をもたせて説明する。しかし、説明そのものは、この特許の範囲を制限するものではない。むしろ、特許請求する主題の実施を、また他のやり方で、異なるステップまたはこの文書に説明するものに類似のステップの組み合わせを含むように、現在または将来の技術と組み合わせて行うこともできるはずであることを発明者は企図している。しかも、「ステップ」という用語を本明細書では、使用する方法の異なる要素を表すように使用するが、この用語を、本明細書で開示する様々なステップのうちまたは相互の何ら特定の順序を意味するものとして解釈することは、個々のステップの順序を明示的に述べない場合および述べる場合を除き、行うべきではない。
【００１９】
コンピュータ環境  
本発明の数多くの実施形態はコンピュータ上で実行することができる。図１および以下に論じることは、本発明を実装できる適切なコンピューティング環境の簡潔で一般的な説明を提供するものである。要求されてはいないが、本発明を、クライアントワークステーションやサーバなどのコンピュータによって実行中の、プログラムモジュールなどのコンピュータ実行可能命令という一般的な状況で説明することにする。一般に、プログラムモジュールは、特定のタスクを遂行しまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。しかも、本発明の実施は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成によっても行えることが当業者には理解されよう。また、本発明の実施は、タスクの遂行を通信ネットワークを通してリンクしたリモート処理装置が行う分散コンピューティング環境でも行うことができる。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートのいずれのメモリストレージ装置内にも配置することができる。
【００２０】
図１に示すように、例示的な汎用コンピューティングシステムは、処理ユニット２１、システムメモリ２２、および、システムメモリを含む様々なシステムコンポーネントを処理ユニット２１へと結合するシステムバス２３を含む、従来のパーソナルコンピュータ２０などを含む。システムバス２３は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのバス構造のうちのどのようなものとすることもできる。システムメモリは、ＲＯＭ（読み取り専用メモリ）２４およびＲＡＭ（ランダムアクセスメモリ）２５を含む。起動（ｓｔａｒｔ−ｕｐ）時などにコンピュータ２０内部の要素間で情報を転送するのに役立つ基本ルーチンを含む、ＢＩＯＳ（基本入出力システム）２６はＲＯＭ２４に格納されている。パーソナルコンピュータ２０は、ハードディスク（図示せず）との間で読み取りおよび書き込みを行うためのハードディスクドライブ２７、リムーバブル磁気ディスク２９との間で読み取りおよび書き込みを行うための磁気ディスクドライブ２８、および、ＣＤ  ＲＯＭまたは他の光学メディアなどのリムーバブル光ディスク３１との間で読み取りおよび書き込みを行うための光ディスクドライブ３０をさらに含むことができる。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、システムバス２３への接続は、それぞれ、ハードディスクドライブインターフェース３２、磁気ディスクドライブインターフェース３３、および光ディスクドライブインターフェース３４によって行われる。ドライブおよびそれに関連するコンピュータ可読媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびパーソナルコンピュータ２０のための他のデータの不揮発性ストレージが提供される。本明細書で説明する例示的な環境では、ハードディスク、リムーバブル磁気ディスク２９、およびリムーバブル光ディスク３１を使用しているが、磁気カセット、フラッシュメモリカード、ＤＶＤ（デジタルビデオディスク）、ベルヌイカートリッジ、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み取り専用メモリ）など、コンピュータのアクセス可能なデータを格納できる他のタイプのコンピュータ可読媒体も、例示的な動作環境では使用することができる。
【００２１】
オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、他のプログラムモジュール３７，およびプログラムデータ３８を含めて、いくつものプログラムモジュールを、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４またはＲＡＭ２５上に格納することができる。ユーザは、コマンドおよび情報のパーソナルコンピュータ２０への入力を、キーボード４０やポインティング装置４２などの入力装置を通して行うことができる。他の入力装置（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがあり得る。こうしたおよび他の入力装置の処理ユニット２１への接続は、しばしば、システムバスに結合されるシリアルポートインターフェース４６を通して行われるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）などの他のインターフェースによって行うことも可能である。また、モニタ４７または他のタイプのディスプレイ装置のシステムバス２３への接続も、ビデオアダプタ４８などのインターフェースを介して行われる。パーソナルコンピュータは、通常、モニタ４７のほかに、プリンタやスピーカなど他の周辺出力装置（図示せず）を含む。また、図１の例示的なシステムは、ホストアダプタ５５、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）バス５６、および、ＳＣＳＩバス５６に接続した外部ストレージ装置６２も含む。
【００２２】
パーソナルコンピュータ２０は、リモートコンピュータ４９など、１つまたは複数のリモートコンピュータへの論理接続を用いてネットワーク化環境で動作することができる。リモートコンピュータ４９は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置または他の一般的なネットワークノードとすることができ、通常、パーソナルコンピュータ２０に関して上で説明した要素の多くまたはすべてを含む。図１に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）５１およびＷＡＮ（広域ネットワーク）５２を含む。そのようなネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットでは普通のものである。
【００２３】
パーソナルコンピュータ２０は、ＬＡＮ環境で使用するときには、ＬＡＮ５１にネットワークインターフェースまたはアダプタ５３を通して接続する。パーソナルコンピュータ２０は、ＷＡＮ環境で使用するときには、通常、モデム５４、または、インターネットなどのＷＡＮ５２を介して通信を確立する他の手段を含む。モデム５４は、内蔵でも外付けでもよいが、システムバス２３にシリアルポートインターフェース４６を介して接続される。ネットワーク化環境では、パーソナルコンピュータ２０に関して示したプログラムモジュールまたはその部分は、リモートのメモリストレージ装置に格納することができる。ここに示すネットワーク接続は例示的であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよいことが理解されよう。しかも、本発明の数多くの実施形態は、コンピュータ化したシステムに特によく適していることが想像されるが、この文書中の何物も、本発明をそのような実施形態に制限するものではない。
【００２４】
仮想マシン  
概念的に見ると、コンピュータシステムは、一般に、ハードウェアの基礎レイヤ上で動作するソフトウェアの１つまたは複数のレイヤを含む。このレイヤ化は、抽象化を理由として行われる。ソフトウェアの所与のレイヤのインターフェースを定義することにより、そのレイヤは、その上位にある他のレイヤによって異なった形で実装することができる。よく設計されたコンピュータシステムでは、それぞれのレイヤは、直接その下位にあるレイヤの情報をもつことだけ（および利用することだけ）しか行わない。このことにより、あるレイヤまたは「スタック」（複数の接し合うレイヤ）を、前記レイヤまたはスタックの上位のレイヤ群にネガティブな影響を与えずに置き換えることができる。たとえば、ソフトウェアアプリケーション（上位レイヤ）は、通常、より下位のレベルのオペレーティングシステム（下位レイヤ）を利用して、ファイルを何らかの形の永続的（ｐｅｒｍａｎｅｎｔ）ストレージへと書き込み、こうしたアプリケーションは、データをフロッピー（登録商標）ディスク、ハードディスクドライブ（ｈａｒｄ  ｄｒｉｖｅ）、またはネットワークフォルダに書き込むことの間の違いを理解する必要はない。この下位レイヤがファイルの書き込みのための新しいオペレーティングシステムコンポーネントで置き換えられた場合、上位レイヤのソフトウェアアプリケーションの動作はそのまま影響を受けない。
【００２５】
レイヤ化されたソフトウェアの柔軟性により、仮想マシン（ＶＭ、ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）は、実際には別のソフトウェアレイヤである仮想ハードウェアレイヤを提示することができるようになる。こうして、ＶＭでは、その上位にあるソフトウェアレイヤにとって、前記ソフトウェアレイヤがそれ自体のプライベートなコンピュータシステム上で動作しているという幻想を作り出すことができ、したがって、ＶＭにより、複数の「ゲストシステム」が単一の「ホストシステム」上でコンカレントに動作できるようになる。
【００２６】
図２は、コンピュータシステム内のエミュレートされた動作環境に関するハードウェアシステムおよびソフトウェアのアーキテクチャの論理的レイヤ化（ｌｏｇｉｃａｌ  ｌａｙｅｒｉｎｇ）を表す図である。エミュレーションプログラム９４は、ホストオペレーティングシステムおよび／またはハードウェアアーキテクチャ９２上で動作する。エミュレーションプログラム９４により、ゲストハードウェアアーキテクチャ９６およびゲストオペレーティングシステム９８がエミュレートされる。ソフトウェアアプリケーション１００の方は、ゲストオペレーティングシステム９８上で動作する。図２のエミュレートされたコンピューティング環境では、エミュレーションプログラム９４が動作しているため、ソフトウェアアプリケーション１００がコンピュータシステム９０上で動作することは、仮にソフトウェアアプリケーション１００がホストオペレーティングシステムおよびハードウェアアーキテクチャ９２と一般に互換性がないオペレーティングシステム上で動作するように設計されている場合でも、可能である。
【００２７】
図３Ａに、物理コンピュータハードウェア１０２の直接に上位で動作するホストオペレーティングシステムソフトウェアレイヤ１０４を含む仮想化されたコンピューティングシステムを示しており、ホストオペレーティングシステム（ホストＯＳ）１０４では、マシンの資源すべての仮想化が、ホストＯＳが仮想化しているハードウェアと同じインターフェースを露出させる（ｅｘｐｏｓｅ）ことによって行われる（これにより、ホストＯＳは、その上位で動作するオペレーティングシステムレイヤに気付かれずに動作できるようになる）。
【００２８】
代替方法として、仮想マシンモニタ（ｖｉｒｕｔｕａｌ  ｍａｃｈｉｎｅ  ｍｏｎｉｔｏｒ）、すなわちＶＭＭのソフトウェアレイヤ１０４’が、ホストＯＳ１０４”の代わりにまたはそれと並んで動作していてもよく、図３Ｂには後者の選択肢を示している。簡単のため、本明細書でこの後論じることはすべて（特にホストオペレーティングシステム１０４に関しては）、図３Ａに示す実施形態を対象とするものとし、ただし、そのような議論のあらゆる側面は、図３Ｂの実施形態にも等しく適用されるものとする。図３Ｂの実施形態では、図３ＢのＶＭＭ１０４’は、機能レベルで、本明細書において、下で説明する図３Ａのホストオペレーティングシステム１０４の役割に本質的に取って代わっている。
【００２９】
再び図３Ａを参照すると、ホストＯＳ１０４（またはＶＭＭ１０４’）の上位には、２つの仮想マシン（ＶＭ）の実装がある。すなわち、たとえば、仮想化されたインテル３８６プロセッサとすることのできる、ＶＭ  Ａ１０８、および、たとえば、モトローラ６８０Ｘ０ファミリのプロセッサのうちの１つの仮想化バージョンとすることのできる、ＶＭ  Ｂ１１０である。各ＶＭ  Ａ１０８およびＢ１１０の上位には、それぞれゲストオペレーティングシステム（ゲストＯＳ）Ａ１１２およびＢ１１４がある。ゲストＯＳ  Ａ１１２の上位では、２つのアプリケーションＡ１  １１６およびアプリケーションＢ１  １１８が動作しており、ゲストＯＳ  Ｂ１１４の上位にはアプリケーションＢ１  １２０がある。
【００３０】
ＶＭソフトウェアライセンスの実施  
本発明の様々な実施形態は、オペレーティングシステムなどのソフトウェア製品のライセンス許諾が（ハードウェア単位ではなく）インスタンス単位で行われる、改訂されたライセンス許諾モデルを対象とする。仮想マシン環境の場合、各ＶＭは、１ライセンスを必要とする１つの「インスタンス」を含むことになる。このライセンス許諾モデルをサポートするのには、ライセンス許諾の自動的な実施と、必要なライセンスを入手する自動化された手段のどちらもが有益である。
【００３１】
図４に、仮想マシンごとに、このインスタンスではライセンスカードである、エミュレートされたハードウェア装置をさらに含む、図３Ｂのシステムの部分を示している。図４に示すのは、ライセンスカード仮想装置Ａ１１２に論理的に結合されるＶＭ  Ａ１０８、および、ライセンスカード仮想装置Ｂ１２４に論理的に結合されるＶＭ  Ｂ１１０である。また、図４には、ライセンスカード仮想装置１２２および１２４のそれぞれに論理的に結合されるライセンスマネージャ（ＬＭ）１２６をさらに含むＶＭＭ１０４’も示している。ＶＭ  Ａ１０８およびＶＭ  Ｂ１１０に関して図４に示したエミュレートされたハードウェア装置は、例示的なものであり、この仮想マシン環境内の他のどのようなＶＭも、ＬＭ１２６に結合されるそれ自体の類似のライセンスカード仮想装置を含むはずである。もちろん、こうしたライセンスカード（たとえば、１２２および１２４）は、物理的な対応物がコンピュータハードウェア１０２内に必ずしもない（または必要でない）エミュレートされたハードウェア装置である。
【００３２】
ゲストＯＳ  Ａ１１２から見ると、ライセンスカードＡ１２２は、ソフトウェアドライバを通して制御される他のどのような周辺装置とも同様に見える。ゲストＯＳ  Ａ１１２は、ライセンスカードＡ１２２の存在を起動またはブートフェーズ中に認識すると、ライセンスカードＡ１２２に関連付けられているドライバがインストールされているかどうかを判断する。ライセンスカードＡ１２２に関連付けられているドライバがインストールされていない場合、ゲストＯＳ  Ａ１１２は、関連付けられているソフトウェアドライバの取り出しおよびインストールを試みる。
【００３３】
ＬＭ１２６の機能は、ソフトウェアライセンス制限の自動的な監視および実施を、たとえば、ＶＭＭ上で動作させている、ＶＭ  Ａ１０８およびＶＭ  Ｂ１１０などの、あらゆる仮想マシンのそれぞれに対するオペレーティングシステム上で行うことである。ＬＭ１２６は、仮想コンピューティングシステムの仮想マシン内で同時に動作可能なライセンス許諾済みのゲストＯＳの数のカウントを含んでいる。ライセンス許諾済みのゲストＯＳの数は、コンピュータのユーザ購入したライセンスの権利によって、１、２、６、またはそれより多くとすることができる。実施に関しては、ＶＭＭ１０４’では、各ゲストＯＳ、すなわち、たとえばゲストＯＳ  Ａ１１２およびゲストＯＳ  Ｂ１１４が、プラグアンドプレイ装置の項目化（ｉｔｅｍｉｚａｔｉｏｎ）を行うのを監視しているため、各ＶＭ１０８および１１０が、それぞれライセンスカード仮想装置１２２および１２４を増設すると、それをＶＭＭ１０４’が認識し、ＬＭ１２６で自動的に形式化が行われる─すなわち、ライセンスカード１２２および１２４のそれぞれは、ゲストＯＳ１１２および１１４が前記仮想装置１２２および１２４を認識した時点で自動的にＬＭ１２６に結合され、これは各ＶＭに対するオペレーティングシステムが起動されると自動的に起きる。この後、ライセンスカード１２２または１２４にライセンスが必要になると、この必要が通信で自動的に、直接ＬＭ１２６へ、必要なライセンスキーを要求するために伝えられる。ＬＭが、特定のＶＭに対する、たとえばＯＳに必要なライセンスキーを得られない場合、そのＶＭをＶＭＭがシャットダウンする。
【００３４】
図５は、仮想マシンのオペレーティングシステムの起動およびライセンス許諾を行う方法１３０を示す流れ図である。ステップ１３２で、この方法は、まず、仮想マシンに対する起動シーケンスを含んでいる。ステップ１３４で、ゲストオペレーティングシステムにより、ライセンスカードが識別される。ステップ１３６で、ＶＭＭ１０４’がＬＭ１２６と通信を行ってライセンスキーを要求する。ステップ１３８で、ＬＭ１２６により、ゲストＯＳに対するライセンスが利用可能かどうかの判断が行われる。そうである場合、ステップ１４０で、ＬＭ１２６からキーまたは他の何らかの認証コードがＶＭＭ１０４’に渡され、ＶＭＭ１０４’によってゲストＯＳがブートアップ（ｂｏｏｔ  ｕｐ）を続けることが許可される。そうでない場合、ステップ１４４で、ＶＭＭ１０４’によってゲストオペレーティングシステムが停止され、方法１３０は終わる。続きで、ステップ１４２で、ＬＭ１２６により、利用可能なゲストＯＳのライセンスまたはキーのカウントがデクリメントされる。この時点で、ライセンス許諾を行ったゲストＯＳは、ＬＭ１２６からのキーを１つ消費している、という。利用可能なゲストＯＳライセンスのカウントがゼロに達すると、追加のキーまたは認証は、ＬＭ１２６から発行されない。一代替実施形態では、ＬＭは、追加のライセンスをライセンスベンダから自動的に得て、追加ライセンスを得るのに成功しなかった場合には、ライセンス許諾を行わないゲストＯＳのシャットダウンを開始するためのサブシステムを含む。
【００３５】
たとえば、利用可能なゲストＯＳライセンスのカウントがゼロの場合に、ＶＭＭ１０４’がライセンスキーを要求したとすると、ＬＭ１２６はＶＭＭ１０４’に、追加のゲストＯＳライセンスは利用可能でないと通知するはずである。次いで、ＶＭＭ１０４’は、仮想マシンのブートシーケンスを中断し、仮想マシンの関連付けられているオペレーティングシステムソフトウェアが動作するのを妨げるはずであり、これをステップ１４４に示している。ＬＭ１２６は、ライセンス許諾したゲストＯＳの記録を維持している。ライセンス許諾したゲストオペレーティングシステムが終了すると、ＶＭＭ１０４’はＬＭ１２６に通知を行い、ＬＭ１２６は、利用可能なゲストＯＳライセンスのカウントをインクリメントする。ライセンス許諾したゲストＯＳの終了は、キーをＬＭ１２６に返却する効果をもつ。
【００３６】
ライセンスキーのＬＭ１２６から各仮想マシンへの転送は、安全な移送媒体で達成される。このキー転送プロセスの一部として、オペレーティングシステムのベンダは、ゲストＯＳがホストＯＳ１０４”のライセンス許諾可能なバージョンであることの確認のために、暗号化したハンドシェイク信号をゲストＯＳに転送しようとすることもできる。ゲストＯＳとの間の通信は、ライセンスカードＡ１２４などのエミュレートされたハードウェア装置を通して達成することができる。ライセンスカードＡ１２４は暗号化した信号をＶＭＭ１０４’へと通信で送り、ＶＭＭ１０４’はその暗号化した信号をホストＯＳ１０４”のＬＭ１２６に渡すことができるはずである。ライセンスカード１２４，ＶＭＭ１０４’、およびＬＭ１２６の論理的な関係を図４に示している。代替方法として、ホストＯＳ１０４”とゲストＯＳが、暗号化した信号の通信を、仮想化されたコンピューティングシステムのハードウェア抽象化レイヤを通して行うこともできるはずである。
【００３７】
ＬＭ１２６では、仮想マシンのそれぞれの定期的な問い合わせを、仮想マシンのオペレーティングシステムのそれぞれのソフトウェアライセンスのステータスを確認するために行うことになる。この定期的なライセンス検査により、各仮想マシンのオペレーティングシステムのそれぞれのライセンス許諾をＬＭ１２６が行ったこと、および各仮想マシンのオペレーティングシステムはどれも停止（ｓｔａｌｌ）またはタイムアウトしていないことが確認される。ゲストＯＳのいずれかのライセンス許諾をＬＭ１２６が行っていないと判断された場合、ＬＭ１２６により、そのライセンス許諾していないゲストＯＳに対するライセンスが利用可能かどうか、すなわち、利用可能なゲストＯＳライセンスのカウントがゼロより大きいかどうかが判断される。ライセンス許諾していないゲストＯＳを検出した場合に、追加のライセンスキーが利用可能である場合には、利用可能なライセンスのカウントをデクリメントし、ライセンス許諾していないゲストＯＳのライセンス許諾をＬＭ１２６が行うことになる。ライセンス許諾していないゲストＯＳを検出した場合に、追加のライセンスキーが利用可能でない場合には、ライセンス許諾していないゲストＯＳは停止または終了させられることになる。
【００３８】
ライセンス許諾していないゲストＯＳから生じる問題が、仮想マシンを、停止している、または物理コンピュータシステム間で移行（ｍｉｇｒａｔｅ）している例で起きることがある。この例では、仮想マシンをコンピュータシステム上で使用するために起動またはライセンス許諾することを、利用可能なライセンスキーによって行うことができる。定期的な問い合わせを仮想マシンに対してライセンスマネージャが行うことにより、この移行された仮想マシンが検出されることになり、このことは、（購入によりまたは別のＬＭから）追加のライセンスを移行先（ｄｅｓｔｉｎａｔｉｏｎ）のコンピュータシステム内の移行された仮想マシンのために入手すること、または移行先のコンピュータシステム内の移行された仮想マシンを終了させることへとつながる。
【００３９】
ＶＭソフトウェアライセンス収入の徴収  
図６は、オペレーティングシステムのライセンス収入の徴収を、仮想マシン環境を使用することによって行う方法１５０を示す流れ図である。より具体的には、本発明の方法１５０により、仮想マシン環境において最新（ｍｏｄｅｒｎ）またはレガシのオペレーティングシステムまたはアプリケーションに対するライセンス収入の徴収を、１回払いではなく、継続的な定期収入をソフトウェアメーカに提供する形で行う手段が提供される。
【００４０】
ステップ１５２で、この方法は、まず、顧客がソフトウェアライセンスをソフトウェアメーカに要求することを含んでいる。ステップ１５４で、ソフトウェアメーカ（またはライセンス許諾された者（ｌｉｃｅｎｓｅｅ））は、要求されたソフトウェアライセンスに対する料金の額を、たとえば、要求されたライセンスの期間に従って設定し、顧客からそれに応じて支払を受け取る。この支払は、永久ライセンス契約（ｐｅｒｐｅｔｕａｌ  ｌｉｃｅｎｓｅ  ａｇｒｅｅｍｅｎｔ）に対する１回払い（ｏｎｅ−ｔｉｍｅ  ｐａｙｍｅｎｔ）の形とすることもできるが、好ましい一実施形態では、支払は、更新可能なライセンス契約に関連付けられている月払いまたは年間払い（または任意の所定の期間）であり、これにより、一定の定期収入がソフトウェアメーカに確保され、また顧客にも、更新のたび、利用可能であれば、ソフトウェアアップグレードを受けるという利点が提供される。顧客がソフトウェアライセンスの最初の購入または更新を済ませると、ソフトウェアメーカは、ソフトウェアライセンスを作成し、続いて、そのソフトウェアライセンスの配布を、たとえば、電子的に（すなわち、電子メールによって）、ＣＤ（ｃｏｍｐａｃｔ  ｄｉｓｋ、コンパクトディスク）、またはどのような適切な手段によっても行う。ステップ１５６で、顧客は、どの仮想化されたコンピューティングシステム上にそのライセンスを展開するべきかを決定する。続けて図４を参照すると、次いで、ライセンスを、所与のＶＭＭ１０４’のＬＭ１２６へと展開する。図６のステップ１５８で、図４のＶＭ  Ａ１０８やゲストＯＳ  Ａ１１２などの、仮想マシンおよび関連付けられているゲストＯＳを、図５に示した方法１３０に従って起動する。ステップ１６０で、任意の所与のＶＭＭ１０４’のＬＭ１２６は、ライセンスのステータスの継続的な監視を、その使用を不許可にするような条件が存在するかどうかを判断するためのライセンス属性を監視することによって行う。属性としては、数ある中でも特に、たとえば、ＯＳのタイプまたはバージョン、ライセンスの始まりを規定する、開始日付、次いで終わりの日付を決定する、ライセンスの期間、および使用人数（ｃａｐａｃｉｔｙ）（すなわち、何人のユーザを許可するか）がある。ステップ１６２で、ライセンスが、ライセンス属性の違反がないという理由で有効である場合、ステップ１６４に示すように、ＶＭおよびゲストＯＳには、実行を許可する一方、ステップ１６０に示すように、継続的に監視を行う。しかし、ステップ１６２で、ライセンス属性で規定されるような、期間切れなどの違反が理由で、ライセンスがもはや有効でない場合には、ステップ１６６で示すように、ＶＭＭ１０４’により、ＶＭおよびゲストＯＳが停止される。ステップ１６８で、ＶＭおよびゲストＯＳが停止された場合には、顧客は通知を受け、続いてソフトウェアライセンスの延長（更新）を希望するかどうかを決定する。顧客がライセンス契約の更新を希望しない場合は、該当するＶＭおよびゲストＯＳは停止したままとなる。顧客がライセンス契約の更新を希望する場合は、ステップ１５２に示したように、顧客は再びソフトウェアライセンスをソフトウェアメーカに要求する。さらに、更新時には、ソフトウェアメーカは、存在する可能性のあるどのようなソフトウェアのアップグレードまたはサポートの増分も、顧客に提供することができる。
【００４１】
続けて図４、５、および６を参照すると、代替実施形態では、ライセンスマネージャの機能は、利用可能なすべてのライセンスの集中リポジトリ（ｃｅｎｔａｌｉｚｅｄ  ｒｅｐｏｓｉｔｏｒｙ）として働く別の物理マシン上に置かれ、これにより、企業レベルの構成全体にわたるライセンスの管理を、ライセンスを組織全体にわたる物理システム上のＶＭＭに供給することによって行う手段が提供される。この構成により、顧客は、自分のライセンスのバランスを、動的に、企業など自分の組織内部、サーバレベルでのデータセンタ内部、または大きな組織内のデスクトップＰＣ上で、とれるようになるという点で、さらなる利点が提供される。
【００４２】
本発明は、特定のコンピュータシステムアーキテクチャ、特にインテル８０Ｘ８６アーキテクチャのエミュレーションへの本発明の適用に限定されるものではない。むしろ、本明細書に開示するエミュレーション技法は、仮想のまたはエミュレートされたコンピューティング環境内のソフトウェアの複数のインスタンスをライセンス許諾することが望ましいどのようなときでも適用可能である。また、本発明はオペレーティングシステムソフトウェアのライセンス許諾に限定されるものではないことも理解されたい。本明細書で説明する技法は、仮想のまたはエミュレートされたコンピューティング環境内のアプリケーションソフトウェアのためのライセンス許諾プロトコルを確立するために使用することができる。また、本発明の使用は、ホストオペレーティングシステムとライセンス許諾されるオペレーティングシステムが同一であるコンピューティング環境に限定されるものではないことも理解されたい。本発明の技法は、ホストオペレーティングシステムとゲストオペレーティングシステムが、同じファミリのオペレーティングシステムの範囲内の変種となっている例で使用することもできるはずである。あるいは、ホストオペレーティングシステムと、ゲストオペレーティングシステムの１つまたは複数を、異なるハードウェアプラットフォームに関連付けられているオペレーティングシステムとすることもできるはずである。
【００４３】
本発明を詳細に説明してきたが、本発明への様々な変更、置き換え、および改変を、添付の特許請求の範囲の定める本発明の趣旨および範囲から逸脱することなく、行うことができることを理解されたい。
【００４４】
結語  
本明細書で説明した様々なシステム、方法、および技法は、ハードウェアまたはソフトウェアによって、あるいは、適当な場合には、その両方の組み合わせによって実装することができる。したがって、本発明の方法および装置、またはその特定の態様もしくは一部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意の機械可読ストレージ媒体などの有形の媒体内に実施したプログラムコード（すなわち、命令）の形を取ることができ、そこでは、コンピュータなどのマシンが、プログラムコードの内部へのロードおよび実行を行うと、そのマシンが、本発明を実施するための装置となる。プログラム可能なコンピュータ上でのプログラムコード実行の場合には、コンピュータは、一般に、プロセッサ、（揮発性および不揮発性のメモリおよび／またはストレージ要素を含む）そのプロセッサにより可読なストレージ媒体、少なくとも１つの入力装置、および少なくとも１つの出力装置を含むことになる。好ましくは、１つまたは複数のプログラムが、高水準手続き型またはオブジェクト指向のプログラミング言語で、コンピュータシステムとの通信のために実装される。しかし、そうしたプログラムは、そう望む場合には、アセンブリ言語または機械語で実装することができる。いずれにせよ、この言語は、コンパイラ型またはインタープリタ型の（ｃｏｍｐｉｌｅｄ  ｏｒ  ｉｎｔｅｒｐｒｅｔｅｄ）言語とし、ハードウェア実装と組み合わせることができる。
【００４５】
また、本発明の方法および装置は、電気的な結線または配線を介して、光ファイバを通して、または他の任意の形の伝送を介してなど、何らかの伝送媒体を介して送信されるプログラムコードの形で実装することもでき、そこでは、ＥＰＲＯＭ，ゲートウェイ、ＰＬＤ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、クライアントコンピュータ、ビデオレコーダなどのマシンが、プログラムコードの受け取り、内部へのロード、および実行を行うと、そのマシンが、本発明を実施するための装置となる。プログラムコードを汎用プロセッサ上で実装すると、プログラムコードはプロセッサと組み合わさって、本発明のインデクシング機能を行うために動作する独特の装置が提供される。
【００４６】
本発明を、様々な図面の好ましい実施形態に関して説明してきたが、類似の他の実施形態の使用、または説明した実施形態への修正および追加が、本発明と同じ機能を本発明から逸脱することなく実現するために可能であることを理解されたい。たとえば、本発明の例示的な実施形態の説明は、パーソナルコンピュータの機能をエミュレートするデジタル装置の状況で行ったが、本発明は、本出願に記載のそのようなデジタル装置に限定されるものではなく、有線でも無線でも、ゲームコンソール、ハンドヘルドコンピュータ、ポータブルコンピュータなど、どのような数の既存のおよび出現するコンピューティングの装置または環境にも適用することができ、通信ネットワークを介して接続され、そのネットワーク越しにやり取りを行う、どのような数のそのようなコンピューティング装置にも適用することができることが、当業者には理解されよう。さらに、ハンドヘルド装置のオペレーティングシステムおよび他のアプリケーション専用ハードウェア／ソフトウェアインターフェースシステムを含む、様々なコンピュータプラットフォームを、本明細書では企図するものであることは、特に無線ネットワーク化装置の数が豊富になっているため、強調しておきたい。したがって、本発明はどのような単一の実施形態にも制限せず、添付の特許請求の範囲による拡がりおよび範囲で解釈を行うべきである。
【００４７】
最後に、本明細書に記載の開示した実施形態は、他のプロセッサアーキテクチャ、コンピュータベースのシステム、またはシステム仮想化で使用するように適合させることができ、そのような実施形態は、本明細書で行う開示によって明示的に予測（ａｎｔｉｃｉｐａｔｅ）され、したがって、本発明は本明細書で説明した特定の諸実施形態に制限せず、最も広く解釈すべきである。同様に、合成的命令（ｓｙｎｔｈｅｔｉｃ  ｉｎｓｔｒｕｃｔｉｏｎｓ）のプロセッサ仮想化以外の目的での使用も、本明細書で行う開示によって予測され、プロセッサ仮想化以外の状況での合成的命令のそのような利用はどれも、本明細書で行う開示の中へと最も広い読みで組み入れるべきである。
【図面の簡単な説明】
【００４８】
【図１】本発明の一実施形態を組み込むことのできるコンピュータシステムを表す構成図である。
【図２】コンピュータシステム内のエミュレートされた動作環境に関するハードウェアシステムおよびソフトウェアのアーキテクチャの論理的レイヤ化（ｌｏｇｉｃａｌ  ｌａｙｅｒｉｎｇ）を示す図である。
【図３Ａ】仮想化されたコンピューティングシステムを示す図である。
【図３Ｂ】ホストオペレーティングシステムと並んで動作する仮想マシンモニタを含む仮想化されたコンピューティングシステムの代替実施形態を示す図である。
【図４】ライセンスカードおよびライセンスマネージャを含むコンピュータシステムのハードウェアおよびソフトウェアのアーキテクチャの論理的レイヤ化（ｌｏｇｉｃａｌ  ｌａｙｅｒｉｎｇ）を示す図である。
【図５】仮想マシンのオペレーティングシステムソフトウェアの起動およびライセンス許諾を行う諸ステップの流れ図である。
【図６】仮想マシン環境を用いてオペレーティングシステムのライセンス収入を徴収する諸ステップの流れ図である。
【符号の説明】
【００４９】
２０  コンピュータ
２１  処理ユニット
２２  システムメモリ
２３  システムバス
２４  ＲＯＭ
２５  ＲＡＭ
２６  ＢＩＯＳ
２７  ハードディスクドライブ
２８  フロッピーフロッピー（登録商標）ディスクドライブ
２９  リムーバブルストレージ
３０  光ディスクドライブ
３２  ハードディスクドライブＩ／Ｆ
３３  磁気ディスクドライブＩ／Ｆ
３４  光ディスクドライブ
３５  ＯＳ
３６  アプリケーションプログラム
３６’  アプリケーションプログラム
３７  他のプログラム
３８  プログラムデータ
４０  キーボード
４２  マウス
４６  シリアルポートＩ／Ｆ
４７  モニタ
４８  ビデオアダプタ
４９  リモートのコンピュータ
５０  フロッピーフロッピー（登録商標）ディスクドライブ
５１  ＬＡＮ
５２  ＷＡＮ
５３  ネットワークＩ／Ｆ
５４  モデム
５５  ホストアダプタ
５６  ＳＣＳＩバス
６２  ストレージ装置
９２  ホストオペレーティングシステムおよびハードウェアアーキテクチャ
９４  エミュレーションプログラム
９６  ゲストハードウェアアーキテクチャ
９８  ゲストオペレーティングシステム
１００  ソフトウェアアプリケーション
１０２  コンピュータハードウェア
１０４  ホストオペレーティングシステム
１０４’  仮想マシンモニタ
１０４”  ホストオペレーティングシステム
１０８  仮想マシンＡ
１１０  仮想マシンＢ
１１２  ゲストＯＳ  Ａ
１１４  ゲストＯＳ  Ｂ
１１６  アプリケーション  Ａ１
１１８  アプリケーション  Ａ２
１２０  アプリケーション  Ｂ１
１２２  ライセンスカードＡ
１２４  ライセンスカードＢ
１２６  ライセンスマネージャ
【図１】
2006018815.tif 000003
【図２】
2006018815.tif 000004
【図３Ａ】
2006018815.tif 000005
【図３Ｂ】
2006018815.tif 000006
【図４】
2006018815.tif 000007
【図５】
2006018815.tif 000008
【図６】
2006018815.tif 000009