(57)【特許請求の範囲】
【請求項１】
１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以上のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置であって、
前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、
あるプロセッサにおいて、前記第１仮想計算機に新たに処理が発生する場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求部を備え、
前記擬似タスク生成要求部は、
前記第２仮想計算機から前記第１仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記第１仮想計算機の状態に基づき、前記擬似タスクを生成するか否かを判定する生成判定部と、
前記生成判定部が擬似タスクを生成すると判定した場合、前記擬似タスクの生成要求を前記第２オペレーティングシステムに通知する生成要求通知部とを備え、
前記生成判定部は、前記第２仮想計算機から前記第１仮想計算機に前記実行権が切り替えられる際に、前記実行権が切り替えられたプロセッサにおける前記第１仮想計算機の実行状態がアイドル状態であれば、前記擬似タスクを生成すると判定する仮想計算機制御装置。
【請求項２】
１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以上のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置であって、
前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、
あるプロセッサにおいて、前記第１仮想計算機に新たに処理が発生する場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求部と、
動作ＣＰＵ判定部とを備え、
前記擬似タスク生成要求部は、
前記第２仮想計算機から前記第１仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記第１仮想計算機の状態に基づき、前記擬似タスクを生成するか否かを判定する生成判定部と、
前記生成判定部が擬似タスクを生成すると判定した場合、前記擬似タスクの生成要求を前記第２オペレーティングシステムに通知する生成要求通知部とを備え、
前記動作ＣＰＵ判定部は、前記第２仮想計算機がタスクの実行状態からアイドル状態に遷移した際に、前記第２仮想計算機でアイドルタスクが実行されたプロセッサを特定し、
前記生成判定部は、前記第１仮想計算機に対する仮想割り込みであって、前記特定されたＣＰＵに対する仮想割り込みが割り込み保留情報に登録されていれば、前記擬似タスクを生成する必要があると判定する仮想計算機制御装置。
【請求項３】
１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以上のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置であって、
前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、
あるプロセッサにおいて、前記第１仮想計算機に新たに処理が発生する場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求部を備え、
前記擬似タスク生成要求部は、
前記第２仮想計算機から前記第１仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記第１仮想計算機の状態に基づき、前記擬似タスクを生成するか否かを判定する生成判定部と、
前記生成判定部が擬似タスクを生成すると判定した場合、前記擬似タスクの生成要求を前記第２オペレーティングシステムに通知する生成要求通知部とを備え、
前記第１、第２仮想計算機は、あるプロセッサに対する実行権が時分割で割り当てられ、
前記生成判定部は、前記第２仮想計算機がタイムスライスを使い切った際に、当該プロセッサにおいて、前記第１仮想計算機の実行状態がアイドル状態であり、且つ、前記第１仮想計算機に対する仮想割り込みが割り込み保留情報に登録されていれば、前記擬似タスクを生成すると判定する仮想計算機制御装置。
【請求項４】
１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以上のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置であって、
前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、
あるプロセッサにおいて、前記第１仮想計算機に新たに処理が発生する場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求部と、
割り込みコントローラから割り込みを受け付け、前記受け付けた割り込みが前記第１仮想計算機に対する割り込みであるか否かを確認する割り込み判定部とを備え、
前記擬似タスク生成要求部は、
前記第２仮想計算機から前記第１仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記第１仮想計算機の状態に基づき、前記擬似タスクを生成するか否かを判定する生成判定部と、
前記生成判定部が擬似タスクを生成すると判定した場合、前記擬似タスクの生成要求を前記第２オペレーティングシステムに通知する生成要求通知部とを備え、
前記第１仮想計算機は、前記第２仮想計算機よりも前記実行権が高く設定され、
前記生成判定部は、あるプロセッサにおいて前記第２仮想計算機がタスクを実行している際に、当該プロセッサにおいて、前記割り込み判定部により、前記第１仮想計算機に対する割り込みの発生が確認された場合、前記擬似タスクを生成すると判定する仮想計算機制御装置。
【請求項５】
前記擬似タスクが割り当てられているプロセッサにおいて、前記第１仮想計算機のタスクが終了した場合、前記擬似タスクの終了要求を前記第２オペレーティングシステムに通知する擬似タスク終了要求部を更に備える請求項１〜４のいずれかに記載の仮想計算機制御装置。
【請求項６】
前記第１オペレーティングシステムは、あるプロセッサにおいて前記第１仮想計算機に処理すべきタスクがない場合、当該プロセッサにおいて前記第１仮想計算機がアイドル状態であることを示す第１アイドルタスクを前記第１仮想計算機に実行させ、
前記擬似タスク終了要求部は、前記第１アイドルタスクが実行されると、前記擬似タスクの終了要求を前記第２オペレーティングシステムに通知する請求項５記載の仮想計算機制御装置。
【請求項７】
前記第２オペレーティングシステムは、あるプロセッサにおいて前記第２仮想計算機が処理すべきタスクがない場合、当該プロセッサにおいて前記第２仮想計算機がアイドル状態であることを示す第２アイドルタスクを前記第２仮想計算機に実行させ、前記擬似タスクの優先度を、前記第２アイドルタスクより高く、且つ、前記擬似タスク及び前記第２アイドルタスク以外の他のタスクより低く設定することを特徴とする請求項１〜６のいずれかに記載の仮想計算機制御装置。
【請求項８】
前記擬似タスク生成要求部及び前記擬似タスク終了要求部は、前記第１仮想計算機から前記第２仮想計算機に前記プロセッサの実行権が切り替わる際に、前記生成要求及び前記終了要求を通知する請求項５記載の仮想計算機制御装置。
【請求項９】
前記擬似タスク終了要求部は、前記擬似タスクの終了要求を通知する際に、未通知の前記擬似タスクの生成要求が存在すれば、当該生成要求及び当該終了要求を相殺する請求項８記載の仮想計算機制御装置。
【請求項１０】
前記擬似タスク生成要求部は、前記擬似タスクの生成要求を通知する際に、未通知の前記擬似タスクの終了要求が存在すれば、当該終了要求及び当該生成要求を相殺する請求項８又は９記載の仮想計算機制御装置。
【請求項１１】
１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以上のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置による仮想計算機制御方法であって、
前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、
前記仮想計算機制御装置が、あるプロセッサにおいて、前記第１仮想計算機に新たに処理が発生する場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求ステップを備え、
前記擬似タスク生成要求ステップでは、
前記第２仮想計算機から前記第１仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記実行権が切り替えられたプロセッサにおける前記第１仮想計算機の実行状態がアイドル状態であれば、前記擬似タスクを生成すると判定し、前記擬似タスクの生成要求を前記第２オペレーティングシステムに通知する仮想計算機制御方法。
【請求項１２】
１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置としてコンピュータを機能させる仮想計算機制御プログラムであって、
前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、
あるプロセッサにおいて、前記第１仮想計算機に新たに処理が発生する場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求部としてコンピュータを機能させ、
前記擬似タスク生成要求部は、
前記第２仮想計算機から前記第１仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記第１仮想計算機の状態に基づき、前記擬似タスクを生成するか否かを判定する生成判定部と、
前記生成判定部が擬似タスクを生成すると判定した場合、前記擬似タスクの生成要求を前記第２オペレーティングシステムに通知する生成要求通知部とを備え、
前記生成判定部は、前記第２仮想計算機から前記第１仮想計算機に前記実行権が切り替えられる際に、前記実行権が切り替えられたプロセッサにおける前記第１仮想計算機の実行状態がアイドル状態であれば、前記擬似タスクを生成すると判定する仮想計算機制御プログラム。
【請求項１３】
１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以上のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置のための集積回路であって、
前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、
あるプロセッサにおいて、前記第１仮想計算機に新たに処理が発生する場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求部を備え、
前記擬似タスク生成要求部は、
前記第２仮想計算機から前記第１仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記第１仮想計算機の状態に基づき、前記擬似タスクを生成するか否かを判定する生成判定部と、
前記生成判定部が擬似タスクを生成すると判定した場合、前記擬似タスクの生成要求を前記第２オペレーティングシステムに通知する生成要求通知部とを備え、
前記生成判定部は、前記第２仮想計算機から前記第１仮想計算機に前記実行権が切り替えられる際に、前記実行権が切り替えられたプロセッサにおける前記第１仮想計算機の実行状態がアイドル状態であれば、前記擬似タスクを生成すると判定する集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想計算機を備える仮想計算機システムにおいて、プロセッサの省電力制御を適切に行う技術に関するものである。
【背景技術】
【０００２】
近年、それぞれ個別にオペレーティングシステムを動作させる複数の仮想計算機と、これらの仮想計算機を制御する仮想計算機制御装置とを備える仮想計算機システムが知られている。例えば、特許文献１には、複数のオペレーティングシステムからの要求内容を管理することにより、消費電力を削減する仮想計算機システムが開示されている。【０００３】
より詳細には、特許文献１の仮想計算機システムは、複数のオペレーティングシステムを実行する仮想計算機システムであり、それぞれのオペレーティングシステムにおけるハードウェアデバイスの実行状態を含む実行情報を記憶する記憶手段を有している。また、ハードウェアデバイスに対する電源オン要求と電源オフ要求との少なくとも一方の要求を受け付ける要求受付手段を有している。また、実行情報に基づいて要求に関する処理実行を制御するもので、オペレーティングシステムが電源オン要求と電源オフ要求とをあるハードウェアデバイスに対して発行した場合に、他のオペレーティングシステムがそのハードウェアデバイスを使用しているときは電源オン要求又は電源オフ要求の処理実行を行わないようにする電源切替制御手段を有している。【０００４】
しかしながら、特許文献１の仮想計算機システムは、各オペレーティングシステムを管理することが可能な仮想計算機制御装置が、各オペレーティングシステムのハードウェアデバイスに対する実行状態と、電源のオン・オフ要求とを管理し、省電力制御を行っている。【０００５】
つまり、特許文献１の構成では、オペレーティングシステムが有する省電力機能とは別に、仮想計算機制御装置の中に省電力機能を設ける必要があるという問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−４３０９８号公報
【発明の概要】
【０００７】
そこで、本発明は、仮想計算機制御装置の内部に複雑な省電力機能を保持せず、オペレーティングシステムの省電力機能を利用して、仮想計算機システム全体の省電力制御を適切に行う仮想計算機制御装置等を提供することを目的とする。
【０００８】
本発明の一態様による仮想計算機制御装置は、１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以上のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置であって、前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、前記第２仮想計算機が処理するタスクが割り当てられていないプロセッサに前記第１仮想計算機が処理するタスクが割り当てられている場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求部を備える。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態における仮想計算機制御装置を備えた仮想計算機システムの構成を示す図である。
【図２】本発明の実施の形態における仮想計算機制御装置を備えた仮想計算機システムの機能構成の一例を示すブロック図である。
【図３】仮想計算機実行状態管理情報のデータ構造の一例を示す図である。
【図４】割り込み保留情報のデータ構造の一例を示す図である。
【図５】割り当て可能ＣＰＵ情報のデータ構造の一例を示す図である。
【図６】スケジュールポリシー管理情報のデータ構造の一例を示す図である。
【図７】本実施の形態による仮想計算機制御装置が擬似タスクの生成要求を生成する際の動作を示すフローチャートである。
【図８】本実施の形態の仮想計算機制御装置が、擬似タスクの終了要求を生成する際の動作を示すフローチャートである。
【図９】本実施の形態の仮想計算機制御装置が、第２ＯＳに擬似タスクの生成要求及び終了要求を通知する際の動作を示すフローチャートである。
【図１０】第２仮想計算機がビジー状態からアイドル状態に遷移したことを契機に、擬似タスクの生成要求が生成される際の動作を示すフローチャートである。
【図１１】第１、第２仮想計算機の実行権を時分割で割り当てる時分割ポリシーを採用した場合において、第２仮想計算機がタイムスライスを使い切った際の処理を示すフローチャートである。
【図１２】固定優先度ポリシーを用いて、第１、第２仮想計算機の実行権を決定する構成を採用した場合において、第２仮想計算機のタスクの実行中に第１仮想計算機に対する割り込みが発生した際の処理を示すフローチャートである。
【図１３】本実施の形態の比較例における仮想計算機システムの仮想計算機内のタスクの実行状況の一例を示した図である。
【図１４】本実施の形態の仮想計算機制御装置における仮想計算機内のタスクの実行状況の一例を示した図である。
【図１５】本実施の形態の仮想計算機制御装置における仮想計算機内のタスクの実行状況の一例を示した図である。
【発明を実施するための形態】
【００１０】
（本発明の一態様を得るに至った経緯）
一般に、オペレーティングシステム及びデバイスドライバには、プロセッサやデバイスなどの機器に供給する電力を制御する仕組みが設けられている。オペレーティングシステム及びデバイスドライバは、機器の状況に応じて機器への電力供給を制御し、システムの省電力化を図る。一般的な省電力機能の一例としては、機器が一定期間使用されていない、或いは動作していない場合に、機器への電力供給を停止する、或いは機器に供給するクロック信号の周波数を低下させて、機器に供給される電力量を低下させる機能が挙げられる。オペレーティングシステムは、このような省電力機能を備えているのが一般的である。オペレーティングシステムは、あるプロセッサにおいてシステムが処理するタスクが存在しないアイドル状態が一定の割合で発生すると、そのプロセッサの動作を停止し、そのプロセッサへの電力の供給を停止するという機能を省電力機能の一部として備える。
【００１１】
一方、オペレーティングシステムとそのオペレーティングシステム上で動作するソフトウェアとにより構成される仮想計算機を、複数動作させる仮想計算機システムにおいて、ある仮想計算機のオペレーティングシステムは、別の仮想計算機の機器の使用状況を直接知ることはできない。つまり、ある仮想計算機は、別の仮想計算機がどのプロセッサをどの程度使用しているのかを直接把握することはできない。したがって、従来の仮想計算機システムでは、オペレーティングシステムが備える省電力機能を使って、プロセッサを適切なタイミングで省電力状態にすることができないという問題があった。
【００１２】
このような問題を回避するために、従来の仮想計算機制御に関する技術としては、背景技術で説明した特許文献１が知られているが、特許文献１の構成では、オペレーティングシステムが有する省電力機能とは別に、仮想計算機制御装置の中に省電力機能を設ける必要があった。
【００１３】
ここで、オペレーティングシステムが備える省電力機能は、種々の条件に応じて複雑な省電力制御を行う。例えば、一定の期間、プロセッサに処理のないことを統計的にサンプリングし、その結果に応じて、プロセッサへの電力供給を止める、或いはプロセッサに供給するクロック信号の周波数を下げるというような省電力制御が行われる。
【００１４】
このような複雑なオペレーティングシステムの省電力機能を、仮想計算機制御装置の内部に移植することは開発コストの増大につながり、開発後の保守コストの増大を引き起こす。
【００１５】
また、一般に、仮想計算機システムの省電力機能は、オペレーティングシステムの機能として、オペレーティングシステムの開発ベンダ等によりオープンソース上で開発されて発展されている。しかしながら、特許文献１の構成では、オペレーティングシステムの省電力機能の更新に追随して、仮想計算機制御装置の省電力機能を保守することが必要になるという課題を有する。
【００１６】
そこで、本実施の形態による仮想計算機制御装置の目的は、仮想計算機制御装置の内部に複雑な省電力機能を保持せず、オペレーティングシステムの省電力機能を利用して、仮想計算機システム全体の省電力機能を実現することである。以下、本実施の形態による仮想計算機制御装置について図面を参照しながら詳細に説明する。
【００１７】
（本実施の形態による仮想計算機制御装置の説明）
図１は、本発明の実施の形態における仮想計算機制御装置を備えた仮想計算機システムの構成を示す図である。この仮想計算機システム１０００は、それ自体としてユーザの使用に供することもできるが、様々な機器に組み込まれてもよい。仮想計算機システム１０００としては、代表的にはＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ；パーソナルコンピュータ）等の汎用のコンピュータが一例として挙げられる。但し、これに限定されず、仮想計算機システム１０００としては、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）、携帯電話機、スマートフォン等の携帯通信端末を採用してもよい。その他、仮想計算機システム１０００としては、テレビを採用してもよいし、ハーディスクレコーダーやＤＶＤやブルーレイ等の各種ディスクレコーダー及び各種ディスクプレイヤーを採用してもよいし、カーナビゲーションシステムを採用してもよい。
【００１８】
仮想計算機システム１０００は、プロセッサ１、メモリ装置２、通信装置３４、入力装置４０、表示装置４５、タイマ回路５１、及び割り込みコントローラ５５を備えている。これらの装置は、バスライン５０を通じて互いに接続されている。また、必要に応じて、バスライン５０には、ハードディスク装置２５及び読取装置３２を接続することが可能である。ハードディスク装置２５、読取装置３２、入力装置４０、及び表示装置４５は、それぞれ、インタフェース２６、３５、４１、４６を通じてバスライン５０に接続される。
【００１９】
プロセッサ１としては、代表的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理装置）、メディア処理用やグラフィック処理用のプロセッサ、及びＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などの演算処理装置が採用される。
【００２０】
プロセッサ１は、単一のプロセッサで構成されても良く、複数のプロセッサで構成されてもよい。一例として、仮想計算機システム１０００は、複数のプロセッサ１１、１２、１３、１４を有するものとする。なお、図１の例では４つのプロセッサを記載しているが、プロセッサ１の数がこれに限らないことはいうまでもない。メモリ装置２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２１及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２を備えている。ＲＯＭ２１は、プロセッサ１の動作を規定するコンピュータプログラム及びデータを記憶している。コンピュータプログラム及びデータは、ハードディスク装置２５に記憶させることもできる。プロセッサ１は、ＲＯＭ２１又はハードディスク装置２５が格納するコンピュータプログラム及びデータを、必要に応じてＲＡＭ２２に書き込みつつ、コンピュータプログラムが規定する処理を実行する。ＲＡＭ２２は、プロセッサ１が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。ＲＯＭ２１には、フラッシュＲＯＭのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリと記憶媒体とが含まれる。ＲＡＭ２２には、電源を切ると記憶内容が保持されない揮発性のメモリと記憶媒体とが含まれる。
【００２１】
ハードディスク装置２５は、内蔵する不図示のハードディスクへ、コンピュータプログラム、或いはデータを書き込み及び読み出す装置である。読取装置３２は、記録媒体３１（例えばＣＤ、ＤＶＤ、メモリカードなど）に記録されたコンピュータプログラム、或いはデータを読み取る装置である。通信装置３４は、電話回線、ネットワーク線、無線、Ｂｌｕｅｔｏｏｔｈ（ブルートゥース：登録商標）、赤外線通信等の通信回線３３を通じて、外部と自身との間で、コンピュータプログラム、或いはデータを交換する装置である。入力装置４０は、ユーザの操作によりデータや入力イベント等を入力する装置であり、例えば、ＰＤＡに配列されたキーボード、携帯電話機に配列された入力ボタン、タッチパネル、着脱自在のマウス、或いはキーボードである。表示装置４５は、データ、画像等を画面に表示したり、データ等を音声で出力したりする装置であり、例えばＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ；液晶表示器）、有機ＥＬ（有機エレクトロルミネッセンス）、ブラウン管、スピーカである。
【００２２】
タイマ回路５１は、一定の周期でタイマ割り込み信号を出力する装置である。割り込みコントローラ５５は、タイマ回路５１、入力装置４０、プロセッサ１、ネットワークデバイスとしての通信装置３４、ハードディスク装置２５、及び読取装置３２等から送られる割り込み要求信号を、プロセッサ１へ中継する装置である。各装置からの割り込み要求には優先度が付けられている。割り込みコントローラ５５は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。
【００２３】
以上のように、仮想計算機システム１０００は、コンピュータとして構成されている。上記コンピュータプログラムは、ＲＯＭ２１、ハードディスク装置２５、不図示のフレキシブルディスク、ＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体３１を通じて供給することも、通信回線３３等の伝送媒体を通じて供給することも可能である。例えば、記録媒体３１（ＣＤ−ＲＯＭ）に記録されたコンピュータプログラムは、読取装置３２を仮想計算機システム１０００へ接続することで、読み出すことができる。また、読み出したコンピュータプログラムを、ＲＡＭ２２或いはハードディスク装置２５に格納することができる。
【００２４】
プログラム記録媒体としてＲＯＭ２１からコンピュータプログラムが供給される場合には、当該ＲＯＭ２１を仮想計算機システム１０００に搭載することにより、プロセッサ１は上記コンピュータプログラムに従った処理が実行可能となる。通信回線３３等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置３４を通じて受信され、例えば、ＲＡＭ２２或いはハードディスク装置２５に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であってもよい。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
【００２５】
通常、仮想計算機制御装置の実体はメモリ装置２或いはハードディスク装置２５に格納され、プロセッサ１と協働して実行することにより、仮想計算機制御装置全体を実現している。
【００２６】
以上のような構成において、仮想計算機制御装置は、例えば仮想計算機システム１０００上で動作するプログラムとして実現することができる。例えば、図１においては、仮想計算機制御装置を構成するプログラム及びデータがメモリ装置２に格納され、プロセッサ１により処理されることにより動作する。なお、仮想計算機制御装置は、仮想計算機モニター、ハイパーバイザとも呼ばれる。
【００２７】
図２は、本発明の実施の形態における仮想計算機制御装置１００の機能構成の一例を示すブロック図である。図２の例では、仮想計算機制御装置１００が二つの仮想計算機を制御している。一方は第１仮想計算機１１０であり、もう一方は第２仮想計算機１２０である。図２に示す例では、第１仮想計算機１１０上では第１ＯＳ（オペレーティングシステム）１１５、第２仮想計算機１２０上では第２ＯＳ１２５が稼動するものとする。ここで、第１ＯＳ１１５と第２ＯＳ１２５とは、それぞれ、異なる種類のＯＳ、同じ種類でバージョンの異なるＯＳ、同じ種類でバージョンも同じＯＳのいずれであってもよい。図２では、図１に示すプロセッサ１１〜１４の一例としてＣＰＵ０〜ＣＰＵ３を採用する。
【００２８】
また、図２に示す例では、第２仮想計算機１２０の第２ＯＳ１２５が、省電力制御部２７１を備えるものとする。一般にＯＳには機器に供給する電力を制御して、消費電力を低減させる仕組みが備わっている。一般的な仮想計算機システムでは、複数のＯＳが動作するため、複数のＯＳの省電力機能が動作する可能性がある。省電力機能はＣＰＵ等のプロセッサ、及び各種デバイスに対する電力供給を制御するので、複数のＯＳの省電力機能が動作する場合、複数の電力制御の要求が競合することになる。これを避けるために、一つの仮想計算機のＯＳに省電力制御をさせる方法が採用される。
【００２９】
本実施の形態では、第１ＯＳ１１５は省電力機能を備えず、第２ＯＳ１２５に省電力制御をさせる態様を採用する。第２ＯＳ１２５に省電力制御をさせる例としては、この他に、第１ＯＳ１１５が備える省電力機能を無効化する方法を採用してもよい。
【００３０】
なお、図２に示す仮想計算機制御装置１００において、割り込み保留情報２２１〜仮想計算機実行状態管理情報２２４は、仮想計算機制御プログラムに含まれ、ＲＡＭ等の記憶装置にロードされて保持される。また、仮想計算機制御装置１００において、擬似タスク生成要求部２００〜擬似タスク終了要求部２０６は、仮想計算機プログラムに含まれ、ＣＰＵにより実行されて実現される。
【００３１】
まず、第１仮想計算機１１０の構成について説明する。
【００３２】
第１仮想計算機１１０は、第１ＯＳ１１５と、タスク２６２に例示される何らかの処理単位である０個以上のタスクと、アイドルタスク２６３とを備える。第１ＯＳ１１５は、タスクスケジューラ２５１を備える。アイドルタスク２６３は、アイドル遷移通知部２６４を備える。
【００３３】
ここで、タスクとは、一般にオペレーティングシステムがＣＰＵに割り当てて実行させるプログラムの単位を指し、プロセス或いはスレッドとも呼ばれる。以下、アイドルタスク及び擬似タスク以外のタスクを単にタスクと記述する。
【００３４】
図２の例では、第１仮想計算機１１０にタスク２６２のみ記載したが、複数のタスクが存在することもあれば、アイドルタスク２６３を除き、タスクが一つも存在しないこともありうる。
【００３５】
アイドルタスク２６３は、タスク２６２と比較して最も優先度の低いタスクとして、タスクスケジューラ２５１に見なされる。そして、アイドルタスク２６３は、あるＣＰＵにおいて、第１仮想計算機１１０が処理すべきタスクが存在しない場合、当該ＣＰＵにスケジューリングされるタスクである。つまり、アイドルタスク２６３は、あるＣＰＵにおいて、第１仮想計算機１１０が処理すべきタスクがない場合、すなわち、第１仮想計算機が当該ＣＰＵに対してアイドル（ｉｄｌｅ）状態の場合に実行されるタスクである。アイドルタスク２６３が実行されている場合、アイドルタスク２６３が動作しているＣＰＵは、その時点では第１仮想計算機１１０内で特別に行うべき処理がないと見なすことが可能となる。
【００３６】
アイドルタスク２６３は、タスクスケジューラ２５１により実行権が割り当てられると、アイドル遷移通知部２６４により、仮想計算機制御装置１００に第１仮想計算機１１０がアイドル状態になったことを通知する。アイドルタスク２６３は、その他に特別な処理を行わなくてよい。一般には、アイドルタスク２６３としては、ＣＰＵに対する割り込みを待つ命令を発行するプログラム、或いはビジーループでＣＰＵに対する割り込みを待つプログラム等で実装されることが考えられる。
【００３７】
タスクスケジューラ２５１は、第１仮想計算機１１０内のタスクを、タスクに定められた優先度に応じてスケジューリングし、ＣＰＵに割り当てて実行させる。
【００３８】
タスクスケジューラ２５１は、第１仮想計算機１１０内のタスク２６２を、ＣＰＵ０〜ＣＰＵ３のいずれかに割り当ててもよい。或いは、タスクスケジューラ２５１は、第１仮想計算機１１０のタスク２６２を、マルチＣＰＵ環境のいずれか一つのＣＰＵに割り当ててもよい。
【００３９】
図２の例で示すと、例えば、第１仮想計算機１１０がＣＰＵ０とＣＰＵ１とにタスク２６２を割り当て可能であれば、タスクスケジューラ２５１はＣＰＵ０とＣＰＵ１とのいずれかにタスク２６２を割り当てて実行させる。或いは、第１仮想計算機１１０がＣＰＵ０のみにタスク２６２を割り当て可能であれば、タスクスケジューラ２５１はタスク２６２を必ずＣＰＵ０に割り当てて実行させる。
【００４０】
次に、第２仮想計算機１２０の構成について説明する。
【００４１】
第２仮想計算機１２０は、第２ＯＳ１２５と、タスク２８１及びタスク２８２に例示される何らかの処理単位である０個以上のタスクと、アイドルタスク２８４と、状況により生成される擬似タスク２８３とを備える。第２ＯＳ１２５は、省電力制御部２７１と、擬似タスク生成部２７２と、擬似タスク終了部２７３と、仮想割り込み処理部２７４と、タスクスケジューラ２７５とを備える。擬似タスク２８３は、擬似タスク遷移通知部２８５を備える。アイドルタスク２８４は、アイドル遷移通知部２８６を備える。
【００４２】
タスクスケジューラ２７５は、第２仮想計算機１２０内のタスクを、タスクに定められた優先度に応じてスケジューリングし、ＣＰＵに割り当てて実行させる。
【００４３】
タスクスケジューラ２７５は、第２仮想計算機１２０のタスクを、ＣＰＵ０〜ＣＰＵ３のうち、少なくとも２つのＣＰＵに割り当てる。すなわち、第２ＯＳ１２５が割り当て可能なＣＰＵは複数存在する状態を想定する。また、第１ＯＳ１１５が割り当て可能なＣＰＵのうち、少なくとも１つＣＰＵは第２ＯＳ１２５でも割り当て可能であることを想定する。
【００４４】
図２の例で示すと、例えば、第１ＯＳ１１５がタスクをＣＰＵ０のみに割り当て可能であれば、第２ＯＳ１２５は、ＣＰＵ０にタスクを割り当てることができる。さらに第２ＯＳ１２５は、ＣＰＵ０の他に、１以上のＣＰＵ、例えばＣＰＵ１にも何らかのタスクを割り当て可能であることを想定する。
【００４５】
一般に、各仮想計算機は互いに独立して動作するため、各仮想計算機上で実行されるＯＳやタスクも、互いに他のＯＳやタスクの実行状況を把握していない。すなわち、第２仮想計算機１２０は、第２ＯＳ１２５が使用しているＣＰＵに関して、第１仮想計算機１１０でどの程度使用されているかを把握することができない。
【００４６】
図２の例では、第２仮想計算機１２０にタスク２８１及びタスク２８２のみ記載したが、複数のタスクが存在することもあれば、アイドルタスク２８４を除き、タスクが一つも存在しないこともありうる。
【００４７】
アイドルタスク２８４は、他のタスクと比較して最も優先度の低いタスクとして、タスクスケジューラ２７５に見なされる。そして、アイドルタスク２８４は、あるＣＰＵにおいて、第２仮想計算機１２０が処理すべきタスクが存在しない場合、当該ＣＰＵにスケジューリングされるタスクである。つまり、アイドルタスク２８４は、あるＣＰＵにおいて、第２仮想計算機１２０が処理すべきタスクがない場合、すなわち、第２仮想計算機１２０が当該ＣＰＵに対してアイドル（ｉｄｌｅ）状態の場合に実行されるタスクとなっている。アイドルタスク２８４が実行されている場合、アイドルタスク２８４が動作しているＣＰＵは、その時点では第２仮想計算機１２０内で特別に行うべき処理がないと見なせる。
【００４８】
タスクスケジューラ２７５によりあるＣＰＵに対する実行権が割り当てられたアイドルタスク２８４のアイドル遷移通知部２８６は、仮想計算機制御装置１００に当該ＣＰＵにおいて第２仮想計算機１２０がアイドル状態になったことを通知する。アイドルタスク２８４は、その他に特別な処理を行わなくてよい。一般には、アイドルタスク２８４としては、ＣＰＵに対する割り込みを待つ命令を発行するプログラム、或いはビジーループでＣＰＵに対する割り込みを待つプログラム等で実装されることが考えられる。
【００４９】
擬似タスク２８３は、第２仮想計算機１２０が処理するタスクが割り当てられていないＣＰＵに第１仮想計算機１１０が処理するタスクが割り当てられている場合、当該ＣＰＵが使用状態であることを示すタスクである。つまり、擬似タスク２８３は、第１仮想計算機１１０内において、アイドルタスク２６３以外のタスクがあるＣＰＵで動作している場合、当該ＣＰＵにおいて第１仮想計算機１１０のタスクが動作していることを第２仮想計算機１２０に認識させるためのタスクである。これにより、第２仮想計算機１２０は当該ＣＰＵにおいて第１仮想計算機１１０のタスクが動作されていると判断し、省電力制御部２７１が当該ＣＰＵを省電力状態にすることを防止することができる。
【００５０】
タスクスケジューラ２７５にＣＰＵの実行権が割り当てられた擬似タスク２８３の擬似タスク遷移通知部２８５は、仮想計算機制御装置１００に当該ＣＰＵにおいて擬似タスク２８３が実行されたことを通知する。擬似タスク２８３は、その他に特別な処理を行わなくてよい。一般には、擬似タスク２８３としては、ＣＰＵに対する割り込みを待つ命令を発行するプログラム、或いはビジーループでＣＰＵに対する割り込みを待つプログラム等で実装されることが考えられる。
【００５１】
第２ＯＳ１２５は、タスクスケジューラ２７５の他に、省電力制御部２７１、擬似タスク生成部２７２、擬似タスク終了部２７３、及び仮想割り込み処理部２７４を備える。
【００５２】
省電力制御部２７１は、ＣＰＵ０〜ＣＰＵ３等のプロセッサや各種デバイスに対する電力供給を制御するものである。省電力制御部２７１は、電力供給を制御するにあたり、一般的に、制御するＣＰＵ等のプロセッサやデバイスの使用状況を把握する。例えば、制御対象がＣＰＵであれば、省電力制御部２７１は、そのＣＰＵにどの程度タスクが割り当てられているかを監視することで、ＣＰＵの使用状況を把握すればよい。
【００５３】
具体的には、省電力制御部２７１は、所定の動作タイミングで動作し、その動作タイミングにおいてＣＰＵがアイドル状態になっているか否かを確認することでＣＰＵの使用状況を把握すればよい。或いは、省電力制御部２７１は、どの程度の期間、そのＣＰＵがアイドル状態であったかを示すアイドル率、或いは逆にどの程度、そのＣＰＵが使用されていたかを示すＣＰＵ使用率を算出することでＣＰＵの使用状況を把握してもよい。或いは、省電力制御部２７１は、第２ＯＳ１２５が割り当て可能な各ＣＰＵのＣＰＵ使用率を総合して、第２仮想計算機１２０のＣＰＵ使用率を算出してＣＰＵの使用状況を把握してもよい。但し、これらのＣＰＵの使用状況を把握する方法は一例に過ぎず、省電力制御部２７１は他の手法を用いてＣＰＵの使用状況を把握してもよい。
【００５４】
前述の通り、一方の仮想計算機は、他方の仮想計算機のＣＰＵの使用状況を把握することができない。そのため、従来の仮想計算機システムでは、一方の仮想計算機のＯＳの省電力機能によりあるＣＰＵがアイドル状態と判断されても、他方の仮想計算機が当該ＣＰＵを動作させている可能性がある。したがって、従来の仮想計算機システムにおいて、ＯＳが備える省電力機能は、各仮想計算機によるＣＰＵやデバイスの使用状況を正確に把握することができなかった。そこで、本実施の形態は、上述したように擬似タスク２８３を設け、この問題を解決した。
【００５５】
仮想割り込み処理部２７４は、仮想計算機制御装置１００から配送された割り込み種別、及び割り込みを処理するために必要な情報を受け取り、所定の処理を行う。例えば、仮想割り込み処理部２７４は、割り込みが擬似タスク２８３の生成要求の割り込みか、或いは擬似タスク２８３の終了要求の割り込みか、或いはそれ以外の割り込みかを判定する。そして、仮想割り込み処理部２７４は、擬似タスク２８３の生成要求及び終了要求の割り込みであれば、擬似タスク２８３に割り当てるべきＣＰＵを特定するＣＰＵ識別情報を仮想計算機制御装置１００から受け取る。そして、仮想割り込み処理部２７４は、割り込みが発生したことを示す情報とＣＰＵ識別情報とを、擬似タスク生成部２７２或いは擬似タスク終了部２７３に通知する。
【００５６】
仮想割り込み処理部２７４は、仮想計算機制御装置１００の仮想計算機切り替え部２０４により、第２仮想計算機１２０に実行権が割り当てられると動作を開始する。具体的には、仮想計算機切り替え部２０４は、あるＣＰＵの実行権を第１仮想計算機１１０から第２仮想計算機１２０に切り替える際に、仮想割り込み処理部２７４が割り込み処理に必要な情報を参照できるように仮想割り込み処理部２７４に処理を移す。例えば、仮想計算機切り替え部２０４は、割り込みを特定する割り込み番号や仮想割り込み処理部２７４に引き渡したい値をＣＰＵのレジスタに格納する。そして、仮想計算機切り替え部２０４は、割り込みベクタを参照し、ＣＰＵの実行番地を、仮想割り込み処理部２７４が備える割り込みハンドラの番地に切り替える方法を採用すればよい。
【００５７】
或いは、別の方法として、仮想割り込み処理部２７４は、仮想計算機切り替え部２０４により実行権が与えられると、仮想計算機切り替え部２０４に仮想計算機制御装置１００が保留する割り込みに関する情報を問い合わせる。そして、仮想割り込み処理部２７４は、処理すべき割り込みがあれば、その割り込みに関する情報を取得し、その情報に基づいて割り込みを処理する方法を採用してもよい。
【００５８】
擬似タスク生成部２７２は、仮想割り込み処理部２７４から擬似タスク２８３の生成要求の通知と、その擬似タスク２８３を割り当てるべきＣＰＵを特定するＣＰＵ識別情報とを受け取り、擬似タスク２８３を生成する。具体的には、擬似タスク生成部２７２は、受け取ったＣＰＵ識別情報に基づき該当するＣＰＵに割り当てられる擬似タスク２８３を生成する。ここで、擬似タスク生成部２７２は、擬似タスク２８３の優先度を、アイドルタスク２８４の優先度より高く設定する。
【００５９】
また、擬似タスク生成部２７２は、擬似タスク２８３の優先度を、タスク２８１、２８２の優先度よりも低く設定する。ここで、アイドルタスク２８４の優先度は擬似タスク２８３の優先度よりも低い。そのため、擬似タスク２８３の優先度は、タスク２８１、２８２より低く、且つアイドルタスク２８４より高くなる。
【００６０】
擬似タスク２８３は、擬似タスク遷移通知部２８５を備える。タスクスケジューラ２７５により実行権が割り当てられた擬似タスク２８３の擬似タスク遷移通知部２８５は擬似タスク２８３が動作していることを仮想計算機制御装置１００に通知する。
【００６１】
擬似タスク生成部２７２は、例えば、第２ＯＳ１２５に備わるタスク生成処理の機能を活用して擬似タスク２８３を生成し、生成した擬似タスク２８３をタスクスケジューラ２７５にスケジューリング対象として取り扱わせる方法を採用すればよい。或いは、擬似タスク生成部２７２は、複数の擬似タスク２８３を予め作成しておき、仮想割り込み処理部２７４から擬似タスク２８３の生成要求の通知を受けた場合、ＣＰＵ識別情報に基づいて、該当する擬似タスク２８３を選択し、タスクスケジューラ２７５がスケジューリング対象を管理するキュー（例えばランキュー）に選択した擬似タスク２８３を登録する方法を採用してもよい。
【００６２】
擬似タスク終了部２７３は、仮想割り込み処理部２７４から擬似タスク終了要求の通知と、その擬似タスク２８３に割り当られているＣＰＵを特定するＣＰＵ識別情報とを受け取り、動作を開始する。擬似タスク終了部２７３は、受け取ったＣＰＵ識別情報に基づき、該当するＣＰＵに割り当てられている擬似タスク２８３を終了させる。
【００６３】
擬似タスク終了部２７３は、例えば、第２ＯＳ１２５に備わるタスク終了処理の機能を活用し、タスクスケジューラ２７５に擬似タスク２８３をスケジューリング対象から除外させて擬似タスク２８３を終了させる方法を採用すればよい。或いは、擬似タスク終了部２７３は、仮想割り込み処理部２７４から通知されたＣＰＵ識別情報に基づいて擬似タスク２８３を選択し、タスクスケジューラ２７５に選択した擬似タスク２８３をスケジューリング対象から除外させることで擬似タスク２８３を終了させる方法を採用してもよい。
【００６４】
次に、仮想計算機制御装置１００の構成について説明する。
【００６５】
仮想計算機制御装置１００は、擬似タスク生成要求部２００、動作ＣＰＵ判定部２０１、仮想計算機切り替え部２０４、割り込み判定部２０５、及び擬似タスク終了要求部２０６を備える。また、仮想計算機制御装置１００は、割り込み保留情報２２１、スケジュールポリシー管理情報２２２、割り当て可能ＣＰＵ情報２２３及び仮想計算機実行状態管理情報２２４を保持して管理する。また、擬似タスク生成要求部２００は、生成判定部２０２及び生成要求通知部２０３を備える。
【００６６】
擬似タスク生成要求部２００は、第２仮想計算機１２０が処理するタスクが割り当てられていないＣＰＵに第１仮想計算機１１０が処理するタスクが割り当てられている場合、当該ＣＰＵが使用状態であることを示す擬似タスク２８３の生成要求を生成し、第２ＯＳ１２５に通知する。
【００６７】
動作ＣＰＵ判定部２０１は、複数のＣＰＵの中から仮想計算機切り替え部２０４が次に実行権を割り当てるべき１つのＣＰＵを特定する。また、動作ＣＰＵ判定部２０１は、実行権を切り替える前の仮想計算機がどのＣＰＵで動作していたのか判定する。動作ＣＰＵ判定部２０１の動作の一例については後述する。
【００６８】
生成判定部２０２は、第２仮想計算機１２０に擬似タスク２８３を生成するか否かを判定する。また、生成判定部２０２は、擬似タスク２８３を生成する必要があると判定すると、擬似タスク２８３の生成依頼を生成要求通知部２０３に通知する。生成判定部２０２の動作の一例については後述する。
【００６９】
生成要求通知部２０３は、生成判定部２０２から擬似タスク２８３の生成依頼を受け付けると、第２ＯＳ１２５に対して擬似タスク２８３の生成要求を通知する。生成要求通知部２０３の動作の一例については後述する。
【００７０】
仮想計算機切り替え部２０４は、仮想計算機の実行権の切り替え要求を受けると、割り込み保留情報２２１、スケジュールポリシー管理情報２２２、割り当て可能ＣＰＵ情報２２３、及び仮想計算機実行状態管理情報２２４のいずれかに基づき、いずれの仮想計算機に実行権を切り替えるか判定し、判定した仮想計算機に実行権を割り当てる。仮想計算機切り替え部２０４の動作の一例については後述する。
【００７１】
割り込み判定部２０５は、例えば図１に示す割り込みコントローラ５５から割り込みを取得すると、スケジュールポリシー管理情報２２２、及び仮想計算機実行状態管理情報２２４に基づき、取得した割り込みが仮想計算機に処理されるように仮想計算機切り替え部２０４に通知する、或いは取得した割り込みを保留し、割り込み保留情報２２１に登録する。
【００７２】
擬似タスク終了要求部２０６は、仮想計算機切り替え部２０４から擬似タスク２８３の終了依頼を受けると、第２ＯＳ１２５に対して擬似タスク２８３の終了要求を通知する。擬似タスク終了要求部２０６の動作の一例については後述する。
【００７３】
次に、動作ＣＰＵ判定部２０１の動作の一例を説明する。
【００７４】
仮想化計算機に割り当てられたあるＣＰＵがアイドル状態になり、当該ＣＰＵが実行権を手放して仮想計算機制御装置１００に制御が移った場合、動作ＣＰＵ判定部２０１は、アイドル状態になったＣＰＵを特定し、特定したＣＰＵのＣＰＵ識別情報を、仮想計算機切り替え部２０４、生成判定部２０２、生成要求通知部２０３、及び擬似タスク終了要求部２０６に通知する。
【００７５】
例えば、動作ＣＰＵ判定部２０１は、第１仮想計算機１１０がいずれのＣＰＵでアイドル状態になったかを判定し、アイドル状態になったＣＰＵのＣＰＵ識別情報を擬似タスク終了要求部２０６に通知する。
【００７６】
また、第２仮想計算機１２０において、擬似タスク２８３が動作し、第２仮想計算機１２０によりある１のＣＰＵの実行権が手放されると、仮想計算機制御装置１００に制御が移る。この場合、動作ＣＰＵ判定部２０１は、擬似タスク２８３が動作したＣＰＵを特定し、特定したＣＰＵのＣＰＵ識別情報を仮想計算機切り替え部２０４に通知する。
【００７７】
ここで、動作ＣＰＵ判定部２０１は、例えば、各ＣＰＵに現在の実行状態を問い合わせ、各ＣＰＵからの応答に基づいて、各ＣＰＵの実行状態を判定し、擬似タスク２８３が動作したＣＰＵを特定すればよい。或いは、動作ＣＰＵ判定部２０１は、例えば、仮想計算機制御装置１００が管理する各ＣＰＵの実行状態に関する情報を参照することで各ＣＰＵの実行状態を判定し、擬似タスク２８３が動作したＣＰＵを特定すればよい。なお、動作ＣＰＵ判定部２０１は、自らの処理ルーチンの中で、自らがどのＣＰＵに割り当てられているのかを、上記手段で確認すればよい。
【００７８】
次に、動作ＣＰＵ判定部２０１の動作の他の例について説明する。
【００７９】
動作ＣＰＵ判定部２０１は、仮想計算機に対して割り込みが発生した場合、割り込み判定部２０５からいずれのＣＰＵに対する割り込みであるかが通知され、該当するＣＰＵのＣＰＵ識別情報を生成要求通知部２０３に通知する。或いは、動作ＣＰＵ判定部２０１は、仮想計算機に対する割り込みが発生した場合、割り込み保留情報２２１を参照して、割り込みが保留されているか否かを判定し、割り込みが保留されていれば、保留されている割り込みがどのＣＰＵに対する割り込みであるかを判定し、該当するＣＰＵのＣＰＵ識別情報を生成要求通知部２０３に通知する。
【００８０】
次に、生成判定部２０２の動作の一例を説明する。生成判定部２０２は、仮想計算機切り替え部２０４が第２仮想計算機１２０から第１仮想計算機１１０に実行権を切り替えるフローチャート（後述する図７、図１０、図１１、図１２）において動作する。生成判定部２０２は、動作ＣＰＵ判定部２０１からＣＰＵ識別情報を取得すると、仮想計算機実行状態管理情報２２４を参照し、該当するＣＰＵにおいて第１仮想計算機１１０の実行状態を確認する。
【００８１】
第１仮想計算機１１０の実行状態がアイドル状態であれば、第１仮想計算機１１０がアイドル状態から、処理すべきタスクが発生したビジー状態に遷移することを意味する。そこで、生成判定部２０２は、あるＣＰＵの実行権が第１仮想計算機１１０に切り替わる際、当該ＣＰＵにおける第１仮想計算機１１０の実行状態がアイドル状態であれば、擬似タスク２８３の生成依頼を生成要求通知部２０３に通知する。このとき、生成判定部２０２は、アイドル状態からタスク有り状態に遷移するＣＰＵのＣＰＵ識別情報も併せて生成要求通知部２０３に通知する。
【００８２】
図３は、仮想計算機実行状態管理情報２２４のデータ構造の一例を示す図である。以下、図３を用いて生成判定部２０２の動作を具体的に説明する。図３の例では、仮想計算機システム１０００が４つのＣＰＵを備えている場合の仮想計算機実行状態管理情報２２４を示している。
【００８３】
図３の例では、仮想計算機実行状態管理情報２２４は、各ＣＰＵに対して、現在実行権を割り当てている仮想計算機、第１仮想計算機１１０の実行状態、及び第２仮想計算機１２０の実行状態を管理している。第１仮想計算機の実行状態及び第２仮想計算機の実行状態としては、何らかのタスクが実行されているビジー状態を示す「タスク有り」、実行するタスクがない状態を示す「アイドル状態」、擬似タスク２８３が実行されている状態を示す「擬似タスク有り」、及び第１仮想計算機には割り当てられないＣＰＵであることを示す「割り当て不可」が含まれている。
【００８４】
図３の例において、生成判定部２０２は、動作ＣＰＵ判定部２０１からＣＰＵ識別情報として「ＣＰＵ３」が通知された場合、第１仮想計算機の実行状態はアイドル状態であるため、生成判定部２０２は、擬似タスク２８３を生成する必要があると判定し、擬似タスク２８３の生成依頼を生成要求通知部２０３に通知する。
【００８５】
次に、生成要求通知部２０３の動作の一例を説明する。
【００８６】
生成要求通知部２０３は、仮想計算機切り替え部２０４が第２仮想計算機１２０から第１仮想計算機１１０に実行権を切り替える際に実行されるフローチャート（後述する図７、図１０、図１１、図１２）において動作する。生成要求通知部２０３は、生成判定部２０２から擬似タスク２８３の生成依頼と、擬似タスク２８３を実行するＣＰＵのＣＰＵ識別情報とが通知されると、擬似タスク２８３の生成要求を第２ＯＳ１２５に通知する。或いは、生成要求通知部２０３は、仮想計算機切り替え部２０４から擬似タスク２８３の生成依頼と、擬似タスク２８３を実行するＣＰＵのＣＰＵ識別情報とが通知されると、擬似タスク２８３の生成要求を第２仮想計算機１２０の第２ＯＳ１２５に通知する。
【００８７】
生成要求通知部２０３は、生成判定部２０２或いは仮想計算機切り替え部２０４から通知された生成依頼及びＣＰＵ識別情報を、第２ＯＳ１２５が認識可能な形式に変換して擬似タスク２８３の生成要求を通知する。
【００８８】
ここで、生成要求を通知する方法としては、例えば擬似タスク２８３を生成するための仮想割り込みを第２ＯＳ１２５に配送する方法が考えられる。例えば、擬似タスク２８３の生成要求を意味する仮想割り込みの割り込み番号を予め定めておき、生成要求通知部２０３は、その割り込み番号と、擬似タスク２８３を実行するＣＰＵのＣＰＵ識別情報とを図４に示す割り込み保留情報２２１に登録すればよい。
【００８９】
つまり、生成要求通知部２０３は、擬似タスク２８３の生成依頼が通知されると、擬似タスク２８３の生成要求を直ぐに第２ＯＳ１２５に通知せずに、仮想割り込みを割り込み保留情報２２１に登録する態様を採用する。そして、生成要求通知部２０３は、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるタイミングが到来すると、仮想割り込み保留情報２２１に登録された仮想割り込みを第２ＯＳ１２５に通知し、第２ＯＳ１２５に擬似タスク２８３の生成要求を通知する。
【００９０】
この場合、擬似タスク終了要求部２０６は、擬似タスク２８３の終了要求を生成するとその終了要求を仮想割り込みとして、割り込み保留情報２２１に登録し、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わる際に、第２ＯＳ１２５に擬似タスク２８３の終了要求を仮想割り込みとして通知する。
【００９１】
そして、生成要求通知部２０３は、擬似タスク２８３の生成要求を通知する際、割り込み保留情報２２１に擬似タスク２８３の終了要求の仮想割り込みが登録されていれば、その仮想割り込みを削除し、当該生成要求及び当該終了要求を相殺すればよい。これにより、擬似タスク２８３が生成された後、直ぐに擬似タスク２８３が終了される事態が防止され、処理のオーバーヘッドを削減することができる。
【００９２】
但し、これに限定されず、生成要求通知部２０３は、擬似タスク２８３を生成すると直ぐに第２ＯＳ１２５に擬似タスク２８３の生成要求を通知する態様を採用してもよい。
【００９３】
図４は、割り込み保留情報２２１のデータ構造の一例を示す図である。以下、図４を用いて生成要求通知部２０３の動作を説明する。図４の割り込み保留情報２２１には、発生した割り込みを一意に特定する割り込み識別情報である「発生した割り込み番号」、いずれの仮想計算機に配送する割り込みであるかを示す「配送先の仮想計算機」、及びいずれのＣＰＵに対して割り込みを配送するかを示す「配送先のＣＰＵ」が記録されている。また、割り込み保留情報２２１は、いずれの割り込みを優先的に配送すべきかを定めた「割り込みの優先度」を記録してもよい。
【００９４】
例えば、擬似タスク２８３の生成要求を意味する仮想割り込みの割り込み番号がＩＲＱ６であり、生成要求通知部２０３が取得したＣＰＵ識別情報がＣＰＵ３であったとする。この場合、図４のレコード４０１に示すように、割り込み保留情報２２１には、「発生した割り込み番号」として「ＩＲＱ６」が登録され、「配送先の仮想計算機」として「第２仮想計算機」が登録され、「配送先のＣＰＵ」としてＣＰＵ３が登録される。
【００９５】
なお、上記説明では、生成要求通知部２０３は擬似タスク２８３の生成要求を通知するだけであり、擬似タスク２８３の生成は行っていない。但し、これに限定されず、生成要求通知部２０３は、第２仮想計算機１２０において擬似タスク２８３を直接生成してもよい。この場合、生成要求通知部２０３は、第２仮想計算機１２０が備える擬似タスク生成部２７２及び仮想割り込み処理部２７４の機能を実行すればよい。
【００９６】
一般的に、第２仮想計算機１２０のタスクスケジューラ２７５は、タスクの実行状態をランキューと呼ばれるキューで管理する。タスクスケジューラ２７５は、実行可能状態にあるタスクをランキューに接続し、接続したタスクのうちの一つのタスクに実行権を割り当てる。
【００９７】
生成要求通知部２０３が、第２仮想計算機１２０において擬似タスク２８３を直接生成する具体的な方法としては、例えば、予め第２ＯＳ１２５内に生成させていた擬似タスク２８３を、タスクスケジューラ２７５が管理するランキューに接続する方法を採用すればよい。より具体的には、仮想計算機制御装置１００は第２仮想計算機１２０のメモリ空間にアクセス可能である。そのため、仮想計算機制御装置１００に設けられた生成要求通知部２０３は、予め生成されている擬似タスク２８３が第２仮想計算機１２０のランキューに接続されるように、ランキューのメモリ内容を書き換えればよい。
【００９８】
メモリ空間におけるランキューのメモリ番地は、予め静的に決められたメモリ番地を採用してもよいし、システムの初期化時や起動時に、所定のメモリ番地を第２仮想計算機１２０から仮想計算機制御装置１００に通知させ、そのメモリ番地を採用してもよい。ここで、システムの初期化時としては、第２仮想計算機１２０の初期化時のほか、仮想計算機システム１０００の初期化時や、第２ＯＳ１２５の初期化時等が該当する。また、ランキューのメモリ番地の特定方法としては、ＣＰＵのレジスタにそのＣＰＵに割り当てられるタスクのメモリ番地が登録されている場合は、そのレジスタに登録されているメモリ番地を第２仮想計算機１２０のランキューのメモリ番地として特定してもよい。
【００９９】
次に、仮想計算機切り替え部２０４の動作の一例を説明する。
【０１００】
仮想計算機切り替え部２０４は、仮想計算機の切り替え要求が発生すると、割り込み保留情報２２１、スケジュールポリシー管理情報２２２、割り当て可能ＣＰＵ情報２２３、及び仮想計算機実行状態管理情報２２４のうちの少なくともいずれか１つに基づき、複数の仮想計算機のうちのいずれか１つの仮想計算機に実行権を割り当てる。
【０１０１】
図５は、割り当て可能ＣＰＵ情報２２３のデータ構造の一例を示す図である。割り当て可能ＣＰＵ情報２２３は、いずれの仮想計算機にいずれのＣＰＵが割り当て可能であるかを登録する。仮想計算機切り替え部２０４は、あるＣＰＵにおいて仮想計算機の切り替え要求が発生すると、割り当て可能ＣＰＵ情報２２３を参照し、当該ＣＰＵにおいて実行権を割り当てることができる仮想計算機を認識する。
【０１０２】
割り当て可能ＣＰＵ情報２２３は、典型的には、システムの初期化時やシステムの起動時に設定される。割り当て可能ＣＰＵ情報２２３は、各仮想計算機と、割り当て可能なＣＰＵとの対応関係が管理できる情報であれば、どのようなデータ形式を採用してもよい。
【０１０３】
図５の例では、第１仮想計算機１１０にＣＰＵ３を割り当てることは可能であるが、第１仮想計算機１１０にＣＰＵ３以外のＣＰＵを割り当てることができないことがわかる。図５の例において、ＣＰＵ３に対して仮想計算機の切り替え要求が発生すると、仮想計算機切り替え部２０４は、第１仮想計算機１１０と第２仮想計算機１２０とを実行権の割り当て対象とする。或いは、図５の例において、ＣＰＵ３以外のＣＰＵに対して仮想計算機の切り替え要求が発生すると、仮想計算機切り替え部２０４は、第２仮想計算機１２０のみを実行権の割り当て対象とする。
【０１０４】
図６は、スケジュールポリシー管理情報２２２のデータ構造の一例を示す図である。スケジュールポリシー管理情報２２２は、仮想計算機の実行権の切り替え方式が規定された情報である。具体的には、スケジュールポリシー管理情報２２２は、第１、第２仮想計算機１１０、１２０に実行権を割り当てる際の優先度が固定された固定優先度ポリシー６０１と、第１、第２仮想計算機１１０、１２０の実行権を時分割で割り当てる時分割ポリシー６０２とを含む。その他、スケジュールポリシー管理情報２２２として、時分割ポリシー６０２において、実行権の切り替え時に動的に優先度を変更する時分割ポリシーを採用してもよい。
【０１０５】
仮想計算機切り替え部２０４は、固定優先度ポリシー６０１又は時分割ポリシー６０２に規定された優先度に従って、いずれの仮想計算機に実行権を割り当てるかを決定する。例えば、実行権の切り替え方式として固定優先度ポリシー６０１が採用される場合、優先度の値が大きい方が優先度が高いと仮定すると、仮想計算機切り替え部２０４は、第２仮想計算機１２０よりも第１仮想計算機１１０に優先的に実行権を割り当てる。
【０１０６】
一方、実行権の切り替え方式として時分割ポリシー６０２が採用される場合、時分割ポリシー６０２には第１、第２仮想計算機１１０、１２０の優先度が同じに設定されている。そのため、仮想計算機切り替え部２０４は、優先度に関係なく、タイムスライス（或いは「タイムクォンタム」と呼称されることもある。）を第１、第２仮想計算機１１０、１２０に交互に割り当て、一方の仮想計算機がタイムスライスを使い切ると、他方の仮想計算機に実行権を切り替える。
【０１０７】
仮想計算機切り替え部２０４に対する実行権の切り替え要求は、種々の契機により発生する。種々の契機としては、例えば、第１仮想計算機１１０がアイドルタスク２６３を実行してアイドル状態になり、そのことを、アイドル遷移通知部２６４が仮想計算機切り替え部２０４に通知する場合が挙げられる。
【０１０８】
また、種々の契機としては、例えば、第２仮想計算機１２０があるＣＰＵにおいてアイドルタスク２８４を実行して当該ＣＰＵに対してアイドル状態となり、そのことをアイドル遷移通知部２８６が仮想計算機切り替え部２０４に通知する場合が挙げられる。また、種々の契機としては、例えば、実行権の切り替え方式として時分割ポリシー６０２を採用した場合において、ある仮想計算機がタイムスライスを使い切った場合が挙げられる。また、種々の契機としては、例えば、実行権の切り替え方式として固定優先度ポリシー６０１を採用した場合において、現在処理を実行している仮想計算機よりも優先度の高い仮想計算機に対する割り込みが発生した場合が挙げられる。
【０１０９】
このような契機が発生すると、仮想計算機切り替え部２０４は、優先度の高い仮想計算機に、或いはタイムスライスを使い切っていない仮想計算機に、或いはアイドル状態ではない仮想計算機に、実行権を切り替える。
【０１１０】
仮想計算機切り替え部２０４は、動作ＣＰＵ判定部２０１或いは割り込み判定部２０５から実行権を切り替えるべきＣＰＵのＣＰＵ識別情報が通知される。仮想計算機切り替え部２０４は、あるＣＰＵに対して仮想計算機の実行権を切り替える場合、仮想計算機実行状態管理情報２２４における当該ＣＰＵに関する情報を、切り替え後の情報に更新した後、当該ＣＰＵの実行権を切り替える。
【０１１１】
割り込み判定部２０５は、例えば割り込みコントローラ５５から割り込みが通知されると、その割り込みの内容を判定する。ここで、割り込みの内容としては、割り込み対象となる仮想計算機や、割り込み対象となるＣＰＵに関する情報が挙げられる。ここで、各仮想計算機は予め何の割り込みが必要であるか仮想計算機制御装置１００に通知している。或いは、仮想計算機制御装置１００が各仮想計算機に必要な割り込みを予め決定している。そして、割り込み判定部２０５は、割り込み番号と、割り込みの内容とを対応付けて管理している。したがって、割り込み判定部２０５は、割り込みコントローラ５５から割り込み番号が指定されて割り込みが通知されると、通知された割り込み番号から、割り込み対象となる仮想計算機及びＣＰＵを判定することができる。
【０１１２】
例えば、実行権の切り替え方式として時分割ポリシー６０２を採用した場合、ある仮想計算機があるＣＰＵのタイムスライスを使い切り、タイムアウトしたとする。この場合、割り込み判定部２０５は、割り込みコントローラ５５からタイマ割り込みが通知される。そして、割り込み判定部２０５は、時分割スケジューリングの際に登録されたタイマ割り込みの割り込み番号を仮想計算機切り替え部２０４に通知すると共に、予め登録されているタイマ処理用の割り込みハンドラを用いて当該ＣＰＵにおいてタイマ割り込みが発生したことを仮想計算機切り替え部２０４に通知する。
【０１１３】
また、割り込み判定部２０５は、割り込みが発生した場合、割り込み番号、割り込みの配送先の仮想計算機、割り込みの配送先のＣＰＵ、及びその他、その割り込みを処理するために必要な情報を仮想計算機切り替え部２０４に通知する。ここで、仮想計算機切り替え部２０４が、割り込みを直ぐに配送すべきではないと判定すると、割り込み判定部２０５は、発生した割り込みの割り込み番号、配送先の仮想計算機、及び配送先のＣＰＵを割り込み保留情報２２１に登録する。
【０１１４】
次に、擬似タスク終了要求部２０６の動作の一例を説明する。
【０１１５】
擬似タスク終了要求部２０６は、第１仮想計算機１１０がアイドル状態になり、仮想計算機切り替え部２０４が第１仮想計算機１１０から第２仮想計算機１２０に実行権を切り替えるフローチャート（後述する図８）を実行する際に動作する。擬似タスク終了要求部２０６は、仮想計算機切り替え部２０４から擬似タスク２８３の終了依頼と、動作ＣＰＵ判定部２０１からＣＰＵ識別情報を受け取ると、擬似タスク２８３の終了要求を生成し、擬似タスク２８３の終了要求を第２ＯＳ１２５に通知する。
【０１１６】
擬似タスク終了要求部２０６は、動作ＣＰＵ判定部２０１及び仮想計算機切り替え部２０４から通知された終了依頼及びＣＰＵ識別情報を、第２ＯＳ１２５が認識可能な形式に変換して擬似タスク２８３の終了要求を通知する。
【０１１７】
ここで、終了要求を通知する方法としては、例えば擬似タスク２８３を終了するための仮想割り込みを第２ＯＳ１２５に配送する方法が考えられる。例えば、擬似タスク２８３の終了要求を意味する仮想割り込み用の割り込み番号を予め定めておき、擬似タスク終了要求部２０６は、その割り込み番号と、擬似タスク２８３を終了するＣＰＵのＣＰＵ識別情報とを図４に示す割り込み保留情報２２１に登録すればよい。
【０１１８】
次に、図４に示す割り込み保留情報２２１を用い、擬似タスク終了要求部２０６の動作を具体的に説明する。
【０１１９】
例えば、擬似タスク２８３の終了要求を意味する仮想割り込みの割り込み番号がＩＲＱ７であり、擬似タスク終了要求部２０６が取得したＣＰＵ識別情報がＣＰＵ３であったとする。この場合、図４のレコード４０２に示すように、割り込み保留情報２２１には、「発生した割り込み番号」として「ＩＲＱ７」が登録され、「配送先の仮想計算機」として「第２仮想計算機」が登録され、「配送先のＣＰＵ」としてＣＰＵ３のＣＰＵ識別情報である「ＣＰＵ３」が登録される。
【０１２０】
なお、上記説明では、擬似タスク終了要求部２０６は擬似タスク２８３の終了要求を通知するだけであり、直接、擬似タスク２８３を終了させていない。但し、これに限定されず、擬似タスク終了要求部２０６は、第２仮想計算機１２０の擬似タスク２８３を直接終了させてもよい。この場合、擬似タスク終了要求部２０６は、第２仮想計算機１２０が備える擬似タスク終了部２７３及び仮想割り込み処理部２７４の機能を実行すればよい。
【０１２１】
擬似タスク終了要求部２０６が、第２仮想計算機１２０において擬似タスク２８３を直接終了させる具体的な方法としては、例えば、タスクスケジューラ２７５が管理するランキューから対象となる擬似タスク２８３を検索し、検索した擬似タスク２８３をランキューから外す方法を採用すればよい。より具体的には、仮想計算機制御装置１００は第２仮想計算機１２０のメモリ空間にアクセスすることが可能である。そのため、仮想計算機制御装置１００に設けられた擬似タスク終了要求部２０６は、検索した擬似タスク２８３が第２仮想計算機１２０のランキューから外されるように、ランキューのメモリ内容を書き換えればよい。
【０１２２】
メモリ空間におけるランキューのメモリ番地は、予め静的に決められたメモリ番地を採用してもよいし、システムの初期化時や起動時に、所定のメモリ番地を第２仮想計算機１２０から仮想計算機制御装置１００に通知させ、そのメモリ番地を採用してもよい。ここで、システムの初期化時としては、第２仮想計算機１２０の初期化時のほか、仮想計算機システム１０００の初期化時や、第２ＯＳ１２５の初期化時等が該当する。また、ランキューのメモリ番地の特定方法としては、ＣＰＵのレジスタにそのＣＰＵに割り当てられるタスクのメモリ番地が登録されている場合は、そのレジスタに登録されているメモリ番地を第２仮想計算機１２０のランキューのメモリ番地として特定してもよい。
【０１２３】
また、擬似タスク終了要求部２０６は、第２仮想計算機１２０に実行権が切り替わるタイミングが到来する際に擬似タスク２８３の終了要求を第２ＯＳ１２５に通知する態様を採用してもよい。この場合、擬似タスク終了要求部２０６は、擬似タスク２８３の終了要求を生成すると、その終了要求を仮想割り込みとして、割り込み保留情報２２１に登録すればよい。
【０１２４】
この場合、生成要求通知部２０３は、擬似タスク２８３の生成要求を生成するとその生成要求を仮想割り込みとして、割り込み保留情報２２１に登録し、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わる際に、第２ＯＳ１２５に擬似タスク２８３の終了要求を仮想割り込みとして通知する態様を採用すればよい。
【０１２５】
そして、擬似タスク終了要求部２０６は、擬似タスク２８３の終了要求を通知する際に、割り込み保留情報２２１に擬似タスク２８３の生成要求の仮想割り込みが登録されていれば、その仮想割り込みを削除し、当該生成要求及び当該終了要求を相殺すればよい。
【０１２６】
これにより、擬似タスク２８３が終了された後、直ぐに擬似タスク２８３が生成される事態が防止され、処理のオーバーヘッドを削減することができる。
【０１２７】
但し、これに限定されず、擬似タスク終了要求部２０６は、擬似タスク２８３を生成すると直ぐに第２ＯＳ１２５に擬似タスク２８３の終了要求を通知する態様を採用してもよい。
【０１２８】
図７は、本実施の形態による仮想計算機制御装置１００が擬似タスク２８３の生成要求を生成する際の動作を示すフローチャートである。まず、上述した何らかの契機により、第２仮想計算機１２０から第１仮想計算機１１０への実行権の切り替え要求が仮想計算機切り替え部２０４に通知される（Ｓ７０１）。これは、第１仮想計算機１１０において新たに処理すべきタスクが発生した可能性があることを示す。
【０１２９】
次に、動作ＣＰＵ判定部２０１は、複数のＣＰＵの中から第１仮想計算機１１０に実行権が割り当てられるＣＰＵを特定する（Ｓ７０２）。そして、動作ＣＰＵ判定部２０１は、特定したＣＰＵのＣＰＵ識別情報を仮想計算機切り替え部２０４、生成判定部２０２、生成要求通知部２０３、及び擬似タスク終了要求部２０６に通知する。これにより、仮想計算機切り替え部２０４、生成判定部２０２、生成要求通知部２０３、及び擬似タスク終了要求部２０６は、実行権が切り替えられるＣＰＵを特定することができる。
【０１３０】
次に、生成判定部２０２は、図３に示す仮想計算機実行状態管理情報２２４を参照し、該当するＣＰＵにおいて、第１仮想計算機１１０がアイドル状態であるか否かを確認する（Ｓ７０３）。図３の例において、動作ＣＰＵ判定部２０１により実行権を切り替えるＣＰＵとしてＣＰＵ３が特定されたとする。この場合、生成判定部２０２は、ＣＰＵ３において第１仮想計算機１１０はアイドル状態であると判定する。
【０１３１】
ここで、生成判定部２０２は、実行権が切り替えられるＣＰＵにおいて、第１仮想計算機１１０がアイドル状態であれば、当該ＣＰＵにおいて第１仮想計算機１１０では何も処理がない状態から新たに処理が発生した状態と判定できる。したがって、生成判定部２０２は、当該ＣＰＵにおいて第１仮想計算機１１０がアイドル状態であれば（Ｓ７０４でＹｅｓ）、擬似タスク２８３を生成する必要があると判定し、擬似タスク２８３の生成依頼を生成要求通知部２０３に通知する。そして、生成要求通知部２０３は、第２仮想計算機１２０に、当該ＣＰＵに割り当てられる擬似タスク２８３の生成要求を生成する（Ｓ７０５）。
【０１３２】
ここで、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待って生成要求及び終了要求を第２ＯＳ１２５に通知する態様を採用する場合、生成要求通知部２０３は、生成した擬似タスク２８３の生成要求を第２ＯＳ１２５に通知せずに仮想割り込み保留情報２２１に登録すればよい。
【０１３３】
一方、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待たずに生成要求を第２ＯＳ１２５に通知する態様を採用する場合、生成要求通知部２０３は、直ぐに生成要求を第２ＯＳ１２５に通知すればよい。
【０１３４】
実行権が切り替えられるＣＰＵにおいて第１仮想計算機１１０がアイドル状態でなければ（Ｓ７０４でＮｏ）、生成判定部２０２は、擬似タスク２８３を生成する必要がないと判定し、処理をＳ７０６に進める。つまり、実行権が切り替えられるＣＰＵにおいて、第１仮想計算機１１０がアイドル状態でないということは、第１仮想計算機１１０は当該ＣＰＵを用いて何らかのタスクを以前から実行しており、対応する擬似タスク２８３は既に生成されていると考えられる。したがって、この場合、生成判定部２０２は擬似タスク２８３の生成する必要があると判定しない。
【０１３５】
次に、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、実行権が切り替えられるＣＰＵに関する情報を更新する（Ｓ７０６）。具体的には、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、実行権が切り替えられるＣＰＵにつき、「実行権を割り当てている仮想計算機」を「第１仮想計算機」に変更し、「第１仮想計算機の実行状態」を「タスク有り」に変更し、「第２仮想計算機の実行状態」を必要に応じて「擬似タスク有り」に変更する。
【０１３６】
次に、仮想計算機切り替え部２０４は、該当するＣＰＵの実行権を第２仮想計算機１２０から第１仮想計算機１１０に切り替える（Ｓ７０７）。
【０１３７】
このように、生成判定部２０２は、第２仮想計算機１２０から第１仮想計算機１１０に実行権が切り替えられる際に、実行権が切り替えられたＣＰＵにおける第１仮想計算機１１０の実行状態がアイドル状態であれば、擬似タスク２８３を生成すると判定する。そして、生成要求通知部２０３は第２ＯＳ１２５に生成要求を通知する。
【０１３８】
図８は、本実施の形態の仮想計算機制御装置１００が、擬似タスク２８３の終了要求を生成する際の動作を示すフローチャートである。まず、第１仮想計算機１１０はＣＰＵ３においてアイドルタスクを実行し、アイドル状態に遷移する（Ｓ８０１）。これは、これまで第１仮想計算機１１０で実行されていたタスクがなくなり、第１仮想計算機１１０が処理すべきタスクが消失したことを示す。
【０１３９】
次に、アイドル遷移通知部２６４は、第１仮想計算機１１０がビジー状態からアイドル状態に遷移したことを仮想計算機切り替え部２０４に通知する（Ｓ８０２）。次に、動作ＣＰＵ判定部２０１は、第１仮想計算機１１０でアイドルタスクが実行されたＣＰＵを特定する（Ｓ８０３）。そして、動作ＣＰＵ判定部２０１は、特定したＣＰＵのＣＰＵ識別情報を仮想計算機切り替え部２０４及び生成要求通知部２０３に通知する。これにより、仮想計算機切り替え部２０４及び生成要求通知部２０３は、実行権が切り替えられるＣＰＵを特定することができる。
【０１４０】
次に、擬似タスク終了要求部２０６は、擬似タスク２８３の終了要求を生成する。（Ｓ８０４）。ここで、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待って生成要求及び終了要求を第２ＯＳ１２５に通知する態様を採用する場合、生成要求通知部２０３は、生成した擬似タスク２８３の終了要求を第２ＯＳ１２５に通知せずに割り込み保留情報２２１に登録すればよい。
【０１４１】
一方、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待たずに生成要求及び終了要求を第２ＯＳ１２５に通知する態様を採用する場合、生成要求通知部２０３は、直ぐに生成要求を第２ＯＳ１２５に通知すればよい。
【０１４２】
次に、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において実行権が切り替えられるＣＰＵに関する情報を更新する（Ｓ８０５）。具体的には、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、実行権が切り替えられるＣＰＵにつき、「実行権を割り当てている仮想計算機」を「第２仮想計算機」に変更し、「第１仮想計算機の実行状態」を「アイドル状態」に変更し、「第２仮想計算機の実行状態」を必要に応じて「アイドル状態」又は「タスク有り」に変更する。
【０１４３】
次に、仮想計算機切り替え部２０４は、第２仮想計算機１２０に該当ＣＰＵの実行権を割り当てる（Ｓ８０６）。
【０１４４】
図９は、本実施の形態の仮想計算機制御装置１００が、第２ＯＳ１２５に擬似タスク２８３の生成要求及び終了要求を通知する際の動作を示すフローチャートである。なお、図９のフローチャートは、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待って生成要求及び終了要求を第２ＯＳ１２５に通知する態様を採用した場合のフローチャートである。
【０１４５】
まず、何らかの契機により、第１仮想計算機１１０から第２仮想計算機１２０への実行権の切り替え要求が仮想計算機切り替え部２０４に通知される。そして、仮想計算機切り替え部２０４は、第１仮想計算機１１０から第２仮想計算機１２０に、あるＣＰＵの実行権を切り替える（Ｓ９０１）。
【０１４６】
ここで、仮想計算機切り替え部２０４は、仮想計算機を切り替える際、割り込み判定部２０５から取得する割り込みに関する情報や割り込み保留情報２２１に記録される割り込みに関する情報に基づき、切り替え先の仮想計算機が第２仮想計算機１２０であると判定すればよい。
【０１４７】
次に、第２ＯＳ１２５の仮想割り込み処理部２７４は、生成要求通知部２０３から通知される擬似タスク２８３の生成要求の仮想割り込み、又は擬似タスク終了要求部２０６から通知される擬似タスク２８３の終了要求の仮想割り込みを受け取る（Ｓ９０２）。
【０１４８】
次に、仮想割り込み処理部２７４は、受け取った仮想割り込みが擬似タスク２８３の生成要求の仮想割り込みであるか、或いは擬似タスク２８３の終了要求の仮想割り込みであるかを判定する（Ｓ９０３）。
【０１４９】
そして、受け取った仮想割り込みが擬似タスク２８３の生成要求の仮想割り込みであれば（Ｓ９０３で生成要求）、仮想割り込み処理部２７４は、擬似タスク２８３が割り当てられるＣＰＵのＣＰＵ識別情報を生成要求通知部２０３から受け取り、擬似タスク２８３の生成要求の仮想割り込みが発生した事実とＣＰＵ識別情報とを、擬似タスク生成部２７２に通知する。次に、擬似タスク生成部２７２は、ＣＰＵ識別情報により指定されたＣＰＵに割り当てられる擬似タスク２８３を生成する（Ｓ９０４）。
【０１５０】
一方、受け取った仮想割り込みが擬似タスク２８３の終了要求の仮想割り込みであれば（Ｓ９０３で終了要求）、仮想割り込み処理部２７４は、擬似タスク終了要求部２０６から擬似タスク２８３が割り当てられるＣＰＵのＣＰＵ識別情報を受け取る。そして、仮想割り込み処理部２７４は、仮想割り込みが発生した事実とＣＰＵ識別情報とを、擬似タスク終了部２７３に通知する。次に、擬似タスク終了部２７３は、ＣＰＵ識別情報により指定されたＣＰＵに割り当てられている擬似タスク２８３を終了させる（Ｓ９０５）。
【０１５１】
図１０は、第２仮想計算機１２０がビジー状態からアイドル状態に遷移したことを契機に、擬似タスク２８３の生成要求が生成される際の動作を示すフローチャートである。
【０１５２】
まず、第２仮想計算機１２０は、あるＣＰＵにおいてアイドルタスク２８４を実行し、当該ＣＰＵにおいてビジー状態からアイドル状態に遷移する（Ｓ１００１）。これは、これまで第２仮想計算機１２０が当該ＣＰＵで実行していたタスクがなくなり、第２仮想計算機１２０が処理すべきタスクが消失したことを示す。
【０１５３】
次に、アイドル遷移通知部２８６は、第２仮想計算機１２０がビジー状態からアイドル状態に遷移したことを仮想計算機切り替え部２０４に通知する（Ｓ１００２）。次に、動作ＣＰＵ判定部２０１は、第２仮想計算機１１０でアイドルタスクが実行されたＣＰＵを特定する（Ｓ１００３）。そして、動作ＣＰＵ判定部２０１は、特定したＣＰＵのＣＰＵ識別情報を仮想計算機切り替え部２０４、及び生成要求通知部２０３に通知する。これにより、仮想計算機切り替え部２０４及び生成要求通知部２０３は、実行権が切り替えられるＣＰＵを特定することができる。
【０１５４】
本実施の形態に係る仮想計算機制御装置１００では、第１仮想計算機１１０があるＣＰＵにおいてアイドルタスク２６３以外のタスクを実行している場合、第２仮想計算機１２０は当該ＣＰＵにおいてアイドルタスク２８４よりも擬似タスク２８３を優先して実行している。したがって、第２仮想計算機１２０があるＣＰＵにおいてアイドルタスク２８４を実行している場合、第１仮想計算機１１０は当該ＣＰＵにおいてアイドルタスクを実行している。
【０１５５】
そのため、第２仮想計算機１２０があるＣＰＵにおいてビジー状態からアイドル状態に遷移したことを契機に、仮想計算機の切り替えの要求が発生した場合、生成判定部２０２は、第１仮想計算機１１０が当該ＣＰＵにおいてアイドル状態であることが明らかであるため、第１仮想計算機１１０が当該ＣＰＵにおいてアイドル状態であるか否かを確認する必要はない。
【０１５６】
次に、生成判定部２０２は、割り込み保留情報２２１を参照し、第１仮想計算機１１０に対する仮想割り込みであって、該当するＣＰＵに対する仮想割り込みが登録されているか否か確認する（Ｓ１００４）。そして、生成判定部２０２は、実行権が切り替えられるＣＰＵにおいて第１仮想計算機１１０に対する仮想割り込みが登録されていれば、第１仮想計算機１１０で当該ＣＰＵに対して何も処理がない状態から新たに処理する状態が発生したと判定する。
【０１５７】
次に、当該ＣＰＵにおいて第１仮想計算機１１０に対する仮想割り込みが割り込み保留情報２２１に登録されている場合（Ｓ１００５でＹｅｓ）、生成判定部２０２は、擬似タスク２８３を生成する必要があると判定し、擬似タスク２８３の生成依頼を生成要求通知部２０３に通知する。そして、生成要求通知部２０３は、擬似タスク２８３の生成要求を生成する（Ｓ１００６）。
【０１５８】
ここで、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待って生成要求及び終了要求を第２ＯＳ１２５に通知する態様を採用する場合、生成要求通知部２０３は、生成した擬似タスク２８３の終了要求を割り込み保留情報２２１に登録すればよい。
【０１５９】
一方、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待たずに生成要求及び終了要求を第２ＯＳ１２５に通知する態様を採用する場合、生成要求通知部２０３は、直ぐに生成要求を第２ＯＳ１２５に通知すればよい。
【０１６０】
次に、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、該当するＣＰＵに関する情報を更新する（Ｓ１００７）。具体的には、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、実行権が切り替えられるＣＰＵにつき、「実行権を割り当てている仮想計算機」を「第１仮想計算機」に変更し、「第１仮想計算機の実行状態」を「タスク有り」に変更し、「第２仮想計算機の実行状態」を「擬似タスク有り」に変更する。次に、仮想計算機切り替え部２０４は、該当するＣＰＵの実行権を第１仮想計算機１１０に切り替える（Ｓ１００７）。
【０１６１】
一方、該当するＣＰＵにおいて第１仮想計算機１１０に対する仮想割り込みが割り込み保留情報２２１に登録されていない場合（Ｓ１００５でＮｏ）、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、当該ＣＰＵに関する情報を更新する（Ｓ１００８）。具体的には、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、当該ＣＰＵにつき、「実行権を割り当てている仮想計算機」を「第２仮想計算機」に変更し、「第２仮想計算機１２０の実行状態」を「アイドル状態」に変更する。そして、仮想計算機切り替え部２０４は、第２仮想計算機１２０に当該ＣＰＵの実行権を切り替える（Ｓ１００８）。
【０１６２】
なお、Ｓ１００８において、仮想計算機切り替え部２０４は第２仮想計算機１２０に実行権を切り替えたが、実行権を第１仮想計算機１１０に切り替えても問題ない。
【０１６３】
このように、生成判定部２０２は、あるプロセッサにおいて、第２仮想計算機１２０がタスクの実行状態からアイドル状態に遷移した際に、当該プロセッサにおいて第１仮想計算機１１０が処理すべき処理待ちのタスクが存在すれば、擬似タスク２８３を生成すると判定する。そして、生成要求通知部２０３は擬似タスク２８３の生成要求を生成する。
【０１６４】
図１１は、第１、第２仮想計算機１１０、１２０の実行権を時分割で割り当てる時分割ポリシー６０２を採用した場合において、第２仮想計算機１２０がタイムスライスを使い切った際の処理を示すフローチャートである。
【０１６５】
まず、割り込み判定部２０５は、割り込みコントローラ５５からタイマ割り込みを受け付ける（Ｓ１１０１）。次に、割り込み判定部２０５は、いずれのＣＰＵで、仮想計算機がタイムスライスを使い切り、タイマ割り込みが発生したのか判定する（Ｓ１１０２）。
【０１６６】
次に、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４を参照し、該当するＣＰＵにおいて実行権が割り当てられている仮想計算機が、第２仮想計算機１２０であることを確認する（Ｓ１１０３）。
【０１６７】
次に、生成判定部２０２は、仮想計算機実行状態管理情報２２４を参照し、該当するＣＰＵにおいて、第１仮想計算機１１０がアイドル状態であるか否かを確認する（Ｓ１１０４）。
【０１６８】
該当するＣＰＵにおいて、第１仮想計算機がアイドル状態でなければ（Ｓ１１０５でＮｏ）、該当するＣＰＵにおいて何らかのタスクが以前から実行されているため、対応する擬似タスク２８３は既に生成されていると考えられる。したがって、生成判定部２０２は、Ｓ１１０５でＮｏの場合、擬似タスク２８３の生成要求を行わず処理をＳ１１１０に進める。次に、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において該当するＣＰＵに関する情報を更新し、第１仮想計算機１１０に該当するＣＰＵの実行権を切り替える（Ｓ１１１０）。
【０１６９】
一方、該当するＣＰＵにおいて第１仮想計算機１１０がアイドル状態であれば（Ｓ１１０５でＹｅｓ）、生成判定部２０２は、割り込み保留情報２２１を参照し、第１仮想計算機１１０に対する仮想割り込みであって、該当するＣＰＵに対する仮想割り込みが発生しているか否かを確認する（Ｓ１１０６）。
【０１７０】
そして、第１仮想計算機１１０に対する仮想割り込みであって、該当するＣＰＵに対する仮想割り込みが存在した場合（Ｓ１１０７でＹｅｓ）、生成判定部２０２は、擬似タスク２８３を生成すると判定し、擬似タスク２８３の生成依頼を生成要求通知部２０３に通知する。そして、生成要求通知部２０３は擬似タスク２８３の生成要求を生成する（Ｓ１１０８）。次に、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において該当するＣＰＵに関する情報を更新し、該当するＣＰＵの実行権を第１仮想計算機１１０に切り替える（Ｓ１１０９）。具体的には、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、実行権が切り替えられるＣＰＵにつき、「実行権を割り当てている仮想計算機」を「第１仮想計算機」に変更し、「第１仮想計算機の実行状態」を「タスク有り」に変更し、「第２仮想計算機の実行状態」を必要に応じて「タスク有り」又は「アイドル状態」に変更する。
【０１７１】
一方、第１仮想計算機１１０に対する仮想割り込みであって、該当するＣＰＵに対する仮想割り込みが存在しなかった場合（Ｓ１００７でＮｏ）、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において該当するＣＰＵに関する情報を更新し、第２仮想計算機１２０に該当するＣＰＵの実行権を切り替える（Ｓ１１１１）。なお、Ｓ１１１１において、仮想計算機切り替え部２０４は第２仮想計算機１２０に該当するＣＰＵの実行権を切り替えたが、実行権を第１仮想計算機１１０に切り替えてもよい。
【０１７２】
このように、第１、第２仮想計算機１１０、１２０は、あるＣＰＵに対する実行権が時分割で割り当てられる場合、生成判定部２０２は、第２仮想計算機１２０がタイムスライスを使い切った際に、当該ＣＰＵにおいて、第１仮想計算機１１０の実行状態がアイドル状態であり、且つ、第１仮想計算機１１０が処理すべき処理待ちのタスクが存在すれば、擬似タスク２８３を生成すると判定する。
【０１７３】
図１２は、固定優先度ポリシー６０１を用いて、第１、第２仮想計算機１１０、１２０の実行権を決定する構成を採用した場合において、第２仮想計算機１２０のタスクの実行中に第１仮想計算機１１０に対する割り込みが発生した際の処理を示すフローチャートである。なお、以下の説明では、第１仮想計算機１１０の優先度は、第２仮想計算機１２０の優先度よりも高いものとする。
【０１７４】
まず、割り込み判定部２０５は、割り込みコントローラ５５から割り込みを受け付ける（Ｓ１２０１）。次に、割り込み判定部２０５は、受け付けた割り込みが第１仮想計算機１１０に対する割り込みであることを確認する。また、割り込み判定部２０５は、受け付けた割り込みがいずれのＣＰＵに対する割り込みであるかを判定する（Ｓ１２０２）。
【０１７５】
次に、仮想計算機切り替え部２０４は、仮想計算機の実行権を切り替えるか否かを判定するために、固定優先度ポリシー６０１を参照する（Ｓ１２０３）。ここでは、仮想計算機切り替え部２０４は、第１仮想計算機１１０の優先度が第２仮想計算機１２０の優先度より高いと判定する。そのため、仮想計算機切り替え部２０４は、第１仮想計算機１１０に対して発生した割り込みを配送し、第１仮想計算機１１０に実行権を切り替えると判定する。
【０１７６】
第１仮想計算機１１０の優先度が第２仮想計算機１２０より高い場合において、第２仮想計算機１２０の実行状態がタスク有りであれば、第１仮想計算機１１０は該当するＣＰＵにおいてアイドル状態である。したがって、仮想計算機切り替え部２０４は、第１仮想計算機１１０に割り込みをする場合、第１仮想計算機１１０において新たに処理すべきタスクが発生したと判定できる。
【０１７７】
次に、生成要求通知部２０３は、該当するＣＰＵに対して擬似タスク２８３を生成する必要があると判定し、擬似タスク２８３の生成依頼を生成要求通知部２０３に通知する。そして、生成要求通知部２０３は、擬似タスク２８３の生成要求を生成する（Ｓ１２０４）。
【０１７８】
ここで、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待って生成要求及び終了要求を第２ＯＳ１２５に通知する態様を採用する場合、生成要求通知部２０３は、生成した擬似タスク２８３の終了要求を第２ＯＳ１２５に通知せずに割り込み保留情報２２１に登録すればよい。
【０１７９】
一方、第１仮想計算機１１０から第２仮想計算機１２０に実行権が切り替わるのを待たずに生成要求及び終了要求を第２ＯＳ１２５に通知する態様を採用する場合、生成要求通知部２０３は、直ぐに生成要求を第２ＯＳ１２５に通知すればよい。
【０１８０】
次に、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、該当するＣＰＵに関する情報を更新し、第１仮想計算機１１０に該当するＣＰＵの実行権を切り替える（Ｓ１２０５）。具体的には、仮想計算機切り替え部２０４は、仮想計算機実行状態管理情報２２４において、実行権が切り替えられるＣＰＵにつき、「実行権を割り当てている仮想計算機」を「第１仮想計算機」に変更し、「第１仮想計算機の実行状態」を「タスク有り」に変更し、「第２仮想計算機の実行状態」を「擬似タスク有り」に変更する。
【０１８１】
このように、第１仮想計算機１１０の実行権が第２仮想計算機１２０よりも高く設定されている場合、生成判定部２０２は、あるＣＰＵにおいて第２仮想計算機１２０がタスクを実行している際に、当該ＣＰＵにおいて第１仮想計算機１１０に対する割り込みが発生した場合、擬似タスク２８３を生成すると判定する。
【０１８２】
以上の構成により、本発明の仮想計算機制御装置１００に省電力機能を設けなくても、仮想計算機制御装置１００は、ＯＳの省電力機能を生かして、適切なタイミングでＣＰＵを省電力状態にし、仮想計算機システム１０００全体の省電力を実現することができる。
【０１８３】
以下、本発明の仮想計算機制御装置により、システム全体の省電力制御がどのように実現されるかを説明する。
【０１８４】
図１３は、本実施の形態の比較例における仮想計算機システムの仮想計算機内のタスクの実行状況の一例を示した図である。第２仮想計算機では、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２において、それぞれタスクＡ、タスクＢ、タスクＣが実行されているが、ＣＰＵ３において、アイドルタスクが実行されている。一方、第１仮想計算機においては、ＣＰＵ３にタスクＸが割り当てられ、実行されている。
【０１８５】
第２ＯＳの省電力制御部は、ＣＰＵの稼働状況を調べ、一定の期間、ＣＰＵがアイドル状態であることを統計的にサンプリングし、その結果に応じて、ＣＰＵの電力供給を止める、或いはＣＰＵに供給するクロック周波数を下げる。例えば、第２仮想計算機において、第２ＯＳの省電力制御部が、ＣＰＵ３以外のＣＰＵ上で動作して、全てのＣＰＵの稼働状況を調べたとする。この場合、省電力制御部は、第２ＯＳが管理している範囲のみ把握することが可能なので、ＣＰＵ３はアイドル状態であると判断してしまう。しかしながら、実際には、第１仮想計算機は、ＣＰＵ３においてタスクＸを実行している。したがって、第２ＯＳの省電力制御部は、第１仮想計算機がＣＰＵ３においてタスクＸを動作させているにも拘わらず、ＣＰＵ３がアイドル状態であると判定し、仮想計算機システム全体のＣＰＵの使用状況を誤って判定してしまう。
【０１８６】
図１４及び図１５は、本実施の形態の仮想計算機制御装置１００における仮想計算機内のタスクの実行状況の一例を示した図である。図１４の例では、第１仮想計算機１１０においてＣＰＵ３にタスクＸが割り当てられていることに対応して、第２仮想計算機１２０においてＣＰＵ３に擬似タスクが割り当てられている。
【０１８７】
第１仮想計算機１１０において、例えば、ＣＰＵ３の実行状態がタスク有りになって実行中になった場合、第２仮想計算機１２０ではＣＰＵ３の実行状態がアイドル状態になる前に必ず擬似タスクが実行される。
【０１８８】
省電力制御部２７１は、全てのＣＰＵの稼働状況を調べた場合、ＣＰＵ３をアイドル状態ではなく、擬似タスクが実行されていると判定する。そのため、省電力制御部２７１は、ＣＰＵ３の実行状態がタスク有りであると判定する。したがって、ＣＰＵ３は、省電力制御部２７１により省電力状態にされない。
【０１８９】
図１５の例では、第２仮想計算機１２０は、ＣＰＵ３でアイドルタスクを実行しており、ＣＰＵ３がアイドル状態になっている。そのため、第２仮想計算機１２０においてＣＰＵ３に割り当てられていた擬似タスクは終了されている。
【０１９０】
その状況で、第２仮想計算機１２０においてＣＰＵ３に割り当てるタスクがなければ、第２仮想計算機１２０でもＣＰＵ３はアイドル状態になる。したがって、省電力制御部２７１は、第２仮想計算機１２０においてＣＰＵ３はアイドル状態であると判定する。この判定は、第１仮想計算機１１０も含めた仮想計算機システム１０００全体でＣＰＵ３がアイドル状態であると判定することに等しい。したがって、省電力制御部２７１がＣＰＵ３を省電力状態にしても問題ない。
【０１９１】
なお、本発明の実施の形態では、便宜上、第１仮想計算機１１０と第２仮想計算機１２０との２つの仮想計算機を取り上げて説明したが、第１仮想計算機１１０に相当する仮想計算機が複数になってもよい。また、第１、第２仮想計算機１１０、１２０の他に第３仮想計算機が存在すれば、仮想計算機制御装置１００は第１仮想計算機１１０と同様にして、第３仮想計算機に対応する擬似タスクを第２仮想計算機１２０に生成すればよい。これにより、第２仮想計算機１２０の省電力制御部２７１は、該当するＣＰＵを適切に省電力状態にすることができる。
【０１９２】
なお、本発明の実施の形態を示す図２の各機能ブロックは、典型的にはプロセッサと外部メモリとの協同で処理されるプログラムとして実現されるが、集積回路であるＬＳＩとしてもよい。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１９３】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０１９４】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
【０１９５】
本発明はプロセッサとメモリ装置を備えた情報処理システムであれば、あらゆる電子機器、情報機器、ＡＶ機器、通信機器や家電機器にも適用可能であり、例えば、ＰＣ（パーソナルコンピュータ）、携帯電話、スマートフォンやＰＤＡなどの携帯情報端末、テレビ、ハーディスクレコーダー、ＤＶＤやブルーレイなどの各種ディスクレコーダーや各種ディスクプレイヤー、カーナビゲーションシステムなどにも応用できることはいうまでもない。
【０１９６】
なお、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【０１９７】
（本実施の形態における仮想計算機制御装置の纏め）
（１）本実施の形態における仮想計算機制御装置は、１以上のプロセッサが割り当てられ、第１オペレーティングシステムが動作する第１仮想計算機と、１以上のプロセッサが割り当てられ、第２オペレーティングシステムが動作する第２仮想計算機とを制御する仮想計算機制御装置であって、前記第２オペレーティングシステムは、前記プロセッサの使用状況に基づき、前記プロセッサへの電力供給を制御する省電力制御部を備え、前記第２仮想計算機が処理するタスクが割り当てられていないプロセッサに前記第１仮想計算機が処理するタスクが割り当てられている場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求を、前記第２オペレーティングシステムに通知する擬似タスク生成要求部を備える。
【０１９８】
この構成によれば、第２仮想計算機が処理するタスクが割り当てられていないプロセッサに第１仮想計算機が処理するタスクが割り当てられている場合、当該プロセッサが使用状態であることを示す擬似タスクの生成要求が第２オペレーティングシステムに通知される。これにより、第２仮想計算機において、擬似タスクが生成され、該当するＣＰＵに割り当てられる。その結果、第２オペレーティングシステムは該当するＣＰＵにおいて、タスクが実行されていると判定する。その結果、該当するＣＰＵにおいて第１仮想計算機のタスクが実行されているにも拘わらず、第２オペレーティングシステムが備える省電力制御部が該当するＣＰＵを省電力状態にするという事態を回避することができる。したがって、仮想計算機制御装置の内部に複雑な省電力制御部を設けることなく、オペレーティングシステムが備えている省電力制御部を利用して、仮想計算機システム全体の省電力制御を適切に行うことができる。
【０１９９】
（２）前記擬似タスク生成要求部は、前記第２仮想計算機から前記第１仮想計算機に前記プロセッサの実行権が切り替えられる際に、前記第１仮想計算機の状態に基づき、前記擬似タスクを生成するか否かを判定する生成判定部と、前記生成判定部が擬似タスクを生成すると判定した場合、前記擬似タスクの生成要求を前記第２オペレーティングシステムに通知する生成要求通知部とを備えてもよい。
【０２００】
この構成によれば、あるプロセッサに対する実行権が第２仮想計算機から第１仮想計算機に切り替えられる際に擬似タスクを生成するか否かが判定され、生成すると判定された場合、擬似タスクの生成要求が第２オペレーティングシステムに通知される。そのため、擬似タスクの生成の有無の判定を適切なタイミングで行うことができる。
【０２０１】
（３）前記生成判定部は、前記第２仮想計算機から前記第１仮想計算機に前記実行権が切り替えられる際に、前記実行権が切り替えられたプロセッサにおける前記第１仮想計算機の実行状態がアイドル状態であれば、前記擬似タスクを生成すると判定してもよい。
【０２０２】
何らかの契機によるあるプロセッサの実行権が第２仮想計算機から第１仮想計算機に切り替わった場合、第１仮想計算機がアイドル状態であれば、当該プロセッサは第１仮想計算機のタスクを処理する直前の状態である。したがって、この状態では、第２仮想計算機において当該プロセッサの擬似タスクはまだ生成されていない。そこで、本構成では、この状態において擬似タスクを生成すると判定する。
【０２０３】
一方、何らかの契機によりあるプロセッサの実行権が第２仮想計算機から第１仮想計算機に切り替わった場合、当該プロセッサにおいて第１仮想計算機がアイドル状態でなく、タスクが割り当てられている状態であれば、第２仮想計算機において当該プロセッサの擬似タスクは既に生成されているはずであり、擬似タスクを生成する必要はない。したがって、本構成では、この状態において擬似タスクの生成しないと判定する。これにより、不必要に擬似タスクが生成される事態を回避することができる。
【０２０４】
（４）前記生成判定部は、あるプロセッサにおいて、前記第２仮想計算機がタスクの実行状態からアイドル状態に遷移した際に、当該プロセッサにおいて前記第１仮想計算機が処理すべき処理待ちのタスクが存在すれば、前記擬似タスクを生成すると判定してもよい。
【０２０５】
あるプロセッサにおいて第２仮想計算機がタスクの実行状態からアイドル状態に遷移した場合、第１仮想計算機において当該プロセッサに対する処理待ちのタスクが存在すれば、当該プロセッサの実行権が第１仮想計算機から第２仮想計算機に切り替えられ、当該処理待ちのタスクが処理される。この場合、当該プロセッサにおいて、第２仮想計算機はアイドル状態であるが、第１仮想計算機はタスクの実行状態となる。そこで、本構成では、この場合、擬似タスクを生成すると判定している。これにより、あるプロセッサにおいて、第１仮想計算機のタスクが割り当てられているにも拘わらず、省電力制御部によって当該プロセッサが省電力状態にされることを防止することができる。
【０２０６】
（５）前記第１、第２仮想計算機は、あるプロセッサに対する実行権が時分割で割り当てられ、前記生成判定部は、前記第２仮想計算機がタイムスライスを使い切った際に、当該プロセッサにおいて、前記第１仮想計算機の実行状態がアイドル状態であり、且つ、前記第１仮想計算機が処理すべき処理待ちのタスクが存在すれば、前記擬似タスクを生成すると判定してもよい。
【０２０７】
あるプロセッサにおいて第２仮想計算機がタイムスライスを使い切った際に、当該プロセッサにおいて、第１仮想計算機の実行状態がアイドル状態であり、且つ、第１仮想計算機が処理すべき処理待ちのタスクが存在すれば、第１仮想計算機に実行権が切り替えられ、当該プロセッサによりタスクが処理される。この場合、当該プロセッサにおいて、第２仮想計算機はアイドル状態であるが、第１仮想計算機はタスクの実行状態となる。この場合、本構成では、擬似タスクを生成すると判定している。これにより、あるプロセッサにおいて、第１仮想計算機のタスクが割り当てられているにも拘わらず、省電力制御部によって当該プロセッサが省電力状態にされることを防止することができる。
【０２０８】
（６）前記第１仮想計算機は、前記第２仮想計算機よりも前記実行権が高く設定され、前記生成判定部は、あるプロセッサにおいて前記第２仮想計算機がタスクを実行している際に、当該プロセッサにおいて前記第１仮想計算機に対する割り込みが発生した場合、前記擬似タスクを生成すると判定してもよい。
【０２０９】
第１仮想計算機の実行権が第２仮想計算機よりも高く設定されており、あるプロセッサにおいて第２仮想計算機がタスクを実行している際に、当該プロセッサにおいて第１仮想計算機に対する割り込みが発生した場合、第１仮想計算機に実行権が切り替えられ、当該プロセッサによりタスクが処理される。この場合、当該プロセッサにおいて、第２仮想計算機はアイドル状態であるが、第１仮想計算機はタスクの実行状態となる。この場合、本構成では、擬似タスクを生成すると判定している。これにより、あるプロセッサにおいて、第１仮想計算機のタスクが割り当てられているにも拘わらず、省電力制御部によって当該プロセッサが省電力状態にされることを防止することができる。
【０２１０】
（７）前記擬似タスクが割り当てられているプロセッサにおいて、前記第１仮想計算機のタスクが終了した場合、前記擬似タスクの終了要求を前記第２オペレーティングシステムに通知する擬似タスク終了要求部を更に備えてもよい。
【０２１１】
この構成によれば、あるプロセッサにおいて第１の仮想計算機により処理されるタスクが終了すると、これに連動して擬似タスクも終了される。そのため、当該プロセッサにおいて第１、第２仮想計算機が共にアイドル状態である場合、省電力制御部は当該プロセッサを省電力状態にすることができる。
【０２１２】
（８）前記第１オペレーティングシステムは、ある１のプロセッサにおいて前記第１仮想計算機に処理すべきタスクがない場合、当該プロセッサにおいて前記第１仮想計算機がアイドル状態であることを示す第１アイドルタスクを前記第１仮想計算機に実行させ、前記擬似タスク終了要求部は、前記第１アイドルタスクが実行されると、前記擬似タスクの終了要求を前記第２オペレーティングシステムに通知してもよい。
【０２１３】
この構成によれば、あるプロセッサにおいて、第１仮想計算機のタスクが終了すると、当該プロセッサにおいて第１アイドルタスクが実行されるため、擬似タスク終了要求部は第１アイドルタスクにより第１仮想計算機のタスクの終了を正確に認識することができる。そして、擬似タスク終了要求部は、擬似タスクの終了要求を第２オペレーティングシステムに通知する。そのため、擬似タスクと、対応する第１仮想計算機のタスクとを正確に連動させることができる。
【０２１４】
（９）前記第２オペレーティングシステムは、あるプロセッサにおいて前記第２仮想計算機が処理すべきタスクがない場合、当該プロセッサにおいて前記第２仮想計算機がアイドル状態であることを示す第２アイドルタスクを前記第２仮想計算機に実行させ、前記擬似タスクの優先度を、前記第２アイドルタスクより高く、且つ、前記擬似タスク及び前記第２アイドルタスク以外の他のタスクより低く設定してもよい。
【０２１５】
この構成によれば、第２仮想計算機は、あるプロセッサにおいて処理すべきタスクが無い場合、当該プロセッサにおいて第２アイドルタスクを実行させる。ここで、第２アイドルタスクの優先度は擬似タスクの優先度より低く設定されている。そのため、第２仮想計算機があるプロセッサにおいて第２アイドルタスクを実行している場合、省電力制御部は、第１仮想計算機も当該プロセッサにおいてアイドル状態であると判定し、当該プロセッサを正確に省電力状態にすることができる。
【０２１６】
（１０）前記擬似タスク生成要求部及び前記擬似タスク終了要求部は、前記第１仮想計算機から前記第２仮想計算機に前記実行権が切り替わる際に、前記生成要求及び前記終了要求を通知してもよい。
【０２１７】
この構成によれば、擬似タスク生成要求部は擬似タスクを生成する必要があると判断しても直ぐに擬似タスクの生成要求を通知せず、第１仮想計算機から第２仮想計算機に実行権が切り替えられるまで、擬似タスクの生成要求の通知を保留することになる。また、擬似タスク終了要求部も擬似タスク生成要求部と同様、第１仮想計算機から第２仮想計算機に実行権が切り替えられるまで、擬似タスクの生成要求の通知を保留することになる。
【０２１８】
（１１）前記擬似タスク終了要求部は、前記擬似タスクの終了要求を通知する際に、未通知の前記擬似タスクの生成要求が存在すれば、当該生成要求及び当該終了要求を相殺してもよい。
【０２１９】
この構成によれば、擬似タスクの終了要求が生成された後、当該終了要求を通知する前に擬似タスクの生成要求が生成された場合、両者が相殺されることになる。そのため、擬似タスクが生成された後、直ぐに擬似タスクが終了されるという事態が回避され、不必要に擬似タスクが生成されることが防止され、処理のオーバーヘッドを削減することができる。
【０２２０】
（１２）前記擬似タスク生成要求部は、前記擬似タスクの生成要求を通知する際に、未通知の前記擬似タスクの終了要求が存在すれば、当該終了要求及び当該生成要求を相殺してもよい。
【０２２１】
この構成によれば、擬似タスクの生成要求が生成された後、当該生成要求を通知する前に擬似タスクの終了成要求が生成された場合、両者が相殺されることになる。そのため、擬似タスクが終了された後、直ぐに擬似タスクが生成されるという事態が回避され、不必要に擬似タスクが終了されることが防止され、処理のオーバーヘッドを削減することができる。
【産業上の利用可能性】
【０２２２】
本発明にかかる仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路は、オペレーティングシステムの省電力機能を有効に使用し、消費電力を軽減することができる。したがって、省電力制御を必要とする電気製品に対する省電力技術として有用である。また、情報機器、ＡＶ機器、通信機器、家電機器、電気製品などのコンピュータを搭載する機器においても有用である。
【図１】
0005970461.tif 000002
【図２】
0005970461.tif 000003
【図３】
0005970461.tif 000004
【図４】
0005970461.tif 000005
【図５】
0005970461.tif 000006
【図６】
0005970461.tif 000007
【図７】
0005970461.tif 000008
【図８】
0005970461.tif 000009
【図９】
0005970461.tif 000010
【図１０】
0005970461.tif 000011
【図１１】
0005970461.tif 000012
【図１２】
0005970461.tif 000013
【図１３】
0005970461.tif 000014
【図１４】
0005970461.tif 000015
【図１５】
0005970461.tif 000016