(57)【要約】【課題】ハイパーバイザに制御されるコンピューティング環境において、オペレーティングシステム(たとえばリアルタイムオペレーティングシステム)を低減された遅延で実行することを可能にするシステムおよび方法を提供すること【解決手段】装置は、プロセッサおよびゲストオペレーティングシステムを含む。タスクを作成するための要求を受信することに応じて、ゲストオペレーティングシステムは、要求されたタスクを実行するために仮想プロセッサを作成することをハイパーバイザに要求する。仮想プロセッサは、プロセッサでスケジューリングすることができる。ハイパーバイザは、ゲストオペレーティングシステムのタスクおよび第2のゲストオペレーティングシステムのタスクに関連する優先度情報へのアクセスを持つ。【選択図】図１
2017204307.tif 000002
【特許請求の範囲】
【請求項１】
処理するための手段と、
前記処理するための手段により実行可能なスケジューリングするための手段と、
を備え、
前記スケジューリングするための手段は、前記処理するための手段による実行のために仮想プロセッサをスケジュールするように構成され、
前記仮想プロセッサの各々は、
優先度を有し、
タスクに対応し、前記タスクは少なくとも第１のゲストオペレーティングシステムおよび第２のゲストオペレーティングシステムのうち１つにより前記タスクに割当てられたタスク優先度を有し、
前記仮想プロセッサの前記優先度は前記スケジューリングするための手段にアクセス可能であり前記タスク優先度に対応し、
前記スケジューリングするための手段は、システムリソースをそれぞれ前記第１の仮想プロセッサおよび第２の仮想プロセッサに割り当てることによって、前記第１のゲストオペレーティングシステムに対する少なくとも第１の仮想プロセッサおよび第２の仮想プロセッサを生成するように構成される、
装置。
【請求項２】
前記スケジューリングするための手段はハイパーバイザに統合され、前記第１の仮想プロセッサおよび第２の仮想プロセッサは前記第１のゲストオペレーティングシステムの第１のタスクおよび第２のタスクに対応し、前記システムリソースはハードウェアリソースおよびソフトウェアリソースのうち１つまたは複数を含む、請求項１に記載の装置。
【請求項３】
前記処理するための手段はプロセッサを備え、
前記スケジューリングするための手段はハイパーバイザを備える、
請求項１に記載の装置。
【請求項４】
前記第１の仮想プロセッサおよび第２の仮想プロセッサはそれぞれ第１の優先度および第２の優先度を有し、前記第１の仮想プロセッサおよび第２の仮想プロセッサはそれぞれ前記第１のゲストオペレーティングシステムの第１のタスクおよび第２のタスクに対応し、前記前記第１のゲストオペレーティングシステムの第１のタスクおよび第２のタスクはそれぞれ第１の優先度および第２の優先度を有し、前記ハイパーバイザは、前記第１のタスクに対応する前記第１の仮想プロセッサの前記第１の優先度の前記第３のタスクに対応する第３の仮想プロセッサの第３の優先度との比較に少なくとも部分的に基づいて、前記第１のゲストオペレーティングシステムの前記第１のタスクまたは前記第２のゲストオペレーティングシステムの第３のタスクをスケジュールするか否かを判定するように構成され、
前記第１のゲストオペレーティングシステムおよび前記第２のゲストオペレーティングシステムのうち少なくとも１つはリアルタイムオペレーティングシステムであり、
前記リアルタイムオペレーティングシステムは非リアルタイムオペレーティング・システムに利用不能な少なくとも１つの上昇されたタスク優先度レベルに対するアクセスを有するか、または
前記ハイパーバイザは、前記第１のゲストオペレーティングシステムの第１のタスクからの要求に基づいて前記第１の仮想プロセッサをブロックまたはブロック解除するように構成される、
請求項３に記載の装置。
【請求項５】
前記第１のゲストオペレーティングシステムの第１のタスクおよび前記第２のゲストオペレーティングシステムの第２のタスクはそれぞれ、前記第１のゲストオペレーティングシステムと前記第２のゲストオペレーティングシステムに共通な同期プリミティブにアクセスするように構成された、請求項１に記載の装置。
【請求項６】
前記第１のゲストオペレーティングシステムのタスクの優先度および前記第２のゲストオペレーティングシステムのタスクの優先度は優先度の共通の組から選択される、請求項１に記載の装置。
【請求項７】
前記ハイパーバイザは、前記第１のゲストオペレーティングシステムおよび前記第２のゲストオペレーティングシステムのうち他方のタスクがブロックされたときに、前記第１のゲストオペレーティングシステムおよび前記第２のゲストオペレーティングシステムのうち１つのタスクの優先度を一時的に上昇させるように構成される、請求項１に記載の装置。
【請求項８】
処理するための手段による実行のために仮想プロセッサをスケジューリングするための手段でスケジュールするステップ、
を含み、
前記仮想プロセッサの各々は、
優先度を有し、
タスクに対応し、前記タスクは少なくとも第１のゲストオペレーティングシステムおよび第２のゲストオペレーティングシステムのうち１つにより前記タスクに割当てられたタスク優先度を有し、
前記仮想プロセッサの前記優先度は前記スケジューリングするための手段にアクセス可能であり前記タスク優先度に対応し、
前記スケジューリングするための手段は、システムリソースをそれぞれ前記第１の仮想プロセッサおよび第２の仮想プロセッサに割り当てることによって、前記第１のゲストオペレーティングシステムに対する少なくとも第１の仮想プロセッサおよび第２の仮想プロセッサを生成するように構成される、
方法。
【請求項９】
前記スケジューリングするための手段はハイパーバイザに統合され、前記第１の仮想プロセッサおよび第２の仮想プロセッサは前記第１のゲストオペレーティングシステムの第１のタスクおよび第２のタスクに対応し、前記システムリソースはハードウェアリソースおよびソフトウェアリソースのうち１つまたは複数を含む、請求項８に記載の方法。
【請求項１０】
前記処理するための手段はプロセッサを備え、
前記スケジューリングするための手段はハイパーバイザを備える
請求項８に記載の方法。
【請求項１１】
前記第１の仮想プロセッサおよび第２の仮想プロセッサはそれぞれ第１の優先度および第２の優先度を有し、前記第１の仮想プロセッサおよび第２の仮想プロセッサはそれぞれ前記第１のゲストオペレーティングシステムの第１のタスクおよび第２のタスクに対応し、前記前記第１のゲストオペレーティングシステムの第１のタスクおよび第２のタスクはそれぞれ第１の優先度および第２の優先度を有し、前記ハイパーバイザは、前記第１のタスクに対応する前記第１の仮想プロセッサの前記第１の優先度の前記第３のタスクに対応する第３の仮想プロセッサの第３の優先度との比較に少なくとも部分的に基づいて、前記第１のゲストオペレーティングシステムの前記第１のタスクまたは前記第２のゲストオペレーティングシステムの第３のタスクをスケジュールするか否かを判定するように構成され、
前記第１のゲストオペレーティングシステムおよび前記第２のゲストオペレーティングシステムのうち少なくとも１つはリアルタイムオペレーティングシステムであり、
前記リアルタイムオペレーティングシステムは非リアルタイムオペレーティング・システムに利用不能な少なくとも１つの上昇されたタスク優先度レベルに対するアクセスを有するか、または
前記ハイパーバイザは、前記第１のゲストオペレーティングシステムの第１のタスクからの要求に基づいて前記第１の仮想プロセッサをブロックまたはブロック解除するように構成される、
請求項１０に記載の方法。
【請求項１２】
前記第１のゲストオペレーティングシステムの第１のタスクおよび前記第２のゲストオペレーティングシステムの第２のタスクはそれぞれ、前記第１のゲストオペレーティングシステムと前記第２のゲストオペレーティングシステムに共通な同期プリミティブにアクセスするように構成された、請求項１０に記載の方法。
【請求項１３】
前記第１のゲストオペレーティングシステムのタスクの優先度および前記第２のゲストオペレーティングシステムのタスクの優先度は優先度の共通の組から選択される、請求項１０に記載の方法。
【請求項１４】
前記ハイパーバイザは、前記第１のゲストオペレーティングシステムおよび前記第２のゲストオペレーティングシステムのうち他方のタスクがブロックされたときに、前記第１のゲストオペレーティングシステムおよび前記第２のゲストオペレーティングシステムのうち１つのタスクの優先度を一時的に上昇させるように構成される、請求項１０に記載の方法。
【請求項１５】
コンピュータにより実行されたときに、請求項８乃至１４の何れか１項に記載の方法を前記コンピュータに実行させる命令を備えた、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、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  マルチスレッドプロセッサ
【図１】
2017204307.tif 000003
【図２】
2017204307.tif 000004
【図３】
2017204307.tif 000005
【図４】
2017204307.tif 000006
【図５】
2017204307.tif 000007
【図６】
2017204307.tif 000008
【外国語明細書】
2017204307000001.pdf