JP2006018814A - 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法 - Google Patents

仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法 Download PDF

Info

Publication number
JP2006018814A
JP2006018814A JP2005158859A JP2005158859A JP2006018814A JP 2006018814 A JP2006018814 A JP 2006018814A JP 2005158859 A JP2005158859 A JP 2005158859A JP 2005158859 A JP2005158859 A JP 2005158859A JP 2006018814 A JP2006018814 A JP 2006018814A
Authority
JP
Japan
Prior art keywords
virtual
computing environment
virtual computing
vhd
instructions
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
Application number
JP2005158859A
Other languages
English (en)
Inventor
Eric P Traut
ピー.トラウト エリック
Rene Antonio Vega
アントニオ ベガ レーン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006018814A publication Critical patent/JP2006018814A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Abstract

【課題】 仮想デバイスを仮想コンピューティング環境に動的に追加する手段を提供すること。
【解決手段】 マニフェストは、デバイスリストおよび外部デバイスディレクトリを含む。外部デバイスディレクトリは、この仮想化コンピューティングシステムのユーザにこの仮想コンピューティング環境に仮想デバイスを追加するために必要とされる仕様を含むソフトウェアプラグインを追加するためのディレクトリを提供する。ホストオペレーティングシステムおよび仮想デバイスは、一連の状態を介して、初期化、起動、記憶された状態のローディング、通常状態における動作、将来の復元のための状態の保存、パワーダウン、ならびにテアリングダウンおよび電源遮断を介して進む。
【選択図】 図4

Description

