(57)【要約】  複数のプロセッサ間で処理負荷の均衡を保つことのできる情報処理システムを提供することを目的とする。  情報処理システムは、処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備え、前記ハイパバイザは、各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得し、逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する。
2011148563.tif 000002
【特許請求の範囲】
【請求項１】
処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、
複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備え、
前記ハイパバイザは、
各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得手段と、
前記取得手段により逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更手段とを有する
ことを特徴とする情報処理システム。
【請求項２】
前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイム性の処理が要求されるリアルタイムタスクに係る処理負荷量であり、
前記変更手段は、各プロセッサ間でリアルタイムタスクに係る処理負荷量に偏りが生じているときには、リアルタイムタスクに係る処理負荷量が分散されるようプロセッサとタスクグループの対応付けを変更する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
タスクグループに含まれるリアルタイムタスクに係る前記処理負荷量は、当該タスクグループに含まれるリアルタイムタスクの個数であり、
前記変更手段は、各プロセッサ間で当該プロセッサで処理すべきリアルタイムタスクの個数に偏りが生じているときには、処理すべきリアルタイムタスクの個数が分散されるようプロセッサとタスクグループの対応付けを変更する
ことを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記変更手段は、
複数のタスクグループが対応付けられたプロセッサにおいて、少なくとも２つのタスクグループそれぞれにリアルタイムタスクを含んでいる場合に、当該プロセッサについてリアルタイムタスクに係る処理負荷量の偏りが生じていると判断し、
当該プロセッサにおける前記少なくとも２つのタスクグループそれぞれを個別のプロセッサへ対応付ける
ことを特徴とする請求項２に記載の情報処理システム。
【請求項５】
前記変更手段は、
複数のタスクグループが対応付けられたプロセッサにおいて、１つのタスクグループにリアルタイムタスクが属している場合に、当該プロセッサについて処理負荷量の偏りが生じていると判断し、
当該プロセッサと前記１つのタスクグループのみと対応付け、当該プロセッサに対応付けられていた他のタスクグループを他のプロセッサへ対応付ける
ことを特徴とする請求項２に記載の情報処理システム。
【請求項６】
前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイムタスクの動作間隔を示す値であり、
前記変更手段は、
一のプロセッサに対して動作間隔の短いリアルタイムタスクが属する第１タスクグループと他のリアルタイムタスクが属する第２タスクグループとが対応付けられている場合に、当該一のプロセッサについて処理負荷量の偏りが生じていると判断し、
前記第２タスクグループの対応付けを、動作間隔が前記第１タスクグループの動作間隔よりも長いタスクグループが属する第３タスクグループが対応付けられているプロセッサへ変更する
ことを特徴とする請求項２に記載の情報処理システム。
【請求項７】
前記ハイパバイザは、さらに、
割り込みを受け付けると、リアルタイムタスクを含むタスクグループに含まれるタスクのものである場合には、当該リアルタイムタスクを含むタスクグループの実行制御を行うＯＳに当該割り込みの通知を即座に行う
ことを特徴とする請求項２に記載の情報処理システム。
【請求項８】
前記タスクには、処理の優先度が対応付けられており、
前記変更手段は、
各タスクグループにおいて当該タスクグループに属するタスクの優先度の合計値に基づき、各プロセッサ間で優先度の合計値に偏りが生じている場合に前記処理負荷量に偏りが生じていると判断し、
優先度の合計値が平均化されるようプロセッサとタスクグループの対応付けを変更する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項９】
前記ハイパバイザは、さらに、
各ＯＳに対して、当該ＯＳに属する各タスクグループについて、当該タスクグループが割り当てられたプロセッサにおける当該タスクグループの処理能力を通知する通知手段を備え、
各ＯＳは、新たなタスクを生成すると、通知された処理能力のうち高い処理能力を有するタスクグループに前記新たなタスクを割り当てる
ことを特徴とする請求項１に記載の情報処理システム。
【請求項１０】
前記ハイパバイザは、
各プロセッサにおいて、当該プロセッサに対応付けられた１又は複数のタスクグループの処理スケジュールを決定するスケジュール決定手段を備え、
前記処理能力は、前記各タスクグループに対する処理スケジュールに基づく処理時間を示すものである
ことを特徴する請求項９に記載の情報処理システム。
【請求項１１】
処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、
複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備える情報所処理システムにおいて、前記ハイパバイザで用いられる処理方法であって、
各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得ステップと、
前記取得ステップにより逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更ステップとを有する
ことを特徴とする処理方法。
【請求項１２】
処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、
複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備える情報所処理システムにおいて前記ハイパバイザで用いられる処理プログラムであって、
コンピュータに、
各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得ステップと、
前記取得ステップにより逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更ステップとを
実行させるための処理プログラム。
【請求項１３】
前記処理プログラムは、
コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項１２に記載の処理プログラム。
【請求項１４】
処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、
複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備え、
前記ハイパバイザは、
各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得手段と、
前記取得手段により逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更手段とを有する
ことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムにおいて複数の仮想ＣＰＵを有する場合、これら仮想ＣＰＵを物理ＣＰＵに割り当てる技術に関する。
【背景技術】
【０００２】
一つの物理的な計算機で複数の仮想的な計算機を動作させる技術がある。仮想計算機は仮想的な中央演算装置（ＣＰＵ：Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）で動作し、仮想ＣＰＵは物理ＣＰＵを時分割で割り当てられて実行する。仮想計算機の技術では、仮想ＣＰＵへの物理ＣＰＵ時間の割り当ての管理などを行う管理モジュールが設けられる。以下、この管理モジュールをハイパバイザと呼ぶ。【０００３】
従来、複数のＣＰＵを用いるＯＳでは、ＣＰＵごとにタスクを記録するタスクキューを持つものがある。ＣＰＵは自身のタスクキューに登録されたタスクを実行する。ＣＰＵ資源を有効に活用するには、ＣＰＵ間の負荷が均等になるのが望ましい。その為、ＯＳ（オペレーションシステム）は、タスクキューに記録されているタスク数やその優先度などからＣＰＵの負荷を求め、負荷が均等化するようにタスクの分散を行う技術がある。具体的には、例えば、新しくタスクが生成された時に、ＯＳはそのタスクを負荷の最も低いＣＰＵのタスクキューに登録する。また、ＯＳが一定周期で各ＣＰＵの負荷を計算し、負荷が均等化するようにＣＰＵ間でタスクの移動を行う負荷分散方法がある。【０００４】
また、仮想ＣＰＵをスケジュールするハイパバイザでは、仮想ＣＰＵの実行の順番を決定している。特許文献１では、仮想計算機がタスクの切り替え時に次に実行するタスクの優先度をハイパバイザに通知し、ハイパバイザがタスクの優先度に基づいて実行する仮想計算機を決定する技術が開示されている。この技術を用いれば、優先度の高いタスク、例えば、リアルタイム性を要求するタスク（以下、リアルタイムタスクという。）を実行する仮想計算機の処理が先に行われ、リアルタイムの要求を満たすのが容易になる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２４２５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想計算機の技術では、複数の物理ＣＰＵ（プロセッサ）のうち一の物理ＣＰＵに２つ以上の仮想ＣＰＵを割り当てることがある。このとき、例えば、当該２つの仮想ＣＰＵがそれぞれ別のＯＳに属している場合には、各ＯＳにおいて、当該ＯＳに含まれる複数のタスクキュー間では処理負荷は均等となるように制御されている。【０００７】
しかしながら、当該２つの仮想ＣＰＵが割り当てられた前記一の物理ＣＰＵでは、他の物理ＣＰＵよりも、処理負荷が高くなる場合が考えられる。【０００８】
このような場合において、上記の特許文献２の技術を用いると、当該一の物理ＣＰＵに割り当てられた２つの仮想ＣＰＵについての実行順序を決定するのみであり、当該一の物理ＣＰＵの処理負荷が変化するわけではない。【０００９】
そうすると、他の物理ＣＰＵと処理負荷に不均衡が生じている場合には、全体の処理効率はよいものとは言えない。【００１０】
そこで、本発明は、上記の問題に鑑みて、複数のプロセッサ間で処理負荷の均衡を保つことのできる情報処理システム、方法、プログラム及び集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明は、情報処理システムであって、処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備え、前記ハイパバイザは、各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得手段と、前記取得手段により逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更手段とを有することを特徴とする。
【発明の効果】
【００１２】
上記の構成によると、情報処理システムは、各プロセッサ間で処理負荷量の偏りが生じているときにはプロセッサとタスクグループとの対応付けを変更するので、複数のプロセッサ間で処理負荷の均衡を保つようにすることができる。
【図面の簡単な説明】
【００１３】
【図１】情報処理システム１０００の構成を示す図である。
【図２】物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示す図である。
【図３】新たに生成されたタスクの移動を説明する図である。
【図４】（ａ）は第１の実施の形態に係る再分配が行われる前の物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示し、（ｂ）は第１の実施の形態に係る再分配が行われた後の物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示す図である。
【図５】情報処理システム１０００の処理の概要を示す流れ図である。
【図６】情報処理システム１０００の処理の詳細（タスク生成・移動処理）を示す流れ図である。
【図７】（ａ）は第１の変形例に係る再分配が行われる前の物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示し、（ｂ）は第１の変形例に係る再分配が行われた後の物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示す図である。
【図８】第１の変形例に係る情報処理システムで行われるタスク生成・移動処理の動作を示す流れ図である。
【図９】（ａ）は第２の変形例に係る再分配が行われる前の物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示し、（ｂ）は第２の変形例に係る再分配が行われた後の物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示す図である。
【図１０】第２の変形例に係る情報処理システムで行われるタスク生成・移動処理の動作を示す流れ図である。
【図１１】情報処理システム１０００ａの構成を示す図である。
【図１２】情報処理システム１０００ａで行われる割り込み処理の動作を示す流れ図である。
【図１３】情報処理システム１０００ｂの構成を示す図である。
【図１４】（ａ）は第３の実施の形態に係る再分配が行われる前の物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示し、（ｂ）は第３の実施の形態に係る再分配が行われた後の物理ＣＰＵ１ａ〜１ｃと仮想ＣＰＵ６ａ〜６ｄとの対応を示す図である。
【図１５】情報処理システム１０００ｂで行われる動作周期更新処理の動作を示す流れ図である。
【図１６】情報処理システム１０００ｂで行われるタスク生成・移動処理の動作を示す流れ図である。
【図１７】情報処理システム１０００ｃの構成を示す図である。
【発明を実施するための形態】
【００１４】
１．第１の実施の形態
以下、本発明の一実施形態である情報処理システム１０００について説明する。
【００１５】
１．１  構成
図１は、本実施の形態における情報処理システム１０００の構成を示す図である。情報処理システム１０００は、複数の物理ＣＰＵ１ａ、１ｂ、１ｃと、入出力装置２と、負荷分散装置３とから構成されている。負荷分散装置３は、ランダムアクセスメモリ（ＲＡＭ）やフラッシュメモリなどのメモリを有し、実行する各種のプログラムやデータを格納している。
【００１６】
（１）負荷分散装置３
負荷分散装置３は、複数のＯＳ毎に仮想計算機を構築し、各ＯＳで生成される複数のタスクの実行を、対応付けられた１つの物理ＣＰＵに実行させるものである。
【００１７】
具体的には、図１に示すように、負荷分散装置３は、複数（ここでは２個）のＯＳ２０ａ、２０ｂからなるＯＳ群と、ハイパバイザ５とを備えている。
【００１８】
（１−１）ＯＳ２０ａ、２０ｂ
ＯＳ２０ａは、図１に示すように、仮想計算機４ａを構成するものであり、ＯＳ２０ａにはタスクキュー１００ａ、１００ｂ、タスク負荷分散部１０１、タスク登録部１０２、タスク情報通知部１０３が備えられている。また、ＯＳ２０ｂは、仮想計算機４ｂを構成するものであり、図１では図示していないが、ＯＳ２０ａと同様の構成である。
【００１９】
以下、ＯＳ２０ａとＯＳ２０ｂとは同様の構成であるので、ＯＳ２０ａの構成要素について説明する。
【００２０】
（タスクキュー１００ａ、１００ｂ）
タスクキュー１００ａ、１００ｂそれぞれは、ＯＳ２０ａで生成されたタスクを格納するものであり、後述する仮想ＣＰＵを形成する。
【００２１】
各タスクキュー１００ａ、１００ｂで発生するタスク１０ａ、１０ｂは、通常の情報処理システム１０００で用いられる処理単位としてのタスクである。ＯＳ２０ａは複数のＣＰＵを用いて動作するものであるが、本実施の形態では仮想計算機として動作するので仮想的な複数のＣＰＵ（仮想ＣＰＵ）を用いて動作することになる。
【００２２】
（タスク負荷分散部１０１）
タスク負荷分散部１０１は、生成されたリアルタイムタスクや通常のタスクの分散を決定する。ここで、リアルタイムタスクとは、例えばデッドラインまでの実行の完了といったリアルタイム性能を要求するタスクであり、例えば、優先度を高くするといった手法で通常のタスクより先に実行されるものである。なお、以降においてＲＴタスクと記述し、リアルタイム性能を要求しない通常のタスクを単に通常タスクと記述する。なお、ＲＴタスクと通常タスクとを区別する必要がない場合には、単に、タスクと記述する。
【００２３】
タスク負荷分散部１０１は、例えば、新たにタスクが生成された際に動作し、タスクキュー１００ａ、１００ｂのうちどのタスクキューに新たに生成されたタスクを登録すれば負荷が分散されるかを決定する。
【００２４】
具体的には、タスク負荷分散部１０１は、タスクが新たに生成されると、タスクキュー１００ａ、１００ｂそれぞれの処理負荷として、各タスクキュー１００ａ、１００ｂで保持されている各タスクそれぞれの優先度の合計値を算出する。タスク負荷分散部１０１は、処理負荷の小さい、つまり優先度の合計値が最も小さいタスクキューを決定する。
【００２５】
（タスク登録部１０２）
タスク登録部１０２は、タスク負荷分散部１０１の決定を受け、決定されたタスクキューに生成されたタスクを登録する。
【００２６】
（タスク情報通知部１０３）
タスク情報通知部１０３は、新たに生成されたタスクが通常タスクであるかＲＴタスクであるかを判断し、ＲＴタスクであると判断する場合には、ＲＴタスクの登録先をハイパバイザ５に通知する。この時、タスク情報通知部１０３は、タスク登録部１０２から呼び出され、タスク登録部１０２を実行した物理ＣＰＵで即座に実行されるものとする。
【００２７】
（１−２）ハイパバイザ５
ハイパバイザ５は、仮想計算機４ａ、４ｂそれぞれにおける各仮想ＣＰＵについて物理ＣＰＵの割り当ての管理やタスクをＯＳに実行させる制御を行う。
【００２８】
ハイパバイザ５は、仮想ＣＰＵ負荷決定部２００、仮想ＣＰＵ負荷分散部２０１及び仮想ＣＰＵスケジュール部２０２を有している。
【００２９】
（仮想ＣＰＵ負荷決定部２００）
仮想ＣＰＵ負荷決定部２００は、各仮想ＣＰＵ６ａ〜６ｄの負荷を決定するものである。
【００３０】
具体的には、仮想ＣＰＵ負荷決定部２００は、タスク情報通知部１０３から新たに生成されたＲＴタスクの登録先の通知を受け取ると、現時点での各タスクキューにおける負荷状況を特定する。ここで、例えば、各タスクキューについて当該タスクキューがＲＴタスクを保持しているか否かにより処理負荷を管理する。この場合、ＲＴタスクには、通常、優先度が高い値が対応付けられているので、仮想ＣＰＵ負荷決定部２００は、予め定められた閾値以上の優先度を持つタスクの存在の有無、つまりＲＴタスクの存在の有無を検知することができ、存在を検知するとそのタスクキューは処理負荷が高いとし、存在が未検知である場合にはタスクキューの処理負荷は低いと特定する。
【００３１】
（仮想ＣＰＵ負荷分散部２０１）
仮想ＣＰＵ負荷分散部２０１は、物理ＣＰＵ１ａ、１ｂ、１ｃそれぞれについて仮想計算機４ａ、４ｂそれぞれのタスクキュー（仮想ＣＰＵ）の分配を決定し、実行するものである。
【００３２】
具体的には、仮想ＣＰＵ負荷分散部２０１は、仮想ＣＰＵ負荷決定部２００で特定された各タスクキューにおける負荷状況に基づいて、各物理ＣＰＵ１ａ、１ｂ、１ｃについて当該物理ＣＰＵの処理負荷を特定する。
【００３３】
仮想ＣＰＵ負荷分散部２０１は、物理ＣＰＵ毎に特定した処理負荷について偏りが生じている場合には、偏りが生じないように物理ＣＰＵ１ａ、１ｂ、１ｃそれぞれについてタスクキュー（仮想ＣＰＵ）の分配を決定し、決定された分配となるよう変更する。
【００３４】
（仮想ＣＰＵスケジュール部２０２）
仮想ＣＰＵスケジュール部２０２は、個々の物理ＣＰＵに分配された仮想ＣＰＵの実行の順番を決定するものである。
【００３５】
例えば、１つの物理ＣＰＵに異なる仮想ＣＰＵが分配されている場合には、仮想ＣＰＵスケジュール部２０２は、一の仮想ＣＰＵと他の仮想ＣＰＵとを時分割で実行するよう処理順番を決定する。具体的には、１つの物理ＣＰＵに分配されている２つの仮想ＣＰＵについては、一の仮想ＣＰＵと他の仮想ＣＰＵのコンテキストを切り替えることで、２つの仮想ＣＰＵを時分割で実行するよう処理順番を決定する。
【００３６】
また、各仮想ＣＰＵは、当該仮想ＣＰＵが保持している各タスクを時分割により順次実行する。
【００３７】
（２）物理ＣＰＵ１ａ、１ｂ、１ｃ
物理ＣＰＵ１ａ、１ｂ、１ｃは、ハイパバイザ５の制御により分配された１又は複数のタスクキューに登録されたタスクを、仮想ＣＰＵスケジュール部２０２でスケジュールされた処理順番に従って処理する。
【００３８】
（３）入出力装置２
入出力装置２は、外部からの指示を受け付け、受け付けた指示を物理ＣＰＵ１ａ、１ｂ、１ｃ及び負荷分散装置３へ通知するものである。
【００３９】
１．２  分配の具体例
ここでは、各タスクキュー（仮想ＣＰＵ）の分配の変更について、具体例を用いて説明する。
【００４０】
（１）具体例１
（生成されたタスクを仮想ＣＰＵへの分配する具体例）
図２は、分配の一例を示すものである。図２では、仮想計算機４ａのタスクキュー１００ａ（仮想ＣＰＵ６ａ）は物理ＣＰＵ１ａに分配され、タスクキュー１００ｂ（仮想ＣＰＵ６ｂ）は物理ＣＰＵ１ｂに分配されている。また、仮想計算機４ｂのタスクキュー１００ｃ（仮想ＣＰＵ６ｃ）は物理ＣＰＵ１ｂに分配され、タスクキュー１００ｄ（仮想ＣＰＵ６ｄ）は物理ＣＰＵ１ｃに分配されている。つまり、物理ＣＰＵ１ｂには、２つのタスクキュー１００ｂ、１００ｃが分配されている状態である。そして、図２では、この分配状態において仮想ＣＰＵ６ａにてＲＴタスク３０が生成されたものとする。
【００４１】
そして、タスク負荷分散部１０１は、タスクキュー１００ａ、１００ｂそれぞれで保持されているＲＴタスクの個数に基づいて、タスクキュー１００ａ、１００ｂについて処理負荷に偏りが生じないように新たなＲＴタスク３０の登録先を決定する。例えば、タスク負荷分散部１０１は登録先をタスクキュー１００ｂと決定し、図３に示すように、タスク登録部１０２はＲＴタスク３０を決定された登録先（仮想ＣＰＵ６ｂ）へと移動させ、タスクキュー１００ｂへ登録する。
【００４２】
タスク情報通知部１０３は、仮想ＣＰＵ６ｂのタスクキューにＲＴタスク３０が登録されたことをハイパバイザ５に通知する。この時、上述したように、タスク情報通知部１０３は、タスク登録部１０２から呼び出され、タスク登録部１０２を実行したＣＰＵ（ここでは、物理ＣＰＵ１ａ）で即座に実行される。例えば、仮想ＣＰＵ６ｂでのタスクスイッチの時に、ＲＴタスク３０の登録をハイパバイザ５に通知することも可能である。しかし、タスクスイッチ時の通知の場合、通知は仮想ＣＰＵ６ｂが物理ＣＰＵ１ｂで実行された後になる。つまり、タスク登録部１０２が仮想ＣＰＵ６ｂのタスクキュー１００ｂにＲＴタスク３０が登録したにもかかわらず、その情報がハイパバイザ５に通知されるのが遅れる場合がある。その為、ＲＴタスク３０の実行が要求を満たせなくなる可能性がある。本実施の形態では、この問題を避ける為、タスク登録部１０２が動作した際に、その物理ＣＰＵでハイパバイザ５への通知を即座に動作させる。
【００４３】
仮想ＣＰＵ負荷決定部２００は、タスク情報通知部１０３から新たに生成されたＲＴタスクの登録先の通知を受け取ると、現時点での各タスクキューにおける負荷状況を特定する。そして、仮想ＣＰＵ負荷分散部２０１は、各物理ＣＰＵ１ａ〜１ｃへの仮想ＣＰＵ６ａ〜６ｄの分配を決定し、実行する。なお、このとき、仮想ＣＰＵ負荷決定部２００、仮想ＣＰＵ負荷分散部２０１は、タスク情報通知部１０３と同様に、タスク登録部１０２を実行したＣＰＵ（ここでは、物理ＣＰＵ１ａ）で即座に実行される。
【００４４】
なお、仮想ＣＰＵ負荷分散部２０１で各物理ＣＰＵ１ａ〜１ｃへの仮想ＣＰＵ６ａ〜６ｄの分配を決定し、実行がされると、図３では図示していないが、図１に示す仮想ＣＰＵスケジュール部２０２で、個々の物理ＣＰＵに分配された仮想ＣＰＵの実行の順番が決定される。
【００４５】
図４（ａ）は、ＲＴタスク３０が仮想ＣＰＵ６ａ（タスクキュー１００ａ）から仮想ＣＰＵ６ｂ（タスクキュー１００ｂ）へ移動した場合における、各仮想ＣＰＵ６ａ〜６ｄ（タスクキュー１００ａ〜１００ｄ）の一例を示すものである。
【００４６】
（各仮想ＣＰＵを物理ＣＰＵへ再分配する具体例）
図４（ａ）では、物理ＣＰＵ１ｂに２つの仮想ＣＰＵ６ｂ、６ｃが分配されており、仮想ＣＰＵ６ｂにはＲＴタスク３０が、仮想ＣＰＵ６ｃにはＲＴタスク３０ｃが、それぞれ登録されている。そして、他の仮想ＣＰＵ６ａ、６ｄにはＲＴタスクは登録されていない。この場合、仮想ＣＰＵ負荷分散部２０１は、物理ＣＰＵ１ｂにＲＴタスクの個数の偏りが生じているので、偏りが生じないように物理ＣＰＵ１ａ、１ｂ、１ｃそれぞれについてタスクキュー（仮想ＣＰＵ）の分配を決定し、決定された分配となるよう変更する。図４（ｂ）は、その結果の一例を示すものであり、仮想ＣＰＵ６ｂに対する物理ＣＰＵの割り当てを変更している。これにより、物理ＣＰＵ１ａと、物理ＣＰＵ１ｂとに対して、ＲＴタスクが登録されたタスクキュー（仮想ＣＰＵ６ｂ、仮想ＣＰＵ６ｃ）をそれぞれ個別に分配しているので、ＲＴタスクの偏りが生じないようになっている。これにより、ＲＴタスク３０を持つ仮想ＣＰＵは、物理ＣＰＵごとに高々一つになる。
【００４７】
各物理ＣＰＵ１ａ〜１ｃに対してタスクキュー（仮想ＣＰＵ）が再分配された後、仮想ＣＰＵスケジュール部２０２により、個々の物理ＣＰＵ１ａ〜１ｃに分配された仮想ＣＰＵ６ａ〜６ｄの実行の順番を決定する。図４では、例えば、仮想ＣＰＵスケジュール部２０２はＲＴタスク３０を持つ仮想ＣＰＵを優先して実行する。例えば、同じ物理ＣＰＵにＲＴタスク３０を持つ仮想ＣＰＵと持たない仮想ＣＰＵが分配された場合（ここでは、物理ＣＰＵ１ｂ）、仮想ＣＰＵスケジュール部２０２は、ＲＴタスク３０ｃを持つ仮想ＣＰＵ６ｃをまず実行し、この仮想ＣＰＵのタスクが無くなる、つまりアイドルになった際に、ＲＴタスクを持たない仮想ＣＰＵ６ａに切り替える。
【００４８】
１．３  動作
ここでは、情報処理システム１０００の動作について説明する。
【００４９】
（１）概要
まず、処理の概要について、図５に示す流れ図を用いて説明する。
【００５０】
タスク負荷分散部１０１は、新たに生成されたタスクの仮想ＣＰＵへの分散を決定する（ステップＳ５）。タスク登録部１０２は、タスク負荷分散部１０１で決定された仮想ＣＰＵのタスクキューに新たに生成されたタスクを登録する（ステップＳ１０）。タスク情報通知部１０３は、タスクキューに登録されたタスクの情報を、ハイパバイザ５に即座に通知する（ステップＳ１５）。
【００５１】
ハイパバイザ５の仮想ＣＰＵ負荷決定部２００は、タスク情報通知部１０３からの通知を受け取ると、各仮想ＣＰＵの負荷を決定する（ステップＳ２０）。仮想ＣＰＵ負荷分散部２０１は、仮想ＣＰＵ負荷決定部２００の決定結果に基づいて、各仮想ＣＰＵを物理ＣＰＵ１ａ〜１ｃに分散する（ステップＳ２５）。仮想ＣＰＵスケジュール部２０２は、各物理ＣＰＵ１ａ〜１ｃそれぞれについて、当該物理ＣＰＵに分配された仮想ＣＰＵの実行の順番を決定する（ステップＳ３０）。そして、各物理ＣＰＵは、決定された順番に従って、当該物理ＣＰＵに分配された１又は複数の仮想ＣＰＵに含まれるタスクを実行する。
【００５２】
（２）処理の詳細
ここでは、図５で示した処理の詳細を、図６に示す流れ図を用いて説明する。なお、ここでは、仮想計算機４ａにて新たなＲＴタスクが生成されたものとして説明する。
【００５３】
タスク負荷分散部１０１は、新たなタスクが生成されると、各仮想ＣＰＵ６ａ、６ｂのタスクキュー１００ａ、１００ｂそれぞれついて、当該タスクキューに保持されているタスクの優先度の合計値を算出し、これら合計値を各仮想ＣＰＵ６ａ、６ｂの処理負荷とし、新たなタスクが生成されたＯＳ内で最も処理負荷の小さい仮想ＣＰＵを特定する（ステップＳ１００）。
【００５４】
タスク登録部１０２は、特定された仮想ＣＰＵのタスクキューに生成された新たなタスクを登録する（ステップＳ１０５）。
【００５５】
タスク情報通知部１０３は、登録されたタスクはＲＴタスクであるか否かを判断する（ステップＳ１１０）。
【００５６】
ＲＴタスクであると判断する場合には（ステップＳ１１０における「Ｙｅｓ」）、タスク情報通知部１０３は、新たなＲＴタスクを登録した旨をハイパバイザ５の仮想ＣＰＵ負荷決定部２００に通知する（ステップＳ１１５）。
【００５７】
仮想ＣＰＵ負荷決定部２００は、タスク情報通知部１０３からの通知を受け取ると、現時点での各タスクキューにおける負荷状況を特定する（ステップＳ１２０）。
【００５８】
仮想ＣＰＵ負荷分散部２０１は、仮想ＣＰＵ負荷決定部２００で特定された各タスクキューにおける負荷状況に基づいて、各物理ＣＰＵ１ａ〜１ｃそれぞれの処理負荷を特定する。そして、仮想ＣＰＵ負荷分散部２０１は、特定した各物理ＣＰＵ１ａ〜１ｃについての処理負荷に基づいて、各仮想ＣＰＵ６ａ〜６ｄの物理ＣＰＵ１ａ〜１ｃへの分配を決定する。具体的には、仮想ＣＰＵ負荷決定部２００は、ＲＴタスクを有する複数の仮想ＣＰＵのうち同一の物理ＣＰＵに分配されているものが存在するか否かを判断する（ステップＳ１２５）。
【００５９】
同一の物理ＣＰＵに分配されているものが存在すると判断する場合には（ステップＳ１２５における「Ｙｅｓ」）、仮想ＣＰＵ負荷決定部２００は、ＲＴタスクを有していない仮想ＣＰＵが分配されている物理ＣＰＵを検索する（ステップＳ１３０）。検索結果によりＲＴタスクを有していない仮想ＣＰＵが分配されている物理ＣＰＵが見つかった場合（ステップＳ１３５における「Ｙｅｓ」）、見つかった物理ＣＰＵの処理負荷は低いと特定する（ステップＳ１４０）。
【００６０】
仮想ＣＰＵ負荷分散部２０１は、新たなＲＴタスクが登録された仮想ＣＰＵと、処理負荷が低いと特定された物理ＣＰＵに分配されているＲＴタスクを有していない仮想ＣＰＵとを入れ替える（ステップＳ１４５）。
【００６１】
タスク情報通知部が仮想ＣＰＵに登録されたタスクはＲＴタスクでないと判断する場合には（ステップＳ１１０における「Ｎｏ」）、ＲＴタスクを有する複数の仮想ＣＰＵのうち同一の物理ＣＰＵに分配されているものが存在しないと判断する場合（ステップＳ１２５における「Ｎｏ」）、及びステップＳ１３０による検索結果により、該当する物理ＣＰＵが見つからなかった場合（ステップＳ１３５における「Ｎｏ」）、処理は終了する。
【００６２】
なお、本処理が実行された後において、仮想ＣＰＵスケジュール部２０２により、各物理ＣＰＵ１ａ〜１ｃそれぞれについて、当該物理ＣＰＵに分配された仮想ＣＰＵの実行の順番が決定される。
【００６３】
１．４  第１の実施の形態に係る変形例
（１）第１の変形例
第１の変形例において、第１の実施の形態と異なる点は、仮想ＣＰＵ負荷分散部での分配方法である。以下の説明において、第１の実施の形態と同様の構成要素については、同じ符号を用いて説明する。
【００６４】
第１の変形例における仮想タスク負荷分散部（以下、単に「仮想タスク負荷分散部」という。）は、仮想ＣＰＵ負荷決定部２００で特定された各タスクキューにおける負荷状況から、現時点での物理ＣＰＵ１ａ〜１ｃそれぞれの負荷状況を特定する。
【００６５】
以下、その具体的な機能について説明する。
【００６６】
仮想タスク負荷分散部は、ＲＴタスクを保持する仮想ＣＰＵ（タスクキュー）が分配されている物理ＣＰＵ（ここでは、「第１物理ＣＰＵ」という。）に他の仮想ＣＰＵも分配されているかどうかを判断する。
【００６７】
他の仮想ＣＰＵも分配されていると判断する場合には、仮想タスク負荷分散部は、ＲＴタスクを保持した仮想ＣＰＵが分配されていない物理ＣＰＵ（ここでは、「「第２物理ＣＰＵ」という。」が存在するときには第２物理ＣＰＵの負荷が低いと判断し、当該第２物理ＣＰＵに対して、第１物理ＣＰＵに分配されている他の仮想ＣＰＵを再分配する。
【００６８】
（２）具体例
ここで、上記で説明した仮想ＣＰＵ負荷分散部の機能を適用した分配方法の具体例について説明する。
【００６９】
図７（ａ）は、図３におけるＲＴタスク３０が仮想ＣＰＵ６ａ（タスクキュー１００ａ）から仮想ＣＰＵ６ｂ（タスクキュー１００ｂ）へ移動した場合における、各仮想ＣＰＵ６ａ〜６ｄ（タスクキュー１００ａ〜１００ｄ）の一例を示すものである。
【００７０】
図７（ａ）では、物理ＣＰＵ１ｂに２つの仮想ＣＰＵ６ｂ、６ｃが分配されており、仮想ＣＰＵ６ｂにはＲＴタスク３０が登録され、仮想ＣＰＵ６ｃにはＲＴタスクは登録されていない。そして、仮想ＣＰＵ６ａにはＲＴタスク３０ａが登録され、仮想ＣＰＵ６ｄにはＲＴタスクは登録されていない。この場合、仮想ＣＰＵ負荷分散部２０１は、物理ＣＰＵ１ｂについて、ＲＴタスクを保持する仮想ＣＰＵ６ｂとＲＴタスクを保持しない仮想ＣＰＵ６ｃとが同一の物理ＣＰＵ１ｂに分配されているので、処理負荷に偏りが生じていると判断し、偏りが生じないよう、つまりＲＴタスク３０を持つ仮想ＣＰＵ６ｂを分配した物理ＣＰＵ１ｂには、他の仮想ＣＰＵを分配しないよう新たな分配を決定し、決定された分配となるよう変更する。図７（ｂ）は、その結果の一例を示すものであり、仮想ＣＰＵ６ｃに対する物理ＣＰＵの割り当てを変更している。この例では、ＲＴタスク３０が仮想ＣＰＵ６ｂに移動された為、仮想ＣＰＵ６ｃが、物理ＣＰＵ１ｃに分散されている。
【００７１】
ＲＴタスクを保持する仮想ＣＰＵが分配されている物理ＣＰＵには他の仮想ＣＰＵを分配しないようにすることで、ＲＴタスクを保持する仮想ＣＰＵについては競合は起こらないので、仮想ＣＰＵスケジュール部２０２は特別の動作をする必要はない。
【００７２】
（３）動作
ここでは、第１の変形例に係る情報処理システムの動作について、第１の実施の形態と異なる点を中心に、図８に示す流れ図を用いて説明する。
【００７３】
先ず、第１の変形例に係る情報処理システムは、図６に示すステップＳ１００からＳ１１５を実行する。なお、これらの処理動作については既に説明しているので、ここでの説明は省略する。
【００７４】
ステップＳ１１５が実行された後、仮想ＣＰＵ負荷決定部２００は、タスク情報通知部１０３からの通知を受け取ると、現時点での各タスクキューにおける負荷状況を特定する（ステップＳ２００）。
【００７５】
仮想タスク負荷分散部は、ＲＴタスクを保持する仮想ＣＰＵと他の仮想ＣＰＵとが同一の物理ＣＰＵに分配されているか否かを判断する（ステップＳ２０５）。具体的には、仮想タスク負荷分散部は、ＲＴタスクを保持する仮想ＣＰＵが分配されている第１物理ＣＰＵに他の仮想ＣＰＵも分配されているかどうかを判断する。
【００７６】
判断が肯定的である場合には（ステップＳ２０５における「Ｙｅｓ」）、仮想ＣＰＵ負荷分散部は、ＲＴタスクを保持していない仮想ＣＰＵが分配されている物理ＣＰＵを検索する（ステップＳ２１０）。
【００７７】
検索結果によりＲＴタスクを保持していない仮想ＣＰＵが分配されている物理ＣＰＵが見つかった場合（ステップＳ２１５における「Ｙｅｓ」）、仮想ＣＰＵ負荷分散部は、見つかった物理ＣＰＵの処理負荷は低いと特定し、検索結果により見つかった物理ＣＰＵ（第２物理ＣＰＵ）に対して、第１物理ＣＰＵに分配されている他の仮想ＣＰＵを再分配する。
【００７８】
ステップＳ２０５における判断が否定的である場合（ステップＳ２０５における「Ｎｏ」）、及びステップＳ２１０における検索結果によりＲＴタスクを保持していない仮想ＣＰＵが分配されている物理ＣＰＵが見つからなかった場合（ステップＳ２１５における「Ｎｏ」）、処理は終了する。
【００７９】
なお、本処理が実行された後において、仮想ＣＰＵスケジュール部２０２により、各物理ＣＰＵ１ａ〜１ｃそれぞれについて、当該物理ＣＰＵに分配された仮想ＣＰＵの実行の順番が決定される。
【００８０】
（２）第２の変形例
第１の変形例において、第１の実施の形態と異なる点は、仮想タスク負荷分散部での分配方法である。以下の説明において、第１の実施の形態と同様の構成要素については、同じ符号を用いて説明する。
【００８１】
第２の変形例では、通常タスク、ＲＴタスクの双方に対してタスクの負荷を示す値（負荷値）を予め決めておく。
【００８２】
具体的には、本変形例に係る仮想ＣＰＵ負荷決定部は、タスクキュー１００ａ、１００ｂそれぞれについて当該タスクキューで保持しているタスクの負荷値の合計を対応する仮想ＣＰＵの処理の負荷状態とする。
【００８３】
本変形例に係る仮想ＣＰＵ負荷分散部は各仮想ＣＰＵ６ａ〜６ｄそれぞれの負荷値の合計が物理ＣＰＵ１ａ〜１ｃ毎に均等になるように、仮想ＣＰＵ６ａ〜６ｄを分散（分配）する。
【００８４】
（２）具体例
ここで、上記で説明した本変形例に係る仮想ＣＰＵ負荷分散部の機能を適用した分配方法の具体例について説明する。
【００８５】
図９（ａ）は、図３におけるＲＴタスク３０が仮想ＣＰＵ６ａ（タスクキュー１００ａ）から仮想ＣＰＵ６ｂ（タスクキュー１００ｂ）へ移動した場合における、各仮想ＣＰＵ６ａ〜６ｄ（タスクキュー１００ａ〜１００ｄ）の一例を示すものである。ここで、通常タスクには負荷値として値１が、ＲＴタスクには負荷値として値１０が割り当てられるものとする。
【００８６】
図９（ａ）では、物理ＣＰＵ１ｂに２つの仮想ＣＰＵ６ｂ、６ｃが分配されており、仮想ＣＰＵ６ｂにはＲＴタスク３０と通常タスク１０ｂとが登録され、仮想ＣＰＵ６ｃにはＲＴタスク３０ｃと通常タスク１０ｃとが登録されている。そして、仮想ＣＰＵ６ａには通常タスク１０ａが登録され、仮想ＣＰＵ６ｄにはＲＴタスク３０ｄと通常タスク１０ｄとが登録されている。この場合、ＲＴタスク３０の移動により、仮想ＣＰＵ６ａの負荷値の合計は１１から１へと、仮想ＣＰＵ６ｂの負荷値の合計は１２から２２へとそれぞれ変更される。
【００８７】
そうすると、物理ＣＰＵ１ｂに分配されている仮想ＣＰＵ６ｂ、６ｃによる負荷値の合計値が２２となり、他の物理ＣＰＵ１ａ、１ｃと比べて高いものとなっている。そこで、仮想ＣＰＵ負荷分散部２０１は、物理ＣＰＵ１ｂについて、処理負荷に偏りが生じていると判断し、偏りが生じないよう、つまり負荷値の合計が均等となるように新たな分配を決定し、決定された分配となるよう変更する。図９（ｂ）は、その結果の一例を示すものであり、仮想ＣＰＵ６ｂに対する物理ＣＰＵの割り当てを変更している。この例では、仮想ＣＰＵ６ｂが物理ＣＰＵ１ａに分散（分配）されている。再分配後の物理ＣＰＵ１ａ〜１ｃそれぞれの負荷値の合計は、１２、１１、１１となりほぼ均等となる。
【００８８】
これにより、ＲＴタスクを持つ仮想ＣＰＵが特定の物理ＣＰＵに集中することを避けることができる。なお、一般に優先度が高いタスクがリアルタイムタスクとなるので、タスクの負荷はタスクの優先度から決定してもよい。
【００８９】
（３）動作
ここでは、第２の変形例に係る情報処理システムの動作について、図１０に示す流れ図を用いて説明する。なお、ここでは、仮想計算機４ａにて新たなタスクが生成されたものとして説明する。
【００９０】
タスク負荷分散部１０１は、新たなタスクが生成されると、各仮想ＣＰＵ６ａ、６ｂのタスクキュー１００ａ、１００ｂそれぞれついて、当該タスクキューに保持されているタスクの優先度の合計値を算出し、これら合計値を各仮想ＣＰＵ６ａ、６ｂの処理負荷とし、新たなタスクが生成されたＯＳ内で最も処理負荷の小さい仮想ＣＰＵを特定する（ステップＳ３００）。
【００９１】
タスク登録部１０２は、特定された仮想ＣＰＵのタスクキューに生成された新たなタスクを登録する（ステップＳ３０５）。
【００９２】
タスク情報通知部１０３は、登録された新たなタスクの負荷値を本変形例に係る仮想ＣＰＵ負荷決定部へ通知する（ステップＳ３１０）。
【００９３】
本変形例に係る仮想ＣＰＵ負荷決定部は、仮想ＣＰＵ６ａ〜６ｄ毎に、負荷値の合計を算出する（ステップＳ３１５）。
【００９４】
本変形例に係る仮想ＣＰＵ負荷分散部は、算出された仮想ＣＰＵ毎の負荷値の合計から物理ＣＰＵ１ａ〜１ｃ毎の負荷状況を特定する（ステップＳ３２０）。
【００９５】
本変形例に係る仮想ＣＰＵ負荷分散部は、新たなタスクが登録された仮想ＣＰＵを最も負荷の低い物理ＣＰＵへ移動した場合の当該物理ＣＰＵの負荷を算出する（ステップＳ３２５）。
【００９６】
本変形例に係る仮想ＣＰＵ負荷分散部は、ステップＳ３２５で計算された結果のほうが、計算前の結果よりも各物理ＣＰＵ１ａ〜１ｃの負荷が均等化されるか否かを判断する（ステップＳ３３０）。
【００９７】
均等化されると判断する場合には（ステップＳ３３０における「Ｙｅｓ」）、本変形例に係る仮想ＣＰＵ負荷分散部は、タスクが登録された仮想ＣＰＵを最も負荷の低い物理ＣＰＵへ移動する（ステップＳ３３５）。
【００９８】
均等化されないと判断する場合には（ステップＳ３３０における「Ｎｏ」）、処理は終了する。
【００９９】
なお、本処理が実行された後において、仮想ＣＰＵスケジュール部２０２により、各物理ＣＰＵ１ａ〜１ｃそれぞれについて、当該物理ＣＰＵに分配された仮想ＣＰＵの実行の順番が決定される。
【０１００】
１．５  第１の実施の形態のまとめ
以上により、本実施の形態に係る情報処理システム１０００は、一の仮想ＣＰＵでＲＴタスクが生成されると、各仮想ＣＰＵが分配されている物理ＣＰＵについてＲＴタスクが重複しないよう再割付を行うので、ＲＴタスクの競合を避け、ＲＴタスクの実行要求を満たせるように、仮想ＣＰＵの負荷を物理ＣＰＵ間で分散できる。
【０１０１】
２．第２の実施の形態
ここでは、第１の実施の形態と異なる点を中心に説明する。なお、第１の実施の形態と同一の構成要素については同一の符号を付するものとする。
【０１０２】
図１１は、第２の実施の形態における情報処理システム１０００ａの構成を示す図である。図１１の情報処理システム１０００ａは、図１に示した情報処理システム１０００に、割り込み通知部２０４を追加し、情報処理システム１０００の仮想ＣＰＵ負荷決定部２００を仮想ＣＰＵ負荷決定部２０３に置き換えたものである。
【０１０３】
２．１  構成
ここでは、仮想ＣＰＵ負荷決定部２０３及び割り込み通知部２０４について説明する。
【０１０４】
（１）仮想ＣＰＵ負荷決定部２０３
仮想ＣＰＵ負荷決定部２０３は、第１の実施の形態で示す仮想ＣＰＵ負荷決定部２００の機能と同様の機能とともに、以下の機能を有する。
【０１０５】
仮想ＣＰＵ負荷決定部２０３は、割り込み通知部２０４で割り込みが受け付けられると、割り込み対象の仮想ＣＰＵに対して割り込み通知を発行すべきか否かを判断し、発行すべきと判断する場合には、仮想ＣＰＵ負荷決定部２０３は、割り込み通知を発行すべき旨の指示（割り込み通知指示）を割り込み通知部２０４へ通知する。
【０１０６】
なお、割り込み通知を発行すべきか否かを判断する動作については、後述する。
特定し、その結果を割り込み通知部２０４に通知する。
【０１０７】
（２）割り込み通知部２０４
割り込み通知部２０４は、入出力装置２からの割り込みを受け付けると、割り込みの対象である仮想ＣＰＵを特定する。そして、割り込み通知部２０４は、仮想ＣＰＵ負荷決定部２０３により特定した仮想ＣＰＵに対する割り込み通知指示を受け取ると、割り込みの通知を即座に行う。
【０１０８】
ここで、割り込み通知を即座に行うとは、他の割り込み通知（リアルタイムタスク以外のタスクに関する割り込み）が発行待ちの状態であっても、リアルタイムタスクに係る割り込みを発行待ちの状態とすることなく、他の割り込み通知と比較して最優先に発行することである。
【０１０９】
従来、仮想計算機技術では、割り込みの通知は遅らせることができるので、例えば、対象の仮想ＣＰＵが実行されていない場合、実行を待ってから仮想計算機に通知するといったことがある。例えば、タスクは一時的に動作を止めるサスペンド状態になり、サスペンド状態のタスクは割り込みを契機として再実行される。
【０１１０】
従って、ＲＴタスクを持つ仮想ＣＰＵに対する割り込み通知は、ＲＴタスクの再動作の契機になっている可能性がある。そこで、割り込み通知部２０４は、即座の割り込み通知でＲＴタスクの即座の再動作を可能にする。また、ＲＴタスクを持つ仮想ＣＰＵと他の仮想ＣＰＵが同じ物理ＣＰＵで実行されている場合、他の仮想ＣＰＵに割り込みを即座に通知すると、その処理によりＲＴタスクを持つ仮想ＣＰＵの実行が中断する可能性がある。このような場合は、ＲＴタスクを持つ物理ＣＰＵがアイドル状態になるまで、同じ物理ＣＰＵに分配されている他の仮想ＣＰＵへの割り込み配送を遅延させても良い。
【０１１１】
２．２  動作
仮想ＣＰＵの分配に係る動作は、第１の実施の形態で示す図５、６と同様の動作で実現できるので、ここでの説明は省略する。
【０１１２】
以下、割り込み通知があった場合における動作について図１２に示す流れ図を用いて説明する。
【０１１３】
割り込み通知部２０４は、入出力装置２から割り込みを受け付ける（ステップＳ４００）。
【０１１４】
割り込み通知部２０４は、受け付けた割り込みに対象となる仮想ＣＰＵを特定する（ステップＳ４０５）。
【０１１５】
仮想ＣＰＵ負荷決定部２０３は、割り込み通知部２０４で特定された仮想ＣＰＵがＲＴタスクを保持しているか否かを判断する（ステップＳ４１０）。
【０１１６】
特定された仮想ＣＰＵがＲＴタスクを保持していると判断する場合（ステップＳ４１０における「Ｙｅｓ」）、仮想ＣＰＵ負荷決定部２０３は、割り込み通知指示を割り込み通知部２０４へ通知する。そして、割り込み通知部２０４は、割り込み通知指示を受け付けると、即座に割り込み通知を特定した仮想ＣＰＵへ発行する（ステップＳ４３０）。
【０１１７】
特定した仮想ＣＰＵがＲＴタスクを保持していないと仮想ＣＰＵ負荷決定部２０３が判断する場合（ステップＳ４１０における「Ｎｏ」）、仮想ＣＰＵ負荷決定部２０３は、さらに、特定された仮想ＣＰＵと他の仮想ＣＰＵとが同一の物理ＣＰＵに分配されているか否かを判断する（ステップＳ４１５）。
【０１１８】
同一の物理ＣＰＵに分配されていると判断する場合（ステップＳ４１５における「Ｙｅｓ」）、仮想ＣＰＵ負荷決定部２０３は、当該他の仮想ＣＰＵはＲＴタスクを保持しているか否かを判断する（ステップＳ４２０）。
【０１１９】
他の仮想ＣＰＵがＲＴタスクを保持していると判断する場合（ステップＳ４２０における「Ｙｅｓ」）、仮想ＣＰＵ負荷決定部２０３は、当該物理ＣＰＵがアイドル状態であるか否かを判断する（ステップＳ４２５）。
【０１２０】
アイドル状態であると判断する場合（ステップＳ４２５における「Ｙｅｓ」）、仮想ＣＰＵ負荷決定部２０３は、割り込み通知指示を割り込み通知部２０４へ通知する。そして、割り込み通知部２０４は、割り込み通知指示を受け付けると、割り込み通知を特定した仮想ＣＰＵへ発行する（ステップＳ４３０）。
【０１２１】
また、特定した仮想ＣＰＵが分配された物理ＣＰＵに他の仮想ＣＰＵが分配されていない場合（ステップＳ４１５における「Ｎｏ」）、及び特定した仮想ＣＰＵが分配された物理ＣＰＵに他の仮想ＣＰＵにも分配されているか、当該他の仮想タスクがＲＴタスクを保持していない場合（ステップＳ４２０における「Ｎｏ」）、仮想ＣＰＵ負荷決定部２０３は、割り込み通知指示を割り込み通知部２０４へ通知する。そして、割り込み通知部２０４は、割り込み通知指示を受け付けると、即座に割り込み通知を特定した仮想ＣＰＵへ発行する（ステップＳ４３０）。
【０１２２】
３．第３の実施の形態
ここでは、第３の実施の形態について、第１の実施の形態と異なる点を中心に説明する。なお、第１の実施の形態と同一の構成要素については同一の符号を付するものとする。
【０１２３】
図１３は、第３の実施の形態における情報処理システム１０００ｂの構成を示す図である。図１３の情報処理システム１０００ｂは、図１に示した情報処理システム１０００に、リアルタイムタスク実行通知部１０４を追加し、情報処理システム１０００の仮想ＣＰＵ負荷決定部２００及び仮想ＣＰＵ負荷分散部２０１それぞれを仮想ＣＰＵ負荷決定部２０５及び仮想ＣＰＵ負荷分散部２０６に置き換えたものである。
【０１２４】
３．１  構成
以下、リアルタイムタスク実行通知部１０４、仮想ＣＰＵ負荷決定部２０５及び仮想ＣＰＵ負荷分散部２０６それぞれの機能について説明する。
【０１２５】
（１）リアルタイムタスク実行通知部１０４
リアルタイムタスク実行通知部１０４は、ＲＴタスクの動作が開始された時間を示す時間情報を仮想ＣＰＵ負荷決定部２０５に通知するものである。
【０１２６】
ここで、ＲＴタスクに係る時間情報は、例えばＯＳ２０ａ内のタスクスケジューラ（図示せず）から取得される。
【０１２７】
（２）仮想ＣＰＵ負荷決定部２０５
仮想ＣＰＵ負荷決定部２０５は、ＲＴタスクの時間情報を受け取ると、受け取った時間情報と、前回受け取った時間情報とから当該ＲＴタスクの動作周期（起動周期）を算出し、算出した動作周期を、当該ＲＴタスクを保持する仮想ＣＰＵの負荷として記録する。
【０１２８】
（３）仮想ＣＰＵ負荷分散部２０６
仮想ＣＰＵ負荷分散部２０６は、第１の実施の形態における仮想ＣＰＵ負荷分散部２０１の機能に、以下に示す機能を備える。
【０１２９】
仮想ＣＰＵ負荷分散部２０６は、再分配を決定する際に、ＲＴタスクを保持する仮想ＣＰＵが分配されていない物理ＣＰＵを検索した場合に、当該物理ＣＰＵが見つからないときには、新たに生成されたＲＴタスクを保持する仮想ＣＰＵを、動作周期が最も長い周期であるＲＴタスクを保持する仮想ＣＰＵが分配された物理ＣＰＵに分配する。
【０１３０】
３．２  分配の具体例
以下において、本実施の形態での各仮想ＣＰＵの分散の方法の例である。
【０１３１】
図１４（ａ）は、分配変更前の状態を示している。具体的には、物理ＣＰＵ１ｂに２つの仮想ＣＰＵ６ｂ、６ｃが分配されており、仮想ＣＰＵ６ｂには新たに生成されたＲＴタスク４０が、仮想ＣＰＵ６ｃにはＲＴタスク３０ｃが、それぞれ登録されている。そして、他の仮想ＣＰＵ６ａ、６ｄについても、それぞれＲＴタスク３０ａ、３０ｄが登録されている。この場合、仮想ＣＰＵ負荷分散部２０１は、全ての仮想ＣＰＵにＲＴタスクが存在するので、各物理ＣＰＵ１ａから１ｃに高々１個のＲＴタスクが割り当てられるように、仮想ＣＰＵを再分配することができない。そこで、仮想ＣＰＵ負荷分散部２０６は、新たに生成されたＲＴタスク４０を保持する仮想ＣＰＵ６ｂを、動作周期が最も長い周期であるＲＴタスクを保持する仮想ＣＰＵを検索し、検索された仮想ＣＰＵが分配されている物理ＣＰＵに、仮想ＣＰＵ６ｂを再分配する。
【０１３２】
図１４（ｂ）は、その結果の一例を示すものであり、仮想ＣＰＵ６ｂを、分配先を物理ＣＰＵ１ｂから、動作周期が最も長い周期であるＲＴタスクを保持する仮想ＣＰＵ６ａが分配されている物理ＣＰＵ１ａに変更している。
【０１３３】
このように、再分配をすることで、新たなＲＴタスクは、動作周期が長いＲＴタスクとならば競合する可能性は低い。従って、仮想ＣＰＵ６ａのＲＴタスク３０ａと仮想ＣＰＵ６ｂのＲＴタスク４０とが同時に動作を要求される可能性は低く、リアルタイム要求を満たしやすい。さらにＲＴタスクを持つ仮想ＣＰＵの数が増える場合は、例えば、物理ＣＰＵごとに分配されている複数の仮想ＣＰＵ６ａ〜６ｄそれぞれにおけるリアルタイムタスクの周期の内、最も短いものを物理ＣＰＵの動作周期として分配先を決めても良い。
【０１３４】
３．３  動作
ここでは、第３の実施の形態に係る情報処理システム１０００ｂの動作について説明する。
【０１３５】
（１）動作周期更新処理
ここでは、仮想ＣＰＵ負荷決定部２０５がＲＴタスク毎に管理している動作周期の更新の処理の動作について、図１５に示す流れ図を用いて説明する。
【０１３６】
リアルタイムタスク実行通知部１０４は、管理対象のタスクキューで保持されている一のＲＴタスクの動作が開始されたか否かを判断する（ステップＳ４００）。
【０１３７】
動作が開始されたと判断する場合には（ステップＳ４００における「Ｙｅｓ」）、リアルタイムタスク実行通知部１０４は、当該ＲＴタスクに係る時間情報を仮想ＣＰＵ負荷決定部２０５に通知する（ステップＳ４０５）。
【０１３８】
仮想ＣＰＵ負荷決定部２０５は、リアルタイムタスク実行通知部１０４から動作が開始されたＲＴタスクについて、前回の動作情報と今回受け取った動作情報とから動作周期を算出し、管理している当該ＲＴタスクの動作周期を更新する（ステップＳ４１０）。
【０１３９】
（２）タスク生成・移動処理
ここでは、情報処理システム１０００ｂで行われるタスクの生成・移動処理の動作について、第１の実施の形態と異なる点を中心に、図１６に示す流れ図を用いて説明する。
【０１４０】
先ず、情報処理システム１０００ｂは、図６に示すステップＳ１００からＳ１１５を実行する。なお、これらの処理動作については既に説明しているので、ここでの説明は省略する。
【０１４１】
ステップＳ１１５が実行された後において、仮想ＣＰＵ負荷決定部２０５は、タスク情報通知部１０３からの通知を受け取ると、現時点での各タスクキューにおける負荷状況を特定する（ステップＳ５００）。
【０１４２】
仮想ＣＰＵ負荷分散部２０６は、新たなＲＴタスクを保持する仮想ＣＰＵと他の仮想ＣＰＵとが同一の物理ＣＰＵに分配されているか否かを判断する（ステップＳ５０５）。具体的には、仮想ＣＰＵ負荷分散部２０６は、新たなＲＴタスクを保持する仮想ＣＰＵが分配されている物理ＣＰＵに他の仮想ＣＰＵも分配されているかどうかを判断する。
【０１４３】
判断が肯定的である場合には（ステップＳ５０５における「Ｙｅｓ」）、仮想ＣＰＵ負荷分散部は、ＲＴタスクを保持していない仮想ＣＰＵが分配されている物理ＣＰＵを検索する（ステップＳ５１０）。
【０１４４】
検索結果によりＲＴタスクを保持していない仮想ＣＰＵが分配されている物理ＣＰＵが見つかった場合（ステップＳ５１５における「Ｙｅｓ」）、仮想ＣＰＵ負荷分散部２０６は、見つかった物理ＣＰＵの処理負荷は低いと特定し、検索結果により見つかった物理ＣＰＵに対して、新たなＲＴタスクを保持する仮想ＣＰＵが分配されている物理ＣＰＵに分配されている他の仮想ＣＰＵを再分配する。
【０１４５】
ステップＳ５１０における検索結果によりＲＴタスクを保持していない仮想ＣＰＵが分配されている物理ＣＰＵが見つからなかった場合（ステップＳ５１５における「Ｎｏ」）、仮想ＣＰＵ負荷分散部２０６は、新たなＲＴタスクが登録された仮想ＣＰＵを、動作周期の最も長いＲＴタスクを保持する仮想ＣＰＵが分配された物理ＣＰＵへ移動する（ステップＳ５２５）。
【０１４６】
ステップＳ５０５における判断が否定的である場合（ステップＳ２０５における「Ｎｏ」）、処理は終了する。
【０１４７】
なお、本処理が実行された後において、仮想ＣＰＵスケジュール部２０２により、各物理ＣＰＵ１ａ〜１ｃそれぞれについて、当該物理ＣＰＵに分配された仮想ＣＰＵの実行の順番が決定される。
【０１４８】
４．第４の実施の形態
ここでは、第４の実施の形態について、第１の実施の形態と異なる点を中心に説明する。なお、第１の実施の形態と同一の構成要素については同一の符号を付するものとする。
【０１４９】
図１７は、第４の実施の形態における情報処理システム１０００ｃの構成を示す図である。図１７の情報処理システム１０００ｃは、図１に示した情報処理システム１０００に、仮想ＣＰＵ処理能力通知部２０７を追加し、情報処理システム１０００のタスク負荷分散部１０１をタスク負荷分散部１０５に置き換えたものである。
【０１５０】
４．１  構成
（１）仮想ＣＰＵ処理能力通知部２０７
仮想ＣＰＵ処理能力通知部２０７は、仮想ＣＰＵスケジュール部２０２より仮想ＣＰＵにどれだけの物理ＣＰＵ時間を割り当てるかの情報を取得する。例えば、物理ＣＰＵ時間の５０％を割り当てるといった情報である。
【０１５１】
仮想ＣＰＵ処理能力通知部２０７は、各物理ＣＰＵ１ａから１ｃの割り当て時間から仮想ＣＰＵ６ａから６ｄの処理能力を算出し、タスク負荷分散部１０５に通知する。
【０１５２】
（２）タスク負荷分散部１０５
タスク負荷分散部１０５は、ＣＰＵの処理能力を考慮してタスクの分散を決定するものである。具体的には、タスク負荷分散部１０５は、仮想ＣＰＵ処理能力通知部２０７から仮想ＣＰＵ６ａから６ｄそれぞれの処理能力に係る情報を受け取ると、各仮想ＣＰＵ６ａから６ｄそれぞれの処理能力に基づいて、処理能力が他より低い仮想ＣＰＵにはタスクの分配を抑制する。
【０１５３】
これにより、タスク負荷分散部１０５は、物理ＣＰＵ時間の少ない仮想ＣＰＵに対してはタスクの分配を抑制する。特定の物理ＣＰＵに多くの仮想ＣＰＵが分配されている場合、その仮想ＣＰＵのタスクキューへのＲＴタスクの登録が抑制されるので、特定の物理ＣＰＵにＲＴタスクが集中することを抑制することができる。
【０１５４】
４．２  動作
ここで、情報処理システム１０００ｃで行われるタスク生成・移動処理は、図６で示す動作におけるステップＳ１００を、各仮想ＣＰＵ６ａから６ｄそれぞれの処理能力に基づいて新たなタスクの格納先を決定するように変更するだけで実現できるので、ここでの詳細な説明は省略する。
【０１５５】
５．変形例
以上、実施の形態及び変形例に基づいて説明したが、本発明は上記の実施の形態及び変形例に限られない。例えば、以下のような変形例が考えられる。
【０１５６】
（１）上記各実施の形態では、情報処理システムは、新たにタスクが生成された場合に、当該新たなタスクの移動を決定したが、これに限定されない。
【０１５７】
情報処理システムは、タスク負荷分散部を一定周期で呼び出し、負荷が均等になるように各タスクキュー間でのタスクの移動を決定してもよい。
【０１５８】
（２）上記各実施の形態では、仮想計算機を２つとしたが、これに限定されない。
【０１５９】
情報処理システムに、３つ以上の仮想計算機を設けてもよい。
【０１６０】
（３）上記各実施の形態において、仮想ＣＰＵスケジュール部は、時分割により、タスクキューで保持する各タスクの実行順序を決定したが、これに限定されない。
【０１６１】
ＯＳ２０ａ及びＯＳ２０ｂは、ＲＴタスクの終了をハイパバイザ５に通知し、仮想ＣＰＵスケジュール部は、終了の通知までＲＴタスクを持つ仮想ＣＰＵの実行を続けるといった仮想ＣＰＵスケジュールを行ってもよい。
【０１６２】
（４）上記各実施の形態において、ＲＴタスクと通常タスクとを優先度により区別したが、これに限定されない。
【０１６３】
例えば、優先度以外にリアルタイムタスクを区別する機能を持つＯＳを用いて、ＲＴタスクと通常タスクと区別してもよい。あるいは、設計上の事項として、リアルタイム性能を要求するタスクには一定以上の優先度を付与する場合、この優先度以上のタスクをリアルタイムタスクとみなしてもよい。
【０１６４】
本発明におけるＲＴタスクとは、優先度やタスクの種別を参照にして、特に優先しての実行を要求するタスクとして扱われるタスクに相当するものである。
【０１６５】
（５）上記第３の実施の形態において、動作情報をＯＳのタスクスケジュールから取得するとしたが、これに限定されない。
【０１６６】
タスクの動作時間を記録しているＯＳを用いて、当該ＯＳによる記録を利用してもよい。
【０１６７】
または、タスク登録部によるタスクキューへのタスクの登録で、リアルタイムタスクの動作の時間情報がわかる場合、タスク情報通知部がリアルタイムタスク実行通知部を兼ねてもよい。
【０１６８】
（６）上記第３の実施の形態において、再分配に用いる情報として、ＲＴタスクの動作周期としたが、これに限定されない。
【０１６９】
例えば、ＲＴタスクにおける平均の動作間隔を擬似的な周期としてもよい。また、周期だけでなく、ＲＴタスクの動作の時間を仮想ＣＰＵの分散の決定に考慮しても良い。
【０１７０】
（７）なお、本発明の各機能ブロックは典型的にはソフトウェアとして実現されるが、集積回路であるＬＳＩとして実現しても良い。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  ＰｒｏｇｒａｍｍａｂｌｅＧａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、その技術を用いて機能ブロックの集積化を行ってもよい。
【０１７１】
（８）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【０１７２】
６．補足
（１）本発明の一態様である、情報処理システムは、処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備え、前記ハイパバイザは、各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得手段と、前記取得手段により逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更手段とを有することを特徴とする。
【０１７３】
この構成によると、情報処理システムは、各プロセッサ間で処理負荷量の偏りが生じているときにはプロセッサとタスクグループとの対応付けを変更するので、複数のプロセッサ間で処理負荷の均衡を保つようにすることができる。
【０１７４】
（２）ここで、前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイム性の処理が要求されるリアルタイムタスクに係る処理負荷量であり、前記変更手段は、各プロセッサ間でリアルタイムタスクに係る処理負荷量に偏りが生じているときには、リアルタイムタスクに係る処理負荷量が分散されるようプロセッサとタスクグループの対応付けを変更するとしてもよい。
【０１７５】
この構成によると、情報処理システムは、各プロセッサ間でリアルタイムタスクに係る処理負荷量に偏りが生じているときには、リアルタイムタスクに係る処理負荷量が分散されるようにプロセッサとタスクグループとの対応付けを変更するので、リアルタイムタスクに係る処理負荷の均衡を保つことができる。これにより、リアルタイムタスクに係る処理負荷の均衡が保たれるので、リアルタイムタスクに対するリアルタイム要求を満たすことができる。
【０１７６】
（３）ここで、タスクグループに含まれるリアルタイムタスクに係る前記処理負荷量は、当該タスクグループに含まれるリアルタイムタスクの個数であり、前記変更手段は、各プロセッサ間で当該プロセッサで処理すべきリアルタイムタスクの個数に偏りが生じているときには、処理すべきリアルタイムタスクの個数が分散されるようプロセッサとタスクグループの対応付けを変更するとしてもよい。
【０１７７】
この構成によると、情報処理システムは、リアルタイムタスクの個数を処理負荷量とするので、容易に各プロセッサの処理負荷量を特定することができる。
【０１７８】
（４）ここで、前記変更手段は、複数のタスクグループが対応付けられたプロセッサにおいて、少なくとも２つのタスクグループそれぞれにリアルタイムタスクを含んでいる場合に、当該プロセッサについてリアルタイムタスクに係る処理負荷量の偏りが生じていると判断し、当該プロセッサにおける前記少なくとも２つのタスクグループそれぞれを個別のプロセッサへ対応付けるとしてもよい。
【０１７９】
この構成によると、情報処理システムは、同一のプロセッサに対応付けられた少なくとも２つのタスクグループそれぞれを、個別のプロセッサへ対応付けることで、リアルタイムタスクに係る処理負荷の均衡を保つことができる。
【０１８０】
（５）ここで、前記変更手段は、複数のタスクグループが対応付けられたプロセッサにおいて、１つのタスクグループにリアルタイムタスクが属している場合に、当該プロセッサについて処理負荷量の偏りが生じていると判断し、当該プロセッサと前記１つのタスクグループのみと対応付け、当該プロセッサに対応付けられていた他のタスクグループを他のプロセッサへ対応付けるとしてもよい。
【０１８１】
この構成によると、情報処理システムは、１つのプロセッサに、リアルタイムタスクを保持する１つのタスクグループを対応付けることで、リアルタイムタスクを保持しない他のタスクグループとのスケジューリングを行う必要がないので、リアルタイムタスクに対するリアルタイム要求を満たすことができる。
【０１８２】
（６）ここで、前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイムタスクの動作間隔を示す値であり、前記変更手段は、一のプロセッサに対して動作間隔の短いリアルタイムタスクが属する第１タスクグループと他のリアルタイムタスクが属する第２タスクグループとが対応付けられている場合に、当該一のプロセッサについて処理負荷量の偏りが生じていると判断し、前記第２タスクグループの対応付けを、動作間隔が前記第１タスクグループの動作間隔よりも長いタスクグループが属する第３タスクグループが対応付けられているプロセッサへ変更するとしてもよい。
【０１８３】
この構成によると、情報処理システムは、第２タスクグループの対応付けを、第３タスクグループが対応付けられているプロセッサへ変更するので、第２タスクグループにおけるリアルタイムタスクと、第３タスクグループにおけるリアルタイムタスクとで競合が発生する確率を低くすることができる。
【０１８４】
（７）ここで、前記ハイパバイザは、さらに、割り込みを受け付けると、リアルタイムタスクを含むタスクグループに含まれるタスクのものである場合には、当該リアルタイムタスクを含むタスクグループの実行制御を行うＯＳに当該割り込みの通知を即座に行うとしてもよい。
【０１８５】
この構成によると、情報処理システムは、リアルタイムタスクに係る割り込みが発生すると、即座に割り込み通知を行うので、リアルタイムタスクに対するリアルタイム要求を満たすことができる。
【０１８６】
（８）ここで、前記タスクには、処理の優先度が対応付けられており、前記変更手段は、各タスクグループにおいて当該タスクグループに属するタスクの優先度の合計値に基づき、各プロセッサ間で優先度の合計値に偏りが生じている場合に前記処理負荷量に偏りが生じていると判断し、優先度の合計値が平均化されるようプロセッサとタスクグループの対応付けを変更するとしてもよい。
【０１８７】
この構成によると、情報処理システムは、各タスクグループにおいて当該タスクグループに属するタスクの優先度の合計値を処理負荷量とするので、容易に各プロセッサの処理負荷量を特定することができる。
【０１８８】
（９）ここで、前記ハイパバイザは、さらに、各ＯＳに対して、当該ＯＳに属する各タスクグループについて、当該タスクグループが割り当てられたプロセッサにおける当該タスクグループの処理能力を通知する通知手段を備え、各ＯＳは、新たなタスクを生成すると、通知された処理能力のうち高い処理能力を有するタスクグループに前記新たなタスクを割り当てるとしてもよい。
【０１８９】
この構成によると、情報処理システムは、各プロセッサについて当該プロセッサに対応付けられたタスクグループの処理能力に基づいて、新たに生成されたタスクを割り当てるので、タスクの割り当て時点で、複数のプロセッサ間で処理負荷の均衡を保つようにすることができる。
【０１９０】
（１０）ここで、前記ハイパバイザは、各プロセッサにおいて、当該プロセッサに対応付けられた１又は複数のタスクグループの処理スケジュールを決定するスケジュール決定手段を備え、前記処理能力は、前記各タスクグループに対する処理スケジュールに基づく処理時間を示すものであるとしてもよい。
【０１９１】
この構成によると、情報処理システムは、各プロセッサについて当該プロセッサに対応付けられたタスクグループの処理スケジュールに基づいて、新たに生成されたタスクを割り当てることができる。
【産業上の利用可能性】
【０１９２】
本発明に係る情報処理システムは、大型計算機、パーソナルコンピュータのみならず、デジタルテレビ、蓄積再生装置等の各種家電機器、通信機器、産業機器、制御機器、車載機器などのように、仮想計算機を用いた処理を実行する機器に有効である。
【符号の説明】
【０１９３】
１ａ〜１ｃ  物理ＣＰＵ
２    入出力装置
３    負荷分散装置
４ａ、４ｂ  仮想計算機
５    ハイパバイザ
６ａ〜６ｄ  仮想ＣＰＵ
１００ａ〜１００ｄ  タスクキュー
１０１    タスク負荷分散部
１０２    タスク登録部
１０３    タスク情報通知部
２００    仮想ＣＰＵ負荷決定部
２０１    仮想ＣＰＵ負荷分散部
２０２    仮想ＣＰＵスケジュール部
１０００    情報処理システム
【図１】
2011148563.tif 000003
【図２】
2011148563.tif 000004
【図３】
2011148563.tif 000005
【図４】
2011148563.tif 000006
【図５】
2011148563.tif 000007
【図６】
2011148563.tif 000008
【図７】
2011148563.tif 000009
【図８】
2011148563.tif 000010
【図９】
2011148563.tif 000011
【図１０】
2011148563.tif 000012
【図１１】
2011148563.tif 000013
【図１２】
2011148563.tif 000014
【図１３】
2011148563.tif 000015
【図１４】
2011148563.tif 000016
【図１５】
2011148563.tif 000017
【図１６】
2011148563.tif 000018
【図１７】
2011148563.tif 000019
【手続補正書】
【提出日】平成23年7月29日(2011.7.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、
複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備え、
前記ハイパバイザは、
各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得手段と、
前記取得手段により逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更手段とを有し、
前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイム性の処理が要求されるリアルタイムタスクに係る処理負荷量であり、
前記変更手段は、各プロセッサ間でリアルタイムタスクに係る処理負荷量に偏りが生じているときには、リアルタイムタスクに係る処理負荷量が分散されるようプロセッサとタスクグループの対応付けを変更する
ことを特徴とする情報処理システム。
【請求項２】
タスクグループに含まれるリアルタイムタスクに係る前記処理負荷量は、当該タスクグループに含まれるリアルタイムタスクの個数であり、
前記変更手段は、各プロセッサ間で当該プロセッサで処理すべきリアルタイムタスクの個数に偏りが生じているときには、処理すべきリアルタイムタスクの個数が分散されるようプロセッサとタスクグループの対応付けを変更する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記変更手段は、
複数のタスクグループが対応付けられたプロセッサにおいて、少なくとも２つのタスクグループそれぞれにリアルタイムタスクを含んでいる場合に、当該プロセッサについてリアルタイムタスクに係る処理負荷量の偏りが生じていると判断し、
当該プロセッサにおける前記少なくとも２つのタスクグループそれぞれを個別のプロセッサへ対応付ける
ことを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記変更手段は、
複数のタスクグループが対応付けられたプロセッサにおいて、１つのタスクグループにリアルタイムタスクが属している場合に、当該プロセッサについて処理負荷量の偏りが生じていると判断し、
当該プロセッサと前記１つのタスクグループのみと対応付け、当該プロセッサに対応付けられていた他のタスクグループを他のプロセッサへ対応付ける
ことを特徴とする請求項１に記載の情報処理システム。
【請求項５】
前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイムタスクの動作間隔を示す値であり、
前記変更手段は、
一のプロセッサに対して動作間隔の短いリアルタイムタスクが属する第１タスクグループと他のリアルタイムタスクが属する第２タスクグループとが対応付けられている場合に、当該一のプロセッサについて処理負荷量の偏りが生じていると判断し、
前記第２タスクグループの対応付けを、動作間隔が前記第１タスクグループの動作間隔よりも長いタスクグループが属する第３タスクグループが対応付けられているプロセッサへ変更する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項６】
前記ハイパバイザは、さらに、
割り込みを受け付けると、リアルタイムタスクを含むタスクグループに含まれるタスクのものである場合には、当該リアルタイムタスクを含むタスクグループの実行制御を行うＯＳに当該割り込みの通知を即座に行う
ことを特徴とする請求項１に記載の情報処理システム。
【請求項７】
前記タスクには、処理の優先度が対応付けられており、
前記変更手段は、
各タスクグループにおいて当該タスクグループに属するタスクの優先度の合計値に基づき、各プロセッサ間で優先度の合計値に偏りが生じている場合に前記処理負荷量に偏りが生じていると判断し、
優先度の合計値が平均化されるようプロセッサとタスクグループの対応付けを変更する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項８】
前記ハイパバイザは、さらに、
各ＯＳに対して、当該ＯＳに属する各タスクグループについて、当該タスクグループが割り当てられたプロセッサにおける当該タスクグループの処理能力を通知する通知手段を備え、
各ＯＳは、新たなタスクを生成すると、通知された処理能力のうち高い処理能力を有するタスクグループに前記新たなタスクを割り当てる
ことを特徴とする請求項１に記載の情報処理システム。
【請求項９】
前記ハイパバイザは、
各プロセッサにおいて、当該プロセッサに対応付けられた１又は複数のタスクグループの処理スケジュールを決定するスケジュール決定手段を備え、
前記処理能力は、前記各タスクグループに対する処理スケジュールに基づく処理時間を示すものである
ことを特徴する請求項８に記載の情報処理システム。
【請求項１０】
処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、
複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備える情報所処理システムにおいて、前記ハイパバイザで用いられる処理方法であって、
各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得ステップと、
前記取得ステップにより逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更ステップとを有し、
前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイム性の処理が要求されるリアルタイムタスクに
係る処理負荷量であり、
前記変更ステップは、各プロセッサ間でリアルタイムタスクに係る処理負荷量に偏りが生じているときには、リアルタイムタスクに係る処理負荷量が分散されるようプロセッサとタスクグループの対応付けを変更する
ことを特徴とする処理方法。
【請求項１１】
処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、
複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備える情報所処理システムにおいて前記ハイパバイザで用いられる処理プログラムであって、
コンピュータに、
各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得ステップと、
前記取得ステップにより逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更ステップとを実行させ、
前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイム性の処理が要求されるリアルタイムタスクに係る処理負荷量であり、
前記変更ステップでは、各プロセッサ間でリアルタイムタスクに係る処理負荷量に偏りが生じているときには、リアルタイムタスクに係る処理負荷量が分散されるようプロセッサとタスクグループの対応付けを変更させる
ための処理プログラム。
【請求項１２】
前記処理プログラムは、
コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項１１に記載の処理プログラム。
【請求項１３】
処理対象の各タスクを何れかのタスクグループに属するものと定めて同一タスクグループに属する全タスクが同一プロセッサ上で実行されるよう各タスクの実行制御を行うＯＳを複数含むＯＳ群と、
複数のプロセッサ各々に、前記各ＯＳのタスクグループのうち１又は複数を対応付け、前記各ＯＳに、タスクグループに対応付けたプロセッサ上で当該タスクグループに属するタスクを実行させるようタスクの実行制御を行わせるハイパバイザとを備え、
前記ハイパバイザは、
各ＯＳについてのタスクグループ各々の処理負荷量を示す負荷情報を逐次取得する取得手段と、
前記取得手段により逐次取得した負荷情報が示す処理負荷量を参照して、各プロセッサ間で処理負荷量に偏りが生じているときには、プロセッサとタスクグループの対応付けを変更する変更手段とを有し、
前記処理負荷量は、各タスクグループについて当該タスクグループに含まれるリアルタイム性の処理が要求されるリアルタイムタスクに係る処理負荷量であり、
前記変更手段は、各プロセッサ間でリアルタイムタスクに係る処理負荷量に偏りが生じているときには、リアルタイムタスクに係る処理負荷量が分散されるようプロセッサとタスクグループの対応付けを変更する
ことを特徴とする集積回路。
【請求項１４】
（削除）
【国際調査報告】
2011148563.tif 000020
2011148563.tif 000021
2011148563.tif 000022