JP2010505198A - 仮想マシン内の分配されたハードウェア状態管理 - Google Patents

仮想マシン内の分配されたハードウェア状態管理 Download PDF

Info

Publication number
JP2010505198A
JP2010505198A JP2009530504A JP2009530504A JP2010505198A JP 2010505198 A JP2010505198 A JP 2010505198A JP 2009530504 A JP2009530504 A JP 2009530504A JP 2009530504 A JP2009530504 A JP 2009530504A JP 2010505198 A JP2010505198 A JP 2010505198A
Authority
JP
Japan
Prior art keywords
partition
driver
filter
proxy
stack
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.)
Granted
Application number
JP2009530504A
Other languages
English (en)
Other versions
JP2010505198A5 (ja
JP5050059B2 (ja
Inventor
ジェイ.オネイ エイドリアン
ジョン ソーントン アンドリュー
オーシンズ ジェイコブ
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 JP2010505198A publication Critical patent/JP2010505198A/ja
Publication of JP2010505198A5 publication Critical patent/JP2010505198A5/ja
Application granted granted Critical
Publication of JP5050059B2 publication Critical patent/JP5050059B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Small-Scale Networks (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)

Abstract

仮想マシン環境内の動作を監視するメカニズムが本明細書で開示される。第1のパーティションは第2のパーティション内のドライバオブジェクトと対応するプロキシドライバオブジェクトを有することができる。ドライバオブジェクトは物理的デバイスを制御することができるが、プロキシドライバのために、第1のパーティションは物理的デバイスの制御の一部の測定を保持することができる。ドライバオブジェクトはそれの下の第1のフィルタオブジェクト及びそれの上の第2のフィルタオブジェクトによって取り囲まれることができる。第1のフィルタオブジェクトはインターフェースをドライバオブジェクトに提供し、ドライバオブジェクトは様々なバスに関連付けられた機能性を実行することができ、及び、第2のフィルタオブジェクトは第1のパーティションからのリダイレクトされた命令を受信することができ、それらをドライバオブジェクトに提供することができ、及び、これらの命令が第1のパーティションにおいて設定されたポリシーと矛盾する場合など、第2のパーティション内から発する任意の命令をインターセプトすることができ、それらを操作することができる。

Description

本発明は、仮想マシン内の分配されたハードウェア状態管理に関する。
大部分に関して、入力/出力(I/O)デバイスは、マルチプルオペレーションシステムによって共有されることを意図されていない。それらは、そのようなデバイスの全ての機能的な態様を管理する単一の集積ソフトウェアモジュールによって制御されるために設計される。物理的マシン全体を制御する所与のオペレーションシステムにおいて、一つのソフトウェアモジュールがデバイスを制御するということを確実にすることは困難でさえある。同時に実行するマルチプルオペレーションシステムを有する仮想マシン環境において、それはより困難である。
仮想マシン環境の設計者は、常に矛盾に直面させられる。個々のオペレーションシステムは直接個々のデバイスを制御でき、又は、それらはI/Oサービスに関して同じマシン上で起動する仮想マシン層又は他のオペレーションシステムを頼りにすることができる。前者の場合では、マシン全体の複雑な管理が含まれ、後者の場合では、遅さが関係する。したがって、ここに開示された主題の解決する一つの問題は、「デバイスの割り当て」問題であり、言い換えると、割り当てが複雑でなく、それにもかかわらず処理を迅速にするように、デバイスをモジュールにどのように割り当てるかである。
さらに、物理的ハードウェアデバイスを所有する仮想マシン(又はパーティション)は、信頼関係に基づいてさらに分解されることができる。一部の仮想マシン環境において、パーティションはデバイスを所有することができるが、マシン内の任意の他のパーティションを信頼することができない。その他では、パーティションは別のパーティション、特にマシン全体に関するポリシーを管理するものを信頼することができる。したがって、ここに開示された主題の解決する他の問題は、マシン全体に関するポリシーを管理する少なくとも一つの信頼されたパーティション(又は仮想マシン層自体内のコンポーネント)がある場合、特権のないパーティションに対するデバイスの割り当てである。
ここに開示された主題は、特に、信頼された及び特権のないパーティションを有する仮想マシン環境の状況において、デバイスの割り当てに関連する上記の問題を解決する。絵例示的で非限定的な態様において、第1のパーティションは、信頼された一次パーティションとすることができ、第2のパーティション内のデバイスのドライバオブジェクトに対応するプロキシドライバオブジェクトを有することができ、第2のパーティションは信頼されない二次パーティションとすることができる。二次パーティション内のデバイスのドライバオブジェクトは物理的デバイスを制御するが、この構成は一次パーティションに位置付けられるプロキシドライバオブジェクトを有するため、一次パーティションは物理的デバイスに対して一部の制御の測定を続けることができる。したがって、ここに開示された主題の一つの態様において、デバイス状態の制御は区分されることができる。二次パーティションは、例えば、I/O機能性のように、より局所的なデバイス状態の制御を保持する一方で、一次パーティションは、例えば、デバイスのターンオン又はオフのように、システムに渡るデバイス状態の制御を有することができる。
他の態様として、スタック上に備わっているドライバオブジェクトは、ドライバオブジェクトの下の第1のフィルタオブジェクト及びドライバオブジェクトの上の第2のフィルタオブジェクトによって取り囲まれることができる。第1のフィルタオブジェクトは、ドライバオブジェクトにインターフェースを提供し、ドライバオブジェクトは様々なバスに関連付けられた機能性を実行することができる。及び、更に、第2のフィルタオブジェクトは、少なくとも二つのタスクを実行することができ、(1)一次パーティションから(プロキシドライバオブジェクトによって)リダイレクトされた命令を受信する、及び(2)二次パーティション内のモジュールから発する任意の命令をインターセプトし、これらの命令が二次パーティションにおいて設定されたポリシーと矛盾する場合、それらが置換、変更、又は無視されることができる。
この発明の概要は簡略化された形式において概念の選択を導入するために提供され、以下の発明を実施するための手段にさらに記載されることを留意すべきである。この発明の概要は、主張された主題の重要な特徴又は決定的な特徴を特定することを意図されるものではなく、主張された主題の範囲を決定することにおける補助として用いられることを意図されるものでもない。
以下の発明を実施するための形態と同様に、前述の発明の概要は、添付の図面と関連して読まれるときによりよく理解される。本開示を例示するために、本開示の様々な態様が示される。しかしながら、本開示は説明された特定の特徴を限定されない。以下の図面は含まれる。
計算システムにおける仮想化されたオペレーションシステムに関するハードウェア及びソフトウェアアーキテクチャの論理層を表すブロック図である。 ホストオペレーションシステムによって(直接的に又はハイパーバイザを経由して)仮想化が実行される、仮想化された計算システムを表すブロック図である。 ホストオペレーションシステムと同時に実行する仮想マシンモニタによって仮想化が実行される、代わりの仮想化された計算システムを表すブロック図である。 仮想マシン環境内のオペレーションを管理するための例示的かつ非限定的なシステムを例示する図である。 図4の参照とともに記載されるシステムの例示的かつ非限定的なシステム実装を例示する図である。 デバイスドライバのスタックを介して、入力/出力リクエストパケット(IRP)がどのように流れるかを詳細に例示する図である(図4のシステムの構成要素)。 プラグアンドプレイ及び電力管理オペレーションの変更状態がどのように扱われることができるかを例示する図である。 概要的な形式で、仮想マシン環境内の管理オペレーションに関するメカニズムを提供するための例示的かつ非限定的なシステム方法を例示する図である。
ここに開示された主題は、背景技術の区分において上記に言及された問題を解決する一方で、少なくとも以下の(a)例えば、デバイスホットプラグ、システムのスリープ又はシャットダウン等の、マシンワイドタスクを達成することができるための信頼されたパーティションと、(b)パーティション又は仮想マシン管理層自体のどちらかにおいて達成されることができるマシンワイドタスクと、(c)そのような制御がマシン上で実行中の他のソフトウェアをクラッシュさせないときに、信頼されないパーティションによって一つ又は複数の物理的デバイスを制御することと、(d)マシン全体をホステージとすることを妨げること、スリープ、シャットダウン、又は新しいデバイスの挿入を妨げることが可能である。
さらに、ここに開示された主題は、物理的デバイスと関連した親のパーティション内のメッセージをインターセプトすることと、及び子のパーティションに対してそのようなメッセージをリダイレクトすることとを提供する。子のパーティション内で、デバイスドライバが物理的デバイスのためにロードされるとき、このドライバは、子のパーディションのプラグアンドプレイマネージャ又は他のマネージャからくるメッセージをインターセプトする他のドライバによって包まれることができ、親のパーティションにおいてなされたポリシーの決定に対応するものにそれらを置き換える。もちろん、これは単なる例示かつ非限定的概観であり、及び、それと関連付けられる様々な態様が本明細書に記載される。
一般用語における仮想マシン
図1は、計算システムにおける仮想化された環境に関するハードウェア及びソフトウェアアーキテクチャの論理層を表すブロック図である。図1において、仮想化プログラム110は、直接的に又は間接的に物理的ハードウェアアーキテクチャ112上で実行する。仮想化プログラム110は、(a)ホストオペレーションシステムを同時に実行する仮想マシンモニタ、又は(b)仮想化を実行するハイパーバイザのコンポーネントを有するホストオペレーションシステムとすることができる。仮想化プログラム110は、ゲストハードウェアアーキテクチャ108を仮想化する(このコンポーネントはパーティション又は仮想マシンであるという事実を例示する破線として示される)、すなわち、実際に存在しないハードウェアが仮想化プログラム110によって代わりに仮想化される。ゲストオペレーションシステム106は、ゲストハードウェアアーキテクチャ108上で実行し、ソフトウェアアプリケーション104はゲストオペレーションシステム106上で実行することができる。図1の仮想化された動作環境において、たとえソフトウェアアプリケーション104が、ホストオペレーティングシステム及びハードウェアアーキテクチャと一般的に互換性がないオペレーティングシステム上で実行するために設計されたとしても、ソフトウェアアプリケーション104は、計算システム102において実行することができる。
次に、図2は、物理的コンピュータハードウェアより上で直接的に実行するホストオペレーティングシステム(ホストOS)ソフトウェア層204を備える仮想化された計算システムを例示する。ただし、ホストOS204は、各々、オペレーティングシステムA212及びB214による使用のためのパーティションA208及びB210に対してインターフェースを発行することによって、物理的ハードウェア202の資源に対するアクセスを提供する。これは、ホストOSが、その上で実行していることをオペレーションシステム層212及び214によって注目されずに済むことを可能にする。また、仮想化を実行するために、ホストOS204は、仮想化本来の能力を有する特別に設計されたオペレーションシステムとすることができ、又は、仮想化を実行するための組み込まれたハイパーバイザコンポーネントを有する基本的なオペレーティングシステムとすることができる(図示せず)。
図2を再び参照すると、ホストOS204の上には二つのパーティションがあり、パーティションA208は、例えば、仮想化されたIntel(登録商標)386プロセッサとすることができ、パーティションB210は、例えば、Motorola(登録商標)680X0 familyのプロセッサの一つの仮想化されたバージョンとすることができる。各々のパーティション208及び210の内部には、それぞれ、ゲストオペレーティングシステム(ゲストOS)A212及びB214がある。ゲストOSのA212の上で実行中のものは、二つのアプリケーション、アプリケーションA1 216及びアプリケーションA2 218であり、ゲストOSのA214の上で実行中のものは、アプリケーションB1 220である。
図2に関連して、パーティションA208及びパーティションB214(破線で示される)は、ソフトウェア構成としてのみ存在する仮想化されたコンピュータハードウェア表現であることを注目することは重要である。それらは、ゲストOS A212及びゲストOS B214に対してパーティションA208及びパーティションB210をそれぞれ提供するだけでなく、ゲストOS A212及びゲストOS B214が実在する物理的コンピュータハードウェア202と非直接的に対話するために必要なソフトウェアステップの全てを実行する仮想化専用ソフトウェアの実行により、可能とされる。
図3は、仮想化がホストオペレーティングシステム204’’と同時に実行される仮想マシンモニタ(VMM)204’によって実行されるときに、代わりの仮想化された計算システムを例示する。あるケースにおいて、VMM204’は、ホストオペレーティングシステム204’’上で実行し、ホストオペレーティングシステム204’’だけを介してコンピュータハードウェア202と対話するアプリケーションとすることができる。他のケースでは、図3に示すように、VMM204’は、一部の段階で、ホストオペレーティングシステム204’’を経由してコンピュータハードウェア202と間接的に対話する部分的に独立したソフトウェアシステムを備えることができるが、他の段階で、VMM’は、コンピュータハードウェア202と直接的に対話する(ホストオペレーティングシステムがコンピュータハードウェアと直接的に対話する方法と同様に)。また、更に他のケースにおいて、VMM204’は、ホストオペレーティングシステム204’’を利用せずに(それでも、コンピュータハードウェア202の使用を調整し競合を避ける等のためにホストオペレーティングシステム204’’と対話するが)、全ての段階で、コンピュータハードウェア202と直接的に対話する完全に独立したソフトウェアシステムを備えることができる(ホストオペレーティングシステムがコンピュータハードウェアと直接的に対話する方法と同様に)。
上記の言及されたパーティションを実装するための全ての変形は、単に実装例であり、本明細書はあらゆる部分的な仮想化の態様に対する開示を限定するものとして解釈すべきでない。
仮想マシン内のデバイス及びシステム状態の管理の態様
図2及び図3の上記のパーティションは、一次パーティション及び二次パーティション、又は、態様を限定しないものにおいて、各々、信頼されたパーティション及び信頼されない(特権のない)パーティションとして、又は、更に態様を限定しない他のものにおいて、各々、親のパーティション及び子のパーティションとしての形式において実装されることができる。どのような関係がそのようなパーティション間で達成されようとも、本開示の一つの目的は、そのような一次パーティションから二次パーティションにデバイスの割り当て(物理的又は仮想のいずれにせよ)を可能にさせることであり、二次パーティションはデバイスの制御を実行することができ、更に、一次パーティションに、そのようなデバイスがどのように機能することができるかについての入力を有することを可能にする。
一次パーティションは、二次パーティション内のデバイスのドライバオブジェクトに関するプロキシとしての代役をするプロキシドライバオブジェクトを有することができる。そのようなデバイスのドライバオブジェクトは、通例的にドライバのスタック上に備わっており、フィルタによって上及び下を取り囲まれ、そのようなデバイスのドライバオブジェクトが一次パーティションによって実装されるポリシーによって適当に機能していることを確実にする。そのようなポリシー及び他の命令(コード及び/又はデータを含むであろうとなかろうと)は、二次パーティション内のドライバのスタック上の任意のオブジェクトに対するプロキシドライバオブジェクトによって通信されることができる。
例えば、本開示の態様を限定しないものにおいて、図4は、仮想マシン環境内の動作を管理し、それによって分配されたハードウェア状態管理を可能にするシステムを例示する。換言すれば、たとえデバイスのドライバオブジェクト406がデバイス412の制御を維持したとしても、フィルタ408,410がデバイスのドライバオブジェクト406に対する命令を提供する方法のため、そのようなデバイス412がどのように制御されることができるかに関する入力をプロキシドライバオブジェクト404が依然として有するように、一次パーティション内のプロキシドライバオブジェクト404は、例えば、どのようにドライバのスタック416上のオブジェクト408,406,410と通信することができるかを例示する。
例えば、第2のフィルタ408は、プロキシドライバオブジェクト404からデバイスのドライバオブジェクト406に命令を転送することができ、それによってどのようにデバイスドライバ406が機能するか(及び、それによってデバイスのドライバオブジェクト406が制御しているデバイス412がどのように機能するか)についての発言権がある。又は、代わりに、第2のフィルタ408は、第2のパーティション402内の任意の場所から発行された命令をインターセプトすることができ、それらをデバイスのドライバオブジェクト406に渡す又はそのような命令を一次パーティションによって設定される一部のポリシーに合致することができる他の命令と置き換える(例えば、そのような命令がプロキシドライバオブジェクト404によって提供される場合)。
このように、図4によって、ここに開示された主題の一つの態様において、一次パーティション内に位置付けられるプロキシドライバオブジェクト404を用いることができ、ここで、プロキシドライバオブジェクト404がデバイス412のためのプロキシドライバである。換言すると、厳密に言うと、それはデバイス412に関するデバイスドライバではないが、それはドライバのスタック416上の任意のフィルタ408,410と通信することができ、及び、これらのフィルタ408,410は、実際のデバイスのドライバオブジェクト406が意図する命令を通す(又は通さない)ことができるため、プロキシによってではあるが、それはデバイス412に関するデバイスドライバである。
更に、図4は、二次パーティション402内のドライバのスタック416内に位置付けられるデバイスのドライバオブジェクト406を示し、デバイスのドライバオブジェクト406はデバイス412を制御するように設計される。ドライバのスタック416内のデバイスのドライバオブジェクト406の下に位置付けられる第1のフィルタオブジェクト410があることを理解されることができる。第1のフィルタオブジェクト410は、多くの機能を有し、その中の一つはデバイスのドライバオブジェクトにインターフェースを提供することができ、デバイスのドライバオブジェクト406はデバイス412を制御することを含むバスに関連付けられた機能に携わることができる。そのようなバスに関連付けられた機能は、もちろん、デバイス412を制御するだけに限定されず、例えば、第1のフィルタ410がデバイス412に関するアドレス空間情報についてプロキシドライバ404に問い合わせることができるように、デバイスのドライバオブジェクト406は要求する情報を得ることを含むことができる。
加えて、ドライバのスタック416内のデバイスのドライバオブジェクト406の上に位置付けられる第2のフィルタオブジェクト408は、(a)プロキシドライバオブジェクトからの第1の命令のセットをデバイスのドライバオブジェクトに向ける、及び/又は(b)第2の命令が二次パーティションから発生することができる場合、デバイスのドライバオブジェクト406のために意図された第2の命令のセットをインターセプトする。これは、第2のフィルタ408が二重機能を有することができることを意味し、その二重機能は、命令をプロキシドライバ404からデバイスドライバ406に中継するメカニズムとして機能し、及びデバイスドライバ406に対して発行された命令をインターセプトするメカニズムとして機能し、ただし、これらの後者の命令は、通例的に二次パーティションによって発行されるが、例えば、三次の信頼されないパーティションのような他のパーティションによっても、それらは全く同様に簡単に発行される。
この後者のケースにおいて、第2の命令をインターセプトすると、第2のフィルタオブジェクト408は、一次パーティション400及び/又は、例えば、ハイパーバイザ、仮想マシンモニタ(図2及び図3に示される)などの仮想化しているモジュールによって、設定されたポリシーと第2の命令を比較することができる。第2の命令がこれらのポリシーと相反する場合、第2のフィルタオブジェクト408はこれらの命令をポリシーと一致する命令に置き換えることができる。その後、第2のフィルタオブジェクト408は、これらの一致した命令を下のデバイスのドライバオブジェクト406へ渡すことができる。
図4による、ここに開示された主題の一つの態様において、一次パーティション400は、プロキシデバイスドライバ404と通信するオブジェクト414(例えば、プラグアンドプレイマネージャオブジェクト及び/又はパワーマネージャオブジェクト、又は命令を発行することが可能な任意の他のオブジェクト等)を有することができ、一次パーティション400のオブジェクト414は、プロキシデバイスオブジェクト404に状態変化のイベントを実装するように指示する。そのような状態変化のイベントは、第1の命令を経由して運搬されることができる。言うまでもなく、第1の命令は、例えば、物理的マシン全体及び各々のパーティションのためのシステムシャットダウン又はシステムスタンバイのようなシステムワイドなイベント、又は、その代わりに、例えば、デバイスのドライバオブジェクト406に命令してデバイス412をシャットダウンする等のより局所的なイベント、のどちらかを発行するために用いられる。
他の態様において、図4のシステムは、上記の第2の命令を経由して第2のフィルタオブジェクト406と通信する二次パーティションオブジェクト415(再び、例えば、プラグアンドプレイマネージャオブジェクト及び/又はパワーマネージャオブジェクト、又は命令を発行することが可能な任意の他のオブジェクト等)を有することができる。二次パーティションオブジェクト415は、第2のフィルタオブジェクトにプラグアンドプレイイベント(マスストレージデバイスのプラグイン、デジタルカメラ等)及び/又はパワーイベント(シャットダウン、ハイバネイト等)に関連する命令を実装するように指示することができる。
インターセプトするケース又は方向付けるケースのどちらかにおいて、デバイスのドライバオブジェクト406が一次パーティション400(すなわち、例えば、マネージャ414のような、その中のモジュール)によって設定された少なくとも一つのポリシーに従うことを拒絶する場合、デバイスのドライバオブジェクト406によるデバイス412の制御は無効とされることができる。その無効は、例えば、厳密なルール又は一般的に注意するガイドラインの一セット、又はそれらと同様の何か等の、様々な変更要素に依存することができる。ここに開示された態様を実装することができる形態を検査する多数の様々なポリシーを当業者は直ちに理解するであろう。
これらは単に例示的な態様である。例えば、各々の単方向の通信関係の一つの方法は、その補完物を伴う場合があることが理解される。換言すると、プロキシドライバ404は、デバイススタック上のオブジェクト408,406,410と通信することができるため、反対の通信もまた本明細書で企図されていることが理解される。例えば、プロキシドライバ404は、例えば、メモリ又は二次パーティション402のI/O空間にマッピングされることのできない配置空間及び他の資源へのアクセスに関するリクエストのような、二次パーティション402オブジェクトからの通信を受信することもできる。
仮想マシン内の動作管理の実施例
今までの図2,3及び4において示される仮想マシン及びパーティション内での使用のための様々なオペレーティングシステムが、本明細書に企図されている。例えば、Windows(登録商標)は、通例的にデバイスの管理及び制御における役割を各々演じるデバイスのドライバオブジェクトのスタックを構築することによってI/Oを実行する。個々のI/Oリクエストパケット(I/O request packet:IRP)418の各々は、スタック(例えば、ドライバのスタック416)内の一番上のドライバオブジェクト(例えば、第2のフィルタオブジェクト408)に対して送信されることができ、一番上のドライバオブジェクトはそれを処理し終わると、IRPをスタックの下方に渡す。各々のドライバオブジェクトは、順番にIRPを受信し、スタックにおいて、その層に対する適当な処理を実行する。一番下の層は、一般的にセットアップ及び構成に関わる。図5において、例えば、この下の層は「PCI.sys」,「VMBus.sys」及び「ACPI.sys」(これらの頭字語は「peripheral component interconnect」(PCI)オブジェクト、「virtual machine bus」(VMBus)オブジェクト、及び「advanced configuration and power interface」(ACPI)オブジェクトを言及する)のオブジェクトと対応するであろう。これら及び本明細書で用いられるいずれの他の頭文字語も当業者は直ちに理解するであろう。
Windows(登録商標)において、物理的デバイス(例えば、デバイス412)は、物理的コンピュータシステム内に全体的なバスの管理を所有するバスドライバ(例えば、「PCI.sys」)によって発見される。デバイスはシステム内の「PCI Express」バスに接続されることができ、Windows(登録商標)内の「PCI Express」バスドライバによって発見されることができる。例えば、他のドライバ(Functional Driver,又はFDOと呼ばれる)をロードさせることができるプラグアンドプレイ(PnP)マネージャのような、マネージャとプロトコルにおいて携わることができるのは、このドライバ(「PCI.sys」)である。このFDO(例えば、デバイスドライバ406)は、実際にデバイスを制御する。「PCI.sys」は、PCI Expressデバイスの構成に特有なインターフェースを発行することもでき、セットアップ及び構成中にFDOがデバイスに対する操作を行うことを許容する。
バスドライバが新しいデバイスを発見した場合、新しいデバイスオブジェクトを創造することができ、新しいデバイススタックの一番下を創造する。PnPマネージャは、それを特定する及び一連のプロパティを集める一連のリクエストを、新しいスタックに送信することができる。この情報から、バスドライバによって創造されたデバイスオブジェクトの一番上の層に対するドライバを決定することができる。
このコンテキストを適切とするものとして、次に、図5は、図4において説明された主題の例示的かつ非限定的な実装を示す。図5において、一連のPCIバスを有する一連のデバイススタックが、親の(又は信頼された)パーティション及び子の(又は信頼されない/特権のない)パーティション内に示される。これらは、各々、図4の一次パーティション400及び二次パーティション402に対応する単なる例示的なパーティションである。様々な信頼されたパーティションと信頼されないパーティションとの関係を有する他のパーティションの組を用いることができる。ここに開示されたデバイススタックは、例えば、ビデオコントローラ508、IDEコントローラ510、第1のネットワークスタック504、第2のネットワークスタック506、PCIブリッジスタック512、及びPCIルートスタック514の様々なタイプとすることができる。典型的な仮想マシン環境において用いられることができる無数の異なるデバイススタックを当業者は直ちに理解するであろう。
図5において、デバイススタックは長方形で表され、デバイスオブジェクトは楕円形によって表される。すでに言及したように、スタック内の一番下のデバイスオブジェクトは、PCIルートバスの場合は除いて、図5において「PCI.sys」であるバスドライバとすることができる。この例では、ルートバスは、APCIファームウェアを調べることによって発見されることができ、従って、「APCI.sys」は、PCIルートスタック514の一番下である。他のデバイスオブジェクト、例えば、ネットワーク1 504スタック内の「Net.sys」又はビデオスタック508内の「Video」等は、PCI.sysオブジェクトの上であり、それらは実際の物理的デバイスを制御することができる。
この例において、親のパーティション500はマシン内の全てのデバイスを制御することができる。例えば、デバイスを子のパーティション502のような他のパーティションに割り当てるときでさえ、デバイス全域にわたる制御の一部の測定を保持することができ、子のパーティションは、全体のバス又は全体のマシンを含む動作を妨げることができない。すでに説明されたように、そのような制御を保持するための親のパーティション500に関する一つの方法は、子のパーティションドライバの上及び下のフィルタを用いることによる、及びそれと関連する命令の様々なセットを用い操作することによる。
例えば、親のパーティション500が子のパーティション502に、デバイス、おそらくネットワークインターフェースを直接制御することを許可したい場合、親のパーティション500内のデバイスを現在制御している全てのドライバを最初にアンロードすることができる(子のパーティション内のドライバとの競合を避けるために)。その後、親のパーティションにおいて異なるドライバをロードし、それは子のパーティションへ渡されるリクエストを管理するために存在するものである。図5において、この機能は、ネットワーク2のスタック506内の「VMRedir.sys」オブジェクトによって実行される。このように、上で提唱されたように、親のパーティション500内の「VMRedir.sys」オブジェクトは、子のパーティション502のネットワーク2のスタック516内の「Net.sys」オブジェクトに関するプロキシオブジェクトである。
子のパーティション502において、ドライバは、物理的デバイス(例えば、ネットワークインターフェースカード(NIC))に対応するデバイススタックを構築されることができる。これは任意の仮想マシンアウェアのデバイスドライバのセットによってなされることができるが、図5において、「VMRedir.sys」オブジェクトによってなされるように示され、クロスパーティションI/O(SN:11/128647,「Partition Bus」 Attorney Docket No.MSFT−4771を参照)を管理するためのメカニズムとすることができる。このバスドライバオブジェクトの上では、デバイスオブジェクトが階層化され(「VMPCI.sys」)、この上では子のパーティションに割り当てられたPCI Expressデバイスを管理し、このPCI Express NICのためのレギュラードライバ(FDO)がロードされる(「Net.sys」)。また、この上では、他のデバイスオブジェクトが階層化され(再び、「VMPCI.sys」)、二次パーティション内から及び/又は親のパーティション500からのリダイレクト命令からこのスタックに送信される一部のIRPをインターセプトする。図4の第1のフィルタ410及び第2のフィルタ408の両方は、図5の「VMPCI.sys」と対応することができる。
次に、図6は、図5に示されたデバイスドライバのスタック516を介してIRPがどのように流れるかをより詳細に例示する。IRPの矢印は、PnPマネージャ及び/又はパワーマネージャ600(それらは別個の存在とすることができる又はできない)に対する、及び、からのフローを表す。一番上のデバイスオブジェクト(「VMPCI.sys」の部分)は、これらのIPRをインターセプトし、デバイススタック516が二次パーティション内からくる任意のポリシーを注意したことを二次パーティション502に信じさせる方法においてそれらを扱う。その矢印は、FDO、すなわち、「Net.sys」によって観察されることができるIRP602のフローも示し、それらはバスドライバに対して流れ下るIRPを示す。
図7は、どのように状態変化するPnP及びパワーマネージメント700のIRP702(点線で示される)が一次パーティションにおいて送信されることができるか、及び、どのようにこれらのIRP704(再び、点線で示される)が二次パーティション502に対して転送されるかを示す。これらのIRP704は、本質的に、一次パーティション500のネットワークスタック506内の「PCI.sys」から二次パーティション502のネットワークスタック516内の「VMPCI.sys」へリダイレクトされる。そこで、「VMPCI.sys」オブジェクト(すなわち、フィルタ)は、それらをデバイスドライバ「Net.sys」に伝えることができ、又は任意の第2のパーティション502IRP706をインターセプトするルール又はガイドラインのようにそれらを用いることができる。
ここに開示された主題の一つの態様として、一次パーティション500において送信されるIRP702は、メッセージを二次パーティション502に送信することができる。これらのメッセージを、VMPCI.sysによってIRPに戻し、NICドライバ(すなわち、「Net.sys」)に送信することができる。NICドライバは、「VMPCI.sys」にそれらを下り進め(それがすることになっているように)、このオブジェクトは、そこでそれらをキャッチし、そのスタックの更に下に進むことを妨げる。その一方で、「Net.sys」の上及び下の層が「VMPCI.sys」オブジェクトであるため、二次パーティション502内に生じることができる任意の状態変化するIRP706(少なくとも部分的に破線で示されている)は、そのスタックを下のNICドライバ(すなわち、「Net.sys」)に送信されることができ、又はその先へのシャトル708とすることができる。
さらに、「Net.sys」に由来するバスレベルで、デバイスを管理するあらゆる試みは、そのスタックを下の「VMPCI.sys」に送信され、それらは一次パーティションに戻され、「PCI.sys」オブジェクトの前方へ送信されることができる。バスレベル管理の例は、ネットワークデバイスのPCI Express配置空間を読み出す要求を含むことができる。本開示を読むと、当業者は、上記の態様をとることができる様々な他の置換を理解するであろう。これらの態様は限定されず、単に例示的であることを意味する。
要点
要点において、仮想マシン環境内の動作を管理する様々なシステムが論じられた。これらのシステムは、当業者に明らかなように、方法又はコンピュータ可読媒体で存在する命令として実施されることができる。例えば、例示的かつ非限定的な方法は、以下のステップを備えることができる(ここで、これらのステップの順序は、様々な置換において実装されることができる)。ボックス800では、パーティションにおいて、デバイススタックは物理的デバイスに対応して構築されることができる。その後、ボックス802では、第1のフィルタオブジェクトはデバイススタック上で階層化され、このフィルタはインターフェースをバスに関連付けられる動作に携わるオブジェクトに関するデバイスのドライバオブジェクトに提供する。次に、ボックス804では、デバイスのドライバオブジェクトは第1のフィルタオブジェクトの上に階層化されることができ、ドライバオブジェクトは第1のフィルタオブジェクトを経由して物理的デバイスを制御することができる。最後に、ボックス806では、第2のフィルタオブジェクトは、デバイスのドライバオブジェクトの上に階層化されることができ、第2のフィルタオブジェクトは、第1の命令のセットをプロキシサーバからデバイススタックに方向付けるために構成されることができ、プロキシサーバは、このパーティションから異なるパーティションに属することができる。
今や、第1のフィルタオブジェクト、デバイスのドライバオブジェクト、及び第2のフィルタオブジェクトが構築されたため、このデバイススタックは、他のパーティション内のプロキシドライバオブジェクトと対話することができる。このように、ボックス808では、デバイススタックは、命令、IRP、メッセージ、及びそのような(コード及び/又はデータであろうとなかろうと、基本的に任意の情報)情報を処理することができる。例えば、ボックス810では、プロキシドライバオブジェクトからの上記第1の命令のセット(そのような命令は、システムワイド又は局所だけの効果を有する)を処理することができる。更に、ボックス812では、デバイスのドライバオブジェクト用に意図された第2の命令のセットを処理することができ、第2の命令はパーティションに由来し(すなわち、それらはインターパーティション、すなわち、異なるパーティションから由来するパーティションであることに対向するようなスタックのように、同じパーティションからのイントラパーティション命令である)、これらの第2の命令は、プラグアンドプレイ及びパワーイベントに関連付けられることができる。最後に、ボックス814では、第1のフィルタは、インターフェースをドライバオブジェクトに提供することができ、異なるパーティションからの、ドライバオブジェクトに関する必要な情報を得ることができる(例えば、バスに関連付けられた情報)。
今までに説明された他の態様は、2つの制御の概念を含むことができる。例えば、制御の概念は、デバイス自体の動作に関連するデバイス状態の制御として及び全体のシステムに影響するデバイス状態の制御として分けられることができる。例えば、前者のケースは個々のI/O動作(例えば、現在読み出されているデスク上のオフセット)と関連付けられる情報を含むことができる。及び、更に、後者のケースはデバイスの電源スイッチを含むことができ、全体のシステムも電源が入らない限り、ターンオンされることができない。このように、この態様において、一次パーティション内の全体のシステムに関連するデバイス状態の制御を保持する一方で、生じることは、I/Oに関するデバイス状態の分離及び第2のパーティションへの割り当てである。
ここに開示された主題の方法、システム、装置は、例えば、電気配線又は電気ケーブルを超えた、光ファイバを介した、又はあらゆる他の形式の送信を経由したような、一部の送信媒体を超えて送信されるプログラムコード(例えば、コンピュータ可読媒体のような)の形式において具現化されることもでき、ここで、プログラムコードが、例えば、EPROM、ゲートアレイ、PLD(programmable logic device)、例えば、以下の図に示される、ビデオレコーダ又はそのようなクライアントコンピュータのようなマシンによって受信及びロード及び実行されるとき、マシンは本主題を実施する装置となる。汎用プロセッサで実装されるとき、プログラムコードはプロセッサと結合し、本主題の機能性を確保及び修復することを実行するために動作する唯一の装置を提供する。
最後に、本開示は様々な図において説明されたような好ましい態様に関連して説明され、他の同様の態様が用いられることができ、又は、変更及び追加は、それらから逸脱することなく、本開示の同様の機能を実行する説明された態様でなされることができる。例えば、本開示の様々な態様において、仮想マシン環境内の動作管理が論じられた。しかしながら、これらの説明された態様に対する他の同等のメカニズムも本明細書を教えることによって検討される。それ故に、本開示は、いかなる単一の態様に限定されるべきではなく、むしろ添付の特許請求の範囲に従った広さ及び範囲において解釈される。

Claims (20)

  1. 仮想マシン環境内の動作を管理するシステムであって、
    第1のパーティションに位置付けられる少なくとも一つのプロキシドライバオブジェクトであって、デバイスに関するプロキシドライバである前記少なくとも一つのプロキシドライバオブジェクトと、
    第2のパーティション内のドライバのスタックに位置付けられる少なくとも一つのデバイスのドライバオブジェクトであって、前記デバイスを制御するように構成された前記少なくとも一つのデバイスのドライバオブジェクトと、
    前記ドライバのスタック内の前記少なくとも一つのデバイスのドライバオブジェクトの下に位置付けられる少なくとも一つの第1のフィルタオブジェクトであって、前記デバイスを制御することを含むバスに関連付けられた機能に携わる前記少なくとも一つのデバイスのドライバオブジェクトのための前記少なくとも一つのデバイスのドライバオブジェクトへインターフェースを提供する前記少なくとも一つの第1のフィルタオブジェクトと、
    前記ドライバのスタック内の前記少なくとも一つのデバイスのドライバオブジェクトの上に位置付けられる第2のフィルタオブジェクトであって、少なくとも一つの(a)前記少なくとも一つのプロキシドライバオブジェクトからの第1の命令を前記少なくとも一つのデバイスのドライバオブジェクトへ方向付けることと、(b)前記少なくとも一つのデバイスのドライバオブジェクトのために意図され、前記第2のパーティションに由来する第2の命令をインターセプトすることとの少なくとも一方をするように構成された前記少なくとも一つの第2のフィルタオブジェクトと
    を備えることを特徴とするシステム。
  2. 前記少なくとも一つのプロキシデバイスオブジェクトと通信する第1のパーティションオブジェクトを更に備え、前記第1のパーティションオブジェクトは前記少なくとも一つのプロキシデバイスオブジェクトに、少なくとも一つの状態変化するイベントを実装するように指示し、前記少なくとも一つの状態変化するイベントは前記第1の命令を介して伝達されることを特徴とする請求項1に記載のシステム。
  3. 前記第1のパーティションオブジェクトは(a)プラグアンドプレイマネージャオブジェクト及び、(b)パワーマネージャオブジェクトの少なくとも一つであることを特徴とする請求項2に記載のシステム。
  4. 前記少なくとも一つの状態変化するイベントはシステムワイドイベントであることを特徴とする請求項2に記載のシステム。
  5. 前記第2の命令を介して前記少なくとも一つの第2のフィルタオブジェクトと通信する第2のパーティションオブジェクトを更に備え、前記第2のパーティションオブジェクトは前記少なくとも一つの第2のフィルタオブジェクトに、(a)プラグアンドプレイイベント、及び(b)パワーイベントに関連する命令の少なくとも一つを実装するように指示することを特徴とする請求項1に記載のシステム。
  6. 前記第2の命令をインターセプトすると、前記少なくとも一つの第2のフィルタオブジェクトは(a)前記第1のパーティション、及び(b)仮想化モジュールのうちの一つによって設定された少なくとも一つのポリシーと前記第2の命令を比較し、前記第2の命令が前記少なくとも一つのポリシーと競合する場合、前記少なくとも一つの第2のフィルタオブジェクトは前記第2の命令を前記少なくとも一つのポリシーと一致する命令と置き換え、それらを前記少なくとも一つのデバイスのドライバオブジェクトに伝達することを特徴とする請求項1に記載のシステム。
  7. 前記少なくとも一つのデバイスのドライバオブジェクトが前記第1のパーティションによって設定された少なくとも一つのポリシーと適合することを拒絶する場合、前記少なくとも一つのデバイスのドライバオブジェクトによる前記デバイス制御は無効にされることを特徴とする請求項1に記載のシステム。
  8. 仮想マシン環境内の動作を管理する方法であって、
    パーティション内に物理的デバイスに対応するデバイスのスタックを構築することと、
    前記デバイスのスタック上で、インターフェースをデバイスのドライバオブジェクトに提供する第1のフィルタオブジェクトを階層化することと、
    前記第1のフィルタオブジェクトを介して前記物理的デバイスを制御する前記デバイスのドライバオブジェクトを前記第1のフィルタオブジェクトの上に階層化することと、
    前記パーティションから異なるパーティション内に属するプロキシドライバオブジェクトからの第1の命令のセットを前記デバイスのスタックへ方向付ける第2のフィルタオブジェクトを前記デバイスのドライバオブジェクトの上に階層化することと
    を備えることを特徴とする方法。
  9. 前記デバイスのドライバオブジェクトのために意図された第2の命令のセットをインターセプトすることを更に備え、前記第2の命令は前記パーティションに由来することを特徴とする請求項8に記載の方法。
  10. 前記インターセプトすることの後に、前記第2の命令が前記異なるパーティション内のモジュールによって設定されたポリシーと競合する場合、代替の命令に代えることを更に備えることを特徴とする請求項9に記載の方法。
  11. 前記物理的デバイスのためのドライバオブジェクトを前記異なるパーティションから取り除くことを特徴とする請求項8に記載の方法
  12. 前記異なるパーティションからのリクエストを管理する前記プロキシドライバをロードすることを更に備え、前記リクエストは前記プロキシドライバによって前記パーティションへ渡され、前記デバイスのドライバオブジェクトによりタスクを実行することを特徴とする請求項8に記載の方法。
  13. 前記プロキシドライバオブジェクトのためのリクエストを前記ドライバスタックにリダイレクトすることを更に備え、前記リクエストはシステムワイド効果を有することを特徴とする請求項8に記載の方法。
  14. 前記異なるパーティションによって設定されたポリシーに従った参画の拒絶を前記デバイスのドライバオブジェクトによって検出して、そのような拒絶が生じる場合、前記デバイスのドライバオブジェクトからの前記物理的デバイスの制御を無効にすることを特徴とする請求項8に記載の方法。
  15. 前記仮想マシン環境の特権のないパーティションとして前記パーティションを設計し、且つ前記仮想マシン環境の信頼されたパーティションとして前記異なるパーティションを設計することを特徴とする請求項8に記載の方法。
  16. 物理的計算デバイス上で実装されるコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
    第1のパーティションに、デバイスのためのプロキシとして作動する前記プロキシドライバオブジェクトのインスタンスを作成することと、
    第2のパーティションにおいて、前記デバイスを制御するように構成されたデバイスのドライバオブジェクトであって、ドライバスタック内の前記デバイスのドライバオブジェクトのインスタンスを作成することと、
    前記デバイスを制御する前記デバイスのドライバオブジェクトのために前記デバイスのドライバオブジェクトにインターフェースを提供する第1のフィルタオブジェクトであって、前記ドライバスタック内の前記デバイスのドライバオブジェクトの下の前記第1のフィルタオブジェクトのインスタンスを作成することと、
    (a)第1のパーティションベースの命令を前記デバイスのドライバオブジェクトへ方向付けることと、(b)前記デバイスのドライバオブジェクトのために意図された第2のパーティションベースの命令をインターセプトすることとの少なくとも一方をするように構成された第2のフィルタオブジェクトであって、前記ドライバスタックにおいて前記デバイスのドライバオブジェクトの上の前記第2のフィルタオブジェクトのインスタンスを作成することと
    を備えることを特徴とするコンピュータ可読媒体。
  17. 前記第1のパーティションから前記デバイスのための任意のドライバオブジェクトをアンロードすることを更に備えることを特徴とする請求項16に記載のコンピュータ可読媒体。
  18. 前記プロキシデバイスオブジェクトのためのプラグアンドプレイマネージャ及びパワーマネージャを含むモジュールのセットを形成する管理モジュールによって、リクエストに続く前記デバイスのドライバオブジェクトへ前記第1のパーティションベースの命令を方向付けることを更に備えることを特徴とする請求項16に記載のコンピュータ可読媒体。
  19. 前記第1のパーティションを信頼されたパーティションとして設計し、且つ前記第2のパーティションを信頼されないパーティションとして設計することを更に備えることを特徴とする請求項16に記載のコンピュータ可読媒体。
  20. 前記デバイスのドライバオブジェクトのために意図された前記第2のパーティションベースの命令をインターセプトし、第1のパーティションベースのポリシーに対する適合性について前記第2のパーティションベースの命令を検査し、前記インターセプトをすると、前記第2のパーティションベースの命令と前記第1のパーティションベースのポリシーの間で一致が生じない場合、前記ポリシーと一致している命令と前記第2のパーティションベースの命令を置き換えることを特徴とする請求項16に記載のコンピュータ可読媒体。
JP2009530504A 2006-09-29 2007-08-28 仮想マシン内の分配されたハードウェア状態管理 Active JP5050059B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/540,211 2006-09-29
US11/540,211 US7877760B2 (en) 2006-09-29 2006-09-29 Distributed hardware state management in virtual machines
PCT/US2007/076947 WO2008039625A1 (en) 2006-09-29 2007-08-28 Distributed hardware state management in virtual machines

Publications (3)

Publication Number Publication Date
JP2010505198A true JP2010505198A (ja) 2010-02-18
JP2010505198A5 JP2010505198A5 (ja) 2011-08-04
JP5050059B2 JP5050059B2 (ja) 2012-10-17

Family

ID=39230518

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009530504A Active JP5050059B2 (ja) 2006-09-29 2007-08-28 仮想マシン内の分配されたハードウェア状態管理

Country Status (13)

Country Link
US (1) US7877760B2 (ja)
EP (1) EP2076843B1 (ja)
JP (1) JP5050059B2 (ja)
KR (1) KR20090074025A (ja)
CN (1) CN101523370B (ja)
AU (1) AU2007300370A1 (ja)
BR (1) BRPI0715921A8 (ja)
CA (1) CA2661025A1 (ja)
MX (1) MX2009002567A (ja)
NO (1) NO20090937L (ja)
RU (1) RU2429530C2 (ja)
TW (1) TW200821936A (ja)
WO (1) WO2008039625A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008149417A2 (ja) * 2007-06-04 2008-12-11 Fujitsu Limited 要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置
US8281306B2 (en) * 2008-06-06 2012-10-02 International Business Machines Corporation Managing assignment of partition services to virtual input/output adapters
DE102008030317A1 (de) * 2008-06-30 2009-12-31 Trumpf Werkzeugmaschinen Gmbh + Co. Kg System und Verfahren zur Fernkommunikation zwischen einem zentralen Computer und einer Maschinensteuerung
US8321878B2 (en) * 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method
US20100145854A1 (en) * 2008-12-08 2010-06-10 Motorola, Inc. System and method to enable a secure environment for trusted and untrusted processes to share the same hardware
JP5365847B2 (ja) * 2009-03-05 2013-12-11 日本電気株式会社 仮想化装置における物理デバイスのコンフィグレーション処理方法及びコンピュータシステム
CN101510236B (zh) * 2009-03-11 2011-04-06 上海坦瑞信息技术有限公司 基于领域操作平台的即插即用系统
US10467187B1 (en) * 2009-05-20 2019-11-05 Acronis International GbmH System and method for restoration of MICROSOFT exchange server mail
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US9804874B2 (en) * 2011-04-20 2017-10-31 Microsoft Technology Licensing, Llc Consolidation of idle virtual machines on idle logical processors
US8839240B2 (en) * 2010-11-29 2014-09-16 International Business Machines Corporation Accessing vendor-specific drivers for configuring and accessing a self-virtualizing input/output device
US9292329B2 (en) 2011-02-10 2016-03-22 Microsoft Technology Licensing, Llc Virtual switch interceptor
US9218195B2 (en) 2011-05-17 2015-12-22 International Business Machines Corporation Vendor-independent resource configuration interface for self-virtualizing input/output device
WO2015042937A1 (zh) 2013-09-30 2015-04-02 华为技术有限公司 故障管理的方法、实体和系统
US9785576B2 (en) 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
CN106922189B (zh) * 2014-09-19 2020-02-21 株式会社艾拉博 设备代理装置及其控制方法
US9804873B2 (en) 2015-08-14 2017-10-31 Red Hat Israel, Ltd. Guest management of devices assigned to a virtual machine
US20170206091A1 (en) * 2016-01-20 2017-07-20 International Business Machines Corporation Sharing ownership of an input/output device with an existing partition
US10417458B2 (en) 2017-02-24 2019-09-17 Microsoft Technology Licensing, Llc Securing an unprotected hardware bus
RU2672184C1 (ru) * 2018-01-26 2018-11-12 Хуавей Текнолоджиз Ко., Лтд. Способ, устройство и система управления обработкой отказов
US10572246B2 (en) 2018-04-27 2020-02-25 Ati Technologies Ulc Live update of a kernel device module
CN112214277B (zh) * 2020-09-04 2024-03-19 深圳航天科技创新研究院 基于虚拟机的操作系统分区方法、装置及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689253A (ja) * 1991-03-26 1994-03-29 Internatl Business Mach Corp <Ibm> 汎用のオペレーティング・システム・インターフェースを有するデバイス・ドライバを含むデータ処理システム
JP2002108797A (ja) * 2000-09-29 2002-04-12 Hitachi Ltd 記録装置の駆動システム及び駆動方法
JP2006195981A (ja) * 2005-01-14 2006-07-27 Microsoft Corp アプリケーションサーバ環境におけるusbデバイス
US20060206904A1 (en) * 2005-03-11 2006-09-14 Microsoft Corporation Systems and methods for supporting device access from multiple operating systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6854115B1 (en) 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
CN1313562A (zh) * 2001-05-15 2001-09-19 北京慧讯信息技术有限公司 嵌入式开放平台的体系结构
EP1678617A4 (en) * 2003-10-08 2008-03-26 Unisys Corp COMPUTER SYSTEM PARAVIRTUALIZATION BY USING A HYPERVISOR IMPLEMENTED IN A PARTITION OF THE HOST SYSTEM
US20070061441A1 (en) * 2003-10-08 2007-03-15 Landis John A Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions
US7752635B2 (en) * 2003-12-18 2010-07-06 Intel Corporation System and method for configuring a virtual network interface card
US7478178B2 (en) * 2005-04-22 2009-01-13 Sun Microsystems, Inc. Virtualization for device sharing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689253A (ja) * 1991-03-26 1994-03-29 Internatl Business Mach Corp <Ibm> 汎用のオペレーティング・システム・インターフェースを有するデバイス・ドライバを含むデータ処理システム
JP2002108797A (ja) * 2000-09-29 2002-04-12 Hitachi Ltd 記録装置の駆動システム及び駆動方法
JP2006195981A (ja) * 2005-01-14 2006-07-27 Microsoft Corp アプリケーションサーバ環境におけるusbデバイス
US20060206904A1 (en) * 2005-03-11 2006-09-14 Microsoft Corporation Systems and methods for supporting device access from multiple operating systems

Also Published As

Publication number Publication date
CN101523370A (zh) 2009-09-02
US7877760B2 (en) 2011-01-25
AU2007300370A1 (en) 2008-04-03
MX2009002567A (es) 2009-03-20
EP2076843B1 (en) 2016-01-27
CA2661025A1 (en) 2008-04-03
TW200821936A (en) 2008-05-16
KR20090074025A (ko) 2009-07-03
BRPI0715921A8 (pt) 2016-12-13
NO20090937L (no) 2009-06-29
BRPI0715921A2 (pt) 2013-07-30
EP2076843A4 (en) 2011-06-29
JP5050059B2 (ja) 2012-10-17
RU2429530C2 (ru) 2011-09-20
RU2009111225A (ru) 2010-10-10
EP2076843A1 (en) 2009-07-08
WO2008039625A1 (en) 2008-04-03
CN101523370B (zh) 2012-04-04
US20080082975A1 (en) 2008-04-03

Similar Documents

Publication Publication Date Title
JP5050059B2 (ja) 仮想マシン内の分配されたハードウェア状態管理
US11750446B2 (en) Providing shared memory for access by multiple network service containers executing on single service machine
US10333865B2 (en) Transformation of peripheral component interconnect express compliant virtual devices in a network environment
US20190379578A1 (en) Configuring a compute node to perform services on a host
US8225005B2 (en) Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect
JP4995015B2 (ja) 仮想計算機の実行可否検査方法
KR101602519B1 (ko) 가상화된 저장소 할당 방법
US8346997B2 (en) Use of peripheral component interconnect input/output virtualization devices to create redundant configurations
US8078764B2 (en) Method for switching I/O path in a computer system having an I/O switch
US8040900B2 (en) N-port network adaptor
US10635499B2 (en) Multifunction option virtualization for single root I/O virtualization
US10592434B2 (en) Hypervisor-enforced self encrypting memory in computing fabric
US9135042B2 (en) Provisioning a secure customer domain in a virtualized multi-tenant environment
US9131031B2 (en) Virtual computer system, virtual computer management program, and MAC address management method
US10257166B2 (en) Guest netfilter protection by virtual machine function
US8910152B1 (en) Migrating a virtual machine by using a hot-plug event
US20100100892A1 (en) Managing hosted virtualized operating system environments
WO2023109346A1 (zh) 网络虚拟化服务系统以及网络虚拟化服务器
Tarafdar et al. Building the infrastructure for deploying FPGAs in the cloud
US20240126622A1 (en) I/o acceleration in a multi-node architecture
Li The Study on the Construction of the Computing Platform Based on OpenStack

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110617

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20110617

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110825

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20110916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120110

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120327

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120622

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120723

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5050059

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250