本発明は、一般に仮想マシン環境(virtual machine)において実行される(「プロセッサ仮想化」としても知られている)仮想マシンおよびソフトウェアの分野に関する。より詳細には、本発明は、物理デバイスの動作をエミュレートする仮想デバイスを開発し使用するためのシステムおよび方法を対象とする。
コンピュータは、特定の1組のシステム命令を実行するように設計される汎用のCPU(中央演算処理装置)を含んでいる。同様なアーキテクチャまたは設計仕様を有する1グループのプロセッサは、同じプロセッサファミリのメンバと考えることができる。現行のプロセッサファミリの例には、アリゾナ州、フェニックス市のモトローラ社が製造するモトローラ680X0プロセッサファミリ、カリフォルニア州、サニーベール市のインテルコーポレーションが製造するインテル80X86プロセッサファミリ、モトローラ社が製造し、カリフォルニア州、クパチーノ市のアップルコンピュータ社が製造するコンピュータ中で使用されるパワーPCプロセッサファミリが含まれる。1グループのプロセッサは、それらが同様なアーキテクチャおよび設計を考慮しているので同じファミリ中に存在することもあるが、プロセッサは、それらのクロック速度および他の性能パラメータに応じてファミリ内で大きく異なることもある。
マイクロプロセッサの各ファミリは、そのプロセッサファミリに固有の諸命令を実行する。プロセッサまたはプロセッサのファミリが実行することができる集合的な1組の命令は、そのプロセッサの命令セットとして知られている。一例として、インテル80X86プロセッサファミリが使用する命令セットは、パワーPCプロセッサファミリが使用する命令セットとは互換性がない。このインテル80X86命令セットは、CISC(複雑命令セットコンピュータ)フォーマットに基づいている。モトローラのパワーPC命令セットは、RISC(縮小命令セットコンピュータ)フォーマットに基づいている。CISCプロセッサは、多数の命令を使用しており、これらの命令の一部は、かなり複雑なファンクションを実施することができるが、この命令は、一般に、実行するために多数のクロックサイクルを要する。RISCプロセッサは、さらに少ない数の使用可能な命令を使用し、ずっと高速で実行されるさらに簡単な1組のファンクションを実施する。
コンピュータシステムの中のプロセッサファミリの独自性はまた、一般的に、コンピュータシステムのハードウェアアーキテクチャの他の要素の間で非互換性をもたらすことになる。インテル80X86プロセッサファミリからのプロセッサを用いて製造されるコンピュータシステムは、パワーPCプロセッサファミリからのプロセッサを用いて製造されるコンピュータシステムのハードウェアアーキテクチャとは異なるハードウェアアーキテクチャを有することになる。プロセッサ命令セットおよびコンピュータシステムのハードウェアアーキテクチャの独自性のために、アプリケーションソフトウェアプログラムは一般的に、特定のオペレーティングシステムを実行する特定のコンピュータシステム上で実行されるように書かれる。
コンピュータ製造業者は、そのコンピュータ製造業者の製品ラインに関連するマイクロプロセッサファミリ上で実行されるアプリケーションを、減らすのでなくより多く実行させることによってその製造業者のマーケットシェアを最大にしたいと望んでいる。あるコンピュータシステム上で実行することができるオペレーティングシステムおよびアプリケーションプログラムの数を増大するために、ある技術分野が発展してきており、この技術分野においては、ホストと呼ばれる、1タイプのCPUを有する所与のコンピュータは、ゲストと呼ばれる無関係のタイプのCPUの命令をそのホストコンピュータがエミュレートすることができるようにするエミュレータプログラムを含むことになる。したがって、このホストコンピュータは、所与のゲスト命令に応答して1つまたは複数のホスト命令を呼び出せるようにするアプリケーションを実行することになる。したがって、このホストコンピュータは、それ自体のハードウェアアーキテクチャ用のソフトウェア設計も、無関係のハードウェアアーキテクチャを有するコンピュータ用に書かれたソフトウェアも共に実行することができる。より具体的な例としては、アップルコンピュータが製造するコンピュータシステムでは、例えばPCベースのコンピュータシステム用に書かれたオペレーティングシステムおよびプログラムを実行することができる。エミュレータプログラムを使用して1つのCPU上で複数の互換性がないオペレーティングシステムを同時に動作させることも可能にすることができる。この構成においては、各オペレーティングシステムは、他のオペレーティングシステムと互換性がないが、エミュレータプログラムは、2つのオペレーティングシステムのうちの一方のホストとしての役割を果たすことができ、そうでなければ互換性のないオペレーティングシステムを同じコンピュータシステム上で同時に実行できるようにする。
ゲストコンピュータシステムがホストコンピュータシステム上でエミュレートされる場合に、このゲストコンピュータシステムは、1つの特定のハードウェアアーキテクチャのオペレーションの純粋なソフトウェア表現としてこのホストコンピュータシステム中に存在するにすぎないので、このゲストコンピュータシステムは、「仮想マシン」であると言われる。エミュレータ、仮想マシン、およびプロセッサエミュレーションという用語は、時々交換可能なように使用されて、全体のコンピュータシステムのハードウェアアーキテクチャを模倣し、またはエミュレートする機能を指し示している。一例として、カリフォルニア州、サンマテオ市のConnectix Corporationが作成したVirtual PCソフトウェアは、インテル80X86ペンティアム(登録商標)プロセッサおよび様々なマザーボードコンポーネントとカードを含むコンピュータ全体をエミュレートする。これらのコンポーネントのオペレーションは、このホストマシン上で実行される仮想マシン中でエミュレートされる。パワーPCプロセッサを有するコンピュータシステムなどのホストコンピュータのオペレーティングシステムソフトウェアおよびハードウェアアーキテクチャ上で実行されるエミュレータプログラムは、この全体のゲストコンピュータシステムのオペレーションを模倣する。
このエミュレータプログラムは、このホストマシンのハードウェアアーキテクチャとこのエミュレートされる環境内で実行されるソフトウェアが伝送する命令との間のやりとりとしての役割を果たす。このエミュレータプログラムは、HOS(host operating systemホストオペレーティングシステム)とすることができ、このHOSは、この物理コンピュータハードウェア上で直接実行されるオペレーティングシステムである。代わりに、このエミュレートされた環境はまた、VMM(virtual machine monitor仮想マシンモニタ)とすることもでき、このVMMは、このハードウェア上で直接実行されるソフトウェアレイヤであり、またこのVMMは、このVMMが仮想化しているハードウェアと同じインターフェースを見えるようにすることによってこのマシンのすべてのリソースを仮想化する(これにより、VMMは、それについて実行中のオペレーティングシステムレイヤから気付かれずに済むことができるようになる)。ホストオペレーティングシステムとVMMは、この同じ物理ハードウェア上で協力して実行されることもある。
仮想デバイスは、ソフトウェアで実施される論理デバイスであり、これは、ある種の実際の物理デバイスまたは理想化された物理デバイスに対応する。一般に、仮想デバイスをモデリングするための2つのアプローチ、すなわち、既存のハードウェア部分を直接にモデル化する「ハードウェア仮想デバイス(hardware virtual device)」アプローチと、この物理ハードウェアの単なる反映ではないが、VM(virtual machine仮想マシン)環境のために最適化される「理想化仮想デバイス(idealized virtual device)」アプローチが存在する。
このハードウェア仮想デバイスアプローチは、互換性に関して利点を提供する。この仮想デバイスは、あらゆる点において実デバイスとまったく同様に動作するので、このデバイス(例えば、ドライバ)と対話するように設計されているソフトウェアは、修正することなくハードウェア仮想デバイスと共に動作することになる。しかし、物理ハードウェアは、それ自体かなりのオーバーヘッドコスト(および効率の悪さ)を招くことなく仮想デバイスを用いてエミュレートすることがしばしば難しいことがあるので、ハードウェア仮想デバイスは、性能に話が及ぶと不利になるが、この理由はハードウェア設計者が一般に仮想化の課題を考慮に入れておらず、したがってハードウェア仮想デバイスはそれらの実ハードウェア対応物よりもしばしば著しく低速になってしまうことがあるからである。
他方、理想化仮想デバイスにより、開発者が実施するのも簡単で使用するのも効率的な仮想デバイスを設計するためのかなりの自由度がもたらされる。理想化仮想デバイスの設計では、物理ハードウェア設計が課す制限に従う必要がないので、理想化仮想デバイスは、VM環境内での使用のために最適化することができる。さらに、理想化仮想デバイスの開発者は、既存のソフトウェアが正しいオペレーションのために依存する可能性のある(例えば、タイミングや状態変化など)微妙な副作用について心配する必要がない。さらに、開発者は、実際には存在しないハードウェアに類似した理想化仮想デバイス(例えば、ゲストシステムとホストシステムの間の通信を可能とする仮想デバイス)を作成することもできる。しかし、この仮想デバイスは、実際にはあらゆる点でその実デバイスとまったく同様には動作することができず、その物理デバイス(例えば、ドライバ)と対話するように設計されているソフトウェアは、修正せずには理想化仮想デバイスと共に正しくは動作できず、またはまったく動作できないので、この理想化仮想デバイスアプローチを使用する場合には、互換性の問題が生じる可能性があるというリスクが存在する。
現状においては、仮想マシン中で使用可能なこの1組の(理想化またはハードウェア)仮想デバイスは、この仮想マシンソフトウェアが書かれる時点において前もって決められており、現行の仮想マシン製品は、新しい仮想デバイスを追加する手段を含んではいない。これは、デバイスの数および種類が、その仮想マシンソフトウェア中に含まれるデバイスの数および種類に制限されてしまうことを意味する。技術が進歩し、(物理および仮想)デバイス数が増大し続けるにつれて、仮想マシンソフトウェアに新しい仮想デバイスを追加することができる機能は、より重要になってきている。仮想マシン環境において必要に応じて新しい仮想デバイスを動的に追加する方法が必要になっている。
仮想マシン環境の必要性に加えて、新しい仮想デバイスをシステムに追加してハードウェアの開発も、このハードウェア用のソフトウェアドライバの開発も共にサポートする手段についての一般的な必要性も存在している。新しいハードウェアについては、新しいハードウェアデバイス中のバグおよび他の予期しないエラーを見出し取り除くための品質テストを行う必要性も存在している。一般に、このタイプのテストに対するアプローチは、このハードウェアデバイスの設計が完了し、プロトタイプの製造が完了した後まで遅延させられる。しかし、この設計−プロトタイプ−テストというプロセスは、エラーがテスト中に見出される場合には、このプロセスがもう一度最初から開始され、したがって新しいデバイスでは長い開発サイクルがもたらされることになる点で非効率的である。物理デバイス製品についての製品化に要する時間(time to market)を短縮する方法が必要になっている。同様に、物理ハードウェアデバイスにそのデバイスドライバによって処理するための多種多様なエラーをタイムリに意味があるように発生させることは難しいので、以前のデバイスも新しいデバイスも含めた物理ハードウェアデバイス用の新しいデバイスドライバソフトウェアの完全なテストを行うことは、よくても時間がかかり、一部のケースでは、完了するのが困難または不可能にさえなる。その結果、そのテストが実行される物理ハードウェアデバイスは、有限なテスト時間中に全範囲のエラーを示さない(また示すことが実際にできない)ので、このソフトウェアドライバ中のドライバコードの経路の多くが十分には動作試験されないことになってしまう。したがって、デバイスドライバソフトウェアテストのために必要な時間を短縮し、このテストの品質を改善するための方法が必要になっている。
仮想デバイスは、表面上は両者に関して共に解決方法を提供するように見える。すなわち、物理プロトタイプデバイスを修正するよりも仮想デバイスを修正する方が簡単なので、提案された物理ハードウェアデバイスの機能を反映するハードウェア仮想デバイスを使用して、物理プロトタイプが開発される前に、ある種のハードウェア機能および互換性をテストし、それによって設計プロセスがショートカットされる。同様に、新しいデバイスドライバソフトウェアをテストするために、理想化仮想デバイスを使用して、この新しいデバイスドライバを十分にテストするのに必要な所望のハードウェアデバイスエラーのすべてを生成することができる(この場合、この仮想デバイスは、この所望のエラーを作成する意味において「理想化」されており、それによって、わざわざそうするためのハードウェアデバイスを物理的に作成する必要がなくなる)。しかし、このアプローチの短所は、仮想デバイスがハードコード化される傾向があり、すなわち仮想デバイスがこの仮想コンピューティング環境のモノリシックコンテナ中に直接に書き込まれる傾向があり、したがって簡単に修正可能ではないことである。例えば、既存の仮想マシン環境中においては、この仮想マシンは、ロードするためにハードコードされるこれらの仮想デバイスしかロードしない。したがって、新しい仮想デバイスの動的で修正可能なローディングを可能にする仮想コンピューティング環境が、当技術分野において必要になっている。
本発明のいくつかの実施形態では、仮想デバイスを仮想コンピューティング環境に動的に追加する手段が提供されている。本発明は、(内部デバイスリストを含む)マニフェストを有する仮想化コンピューティングシステム、ならびに仮想デバイスをこの仮想コンピューティング環境に追加するために必要とされる仕様を含むソフトウェアプラグインを追加する手段をこの仮想化コンピューティングシステムのユーザに提供する外部デバイスディレクトリを含んでいる。仮想デバイスを追加する方法が説明されており、ここでは、この外部デバイスディレクトリが走査され、適切なデバイスプロパティがそのユーザによって取得され、指定され、保存され、これらの新しい仮想デバイスがこのマニフェストに追加され、この仮想コンピューティング環境において使用可能になっている。
これらのうちのある種の実施形態は特に、仮想化コンピューティングシステムを動作させる方法を提供することを対象にしており、ここでは、このホストオペレーティングシステムおよびこれらの仮想デバイスは、一連の状態を介して、すなわち特に、初期化、起動、記憶された状態のローディング、通常状態における動作、将来の復元(restoration)のための状態の保存、パワーダウン、ならびにテアリングダウンおよび電源遮断を介して進む。通常オペレーションに先立つ状態は、これらの仮想デバイスが動作する準備として記述される。この通常の動作状態は、すべてのデバイスの準備ができており、このホストオペレーティングシステムが、ゲストオペレーティングシステムからの要求を受け入れる状態である。通常オペレーションに続く状態は、電源遮断されるコンピューティングデバイスについての準備として通常オペレーションに先立ったステップを元に戻すこと(undoing)として説明される。
これらのうちのある種の実施形態は特に、物理デバイスの開発における仮想デバイスをテストする手段を提供することを対象にしている。これらの実施形態では、2つの重要な方法で、物理デバイスの開発が支援される。すなわち、1)これらの実施形態は、プロトタイプが物理的に製造される以前に、これらのデバイスのテストが開始されることを可能にしており、2)これらの実施形態は、このデバイスにエラーを意図的に導入することができるようにしており、これにより、デバイスドライバソフトウェア内の経路の以前から可能であったよりもずっと完全なテストが提供される。
ある種の追加の実施形態は、デバイスドライバソフトウェアの開発においてテストし支援するためのエラーを引き起こしやすい理想化仮想デバイスを実現する手段を提供することを対象にしている。これらの実施形態では、2つの重要な方法で、デバイスドライバの開発が支援される。すなわち、(1)これらの実施形態は、エラーを引き起こしやすいプロトタイプをわざわざ開発せずにこのデバイスのテストを可能にしており、(2)これらの実施形態は、この新しいデバイスドライバのより完全でより豊富なテストのために、広範囲のエラーを意図的に生成できるようにしている。
前述の概要、ならびに好ましい実施形態の以下の詳細な説明は、添付の図面を併せ読む場合にさらによく理解されよう。本発明を例証するために本発明の例示の構成が図面に示されている。しかし、本発明は、これらの開示された特定の方法および手段だけに限定されることはない。
本発明の主題については、法令によって定められた要件を満たすように具体性をもって説明している。しかし、この説明それ自体が、本特許の範囲を限定することは意図していない。そうではなくて、本発明者は、この請求された主題を別の方法で実施して、現在または将来の他の技術と組み合わせて、この文書中で説明されるステップと異なるステップ、または同様なステップの組合せを含むようにすることもできると考えている。さらに、本明細書中では、用語「ステップ」を使用して、使用される方法の異なる要素を示すこともできるが、この用語は、個別のステップの順序が明示的に説明されない限り、また明示的に説明される場合以外は、本明細書中で説明する様々なステップの間のどのような特定の順序も暗示するとは解釈すべきではない。
コンピュータ環境
本発明の多数の実施形態は、コンピュータ上で実行することができる。図1および以下の説明では、本発明を実施することができる適切なコンピューティング環境の一般的な簡潔な説明を提供することが意図されている。必要ではないが、本発明については、クライアントワークステーションやサーバなどのコンピュータによって実行されるプログラムモジュールなどコンピュータ実行可能命令の一般的な文脈で説明することにする。一般的に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含めて他のコンピュータシステム構成を用いて実施することもできることが当業者には理解されよう。本発明は、分散コンピューティング環境中において実行することもでき、ここでは、タスクは、通信ネットワークを介してリンクされたリモートプロセッシングデバイスによって実施される。分散コンピューティング環境においては、プログラムモジュールは、ローカルメモリストレージデバイス中にもリモートメモリストレージデバイス中にも配置することができる。
図1に示すように、例示の汎用コンピューティングシステムは、処理装置21、システムメモリ22、およびこのシステムメモリを含めて様々なシステムコンポーネントを処理装置21に結合するシステムバス23を含めて、従来のパーソナルコンピュータ20などを含んでいる。このシステムバス23は、メモリバスまたはメモリコントローラ、ペリフェラルバス、および様々なバスアーキテクチャのうちのどれかを使用したローカルバスを含めて、いくつかのタイプのバス構造のうちのどれにすることもできる。このシステムメモリは、ROM(読取り専用メモリ)24およびRAM(ランダムアクセスメモリ)25を含んでいる。起動中などパーソナルコンピュータ20内の要素間で情報を転送する助けをする基本ルーチンを含むBIOS(基本入出力システム)26は、ROM24中に記憶される。パーソナルコンピュータ20は、図示していないハードディスクから情報を読み取りそれに情報を書き込むハードディスクドライブ27、着脱可能な磁気ディスク29から情報を読み取りそれに情報を書き込む磁気ディスクドライブ28、およびCD−ROMや他の光媒体など着脱可能な光ディスク31から情報を読み取りそれに情報を書き込む光ディスクドライブ30をさらに含んでいる。ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれハードディスクドライブインターフェース32、磁気ディスクドライブインターフェース33、および光ドライブインターフェース34によってシステムバス23に接続される。これらのデバイスおよびその関連するコンピュータ読取り可能媒体は、パーソナルコンピュータ20のためのコンピュータ読取り可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。本明細書中で説明される例示の環境は、ハードディスク、着脱可能磁気ディスク29、および着脱可能光ディスク31を使用しているが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)などコンピュータによってアクセス可能なデータを記憶することができる、他のタイプのコンピュータ読取り可能媒体をこの例示の動作環境中において使用することもできることを当業者には理解されたい。
オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37およびプログラムデータ38を含めて、いくつかのプログラムモジュールをこのハードディスク、磁気ディスク29、光ディスク31、ROM24またはRAM25に記憶することができる。ユーザは、キーボード40やポインティングデバイス42など入力デバイスを介してパーソナルコンピュータ20中にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含むことができる。これらおよび他の入力デバイスはしばしば、このシステムバスに結合されるシリアルポートインターフェース46を介して処理装置21に接続されるが、パラレルポート、ゲームポート、USB(ユニバーサルシリアルバス)などの他のインターフェースによって接続することもできる。モニタ47または他のタイプのディスプレイデバイスもまた、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続することができる。このモニタ47に追加してパーソナルコンピュータは、一般的にスピーカやプリンタなど他のペリフェラル出力デバイス(図示せず)を含んでいる。図1の例示のシステムはまた、ホストアダプタ55、SCSI(Small Computer System Interface)バス56、およびこのSCSIバス56に接続された外部ストレージデバイス62も含んでいる。
パーソナルコンピュータ20は、リモートコンピュータ49など1つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク環境において動作することができる。リモートコンピュータ49は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードであってもよく、一般的にパーソナルコンピュータ20に対して前述した要素の多くまたはすべてを含んでいるが、メモリストレージデバイス50だけしか図1には示してはいない。図1に示す論理接続は、LAN(ローカルエリアネットワーク)51およびWAN(ワイドエリアネットワーク)52を含んでいる。かかるネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいては一般的である。
LANネットワーキング環境中で使用される場合には、パーソナルコンピュータ20は、ネットワークインターフェースまたはアダプタ53を介してLAN51に接続される。WANネットワーキング環境中で使用される場合には、パーソナルコンピュータ20は、一般的にインターネットなどのワイドエリアネットワーク52上で通信を確立するモデム54または他の手段を含んでいる。モデム54は、内蔵でもよく、また外付けでもよいが、シリアルポートインターフェース46を介してシステムバス23に接続される。ネットワーク環境においては、パーソナルコンピュータ20に対して示したプログラムモジュール、またはその一部分は、このリモートメモリストレージデバイスに記憶することができる。図に示すネットワーク接続は、例示的であり、これらのコンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。さらに、本発明の多数の実施形態がコンピュータ化されたシステムにとって特によく適していることが想定されているが、この文書中においては、本発明をかかる実施形態だけに限定することはまったく意図されていない。
仮想マシン
概念的な観点から、コンピュータシステムは、一般的にハードウェアの基本レイヤ上で実行される1つまたは複数のソフトウェアレイヤを含んでいる。この階層化は、抽象化の理由で行われる。所与のソフトウェアレイヤについてのインターフェースを定義することにより、このレイヤは、その上の他の諸レイヤによって異なるように実行することができる。うまく設計されたコンピュータシステムにおいては、各レイヤは、その直下のレイヤについてしか知らない(し、またそれにしか依存しない)。これにより、レイヤまたは「スタック」(複数の隣接レイヤ)は、前記レイヤまたはスタック上の諸レイヤに悪影響を与えずに置き換えることができるようになる。例えば、ソフトウェアアプリケーション(上位レイヤ)は、一般的にそのオペレーティングシステム(下位レイヤ)の下位レベルに依存して、ファイルをある形態の恒久的ストレージに書き込み、これらのアプリケーションは、データをフロッピー(登録商標)ディスクか、ハードドライブか、あるいはネットワークフォルダに書き込むことの間におけるその違いを理解する必要がない。この下位レイヤが、ファイルを書き込むための新しいオペレーティングシステムで置き換えられる場合にも、この上位レイヤソフトウェアアプリケーションのオペレーションは、影響を受けないままである。
階層化ソフトウェアの柔軟性により、仮想マシン(VM)が、実際には別のソフトウェアレイヤである仮想ハードウェアレイヤを表現できるようになる。このようにして、VMは、その上のソフトウェアレイヤにとって、前記ソフトウェアレイヤがそれら自体のプライベートコンピュータシステム上で実行されているという錯覚を作り出すことができ、したがってVMにより、複数の「ゲストシステム」を単一の「ホストシステム」上で同時に実行できるようにすることが可能になる。
図2は、コンピュータシステムにおけるエミュレートされた動作環境についての、ハードウェアアーキテクチャおよびソフトウェアアーキテクチャの論理階層化を示す図である。エミュレーションプログラム94が、ホストオペレーティングシステムおよび/またはハードウェアアーキテクチャ92上で実行される。エミュレーションプログラム94は、ゲストハードウェアアーキテクチャ96およびゲストオペレーティングシステム98をエミュレートする。次にソフトウェアアプリケーション100がゲストオペレーティングシステム98上で実行される。たとえソフトウェアアプリケーション100が、ホストオペレーティングシステムおよびハードウェアアーキテクチャ92とは一般的に互換性がないオペレーティングシステム上で実行されるように設計されているとしても、図2のエミュレートされた動作環境においては、エミュレーションプログラム94のオペレーションのために、ソフトウェアアプリケーション100は、コンピュータシステム90上で実行されることが可能になる。
図3Aは、物理コンピュータハードウェア102上で直接に実行されるホストオペレーティングシステムソフトウェアレイヤ104を含む仮想化コンピューティングシステムを示しており、ホストOS(host operating systemホストオペレーティングシステム)104は、このホストOSが仮想化しているハードウェアと同じインターフェースを見えるようにする(それにより、このホストOSが、その上で実行されるオペレーティングシステムレイヤによって気付かれないままであることが可能になる)ことによってこのマシンのすべてのリソースを仮想化する。
代わりに、仮想マシンモニタ、すなわちVMMソフトウェアレイヤ104’は、ホストオペレーティングシステム104”の代わりに、または並行して実行することが可能であり、この後者のオプションを図3Bに示している。簡潔に言えば、(特にホストオペレーティングシステム104に関する)以下のすべての説明は、図3Aに示すこの実施形態を対象としている。しかし、かかる説明のすべての態様は、図3Bの実施形態にも同様に適用されるはずであり、ここで、図3BのVMM104’は、機能レベル上本質的に本明細書中で以下に説明する図3Aのホストオペレーティングシステム104の役割を置き換えることになる。
もう一度、図3Aを参照すると、ホストOS104(またはVMM104’)の上には、2つの仮想マシン(VM)の実施形態、すなわち例えば仮想化されたインテル386プロセッサとすることができるVM A108と、例えばモトローラ680X0プロセッサファミリのうちの1つのプロセッサの仮想化バージョンとすることができるVM B110とが存在する。各VM108および110の上には、それぞれゲストOS(guest operating systemゲストオペレーティングシステム)A112およびB114が存在する。ゲストOS A112の上では2つのアプリケーション、すなわちアプリケーションA1 116およびアプリケーションA2 118が実行されており、ゲストOS B114上にはアプリケーションB1 120が存在する。
仮想デバイスの動的な追加
図4は、図3Bに示す仮想マシンモニタ(VMM)システム(や、代替実施形態では、図3Aに示すホストOSシステム)などの仮想化コンピューティングシステムを示している。この図において、マニフェスト122は、デバイスリストA124およびデバイスリストB126をさらに含む、ホストOS104内の構成ファイルである。マニフェスト122を使用してこれらの仮想デバイスを構成し列挙して、ホストOS104によって使用されるようにする。デバイスリストA124およびデバイスリストB126は、それぞれVM A108およびVM B110で使用可能なすべての仮想デバイスについてのリストおよび関連するパラメータを含んでいる。本発明によれば、マニフェスト122のデバイスリスト124および126中にリストアップされたデバイスの一部が、この仮想マシンソフトウェア(例えば、仮想PC)がインストールされた場合に含められた諸デバイスに追加して、長い間にわたってこのリスト(外部定義されたデバイス)に追加される。仮想デバイスを識別し記述する情報が、デバイスリストA124およびデバイスリストB126内に記憶される。さらに、一部の実施例においては、これらの仮想デバイスは、一実施例においてはDLL(dynamic link libraryダイナミックリンクライブラリ)ファイルに対するファイル名を含んでおり、このファイル名を使用して、そのデバイスが使用するために選択される場合にそのデバイスがさらに定義される。
外部デバイスディレクトリ128は、ホストOS104の内部にあるディレクトリであり、このディレクトリ中では、新しい仮想デバイスに関する情報が、マニフェスト122に追加される以前に、またVM A108またはVM B110にとって使用可能にされる以前に配置される。一実施例においては、プラグインが外部デバイスディレクトリ128に書き込まれ、仮想デバイスを仮想コンピューティングデバイスにとって使用可能にする方法が開始されるまで記憶される。
図5は、仮想デバイスを仮想コンピューティングデバイスにとって使用可能にする方法130を示している。方法130を、VM A108に関連した一実施例において説明している。しかし、この方法が、ホストOS104上で実行されている他の仮想マシンにも適用されることが当業者には理解されよう。ステップ132において、ホストOS104は、外部デバイスプラグインを求めて外部デバイスディレクトリ128を走査する。ステップ134において、ホストOS104は、各外部デバイスに関連したプロパティを取得する。一実施例においては、ホストOS104は、外部デバイスごとにDLLを呼び出し、このDLLは、デバイスごとの適切なプロパティをホストOS104に返す。
ステップ136において、デバイスごとのプロパティがユーザに提示される。一実施例においては、GUI(graphical user interfaceグラフィックユーザインターフェース)は、各デバイスおよびその関連するプロパティをユーザに対して提示する。ステップ138において、ユーザは、デバイスごとにこれらの所望のデバイスと、(例えば、メモリサイズ、ビットレート、ディスプレイ解像度など)それらのプロパティを選択する。ステップ140において、ユーザは、これらの所望のデバイスおよびそれらの対応するデバイスプロパティを保存し、ホストOS104は、これらの所望のデバイスをマニフェスト122に追加する。ステップ140が完了すると、方法130は終了し、新しいデバイスが、構成され、マニフェスト122内のデバイスリストA124に追加されており、必要に応じてVM A108が利用するための準備が整っている。
図6は、仮想デバイスが動的に追加される(図4を参照して説明しているような)仮想化コンピューティングシステムを動作させる方法150を示している。方法150は、図4を参照して説明しているように、仮想化コンピューティングシステム中で動作する場合にホストオペレーティングシステムおよびすべての仮想デバイスがナビゲートする「状態」の進行を記述している。
ステップ152において、コンピュータ20(図1)が電源投入され、ホストOS104は、初期化し(メモリなどの)リソースを割り付ける。ステップ154において、ホストOS104は、起動しつつあり、仮想デバイスは、ホストOS104と情報をやりとりするように構成されるようにそれ自体をマザーボード上で仮想的に配線する。この「仮想配線」に含めて、ホストOS104は、方法130を実行し、この方法130は、これらの新しいデバイスを構成し、それらをマニフェスト122内のデバイスリストA124およびB126に追加し、必要に応じてVM A108およびVM B110が利用する準備を整える。仮想PCIカードを有する一実施例においては、この仮想PCIカードは、仮想PCIバスと情報をやりとりして、例えばこの仮想PCIカードが存在しており、どのスロットに存在しているかについてこの仮想PCIバスに通知する。I/Oポートの範囲も、ステップ154において定義される。別の実施例においては、割込みコントローラ(図示せず)がこのステップ中で起動されるときに、この割込みコントローラは、通常オペレーションに備えてこのI/Oコントローラ(図示せず)と情報をやりとりする。
判断ステップ156においては、以前に記憶された状態が復元されているかどうかについての判定がホストOS104によって行われる。ホストOS104が記憶された状態を復元している場合、方法150は、ステップ158へと進む。ホストOS104が復元していない場合には、すべてのデバイスがデフォルト状態値に設定され、方法150は、ステップ160へと進む。
ステップ158において、ホストOS104は、この仮想プロセッサおよびこれらの仮想デバイスについての状態データを含む記憶済みのスナップショットファイル、ならびにこのスナップショットファイルが保存された際に生成されたデバイスリストにアクセスし、ロードする。スナップショットファイルをロードすることにより、この仮想マシンプロセッサおよびデバイスは、この仮想マシンが最後に保存された時点における正確なポイントまでそれら自体を「よみがえらせる(reanimate)」ことができるようになる。一実施例においては、スナップショットファイル(図示せず)をロードして、VM A108およびそのデバイス、ならびにマニフェスト122内のデバイスリストA124に記憶されたそれらの対応する構成をよみがえらせる。
ステップ160において、初期化は完了し、ホストOS104は、通常動作モード(すなわち、起動された状態)に入る。通常動作モードにおいて、ホストOS104は、VM A108およびVM B110からの要求を処理する。一実施例において、VM A108は、デバイスリストA124およびホストOS104に記憶された仮想デバイスを利用し、これらの仮想デバイスからの通信を変換し、必要に応じてコンピュータハードウェア102内のハードウェアデバイスを使用する。
判断ステップ162において、ホストOS104は、パワーダウン要求が受信されているかどうかを判定する。パワーダウン要求が受信されている場合、方法150は、ステップ164へと進む。受信されていない場合には、方法150は、ステップ160に戻ることによって通常オペレーションモードで続行される。
パワーダウンの準備における判断ステップ164において、ホストOS104は、将来の復元のためにこの仮想マシンおよび仮想デバイスの状態を保存する要求が行われているかどうかを判定する。将来の復元のためにこの仮想マシンの状態を保存する要求が行われている場合、方法150は、ステップ166へと進み、要求が行われていない場合には、方法150は、ステップ168へと進む。
ステップ166において、ホストOS104は、将来の復元のためにこの仮想プロセッサ、およびすべての仮想デバイスの状態を保存する。判断ステップ168において、ホストOS104は、このパワーダウン要求が「再起動要求(restart request)」であるかどうかを判定する。この要求が再起動する要求である場合、方法150は、ステップ154に戻る。そうでない場合には、方法150は、ステップ170へと進む。
ステップ170において、ホストOS104は、リソースを解放し、仮想デバイスの配線を解放する。ステップ170は、ステップ154の逆であり、したがってステップ154で実施されるタスクを逆に行う。ステップ170は、ステップ172へと進む。
ステップ172において、ホストOS104は、非初期化(de−initialize)され、コンピュータ20の電源を遮断するための準備を行う。ステップ172は、ステップ152の逆であり、したがってステップ152で実施されるタスクを逆に行う。ステップ172が完了すると、コンピュータ20は、電源が遮断され、方法150は終了する。
図7は、仮想コンピューティング環境中で物理ハードウェアデバイスを設計しテストする方法180を示している。方法180は、より完全なデバイステストを可能にする仮想化環境においてこれらのデバイスを完全にテストすることにより、(プロトタイプを含めて)どのデバイスも物理的に製造が完了する以前に仮想デバイステストを可能にすることによって、物理ハードウェアデバイスを設計するに際しての適時性(timeliness)を簡素化し改善している。
ステップ182において、物理ハードウェアデバイスが、ソフトウェアツールを使用して設計され、次いで(図4の外部デバイスディレクトリ128に追加される)VHD(virtual hardware device仮想ハードウェアデバイス)として実施される。ステップ184において、このデバイスをテストする専用のソフトウェアTDD(test device driverテストデバイスドライバ)が開発される。ステップ186において、図5の方法130において説明したように、このVHDが、このVMMによってマニフェスト122に追加され、VM A108およびVM B110にとって使用可能にされ、このTDDがゲストOS A112に追加される。ステップ188において、このVHDは、このTDDによって仮想マシン環境中でテストされる。このようにして、このデバイス設計は、この仮想環境中でこのTDDを介して実施される従来のハードウェアテストルーチンによってテストされる。
判断ステップ190において、このVHDのパフォーマンスがステップ188におけるテストに合格したかどうかに関して判定が行われ、合格しなかった場合、方法180は、ステップ182へと戻り、ここでこのデバイス設計に対する修正が行われ、このプロセスが反復される。しかし、ステップ190において合格した場合には、方法180は、オプションとしてのステップ192へと進み、このステップでプロトタイプを開発し、(たぶんこの正常なVHDテストによる簡略化されたプロセスで)テストすることができ、ステップ194において、この新しいハードウェアデバイス仕様が完成され、製造設備に送られ、方法180が終了する。
図8は、仮想コンピューティング環境中の仮想ハードウェアデバイスを使用することにより、物理ハードウェアデバイス用のデバイスドライバを設計しテストする方法280を示している。方法280は、このデバイスドライバが処理することを予想されることになるすべてのエラーを反復することができ、したがってより複雑なデバイスドライバのテストを可能にする専用の物理ハードウェアデバイスを設計するために必要な努力なしに、仮想デバイスドライバテストを可能にすることによってデバイスドライバを設計するに際しての適時性を簡素化し改善する。
ステップ282において、DD(device driverデバイスドライバ)が、ソフトウェアツールを使用して開発され、次いで仮想マシン(例えば、VM A108)上の仮想デバイスとして実施される。ステップ284において、専用のVTHD(virtual test hardware device仮想テストハードウェアデバイス)が、このデバイスドライバをテストするために開発される。ステップ286において、このVTHDが、このVMMによってマニフェスト122に追加され、図5の方法130において説明しているように、VM A108およびVM B110にとって使用可能にされ、このDDがゲストOS A112に追加される。ステップ288において、このDDは、このVTHDが生成するエラーに基づいてこの仮想マシン環境中でテストされる。このようにして、このDDの設計は、この仮想環境中のこのVTHDを介して実施される従来のデバイスドライバテストルーチンによってテストされる。このテストは、意図的なエラーの導入をこのデバイス設計に含めて、このドライバソフトウェアの経路をテストすることができる。さらに、このドライバソフトウェアは、様々な異なるゲストOS上にこのドライバをインストールすることにより、仮想コンピューティング環境中の様々なオペレーティングシステムにわたって迅速にテストすることができる。
判断ステップ290において、このDDのパフォーマンスがステップ288におけるテストを合格したかどうかに関して判定が行われ、合格しなかった場合、方法280は、ステップ282に戻り、このステップで、このDD設計に対する修正が行われ、このプロセスが反復される。しかし、ステップ290において合格した場合には、方法280は、オプションとしてのステップ292へと進み、このステップで、専用の物理ハードウェアデバイスを開発し、(たぶんこの正常なVHDテストによる簡単に修正されたハードウェアデバイス上の簡略化されたプロセスで)テストすることができ、ステップ294において、この新しいデバイスドライバが完成され、流通へと送られ、方法280は終了する。
結論
本明細書中で説明した様々なシステム、方法、および技法は、ハードウェアまたはソフトウェア、あるいは適切な場合にはこれら両者の組合せを用いて実施することができる。したがって、本発明の方法および装置、またはある種の態様またはその一部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、または他の任意のマシン読取り可能ストレージ媒体など有形の媒体の形で実施されるプログラムコード(すなわち、命令)の形態を取ることが可能であり、ここでは、このプログラムコードが、コンピュータなどのマシンにロードされ、マシンによって実行される場合に、このマシンは、本発明を実行するための装置になる。プログラマブルコンピュータ上におけるプログラムコード実行の場合においては、このコンピュータは一般に、プロセッサ、(揮発性および不揮発性のメモリおよび/またはストレージ要素を含めて)このプロセッサにより読取り可能なストレージ媒体、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含むことになる。1つまたは複数のプログラムは、高レベルの手続き形言語またはオブジェクト指向プログラミング言語の形で実施してコンピュータシステムと情報をやりとりすることが好ましい。しかし、この1つまたは複数のプログラムは、必要に応じてアセンブリ言語または機械語で実行することができる。いずれにしても、この言語は、コンパイラ型言語またはインタープリタ型言語とすることが可能であり、ハードウェア実施形態と組み合わせることができる。
本発明の方法および装置は、電気的な配線またはケーブル配線上で、光ファイバを介して、または他の任意の伝送形態を介してなど何らかの伝送媒体上で伝送されるプログラムコードの形態で実施することもでき、ここで、このプログラムコードがマシンによって受信され、マシンにロードされ、またマシンによって実行される場合に、EPROM、ゲートアレイ、PLD(プログラマブルロジックデバイス)、クライアントコンピュータ、ビデオレコーダなどのマシンが、本発明を実行するための装置になる。汎用プロセッサ上で実施される場合には、このプログラムコードがこのプロセッサと組み合わされて、本発明のインデッックス付け機能を実施するように動作する固有の装置が提供される。
本発明を様々な形の好ましい実施形態に関連して説明してきたが、他の同様な実施形態を使用することもでき、あるいは本発明を逸脱することなく本発明と同じファンクションを実施するために、この説明した実施形態に対して変更および追加を行うことができることを理解されたい。例えば、本発明の例示の実施形態は、パーソナルコンピュータの機能をエミュレートするデジタルデバイスの文脈で説明しているが、本発明は、本出願中で説明されるかかるデジタルデバイスだけに限定されることなく、有線であれ無線であれ、ゲーミングコンソール、ハンドヘルドコンピュータ、ポータブルコンピュータなど任意数の既存の、または出現しつつあるコンピューティングデバイスまたはコンピューティング環境にも適用でき、また通信ネットワークを介して接続され、このネットワークを横切って相互に作用する任意数のかかるコンピューティングデバイスにも適用できることが当業者には理解されよう。さらに、特に無線ネットワークデバイスの数が増え続けているので、ハンドヘルドデバイスオペレーティングシステム、および他の特定用途向けハードウェア/ソフトウェアインターフェースシステムを含めて様々なコンピュータプラットフォームが、本明細書中では企図されていることについて強調すべきである。したがって、本発明は、どの1つの実施形態にも限定すべきではなく、代わりに添付の特許請求の範囲による広がりと範囲で解釈すべきである。
最終的には、本明細書中で説明しているこれらの開示の実施形態は、他のプロセッサアーキテクチャ、コンピュータベースのシステム、またはシステム仮想化において使用するために適合させることができ、かかる実施形態については、本明細書中で行われた開示によって明確に予想されており、したがって、本発明は、本明細書中で説明している特定の実施形態だけに限定すべきではなく、その代わりに最も広範囲に解釈すべきである。同様に、プロセッサ仮想化以外の目的のための合成命令の使用もまた、本明細書中で行われたこの開示によって予想されており、プロセッサ仮想化以外の文脈における合成命令のかかるどのような利用についても、本明細書中で行われたこの開示中に最も広範囲に読み取るべきである。
本発明の態様を組み込むことができるコンピュータシステムを示すブロック図である。 コンピュータシステムにおけるエミュレートされた動作環境についての、ハードウェアアーキテクチャおよびソフトウェアアーキテクチャの論理階層化を示す図である。 仮想化コンピューティングシステムを示す図である。 ホストオペレーティングシステムと並行して実行される仮想マシンモニタを含む仮想化コンピューティングシステムの代替実施形態を示す図である。 仮想マシンモニタ内の仮想デバイスに関連したファイル構造を含めて、図3Bの仮想化コンピューティングシステムを示す図である。 仮想化コンピューティングシステム中で使用するための外部デバイスを追加する方法を示す図である。 仮想デバイスが柔軟に追加される仮想化コンピューティングシステムを動作させる方法を示す図である。 仮想コンピューティング環境を使用して仮想ハードウェアデバイスを設計しテストする方法を示す図である。 仮想コンピューティング環境中で仮想ハードウェアを使用してデバイスドライバを設計しテストする方法を示す図である。
符号の説明
20 コンピュータ
21 処理装置
22 システムメモリ
23 システムバス
27 ハードドライブ
28 フロッピー(登録商標)ドライブ
29 着脱可能ストレージ
30 光ドライブ
32 ハードディスクドライブI/F
33 磁気ディスクドライブI/F
34 光ドライブI/F
36 アプリケーションプログラム
36’ アプリケーション
37 他のプログラム
38 プログラムデータ
40 キーボード
42 マウス
46 シリアルポートI/F
47 モニタ
48 ビデオアダプタ
49 リモートコンピュータ
50 フロッピー(登録商標)ドライブ
53 ネットワークI/F
54 モデム
55 ホストアダプタ
56 SCSIバス
62 ストレージデバイス

