JP2017204307A - ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法 - Google Patents

ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法 Download PDF

Info

Publication number
JP2017204307A
JP2017204307A JP2017160075A JP2017160075A JP2017204307A JP 2017204307 A JP2017204307 A JP 2017204307A JP 2017160075 A JP2017160075 A JP 2017160075A JP 2017160075 A JP2017160075 A JP 2017160075A JP 2017204307 A JP2017204307 A JP 2017204307A
Authority
JP
Japan
Prior art keywords
operating system
task
guest operating
priority
virtual processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017160075A
Other languages
English (en)
Inventor
エリック・ジェームズ・プロンドケ
James Plondke Erich
ルシアン・コドレスク
Codrescu Lucian
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2017204307A publication Critical patent/JP2017204307A/ja
Pending legal-status Critical Current

Links

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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

【課題】ハイパーバイザに制御されるコンピューティング環境において、オペレーティングシステム(たとえばリアルタイムオペレーティングシステム)を低減された遅延で実行することを可能にするシステムおよび方法を提供すること【解決手段】装置は、プロセッサおよびゲストオペレーティングシステムを含む。タスクを作成するための要求を受信することに応じて、ゲストオペレーティングシステムは、要求されたタスクを実行するために仮想プロセッサを作成することをハイパーバイザに要求する。仮想プロセッサは、プロセッサでスケジューリングすることができる。ハイパーバイザは、ゲストオペレーティングシステムのタスクおよび第2のゲストオペレーティングシステムのタスクに関連する優先度情報へのアクセスを持つ。【選択図】図1

Description

