(本発明の一態様を得るに至った経緯)
一般に、オペレーティングシステム及びデバイスドライバには、プロセッサやデバイスなどの機器に供給する電力を制御する仕組みが設けられている。オペレーティングシステム及びデバイスドライバは、機器の状況に応じて機器への電力供給を制御し、システムの省電力化を図る。一般的な省電力機能の一例としては、機器が一定期間使用されていない、或いは動作していない場合に、機器への電力供給を停止する、或いは機器に供給するクロック信号の周波数を低下させて、機器に供給される電力量を低下させる機能が挙げられる。オペレーティングシステムは、このような省電力機能を備えているのが一般的である。オペレーティングシステムは、あるプロセッサにおいてシステムが処理するタスクが存在しないアイドル状態が一定の割合で発生すると、そのプロセッサの動作を停止し、そのプロセッサへの電力の供給を停止するという機能を省電力機能の一部として備える。
一方、オペレーティングシステムとそのオペレーティングシステム上で動作するソフトウェアとにより構成される仮想計算機を、複数動作させる仮想計算機システムにおいて、ある仮想計算機のオペレーティングシステムは、別の仮想計算機の機器の使用状況を直接知ることはできない。つまり、ある仮想計算機は、別の仮想計算機がどのプロセッサをどの程度使用しているのかを直接把握することはできない。したがって、従来の仮想計算機システムでは、オペレーティングシステムが備える省電力機能を使って、プロセッサを適切なタイミングで省電力状態にすることができないという問題があった。
このような問題を回避するために、従来の仮想計算機制御に関する技術としては、背景技術で説明した特許文献1が知られているが、特許文献1の構成では、オペレーティングシステムが有する省電力機能とは別に、仮想計算機制御装置の中に省電力機能を設ける必要があった。
ここで、オペレーティングシステムが備える省電力機能は、種々の条件に応じて複雑な省電力制御を行う。例えば、一定の期間、プロセッサに処理のないことを統計的にサンプリングし、その結果に応じて、プロセッサへの電力供給を止める、或いはプロセッサに供給するクロック信号の周波数を下げるというような省電力制御が行われる。
このような複雑なオペレーティングシステムの省電力機能を、仮想計算機制御装置の内部に移植することは開発コストの増大につながり、開発後の保守コストの増大を引き起こす。
また、一般に、仮想計算機システムの省電力機能は、オペレーティングシステムの機能として、オペレーティングシステムの開発ベンダ等によりオープンソース上で開発されて発展されている。しかしながら、特許文献1の構成では、オペレーティングシステムの省電力機能の更新に追随して、仮想計算機制御装置の省電力機能を保守することが必要になるという課題を有する。
そこで、本実施の形態による仮想計算機制御装置の目的は、仮想計算機制御装置の内部に複雑な省電力機能を保持せず、オペレーティングシステムの省電力機能を利用して、仮想計算機システム全体の省電力機能を実現することである。以下、本実施の形態による仮想計算機制御装置について図面を参照しながら詳細に説明する。
(本実施の形態による仮想計算機制御装置の説明)
図1は、本発明の実施の形態における仮想計算機制御装置を備えた仮想計算機システムの構成を示す図である。この仮想計算機システム1000は、それ自体としてユーザの使用に供することもできるが、様々な機器に組み込まれてもよい。仮想計算機システム1000としては、代表的にはPC(Personal Computer;パーソナルコンピュータ)等の汎用のコンピュータが一例として挙げられる。但し、これに限定されず、仮想計算機システム1000としては、PDA(Personal Digital Assistance)、携帯電話機、スマートフォン等の携帯通信端末を採用してもよい。その他、仮想計算機システム1000としては、テレビを採用してもよいし、ハーディスクレコーダーやDVDやブルーレイ等の各種ディスクレコーダー及び各種ディスクプレイヤーを採用してもよいし、カーナビゲーションシステムを採用してもよい。
仮想計算機システム1000は、プロセッサ1、メモリ装置2、通信装置34、入力装置40、表示装置45、タイマ回路51、及び割り込みコントローラ55を備えている。これらの装置は、バスライン50を通じて互いに接続されている。また、必要に応じて、バスライン50には、ハードディスク装置25及び読取装置32を接続することが可能である。ハードディスク装置25、読取装置32、入力装置40、及び表示装置45は、それぞれ、インタフェース26、35、41、46を通じてバスライン50に接続される。
プロセッサ1としては、代表的には、CPU(Central Processing Unit;中央演算処理装置)、メディア処理用やグラフィック処理用のプロセッサ、及びDSP(Digital Signal Processor)などの演算処理装置が採用される。
プロセッサ1は、単一のプロセッサで構成されても良く、複数のプロセッサで構成されてもよい。一例として、仮想計算機システム1000は、複数のプロセッサ11、12、13、14を有するものとする。なお、図1の例では4つのプロセッサを記載しているが、プロセッサ1の数がこれに限らないことはいうまでもない。メモリ装置2は、ROM(Read Only Memory)21及びRAM(Random Access Memory)22を備えている。ROM21は、プロセッサ1の動作を規定するコンピュータプログラム及びデータを記憶している。コンピュータプログラム及びデータは、ハードディスク装置25に記憶させることもできる。プロセッサ1は、ROM21又はハードディスク装置25が格納するコンピュータプログラム及びデータを、必要に応じてRAM22に書き込みつつ、コンピュータプログラムが規定する処理を実行する。RAM22は、プロセッサ1が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。ROM21には、フラッシュROMのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリと記憶媒体とが含まれる。RAM22には、電源を切ると記憶内容が保持されない揮発性のメモリと記憶媒体とが含まれる。
ハードディスク装置25は、内蔵する不図示のハードディスクへ、コンピュータプログラム、或いはデータを書き込み及び読み出す装置である。読取装置32は、記録媒体31(例えばCD、DVD、メモリカードなど)に記録されたコンピュータプログラム、或いはデータを読み取る装置である。通信装置34は、電話回線、ネットワーク線、無線、Bluetooth(ブルートゥース:登録商標)、赤外線通信等の通信回線33を通じて、外部と自身との間で、コンピュータプログラム、或いはデータを交換する装置である。入力装置40は、ユーザの操作によりデータや入力イベント等を入力する装置であり、例えば、PDAに配列されたキーボード、携帯電話機に配列された入力ボタン、タッチパネル、着脱自在のマウス、或いはキーボードである。表示装置45は、データ、画像等を画面に表示したり、データ等を音声で出力したりする装置であり、例えばLCD(Liquid Crystal Display;液晶表示器)、有機EL(有機エレクトロルミネッセンス)、ブラウン管、スピーカである。
タイマ回路51は、一定の周期でタイマ割り込み信号を出力する装置である。割り込みコントローラ55は、タイマ回路51、入力装置40、プロセッサ1、ネットワークデバイスとしての通信装置34、ハードディスク装置25、及び読取装置32等から送られる割り込み要求信号を、プロセッサ1へ中継する装置である。各装置からの割り込み要求には優先度が付けられている。割り込みコントローラ55は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。
以上のように、仮想計算機システム1000は、コンピュータとして構成されている。上記コンピュータプログラムは、ROM21、ハードディスク装置25、不図示のフレキシブルディスク、CD−ROM等のコンピュータ読み取り可能な記録媒体31を通じて供給することも、通信回線33等の伝送媒体を通じて供給することも可能である。例えば、記録媒体31(CD−ROM)に記録されたコンピュータプログラムは、読取装置32を仮想計算機システム1000へ接続することで、読み出すことができる。また、読み出したコンピュータプログラムを、RAM22或いはハードディスク装置25に格納することができる。
プログラム記録媒体としてROM21からコンピュータプログラムが供給される場合には、当該ROM21を仮想計算機システム1000に搭載することにより、プロセッサ1は上記コンピュータプログラムに従った処理が実行可能となる。通信回線33等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置34を通じて受信され、例えば、RAM22或いはハードディスク装置25に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であってもよい。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
通常、仮想計算機制御装置の実体はメモリ装置2或いはハードディスク装置25に格納され、プロセッサ1と協働して実行することにより、仮想計算機制御装置全体を実現している。
以上のような構成において、仮想計算機制御装置は、例えば仮想計算機システム1000上で動作するプログラムとして実現することができる。例えば、図1においては、仮想計算機制御装置を構成するプログラム及びデータがメモリ装置2に格納され、プロセッサ1により処理されることにより動作する。なお、仮想計算機制御装置は、仮想計算機モニター、ハイパーバイザとも呼ばれる。
図2は、本発明の実施の形態における仮想計算機制御装置100の機能構成の一例を示すブロック図である。図2の例では、仮想計算機制御装置100が二つの仮想計算機を制御している。一方は第1仮想計算機110であり、もう一方は第2仮想計算機120である。図2に示す例では、第1仮想計算機110上では第1OS(オペレーティングシステム)115、第2仮想計算機120上では第2OS125が稼動するものとする。ここで、第1OS115と第2OS125とは、それぞれ、異なる種類のOS、同じ種類でバージョンの異なるOS、同じ種類でバージョンも同じOSのいずれであってもよい。図2では、図1に示すプロセッサ11〜14の一例としてCPU0〜CPU3を採用する。
また、図2に示す例では、第2仮想計算機120の第2OS125が、省電力制御部271を備えるものとする。一般にOSには機器に供給する電力を制御して、消費電力を低減させる仕組みが備わっている。一般的な仮想計算機システムでは、複数のOSが動作するため、複数のOSの省電力機能が動作する可能性がある。省電力機能はCPU等のプロセッサ、及び各種デバイスに対する電力供給を制御するので、複数のOSの省電力機能が動作する場合、複数の電力制御の要求が競合することになる。これを避けるために、一つの仮想計算機のOSに省電力制御をさせる方法が採用される。
本実施の形態では、第1OS115は省電力機能を備えず、第2OS125に省電力制御をさせる態様を採用する。第2OS125に省電力制御をさせる例としては、この他に、第1OS115が備える省電力機能を無効化する方法を採用してもよい。
なお、図2に示す仮想計算機制御装置100において、割り込み保留情報221〜仮想計算機実行状態管理情報224は、仮想計算機制御プログラムに含まれ、RAM等の記憶装置にロードされて保持される。また、仮想計算機制御装置100において、擬似タスク生成要求部200〜擬似タスク終了要求部206は、仮想計算機プログラムに含まれ、CPUにより実行されて実現される。
まず、第1仮想計算機110の構成について説明する。
第1仮想計算機110は、第1OS115と、タスク262に例示される何らかの処理単位である0個以上のタスクと、アイドルタスク263とを備える。第1OS115は、タスクスケジューラ251を備える。アイドルタスク263は、アイドル遷移通知部264を備える。
ここで、タスクとは、一般にオペレーティングシステムがCPUに割り当てて実行させるプログラムの単位を指し、プロセス或いはスレッドとも呼ばれる。以下、アイドルタスク及び擬似タスク以外のタスクを単にタスクと記述する。
図2の例では、第1仮想計算機110にタスク262のみ記載したが、複数のタスクが存在することもあれば、アイドルタスク263を除き、タスクが一つも存在しないこともありうる。
アイドルタスク263は、タスク262と比較して最も優先度の低いタスクとして、タスクスケジューラ251に見なされる。そして、アイドルタスク263は、あるCPUにおいて、第1仮想計算機110が処理すべきタスクが存在しない場合、当該CPUにスケジューリングされるタスクである。つまり、アイドルタスク263は、あるCPUにおいて、第1仮想計算機110が処理すべきタスクがない場合、すなわち、第1仮想計算機が当該CPUに対してアイドル(idle)状態の場合に実行されるタスクである。アイドルタスク263が実行されている場合、アイドルタスク263が動作しているCPUは、その時点では第1仮想計算機110内で特別に行うべき処理がないと見なすことが可能となる。
アイドルタスク263は、タスクスケジューラ251により実行権が割り当てられると、アイドル遷移通知部264により、仮想計算機制御装置100に第1仮想計算機110がアイドル状態になったことを通知する。アイドルタスク263は、その他に特別な処理を行わなくてよい。一般には、アイドルタスク263としては、CPUに対する割り込みを待つ命令を発行するプログラム、或いはビジーループでCPUに対する割り込みを待つプログラム等で実装されることが考えられる。
タスクスケジューラ251は、第1仮想計算機110内のタスクを、タスクに定められた優先度に応じてスケジューリングし、CPUに割り当てて実行させる。
タスクスケジューラ251は、第1仮想計算機110内のタスク262を、CPU0〜CPU3のいずれかに割り当ててもよい。或いは、タスクスケジューラ251は、第1仮想計算機110のタスク262を、マルチCPU環境のいずれか一つのCPUに割り当ててもよい。
図2の例で示すと、例えば、第1仮想計算機110がCPU0とCPU1とにタスク262を割り当て可能であれば、タスクスケジューラ251はCPU0とCPU1とのいずれかにタスク262を割り当てて実行させる。或いは、第1仮想計算機110がCPU0のみにタスク262を割り当て可能であれば、タスクスケジューラ251はタスク262を必ずCPU0に割り当てて実行させる。
次に、第2仮想計算機120の構成について説明する。
第2仮想計算機120は、第2OS125と、タスク281及びタスク282に例示される何らかの処理単位である0個以上のタスクと、アイドルタスク284と、状況により生成される擬似タスク283とを備える。第2OS125は、省電力制御部271と、擬似タスク生成部272と、擬似タスク終了部273と、仮想割り込み処理部274と、タスクスケジューラ275とを備える。擬似タスク283は、擬似タスク遷移通知部285を備える。アイドルタスク284は、アイドル遷移通知部286を備える。
タスクスケジューラ275は、第2仮想計算機120内のタスクを、タスクに定められた優先度に応じてスケジューリングし、CPUに割り当てて実行させる。
タスクスケジューラ275は、第2仮想計算機120のタスクを、CPU0〜CPU3のうち、少なくとも2つのCPUに割り当てる。すなわち、第2OS125が割り当て可能なCPUは複数存在する状態を想定する。また、第1OS115が割り当て可能なCPUのうち、少なくとも1つCPUは第2OS125でも割り当て可能であることを想定する。
図2の例で示すと、例えば、第1OS115がタスクをCPU0のみに割り当て可能であれば、第2OS125は、CPU0にタスクを割り当てることができる。さらに第2OS125は、CPU0の他に、1以上のCPU、例えばCPU1にも何らかのタスクを割り当て可能であることを想定する。
一般に、各仮想計算機は互いに独立して動作するため、各仮想計算機上で実行されるOSやタスクも、互いに他のOSやタスクの実行状況を把握していない。すなわち、第2仮想計算機120は、第2OS125が使用しているCPUに関して、第1仮想計算機110でどの程度使用されているかを把握することができない。
図2の例では、第2仮想計算機120にタスク281及びタスク282のみ記載したが、複数のタスクが存在することもあれば、アイドルタスク284を除き、タスクが一つも存在しないこともありうる。
アイドルタスク284は、他のタスクと比較して最も優先度の低いタスクとして、タスクスケジューラ275に見なされる。そして、アイドルタスク284は、あるCPUにおいて、第2仮想計算機120が処理すべきタスクが存在しない場合、当該CPUにスケジューリングされるタスクである。つまり、アイドルタスク284は、あるCPUにおいて、第2仮想計算機120が処理すべきタスクがない場合、すなわち、第2仮想計算機120が当該CPUに対してアイドル(idle)状態の場合に実行されるタスクとなっている。アイドルタスク284が実行されている場合、アイドルタスク284が動作しているCPUは、その時点では第2仮想計算機120内で特別に行うべき処理がないと見なせる。
タスクスケジューラ275によりあるCPUに対する実行権が割り当てられたアイドルタスク284のアイドル遷移通知部286は、仮想計算機制御装置100に当該CPUにおいて第2仮想計算機120がアイドル状態になったことを通知する。アイドルタスク284は、その他に特別な処理を行わなくてよい。一般には、アイドルタスク284としては、CPUに対する割り込みを待つ命令を発行するプログラム、或いはビジーループでCPUに対する割り込みを待つプログラム等で実装されることが考えられる。
擬似タスク283は、第2仮想計算機120が処理するタスクが割り当てられていないCPUに第1仮想計算機110が処理するタスクが割り当てられている場合、当該CPUが使用状態であることを示すタスクである。つまり、擬似タスク283は、第1仮想計算機110内において、アイドルタスク263以外のタスクがあるCPUで動作している場合、当該CPUにおいて第1仮想計算機110のタスクが動作していることを第2仮想計算機120に認識させるためのタスクである。これにより、第2仮想計算機120は当該CPUにおいて第1仮想計算機110のタスクが動作されていると判断し、省電力制御部271が当該CPUを省電力状態にすることを防止することができる。
タスクスケジューラ275にCPUの実行権が割り当てられた擬似タスク283の擬似タスク遷移通知部285は、仮想計算機制御装置100に当該CPUにおいて擬似タスク283が実行されたことを通知する。擬似タスク283は、その他に特別な処理を行わなくてよい。一般には、擬似タスク283としては、CPUに対する割り込みを待つ命令を発行するプログラム、或いはビジーループでCPUに対する割り込みを待つプログラム等で実装されることが考えられる。
第2OS125は、タスクスケジューラ275の他に、省電力制御部271、擬似タスク生成部272、擬似タスク終了部273、及び仮想割り込み処理部274を備える。
省電力制御部271は、CPU0〜CPU3等のプロセッサや各種デバイスに対する電力供給を制御するものである。省電力制御部271は、電力供給を制御するにあたり、一般的に、制御するCPU等のプロセッサやデバイスの使用状況を把握する。例えば、制御対象がCPUであれば、省電力制御部271は、そのCPUにどの程度タスクが割り当てられているかを監視することで、CPUの使用状況を把握すればよい。
具体的には、省電力制御部271は、所定の動作タイミングで動作し、その動作タイミングにおいてCPUがアイドル状態になっているか否かを確認することでCPUの使用状況を把握すればよい。或いは、省電力制御部271は、どの程度の期間、そのCPUがアイドル状態であったかを示すアイドル率、或いは逆にどの程度、そのCPUが使用されていたかを示すCPU使用率を算出することでCPUの使用状況を把握してもよい。或いは、省電力制御部271は、第2OS125が割り当て可能な各CPUのCPU使用率を総合して、第2仮想計算機120のCPU使用率を算出してCPUの使用状況を把握してもよい。但し、これらのCPUの使用状況を把握する方法は一例に過ぎず、省電力制御部271は他の手法を用いてCPUの使用状況を把握してもよい。
前述の通り、一方の仮想計算機は、他方の仮想計算機のCPUの使用状況を把握することができない。そのため、従来の仮想計算機システムでは、一方の仮想計算機のOSの省電力機能によりあるCPUがアイドル状態と判断されても、他方の仮想計算機が当該CPUを動作させている可能性がある。したがって、従来の仮想計算機システムにおいて、OSが備える省電力機能は、各仮想計算機によるCPUやデバイスの使用状況を正確に把握することができなかった。そこで、本実施の形態は、上述したように擬似タスク283を設け、この問題を解決した。
仮想割り込み処理部274は、仮想計算機制御装置100から配送された割り込み種別、及び割り込みを処理するために必要な情報を受け取り、所定の処理を行う。例えば、仮想割り込み処理部274は、割り込みが擬似タスク283の生成要求の割り込みか、或いは擬似タスク283の終了要求の割り込みか、或いはそれ以外の割り込みかを判定する。そして、仮想割り込み処理部274は、擬似タスク283の生成要求及び終了要求の割り込みであれば、擬似タスク283に割り当てるべきCPUを特定するCPU識別情報を仮想計算機制御装置100から受け取る。そして、仮想割り込み処理部274は、割り込みが発生したことを示す情報とCPU識別情報とを、擬似タスク生成部272或いは擬似タスク終了部273に通知する。
仮想割り込み処理部274は、仮想計算機制御装置100の仮想計算機切り替え部204により、第2仮想計算機120に実行権が割り当てられると動作を開始する。具体的には、仮想計算機切り替え部204は、あるCPUの実行権を第1仮想計算機110から第2仮想計算機120に切り替える際に、仮想割り込み処理部274が割り込み処理に必要な情報を参照できるように仮想割り込み処理部274に処理を移す。例えば、仮想計算機切り替え部204は、割り込みを特定する割り込み番号や仮想割り込み処理部274に引き渡したい値をCPUのレジスタに格納する。そして、仮想計算機切り替え部204は、割り込みベクタを参照し、CPUの実行番地を、仮想割り込み処理部274が備える割り込みハンドラの番地に切り替える方法を採用すればよい。
或いは、別の方法として、仮想割り込み処理部274は、仮想計算機切り替え部204により実行権が与えられると、仮想計算機切り替え部204に仮想計算機制御装置100が保留する割り込みに関する情報を問い合わせる。そして、仮想割り込み処理部274は、処理すべき割り込みがあれば、その割り込みに関する情報を取得し、その情報に基づいて割り込みを処理する方法を採用してもよい。
擬似タスク生成部272は、仮想割り込み処理部274から擬似タスク283の生成要求の通知と、その擬似タスク283を割り当てるべきCPUを特定するCPU識別情報とを受け取り、擬似タスク283を生成する。具体的には、擬似タスク生成部272は、受け取ったCPU識別情報に基づき該当するCPUに割り当てられる擬似タスク283を生成する。ここで、擬似タスク生成部272は、擬似タスク283の優先度を、アイドルタスク284の優先度より高く設定する。
また、擬似タスク生成部272は、擬似タスク283の優先度を、タスク281、282の優先度よりも低く設定する。ここで、アイドルタスク284の優先度は擬似タスク283の優先度よりも低い。そのため、擬似タスク283の優先度は、タスク281、282より低く、且つアイドルタスク284より高くなる。
擬似タスク283は、擬似タスク遷移通知部285を備える。タスクスケジューラ275により実行権が割り当てられた擬似タスク283の擬似タスク遷移通知部285は擬似タスク283が動作していることを仮想計算機制御装置100に通知する。
擬似タスク生成部272は、例えば、第2OS125に備わるタスク生成処理の機能を活用して擬似タスク283を生成し、生成した擬似タスク283をタスクスケジューラ275にスケジューリング対象として取り扱わせる方法を採用すればよい。或いは、擬似タスク生成部272は、複数の擬似タスク283を予め作成しておき、仮想割り込み処理部274から擬似タスク283の生成要求の通知を受けた場合、CPU識別情報に基づいて、該当する擬似タスク283を選択し、タスクスケジューラ275がスケジューリング対象を管理するキュー(例えばランキュー)に選択した擬似タスク283を登録する方法を採用してもよい。
擬似タスク終了部273は、仮想割り込み処理部274から擬似タスク終了要求の通知と、その擬似タスク283に割り当られているCPUを特定するCPU識別情報とを受け取り、動作を開始する。擬似タスク終了部273は、受け取ったCPU識別情報に基づき、該当するCPUに割り当てられている擬似タスク283を終了させる。
擬似タスク終了部273は、例えば、第2OS125に備わるタスク終了処理の機能を活用し、タスクスケジューラ275に擬似タスク283をスケジューリング対象から除外させて擬似タスク283を終了させる方法を採用すればよい。或いは、擬似タスク終了部273は、仮想割り込み処理部274から通知されたCPU識別情報に基づいて擬似タスク283を選択し、タスクスケジューラ275に選択した擬似タスク283をスケジューリング対象から除外させることで擬似タスク283を終了させる方法を採用してもよい。
次に、仮想計算機制御装置100の構成について説明する。
仮想計算機制御装置100は、擬似タスク生成要求部200、動作CPU判定部201、仮想計算機切り替え部204、割り込み判定部205、及び擬似タスク終了要求部206を備える。また、仮想計算機制御装置100は、割り込み保留情報221、スケジュールポリシー管理情報222、割り当て可能CPU情報223及び仮想計算機実行状態管理情報224を保持して管理する。また、擬似タスク生成要求部200は、生成判定部202及び生成要求通知部203を備える。
擬似タスク生成要求部200は、第2仮想計算機120が処理するタスクが割り当てられていないCPUに第1仮想計算機110が処理するタスクが割り当てられている場合、当該CPUが使用状態であることを示す擬似タスク283の生成要求を生成し、第2OS125に通知する。
動作CPU判定部201は、複数のCPUの中から仮想計算機切り替え部204が次に実行権を割り当てるべき1つのCPUを特定する。また、動作CPU判定部201は、実行権を切り替える前の仮想計算機がどのCPUで動作していたのか判定する。動作CPU判定部201の動作の一例については後述する。
生成判定部202は、第2仮想計算機120に擬似タスク283を生成するか否かを判定する。また、生成判定部202は、擬似タスク283を生成する必要があると判定すると、擬似タスク283の生成依頼を生成要求通知部203に通知する。生成判定部202の動作の一例については後述する。
生成要求通知部203は、生成判定部202から擬似タスク283の生成依頼を受け付けると、第2OS125に対して擬似タスク283の生成要求を通知する。生成要求通知部203の動作の一例については後述する。
仮想計算機切り替え部204は、仮想計算機の実行権の切り替え要求を受けると、割り込み保留情報221、スケジュールポリシー管理情報222、割り当て可能CPU情報223、及び仮想計算機実行状態管理情報224のいずれかに基づき、いずれの仮想計算機に実行権を切り替えるか判定し、判定した仮想計算機に実行権を割り当てる。仮想計算機切り替え部204の動作の一例については後述する。
割り込み判定部205は、例えば図1に示す割り込みコントローラ55から割り込みを取得すると、スケジュールポリシー管理情報222、及び仮想計算機実行状態管理情報224に基づき、取得した割り込みが仮想計算機に処理されるように仮想計算機切り替え部204に通知する、或いは取得した割り込みを保留し、割り込み保留情報221に登録する。
擬似タスク終了要求部206は、仮想計算機切り替え部204から擬似タスク283の終了依頼を受けると、第2OS125に対して擬似タスク283の終了要求を通知する。擬似タスク終了要求部206の動作の一例については後述する。
次に、動作CPU判定部201の動作の一例を説明する。
仮想化計算機に割り当てられたあるCPUがアイドル状態になり、当該CPUが実行権を手放して仮想計算機制御装置100に制御が移った場合、動作CPU判定部201は、アイドル状態になったCPUを特定し、特定したCPUのCPU識別情報を、仮想計算機切り替え部204、生成判定部202、生成要求通知部203、及び擬似タスク終了要求部206に通知する。
例えば、動作CPU判定部201は、第1仮想計算機110がいずれのCPUでアイドル状態になったかを判定し、アイドル状態になったCPUのCPU識別情報を擬似タスク終了要求部206に通知する。
また、第2仮想計算機120において、擬似タスク283が動作し、第2仮想計算機120によりある1のCPUの実行権が手放されると、仮想計算機制御装置100に制御が移る。この場合、動作CPU判定部201は、擬似タスク283が動作したCPUを特定し、特定したCPUのCPU識別情報を仮想計算機切り替え部204に通知する。
ここで、動作CPU判定部201は、例えば、各CPUに現在の実行状態を問い合わせ、各CPUからの応答に基づいて、各CPUの実行状態を判定し、擬似タスク283が動作したCPUを特定すればよい。或いは、動作CPU判定部201は、例えば、仮想計算機制御装置100が管理する各CPUの実行状態に関する情報を参照することで各CPUの実行状態を判定し、擬似タスク283が動作したCPUを特定すればよい。なお、動作CPU判定部201は、自らの処理ルーチンの中で、自らがどのCPUに割り当てられているのかを、上記手段で確認すればよい。
次に、動作CPU判定部201の動作の他の例について説明する。
動作CPU判定部201は、仮想計算機に対して割り込みが発生した場合、割り込み判定部205からいずれのCPUに対する割り込みであるかが通知され、該当するCPUのCPU識別情報を生成要求通知部203に通知する。或いは、動作CPU判定部201は、仮想計算機に対する割り込みが発生した場合、割り込み保留情報221を参照して、割り込みが保留されているか否かを判定し、割り込みが保留されていれば、保留されている割り込みがどのCPUに対する割り込みであるかを判定し、該当するCPUのCPU識別情報を生成要求通知部203に通知する。
次に、生成判定部202の動作の一例を説明する。生成判定部202は、仮想計算機切り替え部204が第2仮想計算機120から第1仮想計算機110に実行権を切り替えるフローチャート(後述する図7、図10、図11、図12)において動作する。生成判定部202は、動作CPU判定部201からCPU識別情報を取得すると、仮想計算機実行状態管理情報224を参照し、該当するCPUにおいて第1仮想計算機110の実行状態を確認する。
第1仮想計算機110の実行状態がアイドル状態であれば、第1仮想計算機110がアイドル状態から、処理すべきタスクが発生したビジー状態に遷移することを意味する。そこで、生成判定部202は、あるCPUの実行権が第1仮想計算機110に切り替わる際、当該CPUにおける第1仮想計算機110の実行状態がアイドル状態であれば、擬似タスク283の生成依頼を生成要求通知部203に通知する。このとき、生成判定部202は、アイドル状態からタスク有り状態に遷移するCPUのCPU識別情報も併せて生成要求通知部203に通知する。
図3は、仮想計算機実行状態管理情報224のデータ構造の一例を示す図である。以下、図3を用いて生成判定部202の動作を具体的に説明する。図3の例では、仮想計算機システム1000が4つのCPUを備えている場合の仮想計算機実行状態管理情報224を示している。
図3の例では、仮想計算機実行状態管理情報224は、各CPUに対して、現在実行権を割り当てている仮想計算機、第1仮想計算機110の実行状態、及び第2仮想計算機120の実行状態を管理している。第1仮想計算機の実行状態及び第2仮想計算機の実行状態としては、何らかのタスクが実行されているビジー状態を示す「タスク有り」、実行するタスクがない状態を示す「アイドル状態」、擬似タスク283が実行されている状態を示す「擬似タスク有り」、及び第1仮想計算機には割り当てられないCPUであることを示す「割り当て不可」が含まれている。
図3の例において、生成判定部202は、動作CPU判定部201からCPU識別情報として「CPU3」が通知された場合、第1仮想計算機の実行状態はアイドル状態であるため、生成判定部202は、擬似タスク283を生成する必要があると判定し、擬似タスク283の生成依頼を生成要求通知部203に通知する。
次に、生成要求通知部203の動作の一例を説明する。
生成要求通知部203は、仮想計算機切り替え部204が第2仮想計算機120から第1仮想計算機110に実行権を切り替える際に実行されるフローチャート(後述する図7、図10、図11、図12)において動作する。生成要求通知部203は、生成判定部202から擬似タスク283の生成依頼と、擬似タスク283を実行するCPUのCPU識別情報とが通知されると、擬似タスク283の生成要求を第2OS125に通知する。或いは、生成要求通知部203は、仮想計算機切り替え部204から擬似タスク283の生成依頼と、擬似タスク283を実行するCPUのCPU識別情報とが通知されると、擬似タスク283の生成要求を第2仮想計算機120の第2OS125に通知する。
生成要求通知部203は、生成判定部202或いは仮想計算機切り替え部204から通知された生成依頼及びCPU識別情報を、第2OS125が認識可能な形式に変換して擬似タスク283の生成要求を通知する。
ここで、生成要求を通知する方法としては、例えば擬似タスク283を生成するための仮想割り込みを第2OS125に配送する方法が考えられる。例えば、擬似タスク283の生成要求を意味する仮想割り込みの割り込み番号を予め定めておき、生成要求通知部203は、その割り込み番号と、擬似タスク283を実行するCPUのCPU識別情報とを図4に示す割り込み保留情報221に登録すればよい。
つまり、生成要求通知部203は、擬似タスク283の生成依頼が通知されると、擬似タスク283の生成要求を直ぐに第2OS125に通知せずに、仮想割り込みを割り込み保留情報221に登録する態様を採用する。そして、生成要求通知部203は、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるタイミングが到来すると、仮想割り込み保留情報221に登録された仮想割り込みを第2OS125に通知し、第2OS125に擬似タスク283の生成要求を通知する。
この場合、擬似タスク終了要求部206は、擬似タスク283の終了要求を生成するとその終了要求を仮想割り込みとして、割り込み保留情報221に登録し、第1仮想計算機110から第2仮想計算機120に実行権が切り替わる際に、第2OS125に擬似タスク283の終了要求を仮想割り込みとして通知する。
そして、生成要求通知部203は、擬似タスク283の生成要求を通知する際、割り込み保留情報221に擬似タスク283の終了要求の仮想割り込みが登録されていれば、その仮想割り込みを削除し、当該生成要求及び当該終了要求を相殺すればよい。これにより、擬似タスク283が生成された後、直ぐに擬似タスク283が終了される事態が防止され、処理のオーバーヘッドを削減することができる。
但し、これに限定されず、生成要求通知部203は、擬似タスク283を生成すると直ぐに第2OS125に擬似タスク283の生成要求を通知する態様を採用してもよい。
図4は、割り込み保留情報221のデータ構造の一例を示す図である。以下、図4を用いて生成要求通知部203の動作を説明する。図4の割り込み保留情報221には、発生した割り込みを一意に特定する割り込み識別情報である「発生した割り込み番号」、いずれの仮想計算機に配送する割り込みであるかを示す「配送先の仮想計算機」、及びいずれのCPUに対して割り込みを配送するかを示す「配送先のCPU」が記録されている。また、割り込み保留情報221は、いずれの割り込みを優先的に配送すべきかを定めた「割り込みの優先度」を記録してもよい。
例えば、擬似タスク283の生成要求を意味する仮想割り込みの割り込み番号がIRQ6であり、生成要求通知部203が取得したCPU識別情報がCPU3であったとする。この場合、図4のレコード401に示すように、割り込み保留情報221には、「発生した割り込み番号」として「IRQ6」が登録され、「配送先の仮想計算機」として「第2仮想計算機」が登録され、「配送先のCPU」としてCPU3が登録される。
なお、上記説明では、生成要求通知部203は擬似タスク283の生成要求を通知するだけであり、擬似タスク283の生成は行っていない。但し、これに限定されず、生成要求通知部203は、第2仮想計算機120において擬似タスク283を直接生成してもよい。この場合、生成要求通知部203は、第2仮想計算機120が備える擬似タスク生成部272及び仮想割り込み処理部274の機能を実行すればよい。
一般的に、第2仮想計算機120のタスクスケジューラ275は、タスクの実行状態をランキューと呼ばれるキューで管理する。タスクスケジューラ275は、実行可能状態にあるタスクをランキューに接続し、接続したタスクのうちの一つのタスクに実行権を割り当てる。
生成要求通知部203が、第2仮想計算機120において擬似タスク283を直接生成する具体的な方法としては、例えば、予め第2OS125内に生成させていた擬似タスク283を、タスクスケジューラ275が管理するランキューに接続する方法を採用すればよい。より具体的には、仮想計算機制御装置100は第2仮想計算機120のメモリ空間にアクセス可能である。そのため、仮想計算機制御装置100に設けられた生成要求通知部203は、予め生成されている擬似タスク283が第2仮想計算機120のランキューに接続されるように、ランキューのメモリ内容を書き換えればよい。
メモリ空間におけるランキューのメモリ番地は、予め静的に決められたメモリ番地を採用してもよいし、システムの初期化時や起動時に、所定のメモリ番地を第2仮想計算機120から仮想計算機制御装置100に通知させ、そのメモリ番地を採用してもよい。ここで、システムの初期化時としては、第2仮想計算機120の初期化時のほか、仮想計算機システム1000の初期化時や、第2OS125の初期化時等が該当する。また、ランキューのメモリ番地の特定方法としては、CPUのレジスタにそのCPUに割り当てられるタスクのメモリ番地が登録されている場合は、そのレジスタに登録されているメモリ番地を第2仮想計算機120のランキューのメモリ番地として特定してもよい。
次に、仮想計算機切り替え部204の動作の一例を説明する。
仮想計算機切り替え部204は、仮想計算機の切り替え要求が発生すると、割り込み保留情報221、スケジュールポリシー管理情報222、割り当て可能CPU情報223、及び仮想計算機実行状態管理情報224のうちの少なくともいずれか1つに基づき、複数の仮想計算機のうちのいずれか1つの仮想計算機に実行権を割り当てる。
図5は、割り当て可能CPU情報223のデータ構造の一例を示す図である。割り当て可能CPU情報223は、いずれの仮想計算機にいずれのCPUが割り当て可能であるかを登録する。仮想計算機切り替え部204は、あるCPUにおいて仮想計算機の切り替え要求が発生すると、割り当て可能CPU情報223を参照し、当該CPUにおいて実行権を割り当てることができる仮想計算機を認識する。
割り当て可能CPU情報223は、典型的には、システムの初期化時やシステムの起動時に設定される。割り当て可能CPU情報223は、各仮想計算機と、割り当て可能なCPUとの対応関係が管理できる情報であれば、どのようなデータ形式を採用してもよい。
図5の例では、第1仮想計算機110にCPU3を割り当てることは可能であるが、第1仮想計算機110にCPU3以外のCPUを割り当てることができないことがわかる。図5の例において、CPU3に対して仮想計算機の切り替え要求が発生すると、仮想計算機切り替え部204は、第1仮想計算機110と第2仮想計算機120とを実行権の割り当て対象とする。或いは、図5の例において、CPU3以外のCPUに対して仮想計算機の切り替え要求が発生すると、仮想計算機切り替え部204は、第2仮想計算機120のみを実行権の割り当て対象とする。
図6は、スケジュールポリシー管理情報222のデータ構造の一例を示す図である。スケジュールポリシー管理情報222は、仮想計算機の実行権の切り替え方式が規定された情報である。具体的には、スケジュールポリシー管理情報222は、第1、第2仮想計算機110、120に実行権を割り当てる際の優先度が固定された固定優先度ポリシー601と、第1、第2仮想計算機110、120の実行権を時分割で割り当てる時分割ポリシー602とを含む。その他、スケジュールポリシー管理情報222として、時分割ポリシー602において、実行権の切り替え時に動的に優先度を変更する時分割ポリシーを採用してもよい。
仮想計算機切り替え部204は、固定優先度ポリシー601又は時分割ポリシー602に規定された優先度に従って、いずれの仮想計算機に実行権を割り当てるかを決定する。例えば、実行権の切り替え方式として固定優先度ポリシー601が採用される場合、優先度の値が大きい方が優先度が高いと仮定すると、仮想計算機切り替え部204は、第2仮想計算機120よりも第1仮想計算機110に優先的に実行権を割り当てる。
一方、実行権の切り替え方式として時分割ポリシー602が採用される場合、時分割ポリシー602には第1、第2仮想計算機110、120の優先度が同じに設定されている。そのため、仮想計算機切り替え部204は、優先度に関係なく、タイムスライス(或いは「タイムクォンタム」と呼称されることもある。)を第1、第2仮想計算機110、120に交互に割り当て、一方の仮想計算機がタイムスライスを使い切ると、他方の仮想計算機に実行権を切り替える。
仮想計算機切り替え部204に対する実行権の切り替え要求は、種々の契機により発生する。種々の契機としては、例えば、第1仮想計算機110がアイドルタスク263を実行してアイドル状態になり、そのことを、アイドル遷移通知部264が仮想計算機切り替え部204に通知する場合が挙げられる。
また、種々の契機としては、例えば、第2仮想計算機120があるCPUにおいてアイドルタスク284を実行して当該CPUに対してアイドル状態となり、そのことをアイドル遷移通知部286が仮想計算機切り替え部204に通知する場合が挙げられる。また、種々の契機としては、例えば、実行権の切り替え方式として時分割ポリシー602を採用した場合において、ある仮想計算機がタイムスライスを使い切った場合が挙げられる。また、種々の契機としては、例えば、実行権の切り替え方式として固定優先度ポリシー601を採用した場合において、現在処理を実行している仮想計算機よりも優先度の高い仮想計算機に対する割り込みが発生した場合が挙げられる。
このような契機が発生すると、仮想計算機切り替え部204は、優先度の高い仮想計算機に、或いはタイムスライスを使い切っていない仮想計算機に、或いはアイドル状態ではない仮想計算機に、実行権を切り替える。
仮想計算機切り替え部204は、動作CPU判定部201或いは割り込み判定部205から実行権を切り替えるべきCPUのCPU識別情報が通知される。仮想計算機切り替え部204は、あるCPUに対して仮想計算機の実行権を切り替える場合、仮想計算機実行状態管理情報224における当該CPUに関する情報を、切り替え後の情報に更新した後、当該CPUの実行権を切り替える。
割り込み判定部205は、例えば割り込みコントローラ55から割り込みが通知されると、その割り込みの内容を判定する。ここで、割り込みの内容としては、割り込み対象となる仮想計算機や、割り込み対象となるCPUに関する情報が挙げられる。ここで、各仮想計算機は予め何の割り込みが必要であるか仮想計算機制御装置100に通知している。或いは、仮想計算機制御装置100が各仮想計算機に必要な割り込みを予め決定している。そして、割り込み判定部205は、割り込み番号と、割り込みの内容とを対応付けて管理している。したがって、割り込み判定部205は、割り込みコントローラ55から割り込み番号が指定されて割り込みが通知されると、通知された割り込み番号から、割り込み対象となる仮想計算機及びCPUを判定することができる。
例えば、実行権の切り替え方式として時分割ポリシー602を採用した場合、ある仮想計算機があるCPUのタイムスライスを使い切り、タイムアウトしたとする。この場合、割り込み判定部205は、割り込みコントローラ55からタイマ割り込みが通知される。そして、割り込み判定部205は、時分割スケジューリングの際に登録されたタイマ割り込みの割り込み番号を仮想計算機切り替え部204に通知すると共に、予め登録されているタイマ処理用の割り込みハンドラを用いて当該CPUにおいてタイマ割り込みが発生したことを仮想計算機切り替え部204に通知する。
また、割り込み判定部205は、割り込みが発生した場合、割り込み番号、割り込みの配送先の仮想計算機、割り込みの配送先のCPU、及びその他、その割り込みを処理するために必要な情報を仮想計算機切り替え部204に通知する。ここで、仮想計算機切り替え部204が、割り込みを直ぐに配送すべきではないと判定すると、割り込み判定部205は、発生した割り込みの割り込み番号、配送先の仮想計算機、及び配送先のCPUを割り込み保留情報221に登録する。
次に、擬似タスク終了要求部206の動作の一例を説明する。
擬似タスク終了要求部206は、第1仮想計算機110がアイドル状態になり、仮想計算機切り替え部204が第1仮想計算機110から第2仮想計算機120に実行権を切り替えるフローチャート(後述する図8)を実行する際に動作する。擬似タスク終了要求部206は、仮想計算機切り替え部204から擬似タスク283の終了依頼と、動作CPU判定部201からCPU識別情報を受け取ると、擬似タスク283の終了要求を生成し、擬似タスク283の終了要求を第2OS125に通知する。
擬似タスク終了要求部206は、動作CPU判定部201及び仮想計算機切り替え部204から通知された終了依頼及びCPU識別情報を、第2OS125が認識可能な形式に変換して擬似タスク283の終了要求を通知する。
ここで、終了要求を通知する方法としては、例えば擬似タスク283を終了するための仮想割り込みを第2OS125に配送する方法が考えられる。例えば、擬似タスク283の終了要求を意味する仮想割り込み用の割り込み番号を予め定めておき、擬似タスク終了要求部206は、その割り込み番号と、擬似タスク283を終了するCPUのCPU識別情報とを図4に示す割り込み保留情報221に登録すればよい。
次に、図4に示す割り込み保留情報221を用い、擬似タスク終了要求部206の動作を具体的に説明する。
例えば、擬似タスク283の終了要求を意味する仮想割り込みの割り込み番号がIRQ7であり、擬似タスク終了要求部206が取得したCPU識別情報がCPU3であったとする。この場合、図4のレコード402に示すように、割り込み保留情報221には、「発生した割り込み番号」として「IRQ7」が登録され、「配送先の仮想計算機」として「第2仮想計算機」が登録され、「配送先のCPU」としてCPU3のCPU識別情報である「CPU3」が登録される。
なお、上記説明では、擬似タスク終了要求部206は擬似タスク283の終了要求を通知するだけであり、直接、擬似タスク283を終了させていない。但し、これに限定されず、擬似タスク終了要求部206は、第2仮想計算機120の擬似タスク283を直接終了させてもよい。この場合、擬似タスク終了要求部206は、第2仮想計算機120が備える擬似タスク終了部273及び仮想割り込み処理部274の機能を実行すればよい。
擬似タスク終了要求部206が、第2仮想計算機120において擬似タスク283を直接終了させる具体的な方法としては、例えば、タスクスケジューラ275が管理するランキューから対象となる擬似タスク283を検索し、検索した擬似タスク283をランキューから外す方法を採用すればよい。より具体的には、仮想計算機制御装置100は第2仮想計算機120のメモリ空間にアクセスすることが可能である。そのため、仮想計算機制御装置100に設けられた擬似タスク終了要求部206は、検索した擬似タスク283が第2仮想計算機120のランキューから外されるように、ランキューのメモリ内容を書き換えればよい。
メモリ空間におけるランキューのメモリ番地は、予め静的に決められたメモリ番地を採用してもよいし、システムの初期化時や起動時に、所定のメモリ番地を第2仮想計算機120から仮想計算機制御装置100に通知させ、そのメモリ番地を採用してもよい。ここで、システムの初期化時としては、第2仮想計算機120の初期化時のほか、仮想計算機システム1000の初期化時や、第2OS125の初期化時等が該当する。また、ランキューのメモリ番地の特定方法としては、CPUのレジスタにそのCPUに割り当てられるタスクのメモリ番地が登録されている場合は、そのレジスタに登録されているメモリ番地を第2仮想計算機120のランキューのメモリ番地として特定してもよい。
また、擬似タスク終了要求部206は、第2仮想計算機120に実行権が切り替わるタイミングが到来する際に擬似タスク283の終了要求を第2OS125に通知する態様を採用してもよい。この場合、擬似タスク終了要求部206は、擬似タスク283の終了要求を生成すると、その終了要求を仮想割り込みとして、割り込み保留情報221に登録すればよい。
この場合、生成要求通知部203は、擬似タスク283の生成要求を生成するとその生成要求を仮想割り込みとして、割り込み保留情報221に登録し、第1仮想計算機110から第2仮想計算機120に実行権が切り替わる際に、第2OS125に擬似タスク283の終了要求を仮想割り込みとして通知する態様を採用すればよい。
そして、擬似タスク終了要求部206は、擬似タスク283の終了要求を通知する際に、割り込み保留情報221に擬似タスク283の生成要求の仮想割り込みが登録されていれば、その仮想割り込みを削除し、当該生成要求及び当該終了要求を相殺すればよい。
これにより、擬似タスク283が終了された後、直ぐに擬似タスク283が生成される事態が防止され、処理のオーバーヘッドを削減することができる。
但し、これに限定されず、擬似タスク終了要求部206は、擬似タスク283を生成すると直ぐに第2OS125に擬似タスク283の終了要求を通知する態様を採用してもよい。
図7は、本実施の形態による仮想計算機制御装置100が擬似タスク283の生成要求を生成する際の動作を示すフローチャートである。まず、上述した何らかの契機により、第2仮想計算機120から第1仮想計算機110への実行権の切り替え要求が仮想計算機切り替え部204に通知される(S701)。これは、第1仮想計算機110において新たに処理すべきタスクが発生した可能性があることを示す。
次に、動作CPU判定部201は、複数のCPUの中から第1仮想計算機110に実行権が割り当てられるCPUを特定する(S702)。そして、動作CPU判定部201は、特定したCPUのCPU識別情報を仮想計算機切り替え部204、生成判定部202、生成要求通知部203、及び擬似タスク終了要求部206に通知する。これにより、仮想計算機切り替え部204、生成判定部202、生成要求通知部203、及び擬似タスク終了要求部206は、実行権が切り替えられるCPUを特定することができる。
次に、生成判定部202は、図3に示す仮想計算機実行状態管理情報224を参照し、該当するCPUにおいて、第1仮想計算機110がアイドル状態であるか否かを確認する(S703)。図3の例において、動作CPU判定部201により実行権を切り替えるCPUとしてCPU3が特定されたとする。この場合、生成判定部202は、CPU3において第1仮想計算機110はアイドル状態であると判定する。
ここで、生成判定部202は、実行権が切り替えられるCPUにおいて、第1仮想計算機110がアイドル状態であれば、当該CPUにおいて第1仮想計算機110では何も処理がない状態から新たに処理が発生した状態と判定できる。したがって、生成判定部202は、当該CPUにおいて第1仮想計算機110がアイドル状態であれば(S704でYes)、擬似タスク283を生成する必要があると判定し、擬似タスク283の生成依頼を生成要求通知部203に通知する。そして、生成要求通知部203は、第2仮想計算機120に、当該CPUに割り当てられる擬似タスク283の生成要求を生成する(S705)。
ここで、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待って生成要求及び終了要求を第2OS125に通知する態様を採用する場合、生成要求通知部203は、生成した擬似タスク283の生成要求を第2OS125に通知せずに仮想割り込み保留情報221に登録すればよい。
一方、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待たずに生成要求を第2OS125に通知する態様を採用する場合、生成要求通知部203は、直ぐに生成要求を第2OS125に通知すればよい。
実行権が切り替えられるCPUにおいて第1仮想計算機110がアイドル状態でなければ(S704でNo)、生成判定部202は、擬似タスク283を生成する必要がないと判定し、処理をS706に進める。つまり、実行権が切り替えられるCPUにおいて、第1仮想計算機110がアイドル状態でないということは、第1仮想計算機110は当該CPUを用いて何らかのタスクを以前から実行しており、対応する擬似タスク283は既に生成されていると考えられる。したがって、この場合、生成判定部202は擬似タスク283の生成する必要があると判定しない。
次に、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、実行権が切り替えられるCPUに関する情報を更新する(S706)。具体的には、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、実行権が切り替えられるCPUにつき、「実行権を割り当てている仮想計算機」を「第1仮想計算機」に変更し、「第1仮想計算機の実行状態」を「タスク有り」に変更し、「第2仮想計算機の実行状態」を必要に応じて「擬似タスク有り」に変更する。
次に、仮想計算機切り替え部204は、該当するCPUの実行権を第2仮想計算機120から第1仮想計算機110に切り替える(S707)。
このように、生成判定部202は、第2仮想計算機120から第1仮想計算機110に実行権が切り替えられる際に、実行権が切り替えられたCPUにおける第1仮想計算機110の実行状態がアイドル状態であれば、擬似タスク283を生成すると判定する。そして、生成要求通知部203は第2OS125に生成要求を通知する。
図8は、本実施の形態の仮想計算機制御装置100が、擬似タスク283の終了要求を生成する際の動作を示すフローチャートである。まず、第1仮想計算機110はCPU3においてアイドルタスクを実行し、アイドル状態に遷移する(S801)。これは、これまで第1仮想計算機110で実行されていたタスクがなくなり、第1仮想計算機110が処理すべきタスクが消失したことを示す。
次に、アイドル遷移通知部264は、第1仮想計算機110がビジー状態からアイドル状態に遷移したことを仮想計算機切り替え部204に通知する(S802)。次に、動作CPU判定部201は、第1仮想計算機110でアイドルタスクが実行されたCPUを特定する(S803)。そして、動作CPU判定部201は、特定したCPUのCPU識別情報を仮想計算機切り替え部204及び生成要求通知部203に通知する。これにより、仮想計算機切り替え部204及び生成要求通知部203は、実行権が切り替えられるCPUを特定することができる。
次に、擬似タスク終了要求部206は、擬似タスク283の終了要求を生成する。(S804)。ここで、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待って生成要求及び終了要求を第2OS125に通知する態様を採用する場合、生成要求通知部203は、生成した擬似タスク283の終了要求を第2OS125に通知せずに割り込み保留情報221に登録すればよい。
一方、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待たずに生成要求及び終了要求を第2OS125に通知する態様を採用する場合、生成要求通知部203は、直ぐに生成要求を第2OS125に通知すればよい。
次に、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において実行権が切り替えられるCPUに関する情報を更新する(S805)。具体的には、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、実行権が切り替えられるCPUにつき、「実行権を割り当てている仮想計算機」を「第2仮想計算機」に変更し、「第1仮想計算機の実行状態」を「アイドル状態」に変更し、「第2仮想計算機の実行状態」を必要に応じて「アイドル状態」又は「タスク有り」に変更する。
次に、仮想計算機切り替え部204は、第2仮想計算機120に該当CPUの実行権を割り当てる(S806)。
図9は、本実施の形態の仮想計算機制御装置100が、第2OS125に擬似タスク283の生成要求及び終了要求を通知する際の動作を示すフローチャートである。なお、図9のフローチャートは、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待って生成要求及び終了要求を第2OS125に通知する態様を採用した場合のフローチャートである。
まず、何らかの契機により、第1仮想計算機110から第2仮想計算機120への実行権の切り替え要求が仮想計算機切り替え部204に通知される。そして、仮想計算機切り替え部204は、第1仮想計算機110から第2仮想計算機120に、あるCPUの実行権を切り替える(S901)。
ここで、仮想計算機切り替え部204は、仮想計算機を切り替える際、割り込み判定部205から取得する割り込みに関する情報や割り込み保留情報221に記録される割り込みに関する情報に基づき、切り替え先の仮想計算機が第2仮想計算機120であると判定すればよい。
次に、第2OS125の仮想割り込み処理部274は、生成要求通知部203から通知される擬似タスク283の生成要求の仮想割り込み、又は擬似タスク終了要求部206から通知される擬似タスク283の終了要求の仮想割り込みを受け取る(S902)。
次に、仮想割り込み処理部274は、受け取った仮想割り込みが擬似タスク283の生成要求の仮想割り込みであるか、或いは擬似タスク283の終了要求の仮想割り込みであるかを判定する(S903)。
そして、受け取った仮想割り込みが擬似タスク283の生成要求の仮想割り込みであれば(S903で生成要求)、仮想割り込み処理部274は、擬似タスク283が割り当てられるCPUのCPU識別情報を生成要求通知部203から受け取り、擬似タスク283の生成要求の仮想割り込みが発生した事実とCPU識別情報とを、擬似タスク生成部272に通知する。次に、擬似タスク生成部272は、CPU識別情報により指定されたCPUに割り当てられる擬似タスク283を生成する(S904)。
一方、受け取った仮想割り込みが擬似タスク283の終了要求の仮想割り込みであれば(S903で終了要求)、仮想割り込み処理部274は、擬似タスク終了要求部206から擬似タスク283が割り当てられるCPUのCPU識別情報を受け取る。そして、仮想割り込み処理部274は、仮想割り込みが発生した事実とCPU識別情報とを、擬似タスク終了部273に通知する。次に、擬似タスク終了部273は、CPU識別情報により指定されたCPUに割り当てられている擬似タスク283を終了させる(S905)。
図10は、第2仮想計算機120がビジー状態からアイドル状態に遷移したことを契機に、擬似タスク283の生成要求が生成される際の動作を示すフローチャートである。
まず、第2仮想計算機120は、あるCPUにおいてアイドルタスク284を実行し、当該CPUにおいてビジー状態からアイドル状態に遷移する(S1001)。これは、これまで第2仮想計算機120が当該CPUで実行していたタスクがなくなり、第2仮想計算機120が処理すべきタスクが消失したことを示す。
次に、アイドル遷移通知部286は、第2仮想計算機120がビジー状態からアイドル状態に遷移したことを仮想計算機切り替え部204に通知する(S1002)。次に、動作CPU判定部201は、第2仮想計算機110でアイドルタスクが実行されたCPUを特定する(S1003)。そして、動作CPU判定部201は、特定したCPUのCPU識別情報を仮想計算機切り替え部204、及び生成要求通知部203に通知する。これにより、仮想計算機切り替え部204及び生成要求通知部203は、実行権が切り替えられるCPUを特定することができる。
本実施の形態に係る仮想計算機制御装置100では、第1仮想計算機110があるCPUにおいてアイドルタスク263以外のタスクを実行している場合、第2仮想計算機120は当該CPUにおいてアイドルタスク284よりも擬似タスク283を優先して実行している。したがって、第2仮想計算機120があるCPUにおいてアイドルタスク284を実行している場合、第1仮想計算機110は当該CPUにおいてアイドルタスクを実行している。
そのため、第2仮想計算機120があるCPUにおいてビジー状態からアイドル状態に遷移したことを契機に、仮想計算機の切り替えの要求が発生した場合、生成判定部202は、第1仮想計算機110が当該CPUにおいてアイドル状態であることが明らかであるため、第1仮想計算機110が当該CPUにおいてアイドル状態であるか否かを確認する必要はない。
次に、生成判定部202は、割り込み保留情報221を参照し、第1仮想計算機110に対する仮想割り込みであって、該当するCPUに対する仮想割り込みが登録されているか否か確認する(S1004)。そして、生成判定部202は、実行権が切り替えられるCPUにおいて第1仮想計算機110に対する仮想割り込みが登録されていれば、第1仮想計算機110で当該CPUに対して何も処理がない状態から新たに処理する状態が発生したと判定する。
次に、当該CPUにおいて第1仮想計算機110に対する仮想割り込みが割り込み保留情報221に登録されている場合(S1005でYes)、生成判定部202は、擬似タスク283を生成する必要があると判定し、擬似タスク283の生成依頼を生成要求通知部203に通知する。そして、生成要求通知部203は、擬似タスク283の生成要求を生成する(S1006)。
ここで、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待って生成要求及び終了要求を第2OS125に通知する態様を採用する場合、生成要求通知部203は、生成した擬似タスク283の終了要求を割り込み保留情報221に登録すればよい。
一方、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待たずに生成要求及び終了要求を第2OS125に通知する態様を採用する場合、生成要求通知部203は、直ぐに生成要求を第2OS125に通知すればよい。
次に、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、該当するCPUに関する情報を更新する(S1007)。具体的には、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、実行権が切り替えられるCPUにつき、「実行権を割り当てている仮想計算機」を「第1仮想計算機」に変更し、「第1仮想計算機の実行状態」を「タスク有り」に変更し、「第2仮想計算機の実行状態」を「擬似タスク有り」に変更する。次に、仮想計算機切り替え部204は、該当するCPUの実行権を第1仮想計算機110に切り替える(S1007)。
一方、該当するCPUにおいて第1仮想計算機110に対する仮想割り込みが割り込み保留情報221に登録されていない場合(S1005でNo)、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、当該CPUに関する情報を更新する(S1008)。具体的には、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、当該CPUにつき、「実行権を割り当てている仮想計算機」を「第2仮想計算機」に変更し、「第2仮想計算機120の実行状態」を「アイドル状態」に変更する。そして、仮想計算機切り替え部204は、第2仮想計算機120に当該CPUの実行権を切り替える(S1008)。
なお、S1008において、仮想計算機切り替え部204は第2仮想計算機120に実行権を切り替えたが、実行権を第1仮想計算機110に切り替えても問題ない。
このように、生成判定部202は、あるプロセッサにおいて、第2仮想計算機120がタスクの実行状態からアイドル状態に遷移した際に、当該プロセッサにおいて第1仮想計算機110が処理すべき処理待ちのタスクが存在すれば、擬似タスク283を生成すると判定する。そして、生成要求通知部203は擬似タスク283の生成要求を生成する。
図11は、第1、第2仮想計算機110、120の実行権を時分割で割り当てる時分割ポリシー602を採用した場合において、第2仮想計算機120がタイムスライスを使い切った際の処理を示すフローチャートである。
まず、割り込み判定部205は、割り込みコントローラ55からタイマ割り込みを受け付ける(S1101)。次に、割り込み判定部205は、いずれのCPUで、仮想計算機がタイムスライスを使い切り、タイマ割り込みが発生したのか判定する(S1102)。
次に、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224を参照し、該当するCPUにおいて実行権が割り当てられている仮想計算機が、第2仮想計算機120であることを確認する(S1103)。
次に、生成判定部202は、仮想計算機実行状態管理情報224を参照し、該当するCPUにおいて、第1仮想計算機110がアイドル状態であるか否かを確認する(S1104)。
該当するCPUにおいて、第1仮想計算機がアイドル状態でなければ(S1105でNo)、該当するCPUにおいて何らかのタスクが以前から実行されているため、対応する擬似タスク283は既に生成されていると考えられる。したがって、生成判定部202は、S1105でNoの場合、擬似タスク283の生成要求を行わず処理をS1110に進める。次に、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において該当するCPUに関する情報を更新し、第1仮想計算機110に該当するCPUの実行権を切り替える(S1110)。
一方、該当するCPUにおいて第1仮想計算機110がアイドル状態であれば(S1105でYes)、生成判定部202は、割り込み保留情報221を参照し、第1仮想計算機110に対する仮想割り込みであって、該当するCPUに対する仮想割り込みが発生しているか否かを確認する(S1106)。
そして、第1仮想計算機110に対する仮想割り込みであって、該当するCPUに対する仮想割り込みが存在した場合(S1107でYes)、生成判定部202は、擬似タスク283を生成すると判定し、擬似タスク283の生成依頼を生成要求通知部203に通知する。そして、生成要求通知部203は擬似タスク283の生成要求を生成する(S1108)。次に、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において該当するCPUに関する情報を更新し、該当するCPUの実行権を第1仮想計算機110に切り替える(S1109)。具体的には、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、実行権が切り替えられるCPUにつき、「実行権を割り当てている仮想計算機」を「第1仮想計算機」に変更し、「第1仮想計算機の実行状態」を「タスク有り」に変更し、「第2仮想計算機の実行状態」を必要に応じて「タスク有り」又は「アイドル状態」に変更する。
一方、第1仮想計算機110に対する仮想割り込みであって、該当するCPUに対する仮想割り込みが存在しなかった場合(S1007でNo)、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において該当するCPUに関する情報を更新し、第2仮想計算機120に該当するCPUの実行権を切り替える(S1111)。なお、S1111において、仮想計算機切り替え部204は第2仮想計算機120に該当するCPUの実行権を切り替えたが、実行権を第1仮想計算機110に切り替えてもよい。
このように、第1、第2仮想計算機110、120は、あるCPUに対する実行権が時分割で割り当てられる場合、生成判定部202は、第2仮想計算機120がタイムスライスを使い切った際に、当該CPUにおいて、第1仮想計算機110の実行状態がアイドル状態であり、且つ、第1仮想計算機110が処理すべき処理待ちのタスクが存在すれば、擬似タスク283を生成すると判定する。
図12は、固定優先度ポリシー601を用いて、第1、第2仮想計算機110、120の実行権を決定する構成を採用した場合において、第2仮想計算機120のタスクの実行中に第1仮想計算機110に対する割り込みが発生した際の処理を示すフローチャートである。なお、以下の説明では、第1仮想計算機110の優先度は、第2仮想計算機120の優先度よりも高いものとする。
まず、割り込み判定部205は、割り込みコントローラ55から割り込みを受け付ける(S1201)。次に、割り込み判定部205は、受け付けた割り込みが第1仮想計算機110に対する割り込みであることを確認する。また、割り込み判定部205は、受け付けた割り込みがいずれのCPUに対する割り込みであるかを判定する(S1202)。
次に、仮想計算機切り替え部204は、仮想計算機の実行権を切り替えるか否かを判定するために、固定優先度ポリシー601を参照する(S1203)。ここでは、仮想計算機切り替え部204は、第1仮想計算機110の優先度が第2仮想計算機120の優先度より高いと判定する。そのため、仮想計算機切り替え部204は、第1仮想計算機110に対して発生した割り込みを配送し、第1仮想計算機110に実行権を切り替えると判定する。
第1仮想計算機110の優先度が第2仮想計算機120より高い場合において、第2仮想計算機120の実行状態がタスク有りであれば、第1仮想計算機110は該当するCPUにおいてアイドル状態である。したがって、仮想計算機切り替え部204は、第1仮想計算機110に割り込みをする場合、第1仮想計算機110において新たに処理すべきタスクが発生したと判定できる。
次に、生成要求通知部203は、該当するCPUに対して擬似タスク283を生成する必要があると判定し、擬似タスク283の生成依頼を生成要求通知部203に通知する。そして、生成要求通知部203は、擬似タスク283の生成要求を生成する(S1204)。
ここで、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待って生成要求及び終了要求を第2OS125に通知する態様を採用する場合、生成要求通知部203は、生成した擬似タスク283の終了要求を第2OS125に通知せずに割り込み保留情報221に登録すればよい。
一方、第1仮想計算機110から第2仮想計算機120に実行権が切り替わるのを待たずに生成要求及び終了要求を第2OS125に通知する態様を採用する場合、生成要求通知部203は、直ぐに生成要求を第2OS125に通知すればよい。
次に、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、該当するCPUに関する情報を更新し、第1仮想計算機110に該当するCPUの実行権を切り替える(S1205)。具体的には、仮想計算機切り替え部204は、仮想計算機実行状態管理情報224において、実行権が切り替えられるCPUにつき、「実行権を割り当てている仮想計算機」を「第1仮想計算機」に変更し、「第1仮想計算機の実行状態」を「タスク有り」に変更し、「第2仮想計算機の実行状態」を「擬似タスク有り」に変更する。
このように、第1仮想計算機110の実行権が第2仮想計算機120よりも高く設定されている場合、生成判定部202は、あるCPUにおいて第2仮想計算機120がタスクを実行している際に、当該CPUにおいて第1仮想計算機110に対する割り込みが発生した場合、擬似タスク283を生成すると判定する。
以上の構成により、本発明の仮想計算機制御装置100に省電力機能を設けなくても、仮想計算機制御装置100は、OSの省電力機能を生かして、適切なタイミングでCPUを省電力状態にし、仮想計算機システム1000全体の省電力を実現することができる。
以下、本発明の仮想計算機制御装置により、システム全体の省電力制御がどのように実現されるかを説明する。
図13は、本実施の形態の比較例における仮想計算機システムの仮想計算機内のタスクの実行状況の一例を示した図である。第2仮想計算機では、CPU0、CPU1、CPU2において、それぞれタスクA、タスクB、タスクCが実行されているが、CPU3において、アイドルタスクが実行されている。一方、第1仮想計算機においては、CPU3にタスクXが割り当てられ、実行されている。
第2OSの省電力制御部は、CPUの稼働状況を調べ、一定の期間、CPUがアイドル状態であることを統計的にサンプリングし、その結果に応じて、CPUの電力供給を止める、或いはCPUに供給するクロック周波数を下げる。例えば、第2仮想計算機において、第2OSの省電力制御部が、CPU3以外のCPU上で動作して、全てのCPUの稼働状況を調べたとする。この場合、省電力制御部は、第2OSが管理している範囲のみ把握することが可能なので、CPU3はアイドル状態であると判断してしまう。しかしながら、実際には、第1仮想計算機は、CPU3においてタスクXを実行している。したがって、第2OSの省電力制御部は、第1仮想計算機がCPU3においてタスクXを動作させているにも拘わらず、CPU3がアイドル状態であると判定し、仮想計算機システム全体のCPUの使用状況を誤って判定してしまう。
図14及び図15は、本実施の形態の仮想計算機制御装置100における仮想計算機内のタスクの実行状況の一例を示した図である。図14の例では、第1仮想計算機110においてCPU3にタスクXが割り当てられていることに対応して、第2仮想計算機120においてCPU3に擬似タスクが割り当てられている。
第1仮想計算機110において、例えば、CPU3の実行状態がタスク有りになって実行中になった場合、第2仮想計算機120ではCPU3の実行状態がアイドル状態になる前に必ず擬似タスクが実行される。
省電力制御部271は、全てのCPUの稼働状況を調べた場合、CPU3をアイドル状態ではなく、擬似タスクが実行されていると判定する。そのため、省電力制御部271は、CPU3の実行状態がタスク有りであると判定する。したがって、CPU3は、省電力制御部271により省電力状態にされない。
図15の例では、第2仮想計算機120は、CPU3でアイドルタスクを実行しており、CPU3がアイドル状態になっている。そのため、第2仮想計算機120においてCPU3に割り当てられていた擬似タスクは終了されている。
その状況で、第2仮想計算機120においてCPU3に割り当てるタスクがなければ、第2仮想計算機120でもCPU3はアイドル状態になる。したがって、省電力制御部271は、第2仮想計算機120においてCPU3はアイドル状態であると判定する。この判定は、第1仮想計算機110も含めた仮想計算機システム1000全体でCPU3がアイドル状態であると判定することに等しい。したがって、省電力制御部271がCPU3を省電力状態にしても問題ない。
なお、本発明の実施の形態では、便宜上、第1仮想計算機110と第2仮想計算機120との2つの仮想計算機を取り上げて説明したが、第1仮想計算機110に相当する仮想計算機が複数になってもよい。また、第1、第2仮想計算機110、120の他に第3仮想計算機が存在すれば、仮想計算機制御装置100は第1仮想計算機110と同様にして、第3仮想計算機に対応する擬似タスクを第2仮想計算機120に生成すればよい。これにより、第2仮想計算機120の省電力制御部271は、該当するCPUを適切に省電力状態にすることができる。
なお、本発明の実施の形態を示す図2の各機能ブロックは、典型的にはプロセッサと外部メモリとの協同で処理されるプログラムとして実現されるが、集積回路であるLSIとしてもよい。これらは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
本発明はプロセッサとメモリ装置を備えた情報処理システムであれば、あらゆる電子機器、情報機器、AV機器、通信機器や家電機器にも適用可能であり、例えば、PC(パーソナルコンピュータ)、携帯電話、スマートフォンやPDAなどの携帯情報端末、テレビ、ハーディスクレコーダー、DVDやブルーレイなどの各種ディスクレコーダーや各種ディスクプレイヤー、カーナビゲーションシステムなどにも応用できることはいうまでもない。
なお、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
(本実施の形態における仮想計算機制御装置の纏め)
(1)本実施の形態における仮想計算機制御装置は、1以上のプロセッサが割り当てられ、第1オペレーティングシステムが動作する第1仮想計算機と、1以上のプロセッサが割り当てられ、第2オペレーティングシステムが動作する第2仮想計算機とを制御する仮想計算機制御装置であって、前記第2オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、前記第2仮想計算機が処理するタスクが割り当てられていないプロセッサに前記第1仮想計算機が処理するタスクが割り当てられている場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第2オペレーティングシステムに通知する擬似タスク生成要求部を備える。
この構成によれば、第2仮想計算機が処理するタスクが割り当てられていないプロセッサに第1仮想計算機が処理するタスクが割り当てられている場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求が第2オペレーティングシステムに通知される。これにより、第2仮想計算機において、擬似タスクが生成され、該当するCPUに割り当てられる。その結果、第2オペレーティングシステムは該当するCPUにおいて、タスクが実行されていると判定する。その結果、該当するCPUにおいて第1仮想計算機のタスクが実行されているにも拘わらず、第2オペレーティングシステムが備える省電力制御部が該当するCPUを省電力状態にするという事態を回避することができる。したがって、仮想計算機制御装置の内部に複雑な省電力制御部を設けることなく、オペレーティングシステムが備えている省電力制御部を利用して、仮想計算機システム全体の省電力制御を適切に行うことができる。
(2)前記擬似タスク生成要求部は、前記第2仮想計算機から前記第1仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記第1仮想計算機の状態に基づき、前記擬似タスクを生成するか否かを判定する生成判定部と、前記生成判定部が擬似タスクを生成すると判定した場合、前記擬似タスクの生成要求を前記第2オペレーティングシステムに通知する生成要求通知部とを備えてもよい。
この構成によれば、あるプロセッサに対する実行権が第2仮想計算機から第1仮想計算機に切り替えられる際に擬似タスクを生成するか否かが判定され、生成すると判定された場合、擬似タスクの生成要求が第2オペレーティングシステムに通知される。そのため、擬似タスクの生成の有無の判定を適切なタイミングで行うことができる。
(3)前記生成判定部は、前記第2仮想計算機から前記第1仮想計算機に前記実行権が切り替えられる際に、前記実行権が切り替えられたプロセッサにおける前記第1仮想計算機の実行状態がアイドル状態であれば、前記擬似タスクを生成すると判定してもよい。
何らかの契機によるあるプロセッサの実行権が第2仮想計算機から第1仮想計算機に切り替わった場合、第1仮想計算機がアイドル状態であれば、当該プロセッサは第1仮想計算機のタスクを処理する直前の状態である。したがって、この状態では、第2仮想計算機において当該プロセッサの擬似タスクはまだ生成されていない。そこで、本構成では、この状態において擬似タスクを生成すると判定する。
一方、何らかの契機によりあるプロセッサの実行権が第2仮想計算機から第1仮想計算機に切り替わった場合、当該プロセッサにおいて第1仮想計算機がアイドル状態でなく、タスクが割り当てられている状態であれば、第2仮想計算機において当該プロセッサの擬似タスクは既に生成されているはずであり、擬似タスクを生成する必要はない。したがって、本構成では、この状態において擬似タスクの生成しないと判定する。これにより、不必要に擬似タスクが生成される事態を回避することができる。
(4)前記生成判定部は、あるプロセッサにおいて、前記第2仮想計算機がタスクの実行状態からアイドル状態に遷移した際に、当該プロセッサにおいて前記第1仮想計算機が処理すべき処理待ちのタスクが存在すれば、前記擬似タスクを生成すると判定してもよい。
あるプロセッサにおいて第2仮想計算機がタスクの実行状態からアイドル状態に遷移した場合、第1仮想計算機において当該プロセッサに対する処理待ちのタスクが存在すれば、当該プロセッサの実行権が第1仮想計算機から第2仮想計算機に切り替えられ、当該処理待ちのタスクが処理される。この場合、当該プロセッサにおいて、第2仮想計算機はアイドル状態であるが、第1仮想計算機はタスクの実行状態となる。そこで、本構成では、この場合、擬似タスクを生成すると判定している。これにより、あるプロセッサにおいて、第1仮想計算機のタスクが割り当てられているにも拘わらず、省電力制御部によって当該プロセッサが省電力状態にされることを防止することができる。
(5)前記第1、第2仮想計算機は、あるプロセッサに対する実行権が時分割で割り当てられ、前記生成判定部は、前記第2仮想計算機がタイムスライスを使い切った際に、当該プロセッサにおいて、前記第1仮想計算機の実行状態がアイドル状態であり、且つ、前記第1仮想計算機が処理すべき処理待ちのタスクが存在すれば、前記擬似タスクを生成すると判定してもよい。
あるプロセッサにおいて第2仮想計算機がタイムスライスを使い切った際に、当該プロセッサにおいて、第1仮想計算機の実行状態がアイドル状態であり、且つ、第1仮想計算機が処理すべき処理待ちのタスクが存在すれば、第1仮想計算機に実行権が切り替えられ、当該プロセッサによりタスクが処理される。この場合、当該プロセッサにおいて、第2仮想計算機はアイドル状態であるが、第1仮想計算機はタスクの実行状態となる。この場合、本構成では、擬似タスクを生成すると判定している。これにより、あるプロセッサにおいて、第1仮想計算機のタスクが割り当てられているにも拘わらず、省電力制御部によって当該プロセッサが省電力状態にされることを防止することができる。
(6)前記第1仮想計算機は、前記第2仮想計算機よりも前記実行権が高く設定され、前記生成判定部は、あるプロセッサにおいて前記第2仮想計算機がタスクを実行している際に、当該プロセッサにおいて前記第1仮想計算機に対する割り込みが発生した場合、前記擬似タスクを生成すると判定してもよい。
第1仮想計算機の実行権が第2仮想計算機よりも高く設定されており、あるプロセッサにおいて第2仮想計算機がタスクを実行している際に、当該プロセッサにおいて第1仮想計算機に対する割り込みが発生した場合、第1仮想計算機に実行権が切り替えられ、当該プロセッサによりタスクが処理される。この場合、当該プロセッサにおいて、第2仮想計算機はアイドル状態であるが、第1仮想計算機はタスクの実行状態となる。この場合、本構成では、擬似タスクを生成すると判定している。これにより、あるプロセッサにおいて、第1仮想計算機のタスクが割り当てられているにも拘わらず、省電力制御部によって当該プロセッサが省電力状態にされることを防止することができる。
(7)前記擬似タスクが割り当てられているプロセッサにおいて、前記第1仮想計算機のタスクが終了した場合、前記擬似タスクの終了要求を前記第2オペレーティングシステムに通知する擬似タスク終了要求部を更に備えてもよい。
この構成によれば、あるプロセッサにおいて第1の仮想計算機により処理されるタスクが終了すると、これに連動して擬似タスクも終了される。そのため、当該プロセッサにおいて第1、第2仮想計算機が共にアイドル状態である場合、省電力制御部は当該プロセッサを省電力状態にすることができる。
(8)前記第1オペレーティングシステムは、ある1のプロセッサにおいて前記第1仮想計算機に処理すべきタスクがない場合、当該プロセッサにおいて前記第1仮想計算機がアイドル状態であることを示す第1アイドルタスクを前記第1仮想計算機に実行させ、前記擬似タスク終了要求部は、前記第1アイドルタスクが実行されると、前記擬似タスクの終了要求を前記第2オペレーティングシステムに通知してもよい。
この構成によれば、あるプロセッサにおいて、第1仮想計算機のタスクが終了すると、当該プロセッサにおいて第1アイドルタスクが実行されるため、擬似タスク終了要求部は第1アイドルタスクにより第1仮想計算機のタスクの終了を正確に認識することができる。そして、擬似タスク終了要求部は、擬似タスクの終了要求を第2オペレーティングシステムに通知する。そのため、擬似タスクと、対応する第1仮想計算機のタスクとを正確に連動させることができる。
(9)前記第2オペレーティングシステムは、あるプロセッサにおいて前記第2仮想計算機が処理すべきタスクがない場合、当該プロセッサにおいて前記第2仮想計算機がアイドル状態であることを示す第2アイドルタスクを前記第2仮想計算機に実行させ、前記擬似タスクの優先度を、前記第2アイドルタスクより高く、且つ、前記擬似タスク及び前記第2アイドルタスク以外の他のタスクより低く設定してもよい。
この構成によれば、第2仮想計算機は、あるプロセッサにおいて処理すべきタスクが無い場合、当該プロセッサにおいて第2アイドルタスクを実行させる。ここで、第2アイドルタスクの優先度は擬似タスクの優先度より低く設定されている。そのため、第2仮想計算機があるプロセッサにおいて第2アイドルタスクを実行している場合、省電力制御部は、第1仮想計算機も当該プロセッサにおいてアイドル状態であると判定し、当該プロセッサを正確に省電力状態にすることができる。
(10)前記擬似タスク生成要求部及び前記擬似タスク終了要求部は、前記第1仮想計算機から前記第2仮想計算機に前記実行権が切り替わる際に、前記生成要求及び前記終了要求を通知してもよい。
この構成によれば、擬似タスク生成要求部は擬似タスクを生成する必要があると判断しても直ぐに擬似タスクの生成要求を通知せず、第1仮想計算機から第2仮想計算機に実行権が切り替えられるまで、擬似タスクの生成要求の通知を保留することになる。また、擬似タスク終了要求部も擬似タスク生成要求部と同様、第1仮想計算機から第2仮想計算機に実行権が切り替えられるまで、擬似タスクの生成要求の通知を保留することになる。
(11)前記擬似タスク終了要求部は、前記擬似タスクの終了要求を通知する際に、未通知の前記擬似タスクの生成要求が存在すれば、当該生成要求及び当該終了要求を相殺してもよい。
この構成によれば、擬似タスクの終了要求が生成された後、当該終了要求を通知する前に擬似タスクの生成要求が生成された場合、両者が相殺されることになる。そのため、擬似タスクが生成された後、直ぐに擬似タスクが終了されるという事態が回避され、不必要に擬似タスクが生成されることが防止され、処理のオーバーヘッドを削減することができる。
(12)前記擬似タスク生成要求部は、前記擬似タスクの生成要求を通知する際に、未通知の前記擬似タスクの終了要求が存在すれば、当該終了要求及び当該生成要求を相殺してもよい。
この構成によれば、擬似タスクの生成要求が生成された後、当該生成要求を通知する前に擬似タスクの終了成要求が生成された場合、両者が相殺されることになる。そのため、擬似タスクが終了された後、直ぐに擬似タスクが生成されるという事態が回避され、不必要に擬似タスクが終了されることが防止され、処理のオーバーヘッドを削減することができる。