Claims (40)

  1. 仮想コンピューティング環境が、仮想ハードウェアデバイスを動的に追加するための方法であって、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査するステップと、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得するステップと、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示するステップと、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用するステップと
    を含むことを特徴とする方法。
  2. 前記仮想コンピューティング環境は、前記1組のデバイスプロパティを外部デバイスディレクトリから取得することを特徴とする請求項1に記載の方法。
  3. 前記仮想コンピューティング環境は、前記仮想マシンに対応する前記仮想コンピューティング環境のデバイスリストに前記1組のデバイスプロパティを追加することにより、前記1組のデバイスプロパティを前記仮想マシンに提示することを特徴とする請求項2に記載の方法。
  4. 物理ハードウェアデバイス(PHD)についての設計をテストするための方法であって、
    前記PHDについての前記設計に基づいて仮想ハードウェアデバイス(VHD)を実施するステップと、
    前記VHDをテストするためのテストデバイスドライバ(TDD)を開発するステップと、
    前記VHDおよび前記TDDを仮想コンピューティング環境(VCE)に追加するステップと、
    前記VCE中で前記TDDを使用して前記VHDをテストするステップと
    を含むことを特徴とする方法。
  5. 前記TDDを用いて前記VCE中でテストされる前記VHDに対応する前記PHDのプロトタイプを作成するステップと、
    前記TDDを使用して前記PHDの前記プロトタイプをテストするステップと
    をさらに含むことを特徴とする請求項4に記載の方法。
  6. 前記仮想コンピューティング環境は、動的に前記VHDを追加することを特徴とする請求項4に記載の方法。
  7. 前記仮想コンピューティング環境が、前記VHDを動的に追加する要素は、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査するステップと、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得するステップと、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示するステップと、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用するステップと
    を含むことを特徴とする請求項6に記載の方法。
  8. デバイスドライバ(DD)についての設計をテストするための方法であって、
    前記DDをテストするための仮想テストハードウェアデバイス(VTHD)を開発するステップと、
    前記VTHDおよび前記DDを仮想コンピューティング環境(VCE)に追加するステップと、
    前記VCE中で前記VTHDを使用して前記DDをテストするステップと
    を含むことを特徴とする方法。
  9. 前記DDが前記VCE中でテストされた前記VTHDのプロトタイプハードウェアデバイスを作成するステップと、
    前記プロトタイプハードウェアデバイス上で前記DDをテストするステップと
    をさらに含むことを特徴とする請求項8に記載の方法。
  10. 前記仮想コンピューティング環境は、前記VHDを動的に追加することを特徴とする請求項8に記載の方法。
  11. 前記仮想コンピューティング環境が、前記VHDを動的に追加する要素は、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査するステップと、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得するステップと、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示するステップと、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用するステップと
    を含むことを特徴とする請求項10に記載の方法。
  12. 仮想コンピューティング環境が、仮想ハードウェアデバイスを動的に追加するためのシステムであって、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査するためのサブシステムと、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得するためのサブシステムと、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示するためのサブシステムと、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用するためのサブシステムと
    を備えることを特徴とするシステム。
  13. 前記仮想コンピューティング環境が新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得するための前記サブシステムは、外部デバイスディレクトリから前記1組のデバイスプロパティを取得することを特徴とする請求項12に記載のシステム。
  14. 前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示するための前記サブシステムは、前記仮想マシンに対応する前記仮想コンピューティング環境のデバイスリストに前記1組のデバイスプロパティを追加することによって前記1組のデバイスプロパティを前記仮想マシンに提示することを特徴とする請求項13に記載のシステム。
  15. 物理ハードウェアデバイス(PHD)についての設計をテストするためのシステムであって、
    前記PHDについての前記設計に基づいて仮想ハードウェアデバイス(VHD)を実施するためのサブシステムと、
    前記VHDをテストするためのテストデバイスドライバ(TDD)を開発するためのサブシステムと、
    前記VHDおよび前記TDDを仮想コンピューティング環境(VCE)に追加するためのサブシステムと、
    前記VCE中で前記TDDを使用して前記VHDをテストするためのサブシステムと
    を備えることを特徴とするシステム。
  16. 前記TDDを用いて前記VCE中でテストされる前記VHDに対応する前記PHDのプロトタイプを作成するためのサブシステムと、
    前記TDDを使用して前記PHDの前記プロトタイプをテストするためのサブシステムと
    をさらに備えることを特徴とする請求項15に記載のシステム。
  17. 前記仮想コンピューティング環境は、前記VHDを動的に追加するためのサブシステムをさらに備えることを特徴とする請求項15に記載のシステム。
  18. 前記VHDを動的に追加するための前記サブシステムは、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査するためのサブシステムと、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得するためのサブシステムと、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示するためのサブシステムと、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用するためのサブシステムと
    を備えることを特徴とする請求項17に記載のシステム。
  19. デバイスドライバ(DD)についての設計をテストするためのシステムであって、
    前記DDをテストするための仮想テストハードウェアデバイス(VTHD)を開発するためのサブシステムと、
    前記VTHDおよび前記DDを仮想コンピューティング環境(VCE)に追加するためのサブシステムと、
    前記VCE中で前記VTHDを使用して前記DDをテストするためのサブシステムと
    を備えることを特徴とするシステム。
  20. 前記DDが前記VCE中でテストされた前記VTHDのプロトタイプハードウェアデバイスを作成するためのサブシステムと、
    前記プロトタイプハードウェアデバイス上で前記DDをテストするためのサブシステムと
    をさらに備えることを特徴とする請求項19に記載のシステム。
  21. 前記仮想コンピューティング環境は、前記VHDを動的に追加するためのサブシステムをさらに備えることを特徴とする請求項19に記載のシステム。
  22. 前記VHDを動的に追加するための前記サブシステムは、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査するためのサブシステムと、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得するためのサブシステムと、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示するためのサブシステムと、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用するためのサブシステムと
    を備えることを特徴とする請求項21に記載のシステム。
  23. 仮想コンピューティング環境が、仮想ハードウェアデバイスを動的に追加するためのコンピュータ読取り可能命令を含むコンピュータ読取り可能媒体であって、前記コンピュータ読取り可能命令は、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査する命令と、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得する命令と、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示する命令と、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用する命令と
    を含むことを特徴とするコンピュータ読取り可能媒体。
  24. 前記仮想コンピューティング環境が外部デバイスディレクトリから前記1組のデバイスプロパティを取得する命令をさらに含むことを特徴とする請求項23に記載のコンピュータ読取り可能媒体。
  25. 前記仮想コンピューティング環境が、前記仮想マシンに対応する前記仮想コンピューティング環境のデバイスリストに前記1組のデバイスプロパティを追加することにより、前記1組のデバイスプロパティを前記仮想マシンに提示する命令をさらに含むことを特徴とする請求項24に記載のコンピュータ読取り可能媒体。
  26. 物理ハードウェアデバイス(PHD)についての設計をテストするためのコンピュータ読取り可能命令を含むコンピュータ読取り可能媒体であって、前記コンピュータ読取り可能命令は、
    前記PHDについての前記設計に基づいて仮想ハードウェアデバイス(VHD)を実施する命令と、
    前記VHDをテストするためのテストデバイスドライバ(TDD)を開発する命令と、
    前記VHDおよび前記TDDを仮想コンピューティング環境(VCE)に追加する命令と、
    前記VCE中で前記TDDを使用して前記VHDをテストする命令と
    を含むことを特徴とするコンピュータ読取り可能媒体。
  27. 前記TDDを用いて前記VCE中でテストされる前記VHDに対応する前記PHDのプロトタイプを作成する命令と、
    前記TDDを使用して前記PHDの前記プロトタイプをテストする命令と
    をさらに含むことを特徴とする請求項26に記載のコンピュータ読取り可能媒体。
  28. 前記仮想コンピューティング環境が前記VHDを動的に追加する命令をさらに含むことを特徴とする請求項26に記載のコンピュータ読取り可能媒体。
  29. 前記仮想コンピューティング環境が前記VHDを動的に追加する要素は、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査する命令と、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得する命令と、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示する命令と、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用する命令と
    をさらに含むことを特徴とする請求項28に記載のコンピュータ読取り可能媒体。
  30. デバイスドライバ(DD)についての設計をテストするためのコンピュータ読取り可能命令を含むコンピュータ読取り可能媒体であって、前記コンピュータ読取り可能命令は、
    前記DDをテストするための仮想テストハードウェアデバイス(VTHD)を開発する命令と、
    前記VTHDおよび前記DDを仮想コンピューティング環境(VCE)に追加する命令と、
    前記VCE中で前記VTHDを使用して前記DDをテストする命令と
    を含むことを特徴とするコンピュータ読取り可能媒体。
  31. 前記DDが前記VCE中でテストされた前記VTHDのプロトタイプハードウェアデバイスを作成する命令と、
    前記プロトタイプハードウェアデバイス上で前記DDをテストする命令と
    をさらに含むことを特徴とする請求項30に記載のコンピュータ読取り可能媒体。
  32. 前記仮想コンピューティング環境が前記VHDを動的に追加する命令をさらに含むことを特徴とする請求項30に記載のコンピュータ読取り可能媒体。
  33. 前記仮想コンピューティング環境が前記VHDを動的に追加する要素は、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査する命令と、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得する命令と、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示する命令と、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用する命令と
    をさらに含むことを特徴とする請求項32に記載のコンピュータ読取り可能媒体。
  34. 仮想コンピューティング環境が、仮想ハードウェアデバイスを動的に追加するためのハードウェア制御デバイスであって、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査する手段と、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得する手段と、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示する手段と、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用する手段と
    を備えることを特徴とするハードウェア制御デバイス。
  35. 前記仮想コンピューティング環境が、前記1組のデバイスプロパティを外部デバイスディレクトリから取得する手段をさらに備えることを特徴とする請求項34に記載のハードウェア制御デバイス。
  36. 前記仮想コンピューティング環境が、前記仮想マシンに対応する前記仮想コンピューティング環境のデバイスリストに前記1組のデバイスプロパティを追加することにより、前記1組のデバイスプロパティを前記仮想マシンに提示する手段をさらに備えることを特徴とする請求項35に記載のハードウェア制御デバイス。
  37. 物理ハードウェアデバイス(PHD)についての設計をテストするためのハードウェア制御デバイスであって、
    前記PHDについての前記設計に基づいて仮想ハードウェアデバイス(VHD)を実施する手段と、
    前記VHDをテストするためのテストデバイスドライバ(TDD)を開発する手段と、
    前記VHDおよび前記TDDを仮想コンピューティング環境(VCE)に追加する手段と、
    前記VCE中で前記TDDを使用して前記VHDをテストする手段と
    を備えることを特徴とするハードウェア制御デバイス。
  38. 前記仮想コンピューティング環境は、前記VHDを動的に追加し、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査する手段と、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得する手段と、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示する手段と、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用する手段と
    をさらに備えることを特徴とする請求項37に記載のハードウェア制御デバイス。
  39. デバイスドライバ(DD)についての設計をテストするためのハードウェア制御デバイスであって、
    前記DDをテストするための仮想テストハードウェアデバイス(VTHD)を開発する手段と、
    前記VTHDおよび前記DDを仮想コンピューティング環境(VCE)に追加する手段と、
    前記VCE中で前記VTHDを使用して前記DDをテストする手段と
    を備えることを特徴とするハードウェア制御デバイス。
  40. 前記仮想コンピューティング環境は、前記VHDを動的に追加し、
    前記仮想コンピューティング環境が、外部サービスディレクトリを走査する手段と、
    前記仮想コンピューティング環境が、新しい仮想ハードウェアデバイスについての1組のデバイスプロパティを取得する手段と、
    前記仮想コンピューティング環境が、前記仮想コンピューティング環境中で動作する仮想マシンに前記1組のデバイスプロパティを提示する手段と、
    前記仮想マシンが、前記新しい仮想ハードウェアデバイスを利用する手段と
    をさらに備えることを特徴とする請求項39に記載のハードウェア制御デバイス。