関連出願の相互参照
本出願は、2013年3月14日に出願した本願の譲受人が所有する米国非仮特許出願第13/828,183号の優先権を主張するものであり、その内容は、参照によりその全体が本明細書に明確に組み込まれている。
本開示は、一般的に、ハイパーバイザを使用するオペレーティングシステムの仮想化に関する。
技術の進歩の結果として、より小型かつより強力なコンピューティングデバイスが登場した。たとえば、現在、小型、軽量、かつユーザによって容易に運ばれる、携帯型ワイヤレス電話機、携帯情報端末(PDA)、タブレットコンピュータ、およびページングデバイスなどのワイヤレスコンピューティングデバイスを含む、様々な携帯型パーソナルコンピューティングデバイスが存在する。そのような多くのコンピューティングデバイスは、そこに組み込まれた他のデバイスを含む。たとえば、ワイヤレス電話は、デジタルスチールカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤーも含む可能性がある。また、そのようなコンピューティングデバイスは、インターネットにアクセスするために使用できるウェブブラウザアプリケーションおよびスチールカメラまたはビデオカメラを利用し、マルチメディア再生機能を提供するマルチメディアアプリケーションなど、ソフトウェアアプリケーションを含む、実行可能命令を処理することができる。
そのような高度な機能をサポートするために、コンピューティングデバイスは、オペレーティングシステムを含む場合がある。オペレーティングシステムは、使用可能なハードウェアリソースの抽象的概念を提供することができる。たとえば、オペレーティングシステムは、様々なソフトウェアタスクの中で、システムリソース(たとえばプロセッサ、メモリなど)を多重化することができる。オペレーティングシステムは、また、実行するためにタスクをスケジューリングし、メモリ管理を実行することができる。さらに、オペレーティングシステムは、イベントのためにブロッキングおよびブロッキング解除を処理することができる。
特定の状況では、単一のコンピューティングデバイスで、複数のオペレーティングシステム、または同じオペレーティングシステムの複数のインスタンスを実行することが有利な場合がある。ハイパーバイザ(仮想マシンモニタとも呼ばれる)は、オペレーティングシステムに使用可能なハードウェアリソースを抽象化したものを提供することができる。したがって、ハイパーバイザは、複数のオペレーティングシステム(または同じオペレーティングシステムの複数のインスタンス)に対するオペレーティングシステムとして機能することができる。ハイパーバイザが使用される場合、ハイパーバイザは、どのオペレーティングシステムおよびそのタスクが、特定の時間に特定のハードウェアリソースにアクセスが許可されるかを決定するためにスケジューラを含むことができる。したがって、複数のレベルのスケジューリングをシステム内で実行している場合がある。第1のレベルは、個々のオペレーティングシステムのスケジューラを含むことができ、第2のレベルは、ハイパーバイザのスケジューラを含むことができる。
複数のレベルのスケジューリングを実行することで、システムにオーバヘッドが発生する(たとえば、ハイパーバイザによって実行されるコンテキスト切り替えのため)。そのようなオーバヘッドは、オペレーティングシステムの1つまたは複数が、特定の遅延を保証できる必要があるリアルタイムオペレーティングシステムである場合、受け入れることができない場合がある。複数のオペレーティングシステムがある環境にリアルタイムオペレーティングシステムを含めるためには、リアルタイムオペレーティングシステムは通常、「特別な」優先度を与えられる。たとえば、リアルタイムオペレーティングシステムは、最高の使用可能な優先度を持つことができる。しかしながら、各オペレーティングシステム内のタスク優先度情報にハイパーバイザはアクセス可能でない場合があるので、これは非効率的な場合がある。たとえば、リアルタイムオペレーティングシステムが重要でないタスクを実行しているが、別のオペレーティングシステムは重要なタスクを実行している場合、ハイパーバイザは、それでも、比較的重要でないリアルタイムオペレーティングシステムのタスクを最初にスケジューリングする可能性がある。
ハイパーバイザに制御されるコンピューティング環境において、オペレーティングシステム(たとえばリアルタイムオペレーティングシステム)を低減された遅延で実行することを可能にするシステムおよび方法が開示される。内蔵型のスケジューラを持つ従来のゲストオペレーティングシステムの代わりに(またはそれに加えて)、記述した技術は、制限されたスケジューリング機能を持つか、またはスケジューリング機能を持たず、代わりに、スケジューリングのためにハイパーバイザに依存している「シン(thin)」ゲストオペレーティングシステムを利用する。ブロッキングおよびブロッキング解除は、また、個々のオペレーティングシステムの代わりに、ハイパーバイザによって処理することができる。さらに、ハイパーバイザは、個々のオペレーティングシステムの各々のタスクの優先度に関する情報にアクセスすることができる。
「シン」オペレーティングシステムで新しいタスクが作成されるたびに、「シン」オペレーティングシステムは、タスクに対して「仮想プロセッサ」を作成するようにハイパーバイザに要求することができる。ハイパーバイザは、基礎となる物理的なハードウェア(たとえば、ハードウェアプロセッサ)で実行するために仮想プロセッサをスケジューリングすることができ、仮想プロセッサは、対応するタスクが存在する限り維持され得る。たとえば、各タスクは、仮想プロセッサに関連付けられ得、すべてのスケジューリングは、ハイパーバイザのスケジューラによって処理され得る。さらに、ハイパーバイザのスケジューラは、個々のタスク/仮想プロセッサの優先度にアクセスすることができ、これらは、すべてのゲストオペレーティングシステムを横断してより効率的な仮想プロセッサのスケジューリングを実行するために使用され得る。記述したシステムおよび方法は、したがって、個々のオペレーティングシステムを簡素化し、ハイパーバイザに制御されるコンピューティング環境の全体的な遅延を低減することができ、それによって、ハイパーバイザに制御されたコンピューティング環境において、1つまたは複数のリアルタイムオペレーティングシステムおよび他のオペレーティングシステムの使用を可能にする。
特定の実施形態では、装置は、プロセッサおよびハイパーバイザを含む。ハイパーバイザは、プロセッサによって実行するために仮想プロセッサをスケジューリングするように構成される。仮想プロセッサの各々は、ハイパーバイザにアクセス可能であり、対応するタスクのタスク優先度に対応する優先度を持つ。タスク優先度は、ゲストオペレーティングシステムによって割り当てられる。
別の特定の実施形態では、方法は、タスクを実行するために仮想プロセッサを作成するために、コンピューティングデバイスのハイパーバイザで、ゲストオペレーティングシステムから要求を受信するステップを含む。方法は、また、仮想プロセッサを作成するステップと、コンピューティングデバイスのハードウェアプロセッサで実行するために仮想プロセッサをスケジューリングするステップとを含む。仮想プロセッサは、ゲストオペレーティングシステムによって割り当てられた優先度を持ち、優先度は、タスクのタスク優先度に対応する。
別の特定の実施形態では、装置は、処理するための手段と、処理するための手段によって実行可能なスケジューリングするための手段とを含む。スケジューリングするための手段は、処理するための手段によって実行するために仮想プロセッサをスケジューリングするように構成される。仮想プロセッサの各々は、スケジューリングするための手段がアクセス可能であり、対応するタスクのタスク優先度に対応する優先度を持つ。タスク優先度は、第1のゲストオペレーティングシステムによって割り当てられる。
別の特定の実施形態では、非一時的コンピュータ可読媒体は、コンピュータによって実行された場合、コンピュータに、ハイパーバイザで、タスクを実行するために仮想プロセッサを作成するためにゲストオペレーティングシステムから要求を受信させる命令を含む。命令は、コンピュータによって実行された場合、また、コンピュータに、仮想プロセッサを作成させ、実行するために仮想プロセッサをスケジューリングさせる。仮想プロセッサは、タスクのタスク優先度に対応する優先度を持つ。タスク優先度は、ゲストオペレーティングシステムによって割り当てられる。
別の特定の実施形態では、装置は、プロセッサおよびゲストオペレーティングシステムを含む。タスクを作成するための要求を受信することに応じて、ゲストオペレーティングシステムは、タスクを実行するために仮想プロセッサを作成することをハイパーバイザに要求する。仮想プロセッサは、プロセッサでスケジューリングすることができる。
別の特定の実施形態では、方法は、ハイパーバイザおよび少なくとも1つのプロセッサを含むコンピューティングデバイスで実行されているゲストオペレーティングシステムで、タスクを作成するための要求を受信するステップを含む。方法は、また、タスクを作成するための要求に応じて、要求されたタスクを実行するために仮想プロセッサを作成することをハイパーバイザに要求するステップを含む。仮想プロセッサは、少なくとも1つのプロセッサでスケジューリングすることができる。
別の特定の実施形態では、装置は、プロセッサおよびゲストオペレーティングシステムを含む。ゲストオペレーティングシステムは、タスクを作成するための要求を受信することに応じて、タスクを実行するために仮想プロセッサを作成することをハイパーバイザに要求するための手段を含む。仮想プロセッサは、プロセッサでスケジューリングすることができる。
別の特定の実施形態では、非一時的コンピュータ可読媒体は、コンピュータによって実行された場合、コンピュータに、ゲストオペレーティングシステムで、タスクを作成するための要求を受信させる命令を含む。命令は、コンピュータによって実行された場合、また、コンピュータに、タスクを作成するための要求に応じて、要求されたタスクを実行するために仮想プロセッサを作成することをハイパーバイザに要求させる。仮想プロセッサは、ハードウェアプロセッサでスケジューリングすることができる。
別の特定の実施形態では、電子デバイスは、プロセッサ、ハイパーバイザ、第1のゲストオペレーティングシステム、および第2のゲストオペレーティングシステムを含む。第1のゲストオペレーティングシステムの少なくとも1つのタスクは、ハイパーバイザから第1のゲストオペレーティングシステムによって要求された第1の仮想プロセッサによって実行される。第2のゲストオペレーティングシステムの少なくとも1つのタスクは、ハイパーバイザから第2のゲストオペレーティングシステムによって要求された第2の仮想プロセッサによって実行される。第1の仮想プロセッサおよび第2の仮想プロセッサは、プロセッサによって実行される。
開示された実施形態の少なくとも1つによって提供される特定の1つの利点は、低減された遅延を用いて複数のゲストオペレーティングシステムから優先度が付けられたタスクのスケジューリングを実行する能力である。開示された実施形態の少なくとも1つによって提供される別の特定の利点は、ハイパーバイザに制御されるコンピューティング環境内でリアルタイムオペレーティングシステムを使用する能力である。本開示の他の態様、利点、および機能は、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲の節を含む出願全体を検討した後に明白になるであろう。
ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するように動作可能なシステムの例示的実施形態を示すブロック図である。 ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するように動作可能なシステムの別の例示的実施形態を示すブロック図である。 図1のハイパーバイザの動作の方法の例示的実施形態を示す流れ図である。 図1のゲストオペレーティングシステムの1つの動作の方法の例示的実施形態を示す流れ図である。 ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザの使用をサポートするように動作可能な構成要素を含むワイヤレスデバイスを示すブロック図である。 優先度継承を実行するように動作可能なシステムの例示的実施形態を示すブロック図である。
図1は、ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するように動作可能なシステム100の例示的実施形態を示すブロック図である。システム100は、1つまたは複数のプロセッサ110など、1つまたは複数のハードウェアリソースを含む。システムは、また、プロセッサ110によって実行可能なハイパーバイザ120を含む。ハイパーバイザ120は、説明的な第1のゲストオペレーティングシステム130および説明的な第2のゲストオペレーティングシステム140など、1つまたは複数のゲストオペレーティングシステムによって1つまたは複数のプロセッサ110へのアクセスを調停することができる。本明細書にさらに記述するように、ゲストオペレーティングシステム130、140の1つまたは複数は、リアルタイムオペレーティングシステム(RTOS)の場合がある。
ハイパーバイザ120は、様々論理モジュールおよび/または機能モジュールを含むことができる。特定の実施形態では、そのような各モジュールは、プロセッサ110によって実行可能なソフトウェア命令を使用して実装される。あるいは、ハイパーバイザ120の選択された機能は、コントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)デバイス、または他の何らかのデバイスなど、ハードウェアデバイスを使用して実装され得る。図1の実施形態では、ハイパーバイザ120は、優先度認識スケジューラ121、仮想プロセッサ作成/削除モジュール122、および仮想プロセッサブロッキング/ブロッキング解除モジュール123を含む。しかしながら、モジュール121〜123は説明のみを目的としていることに注意するべきである。代替の実施形態では、ハイパーバイザ120に関して記述された機能は、より多くのモジュールまたはより少ないモジュールを使用して実行され得る。
仮想プロセッサ作成/削除モジュール122は、ゲストオペレーティングシステム130、140のいずれかから要求を受信するように構成され得る。たとえば、要求は、アプリケーションプログラミングインターフェース(API)または共有されたメモリ区域など、オペレーティングシステムとハイパーバイザの通信メカニズムを介して受信され得る。要求に応じて、仮想プロセッサ作成/削除モジュール122は、仮想プロセッサを作成することができる。図示するために、第1のゲストオペレーティングシステム130は、4つのタスク151、152、153、および154に関連付けられている。タスク151、152、153、および154の各々は、対応する仮想プロセッサ131、132、133、および134にそれぞれ関連付けられている。同様に、第2のゲストオペレーティングシステム140は、4つのタスク161、162、163、および164に関連付けられている。タスク161、162、163、および164の各々は、対応する仮想プロセッサ141、142、143、および144にそれぞれ関連付けられている。タスク151〜154および161〜164は、ユーザモード(たとえばアプリケーションレベル)またはゲストモード(たとえばゲストオペレーティングシステムレベル)のルーチンまたはサブルーチンに関連付けられ得る。タスク151〜154および161〜164は、メモリに格納され、プロセッサ110によって実行可能な命令(たとえばプログラムコード)の組に対応する場合がある。たとえば、特定のアプリケーションは、「主な」タスクおよび「主なタスク」によって生成された1つまたは複数の追加のタスクに関連付けられ得る(たとえば、1つまたは複数のグラフィカルユーザインターフェース(GUI)タスク、1つまたは複数のデータ処理タスクなど)。
図1のシステム100では、対応するタスクが対応するゲストオペレーティングシステムによって維持されている限り、仮想プロセッサは維持され得る。タスクが終わると、仮想プロセッサ作成/削除モジュール122は、タスクに対する仮想プロセッサを削除し、および/または割り当てを解除することができる。仮想プロセッサ作成/削除モジュール122は、プロセッサ110で終了または復帰のコマンドに基づいて、またはゲストオペレーティングシステムからの通知に応じて、タスクが終わったことを検出することができる。特定の実施形態では、仮想プロセッサを作成するステップは、ハードウェアおよび/またはソフトウェアリソースを仮想プロセッサに割り当てるステップを含むことができ、仮想プロセッサを削除するステップは、仮想プロセッサのハードウェアおよび/またはソフトウェアリソースの割り当てを解除するステップを含むことができる。
ハイパーバイザ120の観点から、仮想プロセッサ131〜134および141〜144の各々は、スケジューリング可能なエンティティであることに注意されたい。反対に、ゲストオペレーティングシステム130および140の観点から、仮想プロセッサ131〜134および141〜144の各々は、ハードウェアリソースの抽象的概念の場合がある。タスク151〜154および161〜164の各々は、ゲストオペレーティングシステム130および140、またはゲストオペレーティングシステム130および140で実行されているアプリケーションによって始動された1つまたは複数のスレッドまたはソフトウェアルーチン/サブルーチンに対応することができる。
優先度認識スケジューラ121は、実行するために仮想プロセッサ131〜134および141〜144をスケジューリングするように構成され得る。スケジューラ121は、個々の仮想プロセッサの優先度情報へのアクセスを持っているので、スケジューラ121は「優先度を認識する(priority aware)」と考えられ得る。たとえば、図1の実施形態では、各仮想プロセッサは、1から3の仮想プロセッサ優先度を持つ。優先度1は、最高の優先度の場合があり、優先度3は最低の優先度の場合がある。代替実施形態では、より多いまたはより少ない優先度の呼び方が使用され得る。仮想プロセッサの優先度は、仮想プロセッサに対応するタスクのタスク優先度に等しい、反映する、またはそうでなければ基づいている場合がある。たとえば、仮想プロセッサ134は、対応するタスク154のタスク優先度に等しいタスク優先度2を持つ。タスク154のタスク優先度は、本明細書にさらに記述するように、タスク作成の間にゲストオペレーティングシステム130によって割り当てられ得る。したがって、優先度認識スケジューラ121は、仮想プロセッサ優先度情報へのアクセスを持つおかげでタスク優先度情報へのアクセスを持つ。優先度情報は、優先度認識スケジューラ121が直接的(たとえば、オペレーティングシステムメモリ、共有されたメモリ、またはレジスタに特定のデータ構造を読み込むことによって)または間接的(たとえばAPIを介して)にアクセス可能な場合がある。
特定の実施形態では、優先度認識スケジューラ121は、第1のタスクに対応する第1の仮想プロセッサの第1の優先度と、第2のタスクに対応する第2の仮想プロセッサの第2の優先度との比較に基づいて、第1のタスクまたは第2のタスクをスケジューリングするべきかどうかを決定することができる。さらに、優先度認識スケジューラ121は、異なるオペレーティングシステムのタスクに対応する仮想プロセッサの優先度間でそのような比較を行うことができる。したがって、別のゲストオペレーティングシステムのすべてのタスクを通じて、特定のゲストオペレーティングシステム(たとえばリアルタイムオペレーティングシステム(RTOS))のすべてのタスクに自動的に優先度を付ける代わりに、優先度認識スケジューラ121は、タスクに特有の優先度付けを実行することができ、これにより、システム100の全体的な遅延(たとえば、タスク作成と実行との間の平均時間、タスク実行の開始と完了との間の平均時間などとして測定)を低減することができる。RTOSは、短い低い遅延(たとえば、ミッションクリティカル)のタスクに最高の使用可能な優先度を割り当てることができるため、そのようなタスクは、優先度認識スケジューラ121によって優先度が付けられるが、より重要度が低いRTOSタスクに、より低い優先度を割り当てることができるため、他のゲストオペレーティングシステムの重要なタスクは、より重要度が低いRTOSタスクがスケジューリングされるのを待つ必要はない。
図1の実施形態では、両方のゲストオペレーティングシステムは、「1」から「3」のタスク優先度をサポートする。しかしながら、これらの優先度は説明のみを目的としている。代替実施形態では、ゲストオペレーティングシステムは、重複しない、または部分的に重複する優先度の組をサポートすることができる。たとえば、第1のゲストオペレーティングシステム130は、タスク優先度「1」〜「3」をサポートするリアルタイムオペレーティングシステムの場合があり、第2のゲストオペレーティングシステム140は、タスク優先度「2」〜「4」をサポートする非リアルタイムオペレーティングシステムの場合がある。したがって、リアルタイムオペレーティングシステム(およびそのタスク)は、非リアルタイムオペレーティングシステム(およびそのタスク)で利用不可能な少なくとも1つの高められたタスク優先度レベル(たとえばタスク優先度「1」)へのアクセスを持つことができる。
ハイパーバイザ120は、また、仮想プロセッサブロッキング/ブロッキング解除モジュール123を含むことができる。仮想プロセッサブロッキング/ブロッキング解除モジュール123は、仮想プロセッサ131〜134および141〜144をブロッキングおよびブロッキング解除するように構成され得る。システム100においてタスクと仮想プロセッサとの間に1対1のマッピングがあるので、「シン」ゲストオペレーティングシステム130および140は、ゲストオペレーティングシステム130および140内でタスクのブロッキングおよびブロッキング解除ロジックを実装する代わりに、仮想プロセッサのブロッキングおよびブロッキング解除のためにハイパーバイザ120に依存する場合があることが理解されるであろう。この手法により、ゲストオペレーティングシステム130および140の設計および実装が簡素化される。ブロッキング/ブロッキング解除の状況の実例は、限定しないが、同期オブジェクト(たとえばミューテックスまたはセマフォー)が使用可能になるまで、データが使用可能になるか、もしくは(たとえば別のタスクによって)特定の処理動作が完了するまで、または他の何らかのブロッキング解除条件が満たされるまで、タスクがスリープ状態にある場合を含むことができる。
ゲストオペレーティングシステム130および140はそれぞれ、スケジューリングロジックをほとんど含まない、または含まない「シン」オペレーティングシステムの場合がある。代わりに、ゲストオペレーティングシステム130および140は、機能をスケジューリングするためにハイパーバイザ120に依存する。ゲストオペレーティングシステム130および140は、また、タスクのブロッキングおよびブロッキング解除のためにハイパーバイザ120に依存する場合がある。2つのゲストオペレーティングシステムを図1に示しているが、これは実例を示すことのみを目的としていることに注意されたい。代替実施形態では、より多いまたはより少ないゲストオペレーティングシステムがハイパーバイザ120によってサポートされ得る。さらに、ハイパーバイザ120は、1つまたは複数の「シン」オペレーティングシステムおよびスケジューリングおよびブロッキング/ブロッキング解除ロジックを含む1つまたは複数の従来型オペレーティングシステムを同時にサポートすることができる。たとえば、ハイパーバイザ120は、完全なオペレーティングシステム(たとえば、それ自体のスケジューラを含むオペレーティングシステム)に対してではなく、「シン」オペレーティングシステムに対して優先度認識スケジューリングおよびブロッキング/ブロッキング解除を実行することができる。たとえば、図2は、「シン」オペレーティングシステム130が、単一の仮想プロセッサ241および「ネイティブ」オペレーティングシステムスケジューラ242を含む従来型オペレーティングシステム240と共存する、ハイパーバイザに制御されるコンピューティング環境200を示している。図2の他の構成要素は、図1の対応する構成要素に関して記述するように機能することができる。
動作の間に、ゲストオペレーティングシステム130および140、ならびに/またはゲストオペレーティングシステム130および140で実行されているアプリケーションは、(たとえばアプリケーションによって発行されたタスク作成要求に応じて)タスクを作成することができる。タスク作成要求に応じて、ゲストオペレーティングシステム130および140は、要求されたタスクを実行するために仮想プロセッサを作成することをハイパーバイザ120に要求することができる。たとえば、仮想プロセッサ作成/削除モジュール122は、タスク154に関連付けられる第1のゲストオペレーティングシステム130からの要求に応じて、仮想プロセッサ134を作成することができる。仮想プロセッサ作成/削除モジュール122は、作成された仮想プロセッサ134に優先度「2」を割り当てることができ、タスク154のタスク優先度を反映する。優先度認識スケジューラ121は、仮想プロセッサ134をスケジューリングすることができる。たとえば、実行するために仮想プロセッサをスケジューリングするステップは、ハードウェアプロセッサ110の実行キューに仮想プロセッサを配置するステップを含むことができ、仮想プロセッサなどにプロセッサ110の実行サイクルまたはタイムスライスを割り当てる。仮想プロセッサブロッキング/ブロッキング解除モジュール123は、タスク154をブロッキングおよびブロッキング解除するために第1のゲストオペレーティングシステム130からの要求に応じて、仮想プロセッサ134をブロッキングおよびブロッキング解除することができる。タスク154が完了すると、仮想プロセッサ作成/削除モジュール122は、仮想プロセッサ134を削除することができる。
特定の実施形態では、ゲストオペレーティングシステム130および140の1つまたは複数は、RTOSの場合がある。たとえば、システム100は、ワイヤレス電話に統合することができ、ゲストオペレーティングシステム130または140の1つは、特定の遅延保証を提供するワイヤレス電話のモデムのオペレーティングシステムの場合がある。図示するために、モデムオペレーティングシステムは、リアルタイム期限を守るためにスケジューリング遅延が20マイクロ秒(μs)未満であることを保証することができる。ミリ秒程度の遅延を持つ場合がある従来のハイパーバイザは、オペレーティングシステムの1つがリアルタイムオペレーティングシステムである場合、十分な応答性を提供しない場合がある。しかしながら、本明細書に記述した技術では、図1のハイパーバイザ120は、モデムオペレーティングシステムまたは他のRTOSに受け入れ可能な低減された遅延をサポートすることができる。図1のシステム100は、したがって、ワイヤレス電話および他のワイヤレス通信デバイス(たとえばラップトップまたはタブレットコンピューティングデバイス)で使用され得る。
特定の実施形態では、システム100は、1つまたは複数のマルチスレッドおよび/またはマルチコアのプロセッサを含む電子デバイスに組み込まれ得る。たとえば、システム100は、リアルタイムのマルチスレッドコンピューティングを実装するために使用され得る。マルチスレッドプロセッサは、同時に実行されている複数のハードウェアの実行コンテキストを用いるプロセッサを介して、または単一のハードウェア実行コンテキストを用いる複数のプロセッサ(たとえば、対称型マルチプロセッシング(SMP)クラスタ)として実装され得る。
記述した技術は、様々な電子デバイスにおいて適用可能な場合がある。図示するために、モバイル電子デバイス(たとえばワイヤレス電話)は、典型的には、モデムソフトウェア、モデムファームウェア、および音声処理を含み、その各々は、(たとえば異なる遅延要件により)異なるオペレーティングシステムまたはオペレーティングシステムイメージを利用することができる。図1のシステム100によって、遅延要件を満たしながら、モデムファームウェアおよびモデムソフトウェアは、同じDSPを共有することができる場合がある(たとえば、同じオペレーティングシステムの複数のコピーは、ゲストオペレーティングシステムの場合がある)。特定の実施形態では、ワイヤレス電話は、モデム動作のためのゲストRTOSおよびアプリケーションのための別のオペレーティングシステムを含むことができ(たとえば、Wi-Fi接続にワイヤレス電話を使用するラップトップ型コンピュータをサポートするウェブサーバ)、両方のオペレーティングシステムは、異なるプロセッサの代わりに同じDSPで実行される(たとえば、DSPおよび個別のアプリケーションプロセッサを含むデバイス)。デバイスの複数(またはすべて)のオペレーティングシステムが同じプロセッサまたはプロセッサの組で実行されることを可能にすることで、デバイスに関連付けられた生産/製造コストを削減できることが理解されるであろう。
図1のシステム100は、したがって、タスクごとに1つの仮想プロセッサが割り当てられるので、過度のコンテキスト切り替え(たとえば、異なるスケジューリング可能なエンティティ間の切り替え)のないハイパーバイザに制御されるコンピューティング環境を提供することができる。オペレーティングシステムの各タスクは、ハイパーバイザ120によってスケジューリングされ、プロセッサ110によって実行される別個の仮想プロセッサによって実行され得る。さらに、単一のスケジューリングレイヤを実装することからオーバヘッドが低下するため、遅延を低減することができ、システム100で複数のリアルタイムオペレーティングシステムを使用することが可能になる。図1のシステム100は、オペレーティングシステム設計における思考の枠組みの変化を表す場合がある。従来、オペレーティングシステムは、(すなわち、ハードウェア実装の詳細を考慮して)「ハードウェア上で(on the metal)」実行されるように設計されており、ハイパーバイザは、オペレーティングシステムをサポートするように設計されている。これとは対照的に、図1のシステム100は、オペレーティングシステム/ハイパーバイザの「共同設計」の思考の枠組みを反映しており、ここにおいてオペレーティングシステムおよびハイパーバイザは、特定の機能のために相互に依存するように具体的に実装され、これにより、冗長性を減らし(たとえば複数のスケジューラの代わりに1つのスケジューラ)、遅延を低減することができる。
図3は、ハイパーバイザの動作の特定の方法300を示す流れ図である。例示的な一実施形態では、方法300は、図1〜図2のハイパーバイザ120によって実行され得る。
方法300は、ハイパーバイザで、タスクを実行するために仮想プロセッサを作成するためにゲストオペレーティングシステムから要求を受信するステップを含むことができ、タスクは、302で、ゲストオペレーティングシステムによって割り当てられたタスク優先度を持つ。たとえば、図1において、ハイパーバイザ120は、タスク163を実行するために仮想プロセッサを作成するために、第2のゲストオペレーティングシステム140から要求を受信することができ、タスク163は、第2のゲストオペレーティングシステム140によって割り当てられたタスク優先度「1」を持つ。
方法300は、また、仮想プロセッサを作成するステップを含む場合があり、仮想プロセッサは、304で、タスク優先度に対応する優先度を持つ。たとえば、図1において、ハイパーバイザ120は、タスクを実行するために仮想プロセッサ143を作成することができ、仮想プロセッサ143は、優先度「1」を持ち、これはタスク163のタスク優先度に対応する。
方法300は、306で、実行するために仮想プロセッサをスケジューリングするステップと、308で、ゲストオペレーティングシステムからの要求に基づいて、仮想プロセッサをブロッキングまたはブロッキング解除するステップとをさらに含むことができる。たとえば、図1において、ハイパーバイザ120は、実行するために仮想プロセッサ143をスケジューリングし、第2のゲストオペレーティングシステム140からの要求に基づいて、仮想プロセッサ143をブロッキング/ブロッキング解除することができる。ハイパーバイザは、また、タスク163の完了時に、仮想プロセッサ143を削除し、または割り当てを解除することができる。
図3の方法300では、したがって、ハイパーバイザは、オペレーティングシステムタスクに対応する仮想プロセッサのスケジューリング(たとえば優先度認識スケジューリング)を作成および実行することができる場合がある。たとえば、優先度認識スケジューリングを実行することによって、ハイパーバイザは、リアルタイムオペレーティングシステムがハードウェアリソースを占有したり、非リアルタイムオペレーティングシステムのパフォーマンスに悪い影響を与えたりすることなく、リアルタイムオペレーティングシステムが、遅延要件を満たすことを可能にすることができる。図3の方法300では、また、ハイパーバイザは、ブロッキングおよびブロッキング解除を実行することができる場合がある。スケジューリングおよびブロッキング/ブロッキング解除ロジックを含んでいない「シン」オペレーティングシステムは、スケジューリングおよびブロッキング/ブロッキング解除機能のためにハイパーバイザに依存する場合があり、これにより、コンピューティングシステムの冗長性および遅延を低減することができる。
図3の方法300は、デジタル信号プロセッサ(DSP)、中央制御装置(CPU)などの処理ユニット、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装され得る。たとえば、図3の方法300は、図5に関して記述するように、命令を実行するプロセッサによって実行され得る。
図4は、オペレーティングシステム(たとえば、ハイパーバイザに制御されるコンピューティング環境のゲストオペレーティングシステム)の動作の特定の方法400を示す流れ図である。例示的な一実施形態では、方法400は、図1〜図2の第1のゲストオペレーティングシステム130または図1の第2のゲストオペレーティングシステム140によって実行され得る。
方法400は、402で、ゲストオペレーティングシステムで、タスクを作成するための要求を受信するステップを含むことができる。特定の実施形態では、ゲストオペレーティングシステムは、リアルタイムオペレーティングシステムの場合がある。たとえば、図1において、第1のゲストオペレーティングシステム130は、第1のゲストオペレーティングシステム130で実行されているアプリケーションからタスク(たとえばタスク151)を作成するための要求を受信するリアルタイムオペレーティングシステムの場合がある。
方法400は、また、404で、タスクを作成するための要求に応じて、要求されたタスクを実行するために仮想プロセッサを作成することをハイパーバイザに要求するステップを含むことができる。たとえば、図1において、第1のゲストオペレーティングシステム130は、要求されたタスクを実行するために仮想プロセッサ(たとえば仮想プロセッサ131)を作成することをハイパーバイザ120に要求することができる。
方法400は、406で、タスク優先度をタスクに割り当てるステップをさらに含むことができ、仮想プロセッサの優先度は、タスク優先度に対応し、ハイパーバイザがアクセス可能である。たとえば、図1において、第1のゲストオペレーティングシステムは、タスク優先度「1」をタスク151に割り当てることができ、仮想プロセッサ131は、タスク151のタスク優先度に対応する優先度「1」を持つことができる。
図4の方法400では、したがって、オペレーティングシステムは、オペレーティングシステムタスクに対応する仮想プロセッサの優先度認識ハイパーバイザスケジューリングを使用することができる場合がある。スケジューリングおよびブロッキング/ブロッキング解除ロジックを含んでいない「シン」オペレーティングシステムは、スケジューリングおよびブロッキング/ブロッキング解除機能のためにハイパーバイザに依存する場合があり、これによって、コンピューティングシステムの冗長性および遅延を低減することができる。
図4の方法400は、デジタル信号プロセッサ(DSP)、中央制御装置(CPU)などの処理ユニット、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装され得る。たとえば、図4の方法400は、図5に関して記述するように、命令を実行するプロセッサによって実行され得る。
図5を参照すると、電子デバイス500のブロック図が示されている。電子デバイス500は、メモリ532に結合された、デジタル信号プロセッサ(DSP)などのプロセッサ510を含む。特定の実施形態では、電子デバイス500、またはその構成要素は、セットトップボックス、音楽プレーヤー、ビデオプレーヤー、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置データユニット、コンピューティングデバイス、またはそれらの任意の組合せに含まれ得る。
図5は、また、プロセッサ510およびディスプレイ528に結合されているディスプレイコントローラ526を示している。符号器/復号器(CODEC)534は、また、プロセッサ510に結合され得る。スピーカ536およびマイクロフォン538は、CODEC534に結合され得る。図5は、また、ワイヤレスコントローラ540は、(たとえば無線周波数(RF)インターフェースを介して)プロセッサ510およびアンテナ542に結合され得ることを示している。
メモリ532は、実行可能命令556を含む有形の非一時的コンピュータ可読またはプロセッサ可読の記憶媒体の場合がある。命令556は、図3〜図4の方法300、400を含む、様々な機能および方法を実行するために、プロセッサ510など、プロセッサによって実行され得る。メモリは、また、ハイパーバイザ570(たとえば図1〜図2のハイパーバイザ120)、第1のゲストオペレーティングシステム572(たとえば図1〜図2の第1のゲストオペレーティングシステム130)、第2のゲストオペレーティングシステム574(たとえば図1の第2のゲストオペレーティングシステム140)に対応する命令を格納することができる。追加のオペレーティングシステム(たとえば図2の第3のゲストオペレーティングシステム240)も含まれ得る。
特定の実施形態では、プロセッサ510、ディスプレイコントローラ526、メモリ532、CODEC534、およびワイヤレスコントローラ540が、システムインパッケージまたはシステムオンチップのデバイス522に含まれている。特定の実施形態では、入力デバイス530および電源544は、システムオンチップデバイス522に結合される。さらに、特定の実施形態では、図5に示すように、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、アンテナ542、および電源544は、システムオンチップデバイス522の外部にある。しかしながら、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、アンテナ542、および電源544の各々は、インターフェースまたはコントローラなど、システムオンチップデバイス522の構成要素に結合され得る。
記述した技術は、スケジューリングおよびブロッキング/ブロッキング解除機能のためにハイパーバイザに依存する1つまたは複数の「シン」リアルタイムオペレーティングシステムを含む、複数のゲストオペレーティングシステムの使用を可能にする。特定の実施形態では、ゲストオペレーティングシステム(およびそのタスク)は、相互に通信し、同期プリミティブを共有することができる。たとえば、1つのゲストオペレーティングシステムは、ワイヤレス通信デバイス(たとえば携帯電話)のモデムに関連付けられ得、別のゲストオペレーティングシステムは、音声処理(たとえば音声の符号化/復号)に関連付けられ得る。
ゲストオペレーティングシステムが通信できる実施形態では、セキュリティ対策が適所に導入され得る。セキュリティ対策は、サービスの品質(QoS)保証(たとえばリアルタイムオペレーティングシステムの遅延要件)が維持されるように設計され得る。
通信メカニズム(たとえば同期プリミティブ)は、(たとえば、図1の仮想プロセッサブロッキング/ブロッキング解除モジュール123によって)タスク/仮想プロセッサをブロッキング/ブロッキング解除するために使用され得る。特定の実施形態では、メモリの単一ビットまたは複数ビットのデータ値は、同期プリミティブに使用され得る。1つまたは複数のルールにより、同期プリミティブの使用を管理することができる。たとえば、第1のルールは、同期プリミティブがロック解除されている(たとえば、ゼロに設定されている)場合、同期プリミティブは、スレッド(たとえば、ゲストオペレーティングシステムまたは対応する仮想プロセッサのタスク)によってロックされ得る(たとえばオンに設定される)ことを示す場合がある。同期プリミティブがスレッドによってロックされた後(同期プリミティブを「保持する」スレッドとも呼ぶ)、同期プリミティブによって保護されているデータは、スレッドによって書き込まれ得る。第2のルールは、同期プリミティブがロックされている場合、同期プリミティブがロック解除されるまで、同期プリミティブを取得しようと努めるスレッドがブロッキングするべきであることを示す場合がある。代替実施形態では、同期プリミティブは、2つを超える状態を表す複数ビット値の場合がある。たとえば、ロック解除された状態は、第1の値によって表され得、待機中スレッドなしでロックされた状態は、第2の値によって表され得、少なくとも1つの待機中スレッドがありロックされている状態は、第3の値によって表され得る。特定の実施形態では、同期プリミティブは、複数のゲストオペレーティングシステム間で共有されるメモリのユーザモードアドレスに格納され得る(たとえば、同期プリミティブは、ユーザ空間に格納され得る)。
複数のゲストオペレーティングシステムとともにハイパーバイザに制御される環境において、1つのゲストオペレーティングシステムのタスクは、別のゲストオペレーティングシステムのタスクに依存している場合があることが理解されるであろう。たとえば、第2のゲストオペレーティングシステムの第2のタスクが同期プリミティブを保持するので、第1のゲストオペレーティングシステムの第1のタスクがブロッキングする場合、第2のゲストオペレーティングシステムの第2のタスクが同期プリミティブを解放するまで、第1のゲストオペレーティングシステムの第1のタスクは続行することができない場合がある。ブロッキングされた第1のタスクは、同期プリミティブに対して読み取り専用アクセスを持っている場合があるが、第2のタスクは、同期プリミティブに対して読み取り書き込みアクセスを持っている場合がある。
特定の実施形態では、ゲストオペレーティングシステムで実行されているタスクで利用可能なブロッキング機能呼び出しは、同期プリミティブへのポインタおよび同期プリミティブの期待される値という2つの引き数を含むことができる。ハイパーバイザは、ポインタによって示されたアドレスで同期プリミティブの値が期待される値に等しいかどうかをチェックすることができる。値が等しい場合、ブロッキングは成功である。値が等しくない場合、ハイパーバイザはブロッキングなしで戻る。ウェイクアップ機能は、同期プリミティブへのポインタおよび同期プリミティブの値に依存してウェイクアップされ得るスレッドの最大数という2つの引き数を含むことができる。
特定の実施形態では、ブロッキングのためにタイムアウトが実装され得る。たとえば、同期プリミティブでブロッキングするタスクは、(たとえばタイムアウト期間の期限切れに応じて)特定の時間内に同期プリミティブが解放されない場合、自動的にウェイクアップできる。
特定の実施形態では、優先度のグローバルな組は、ハイパーバイザに制御されるコンピューティング環境でオペレーティングシステムに使用され得る。場合によっては、リアルタイムオペレーティングシステムは、非リアルタイムオペレーティングシステムがアクセスを持たない、優先度のグローバルな組の1つまたは複数の高められた優先度へのアクセスを持つ。異なるゲストオペレーティングシステムから異なるタスクが優先度のグローバルな組の異なる優先度を持つことができる場合、優先度の反転が発生する場合がある。たとえば、異なる優先度のスレッドが同期プリミティブを取り合う場合、優先度の反転が発生する場合がある。優先度の反転は、運用の非能率および潜在的な停滞に行き着く場合がある。たとえば、(たとえばリアルタイムオペレーティングシステムの)高い優先度のスレッドは、(たとえば非リアルタイムオペレーティングシステムの)低い優先度のスレッドによって使用されている同期プリミティブを待つことができる。低い優先度のスレッド(さらには待機している高い優先度のスレッド)は、中間的な優先度のスレッドによって専有され得る。専有のために、低い優先度のスレッドは、同期プリミティブを解放するために実行を完了できない場合があるため、高い優先度のスレッドは、同期プリミティブを取得し、実行を継続することができる。中間的な優先度のスレッドは、高い優先度のスレッドを効率よく専有しているので、中間的な優先度のスレッドおよび高い優先度のスレッドの優先度は、「反転された」と言うことができる。
優先度の継承は、優先度の反転を回避するために使用され得る技術である。優先度の継承では、高い優先度のスレッド(たとえば優先度=1)が低い優先度のスレッド(たとえば優先度=3)でブロッキングする場合、低い優先度のスレッドは、ブロッキングしている高い優先度のスレッドの優先度を「継承」する(たとえば、低い優先度のスレッドは優先度=1を継承する)。この継承により、中間的な優先度のスレッド(たとえば優先度=2)が優先度の反転を引き起こさないようになる。複数のゲストオペレーティングシステムを含むコンピューティング環境において、優先度の反転は、単一のゲストオペレーティングシステムのタスクに関して、または複数のゲストオペレーティングシステムのタスクに関して発生する場合がある。
図6は、優先度の反転を実行するように動作可能なシステム600の実施形態を示している。システム600は、ハイパーバイザ120および1つまたは複数のマルチスレッドプロセッサ660(たとえば図1のプロセッサ110)を含む。マルチスレッドプロセッサは、同時に実行されている複数のハードウェア実行コンテキストを用いるプロセッサを介して、または単一のハードウェア実行コンテキストを用いる複数のプロセッサ(たとえば、対称型マルチプロセッシング(SMP)クラスタ)として実装され得る。特定の実施形態では、ハイパーバイザ120は、優先度の反転回避方式を実装することができる。この方式によると、各ゲストオペレーティングシステムは、ゲストオペレーティングシステムがハイパーバイザ120によってロードされたときに確立される最大限に許容される優先度を持つ。各ゲストオペレーティングシステムは、その最大限に許容される優先度にそれ自体のタスク/スレッド(さらには仮想プロセッサ)を高めることができる。しかしながら、ゲストオペレーティングシステムは、その最大限に許容される優先度を高めることを禁じられている。代わりに、優先度継承システムを介して、より高い優先度のゲストオペレーティングシステムだけが、別のより低い優先度のゲストオペレーティングシステムのより低い優先度のタスクを高めることができる。これにより、高い優先度のタスクおよびゲストオペレーティングシステム環境は、同期プリミティブが使用されるときにタスクの優先度が調整されるべきかどうかを決定することができる。
特定の実施形態では、ハイパーバイザ120は、「レイジー(lazy)」な優先度継承を実装することができる。ハイパーバイザ120は、タスク/仮想プロセッサの優先度(「Prio」)、一時的な優先度(「Tprio」)、および状態(たとえば「実行中」、「ブロック」、「準備完了」など)を示す制御ブロック620を維持することができる。第1のタスクが第2の低い優先度のタスクによって実行がブロックされたと優先度認識スケジューラ121が決定した場合、第2のタスクは、第1のタスクの優先度に等しい一時的な優先度を継承することができる。一時的な優先度は、データ構造をスケジューリングするコンテンツを修正せずに設定され得る。
たとえば、図示するように、データ構造のスケジューリングは、準備リスト630および実行リスト640を含むことができる。準備リスト630は、実行の準備ができている(たとえば、同期プリミティブでブロックされていない)タスク(または対応する仮想プロセッサ)を示す場合がある。実行リスト640は、実行することがスケジューリングされている、かつ/または実行されているタスク(または対応する仮想プロセッサ)を示すことができる。示した実施形態では、準備リスト630および実行リスト640は、システム600で使用可能な4つの優先度の各々に対して1つの「スロット」を含む。しかしながら、これは説明のみを目的としている。代替実施形態では、準備リスト630および実行リスト640は、異なるように整理され得る。
優先度の反転が発生しない通常動作の間に、「レイジー」な優先度の反転は、コストが低い場合がある。その理由は、(図6で「Tprio」と示した)一時的な優先度のみが、ハイパーバイザ120によって設定され、スケジューリングデータは影響を受けないためである。しかしながら、第2のタスクが別のタスクによって専有される場合、第2のタスク(または対応する仮想プロセッサ)は、一時的な優先度を使用して、実行のために再スケジュールされ得る。第2のタスクは、より高い一時的な優先度で実行することができ、システムは、第1のタスクを実行することに向けて前進することができる。
記述した実施形態に関連して、処理するための手段を含む装置が開示される。たとえば、処理するための手段は、図1〜図2の1つもしくは複数のプロセッサ110もしくは図5のプロセッサ510などのハードウェアプロセッサ、データを処理するための1つもしくは複数の他のデバイスもしくは回路、またはそれらの任意の組合せを含むことができる。装置は、また、処理のための手段によって実行可能なスケジューリングするための手段を含む。スケジューリングするための手段は、処理するための手段によって実行するために仮想プロセッサをスケジューリングするように構成され、仮想プロセッサの各々は、スケジューリングするための手段にアクセス可能であり、対応するタスクのタスク優先度に対応する優先度を持ち、タスク優先度は、第1のゲストオペレーティングシステムによって割り当てられる。たとえば、スケジューリングするための手段は、図1〜図2の優先度認識スケジューラ121、図5のハイパーバイザ570、実行するために仮想プロセッサをスケジューリングするための1つまたは複数の他のデバイス、回路、モジュール、もしくは命令、またはそれらの任意の組合せの場合がある。
特定の実施形態では、装置は、プロセッサおよびゲストオペレーティングシステムを含む。ゲストオペレーティングシステムは、タスクを作成するための要求を受信することに応じて、タスクを実行するために仮想プロセッサを作成することをハイパーバイザに要求するための手段を含む。仮想プロセッサは、プロセッサでスケジューリングされ得る。たとえば、要求するための手段は、図1〜図2のゲストオペレーティングシステム130の構成要素(たとえばAPIまたは共有されたメモリの区域などオペレーティングシステムとハイパーバイザの通信メカニズム)、図1のゲストオペレーティングシステム140の構成要素、仮想プロセッサを作成することをハイパーバイザに要求するための1つまたは複数の他のデバイス、回路、モジュール、もしくは命令、またはそれらの任意の組合せの場合がある。
本明細書に開示した実施形態に関して記述した論理ブロック、構成、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、または両方の組合せとして実装され得ることは当業者には自明であろう。様々な実例となる構成要素、ブロック、構成、モジュール、回路、およびステップを、それらの機能の点から一般的に記述した。そのような機能をハードウェアとして実装するかプロセッサ実行可能命令として実装するかは、全体的なシステムに課された特定の用途および設計制約に依存している。熟練者であれば、特定の各用途に対して様々な方法で記述した機能を実装することができるが、そのような実装の決定は、本開示の範囲からの逸脱するものとして解釈されるべきでない。マルチスレッドプロセッサは、同時に実行されている複数のハードウェアの実行コンテキストを用いるプロセッサを介して、または単一のハードウェア実行コンテキストを用いる複数のプロセッサ(たとえば、対称型マルチプロセッシング(SMP)クラスタ)として実装され得る。
本明細書に開示した実施形態に関して記述した方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、または2つの組合せで直接的に具体化することができる。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読み取り専用メモリ(ROM)、プログラム可能読み取り専用メモリ(PROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスクを使った読み取り専用メモリ(CD-ROM)、または当技術分野で既知の非一時的な記憶媒体の他の形態に存在することができる。代表的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、かつ情報を書き込めるようにプロセッサに結合される。代替案では、記憶媒体は、プロセッサと一体型でもよい。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)に存在することができる。ASICは、コンピューティングデバイスまたはユーザ端末に存在することができる。代替案では、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末に個別の構成要素として存在することができる。
開示した実施形態の前述の説明は、当業者が開示された実施形態を構成または使用できるように提供するものである。これらの実施形態に対する様々な修正は、当業者には容易に明白になるであろう。また、本明細書に定義した原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は、本明細書に示した実施形態に限定することを意図するものではなく、以下の請求項によって規定されるような原理および新規な機能に一致する可能な限り広い範囲を与えられるものである。
100 システム
110 プロセッサ
110 ハードウェアリソース
120 ハイパーバイザ
121 優先度認識スケジューラ
122 仮想プロセッサ作成/削除モジュール
123 仮想プロセッサブロッキング/ブロッキング解除モジュール
130 ゲストオペレーティングシステム
130 第1のゲストOS
131 仮想プロセッサ
132 仮想プロセッサ
133 仮想プロセッサ
134 仮想プロセッサ
140 ゲストオペレーティングシステム
140 第2のゲストOS
141 仮想プロセッサ
142 仮想プロセッサ
143 仮想プロセッサ
144 仮想プロセッサ
151 タスク
152 タスク
153 タスク
154 タスク
161 タスク
162 タスク
163 タスク
164 タスク
200 コンピューティング環境
240 従来型オペレーティングシステム
240 第3のゲストOS
241 仮想プロセッサ
242 「ネイティブ」オペレーティングシステムスケジューラ
242 スケジューラ
500 電子デバイス
510 プロセッサ
522 システムオンチップデバイス
526 ディスプレイコントローラ
528 ディスプレイ
530 入力デバイス
532 メモリ
534 符号器/復号器(CODEC)
536 スピーカ
538 マイクロフォン
540 ワイヤレスコントローラ
542 アンテナ
544 電源
556 実行可能命令
556 命令
570 ハイパーバイザ
572 第1のゲストオペレーティングシステム
572 第1のゲストOS
574 第2のゲストオペレーティングシステム
574 第2のゲストOS
600 システム
620 制御ブロック
620 タスク/仮想プロセッサ制御ブロック
640 実行リスト
630 準備リスト
660 マルチスレッドプロセッサ

