(57)【要約】  本発明は一般にコンピュータのセキュリティに関し、より詳細には、オペレーティングシステムと、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの資源を共有することを可能とする責任を負う下層のハードウェアと、の間にハイパーバイザ層を挿入することにより達成される、オペレーティングシステムの仮想化に関する。【選択図】なし【特許請求の範囲】
【請求項１】
下層のハードウェアと所定の資源を有する、コンピュータまたは情報機器を操作する方法であって、
前記コンピュータまたは情報機器にオペレーティングシステムを与える段階と、
前記オペレーティングシステムと前記下層のハードウェアとの間にハイパーバイザ層を挿入する段階と、
前記ハイパーバイザに、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの前記資源を共有することを制御するかまたは許容する責任を割り当てる段階と、を含む方法。
【請求項２】
下層のハードウェアと所定の資源を有し、
前記コンピュータまたは情報機器のためのオペレーティングシステムと、
前記オペレーティングシステムと前記下層のハードウェアとの間に挿入されたハイパーバイザ層と、
前記ハイパーバイザに、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの前記資源を共有することを制御するかまたは許容する責任を割り当てるコントローラと、を含む、コンピュータまたは情報機器。
【請求項３】
有体媒体上に記憶された、コンピュータまたは情報機器上での動作のための、そして該コンピュータまたは情報機器を動作させるための命令を含むコンピュータプログラムであって、該命令が、
前記コンピュータまたは情報機器にオペレーティングシステムを与えるための命令と、
前記オペレーティングシステムと下層のハードウェアとの間にハイパーバイザ層を挿入するための命令と、
前記ハイパーバイザに、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの資源を共有することを制御するかまたは許容する責任を割り当てるための命令と、を含む、コンピュータプログラム。
【請求項４】
コンピュータプログラムコードの隔離されたインストールを遂行するための方法であって、
コピー・オン・ライトベースの仮想ブロックデバイスを作成する段階と、
前記コンピュータプログラムコードのオリジナルバージョンを記憶する信頼されたマスタテンプレートにアクセスする段階と、
前記コンピュータプログラムコードをインストールするために要求されるかまたは所望される、前記オリジナルバージョンへの任意の変更を識別する段階と、
識別された前記変更を前記仮想ブロックデバイスに記憶する段階と、を含む、方法。
【請求項５】
前記インストールされるべきコンピュータプログラムコードはオペレーティングシステムのコンピュータプログラムコードを含む、請求項４に記載の方法。
【請求項６】
前記インストールされるべきコンピュータプログラムコードはアプリケーションプログラムのコンピュータプログラムコードを含む、請求項４に記載の方法。
【請求項７】
前記インストールされるべきコンピュータプログラムコードはオペレーティングシステムのコンピュータプログラムコードと少なくとも１つのアプリケーションプログラムコードとを含む、請求項４に記載の方法。
【請求項８】
前記仮想ブロックデバイスに記憶される前記変更は、実行するために必要とされるコンピュータプログラムコード全体に満たない、請求項４に記載の方法。
【請求項９】
前記仮想ブロックデバイスは仮想マシン環境において作成され、物理的記憶デバイスの論理的部分を参照する、請求項４に記載の方法。
【請求項１０】
前記物理的記憶デバイスが、回転式物理ハードディスクドライブと、複数の回転式ハードディスクドライブと、固体状態のメモリデバイスと、光学メモリデバイスと、そしてこれらの組み合わせと、から成る物理的記憶デバイスの組から選択された物理的記憶デバイスを含む、請求項９に記載の方法。
【請求項１１】
前記仮想ブロックデバイスが、第２の記憶域にコピー可能であって、前記コンピュータプログラムコードのインストールを定義するために要求される全ての変更内容、または変更内容へのポインタを含むことが可能である、請求項４に記載の方法。
【請求項１２】
前記コンピュータプログラムコードの隔離されたインストールが実質的に、コンピュータファイルシステム全体に渡っての、コンピュータプログラムコードの誘導や分配を排除する、請求項４に記載の方法。
【請求項１３】
ファイルオープンコマンドに対しての仮想マシンのフォーキング（ｆｏｒｋｉｎｇ）のための方法であって、
如何なる最初のコピー、またはオペレーティングシステムのメモリ割り当てをも行うことなく新たな仮想マシンのインスタンスが作成され、参照イメージからの全てのコードとデータページが、該新たな仮想マシンの中へマッピングされることを特徴とする方法。
【請求項１４】
前記フォーキングは書き込み保護されており、後から行われるページへの修正は、コピー・オン・ライトの手続きを用いてプライベートコピーを作成することができる、請求項１３に記載の方法。
【請求項１５】
前記フォーキングはファイルを開いている間に仮想マシンの中で遂行される、請求項１３に記載の方法。
【請求項１６】
オペレーティングシステムをアップグレードするための方法であって、
ユーザがアプリケーション（Ａｐｐ）をインストールしようとする時に、オリジナルの信頼されたオペレーティングシステムコード（ＯＳ）から、ＯＳ＋Ａｐｐのコピーを生成する段階と、
任意の所望されるＯＳアップデートのインストールによって前記オリジナルのＯＳをアップデートし、ＯＳ＋ＵＤを生成する段階と、
前記アップデートされたＯＳ＋ＵＤと共に前記ＯＳ＋Ａｐｐをマージし、マージされたＯＳ＋ＵＤ＋Ａｐｐを生成する段階と、
一時的に動作する、前記オペレーティングシステム、オペレーティングシステムのアップデート、そして単数または複数のアプリケーションプログラムの（ＯＳ＋ＵＤ＋Ａｐｐ）コピーないしはバージョンを生成する段階と、を含む方法。
【請求項１７】
前記一時的に動作する、オペレーティングシステム、オペレーティングシステムのアップデート、そして単数または複数のアプリケーションプログラムの（ＯＳ＋ＵＤ＋Ａｐｐ）コピーないしはバージョンを実行するか動作させることを更に含む、請求項１６に記載の方法。
【請求項１８】
前記ＯＳアップデート（ＵＤ）はサービスパックのアップデート（ＳＰ）を含む、請求項１６に記載の方法。
【請求項１９】
アプリケーションプログラムコードをアップグレードするための方法であって、
アプリケーション（Ａｐｐ）をオペレーティングシステム（ＯＳ）にインストールし、組み合わされたＯＳ＋Ａｐｐを生成する段階と、
コピー・オン・ライトの手続きを用いてアプリケーションへのアップグレードをインストールし、Ａｐｐ  ＣＯＷ  アップグレードを生成する段階と、
前記ＡＰＰ  ＣＯＷアップグレードと共に前記ＯＳ＋Ａｐｐをマージし、マージされたＯＳ＋ＡＰＰ  ＣＯＷアップグレードを生成する段階と、
前記ＯＳ＋Ａｐｐ  ＣＯＷアップグレードの動作バージョンないしはコピーを生成する段階と、を含む方法。
【請求項２０】
前記ＯＳ＋Ａｐｐ  ＣＯＷアップグレードの動作バージョンないしはコピーを実行するか動作させることを更に含む、請求項１７に記載の方法。
【請求項２１】
コンピュータプログラムソフトウェアコードが、オペレーティングシステムコンピュータプログラムソフトウェアコードか、またはアプリケーションプログラムソフトウェアコードか、またはオペレーティングシステムとアプリケーションプログラムコードとの組み合わせを含む、請求項１６に記載の方法。
【請求項２２】
ファイルアクセスにおいて安全性を強制するために参照モニタの検証を用いる方法であって、
ファイルアクセスのためのプログラムコールまたはリクエストを検出する段階と、
前記検出されたファイルアクセスのリクエストを仮想マシンのためのローカルプロキシへと迂回させる段階と、
前記ファイルアクセスのリクエストを管理コントロールに転送する段階と、
ファイルアクセスダイアログが実行されることになる、ダイアログが実行されることになる、新たな仮想マシンを作成する段階と、
選択されたファイル名を発信アプリケーションに戻し、前記管理コントロールの参照モニタに渡す段階と、
信頼された初期状態の仮想マシンからのファイルアクセスダイアログボックスを初期化する段階と、
ファイルコンテキスト情報を前記管理コントロールに送る段階と、
前記ファイル名とファイルコンテキストを前記参照モニタと前記ローカルプロキシとに送り、プログラムアプリケーションに戻す段階と、
管理コントロール環境において動作するファイルサーバからの前記選択されたファイルをリクエストする段階と、
前記リクエストされたファイルを扱うための前記参照モニタからの許可を、前記ファイルサーバによってリクエストする段階と、
前記参照モニタによって、前記リクエストを承諾するか拒む段階と、を含む方法。
【請求項２３】
前記ファイルアクセスは、ファイルオープン、ファイル保存、ファイル読み込み、ファイル書き込み、これらの任意の組み合わせ、から成るファイルアクセスの組から選択される、請求項２２に記載の方法。
【請求項２４】
前記リクエストの承諾または拒否に依存して、前記リクエストに応じて前記ファイルが扱われるかまたは扱われない、請求項２２に記載の方法。
【請求項２５】
多数のプロセッサのスケールにはならない、拡張デスクトップオペレーティングシステムのための方法であって、個々のアプリケーションが、スケーラビリティの要求を低減させるためにプロセッサまたはプロセッサコアの適当な小集団のみを用いる分離した仮想マシン内で実行されることを特徴とする、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［発明の分野］
本発明は一般にコンピュータのセキュリティに関し、より詳細には、オペレーティングシステムと、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとによる単一のマシン資源の共有を可能とする責任を負う下層のハードウェアと、の間にハイパーバイザ層を挿入することにより達成される、オペレーティングシステムの仮想化に関する。
【０００２】
［背景］
現在、全てとは言えないまでも殆どのコンピュータ及びコンピュータシステムにおけるセキュリティ制御は、それらのオペレーティングシステムの安全な環境を当てにしたものである。その具備するセキュリティ要件が異なるかまたは衝突する、アプリケーションプログラムや一揃いのプログラムは、別個のハードウェアにインストールして実行しなければならないか、またはオペレーティングシステムによってアプリケーションプログラムの組を隔離し、その組内部に異なるセキュリティ要件及び／またはアクセス要件を課し、実施しなければならない。
【０００３】
このように、セキュリティの守護者としてのオペレーティングシステムに依存することによって、現代のコンピュータ及び情報システムにおける根本的なセキュリティ上の問題が提起される。現在利用可能なオペレーティングシステムは多くの重要な資源の共有を要求するモデルの下で動作するので、前記アプリケーションプログラムの隔離という課題を解決するものでも、しようとするものでもない。共有資源には、例えば、共有ライブラリ、ファイルシステム、ネットワーク、そしてディスプレイメモリとプロセッサ、などの要素が、意味のある分離をされないままで含まれる。さらには、製品によく見られる任意アクセス制御は、ユーザが動作させようと、または実行しようと意図しているものを、ユーザが無意識に実行している、または実行するかもしれないもの（例えばユーザのファイルに添付されたウイルスコード）から敏速に識別し、または分離することができないので、一般的な悪意のあるコード（ウイルス、スパイウェア、ハッカーコード、ポップアップ、トロイの木馬、または同様のもの）についての問題を解決できない。また残念なことに任意制御は、ユーザが認められたやりかたで行動していることを前提としているのだが、必ずしもそうとは限らない。脆弱なアプリケーションや不注意かまたは経験の浅いユーザは、悪意のあるコードがシステムまたはデータ構造に進入し、システムが危険にさらされることを許してしまうかもしれない。
【０００４】
これらの問題は、従来通りのやりかたで高レベルのセキュリティインフラストラクチャを追加することによって即座に解決できるものではない。システムセキュリティへの、最も重大な予測される脅威を考えると（例えば悪意のある開発者、配布の最中に放置されるトラップドア（ｔｒａｐ  ｄｏｏｒ）、ブートセクタウイルス、ルートキット、そしてコンパイラのトラップドアのようなものである）、それらの脅威は関連したセキュリティ制御を迂回できるので、オペレーティングシステムよりも上位の層（すなわち、例えばアプリケーション層やミドルウェア層である）に効果的なセキュリティを実装することは不可能である。様々なインテグリティチェッカー、アンチウイルススキャナ、そして同様のセキュリティアプリケーションは、リスクを軽減するために便利ではあるのだが、それらが検出することを意図している悪意のあるコードによってそれら自身が危険にさらされるかもしれないので、それらはセキュリティの保証を与えてはいないし、そして与えることもできない。加えて、特定のアンチウイルスやアンチスパイウェアに対しては、それらが検出することを意図しているコード、またはコードセグメント、またはコードシグネチャについての知識が事前に要求される。
【０００５】
従って、そのような悪意のあるコードからの脅威を軽減し、これらの欠点と問題を解決するセキュリティ保証の方策を与えるシステム、システムアーキテクチャ、方法、そしてコンピュータプログラムソフトウェアが依然必要とされている。
【発明の開示】
【０００６】
［概要］
本発明は一般にコンピュータのセキュリティに関し、より詳細には、オペレーティングシステムと、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの資源を共有することを可能とする責任を負う下層のハードウェアと、の間にハイパーバイザ層を挿入することにより達成される、オペレーティングシステムの仮想化に関する。
【０００７】
［詳細な説明］
従来のシステムと方法における上記の問題と制限は、独創的アプローチにより解決される。そこではオペレーティングシステム（ＯＳ）の仮想化によって、“ｖｉｒ２ｕｓ”セキュリティアーキテクチャの基礎を築くために必要な隔離が行われる。ＯＳ仮想化は、ＯＳとその下にあるハードウェアとの間に、ある層（ハイパーバイザとして知られている）を挿入することで達成される（Ｖｉｒ２ｕｓTMはＶｉｒ２ｕｓ社の登録商標であり、Ｖｉｒ２ｕｓ社は、カリフォルニア州サンフランシスコにある、本件特許出願の出願人である（かつてはＳｅｌｆ  Ｒｅｐａｉｒｉｎｇ  Ｃｏｍｐｕｔｅｒｓ，  Ｉｎｃ社として知られていた）。）。この層は、複数のＯＳインスタンス（そしてそれらの実行アプリケーション）によって単一マシンの資源を共有することを可能とする責任を負っている。今日の市場には、例えばＸｅｎ、ＶＭｗａｒｅ、そして他のものなど、ハイパーバイザの代わりとなるものは複数存在するのであるが、それらに限定はされない。それ故に各々のＯＳは、マシン全体の資源をその独占的制御の下で有していると信じるのであるが、実際には仮想化層が、異なるＯＳイメージとそれらのアプリケーション間で資源が適切に共有されていることを、気付かれることなく保証している。しかしながら、仮想マシンのみでは、依然としてユーザのデータは、悪意のあるコードによってもたらされる多くの脅威に対して脆弱なままで残されてしまう。例えば、もしユーザが仮想マシン内で電子メールをダウンロードし、感染した添付ファイルを開いた場合には、その添付ファイル内の悪意のあるコードは、その仮想マシンを用いてアクセスできる、仮想マシンからアクセスできる、他の電子メール文書を感染させる可能性がある。
【発明を実施するための最良の形態】
【０００８】
［アーキテクチャの模範的実施形態］
ｖｉｒ２ｕｓTMセキュリティアーキテクチャでは、違いはシステムが起動する瞬間から明らかである。デスクトップオペレーティングシステム（ＯＳ）は、もはや物理的ハードウェアを占有しない。ＢＩＯＳ初期化に続いて即座にハイパーバイザがロードされ、実行を許可される。ハイパーバイザは、リアルモードからプロテクトモードへの移行を処理し、それからＸｅｎ開発者の言うところのドメインゼロＯＳ（Ｄｏｍａｉｎ０  ＯＳ）（例えばＬｉｎｕｘ）をロードする。ドメインゼロＯＳは、物理デバイスへのアクセスと仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）作成のための制御プレーンとしての役目のみを果たす。初期化シーケンスが完了するとドメインゼロＯＳはすぐに、初期化前の（ｐｒｅ−ｉｎｉｔｉａｌｉｚｅｄ）ＶＭ（ＶＭにおいて独自仕様のｖｉｒ２ｕｓ管理サービスが動作する）と、分離し隔離された初期化前の、ユーザのデスクトップを与えるためのＷｉｎｄｏｗｓ（登録商標）  ＶＭ（Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＶＭが所望されている場合は）とを、メモリにロードする。
【０００９】
ユーザのデスクトップを提供するＷｉｎｄｏｗｓ 仮想マシン  （ＶＭ）インスタンスと、ユーザのアプリケーション（そこにおいて個々のユーザファイルが隔離して開かれる）を動作させる他の仮想マシンとは、動作するたびに初期状態であることが保証される。なぜならそれらはロードされるたびに、新しく割り当てられた、そしてそれ故に隔離された、コピー・オン・ライト（ｃｏｐｙ−ｏｎ−ｗｒｉｔｅ）ディスク（または他の記憶装置）を背景に、最初のＯＳインストールか、または結合された、ないしは統合されたＯＳ＋アプリケーションのインストールの支援を受けて、動作するからである。
【００１０】
コピー・オン・ライト（度々“ＣＯＷ”と省略される）は最適化戦略であり、それによってユーザは、変更を加える時にディスク上（または他の記憶装置や媒体上）、またはメモリ上へブロックを割り当てることのみによって、共有システム資源（例えば論理装置番号（ＬＵＮ：Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）やメモリ内オブジェクト）のプライベートコピーを保持することが可能となる。このことは、オペレーティングシステム（ＯＳ）、オペレーティングシステムの一部、隔離された、またはオペレーティングシステムないしはその一部と結合された、単数または複数のアプリケーションプログラム、のマスタコピーに、都合よく当てはまる。ある特定の非制限的実施形態において、その共有システム資源とは、公知の清浄な、そして初期状態のままの、あるオペレーティングシステム（ＯＳ）のコピーであってよい。ここにおいて清浄とは、そのＯＳのコピーが信頼でき、そしてウイルス、スパイウェア、ハッカーウェア、それ以外の悪意のあるコードがないと分かっていることを意味する。また、１以上のアプリケーションプログラム、または互換性のないアプリケーションプログラムの結合、と互換性がないカスタマイズが存在しないということを、さらに意味してもよい。コピー・オン・ライト戦略の使用と共有システム資源のプライベートコピーの使用によって、プライベートコピーが修正のみを含む時には、プライベートコピーについてのオーバーヘッドをユーザによる修正の範囲内へと都合よく制限することができるのである。他の実施形態においては、追加的オーバーヘッドと追加的記憶領域という代償の下で、完全なプライベートコピーを提供することができる。ある非制限的実施形態においては、一度プライベートコピーが作られると、基本インスタンスを安全に修正することができない。
【００１１】
図１を参照の下、ある非制限的実施形態においては、各々のアプリケーション（Ａｐｐ）に対して、または一揃いのアプリケーションを形成するように結合されたアプリケーションに対して、それら専用のＯＳインストールのプライベートコピーを提供するために、コピー・オン・ライトＣＯＷブロックデバイスが都合よく用いられる。アプリケーションが実行される時（例えばユーザがアプリケーションをクリックするか、またはスタートメニューからアプリケーションを選択した時）、アプリケーションインストールの、そのアプリケーション専用のプライベートコピーが順繰りに提供される。そのアプリケーションを終了する時には、使用されている資源は、どれもが解放されるであろう。図１におけるコピー・オン・ライト方法１０１の非制限的実施形態を参照すると、オペレーティングシステム（ＯＳ）１０２のオリジナルまたはマスタコピーは、オプション変更、カスタマイズ、または他の修正を含む複数の派生的オペレーティングシステムを生成するために使うことができる。示している例において、その修正とは、オペレーティングシステムのある１つのコピー１０６においてのアプリケーションプログラムＡ１０５のインストールと、オペレーティングシステムの第２のコピー１０８におけるアプリケーションプログラムＢ１０７のインストールである。これら２つの、オペレーティングシステムとアプリケーションプログラムの新しく結合されたブロック１１０、１１１の各々は、ＯＳ＋アプリケーションインストールの追加的一時的コピー１１２、１１３をもたらし、それらコピーはファイルストア１１５にアクセスできる。そのアプリケーションプログラムが終了する時には使用されるいかなる資源も都合よく解放され、そして一時的コピー１１２、１１３は削除される。
【００１２】
ここに説明されるシステムと方法は、隔離されたインストールとしての参照が可能なものを作成する。また、ソフトウェア（オペレーティングシステム、アプリケーションプログラム、または他のコンポーネント）への更新を、仮想ブロックデバイス（ＶＢＤ：ｖｉｒｔｕａｌ  ｂｌｏｃｋ  ｄｅｖｉｃｅ）（論理ボリュームとも言われている）を介して伝播するためのシステムと方法も提供される。
【００１３】
例えば、Ｓｅｒｖｉｃｅ  Ｐａｃｋ  １  がインストールされている、インストールされたＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ  Ｐｒｏｆｅｓｓｉｏｎａｌオペレーティングシステムの、信頼できるマスタテンプレートの存在が考えられる。更に、各々が自身専用のプライベート（仮想）ディスク（実際には共通の共有物理ディスクドライブの隔離されたある部分であってよい）を持つように、このオペレーティングシステムの上にインストールされた、幾つかの他のアプリケーションが考えられる。実行中またはそれ以外の間で何らかの追加、修正を行うときは、これらの追加または修正は、マスタテンプレートにおいては反映されない。それらアプリケーションは、自身専用のプライベートな修正のみを行う。
【００１４】
ここで説明される独創的なシステム、手続き、方法において、ある者が例えばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ  ＯＳ  ｓｅｒｖｉｃｅ  ｐａｃｋ  ２をインストールする場合（または他のいかなるものでもよい）、その者は信頼されたマスタテンプレートへ実際にｓｅｒｖｉｃｅ  ｐａｃｋ  ２をインストールするのではなく、代わりに追加、削除、変更、更新、及び／またはアップグレードを、オペレーティングシステムの信頼できるマスタバージョンから作成された個々のＶＢＤを用いて、ｓｅｒｖｉｃｅ  ｐａｃｋ  １のインストールされたこのインスタンス中で伝播させる。ここで説明されない他の方法が、オペレーティングシステムのマスタテンプレートまたはバージョンを更新し、アップグレードし、または別の形で修正するために、マスタテンプレートにおいてウイルス、スパイウェア、ハッカーウェア、そして他の悪意のあるコードが含まれていないという信頼できる性質とインテグリティとを維持する技法と保護を用いて提供されることが分かるであろう。
【００１５】
ここの詳細は他の場所でより詳しく説明されているのだが、物理ディスクドライブ、物理ディスクドライブの１部分、さらには複数の物理ディスクドライブ（または他の記憶装置）、に対応する物理デバイスや物理ブロックデバイスがあってよい。仮想マシンを共有する、仮想マシン間でのある程度の隔離が所望される場合、個々の仮想マシンに見えるのは仮想ブロックデバイス（ＶＢＤ）であって、物理デバイス全体には及ばない（物理デバイスの破片もしくは１部分のようなものである）。特定の仮想マシンに関連すると、その特定の仮想マシンは、自己に物理デバイス全体が見えていると信じているか、または印象を持っている。
【００１６】
図２と図３を参照の下で、このコピー・オン・ライトと隔離は例えば、（ｉ）オペレーティングシステムＯＳのアップグレード（図２を参照）、（ｉｉ）アプリケーション（図３参照）のアップグレード（例えば、これらに制限されるわけではないが、オペレーティングシステムのサービスパックやパッチ、もしくは他の修正、アップグレード、または機能強化などである）、及び／または（ｉｉｉ）いわゆるヘルパー・アプリケーション（例えば、これに制限するわけではないが、Ａｃｒｏｂａｔ  Ｒｅａｄｅｒである）、または他の、共有された特徴や能力の、アプリケーションインストール間での共有、のようなイベントをいかにして処理するかという問題を提起する。この潜在的問題への解決法は、ふたつの構成要素を含んでよい（その解決法は、いずれか一方を単独で用いるか、または組み合わせて用いることができるように分離可能ではあるが）。これについては、（ｉ）新しいＣＯＷディスクまたは記憶域（物理的または仮想的）の作成、（ｉｉ）インストールファイルの、最初の記憶域から新しい記憶域への伝播、を含む２つの構成要素が存在する。仮想ブロックデバイス（ＶＢＤ）は、最初のＣＯＷ記憶域またはディスクと新しいＣＯＷ記憶域（ＣＯＷ  ＶＢＤ）のために都合よく用いることができる
【００１７】
仮想ブロックデバイスの１つのタイプは、個々の仮想マシンまたはＶＭインスタンスから見ることのできるブロックデバイスを論じる際に用いられる用語として、仮想ブロックデバイス、またはＶＢＤが説明される仮想環境、におけるそのタイプである。
【００１８】
図２を参照の下、オペレーティングシステムのアップグレードをするための方法２５０の図解された実施形態が存在する。円で囲まれた“１”で示され、そしてオリジナル（例えばマスタＯＳコピーまたはテンプレート）２０２から始まるステップ２５１において、ユーザがアプリケーション（Ａｐｐ）をインストールするとき、ＯＳ＋Ａｐｐのコピー２０４がオリジナルのＯＳ２０２から生成される。別途、サービスパック（ＳＰ）をインストールする、システムまたはユーザのようなエンティティを取得することで、オリジナルのＯＳ２０２が更新され（ステップ２５２）、ＯＳ＋ＳＰ２０５が生成される。次に（ステップ２５３）、ＯＳ＋Ａｐｐ２０４は、更新されたＯＳ＋ＳＰ  ２０５と共にマージされるかまたは結合されて、マージされたＯＳ＋ＳＰ＋Ａｐｐ２０６を生成する。ユーザ固有の変更または差分のみが記憶される実施形態においては、このマージまたは結合のステップは、その変更または差分をマージする、または結合することを伴う。最後に（ステップ２０５）、一時的に動作している、オペレーティングシステム、サービスパック更新、そしてアプリケーションプログラム（単数または複数）（ＯＳ＋ＳＰ＋Ａｐｐ）のコピーないしはバージョン２０８が実行されるかまたは動作する。一時的に動作している、更新されていないＯＳとアプリケーションプログラムのコピーまたはバージョン２０７が、併せて選択的に生成されることもあるが（ステップ２０４）、実際に実行されるコピーまたはバージョンがＳＰ更新を含むように、それらは都合よく再起動されるであろう。
【００１９】
図３を参照の下、アプリケーションプログラムのアップグレードをするための方法３５０の図解された実施形態が存在する。最初に（ステップ３５１）、ユーザまたは他のエンティティがアプリケーション（またはアプリケーションの一揃い、またはアプリケーションの組）３０２をオペレーティングシステム（ＯＳ）３０１にインストールし、結合されたＯＳ＋Ａｐｐ３０３を生成する。別途、ユーザまたは他のエンティティが、コピー・オン・ライトの手続きを用いてアプリケーションへのアップグレードをインストールし（ステップ３５２）、Ａｐｐ  ＣＯＷアップグレード３０４を生成し、それからＯＳ＋Ａｐｐ３０３が、Ａｐｐ  ＣＯＷアップグレード３０４と共にマージされるか結合されて（ステップ３５３）、マージされたＯＳ＋ＡＰＰ  ＣＯＷアップグレード３０５が生成される。修正、変更、または差分のみが記憶されるか別の形で保持される場合、ＯＳ＋ＡｐｐとＯＳ＋Ａｐｐ  ＣＯＷアップグレード（またはアップデート）とのマージされたバージョンは、差分バージョンのマージである。最後に（ステップ３５５）、ＯＳ＋Ａｐｐ  ＣＯＷアップグレードの動作バージョン、またはコピーが生成される。アップグレードまたはアップデートを欠いたＯＳ＋Ａｐｐのコピーが一時的に動作するコピーとして生成されるかもしれないが（ステップ３５４）、結局は、アップグレードされたバージョンがそこにおいて動作するようにと、そのアプリケーションを都合よく再起動することが可能である。
【００２０】
ＶＢＤがオペレーティングシステムのインストール（ＯＳインストール）のために、単独でまたはアプリケーションプログラム（単数または複数）と共に使われる場合において、個々のＶＢＤは各々のインストールのために使われるか、または使われてよく、そして説明することのできるシステムはインストールごとに、仮想ブロックデバイスの提供または取得をする。
【００２１】
インストールごとにＶＢＤを用いるシステムにおいては、現行のまたは新しいアプリケーションのインストールを、ＶＢＤを共有サーバへコピーすることによって自動でバックアップすることが可能である。ＶＢＤは全てのプログラムコード、メタデータ、そして他の、そのようなＶＢＤベースのバックアップを復旧するのに必要な情報を全て、記憶するか含んでいるからである。こうして、ユーザが新しいシステムやコンピュータを入手した時に、アプリケーションインストールを再構築することとは、彼／彼女の特注ＶＢＤを、サーバから、任意の媒体上のバックアップから、または任意の電子的にアクセス可能な媒体上に記憶されたものから、プルダウンすること以上の如何なることをも伴わない。
【００２２】
この模範的な、インストールごとのＶＢＤの（ＶＢＤ  ｐｅｒ  ｉｎｓｔａｌｌａｔｉｏｎ）アプローチは、従来のアプローチ、システム、そして方法に勝る著しい利点を与える。その利点として、インストールを隔離して実行できるということがある（選択的に、取り外し（ｄｅ−ｉｎｓｔａｌｌａｔｉｏｎ）の隔離しての実行に加えて）。隔離されたインストールは、オペレーティングシステムのインストールであっていいし、アプリケーションプログラム、または他の任意のファイルやこれらの何らかの組み合わせのインストールであってもよい。
【００２３】
従来のシステムや方法においては、特に、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  オペレーティングシステム（例えば、Ｗｉｎｄｏｗｓ  ２０００、  Ｗｉｎｄｏｗｓ  ＸＰ、  Ｗｉｎｄｏｗｓ  Ｖｉｓｔａ、及び同類のもの）のような今まさに動作しているシステム上では、アプリケーションプログラム（単数または複数）のインストールは、存在するファイル（更新またはディレクトリとレジストリのファイルないしは構造など）を修正するだけでなく、結果的にファイルやデータまたはメタデータをシステムのディレクトリ構造全体に撒き散らす。このことは大抵問題となることであり、本発明によって提供されるタイプの隔離、バックアップ、そして移転可能性をサポートしない。
【００２４】
本発明の、コピー・オン・ライトに基づいたＶＢＤを利用する非制限的実施形態において、オペレーティングシステム（及び選択的に、アプリケーションプログラム（単数または複数））の第１の出所は、信頼されたマスタコピー（派生のコピーまたはバージョンを生成するためにも使うことができるので、マスタテンプレートとも呼ばれる）であって、変更または修正（例えばあらゆる追加を含む）はＶＢＤに記憶される。修正または追加と併せて完全なコピーまたはバージョンを含む実施形態も代替的に利用可能ではあるのだが、好ましいものではない。何故ならそれらは実質的な利点を与えるものではないし、作成し、記憶し、そして必要な場合には復旧さえ行うための、追加の記憶域スペースとオーバーヘッドを消費するからである。
【００２５】
ある、ＶＢＤに記憶されたブロックを都合よく利用し変更する実施形態において、ブロックはハードディスクドライブ（または他の記憶媒体）に記憶され、機能的にはＶＢＤ全部と同等である。従来のアプローチにおいてのように、所与のアプリケーションインストールがそのファイルを、ライブラリを、レジスタの変更を、または同等のものを、ファイルシステムへ、そしてファイルシステムの至る所へ導いてきた跡（ｔｒａｃｋ）を分離して持ち続ける必要はなく、これらの変更ＶＢＤはサーバへ直接コピーすることができる。本発明の非制限的な実施形態は、仮想ブロックアプローチをマスタテンプレートのコピー・オン・ライトでのクローニングと組み合わせて都合よく用いる。仮想ブロックデバイスの使用は１つの実行アプローチであって、コピー・オン・ライトかまたは他のクローニングアプローチいずれかを用いた、仮想ブロックではなく論理ボリュームの使用のような、同様の、または類似のアプローチに気付くことであろう。ここで説明したような、現行のブロックデバイスまたは論理ボリュームと組み合わせての、コピー・オン・ライトかまたは他のクローニングは、従来のシステムと方法に優る多くの利点を提供する。
【００２６】
この組み合わせを使うと、オペレーティングシステムのインストールを有するブロックデバイスが存在することとなる。アプリケーションのインストールのためのディスク上での変更は、１つに決まる、そして分かっている量であり、そしてあるものは、その変更とインストールのための全てのメタデータを有する。修正がアプリケーションのインストールに付随したものであるとき、記憶されたブロックの組はそのアプリケーションの全体の定義を形成するかまたは許す。従って、このアプローチによって、そのアプリケーション状態に関する全てがディスク上に記憶されるようにと、これらブロックを単純にコピーすること、そしてそのブロックへのポインタ（そしてそのブロックのコンテンツ）を使用することが可能となる。
【００２７】
ある非制限的実施形態において、仮想ブロックデバイスを、ファイルシステムにおけるファイルを用いて実装してよいのであり、そしてそのファイルにおけるブロックは、基本／参照デバイスにおいて論理的変更（その変更が実際には基本／参照デバイスにおいてコミット（ｃｏｍｍｉｔ）されないという点において、論理的である）がなされるのに合わせて割り当てられるであろう。
【００２８】
設定変更の間、または更新中を除いて、システム（そしてユーザ）には一時的ＶＢＤ（ｔｒａｎｓｉｅｎｔ  ＶＢＤ）を使用させる、またはそれを用いて作業させる環境が、本発明の非制限的実施形態によって作成される。従って、ある者がアプリケーションプログラムをインストールするとき、その者はマスタテンプレートと同一のファイルシステムにそれをインストールしているのではない。その代わりに、その者は、マスタテンプレートに関連し、コピー・オン・ライトに基づいた仮想ブロックデバイスを作成している。その者がそれから、この仮想ブロックデバイス上で、またはこの仮想ブロックを背景に、アプリケーションを動作させる時、そのアプリケーションが成すことのできる如何なる修正も、その者が意図的に、それらがわざと持続的に残るようなやりかたで仮想ブロックデバイスを作成する場合を除いて、持続的なものとはならない。このことは問題ではない。なぜならその者は、その後その者専用のプライベートな仮想（そして物理的）記憶域に記憶される、その者専用のファイルまたはデータにおける所望の変更が持続することを依然として許しつつ、安全性と隔離性を保持できるからである。
【００２９】
現実世界の例を考えることで、その利点がより良く理解できるであろう。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄがインストールされ、それからＷｏｒｄが、動作してＷｉｎｄｏｗｓレジストリを破損させる、幾つかの埋め込まれたマクロを有するファイルを動作させる場合である。例えレジストリが破損したとしても、そのＷｏｒｄアプリケーションを終了する時には、ＶＢＤとＶＢＤ上ファイルシステム上にあるレジストリとは持続しないのであり、それらはアプリケーションが閉じられると共に消え失せる。この破損はそれ故に暫定的、一時的なものであり、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄセッションの次回の実行に（または並行している他の実行にさえも）影響を与えず、または実際には、そのレジストリを使用するか参照する、如何なる他のＷｉｎｄｏｗｓアプリケーションプログラムの実行にも、影響を与えない。
【００３０】
この環境において、あるアプリケーションをアンインストールすることは、そのインストールが存在しているＶＢＤへの割り当てを解除して、デスクトップからそこへの如何なる参照をも削除すること、以上の如何なることをも伴わない。
【００３１】
このアプローチによって与えられる自動的な領域確保によって、ディスクドライブ（または他の記憶装置、またはサブシステム）、または他ハードウェアの不足下においてシステム有用性を向上するための機会が与えられる。大部分の企業環境におけるユーザは彼らの個人的な要求や必要性によって特定のソフトウェアをインストールし、それによって彼らのシステムは不可避的にカスタマイズされるであろう。これには、最新のＰａｌｍTMソフトウェアからｉＴｕｎｅｓTMまで何でも含まれてよい。典型的なラップトップ型とデスクトップ型のシステムが、あらかじめ定義された（ｐｒｅ−ｄｅｆｉｎｅｄ）企業の情報技術（ＩＴ：Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）イメージと共にインストールされる。ユーザはそれから、彼らのシステムを更にカスタマイズする。ユーザのハードウェアが何らかの形で故障した場合、そのユーザは結局新たな（ｆｒｅｓｈ）イメージを入手することとなり、ユーザは、彼／彼女が所有していた、慣れていたソフトウェアの再インストールを要求される。
【００３２】
［典型的動作とメモリの使用方法］
典型的な使用法の場合においては、ユーザの体験することに変わりはない。そのユーザはスタートメニュー上をクリックし（または別の方法で交信し）、そして彼／彼女が動作させることを望むアプリケーションを選択する。そのアプリケーションが、それからデスクトップ上に現れる。この独創的システムの、ある非制限的実施形態において（例えばｖｉｒ２ｕｓTMが可能なシステム上で）、そのアプリケーションは、実際にはデスクトップを提供しているシステムと同一のオペレーティングシステムにおいては（または、アプリケーションＯＳとデスクトップＯＳが偶然同じタイプだったとしても、少なくとも同一の実行ＯＳにおいては）動作していないであろう。管理または制御環境は、新たな仮想マシン（ＶＭ）を作成し、それからその内部で、開始のリクエストと同一であると認められたアプリケーションを起動するであろう。
【００３３】
典型的には、その新たな仮想マシンの作成は相当に重く（ｈｅａｖｙｗｅｉｇｈｔ）、オペレーティングシステムのブートアップ（ｂｏｏｔ−ｕｐ）か、またはオペレーティングシステムのメモリ内イメージ（ｉｎ−ｍｅｍｏｒｙ  ｉｍａｇｅ）全部をディスクから読み取ることを伴う（休止状態（ｈｉｂｅｒｎａｔｉｏｎ）からシステムオペレーションを再開（ｒｅｓｕｍｅ）する時、頻繁に行われ得るように）。しかしながら、この場合において全てのアプリケーションは、同等に構成されたオペレーティングシステムを背景にして動作するであろう。デスクトップオペレーティングシステムインスタンスのフラッシュクローニング（ｆｌａｓｈ  ｃｌｏｎｉｎｇ）によって、ハイパーバイザにおける少量の追加状態（ｅｘｔｒａ  ｓｔａｔｅ）の割り当てを通じた、新たな仮想マシンの作成が可能となる。クローニングは時々、コンピュータ、コンピューティング、プログラミングアーツ（ｐｒｏｇｒａｍｍｉｎｇ  ａｒｔｓ）におけるフォーキング（ｆｏｒｋｉｎｇ）、と呼ばれるのであり、そしてフォーキングという用語は同等かまたは殆ど同等な記述子である。さらには、差分仮想化（ｄｅｌｔａ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）という言い回しが、フォーキングと同等なものか、またはその別名（ｓｙｎｏｎｙｍ）として、時々使われる。フラッシュクローニングは、クローニングが非常に迅速に実行される場合に使われる。それゆえに、本発明の実施形態は、フォーキング、クローニング、差分仮想化、または同等のものを使って実行されたかどうか（これらの迅速に実行されたバージョン、例えば、フラッシュクローニング、フラッシュフォーキング、フラッシュ差分仮想化、または同等のものだけでなく）に関わらず、ここにおいて説明される技法、手続き、そして方法を実行することを含むと言っても差し支えない。
【００３４】
従来要求された重い作業とは異なり、差分仮想化（または同等なフラッシュクローニング、フォーキング、または同等のもの）を独創的に使用すれば、いかなるコピーやオペレーティングシステムのメモリ割り当ても最初に行うことなしに、新しい仮想マシンを作成することが可能となる。
【００３５】
差分仮想化、クローニング、フォーキング、または同等の作業は、単に、全てのコードとデータページを、参照イメージから（例えば、デスクトップオペレーティングシステムから）新たな仮想マシンの中へマッピングする。差分仮想化、フォーク、またはクローンのマッピングは都合よく書き込み保護（ｗｒｉｔｅ  ｐｒｏｔｅｃｔｅｄ）することができ、したがってページへの修正がその後にされると、プライベートコピーが（これは、前述したコピー・オン・ライト最適化のもう１つのインスタンスである）作成されうることとなる。このプロセスを用いれば、スクラッチ（ｓｃｒａｔｃｈ）から全て行うのではなく、変更があったアプリケーション内のページをコピーするだけで、現存するプロセス（またはそれにおける適用可能な部分）を利用することが可能である。この独創的フォーキング、差分仮想化、及び／または  フラッシュクローニングは従って、ファイルオープンとの関係において仮想マシンをフォーク、差分仮想化、またはクローニングするために、都合よく用いることができる。ファイルオープンは、本願の別の箇所で更に説明される。
【００３６】
フォーキングされるべきそのプロセスのページを読み取り専用ページとして作成することによって、ある者があるプロセスをフォーキングする、オペレーティングシステムのプロセスに関してのオペレーティングシステム専門用語において（特にＵｎｉｘ（登録商標）  ＯＳに関して）、フォーキングという用語が頻繁に使用されると言ってよい。それらのページに修正がなされる時、書き込み作業が新しく割り当てられたページに対してなされるように、ＯＳは新たなページを割り当て、それからそのページをコピーする。Ｗｉｎｄｏｗｓオペレーティングシステム環境においては、このことは、新たなページの割り当てではなく、新たなアドレス空間の割り当てに対応してよい。
【００３７】
殆どの仮想マシンアプリケーションは、複数のオペレーティングシステムによる物理的ハードウェアの共有を可能とすることを、重要視しているように見える。典型的ｖｉｒ２ｕｓTMシステムアーキテクチャの実施形態において、仮想マシンは、ユーザへの干渉を最小限とする方法で隔離を行うよう意図されている。こうして、全てのアプリケーションが同一のコンピューティング環境またはマシン内部で実行していると見せるように、全てのアプリケーションは同じディスプレイに描画（ｒｅｎｄｅｒ）をする。マウスクリックは、カーソルの下のアプリケーションを動作させている仮想マシンに伝播され、順繰りに選択されたアプリケーションへ伝わる。こうして、各々のファイルは隔離されて個別に開かれるにもかかわらず、ｖｉｒ２ｕｓTM技術はユーザにとって不可視である。
【００３８】
ｖｉｒ２ｕｓのアーキテクチャを組み入れて、そして様々なセキュリティの特徴、制御とコンピューティングの環境、そして他の特徴を説明する、システムとデバイスのアーキテクチャの実施形態は、共に係属中である、
２００４年１月２４日に出願されていて、ＵＳ２００４０２３６８７４として公開され、“Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ａｎｄ  Ｍｅｔｈｏｄ  Ｐｒｏｖｉｄｉｎｇ  Ｏｐｅｒａｔｉｎｇ−Ｓｙｓｔｅｍ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｖｉｒｕｓ−，  Ｈａｃｋｅｒ−，  Ａｎｄ  Ｃｙｂｅｒ−Ｔｅｒｒｏｒ−Ｉｍｍｕｎｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｅｎｖｉｒｏｎｍｅｎｔｓ”とタイトルが付された、米国特許出願第１０／７６０，１３１号と、
２００６年２月１６日に出願され、そしてＵＳ２００６０１６１８１３として公開され、“Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ａｎｄ  Ｍｅｔｈｏｄ  Ｈａｖｉｎｇ  Ｉｓｏｌａｔａｂｌｅ  Ｓｔｏｒａｇｅ  Ｆｏｒ  Ｅｎｈａｎｃｅｄ  Ｉｍｍｕｎｉｔｙ  Ｔｏ  Ｖｉｒａｌ  Ａｎｄ  Ｍａｌｉｃｉｏｕｓ  Ｃｏｄｅ  Ｉｎｆｅｃｔｉｏｎ”とタイトルが付された、第１１／３８６，４９３号と、
２００４年１月１５日に出願され、ＵＳ  ２００４０２１０７９６として公開され、“Ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｃａｐａｂｌｅ  ｏｆ  ｓｕｐｐｏｒｔｉｎｇ  ａ  ｐｌｕｒａｌｉｔｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｃｏｍｐｕｔｉｎｇ  ｅｎｖｉｒｏｎｍｅｎｔｓ”と表題の付された第１０／４８４，０５１号と、
において説明され、それら各々は、ここに参照のために組み入れられている。
【００３９】
仮想マシン間における物理的メモリの共有を管理することができる、２つの異なるやりかたが存在する。コンテンツベースでの（ｃｏｎｔｅｎｔ−ｂａｓｅｄ）ページ共有を使用することと、バルーンドライバの使用である。コンテンツベースのページ共有は、メモリをスキャンし、進むに合わせて各々のページのチェックサム（ｃｈｅｃｋｓｕｍ）を記憶するプロセスをとることにより実行できる。プロセスにおいて２つのページが一致するチェックサムを有していると分かった時、そのプロセスにおいてはバイトごとの比較が行われるのであり、もしそれらが一致した場合には、シャドウページテーブルがその同一な物理的ページの両方の参照に更新可能であることを、ハイパーバイザに通知する。バルーンドライバは、ゲストＯＳそれ自体の内部で動作する。それは、そのドライバがメモリを割り当て、効率的にページをゲストから取り上げて、そしてメモリを他の場所で使えるように、メモリのアドレスをハイパーバイザへと戻すよう、ハイパーバイザがリクエストすることを可能とするインターフェースを有する。
【００４０】
［独創的アーキテクチャにおけるファイルオープン］
この独創的アーキテクチャ（ここにおいてｖｉｒ２ｕｓアーキテクチャとして参照される）の典型的実施形態におけるファイルオープンが、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  実装に関して説明される。しかしながら、ここにおいて与えられる説明に照らして、この独創的システムも、アーキテクチャも、方法も、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｗｉｎｄｏｗｓ  ２０００、  Ｗｉｎｄｏｗｓ  ＸＰ、  そしてリリース予定のＭｉｃｒｏｓｏｆｔ  ＶｉｓｔａTM  と  ＬｏｎｇｈｏｒｎTM  サーバオペレーティングシステムバージョンを含む、任意のバージョン）に制限されないことが分かるであろう。
【００４１】
図４を参照すると、ファイルオープンのための典型的方法４５１の図解が与えられている。図４は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓの背景スクリーン４０２と、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄアプリケーションウインドウ４０４内部のプルダウンメニュー４０３と、そしてファイルオープンメニュー４０５から特定のＷｏｒｄファイルを開こうとするユーザを含む、ユーザデスクトップを図解する。その図解はまた制御環境ブロック４０６と、参照モニタブロック４０７と、ファイルサーバブロック４０８を示している。これらブロックはユーザデスクトップスクリーンには現れないが、ブロックと、ブロックがユーザ対話（ｕｓｅｒ  ｉｎｔｅｒａｃｔｉｏｎ）に関して果たす機能の関与と、そしてこの独創的方法の少なくとも１つの実施形態に関わるステップとを図解するために、示されている。
【００４２】
アプリケーションの起動中、そのインポートアドレステーブル（ＩＡＴ）は、統合するための（例えばｖｉｒ２ｕｓTM統合するための）追加ＤＬＬをインポートするために、制御環境によって（例えばｖｉｒ２ｕｓTM  制御環境  及び／または  管理システムによって）修正される。このＤＬＬはＷｉｎｄｏｗｓ３２ユーザインターフェース（ＷＩＮ３２  ＵＩ）機能への、オープンファイルやファイル保存ダイアログ等のような呼び出しをインターセプトする。これらの、オープンファイルリクエストコールなどの呼び出しは、検出または識別され、そして仮想マシン４２２のためのローカルプロキシ４２０へと（例えば、仮想マシンのためのローカルｖｉｒ２ｕｓTMプロキシへと）“迂回（ｄｅｔｏｕｒ）”させられる（ステップ４５１）。ローカルプロキシ４２０は順繰りに、ファイルオープンリクエストを、システム管理システム（ｓｙｓｔｅｍｓ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）の制御環境（例えば、ｖｉｒ２ｕｓTM管理システムの制御環境）へ、送る（ｒｏｕｔｅ）か、または転送（ｆｏｒｗａｒｄ）する（ステップ４５２）。
【００４３】
図５と６を参照の下、管理システムは、新しく仮想マシン４２５を初期化するか、または作成する（ステップ４５３）。そこにおいて、ファイルを開く、保存する、または他の、ファイルに関するダイアログが実行されるであろう。ユーザがファイル名４２６を選択して、“ＯＫ”をクリックするか、または別の方法でファイル選択のファイナライズを確認した後、ダイアログはファイル名４２６と情報を発信アプリケーション４２７へ戻して、そして管理システムの参照モニタ４２８へ渡す。それから、別個の初期状態の仮想マシンＶＭからのオープンダイアログボックスが、初期化される（ステップ４５４）。
【００４４】
更に図６を参照の下、オープンダイアログコンテキスト情報４３０は管理システムの制御環境へ送られる（ステップ４５５）。ある実施形態において、その情報はファイル名４３１とファイルの場所４３２を含む。ファイル名とコンテキスト４３０はそれから参照モニタ４２８とプロキシ４２０へ送られる（ステップ４５６）。ファイル名４３１（そして選択的に、ファイルの場所４３２も）そしてコンテキストは、共にプログラムアプリケーションへ戻される（ステップ４５７）。
【００４５】
図７を参照の下、アプリケーションはファイルサーバ４３４からのファイルをリクエストする（ステップ４５８）。何故ならば、少なくとも１つの非制限的実施形態において、全ての仮想マシンは、ローカルディスクの（または他の記憶域の）一時的プライベートコピーを背景に、またはそれを使って都合よく動作し、ユーザファイルは、管理、または制御環境において動作しているファイルサーバ４３４を通じてアクセスされるからである。ファイルサーバは参照モニタからの許可をリクエストする（ステップ４５９）。全てのファイルオープンリクエストはそれから、参照モニタ４２８と共にあるファイルサーバ４２９によって、都合よく検証される。参照モニタは、ファイルアクセスのリクエストを、承諾するかまたは拒む（ステップ４６０）。前述の例において、参照モニタ４２８はファイルダイアログと、仮想マシンの初期状態（ｐｒｉｓｔｉｎｅ  ｓｔａｔｅ）とから、そのアプリケーションの仮想マシンからのオープンリクエストを（または他の識別されたファイルアクセスリクエストを）許すべきと（または拒むべきと）見分ける。アプリケーションはそれから、その指示したファイルへのアクセスを許可される（またはアクセスを拒否される）（ステップ４６１）。
【００４６】
ファイルが既にその仮想マシンで開かれていた時は、その発信アプリケーションは、そのリクエストがキャンセルされたということ、そして新しいＶＭにおいて動作しているそのアプリケーションの新しいインスタンスにおいてそのファイルが開かれるであろうことを、都合よく通知されてよい。ユーザがそのアプリケーションのオリジナルのインスタンスを終了することを選ぶ場合、その終了はインターセプトされ、そして特定の仮想マシンが終了され、使用中の如何なる資源も解放されるであろう。これらの手続きは、ファイルアクセスの既定の組が遂行される前に、参照モニタの検証、照合、または確認が要求されるよう、モニタまたは参照モニタを実装する。そのような既定のファイルアクセスを、ファイルオープン、ファイル読み込み、ファイル書き込み、ファイル保存、ファイルコピー、または他の識別されたファイルアクセス操作、の１以上から選択してよい。この技法は、従来のシステムそして方法と比較して、著しい利点と特徴を与えると言って差し支えない。
【００４７】
従来のシステムと方法において、ユーザがクリックするかまたは別の方法でファイルを選択する時、そのユーザは、如何なるチェック、検証、確認、及び同等の、それを行うことが安全であるもの、をされることなく、選択したファイルへ実質的に即座にアクセスできると言って差し支えない。そのような従来のシステムと方法において、ウイルス、スパイウェア、トロイの木馬、ハッカーまたは他の、そのファイルを開こうとする悪意のあるコードが存在する場合、それからその悪意のあるコードその他もまた、そのファイルへ即座に、そして直接にアクセスできるであろう。これはセキュリティ上のリスクであり問題である。この独創的システムと方法において、そのファイルオープンコマンド（または他の指定されたファイルアクセスまたは他のコマンド）は、そのコマンドが、信頼されたオペレーティングシステムを有するそれ専用の、初期状態の仮想マシンへ通じるようにと分離される。
【００４８】
コピー・オン・ライト（ＣＯＷ）ブロックデバイスの有用性は、単なるアプリケーションの隔離以外の機能を与えるために使うことができる。ファイルサーバ４２９と協力して、低価格（ｌｏｗ−ｅｎｄ）コンピュータまたは他の情報機器のユーザが、通常は企業向け記憶装置にしか見られない機能を持つことができる。この機能によって、ファイルを過去の時点でその通りであったように（例えば１日または１週間前）ユーザへと見せることを可能とし、そしてまたファイルが動的に修正されている間での、混乱を生じない（ｎｏｎ−ｄｉｓｒｕｐｔｉｖｅ）、ユーザに気付かれないバックアップを可能とする、ユーザがスケジューリング可能な（ｓｃｈｅｄｕｌａｂｌｅ）スナップショットが与えられてよいが、それに制限はされない。こうして、ユーザは彼のコンピュータ、ラップトップ、または他の情報機器を、それを彼のローカルネットワークにプラグ接続したときに、ラップトップがそのユーザのコンピュータファイルをバックアップできるように、選択的に、しかし都合よく、全てのファイルや、変更されたファイルの全体ではなく、むしろファイルの変更された部分だけをバックアップできるように、設定することができる。この機能の能力は、バックアップと復旧のための時間と記憶域スペースの両方を節約するであろう。復旧が必要である場合には、ファイルはバックアップの変更内容を使って（多分、全体のファイルまたはファイルの組が、適切な変更されたファイルの組から復旧されるようにとバックアップされている、変更内容の複数の組から）復旧することができる。変更されたファイルにはもちろん、それが最初に作成されて保存された時のオリジナルファイルも含まれてよい。
【００４９】
ここにおいて与えられる説明に照らして、本発明はまた、ユーザに気付かれずにデスクトップオペレーティングシステムを拡張するためのシステムと方法を与えると言っても差し支えない。その拡張デスクトップオペレーティングシステムは、スケーラビリティの要求を低減させるためにプロセッサの小集団を使用する仮想マシン内で個々のアプリケーションを動作させることによって、多数のプロセッサ（または１以上のマルチコアプロセッサの中での、プロセッサコア）のスケールにはならない。
【００５０】
例えば、デュアルまたはマルチコアプロセッサにおいて動作しているオペレーティングシステムのインスタンスが１つある場合、そこでは、プロセッサまたはプロセッサコアの間での、タスクについての何らかの明快な制御かまたは分割（ｐａｒｔｉｔｉｏｎｉｎｇ）が必要とされる。特に、現在のファイルのコンテンツが、プロセッサまたはプロセッサコアの間で同期され、矛盾がなくなるように、ファイル競合（ｃｏｎｔｅｎｔｉｏｎ）のロック（ｌｏｃｋｉｎｇ）とロック解除（ｕｎｌｏｃｋｉｎｇ）が必要である。プロセッサまたは複数のプロセッサ内部での、プロセッサまたはプロセッサコアの数が増えるに従って、必然的に、あるボトルネックが存在し得るか、存在することになる。例えば、さらに６４のプロセッサを有するプロセッサ、またはプロセッサの組が意図されている。単独のプロセス上で動作することは、ロック競合（ｌｏｃｋｉｎｇ  ｃｏｎｔｅｎｔｉｏｎ）がないためにより容易であり、２つのプロセッサ上で動作するのは、いくらかのロック競合があるためにより困難であり、そしてプロセッサまたはプロセッサコアの数が増加するに従って、ファイルのロック競合の可能性が増加するために、益々難しくなる。
【００５１】
プロセッサの数が大きくなるほど、よりきめの細かい（ｆｉｎｅｒ  ｇｒａｉｎｅｄ）ロック制御が、ロック競合を避けるためには必要となる。本発明の、ある非制限的実施形態においては、タスクのコントロールとスケジューリングを行う、そしてプロセッサ間でのファイル競合の仲裁を行うＷｉｎｄｏｗｓのインスタンスを１つ持つよりはむしろ、各々のアプリケーションを、それ自身の仮想マシン内部で実行させることのほうが都合が良い。そこにおいてその仮想マシンは、そのオペレーティングシステム（例えばＷｉｎｄｏｗｓ、  Ａｐｐｌｅ  ＯＳ、  Ｌｉｎｕｘ、  Ｕｎｉｘ、  及び同等のもの）のあるバージョンを実行し、そしてその特定の仮想マシンは、限定された数のプロセッサまたはプロセッサコアのみを見ることができる。その見ることができる、そしてアクセスすることができるプロセッサまたはプロセッサコアの数は、如何なる有益な、並列処理のレベルまたは程度に適正なように選択されてもよい。
【００５２】
例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄまたは他の文書処理アプリケーションプログラムは途方もなく大きな処理能力を必要とするわけではなく、２つのコアまたは単独のコアでさえ十分なくらいであるのだが、一方でＡｄｏｂｅ  Ｐｈｏｔｏｓｈｏｐ  ＣＳ２の実行は、４，５，６，８または更に多くの（任意の数の）プロセッサまたはプロセッサコアのような、多数プロセッサがあることの恩恵を受ける（イメージのサイズ、複雑さ、または選択されたＣＳ２の処理操作に依存するかもしれない）。計算しているマシン内部の全てのプロセッサまたはプロセッサコアが利用されてよく、しかしその利用は、異なるアプリケーションプログラム、処理されるべきファイルの数に基づいていてよく、または他の要因に基づいていてよい。
【００５３】
この使用法はまた、いくつかのプロセッサまたはプロセッサコアが、クロック速度、電圧を下げた状態で動かされることを許し、または熱と電力ないしはエネルギーの消費を減らすために完全に止まることさえ許す。ユーザまたはシステムが追加的並行処理を提供することを選択する場合において、そのユーザまたはシステムは、プロセッサまたはプロセッサコアを１の、それ以上の、または全ての仮想マシンから見えるようにしてよい。簡単にするために、本発明の実施形態では、全ての仮想マシンを、それらが同じユーザデスクトップに所属しているように見せている。従って、ウイルス、ハッカーコード、スパイウェア、トロイの木馬  及び／または  他の悪意のあるコードの隔離に使われるのと同様の技法を使って、アプリケーションをプロセッサの小集合に分配できると言って差し支えない。
【００５４】
ここにおいて与えられる説明に照らして、この独創的手続き、方法、そして技法は、実行可能な命令や選択的データを含むコンピュータプログラムコードを用いて、都合よく実行できることがわかるであろう。本発明の実施形態が、実行されたときにここで説明された１の方法または手続き、またはそれらの組み合わせを遂行するコンピュータプログラムと共にエンコードされたコンピュータ読み取り可能な記憶媒体をまた含むように、このコンピュータプログラムコードはコンピュータ読み取り可能な媒体上に記憶されてもよい。
【００５５】
ここで使われるように、“実施形態”という用語は、ほんの一例として描写するのに役立つ実施形態を意味するのであり、限定を意味するものではない。先立つ例や実施形態は模範的なものであって、本発明の範囲を制限するものではないことが、当業者には分かるであろう。明細書を読み、そして図面を検討することにより当業者にとって明らかとなる、それに対しての全ての置換、機能強化、同等な物、そして改善は、本発明の真の精神と範囲の中に含まれることが意図されている。従って、後に続く添付の請求の範囲は、そのような修正、置換、そして同等物の全てを、本発明の真の精神と範囲の中に収めて含む、ということが意図されている。
【図面の簡単な説明】
【００５６】
【図１】図１はコピー・オン・ライト（ＣＯＷ：Ｃｏｐｙ−ｏｎ−Ｗｒｉｔｅ）最適化戦略のある実施形態を示す図解である。
【図２】図２はオペレーティングシステム（ＯＳ）アップグレードとＣＯＷを示す図解である。
【図３】図３はアプリケーションアップグレードとＣＯＷを示す図解である。
【図４】図４はコマンドの“フッキング（ｈｏｏｋｉｎｇ）”と管理システム制御環境への再送を示す図解である。
【図５】図５は、仮想マシンとオープンダイアログの作成を示す図解である。
【図６】図６は、ファイル情報のｖｉｒ２ｕｓTM制御環境（参照モニタ）へのルーティングと転送、そしてそれからののアプリケーションへの戻りを示す図解である。
【図７】図７は、参照モニタによるファイルアクセス権の照合を示す図解である。
【図１】
2009512939.tif 000002
【図２】
2009512939.tif 000003
【図３】
2009512939.tif 000004
【図４】
2009512939.tif 000005
【図５】
2009512939.tif 000006
【図６】
2009512939.tif 000007
【図７】
2009512939.tif 000008