JP2006018813A - 1台の仮想マシン内の複数の仮想プロセッサを初期化するためのシステムおよび方法 - Google Patents

1台の仮想マシン内の複数の仮想プロセッサを初期化するためのシステムおよび方法 Download PDF

Info

Publication number
JP2006018813A
JP2006018813A JP2005158858A JP2005158858A JP2006018813A JP 2006018813 A JP2006018813 A JP 2006018813A JP 2005158858 A JP2005158858 A JP 2005158858A JP 2005158858 A JP2005158858 A JP 2005158858A JP 2006018813 A JP2006018813 A JP 2006018813A
Authority
JP
Japan
Prior art keywords
execution thread
virtual
virtual processor
processor
virtual machine
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
JP2005158858A
Other languages
English (en)
Other versions
JP4806212B2 (ja
Inventor
Eric P Traut
ピー.トラウト エリック
Mike Neil
ネイル マイク
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 JP2006018813A publication Critical patent/JP2006018813A/ja
Application granted granted Critical
Publication of JP4806212B2 publication Critical patent/JP4806212B2/ja
Expired - Fee Related 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/48Program initiating; Program switching, e.g. by interrupt
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

【課題】仮想マシン(VM)環境における複数の仮想プロセッサを初期化するためのシステムおよびその方法を提供すること。
【解決手段】この方法は、このホストが複数のプロセッサのVMを作成して「スタータ仮想プロセッサ」をアクティブにし、これに次の仮想プロセッサにスタートアップ・コマンドを発行させ、仮想マシン・モニタ(VMM)がターゲット仮想プロセッサにハードウェア・リソースにアクセスするための最高優先順位を付与し、このVMMが「スタータ仮想プロセッサ」に強制的にリソースの制御を放棄させ、VMMがこれらのリソースの制御をこのターゲット仮想プロセッサに渡し、これがスタートアップ・ルーチンを実行し完了し、VMMがこのターゲット仮想プロセッサに強制的にリソースの制御を放棄させ、VMMが後続の仮想プロセッサをアクティブにするためにリソースの制御をこの「スタータ仮想プロセッサ」に返す、ことを含む。
【選択図】図5

Description

本発明は、一般に(「プロセッサ仮想化」としても知られている)仮想マシン(virtual machine)、および仮想マシン環境において実行されるソフトウェアの分野に関する。より詳細には、本発明は、1台の仮想マシン内で複数のVP(virtual processor;仮想プロセッサ)を初期化するためのシステムおよびその方法を対象としている。
コンピュータは、特定の1組のシステム命令を実行するように設計された汎用のCPU(中央演算処理装置)を含んでいる。同様なアーキテクチャまたは設計仕様を有する1グループのプロセッサは、同じプロセッサ・ファミリ(processor family)のメンバと考えることができる。現行のプロセッサ・ファミリの実施例には、アリゾナ州、フェニックス市のモトローラ社が製造するモトローラ680X0プロセッサ・ファミリ、カリフォルニア州、サニーベール市のインテル・コーポレーションが製造するインテル80X86プロセッサ・ファミリ、モトローラ社が製造し、カリフォルニア州、クパチーノ市のアップル・コンピュータ社が製造するコンピュータ中で使用されるパワーPCプロセッサ・ファミリが含まれる。1グループのプロセッサは、それらが同様なアーキテクチャおよび設計を考慮しているので同じファミリ中に存在するけれども、各プロセッサは、それらのクロック速度および他の性能パラメータに応じてファミリ内で大きく異なることもある。
マイクロ・プロセッサの各ファミリは、そのプロセッサ・ファミリに固有の諸命令を実行する。プロセッサまたはプロセッサのファミリが実行することができる集合的な1組の命令は、そのプロセッサの命令セット(instruction set)として知られている。一実施例として、インテル80X86プロセッサ・ファミリが使用する命令セットは、パワーPCプロセッサ・ファミリが使用する命令セットとは互換性がない。このインテル80X86命令セットは、CISC(複雑命令セット・コンピュータ)フォーマットに基づいている。モトローラのパワーPC命令セットは、RISC(縮小命令セット・コンピュータ)フォーマットに基づいている。CISCプロセッサは、多数の命令を使用しており、これらの命令の一部は、かなり複雑なファンクションを実施することができるが、この命令は、一般に実行するために多数のクロック・サイクルを要する。RISCプロセッサでは、さらに少ない数の使用可能な命令が使用して、ずっと高速で実行される、さらに簡単な1組のファンクションを実施する。
コンピュータ・システムの中でもとりわけ、このプロセッサ・ファミリの固有性により、一般的にコンピュータ・システム中のハードウェア・アーキテクチャの他のエレメントの間に、非互換性がもたらされることにもなる。インテル80X86プロセッサ・ファミリからのプロセッサを用いて製造されるコンピュータ・システムは、パワーPCプロセッサ・ファミリからのプロセッサを用いて製造されるコンピュータ・システムのハードウェア・アーキテクチャとは異なるハードウェア・アーキテクチャを有することになる。このプロセッサの命令セットおよびコンピュータ・システムのハードウェア・アーキテクチャの固有性のために、アプリケーション・ソフトウェア・プログラムは、一般的に、特定のオペレーティング・システムを実行する特定のコンピュータ・システム上で実行されるように書かれる。
コンピュータ製造業者は、そのコンピュータ製造業者の製品ラインに関連付けられたマイクロプロセッサ・ファミリ上で実行される、少ないアプリケーションよりもさらに多いアプリケーションを有することによってその製造業者のマーケット・シェアを最大にしたいと望む。あるコンピュータ・システム上で実行することができるオペレーティング・システムおよびアプリケーション・プログラムの数を増大するために、ある技術分野が発展してきており、この技術分野においては、ホストと呼ばれる、あるタイプのCPUを有する所与のコンピュータが、ゲストと呼ばれる無関係のタイプのCPUの命令を、そのホスト・コンピュータがエミュレートすることができるようにするエミュレータ・プログラムを含むことになる。したがって、このホスト・コンピュータは、所与のゲスト命令に応答して1つまたは複数のホスト命令が呼び出されるようにするアプリケーションを実行することになる。したがって、このホスト・コンピュータは、それ自体のハードウェア・アーキテクチャ用のソフトウェア設計も、無関係のハードウェア・アーキテクチャを有するコンピュータ用に書かれたソフトウェアも共に実行することができる。より具体的な実施例としては、アップル・コンピュータが製造するコンピュータ・システムでは、例えばPCベースのコンピュータ・システム用に書かれたオペレーティング・システムおよびプログラムを実行することができる。エミュレータ・プログラムを使用して1つのCPU上で複数の互換性がないオペレーティング・システムを同時に動作させることも可能にすることができる。この構成においては、各オペレーティング・システムは、他のオペレーティング・システムと互換性がないけれどもが、エミュレータ・プログラムが、2つのオペレーティング・システムのうちの一方をホストすることができ、それとは別の互換性のないオペレーティング・システムを同じコンピュータ・システム上で同時に実行できるようにする。
ゲスト・コンピュータ・システムがホスト・コンピュータ・システム上でエミュレートされる際、このゲスト・コンピュータ・システムは、ある特定のハードウェア・アーキテクチャのオペレーションについての純粋なソフトウェア表現としてこのホスト・コンピュータ・システム中に存在するにすぎないので、このゲスト・コンピュータ・システムは、「仮想マシン」であると言われる。エミュレータ、仮想マシン、およびプロセッサ・エミュレーションという用語は、時々交換可能なように使用されて、全体のコンピュータ・システムのハードウェア・アーキテクチャを模倣し、またはエミュレートする機能を指し示している。一実施例として、カリフォルニア州、サンマテオ市のConnectix Corporationが作成したVirtual PCソフトウェアは、インテル80X86ペンティアム(登録商標)プロセッサおよび様々なマザーボード・コンポーネントとカードを含むコンピュータ全体をエミュレートする。これらのコンポーネントのオペレーションは、このホスト・マシン上で実行される仮想マシン中でエミュレートされる。パワーPCプロセッサを有するコンピュータ・システムなどのホスト・コンピュータのオペレーティング・システム・ソフトウェアおよびハードウェア・アーキテクチャ上で実行されるエミュレータ・プログラムは、この全体のゲスト・コンピュータ・システムのオペレーションを模倣する。
このエミュレータ・プログラムは、このホスト・マシンのハードウェア・アーキテクチャと、このエミュレートされる環境内で実行されるソフトウェアが伝送する各命令との間のやりとりを行う役割を果たす。このエミュレータ・プログラムは、HOS(host operating system;ホスト・オペレーティング・システム)とすることができ、このHOSは、この物理コンピュータ・ハードウェア上で直接実行されるオペレーティング・システムである。一方、このエミュレートされた環境はまた、VMM(virtual machine monitor;仮想マシン・モニタ)でもあり、このVMMは、このハードウェア上で直接実行されるソフトウェア・レイヤであり、またこのVMMは、このVMMが仮想化しているそのハードウェアと同じインターフェースを見えるようにすることによって、このマシンのすべてのリソースを仮想化する(このことは、VMMが、それについて実行中のオペレーティング・システム・レイヤから気付かれずに動作することを可能にする)。ホスト・オペレーティング・システムとVMMは、この同じ物理ハードウェア上で並列に実行されることになる。
「実際の(real)」物理/非仮想コンピューティング環境においては、このコンピュータ・ハードウェア内に複数の物理プロセッサを含んでいるコンピューティング・システムが存在する。一般的に、マルチ・プロセッサ・システムの初期状態では、1つのプロセッサが、このシステム中に存在する他の各プロセッサに対してスタートアップ・メッセージ(start-up message)を送信する「スタータ・プロセッサ(starter processor)」としての役割を果たすようになっている。より詳細には、そのBIOSまたはOSの形でコード化されて、ローカルAPIC(advanced programmable interrupt controller;高度プログラマブル割込みコントローラ)デバイスへの通信が、このスタータ・プロセッサから存在する各プロセッサへとスタートアップ・メッセージを向けるように行われる。(ローカルAPICデバイスは、複数のプロセッサからの割込み、および複数のプロセッサについての割込みを処理する。)最初に、このスタータ・プロセッサと他のすべてのプロセッサの間にはマスタ−・スレーブ関係が存在するが、すべてのプロセッサが起動された後にはこれらのプロセッサはピア・レベルで実行される。プロセッサを起動するためのメカニズムは、X86アーキテクチャでは、非常に大まかに定義されている。プロセッサを起動するためのメッセージは存在するが、このスタータ・プロセッサにターゲット・プロセッサ(target processor)が正常に起動されたかどうかを知らせるアーキテクチャ手段は定義されていない。以上を仮定すると、そのターゲット・プロセッサが正常に起動されたかどうかを決定するために使用される従来のメカニズムは、BIOS(basic input/output system;基本入出力システム)であり、このBIOSは、コンピュータのスイッチが入れられたときに実行されるソフトウェアのまさに最初の部分である。開始するためには、スタータ・プロセッサ上で実行されるBIOSコードは、そのターゲット・プロセッサとして知られている別のプロセッサに開始メッセージを発行し、どの共有メモリのロケーションからプロセッサがスタートアップ・プログラム実行を開始すべきかを知らせる。次いで、共有メモリ中に残されたスタートアップ・プログラムの実行が、そのターゲット・プロセッサによって開始され、そのターゲット・プロセッサは、フラグをセットする。このスタータ・プロセッサのOSは、メモリ中のそのロケーションに変化があるかを調べる。このスタータ・プロセッサのBIOSコードが、この共有メモリ・ロケーションが変化していることを検出するときには、このBIOSコードは、そのターゲット・プロセッサが起動していることを知る。そのターゲット・プロセッサが起動しなかったことをこのスタータBIOSコードに対して知らせるのはただ、このコードがある限られた時間内にメモリ・ロケーションの変化を検出しないときだけにすぎず、したがってこのプロセッサに問題があるとすると、それは使用可能ではない。このタイムアウト期間は短く、数ミリ秒である。
米国特許第号6075938明細書 米国特許第号6269391明細書 米国特許出願公開第2002−0083369号明細書 米国特許出願公開第2003−0110173号明細書 米国特許出願公開第2003−0188165号明細書
現在では、ほとんどのVMでは、一般に1つの仮想プロセッサ(VP)が使用されているが、MPVM(multi-processor VM;マルチ・プロセッサVM)が望ましいこともある。VM環境においては、複数のVPを初期化する1つの方法は、このホスト・コンピュータ・システム上の複数の実行スレッドを介して複数のVPをエミュレートするVMMに対する方法である。しかし、これらのVPは、このホスト環境における別々の実行スレッドに対応しており、システム中には限られたシステム・リソースを求めて競合する複数のVMが存在することもあるので、VPに相当するスレッドの実行時間は、タイム・スライシングのために任意の大きさになる。したがって、初期化に際して所与のVPが直ちに起動しないこともあることが予想される。しかし、ゲスト・オペレーティング・システム(また、より詳細には、オペレーティング・システムの一部分であるBIOS)は、実際の複数のプロセッサを有する物理ハードウェア上で、実際のプロセッサに対する非常に高速なスタートアップ時間で実行されるはずであるという仮定に基づいて開発されており、したがって、このゲストOSは、初期化されたプロセッサが、実際のプロセッサ・ハードウェアにとっては適切なタイムアウトの前に実際に起動するので、小さな有限の実時間だけしか提供されない。しかし、このことは、仮想化環境においては、どちらかというと問題である。その理由は、VPの初期化およびスタートアップが、(スレッドの実行などに起因して)数ミリ秒かかってしまうこともあり、実際にVPを起動するのにかかる時間は、このゲストOSのタイムアウトをほとんどいつも超過してしまうことになるからである。タイムアウト問題を処理する簡単で直接的な1つの方法は、このゲストOSのBIOSを修正してこのタイムアウトを長くすることであるが、この解決方法は、すべてのゲストOSを保守すること(すなわち、それらのタイムアウトのすべてが変更される必要があり)、VMの利点の1つ(すなわち、(たぶん実際のハードウェア用に開発された)市販のオペレーティング・システムを実行する能力を備えること、を必要とする。さらに、(ケースバイケースで、およびOSごとに)このメンテナンスを行う必要性は、このメンテナンスが適切に適用されない場合に障害を引き起こすリスクがあるために問題になることもある。したがって、必要とされる方法は、タイムアウトなしに、また各ゲストOS、および/またはBIOSなどその関連するコンポーネントを修正し保守する必要性なしに、VM環境内の複数のVPを初期化する方法である。
本発明は、VM環境中の複数の仮想プロセッサを初期化するためのシステムおよびその方法に関するものである。初期化に際して、このゲストOSにおけるタイムアウト状態を防止するために、本発明のこのマルチ・プロセッサVMのシステムおよび方法では、各ゲストOS、および/またはBIOSなどその関連するコンポーネントを修正し保守する必要性なしにVM環境内の複数の仮想プロセッサを初期化する方法が提供され、それによってVM環境におけるさらに高い効率性が実現される。
複数の仮想プロセッサを初期化するこの方法は、このホストが、複数のプロセッサのVMを作成し、「スタータ仮想プロセッサ(starter virtual processor)」をアクティブにするステップと、この「スタータ仮想プロセッサ」が、次の仮想プロセッサにスタートアップ・コマンドを発行するステップと、仮想マシンモニタ(VMM)が、このターゲット仮想プロセッサ(target virtual processor)にこれらのハードウェア・リソースにアクセスするための最高優先順位を付与するステップと、このVMMがこの「スタータ仮想プロセッサ」に強制的にこれらのハードウェア・リソースの制御を放棄させるステップと、このVMMがこれらのハードウェア・リソースの制御をこのターゲット仮想プロセッサに渡すステップと、このターゲット仮想プロセッサがそのスタートアップ・ルーチンを実行し完了するステップと、このVMMがこのターゲット仮想プロセッサに強制的にこれらのハードウェア・リソースの制御を放棄させるステップと、後続の仮想プロセッサをアクティブにするためにこのVMMがこれらのハードウェア・リソースの制御をこの「スタータ仮想プロセッサ」に返すステップと、を含んでいる。
前述の「課題を解決するための手段」、ならびに好ましい実施形態についての以下の詳細な説明は、添付の図面を併せ読むときにさらによく理解されよう。本発明を例証するために本発明の例示の構成が図面に示されている。しかし、本発明は、これらの開示された特定の方法および手段だけに限定されるものではない。
本発明の主題については、法令によって定められた要件を満たすように具体性をもって説明している。しかし、この説明それ自体が、本特許の範囲を限定することは意図していない。そうではなくて、本発明者は、この請求された主題を、別の方法で、異なるステップあるいはこの文書中で説明されるステップと同様なステップ含んで、現在または将来の他の技術と組み合わせて、実施することもできると考えている。さらに、本明細書中では、用語「ステップ」を使用して、使用される方法の個々のエレメントを示していきるが、この用語は、個別のステップの順序が明示的に説明されていない限り、また明示的に説明されるとき以外は、本明細書中で説明する様々なステップの間のどのような特定の順序を暗示しているとも解釈すべきではない。
コンピュータ環境
本発明についての多数の実施形態が、コンピュータ上で実行することができる。図1および以下の説明では、本発明を実施することができる適切なコンピューティング環境の一般的な簡潔な説明を提供することが意図されている。必要ではないが、本発明については、クライアントワーク・ステーションやサーバなどのコンピュータによって実行されるプログラム・モジュールなど、コンピュータ実行可能命令の一般的なコンテクストで説明することにする。一般的に、プログラム・モジュールは、特定のタスクを実施し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。さらに、本発明は、ハンドヘルド・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのまたはプログラマブルな電電製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータなどを含めて、他のコンピュータ・システム構成を用いて実行することもできることが当業者には理解されよう。本発明は、分散コンピューティング環境中において実施することもでき、ここでは、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境においては、プログラム・モジュールは、ローカル・メモリ・ストレージ・デバイス中にもリモート・メモリ・ストレージ・デバイス中にも配置することができる。
図1に示すように、例示の汎用コンピューティング・システムは、処理装置21、システム・メモリ22、およびこのシステム・メモリを含めて様々なシステム・コンポーネントを処理装置21に結合するシステム・バス23を含めて、従来のパーソナル・コンピュータ20などを含んでいる。このシステム・バス23は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャのうちのいずれかを使用したローカル・バスを含めて、いくつかのタイプのバス構造のうちのいずれかにすることもできる。このシステム・メモリは、ROM(読取り専用メモリ)24およびRAM(ランダム・アクセス・メモリ)25を含んでいる。起動中などパーソナル・コンピュータ20内のエレメント間で情報を転送する助けをする基本ルーチンを含む基本入出力システム26(BIOS)は、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は、その上のソフトウェア・レイヤに対して、前記ソフトウェア・レイヤがそれら自体のプライベート・コンピュータ・システム上で実行されているという錯覚(illusion)を作り出すことができ、したがってVMは、複数の「ゲストシステム」が単一の「ホスト・システム」上で同時に実行することを可能にする。
図2は、コンピュータ・システムにおけるエミュレートされた動作環境についての、ハードウェア・アーキテクチャおよびソフトウェア・アーキテクチャの論理階層化を示す図である。エミュレーション・プログラム94が、ホスト・オペレーティング・システムおよび/またはハードウェア・アーキテクチャ92上で実行される。エミュレーション・プログラム94は、ゲスト・ハードウェア・アーキテクチャ96およびゲスト・オペレーティング・システム98をエミュレートする。次にソフトウェア・アプリケーション100がゲスト・オペレーティング・システム98上で実行される。たとえソフトウェア・アプリケーション100が、ホスト・オペレーティング・システムおよびハードウェア・アーキテクチャ92とは一般的に互換性がないオペレーティング・システム上で実行されるように設計されているとしても、図2のエミュレートされた動作環境においては、エミュレーション・プログラム94のオペレーションによって、ソフトウェア・アプリケーション100は、コンピュータ・システム90上で実行されることが可能になる。
図3Aは、物理コンピュータ・ハードウェア102上で直接に実行されるホスト・オペレーティング・システム・ソフトウェア・レイヤ104を含む仮想化コンピューティング・システムを示しており、ホストOS(host operating system;ホスト・オペレーティング・システム)104は、このホストOSが仮想化しているハードウェアと同じインターフェースを公開する(exposing)(それにより、このホスト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のシステムの各部分を示し、そこでは複数の仮想プロセッサ(VP)をさらに含んでいる。当業者には知られており理解されているように、VPは、物理プロセッサに論理的に等価な仮想デバイスであり、この仮想マシンは、ゲスト・オペレーティング・システムに対してエミュレートする。図4のマルチ・プロセッサVMシステムにおいて、VM A108は、VP A1 124、VP A2 126ないしVP A 128を含み、これらは、即ちこのVM A108は、それぞれ例えばアプリケーションA1 116、アプリケーションA2 118ないしアプリケーションA 122を実行するためのゲストOS A112に対してエミュレートすることができる。さらに、各VPは、関連する仮想ローカルAPICを有しており、この仮想ローカルAPICは、よく知られているようにそれによって1つのプロセッサが別のプロセッサに割込みを行うことができるプロセスを処理し、1つのプロセッサが別のプロセッサを起動できるようにする。プロセッサがアクセスする際に、このローカルAPICデバイスは、割込みのマスキングを行い、割込みを可能にし、プロセッサ間の割込みを生成するなどのアクションを実施する。より詳細には、図4のマルチ・プロセッサVMシステムにおいて、VM A108は、VP A1 124に関連する仮想ローカルAPIC A1 130と、VP A2 126に関連する仮想ローカルAPIC A2 132と、VP A 128に関連する仮想ローカルAPIC A 134をさらに備える。同様に、VM B110は、複数のVPおよび仮想ローカルAPICデバイスを含むことができるが、図を簡単にするためにこれらは示していない。
よく知られているように、各VPは、このVMM中にそれ自体の実行スレッドを有する。スレッドは、プロセッサ上で実行される特定のプログラムまたはアプリケーションに関連する自己完結型のプロセスである。このプロセッサは、外見上では並列にプログラムまたはアプリケーションを実行するが、実際にはこのプロセッサは、優先順位に基づいてスレッド間でタイム・スライスされている。その結果、図4を引き続き参照すると、VMM104’は、VP A1 124に関連するスレッドA1 136、VP A2 126に関連するスレッドA2 138、ないしVP A 128に関連するスレッドA 140をさらに備えている。並行して実行される各スレッドには、たとえVMM104’の各スレッドへの割当て、例えばタイム・スライシング、に従ってこれらのハードウェア・リソース(すなわち、コンピュータ・ハードウェア102)にアクセスするための優先順位が割り当てられる。
初期化に際して、このゲストOS中におけるタイムアウト状態を防止するために、図4に示すように、本発明のマルチ・プロセッサVMシステムでは、各ゲストOS、および/またはBIOSなどのその関連するコンポーネントを修正し保守する必要なしに、VM環境内の複数の仮想プロセッサを初期化する方法が提供される。複数のプロセッサVMを初期化する方法は、図5を参照するより詳細な説明中に見出される。
図5は、本発明による、および図4を引き続き参照した場合の、複数のプロセッサVMを初期化する方法150を示すフローチャートである。ステップ152において、ホストOS104”は、図4に示すVM A108など、複数のプロセッサVMを作成し、ある「スタータ仮想プロセッサ」をアクティブにする、例えばVP A1 124をこの「スタータ仮想プロセッサ」としてアクティブにする。ステップ154において、この実施例における「スタータ仮想プロセッサ」であるVP A1 124は、仮想プロセッサVP A2 126ないしVP A 128のうちの1つなど、次の仮想プロセッサに対してスタートアップ・コマンドを発行する。
ステップ156において、VMM104’は、それぞれ仮想プロセッサVP A2 126ないしVP A 128のスレッドA2 138ないしA 140のうちの1つなどこのターゲットの仮想プロセッサに関連付けられたスレッドに、ハードウェア・リソース、すなわち1つまたは複数の物理プロセッサ(図示せず)を含むコンピュータ・ハードウェア102にアクセスするための最高優先順位を付与する。ステップ158において、VMM104’は、VP A1 124に関連付けられたスレッドA1 136に強制的にこれらのハードウェア・リソース、すなわちコンピュータ・ハードウェア102の制御を放棄させる。ステップ160において、VMM104’は、それぞれ仮想プロセッサVP A2 126ないしVP A 128のスレッドA2 138ないしA 140のうちの1つなど、ターゲット仮想プロセッサに関連するスレッドにこれらのハードウェア・リソースの制御を渡す。
ステップ162において、それぞれ仮想プロセッサVP A2 126ないしVP A 128のスレッドA2 138ないしA 140のうちの1つなど、ターゲット仮想プロセッサに関連付けられたスレッドは、そのスタートアップ・ルーチンを実行し完了する。ステップ164において、VMM104’は、それぞれ仮想プロセッサVP A2 126ないしVP A 128のスレッドA2 138ないしA 140のうちの1つなど、ターゲット仮想プロセッサに関連するスレッドに強制的にこれらのハードウェア・リソース、すなわちコンピュータ・ハードウェア102の制御を放棄させる。ステップ166において、VMM104’は、「スタータ仮想プロセッサ」であるVP A1 124に関連するスレッドA1 136にこれらのハードウェア・リソースの制御を返す。
判断ステップ168において、VMM104’は、初期化すべき仮想プロセッサがどれか残っているかどうかを決定する。もし残っている場合、方法150は、ステップ154へと戻る。もし残っていない場合には、方法150は、終了する。
結論
本明細書中で説明した様々なシステム、方法、および技法は、ハードウェアまたはソフトウェア、あるいは適切な場合にはこれら両者の組合せを用いて実装することができる。したがって、本発明の方法および装置、またはある種の態様またはその一部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハード・ドライブ、他の任意のマシン読取り可能ストレージ媒体など有形の媒体の形で実施されるプログラム・コード(すなわち、命令)の形態を取ることが可能であり、ここでは、このプログラム・コードが、コンピュータなどのマシンにロードされ、マシンによって実行される場合に、このマシンは、本発明を実行するための装置になる。プログラマブル・コンピュータ上におけるプログラム・コード実行の場合においては、このコンピュータは一般に、プロセッサ、(揮発性および不揮発性のメモリおよび/またはストレージ・エレメントを含めて)このプロセッサにより読取り可能なストレージ媒体、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含むことになる。1つまたは複数のプログラムは、高レベルの手続き形言語またはオブジェクト指向プログラミング言語の形で実装されてコンピュータ・システムと情報をやりとりすることが好ましい。しかし、この1つ(または複数)のプログラムは、必要に応じてアセンブリ言語または機械語で実装することができる。いずれにしても、この言語は、コンパイラ型言語またはインタープリタ型言語とすることが可能であり、ハードウェア実装形態と組み合わせることができる。
本発明の方法および装置は、電気的な配線またはケーブル配線上で、光ファイバを介して、他の任意の伝送形態を介してなど何らかの伝送媒体上で伝送されるプログラム・コードの形態で実施することもでき、ここで、このプログラム・コードがマシンによって受信され、マシンにロードされ、またマシンによって実行されるときに、EPROM、ゲートアレイ、PLD(プログラマブル・ロジック・デバイス)、クライアント・コンピュータ、ビデオ・レコーダなどのマシンが、本発明を実行するための装置になる。汎用プロセッサ上で実装されるときには、このプログラム・コードがこのプロセッサと組み合わされて、本発明のインデッックス付け機能を実施するように動作する固有の装置が提供される。
本発明を様々な形の好ましい実施形態に関連して説明してきたが、他の同様な実施形態を使用することもでき、あるいは本発明を逸脱することなく本発明と同じファンクションを実施するために、この説明した実施形態に対して変更および追加を行うことができることを理解されたい。例えば、本発明の例示の実施形態は、パーソナル・コンピュータの機能をエミュレートするデジタル・デバイスのコンテクストで説明しているが、本発明は、本出願中で説明されるかかるデジタル・デバイスだけに限定されることなく、有線であれ無線であれ、ゲーミング・コンソール、ハンドヘルド・コンピュータ、ポータブル・コンピュータなど任意数の既存の、または出現しつつあるコンピューティング・デバイスまたはコンピューティング環境にも適用でき、また通信ネットワークを介して接続され、このネットワークを横切って相互作用する任意数のかかるコンピューティング・デバイスにも適用できることが当業者には理解されよう。さらに、特に無線ネットワークデバイスの数が増え続けているので、ハンドヘルド・デバイス・オペレーティング・システム、および他の特定用途向けハードウェア/ソフトウェアインターフェース・システムを含めて様々なコンピュータ・プラットフォームが、本明細書中では企図されていることについて強調しておくべきである。したがって、本発明は、どの1つの実施形態にも限定されるべきではなく、代わりに添付の特許請求の範囲による広がりと範囲で解釈すべきである。
最終的には、本明細書中で説明しているこれらの開示の実施形態は、他のプロセッサ・アーキテクチャ、コンピュータ・ベースのシステム、またはシステム仮想化形態において使用するために適合させることができ、かかる実施形態については、本明細書中で行われた開示によって明確に予想されており、したがって、本発明は、本明細書中で説明している特定の実施形態だけに限定すべきではなく、その代わりに最も広範囲に解釈すべきである。同様に、プロセッサ仮想化以外の目的のための合成命令の使用もまた、本明細書中で行われたこの開示によって予想されており、プロセッサ仮想化以外のコンテクストにおける合成命令のかかるどのような利用についても、本明細書中で行われたこの開示中に最も広範囲に読み込むべきである。
本発明の態様を組み込むことができるコンピュータ・システムを示すブロック図である。 コンピュータ・システムにおけるエミュレートされた動作環境についての、ハードウェア・アーキテクチャおよびソフトウェア・アーキテクチャの論理階層化を示す図である。 仮想化コンピューティング・システムを示す図である。 ホスト・オペレーティング・システムと並行して実行される仮想マシン・モニタを含む仮想化コンピューティング・システムの代替実施形態を示す図である。 複数の仮想プロセッサをさらに含む、図3Bのシステムの各部を示す図である。 本発明による、複数のプロセッサのVMを初期化する方法を示すフローチャートである。
符号の説明
20 コンピュータ
21 処理装置
22 システム・メモリ
23 システム・バス
27 ハード・ドライブ
28 フロッピー(登録商標)ドライブ
29 着脱可能ストレージ
30 光ドライブ
31 光ディスク
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 ストレージ・デバイス
90 コンピュータ・システム
92 ホスト・オペレーティング・システムおよびハードウェア・アーキテクチャ
94 エミュレーション・プログラム
96 ゲスト・ハードウェア・アーキテクチャ
98 ゲスト・オペレーティング・システム
100 ソフトウェア・アプリケーション
102 コンピュータ・ハードウェア
104 ホスト・オペレーティング・システム
104’ 仮想マシン・モニタ
104” ホスト・オペレーティング・システム
108 仮想マシンA
110 仮想マシンB
112 ゲストOS A
114 ゲストOS B
116 アプリケーションA1
118 アプリケーションA2
120 アプリケーションB1
122 アプリケーションA
124
130 仮想ローカルAPIC A1
132 仮想ローカルAPIC A2
134 仮想ローカルAPIC A
136 スレッドA1
138 スレッドA2
140 スレッドA

Claims (32)

  1. 仮想マシン環境において仮想プロセッサを起動するための方法であって、前記仮想マシン環境は、第1の実行スレッドに対応する第1の仮想プロセッサ上で実行されるゲスト・オペレーティング・システムを備え、前記方法は、
    第2の実行スレッドに対応する第2の仮想プロセッサにスタートアップ・コマンドを発行すること、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供すること、および
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドが、スタートアップを完了すること
    を備えることを特徴とする方法。
  2. 前記第2の仮想プロセッサおよびその対応する第2の実行スレッドがスタートアップを完了した後に、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供することをさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに強制的に少なくとも1つのハードウェア・リソースの制御を放棄させ、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに、そのハードウェア・リソースに対する制御を提供することをさらに備えることを特徴とする請求項1に記載の方法。
  4. 前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに強制的に少なくとも1つのハードウェア・リソースの制御を放棄させ、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに、そのハードウェア・リソースに対する制御を提供することをさらに備えることを特徴とする請求項1に記載の方法。
  5. 仮想マシン環境において仮想プロセッサを起動するための方法であって、前記仮想マシン環境は、仮想マシン・モニタによってエミュレートされる仮想マシン上で実行されるゲスト・オペレーティング・システムを備え、前記仮想マシンは、別々の実行スレッドとして実装される複数の仮想プロセッサを備え、前記ゲスト・オペレーティング・システムは、プロセッサを起動するコマンドを発行するためのサブシステム(例えば、BIOS)を備え、前記方法は、
    前記ゲスト・オペレーティング・システムが、第1の実行スレッドに対応する第1の仮想プロセッサ上で実行され、前記第1の仮想プロセッサを介して第2の実行スレッドに対応する第2の仮想プロセッサにスタートアップ・コマンドを発行すること、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供し、それによって前記オペレーティング・システムに対応する前記第1の実行スレッドが実行を継続しないように防止し、したがって前記スタートアップ・コマンドに対応するタイムアウトを防止すること、
    前記仮想マシン・モニタが、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに強制的に1組のすべてのハードウェア・リソースの制御を放棄させ、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに、そのハードウェア・リソースに対する制御を提供すること、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドが、スタートアップを完了すること、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供すること、および
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに強制的に前記1組のすべてのハードウェア・リソースの制御を放棄させ、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに、そのハードウェア・リソースに対する制御を提供すること
    を備えることを特徴とする方法。
  6. 前記仮想マシン・モニタは、ホスト・オペレーティング・システムのコンポーネント部分であることを特徴とする請求項5に記載の方法。
  7. 前記第1の実行スレッドおよび前記第2の実行スレッドは、共に第1の物理プロセッサ上で実行されることを特徴とする請求項5に記載の方法。
  8. 前記第1の実行スレッドは、第1の物理プロセッサ上で実行され、前記第2の実行スレッドは、第2の物理プロセッサ上で実行され、前記方法は、
    前記仮想マシン・モニタのエレメントが前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供するのと実質的に並行して、前記第1のスレッドの実行を一時停止すること、および
    前記仮想マシン・モニタのエレメントが前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供するのと実質的に並行して、前記第2のスレッドの実行を継続すること
    をさらに備えることを特徴とする請求項5に記載の方法。
  9. 仮想マシン環境において仮想プロセッサを起動するためのシステムであって、前記仮想マシン環境は、第1の実行スレッドに対応する第1の仮想プロセッサ上で実行されるゲスト・オペレーティング・システムを備え、前記システムは、
    第2の実行スレッドに対応する第2の仮想プロセッサにスタートアップ・コマンドを発行すること、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供すること、および
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドが、スタートアップを完了すること
    を実行するための少なくとも1つのサブ・システムを備えることを特徴とするシステム。
  10. 前記第2の仮想プロセッサおよびその対応する第2の実行スレッドがスタートアップを完了した後に、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供するための少なくとも1つのサブ・システムをさらに備えることを特徴とする請求項9に記載のシステム。
  11. 前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに強制的に少なくとも1つのハードウェア・リソースの制御を放棄させ、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに、そのハードウェア・リソースに対する制御を提供するための少なくとも1つのサブ・システムをさらに備えることを特徴とする請求項9に記載のシステム。
  12. 前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに強制的に少なくとも1つのハードウェア・リソースの制御を放棄させ、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに、そのハードウェア・リソースに対する制御を提供するための少なくとも1つのサブ・システムをさらに備えることを特徴とする請求項9に記載のシステム。
  13. 仮想マシン環境において仮想プロセッサを起動するためのシステムであって、前記仮想マシン環境は、仮想マシン・モニタによってエミュレートされる仮想マシン上で実行されるゲスト・オペレーティング・システムを備え、前記仮想マシンは、別々の実行スレッドとして実装される複数の仮想プロセッサを備え、前記ゲスト・オペレーティング・システムは、プロセッサを起動するコマンドを発行するためのサブ・システム(例えば、BIOS)を備え、前記システムは、
    前記ゲスト・オペレーティング・システムが、第1の実行スレッドに対応する第1の仮想プロセッサ上で実行され、前記第1の仮想プロセッサを介して第2の実行スレッドに対応する第2の仮想プロセッサにスタートアップ・コマンドを発行すること、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供し、それによって前記オペレーティング・システムに対応する前記第1の実行スレッドが実行を継続しないように防止し、したがって前記スタートアップ・コマンドに対応するタイムアウトを防止すること、
    前記仮想マシン・モニタが、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに強制的に1組のすべてのハードウェア・リソースの制御を放棄させ、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに、そのハードウェア・リソースに対する制御を提供すること、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドが、スタートアップを完了すること、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供すること、および
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに強制的に前記1組のすべてのハードウェア・リソースの制御を放棄させ、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに、そのハードウェア・リソースに対する制御を提供すること
    を実行するための少なくとも1つのサブ・システムを備えることを特徴とするシステム。
  14. 前記仮想マシン・モニタを、ホスト・オペレーティング・システムのコンポーネント部分とする少なくとも1つのサブ・システムをさらに備えることを特徴とする請求項13に記載のシステム。
  15. 前記第1の実行スレッドおよび前記第2の実行スレッドが、共に第1の物理プロセッサ上で実行されるようにする少なくとも1つのサブ・システムをさらに備えることを特徴とする請求項13に記載のシステム。
  16. 前記第1の実行スレッドが、第1の物理プロセッサ上で実行され、前記第2の実行スレッドが、第2の物理プロセッサ上で実行されるようにする少なくとも1つのサブ・システムをさらに備え、当該少なくとも1つのサブ・システムは
    前記仮想マシン・モニタのエレメントが前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供するのと実質的に並行して、前記第1のスレッドの実行を一時停止すること、および
    前記仮想マシン・モニタのエレメントが前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供するのと実質的に並行して、前記第2のスレッドの実行を継続すること
    を実行することを特徴とする請求項13に記載のシステム。
  17. 仮想マシン環境において仮想プロセッサを起動するためのコンピュータ読取り可能命令を備えるコンピュータ読取り可能媒体であって、前記仮想マシン環境は、第1の実行スレッドに対応する第1の仮想プロセッサ上で実行されるゲスト・オペレーティング・システムを備え、前記コンピュータ読取り可能命令は、
    第2の実行スレッドに対応する第2の仮想プロセッサにスタートアップ・コマンドを発行すること、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供すること、および
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドが、スタートアップを完了すること
    を実行するため各命令を備えることを特徴とするコンピュータ読取り可能媒体。
  18. 前記第2の仮想プロセッサおよびその対応する第2の実行スレッドがスタートアップを完了した後に、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供するための命令をさらに備えることを特徴とする請求項17に記載のコンピュータ読取り可能媒体。
  19. 前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに強制的に少なくとも1つのハードウェア・リソースの制御を放棄させ、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに、そのハードウェア・リソースに対する制御を提供するための命令をさらに備えることを特徴とする請求項17に記載のコンピュータ読取り可能媒体。
  20. 前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに強制的に少なくとも1つのハードウェア・リソースの制御を放棄させ、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに、そのハードウェア・リソースに対する制御を提供するための命令をさらに備えることを特徴とする請求項17に記載のコンピュータ読取り可能媒体。
  21. 仮想マシン環境において仮想プロセッサを起動するためのコンピュータ読取り可能命令を備えるコンピュータ読取り可能媒体であって、前記仮想マシン環境は、仮想マシン・モニタによってエミュレートされる仮想マシン上で実行されるゲスト・オペレーティング・システムを備え、前記仮想マシンは、別々の実行スレッドとして実装される複数の仮想プロセッサを備え、前記ゲスト・オペレーティング・システムは、プロセッサを起動するコマンドを発行するためのサブ・システム(例えば、BIOS)を備え、前記コンピュータ読取り可能命令は、
    前記ゲスト・オペレーティング・システムが、第1の実行スレッドに対応する第1の仮想プロセッサ上で実行され、前記第1の仮想プロセッサを介して第2の実行スレッドに対応する第2の仮想プロセッサにスタートアップ・コマンドを発行すること、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供し、それによって前記オペレーティング・システムに対応する前記第1の実行スレッドが実行を継続することを防止し、したがって前記スタートアップ・コマンドに対応するタイムアウトを防止すること、
    前記仮想マシン・モニタが、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに強制的に1組のすべてのハードウェア・リソースの制御を放棄させ、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに、そのハードウェア・リソースに対する制御を提供すること、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドが、スタートアップを完了すること、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供すること、および
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに強制的に前記1組のすべてのハードウェア・リソースの制御を放棄させ、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに、そのハードウェア・リソースに対する制御を提供すること
    を実行する各命令を備えることを特徴とするコンピュータ読取り可能媒体。
  22. 前記仮想マシン・モニタは、ホスト・オペレーティング・システムのコンポーネント部分である命令をさらに備えることを特徴とする請求項21に記載のコンピュータ読取り可能媒体。
  23. 前記第1の実行スレッドおよび前記第2の実行スレッドは、共に第1の物理プロセッサ上で実行される命令をさらに備えることを特徴とする請求項21に記載のコンピュータ読取り可能媒体。
  24. 前記第1の実行スレッドが、第1の物理プロセッサ上で実行され、前記第2の実行スレッドが、第2の物理プロセッサ上で実行されようにする命令をさらに備え、当該命令は、
    前記仮想マシン・モニタのエレメントが前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供するのと実質的に並行して、前記第1のスレッドの実行を一時停止すること、
    前記仮想マシン・モニタのエレメントが前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供するのと実質的に並行して、前記第2のスレッドの実行を継続すること
    を実行する各命令をさらに備えることを特徴とする請求項21に記載のコンピュータ読取り可能媒体。
  25. 仮想マシン環境において仮想プロセッサを起動するためのハードウェア制御デバイスであって、前記仮想マシン環境は、第1の実行スレッドに対応する第1の仮想プロセッサ上で実行されるゲスト・オペレーティング・システムを備え、前記ハードウェア制御デバイスは、
    第2の実行スレッドに対応する第2の仮想プロセッサにスタートアップ・コマンドを発行する手段と、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供する手段と、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドが、スタートアップを完了する手段と
    を備えることを特徴とするハードウェア制御デバイス。
  26. 前記第2の仮想プロセッサおよびその対応する第2の実行スレッドがスタートアップを完了した後に、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供する手段をさらに備えることを特徴とする請求項25に記載のハードウェア制御デバイス。
  27. 前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに強制的に少なくとも1つのハードウェア・リソースの制御を放棄させ、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに、そのハードウェア・リソースに対する制御を提供する手段をさらに備えることを特徴とする請求項25に記載のハードウェア制御デバイス。
  28. 前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに強制的に少なくとも1つのハードウェア・リソースの制御を放棄させ、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに、そのハードウェア・リソースに対する制御を提供する手段をさらに備えることを特徴とする請求項25に記載のハードウェア制御デバイス。
  29. 仮想マシン環境において仮想プロセッサを起動するためのハードウェア制御デバイスであって、前記仮想マシン環境は、仮想マシン・モニタによってエミュレートされる仮想マシン上で実行されるゲスト・オペレーティング・システムを備え、前記仮想マシンは、別々の実行スレッドとして実装される複数の仮想プロセッサを備え、前記ゲスト・オペレーティング・システムは、プロセッサを起動するコマンドを発行するためのサブシステム(例えば、BIOS)を備え、前記ハードウェア制御デバイスは、
    前記ゲスト・オペレーティング・システムが、第1の実行スレッドに対応する第1の仮想プロセッサ上で実行され、前記第1の仮想プロセッサを介して第2の実行スレッドに対応する第2の仮想プロセッサにスタートアップ・コマンドを発行する手段と、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供し、それによって前記オペレーティング・システムに対応する前記第1の実行スレッドが実行を継続しないように防止し、したがって前記スタートアップ・コマンドに対応するタイムアウトを防止する手段と、
    前記仮想マシン・モニタが、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに強制的に1組のすべてのハードウェア・リソースの制御を放棄させ、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに、そのハードウェア・リソースに対する制御を提供する手段と、
    前記第2の仮想プロセッサおよびその対応する第2の実行スレッドが、スタートアップを完了する手段と、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供する手段と、
    前記仮想マシン・モニタが、前記第2の仮想プロセッサおよびその対応する第2の実行スレッドに強制的に前記1組のすべてのハードウェア・リソースの制御を放棄させ、前記第1の仮想プロセッサおよびその対応する第1の実行スレッドに、そのハードウェア・リソースに対する制御を提供する手段と
    を備えることを特徴とするハードウェア制御デバイス。
  30. 前記仮想マシン・モニタを、ホスト・オペレーティング・システムのコンポーネント部分とする手段をさらに備えることを特徴とする請求項29に記載のハードウェア制御デバイス。
  31. 前記第1の実行スレッドおよび前記第2の実行スレッドは、共に第1の物理プロセッサ上で実行される手段をさらに備えることを特徴とする請求項29に記載のハードウェア制御デバイス。
  32. 前記第1の実行スレッドが、第1の物理プロセッサ上で実行され、前記第2の実行スレッドが、第2の物理プロセッサ上で実行されようにする手段をさらに備え、当該手段は、
    前記仮想マシン・モニタのエレメントが前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位を提供するのと実質的に並行して、前記第1のスレッドの実行を一時停止すること、および
    前記仮想マシン・モニタのエレメントが前記第2の仮想プロセッサおよびその対応する第2の実行スレッドにハードウェア・リソースを利用するための最高優先順位以外の優先順位を提供するのと実質的に並行して、前記第2のスレッドの実行を継続すること
    実行することを特徴とする請求項29に記載のハードウェア制御デバイス。
JP2005158858A 2004-06-30 2005-05-31 1台の仮想マシン内の複数の仮想プロセッサを初期化するためのシステムおよび方法 Expired - Fee Related JP4806212B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/882,967 US8271976B2 (en) 2004-06-30 2004-06-30 Systems and methods for initializing multiple virtual processors within a single virtual machine
US10/882,967 2004-06-30

Publications (2)

Publication Number Publication Date
JP2006018813A true JP2006018813A (ja) 2006-01-19
JP4806212B2 JP4806212B2 (ja) 2011-11-02

Family

ID=35134601

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005158858A Expired - Fee Related JP4806212B2 (ja) 2004-06-30 2005-05-31 1台の仮想マシン内の複数の仮想プロセッサを初期化するためのシステムおよび方法

Country Status (5)

Country Link
US (1) US8271976B2 (ja)
EP (2) EP3125113B1 (ja)
JP (1) JP4806212B2 (ja)
KR (1) KR20060047772A (ja)
CN (1) CN100527085C (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017513128A (ja) * 2014-03-27 2017-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation マルチスレッド・ゲスト仮想マシン(vm)をディスパッチするためのシステム、方法およびコンピュータ・プログラム製品
US10430207B2 (en) 2016-03-25 2019-10-01 Cloudminds (Shenzhen) Robotics Systems Co., Ltd. Method and electronic device for directly starting application on second virtual machine in operating environment of first virtual machine

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007197B2 (en) * 2002-05-31 2006-02-28 Microsoft Corporation Virtual logging system and method
WO2006014554A2 (en) * 2004-07-07 2006-02-09 University Of Maryland Method and system for monitoring system memory integrity
US20060212840A1 (en) * 2005-03-16 2006-09-21 Danny Kumamoto Method and system for efficient use of secondary threads in a multiple execution path processor
US8732824B2 (en) * 2006-01-23 2014-05-20 Microsoft Corporation Method and system for monitoring integrity of running computer system
CN100464302C (zh) * 2006-04-20 2009-02-25 联想(北京)有限公司 虚拟机***及其显卡访问方法
US20080127181A1 (en) * 2006-06-30 2008-05-29 Microsoft Corporation Use of fixed-function device as general-purpose platform through virtualization
US8756607B2 (en) * 2006-08-14 2014-06-17 Lsi Corporation Method and system for creating and utilizing virtual hardware resources
US7996835B2 (en) * 2006-10-10 2011-08-09 International Business Machines Corporation System, method and program for managing communication with multiple configurations for virtual machine
US8584109B2 (en) 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US8621459B2 (en) * 2006-12-22 2013-12-31 Intel Corporation Method and apparatus for multithreaded guest operating system execution through a multithreaded host virtual machine monitor
CN101241445B (zh) * 2007-02-08 2011-07-27 联想(北京)有限公司 虚拟机***及其访问显卡的方法
US8219788B1 (en) * 2007-07-23 2012-07-10 Oracle America, Inc. Virtual core management
US8468533B2 (en) * 2008-04-28 2013-06-18 Panasonic Corporation Virtual machine control device, method, and program wherein a switching task used to switch to the highest priority virtual machines is the highest priority task in the current virtual machine and the virtual machine that is the switching target
US8650570B2 (en) * 2008-06-02 2014-02-11 Microsoft Corporation Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources
CN101403983B (zh) * 2008-11-25 2010-10-13 北京航空航天大学 基于虚拟机的多核处理器的资源监控方法及***
US8453149B2 (en) * 2010-01-21 2013-05-28 International Business Machines Corporation Efficient multi-core processing of events
KR20110094764A (ko) * 2010-02-17 2011-08-24 삼성전자주식회사 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법
CN101807056B (zh) * 2010-03-16 2012-05-23 新疆威奥科技股份有限公司 无线数控焊接工作站的控制方法及其控制装置
US8527761B2 (en) 2010-05-28 2013-09-03 Dell Products, Lp System and method for fuse enablement of a secure client hosted virtualization in an information handling system
US8751781B2 (en) 2010-05-28 2014-06-10 Dell Products, Lp System and method for supporting secure subsystems in a client hosted virtualization system
US8990584B2 (en) * 2010-05-28 2015-03-24 Dell Products, Lp System and method for supporting task oriented devices in a client hosted virtualization system
US8458490B2 (en) 2010-05-28 2013-06-04 Dell Products, Lp System and method for supporting full volume encryption devices in a client hosted virtualization system
US9733963B2 (en) 2010-09-17 2017-08-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing virtual graphics processing unit utilization
AU2012211053A1 (en) * 2011-01-27 2013-08-22 L-3 Communications Corporation Internet isolation for avoiding internet security threats
US9026630B2 (en) 2011-06-14 2015-05-05 Vmware, Inc. Managing resources in a distributed system using dynamic clusters
US8701107B2 (en) 2011-06-14 2014-04-15 Vmware, Inc. Decentralized management of virtualized hosts
US8856784B2 (en) 2011-06-14 2014-10-07 Vmware, Inc. Decentralized management of virtualized hosts
WO2013032495A1 (en) * 2011-08-30 2013-03-07 Hewlett-Packard Development Company , L.P. Communication with a virtual trusted runtime bios
CN103294494B (zh) * 2012-02-29 2018-07-03 中兴通讯股份有限公司 一种虚拟***自动化部署的方法和***
KR101387986B1 (ko) * 2012-05-24 2014-04-22 성균관대학교산학협력단 가상화 장치
US9122780B2 (en) * 2012-06-20 2015-09-01 Intel Corporation Monitoring resource usage by a virtual machine
US9578664B1 (en) 2013-02-07 2017-02-21 Sprint Communications Company L.P. Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system
US9984083B1 (en) 2013-02-25 2018-05-29 EMC IP Holding Company LLC Pluggable storage system for parallel query engines across non-native file systems
US9563648B2 (en) 2013-02-25 2017-02-07 EMC IP Holding Company LLC Data analytics platform over parallel databases and distributed file systems
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9606818B2 (en) * 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
US9396012B2 (en) * 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
CN103631228A (zh) * 2013-11-27 2014-03-12 上海慧控信息技术有限公司 控制***虚拟化方法
US9772867B2 (en) 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9280375B1 (en) 2014-04-30 2016-03-08 Google Inc. Dynamically adjustable virtual machine
US9389897B1 (en) 2014-12-18 2016-07-12 International Business Machines Corporation Exiting multiple threads of a simulation environment in a computer
US9565168B1 (en) * 2015-05-05 2017-02-07 Sprint Communications Company L.P. System and method of a trusted computing operation mode
US9686240B1 (en) 2015-07-07 2017-06-20 Sprint Communications Company L.P. IPv6 to IPv4 data packet migration in a trusted security zone
US9749294B1 (en) 2015-09-08 2017-08-29 Sprint Communications Company L.P. System and method of establishing trusted operability between networks in a network functions virtualization environment
US9998284B2 (en) 2015-09-24 2018-06-12 Intel Corporation Methods and apparatus to provide isolated execution environments
US10542115B1 (en) 2015-10-01 2020-01-21 Sprint Communications Company L.P. Securing communications in a network function virtualization (NFV) core network
US9811686B1 (en) 2015-10-09 2017-11-07 Sprint Communications Company L.P. Support systems interactions with virtual network functions in a trusted security zone
US9781016B1 (en) 2015-11-02 2017-10-03 Sprint Communications Company L.P. Dynamic addition of network function services
US10250498B1 (en) 2016-10-03 2019-04-02 Sprint Communications Company L.P. Session aggregator brokering of data stream communication
CN106776065B (zh) * 2016-11-29 2020-09-08 北京元心科技有限公司 多***使用Mtp功能的方法及装置
CN108363918B (zh) * 2017-04-28 2022-02-18 清华大学 处理器操作***的引导启动方法、装置及处理器***
CN109408193B (zh) * 2017-08-15 2020-11-17 龙芯中科技术有限公司 虚拟机实现方法、装置及计算机设备
US10348488B1 (en) 2017-08-25 2019-07-09 Sprint Communications Company L.P. Tiered distributed ledger technology (DLT) in a network function virtualization (NFV) core network
US10733005B1 (en) * 2017-10-10 2020-08-04 Parallels International Gmbh Providing access to mobile applications by heterogeneous devices
US10733121B2 (en) * 2018-05-10 2020-08-04 Qualcomm Incorporated Latency optimized I3C virtual GPIO with configurable operating mode and device skip
JP6877388B2 (ja) 2018-07-09 2021-05-26 株式会社東芝 情報処理装置、移動体、情報処理方法、およびプログラム
CN110025957B (zh) * 2019-03-04 2023-04-21 深圳威尔视觉传媒有限公司 一种云游戏服务器端架构、客户端和***
US11379295B1 (en) * 2019-05-15 2022-07-05 Amazon Technologies, Inc. Recovery protocols for system malfunctions in virtual computing environments
US11847205B1 (en) 2020-10-26 2023-12-19 T-Mobile Innovations Llc Trusted 5G network function virtualization of virtual network function elements embedded on a system-on-chip

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04213733A (ja) * 1990-12-12 1992-08-04 Nec Corp 仮想プロセッサ方式
JPH06103092A (ja) * 1992-09-18 1994-04-15 Hitachi Ltd 仮想計算機システム
JPH06242975A (ja) * 1993-02-17 1994-09-02 Hitachi Ltd 多重情報処理システムの仮想計算機ディスパッチ方式
JPH07271738A (ja) * 1994-03-31 1995-10-20 Nec Corp ソフトウエア・アーキテクチャを用いた高度並列コンピュータ・システムの制御方式
JP2000132530A (ja) * 1997-11-04 2000-05-12 Digital Equip Corp <Dec> マルチプロセッサコンピュ―タシステム及びその動作方法
JP2000242512A (ja) * 1999-02-19 2000-09-08 Hitachi Ltd 複数のオペレーティングシステムを実行する計算機

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4779188A (en) 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
JPH0731609B2 (ja) 1985-09-18 1995-04-10 日本電気株式会社 Vmモード変更装置
JPH0814795B2 (ja) * 1986-01-14 1996-02-14 株式会社日立製作所 マルチプロセッサ仮想計算機システム
US4875186A (en) 1986-02-28 1989-10-17 Prime Computer, Inc. Peripheral emulation apparatus
GB2203572B (en) 1987-03-24 1991-11-27 Insignia Solutions Limited Improvements in data processing means
US4843541A (en) 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
US5063499A (en) 1989-01-09 1991-11-05 Connectix, Inc. Method for a correlating virtual memory systems by redirecting access for used stock instead of supervisor stock during normal supervisor mode processing
US5278973A (en) 1989-03-27 1994-01-11 Unisys Corporation Dual operating system computer
US5448264A (en) 1991-03-15 1995-09-05 Hewlett-Packard Company Method and apparatus for separate window clipping and display mode planes in a graphics frame buffer
US5301277A (en) 1991-04-10 1994-04-05 Seiko Epson Corporation Method and apparatus for communicating peripheral data to/from minor operating systems running as subprocesses on a main operating system
JPH04348434A (ja) 1991-05-27 1992-12-03 Hitachi Ltd 仮想計算機システム
JPH05189574A (ja) 1991-07-23 1993-07-30 Internatl Business Mach Corp <Ibm> レンダリング構成要素における複数コマンド支援を行うための方法およびその装置
JP2878499B2 (ja) 1991-10-15 1999-04-05 株式会社日立製作所 マルチウィンドウ表示方法およびウィンドウシステム
JP2682770B2 (ja) * 1992-05-15 1997-11-26 富士通株式会社 仮想計算機システムのcpu制御方式
US5666521A (en) 1992-12-07 1997-09-09 Intel Corporation Method and apparatus for performing bit block transfers in a computer system
US5452456A (en) 1992-12-18 1995-09-19 Apple Computer, Inc. Apparatus for executing a plurality of program segments having different object code types in a single program or processor environment
US6199176B1 (en) 1993-03-11 2001-03-06 International Business Machines Corporation Method and apparatus for storage resource reassignment utilizing an indicator to enhance the likelihood of successful reconfiguration
JPH0784562A (ja) 1993-09-16 1995-03-31 Nec Corp イメージ格納装置
US5515525A (en) 1993-09-28 1996-05-07 Bull Hn Information Systems Inc. Emulating the memory functions of a first system on a second system
US5460644A (en) * 1993-12-14 1995-10-24 The O'brien Corporation Stain-blocking and mildewcide resistant coating compositions
US5541862A (en) 1994-04-28 1996-07-30 Wandel & Goltermann Ate Systems Ltd. Emulator and digital signal analyzer
US5640562A (en) 1995-02-27 1997-06-17 Sun Microsystems, Inc. Layering hardware support code on top of an existing operating system
US5752275A (en) 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US5757386A (en) 1995-08-11 1998-05-26 International Business Machines Corporation Method and apparatus for virtualizing off-screen memory of a graphics engine
US5742797A (en) 1995-08-11 1998-04-21 International Business Machines Corporation Dynamic off-screen display memory manager
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5831607A (en) 1996-01-25 1998-11-03 International Business Machines Corporation Method for adapting multiple screens of information for access and use on a single graphical panel in a computer system
US6026476A (en) 1996-03-19 2000-02-15 Intel Corporation Fast fully associative translation lookaside buffer
US5815686A (en) 1996-09-12 1998-09-29 Silicon Graphics, Inc. Method and apparatus for address space translation using a TLB
US5860147A (en) 1996-09-16 1999-01-12 Intel Corporation Method and apparatus for replacement of entries in a translation look-aside buffer
US5940872A (en) 1996-11-01 1999-08-17 Intel Corporation Software and hardware-managed translation lookaside buffer
US5928322A (en) * 1996-11-20 1999-07-27 Silicon Graphics, Inc. Low-latency real-time dispatching in general purpose multiprocessor systems
US6269391B1 (en) 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
US6298370B1 (en) 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6142682A (en) 1997-06-13 2000-11-07 Telefonaktiebolaget Lm Ericsson Simulation of computer processor
US6014170A (en) 1997-06-20 2000-01-11 Nikon Corporation Information processing apparatus and method
US6058466A (en) * 1997-06-24 2000-05-02 Sun Microsystems, Inc. System for allocation of execution resources amongst multiple executing processes
US6681238B1 (en) 1998-03-24 2004-01-20 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6067618A (en) 1998-03-26 2000-05-23 Innova Patent Trust Multiple operating system and disparate user mass storage resource separation for a computer system
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6668287B1 (en) 1999-12-15 2003-12-23 Transmeta Corporation Software direct memory access
US7506265B1 (en) 2000-07-17 2009-03-17 Microsoft Corporation System and method for displaying images of virtual machine environments
US6651132B1 (en) 2000-07-17 2003-11-18 Microsoft Corporation System and method for emulating the operation of a translation look-aside buffer
US7069205B1 (en) 2000-07-17 2006-06-27 Microsoft Corporation System and method for emulating the operation of a video graphics adapter
US7085705B2 (en) 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
US6766474B2 (en) 2000-12-21 2004-07-20 Intel Corporation Multi-staged bios-based memory testing
US6980946B2 (en) 2001-03-15 2005-12-27 Microsoft Corporation Method for hybrid processing of software instructions of an emulated computer system
US7428485B2 (en) * 2001-08-24 2008-09-23 International Business Machines Corporation System for yielding to a processor
US7158972B2 (en) 2001-12-11 2007-01-02 Sun Microsystems, Inc. Methods and apparatus for managing multiple user systems
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7310724B2 (en) * 2003-06-30 2007-12-18 Intel Corporation Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform
US20050060704A1 (en) * 2003-09-17 2005-03-17 International Business Machines Corporation Managing processing within computing environments including initiation of virtual machines

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04213733A (ja) * 1990-12-12 1992-08-04 Nec Corp 仮想プロセッサ方式
JPH06103092A (ja) * 1992-09-18 1994-04-15 Hitachi Ltd 仮想計算機システム
JPH06242975A (ja) * 1993-02-17 1994-09-02 Hitachi Ltd 多重情報処理システムの仮想計算機ディスパッチ方式
JPH07271738A (ja) * 1994-03-31 1995-10-20 Nec Corp ソフトウエア・アーキテクチャを用いた高度並列コンピュータ・システムの制御方式
JP2000132530A (ja) * 1997-11-04 2000-05-12 Digital Equip Corp <Dec> マルチプロセッサコンピュ―タシステム及びその動作方法
JP2000242512A (ja) * 1999-02-19 2000-09-08 Hitachi Ltd 複数のオペレーティングシステムを実行する計算機

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017513128A (ja) * 2014-03-27 2017-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation マルチスレッド・ゲスト仮想マシン(vm)をディスパッチするためのシステム、方法およびコンピュータ・プログラム製品
US10430207B2 (en) 2016-03-25 2019-10-01 Cloudminds (Shenzhen) Robotics Systems Co., Ltd. Method and electronic device for directly starting application on second virtual machine in operating environment of first virtual machine

Also Published As

Publication number Publication date
JP4806212B2 (ja) 2011-11-02
KR20060047772A (ko) 2006-05-18
EP3125113B1 (en) 2019-02-20
EP1622014B1 (en) 2016-08-24
EP1622014A3 (en) 2008-01-02
EP3125113A1 (en) 2017-02-01
CN100527085C (zh) 2009-08-12
US20060005188A1 (en) 2006-01-05
CN1716205A (zh) 2006-01-04
US8271976B2 (en) 2012-09-18
EP1622014A2 (en) 2006-02-01

Similar Documents

Publication Publication Date Title
JP4806212B2 (ja) 1台の仮想マシン内の複数の仮想プロセッサを初期化するためのシステムおよび方法
JP5005191B2 (ja) 仮想マシン環境においてオペレーティングシステムを実施するためのシステムおよび方法
JP5599804B2 (ja) 仮想ストレージの割り当て方法
US7555596B2 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
US9361147B2 (en) Guest customization
US8166477B1 (en) System and method for restoration of an execution environment from hibernation into a virtual or physical machine
JP4156611B2 (ja) 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法
EP4050477B1 (en) Virtual machine migration techniques
US7657888B2 (en) Method for forking or migrating a virtual machine
US9880867B2 (en) Method and subsystem for data exchange between a guest operating system and a virtualization layer
US8612633B2 (en) Virtual machine fast emulation assist
Von Hagen Professional xen virtualization
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
US20060005189A1 (en) Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US20110320556A1 (en) Techniques For Migrating A Virtual Machine Using Shared Storage
JP2013516021A (ja) プロセッサコアのハイパーバイザ離隔
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
US20090100424A1 (en) Interrupt avoidance in virtualized environments
US20120272235A1 (en) Consolidation of idle virtual machines
Deka et al. Application of virtualization technology in IaaS cloud deployment model
US9959842B2 (en) On-screen display at thin client
US10567239B2 (en) Techniques of providing data to screen saver of thin client
US10564918B2 (en) Techniques of remotely providing user input to thin client
Alliance Virtualization: State of the art

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110408

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110705

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4806212

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

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

LAPS Cancellation because of no payment of annual fees