Claims (15)

  1. 処理するための手段と、
    前記処理するための手段により実行可能なスケジューリングするための手段と、
    を備え、
    前記スケジューリングするための手段は、前記処理するための手段による実行のために仮想プロセッサをスケジュールするように構成され、
    前記仮想プロセッサの各々は、
    優先度を有し、
    タスクに対応し、前記タスクは少なくとも第1のゲストオペレーティングシステムおよび第2のゲストオペレーティングシステムのうち1つにより前記タスクに割当てられたタスク優先度を有し、
    前記仮想プロセッサの前記優先度は前記スケジューリングするための手段にアクセス可能であり前記タスク優先度に対応し、
    前記スケジューリングするための手段は、システムリソースをそれぞれ前記第1の仮想プロセッサおよび第2の仮想プロセッサに割り当てることによって、前記第1のゲストオペレーティングシステムに対する少なくとも第1の仮想プロセッサおよび第2の仮想プロセッサを生成するように構成される、
    装置。
  2. 前記スケジューリングするための手段はハイパーバイザに統合され、前記第1の仮想プロセッサおよび第2の仮想プロセッサは前記第1のゲストオペレーティングシステムの第1のタスクおよび第2のタスクに対応し、前記システムリソースはハードウェアリソースおよびソフトウェアリソースのうち1つまたは複数を含む、請求項1に記載の装置。
  3. 前記処理するための手段はプロセッサを備え、
    前記スケジューリングするための手段はハイパーバイザを備える、
    請求項1に記載の装置。
  4. 前記第1の仮想プロセッサおよび第2の仮想プロセッサはそれぞれ第1の優先度および第2の優先度を有し、前記第1の仮想プロセッサおよび第2の仮想プロセッサはそれぞれ前記第1のゲストオペレーティングシステムの第1のタスクおよび第2のタスクに対応し、前記前記第1のゲストオペレーティングシステムの第1のタスクおよび第2のタスクはそれぞれ第1の優先度および第2の優先度を有し、前記ハイパーバイザは、前記第1のタスクに対応する前記第1の仮想プロセッサの前記第1の優先度の前記第3のタスクに対応する第3の仮想プロセッサの第3の優先度との比較に少なくとも部分的に基づいて、前記第1のゲストオペレーティングシステムの前記第1のタスクまたは前記第2のゲストオペレーティングシステムの第3のタスクをスケジュールするか否かを判定するように構成され、
    前記第1のゲストオペレーティングシステムおよび前記第2のゲストオペレーティングシステムのうち少なくとも1つはリアルタイムオペレーティングシステムであり、
    前記リアルタイムオペレーティングシステムは非リアルタイムオペレーティング・システムに利用不能な少なくとも1つの上昇されたタスク優先度レベルに対するアクセスを有するか、または
    前記ハイパーバイザは、前記第1のゲストオペレーティングシステムの第1のタスクからの要求に基づいて前記第1の仮想プロセッサをブロックまたはブロック解除するように構成される、
    請求項3に記載の装置。
  5. 前記第1のゲストオペレーティングシステムの第1のタスクおよび前記第2のゲストオペレーティングシステムの第2のタスクはそれぞれ、前記第1のゲストオペレーティングシステムと前記第2のゲストオペレーティングシステムに共通な同期プリミティブにアクセスするように構成された、請求項1に記載の装置。
  6. 前記第1のゲストオペレーティングシステムのタスクの優先度および前記第2のゲストオペレーティングシステムのタスクの優先度は優先度の共通の組から選択される、請求項1に記載の装置。
  7. 前記ハイパーバイザは、前記第1のゲストオペレーティングシステムおよび前記第2のゲストオペレーティングシステムのうち他方のタスクがブロックされたときに、前記第1のゲストオペレーティングシステムおよび前記第2のゲストオペレーティングシステムのうち1つのタスクの優先度を一時的に上昇させるように構成される、請求項1に記載の装置。
  8. 処理するための手段による実行のために仮想プロセッサをスケジューリングするための手段でスケジュールするステップ、
    を含み、
    前記仮想プロセッサの各々は、
    優先度を有し、
    タスクに対応し、前記タスクは少なくとも第1のゲストオペレーティングシステムおよび第2のゲストオペレーティングシステムのうち1つにより前記タスクに割当てられたタスク優先度を有し、
    前記仮想プロセッサの前記優先度は前記スケジューリングするための手段にアクセス可能であり前記タスク優先度に対応し、
    前記スケジューリングするための手段は、システムリソースをそれぞれ前記第1の仮想プロセッサおよび第2の仮想プロセッサに割り当てることによって、前記第1のゲストオペレーティングシステムに対する少なくとも第1の仮想プロセッサおよび第2の仮想プロセッサを生成するように構成される、
    方法。
  9. 前記スケジューリングするための手段はハイパーバイザに統合され、前記第1の仮想プロセッサおよび第2の仮想プロセッサは前記第1のゲストオペレーティングシステムの第1のタスクおよび第2のタスクに対応し、前記システムリソースはハードウェアリソースおよびソフトウェアリソースのうち1つまたは複数を含む、請求項8に記載の方法。
  10. 前記処理するための手段はプロセッサを備え、
    前記スケジューリングするための手段はハイパーバイザを備える
    請求項8に記載の方法。
  11. 前記第1の仮想プロセッサおよび第2の仮想プロセッサはそれぞれ第1の優先度および第2の優先度を有し、前記第1の仮想プロセッサおよび第2の仮想プロセッサはそれぞれ前記第1のゲストオペレーティングシステムの第1のタスクおよび第2のタスクに対応し、前記前記第1のゲストオペレーティングシステムの第1のタスクおよび第2のタスクはそれぞれ第1の優先度および第2の優先度を有し、前記ハイパーバイザは、前記第1のタスクに対応する前記第1の仮想プロセッサの前記第1の優先度の前記第3のタスクに対応する第3の仮想プロセッサの第3の優先度との比較に少なくとも部分的に基づいて、前記第1のゲストオペレーティングシステムの前記第1のタスクまたは前記第2のゲストオペレーティングシステムの第3のタスクをスケジュールするか否かを判定するように構成され、
    前記第1のゲストオペレーティングシステムおよび前記第2のゲストオペレーティングシステムのうち少なくとも1つはリアルタイムオペレーティングシステムであり、
    前記リアルタイムオペレーティングシステムは非リアルタイムオペレーティング・システムに利用不能な少なくとも1つの上昇されたタスク優先度レベルに対するアクセスを有するか、または
    前記ハイパーバイザは、前記第1のゲストオペレーティングシステムの第1のタスクからの要求に基づいて前記第1の仮想プロセッサをブロックまたはブロック解除するように構成される、
    請求項10に記載の方法。
  12. 前記第1のゲストオペレーティングシステムの第1のタスクおよび前記第2のゲストオペレーティングシステムの第2のタスクはそれぞれ、前記第1のゲストオペレーティングシステムと前記第2のゲストオペレーティングシステムに共通な同期プリミティブにアクセスするように構成された、請求項10に記載の方法。
  13. 前記第1のゲストオペレーティングシステムのタスクの優先度および前記第2のゲストオペレーティングシステムのタスクの優先度は優先度の共通の組から選択される、請求項10に記載の方法。
  14. 前記ハイパーバイザは、前記第1のゲストオペレーティングシステムおよび前記第2のゲストオペレーティングシステムのうち他方のタスクがブロックされたときに、前記第1のゲストオペレーティングシステムおよび前記第2のゲストオペレーティングシステムのうち1つのタスクの優先度を一時的に上昇させるように構成される、請求項10に記載の方法。
  15. コンピュータにより実行されたときに、請求項8乃至14の何れか1項に記載の方法を前記コンピュータに実行させる命令を備えた、コンピュータ可読記憶媒体。
