(57)【要約】グローバルＵＤＤＩサーバーのような伝統的なレジストリは、たとえばネットワークにしばしば予告なくつながったり切り離されたりするデバイスのような、インスタンス生成されてはサスペンドされたり破棄されたりすることを繰り返す仮想マシンなどの一過性のデバイスがサービスを提供したり所望したりすることには対応していない。そのような一過性のデバイスに対応するため、より低レベルのプロトコルまたは状態を補強して適切なレジストリ更新を決定することによってレジストリ状態を現在アクティブな仮想マシンと一貫させる、動的なリソース／サービス・レジストリを実装することができる。たとえば、仮想マシン・モニタ（ＶＭＭ）が仮想マシン（ＶＭ）の生成およびサスペンドや削除、ならびにそのＶＭによって公開されるリソースを追跡することができる。ここで、このＶＭＭが、ＶＭの状態が変わるのに応じてそのＶＭのレジストリ項目を適切に追加または削除し、あるいはフック（たとえば通知）または前記状態もしくはプロトコルに基づくその他の道具立てを提供して、他の関連するモジュールやエージェント（たとえば、管理モジュールやレジストリ）が適切な行動をとれるようにする。
2006519423.tif 000002
【特許請求の範囲】
【請求項１】
サービスまたはリソースを公開する登録者のための検索可能なある第一のレジストリに仮想マシンを登録する方法であって：
仮想マシンのインスタンス生成を監視し、
前記仮想マシンによって公開されるサービスまたはリソースを決定し、
前記仮想マシンのサービスまたはリソースを自動的に前記第一のレジストリに登録し、該登録が前記公開されるサービスまたはリソースを識別するデバイスについての登録情報を生成することを含むものであることを特徴とする方法。
【請求項２】
前記仮想マシンが利用不能になったときに前記第一のレジストリから前記仮想マシンのサービスまたはリソースを自動的に登録解除する、
ことをさらに有することを特徴とする、請求項１記載の方法。
【請求項３】
前記仮想マシンに該仮想マシンが利用不能であることを示す動作状態の変化がないかどうかを監視し、
前記の動作状態の変化に反応して自動的に前記第一のレジストリから前記仮想マシンのサービスまたはリソースの登録解除を実行する、
ことをさらに有することを特徴とする、請求項２記載の方法。
【請求項４】
前記の動作状態の変化が前記仮想マシンがサスペンドまたは破棄されるといううちから選択された一つであることを特徴とする、請求項３記載の方法。
【請求項５】
仮想機械のレジストリ登録情報に有効期間を関連付け、
前記仮想マシンまたはその中のサービス・プロバイダによる通信を監視し、
前記有効期間内に前記の仮想マシンまたはその中のサービス・プロバイダが通信を行わなければ、自動的に前記第一のレジストリから前記仮想マシンを登録解除する、
ことをさらに有することを特徴とする、請求項１記載の方法。
【請求項６】
請求項５記載の方法であって、前記有効期間がレジストリによって維持されており、
レジストリが前記仮想マシンから通信を受け取り、前記有効期間をリセットすることでそれに反応することをさらに有することを特徴とする方法。
【請求項７】
前記レジストリおよび前記仮想マシンを単一のデバイス内に配する、
ことをさらに有することを特徴とする、請求項１記載の方法。
【請求項８】
前記単一のデバイスが管理パーティションと、仮想マシン・モニタと、前記管理パーティションが前記仮想マシン・モニタに該仮想マシンの動作状態についての問い合わせを発することができるようにするフックとを有することを特徴とする、請求項７記載の方法。
【請求項９】
前記レジストリおよび前記仮想マシンを、ＯＳと、仮想マシン・モニタと、前記ＯＳが前記仮想マシン・モニタに該仮想マシンの動作状態についての問い合わせを発することができるようにする通信フックとを有する単一のデバイス内に配する、
ことをさらに有することを特徴とする、請求項１記載の方法。
【請求項１０】
前記レジストリおよび前記仮想マシンを、ＯＳと、仮想マシン・モニタと、前記ＯＳが前記仮想マシン・モニタによって該仮想マシンの動作状態について通知を受けることができるようにする通信フックとを有する単一のデバイス内に配する、
ことをさらに有することを特徴とする、請求項１記載の方法。
【請求項１１】
前記レジストリおよび前記仮想マシンを、ホストＯＳと、仮想マシン・モニタと、前記仮想マシンが前記ホストＯＳに前記仮想マシンによって前記レジストリに登録されているサービスについての問い合わせを発することができるようにする通信フックとを有する単一のデバイス内に配し、
前記仮想デバイスのインスタンス生成後に前記仮想マシンによって前記レジストリに登録されたサービスを前記仮想マシン・モニタによって記録し、
前記仮想マシンが利用不能であることを前記仮想マシン・モニタによって決定し、
前記ホストＯＳに前記仮想マシンを登録解除するよう通知する、
ことをさらに有することを特徴とする、請求項１記載の方法。
【請求項１２】
前記第一のレジストリから前記仮想マシンのサービスまたはリソースを登録解除し、
前記仮想マシンを新しいホスト・デバイスに移し、
前記第一のレジストリに前記新しいホスト・デバイスに関連しての前記仮想マシンのサービスまたはリソースを改めて登録する、
ことをさらに有することを特徴とする、請求項１記載の方法。
【請求項１３】
レジストリをその内に配されて有する第一のデバイスと、
前記レジストリに登録すべきサービスまたはリソースを公開するよう動作する第一の仮想マシンおよび前記仮想マシンが利用不能な場合に前記仮想マシンを登録解除するよう前記レジストリに通知するよう構成されている仮想マシン・モニタとを内に配されて有する第二のデバイス、
とを有することを特徴とするシステム。
【請求項１４】
サスペンドまたは破棄されたときには前記仮想マシンが利用不能であることを特徴とする、請求項１３記載のシステム。
【請求項１５】
レジストリ、第一の仮想マシンおよび第一の仮想マシン・モニタを内に配されて有する第一のデバイスと、
第二の仮想マシンおよび第二の仮想マシン・モニタを内に配されて有する第二のデバイスとを有し、
前記第一および前記第二の仮想マシンが前記レジストリに登録するためにサービスまたはリソースを公開するよう動作し、前記第一および第二の仮想マシン・モニタがそれぞれ第一または第二の仮想マシンが利用不能となった場合に当該仮想マシンを登録解除するよう前記レジストリに通知するよう動作することを特徴とする、システム。
【請求項１６】
前記第一および第二の仮想マシンがその仮想マシン・モニタによってサスペンドまたは破棄されたときに利用不能と見なされることを特徴とする、請求項１５記載のシステム。
【請求項１７】
付随するデータを有する機械アクセス可能メディアを有する物品であって、前記データはアクセスされたときにマシンが：
仮想マシンのインスタンス生成を監視し、
前記仮想マシンによって公開されるサービスまたはリソースを決定し、
前記仮想マシンを自動的に前記第一のレジストリに登録し、該登録が前記公開されるサービスまたはリソースを識別するデバイスについての登録情報を生成することを含むようにすることを実行する結果を生じることを特徴とする物品。
【請求項１８】
請求項１７記載の物品であって、前記機械アクセス可能媒体が、アクセスされたときに前記マシンが：
前記仮想マシンが利用不能になったときに前記第一のレジストリから前記仮想マシンのサービスまたはリソースを自動的に登録解除する、
ことを実行する結果を生じるデータをさらに含むことを特徴とする物品。
【請求項１９】
請求項１７記載の物品であって、前記機械アクセス可能媒体が、アクセスされたときに前記マシンが：
前記仮想マシンに該仮想マシンが利用不能であることを示す動作状態の変化がないかどうかを監視し、
前記の動作状態の変化に反応して自動的に前記第一のレジストリから前記仮想マシンの登録解除を実行する、
ことを実行する結果を生じるデータをさらに含むことを特徴とする物品。
【請求項２０】
前記の動作状態の変化が前記仮想マシンがサスペンドまたは破棄されるといううちから選択された一つであることを特徴とする、請求項１９記載の物品。
【請求項２１】
請求項１７記載の物品であって、前記機械アクセス可能媒体が、アクセスされたときに前記マシンが：
仮想機械のレジストリ登録情報に有効期間を関連付け、
前記仮想マシンによる通信を監視し、
前記有効期間内に前記の仮想マシンが通信を行わなければ、自動的に前記第一のレジストリから前記仮想マシンを登録解除する、
ことを実行する結果を生じるデータをさらに含むことを特徴とする物品。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、本発明の譲受人に共通に譲渡された、２００２年１２月２７日に出願された“Dynamic  Service  Registry〔動的なサービス・レジストリ〕”と題する同時係属出願第１０／３３０，５９７号の一部継続である。
【０００２】
本発明は一般にはサービス・レジストリに関するものである。より詳細には、レジストリにおいて公開されるサービスを提供または所望する仮想マシン（ＶＭ：virtual  machine）の生成、サスペンド、削除に反応する動的なサービス・レジストリを提供することに関するものである。
【背景技術】
【０００３】
有線や無線のイントラネット、インターネット、広域ネットワーク（ＷＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）などを含みうるネットワークには、他のデバイスにサービス、機能、リソースを提供したり所望したりする多くのデバイスがつながっている可能性がある。特定のサービスを提供しているデバイスをみつけることはしばしば難しい。デバイスやそのサービスをみつけて追跡するのを容易にするために、さまざまな「ウェブ・サービス」または「ディレクトリ・サービス」技術が実装されてきた。
【０００４】
「ウェブ・サービス」の用語は、異なる企業からのネットワーク・アプリケーション、サービス、リソースを、ワールド・ワイド・ウェブ・コンソーシアム（W3C：World  Wide  Web  Consortium）規格やインターネット技術特別調査委員会（IETF：Internet  Engineering  Task  Force）規格のような公開規格を使ってネットワーク上で記述し、発見し、統合する標準化された方法を表す。使われる規格にはＸＭＬ（Extensible  Markup  Language）、ＳＯＡＰ（Simple  Object  Access  Protocol）、ＷＳＤＬ（Web  Services  Description  Language）、ＵＤＤＩ（Universal  Description,  Discovery  and  Integration）などがある。ウェブ・サービスは自己完結したモジュール・アプリケーションであって、直接他のウェブ・サービス、アプリケーション、またはシステム・ソフトウェアと通信することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＵＤＤＩとは、企業が自分たちのサービスを記述し、他の企業やサービスを発見し、いかにして事業が関わりあうかについての情報を共有することができるようにする世界規模でのレジストリ〔登録簿〕の集合体のための、プラットフォームによらない開かれた枠組みを利用した業界提案規格である。残念ながら、ＵＤＤＩの世界性は、提供されているサービスをみつけだすための単一の情報源を提供してくれるものの、ＵＤＤＩは無効になった項目を自動的に同定して除去する機能を欠いている。ＵＤＤＩはデバイスが簡単に自らを登録して提供または所望するサービス、機能、リソースを公開できるようにするが、ＵＤＤＩはデバイスが行儀よく振る舞い、当該サービスが提供されなくなったときにはそのデータをデータベースから除去することを期待している。残念ながら、デバイスが突然利用不能になった場合、無効になったレジストリ項目がそのデバイスと関連付けられたまま残りうる。
【０００６】
したがって、伝統的なレジストリ環境は、任意に生成、サスペンド、破棄されうる仮想マシン（VM：virtual  machine）のような一過性のデバイスには適さない。サスペンドや破棄というのは、デバイスが適正にその登録情報の面倒を見ることなく突如としてネットワークから切り離されるのと同等だからである。
【０００７】
本発明の特徴や利点は本発明の以下の詳細な記述から明らかとなるであろう。
【課題を解決するための手段】
【０００８】
レジストリは、サービスおよびリソースを公開し、発見し、提供・利用することを容易にする（以後、まとめて「登録」と称する）。リソースはカプセル化されて公開され、サービスとして使われうるので、直接あるいは文脈によって別途指定されない限り、「サービス」の用語は「リソース」も含むものと意図されている。図示されている実施形態では、ネットワーク上に多くのレジストリがありえ、他のレジストリと完全に同期を保っている（すなわちコヒーレントな）ものもあれば、一部の登録情報を非公開にすることを選んでいるものもありうる。本発明はさまざまなディレクトリ・サービス、ウェブ・サービス、ＵＤＤＩレジストリ、マイクロソフト社の．ＮＥＴサービスなどとともに用いうる。特許請求の範囲において、「レジストリ」の用語は考えられるこれらさまざまなレジストリおよびその等価物を指すことが意図されている。しかし、解説の便宜上、以下の詳細な記述はＵＤＤＩレジストリに的を絞っている。当業者には、時がたつにつれ代わりのレジストリまたはサービスが出てくるであろうこと、ここに記載される思想はそれにも適用可能であることが理解されることであろう。
【０００９】
ネットワーク環境においては、さまざまな理由によりデバイスが突如としてネットワーク上に出現したり、消滅したり、改めて出現したりすることがありうる。そのようなデバイスは本明細書および特許請求の範囲では「一過性のデバイス」と称される。「一過性のデバイス」という語句は、携帯型パソコン、携帯情報端末（PDA：personal  digital  assistant）を含む従来型のモバイル機器のような物理的にはっきりした機械ならびにハードウェア・プロセッサ・エミュレーション、ソフトウェア・マシン・エミュレーションまたは仮想マシン（ＶＭ）のような論理デバイスまたは仮想デバイスのいずれをも幅広く包摂することが意図されている。以下の記述は仮想マシン（ＶＭ）とＵＤＤＩレジストリのようなレジストリとの間の関わりあいに焦点を当てている。当業者には、以下の記述が他の一過性デバイスおよびレジストリ環境に対しても適用できることがわかるであろう。
【００１０】
ＶＭは、たとえばプロセッサの動作モードの場合のようにハードウェアで、あるいはランタイム環境の場合のようにソフトウェアで、エミュレートしたマシンまたはエミュレートしたプラットフォームのいずれでもよい。ＶＭは命令セットならびに他のプラットフォーム・リソースもしくはデバイスまたはその両方を含んでいてもよい。ＶＭは共有ファイルシステムに向けてシリアライズされ（たとえば、チェックポイント状態）、あるいはネットワークを通じて送り出され、別のマシンに移され、デシリアライズされ（たとえば、チェックポイントからの復元状態）、その別のマシンをホストとすることができる。単一の物理デバイスが複数のＶＭを持っている（すなわち、ホストする）こともありうる。ＶＭはまた物理ネットワーク接続に加えて、あるいはその代わりに仮想ネットワークを利用することもありうる。ＶＭは、そのＶＭＭ（Virtual  Machine  Monitor［仮想マシン・モニタ］またはVirtual  Machine  Manager［仮想マシン・マネージャ］）がインスタンスを生成した、あるいは該ＶＭを再開したために、ネットワーク上に現れたり、改めて現れたりしうる。ＶＭはＶＭＭが該ＶＭをシャットダウンしたりインスタンスを破棄したり（サスペンド）あるいはその他の仕方で該ＶＭを利用不能にしたりするとネットワークから消えることがありうる。サスペンドしたり破棄したりその他の仕方でＶＭを利用不能にすることは、別のＶＭが走れるようにする（たとえば、ホストのプロセッサ、メモリ、記憶装置などにアクセスできるようにする）ために、また該ＶＭがもはや用途がなくなったとき（たとえば、処理を終えたり、提供しているサービスが必要とされなくなったりしたとき）、普通に行われる。
【００１１】
ＶＭは同じ物理デバイス内にある他のＶＭと、他の物理デバイス上にあるＶＭと、あるいは単に他の物理デバイスと通信しうる。ある実施形態では、特定の物理デバイスをホストとする複数のＶＭは、非公開の仮想（最適化された）ネットワーク上で通信しあうことができる。この場合、仮想化ソフトウェア（実装によって、しばしば前記ＶＭＭや当該ホストＯＳ）は別の仕方で動作しうる。たとえば、ホスト・デバイスの外では外部には見えない仮想ローカル・ネットワークを通じてより効率的にＶＭ間通信ができるようにするなどである。
【００１２】
図１は、ＶＭが事前の予告なしに任意にサスペンド、破棄その他の方法で利用不能になることを許容しつつＵＤＤＩのような従来型のレジストリ環境へのＶＭの統合をサポートする例となるシステム１００の図解である。示されているのは一つまたは複数のＶＭ１０４のホストとなるデバイス１０２、それにサーバー、ワークステーション、モバイル機器、ＰＤＡなどのような従来型のネットワーク利用可能デバイス１０６〜１０８、そしてローカル・レジストリ１１０である。デバイス１０２、１０６〜１１０はマイクロソフト社のＵＤＤＩサーバーのようなグローバル・レジストリ１１２とネットワーク１１４によって通信可能な形で結合されている。前記ローカル・レジストリは他のネットワーク・デバイスとは別個のものとして示されているものの、物理的か仮想かを問わずネットワーク・デバイスの一つに組み込まれていることもできる。たとえば、図２のデバイス２００参照。
【００１３】
さらに、ローカル・レジストリ１１０とグローバル・レジストリ１１２に加え、公共ネットワークおよび非公開ネットワークのあちこちにほかにも多くのレジストリ（図示せず）があって、それぞれがローカル・デバイスもしくはリモート・デバイスまたはその両方のためにサービス登録データを保存していてもよい。このような複数のレジストリは、あるレジストリに登録すればその後別のレジストリから登録データが取得できるよう、同期が保たれていてもよい。あるいはまた、ローカル・レジストリ１１０のような一部のレジストリは、その登録情報の一部または全部をグローバル・レジストリ１１２のような他のレジストリに対して非公開にしておくことを選択してもよい。たとえば、通信路１１６がイントラネットのような非公開なローカル・ネットワークであってネットワーク１１４によっては一般にはアクセスできないものとすると、該ローカル・ネットワーク上のデバイスが主として一過性のデバイスであることが知られていれば、そのようなデバイスの登録情報のローカル・レジストリ１１０への登録を制限して、一過性の登録情報を前記グローバル・レジストリ１１２まで不必要に伝搬させないようにすることは助けとなりうる。非公開ネットワークはしばしば、そのネットワーク・ドメインの外のエンティティに公開されたり、アクセスされたりするべきではない非公開サービスのホストともなっていることであろう。これは多くの企業やＳＯＨＯ（small  office，home  office）のネットワークについてあてはまる。
【００１４】
ある実施形態では、一つまたは複数のレジストリが連合して単一のローカル・レジストリとして動作しうる。そのような場合、一部のレジストリ項目は効率目的などのために重複して持たれる一方、一つのレジストリにのみ存在する項目もある。たとえば重複項目は、ネットワーク上で持続する頻繁に使われるサービスに対応するもので、一過性の、あるいはたまにしか用いられないサービスは特定のレジストリのみに存在するなどである。
【００１５】
図２は図１のデバイス１０２の例としての実施形態２００の図解である。図に示されているように、該デバイスはＯＳ（オペレーティング・システム）２０２を有しており、該デバイスは、該デバイスの仮想マシン（ＶＭ）２０６〜２１０の提供するサービスもしくは所望するサービスまたはその両方の登録情報を保存するための動的に更新可能なレジストリ２０４を有しうる。ＶＭはハードウェア、ソフトウェア、あるいは両者の何らかの組み合わせによって実装しうる。ＶＭは他のネットワーク・デバイスにはネットワーク上にある物理的なデバイスのように見える。従来型のＶＭ環境の場合と同様、ＶＭは、ホスト・デバイス１０２のハードウェアおよびＯＳ２０２へのフック２２２を有するＶＭＭ（Virtual  Machine  ManagerまたはVirtual  Machine  Monitor）２１８と関連して動作する。たとえば、ＶＭＭは何らかのホストＯＳのサービスを利用することもできる。各ＶＭもＯＳを持っていてもよい（図示せず）。
【００１６】
本明細書および特許請求の範囲において使われる「フック」という用語は受動または能動インターフェース（たとえば、ポーリングされたＡＰＩ、メモリ位置またはサブルーチン・コールバック）、通知、メッセージ、割り込み、そしてその関連するハンドラなどのような機構をいう。これらのそれぞれは全体的なシステム設計に重要な重点の置き方が違っているが、当業者であれば組み込むことができるであろう。たとえば、ＶＭＭがＶＭを破棄するとき、レジストリ・エージェントにそのＶＭに関連付けられているすべてのサービス項目を除去するか利用不能とマークするよう通知する。これはしばしばそのＶＭのＩＰアドレスやホスト名でありうる。
【００１７】
従来型のデバイスの場合と同様、図示されているＶＭ２０６〜２１０は、ウェブ・サービスのようなサービスを提供する、ソフトウェア・サーバーまたはその他のハードウェアもしくはソフトウェア・コンポーネントを含みうる。前記ＶＭはまた、それ自身が所望するサービスや他のＶＭが所望するサービスを有しうる。これらの提供されるサービスもしくは所望されるサービスまたはその両方はまとめてサービス２１２〜２１６として識別される。これらのサービスは従来より、たとえばＵＤＤＩプロトコルに従って、内部レジストリ２０４またはその他のレジストリ、たとえば図１の要素１１０、１１２に登録される。ＶＭ中のサーバーは同じサービスの（たとえば、ホストが、何らかの仕方でパフォーマンスを「スライスする」のにＶＭ技術を使っているサーバーである場合）あるいは異なる諸サービスの（たとえば、ホストが、所望するサービスをそれぞれ実行している異なるユーザーにＶＭ環境を提供する場合）複数のインスタンスを提供することができる。ホスト１０２自身によって提供されるウェブ・サービスのセットもあってもよい。
【００１８】
ホスト１０２も、ＶＭ２０６〜２１０も、サービスやリソースの公開、発見ならびに提供もしくは利用またはその両方を望みうることは理解されるであろう。動的に更新されるレジストリ２０４は登録情報を集計しており、サービス／リソースの生産者と消費者の間をとりもつ役割をする。ホストＯＳは図ではレジストリのホストであるかのように示されているが、ある実施形態ではＶＭがホストＯＳと連絡を取りつつもその外でレジストリのホストとなる。それによりホストＯＳを万一のレジストリの不安定から隔離しているのである。レジストリは、たとえば図１のローカル・レジストリ１１０を使うことによって、当該デバイスの外に維持してもよい。所望されたサービスは、内部レジストリ２０４、ローカル・レジストリまたはグローバル・レジストリ１１２中の登録情報を同定することを通じて満たされうる。ＶＭは優れた隔離容器であるから、いくつかの複雑なアプリケーションが複数のＶＭにまたがって分配され、そのそれぞれが別個のマシンがするように協力しつつプロジェクトを分担しうる。内部レジストリ２０４またはローカル・レジストリ１１０は、障害検出、フェイルオーバー、負荷分散などのようなさまざまな恩恵を提供するよう構成しうることは理解されるであろう。よって、レジストリはそのようなサービスを複数のＶＭにまたがって提供しうる。
【００１９】
当業界では理解されているように、ＶＭはＶＭＭ２１８と共同で動作する。ＶＭＭはデバイス・ハードウェア２２０の上で動作し、ＶＭによるその物理的デバイス・ハードウェアへのアクセスを制御・調停する。図示した実施形態では、ＶＭＭはまたＶＭのホストＯＳ２０２のリソースへのアクセスも制御する。ＶＭＭはＶＭ２０６〜２１０の完全な孤立化を許容するようにも、ＶＭの一部または全部の間でデータ共有を許容するようにも、所望されるセキュリティ方針に応じて構成できる。ＶＭＭの実装には、ホスト上でのソフトウェアで、ハードウェアで、あるいはその組み合わせで行うことを含み、さまざまな方法があることは理解されるであろう。たとえば、ＶＭＭはアプリケーションおよびデバイス・ドライバなどとして（たとえば、カリフォルニアのＶＭｗａｒｅ社によるＶＭＷａｒｅ）、ＯＳ２０２の一部として、あるいはチップセットもしくはマイクロプロセッサの一部として実装しうる。
【００２０】
従来型のＶＭＭとは対照的に、図示した実施形態では、ＶＭＭ２１８はＶＭの状態を監視し、監視で得られた情報に基づいてＶＭサービス２１２〜２１６の登録および登録解除をさせるよう、自動的にレジストリへの通知を発するように構成されている（たとえば図５参照）。内部レジストリ２０４またはローカル・レジストリ１１０は、ＶＭまたはＶＭＭからＶＭへのプロトコル（たとえばＶＭ状態遷移）についてのＶＭＭ状態を監視して適切なレジストリ更新を決定することを通じて動的なものとされる。ある実施形態では、ＶＭＭ２１８は少なくともＶＭ生成、破棄、サスペンド要求ならびにレジストリ公開・登録解除要求（たとえばＵＤＤＩ要求）を監視して、ＶＭ状態の変化によってレジストリ登録情報が影響を受けているＶＭを同定する。ある実施形態では、ＯＳフック２２２が、公開・登録解除要求に関係するＯＳコールを監視し、レジストリ登録情報の変化を実装するために用いられる。ＯＳ２０２およびレジストリ２０４はサービスの登録または登録解除を求めるＶＭＭによる通知に応ずるものと想定される。さらなる実施形態（図示せず）では、ＶＭ自身が他のＶＭ（サブＶＭ）のホストとなり、そのサブＶＭによって提供または所望されるサービスやリソースを公開しうる。そのような実施形態は入れ子状のＶＭを何階層でも含むことができる。
【００２１】
ＶＭ状態変化に基づいて登録情報を自動的に処理できるようにすることによって、たとえばＶＭの移行が容易になる。ＶＭおよびその内容がファイルシステムまたはネットワークに向けてシリアライズされ、それからおそらくは異なる物理ホストまたはリモート位置にある別の物理ホストの上で改めてインスタンス生成される。サスペンドが起こると、ＶＭの登録情報は自動的に登録解除され、再開されたときにその登録情報が自動的に改めて登録される。
【００２２】
図２は、ＶＭがホストＯＳ２０２のリソースを利用することを想定しているものの、図３、４、５はそれに代わる実施例を示すものである。
【００２３】
図３は、ホストが特定のＯＳを持たず、代わりに各ＶＭ３０２〜３０８がＶＭおよびそれ自身のＯＳ３１８〜３２４によって所望または提供されるサービス３１０〜３１６を有している、ＶＭ／ＶＭＭの実施例を示している。それぞれのＯＳは同じでも、類似でも、互いに異なるものでもよい。この実施形態では、ＶＭＭはホスト・デバイスのハードウェア３２８の上で動作し、このＶＭＭがホスト・デバイスのハードウェアへの各ＶＭおよびそのＯＳのアクセスを管理する。
【００２４】
この実施形態では、ＶＭＭ３２６とさまざまなＶＭのＯＳ３１８〜３２４（またはサービス・モジュール３１０〜３１６）との間のフックによって、ＶＭＭは、ＶＭ３０２〜３０８によって提供されるサービスもしくは所望されるサービスまたはその両方３１０〜３１６の登録情報を監視することが可能になる。動的なレジストリは、たとえば上で図２との関連で議論したように、この監視に基づいて実装されうる。
【００２５】
図４はもう一つの実施例４００を示している。ここでは、図３の場合と同様、ホストは特定のＯＳを持たず、その代わりに別個のＶＭ４０２〜４０８があって、それぞれのＶＭがそのＶＭによって所望または提供されるサービス４１０〜４１６を持っており、それぞれのＶＭが自前のＯＳ４１８〜４２４を持っている。
【００２６】
この実施例では、「薄っぺらな」ＶＭＭ４２６がホスト・デバイスのハードウェア４２８の上で動作しており、これがハードウェアへのＶＭのアクセスを管理している。薄っぺらなＶＭＭを持つことは、効率、信頼性、検証可能性のために望ましいことでありうる。ＶＭ、ＯＳをホストとするドライバ、または関連する管理ハードウェア（たとえば差し込み基板、コンピュータ、プロセッサなど）に存在しうる管理パーティションは、ＶＭＭと特別な関係、パーミッションまたはインターフェースを持つ。管理パーティションはＶＭの状態についての情報をＶＭＭから得、レジストリに通知するために適切な行動をとる。管理パーティションはＶＭＭと共同して該ＶＭＭを開始し、停止し、補給する権限を有しているものと想定されている。
【００２７】
ＶＭＭが単純であるほど、実装時の誤りが生じ、複数のＶＭにまたがって間欠的に起こりうる同定困難な問題につながる可能性が少なくなる。こうして、ＶＭＭは管理パーティション４３０を通じてある種の動作の負担を減らしたり、改善したりしうるのである。管理パーティションはたとえばより複雑な方針を実装してもよい。その際、サービス・レジストリ更新を行うのに必要な情報はＶＭＭが管理パーティションに提供できる。ベースとなる機構（検出器、トリガーなど）はＶＭＭ内にあり、行動するためのコードは管理パーティション内にあるのである。簡素なＶＭＭのさらなる恩恵は、頻繁な更新が起こる可能性が減るため、ＶＭＭをハードウェアで実装することがより容易にできることである。
【００２８】
図３の場合と同様、この実施形態でも、管理パーティション４３０とさまざまなＶＭのＯＳ４１８〜４２４との間のフックによって、管理パーティションは、薄っぺらなＶＭＭ４２６と共同して、ＶＭ４０２〜４０８によって提供されるサービスもしくは所望されるサービスまたはその両方４１０〜４１６の登録情報を監視できる。動的なレジストリは、たとえば上で図２との関連で議論したように、この監視に基づいて実装されうる。
【００２９】
図５は、図２の実施形態に基づいて動作するＶＭＭによって実行される動作の例としてのフローチャートを示している。
【００３０】
ある実施形態では、ＶＭＭはＶＭの状態に関係するイベントを監視する（５００）。ＶＭＭは、所与のＶＭのグローバルな実行状態、ならびに、あるデバイスの物理的および仮想（たとえばエミュレートされた）リソースおよびサービスへのそのＶＭのアクセスを直接制御する。前記の監視がホストまたはＶＭのＯＳまたはそれ以外の場所のコンポーネントによって補強されたり実行されたりすることも可能であることは理解されるであろう。この図示された実施形態では、ＶＭＭはインスタンス生成５０２、破棄５１４、サスペンド５０６、ＶＭの動作状態の変化を示すその他のイベント５１２を監視している。たとえば、ＶＭＭがあるＶＭのインスタンスを生成したとすると（５０２）、ＶＭＭはそのＶＭによって提供、所望されるあらゆるサービスをログに記録する（５０４）。すなわち、ＶＭのインスタンスが生成されるときには、そのＶＭはウェブ・サービス・サーバーを開始し、次いで提供・所望されるサービスを図２の内部レジストリ２０４のようなレジストリに登録するのである。記録された（５０４）サービスは、ＶＭＭがＶＭが利用不能であることを検出したときに、適正にサービスをレジストリから登録解除するために使用される。
【００３１】
たとえば、ＵＤＤＩの場合では、公告要求は監視され、ログに記録されうる。監視は、透明な形でネットワーク・トラフィックを見張り、ＵＤＤＩ公告要求を同定することでよい。ＶＭＭは、物理ネットワーク構成ならびにＶＭによって使われるあらゆる仮想のデバイス上ネットワークについて、これらのネットワーク・リソースへのアクセスの交通整理をするので、観察機能および制御機能を持っている。あるいはまた、ウェブ・サービスその他のサーバーが直接監視者、たとえばＶＭＭに通知するよう構成されていてもよいし、あるいはミドルウェア（たとえば．ＮＥＴまたはＪａｖａ（登録商標）クラス）がサービス可用性を公告するよう呼び出されたときに監視者に通知するよう構成されていてもよいし、あるいは監視者が既知のＶＭによって提供されるサービスがないかどうか定期的にレジストリをポーリングしてもよいし、監視者が公告要求を追跡できなくてもその代わりにＶＭの不作動（サスペンドまたは破棄）に際してレジストリに「そのＶＭによって公告されているあらゆるサービス」を削除するよう言いつけてもよい。
【００３２】
このように、ＶＭＭが、サスペンド・イベントまたはＶＭがスリープ状態になるとかスワップによりメモリから出されるなどといったＶＭを利用不能にする他の何らかのイベントを検出した（５０６、５１２）場合には、その結果としてＶＭＭがレジストリにそのＶＭによって提供されるサービスを削除するよう通知する（５０８）ことがありうる。そのようにしてレジストリに挙げられているサービスの一覧が最新であり、決して無効でないように保つのである。ある実施形態では、ＶＭを登録解除する前に、ＶＭＭがまずＶＭ登録情報を保持するフラグが立っているかどうかを調べる（５１０）よう構成されていてもよい。すなわち、ＶＭが利用不能に見えた場合でも一部の一過性デバイスの登録情報はレジストリ中に残ることができるようにしたほうが望ましい場合があるのである。たとえば、ＶＭはそのサービスが要求されるまでサスペンド状態に保持しておくことができる。サスペンド状態にあるＶＭはメモリ中にあってもよいし、図６の記憶装置６０８のような非揮発性記憶装置に記憶されていてもよい。そのような場合、たとえばＶＭが破棄されるのでない限りその登録情報を維持することが望ましい。
【００３３】
ＶＭＭが破棄イベントを検出（５１４）した場合には、図示されている実施形態では、破棄されたＶＭに関連付けられた登録情報は今や無効であると想定される。よって、ＶＭＭはレジストリにそのＶＭのサービスを登録解除するよう通知する（５０８）。しかしながら、登録情報保留状態と同じように、破棄されたＶＭの登録情報が保持されるように、ＶＭ登録情報にある状態を関連付けることもできる。もし登録情報が保持されようとしていないか、あるいは破棄イベントが検出（５１４）されていなければ、処理は仮想マシンの監視（５００）を続けることができる。
【００３４】
上記は、レジストリがデバイス内部のものであろうと図１のローカル・レジストリ１１０のようなローカル・レジストリであろうと、ＶＭのサービスの登録解除はＶＭＭがレジストリに指示するよう構成されていることを想定していたが、監視が厳密にＶＭＭ単独でではなく、ＶＭＭと協働するレジストリ自身またはＯＳのコンポーネントによって実行されてもよいことに注意しておく。たとえば、ＶＭＭがレジストリに通知するのではなく、ローカル・レジストリがＶＭＭ（または管理モジュールのようなＶＭＭのエージェント）と一緒に監視／通信し、それに従って自らを更新することもできる。レジストリ２０４のような内部レジストリについては、レジストリ２０４がフック２２２を使ってＶＭＭを監視したり問い合わせをしたりすることによってＶＭ状態を追跡してもよい。ローカル・レジストリ１１０のような外部のレジストリについては、ある実施形態ではホスト・デバイス（または仮想マシン）上にソフトウェアがあってＶＭによって発される公告／削除メッセージを監視し、ＶＭＭと対話してＶＭの動作状態を決定するのでもよい。この場合、前記ソフトウェアがレジストリにしかるべく自らを更新するよう通知する。
【００３５】
図６および下記の議論は、解説されている本発明のある側面を実装しうる好適な環境について、簡単な一般的説明を与えることを意図したものである。
【００３６】
以下で使われる「ホスト・マシン」の語句は単一のマシンまたは通信可能な形で結合された複数のマシンもしくはデバイスが共同して動作するシステムを広く包摂することを意図している。例としてのホスト・マシンには、図１の物理的デバイス１０２、１０６〜１１０ならびにパソコン、ワークステーション、サーバーなどがある。ホスト・マシンのハードウェアは、仮想マシン１０４、２０６〜２１０、３０２〜３０８、４０２〜４０８によって、ＶＭＭもしくはＶＭ管理モジュールまたはその両方の動作および方針に従ってアクセス可能である。
【００３７】
典型的には、ホスト・マシン６００はシステム・バス６０２を有し、これにプロセッサ６０４、メモリ６０６（たとえばランダム・アクセス・メモリ［ＲＡＭ］、読み出し専用メモリ［ＲＯＭ］またはその他の状態保存媒体）、記憶装置６０８、ビデオ・インターフェース６１０そして入出力インターフェース・ポート６１２が接続されている。ホスト・マシンやその仮想マシンは、少なくとも部分的にはキーボード、マウスなどのような従来型の入力装置からの入力によって、また他のマシンから受け取る指令、バーチャル・リアリティ（ＶＲ）環境との相互作用、バイオメトリック・フィードバックその他の入力源もしくは信号によって、制御されうる。
【００３８】
ホスト・マシンは、プログラム可能またはプログラム可能でない論理素子または論理アレイ、カスタムＩＣ（Application  Specific  Integrated  Circuits）、組み込みマイコン、ＩＣカードなどのような組み込みコントローラを含みうる。ホスト・マシンや仮想マシンは、ネットワーク・インターフェース６１８、モデム６２０その他の通信可能な結合を通じて一つまたは複数のリモート・マシン６１４、６１６への一つまたは複数の接続を利用していてもよい。複数のホスト・マシンやその仮想マシンが図１のネットワーク１１４のような物理ネットワークや論理ネットワーク６２２によって相互接続されていてもよい。そうしたネットワークには、イントラネット、インターネット、ローカル・エリア・ネットワーク、広域ネットワークなどが含まれうる。当業者には、ネットワーク６２２との通信にはさまざまな有線や無線の短距離または長距離の媒体およびプロトコルを利用することが可能で、無線周波（ＲＦ）、衛星、マイクロ波、ＩＥＥＥ（IEEE：Institute  of  Electrical  and  Electronics  Engineers［アメリカ電気電子通信学会］）８０２．１１、ブルートゥース、光、赤外、ケーブル、レーザーなどが含まれることが理解できるであろう。
【００３９】
本発明は付随するデータを参照することによって、あるいはそれとの関連で記述することもできる。前記付随するデータは、関数、手続き、データ構造、アプリケーション・プログラムなど、ホスト・マシン６００やその仮想マシンによってアクセスされたときに、該ホスト・マシンやその仮想マシンがタスクを実行したり抽象データ型もしくは低レベルのハードウェア環境を定義したりする結果を起こすものである。付随するデータは、たとえば、揮発性メモリや不揮発性メモリ６０６に、あるいは記憶装置６０８およびその付随する記憶媒体に保存されうる。前記記憶媒体にはハードディスク、フロッピー（登録商標）ディスク、光記憶媒体、テープ、フラッシュメモリ、メモリースティック、デジタルビデオディスク、生体記憶媒体などが含まれる。付随するデータは、ネットワーク６２２を含む伝送環境を通じて、パケット、シリアル・データ、パラレル・データ、伝搬信号などの形で届けられることができ、圧縮または暗号化されたフォーマットで使われることもある。付随するデータは分散環境において使われることもでき、単一プロセッサまたはマルチプロセッサのマシンによってアクセスするために、ローカルに、あるいはリモートに、あるいはその両方に保存されうる。
【００４０】
このように、たとえば図示した実施形態との関連でホスト・マシン６００が図２の仮想マシン２０６〜２１０の登録情報を保存する図２の動的なレジストリを具体化したものであると想定すると、リモート・マシン６１４はホスト・マシンやその仮想マシンによって利用されうるリソースを提供するサーバー、表示装置、プリンタなどでありうる。その一方、リモート・マシン６１６のほうは仮想マシン２０６〜２１０の一つによって提供されているサービスを求めているデバイスでありうる。リモート・マシン６１４、６１６はマシン６００またはその仮想マシンについて議論した要素の多くまたは全部を含みうること、一過性のデバイスも永続的なデバイスも他者のサービスやリソースの公開、発見ならびに提供／利用を望みうることは理解されるであろう。動的に更新されるレジストリはサービス／リソースを集計し、生産者と消費者の間をとりもつために使用されうる。
【００４１】
本発明の原理を解説用の実施形態を参照しつつ記述し、例解してきたが、解説されている実施形態はそのような原則から外れることなく構成および詳細において修正しうることは認識されるであろう。そして、これまでの議論は特定の実施形態に焦点を当ててきたものの、他の構成も考えられる。特に、「ある実施形態では」「別の実施形態では」などの表現がここでは使われているが、これらの語句は一般的に実施形態の可能性を言うことを意図したものであり、特定の実施形態の構成に本発明を限定することを意図したものではない。ここでの用法では、これらの言葉は同じ実施形態を指すこともあれば異なる実施形態を指すこともあり、それらは組み合わせて他の実施形態とすることもできるものである。
【００４２】
したがって、ここで記載された実施形態の実に多様な入れ替えに鑑みて、この詳細な記載は解説のためのみを意図したものであり、本発明の範囲を限定するものと解してはならない。したがって、本発明としての請求は、特許請求の範囲と精神およびその等価物の範囲内にはいりうるあらゆるそのような修正を含むものである。
【図面の簡単な説明】
【００４３】
【図１】ＶＭが事前の予告なしに任意に中断または破棄されることを許容しつつ従来型のレジストリ環境へのＶＭの統合をサポートする例となるシステムの図解である。
【図２】図１のデバイス１０２の実施例の図解である。
【図３】図１のデバイス１０２の別の実施例の図解である。
【図４】図１のデバイス１０２の別の実施例の図解である。
【図５】ＶＭの状態に基づいてＶＭサービスを自動的に登録したり登録解除したりするための例としてのフローチャートである。
【図６】本発明のある諸側面を実装しうる好適な計算機環境の図解である。
【符号の説明】
【００４４】
１０４  仮想マシン
１０６  デバイス
１０８  デバイス
１１２  グローバル・レジストリ
１１０  ローカル・レジストリ
１１４  ネットワーク
２０２  ＯＳ
２０４  レジストリ
２０６  仮想マシン（ＶＭ）
２０８  仮想マシン
２１０  仮想マシン
２１２  提供・所望するサービス
２１４  提供・所望するサービス
２１６  提供・所望するサービス
２１８  仮想マシン・モニタ／マネージャ（ＶＭＭ）
２２０  デバイス・ハードウェア
３０２  仮想マシン（ＶＭ）
３０４  仮想マシン（ＶＭ）
３０６  仮想マシン
３０８  仮想マシン
３１０  提供・所望するサービス
３１２  提供・所望するサービス
３１４  提供・所望するサービス
３１６  提供・所望するサービス
３１８  ＶＭ  ＯＳ
３２０  ＶＭ  ＯＳ
３２２  ＶＭ  ＯＳ
３２４  ＶＭ  ＯＳ
３２６  仮想マシン・モニタ／マネージャ（ＶＭＭ）
３２８  デバイス・ハードウェア
４０２  ＶＭ
４０４  ＶＭ
４０６  ＶＭ
４０８  ＶＭ
４１０  提供・所望するサービス
４１２  提供・所望するサービス
４１４  提供・所望するサービス
４１６  提供・所望するサービス
４１８  ＶＭ  ＯＳ
４２０  ＶＭ  ＯＳ
４２２  ＶＭ  ＯＳ
４２４  ＶＭ  ＯＳ
４２６  薄っぺらなＶＭＭ
４２８  デバイス・ハードウェア
４３０  ＶＭ管理パーティション
５００  仮想マシン（ＶＭ）を監視
５０２  インスタンス生成？
５０４  提供・所望するサービスを記録
５０６  中断？
５０８  レジストリに提供・所望するサービスの登録解除を通知
５１０  登録情報を保持？
５１２  他に利用不能のものは？
５１４  破棄？
６０４  プロセッサ
６０６  メモリ
６０８  記憶装置
６１０  ビデオ・インターフェース
６１２  入出力ポート
６１８  ネットワーク・インターフェース
６２０  モデム
６２２  ネットワーク
６１４  リモートのマシン
６１６  リモートのマシン
【図１】
2006519423.tif 000003
【図２】
2006519423.tif 000004
【図３】
2006519423.tif 000005
【図４】
2006519423.tif 000006
【図５】
2006519423.tif 000007
【図６】
2006519423.tif 000008
【国際調査報告】
2006519423.tif 000009
2006519423.tif 000010