JP4942966B2 - パーティションバス - Google Patents

パーティションバス Download PDF

Info

Publication number
JP4942966B2
JP4942966B2 JP2005253628A JP2005253628A JP4942966B2 JP 4942966 B2 JP4942966 B2 JP 4942966B2 JP 2005253628 A JP2005253628 A JP 2005253628A JP 2005253628 A JP2005253628 A JP 2005253628A JP 4942966 B2 JP4942966 B2 JP 4942966B2
Authority
JP
Japan
Prior art keywords
partition
instructions
computer
instruction
bus
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.)
Active
Application number
JP2005253628A
Other languages
English (en)
Other versions
JP2006318441A (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 JP2006318441A publication Critical patent/JP2006318441A/ja
Application granted granted Critical
Publication of JP4942966B2 publication Critical patent/JP4942966B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • 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/45537Provision of facilities of other operating environments, e.g. WINE

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は一般に、仮想マシン(または「パーティション」)の分野、およびそのようなパーティション内で実行されるオペレーティングシステムに関する。より詳細には、本発明は、パーティション間でデータを移送するため、および装置を共用するためのシステムおよび方法に関する。
著作権表示および許可
本特許文献の開示の一部には、著作権保護の対象となる記載が含まれることがある。本特許文献または特許開示は特許商標局の特許ファイルまたは記録に公開されているので、著作権者は、何人によるその複製にも異議を唱えることはないが、その他の行為についてはどのようなものであれ、すべての著作権の権利を保有する。以下の表示を本文献に適用する。Copyright(C)2005、Microsoft Corp.
一般的な仮想マシン環境では、複数の仮想マシンまたは「パーティション」が、仮想化ソフトウェア(virtualizing software)上で動作する。さらに、このソフトウェアは、ハードウェア上で動作する。仮想化ソフトウェアは、それ自体のオペレーティングシステム(OS)を有する複数のパーティションが、ハードウェア上で動作可能となるような方式で、ハードウェアを提示する。したがって、ハードウェアは、仮想化ソフトウェアによって、パーティション用に仮想化される。
個々のパーティションは、Windows(登録商標)、Linux、およびSolarisなどの異種OSを動作させることができる。これらのOSは、あるパーティション内の1つのOSがクラッシュしても、それが他のパーティション内の他のOSに影響を及ぼすことがないように、互いに分離することができる。
1組のハードウェア上で複数のパーティションを動作させることに関連するコストの1つは、仮想化ソフトウェアが、各パーティション用に装置を仮想化する際に、多大なプロセッササイクルを消費することである。同様に、仮想化ソフトウェアは、情報(リクエストおよび/またはデータ)または装置をそのようなパーティション間で共用する際にも、多大なサイクルを消費するが、それは、仮想化ソフトウェアが、これらの情報および装置を、パーティション間で共用できるように処理しなければならないためである。
具体的には、与えられたどのような仮想マシン環境でも、パーティション内に存在するいくつかの、おそらくはすべての入出力装置が、他のパーティション内に見出される複数のOSと一緒に共用されるようには設計されていないため、ある種の問題が生じる。大部分の装置のプログラミングモデルは、装置を「所有」するOSがただ1つしか存在しないものと仮定しており、このことが、様々なパーティション内に見出される複数のオペレーティングシステムによって、そのような装置を同時に使用することを非常に困難に、または不可能にしている。例えば、1つのディスクコントローラが、2つのオペレーティングシステムから同時にコマンドを受け取っている場合などに、問題が生じ得る。各オペレーティングシステムが、自分がファイルシステム構造を制御していると考え、選択したデータを無条件に書き込むと、やがてディスク内容の正確性は損なわれる。このような事態が起きないようにするには、装置の所有権を単一のオペレーティングシステムに割り当て、その後、その装置のサービスを他の任意の動作中のオペレーティングシステムと共用する方法およびシステムを考案すれば有利であろう。
さらに、ユーザはオペレーティングシステム同士の一定のレベルの統合を必要とするので、複数のオペレーティングシステムが同一マシンを共用しようと試みる場合に、別の問題が生じる。例えば、それぞれのパーティション内に見出されるオペレーティングシステム間でのデータ移送を、ユーザが望むことがある。したがって、動作中のオペレーティングシステム間でデータを、またはより広範には情報を移送する方法およびシステムを提供すればやはり有利であろう。
本発明の様々な態様において、仮想マシン環境内の様々なパーティション間で装置共用およびデータ転送を可能にする方法およびシステムが提供される。本発明の一態様で提供されるパーティションバス(partition bus)は、上記のパーティション間装置共用およびデータ転送を可能にするデータ転送機構である。
詳細には、パーティションバスは、リングバッファ(ring buffer)を使用して、一パーティションから別のパーティションに情報(リクエストおよび/またはデータ)を転送する。本発明の別の態様では、パーティションバスは、リングバッファを使用して一パーティションから別のパーティションにリクエストを送信し、転送ページ(transfer page)を使用して一パーティションから別のパーティションにデータを送信する。本発明のさらに別の態様では、パーティションバスは、リングバッファを使用してパーティション間でリクエストを送信し、アドレス空間操作(address space manipulation)を使用してパーティション間でデータを転送する。
本発明の付加的な態様では、パーティションバスは、一パーティション内に、別のパーティション内でのサービスに対応するローカルプロキシ合成装置(local proxy synthetic device)が存在することを可能にする。パーティションバスは、これらの合成装置が、ストレージコントローラなどの実際の装置、またはドラッグアンドドロップ機能などの抽象サービスに対応することも可能にする。さらなる態様では、パーティションバスは、パーティションによって書き込みおよび読み出しが行えるリングバッファをパーティションにマッピングすることにより、コンテキストスイッチング(context switching)の犠牲を払うことなく、パーティション間でデータを送信するためのメカニズムを提供する。さらに別の態様では、パーティションバスは、バージョン管理機構を提供し、パーティション内に配置されたサービスは、サービスのタイプおよびサービスのインスタンスに基づいて、グローバルに一意な識別情報を有する。別の態様では、パーティションバスは、第1のパーティションによって行われる第2のパーティションへのチャネルオファーの妥当性を検査するためのポリシー決定エージェント(policy decision agent)を使用する。このポリシーエージェントは第3のパーテーションに位置する。さらに別の態様では、パーティションバスは、ハードウェアエミュレート装置モジュール(hardware emulated device module)および仮想化サービスプロバイダ(virtualization service provider)の同時動作を可能にする。またさらに別の態様では、パーティションバスは、クライアントコンポーネントがユーザモードにあるか、それともカーネルモードにあるかに応じて、3つのコンポーネントの組み合わせから構成される。3つのコンポーネントには、リングバッファ管理、チャネル管理、およびバスドライバが含まれる。
本発明の他の特徴について以下で説明する。
本発明の要約および詳細な説明は、添付の図面と併せて読むことで、より良く理解される。本発明を説明するため、本発明の様々な態様が示される。しかし、本発明は、開示された特定のシステムおよび方法に限定されるものではない。
概要
パーティションバスの様々な態様について説明する。最初に、例示的なコンピューティング環境を、仮想マシン環境におけるオペレーティングシステムを有するパーティションの一般的説明と共に提示する。この説明の後、パーティションバスのパーティション間データ転送および装置共用機能について詳しく説明する。パーティションバスの一般的説明を提示した後、合成装置を使用したサービスである、パーティションバスの装置共用機能の詳細な検討を提示し、その後、リングバッファ、転送ページ、およびアドレス空間操作を使用する、パーティションバスのデータ転送機能の詳細な検討を提示する。加えて、パーティションチャネルオファー(partition channel offer)の妥当性を検査するポリシーエージェントの使用など、パーティションバスのさらなる態様について考察する。
例示的なコンピューティング環境
図1および以下の説明は、本発明を実施できる適切なコンピューティング装置についての簡単な概括的説明を提供することを意図している。例えば、図1に示すクライアントおよびサーバコンピュータまたは装置はどれも、この形態をとることができる。しかし、ハンドヘルド、ポータブル、およびその他のコンピューティング装置、ならびにすべての種類のコンピューティングオブジェクトが、本発明で、すなわち、コンピューティング環境における、データを生成でき、処理でき、受信でき、かつ/または送信できるあらゆる場所で、使用されることを企図されている。以下では汎用コンピュータについて説明するが、これは一例にすぎず、本発明は、ネットワーク/バス相互運用性および対話性を有するシンクライアントでも実施することができる。したがって、本発明は、非常に少ないまたは最低限のクライアント資源しか関係させないネットワークホストサービス環境で、例えば、装置内に配置されたオブジェクトなど、クライアント装置がネットワーク/バスへのインタフェースとしてのみ機能するネットワーク環境で実施することができる。本質的に、そこにデータを保存でき、またはそこからデータを取り出せ、もしくは別のコンピュータに送信できる場所はどこでも、本発明のオブジェクト永続性(object persistence)をもつ方法を実施するための望ましいか、または適した環境となる。
必ずしも必要ではないが、本発明は、装置またはオブジェクト用のサービスの開発者によって使用されるオペレーティングシステムを介して実施することができ、かつ/または本発明に従って動作するアプリケーションまたはサーバソフトウェアの内部に含ませることができる。ソフトウェアは、クライアントワークステーション、サーバ、またはその他の装置など、1つまたは複数のコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的コンテキストにおいて説明することができる。通常、プログラムモジュールには、特定のタスクを実行したり、または特定の抽象データ型を実施したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。一般に、プログラムモジュールの機能は、様々な実施形態における要求に応じて、組み合わせたり、または分割したりすることができる。さらに、本発明は、その他のコンピュータシステム構成およびプロトコルと一緒に実施することができる。本発明との使用に適している、その他の周知のコンピューティングシステム、環境、および/または構成には、パーソナルコンピュータ(PC)、現金自動預け払い機、サーバコンピュータ、ハンドへルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、プログラム可能消費者家電、ネットワークPC、電気器具、照明、環境制御要素(environmental control element)、ミニコンピュータ、メインフレームコンピュータなどが含まれるが、これらに限定されるものではない。
したがって、図1には、本発明を実施できる適切なコンピューティングシステム環境100が示されているが、上で明白にしたように、コンピューティングシステム環境100は、適切なコンピューティングシステム環境の一例にすぎず、本発明の用途または機能の範囲に関して何ら限定を示唆しようとするものではない。コンピューティング環境100が、例示的な動作環境100に示されたコンポーネントのいずれか1つまたは組み合わせに関して、何らかの依存性または要件を有すると解釈してはならない。
図1を参照すると、本発明を実施するための例示的なシステムは、コンピュータ110の形態の汎用コンピューティング装置を含む。コンピュータ110のコンポーネントには、プロセッシングユニット120、システムメモリ130、およびシステムメモリを含む様々なシステムコンポーネントをプロセッシングユニット120に結合するシステムバス121が含まれるが、これらに限定されるものではない。システムバス121は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む複数のタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISA(拡張ISA)バス、VESA(ビデオ電子規格協会)ローカルバス、および(メザニンバスとしても知られる)PCI(周辺コンポーネント相互接続)バスが含まれるが、これらの限定されるものではない。
コンピュータ110は一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセス可能な任意の利用可能媒体とすることができ、揮発性および不揮発性媒体、着脱可能および着脱不能媒体が含まれる。例えば、コンピュータ可読媒体として、コンピュータ記憶媒体と通信媒体を挙げることができるが、これらに限定されるものではない。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータといった情報を記憶するための任意の方法または技法で実施される揮発性および不揮発性媒体、着脱可能および着脱不能媒体が含まれる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリ、もしくはその他のメモリ技術、CDROM、DVD(デジタル多用途ディスク)、もしくはその他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくはその他の磁気記憶装置、または所望の情報を記憶するのに使用でき、コンピュータ110によってアクセスできる、その他の任意の媒体が含まれるが、これらに限定されるものではない。通信媒体は一般に、搬送波またはその他の移送機構などの変調データ信号中に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを表すものであり、任意の情報送達媒体を含む。「変調データ信号」という語は、信号中に情報を符号化するための方式で設定または変更された1つまたは複数の特性をもつ信号を意味する。例えば、通信媒体には、有線ネットワークまたは直接線接続などの有線媒体、および音響、RF、赤外線、およびその他の無線媒体などの無線媒体が含まれるが、これらに限定されるものではない。上記の媒体のどのような組み合わせも、コンピュータ可読媒体の範囲に含まれるものとする。
システムメモリ130は、ROM(読み取り専用メモリ)131およびRAM(ランダムアクセスメモリ)132などの、揮発性および/または不揮発性メモリの形態をとるコンピュータ記憶媒体を含む。基本入出力システム(BIOS)133は、起動中などにコンピュータ110内の要素間の情報伝送を助ける基本ルーチンを含み、一般にROM131に保存される。RAM132は一般に、プロセッシングユニット120が直ちにアクセス可能であり、かつ/または現在それに基づいて動作しているデータおよび/またはプログラムモジュールを含む。例えば、図1には、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137が示されているが、これらに限定されるものではない。
コンピュータ110はまた、その他の着脱可能/着脱不能、揮発性/不揮発性コンピュータ記憶媒体も含む。図1には、着脱不能な不揮発性の磁気媒体に対して読み書きを行うハードディスクドライブ141、着脱可能な不揮発性の磁気ディスク152に対して読み書きを行う磁気ディスクドライブ151、およびCD−RW、DVD−RW、またはその他の光媒体など着脱可能な不揮発性の光ディスク156に対して読み書きを行う光ディスクドライブ155が、例としてのみ示されている。例示的な動作環境で使用可能なその他の着脱可能/着脱不能、揮発性/不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、およびソリッドステートROMなどが含まれるが、これらに限定されるものではない。ハードディスクドライブ141は一般に、インタフェース140などの着脱不能メモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は一般に、インタフェース150などの着脱可能メモリインタフェースによってシステムバス121に接続される。
上で説明し、図1に示すドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶保持をコンピュータ110に提供する。図1には、例えば、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を記憶するハードディスクドライブ141が示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じであってもよく、異なっていてもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147には、少なくともそれらが異なるコピーであることを示すため、図1では異なる番号が振られている。ユーザは、キーボード162、およびマウス、トラックボール、またはタッチパッドといったポインティングデバイス161などの入力装置を介して、コンピュータ110にコマンドおよび情報を入力することができる。その他の入力装置(図示せず)としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、またはスキャナなどを挙げることができる。上記およびその他の入力装置は、システムバス121に結合されたユーザ入力インタフェース160を介して、しばしばプロセッシングユニット120に接続されるが、パラレルポート、ゲームポート、またはUSB(ユニバーサルシリアルバス)など、その他のインタフェースおよびバス構造によって接続することもできる。グラフィックスインタフェース182も、システムバス121に接続することができる。1つまたは複数のグラフィックスプロセッシングユニット(GPU)184が、グラフィックスインタフェース182と通信を行うことができる。モニタ191またはその他のタイプのディスプレイ装置も、ビデオインタフェース190などのインタフェースを介して、システムバス121に接続され、ビデオインタフェースは、ビデオメモリ186と通信を行うことができる。モニタ191に加えて、コンピュータは、出力周辺インタフェース195を介して接続できるスピーカ197やプリンタ196などのその他の出力周辺装置も含むことができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理コネクションを使用して、ネットワークまたは分散環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、またはその他の共通ネットワークノードとすることができ、コンピュータ110に関連して上で説明した多くの要素またはすべての要素を含むが、図1には、メモリ記憶装置181だけを示してある。図1に示す論理コネクションは、LAN(ローカルエリアネットワーク)171およびWAN(ワイドエリアネットワーク)173を含むが、その他のネットワーク/バスも含むことができる。そのようなネットワーク環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
LANネットワーク環境で使用する場合、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用する場合、コンピュータ110は一般に、インターネットなどのWAN173を介して通信を確立するためのモデム172またはその他の手段を含む。モデム172は、内蔵とも外付けともすることができ、ユーザ入力インタフェース160またはその他の適切な機構を介して、システムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関して示したプログラムモジュールまたはその部分は、リモートメモリ記憶装置に保存することができる。例えば、図1には、メモリ装置181に存在するリモートアプリケーションプログラム185が示されているが、これに限定されるものではない。図示のネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立するその他の手段も使用できることは理解されよう。
仮想マシン
図2は、コンピュータシステムにおける仮想化環境のためのハードウェアおよびソフトウェア構成の論理階層化を表した図である。この図では、仮想化プログラム210は、物理ハードウェア構成212上で直接的または間接的に動作する。仮想化プログラム210は、ホストオペレーティングシステムと一緒に動作する仮想マシンモニタ(virtual machine monitor)、または仮想化を実行するハイパーバイザ(hypervisor)コンポーネントを有するホストオペレーティングシステムとすることができる。仮想化プログラム210は、ゲストハードウェア構成208(このコンポーネントがパーティションまたは「仮想マシン」であることを図示するために破線で示されている)、すなわち、実際には存在せず、代わりに仮想化プログラム210によって仮想化されるハードウェアを仮想化する。ゲストオペレーティングシステム206は、ゲストハードウェア構成208上で実行され、ソフトウェアアプリケーション204は、ゲストオペレーティングシステム206上で動作する。図2の仮想化動作環境では、ソフトウェアアプリケーション204は、ホストオペレーティングシステムおよびハードウェア構成212と一般に互換性のないオペレーティングシステム上で動作するように設計されていても、コンピュータシステム202で動作することができる。
図3Aには、物理コンピュータハードウェア302の上で直接に動作するホストオペレーティングシステム(ホストOS)ソフトウェア層304を含む、仮想化コンピューティングシステムが示されており、ホストOS304は、オペレーティングシステム312および314によってそれぞれ使用されるインタフェースを、パーティションA308およびパーティションB310に提示することによって、物理コンピュータハードウェア302の資源へのアクセスを可能にする。これによって、ホストOS304は、その上で動作するオペレーティングシステム層312および314に気づかれることなく、動作することができる。やはり、仮想化を実行するのに、ホストOS304は、ネイティブな仮想化機能を有する特別に設計されたオペレーティングシステムとすることができ、または代わりに、仮想化を実行する組み込みハイパーバイザコンポーネント(図示せず)を有する標準オペレーティングシステムとすることができる。
再び図3Aを参照すると、ホストOS304の上に、例えば、仮想化Intel386プロセッサとすることができるパーティションA308と、例えば、Motorola680X0ファミリのプロセッサの1つの仮想化バージョンとすることができるパーティションB310の、2つのパーティションが存在する。各パーティション308および310の中に、それぞれゲストオペレーティングシステム(ゲストOS)A312およびB314が存在する。ゲストOS A312上では、アプリケーションA1 316とアプリケーションA2 318の2つのアプリケーションが動作し、ゲストOS B314上では、アプリケーションB1 320が動作する。
図3Aに関して、パーティションA308およびパーティションB310(破線で示されている)が、ソフトウェア構造としてのみ存在する仮想化コンピュータハードウェア表現であることに留意することが重要である。それらは、パーティションA308およびパーティションB310を、それぞれゲストOS A312およびゲストOS B314に提示するばかりでなく、ゲストOS A312およびゲストOS B314が間接的に実物理コンピュータハードウェア302と対話するために必要なすべてのソフトウェア工程を実行しもする、専用の仮想化ソフトウェアを実行することによって可能になる。
図3Bには、ホストオペレーティングシステム304”と一緒に動作する仮想マシンモニタ(VMM)304’によって仮想化が実行される代替の仮想化コンピューティングシステムが示されている。ある場合には、VMM304’は、ホストオペレーティングシステム304”の上で動作し、ホストオペレーティングシステム304”を介してだけコンピュータハードウェア302と対話するアプリケーションとすることができる。別の場合には、図3Bに示すように、VMM304’は、あるレベルでは、ホストオペレーティングシステム304”を介してコンピュータハードウェア302と間接に対話する部分的に独立なソフトウェアシステムを代わりに含むことができるが、別のレベルでは、VMM304’は、(ホストオペレーティングシステムがコンピュータハードウェアと直接に対話するやり方と同じように)コンピュータハードウェア302と直接に対話する。また別の場合には、VMM304’は、すべてのレベルで、ホストオペレーティングシステム304”を利用することなく、(ホストオペレーティングシステムがコンピュータハードウェアと直接に対話するやり方と同じように)コンピュータハードウェア302と直接に対話する、完全に独立なソフトウェアシステムを含むことができる(ただし、コンピュータハードウェア302の利用調整や、衝突回避などのためには、依然としてホストオペレーティングシステム304”と対話する)。
上述のパーティションを実装するためのこれらの変形はすべて、単に例示的な実装にすぎず、本明細書の内容はどのようなものであれ、本発明をどれか特定の仮想化態様に限定するものと解釈すべきではない。
パーティションバス概要:装置共用およびデータ転送
本発明の一態様では、ハードウェアバスのソフトウェアモデルが作成される。この「バス」が「パーティションバス」である。パーティションバスは、パーティション間データ転送機構の形式化を可能にする。また、パーティションバスを使用することによって、装置共用およびOS間統合を可能にするサービスを構築することが、はるかに容易になる。
パーティションバスは、複数のパーティションが動作するシステムにおいて、パーティション間またはパーティション内で使用される情報(リクエストおよび/またはデータ)転送機構である。しかし、パーティションバスは、仮想マシン環境で利用可能な単なる情報転送機構であるよう意図されてはいない。そのようなものとして、パーティションバスは、クライアントパーティション/サービスパーティション関係において、クライアントパーティションの個々の可能な目的をすべて満たす必要はない。例えば、パーティションバスは、ハードウェアアブストラクションレイヤ(HAL)が初期化用にそれを使用できるほど早く、NTカーネルモード環境にロードされる必要はない。
本発明の一態様では、パーティションバスは、それ自体を設定するため、パーティション間に通信チャネルを確立するため、およびパーティションに割り込みを掛けるために、ハイパーバイザプロセス間通信(IPC)に依存する。
図4には、パーティション間で装置共用および情報転送を可能にするパーティションバスの概括的な概念が示されている。3つのパーティション、すなわち、サービスパーティション402と、クライアントパーティションA404およびクライアントパーティションB406の2つのクライアントパーティションとが示されている。これらのパーティションは、ハイパーバイザ410によって維持される。これらのパーティションの各々は、何らかのOSを、すなわち、他のパーティションと同じOSか、または異なるOSを有することができる。したがって、サービスパーティション402は、Windows(登録商標)XPを実行中であってもよく、クライアントパーティションA404は、Windows(登録商標)2000を実行中であってもよく、クライアントパーティションB406は、Windows(登録商標)98を実行中であってもよい。
さらに、これらのパーティションの各々は、何らかの装置を含む。詳細には、サービスパーティション402は、物理装置424用のデバイスドライバ418を含む。デバイスドライバ418は、合成装置が物理装置424と通信を行えるようにする仮想化サービスプロバイダ(VSP)417と通信する。したがって、クライアントパーティションA404の合成装置420と、クライアントパーティションB406の合成装置422は、パーティションバス408を介して、物理装置424のサービスを利用することができる。
パーティションバス408は、クライアントパーティションA404およびクライアントパーティションB406が、それぞれ合成装置420および422を使用して、物理装置424にアクセスするための手段を提供する。言い換えると、パーティションバス408は、物理装置424などの装置の所有権を、Windows(登録商標)XP412などの単一のOSに割り当てるための手段と、そのような装置のサービスを、Windows(登録商標)2000 414やWindows(登録商標)98 416などの他の実行中OSと共用するための手段とを提供する。
さらに、パーティションバス408は、OSがパーティション間でデータを移送することも可能にし、その結果、ハイパーバイザ410による従来メカニズムをデータ移送トランザクションで利用して、高いコンピューティングコストを費やすことなく、例えば、サービスパーティション402から第2のクライアントパーティションB406に、データを容易に移送することができる。
パーティションバス:装置共用
本発明の別の態様では、図5Aには、パーティション内のローカルプロキシ合成装置によって表されるリモートサービスが示されている。例えばリモートパーティション508内にリモートオペレーティングシステム510と一緒に保存されたリモートサービス512が、パーティションバス514を介して提供されると、合成装置506が、クライアントパーティションのオペレーティングシステム504に追加される。リモートサービス512などのサービスインスタンスと装置506などの合成装置の間には、1対1の対応が存在する。合成装置の各々は、典型的なプロトコルバス上の典型的な装置がそうであるように、データを送信または受信するために使用することができる。
図5Bには、パーティションバス上で使用可能な合成装置に対応し得る装置およびサービスのタイプが示されている。具体的に図5Bを参照すると、合成装置516が提示されている。この合成装置516は、ストレージ、ネットワーキング、入力(キーボードやマウス)、サウンド、ビデオ、スマートカードなどの多種多様な装置518に対応し得る。合成装置516はまた、時間同期、ドラッグアンドドロップ、フォルダ共用、カットアンドペースト、リモート実行、リモートアプリケーション起動、プロセス間通信などの多種多様なサービス518にも対応し得る。どのような種類の装置およびサービスが合成装置516によってモデル化できるかについて、実際上、制限はない。
パーティションバス:データ転送
パーティションバス602は、一パーティションから別のパーティションに転送されるデータ量が、少量か、中量か、それとも大量かに応じて、少なくとも3つの異なる方法で、リクエスト(またはコマンド)およびデータの転送を可能にする。したがって、図6では、データ送信の3つのモデル、すなわち、リングバッファモデル604、転送ページモデル606、およびアドレス空間操作モデル608が示されている。
一般に、リングバッファモデル604は、リングバッファ610を使用して、一パーティションから別のパーティションにリクエストおよびデータを送信する。リングバッファは、バッファが満杯になった場合、古いデータを上書きする形で、さらなる情報を再びバッファの先頭から格納することで「リング」を形成する、単なる固定サイズのバッファである。典型的な仮想化システムでは、リングバッファは、2以上のOSから同時に利用可能とされる。
転送ページモデル606は、リングバッファ612を使用して、リクエストを送信し、転送ページ614を使用して、データを送信する(2つの転送ページ、すなわち、ページAおよびBが示されている)。転送ページは、メモリ内にアロケートされたページであり、情報は、一パーティションからアロケートページにコピーされ、さらにアロケートページから別のパーティションにコピーされることによって転送される。転送ページモデル606は、構造、プロトコル、または関連する順序をもたない点で、リングバッファとは異なる。したがって、転送ページモデルは、DMA操作のターゲットとしてより適しており、また転送ページ内でデータを操作中にロックを掛けずにおくためにもより適している。
最後に、アドレス空間操作モデル608について説明する。他の2つのモデルと同様、別のパーティションによって読まれる、一パーティションからのリクエストを保存するのに、リングバッファ616が使用される。また、3つのメモリマップ、すなわち、サービスパーティションメモリマップ618、クライアントパーティションメモリマップ622、および非仮想化システムメモリマップ620が示されている。クライアントパーティションおよびサービスパーティションは、(転送ページモデルのシナリオとは異なり)データをコピーする必要がなく、代わりに両パーティションによってデータにアクセスし、読むことができるように、メモリマッピング618および622の一部を変更して、非仮想化システムメモリマッピング620に対応づける。これは、クライアントパーティションおよびサービスパーティションが、それぞれのメモリマップを変更して、物理メモリページの一部を共用することを意味する。トレードオフは、クライアントパーティションのメモリマップ622およびサービスパーティションのメモリマップ618は、非仮想化システムメモリマッピング620に対応づけるために最初に変更しても、与えられたトランザクションが完了すれば、また元のマッピングに変更し直さなければならない点にある。つまり、パーティション間でデータを転送するのにコピーを使用する転送ページモデルとは対照的に、アドレス空間操作モデルは、アドレスマップ変更を使用する。
少量、中量、または大量のデータという概念は、相対的な概念であり、ある程度は、コンピュータシステム資源によって定められることに留意することが重要である。システム資源の可用性に応じて、適切な転送モデルを利用することができる。したがって、経験に基づけば、リングバッファモデルは、少量のデータを転送すべき場合に最も有効であり、転送ページモデルは、中量のデータを転送すべき場合に最も有効であり、アドレス空間操作モデルは、大量のデータを転送すべき場合に最も有効である。
したがって、本発明の一態様では、リングバッファモデルは、2つのパーティション間でリクエストおよびデータ(本明細書では、両方を併せて、または単独で「情報」と呼ぶ)の両方を受け渡すために取っておいたメモリ領域を使用する。このモデルでは、リングバッファに挿入された情報パケットは、1つのパケットが別のパケットの後に続くという意味において順序づけられる。また、前のパケットが挿入されないうちは、後続パケットを挿入することはできないので、リングバッファへのパケット挿入は一般に、相対的に素早い操作である。したがって、リングバッファは、立て続けに到着するデータに最も適しており、後続データを挿入する際に大きな待ち時間を生じさせない。
図7には、リングバッファモデルが示されている。ハイパーバイザ(図示せず)が、クライアントパーティション702とサービスパーティション708の2つのパーティションを維持する。サービスパーティション708は、何らかのサービスOS710を実行することができ、サービスOSは、データの形態の情報をクライアントパーティション702およびそのOS704に送信する。データは、連続的に並べられ、リングバッファ706に収められる。同様に、リクエストの形態の情報を、クライアントパーティション702からリングバッファ706を介してサービスパーティション708に送信し、何らかのサービスの実行を要求することができる。非仮想化システムメモリ705内のリングバッファ706は、706Aおよび706Bとして、それぞれパーティション702および708にマッピングされ、2つのパーティション702および708の間のリクエストおよびデータの、このスワッピングを可能にする。つまり、図7には、サービスパーティション708とクライアントパーティション702の間でリングバッファ706を介して送信された、2つのリクエストパケットと、2つのデータパケットが示されている。
本発明の別の態様では、転送ページモデルが利用される。このモデルでは、プールされたページは、転送ライブラリによって管理される。興味深いことに、サービスパーティションまたはクライアントパーティションのどちらかが、いつでも転送ページの組をアロケートすることができ、それをすでに使用されている既存の組に追加することができる。転送ページの組をアロケートしたパーティションは、その組に属するページのアロケーションおよびデアロケーションを含む、その組の管理権を所有する。
転送ページに関連する唯一のコストは、それらがアロケートされ、クライアントおよびサービスパーティションの両方にマッピングされるときに生じる。パーティションの物理アドレスマップも変更されるが、これは1回きりの操作であり、多くの転送によってコストを償却することができる。さらに、転送ページは両方のパーティションに永続的にマッピングされるので、機密をそこに保存することはできないが、これはまた、転送ページの内容を消去する必要がないことを意味する。
上述したように、図8に示される転送ページモデルは、転送ページが構造、プロトコル、または関連する順序を必要としない点で、図7に示されるリングバッファモデルと異なっており、クライアントは、DMA操作のターゲットとして転送ページをより自由に使用することができ、また転送ページ内でデータを操作中にロックを掛けずにおくことができる。
図8には、転送ページモデルの例示的な実装が示されている。サービスパーティション802およびクライアントパーティション804が示されており、これら2つのパーティションは、ハイパーバイザ806によって維持される。図8では、クライアントパーティション804のユーザモードプロセスが、サービスパーティション802の仮想ディスクサービス808によって処理されるファイルからデータを要求する。サービスパーティション802からデータを取得するリクエストは、ハードウェアダイレクトメモリアクセス(DMA)トランザクションとしてモデル化される。
例えば、アプリケーション812が、最初に7ページ分のデータを求めるリクエストを作成し、そのデータが、転送ページ811でたまたま利用可能である容量よりも多いとする。したがって、リクエストは、2つのサブリクエストに分割しなければならない。第1のリクエストが、仮想ディスクドライバ814に受け渡される。いくつかの実例では、これはフィルタとすることが、言い換えると、十分な知識をもった(fully-enlightened)ディスクドライバとすることができる(すなわち、ディスクドライバは、合成装置とだけ通信を行い、そこには仮想機能の痕跡を留めていない。広い意味で、「知識をもった」という語は、仮想化環境内で動作していることを知っているOS環境を指している)。
仮想ディスクドライバ814は、その物理デバイスオブジェクト(PDO)から取得した関数を使用して、標準DMAリクエスト818を作成する。その後、仮想ディスクドライバインタフェースインスタンス816は、プールされた転送ページの中で現在利用可能なすべてのページをアロケートする。この例では、アロケートされたページは、811A〜811Eの5ページであり、転送ページ811内に縦線を用いて示されている。
次に、リクエストが、サービスパーティション802内のサーバに送信され、仮想ディスクサービス808からこれらのページが取得される。サーバは、要求ページに書き込むと、すなわち、要求データをページ811A〜811Eにコピーすると、メッセージをクライアントパーティション804に返信する。その後、データは、転送ページからアプリケーション812によって維持されるバッファにコピーされる。コピー操作が終了すると、転送ページ811A〜811Eは解放される。
第2のリクエストのために、さらに2つのページ810Iおよび810Jが、プールの中からアロケートされる(その他の図示のページ810F〜810Hは、図示されていない他のリクエストによって予約されている)。したがって、新しいリクエストが、2ページ分のデータのためにサービスパーティション802に送信される。先の場合のように、サービスパーティション802のサーバは、転送ページ811I〜811Jにデータを書き込み、その操作に関するメッセージをクライアント804に返信する。その後、データは、アプリケーション812のバッファに再びコピーされ、その結果、最初に2つのフェーズに分割されたリクエストが完了する。
転送ページ811は、データを転送するために使用される。リクエストは、リングバッファ810を使用して転送される。本発明のこの態様における、リクエストがパケットとして順次転送されるという特質は、図7で説明した、リクエストおよびデータがリングバッファだけを使用して転送される場合の特質と同様である。
本発明の別の態様では、上で図7および図8を用いてそれぞれ説明したリングバッファおよび転送ページモデルの下で実行される、高コストのメモリコピーを回避するため、アドレス空間操作が使用される。ある種のトランザクションは、クライアントの物理アドレス空間内に任意に配置されるバッファを利用し、非常に大量のデータを転送する必要がある。このような状況では、固定ロケーションにある転送ページから任意に配置されるバッファへのデータのコピーを余儀なくさせることになるので、転送ページは使用されない。データが最終的に存在している必要があるメモリにデータを直接に配置できるよう保証するには、サービスパーティションが少なくとも一時的にクライアントパーティションからのページを含むように、サービスパーティションの物理アドレスマップを変更しなければならない。その後、データは、ソフトウェアまたはハードウェアによって、それらのページに直接書き込むことができ、またはそれらのページから直接読み出すことができる。トランザクションが完了した後、アドレスマップを元通りに変更し、サーバの物理アドレスマップからクライアントページを削除する。この1組の操作は、比較的コストが高いので、少量のデータの転送には使用されず、そのような場合は、データを転送バッファに/からコピーする方が、アドレスマップを変更するより効率的である。
図9には、クライアントパーティション902およびサービスパーティション908が示されており、両パーティションは、ハイパーバイザ(図示せず)によって維持される。各パーティション902および908は、独自のOS904および910をそれぞれ有する。これらのOSは、仮想アドレスをパーティションの物理アドレスにマッピングするメモリアドレスマップ914および916をそれぞれ維持する。これらのパーティション間で大量の情報(主としてデータ)を転送しなければならない場合、最も効率的なメカニズムは、関連するクライアントパーティションのメモリマッピング914を変更し、それらを非仮想化システムメモリマッピング907の一部に関連づけることを含む。例えば、図9では、クライアントパーティション902内の「A」マッピングは、非仮想化システムメモリ905内の「3」マッピングに関連づけられる。同様に、メモリ内の1つの場所から別の場所にデータをコピーする必要なしに、クライアントパーティション902およびサービスパーティション908が、非仮想化システムメモリ905にアクセスできるように、サービスメモリマッピング916は、非仮想化システムメモリマッピング907に関連づけられる。つまり、サービスパーティション908内の「b」マッピングは、非仮想化システムメモリ905内の「3」マッピングに関連づけられる。コピーを行わないことのトレードオフは、メモリマッピングをトランザクションの開始時に変更しなければならず、トランザクションの完了後に再び元通りに変更しなければならないことである。大量のデータを転送しなければならない場合、このトレードオフがよい結果をもたらす。
本発明の別の態様では、図10には、コンテキストスイッチに関係するコストを生じさせることなく、パーティション間で情報を送信するためのメカニズムが示されている。CPUは、個々のパーティションで動作するOSと一緒になって、これらのパーティションを切り替えながら、各パーティションにタイムスライスを提供する。そのようなタイムシェアリングシステムでは、コンテキストスイッチの際に、1つのタスク(またはパーティション)から別のタスク(またはパーティション)への切り替えに関連するコストが生じる。
さらに、パーティション間での割り込み送信も、かなり高コストのコンテキストスイッチングを必要とする。例えば、サービスパーティションからサービスを受けられるように、クライアントパーティションが、サービスパーティションを「起動」したい場合に、そのような割り込みを送信しなければならないことがある。同様に、サービスパーティションは、クライアントパーティションによって指定されたタスクを完了したことを、クライアントパーティションに知らせたいことがある。
そのような高コストのコンテキストスイッチングを回避するため、図10に示す、本発明のこの態様では、リングバッファをコマンドキューとして使用して、一パーティションは、別のパーティションのリングバッファにコマンドを入れ、そうすることで、(以下で説明する)アンダーレート状態(under rate condition)を除き、割り込み送信を回避する。
したがって、クライアントパーティション1002およびサービスパーティション1010が示されている。各パーティションは、Windows(登録商標)98またはWindows(登録商標)XPであるオペレーティングシステムを実行し、これらのパーティションは、ハイパーバイザ1016によって維持される。クライアントパーティション1002が、サービスパーティション1010が所有でき、サービスパーティション1010上の合成装置に対応可能な、サービスパーティション1010からのサービス、例えば、ディスクコントローラサービスを望む場合、このサービスを受けるための1つの方法は、クライアントパーティション1002が情報(一般にコマンド/リクエスト)をリングバッファ1006に書き込むことである。その後、サービスパーティション1010は、これらのコマンドを読み取り、リクエストに応じることができる。リングバッファ1006が両パーティション1002および1010にマッピングされる(1006Aおよび1006B)ことによって、これらのパーティションは、コンテキストスイッチングにコストをかけることなく、通信することができる。
サービスパーティション1010は、情報(一般にリクエストに対するレスポンスおよび/またはデータ)をリングバッファ1006に書き込んで、クライアントパーティション1002にリクエストが完了したことを知らせることができる。このシナリオでは、リングバッファ1006が、パーティションバス1008を実現するために使用されるが、上で説明した他のモデルを適用することもできる。
このリングバッファ実装を利用するパーティションは、リングバッファからコマンドを読み取るために割り込みをかける必要がなく、そのため、割り込み送信(および関連するコンテキストスイッチングすべて)にかかるコストを回避することができる。しかし、例えば、サービスパーティションが、クライアントパーティションから送信されたコマンドを実行しようとしない場合、割り込みは、これらのコマンドの実行を開始させるための適切な方法である。
要約すると、この場合のリングバッファモデルは、コンテキストスイッチングにかかるコストを回避するが、(1)空だった発信リングバッファが、その後、空でなくなった場合と、(2)満杯だった着信リングバッファが、その後、満杯でなくなった場合の2つの状況下で、割り込みを使用することができ、割り込みは、一パーティションから他のパーティションに送信しなければならない(クライアントパーティション1002の観点からは、リングバッファ1006が発信リングバッファであり、リングバッファ1006が着信リングバッファである。サービスパーティション1010の観点からは、これと反対になる)。
例えば、第1のケースでは、空だったリングバッファ1014が、その後、空でなくなった場合、クライアントパーティション1002は、リングバッファ1014が情報(おそらくコマンド/リクエスト)で満たされたことを、サービスパーティション1010に知らせなければならない。第2のケースでは、満杯だったリングバッファ1006が、その後、満杯でなくなった場合、クライアントパーティション1002は、リングバッファ1006がもはや満杯でないことを、割り込みによって、サービスパーティション1010に知らせることができる。
本発明のこの態様は、2以上のプロセッサを備えるマシンで特によい結果をもたらす。クライアントパーティション1002とサービスパーティション1010を両方同時に実行することができ、コンテキストスイッチを発生させることなく、一方が他方に情報を送信する。
本発明のこの態様の変形は、割り込みを受信するパーティションが非常に短い時間のうちにたまたま実行を再開した場合、割り込みを送信する前に遅延を導入することによって、割り込みを不必要にする。もちろん、遅延は待ち時間を増やすが、待ち時間のコストは、割り込みのコストよりも小さいであろう。
本発明の別の態様では、パーティションバスは、サービスの異なるバージョンおよびインスタンスが並んで存在することを可能にする。図11では、サービス1102が提供される。各サービスのIDは、2つの128ビットのグローバルユニークID(GUID)から構成される。これらのIDの第1のものは、サービスインスタンスを一意に識別する。例えば、サービスインスタンスA1104は、仮想ディスクであり、この仮想ディスクは、それに一意のID1108を割り当て(例えば、c80ccb8a...)、仮想ディスクの他のインスタンス(図示せず)は、異なる一意のIDを受け取る。
サービスインスタンスIDに加えて、やはりGUIDによって表されるサービスバージョンIDも存在する。このGUIDは、サーバによって実施されるプロトコルを識別する(プロトコルは、サーバによって処理されるすべてのコマンドおよび操作の総体とすることができる)。したがって、図11では、サービス1102のサービスバージョンID1106は、b73606dc...である。これら2つのGUIDは、パーティションバス上の合成装置のバスレベルのプラグアンドプレイIDを作成するのに使用される。クライアントパーティションで動作するOSのインスタンスは、これらのプラグアンドプレイIDに基づいて、どのドライバをロードすべきかを決定することができ、そのOSは、ドライバが個々のドライバファイルに分かれていても、複数のバージョンをもつサービスのためにドライバを維持することができる。さらに、サービスと同様に、異なる装置バージョンにGUIDを与えて、装置インスタンスおよび装置バージョンを確認することができる。
さらに、サービスパーティションが、ディスクなど、単一の資源についてのサービスの複数のインスタンスを同時に生成することは完全に可能であり、各サービスは、異なるプロトコルバージョンを実施する。クライアントパーティションには、同一仮想ディスクの2つのインスタンスが提供され、クライアントパーティションは、サポートするプロトコルバージョンに関連するドライバだけをロードするように選択する。
本発明のある態様では、パーティションの識別情報および信頼性に基づいて、ポリシー決定を行う機能が提示される。パーティションバスチャネルは、パーティションによっては歓迎されないこともある。具体的には、特定の保護パーティションに到達し得るチャネルオファーを許可するのは適切でないかもしれない。このポリシーの理由には、(1)パーティションが保護パーティションのブートディスクサーバを装えるようにしたくない、(2)信頼性のないI/Oパスを許可したくない、(3)パーティションが別のパーティションの資源をどれでも使用できるようにしたくないなど、様々なものがあるが、チャネルオファーが行われた場合には、このようなことが起こり得る。
そのようなポリシー決定を支援するため、本発明の本態様は、パーティションバスチャネルポリシーエージェントについて教示する。チャネルポリシーエージェントは、チャネルオファーを調停する。図12には、あるバージョンのWindows(登録商標)を実行するパーティションのインスタンス内に実装された、チャネルポリシーエージェントが示されている。おそらく、そのようなエージェントは、いくつかの特定のI/Oチャネルが当該パーティション用に許可されており、その他は許可されていないことを規定した、パーティションマニフェスト(partition manifest)のようなものにアクセスしなければならない。
本発明のこの態様の状態図が、図12に示されている。図12には、ハイパーバイザ1226によって維持される3つのパーティション、すなわち、(1)サービスパーティション1202、(2)セキュリティフィルタパーティション1204、および(3)保護ゲストパーティション1206が示されている。サービスパーティション1202において、第1に、チャネルサーバ1208が、チャネル管理ライブラリ1210にチャネルオファーと一緒にリクエストを送信する。第2に、そのオファーが、オファーキャッシュ1212に格納される。次にオファーキャッシュ1212が、セキュリティフィルタパーティション1204(または保護パーティションのためにポリシーエージェントがたまたま存在している場所)のオファーキャッシュ1218にオファーを転送する。
第3に、セキュリティフィルタパーティション1204のチャネル管理ライブラリ1216が、妥当性を検査するため、オファーをチャネルポリシーエージェント1214に送信する。第4に、チャネルポリシーエージェント1214は、オファーを終了させたか、または転送したかをライブラリ1216に通知するレスポンスをチャネル管理ライブラリ1216に送信する。第5に、オファーは、転送される場合、信頼性のあるゲストパーティション1206のオファーキャッシュ1224に送信される。
第6に、オファーは、オファーキャッシュ1224に到着すると、列挙チャネル(enumeration channel)をトリガし、信頼性のあるゲストパーティション1206のソフトウェアは、そのチャネルをオープンすることを決定する。第7に、チャネルクライアント1220が、チャネルサーバ1208にメッセージを直接返信し、チャネルをオープンする。つまり、このようにして、セキュリティフィルタパーティションに配置されたポリシーエージェントによって、チャネルオファーを調停することができる。
パーティションバス:付加的態様
本発明の別の態様では、エミュレート装置モジュール(EDM)が、並列に、またパーティションバスなどの知識をもった(仮想マシンに気づいている)データ転送機構と連携して動作する。EDMは、I/Oリクエストに応答するため、物理ハードウェア装置と同じ方式で記述される。あるゲストオペレーティングシステムが、問題の物理ハードウェア装置をサポートするように記述されている(すなわち、対応するドライバを含む)場合、そのオペレーティングシステムは、EDMが正しく記述されていると仮定すれば、変更せずに正しく動作する。すなわち、EDMは、従来のオペレーティングシステムとの優れた互換性を備えているが、一般に、高い仮想化オーバーヘッドを導入する。対照的に、仮想化サービスプロバイダ(VSP)は、はるかに優れた性能を実現するが、クライアントOS用に記述された新しいドライバ(および潜在的に他の変更)を必要とする。
仮想マシンシステムの一実例では、VSPおよびEDMの両方が、少なくともある時間、同一サービスパーティション内に実装されるが、クライアントパーティション内で利用可能なエミュレートまたは仮想装置とは対照的に、VSPは、パーティションバスの上に載ったサービスであって、クライアントパーティション内の合成装置にバックエンドサポートを提供する。VSPは、合成装置の通信相手となる。
具体的には、図13には、パーティション内で動作するOS1308および1306をそれぞれ含む、クライアントパーティション1304およびサービスパーティション1302が示されている。パーティションバス1312が、2つのパーティション1302および1304の間の通信手段を提供する。また、これらのパーティション1302および1304は共に、ハイパーバイザ1320によって維持される。EDM1316は、装置エミュレーション1315がクライアントパーティション1304には実装置に見えるように、ハイパーバイザ1320と通信を行う。EDM1316はまた、VSP1314に依存して、クライアントパーティションと共用する実際の物理装置1322と(デバイスドライバ1318を介して)通信を行う。VSP1314はまた、この装置1322を合成装置を介してクライアントパーティション1304に提示する。
本発明のさらに別の態様では、パーティションバスは、3つのライブラリから、またはより一般的には、3つのコンポーネントから構築される。したがって、図14A〜図14Cには、異なるモードで使用されているときの、パーティションバスのコンポーネントが示されている。3つのコンポーネントとは、
・リングバッファ管理
・チャネル管理
・バスドライバ
である。
異なる環境は、パーティションバスの異なるコンポーネントを利用する。例えば、図14Aでは、ユーザモードサービス1431は、チャネル管理を行うのにカーネルモードのコードに依存するので、リングバッファ管理1432のコンポーネントだけを取得する。このことは、図14Aでは、リングバッファ管理1432のコンポーネントを実線のボックスで表し、他の2つのコンポーネント、すなわち、チャネル管理1434およびバスドライバ1436を破線のボックスで表して、ユーザモード1431ではこれら2つのコンポーネントが存在しないことを示すことによって強調されている。
図14Bでは、カーネルモード1433のサービスは、3つのコンポーネントをすべて、すなわち、リングバッファ管理1432、チャネル管理1434、およびバスドライバ1436を受け取る。
最後に、図14Cでは、ローダ1435の環境は、リングバッファ管理1432およびチャネル管理1434は受け取るが、バスドライバ1436は受け取らない(破線で表されている)。要約すると、パーティションバスは、これら3つのコンポーネント、および他の副次的なコンポーネントから構成され、これらのコンポーネントは、パーティションバスが使用される環境に応じて、様々な組み合わせで現れる。
パーティションバスは、パーティション間でデータを転送する際にリングバッファを使用するために、リングバッファ管理1432を使用する。チャネル管理1434は、パーティション間でチャネル通信を確立するために使用される。最後に、バスドライバ1436は、通信チャネルが確立された後、パーティション間の入出力操作を制御する。したがって、あるパーティション内の合成装置は、他のパーティション内の実装置をハードウェアレベルで所有することができ、入出力操作は、バスドライバ1436によって管理されるので、そのような実装置は、他のパーティション内の他の合成装置によって使用することができる。
パーティションバス利用のすべてが物理装置に直接関係するわけではないことを上で言及した。したがって、本発明のさらに別の態様では、物理装置に対応しない多くの利用は、カーネルモードドライバとしての代わりに、ユーザモードコンポーネント(例えば、DLL)で便利に実施される。パーティションバスは、ユーザモードでこれらのコンポーネントを完全に生成するために、十分なインフラストラクチャを提供し、アドレス空間管理、割り込み発行、および通常ではカーネルモードからだけアクセス可能な他のサービスを実行することを可能にする。
様々な図に示した好ましい態様に関して本発明を説明してきたが、本発明から逸脱することなく、本発明と同じ機能を実行するために、他の同様の態様が使用でき、または説明した態様に変更および追加が行えることを理解されたい。例えば、本発明のある態様では、パーティション間でデータを転送するための、また選択されたパーティションに装置の所有権を割り当てながら、その装置のサービスを他のパーティションと共用するためのメカニズムを提供するパーティションバスについて説明された。しかし、本発明のこの態様と等価な他の装置のことも、本明細書の教示は企図している。したがって、本発明は、どれか1つの態様に限定されるものではなく、特許請求の範囲に基づく広さおよび範囲において解釈されるべきものである。
本発明を実施できる適切なコンピューティング装置についての簡単な概括的説明を提供する図である。 コンピュータシステムにおける仮想化動作環境のためのハードウェアおよびソフトウェア構成の論理階層化を表したブロック図である。 ホストオペレーティングシステムによって(直接に、またはハイパーバイザを介して)仮想化が実行される仮想化コンピューティングシステムを表したブロック図である。 ホストオペレーティングシステムと並んで動作する仮想マシンモニタによって仮想化が実行される代替の仮想化コンピューティングシステムを表したブロック図である。 パーティション間でデータ転送および装置共用を可能にするパーティションバスの概括的な態様を示した図である。 ローカルプロキシ合成装置によって表されるリモートサービスを示した図である。 ストレージコントローラやドラッグアンドドロップサービスを含む、本発明の様々な態様で使用できる合成装置のタイプを示した図である。 リングバッファモデル、転送ページモデル、およびアドレス空間操作モデルを含む、パーティションバスによって使用される異なるタイプのデータ転送機構を示した図である。 パーティション間で少量のデータを送信するのに使用できるリングバッファモデルを示した図である。 パーティション間で中量のデータを送信するのに使用できる転送ページモデルを示した図である。 パーティション間で大量のデータを送信するのに使用できるアドレス空間操作モデルを示した図である。 コンテキストスイッチに関係するコストを生じさせずにパーティション間でデータを送信するメカニズムを示した図である。 インタフェースおよびプロトコル用のパーティションバスバージョン管理機構を示した図である。 別のパーティションの識別情報および信頼性に基づいて一パーティションによって行われるポリシー決定を示した図である。 エミュレート装置モジュールと仮想化サービスプロバイダの同時動作を示した図である。 パーティションバスの特定の実施であるユーザモード態様を示した図である。 パーティションバスの特定の実施であるカーネルモード態様を示した図である。 パーティションバスの特定の実施であるローダ態様を示した図である。
符号の説明
120 プロセッシングユニット
121 システムバス
130 システムメモリ
131 ROM
132 RAM
133 BIOS
134,144 オペレーティングシステム
135,145 アプリケーションプログラム
136,146 その他のプログラムモジュール
137,147 プログラムデータ
140 着脱不能不揮発性メモリインタフェース
150 着脱可能不揮発性メモリインタフェース
160 ユーザ入力インタフェース
161 ポインティングデバイス
162 キーボード
170 ネットワークインタフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
182 グラフィックスインタフェース
184 GPU
186 ビデオメモリ
185 リモートアプリケーションプログラム
190 ビデオインタフェース
191 モニタ
195 出力周辺インタフェース
196 プリンタ
197 スピーカ
308,310 パーティション
602,1008 パーティションバス
604 リングバッファモデル
606 転送ページモデル
608 アドレス空間操作モデル
610,612,616,706,906 リングバッファ
614,811 転送ページ
618 サービスパーティションメモリマップ
620 非仮想化システムメモリマップ
622 クライアントパーティションメモリマップ
702,804,902,1002 クライアントパーティション
705,905,907 非仮想化システムメモリ
708,802,908,1010 サービスパーティション
810,1006 リングバッファ
904,1004 クライアントOS
910 サービスOS
1206 ゲストパーティション
1212,1218,1224 オファーキャッシュ
1214 チャネルポリシーエージェント
1216 チャネル管理ライブラリ

Claims (16)

  1. 仮想マシン環境においてパーティション間でデータを転送するための方法において、
    第1のオペレーティングシステムと物理装置を駆動するためのデバイスドライバとを含む第1のパーティション及び、該物理装置の所有権が割り当てられる合成装置を含む第2のパーティションを、仮想化プログラムにより管理すること、
    記デバイスドライバと前記合成装置の間で情報を転送するためのパーティションバスであって前記第1のパーティション及び前記第2のパーティションのメモリアドレス内で動作する上書きバッファを含むパーティションバスを構成すること、
    前記合成装置へ情報を送信するリクエストを、前記デバイスドライバにより受け取ること、ここで、前記情報が前記第2のパーティションへデータを送信するリクエストを含む、
    前記合成装置への前記情報を、前記上書きバッファを通じて送信すること
    前記第1のパーティションに割り当てられる、メモリの1つまたはそれより多いページに格納された前記データのサイズが、第1の所定のサイズよりも大きく且つ第2の所定のサイズよりも小さいと判定したときに、前記データを格納する前記1つまたはそれより多いページをコピーし、及び、該コピーしたデータを、前記第2のパーティションに割り当てられる、メモリの1つまたはそれより多いページに格納すること、並びに、
    前記第1のパーティションに割り当てられる、メモリの1つまたはそれより多いページであって、システムメモリの1つまたはそれより多いページに対応する1つまたはそれより多いページに格納された前記データのサイズが前記第2の所定のサイズよりも大きいと判定したときに、前記システムメモリの1つまたはそれより多いページを、前記第2のパーティションに割り当てられるメモリのページにリマップすること
    を含むことを特徴とする方法。
  2. 請求項1の方法において、さらに、
    前記上書きバッファが空であることを判定すること、及び、
    前記第2のパーティションを向ける前記第2のパーティションへの割り込みを送信して前記上書きバッファにアクセスすること
    を含むことを特徴とする方法。
  3. 請求項1の方法において、さらに、
    前記第1のパーティションに関連する情報を、前記上書きバッファに前記第2のパーティションにより書き込むこと、
    前記情報を前記第1のパーティションが前記上書きバッファに書き込んだことを、前記第2のパーティションにより判定すること、及び、
    前記情報を前記第2のパーティションにより読み取ること
    を含むことを特徴とする方法。
  4. 請求項1の方法において、
    前記第2のパーティションが第2のオペレーティングシステムを含むことを特徴とする方法。
  5. 請求項4の方法において、
    前記第2のオペレーティングシステムが、1つまたはそれより多いハードウエアデバイスのための1つまたはそれより多いデバイスドライバを含むことを特徴とする方法。
  6. 請求項5の方法において、
    前記リクエストは、前記1つまたはそれより多いデバイスドライバにより前記1つまたはそれより多いハードウエアデバイスにアクセスすることであることを特徴とする方法。
  7. 請求項1の方法において、さらに、
    前記パーティションバスを前記仮想化プログラムにより初期化することを含むことを特徴とする方法。
  8. 入出力デバイスとコンピュータ可読記憶媒体に結合されるプロセッサを備えたコンピュータシステムにおいて、
    前記コンピュータ可読記憶媒体が、
    前記プロセッサ、システムメモリ及び前記入出力デバイスを仮想化する命令、
    該仮想化されたプロセッサ、システムメモリ及び前記入出力デバイスとインターフェイスするように構成される第1のパーティション、及び、第2のパーティションを管理する命令、
    前記第1のパーティション及び前記第2のパーティション内で動作する上書きバッファを含むパーティションバスを、前記第1のパーティションと前記第2のパーティションの間に実現する命令、
    前記上書きバッファを通じ、前記第1のパーティションと前記第2のパーティションの間で情報を転送する命令、
    転送ページ機構を実現する命令により、前記第1のパーティションと前記第2のパーティションの間で第1のサイズよりも大きいデータを転送する命令、
    アドレス空間操作機構を実現する命令により、前記第1のパーティションと前記第2のパーティションの間で第2のサイズよりも大きいデータを転送する命令、並びに、
    前記パーティションバス、転送ページ機構を実現する前記命令、及び、アドレス空間操作機構を実現する前記命令を含む転送機構のグループから選ばれた転送機構のどれを使用してリクエストに応えるかを、該リクエストのサイズに基づいて判定する命令
    を含むことを特徴とするコンピュータシステム。
  9. 請求項8のコンピュータシステムにおいて、
    転送ページ機構を実現する前記命令が、
    前記第1のパーティションに割り当てられる、メモリの1つまたはそれより多いページに格納されたデータをコピーする命令、及び、
    該コピーしたデータを、前記第2のパーティションに割り当てられる、メモリの1つまたはそれより多いページに格納する命令
    を含むことを特徴とするコンピュータシステム。
  10. 請求項8のコンピュータシステムにおいて、
    アドレス空間操作機構を実現する前記命令が、
    前記第1のパーティションに割り当てられる、メモリの1つまたはそれより多いページであって、データを格納するシステムメモリの1つまたはそれより多いページに対応する1つまたはそれより多いページを識別する命令、及び、
    前記システムメモリの1つまたはそれより多いページを、前記第2のパーティションに割り当てられるメモリのページにリマップする命令
    を含むことを特徴とするコンピュータシステム。
  11. 請求項8のコンピュータシステムにおいて、さらに、
    特定の入出力デバイスを前記第2のパーティションにより管理する命令、
    前記第1のパーティションに関連する情報を、前記特定の入出力デバイスを通じて前記第2のパーティションにより受け取る命令、及び、
    前記第1のパーティションに関連する情報を、前記上書きバッファを通じて前記第1のパーティションに送信する命令
    を含むことを特徴とするコンピュータシステム。
  12. 請求項8のコンピュータシステムにおいて、さらに、
    前記上書きバッファが空であることを判定する命令、及び、
    前記第2のパーティションを向ける前記第2のパーティションへの割り込みを送信して前記上書きバッファにアクセスする命令
    前記上書きバッファが空であることを判定する命令、及び、
    を含むことを特徴とするコンピュータシステム。
  13. 請求項8のコンピュータシステムにおいて、さらに、
    前記第1のパーティションに関連する情報を、前記上書きバッファに前記第2のパーティションにより書き込む命令、
    前記情報を前記第1のパーティションが前記上書きバッファに書き込んだことを、前記第2のパーティションにより判定する命令、及び、
    前記情報を前記第2のパーティションにより読み取る命令、
    を含むことを特徴とするコンピュータシステム。
  14. 請求項8のコンピュータシステムにおいて、
    前記第2のパーティションが、前記仮想化されたプロセッサ、システムメモリ及び前記入出力デバイスとインターフェイスするように構成される第2のオペレーティングシステムを含むことを特徴とするコンピュータシステム。
  15. 請求項8のコンピュータシステムにおいて、
    前記第1のパーティションが、前記仮想化されたプロセッサ、システムメモリ及び前記入出力デバイスとインターフェイスするように構成される第1のオペレーティングシステムを含むことを特徴とするコンピュータシステム。
  16. 仮想マシン環境においてパーティション間の統合を提供するためのコンピュータ実行可能な第1の命令セット及びコンピュータ実行可能な第2の命令セットを格納したコンピュータ可読記憶媒体であって、前記第1の命令セットにより第1のコンピュータプログラムが構成され及び前記第2の命令セットにより第2のコンピュータプログラムが構成されるコンピュータ可読記憶媒体において、
    前記第1の命令セット及び前記第2の命令セット中のコンピュータ実行可能命令が、
    ハイパーバイザを実現する命令であって、第1のオペレーティングシステムを含む第1のパーティション、及び、第2のパーティションを管理するように構成される命令、
    前記第1のパーティションと前記第2のパーティションの間で情報を転送するように構成されるパーティションバスであって前記第1のパーティションと前記第2のパーティションのメモリアドレス内で動作する共有バッファを含むパーティションバスを初期化する命令、
    前記第2のパーティションへ情報を送信するリクエストを受け取る命令、
    前記第2のパーティションへの前記情報を、前記共有バッファを通じて送信する命令、
    前記情報に関連する、第1のサイズよりも大きいデータを、前記第1のパーティションと前記第2のパーティションの間で、転送ページ機構を実現する命令により転送する命令、並びに、
    前記情報に関連する、第2のサイズよりも大きいデータを、前記第1のパーティションと前記第2のパーティションの間で、アドレス空間操作機構を実現する命令により転送する命令
    を含むことを特徴とするコンピュータ可読記憶媒体。
JP2005253628A 2005-05-12 2005-09-01 パーティションバス Active JP4942966B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/128,647 2005-05-12
US11/128,647 US7689800B2 (en) 2005-05-12 2005-05-12 Partition bus

Publications (2)

Publication Number Publication Date
JP2006318441A JP2006318441A (ja) 2006-11-24
JP4942966B2 true JP4942966B2 (ja) 2012-05-30

Family

ID=35295557

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005253628A Active JP4942966B2 (ja) 2005-05-12 2005-09-01 パーティションバス

Country Status (15)

Country Link
US (2) US7689800B2 (ja)
EP (1) EP1722301B1 (ja)
JP (1) JP4942966B2 (ja)
KR (1) KR20060117869A (ja)
CN (1) CN1862494A (ja)
AU (1) AU2005203519A1 (ja)
BR (1) BRPI0503636A (ja)
CA (1) CA2518014A1 (ja)
CO (1) CO5730016A1 (ja)
NO (1) NO20054000L (ja)
NZ (1) NZ541625A (ja)
RU (1) RU2390827C2 (ja)
SG (1) SG127782A1 (ja)
TW (1) TW200639642A (ja)
ZA (1) ZA200506982B (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050767A1 (en) * 2005-08-31 2007-03-01 Grobman Steven L Method, apparatus and system for a virtual diskless client architecture
US7389398B2 (en) * 2005-12-14 2008-06-17 Intel Corporation Methods and apparatus for data transfer between partitions in a computer system
US8868628B2 (en) * 2005-12-19 2014-10-21 International Business Machines Corporation Sharing computer data among computers
WO2007071116A1 (en) * 2005-12-23 2007-06-28 Intel Corporation Managing device models in a virtual machine cluster environment
US8249853B2 (en) * 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
US7987469B2 (en) 2006-12-14 2011-07-26 Intel Corporation RDMA (remote direct memory access) data transfer in a virtual environment
US9317309B2 (en) * 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
JP4907371B2 (ja) * 2007-02-01 2012-03-28 株式会社日立ソリューションズ ウィルス感染及び機密情報漏洩防止対策システム
US8479208B2 (en) * 2007-03-30 2013-07-02 Intel Corporation System partitioning to present software as platform level functionality including mode logic to maintain and enforce partitioning in first and configure partitioning in second mode
US8316377B2 (en) * 2007-09-06 2012-11-20 Hewlett-Packard Development Company, L.P. Sharing legacy devices in a multi-host environment
US8261284B2 (en) * 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
US7802062B2 (en) * 2007-09-28 2010-09-21 Microsoft Corporation Non-blocking variable size recyclable buffer management
JP4618455B2 (ja) * 2008-04-09 2011-01-26 日本電気株式会社 端末装置、ネットワーク接続方法及びプログラム
JP2010004979A (ja) * 2008-06-25 2010-01-14 Fujifilm Corp 画像処理装置、および内視鏡用プロセッサ装置
US8117346B2 (en) * 2008-10-03 2012-02-14 Microsoft Corporation Configuration space virtualization
KR101437122B1 (ko) 2008-12-03 2014-09-02 삼성전자 주식회사 Os 가상화를 이용하여 서비스를 제공하는 장치 및 방법
US20100313249A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
US20100313244A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
US20100310193A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for selecting and/or displaying images of perspective views of an object at a communication device
US8286084B2 (en) * 2009-06-08 2012-10-09 Swakker Llc Methods and apparatus for remote interaction using a partitioned display
WO2010144430A1 (en) * 2009-06-08 2010-12-16 Swakker Llc Methods and apparatus for remote interaction using a partitioned display
US20100311393A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
KR101640769B1 (ko) * 2009-11-06 2016-07-19 삼성전자주식회사 가상화 시스템 및 그것의 명령어 실행 방법
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
CN102262557B (zh) * 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
JP5567414B2 (ja) * 2010-06-30 2014-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報漏洩のリスクを極小化しながらデータを外部で保管できるようにデータを処理する方法
US8463980B2 (en) * 2010-09-30 2013-06-11 Microsoft Corporation Shared memory between child and parent partitions
US8849941B2 (en) * 2010-09-30 2014-09-30 Microsoft Corporation Virtual desktop configuration and operation techniques
US8832686B2 (en) 2010-10-29 2014-09-09 Microsoft Corporation Inherited product activation for virtual machines
US8924964B2 (en) 2010-11-01 2014-12-30 Microsoft Corporation Dynamic allocation and assignment of virtual environment
US9836478B2 (en) * 2011-04-11 2017-12-05 Ineda Systems Inc. File system sharing
US20130117744A1 (en) * 2011-11-03 2013-05-09 Ocz Technology Group, Inc. Methods and apparatus for providing hypervisor-level acceleration and virtualization services
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US9176678B2 (en) 2012-11-30 2015-11-03 International Business Machines Corporation Common contiguous memory region optimized virtual machine migration within a workgroup
US20140310706A1 (en) * 2012-12-17 2014-10-16 Unisys Corporation Method for managing commodity computing
KR101451781B1 (ko) * 2013-04-05 2014-10-16 국방과학연구소 가상머신 환경에서 가상화 시스템의 장치 복제 시스템 및 그 방법
GB2519578B (en) * 2013-10-25 2016-02-17 Samsung Electronics Co Ltd Managing data transfer
US20150121376A1 (en) * 2013-10-25 2015-04-30 Samsung Electronics Co., Ltd. Managing data transfer
RU2569873C1 (ru) * 2014-08-05 2015-11-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Тольяттинский государственный университет" Способ формирования жаростойких покрытий
RU2598323C1 (ru) * 2015-03-26 2016-09-20 Общество с ограниченной ответственностью "Научно-производственное предприятие "Цифровые решения" Способ адресации кольцевого буфера в памяти микропроцессора
CN107209681B (zh) * 2015-10-21 2020-07-07 华为技术有限公司 一种存储设备访问方法、装置和系统
US10298447B2 (en) * 2016-08-08 2019-05-21 American Megatrends, Inc. System and method for accessing real sensors for virtual service processor stack
JP6496456B1 (ja) 2017-07-31 2019-04-03 三菱電機株式会社 情報処理装置
CN110998529B (zh) 2017-07-31 2021-08-20 三菱电机株式会社 信息处理装置以及信息处理方法
US11099911B1 (en) * 2019-07-01 2021-08-24 Northrop Grumman Systems Corporation Systems and methods for inter-partition communication
CN110868365B (zh) * 2019-11-20 2023-04-07 中国航空工业集团公司西安航空计算技术研究所 通信方法和通信系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US83481A (en) * 1868-10-27 Improvement in shovel-plows
JPH01191234A (ja) * 1988-01-26 1989-08-01 Fujitsu Ltd 仮想計算機間通信方式
JP2945498B2 (ja) 1991-04-12 1999-09-06 富士通株式会社 システム間通信方式
US5548728A (en) * 1994-11-04 1996-08-20 Canon Information Systems, Inc. System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
EP0991081B1 (en) 1998-09-30 2005-11-30 STMicroelectronics S.r.l. Emulated EEPROM memory device and corresponding method
JP2001290665A (ja) 2000-04-11 2001-10-19 Nec Software Hokuriku Ltd プロセッサシステム
US20020129274A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a security server in a partitioned processing environment
US20030093258A1 (en) * 2001-11-14 2003-05-15 Roman Fishstein Method and apparatus for efficient simulation of memory mapped device access
US6725284B2 (en) * 2002-04-25 2004-04-20 International Business Machines Corporation Logical partition hosted virtual input/output using shared translation control entries
US7181744B2 (en) * 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
US7376949B2 (en) * 2003-10-01 2008-05-20 Hewlett-Packard Development Company, L.P. Resource allocation and protection in a multi-virtual environment
US7318140B2 (en) * 2004-06-10 2008-01-08 International Business Machines Corporation Method and apparatus for dynamic hosting partition page assignment

Also Published As

Publication number Publication date
EP1722301B1 (en) 2013-05-29
US8112610B2 (en) 2012-02-07
US7689800B2 (en) 2010-03-30
ZA200506982B (en) 2007-04-25
BRPI0503636A (pt) 2007-01-09
NO20054000D0 (no) 2005-08-29
CA2518014A1 (en) 2006-11-12
CO5730016A1 (es) 2007-02-28
AU2005203519A1 (en) 2006-11-30
NZ541625A (en) 2006-09-29
US20060259731A1 (en) 2006-11-16
SG127782A1 (en) 2006-12-29
RU2390827C2 (ru) 2010-05-27
KR20060117869A (ko) 2006-11-17
US20110066782A1 (en) 2011-03-17
NO20054000L (no) 2006-11-13
RU2005127422A (ru) 2007-03-10
JP2006318441A (ja) 2006-11-24
CN1862494A (zh) 2006-11-15
EP1722301A2 (en) 2006-11-15
EP1722301A3 (en) 2006-12-06
TW200639642A (en) 2006-11-16

Similar Documents

Publication Publication Date Title
JP4942966B2 (ja) パーティションバス
US9367947B2 (en) Remote rendering of three-dimensional images using virtual machines
JP5452660B2 (ja) 仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター
RU2436149C2 (ru) Мигрирование виртуальной машины, которая владеет ресурсом, таким, как аппаратное устройство
KR102047558B1 (ko) 가상 디스크 저장 기술
WO2018120986A1 (zh) 转发报文的方法和物理主机
US8645953B2 (en) Method of checking a possibility of executing a virtual machine
US7581229B2 (en) Systems and methods for supporting device access from multiple operating systems
US7761578B2 (en) Communicating in a virtual environment
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
US9141418B2 (en) Systems and methods for implementing a guest operating system on a host operating system
US10713081B2 (en) Secure and efficient memory sharing for guests
US20230195491A1 (en) Device emulation in remote computing environments
US20200201691A1 (en) Enhanced message control banks
US10802741B2 (en) Pre-zeroing blocks in files using automatic file unmap framework
WO2022222977A1 (zh) 用于运行云业务实例的物理服务器的内存管理方法和装置
US11635970B2 (en) Integrated network boot operating system installation leveraging hyperconverged storage
Richardson et al. Maverick: Providing web applications with safe and flexible access to local devices
US11989419B2 (en) Storage device write performance in remote computing environments
US20230195313A1 (en) Storage device i/o performance in remote computing environments
MXPA05009210A (es) Bus de division

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110506

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110713

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111130

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20111201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111201

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111221

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: 20120221

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: 20120229

R150 Certificate of patent or registration of utility model

Ref document number: 4942966

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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