JP2017160075A 2013-03-14 2017-08-23 ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法 Pending JP2017204307A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/828,183 US9396012B2 (en) 2013-03-14 2013-03-14 Systems and methods of using a hypervisor with guest operating systems and virtual processors
US13/828,183 2013-03-14

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016501323A Division JP6199477B2 (ja) 2013-03-14 2014-03-11 ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法

Publications (1)

Publication Number Publication Date
JP2017204307A true JP2017204307A (ja) 2017-11-16

Family

ID=50513451

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016501323A Expired - Fee Related JP6199477B2 (ja) 2013-03-14 2014-03-11 ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
JP2017160075A Pending JP2017204307A (ja) 2013-03-14 2017-08-23 ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016501323A Expired - Fee Related JP6199477B2 (ja) 2013-03-14 2014-03-11 ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法

Country Status (7)

Country Link
US (2) US9396012B2 (ja)
EP (1) EP2972851A1 (ja)
JP (2) JP6199477B2 (ja)
KR (1) KR20150132218A (ja)
CN (1) CN105051690B (ja)
TW (1) TWI552076B (ja)
WO (1) WO2014159444A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
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
US9262192B2 (en) * 2013-12-16 2016-02-16 Vmware, Inc. Virtual machine data store queue allocation
US10248463B2 (en) * 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
US9792139B2 (en) 2015-02-25 2017-10-17 Red Hat Israel, Ltd. Service driven virtual machine scheduling
US9367345B1 (en) * 2015-02-26 2016-06-14 Red Hat Israel, Ltd. Power efficient cross-VCPU notification by VM function
US9830187B1 (en) * 2015-06-05 2017-11-28 Apple Inc. Scheduler and CPU performance controller cooperation
KR20160144688A (ko) * 2015-06-09 2016-12-19 한국전자통신연구원 큐를 이용한 smp 가상 머신 이벤트 라우터 및 방법
WO2017099772A1 (en) * 2015-12-10 2017-06-15 Siemens Aktiengesellschaft Distributed embedded data and knowledge management system integrated with plc historian
US20170177395A1 (en) * 2015-12-21 2017-06-22 Mingqiu Sun Embedded architecture based on process virtual machine
JP6971016B2 (ja) 2016-04-07 2021-11-24 オムロン株式会社 制御装置、制御方法およびプログラム
US11157517B2 (en) 2016-04-18 2021-10-26 Amazon Technologies, Inc. Versioned hierarchical data structures in a distributed data store
US10338135B2 (en) 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10282330B2 (en) * 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US10069949B2 (en) 2016-10-14 2018-09-04 Honeywell International Inc. System and method for enabling detection of messages having previously transited network devices in support of loop detection
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
CN108182104B (zh) * 2016-12-08 2021-07-09 中国移动通信有限公司研究院 一种分配虚拟处理器的方法、设备及系统
EP3343366B1 (en) * 2016-12-27 2020-12-30 OpenSynergy GmbH System and method for scheduling a plurality of guest systems and/or threads
US10860550B1 (en) 2017-03-30 2020-12-08 Amazon Technologies, Inc. Versioning schemas for hierarchical data structures
US10671639B1 (en) 2017-03-30 2020-06-02 Amazon Technologies, Inc. Selectively replicating changes to hierarchial data structures
US10423342B1 (en) 2017-03-30 2019-09-24 Amazon Technologies, Inc. Scaling events for hosting hierarchical data structures
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
US10579417B2 (en) * 2017-04-26 2020-03-03 Microsoft Technology Licensing, Llc Boosting user thread priorities to resolve priority inversions
US10956220B2 (en) 2017-06-04 2021-03-23 Apple Inc. Scheduler for amp architecture using a closed loop performance and thermal controller
CN109656674B (zh) * 2017-10-11 2023-09-12 阿里巴巴集团控股有限公司 一种计算机设备、虚拟化芯片及数据传输方法
US10810086B2 (en) 2017-10-19 2020-10-20 Honeywell International Inc. System and method for emulation of enhanced application module redundancy (EAM-R)
US10783026B2 (en) 2018-02-15 2020-09-22 Honeywell International Inc. Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor
US11570176B2 (en) * 2021-01-28 2023-01-31 Bank Of America Corporation System and method for prioritization of text requests in a queue based on contextual and temporal vector analysis
CN112965812A (zh) * 2021-02-09 2021-06-15 中国铁建重工集团股份有限公司 一种基于边缘计算的故障诊断方法、系统和终端
JP2024506766A (ja) * 2021-12-30 2024-02-15 ペルセウス カンパニー、リミテッド ハイパーバイザシステムのオペレーティングシステム性能干渉防止装置
CN115562794B (zh) * 2022-12-07 2023-03-10 天津卓朗昆仑云软件技术有限公司 虚拟桌面系统及虚拟桌面的实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193830A (ja) * 1987-10-05 1989-04-12 Nec Corp 仮想計算機システムにおける割り込み制御方式
JPH0877025A (ja) * 1994-09-01 1996-03-22 Kokusai Electric Co Ltd タスクの優先度制御方法、タスクの優先度制御装置
JP2009181578A (ja) * 2008-01-31 2009-08-13 Internatl Business Mach Corp <Ibm> 複数の仮想マシンに対して動的にリソースを割当てる方法及び装置

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0814795B2 (ja) * 1986-01-14 1996-02-14 株式会社日立製作所 マルチプロセッサ仮想計算機システム
US6026427A (en) 1997-11-21 2000-02-15 Nishihara; Kazunori Condition variable to synchronize high level communication between processing threads
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6516373B1 (en) 1999-06-18 2003-02-04 Samsung Electronics Co., Ltd. Common motherboard interface for processor modules of multiple architectures
US6526462B1 (en) 1999-11-19 2003-02-25 Hammam Elabd Programmable multi-tasking memory management system
US6904483B2 (en) * 2001-03-20 2005-06-07 Wind River Systems, Inc. System and method for priority inheritance
GB2378277B (en) 2001-07-31 2003-06-25 Sun Microsystems Inc Multiple address translations
JP2003099272A (ja) 2001-09-20 2003-04-04 Ricoh Co Ltd タスク切替システムと方法およびdspとモデム
US7620678B1 (en) 2002-06-12 2009-11-17 Nvidia Corporation Method and system for reducing the time-to-market concerns for embedded system design
US7117481B1 (en) 2002-11-06 2006-10-03 Vmware, Inc. Composite lock for computer systems with multiple domains
US6981072B2 (en) 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
JP3922576B2 (ja) * 2003-06-27 2007-05-30 株式会社日立製作所 命令プロセッサ割り当てスケジューリング方法、該命令プロセッサ割り当てスケジューリング方法を実現する計算機システムおよびそのためのプログラム
US7134007B2 (en) 2003-06-30 2006-11-07 Intel Corporation Method for sharing firmware across heterogeneous processor architectures
US7424709B2 (en) 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US20050251806A1 (en) * 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
US7707341B1 (en) 2004-05-11 2010-04-27 Advanced Micro Devices, Inc. Virtualizing an interrupt controller
US8271976B2 (en) * 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
JP4006428B2 (ja) * 2004-09-28 2007-11-14 株式会社東芝 計算機システム
US7299337B2 (en) 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US7739476B2 (en) 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
US7971205B2 (en) * 2005-12-01 2011-06-28 International Business Machines Corporation Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status
US7945913B2 (en) * 2006-01-19 2011-05-17 International Business Machines Corporation Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
US20070283336A1 (en) 2006-06-01 2007-12-06 Michael Karl Gschwind System and method for just-in-time compilation in a heterogeneous processing environment
US7899994B2 (en) * 2006-08-14 2011-03-01 Intel Corporation Providing quality of service (QoS) for cache architectures using priority information
US8082551B2 (en) 2006-10-30 2011-12-20 Hewlett-Packard Development Company, L.P. System and method for sharing a trusted platform module
US7685409B2 (en) * 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US8250254B2 (en) 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
JP5014179B2 (ja) * 2008-01-25 2012-08-29 三菱電機株式会社 Os優先度変更装置及びos優先度変更プログラム
US8245236B2 (en) * 2008-02-27 2012-08-14 International Business Machines Corporation Lock based moving of threads in a shared processor partitioning environment
US20090282198A1 (en) 2008-05-08 2009-11-12 Texas Instruments Incorporated Systems and methods for optimizing buffer sharing between cache-incoherent cores
US8607020B2 (en) 2008-06-06 2013-12-10 International Business Machines Corporation Shared memory partition data processing system with hypervisor managed paging
US8516260B2 (en) 2008-10-27 2013-08-20 Advanced Micro Devices, Inc. Method, apparatus, and device for providing security among a calling function and a target function
US8301863B2 (en) 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US8291414B2 (en) 2008-12-11 2012-10-16 International Business Machines Corporation Shared resource service provisioning using a virtual machine manager
US20100242014A1 (en) 2009-03-17 2010-09-23 Xiaohan Zhu Symmetric multi-processor operating system for asymmetric multi-processor architecture
US8156275B2 (en) * 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US9152200B2 (en) 2009-06-23 2015-10-06 Hewlett-Packard Development Company, L.P. Resource and power management using nested heterogeneous hypervisors
US8479196B2 (en) 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
EP2323035B1 (en) * 2009-11-16 2019-04-17 Red Bend Software Scheduling system
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
JP5336423B2 (ja) * 2010-05-14 2013-11-06 パナソニック株式会社 計算機システム
JP5770721B2 (ja) * 2010-05-24 2015-08-26 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 情報処理システム
US8443376B2 (en) 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US20110320766A1 (en) 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
US20120072638A1 (en) 2010-09-16 2012-03-22 Unisys Corp. Single step processing of memory mapped accesses in a hypervisor
US8307169B2 (en) 2011-03-10 2012-11-06 Safenet, Inc. Protecting guest virtual machine memory
JP5648544B2 (ja) 2011-03-15 2015-01-07 富士通株式会社 スケジューリングプログラム、および情報処理装置
US8984330B2 (en) 2011-03-28 2015-03-17 Siemens Corporation Fault-tolerant replication architecture
US9043562B2 (en) 2011-04-20 2015-05-26 Microsoft Technology Licensing, Llc Virtual machine trigger
US8677360B2 (en) * 2011-05-12 2014-03-18 Microsoft Corporation Thread-related actions based on historical thread behaviors
US20130013889A1 (en) 2011-07-06 2013-01-10 Jaikumar Devaraj Memory management unit using stream identifiers
US9250969B2 (en) 2011-08-30 2016-02-02 At&T Intellectual Property I, L.P. Tagging a copy of memory of a virtual machine with information for fetching of relevant portions of the memory
US8910158B2 (en) * 2011-12-14 2014-12-09 Intel Corporation Virtualizing interrupt priority and delivery
US20140053272A1 (en) 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US9292318B2 (en) * 2012-11-26 2016-03-22 International Business Machines Corporation Initiating software applications requiring different processor architectures in respective isolated execution environment of an operating system
US9075789B2 (en) * 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US9052932B2 (en) * 2012-12-17 2015-06-09 International Business Machines Corporation Hybrid virtual machine configuration management
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9396011B2 (en) 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
WO2014165040A1 (en) * 2013-03-13 2014-10-09 Veriscape, Inc. Dynamic memory management for a virtual supercomputer
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193830A (ja) * 1987-10-05 1989-04-12 Nec Corp 仮想計算機システムにおける割り込み制御方式
JPH0877025A (ja) * 1994-09-01 1996-03-22 Kokusai Electric Co Ltd タスクの優先度制御方法、タスクの優先度制御装置
JP2009181578A (ja) * 2008-01-31 2009-08-13 Internatl Business Mach Corp <Ibm> 複数の仮想マシンに対して動的にリソースを割当てる方法及び装置

