(57)【特許請求の範囲】
【請求項１】
基本ファイルシステムと基本オペレーティングシステムの基本設定とを有するコンピュータ機器で仮想化システムを提供するステップと、
仮想レイヤにソフトウェアアプリケーションをインストールすることで、該ソフトウェアアプリケーションを前記コンピュータ機器に仮想インストールし、前記仮想レイヤがアクティブ化されるときには、前記仮想化システムは前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方からの前記ソフトウェアアプリケーションに関連するアクセス要求を前記仮想レイヤにリダイレクトし、前記仮想レイヤが非アクティブ化されるときには、前記仮想化システムは、前記ソフトウェアアプリケーションに関連するアクセス要求を前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方へ通過させるステップと、
前記仮想化システムにより、前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方からの、前記ソフトウェアアプリケーションに関連するアクセス要求がリダイレクトされるように前記仮想レイヤをアクティブ化するステップと、
前記仮想レイヤに含まれず、前記ソフトウェアアプリケーションに関連する機能性のサブセットを識別するステップと、
前記ソフトウェアアプリケーションのコンポーネントに関連し、前記機能性のサブセットを含む仮想サブレイヤを前記仮想レイヤに動的に挿入して、前記仮想レイヤを前記ソフトウェアアプリケーションに関連する機能性を含むようにアップデートするステップと、
を備え、
前記仮想レイヤは、前記仮想サブレイヤの動的挿入中もアクティブ状態を維持する、方法。
【請求項２】
請求項１に記載の方法において、さらに、
前記仮想レイヤからプロセスを実行するステップと、
前記プロセスが前記仮想サブレイヤを挿入する前または後に開始したかを決定するステップと、
前記決定に基づいて前記プロセスに対して挿入した前記仮想サブレイヤを選択的に可視または不可視にするステップと、
を備える方法。
【請求項３】
請求項２に記載の方法において、前記決定に基づいて前記プロセスに対して挿入した前記仮想サブレイヤを選択的に可視あるいは不可視にするステップは、
前記仮想サブレイヤの挿入後に前記プロセスは開始したと決定したとき、前記プロセスに対して、挿入した前記仮想サブレイヤを可視にするステップと、
前記仮想サブレイヤの挿入前に前記プロセスは開始したと決定したとき、前記プロセスに対して、挿入した前記仮想サブレイヤを不可視にするステップと、を備える方法。
【請求項４】
請求項２に記載の方法において、前記プロセスは前記仮想サブレイヤの挿入前に開始した場合、前記方法は、さらに、前記仮想レイヤ内への前記仮想サブレイヤの動的挿入中に前記プロセスの実行を継続するステップを備える方法。
【請求項５】
請求項４に記載の方法において、
前記仮想レイヤから別プロセスを実行するステップと、
前記別プロセスが前記仮想サブレイヤの挿入後に開始したか否かを決定するステップと、
仮想サブレイヤの挿入後に前記別プロセスは開始したという決定に基づいて、挿入した前記仮想サブレイヤを前記別プロセスに対して選択的に可視にするステップと、を備える方法。
【請求項６】
請求項１に記載の方法において、前記ソフトウェアアプリケーションに関連する機能性のサブセットは該ソフトウェアアプリケーションのアップデートを備えるものとした、方法
【請求項７】
請求項１に記載の方法において、さらに、
挿入した前記仮想サブレイヤに前記仮想レイヤから除去するためのマーク付けをするステップと、
前記仮想レイヤから実行するいずれのプロセスも前記仮想サブレイヤに対して不可視にすることを決定するステップと、
前記仮想レイヤから前記仮想サブレイヤを動的に除去する動的除去ステップであって、前記仮想サブレイヤの動的除去中に前記仮想レイヤをアクティブ状態のままとする該動的除去ステップと、
を有する方法。
【請求項８】
請求項１に記載の方法において、さらに、
挿入した前記仮想サブレイヤに前記仮想レイヤから除去するためのマーク付けをするステップと、
前記アクティブ仮想レイヤからプロセスを実行するステップと、
前記仮想レイヤに除去用のマーク付けをする前に前記仮想レイヤをプロセスに対して可視であったか否かを決定するステップと、
前記仮想レイヤに除去用のマーク付けをする前に前記仮想レイヤが前記プロセスに対して可視であったという決定に基づいて、マーク付けした仮想サブレイヤを前記プロセスに対して選択的に可視状態を継続するステップと、
を備える方法。
【請求項９】
請求項８に記載の方法において、さらに、
前記アクティブな仮想レイヤから別プロセスを実行するステップと、
この別プロセスが、前記仮想サブレイヤに除去用のマーク付けした後に開始されたか否かを決定するステップと、
前記別プロセスが前記仮想サブレイヤにマーク付けした後に開始されたという決定に基づいて、前記別プロセスに対してマーク付けした前記仮想サブレイヤを選択的に不可視にするステップと、を備える方法。
【請求項１０】
基本ファイルシステムと基本オペレーティングシステムの基本設定とを有するコンピュータ機器における仮想化システムを識別するステップと、
ソフトウェアアプリケーションが仮想インストールされた仮想レイヤを識別し、前記仮想レイヤがアクティブ化されるときには、前記仮想化システムは前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方からの前記ソフトウェアアプリケーションに関連するアクセス要求を前記仮想レイヤにリダイレクトし、前記仮想レイヤが非アクティブ化されるときには、前記仮想化システムは、前記ソフトウェアアプリケーションに関連するアクセス要求を前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方へ通過させる、ステップと、
前記仮想レイヤに含まれず、前記ソフトウェアアプリケーションに関連する機能性のサブセットを識別するステップと、
前記ソフトウェアアプリケーションのコンポーネントに関連し、前記機能性のサブセットを含む仮想サブレイヤを前記仮想レイヤに動的に挿入して、前記仮想レイヤを前記ソフトウェアアプリケーションに関連する機能性を含むようにアップデートするステップと、
前記仮想レイヤから少なくとも一つのプロセスを実行し、前記仮想化システムにより、前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方からの、前記ソフトウェアアプリケーションに関連するアクセス要求がリダイレクトされるように前記仮想レイヤをアクティブ化するステップと、
前記少なくとも一つのプロセスに対して、挿入した前記仮想サブレイヤを選択的に可視または不可視にするステップと
を備える方法。
【請求項１１】
請求項１０に記載の方法において、前記少なくとも一つのプロセスは、前記仮想レイヤから実行する複数のプロセスであって、第１プロセスおよび第２プロセスを含む該複数のプロセスを含み、前記仮想サブレイヤを、選択的に前記第１プロセスに対して不可視にし、また前記第２プロセスに対して可視にする、方法。
【請求項１２】
請求項１１に記載の方法において、さらに、
前記第１プロセスが前記仮想サブレイヤの動的挿入前に開始したか否かを決定するステップと、
第２プロセスが前記仮想レイヤの動的挿入後に開始したか否かを決定するステップと、
を備え、前記決定に基づいて前記仮想サブレイヤを、前記第１プロセスに対して不可視にし、また前記第２プロセスに対して可視にする方法。
【請求項１３】
請求項１２に記載の方法において、さらに、前記仮想レイヤへの前記仮想サブレイヤの動的挿入中に記第１プロセスの実行を継続するステップを備える方法。
【請求項１４】
請求項１０に記載の方法において、前記仮想レイヤを非アクティブにすることなく、前記仮想サブレイヤを動的に挿入する方法。
【請求項１５】
基本ファイルシステムと基本オペレーティングシステムの基本設定とを有するコンピュータ機器に備えられる仮想化システムと、
ソフトウェアアプリケーションが仮想インストールされてアクティブ化された仮想レイヤであって、前記仮想レイヤがアクティブ化されるときには、前記仮想化システムは前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方からの前記ソフトウェアアプリケーションに関連するアクセス要求を前記仮想レイヤにリダイレクトし、前記仮想レイヤが非アクティブ化されるときには、前記仮想化システムは、前記ソフトウェアアプリケーションに関連するアクセス要求を前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方へ通過させる、仮想レイヤと、
前記仮想レイヤに含まれず、前記ソフトウェアアプリケーションに関連する機能性のサブセットを識別する、コンピュータ機器内部の仮想化エンジンであって、前記ソフトウェアアプリケーションのコンポーネントに関連し、前記機能性のサブセットを含む仮想サブレイヤを前記仮想レイヤ内に動的に挿入して、前記仮想レイヤを前記ソフトウェアアプリケーションに関連する機能性を含むようにアップデートし、前記基本ファイルシステム及び前記基本設定のうちいずれか一方または両方からの、前記ソフトウェアアプリケーションに関連するアクセス要求がリダイレクトされるように前記仮想レイヤがアクティブ化されるよう構成した、仮想化エンジンと、
を備えたシステム。
【請求項１６】
請求項１５に記載のシステムにおいて、
前記コンピュータ機器は、前記アクティブな仮想レイヤからプロセスを実行するよう構成し、また
前記仮想化エンジンは、
前記プロセスが前記仮想サブレイヤの挿入前または挿入後に開始したかを決定し、また
前記決定に基づいて、挿入した前記仮想サブレイヤを前記プロセスに対して選択的に可視または不可視にするよう構成した、
システム。
【請求項１７】
請求項１６に記載のシステムにおいて、前記仮想化エンジンは、
前記プロセスが前記仮想サブレイヤの挿入後に開始したと決定するとき、挿入した前記仮想サブレイヤを前記プロセスに対して可視にし、また
前記プロセスが前記仮想サブレイヤの挿入前に開始したと決定するとき、挿入した前記仮想サブレイヤを前記プロセスに対して不可視にする
ように構成した、システム。
【請求項１８】
請求項１５に記載のシステムにおいて、前記仮想化エンジンは、
前記挿入した仮想サブレイヤに前記仮想レイヤから除去するマーク付けをし、
前記仮想レイヤから実行するいずれのプロセスに対しても前記仮想サブレイヤが不可視であることを決定し、そして
前記アクティブな仮想レイヤから前記仮想サブレイヤを動的に除去する
よう構成した、システム。
【請求項１９】
請求項１５に記載のシステムにおいて、さらに、前記コンピュータ機器に通信可能に接続したソフトウェアマネジメントサブシステムを備え、前記ソフトウェアマネジメントサブシステムは、前記仮想サブレイヤを表すデータをコンピュータ機器に供給するよう構成した、システム。
【請求項２０】
請求項１５に記載のシステムにおいて、前記ソフトウェアアプリケーションに関連した機能性のサブセットは、ソフトウェアアプリケーションのためのソフトウェアパッチを備えるものとした、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想ソフトウェアサブレイヤの動的な挿入および除去に関する。
【背景技術】
【０００２】
コンピュータ作業において、ソフトウェアのアップデート（例えばソフトウェアパッチ）を、コンピュータにインストールしまた稼働しているソフトウェアアプリケーションに適用するとき、ソフトウェアアプリケーションおよびソフトウェアアプリケーションから稼働している全てのプロセスは、アップデートを適用するおよび／または有効にするために、一般的にはシャットダウンしなくてはならない。このシャットダウンおよび結果として生じるダウンタイムは、ソフトウェアアプリケーションおよびプロセスの通常使用およびオペレーションに対して著しい中断をもたらす。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ソフトウェアアプリケーションにアップデートを適用することに関連するこのような問題は、多数のコンピュータおよび／またはユーザーを有するコンピュータシステムを維持する管理者または組織をいらだたせる。このようなコンピュータシステムにおいて、コンピュータシステム全体にわたるソフトウェアアプリケーションおよび関連するプロセスを同時にシャットダウンすることは、過度に負担となり煩わしいものである。
【課題を解決するための手段】
【０００４】
本発明は仮想ソフトウェアサブレイヤを動的に挿入および除去について開示する。本明細書に記載する本発明の実施例は種々の方法で実施することができ、１個以上のプロセス、装置、システム、機器、方法、コンピュータ可読媒体、またはコンピュータ可読媒体として実体化したコンピュータプログラム製品を含む。仮想ソフトウェアサブレイヤの動的挿入および／または除去に関する、例示的なシステム、装置、コンピュータ可読媒体上で実行するコンピュータプログラム製品および方法を本明細書に記載する。
【０００５】
本明細書で使用する、用語「ソフトウェア」および「ソフトウェアアプリケーション」は、１個以上のコンピュータ可読媒体上に実体化したコンピュータ可読命令の任意の命令セットを意味し、これら命令はコンピュータ装置によって実行可能である。コンピュータ装置は、よく知られているように、ソフトウェアアプリケーションから１個以上のプロセスを実行することができる。ソフトウェアアプリケーションは、１個以上のコンピュータプログラムと、このコンピュータプログラムの任意のコンポーネントおよび／またはプログラムから起動するプロセスを含むことができる。ソフトウェアアプリケーションの「コンポーネント」は、ソフトウェアアプリケーションに関連する、または適用する、特徴、データ、機能性の任意のサブセットを含むことができる。いくつかの実施形態において、ソフトウェアアプリケーションのコンポーネントは、ソフトウェアアプリケーションに適用できる１個以上のアップデート（例えば、ソフトウェアパッチ）を含むことができる。
【０００６】
ソフトウェアの「仮想化」は、コンピュータ装置にソフトウェアを仮想インストールする１個以上の操作の実行を意味し、これにより、ソフトウェアおよび／または１個以上のソフトウェア・コンポーネントを、都合よく、アクティブ化（すなわち「有効化」または「起動」）、また非アクティブ化（すなわち「無効化」または「停止」）することができる。仮想インストールしたソフトウェアをアクティブ化するとき、仮想インストールしたソフトウェアに関連するアクセス要求は、一般的に、基本ファイルシステムおよび環境設定から、ソフトウェアを仮想インストールした１個以上のメモリ域にリダイレクトされる。仮想インストールしたソフトウェアを非アクティブ化するとき、アクセス要求はリダイレクトされないが、基本ファイルシステムおよび環境設定への通過を許可する。
【０００７】
以下に、より詳細に説明するように、ソフトウェアアプリケーションを仮想レイヤとして仮想化することができ、これをアクティブ化すると、ソフトウェアアプリケーションから実行するプロセスに関連するアクセス要求を基本ファイルシステム・設定から仮想レイヤにリダイレクトすることができる。ソフトウェアアプリケーションのコンポーネント（例えばソフトウェアパッチなどのアップデート）に関連する仮想サブレイヤを仮想レイヤに動的に挿入し、またソフトウェアアプリケーションまたはこのソフトウェアアプリケーションから実行するプロセスをシャットダウンすることなく、プロセス毎に選択的に適用することができる。いくつかの実施形態において、仮想サブレイヤの選択的な適用は、ソフトウェアアプリケーションから実行するプロセスが、仮想サブレイヤの動的挿入の前または後に開始したか否かを決定するステップと、この決定に基づいて挿入した仮想サブレイヤをプロセスに対して選択的に可視または不可視にするステップと、を含むことができる。いくつかの実施例において、仮想サブレイヤを挿入前に開始したプロセスに対して不可視にし、また挿入後に開始したプロセスに対して可視にすることができる。
【０００８】
上述したようにまたは類似の方法で、ソフトウェアアプリケーションのコンポーネントに関連する仮想サブレイヤを、仮想化しまたアクティブ化したソフトウェアアプリケーションに関連するアクティブ仮想レイヤに動的に挿入することができ、しかも、ソフトウェアアプリケーションから実行するプロセスを終了する、または仮想レイヤを非アクティブ化する必要はない。すなわち、仮想レイヤは、この挿入中にアクティブ状態を維持することができる。したがって、ソフトウェアアプリケーションのコンポーネント（例えばアップデート）をオンザフライで適用することができるとともに、ソフトウェアアプリケーションの従来のアップデート方法に関連する不便さ、中断および困難をほぼ回避することができる。
【０００９】
同様にして、ソフトウェアアプリケーションのコンポーネントに関連する仮想サブレイヤを、仮想化しかつアクティブ化したアクティブ仮想レイヤから動的に除去することができ、しかも仮想レイヤを非アクティブにする必要はない。すなわち、仮想レイヤは、この除去中アクティブ状態を維持することができる。したがって、ソフトウェアアプリケーションのコンポーネント（例えばアップデート）を、オンザフライで非適用にすることができるとともに、ソフトウェアアプリケーションまたはソフトウェアアプリケーションのコンポーネントの従来のアンインストール方法に関連する不便さ、中断および困難をほぼ回避することができる。
添付図面は、様々な実施形態を示し、本明細書の一部である。図示した実施形態は、単に例示に過ぎず、本発明の範囲を限定するものでない。図面にわたり、同一または類似の参照符号は同一または類似の要素を示す。
【図面の簡単な説明】
【００１０】
【図１】サブレイヤを動的に挿入および除去するよう構成したコンピュータシステムの例を示す。
【図２Ａ】コンピュータ機器環境における仮想システムを例示する。
【図２Ｂ】図２Ａのコンピュータ機器環境に仮想レイヤを仮想インストールした状況を示す。
【図２Ｃ】図２Ｂのコンピュータ機器環境における仮想レイヤがアクティブ化した状況を示す。
【図２Ｄ】図２Ｃのコンピュータ機器環境における仮想レイヤに仮想サブレイヤを挿入した状況を示す。
【図２Ｅ】図２Ｄのコンピュータ機器環境における仮想サブレイヤが、仮想レイヤから実行するプロセスに対して選択的に可視および不可視にするように構成した状況を示す。
【図３】仮想レイヤに仮想サブレイヤを動的に挿入することに関するイベント発生例を示すタイムラインである。
【図４Ａ】図３のイベントに関連する様々な挿入段階を示す。
【図４Ｂ】図３のイベントに関連する様々な挿入段階を示す。
【図４Ｃ】図３のイベントに関連する様々な挿入段階を示す。
【図５Ａ】仮想レイヤに挿入した仮想サブレイヤを選択的に可視または不可視にする状況を示す。
【図５Ｂ】仮想レイヤに挿入した仮想サブレイヤを選択的に可視または不可視にする状況を示す。
【図５Ｃ】仮想レイヤに挿入した仮想サブレイヤを選択的に可視または不可視にする状況を示す。
【図６】仮想レイヤに対する仮想サブレイヤの動的挿入および除去に関するイベント発生例を示すタイムラインである。
【図７Ａ】仮想レイヤから除去するマーク付けをした仮想サブレイヤを選択的に可視または不可視にする状況を示す。
【図７Ｂ】仮想レイヤから除去するマーク付けをした仮想サブレイヤを選択的に可視または不可視にする状況を示す。
【図８】仮想ソフトウェアサブレイヤの動的挿入方法の例を示す。
【図９】仮想ソフトウェアサブレイヤの動的除去方法の例を示す。
【発明を実施するための形態】
【００１１】
ここで図面を参照すると、図１は、本明細書に記載するような仮想ソフトウェアのサブレイヤを動的に挿入および除去するよう構成したコンピュータシステム１００（場合によって、簡単に「システム１００」と称する）の例を示す。図示のように、コンピュータシステム１００は、コンピュータ機器１２０−１〜１２０−Ｎ（集合的に「コンピュータ機器１２０」と称する）と通信可能に接続したソフトウェアマネジメントサブシステム１１０を有する。ソフトウェアマネジメントサブシステム１１０およびコンピュータ機器１２０は、適切な通信技術を用いて相互に通信することができる。例えば、ソフトウェアマネジメントサブシステム１１０およびコンピュータ機器１２０は、適切な通信技術を用いたネットワーク１３０を介して通信することができ、通信技術は、本明細書に記載したプロセスおよび通信を支援できる適切なネットワーク通信技術、デバイス、信号およびプロトコルを含む。ネットワーク１３０は、ネットワーク１３０に接続した機器間で通信信号を伝送可能な任意のタイプ、個数およびネットワーク環境設定を含むことができるが、ローカルエリアネットワーク、ワイドエリアネットワーク、ピアツーピアネットワーク、ワイヤレスネットワーク、データネットワーク、イントラネット、インターネット、およびそれらの組み合わせ（コンビネーション）および副次的組み合わせ（サブコンビネーション）に限定しない。他の実施形態において、ソフトウェアマネジメントサブシステム１１０およびコンピュータ機器１２０は、互いに直接的に、例えば通信バスあるいは通信リンクを介して通信することができる。
【００１２】
いくつかの実施形態において、コンピュータシステム１００は、本明細書に記載したプロセスを実行するように構成した任意のハードウェアおよび／または命令（例えばソフトウェアプログラム）、もしくはソフトウェアとハードウェアの組み合わせを含むことができる。とくに、システム１００は、多数のコンピュータ機器のうち任意なものを含むことができ、また多数のコンピュータオペレーティングシステムのうち任意なものを使用できることは理解されるべきであり、以下のものに限定することを意図しないが、オペレーティングシステムは、マイクロソフトのＷｉｎｄｏｗｓ（登録商標），ＵＮＩＸ（登録商標），Ｍａｃｉｎｔｏｓｈ，Ｌｉｎｕｘのオペレーティングシステムの既知バージョンおよび／または品種を含む。
【００１３】
したがって本明細書書に記載するプロセスおよび／またはオペレーションは少なくとも命令の一部として実装することができ、例えばコンピュータ可読媒体上に実体化して、１個以上のコンピュータ機器により実行可能なコンピュータプログラム製品とすることができる。一般的に、プロセッサ（例えばマイクロプロセッサ）は、例えばメモリやコンピュータ可読媒体などから命令を受け取り、その命令を実行し、これにより本明細書に記載するプロセスおよび／またはオペレーションを含む１個以上のプロセスおよびオペレーションを実行する。このような命令は、従来の各種コンピュータ可読媒体を用いて保存しまた送信することができる。
【００１４】
コンピュータ可読媒体（またはプロセッサ可読媒体とも称する）は、コンピュータ（例えばコンピュータのプロセッサ）により可読であるデータ（例えば命令）の供給に関与する任意の媒体を含む。そのような媒体は、多様な形式とすることができ、以下に限定する意図はないが、不揮発性媒体、揮発性媒体、通信媒体を含む。不揮発性媒体としては、例えば、光学または磁気ディスク、および他の永続的メモリがある。揮発性媒体としては、例えば、一般的にメインメモリを構成するダイナミックランダムアクセスメモリ（“ＤＲＡＭ”）がある。通信媒体としては、例えば、同軸ケーブル、銅線および光ファイバがあり、コンピュータのプロセッサに接続するシステムバスを備えるワイヤも含む。通信媒体としては、音波、光波および電磁放射があり、これらは、例えば無線周波数（「ＲＦ」）および赤外線（「ＩＲ」）データ通信中に発生する。コンピュータ可読媒体の共通形式としては、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤ、その他の光学媒体、パンチカード、紙テープ、その他の穴パターンを持つ物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ。ＦＬＡＳＨ−ＥＰＲＯＭ、その他のメモリチップまたはカートリッジ、あるいはコンピュータ可読であるその他の媒体がある。
【００１５】
例示的なコンピュータシステム１００を図１に示したが、図１に示したコンポーネントに限定する意図はない。実際には、付加的または代替的なコンポーネント、実装およびコンピュータシステムを、本明細書に記載する原理およびプロセスを実行するために使用することができる。
【００１６】
ソフトウェアマネジメントサブシステム１１０は、１個以上のデバイスを含むあるいはその内部に実装することができ、このようなデバイスとしては、ネットワーク１３０を介してコンピュータ機器１２０と通信するよう構成した１個以上のデバイスがある。いくつかの実施形態において、例えば、ソフトウェアマネジメンサブトシステム１１０は、１個以上のサーバデバイスを含むかあるいはデバイス上で実行してもよく、サーバデバイスを、シマンテック社の一部であるアルティリス社によるＡｌｔｉｒｉｓ（登録商標）Ｎｏｔｉｆｉｃａｔｉｏｎ  ＳｅｒｖｅｒＴＭなどのサーバソフトウェアを作動するよう構成することができる。ソフトウェアマネジメントサブシステム１１０は、１個以上のコンピュータ可読媒体上で実行するコンピュータ可読命令（例えば１個以上のコンピュータプログラム製品）を含む、または、命令を実行するように構成することができる。コンピュータ可読命令は、コンピュータ機器１２０に対して、ソフトウェアおよび／またはソフトウェアのコンポーネントの仮想化および／または展開に関連する１個以上のオペレーションの実行を指示するよう構成することができ、コンピュータ機器１２０内にインストールしてアクティブ化した仮想レイヤに対して動的に挿入するための仮想サブレイヤを表すデータを展開することを含む。したがって、ソフトウェアマネジメントサブシステム１１０のユーザー、例えばシステム１００の管理者（アドミニストレータ）は、ソフトウェアマネジメントサブシステム１１０を使用して、ネットワーク１３０を介してコンピュータ機器１２０に対してソフトウェアアプリケーションおよび／またはソフトウェアアプリケーションのコンポーネントを仮想化および／または展開するオペレーションを制御することができる。
【００１７】
例えば、ソフトウェアマネジメントサブシステム１１０は、ソフトウェアアプリケーションの製造者および販売者などの事業体が配給したソフトウェアアプリケーションを、受信またはアクセスすることができる。ソフトウェアアプリケーションは、例えばインターネットを介してダウンロードするためにアクセス可能にすることができる。ユーザーの指示の下、ソフトウェアマネジメントサブシステム１１０は、ネットワーク１３０を介して１個以上のコンピュータ機器１２０にソフトウェアアプリケーションを配信することができる。ソフトウェアアプリケーションを表すデータは、適切な技術を用いて任意の受取可能な形式で通信することができる。
【００１８】
特定の実施形態において、ソフトウェアマネジメントサブシステム１１０は、コンピュータ機器１２０に対してソフトウェアアプリケーションをインストールするよう実行可能なインストールファイルを伝送するよう、構成することができる。このような実施形態において、コンピュータ機器１２０は、ソフトウェアアプリケーションを仮想化するよう構成することができる。他の実施形態において、ソフトウェアマネジメントサブシステム１１０は、コンピュータ機器１２０に対してソフトウェアアプリケーションを仮想化し、またこの仮想化したソフトェアアプリケーションを表すデータをエクスポートするよう構成することができる。コンピュータ機器１２０は、１個以上のメモリ域に仮想ソフトェアアプリケーションを保存して、コンピュータ機器１２０に仮想ソフトェアアプリケーションを仮想インストールすることができる。他の実施形態において、ソフトウェアマネジメントサブシステム１１０およびコンピュータ機器１２０は、仮想化オペレーションを分割することができる。したがって、ソフトウェアマネジメントサブシステム１１０および／またはコンピュータ機器１２０は、ソフトウェアアプリケーションを仮想化することに関連する１個以上のソフトウェア仮想化オペレーションを実行することができる。
【００１９】
ソフトウェアアプリケーションの仮想化は、ソフトウェアアプリケーションをキャプチャするステップを有することができ、特定の実施形態においては、ソフトウェアアプリケーションのインストールファイルをキャプチャするステップと、ソフトウェアアプリケーションの１個以上の仮想レイヤを生成するステップとを有することができる。このことは、２００３年６月１１日に出願され、２００６年１０月３日に発行された米国特許第７１１７４９５号に記載された方法のいずれかにより実施することができ、この特許を参考として本明細書に付記する。仮想レイヤは、１個以上のフォルダ、サブレイヤまたはディレクトリを含み、これらに対して、ソフトウェアアプリケーションの１個以上のコンポーネント（例えば、プログラムファイル、実行ファイル、構成ファイル、環境設定情報、設定等）を保存することができる。仮想レイヤは、１個以上のメモリ域に保存して、仮想レイヤを仮想インストールすることができる。さらに以下に説明するように、メモリ域をベースファイルシステムおよびコンピュータ機器の環境設定（configuration）ライブラリに関連するメモリ域から分離することができる。
【００２０】
ソフトウェアアプリケーションをキャプチャするプロセスは、マッピングデータを生成するステップを有することができ、このマッピングデータを使用して、仮想ソフトェアアプリケーションのプロセスにより発生したアクセス要求を、ベースファイルシステムおよび環境設定ライブラリから、１個以上の仮想レイヤに関連する他のメモリ域に、リダイレクトすることができる。したがって、仮想ソフトウェアアプリケーションから実行するプロセスは、ベースファイルシステムおよび環境設定ライブラリを変更または使用することなく、仮想レイヤに含まれるコンテンツを使用することができる。仮想インストールは、さらに、仮想レイヤを保存するメモリ域に基づいてマッピングデータを生成するステップ、アップデートするステップおよび／または保存するステップを含むことができる。マッピングデータは、仮想レイヤに関連するメモリ域にアクセス要求をリダイレクトするのに使用するよう構成することができる。仮想インストールした仮想レイヤは、以下により詳細に説明するように、都合よく、コンピュータ機器１２０上でアクティブ化および非アクティブ化することができる。
【００２１】
本明細書に記載する原理によれば、ソフトウェアアプリケーションに関連する仮想インストールしてアクティブ化した仮想レイヤは、１個以上の仮想サブレイヤを仮想レイヤに動的に挿入するステップおよび／または仮想レイヤから１個以上の仮想サブレイヤを仮想レイヤから動的に除去するステップによって、アップデートすることができる。例えば、ソフトウェアマネジメントサブシステム１１０は、ソフトウェアアップデートコンポーネント（例えばソフトウェアパッチ）を受信して、コンピュータ機器に展開することができる。上記のように、ソフトウェアマネジメントサブシステム１１０は、ソフトウェアアップデートコンポーネントをキャプチャし、アップデートコンポーネントに関連する仮想サブレイヤを作成し、また仮想サブレイヤを表すデータをコンピュータ機器にエクスポートすることができる。代案として、ソフトウェアアップデートコンポーネントのインストール実行ファイルをコンピュータ機器１２０に展開することができ、コンピュータ機器はインストール実行ファイルをキャプチャして、アップデートファイルに関連する仮想サブレイヤを生成することができる。さらに代案として、ソフトウェアマネジメントサブシステム１１０およびコンピュータ機器１２０は、ソフトウェアアップデートコンポーネントをキャプチャして仮想サブレイヤを生成するオペレーションを分割することができる。
【００２２】
ソフトウェアアップデートコンポーネントに関連する仮想サブレイヤを、ソフトウェアアプリケーションに関連するアクティブ仮想レイヤに動的に挿入することができ、この動的挿入は、仮想レイヤを非アクティブ化することなく、および／またはソフトウェアアプリケーションから実行するプロセスを終了することなく行うことができる。すなわち、仮想レイヤは、仮想サブレイヤの動的挿入中に、アクティブ状態を維持することができる。仮想サブレイヤは、プロセスごとに選択的に適用または非適用にすることができ、このことを以下に詳細に説明する。同様にして、挿入した仮想サブレイヤを、仮想レイヤを非アクティブ化することなく、アクティブ仮想レイヤから動的に除去することができ、このことも以下により詳細に説明する。
【００２３】
アクティブ仮想レイヤに対する仮想サブレイヤの動的挿入および動的除去の原理をより詳細に図示するため、以下に、例示的なソフトウェア仮想化システム２００および例示的な仮想ソフトウェアの構成を、図２Ａ〜Ｅにつき説明する。図２Ａ〜Ｅに示すソフトウェア仮想化システム２００および例示的な構成を、１個以上の適切なコンピュータ機器よりなるコンピュータ機器環境内に実装することができ、任意のコンピュータ機器１２０を含む。コンピュータ機器１２０は、任意のハードウェアおよび、本明細書に記載する１個以上のプロセスおよび／または作業を実行可能なコンピュータオペレーション（例えば１個以上のコンピュータプログラム製品）を含むことができ、ソフトウェアマネジメントサブシステム１１０と通信するステップと、１個以上の仮想ソフトウェアアプリケーションおよび／またはそのコンポーネントを仮想化および／または指令するステップとを含むことができ、本明細書に記載するようなソフトウェアアプリケーションからの１個以上のプロセスを実行するステップを含む。コンピュータ機器１２０は、これに限定するわけではないが、パーソナルコンピュータ、ワークステーション、パーソナルデジタルアシスタントまたは、プロセッサ、メモリ、入力および出力機器、少なくとも一つの固定ディスクを持つ任意の機器とすることができる。本明細書に記載する原理を、これらおよびその他のコンピュータシステムならびに既存のおよびまだ開発中である機器に、本明細書に開示する方法および原理を用いて適用することができることが考えられる。同様に、以下の多くの実施例は単独の基本ファイルシステムおよび環境設定（configuration）によるコンピュータ機器について言及しているが、以下に開示するコンセプト、原理および実施例を、ソフトウェアの仮想化を行うために拡張することができ、数個のあるいは多くのファイルシステムおよび／または環境設定（例えばレジストリ）にわたる仮想ソフトウェアサブレイヤの動的な挿入および／または除去を含む。
【００２４】
図２Ａに示すように仮想化システム２００は、１個以上のアプリケーション２２０（例えばソフトウェアアプリケーション）を駆動させることができ、ファイルシステム内のファイルにアクセスすることができるプラットフォームを形成する基本オペレーティングシステム（「基本ＯＳ」）を有するコンピュータ機器環境の一例に実装することができる。特定の実施形態において、基本ＯＳ２１０はマイクロソフトのＷｉｎｄｏｗｓ（登録商標）  オペレーティングシステムソフトウェアを備える。
【００２５】
基本ＯＳは基本設定セッティング（例えばレジストリセッティング）およびファイルを含むことができ、それらは読み書き作業用のアプリケーション２２０に対してグローバルに利用可能である。基本ＯＳ２１０の設定セッティングおよびファイルを、基本ファイルシステム・環境設定ライブラリ２３０に含むことができ、またそれらを基本ファイルシステムおよび環境設定２３０と称し、基本ＯＳ２１０の機能を実行するために使用して、ファイルシステム、レジストリなどの設定セッティングおよび他のオペレーティングシステム機能を含むことができる。基本ＯＳ２１０の基本ファイルおよび設定セッティングを含む基本ファイルシステムおよび環境設定ライブラリを、コンピュータ機器１２０のメモリにおける特定の場所に保存することができる。
【００２６】
図２Ａに示すように、仮想化システム２００は仮想化エンジン２４０を含むことができ、この仮想化エンジン２４０は任意のハードウェア（例えばプロセッサ）、コンピュータ可読媒体（例えばコンピュータプログラム製品）上で実体化したコンピュータ可読命令、またはこれらの組み合わせを含むことができ、本明細書に記載する１個以上のオペレーションを実行するよう構成する。特定の実施形態において、仮想化エンジン２４０をコンピュータ機器１２０にインストールしたソフトウェアエージェントとして実装することができる。
【００２７】
仮想エンジン２４０は、本明細書に記載する任意の仮想化オペレーションを含む１個以上のソフトウェア仮想化オペレーションを実施または直接実行するよう構成することができる。例えば、特定の実施形態において、仮想化エンジン２４０は、ソフトウェアアプリケーションを仮想化するよう構成することができ、以下の任意のオペレーションの実施および／または直接実行を含む、すなわち、ソフトウェアアプリケーションおよび／またはそのコンポーネントをキャプチャするステップ、１個以上の仮想レイヤおよび／または仮想サブレイヤを生成するステップ、仮想レイヤおよび／または仮想サブレイヤを仮想インストール（例えば、それらをメモリ域に保存することによる）するステップ、基本ファイルシステムおよび環境設定２３０からのアクセス要求を仮想レイヤおよび／または仮想サブレイヤにリダイレクトするためのマッピングデータを生成するステップ、を含む。特定の実施形態において、仮想化エンジン２４０は、ソフトウェアアプリケーション用の非仮想化ソフトウェアであるインストール実行ファイルを受信し、リストアップした上述のステップを実行し、ソフトウェアアプリケーションを仮想化することができる。他の実施形態にいて、仮想化エンジン２４０は、ソフトウェアマネジメントサブシステム１１０から仮想レイヤおよび／または仮想サブレイヤを表すエクスポートデータを受信して、仮想サブレイヤおよび／または仮想サブレイヤを（例えば、１個以上のメモリ域にそれらを保存することにより）仮想インストールすることができる。仮想化エンジン２４０は、本明細書に記載する仮想サブレイヤの動的な挿入および／または除去するための任意のオペレーションを実施するよう構成することができる。
【００２８】
仮想化エンジン２４０は、アプリケーション２２０からのアクセス要求（例えばファイルシステムやレジストリのアクセス要求）を傍受して、所定のマッピングデータに基づきどこにアクセス要求をリダイレクトするかを決定するように、構成することができる。したがって、仮想化エンジン２４０は、基本ファイルシステムおよび環境設定２３０のコンテンツのアクセス要求を、仮想インストールしてアクティブにしたソフトウェアアプリケーションおよび／またはそのコンポーネントのコンテンツであって、仮想レイヤおよび／または仮想サブレイヤなどのメモリ内で分離独立した場所に保存した該コンテンツにリダイレクトすることができる。特定の実施形態において、ソフトウェアアプリケーションおよび／またはそのコンポーネントを仮想インストールしてアクティブ化することは、リダイレクトの透過的な実施を可能にし、すなわちコンピュータ機器１２０のソフトウェアアプリケーションおよびオペレーティングシステムはリダイレクトに気づかないように実施できる。
【００２９】
特定の実施形態において、仮想化エンジン２４０は、基本ファイルおよび環境設定２３０および／または基本ＯＳ２１０と関連する。例えば、仮想化エンジン２４０の少なくとも一部を、オペレーティングシステムのカーネルレベルに１個以上のドライバ（例えばフィルタドライバ）として実装して、基本ファイルシステムおよび環境設定ライブラリ２３０に保存したファイルおよび環境設定セッティングへの入力および出力要求をモニタするよう構成することができる。ＯＳのカーネルＩ／Ｏサブシステムを通過するモニタリング要求によりこれを達成することができる。特定の実施形態において、アクセス要求を傍受してリダイレクトする機能は、例えば上述の米国特許第７，１１７，４９５号に含まれる教示の少なくとも一部に基づいて実装することができる。
【００３０】
図２Ａは、仮想インストールしたまたはアクティブ化したソフトウェアアプリケーションがコンピュータ環境内にない状態で作動するよう構成した、仮想化エンジン２４０を有する仮想化システム２００を示す。したがって、仮想化エンジン２４０は、一般的に、アプリケーション２２０からの基本ファイルシステムおよび環境設定ライブラリ２３０内のコンテンツへのアクセス要求を許可し続けるよう構成する。
【００３１】
図２Ｂは、コンピュータ機器１２０にソフトウェアアプリケーションを仮想レイヤ２５０として仮想インストールした段階における仮想化システム２００を示す。アプリケーションおよび／または仮想レイヤ２５０を表すデータを、任意の適切なソースから、任意の許容される方法、例えば、ネットワーク１３０を介するソフトウェアマネジメントサブシステム１１０からの送信によって、受信することができる。
【００３２】
上述したように、仮想化エンジン２４０は、ソフトウェアアプリケーションを仮想化するために上述の仮想化オペレーションのいずれかを実施することができる。いくつかの実施例において、この実施には、ソフトウェアアプリケーションのための仮想レイヤ２５０を生成するステップと、仮想レイヤ２５０にアプリケーションのコンテンツを保存するステップと、仮想レイヤ２５０のマッピングデータ２６０を生成して保存するステップと、を含まれる。図２Ｂに示すように、いくつかの実施形態ではマッピングデータ２６０を仮想レイヤ２５０内に保存することができる。もう一つの方法として、マッピングデータ２６０を、仮想レイヤ２５０の外部における別の場所に保存することができる。他の実施例では、仮想化エンジン２４０は、仮想レイヤ２５０をソフトウェアマネジメントサブシステム１１０から受信して、それをメモリ域に保存することにより仮想レイヤ２５０を仮想インストールすることができる。
【００３３】
マッピングデータ２６０は、アクセス要求が向かうべきメモリ（例えば仮想レイヤ）内の適正位置を識別するために役立つ可能性のある任意の情報を含むことができる。マッピングデータ２６０内の情報は、任意の方法でフォーマットし、また体系化することができ、アクセス要求をリダイレクトし、仮想レイヤ２５０のアクティブ化し、また仮想レイヤ２５０を非アクティブ化するのに使用すべき情報として適切なものにする。特定の実施形態において、マッピングデータ２６０としては、情報をインデックス、キーワードまたは他の基準によって検索できるように体系化した情報の１個以上のテーブルがある。
【００３４】
マッピングデータ２６０を生成する例として、ソフトウェアアプリケーションが、基本ファイルシステムおよび環境設定２３０の一部であるファイルオブジェクトを交換するよう設計した特定アプリケーションオブジェクト（例えばＤＬＬファイル）を含むと仮定する。アプリケーションの仮想インストール中、仮想化エンジン２４０および／またはソフトウェアマネジメントサブシステム１１０は、ファイルオブジェクトおよび／またはその位置（例えばパスネーム）、アプリケーションオブジェクトおよび／または仮想レイヤ２５０におけるその位置、ならびにファイルオブジェクトとアプリケーションオブジェクトおよび／またはそれらの各位置との間における関係性、を識別することができる。識別情報の参照を記録してマッピングデータ２６０の一部に含むことができる。このようにして、または別の適切な方法によって、マッピングデータ２６０が、仮想レイヤ２５０のコンテンツとベースファイルシステムおよび環境設定２３０のコンテンツとの間における関係性を定義すると言うことができる。
【００３５】
特定の実施形態において、仮想レイヤ２５０のアクティブ化は、マッピングデータ２６０を仮想化エンジン２４０に適用することにより、仮想レイヤ２５０に関連するマッピングデータ２６０をアクティブ化することを含む。図２Ｃにおいて、マッピングデータ２６０のアクティブ化を、マッピングデータ２６０を仮想化エンジン２４０に移動する、またはマッピングデータ２６０のコピーを仮想化エンジン２４０に注入することによって表す。特定の実施形態において、この注入としては、仮想化エンジン２４０のＯＳカーネルフィルタドライバ内にマッピングデータ２６０を注入することがある。
【００３６】
仮想レイヤ２５０をアクティブ化した状態で、仮想化エンジン２４０は、対応するソフトウェアアプリケーションに関連するアクセス要求を、基本ファイルシステムおよび環境設定２３０から仮想レイヤ２５０に選択的にリダイレクトするよう構成する。例えば、仮想化エンジン２４０はアプリケーション２２０からのアクセス要求を傍受することができ、当該要求としては、基本ファイルシステムおよび環境設定２３０の特定のファイルオブジェクトまたはメモリ位置に対する参照がある。仮想化エンジン２４０は、この参照がアクティブ仮想レイヤ２５０に関連するか否かを決定するために、アクティブ化したマッピングデータ２６０を使用することができる。この決定は、任意の適当な方法で実施することができ、例えばこの参照のためにマッピングデータを検索することによって実施する。もし照合が確認されたら、仮想化エンジン２４０は、仮想レイヤ２５０内の対応するオブジェクトにアクセス要求をリダイレクトすることができる。対応するオブジェクトはそれからアプリケーション２２０にアクセスして戻ることができ、アプリケーション２２０はリダイレクトが行われたことに気づかない。
【００３７】
様々な理由で、仮想レイヤ２５０に関連するソフトウェアアプリケーションのコンポーネントを有する仮想レイヤ２５０をアップデートすることが望ましい。例えば、ソフトウェアパッチおよび他のアップデートを、ソフトウェアアプリケーションに利用可能とすることができる。ソフトウェアアプリケーションをアップデートする従来方法は、一般的に、ソフトウェアアプリケーションのシャットダウンおよび／または仮想レイヤ２５０の非アクティブ化を行って、ソフトウェアアプリケーションにアップデートコンポーネントを供給することが必要である。残念なことに、アップデートを実行するためのソフトウェアアプリケーションのシャットダウンおよび／または仮想レイヤ２５０の非アクティブ化は、ソフトウェアアプリケーションおよび仮想レイヤ２５０の通常使用およびオペレーションを、とくにマルチユーザーのコンピュータ環境において、著しくかつ望ましくないほど阻害する。
【００３８】
本明細書に記載した原理に基づいて、１個以上の仮想サブレイヤを、仮想レイヤ２５０を非アクティブ化する、または関連するソフトウェアアプリケーションをシャットダウンすることなく、アクティブ仮想レイヤ２５０に動的に挿入することができる。図２Ｄに、図２Ｃのコンピュータ機器環境におけるアクティブ仮想レイヤ２５０内に仮想サブレイヤ２７０を動的に挿入した状況を示す。仮想サブレイヤ２７０を、仮想レイヤ２５０に関連するソフトウェアアプリケーションの仮想コンポーネントに関連付けることができる。例えば、ソフトウェアアプリケーションのためのソフトウェアアップデート（例えばソフトウェアパッチ）を仮想化して、仮想サブレイヤ２７０を形成することができる。ソフトウェアのコンポーネントを仮想化することは、上述の仮想化オペレーションのいずれかを使用することで実施する。仮想サブレイヤ２７０は、例えば、この仮想サブレイヤ２７０を表すデータを仮想レイヤ２５０に関連する１個以上のメモリ域に保存することにより、または仮想サブレイヤ２７０を仮想レイヤ２５０に関連付けすることにより、仮想インストールする。
【００３９】
仮想サブレイヤの挿入は、仮想化エンジン２４０および／またはマッピングデータ２６０を、仮想サブレイヤ２７０に対する責任を負い、また仮想サブレイヤ２７０の動的挿入および選択的適用を可能にするよう構成するステップを含むことができる。とくに、仮想化エンジン２４０は、プロセスごとに仮想サブレイヤ２７０を選択的に適用するよう構成する。したがって、仮想サブレイヤ２７０の挿入は、仮想サブレイヤ２７０の挿入中に仮想レイヤを非アクティブ化したり、または仮想レイヤ２５０から実行するプロセスを終了したりすることなく、動的に行うことができる。特定の実施形態において、仮想化エンジン２４０は、仮想レイヤ２５０から実行するプロセスの属性に基づいて、仮想サブレイヤ２５０を選択的に適用するよう構成することができる。例えば、仮想化エンジン２４０は、仮想サブレイヤ２７０の挿入後に開始したプロセスに対して仮想サブレイヤ２７０を選択的に適用し、また仮想サブレイヤ２７０の挿入前に開始したプロセスに対して仮想サブレイヤ２７０を適用しないように、構成することができる。仮想サブレイヤ２７０をプロセスに適用するとき、プロセスは、挿入した仮想サブレイヤ２７０を含む挿入後仮想レイヤ２５０を使用する。すなわち、仮想化エンジン２４０は、一般的に、プロセスに関連するアクセス要求を、挿入した仮想サブレイヤを有する挿入後仮想レイヤに指向させる。仮想サブレイヤ２７０をプロセスに適用しないとき、プロセスは、挿入した仮想サブレイヤ２７０なしに、挿入前仮想レイヤ２５０を使用する。すなわち、仮想化エンジン２４０、は一般的に、プロセスに関連するアクセス要求を、仮想サブレイヤ２７０の挿入前にプロセスが存在していたかのように仮想レイヤ２５０に指向させる。
【００４０】
仮想サブレイヤ２７０の選択的な適用は、任意の適切な方法で達成できる。例えば、仮想サブレイヤ２７０の挿入は、仮想サブレイヤ２７０に関連する情報を有するマッピングデータ２６０をアップデートするステップを有することができる。特定の実施形態において、マッピングデータ２６０は、アクセス要求に関連する１個以上のプロセス属性に基づいてアクセス要求を条件に応じてルート付けする命令を含むようにアップデートすることができる。例えば、マッピングデータ２６０は、条件に応じたルート付け命令を送信するようにアップデートすることができ、このルート付け命令は、挿入した仮想サブレイヤ２７０に関連するメモリ域、またはアクセス要求に関連する１個以上のプロセス属性に基づいて挿入前仮想レイヤ２５０に関連する別のメモリ域に、選択的にアクセス要求を指向させるよう構成することができる。
【００４１】
もう一つの実施例によれば、仮想サブレイヤ２７０の挿入は、マッピングデータ２６０の他のセットを仮想化エンジン２４０に供給するステップを有することができる。図２Ｅは、図２Ｄのコンピュータ機器環境において、マッピングデータ２８０を仮想化エンジン２４０に適用した状況を示す。図示のように、仮想化エンジン２４０は、マッピングデータ２６０およびマッピングデータ２８０を含むことができる。この構成において、マッピングデータ２６０は、挿入前仮想レイヤ２５０にアクセス要求を指向させるよう構成することができ、またマッピングデータ２８０は、挿入した仮想サブレイヤ２７０を有する挿入後仮想レイヤ２５０にアクセス要求を指向させるよう構成することができる。仮想化エンジン２４０は、アクセス要求に関連する１個以上のプロセス属性に基づいて、選択的にマッピングデータ２６０またはマッピングデータ２８０を利用してアクセス要求をルート付けするよう構成することができる。
【００４２】
上述の実施例は例示的なものに過ぎない。選択的に挿入した仮想サブレイヤ２７０を適用する任意の方法を、他の実施形態において実装することができる。
【００４３】
特定の実施形態において、仮想化エンジン２４０は、プロセスの開始時間属性を使用して、選択的に仮想サブレイヤ２７０を適用する、または適用しないように構成することができる。いくつかの実施例において、仮想サブレイヤ２７０の挿入は、仮想化エンジン２４０が仮想サブレイヤ２７０の挿入前に仮想レイヤ２５０から実行したプロセスのリスト（すなわち「挿入前リスト」）を識別して作成するステップを含むことができる。このリストは、挿入前に開始して、挿入時にも仮想レイヤ２５０から実行を継続しているプロセスを含むことができる。仮想化エンジン２４０は、仮想サブレイヤ２７０の挿入前にプロセスが開始したか否かを決定するのにこのリストを利用して、仮想サブレイヤ２７０をプロセスに対して選択的に適用しないようにすることができる。例えば、仮想化エンジン２４０は、プロセスからのアクセス要求を受信し、またプロセスのリストに問い合わせることができる。このプロセスがリストに含まれている場合、仮想化エンジン２４０は仮想サブレイヤ２７０をプロセスに適用しない。仮想化エンジン２４０は、終了したプロセスをリストから除去することなどにより、リストをアップデートするように構成することができる。
【００４４】
他の実施例において、仮想化エンジン２４０は、プロセス開始時間を識別し、またこの開始時間を仮想サブレイヤ２７０の挿入時間と比較するよう構成することができる。特定の実施例において、この比較を実施し、仮想化エンジンがソフトウェアアプリケーションにより実行するプロセスからのアクセス要求を受信するときを動的に決定することができる。他の実施例において、あらかじめ作成した１個以上のリストにより比較を行うことができる。このリストは、挿入前に開始したプロセスのリスト、例えば上述の前挿入リストを含むことができ、仮想化エンジン２４０がソフトウェアアプリケーションにより実行するプロセスからのアクセス要求を受信するときにそのリストに問い合わせることができ、問い合わせの結果を使用して仮想サブレイヤ２７０をアクセス要求に適用するか否かを決定する。
【００４５】
仮想サブレイヤ２７０をプロセスごとに選択的に適用することをさらに示すために、図３に、仮想レイヤ２５０に対して仮想サブレイヤ２７０を動的に挿入することに関連するイベントの例示的なタイムラインを示す。図３に示すように、仮想レイヤ２５０を仮想インストールし、またアクティブ化することができる。このことは、上述の方法のいずれかにより達成できる。仮想レイヤ２５０がアクティブ状態である間に、プロセス３１０‐１および３１０‐２を、仮想レイヤ２５０から開始および実行することができる。つぎに、仮想レイヤサブ２７０を上述の方法のいずれかを用いて仮想レイヤ２５０内に動的に挿入することができ、しかもプロセス３１０‐１および３１０‐２を終了することなく、また仮想レイヤ２５０を非アクティブ化することなく、動的挿入できる。仮想レイヤ２５０に仮想サブレイヤ２７０を動的に挿入した後に、プロセス３１０‐３を仮想レイヤ２５０から開始および実行することができる。
【００４６】
図４Ａ〜Ｃは、仮想レイヤ２５０に関連する一連のイベントの例示的なシーケンスを示す。図４Ａは、仮想サブレイヤ２７０の挿入前にアクティブ仮想レイヤ２５０から実行するプロセス３１０‐２および３１０‐２を示す。図４Ｂは、アクティブ仮想レイヤ２５０内に挿入した仮想サブレイヤ２７０を示す。図４Ｃは、仮想サブレイヤ２７０の挿入後に仮想レイヤ２５０から開始および実行しているプロセス３１０‐３を示す。
【００４７】
図３に示したイベントが発生する状態で、仮想化エンジン２４０は、挿入した仮想サブレイヤ２７０をプロセス３１０‐１，３１０‐２および３１０‐３に選択的に適用するまたは適用しないように構成することができる。例えば、仮想化エンジン２４０は、仮想サブレイヤ２７０の挿入後に開始したプロセス３１０‐３に選択的に仮想サブレイヤ２７０を適用し、また仮想サブレイヤ２７０の挿入前に開始したプロセス３１０‐１および３１０‐２に仮想サブレイヤ２７０を選択的に適用しないように構成することができる。したがって、存続するプロセス３１０‐１および３１０‐２は、仮想サブレイヤ２７０の挿入中および挿入後に、仮想サブレイヤ２７０をプロセス３１０‐１および３１０‐２に適用することなく、挿入前仮想レイヤ２５０から実行し続けることができる。同時に、挿入後に開始したプロセス３１０‐３などの新プロセスを、挿入した仮想サブレイヤを有する挿入後仮想レイヤ２５０から実行することができる。
【００４８】
仮想サブレイヤ２７０をプロセスに選択的に適用または適用しないようにすることは、それぞれ仮想サブレイヤ２７０をプロセスに対して選択的に可視にするまたは不可視にするとも言うことができる。図５Ａ〜Ｃは、仮想サブレイヤ２７０の可視性および不可視性の選択を示す。図５Ａは、プロセス３１０‐１に対して仮想サブレイヤ２７０を選択的に不可視とした場合を示す。プロセス３１０‐１により発生したアクセス要求５１０を、仮想レイヤ２５０に指向させ、もし要求コンテンツが仮想レイヤ２５０内にない場合、基本ファイルシステムおよび環境設定２３０に指向させる。図示のように、アクセス要求５１０を挿入前仮想レイヤ２５０に指向させるが、挿入した仮想サブレイヤ２７０は見えない。同様に、図５Ｂは、プロセス３１０‐２に対して仮想サブレイヤ２７０を選択的に不可視化した場合を示す。このようにして、また類似の方法で、仮想サブレイヤ２７０をプロセス３１０‐１および３１０‐２に対して選択的に不可視にすることができる。
【００４９】
図５Ｃは、プロセス３１０‐３に対して仮想サブレイヤ２７０を選択的に可視にした場合を示す。プロセス３１０‐３から発生したアクセス要求５１０を、仮想レイヤ２５０および仮想サブレイヤ２７０に指向させ、要求コンテンツが仮想レイヤ２５０および仮想サブレイヤ２７０内にない場合、基本ファイルシステムおよび環境設定２３０に指向させる。図示のように、アクセス要求５１０を挿入後仮想レイヤ２５０に指向させ、仮想サブレイヤは見える。このようにして、また類似の方法で、仮想サブレイヤ２７０を選択的にプロセス３１０‐３に対して可視にすることができる。
【００５０】
仮想化したアクティブなソフトウェアアプリケーションのコンポーネントは、ソフトウェアアプリケーションを終了したり、またソフトウェアアプリケーションから実行するプロセスを終了したりすることなく、ソフトウェアアプリケーションから動的に除去することができる。このことは、仮想ソフトウェアアプリケーションに関連する仮想レイヤ２５０から、仮想サブレイヤ２７０などの仮想サブレイヤを動的に除去することにより達成できる。上述した図３に示す実施例において、例えば挿入した仮想サブレイヤ２７０を仮想レイヤ２５０から動的除去することができる。図６は、仮想レイヤ２５０に対する仮想サブレイヤ２７０の動的な挿入および／または除去に関連するイベントのタイムラインを例示的に示す。図示のように、図６のタイムラインは、図３のイベントに関連する挿入を含んでいる。とくに、仮想サブレイヤ２７０を仮想レイヤ２５０内に動的に挿入して、プロセス３１０‐１，３１０‐２および３１０‐３を上述のように仮想レイヤ２５０から実行する。
【００５１】
この点において、仮想サブレイヤ２７０を仮想レイヤ２５０から除去することが望ましい場合がある。この除去は、仮想サブレイヤを非アクティブ化することなく動的に達成できる。図６は、仮想サブレイヤの動的除去に関連するイベントを示す。図示のように、仮想サブレイヤ２７０に除去のためのマーク付けをすることができる。仮想化エンジン２４０は、任意の適当な方法で除去するため、仮想サブレイヤ２７０にマーク付けするよう構成することができ、このマーク付けとしては、仮想サブレイヤ２７０に関連する除去変数の値を設定するステップがある。
【００５２】
除去するために仮想サブレイヤ２７０にマーク付けすると、仮想化エンジン２４０は、１個以上のプロセス属性に基づく１個以上のプロセスに対して仮想サブレイヤを選択的に可視または不可視にするよう構成することができる。除去用にマーク付けした後に仮想サブレイヤ２７０を選択的に可視または不可視にすることは、任意の適切な方法で達成できる。特定の実施形態において、仮想化エンジン２４０は、仮想サブレイヤ２７０に除去用にマーク付けした後に、仮想サブレイヤを選択的に適用するまたは適用しないようにするため、プロセス開始時間属性を使用するよう構成することができる。いくつかの実施例において、除去用にマーク付けするのは、仮想化エンジン２４０が、仮想サブレイヤ２７０の挿入前に仮想レイヤ２５０から実行するプロセスのリストを識別して作成し、仮想サブレイヤに除去用のマーク付けをする前に、リストのプロセスに対して仮想サブレイヤ２７０を可視にする（すなわち「除去前リスト」）。仮想化エンジン２４０はこのリストを使用して、除去用に仮想サブレイヤ２７０にマーク付けする前に仮想サブレイヤ２７０をプロセスに対して可視にし、また選択的に仮想サブレイヤ２７０をプロセスに対して適用し続けることを決定する。例えば、仮想化エンジン２４０は、プロセスからのアクセス要求を受信し、またプロセスの除去前リストに問い合わせすることができる。プロセスがリストに含まれていたなら、仮想化エンジン２４０は、仮想サブレイヤ２７０をプロセスに適用し続ける。
【００５３】
図６に示した実施例において、仮想サブレイヤ２７０に除去用のマーク付けをする前に、仮想サブレイヤ２７０をプロセス３１０‐３に対して可視にする。したがって、仮想サブレイヤ２７０に除去用のマーク付けをしたとき、除去前リストはプロセス３１０‐３を含んでいる。対照的に、仮想サブレイヤ２７０に除去用のマーク付けをする前に、仮想サブレイヤ２７０をプロセス３１０‐１および３１０‐２に対して不可視にする。したがって、仮想サブレイヤ２７０に除去用のマーク付けしたとき、プロセス３１０‐１および３１０‐２は除去前リストから省かれる。このリストに基づいて、仮想化エンジン２４０は、仮想サブレイヤ２７０に除去用のマーク付けした後も、仮想サブレイヤ２７０をプロセス３１０‐３に対して可視にし続ける。
【００５４】
仮想サブレイヤ２７０に除去用のマーク付けした後に、図６に示すように新しいプロセス３１０‐４を仮想レイヤ２５０から開始して実行することができる。仮想化エンジン２４０は、仮想サブレイヤ２７０に除去用のマーク付けした後に開始するプロセス３１０‐４に基づいて、選択的に仮想サブレイヤ２７０をプロセス３１０‐４に対して不可視にすることができる。例えば、仮想化エンジン２４０は、除去前リストに問い合わせをし、プロセス３１０‐４がリストに含まれていないことを決定することができる。したがって、仮想化エンジン２４０は、仮想サブレイヤ２７０をプロセス３１０‐４に対して不可視にすることができる。
【００５５】
図７Ａ〜Ｂは、仮想サブレイヤ２７０に仮想レイヤ２５０から除去するためのマーク付けした後に、仮想サブレイヤを選択的に可視および不可視にする状況を示す。図７Ａは、既存のプロセス３１０‐３に対して仮想サブレイヤ２７０を選択的に可視にした状況を示す。３１０‐３により発生するアクセス要求を、仮想レイヤ２５０および仮想サブレイヤ２７０に指向させ、もし要求コンテンツが仮想レイヤ２５０および仮想サブレイヤ２７０にない場合、基本ファイルシステムおよび環境設定２３０に指向させることができる。図示のように、アクセス要求５１０を仮想レイヤ２５０に指向させ、仮想サブレイヤ２７０が見える。このようにして、また類似の方法で、仮想サブレイヤ２７０に除去用のマーク付けした後も、仮想サブレイヤ２７０はプロセス３１０‐３に対して可視にし続けることができる。
【００５６】
図７Ｂは、仮想サブレイヤ２７０に除去用のマーク付けした後に開始したプロセス３１０‐４に対して仮想サブレイヤ２７０を選択的に不可視にした状況を示す。プロセス３１０‐４により発生するアクセス要求５１０を仮想レイヤ２５０に指向させ、要求コンテンツがマーク付けした後の仮想レイヤ２５０内で見つからない場合、基本ファイルシステムおよび環境設定２３０に指向させることができる。図示のように、アクセス要求５１０を仮想レイヤ２５０に指向させるが、仮想サブレイヤ２７０は見えない。このようにして、また類似の方法で、仮想サブレイヤ２７０をプロセス３１０−４に対して不可視にすることができる。
【００５７】
仮想化エンジン２４０は、例えば、終了したプロセスをリストから除去することにより、除去前リストをアップデートするよう構成することができる。図６に戻ると、仮想サブレイヤ２７０に除去用のマーク付けした後に、プロセス３１０‐３は終了することがある。仮想化エンジン２４０は、プロセス３１０‐３の終了を検出して、除去前リストからプロセスを除去することができる。
【００５８】
仮想化エンジン２４０は、仮想サブレイヤ２７０にとって可視である全てのプロセスが終了したときを検出するよう構成することができる。図６の実施例において、プロセス３１０‐３は、仮想サブレイヤ２７０に除去用のマーク付けした後に、仮想サブレイヤ２７０が可視である、唯一のプロセスである。したがって、プロセス３１０‐３が終了したとき、仮想レイヤから実行する残りのプロセス３１０‐１、３１０‐２および３１０‐４のどれも仮想サブレイヤ２７０が見えない。仮想化エンジン２４０は、このことがあり得ると理解することができる。例えば、仮想化エンジン２４０は、除去前リストからプロセス３１０‐３を除去し、また除去前リストが空であることを確認することができる。
【００５９】
仮想レイヤ２５０から実行するいずれのプロセスに対しても仮想サブレイヤ２７０がもはや可視でないことを仮想化エンジン２４０が検出したとき、仮想化エンジン２４０は、図６に示すように、仮想レイヤ２５０から仮想サブレイヤ２７０を動的に除去（例えば削除）することができる。除去中に仮想レイヤ２５０を非アクティブ化することなく、除去を動的に実施できる。したがって、仮想レイヤ２５０から実行するプロセスを、仮想レイヤ２５０から仮想サブレイヤ２７０を除去する間も実行し続けることができる。
【００６０】
仮想サブレイヤ２７０にマーク付けして仮想レイヤ２５０から動的に除去することは、任意の適切な方法により達成できる。特定の実施形態において、仮想化エンジン２４０は、仮想サブレイヤ２７０に除去用のマーク付けするおよび／または仮想レイヤ２５０から除去したことを反映するために、マッピングデータ２６０および／またはマッピングデータ２８０をアップデートするよう構成することができる。
【００６１】
上述のいずれかの実施例において、仮想化エンジン２４０は、ユーザーに提示するためのポップアップウィンドウなどの、１個以上のグラフィカルユーザーインタフェース（「ＧＵＩ」）を提供するように構成することができる。このようなＧＵＩはユーザーにソフトウェアの仮想化オペレーションを制御するためのツールを提供する。一例として、ＧＵＩは、１個以上の仮想サブレイヤ２７０を要求し、受信（例えばダウンロード）、仮想インストール、有効化、無効化および／または除去するための許可をユーザーに求めるためのダイアログを提示することができる。特定の実施形態において、ソフトウェアマネジメントサブシステム１１０は、同様のＧＵＩおよびツールをソフトウェアマネジメントサブシステム１１０のユーザー（例えばコンピュータシステム１００の管理者）に提供するよう構成する。
【００６２】
図８は、仮想サブレイヤを動的に挿入する例示としての方法を示す。図８は、一つの実施形態によるステップを例示的に示すが、他の実施形態では、図８に示したステップのいずれかを除去、追加、順序の入れ替えおよび／または変更を行うことができる。
【００６３】
ステップ８１０において、仮想レイヤを仮想インストールする。ステップ８１０を上述したいずれかの方法により実施することができ、このステップ８１０は、ソフトウェアマネジメントサブシステム１１０および／または仮想化エンジン２４０がコンピュータ機器１２０に仮想レイヤ２５０を仮想インストールするステップを含む。
【００６４】
ステップ８２０において、仮想レイヤをアクティブ化する。このステップ８２０を上述したいずれかの方法により実施することができ、マッピングデータ２６０を仮想化エンジン２４０に付与して、仮想レイヤ２５０をアクティブ化する。
【００６５】
ステップ８３０において、仮想サブレイヤを仮想レイヤ内に動的に挿入する。ステップ８３０は上述したいずれかの方法により実施することができ、ソフトウェアマネジメントサブシステム１１０が仮想サブレイヤ２７０を表すデータをコンピュータ機器１１０にネットワーク１３０を介して通信するステップと、仮想エンジン２４０が仮想レイヤ２５０を非アクティブ化することなくアクティブ仮想レイヤ２５０内に仮想サブレイヤ２７０を動的に挿入するステップとを含む。
【００６６】
ステップ８４０において、仮想レイヤからプロセスを実行する。ステップ８４０は上述したいずれかの方法により実施することができ、コンピュータ機器１２０が仮想レイヤ２５０からのプロセスを実行するステップを含む。
【００６７】
ステップ８５０において、プロセスが開始したのが仮想レイヤ内に仮想サブレイヤを動的に挿入する前か後かを決定する。ステップ８５０は、上述したいずれかの方法により実施することができる。
【００６８】
ステップ８６０において、ステップ８５０で行った決定に基づき、挿入した仮想サブレイヤをプロセスに対して選択的に可視または不可視にする。ステップ８６０は、上述したいずれかの方法により実施することができ、仮想化エンジン２４０がプロセスに関連するアクセス要求を挿入前仮想レイヤ２５０または内部に挿入した仮想サブレイヤを有する挿入後仮想レイヤ２５０に選択的に送るステップを含む。特定の例において、ステップ８６０は、プロセスがステップ８３０による挿入前に開始したと確認したときに、仮想サブレイヤをプロセスに対して不可視にするステップを含むことができる。他の例において、ステップ８６０は、プロセスがステップ８３０による挿入後に開始したと確認したときに、仮想サブレイヤをプロセスに対して可視にするステップを含むことができる。
【００６９】
図９は、仮想サブレイヤを動的に除去する方法の例を示す。図９は、一つの実施形態によるステップの例を示すが、他の実施形態として、図９に示したステップのいずれかに対して除去、追加、順序の入れ替えおよび／または変更を行うことができる。
【００７０】
ステップ９１０において、仮想インストールしまたアクティブ化した仮想レイヤから除去するためのマークを仮想サブレイヤに付ける。ステップ９１０は、上述したいずれかの方法で実施することができ、仮想レイヤ２５０から除去するためのマークを仮想サブレイヤ２７０に付けるステップと、仮想サブレイヤ２７０に除去用のマーク付けをする前に仮想サブレイヤ２７０が可視である任意の実行中プロセスの除去前リストを作成するステップとを含む。
【００７１】
ステップ９２０において、仮想レイヤからプロセスを実行する。ステップ９２０は上述したいずれかの方法で実施することができ、コンピュータ機器１２０が仮想レイヤ２５０からプロセスを実行するステップを含む。
【００７２】
ステップ９３０において、ステップ９１０により仮想サブレイヤに除去用のマークを付ける前に、仮想サブレイヤがプロセスに対して可視であったかどうかを決定する。ステップ９３０は、上述したいずれかの方法により実施することができ、プロセスについて除去前リストに問い合わせをするステップを含む。
【００７３】
ステップ９４０において、マーク付けした仮想サブレイヤをプロセスに対して、ステップ９３０における決定に基づいて、選択的に可視または不可視にする。ステップ９４０は、上述したいずれかの方法で実施することができ、仮想エンジン２４０がプロセスに関連するアクセス要求を、内部に可視の仮想サブレイヤを有する仮想レイヤ２５０に、または内部に不可視の仮想サブレイヤ２７０を有する仮想レイヤ２５０に、選択的に送るステップを有する。特定の実施例において、ステップ９４０は、ステップ９１０において仮想サブレイヤに除去用のマーク付けをする前に、仮想サブレイヤはプロセスに対して可視であったと確認できたときに、プロセスに対して仮想サブレイヤを可視にするステップを含むことができる。他の例において、ステップ９４０は、ステップ９１０において仮想サブレイヤに除去用のマーク付けした後にプロセスが開始したと確定したときに、プロセスに対して仮想サブレイヤを不可視にするステップを含むことができる。
【００７４】
ステップ９５０において、仮想サブレイヤが仮想レイヤから実行するいずれのプロセスも可視でないことを決定する。ステップ９５０は、上述したいずれかの方法により実施することができ、仮想化エンジン２４０がプロセスの終了を認識するステップと、除去前リストからプロセスを除去するステップと、除去前リストが空であることを認識するステップとを含む。
【００７５】
ステップ９６０において、仮想サブレイヤを動的に除去する。ステップ９６０を上述したいずれかの方法により実施することができ、仮想レイヤ２５０を非アクティブ化することなく、仮想レイヤ２５０から仮想サブレイヤ２７０を除去するステップを含む（すなわち仮想レイヤが除去中、アクティブ状態を維持する）。
【００７６】
上述の説明は、添付図面につき例示的な実施形態を説明したに過ぎない。しかし、特許請求の範囲に記載する本発明の範囲から逸脱することなく、様々な変更および改変を加えることができ、他の実施形態を実施できることは明らかである。上述の説明および図面は、発明を限定するものではなく、例示として認識すべきである。
【図１】
0005363858.tif 000002
【図２Ａ】
0005363858.tif 000003
【図２Ｂ】
0005363858.tif 000004
【図２Ｃ】
0005363858.tif 000005
【図２Ｄ】
0005363858.tif 000006
【図２Ｅ】
0005363858.tif 000007
【図３】
0005363858.tif 000008
【図４Ａ】
0005363858.tif 000009
【図４Ｂ】
0005363858.tif 000010
【図４Ｃ】
0005363858.tif 000011
【図５Ａ】
0005363858.tif 000012
【図５Ｂ】
0005363858.tif 000013
【図５Ｃ】
0005363858.tif 000014
【図６】
0005363858.tif 000015
【図７Ａ】
0005363858.tif 000016
【図７Ｂ】
0005363858.tif 000017
【図８】
0005363858.tif 000018
【図９】
0005363858.tif 000019