JP2009512939A - 複数のオペレーティングシステムのインスタンスが単一のマシン資源を安全に共有することを可能とする、オペレーティングシステムの仮想化、を有するコンピュータセキュリティ方法 - Google Patents
複数のオペレーティングシステムのインスタンスが単一のマシン資源を安全に共有することを可能とする、オペレーティングシステムの仮想化、を有するコンピュータセキュリティ方法 Download PDFInfo
- Publication number
- JP2009512939A JP2009512939A JP2008536612A JP2008536612A JP2009512939A JP 2009512939 A JP2009512939 A JP 2009512939A JP 2008536612 A JP2008536612 A JP 2008536612A JP 2008536612 A JP2008536612 A JP 2008536612A JP 2009512939 A JP2009512939 A JP 2009512939A
- Authority
- JP
- Japan
- Prior art keywords
- operating system
- file
- app
- copy
- computer program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Abstract
本発明は一般にコンピュータのセキュリティに関し、より詳細には、オペレーティングシステムと、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの資源を共有することを可能とする責任を負う下層のハードウェアと、の間にハイパーバイザ層を挿入することにより達成される、オペレーティングシステムの仮想化に関する。
【選択図】なし
【選択図】なし
Description
[発明の分野]
本発明は一般にコンピュータのセキュリティに関し、より詳細には、オペレーティングシステムと、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとによる単一のマシン資源の共有を可能とする責任を負う下層のハードウェアと、の間にハイパーバイザ層を挿入することにより達成される、オペレーティングシステムの仮想化に関する。
本発明は一般にコンピュータのセキュリティに関し、より詳細には、オペレーティングシステムと、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとによる単一のマシン資源の共有を可能とする責任を負う下層のハードウェアと、の間にハイパーバイザ層を挿入することにより達成される、オペレーティングシステムの仮想化に関する。
[背景]
現在、全てとは言えないまでも殆どのコンピュータ及びコンピュータシステムにおけるセキュリティ制御は、それらのオペレーティングシステムの安全な環境を当てにしたものである。その具備するセキュリティ要件が異なるかまたは衝突する、アプリケーションプログラムや一揃いのプログラムは、別個のハードウェアにインストールして実行しなければならないか、またはオペレーティングシステムによってアプリケーションプログラムの組を隔離し、その組内部に異なるセキュリティ要件及び/またはアクセス要件を課し、実施しなければならない。
現在、全てとは言えないまでも殆どのコンピュータ及びコンピュータシステムにおけるセキュリティ制御は、それらのオペレーティングシステムの安全な環境を当てにしたものである。その具備するセキュリティ要件が異なるかまたは衝突する、アプリケーションプログラムや一揃いのプログラムは、別個のハードウェアにインストールして実行しなければならないか、またはオペレーティングシステムによってアプリケーションプログラムの組を隔離し、その組内部に異なるセキュリティ要件及び/またはアクセス要件を課し、実施しなければならない。
このように、セキュリティの守護者としてのオペレーティングシステムに依存することによって、現代のコンピュータ及び情報システムにおける根本的なセキュリティ上の問題が提起される。現在利用可能なオペレーティングシステムは多くの重要な資源の共有を要求するモデルの下で動作するので、前記アプリケーションプログラムの隔離という課題を解決するものでも、しようとするものでもない。共有資源には、例えば、共有ライブラリ、ファイルシステム、ネットワーク、そしてディスプレイメモリとプロセッサ、などの要素が、意味のある分離をされないままで含まれる。さらには、製品によく見られる任意アクセス制御は、ユーザが動作させようと、または実行しようと意図しているものを、ユーザが無意識に実行している、または実行するかもしれないもの(例えばユーザのファイルに添付されたウイルスコード)から敏速に識別し、または分離することができないので、一般的な悪意のあるコード(ウイルス、スパイウェア、ハッカーコード、ポップアップ、トロイの木馬、または同様のもの)についての問題を解決できない。また残念なことに任意制御は、ユーザが認められたやりかたで行動していることを前提としているのだが、必ずしもそうとは限らない。脆弱なアプリケーションや不注意かまたは経験の浅いユーザは、悪意のあるコードがシステムまたはデータ構造に進入し、システムが危険にさらされることを許してしまうかもしれない。
これらの問題は、従来通りのやりかたで高レベルのセキュリティインフラストラクチャを追加することによって即座に解決できるものではない。システムセキュリティへの、最も重大な予測される脅威を考えると(例えば悪意のある開発者、配布の最中に放置されるトラップドア(trap door)、ブートセクタウイルス、ルートキット、そしてコンパイラのトラップドアのようなものである)、それらの脅威は関連したセキュリティ制御を迂回できるので、オペレーティングシステムよりも上位の層(すなわち、例えばアプリケーション層やミドルウェア層である)に効果的なセキュリティを実装することは不可能である。様々なインテグリティチェッカー、アンチウイルススキャナ、そして同様のセキュリティアプリケーションは、リスクを軽減するために便利ではあるのだが、それらが検出することを意図している悪意のあるコードによってそれら自身が危険にさらされるかもしれないので、それらはセキュリティの保証を与えてはいないし、そして与えることもできない。加えて、特定のアンチウイルスやアンチスパイウェアに対しては、それらが検出することを意図しているコード、またはコードセグメント、またはコードシグネチャについての知識が事前に要求される。
従って、そのような悪意のあるコードからの脅威を軽減し、これらの欠点と問題を解決するセキュリティ保証の方策を与えるシステム、システムアーキテクチャ、方法、そしてコンピュータプログラムソフトウェアが依然必要とされている。
[概要]
本発明は一般にコンピュータのセキュリティに関し、より詳細には、オペレーティングシステムと、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの資源を共有することを可能とする責任を負う下層のハードウェアと、の間にハイパーバイザ層を挿入することにより達成される、オペレーティングシステムの仮想化に関する。
本発明は一般にコンピュータのセキュリティに関し、より詳細には、オペレーティングシステムと、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの資源を共有することを可能とする責任を負う下層のハードウェアと、の間にハイパーバイザ層を挿入することにより達成される、オペレーティングシステムの仮想化に関する。
[詳細な説明]
従来のシステムと方法における上記の問題と制限は、独創的アプローチにより解決される。そこではオペレーティングシステム(OS)の仮想化によって、“vir2us”セキュリティアーキテクチャの基礎を築くために必要な隔離が行われる。OS仮想化は、OSとその下にあるハードウェアとの間に、ある層(ハイパーバイザとして知られている)を挿入することで達成される(Vir2usTMはVir2us社の登録商標であり、Vir2us社は、カリフォルニア州サンフランシスコにある、本件特許出願の出願人である(かつてはSelf Repairing Computers, Inc社として知られていた)。)。この層は、複数のOSインスタンス(そしてそれらの実行アプリケーション)によって単一マシンの資源を共有することを可能とする責任を負っている。今日の市場には、例えばXen、VMware、そして他のものなど、ハイパーバイザの代わりとなるものは複数存在するのであるが、それらに限定はされない。それ故に各々のOSは、マシン全体の資源をその独占的制御の下で有していると信じるのであるが、実際には仮想化層が、異なるOSイメージとそれらのアプリケーション間で資源が適切に共有されていることを、気付かれることなく保証している。しかしながら、仮想マシンのみでは、依然としてユーザのデータは、悪意のあるコードによってもたらされる多くの脅威に対して脆弱なままで残されてしまう。例えば、もしユーザが仮想マシン内で電子メールをダウンロードし、感染した添付ファイルを開いた場合には、その添付ファイル内の悪意のあるコードは、その仮想マシンを用いてアクセスできる、仮想マシンからアクセスできる、他の電子メール文書を感染させる可能性がある。
従来のシステムと方法における上記の問題と制限は、独創的アプローチにより解決される。そこではオペレーティングシステム(OS)の仮想化によって、“vir2us”セキュリティアーキテクチャの基礎を築くために必要な隔離が行われる。OS仮想化は、OSとその下にあるハードウェアとの間に、ある層(ハイパーバイザとして知られている)を挿入することで達成される(Vir2usTMはVir2us社の登録商標であり、Vir2us社は、カリフォルニア州サンフランシスコにある、本件特許出願の出願人である(かつてはSelf Repairing Computers, Inc社として知られていた)。)。この層は、複数のOSインスタンス(そしてそれらの実行アプリケーション)によって単一マシンの資源を共有することを可能とする責任を負っている。今日の市場には、例えばXen、VMware、そして他のものなど、ハイパーバイザの代わりとなるものは複数存在するのであるが、それらに限定はされない。それ故に各々のOSは、マシン全体の資源をその独占的制御の下で有していると信じるのであるが、実際には仮想化層が、異なるOSイメージとそれらのアプリケーション間で資源が適切に共有されていることを、気付かれることなく保証している。しかしながら、仮想マシンのみでは、依然としてユーザのデータは、悪意のあるコードによってもたらされる多くの脅威に対して脆弱なままで残されてしまう。例えば、もしユーザが仮想マシン内で電子メールをダウンロードし、感染した添付ファイルを開いた場合には、その添付ファイル内の悪意のあるコードは、その仮想マシンを用いてアクセスできる、仮想マシンからアクセスできる、他の電子メール文書を感染させる可能性がある。
[アーキテクチャの模範的実施形態]
vir2usTMセキュリティアーキテクチャでは、違いはシステムが起動する瞬間から明らかである。デスクトップオペレーティングシステム(OS)は、もはや物理的ハードウェアを占有しない。BIOS初期化に続いて即座にハイパーバイザがロードされ、実行を許可される。ハイパーバイザは、リアルモードからプロテクトモードへの移行を処理し、それからXen開発者の言うところのドメインゼロOS(Domain0 OS)(例えばLinux)をロードする。ドメインゼロOSは、物理デバイスへのアクセスと仮想マシン(VM:Virtual Machine)作成のための制御プレーンとしての役目のみを果たす。初期化シーケンスが完了するとドメインゼロOSはすぐに、初期化前の(pre−initialized)VM(VMにおいて独自仕様のvir2us管理サービスが動作する)と、分離し隔離された初期化前の、ユーザのデスクトップを与えるためのWindows(登録商標) VM(Microsoft Windows VMが所望されている場合は)とを、メモリにロードする。
vir2usTMセキュリティアーキテクチャでは、違いはシステムが起動する瞬間から明らかである。デスクトップオペレーティングシステム(OS)は、もはや物理的ハードウェアを占有しない。BIOS初期化に続いて即座にハイパーバイザがロードされ、実行を許可される。ハイパーバイザは、リアルモードからプロテクトモードへの移行を処理し、それからXen開発者の言うところのドメインゼロOS(Domain0 OS)(例えばLinux)をロードする。ドメインゼロOSは、物理デバイスへのアクセスと仮想マシン(VM:Virtual Machine)作成のための制御プレーンとしての役目のみを果たす。初期化シーケンスが完了するとドメインゼロOSはすぐに、初期化前の(pre−initialized)VM(VMにおいて独自仕様のvir2us管理サービスが動作する)と、分離し隔離された初期化前の、ユーザのデスクトップを与えるためのWindows(登録商標) VM(Microsoft Windows VMが所望されている場合は)とを、メモリにロードする。
ユーザのデスクトップを提供するWindows 仮想マシン (VM)インスタンスと、ユーザのアプリケーション(そこにおいて個々のユーザファイルが隔離して開かれる)を動作させる他の仮想マシンとは、動作するたびに初期状態であることが保証される。なぜならそれらはロードされるたびに、新しく割り当てられた、そしてそれ故に隔離された、コピー・オン・ライト(copy−on−write)ディスク(または他の記憶装置)を背景に、最初のOSインストールか、または結合された、ないしは統合されたOS+アプリケーションのインストールの支援を受けて、動作するからである。
コピー・オン・ライト(度々“COW”と省略される)は最適化戦略であり、それによってユーザは、変更を加える時にディスク上(または他の記憶装置や媒体上)、またはメモリ上へブロックを割り当てることのみによって、共有システム資源(例えば論理装置番号(LUN:Logical Unit Number)やメモリ内オブジェクト)のプライベートコピーを保持することが可能となる。このことは、オペレーティングシステム(OS)、オペレーティングシステムの一部、隔離された、またはオペレーティングシステムないしはその一部と結合された、単数または複数のアプリケーションプログラム、のマスタコピーに、都合よく当てはまる。ある特定の非制限的実施形態において、その共有システム資源とは、公知の清浄な、そして初期状態のままの、あるオペレーティングシステム(OS)のコピーであってよい。ここにおいて清浄とは、そのOSのコピーが信頼でき、そしてウイルス、スパイウェア、ハッカーウェア、それ以外の悪意のあるコードがないと分かっていることを意味する。また、1以上のアプリケーションプログラム、または互換性のないアプリケーションプログラムの結合、と互換性がないカスタマイズが存在しないということを、さらに意味してもよい。コピー・オン・ライト戦略の使用と共有システム資源のプライベートコピーの使用によって、プライベートコピーが修正のみを含む時には、プライベートコピーについてのオーバーヘッドをユーザによる修正の範囲内へと都合よく制限することができるのである。他の実施形態においては、追加的オーバーヘッドと追加的記憶領域という代償の下で、完全なプライベートコピーを提供することができる。ある非制限的実施形態においては、一度プライベートコピーが作られると、基本インスタンスを安全に修正することができない。
図1を参照の下、ある非制限的実施形態においては、各々のアプリケーション(App)に対して、または一揃いのアプリケーションを形成するように結合されたアプリケーションに対して、それら専用のOSインストールのプライベートコピーを提供するために、コピー・オン・ライトCOWブロックデバイスが都合よく用いられる。アプリケーションが実行される時(例えばユーザがアプリケーションをクリックするか、またはスタートメニューからアプリケーションを選択した時)、アプリケーションインストールの、そのアプリケーション専用のプライベートコピーが順繰りに提供される。そのアプリケーションを終了する時には、使用されている資源は、どれもが解放されるであろう。図1におけるコピー・オン・ライト方法101の非制限的実施形態を参照すると、オペレーティングシステム(OS)102のオリジナルまたはマスタコピーは、オプション変更、カスタマイズ、または他の修正を含む複数の派生的オペレーティングシステムを生成するために使うことができる。示している例において、その修正とは、オペレーティングシステムのある1つのコピー106においてのアプリケーションプログラムA105のインストールと、オペレーティングシステムの第2のコピー108におけるアプリケーションプログラムB107のインストールである。これら2つの、オペレーティングシステムとアプリケーションプログラムの新しく結合されたブロック110、111の各々は、OS+アプリケーションインストールの追加的一時的コピー112、113をもたらし、それらコピーはファイルストア115にアクセスできる。そのアプリケーションプログラムが終了する時には使用されるいかなる資源も都合よく解放され、そして一時的コピー112、113は削除される。
ここに説明されるシステムと方法は、隔離されたインストールとしての参照が可能なものを作成する。また、ソフトウェア(オペレーティングシステム、アプリケーションプログラム、または他のコンポーネント)への更新を、仮想ブロックデバイス(VBD:virtual block device)(論理ボリュームとも言われている)を介して伝播するためのシステムと方法も提供される。
例えば、Service Pack 1 がインストールされている、インストールされたMicrosoft Windows XP Professionalオペレーティングシステムの、信頼できるマスタテンプレートの存在が考えられる。更に、各々が自身専用のプライベート(仮想)ディスク(実際には共通の共有物理ディスクドライブの隔離されたある部分であってよい)を持つように、このオペレーティングシステムの上にインストールされた、幾つかの他のアプリケーションが考えられる。実行中またはそれ以外の間で何らかの追加、修正を行うときは、これらの追加または修正は、マスタテンプレートにおいては反映されない。それらアプリケーションは、自身専用のプライベートな修正のみを行う。
ここで説明される独創的なシステム、手続き、方法において、ある者が例えばMicrosoft Windows XP OS service pack 2をインストールする場合(または他のいかなるものでもよい)、その者は信頼されたマスタテンプレートへ実際にservice pack 2をインストールするのではなく、代わりに追加、削除、変更、更新、及び/またはアップグレードを、オペレーティングシステムの信頼できるマスタバージョンから作成された個々のVBDを用いて、service pack 1のインストールされたこのインスタンス中で伝播させる。ここで説明されない他の方法が、オペレーティングシステムのマスタテンプレートまたはバージョンを更新し、アップグレードし、または別の形で修正するために、マスタテンプレートにおいてウイルス、スパイウェア、ハッカーウェア、そして他の悪意のあるコードが含まれていないという信頼できる性質とインテグリティとを維持する技法と保護を用いて提供されることが分かるであろう。
ここの詳細は他の場所でより詳しく説明されているのだが、物理ディスクドライブ、物理ディスクドライブの1部分、さらには複数の物理ディスクドライブ(または他の記憶装置)、に対応する物理デバイスや物理ブロックデバイスがあってよい。仮想マシンを共有する、仮想マシン間でのある程度の隔離が所望される場合、個々の仮想マシンに見えるのは仮想ブロックデバイス(VBD)であって、物理デバイス全体には及ばない(物理デバイスの破片もしくは1部分のようなものである)。特定の仮想マシンに関連すると、その特定の仮想マシンは、自己に物理デバイス全体が見えていると信じているか、または印象を持っている。
図2と図3を参照の下で、このコピー・オン・ライトと隔離は例えば、(i)オペレーティングシステムOSのアップグレード(図2を参照)、(ii)アプリケーション(図3参照)のアップグレード(例えば、これらに制限されるわけではないが、オペレーティングシステムのサービスパックやパッチ、もしくは他の修正、アップグレード、または機能強化などである)、及び/または(iii)いわゆるヘルパー・アプリケーション(例えば、これに制限するわけではないが、Acrobat Readerである)、または他の、共有された特徴や能力の、アプリケーションインストール間での共有、のようなイベントをいかにして処理するかという問題を提起する。この潜在的問題への解決法は、ふたつの構成要素を含んでよい(その解決法は、いずれか一方を単独で用いるか、または組み合わせて用いることができるように分離可能ではあるが)。これについては、(i)新しいCOWディスクまたは記憶域(物理的または仮想的)の作成、(ii)インストールファイルの、最初の記憶域から新しい記憶域への伝播、を含む2つの構成要素が存在する。仮想ブロックデバイス(VBD)は、最初のCOW記憶域またはディスクと新しいCOW記憶域(COW VBD)のために都合よく用いることができる
仮想ブロックデバイスの1つのタイプは、個々の仮想マシンまたはVMインスタンスから見ることのできるブロックデバイスを論じる際に用いられる用語として、仮想ブロックデバイス、またはVBDが説明される仮想環境、におけるそのタイプである。
図2を参照の下、オペレーティングシステムのアップグレードをするための方法250の図解された実施形態が存在する。円で囲まれた“1”で示され、そしてオリジナル(例えばマスタOSコピーまたはテンプレート)202から始まるステップ251において、ユーザがアプリケーション(App)をインストールするとき、OS+Appのコピー204がオリジナルのOS202から生成される。別途、サービスパック(SP)をインストールする、システムまたはユーザのようなエンティティを取得することで、オリジナルのOS202が更新され(ステップ252)、OS+SP205が生成される。次に(ステップ253)、OS+App204は、更新されたOS+SP 205と共にマージされるかまたは結合されて、マージされたOS+SP+App206を生成する。ユーザ固有の変更または差分のみが記憶される実施形態においては、このマージまたは結合のステップは、その変更または差分をマージする、または結合することを伴う。最後に(ステップ205)、一時的に動作している、オペレーティングシステム、サービスパック更新、そしてアプリケーションプログラム(単数または複数)(OS+SP+App)のコピーないしはバージョン208が実行されるかまたは動作する。一時的に動作している、更新されていないOSとアプリケーションプログラムのコピーまたはバージョン207が、併せて選択的に生成されることもあるが(ステップ204)、実際に実行されるコピーまたはバージョンがSP更新を含むように、それらは都合よく再起動されるであろう。
図3を参照の下、アプリケーションプログラムのアップグレードをするための方法350の図解された実施形態が存在する。最初に(ステップ351)、ユーザまたは他のエンティティがアプリケーション(またはアプリケーションの一揃い、またはアプリケーションの組)302をオペレーティングシステム(OS)301にインストールし、結合されたOS+App303を生成する。別途、ユーザまたは他のエンティティが、コピー・オン・ライトの手続きを用いてアプリケーションへのアップグレードをインストールし(ステップ352)、App COWアップグレード304を生成し、それからOS+App303が、App COWアップグレード304と共にマージされるか結合されて(ステップ353)、マージされたOS+APP COWアップグレード305が生成される。修正、変更、または差分のみが記憶されるか別の形で保持される場合、OS+AppとOS+App COWアップグレード(またはアップデート)とのマージされたバージョンは、差分バージョンのマージである。最後に(ステップ355)、OS+App COWアップグレードの動作バージョン、またはコピーが生成される。アップグレードまたはアップデートを欠いたOS+Appのコピーが一時的に動作するコピーとして生成されるかもしれないが(ステップ354)、結局は、アップグレードされたバージョンがそこにおいて動作するようにと、そのアプリケーションを都合よく再起動することが可能である。
VBDがオペレーティングシステムのインストール(OSインストール)のために、単独でまたはアプリケーションプログラム(単数または複数)と共に使われる場合において、個々のVBDは各々のインストールのために使われるか、または使われてよく、そして説明することのできるシステムはインストールごとに、仮想ブロックデバイスの提供または取得をする。
インストールごとにVBDを用いるシステムにおいては、現行のまたは新しいアプリケーションのインストールを、VBDを共有サーバへコピーすることによって自動でバックアップすることが可能である。VBDは全てのプログラムコード、メタデータ、そして他の、そのようなVBDベースのバックアップを復旧するのに必要な情報を全て、記憶するか含んでいるからである。こうして、ユーザが新しいシステムやコンピュータを入手した時に、アプリケーションインストールを再構築することとは、彼/彼女の特注VBDを、サーバから、任意の媒体上のバックアップから、または任意の電子的にアクセス可能な媒体上に記憶されたものから、プルダウンすること以上の如何なることをも伴わない。
この模範的な、インストールごとのVBDの(VBD per installation)アプローチは、従来のアプローチ、システム、そして方法に勝る著しい利点を与える。その利点として、インストールを隔離して実行できるということがある(選択的に、取り外し(de−installation)の隔離しての実行に加えて)。隔離されたインストールは、オペレーティングシステムのインストールであっていいし、アプリケーションプログラム、または他の任意のファイルやこれらの何らかの組み合わせのインストールであってもよい。
従来のシステムや方法においては、特に、Microsoft Windows オペレーティングシステム(例えば、Windows 2000、 Windows XP、 Windows Vista、及び同類のもの)のような今まさに動作しているシステム上では、アプリケーションプログラム(単数または複数)のインストールは、存在するファイル(更新またはディレクトリとレジストリのファイルないしは構造など)を修正するだけでなく、結果的にファイルやデータまたはメタデータをシステムのディレクトリ構造全体に撒き散らす。このことは大抵問題となることであり、本発明によって提供されるタイプの隔離、バックアップ、そして移転可能性をサポートしない。
本発明の、コピー・オン・ライトに基づいたVBDを利用する非制限的実施形態において、オペレーティングシステム(及び選択的に、アプリケーションプログラム(単数または複数))の第1の出所は、信頼されたマスタコピー(派生のコピーまたはバージョンを生成するためにも使うことができるので、マスタテンプレートとも呼ばれる)であって、変更または修正(例えばあらゆる追加を含む)はVBDに記憶される。修正または追加と併せて完全なコピーまたはバージョンを含む実施形態も代替的に利用可能ではあるのだが、好ましいものではない。何故ならそれらは実質的な利点を与えるものではないし、作成し、記憶し、そして必要な場合には復旧さえ行うための、追加の記憶域スペースとオーバーヘッドを消費するからである。
ある、VBDに記憶されたブロックを都合よく利用し変更する実施形態において、ブロックはハードディスクドライブ(または他の記憶媒体)に記憶され、機能的にはVBD全部と同等である。従来のアプローチにおいてのように、所与のアプリケーションインストールがそのファイルを、ライブラリを、レジスタの変更を、または同等のものを、ファイルシステムへ、そしてファイルシステムの至る所へ導いてきた跡(track)を分離して持ち続ける必要はなく、これらの変更VBDはサーバへ直接コピーすることができる。本発明の非制限的な実施形態は、仮想ブロックアプローチをマスタテンプレートのコピー・オン・ライトでのクローニングと組み合わせて都合よく用いる。仮想ブロックデバイスの使用は1つの実行アプローチであって、コピー・オン・ライトかまたは他のクローニングアプローチいずれかを用いた、仮想ブロックではなく論理ボリュームの使用のような、同様の、または類似のアプローチに気付くことであろう。ここで説明したような、現行のブロックデバイスまたは論理ボリュームと組み合わせての、コピー・オン・ライトかまたは他のクローニングは、従来のシステムと方法に優る多くの利点を提供する。
この組み合わせを使うと、オペレーティングシステムのインストールを有するブロックデバイスが存在することとなる。アプリケーションのインストールのためのディスク上での変更は、1つに決まる、そして分かっている量であり、そしてあるものは、その変更とインストールのための全てのメタデータを有する。修正がアプリケーションのインストールに付随したものであるとき、記憶されたブロックの組はそのアプリケーションの全体の定義を形成するかまたは許す。従って、このアプローチによって、そのアプリケーション状態に関する全てがディスク上に記憶されるようにと、これらブロックを単純にコピーすること、そしてそのブロックへのポインタ(そしてそのブロックのコンテンツ)を使用することが可能となる。
ある非制限的実施形態において、仮想ブロックデバイスを、ファイルシステムにおけるファイルを用いて実装してよいのであり、そしてそのファイルにおけるブロックは、基本/参照デバイスにおいて論理的変更(その変更が実際には基本/参照デバイスにおいてコミット(commit)されないという点において、論理的である)がなされるのに合わせて割り当てられるであろう。
設定変更の間、または更新中を除いて、システム(そしてユーザ)には一時的VBD(transient VBD)を使用させる、またはそれを用いて作業させる環境が、本発明の非制限的実施形態によって作成される。従って、ある者がアプリケーションプログラムをインストールするとき、その者はマスタテンプレートと同一のファイルシステムにそれをインストールしているのではない。その代わりに、その者は、マスタテンプレートに関連し、コピー・オン・ライトに基づいた仮想ブロックデバイスを作成している。その者がそれから、この仮想ブロックデバイス上で、またはこの仮想ブロックを背景に、アプリケーションを動作させる時、そのアプリケーションが成すことのできる如何なる修正も、その者が意図的に、それらがわざと持続的に残るようなやりかたで仮想ブロックデバイスを作成する場合を除いて、持続的なものとはならない。このことは問題ではない。なぜならその者は、その後その者専用のプライベートな仮想(そして物理的)記憶域に記憶される、その者専用のファイルまたはデータにおける所望の変更が持続することを依然として許しつつ、安全性と隔離性を保持できるからである。
現実世界の例を考えることで、その利点がより良く理解できるであろう。例えば、Microsoft Wordがインストールされ、それからWordが、動作してWindowsレジストリを破損させる、幾つかの埋め込まれたマクロを有するファイルを動作させる場合である。例えレジストリが破損したとしても、そのWordアプリケーションを終了する時には、VBDとVBD上ファイルシステム上にあるレジストリとは持続しないのであり、それらはアプリケーションが閉じられると共に消え失せる。この破損はそれ故に暫定的、一時的なものであり、Microsoft Wordセッションの次回の実行に(または並行している他の実行にさえも)影響を与えず、または実際には、そのレジストリを使用するか参照する、如何なる他のWindowsアプリケーションプログラムの実行にも、影響を与えない。
この環境において、あるアプリケーションをアンインストールすることは、そのインストールが存在しているVBDへの割り当てを解除して、デスクトップからそこへの如何なる参照をも削除すること、以上の如何なることをも伴わない。
このアプローチによって与えられる自動的な領域確保によって、ディスクドライブ(または他の記憶装置、またはサブシステム)、または他ハードウェアの不足下においてシステム有用性を向上するための機会が与えられる。大部分の企業環境におけるユーザは彼らの個人的な要求や必要性によって特定のソフトウェアをインストールし、それによって彼らのシステムは不可避的にカスタマイズされるであろう。これには、最新のPalmTMソフトウェアからiTunesTMまで何でも含まれてよい。典型的なラップトップ型とデスクトップ型のシステムが、あらかじめ定義された(pre−defined)企業の情報技術(IT:Information Technology)イメージと共にインストールされる。ユーザはそれから、彼らのシステムを更にカスタマイズする。ユーザのハードウェアが何らかの形で故障した場合、そのユーザは結局新たな(fresh)イメージを入手することとなり、ユーザは、彼/彼女が所有していた、慣れていたソフトウェアの再インストールを要求される。
[典型的動作とメモリの使用方法]
典型的な使用法の場合においては、ユーザの体験することに変わりはない。そのユーザはスタートメニュー上をクリックし(または別の方法で交信し)、そして彼/彼女が動作させることを望むアプリケーションを選択する。そのアプリケーションが、それからデスクトップ上に現れる。この独創的システムの、ある非制限的実施形態において(例えばvir2usTMが可能なシステム上で)、そのアプリケーションは、実際にはデスクトップを提供しているシステムと同一のオペレーティングシステムにおいては(または、アプリケーションOSとデスクトップOSが偶然同じタイプだったとしても、少なくとも同一の実行OSにおいては)動作していないであろう。管理または制御環境は、新たな仮想マシン(VM)を作成し、それからその内部で、開始のリクエストと同一であると認められたアプリケーションを起動するであろう。
典型的な使用法の場合においては、ユーザの体験することに変わりはない。そのユーザはスタートメニュー上をクリックし(または別の方法で交信し)、そして彼/彼女が動作させることを望むアプリケーションを選択する。そのアプリケーションが、それからデスクトップ上に現れる。この独創的システムの、ある非制限的実施形態において(例えばvir2usTMが可能なシステム上で)、そのアプリケーションは、実際にはデスクトップを提供しているシステムと同一のオペレーティングシステムにおいては(または、アプリケーションOSとデスクトップOSが偶然同じタイプだったとしても、少なくとも同一の実行OSにおいては)動作していないであろう。管理または制御環境は、新たな仮想マシン(VM)を作成し、それからその内部で、開始のリクエストと同一であると認められたアプリケーションを起動するであろう。
典型的には、その新たな仮想マシンの作成は相当に重く(heavyweight)、オペレーティングシステムのブートアップ(boot−up)か、またはオペレーティングシステムのメモリ内イメージ(in−memory image)全部をディスクから読み取ることを伴う(休止状態(hibernation)からシステムオペレーションを再開(resume)する時、頻繁に行われ得るように)。しかしながら、この場合において全てのアプリケーションは、同等に構成されたオペレーティングシステムを背景にして動作するであろう。デスクトップオペレーティングシステムインスタンスのフラッシュクローニング(flash cloning)によって、ハイパーバイザにおける少量の追加状態(extra state)の割り当てを通じた、新たな仮想マシンの作成が可能となる。クローニングは時々、コンピュータ、コンピューティング、プログラミングアーツ(programming arts)におけるフォーキング(forking)、と呼ばれるのであり、そしてフォーキングという用語は同等かまたは殆ど同等な記述子である。さらには、差分仮想化(delta virtualization)という言い回しが、フォーキングと同等なものか、またはその別名(synonym)として、時々使われる。フラッシュクローニングは、クローニングが非常に迅速に実行される場合に使われる。それゆえに、本発明の実施形態は、フォーキング、クローニング、差分仮想化、または同等のものを使って実行されたかどうか(これらの迅速に実行されたバージョン、例えば、フラッシュクローニング、フラッシュフォーキング、フラッシュ差分仮想化、または同等のものだけでなく)に関わらず、ここにおいて説明される技法、手続き、そして方法を実行することを含むと言っても差し支えない。
従来要求された重い作業とは異なり、差分仮想化(または同等なフラッシュクローニング、フォーキング、または同等のもの)を独創的に使用すれば、いかなるコピーやオペレーティングシステムのメモリ割り当ても最初に行うことなしに、新しい仮想マシンを作成することが可能となる。
差分仮想化、クローニング、フォーキング、または同等の作業は、単に、全てのコードとデータページを、参照イメージから(例えば、デスクトップオペレーティングシステムから)新たな仮想マシンの中へマッピングする。差分仮想化、フォーク、またはクローンのマッピングは都合よく書き込み保護(write protected)することができ、したがってページへの修正がその後にされると、プライベートコピーが(これは、前述したコピー・オン・ライト最適化のもう1つのインスタンスである)作成されうることとなる。このプロセスを用いれば、スクラッチ(scratch)から全て行うのではなく、変更があったアプリケーション内のページをコピーするだけで、現存するプロセス(またはそれにおける適用可能な部分)を利用することが可能である。この独創的フォーキング、差分仮想化、及び/または フラッシュクローニングは従って、ファイルオープンとの関係において仮想マシンをフォーク、差分仮想化、またはクローニングするために、都合よく用いることができる。ファイルオープンは、本願の別の箇所で更に説明される。
フォーキングされるべきそのプロセスのページを読み取り専用ページとして作成することによって、ある者があるプロセスをフォーキングする、オペレーティングシステムのプロセスに関してのオペレーティングシステム専門用語において(特にUnix(登録商標) OSに関して)、フォーキングという用語が頻繁に使用されると言ってよい。それらのページに修正がなされる時、書き込み作業が新しく割り当てられたページに対してなされるように、OSは新たなページを割り当て、それからそのページをコピーする。Windowsオペレーティングシステム環境においては、このことは、新たなページの割り当てではなく、新たなアドレス空間の割り当てに対応してよい。
殆どの仮想マシンアプリケーションは、複数のオペレーティングシステムによる物理的ハードウェアの共有を可能とすることを、重要視しているように見える。典型的vir2usTMシステムアーキテクチャの実施形態において、仮想マシンは、ユーザへの干渉を最小限とする方法で隔離を行うよう意図されている。こうして、全てのアプリケーションが同一のコンピューティング環境またはマシン内部で実行していると見せるように、全てのアプリケーションは同じディスプレイに描画(render)をする。マウスクリックは、カーソルの下のアプリケーションを動作させている仮想マシンに伝播され、順繰りに選択されたアプリケーションへ伝わる。こうして、各々のファイルは隔離されて個別に開かれるにもかかわらず、vir2usTM技術はユーザにとって不可視である。
vir2usのアーキテクチャを組み入れて、そして様々なセキュリティの特徴、制御とコンピューティングの環境、そして他の特徴を説明する、システムとデバイスのアーキテクチャの実施形態は、共に係属中である、
2004年1月24日に出願されていて、US20040236874として公開され、“Computer System Architecture And Method Providing Operating−System Independent Virus−, Hacker−, And Cyber−Terror−Immune Processing Environments”とタイトルが付された、米国特許出願第10/760,131号と、
2006年2月16日に出願され、そしてUS20060161813として公開され、“Computer System And Method Having Isolatable Storage For Enhanced Immunity To Viral And Malicious Code Infection”とタイトルが付された、第11/386,493号と、
2004年1月15日に出願され、US 20040210796として公開され、“Computer system capable of supporting a plurality of independent computing environments”と表題の付された第10/484,051号と、
において説明され、それら各々は、ここに参照のために組み入れられている。
2004年1月24日に出願されていて、US20040236874として公開され、“Computer System Architecture And Method Providing Operating−System Independent Virus−, Hacker−, And Cyber−Terror−Immune Processing Environments”とタイトルが付された、米国特許出願第10/760,131号と、
2006年2月16日に出願され、そしてUS20060161813として公開され、“Computer System And Method Having Isolatable Storage For Enhanced Immunity To Viral And Malicious Code Infection”とタイトルが付された、第11/386,493号と、
2004年1月15日に出願され、US 20040210796として公開され、“Computer system capable of supporting a plurality of independent computing environments”と表題の付された第10/484,051号と、
において説明され、それら各々は、ここに参照のために組み入れられている。
仮想マシン間における物理的メモリの共有を管理することができる、2つの異なるやりかたが存在する。コンテンツベースでの(content−based)ページ共有を使用することと、バルーンドライバの使用である。コンテンツベースのページ共有は、メモリをスキャンし、進むに合わせて各々のページのチェックサム(checksum)を記憶するプロセスをとることにより実行できる。プロセスにおいて2つのページが一致するチェックサムを有していると分かった時、そのプロセスにおいてはバイトごとの比較が行われるのであり、もしそれらが一致した場合には、シャドウページテーブルがその同一な物理的ページの両方の参照に更新可能であることを、ハイパーバイザに通知する。バルーンドライバは、ゲストOSそれ自体の内部で動作する。それは、そのドライバがメモリを割り当て、効率的にページをゲストから取り上げて、そしてメモリを他の場所で使えるように、メモリのアドレスをハイパーバイザへと戻すよう、ハイパーバイザがリクエストすることを可能とするインターフェースを有する。
[独創的アーキテクチャにおけるファイルオープン]
この独創的アーキテクチャ(ここにおいてvir2usアーキテクチャとして参照される)の典型的実施形態におけるファイルオープンが、Microsoft Windows 実装に関して説明される。しかしながら、ここにおいて与えられる説明に照らして、この独創的システムも、アーキテクチャも、方法も、Microsoft Windows(Windows 2000、 Windows XP、 そしてリリース予定のMicrosoft VistaTM と LonghornTM サーバオペレーティングシステムバージョンを含む、任意のバージョン)に制限されないことが分かるであろう。
この独創的アーキテクチャ(ここにおいてvir2usアーキテクチャとして参照される)の典型的実施形態におけるファイルオープンが、Microsoft Windows 実装に関して説明される。しかしながら、ここにおいて与えられる説明に照らして、この独創的システムも、アーキテクチャも、方法も、Microsoft Windows(Windows 2000、 Windows XP、 そしてリリース予定のMicrosoft VistaTM と LonghornTM サーバオペレーティングシステムバージョンを含む、任意のバージョン)に制限されないことが分かるであろう。
図4を参照すると、ファイルオープンのための典型的方法451の図解が与えられている。図4は、Microsoft Windowsの背景スクリーン402と、Microsoft Wordアプリケーションウインドウ404内部のプルダウンメニュー403と、そしてファイルオープンメニュー405から特定のWordファイルを開こうとするユーザを含む、ユーザデスクトップを図解する。その図解はまた制御環境ブロック406と、参照モニタブロック407と、ファイルサーバブロック408を示している。これらブロックはユーザデスクトップスクリーンには現れないが、ブロックと、ブロックがユーザ対話(user interaction)に関して果たす機能の関与と、そしてこの独創的方法の少なくとも1つの実施形態に関わるステップとを図解するために、示されている。
アプリケーションの起動中、そのインポートアドレステーブル(IAT)は、統合するための(例えばvir2usTM統合するための)追加DLLをインポートするために、制御環境によって(例えばvir2usTM 制御環境 及び/または 管理システムによって)修正される。このDLLはWindows32ユーザインターフェース(WIN32 UI)機能への、オープンファイルやファイル保存ダイアログ等のような呼び出しをインターセプトする。これらの、オープンファイルリクエストコールなどの呼び出しは、検出または識別され、そして仮想マシン422のためのローカルプロキシ420へと(例えば、仮想マシンのためのローカルvir2usTMプロキシへと)“迂回(detour)”させられる(ステップ451)。ローカルプロキシ420は順繰りに、ファイルオープンリクエストを、システム管理システム(systems management system)の制御環境(例えば、vir2usTM管理システムの制御環境)へ、送る(route)か、または転送(forward)する(ステップ452)。
図5と6を参照の下、管理システムは、新しく仮想マシン425を初期化するか、または作成する(ステップ453)。そこにおいて、ファイルを開く、保存する、または他の、ファイルに関するダイアログが実行されるであろう。ユーザがファイル名426を選択して、“OK”をクリックするか、または別の方法でファイル選択のファイナライズを確認した後、ダイアログはファイル名426と情報を発信アプリケーション427へ戻して、そして管理システムの参照モニタ428へ渡す。それから、別個の初期状態の仮想マシンVMからのオープンダイアログボックスが、初期化される(ステップ454)。
更に図6を参照の下、オープンダイアログコンテキスト情報430は管理システムの制御環境へ送られる(ステップ455)。ある実施形態において、その情報はファイル名431とファイルの場所432を含む。ファイル名とコンテキスト430はそれから参照モニタ428とプロキシ420へ送られる(ステップ456)。ファイル名431(そして選択的に、ファイルの場所432も)そしてコンテキストは、共にプログラムアプリケーションへ戻される(ステップ457)。
図7を参照の下、アプリケーションはファイルサーバ434からのファイルをリクエストする(ステップ458)。何故ならば、少なくとも1つの非制限的実施形態において、全ての仮想マシンは、ローカルディスクの(または他の記憶域の)一時的プライベートコピーを背景に、またはそれを使って都合よく動作し、ユーザファイルは、管理、または制御環境において動作しているファイルサーバ434を通じてアクセスされるからである。ファイルサーバは参照モニタからの許可をリクエストする(ステップ459)。全てのファイルオープンリクエストはそれから、参照モニタ428と共にあるファイルサーバ429によって、都合よく検証される。参照モニタは、ファイルアクセスのリクエストを、承諾するかまたは拒む(ステップ460)。前述の例において、参照モニタ428はファイルダイアログと、仮想マシンの初期状態(pristine state)とから、そのアプリケーションの仮想マシンからのオープンリクエストを(または他の識別されたファイルアクセスリクエストを)許すべきと(または拒むべきと)見分ける。アプリケーションはそれから、その指示したファイルへのアクセスを許可される(またはアクセスを拒否される)(ステップ461)。
ファイルが既にその仮想マシンで開かれていた時は、その発信アプリケーションは、そのリクエストがキャンセルされたということ、そして新しいVMにおいて動作しているそのアプリケーションの新しいインスタンスにおいてそのファイルが開かれるであろうことを、都合よく通知されてよい。ユーザがそのアプリケーションのオリジナルのインスタンスを終了することを選ぶ場合、その終了はインターセプトされ、そして特定の仮想マシンが終了され、使用中の如何なる資源も解放されるであろう。これらの手続きは、ファイルアクセスの既定の組が遂行される前に、参照モニタの検証、照合、または確認が要求されるよう、モニタまたは参照モニタを実装する。そのような既定のファイルアクセスを、ファイルオープン、ファイル読み込み、ファイル書き込み、ファイル保存、ファイルコピー、または他の識別されたファイルアクセス操作、の1以上から選択してよい。この技法は、従来のシステムそして方法と比較して、著しい利点と特徴を与えると言って差し支えない。
従来のシステムと方法において、ユーザがクリックするかまたは別の方法でファイルを選択する時、そのユーザは、如何なるチェック、検証、確認、及び同等の、それを行うことが安全であるもの、をされることなく、選択したファイルへ実質的に即座にアクセスできると言って差し支えない。そのような従来のシステムと方法において、ウイルス、スパイウェア、トロイの木馬、ハッカーまたは他の、そのファイルを開こうとする悪意のあるコードが存在する場合、それからその悪意のあるコードその他もまた、そのファイルへ即座に、そして直接にアクセスできるであろう。これはセキュリティ上のリスクであり問題である。この独創的システムと方法において、そのファイルオープンコマンド(または他の指定されたファイルアクセスまたは他のコマンド)は、そのコマンドが、信頼されたオペレーティングシステムを有するそれ専用の、初期状態の仮想マシンへ通じるようにと分離される。
コピー・オン・ライト(COW)ブロックデバイスの有用性は、単なるアプリケーションの隔離以外の機能を与えるために使うことができる。ファイルサーバ429と協力して、低価格(low−end)コンピュータまたは他の情報機器のユーザが、通常は企業向け記憶装置にしか見られない機能を持つことができる。この機能によって、ファイルを過去の時点でその通りであったように(例えば1日または1週間前)ユーザへと見せることを可能とし、そしてまたファイルが動的に修正されている間での、混乱を生じない(non−disruptive)、ユーザに気付かれないバックアップを可能とする、ユーザがスケジューリング可能な(schedulable)スナップショットが与えられてよいが、それに制限はされない。こうして、ユーザは彼のコンピュータ、ラップトップ、または他の情報機器を、それを彼のローカルネットワークにプラグ接続したときに、ラップトップがそのユーザのコンピュータファイルをバックアップできるように、選択的に、しかし都合よく、全てのファイルや、変更されたファイルの全体ではなく、むしろファイルの変更された部分だけをバックアップできるように、設定することができる。この機能の能力は、バックアップと復旧のための時間と記憶域スペースの両方を節約するであろう。復旧が必要である場合には、ファイルはバックアップの変更内容を使って(多分、全体のファイルまたはファイルの組が、適切な変更されたファイルの組から復旧されるようにとバックアップされている、変更内容の複数の組から)復旧することができる。変更されたファイルにはもちろん、それが最初に作成されて保存された時のオリジナルファイルも含まれてよい。
ここにおいて与えられる説明に照らして、本発明はまた、ユーザに気付かれずにデスクトップオペレーティングシステムを拡張するためのシステムと方法を与えると言っても差し支えない。その拡張デスクトップオペレーティングシステムは、スケーラビリティの要求を低減させるためにプロセッサの小集団を使用する仮想マシン内で個々のアプリケーションを動作させることによって、多数のプロセッサ(または1以上のマルチコアプロセッサの中での、プロセッサコア)のスケールにはならない。
例えば、デュアルまたはマルチコアプロセッサにおいて動作しているオペレーティングシステムのインスタンスが1つある場合、そこでは、プロセッサまたはプロセッサコアの間での、タスクについての何らかの明快な制御かまたは分割(partitioning)が必要とされる。特に、現在のファイルのコンテンツが、プロセッサまたはプロセッサコアの間で同期され、矛盾がなくなるように、ファイル競合(contention)のロック(locking)とロック解除(unlocking)が必要である。プロセッサまたは複数のプロセッサ内部での、プロセッサまたはプロセッサコアの数が増えるに従って、必然的に、あるボトルネックが存在し得るか、存在することになる。例えば、さらに64のプロセッサを有するプロセッサ、またはプロセッサの組が意図されている。単独のプロセス上で動作することは、ロック競合(locking contention)がないためにより容易であり、2つのプロセッサ上で動作するのは、いくらかのロック競合があるためにより困難であり、そしてプロセッサまたはプロセッサコアの数が増加するに従って、ファイルのロック競合の可能性が増加するために、益々難しくなる。
プロセッサの数が大きくなるほど、よりきめの細かい(finer grained)ロック制御が、ロック競合を避けるためには必要となる。本発明の、ある非制限的実施形態においては、タスクのコントロールとスケジューリングを行う、そしてプロセッサ間でのファイル競合の仲裁を行うWindowsのインスタンスを1つ持つよりはむしろ、各々のアプリケーションを、それ自身の仮想マシン内部で実行させることのほうが都合が良い。そこにおいてその仮想マシンは、そのオペレーティングシステム(例えばWindows、 Apple OS、 Linux、 Unix、 及び同等のもの)のあるバージョンを実行し、そしてその特定の仮想マシンは、限定された数のプロセッサまたはプロセッサコアのみを見ることができる。その見ることができる、そしてアクセスすることができるプロセッサまたはプロセッサコアの数は、如何なる有益な、並列処理のレベルまたは程度に適正なように選択されてもよい。
例えば、Microsoft Wordまたは他の文書処理アプリケーションプログラムは途方もなく大きな処理能力を必要とするわけではなく、2つのコアまたは単独のコアでさえ十分なくらいであるのだが、一方でAdobe Photoshop CS2の実行は、4,5,6,8または更に多くの(任意の数の)プロセッサまたはプロセッサコアのような、多数プロセッサがあることの恩恵を受ける(イメージのサイズ、複雑さ、または選択されたCS2の処理操作に依存するかもしれない)。計算しているマシン内部の全てのプロセッサまたはプロセッサコアが利用されてよく、しかしその利用は、異なるアプリケーションプログラム、処理されるべきファイルの数に基づいていてよく、または他の要因に基づいていてよい。
この使用法はまた、いくつかのプロセッサまたはプロセッサコアが、クロック速度、電圧を下げた状態で動かされることを許し、または熱と電力ないしはエネルギーの消費を減らすために完全に止まることさえ許す。ユーザまたはシステムが追加的並行処理を提供することを選択する場合において、そのユーザまたはシステムは、プロセッサまたはプロセッサコアを1の、それ以上の、または全ての仮想マシンから見えるようにしてよい。簡単にするために、本発明の実施形態では、全ての仮想マシンを、それらが同じユーザデスクトップに所属しているように見せている。従って、ウイルス、ハッカーコード、スパイウェア、トロイの木馬 及び/または 他の悪意のあるコードの隔離に使われるのと同様の技法を使って、アプリケーションをプロセッサの小集合に分配できると言って差し支えない。
ここにおいて与えられる説明に照らして、この独創的手続き、方法、そして技法は、実行可能な命令や選択的データを含むコンピュータプログラムコードを用いて、都合よく実行できることがわかるであろう。本発明の実施形態が、実行されたときにここで説明された1の方法または手続き、またはそれらの組み合わせを遂行するコンピュータプログラムと共にエンコードされたコンピュータ読み取り可能な記憶媒体をまた含むように、このコンピュータプログラムコードはコンピュータ読み取り可能な媒体上に記憶されてもよい。
ここで使われるように、“実施形態”という用語は、ほんの一例として描写するのに役立つ実施形態を意味するのであり、限定を意味するものではない。先立つ例や実施形態は模範的なものであって、本発明の範囲を制限するものではないことが、当業者には分かるであろう。明細書を読み、そして図面を検討することにより当業者にとって明らかとなる、それに対しての全ての置換、機能強化、同等な物、そして改善は、本発明の真の精神と範囲の中に含まれることが意図されている。従って、後に続く添付の請求の範囲は、そのような修正、置換、そして同等物の全てを、本発明の真の精神と範囲の中に収めて含む、ということが意図されている。
Claims (25)
- 下層のハードウェアと所定の資源を有する、コンピュータまたは情報機器を操作する方法であって、
前記コンピュータまたは情報機器にオペレーティングシステムを与える段階と、
前記オペレーティングシステムと前記下層のハードウェアとの間にハイパーバイザ層を挿入する段階と、
前記ハイパーバイザに、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの前記資源を共有することを制御するかまたは許容する責任を割り当てる段階と、を含む方法。 - 下層のハードウェアと所定の資源を有し、
前記コンピュータまたは情報機器のためのオペレーティングシステムと、
前記オペレーティングシステムと前記下層のハードウェアとの間に挿入されたハイパーバイザ層と、
前記ハイパーバイザに、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの前記資源を共有することを制御するかまたは許容する責任を割り当てるコントローラと、を含む、コンピュータまたは情報機器。 - 有体媒体上に記憶された、コンピュータまたは情報機器上での動作のための、そして該コンピュータまたは情報機器を動作させるための命令を含むコンピュータプログラムであって、該命令が、
前記コンピュータまたは情報機器にオペレーティングシステムを与えるための命令と、
前記オペレーティングシステムと下層のハードウェアとの間にハイパーバイザ層を挿入するための命令と、
前記ハイパーバイザに、複数のオペレーティングシステムのインスタンスとそれらの実行アプリケーションとが単一のマシンの資源を共有することを制御するかまたは許容する責任を割り当てるための命令と、を含む、コンピュータプログラム。 - コンピュータプログラムコードの隔離されたインストールを遂行するための方法であって、
コピー・オン・ライトベースの仮想ブロックデバイスを作成する段階と、
前記コンピュータプログラムコードのオリジナルバージョンを記憶する信頼されたマスタテンプレートにアクセスする段階と、
前記コンピュータプログラムコードをインストールするために要求されるかまたは所望される、前記オリジナルバージョンへの任意の変更を識別する段階と、
識別された前記変更を前記仮想ブロックデバイスに記憶する段階と、を含む、方法。 - 前記インストールされるべきコンピュータプログラムコードはオペレーティングシステムのコンピュータプログラムコードを含む、請求項4に記載の方法。
- 前記インストールされるべきコンピュータプログラムコードはアプリケーションプログラムのコンピュータプログラムコードを含む、請求項4に記載の方法。
- 前記インストールされるべきコンピュータプログラムコードはオペレーティングシステムのコンピュータプログラムコードと少なくとも1つのアプリケーションプログラムコードとを含む、請求項4に記載の方法。
- 前記仮想ブロックデバイスに記憶される前記変更は、実行するために必要とされるコンピュータプログラムコード全体に満たない、請求項4に記載の方法。
- 前記仮想ブロックデバイスは仮想マシン環境において作成され、物理的記憶デバイスの論理的部分を参照する、請求項4に記載の方法。
- 前記物理的記憶デバイスが、回転式物理ハードディスクドライブと、複数の回転式ハードディスクドライブと、固体状態のメモリデバイスと、光学メモリデバイスと、そしてこれらの組み合わせと、から成る物理的記憶デバイスの組から選択された物理的記憶デバイスを含む、請求項9に記載の方法。
- 前記仮想ブロックデバイスが、第2の記憶域にコピー可能であって、前記コンピュータプログラムコードのインストールを定義するために要求される全ての変更内容、または変更内容へのポインタを含むことが可能である、請求項4に記載の方法。
- 前記コンピュータプログラムコードの隔離されたインストールが実質的に、コンピュータファイルシステム全体に渡っての、コンピュータプログラムコードの誘導や分配を排除する、請求項4に記載の方法。
- ファイルオープンコマンドに対しての仮想マシンのフォーキング(forking)のための方法であって、
如何なる最初のコピー、またはオペレーティングシステムのメモリ割り当てをも行うことなく新たな仮想マシンのインスタンスが作成され、参照イメージからの全てのコードとデータページが、該新たな仮想マシンの中へマッピングされることを特徴とする方法。 - 前記フォーキングは書き込み保護されており、後から行われるページへの修正は、コピー・オン・ライトの手続きを用いてプライベートコピーを作成することができる、請求項13に記載の方法。
- 前記フォーキングはファイルを開いている間に仮想マシンの中で遂行される、請求項13に記載の方法。
- オペレーティングシステムをアップグレードするための方法であって、
ユーザがアプリケーション(App)をインストールしようとする時に、オリジナルの信頼されたオペレーティングシステムコード(OS)から、OS+Appのコピーを生成する段階と、
任意の所望されるOSアップデートのインストールによって前記オリジナルのOSをアップデートし、OS+UDを生成する段階と、
前記アップデートされたOS+UDと共に前記OS+Appをマージし、マージされたOS+UD+Appを生成する段階と、
一時的に動作する、前記オペレーティングシステム、オペレーティングシステムのアップデート、そして単数または複数のアプリケーションプログラムの(OS+UD+App)コピーないしはバージョンを生成する段階と、を含む方法。 - 前記一時的に動作する、オペレーティングシステム、オペレーティングシステムのアップデート、そして単数または複数のアプリケーションプログラムの(OS+UD+App)コピーないしはバージョンを実行するか動作させることを更に含む、請求項16に記載の方法。
- 前記OSアップデート(UD)はサービスパックのアップデート(SP)を含む、請求項16に記載の方法。
- アプリケーションプログラムコードをアップグレードするための方法であって、
アプリケーション(App)をオペレーティングシステム(OS)にインストールし、組み合わされたOS+Appを生成する段階と、
コピー・オン・ライトの手続きを用いてアプリケーションへのアップグレードをインストールし、App COW アップグレードを生成する段階と、
前記APP COWアップグレードと共に前記OS+Appをマージし、マージされたOS+APP COWアップグレードを生成する段階と、
前記OS+App COWアップグレードの動作バージョンないしはコピーを生成する段階と、を含む方法。 - 前記OS+App COWアップグレードの動作バージョンないしはコピーを実行するか動作させることを更に含む、請求項17に記載の方法。
- コンピュータプログラムソフトウェアコードが、オペレーティングシステムコンピュータプログラムソフトウェアコードか、またはアプリケーションプログラムソフトウェアコードか、またはオペレーティングシステムとアプリケーションプログラムコードとの組み合わせを含む、請求項16に記載の方法。
- ファイルアクセスにおいて安全性を強制するために参照モニタの検証を用いる方法であって、
ファイルアクセスのためのプログラムコールまたはリクエストを検出する段階と、
前記検出されたファイルアクセスのリクエストを仮想マシンのためのローカルプロキシへと迂回させる段階と、
前記ファイルアクセスのリクエストを管理コントロールに転送する段階と、
ファイルアクセスダイアログが実行されることになる、ダイアログが実行されることになる、新たな仮想マシンを作成する段階と、
選択されたファイル名を発信アプリケーションに戻し、前記管理コントロールの参照モニタに渡す段階と、
信頼された初期状態の仮想マシンからのファイルアクセスダイアログボックスを初期化する段階と、
ファイルコンテキスト情報を前記管理コントロールに送る段階と、
前記ファイル名とファイルコンテキストを前記参照モニタと前記ローカルプロキシとに送り、プログラムアプリケーションに戻す段階と、
管理コントロール環境において動作するファイルサーバからの前記選択されたファイルをリクエストする段階と、
前記リクエストされたファイルを扱うための前記参照モニタからの許可を、前記ファイルサーバによってリクエストする段階と、
前記参照モニタによって、前記リクエストを承諾するか拒む段階と、を含む方法。 - 前記ファイルアクセスは、ファイルオープン、ファイル保存、ファイル読み込み、ファイル書き込み、これらの任意の組み合わせ、から成るファイルアクセスの組から選択される、請求項22に記載の方法。
- 前記リクエストの承諾または拒否に依存して、前記リクエストに応じて前記ファイルが扱われるかまたは扱われない、請求項22に記載の方法。
- 多数のプロセッサのスケールにはならない、拡張デスクトップオペレーティングシステムのための方法であって、個々のアプリケーションが、スケーラビリティの要求を低減させるためにプロセッサまたはプロセッサコアの適当な小集団のみを用いる分離した仮想マシン内で実行されることを特徴とする、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US72932405P | 2005-10-21 | 2005-10-21 | |
US84185006P | 2006-08-31 | 2006-08-31 | |
PCT/US2006/041486 WO2007048062A2 (en) | 2005-10-21 | 2006-10-23 | Computer security method having operating system virtualization allowing multiple operating system instances to securely share single machine resources |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009512939A true JP2009512939A (ja) | 2009-03-26 |
Family
ID=37963390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008536612A Pending JP2009512939A (ja) | 2005-10-21 | 2006-10-23 | 複数のオペレーティングシステムのインスタンスが単一のマシン資源を安全に共有することを可能とする、オペレーティングシステムの仮想化、を有するコンピュータセキュリティ方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20070106993A1 (ja) |
EP (1) | EP1952233A2 (ja) |
JP (1) | JP2009512939A (ja) |
TW (1) | TW200745951A (ja) |
WO (1) | WO2007048062A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013500531A (ja) * | 2009-07-28 | 2013-01-07 | エアバス | 異なるセキュリティレベル又は異なる責任限界を必要とする機能を実施する多目的データの自動処理 |
KR101729680B1 (ko) * | 2015-12-01 | 2017-04-25 | 한국전자통신연구원 | 경량 하이퍼바이저에 기반하는 운영체제의 제공 방법 및 장치 |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496743B1 (en) * | 2004-11-08 | 2009-02-24 | Sun Microsystems, Inc. | Modeling operating system instances |
JP4407956B2 (ja) * | 2005-10-31 | 2010-02-03 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理方法および情報処理装置 |
US8732284B2 (en) * | 2006-01-06 | 2014-05-20 | Apple Inc. | Data serialization in a user switching environment |
US9317309B2 (en) * | 2006-12-28 | 2016-04-19 | Hewlett-Packard Development Company, L.P. | Virtualized environment allocation system and method |
US8391288B2 (en) * | 2007-01-31 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Security system for protecting networks from vulnerability exploits |
US8856782B2 (en) | 2007-03-01 | 2014-10-07 | George Mason Research Foundation, Inc. | On-demand disposable virtual work system |
US8146080B2 (en) * | 2007-03-30 | 2012-03-27 | Novell, Inc. | Tessellated virtual machines conditionally linked for common computing goals |
US20080256538A1 (en) * | 2007-04-10 | 2008-10-16 | Novell, Inc. | Storage configurations for tessellated virtual machines |
US8407696B2 (en) * | 2007-06-04 | 2013-03-26 | International Business Machines Corporation | Method for delivering, testing, and applying software patches or other changes to a conventionally installed application in virtual application containers |
US20080307415A1 (en) * | 2007-06-11 | 2008-12-11 | Novell, Inc. | Tessellated applications for user computing environments |
AU2008100700B4 (en) * | 2007-07-30 | 2008-11-13 | REAPP Technology Pty Limited | REAPP computer security system and methodology |
US20090048894A1 (en) * | 2007-08-14 | 2009-02-19 | Michel Shane Simpson | Techniques for propagating changes in projects |
WO2009043379A1 (en) * | 2007-10-04 | 2009-04-09 | Global Infinipool Gmbh | Method for accessing a data entity and its versions |
US8245217B2 (en) | 2007-10-12 | 2012-08-14 | Microsoft Corporation | Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine |
US8930945B2 (en) * | 2007-11-15 | 2015-01-06 | Novell, Inc. | Environment managers via virtual machines |
US8635611B2 (en) | 2007-11-16 | 2014-01-21 | Microsoft Corporation | Creating virtual applications |
WO2009085977A2 (en) * | 2007-12-20 | 2009-07-09 | Virtual Computer, Inc. | Virtual computing management systems and methods |
US8887158B2 (en) * | 2008-03-07 | 2014-11-11 | Sap Se | Dynamic cluster expansion through virtualization-based live cloning |
US20090249330A1 (en) * | 2008-03-31 | 2009-10-01 | Abercrombie David K | Method and apparatus for hypervisor security code |
US8312201B2 (en) * | 2008-06-09 | 2012-11-13 | International Business Machines Corporation | Managing memory allocations loans |
US8799892B2 (en) * | 2008-06-09 | 2014-08-05 | International Business Machines Corporation | Selective memory donation in virtual real memory environment |
US8230155B2 (en) * | 2008-06-26 | 2012-07-24 | Microsoft Corporation | Direct memory access filter for virtualized operating systems |
US8694989B1 (en) | 2008-07-17 | 2014-04-08 | Apple Inc. | Virtual installation environment |
US8745601B1 (en) * | 2008-07-17 | 2014-06-03 | Apple Inc. | Methods and systems for using data structures for operating systems |
US9098698B2 (en) | 2008-09-12 | 2015-08-04 | George Mason Research Foundation, Inc. | Methods and apparatus for application isolation |
US8332842B2 (en) * | 2008-11-14 | 2012-12-11 | International Business Machines Corporation | Application restore points |
US9805196B2 (en) * | 2009-02-27 | 2017-10-31 | Microsoft Technology Licensing, Llc | Trusted entity based anti-cheating mechanism |
US9954875B2 (en) | 2009-06-26 | 2018-04-24 | International Business Machines Corporation | Protecting from unintentional malware download |
US8839422B2 (en) | 2009-06-30 | 2014-09-16 | George Mason Research Foundation, Inc. | Virtual browsing environment |
US9792131B1 (en) | 2010-05-28 | 2017-10-17 | Bromium, Inc. | Preparing a virtual machine for template creation |
CN102004886B (zh) * | 2010-11-15 | 2012-07-25 | 上海安纵信息科技有限公司 | 一种基于操作系统虚拟化原理的数据防泄漏方法 |
US8931037B2 (en) * | 2010-12-27 | 2015-01-06 | Microsoft Corporation | Policy-based access to virtualized applications |
KR101760778B1 (ko) * | 2011-01-17 | 2017-07-26 | 에스프린팅솔루션 주식회사 | 컴퓨터시스템 및 그 프로그램 업데이트 방법 |
US8479295B2 (en) * | 2011-03-30 | 2013-07-02 | Intel Corporation | Method and apparatus for transparently instrumenting an application program |
US9081959B2 (en) | 2011-12-02 | 2015-07-14 | Invincea, Inc. | Methods and apparatus for control and detection of malicious content using a sandbox environment |
CN102609299B (zh) * | 2012-01-13 | 2015-03-11 | 深圳市深信服电子科技有限公司 | 虚拟化系统及其创建方法、装置 |
WO2014046974A2 (en) | 2012-09-20 | 2014-03-27 | Case Paul Sr | Case secure computer architecture |
US9256532B2 (en) * | 2012-10-11 | 2016-02-09 | Industrial Technology Research Institute | Method and computer system for memory management on virtual machine |
US9766912B1 (en) | 2012-11-27 | 2017-09-19 | Amazon Technologies, Inc. | Virtual machine configuration |
US10713356B2 (en) | 2013-03-04 | 2020-07-14 | Crowdstrike, Inc. | Deception-based responses to security attacks |
EP3063625A4 (en) * | 2013-10-31 | 2017-04-26 | Hewlett-Packard Enterprise Development LP | Copy-on-write update-triggered consistency |
WO2015175753A1 (en) * | 2014-05-14 | 2015-11-19 | Hay Peter Mcclelland | Systems and methods for ensuring computer system security via a virtualized layer of application abstraction |
US10445122B2 (en) * | 2016-02-08 | 2019-10-15 | Vmware, Inc. | Effective and efficient virtual machine template management for cloud environments |
US10885189B2 (en) | 2017-05-22 | 2021-01-05 | Microsoft Technology Licensing, Llc | Isolated container event monitoring |
WO2018227549A1 (en) * | 2017-06-16 | 2018-12-20 | Alibaba Group Holding Limited | Determining processor utilization of multiprocessing system with virtualization |
CN110866245B (zh) * | 2019-11-13 | 2023-11-07 | 哈尔滨工业大学 | 一种维护虚拟机文件安全的检测方法及检测系统 |
Family Cites Families (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4464747A (en) * | 1982-02-18 | 1984-08-07 | The Singer Company | High reliability memory |
US4939694A (en) * | 1986-11-03 | 1990-07-03 | Hewlett-Packard Company | Defect tolerant self-testing self-repairing memory system |
US5434562A (en) * | 1991-09-06 | 1995-07-18 | Reardon; David C. | Method for limiting computer access to peripheral devices |
US6381694B1 (en) * | 1994-02-18 | 2002-04-30 | Apple Computer, Inc. | System for automatic recovery from software problems that cause computer failure |
JP3365581B2 (ja) * | 1994-07-29 | 2003-01-14 | 富士通株式会社 | 自己修復機能付き情報処理装置 |
JP3200661B2 (ja) * | 1995-03-30 | 2001-08-20 | 富士通株式会社 | クライアント/サーバシステム |
US5826012A (en) * | 1995-04-21 | 1998-10-20 | Lettvin; Jonathan D. | Boot-time anti-virus and maintenance facility |
JP3512264B2 (ja) * | 1995-05-08 | 2004-03-29 | 富士通株式会社 | 光増幅装置 |
US6327653B1 (en) * | 1995-11-07 | 2001-12-04 | Samsung Electronics Co., Ltd. | Technique for easily changing operating systems of a digital computer system using at least two pushbuttons |
US5764878A (en) * | 1996-02-07 | 1998-06-09 | Lsi Logic Corporation | Built-in self repair system for embedded memories |
US5732268A (en) * | 1996-02-26 | 1998-03-24 | Award Software International | Extended BIOS adapted to establish remote communication for diagnostics and repair |
US5894551A (en) * | 1996-06-14 | 1999-04-13 | Huggins; Frank | Single computer system having multiple security levels |
US5841712A (en) * | 1996-09-30 | 1998-11-24 | Advanced Micro Devices, Inc. | Dual comparator circuit and method for selecting between normal and redundant decode logic in a semiconductor memory device |
GB9622684D0 (en) * | 1996-10-31 | 1997-01-08 | Sgs Thomson Microelectronics | An integrated circuit device and method of communication therwith |
US5969632A (en) * | 1996-11-22 | 1999-10-19 | Diamant; Erez | Information security method and apparatus |
US6202153B1 (en) * | 1996-11-22 | 2001-03-13 | Voltaire Advanced Data Security Ltd. | Security switching device |
US5922072A (en) * | 1997-01-03 | 1999-07-13 | Ncr Corporation | Method and apparatus for creating alternate boot environments in a computer |
US6009518A (en) * | 1997-01-15 | 1999-12-28 | Shiakallis; Peter Paul | Computer system for providing improved security for stored information |
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
US5860001A (en) * | 1997-05-19 | 1999-01-12 | International Business Machines Corporation | Computer system having at least two boot sequences |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
KR100502400B1 (ko) * | 1997-07-31 | 2005-11-03 | 삼성전자주식회사 | 복수의주변저장장치선택제어기능을갖는컴퓨터및그선택제어방법 |
US6016553A (en) * | 1997-09-05 | 2000-01-18 | Wild File, Inc. | Method, software and apparatus for saving, using and recovering data |
US5920515A (en) * | 1997-09-26 | 1999-07-06 | Advanced Micro Devices, Inc. | Register-based redundancy circuit and method for built-in self-repair in a semiconductor memory device |
US6170055B1 (en) * | 1997-11-03 | 2001-01-02 | Iomega Corporation | System for computer recovery using removable high capacity media |
US6289426B1 (en) * | 1998-02-24 | 2001-09-11 | Adaptec, Inc. | Drive preparation methods for intelligent backup systems |
US6205527B1 (en) * | 1998-02-24 | 2001-03-20 | Adaptec, Inc. | Intelligent backup and restoring system and method for implementing the same |
US6374366B1 (en) * | 1998-02-24 | 2002-04-16 | Adaptec, Inc. | Automated drive repair systems and methods |
JP3693807B2 (ja) * | 1998-03-17 | 2005-09-14 | 富士通株式会社 | クライアント/サーバシステム、コンピュータ及び記録媒体 |
US6067618A (en) * | 1998-03-26 | 2000-05-23 | Innova Patent Trust | Multiple operating system and disparate user mass storage resource separation for a computer system |
US20020095557A1 (en) * | 1998-06-22 | 2002-07-18 | Colin Constable | Virtual data storage (VDS) system |
US6347375B1 (en) * | 1998-07-08 | 2002-02-12 | Ontrack Data International, Inc | Apparatus and method for remote virus diagnosis and repair |
US6457069B1 (en) * | 1998-07-23 | 2002-09-24 | Compaq Information Technologies Group, L.P. | Method and apparatus for providing support for dynamic resource assignment and configuration of peripheral devices when enabling or disabling plug-and-play aware operating systems |
EP0978785A1 (en) * | 1998-08-07 | 2000-02-09 | Hewlett-Packard Company | Data backup and recovery |
US6577920B1 (en) * | 1998-10-02 | 2003-06-10 | Data Fellows Oyj | Computer virus screening |
US6324546B1 (en) * | 1998-10-12 | 2001-11-27 | Microsoft Corporation | Automatic logging of application program launches |
US6691230B1 (en) * | 1998-10-15 | 2004-02-10 | International Business Machines Corporation | Method and system for extending Java applets sand box with public client storage |
US6421792B1 (en) * | 1998-12-03 | 2002-07-16 | International Business Machines Corporation | Data processing system and method for automatic recovery from an unsuccessful boot |
US6367042B1 (en) * | 1998-12-11 | 2002-04-02 | Lsi Logic Corporation | Testing methodology for embedded memories using built-in self repair and identification circuitry |
US6658571B1 (en) * | 1999-02-09 | 2003-12-02 | Secure Computing Corporation | Security framework for dynamically wrapping software applications executing in a computing system |
US6938096B1 (en) * | 1999-04-12 | 2005-08-30 | Softricity, Inc. | Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port |
US6697950B1 (en) * | 1999-12-22 | 2004-02-24 | Networks Associates Technology, Inc. | Method and apparatus for detecting a macro computer virus using static analysis |
WO2001050244A1 (en) * | 2000-01-06 | 2001-07-12 | Chan Kam Fu | Running microsoft windows 95/98 on ramdisk |
US6640317B1 (en) * | 2000-04-20 | 2003-10-28 | International Business Machines Corporation | Mechanism for automated generic application damage detection and repair in strongly encapsulated application |
US7096381B2 (en) * | 2001-05-21 | 2006-08-22 | Self Repairing Computer, Inc. | On-the-fly repair of a computer |
US7111201B2 (en) * | 2000-05-19 | 2006-09-19 | Self Repairing Computers, Inc. | Self repairing computer detecting need for repair and having switched protected storage |
US20060277433A1 (en) * | 2000-05-19 | 2006-12-07 | Self Repairing Computers, Inc. | Computer having special purpose subsystems and cyber-terror and virus immunity and protection features |
US7137034B2 (en) * | 2000-05-19 | 2006-11-14 | Vir2Us, Inc. | Self repairing computer having user accessible switch for modifying bootable storage device configuration to initiate repair |
US7100075B2 (en) * | 2000-05-19 | 2006-08-29 | Sel Repairing Computers, Inc. | Computer system having data store protected from internet contamination by virus or malicious code and method for protecting |
EP1290558A1 (en) * | 2000-05-19 | 2003-03-12 | Self Repairing Computers, Inc. | A computer with switchable components |
GB2357939B (en) * | 2000-07-05 | 2002-05-15 | Gfi Fax & Voice Ltd | Electronic mail message anti-virus system and method |
US6754818B1 (en) * | 2000-08-31 | 2004-06-22 | Sun Microsystems, Inc. | Method and system for bootstrapping from a different boot image when computer system is turned on or reset |
EP1327191B1 (en) * | 2000-09-22 | 2013-10-23 | Lumension Security, Inc. | Non-invasive automatic offsite patch fingerprinting and updating system and method |
GB2367656A (en) * | 2000-10-06 | 2002-04-10 | Hewlett Packard Co | Self-repairing operating system for computer entities |
TWI222020B (en) * | 2000-10-19 | 2004-10-11 | Wistron Corp | Method for installing and pre-setup of software |
US20020078366A1 (en) * | 2000-12-18 | 2002-06-20 | Joseph Raice | Apparatus and system for a virus-resistant computing platform |
US6859876B2 (en) * | 2000-12-29 | 2005-02-22 | Hewlett-Packard Development Company, L.P. | System and method for detecting and using a replacement boot block during initialization by an original boot block |
US6922774B2 (en) * | 2001-05-14 | 2005-07-26 | The United States Of America As Represented By The National Security Agency | Device for and method of secure computing using virtual machines |
US20020174137A1 (en) * | 2001-05-15 | 2002-11-21 | Wolff Daniel Joseph | Repairing alterations to computer files |
US7028305B2 (en) * | 2001-05-16 | 2006-04-11 | Softricity, Inc. | Operating system abstraction and protection layer |
US7392541B2 (en) * | 2001-05-17 | 2008-06-24 | Vir2Us, Inc. | Computer system architecture and method providing operating-system independent virus-, hacker-, and cyber-terror-immune processing environments |
US7849360B2 (en) * | 2001-05-21 | 2010-12-07 | Vir2Us, Inc. | Computer system and method of controlling communication port to prevent computer contamination by virus or malicious code |
US6917999B2 (en) * | 2001-06-29 | 2005-07-12 | Intel Corporation | Platform and method for initializing components within hot-plugged nodes |
US7536598B2 (en) * | 2001-11-19 | 2009-05-19 | Vir2Us, Inc. | Computer system capable of supporting a plurality of independent computing environments |
US20030105973A1 (en) * | 2001-12-04 | 2003-06-05 | Trend Micro Incorporated | Virus epidemic outbreak command system and method using early warning monitors in a network environment |
US6829617B2 (en) * | 2002-02-15 | 2004-12-07 | International Business Machines Corporation | Providing a snapshot of a subset of a file system |
US7788699B2 (en) * | 2002-03-06 | 2010-08-31 | Vir2Us, Inc. | Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code |
US7409717B1 (en) * | 2002-05-23 | 2008-08-05 | Symantec Corporation | Metamorphic computer virus detection |
US7162724B2 (en) * | 2002-06-12 | 2007-01-09 | Fsl, L.L.C. | Layered computing systems and methods |
DE60304207D1 (de) * | 2002-07-26 | 2006-05-11 | Green Border Technologies | Wasserzeicheneinbettung auf der Paketebene |
US8209680B1 (en) * | 2003-04-11 | 2012-06-26 | Vmware, Inc. | System and method for disk imaging on diverse computers |
US20040221146A1 (en) * | 2003-04-30 | 2004-11-04 | International Business Machines Corporation | Build time dynamic installation of drivers on cloned systems |
US7519814B2 (en) * | 2003-09-15 | 2009-04-14 | Trigence Corp. | System for containerization of application sets |
WO2005043360A1 (en) * | 2003-10-21 | 2005-05-12 | Green Border Technologies | Systems and methods for secure client applications |
US20050144617A1 (en) * | 2003-12-06 | 2005-06-30 | International Business Machines Corporation | Automatic configuration of reinstall information |
US7574706B2 (en) * | 2003-12-15 | 2009-08-11 | Microsoft Corporation | System and method for managing and communicating software updates |
US7908653B2 (en) * | 2004-06-29 | 2011-03-15 | Intel Corporation | Method of improving computer security through sandboxing |
ES2681522T3 (es) * | 2004-07-20 | 2018-09-13 | Microsoft Technology Licensing, Llc | Procedimiento y sistema para minimizar la pérdida en una aplicación informática |
KR20070049166A (ko) * | 2004-07-21 | 2007-05-10 | 소프트리시티, 인크. | 목표 기기 상에서의 종속 소프트웨어 패키지의 검출 및이용을 자동화하기 위한 방법 및 소프트웨어 리포지터리를생성하기 위한 시스템 |
US8146073B2 (en) * | 2004-09-30 | 2012-03-27 | Microsoft Corporation | Updating software while it is running |
US20060137013A1 (en) * | 2004-12-06 | 2006-06-22 | Simon Lok | Quarantine filesystem |
US7721282B1 (en) * | 2004-12-30 | 2010-05-18 | Panta Systems, Inc. | Block-level I/O subsystem for distributed application environment management |
US20060230454A1 (en) * | 2005-04-07 | 2006-10-12 | Achanta Phani G V | Fast protection of a computer's base system from malicious software using system-wide skins with OS-level sandboxing |
US7685469B2 (en) * | 2005-04-22 | 2010-03-23 | Microsoft Corporation | Method and apparatus of analyzing computer system interruptions |
-
2006
- 2006-10-23 US US11/585,790 patent/US20070106993A1/en not_active Abandoned
- 2006-10-23 JP JP2008536612A patent/JP2009512939A/ja active Pending
- 2006-10-23 EP EP06836493A patent/EP1952233A2/en not_active Withdrawn
- 2006-10-23 TW TW095139010A patent/TW200745951A/zh unknown
- 2006-10-23 WO PCT/US2006/041486 patent/WO2007048062A2/en active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013500531A (ja) * | 2009-07-28 | 2013-01-07 | エアバス | 異なるセキュリティレベル又は異なる責任限界を必要とする機能を実施する多目的データの自動処理 |
KR101729680B1 (ko) * | 2015-12-01 | 2017-04-25 | 한국전자통신연구원 | 경량 하이퍼바이저에 기반하는 운영체제의 제공 방법 및 장치 |
US10365939B2 (en) | 2015-12-01 | 2019-07-30 | Electronics And Telecommunications Research Institute | Method and apparatus for providing operating system based on lightweight hypervisor |
Also Published As
Publication number | Publication date |
---|---|
WO2007048062A2 (en) | 2007-04-26 |
TW200745951A (en) | 2007-12-16 |
WO2007048062A3 (en) | 2009-04-30 |
US20070106993A1 (en) | 2007-05-10 |
EP1952233A2 (en) | 2008-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009512939A (ja) | 複数のオペレーティングシステムのインスタンスが単一のマシン資源を安全に共有することを可能とする、オペレーティングシステムの仮想化、を有するコンピュータセキュリティ方法 | |
US11681535B2 (en) | Linking virtualized application namespaces at runtime | |
US10261800B2 (en) | Intelligent boot device selection and recovery | |
US8826269B2 (en) | Annotating virtual application processes | |
RU2432605C1 (ru) | Способ расширения, основанный на сервере архитектуры десктопной виртуальной машины на клиентские машины, и машиночитаемая среда | |
EP2513789B1 (en) | A secure virtualization environment bootable from an external media device | |
US9286098B1 (en) | Using master file template area to increase density of virtual machines in a computer system | |
US8074231B2 (en) | Configuration of isolated extensions and device drivers | |
US8910155B1 (en) | Methods and systems for injecting endpoint management agents into virtual machines | |
JP4931255B2 (ja) | 仮想化されたファイル・システム | |
US8239608B1 (en) | Secure computing environment | |
US20080127348A1 (en) | Network computer system and method using thin user client and virtual machine to provide immunity to hacking, viruses and spy ware | |
US20110061046A1 (en) | Installing Software Applications in a Layered Virtual Workspace | |
US20110061045A1 (en) | Operating Systems in a Layerd Virtual Workspace | |
US8495750B2 (en) | Filesystem management and security system | |
JP2005129066A (ja) | オペレーティングシステムリソース保護 | |
US9135038B1 (en) | Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame | |
US9354906B1 (en) | Managing the eviction process | |
US9311475B2 (en) | Trusted execution of binaries and modules | |
US9792131B1 (en) | Preparing a virtual machine for template creation | |
US9390275B1 (en) | System and method for controlling hard drive data change | |
US9104544B1 (en) | Mitigating eviction by maintaining mapping tables | |
WO2007022687A1 (fr) | Système et procédé de contrôle de sécurité de système d’exploitation | |
US11693689B2 (en) | Online disk encryption using mirror driver | |
US10552172B2 (en) | Virtual appliance supporting multiple instruction set architectures |