Also Published As

Publication number Publication date
EP2972851A1 (en) 2016-01-20
KR20150132218A (ko) 2015-11-25
WO2014159444A1 (en) 2014-10-02
US10133598B2 (en) 2018-11-20
US9396012B2 (en) 2016-07-19
US20160299780A1 (en) 2016-10-13
US20140282507A1 (en) 2014-09-18
JP2016511489A (ja) 2016-04-14
JP6199477B2 (ja) 2017-09-20
CN105051690B (zh) 2018-12-07
TW201447766A (zh) 2014-12-16
TWI552076B (zh) 2016-10-01
CN105051690A (zh) 2015-11-11

Similar Documents

Publication Publication Date Title
JP6199477B2 (ja) ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
JP5723968B2 (ja) 便宜的マルチタスキング
JP6240745B2 (ja) 複数のハイパーバイザを実行するシステムおよび方法
EP2962198B1 (en) Executing an operating system on processors having different instruction set architectures
US9411649B2 (en) Resource allocation method
US9753771B2 (en) System-on-chip including multi-core processor and thread scheduling method thereof
TW201411488A (zh) 在作業系統中藉由多個程序對現場可程式設計閘陣列的使用的管理
US9858115B2 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
KR20050030871A (ko) 실시간 동작 수행방법 및 시스템
CN112416546A (zh) 多任务调度方法、电子装置和计算机存储介质
US9229765B2 (en) Guarantee real time processing of soft real-time operating system by instructing core to enter a waiting period prior to transferring a high priority task
US9213560B2 (en) Affinity of virtual processor dispatching
JP2013033369A (ja) メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
JP2010044784A (ja) システムにおける要求のスケジューリング
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
JP2009193260A (ja) ストレージシステム、ストレージ装置、優先度制御装置および優先度制御方法
JP2009015569A (ja) デバイスへのアクセス制御方法および処理装置
CN114443255A (zh) 一种线程调用方法和装置
JP2015170270A (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム
CN117369987A (zh) 一种计算装置及相关任务执行调度方法
CN111176828A (zh) 包括多核处理器的片上系统及其任务调度方法
JP2014182764A (ja) 情報処理装置、情報処理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170824

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190513