JP2005158859A 2004-06-30 2005-05-31 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法 Pending JP2006018814A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/883,620 US7580826B2 (en) 2004-06-30 2004-06-30 Systems and methods for development of emulated devices in a virtual machine environment

Publications (1)

Publication Number Publication Date
JP2006018814A true JP2006018814A (ja) 2006-01-19

Family

ID=35148940

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005158859A Pending JP2006018814A (ja) 2004-06-30 2005-05-31 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法

Country Status (5)

Country Link
US (1) US7580826B2 (ja)
EP (1) EP1615126A3 (ja)
JP (1) JP2006018814A (ja)
KR (1) KR20060047766A (ja)
CN (2) CN100511150C (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009533777A (ja) * 2006-04-17 2009-09-17 マイクロソフト コーポレーション 仮想マシンのホストレベルのアプリケーション整合バックアップの作成
JP2010532050A (ja) * 2007-06-27 2010-09-30 マイクロソフト コーポレーション 仮想環境にあるアドオンコンポーネントの動作
JP2012533821A (ja) * 2009-07-21 2012-12-27 エンパイア テクノロジー ディベロップメント エルエルシー 低電力ネットワークのための仮想化
US9524194B2 (en) 2009-07-21 2016-12-20 Empire Technology Development Llc Performing services on behalf of physical devices
US11422824B2 (en) 2017-12-08 2022-08-23 Akib Systems Inc. Computer activation method
DE102023107473A1 (de) 2022-03-28 2023-09-28 Panasonic intellectual property Management co., Ltd System zur erstellung einer entwicklungsumgebung, verfahren zur erstellung einer entwicklungsumgebung und programm

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689723B1 (en) * 2004-11-08 2010-03-30 Sun Microsystems, Inc. Virtual cloned device node
US7774794B2 (en) * 2005-08-19 2010-08-10 Intel Corporation Method and system for managing bandwidth in a virtualized system
CN100399274C (zh) * 2005-09-19 2008-07-02 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
WO2007065307A2 (en) * 2005-12-10 2007-06-14 Intel Corporation Handling a device related operation in a virtualization environment
US8249853B2 (en) * 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
US7406407B2 (en) * 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US7725305B2 (en) * 2006-06-08 2010-05-25 Microsoft Corporation Partial virtualization on computing device
WO2008017001A2 (en) * 2006-08-02 2008-02-07 Moka5, Inc. Sharing live appliances
US8181025B2 (en) * 2006-10-31 2012-05-15 Intel Corporation Method and apparatus for registering agents onto a virtual machine monitor
US7881919B2 (en) * 2007-04-03 2011-02-01 Microsoft Corporation USB device simulator
US7747814B2 (en) * 2007-06-26 2010-06-29 Microsoft Corporation Virtual machine state snapshots
US9588511B2 (en) * 2007-08-03 2017-03-07 Hurco Companies, Inc. Virtual machine manager
US8839231B2 (en) * 2007-12-04 2014-09-16 Dell Products L.P. Method and system for software installation
US8209686B2 (en) * 2008-02-12 2012-06-26 International Business Machines Corporation Saving unsaved user process data in one or more logical partitions of a computing system
KR101489301B1 (ko) * 2008-03-20 2015-02-06 삼성전자주식회사 가상환경 시스템 및 그의 구동방법
US9946493B2 (en) * 2008-04-04 2018-04-17 International Business Machines Corporation Coordinated remote and local machine configuration
US8024169B2 (en) 2008-04-23 2011-09-20 International Business Machines Corporation Storage area network management modeling simulation
US8862633B2 (en) 2008-05-30 2014-10-14 Novell, Inc. System and method for efficiently building virtual appliances in a hosted environment
US8543998B2 (en) * 2008-05-30 2013-09-24 Oracle International Corporation System and method for building virtual appliances using a repository metadata server and a dependency resolution service
US9262194B2 (en) * 2008-06-10 2016-02-16 Apple Inc. Virtual machine communications
US9170904B1 (en) * 2008-06-30 2015-10-27 Emc Corporation I/O fault injection using simulated computing environments
US20100115508A1 (en) * 2008-10-30 2010-05-06 Lenovo Plug-in architecture for hypervisor-based system
CN101430649B (zh) * 2008-11-19 2011-09-14 北京航空航天大学 基于虚拟机的虚拟计算环境系统
CN101770410B (zh) * 2009-01-07 2016-08-17 联想(北京)有限公司 基于客户操作系统的系统还原方法、虚拟机管理器及系统
US8219990B2 (en) * 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
US8301818B2 (en) * 2009-12-11 2012-10-30 Oracle America, Inc. Virtual hot plugging of devices and virtual devices
US8612633B2 (en) 2010-03-31 2013-12-17 Microsoft Corporation Virtual machine fast emulation assist
US20110289469A1 (en) * 2010-05-21 2011-11-24 Huang Thomas B Virtual interconnection method and apparatus
US8533531B2 (en) * 2010-06-10 2013-09-10 Microsoft Corporation Multimedia hardware emulation for application testing
DE102010053485A1 (de) * 2010-12-04 2012-06-06 Robert Bosch Gmbh Verfahren zum Betreiben einer Arbeitsmaschine und Arbeitsmaschine mit virtueller Automatisierung
WO2012153879A1 (ko) * 2011-05-09 2012-11-15 현대자동차 주식회사 예외처리 테스트 장치 및 방법
CA2764283A1 (en) 2012-01-16 2013-07-16 Giovanni J. Morelli Mobile device control application for improved security and diagnostics
CA2764362A1 (en) * 2012-01-16 2013-07-16 Giovanni J. Morelli Rdp session monitor/control system and application
CA2764354A1 (en) 2012-01-16 2013-07-16 Giovanni J. Morelli Host-emulator bridge system and method
EP2979181A4 (en) 2013-03-28 2016-08-24 Sphere 3D Inc SYSTEMS AND METHODS FOR PLACING AN EMULATOR
CN103697916B (zh) * 2013-12-24 2017-01-11 河北汉光重工有限责任公司 惯性测量单元虚拟仪器
CN104765637A (zh) * 2014-01-02 2015-07-08 深圳迈瑞生物医疗电子股份有限公司 一种在监护仪上安全运行桌面应用程序的系统
TWI598819B (zh) * 2015-04-30 2017-09-11 捷鼎國際股份有限公司 基於虛擬機器進行硬體裝置測試之電腦系統及方法
US10234921B2 (en) * 2016-03-04 2019-03-19 Schneider Electric USA, Inc. Systems and methods for operating a virtual power environment
CN106371962B (zh) * 2016-08-30 2019-01-01 广州广电运通金融电子股份有限公司 一种跨平台的驱动测试方法、装置及系统
US10942757B2 (en) * 2017-02-27 2021-03-09 Red Hat, Inc. Virtual machine security through guest-side emulation
US10409632B2 (en) * 2017-03-31 2019-09-10 The Boeing Company Emulation of hardware components based on interrupt design
CN107436810A (zh) * 2017-07-03 2017-12-05 北京东土科技股份有限公司 一种计算机系统资源调度方法及装置
US10705933B2 (en) 2017-07-18 2020-07-07 The Boeing Company System integration using virtualization
US11347531B2 (en) * 2018-10-31 2022-05-31 The Boeing Company Generalized virtualization platform for systems using hardware abstraction software layers
EP3961389A1 (en) * 2020-08-26 2022-03-02 The Boeing Company Virtual machine for developing and testing target code for hardware designs
US11544234B2 (en) 2020-11-12 2023-01-03 International Business Machines Corporation Virtualizing specific values in a guest configuration based on the underlying host symbol repository

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004070935A (ja) * 2002-06-27 2004-03-04 Internatl Business Mach Corp <Ibm> 論理パーティションのリソースを動的に再構成するための方法、プログラム、システム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4649479A (en) 1985-02-28 1987-03-10 International Business Machines Corp. Device driver and adapter binding technique
US5717903A (en) * 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
US6253224B1 (en) * 1998-03-24 2001-06-26 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6243833B1 (en) * 1998-08-26 2001-06-05 International Business Machines Corporation Apparatus and method for self generating error simulation test data from production code
DE10036387A1 (de) * 1999-08-16 2001-03-01 Advantest Corp Halbleitertestprogramm-Diagnosevorrichtung
GB0001585D0 (en) 2000-01-24 2000-03-15 Radioscape Ltd Method of designing,modelling or fabricating a communications baseband stack
US6968307B1 (en) * 2000-04-28 2005-11-22 Microsoft Corporation Creation and use of virtual device drivers on a serial bus
EP1297446B1 (en) * 2000-07-05 2005-09-21 Ernst &amp; Young LLP Method and apparatus for providing computer services
EP1191443A3 (en) * 2000-09-22 2004-03-03 International Business Machines Corporation Method and system for testing a processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004070935A (ja) * 2002-06-27 2004-03-04 Internatl Business Mach Corp <Ibm> 論理パーティションのリソースを動的に再構成するための方法、プログラム、システム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009533777A (ja) * 2006-04-17 2009-09-17 マイクロソフト コーポレーション 仮想マシンのホストレベルのアプリケーション整合バックアップの作成
US8321377B2 (en) 2006-04-17 2012-11-27 Microsoft Corporation Creating host-level application-consistent backups of virtual machines
US9529807B2 (en) 2006-04-17 2016-12-27 Microsoft Technology Licensing, Llc Creating host-level application-consistent backups of virtual machines
JP2010532050A (ja) * 2007-06-27 2010-09-30 マイクロソフト コーポレーション 仮想環境にあるアドオンコンポーネントの動作
US8612972B2 (en) 2007-06-27 2013-12-17 Microsoft Corporation Running add-on components in virtual environments
US9400665B2 (en) 2007-06-27 2016-07-26 Microsoft Technology Licensing, Llc Running add-on components in virtual environments
US10108441B2 (en) 2007-06-27 2018-10-23 Microsoft Technology Licensing, Llc Running add-on components in virtual environments
JP2012533821A (ja) * 2009-07-21 2012-12-27 エンパイア テクノロジー ディベロップメント エルエルシー 低電力ネットワークのための仮想化
US9524194B2 (en) 2009-07-21 2016-12-20 Empire Technology Development Llc Performing services on behalf of physical devices
US11422824B2 (en) 2017-12-08 2022-08-23 Akib Systems Inc. Computer activation method
DE102023107473A1 (de) 2022-03-28 2023-09-28 Panasonic intellectual property Management co., Ltd System zur erstellung einer entwicklungsumgebung, verfahren zur erstellung einer entwicklungsumgebung und programm

Also Published As

Publication number Publication date
KR20060047766A (ko) 2006-05-18
EP1615126A2 (en) 2006-01-11
EP1615126A3 (en) 2007-10-31
CN101382905A (zh) 2009-03-11
CN101382905B (zh) 2012-09-05
US7580826B2 (en) 2009-08-25
US20060004554A1 (en) 2006-01-05
CN100511150C (zh) 2009-07-08
CN1716204A (zh) 2006-01-04

Similar Documents

Publication Publication Date Title
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
RU2412468C2 (ru) Системы и способы многоуровневой обработки перехватов в виртуальной машинной среде
JP4806212B2 (ja) 1台の仮想マシン内の複数の仮想プロセッサを初期化するためのシステムおよび方法
JP4156611B2 (ja) 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法
JP5005191B2 (ja) 仮想マシン環境においてオペレーティングシステムを実施するためのシステムおよび方法
US7555596B2 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
RU2398267C2 (ru) Иерархическая виртуализация посредством многоуровневого механизма виртуализации
US8830228B2 (en) Techniques for enabling remote management of servers configured with graphics processors
US7558723B2 (en) Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
KR101602519B1 (ko) 가상화된 저장소 할당 방법
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
EP1380947A2 (en) Method for forking or migrating a virtual machine
US20090265708A1 (en) Information Processing Apparatus and Method of Controlling Information Processing Apparatus
US9792136B2 (en) Hardware assisted inter hypervisor partition data transfers
Deka et al. Application of virtualization technology in IaaS cloud deployment model
CN116069584A (zh) 将监控服务扩展到可信云运营商域中
CN109408193B (zh) 虚拟机实现方法、装置及计算机设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110715

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110913

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120113

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130712

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130719

RD15 Notification of revocation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7435

Effective date: 20130719