(57)【特許請求の範囲】
【請求項１】
タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含む複数の仮想計算機と、
前記複数の仮想計算機の切り替えを制御する仮想計算機制御部とを備え、
前記複数の仮想計算機の少なくとも１つは、
現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替えるための切り替え指示を前記仮想計算機制御部に通知する切り替えタスクと、
前記他の仮想計算機の優先度を、前記切り替えタスクの優先度として設定する優先度設定部とを含むことを特徴とする仮想計算機制御装置。
【請求項２】
前記仮想計算機制御部は、前記オペレーティングシステムのタスクスケジューリングにより前記切り替えタスクが実行された場合、前記切り替え指示を受け取り、現在動作中の仮想計算機を前記他の仮想計算機に切り替えることを特徴とする請求項１記載の仮想計算機制御装置。
【請求項３】
前記複数の仮想計算機の少なくとも１つは、さらに、
前記切り替えタスクを含む１つ以上のタスクを、各タスクに予め設定された優先度に応じて順次実行するタスク実行部を備え、
前記タスク実行部は、前記オペレーティングシステムのタスクスケジューリングにより前記切り替えタスクを実行することを特徴とする請求項１又は２記載の仮想計算機制御装置。
【請求項４】
前記タスク実行部は、前記切り替えタスクに設定された優先度が、当該切り替えタスクを含む仮想計算機における他のタスクに設定された優先度より高くなった場合に、前記切り替えタスクを実行することを特徴とする請求項３記載の仮想計算機制御装置。
【請求項５】
前記切り替えタスクの優先度として設定される前記他の仮想計算機の優先度は、前記他の仮想計算機における最も優先度の高いタスクの優先度であることを特徴とする請求項１〜４のいずれかに記載の仮想計算機制御装置。
【請求項６】
前記タスク実行部は、前記複数の仮想計算機の起動時に前記切り替えタスクを生成し、生成した前記切り替えタスクの優先度を最も高い優先度に設定することを特徴とする請求項３記載の仮想計算機制御装置。
【請求項７】
前記仮想計算機制御部は、
前記複数の仮想計算機への割り込みを通知するための割り込み通知を受け取り、前記割り込み通知に含まれる割り込み要因を用いて、前記複数の仮想計算機の中から割り込み対象の仮想計算機を判断する割り込み受取部と、
前記割り込み要因に対応付けられている優先度を、前記割り込み対象の仮想計算機に対する優先度として設定するか否かを判断する割込み優先度格納判断部とを含むことを特徴とする請求項１〜６のいずれかに記載の仮想計算機制御装置。
【請求項８】
前記割込み優先度格納判断部は、前記割り込み受取部によって判断された割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じであるか否かを判断し、
前記仮想計算機制御部は、割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じではないと判断された場合、前記割り込み要因に対応付けられている優先度を、前記割り込み対象の仮想計算機に対する優先度として設定する仮想計算機優先度設定部をさらに含むことを特徴とする請求項７記載の仮想計算機制御装置。
【請求項９】
各仮想計算機の実行コンテキストを記憶する実行コンテキスト記憶部をさらに備え、
前記仮想計算機制御部は、切り替え前の仮想計算機に対応する実行コンテキストを前記実行コンテキスト記憶部に退避させ、切り替え後の仮想計算機に対応する実行コンテキストを前記実行コンテキスト記憶部から復帰させることを特徴とする請求項３記載の仮想計算機制御装置。
【請求項１０】
前記タスク実行部によって通知される前記優先度を記憶する優先度記憶部をさらに備え、
前記仮想計算機制御部は、前記タスク実行部によって通知される前記優先度と切り替え指示とを受け取った場合、切り替え前の仮想計算機に対応する実行コンテキストを前記実行コンテキスト記憶部に退避させ、前記タスク実行部によって通知される前記優先度を前記優先度記憶部に記憶し、切り替え後の仮想計算機に対応する実行コンテキストを前記実行コンテキスト記憶部から復帰させ、
切り替え後の仮想計算機に含まれる前記タスク実行部は、中断された切り替えタスクを再度実行し、
切り替え後の仮想計算機に含まれる前記優先度設定部は、前記優先度記憶部に記憶されている切り替え前の仮想計算機の前記優先度を取得し、取得した前記優先度を切り替えタスクの優先度として設定することを特徴とする請求項９記載の仮想計算機制御装置。
【請求項１１】
前記実行コンテキスト記憶部は、前記仮想計算機制御部によって退避された実行コンテキストを仮想計算機毎に記憶し、
前記タスク実行部は、現在動作中の仮想計算機に障害が発生した場合、前記仮想計算機制御部に対し、現在動作中の仮想計算機に障害が発生したことを表す障害優先度を通知し、
前記仮想計算機制御部は、前記タスク実行部によって通知される前記障害優先度を受け取った場合、前記実行コンテキスト記憶部に記憶されている最も古い実行コンテキストを復帰させることを特徴とする請求項９又は１０記載の仮想計算機制御装置。
【請求項１２】
タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含む複数の仮想計算機の切り替えを制御する仮想計算機制御方法であって、
前記複数の仮想計算機の少なくとも１つが、
現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替えるための切り替え指示を、前記複数の仮想計算機の切り替えを制御する仮想計算機制御部に通知する切り替えタスクを生成する生成ステップと、
前記他の仮想計算機の優先度を、前記切り替えタスクの優先度として設定する優先度設定ステップとを実行することを特徴とする仮想計算機制御方法。
【請求項１３】
タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含む複数の仮想計算機と、
前記複数の仮想計算機の切り替えを制御する仮想計算機制御部としてコンピュータを機能させ、
前記複数の仮想計算機の少なくとも１つは、
現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替えるための切り替え指示を前記仮想計算機制御部に通知する切り替えタスクと、
前記他の仮想計算機の優先度を、前記切り替えタスクの優先度として設定する優先度設定部とを含む仮想計算機として前記コンピュータを機能させることを特徴とする仮想計算機制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一つの物理計算機において、複数の仮想計算機の実行を制御する仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラムに関し、特に、複数の仮想計算機を切り替える仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラムに関するものである。
【背景技術】
【０００２】
マイクロプロセッサの性能向上に伴い、ハードウェアを効率的に利用する技術として、１つの物理的計算機で複数の仮想計算機（ソフトウェアによる仮想的な計算機）を実行する仮想化技術が利用されている。なお、以下、この物理的計算機を、情報処理装置と記載する。
【０００３】
家電機器などの組み込み機器において、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）やマルチメディア処理などの多機能性と、デバイス制御や同期通信などのリアルタイム性との両立が求められている。そのため、マルチメディア処理などの多機能性に適した仮想計算機と、リアルタイム性に適した仮想計算機とを、１つの情報処理装置上で切り替えながら実行することで、２つの処理の両立を実現している。
【０００４】
従来の仮想計算機を切り替える方法としては、リアルタイム性を重視したＯＳ（オペレーティング・システム）を備えた仮想計算機を優先して実行し、このＯＳがアイドル状態の時に、現在動作中の仮想計算機を他の仮想計算機に切り替えて実行する方法があった。また、複数の仮想計算機に固定の優先度を割り当て、この優先度を用いて仮想計算機のスケジュールを行う方法があった。
【０００５】
リアルタイム性を重視したＯＳを備えた仮想計算機を常に優先させる方法では、他の仮想計算機に重要な処理が発生しても、即座にその重要な処理を実行することができなかった。また、固定の優先度を用いて仮想計算機のスケジュールを行う方法では、複数の仮想計算機の両方でリアルタイム性を重視する処理を実行することは困難であった。
【０００６】
この課題を解決する従来の方法として、実行する処理に基づいて、仮想計算機の優先度を変化させる技術がある（例えば、特許文献１参照）。つまり、従来技術では、仮想計算機の優先度を、その仮想計算機で実行するタスクの優先度に設定することになる。タスクの優先度とは、ＯＳのタスクスケジューリングで使用される値である。ある仮想計算機が優先度の高いタスクを実行する場合、その仮想計算機の優先度も高くなるので、優先度の高い仮想計算機へ切り替わり、優先度の高いタスクが実行されることになる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２４２５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、前記従来の構成では、ＯＳがタスクスケジュールを行う度に、実行中の仮想計算機（ＯＳ）が中断し、複数の仮想計算機の切り替えを制御するＯＳ切り替えプログラムが動作して次に実行する仮想計算機が決定される。つまり、従来技術では、中断した同じ仮想計算機に処理が戻る場合でも、仮想計算機の中断と復帰との処理が発生するという課題を有している。
【０００９】
本発明は、上記の問題を解決するためになされたもので、仮想計算機の切り替えに要するオーバーヘッドを削減することができる仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラムを提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
本発明の一局面に係る仮想計算機制御装置は、タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含む複数の仮想計算機と、前記複数の仮想計算機の切り替えを制御する仮想計算機制御部とを備え、前記複数の仮想計算機の各々は、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための切り替えタスクを実行するタスク実行部と、現在動作中の仮想計算機自身の実行可能なタスクの中から最も優先度の高いタスクの優先度を取得する優先度取得部と、前記切り替えタスクの優先度を、前記他の仮想計算機の前記優先度取得部によって取得された前記優先度に設定する優先度設定部とを含み、前記タスク実行部は、前記オペレーティングシステムのタスクスケジューリングにより前記切り替えタスクを実行した場合、前記仮想計算機制御部に対し、前記優先度取得部によって取得された前記優先度と、現在動作中の仮想計算機を前記他の仮想計算機に切り替える切り替え指示とを通知し、前記仮想計算機制御部は、前記タスク実行部によって通知される前記優先度と切り替え指示とを受け取り、現在動作中の仮想計算機を前記他の仮想計算機に切り替える。
【００１１】
この構成によれば、複数の仮想計算機は、タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含み、仮想計算機制御部は、複数の仮想計算機の切り替えを制御する。タスク実行部は、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための切り替えタスクを実行し、優先度取得部は、現在動作中の仮想計算機自身の実行可能なタスクの中から最も優先度の高いタスクの優先度を取得し、優先度設定部は、切り替えタスクの優先度を、他の仮想計算機の優先度取得部によって取得された優先度に設定する。タスク実行部は、オペレーティングシステムのタスクスケジューリングにより切り替えタスクを実行した場合、仮想計算機制御部に対し、優先度取得部によって取得された優先度と、現在動作中の仮想計算機を他の仮想計算機に切り替える切り替え指示とを通知する。仮想計算機制御部は、タスク実行部によって通知される優先度と切り替え指示とを受け取り、現在動作中の仮想計算機を他の仮想計算機に切り替える。
【発明の効果】
【００１２】
本発明によれば、切り替えタスクの優先度が、他の仮想計算機における最も優先度の高いタスクの優先度に設定され、仮想計算機が切り替える場合にのみ、切り替えタスクが実行されるので、仮想計算機の中断と復帰との処理回数が削減され、仮想計算機の切り替えに要するオーバーヘッドを削減することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１における情報処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態１におけるタスク管理テーブルの一例を示す図である。
【図３】本発明の実施の形態１における仮想計算機識別子テーブルの一例を示す図である。
【図４】本発明の実施の形態１における第１の仮想計算機による切り替え処理の一例を示すフローチャートである。
【図５】本発明の実施の形態１における仮想計算機制御部による切り替え処理の一例を示すフローチャートである。
【図６】本発明の実施の形態１における第２の仮想計算機による切り替え処理の一例を示す図である。
【図７】本発明の実施の形態２における情報処理装置の構成を示すブロック図である。
【図８】本発明の実施の形態２における割り込みテーブルの一例を示す図である。
【図９】本発明の実施の形態２における仮想計算機制御部による割り込み処理の一例を示すフローチャートである。
【図１０】本発明の実施の形態２における優先度テーブルの一例を示す図である。
【図１１】本発明の実施の形態３における実行コンテキスト記憶部の構成を示す図である。
【図１２】本発明の実施の形態４における情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下添付図面を参照しながら、本発明の実施の形態について説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
【００１５】
（実施の形態１）
図１は、本発明の実施の形態１における情報処理装置の構成を示すブロック図である。
【００１６】
図１に示す情報処理装置は、ＣＰＵ（中央演算装置）１、割り込みコントローラ２、周辺デバイス３及びメモリ４を備えている。
【００１７】
ＣＰＵ１は、処理能力が十分であれば任意のものが利用可能である。割り込みコントローラ２は、周辺デバイス３が出力する割り込み要求をＣＰＵ１に通知する。
【００１８】
周辺デバイス３は、各種の入出力装置であり、情報処理装置の使用目的に応じたものを利用する。例えば、周辺デバイス３は、キーデバイス、通信デバイス、表示デバイス、デコーダ、エンコーダ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）又はＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラなどである。
【００１９】
メモリ４は、第１の仮想計算機１０、第２の仮想計算機２０、仮想計算機制御部３０、仮想計算機優先度記憶部４０及び実行コンテキスト記憶部５０を備えている。メモリ４は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）又はフラッシュメモリなどの、任意のタイプを使用することができる。また、メモリ４は、単一のメモリ装置で構成されている必要はなく、同種の複数のメモリの組み合わせ又は異なる種類の複数のメモリの組み合わせであってもよい。さらに、メモリ４以外に、例えばハードディスクのような外部記憶装置を設け、情報処理装置の動作に問題のない範囲で、外部記憶装置にメモリ４の内容を移動させてもよい。
【００２０】
また、第１の仮想計算機１０、第２の仮想計算機２０、仮想計算機制御部３０、仮想計算機優先度記憶部４０及び実行コンテキスト記憶部５０は、メモリ４上に存在する場合は仮想計算機制御プログラムとして存在しており、ＣＰＵ１が当該仮想計算機制御プログラムを実行することによって、第１の仮想計算機１０、第２の仮想計算機２０、仮想計算機制御部３０、仮想計算機優先度記憶部４０及び実行コンテキスト記憶部５０として機能する。
【００２１】
第１の仮想計算機１０は、擬似タスク１１０を含む１つ以上のタスクを実行するタスク実行部１００と、第１のＯＳ１２０とを備えている。擬似タスク１１０を含む全てのタスクは、それぞれ優先度が設定されている。第１のＯＳ１２０は、タスクの優先度に基づき実行するタスクのスケジューリングを行う。
【００２２】
タスク実行部１００は、各タスクに予め設定された優先度に応じてタスクを順次実行する。また、タスク実行部１００は、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための擬似タスク１１０を実行する。
【００２３】
擬似タスク１１０は、第２の仮想計算機２０の優先度を反映したタスクであり、仮想計算機切り替え通知部１１１と、優先度設定要求部１１２とを備えている。
【００２４】
仮想計算機切り替え通知部１１１は、第１のＯＳ１２０に、最優先タスク優先度取得要求を出力し、第１のＯＳ１２０は、タスクの中から最も優先して実行する最優先タスクの優先度を取得する。次に、仮想計算機切り替え通知部１１１は、仮想計算機制御部３０に仮想計算機切り替え通知を出力し、第１の仮想計算機１０を中断して、仮想計算機制御部３０に処理を移す。なお、仮想計算機切り替え通知は、取得した最優先タスクの優先度と、切り替え元の仮想計算機（ここでは、第１の仮想計算機１０）の識別子と、切り替え先の仮想計算機（ここでは、第２の仮想計算機２０）の識別子とを含んでいる。
【００２５】
これにより、第１のＯＳ１２０のタスクスケジューリングによって、擬似タスク１１０の実行順となったタイミングで、第１の仮想計算機１０から第２の仮想計算機２０への切り替え処理が行われることになる。なお、最優先タスクとは、実行状態のタスクを除く、次にスケジューリングされる可能性があるタスクを対象とする。つまり、実行状態の擬似タスクは、最優先タスクにはならない。
【００２６】
優先度設定要求部１１２は、擬似タスク１１０（第１の仮想計算機１０）が中断から復帰した際に、第１のＯＳ１２０に、擬似タスク１１０の優先度を設定するための優先度設定要求を送信する。また、優先度設定要求部１１２は、擬似タスク１１０の優先度の設定が完了すると、第１のＯＳ１２０から優先度設定完了通知を受け取り、擬似タスク１１０の処理を終了する。この後、第１のＯＳ１２０のタスクスケジューリングにより、次に実行するタスクの処理が開始されることになる。終了時の擬似タスク１１０の優先度は、第２の仮想計算機２０から第１の仮想計算機１０への切り替えが発生したタイミングにおける、第２の仮想計算機２０の最優先タスクの優先度が設定されている。
【００２７】
第１のＯＳ１２０は、タスクスケジューラ１２１と、優先度取得部１２２と、優先度設定部１２３とを備えている。
【００２８】
タスクスケジューラ１２１は、第１のＯＳ１２０の配下のタスクの実行順序のスケジューリングを行う。スケジューリング対象のタスクには、擬似タスク１１０が含まれている。また、タスクスケジューラ１２１は、タスクを管理するための、タスク管理テーブルを保持している。
【００２９】
図２は、本発明の実施の形態１におけるタスク管理テーブルの一例を示す図である。図２に示すタスク管理テーブルは、各タスクの管理情報として、タスクＩＤ、タスク状態及びタスク優先度を有している例である。タスクＩＤは、各タスクを識別可能な識別子であり、一意にタスクを決定できればよい。タスク状態は、現在のタスクの状態を表しており、“実行状態”と“実行可能状態”と“待ち状態”との３つの状態が存在する。“実行状態”は、タスクが実行中であることを示しており、複数のタスクが同時に“実行状態”となることはない。“実行可能状態”は、他のタスクの実行が終了した際に、タスクスケジューラ１２１が実行させることができることを示している。“待ち状態”とは、タスクが、セマフォ、イベント又は一定時間待ちなどの条件が満たされるまで自ら休止した状態である。
【００３０】
タスク優先度は、タスクの優先度を表している。なお、図２では、タスク優先度を数値で示しており、数値が小さいほど優先度としては高いとしている。なお、タスク優先度は、数値以外の情報で表現してもよい。また、タスク優先度は、ＯＳのサービス、例えば、ＵＮＩＸ（登録商標）ＯＳにおけるｐｓコマンドを利用してタスク構造体から取得され、タスク管理テーブルに格納される。
【００３１】
優先度取得部１２２は、擬似タスク１１０から、最優先タスク優先度取得要求を受け取り、前述したタスク管理テーブルを参照して、自身が属する第１の仮想計算機１０の実行可能なタスクの中から最も優先度の高い最優先タスクの優先度を取得し、擬似タスク１１０に取得した優先度を返す。なお、最優先タスクは、タスク状態が“実行状態”のタスクを除いたタスクの中から選択される。そのため、擬似タスク１１０は、常に最優先タスクから除外される。
【００３２】
優先度設定部１２３は、擬似タスク１１０から優先度設定要求を受け取り、擬似タスク１１０の優先度を設定する。優先度設定部１２３は、擬似タスク１１０の優先度を、第２の仮想計算機２０の優先度取得部２２２によって取得された優先度に設定する。具体的には、優先度設定部１２３は、仮想計算機優先度記憶部４０に格納されている第２の仮想計算機２０の最優先タスクの優先度を取得し、前述したタスク管理テーブルの擬似タスク１１０の優先度を、取得した優先度に更新する。また、優先度設定部１２３は、擬似タスク１１０の優先度の設定が完了すると、擬似タスク１１０に優先度設定完了通知を送信する。
【００３３】
仮想計算機切り替え通知部１１１は、オペレーティングシステムのタスクスケジューリングにより擬似タスク１１０を実行した場合、仮想計算機制御部３０に対し、優先度取得部１２２によって取得された優先度と、現在動作中の第１の仮想計算機１０を第２の仮想計算機２０に切り替える切り替え指示とを通知する。
【００３４】
第２の仮想計算機２０は、擬似タスク２１０を含む１つ以上のタスクを実行するタスク実行部２００と、第２のＯＳ２２０とを備えている。擬似タスク２１０を含む全てのタスクは、それぞれ優先度が設定されている。第２のＯＳ２２０は、タスクの優先度に基づき実行するタスクのスケジューリングを行う。
【００３５】
タスク実行部２００は、各タスクに予め設定された優先度に応じてタスクを順次実行する。また、タスク実行部２００は、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための擬似タスク２１０を実行する。
【００３６】
擬似タスク２１０は、第１の仮想計算機１０の優先度を反映したタスクであり、仮想計算機切り替え通知部２１１と、優先度設定要求部２１２とを備えている。仮想計算機切り替え通知部２１１は、前述した仮想計算機切り替え通知部１１１と同じ機能を有している。また、優先度設定要求部２１２は、前述した優先度設定要求部１１２と同じ機能を有している。
【００３７】
第２のＯＳ２２０は、タスクスケジューラ２２１と、優先度取得部２２２と、優先度設定部２２３とを備えている。タスクスケジューラ２２１は、前述したタスクスケジューラ１２１と同じ機能を有している。また、優先度取得部２２２は、前述した優先度取得部１２２と同じ機能を有している。また、優先度設定部２２３は、前述した優先度設定部１２３と同じ機能を有している。
【００３８】
これにより、第２のＯＳ２２０のタスクスケジューリングにより、擬似タスク２１０の実行順となったタイミングで、第２の仮想計算機２０から第１の仮想計算機１０への切り替え処理が行われることになる。また、終了時の擬似タスク２１０の優先度は、第１の仮想計算機１０から第２の仮想計算機２０への切り替えが発生したタイミングにおける、第１の仮想計算機１０の最優先タスクの優先度が設定されている。
【００３９】
なお、擬似タスク１１０，２１０は、第１及び第２の仮想計算機１０，２０の起動時に生成される。また、生成時の擬似タスク１１０，２１０の優先度は、最も高い優先度に設定される。タスク実行部１００は、第１及び第２の仮想計算機１０，２０の起動時に擬似タスク１１０，２１０を生成し、生成した擬似タスク１１０，２１０の優先度を最も高い優先度に設定する。これにより、仮想計算機内の擬似タスク１１０，２１０を他のタスクに比べて優先的に動作させることになり、切り替え先の仮想計算機の最優先タスクの優先度を、擬似タスクの優先度として設定することが可能になる。
【００４０】
また、優先度取得部１２２，２２２及び優先度設定部１２３，２２３は、第１及び第２のＯＳ１１０，２１０の内部機能としてではなく、モジュール形式のデバイスドライバ又はライブラリとして、後から追加することができる。
【００４１】
また、本実施の形態１では、仮想計算機切り替え通知は、タスクの優先度と、切り替え元の仮想計算機の識別子と、切り替え先の仮想計算機の識別子とを含むとしているが、２つの仮想計算機の切り替えを制御する場合は、これに限らない。２つの仮想計算機の切り替えを制御する場合、仮想計算機切り替え通知は、切り替え元の仮想計算機の識別子又は切り替え先の仮想計算機の識別子のいずれか一方のみを含めばよい。
【００４２】
仮想計算機制御部３０は、仮想計算機切り替え部３０１と、仮想計算機優先度設定部３０２とを備え、複数の仮想計算機の切り替えを制御する。仮想計算機制御部３０は、タスク実行部１００によって通知される優先度と切り替え指示とを受け取り、現在動作中の第１の仮想計算機１０を第２の仮想計算機２０に切り替える。また、仮想計算機制御部３０は、タスク実行部２００によって通知される優先度と切り替え指示とを受け取り、現在動作中の第２の仮想計算機２０を第１の仮想計算機１０に切り替える。
【００４３】
仮想計算機切り替え部３０１は、第１及び第２の仮想計算機１０，２０から仮想計算機切り替え通知を受け取り、仮想計算機の実行コンテキストの退避と復帰とを行うことで、仮想計算機を切り替える。仮想計算機切り替え部３０１は、仮想計算機切り替え通知を用いて、切り替え元の仮想計算機と、切り替え先の仮想計算機とを特定することができる。仮想計算機切り替え部３０１は、切り替え元の仮想計算機の実行コンテキストをＣＰＵレジスタから実行コンテキスト記憶部５０に退避させ、切り替え先の仮想計算機の実行コンテキストを実行コンテキスト記憶部５０からＣＰＵレジスタに復帰させる。さらに、仮想計算機切り替え部３０１は、仮想計算機優先度設定部３０２に対し、切り替え元の仮想計算機の優先度の設定を指示する。なお、仮想計算機切り替え部３０１は、仮想計算機の識別子と、識別子に対応する対象仮想計算機とを組にした、仮想計算機識別子テーブルを保持している。
【００４４】
図３は、本発明の実施の形態１における仮想計算機識別子テーブルの一例を示す図である。図３に示す仮想計算機識別子テーブルには、識別子と、仮想計算機とが対応付けて記憶されている。図３に示すように、“Ａ”という識別子には、第１の仮想計算機１０が対応付けられており、“Ｂ”という識別子には、第２の仮想計算機２０が対応付けられている。
【００４５】
仮想計算機優先度設定部３０２は、仮想計算機切り替え部３０１からの指示を受け取り、仮想計算機切り替え通知に含まれる優先度を、切り替え元の仮想計算機の優先度として、仮想計算機優先度記憶部４０に格納する。
【００４６】
仮想計算機優先度記憶部４０は、仮想計算機の切り替えが発生したタイミングでの、切り替え元の仮想計算機の優先度を記憶する。仮想計算機優先度記憶部４０に記憶される仮想計算機の優先度は、切り替え元の仮想計算機のタスクの中の、最も優先して実行される最優先タスクの優先度である。なお、最優先タスクとは、実行状態のタスクを除く、次にスケジューリングされる可能性があるタスクを対象とする。つまり、擬似タスクは、最優先タスクにはならない。
【００４７】
実行コンテキスト記憶部５０は、切り替え元の仮想計算機の実行コンテキストを記憶する。仮想計算機切り替え部３０１は、切り替え元の仮想計算機の実行コンテキストをＣＰＵレジスタから実行コンテキスト記憶部５０に記憶することにより、切り替え元の仮想計算機の実行コンテキストを退避させる。また、仮想計算機切り替え部３０１は、切り替え先の仮想計算機の実行コンテキストを実行コンテキスト記憶部５０からＣＰＵレジスタに読み出すことにより、切り替え先の仮想計算機の実行コンテキストを復帰させる。なお、実行コンテキスト記憶部５０は、実行コンテキストを仮想計算機毎に記憶する。
【００４８】
仮想計算機切り替え部３０１は、タスク実行部１００によって通知される優先度と切り替え指示とを受け取った場合、切り替え前の第１の仮想計算機１０に対応する実行コンテキストを実行コンテキスト記憶部５０に退避させ、タスク実行部１００によって通知される優先度を仮想計算機優先度記憶部４０に記憶し、切り替え後の第２の仮想計算機２０に対応する実行コンテキストを実行コンテキスト記憶部５０から復帰させる。
【００４９】
切り替え後の第２の仮想計算機２０に含まれるタスク実行部２００は、中断された擬似タスク２１０を再度実行する。切り替え後の第２の仮想計算機２０に含まれる優先度設定部２２３は、仮想計算機優先度記憶部４０に記憶されている切り替え前の第１の仮想計算機１０の優先度を取得し、取得した優先度を擬似タスク２１０の優先度として設定する。
【００５０】
以上の構成により、本実施の形態１における情報処理装置は、実行中の仮想計算機より、他の仮想計算機の優先度が高くなったタイミングで、仮想計算機制御部３０が動作し、仮想計算機の切り替え処理が行なわれることになる。つまり、ＯＳがタスクスケジュールを行うたびに、実行中の仮想計算機を中断して切り替えを行うか否かを判断する必要がない。実行中の仮想計算機を中断した場合は、常に他の仮想計算機への切り替えが発生することとなり、中断する前に動作していた同じ仮想計算機に即時に復帰する処理を減らすことができる。これにより、不要な実行コンテキストの中断と復帰とによるオーバーヘッドを削減することが可能となる。
【００５１】
また、実行コンテキストの退避と復帰だけでなく、より安全性を高めるためにメモリ空間の切り替えを行った場合、仮想計算機の切り替えによるオーバーヘッドは更に大きくなるが、本実施の形態１では、このメモリ空間の切り替えによるオーバーヘッドも減らすことができる。
【００５２】
また、本実施の形態１は、情報処理装置が、リアルタイム性を重視した仮想計算機と、リアルタイム性を重視しない仮想計算機とを実装している場合、特に有効である。例えば、リアルタイム性が要求される処理は、第１の仮想計算機１０のタスクとして実装し、第１のＯＳ１２０にリアルタイム性に優れたＲＴＯＳ（リアルタイムＯＳ）を用いる。同時に、リアルタイム性が要求されないユーザインターフェイスに関する処理は、第２の仮想計算機２０のタスクとして実装し、第２のＯＳ２２０にグラフィック処理機能を豊富に有するＯＳを用いる。
【００５３】
従来の方法では、リアルタイム性を重視した仮想計算機を中断して切り替えを行うか否かを判断した結果、再度リアルタイム性を重視した仮想計算機に処理が戻されるケースが多く、余分な実行コンテキストの退避と復帰とが発生することになる。しかし、本実施の形態１の情報処理装置は、不要な実行コンテキストの中断と復帰とによるオーバーヘッドを削減し、リアルタイム性能と、豊富なグラフィック処理機能を用いた優れたユーザインターフェイスとを同時に実現することができる。
【００５４】
なお、第１のＯＳ１２０と第２のＯＳ２２０とは、異なる性能のＯＳにする必要は必ずしもなく、第１のＯＳ１２０と第２のＯＳ２２０とに同じ性能のＯＳを用いてもよい。
【００５５】
なお、例えば第１の仮想計算機１０から第２の仮想計算機２０に切り替える場合、仮想計算機制御部３０は、動作していた第１の仮想計算機１０のＩＰ（インストラクションポインタ）、スタックポインタ、汎用のレジスタ、ベースポインタ又はフラグなどの実行コンテキストを、第１の仮想計算機１０用に保存することで、実行コンテキストをＣＰＵレジスタから退避させる。また、仮想計算機制御部３０は、第２の仮想計算機２０用に保存していた実行コンテキストをＣＰＵレジスタに復帰させる。これにより、仮想計算機制御部３０は、第１及び第２の仮想計算機１０，２０の切り替えを実現している。
【００５６】
本実施の形態１において、情報処理装置が仮想計算機制御装置の一例に相当し、第１の仮想計算機１０及び第２の仮想計算機２０が複数の仮想計算機の一例に相当し、仮想計算機制御部３０が仮想計算機制御部の一例に相当し、タスク実行部１００，２００がタスク実行部の一例に相当し、優先度取得部１２２が優先度取得部の一例に相当し、優先度設定部１２３が優先度設定部の一例に相当し、実行コンテキスト記憶部５０が実行コンテキスト記憶部の一例に相当し、仮想計算機優先度記憶部４０が優先度記憶部の一例に相当し、擬似タスク１１０，２１０が切り替えタスクの一例に相当する。
【００５７】
図４〜図６は、本発明の実施の形態１における情報処理装置の処理の流れを示すフローチャートである。ここでは、図１における、第１の仮想計算機１０から第２の仮想計算機２０に切り替える切り替え動作の一例を示している。また、図４は、本発明の実施の形態１における第１の仮想計算機１０による切り替え処理の一例を示すフローチャートであり、図５は、本発明の実施の形態１における仮想計算機制御部３０による切り替え処理の一例を示すフローチャートであり、図６は、本発明の実施の形態１における第２の仮想計算機２０による切り替え処理の一例を示すフローチャートである。
【００５８】
まず、図４において、ＣＰＵ１は、第１の仮想計算機１０を実行する。第１の仮想計算機１０の実行中において、第１のＯＳ１２０のタスクスケジューラ１２１は、タスク管理テーブルにおけるタスク優先度に基づいてタスクスケジューリングする。そして、タスクスケジューラ１２１は、次に実行するタスクとして擬似タスク１１０を選択し、タスク管理テーブルにおける擬似タスクのタスク状態を実行状態にする。タスクスケジューラ１２１は、擬似タスク１１０の実行をタスク実行部１００に指示する。タスク実行部１００は、タスクスケジューラ１２１からの指示に基づき、擬似タスク１１０を実行する。これにより、擬似タスク１１０の処理が開始される（ステップＳ１）。
【００５９】
次に、擬似タスク１１０の仮想計算機切り替え通知部１１１は、第１のＯＳ１２０に最優先タスク優先度取得要求を送信する（ステップＳ２）。
【００６０】
次に、第１のＯＳ１２０の優先度取得部１２２は、擬似タスク１１０の仮想計算機切り替え通知部１１１によって送信された最優先タスク優先度取得要求を受信する（ステップＳ３）。次に、優先度取得部１２２は、タスク管理テーブルを参照して、最も優先度の高いタスクの優先度、すなわちタスク実行部１００が擬似タスク１１０の次に実行させるタスクの優先度（最優先タスク優先度）を取得する（ステップＳ４）。
【００６１】
次に、優先度取得部１２２は、取得した最優先タスク優先度を擬似タスク１１０に通知する（ステップＳ５）。例えば、タスクスケジューラ１２１が図２に示すタスク管理テーブルを有する場合、優先度取得部１２２は、タスク状態が実行可能状態のタスクの中で、最も優先度の高い第３のタスクの優先度を、擬似タスク１１０に送信する。
【００６２】
次に、擬似タスク１１０の仮想計算機切り替え通知部１１１は、第１のＯＳ１２０の優先度取得部１２２によって送信された最優先タスク優先度を受信する（ステップＳ６）。次に、仮想計算機切り替え通知部１１１は、受け取った最優先タスク優先度を用いて、仮想計算機切り替え通知を生成し、生成した仮想計算機切り替え通知を仮想計算機制御部３０に送信する（ステップＳ７）。これで、擬似タスク１１０から仮想計算機制御部３０に処理が移ることになる。例えば、仮想計算機切り替え通知部１１１は、ソフトウェア割り込みを使用する。ＣＰＵ１は、割込みコントローラ２から切り替え割込みの発生通知を受けてソフトウェア割込みを検知した場合、例外ベクターにジャンプ（移行）する。このジャンプ先である例外ベクターが、仮想計算機制御部３０に設定される。これにより、仮想計算機切り替え通知発生時に、仮想計算機制御部３０を動作させることが可能となる。
【００６３】
次に、図５において、仮想計算機制御部３０の仮想計算機切り替え部３０１は、仮想計算機切り替え通知部１１１によって送信された仮想計算機切り替え通知を受け取る（ステップＳ１１）。次に、仮想計算機切り替え部３０１は、切り替え元の第１の仮想計算機１０の実行コンテキストをＣＰＵレジスタから実行コンテキスト記憶部５０に退避させる（ステップＳ１２）。
【００６４】
次に、仮想計算機切り替え部３０１は、仮想計算機優先度設定部３０２に対し、切り替え元の第１の仮想計算機１０の優先度の設定を指示する（ステップＳ１３）。
【００６５】
次に、仮想計算機優先度設定部３０２は、仮想計算機切り替え部３０１からの指示を受け取り、仮想計算機切り替え通知に含まれる優先度（最優先タスク優先度）を、切り替え元の仮想計算機（第１の仮想計算機１０）の優先度として、仮想計算機優先度記憶部４０に格納する（ステップＳ１４）。なお、設定する優先度は、仮想計算機切り替え通知に含まれるとしたが、本発明は特にこれに限定されず、ソフトウェア割り込みの引数、又は、共有メモリ上の予め決められた領域のデータを優先度として取得してもよい。
【００６６】
次に、仮想計算機切り替え部３０１は、切り替え先の第２の仮想計算機２０の実行コンテキストを実行コンテキスト記憶部５０からＣＰＵレジスタに復帰させる（ステップＳ１５）。
【００６７】
仮想計算機制御部３０によって、第２の仮想計算機２０の実行コンテキストが復帰されることにより、中断していた第２の仮想計算機２０が復帰する。第２の仮想計算機２０は、擬似タスク２１０の処理途中で中断していたため、擬似タスク２１０の中断箇所から処理を再開することになる。
【００６８】
次に、図６において、擬似タスク２１０の優先度設定要求部２１２は、第２のＯＳ２２０に優先度設定要求を送信する（ステップＳ２１）。
【００６９】
次に、第２のＯＳ２２０の優先度設定部２２３は、擬似タスク２１０の優先度設定要求部２１２によって送信された優先度設定要求を受け取る（ステップＳ２２）。優先度設定部２２３は、仮想計算機優先度記憶部４０に格納されている第１の仮想計算機１０の最優先タスク優先度を取得する（ステップＳ２３）。次に、優先度設定部２２３は、タスク管理テーブルの擬似タスク２１０のタスク優先度を、取得した最優先タスク優先度に更新（設定）する（ステップＳ２４）。次に、優先度設定部２２３は、擬似タスク２１０に優先度設定完了通知を送信する（ステップＳ２５）。
【００７０】
次に、擬似タスク２１０の優先度設定要求部２１２は、第２のＯＳ２２０の優先度設定部２２３によって送信された優先度設定完了通知を受け取る（ステップＳ２６）。次に、優先度設定要求部２１２は、擬似タスク２１０の実行を終了する（ステップＳ２７）。これにより、第２のＯＳ２２０のタスクスケジューラ２２１は、第２の仮想計算機２０におけるタスクスケジューリングを行い、実行が終了した擬似タスク２１０の次に実行するタスクを決定する。
【００７１】
以上により、本実施の形態１における情報処理装置は、切り替え対象である他の仮想計算機を擬似的に表す擬似タスクを生成し、この擬似タスクの優先度を、切り替え対象である他の仮想計算機の最も優先度の高いタスクの優先度に設定する。ＯＳのタスクスケジューラは、実行中の仮想計算機より他の仮想計算機の優先度が高くなったタイミングで、擬似タスクを実行状態にし、タスク実行部は、擬似タスクを実行する。これにより、仮想計算機制御部３０が動作して、切り替え処理が行なわれる。つまり、ＯＳがタスクスケジュールを行うたびに、実行中の仮想計算機を中断して切り替えを行うか否かを判断する必要がない。実行中の仮想計算機を中断した場合は、常に他の仮想計算機への切り替えが発生することとなり、中断する前に動作していた同じ仮想計算機に即時に復帰する処理を減らすことができる。つまり、不要な実行コンテキストの中断と復帰とによるオーバーヘッドを削減することが可能となる。
【００７２】
本実施の形態１では、第１の仮想計算機１０から第２の仮想計算機２０に切り替える際に、第１の仮想計算機１０における最優先タスク優先度を第２の仮想計算機２０の擬似タスクの優先度に設定しているが、第２の仮想計算機２０の擬似タスクの優先度を途中で変更してもよい。
【００７３】
例えば、第１の仮想計算機１０が有する第１のＯＳ１２０をＲＴＯＳとし、第２の仮想計算機２０が有する第２のＯＳ２２０をＬｉｎｕｘＯＳとした場合、ＲＴＯＳによってデータをダウンロードした後、ＬｉｎｕｘＯＳによって当該データをエンコード及び再生処理させる。このように、第１の仮想計算機１０で処理したデータを、当該データの処理に適した第２の仮想計算機２０で処理する場合、第１の仮想計算機１０で処理を行った後、第１の仮想計算機１０を第２の仮想計算機２０に切り替える必要がある。
【００７４】
この場合、図５のステップＳ１３において、仮想計算機優先度設定部３０２に対し、切り替え元の第１の仮想計算機１０の優先度の設定を指示する場合に、仮想計算機切り替え部３０１は、仮想計算機優先度設定部３０２に通知する優先度を、第１の仮想計算機１０のタスク管理テーブルに格納されている擬似タスクの優先度よりも低くなるように変更する。そして、仮想計算機優先度設定部３０２は、仮想計算機切り替え部３０１からの指示を受け取り、変更した優先度を、切り替え元の仮想計算機（第１の仮想計算機１０）の優先度として、仮想計算機優先度記憶部４０に格納する。
【００７５】
変更した優先度が、第２の仮想計算機２０の擬似タスクの優先度として設定される。この変更した優先度は、第１の仮想計算機１０の擬似タスクの優先度よりも低いので、切り替え先である第２の仮想計算機２０を優先的に動作させることができる。
【００７６】
（実施の形態２）
図７は、本発明の実施の形態２における情報処理装置の構成を示すブロック図である。なお、図７に示す実施の形態２に係る情報処理装置において、図１に示す実施の形態１に係る情報処理装置と同じ構成については同じ符号を付し、詳細な説明を省略する。
【００７７】
図７に示す情報処理装置は、実施の形態１と同様に、ＣＰＵ（中央演算装置）１、割り込みコントローラ２、周辺デバイス３及びメモリ４を備えている。
【００７８】
メモリ４は、第１の仮想計算機１１、第２の仮想計算機２１、仮想計算機制御部３００、仮想計算機優先度記憶部４００及び実行コンテキスト記憶部５０を備えている。
【００７９】
第１の仮想計算機１１は、擬似タスク１１０を含む１つ以上のタスクを実行するタスク実行部１００と、第１のＯＳ１５０とを備えている。擬似タスク１１０を含む全てのタスクは、それぞれ優先度が設定されている。第１のＯＳ１５０は、タスクの優先度に基づき実行するタスクのスケジューリングを行う。また、擬似タスク１１０は、第２の仮想計算機２１の優先度を反映したタスクであり、仮想計算機切り替え通知部１１１と、優先度設定要求部１１２とを備えている。この擬似タスク１１０は、実施の形態１で説明した構成と同じである。
【００８０】
第１のＯＳ１５０は、タスクスケジューラ１２１と、優先度取得部１２２と、優先度設定部１２３と、割り込み処理部１３０とを備えている。割り込み処理部１３０以外は、実施の形態１で説明した構成と同じである。ここでは、異なる構成要素である割り込み処理部１３０についてのみ、詳細を説明する。
【００８１】
割り込み処理部１３０は、１つ以上の割り込みハンドラ１４０を備えている。割り込みハンドラ１４０は、割り込み後に実行される処理を表しており、それぞれ優先度が設定されている。また、割り込みが発生すると、第１のＯＳ１５０の割り込み処理部１３０は、割り込みコントローラ２が通知する割り込み通知を受け取り、割込みの要因に応じた割り込みハンドラ１４０を実行する。
【００８２】
なお、実施の形態２におけるタスクスケジューラ１２１は、タスク及び割り込みハンドラを管理するためのタスク管理テーブルを記憶している。タスク管理テーブルは、各タスクの管理情報と、各割り込みハンドラの管理情報とを有している。具体的に、タスク管理テーブルは、タスクＩＤ、タスク状態及びタスク優先度に加えて、割り込みハンドラを識別するための割り込みハンドラＩＤ、割り込みハンドラの状態を表す割り込みハンドラ状態及び割り込みハンドラの優先度を表す割り込みハンドラ優先度をさらに有している。
【００８３】
第２の仮想計算機２１は、擬似タスク２１０を含む１つ以上のタスクを実行するタスク実行部２００と、第２のＯＳ２５０とを備えている。擬似タスク２１０を含む全てのタスクは、それぞれ優先度が設定されている。第２のＯＳ２５０は、タスクの優先度に基づき実行するタスクのスケジューリングを行う。また、擬似タスク２１０は、第１の仮想計算機１１の優先度を反映したタスクであり、仮想計算機切り替え通知部２１１と、優先度設定要求部２１２とを備えている。この擬似タスク２１０は、実施の形態１で説明した構成と同じである。
【００８４】
第２のＯＳ２５０は、タスクスケジューラ２２１と、優先度取得部２２２と、優先度設定部２２３と、割り込み処理部２３０とを備えている。割り込み処理部２３０以外は、実施の形態１で説明した構成と同じである。また、割り込み処理部２３０は、前述した割り込み処理部１３０と同じ機能を有している。
【００８５】
仮想計算機制御部３００は、仮想計算機切り替え部３０１と、仮想計算機優先度設定部３０２と、割り込み受取部３０３と、割り込み優先度格納判断部３０４とを備えている。仮想計算機制御部３００は、タスクスケジューリングによる仮想計算機の切り替えに加えて、割り込み発生による仮想計算機の切り替えを制御する。
【００８６】
割り込み受取部３０３は、複数の仮想計算機への割り込みを通知するための割り込み通知を受け取り、割り込み通知に含まれる割り込み要因を用いて、複数の仮想計算機の中から割り込み対象の仮想計算機を判断する。割り込み受取部３０３は、割り込みコントローラ２からＣＰＵ１を介して割り込みの発生を通知する割り込み通知を受け取る。割り込み受取部３０３は、受け取った割り込み通知に含まれる割り込み要因から、割り込み対象の仮想計算機（第１の仮想計算機１１又は第２の仮想計算機２１）を判断し、割り込み対象の仮想計算機（第１の仮想計算機１１又は第２の仮想計算機２１）への割り込み通知設定を行う。なお、割り込み受取部３０３は、割り込み要因と、割り込み対象の仮想計算機とを組にした割り込みテーブルを保持している。割り込み受取部３０３は、この割り込みテーブルを参照して割り込み対象の仮想計算機を判断する。
【００８７】
図８は、本発明の実施の形態２における割り込みテーブルの一例を示す図である。図８に示す割り込みテーブルでは、“Ａ”、“Ｂ”及び“Ｃ”という割り込み要因には、割り込み対象の仮想計算機として第１の仮想計算機１１が対応付けられており、“Ｄ”という割り込み要因には、割り込み対象の仮想計算機として第２の仮想計算機２１が対応付けられている。なお、図８に示すように本実施の形態２では、割り込み要因と割り込み対象の仮想計算機とをテーブル形式で対応付けて記憶しているが、本発明は特にこれに限定されず、割り込み要因と割り込み対象の仮想計算機とは、関数又はリンク形式など、割り込み対象の仮想計算機を仮想計算機制御部が一意に決定可能なデータ形式で記憶すればよい。
【００８８】
割り込み優先度格納判断部３０４は、割り込み要因に対応付けられている優先度を、割り込み対象の仮想計算機に対する優先度として設定するか否かを判断する。割り込み優先度格納判断部３０４は、割り込みが発生した時点で、動作中の仮想計算機（第１の仮想計算機１１又は第２の仮想計算機２１）と、割り込み対象の仮想計算機（第１の仮想計算機１１又は第２の仮想計算機２１）とが一致しているか否かを判断する。現在動作中の仮想計算機と割り込み対象の仮想計算機とが一致していない場合、割り込み優先度格納判断部３０４は、仮想計算機優先度設定部３０２に対し、発生した割り込みに対応する優先度を仮想計算機優先度記憶部４００へ格納するよう指示する。
【００８９】
また、割込み優先度格納判断部３０４は、割り込み受取部３０３によって判断された割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じであるか否かを判断する。割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じではないと判断された場合、仮想計算機優先度設定部３０２は、割り込み要因に対応付けられている優先度を、割り込み対象の仮想計算機に対する優先度として設定する。
【００９０】
仮想計算機優先度記憶部４００は、仮想計算機の切り替えが発生したタイミングにおいて記憶された切り替え元の仮想計算機の優先度に加えて、割り込みが発生したタイミングにおいて発生した割り込みの優先度を記憶する。仮想計算機の優先度は、その仮想計算機のタスクの中の、最も優先して実行する最優先タスクの優先度である。なお、最優先タスクとは、実行状態のタスクを除く、次にスケジューリングされる可能性があるタスクを対象とする。つまり、擬似タスクは、最優先タスクにはならない。
【００９１】
以上の構成により、本実施の形態２における情報処理装置は、実行中の仮想計算機より、他の仮想計算機の優先度が高くなったタイミングで、仮想計算機制御部３０が動作し、仮想計算機の切り替え処理が行なわれることになる。また、割り込み発生時に、仮想計算機制御部３０が動作し、実行中でない他の仮想計算機向けの割り込みである場合に、割り込みの優先度を仮想計算機優先度として仮想計算機優先度記憶部４００に格納する。これにより、割り込みとタスクの優先度に従った仮想計算機の切り替えを実現することが可能となる。つまり、ＯＳがタスクスケジュールを行うたびに、実行中の仮想計算機を中断して切り替え処理を行うか否かを判断する必要がない。実行中の仮想計算機を中断した場合は、常に他の仮想計算機への切り替えが発生することとなり、中断する前に動作していた同じ仮想計算機に即時に復帰する処理を減らすことができる。これにより、不要な実行コンテキストの中断と復帰とによるオーバーヘッドを削減することが可能となる。
【００９２】
本実施の形態２において、情報処理装置が仮想計算機制御装置の一例に相当し、第１の仮想計算機１１及び第２の仮想計算機２１が複数の仮想計算機の一例に相当し、仮想計算機制御部３００が仮想計算機制御部の一例に相当し、仮想計算機優先度設定部３０２が仮想計算機優先度設定部の一例に相当し、割り込み受取部３０３が割り込み受取部の一例に相当し、割込み優先度格納判断部３０４が割込み優先度格納判断部の一例に相当し、仮想計算機優先度記憶部４００が優先度記憶部の一例に相当する。
【００９３】
図９は、本発明の実施の形態２における仮想計算機制御部による割り込み処理の一例を示すフローチャートである。図９では、割り込みが発生した場合の、仮想計算機制御部３００の動作の一例を示している。
【００９４】
周辺デバイス３による割り込みが発生すると、割り込みコントローラ２は、ＣＰＵ１に対して割り込みの発生を通知する割り込み通知を出力する。これにより、割り込み処理が開始される。例えば、ＣＰＵ１は、割込みコントローラ２から割り込みの発生通知を受けて、割込みを検知した場合、割り込みベクターにジャンプ（移行）する。このジャンプ先である割り込みベクターが、仮想計算機制御部３００に設定される。これにより、割り込み発生時に、仮想計算機制御部３００を動作させることが可能となる。
【００９５】
まず、仮想計算機制御部３００の割り込み受取部３０３は、割り込みコントローラ２から割り込み通知を受け取る（ステップＳ３１）。割り込み通知を受け取った場合、割り込み受取部３０３は、仮想計算機切り替え部３０１に実行コンテキストの退避を指示する。
【００９６】
次に、仮想計算機切り替え部３０１は、動作中の仮想計算機の実行コンテキストをＣＰＵレジスタから実行コンテキスト記憶部５０に退避させ、割り込み受取部３０３に実行コンテキストの退避の完了を通知する（ステップＳ３２）。
【００９７】
次に、割り込み受取部３０３は、受け取った割り込み通知に含まれている割込み要因を用いて、割り込み対象の仮想計算機（第１の仮想計算機１１又は第２の仮想計算機２１）を判断し、割り込み対象の仮想計算機への割込み通知設定を行い、割り込み優先度格納判断部３０４に、割り込み対象の仮想計算機の識別子を通知する（ステップＳ３３）。
【００９８】
次に、割り込み優先度格納判断部３０４は、割り込み受取部３０３から通知された割り込み対象の仮想計算機の識別子を用いて、割り込み対象の仮想計算機が、割り込み発生前に動作していた仮想計算機と同じであるか否かを判断する（ステップＳ３４）。
【００９９】
割り込み対象の仮想計算機と、割り込み発生前に動作していた仮想計算機とが異なると判断された場合（ステップＳ３４でＮＯ）、割り込み優先度格納判断部３０４は、仮想計算機優先度設定部３０２に対し、発生した割り込みに対応する優先度を仮想計算機優先度記憶部４００に格納するよう指示する（ステップＳ３５）。次に、仮想計算機優先度設定部３０２は、割り込み優先度格納判断部３０４からの指示を受け取り、発生した割り込みに対応する優先度を、仮想計算機優先度記憶部４００に格納する（ステップＳ３６）。
【０１００】
なお、割り込み優先度格納判断部３０４は、各割り込みハンドラに対する優先度を優先度テーブルとして仮想計算機毎に保持している。割り込み優先度格納判断部３０４は、優先度テーブルを参照し、設定する優先度の値を仮想計算機優先度設定部３０２に指示する。
【０１０１】
図１０は、本発明の実施の形態２における優先度テーブルの一例を示す図である。割り込み優先度格納判断部３０４は、第１の仮想計算機用優先度テーブルＴ１と第２の仮想計算機用優先度テーブルＴ２とを有している。第１の仮想計算機用優先度テーブルＴ１は、第１の仮想計算機１１の割り込み処理部１３０が実行する第１〜第３の割り込みハンドラと、第１〜第３の割り込みハンドラに予め設定されている優先度とを対応付けている。第２の仮想計算機用優先度テーブルＴ２は、第２の仮想計算機２１の割り込み処理部２３０が実行する第４〜第６の割り込みハンドラと、第４〜第６の割り込みハンドラに予め設定されている優先度とを対応付けている。
【０１０２】
割り込み対象の仮想計算機と、割り込み発生前に動作していた仮想計算機とが同じであると判断された場合（ステップＳ３４でＹＥＳ）、又は割り込み対象の仮想計算機と、割り込み発生前に動作していた仮想計算機とが異なると判断された後、割り込みに対応する優先度が仮想計算機優先度記憶部４００に格納された場合、割り込み受取部３０３は、仮想計算機切り替え部３０１に対し、ステップＳ３２で退避した実行コンテキストの復帰を指示する。仮想計算機切り替え部３０１は、実行を中断した仮想計算機の実行コンテキストを実行コンテキスト記憶部５０からＣＰＵレジスタに復帰させ、割り込み処理を完了する（ステップＳ３７）。
【０１０３】
なお、ステップＳ３６において、仮想計算機優先度設定部３０２は、発生した割り込みに対応する優先度と、既に仮想計算機優先度記憶部４００に記憶されている最優先タスクの優先度とを比較し、発生した割り込みに対応する優先度が既に記憶されている最優先タスクの優先度よりも高い場合のみ、仮想計算機優先度記憶部４００を更新してもよい。
【０１０４】
すなわち、仮想計算機優先度設定部３０２は、割り込み要因に対応付けられている優先度と、仮想計算機優先度記憶部４００に記憶されている優先度とを比較し、割り込み要因に対応付けられている優先度が仮想計算機優先度記憶部４００に記憶されている優先度よりも高い場合、割り込み要因に対応付けられている優先度を、割り込み対象の仮想計算機に対する優先度として設定する。
【０１０５】
また、ステップＳ３６において、仮想計算機優先度設定部３０２は、発生した割り込みに対応する優先度と、所定の閾値とを比較し、発生した割り込みに対応する優先度が所定の閾値よりも高い場合のみ、仮想計算機優先度記憶部４００を更新してもよい。
【０１０６】
続いて、本実施の形態２における割り込み処理後の動作について説明する。なお、第１の仮想計算機１１の動作中に割り込み処理が発生した場合について説明する。
【０１０７】
割り込み対象の仮想計算機が第１の仮想計算機１１である場合、ステップＳ３７において実行コンテキストが復帰された後、割り込み処理部１３０は、割り込みに対応した割り込みハンドラを実行する。そして、割り込みハンドラの実行が終了すると、タスクスケジューラ１２１は、実行すべき第１の仮想計算機１１のタスクを優先度に応じて決定する。
【０１０８】
一方、割り込み対象の仮想計算機が第２の仮想計算機２１である場合、ステップＳ３７において実行コンテキストが復帰された後、タスク実行部１００は、第１の仮想計算機１１のタスクを優先度に応じて順次実行する。そして、擬似タスク１１０を実行するタイミングで、図４〜図６に示す切り替え処理が開始される。切り替え処理では、図４〜図６に示すステップＳ１〜Ｓ２２の処理が実行される。なお、ステップＳ１４において、仮想計算機優先度記憶部４００は、既に格納されている割り込みに対応する優先度とともに、仮想計算機切り替え通知に含まれる優先度を格納する。
【０１０９】
ステップＳ２３において、優先度設定部２２３は、仮想計算機優先度記憶部４００に格納されている第１の仮想計算機１１の最優先タスク優先度と、割り込みに対応する優先度とを取得する。次に、ステップＳ２４において、優先度設定部２２３は、タスク管理テーブルの擬似タスク２１０のタスク優先度を、取得した最優先タスク優先度に更新するとともに、タスク管理テーブルの割り込みハンドラのタスク優先度を、取得した割り込みに対応する優先度に更新する。その後、ステップＳ２５〜Ｓ２７の処理が実行され、擬似タスク２１０の実行が終了される。
【０１１０】
擬似タスク２１０の実行が終了すると、タスクスケジューラ２２１は、実行すべき第２の仮想計算機２１のタスクを優先度に応じて決定する。そして、タスク管理テーブルに設定されている割り込みハンドラの実行タイミングで、割り込み処理部２３０は、割り込みに対応した割り込みハンドラを実行する。そして、割り込みハンドラの実行が終了すると、タスクスケジューラ２２１は、実行すべき第２の仮想計算機２１のタスクを優先度に応じて決定する。
【０１１１】
以上により、本実施の形態２における情報処理装置は、切り替え対象である他の仮想計算機を擬似的に表す擬似タスクを生成し、この擬似タスクの優先度を、切り替え対象である他の仮想計算機の最も優先度の高いタスクの優先度に設定する。ＯＳのタスクスケジューラは、実行中の仮想計算機より他の仮想計算機の優先度が高くなったタイミングで、擬似タスクを実行状態にし、タスク実行部は、擬似タスクを実行する。これにより、仮想計算機制御部３００が動作して、切り替え処理が行なわれる。つまり、ＯＳがタスクスケジュールを行うたびに、実行中の仮想計算機を中断して切り替え処理を行うか否かを判断する必要がない。実行中の仮想計算機を中断した場合は、常に他の仮想計算機への切り替えが発生することとなり、中断する前に動作していた同じ仮想計算機に即時に復帰する処理を減らすことができる。つまり、不要な実行コンテキストの中断と復帰とによるオーバーヘッドを削減することが可能となる。
【０１１２】
さらに、割り込み発生時において、実行中の仮想計算機への割り込みである場合は、実行中の仮想計算機のＯＳに割り込み通知が行われ、実行中でない他の仮想計算機への割り込みである場合は、割り込みの優先度が仮想計算機の優先度に設定され、割り込み前の仮想計算機が動作される。これにより、割り込みの優先度とタスクの優先度とに従った仮想計算機の切り替えを実現することができる。つまり、ＯＳがタスクスケジュールを行うたびに、実行中の仮想計算機を中断して切り替えを行うか否かを判断する必要がない。実行中の仮想計算機を中断した場合は、常に他の仮想計算機への切り替えが発生することとなり、中断する前に動作していた同じ仮想計算機に即時に復帰する処理を減らすことができる。これにより、不要な実行コンテキストの中断と復帰とによるオーバーヘッドを削減することが可能となる。
【０１１３】
なお、実施の形態１及び２では、仮想計算機が２つの場合について説明したが、本発明は特にこれに限定されず、３つ以上の仮想計算機を設けてもよい。
【０１１４】
（実施の形態３）
次に、本発明の実施の形態３に係る情報処理装置について説明する。本実施の形態３では、ウィルス障害又はＯＳ障害の発生時において、仮想計算機が所定の優先度を仮想計算機制御部に通知することにより、正常に動作していた状態に復元する。
【０１１５】
なお、実施の形態３に係る情報処理装置は、図１に示す実施の形態１に係る情報処理装置とほぼ同じ構成であるので、異なる構成についてのみ説明する。実施の形態３と実施の形態１とでは、実行コンテキスト記憶部５０の構成が異なっている。
【０１１６】
図１１は、本発明の実施の形態３における実行コンテキスト記憶部の構成を示す図である。
【０１１７】
実行コンテキスト記憶部５０は、仮想計算機制御部３０によって退避された実行コンテキストを仮想計算機毎に記憶する。実行コンテキスト記憶部５０は、仮想計算機の数に応じて、第１の実行コンテキスト記憶部５０−１〜第Ｎの実行コンテキスト記憶部５０−Ｎを備える。なお、図１１では、情報処理装置が３つ以上の仮想計算機を有する場合について示しているが、本発明は特にこれに限定されず、情報処理装置は図１に示すように２つの仮想計算機を有していてもよい。
【０１１８】
第１の実行コンテキスト記憶部５０−１は、第１の仮想計算機の実行コンテキストを記憶し、第２の実行コンテキスト記憶部５０−２は、第２の仮想計算機の実行コンテキストを記憶し、第Ｎの実行コンテキスト記憶部５０−Ｎは、第Ｎの仮想計算機の実行コンテキストを記憶する。
【０１１９】
実施の形態１では、実行コンテキスト記憶部５０は、仮想計算機毎に１つの実行コンテキストのみを記憶しており、実行コンテキストが退避されるたびに上書きして記憶される。これに対し、実施の形態３では、実行コンテキスト記憶部５０は、実行コンテキストが退避されるたびに、当該実行コンテキストを異なる領域に格納し、仮想計算機毎に複数の実行コンテキストを記憶している。
【０１２０】
すなわち、第１の実行コンテキスト記憶部５０−１は、第１の実行コンテキストデータ５１−１〜第Ｍの実行コンテキストデータ５１−Ｍを記憶しており、第２の実行コンテキスト記憶部５０−２は、第１の実行コンテキストデータ５２−１〜第Ｍの実行コンテキストデータ５２−Ｍを記憶しており、第Ｎの実行コンテキスト記憶部５０−Ｎは、第１の実行コンテキストデータ５３−１〜第Ｍの実行コンテキストデータ５３−Ｍを記憶している。
【０１２１】
なお、第１の実行コンテキスト記憶部５０−１〜第Ｎの実行コンテキスト記憶部５０−Ｎが記憶する実行コンテキストの数Ｍは、メモリの容量などに応じて予め設定されている。
【０１２２】
仮想計算機切り替え部３０１は、切り替え元の仮想計算機の実行コンテキストをＣＰＵレジスタから実行コンテキスト記憶部５０に退避させる。このとき、仮想計算機切り替え部３０１は、切り替え元の仮想計算機の実行コンテキストを、実行コンテキスト記憶部５０の切り替え元の仮想計算機に対応する領域（第１の実行コンテキスト記憶部５０−１〜第Ｎの実行コンテキスト記憶部５０−Ｎの何れか）に記憶する。なお、初回は、実行コンテキストを第１の実行コンテキストデータとして保存し、次回は、実行コンテキストを第２の実行コンテキストデータとして保存する。そして、保存するデータの数が１つの仮想計算機の退避用に確保している数Ｍを越えた場合、再度第１の実行コンテキストデータとして保存する。
【０１２３】
システム異常又はシステム障害が検知された場合、優先度に関係なく擬似タスクが動作される。なお、システム異常又はシステム障害が検知された場合に、擬似タスクが動作可能であることが前提である。
【０１２４】
仮想計算機切り替え部通知部１１１は、現在動作中の仮想計算機に障害が発生した場合、仮想計算機優先度設定部３０２に対し、切り替え元の第１の仮想計算機１０の最優先タスク優先度を通知するのではなく、現在動作中の仮想計算機に障害が発生したことを表す障害優先度を通知する。
【０１２５】
次に、仮想計算機優先度設定部３０２は、仮想計算機切り替え通知部１１１からの指示を受け取り、当該指示にシステム異常又はシステム障害が発生したことを表す障害優先度が含まれている場合、障害優先度を仮想計算機優先度記憶部４０に格納することなく、仮想計算機切り替え部３０１に処理を移す。
【０１２６】
次に、仮想計算機切り替え部３０１は、仮想計算機切り替え通知を行った仮想計算機の実行コンテキストを実行コンテキスト記憶部５０からＣＰＵレジスタに復帰させる。ここで、仮想計算機切り替え部３０１は、実行コンテキスト記憶部５０に記憶されている実行コンテキストの中から最も古い実行コンテキストをＣＰＵレジスタに復帰させる。
【０１２７】
なお、本実施の形態３では、実行コンテキスト記憶部５０に記憶されている実行コンテキストの中から最も古い実行コンテキストをＣＰＵレジスタに復帰させているが、本発明は特にこれに限定されず、最も新しい実行コンテキストをＣＰＵレジスタに復帰させてもよく、任意の実行コンテキストをＣＰＵレジスタに復帰させてもよい。
【０１２８】
また、擬似タスクが実行できない状態の場合、仮想計算機制御部３０は、ウォッチドッグタイマなどにより異常状態を検出し、強制的に正常時の実行コンテキストをＣＰＵレジスタに復帰させてもよい。
【０１２９】
以上の構成により、仮想計算機にウィルス障害又はＯＳ障害が発生したとしても、正常に動作していた状態に復元することが可能である。
【０１３０】
（実施の形態４）
上記の実施の形態１では、１つのＣＰＵ１を第１の仮想計算機１０及び第２の仮想計算機２０として機能させているが、本発明は特にこれに限定されず、複数のＣＰＵをそれぞれ異なる仮想計算機として機能させてもよい。
【０１３１】
図１２は、本発明の実施の形態４における情報処理装置の構成を示すブロック図である。なお、図１２に示す実施の形態４に係る情報処理装置において、図１に示す実施の形態１に係る情報処理装置と同じ構成については同じ符号を付し、詳細な説明を省略する。
【０１３２】
図１２に示す情報処理装置は、第１のＣＰＵ５、第２のＣＰＵ６、割り込みコントローラ２、周辺デバイス３及びメモリ４を備えている。通常状態において、第１のＣＰＵ５は、第１の仮想計算機１０として動作し、第２のＣＰＵ６は、第２の仮想計算機２０として動作する。しかしながら、第１のＣＰＵ５及び第２のＣＰＵ６のうちの一方のＣＰＵの負荷量が大きくなり、アイドル状態となった場合、他方のＣＰＵが、第１の仮想計算機１０及び第２の仮想計算機２０として動作する。このとき、他方のＣＰＵは、実施の形態１で説明した切り替え処理を実行する。なお、仮想計算機制御部３０、仮想計算機優先度記憶部４０及び実行コンテキスト記憶部５０は、第１のＣＰＵ５及び第２のＣＰＵ６のうちのいずれかによって動作される。
【０１３３】
以上の構成により、複数のＣＰＵにより複数の仮想計算機が動作される場合であっても、複数の仮想計算機を切り替えることができ、不要な実行コンテキストの中断と復帰とによるオーバーヘッドを削減することが可能となる。
【０１３４】
なお、本実施の形態１〜４における情報処理装置の各構成要素は典型的にはソフトウェアとして実現されるが、集積回路であるＬＳＩとして実現してもよい。各構成要素は個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  ＰｒｏｇｒａｍｍａｂｌｅＧａｔｅ  Ａｒｒａｙ）、又はＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
【０１３５】
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。
【０１３６】
本発明の一局面に係る仮想計算機制御装置は、タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含む複数の仮想計算機と、前記複数の仮想計算機の切り替えを制御する仮想計算機制御部とを備え、前記複数の仮想計算機の各々は、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための切り替えタスクを実行するタスク実行部と、現在動作中の仮想計算機自身の実行可能なタスクの中から最も優先度の高いタスクの優先度を取得する優先度取得部と、前記切り替えタスクの優先度を、前記他の仮想計算機の前記優先度取得部によって取得された前記優先度に設定する優先度設定部とを含み、前記タスク実行部は、前記オペレーティングシステムのタスクスケジューリングにより前記切り替えタスクを実行した場合、前記仮想計算機制御部に対し、前記優先度取得部によって取得された前記優先度と、現在動作中の仮想計算機を前記他の仮想計算機に切り替える切り替え指示とを通知し、前記仮想計算機制御部は、前記タスク実行部によって通知される前記優先度と切り替え指示とを受け取り、現在動作中の仮想計算機を前記他の仮想計算機に切り替える。
【０１３７】
この構成によれば、複数の仮想計算機は、タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含み、仮想計算機制御部は、複数の仮想計算機の切り替えを制御する。タスク実行部は、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための切り替えタスクを実行し、優先度取得部は、現在動作中の仮想計算機自身の実行可能なタスクの中から最も優先度の高いタスクの優先度を取得し、優先度設定部は、切り替えタスクの優先度を、他の仮想計算機の優先度取得部によって取得された優先度に設定する。タスク実行部は、オペレーティングシステムのタスクスケジューリングにより切り替えタスクを実行した場合、仮想計算機制御部に対し、優先度取得部によって取得された優先度と、現在動作中の仮想計算機を他の仮想計算機に切り替える切り替え指示とを通知する。仮想計算機制御部は、タスク実行部によって通知される優先度と切り替え指示とを受け取り、現在動作中の仮想計算機を他の仮想計算機に切り替える。
【０１３８】
したがって、切り替えタスクの優先度が、他の仮想計算機における最も優先度の高いタスクの優先度に設定され、仮想計算機が切り替える場合にのみ、切り替えタスクが実行されるので、仮想計算機の中断と復帰との処理回数が削減され、仮想計算機の切り替えに要するオーバーヘッドを削減することができる。
【０１３９】
また、上記の仮想計算機制御装置において、前記タスク実行部は、前記複数の仮想計算機の起動時に前記切り替えタスクを生成し、生成した前記切り替えタスクの優先度を最も高い優先度に設定することが好ましい。
【０１４０】
この構成によれば、複数の仮想計算機の起動時に切り替えタスクが生成され、生成された切り替えタスクの優先度が最も高い優先度に設定されるので、複数の仮想計算機の起動時にまず切り替えタスクが実行され、当該切り替えタスクの優先度を設定することができる。
【０１４１】
また、上記の仮想計算機制御装置において、前記仮想計算機制御部は、前記複数の仮想計算機への割り込みを通知するための割り込み通知を受け取り、前記割り込み通知に含まれる割り込み要因を用いて、前記複数の仮想計算機の中から割り込み対象の仮想計算機を判断する割り込み受取部と、前記割り込み要因に対応付けられている優先度を、前記割り込み対象の仮想計算機に対する優先度として設定するか否かを判断する割込み優先度格納判断部とを含むことが好ましい。
【０１４２】
この構成によれば、割り込み受取部は、複数の仮想計算機への割り込みを通知するための割り込み通知を受け取り、割り込み通知に含まれる割り込み要因を用いて、複数の仮想計算機の中から割り込み対象の仮想計算機を判断する。また、割込み優先度格納判断部は、割り込み要因に対応付けられている優先度を、割り込み対象の仮想計算機に対する優先度として設定するか否かを判断する。
【０１４３】
したがって、割り込みが発生した場合、割り込み要因に対応付けられている優先度を、割り込み対象の仮想計算機に対する優先度として設定するか否かが判断されるので、割り込み対象の仮想計算機を優先して実行することができる。
【０１４４】
また、上記の仮想計算機制御装置において、前記割込み優先度格納判断部は、前記割り込み受取部によって判断された割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じであるか否かを判断し、前記仮想計算機制御部は、割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じではないと判断された場合、前記割り込み要因に対応付けられている優先度を、前記割り込み対象の仮想計算機に対する優先度として設定する仮想計算機優先度設定部をさらに含むことが好ましい。
【０１４５】
この構成によれば、割り込み受取部によって判断された割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じであるか否かが判断される。そして、割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じではないと判断された場合、割り込み要因に対応付けられている優先度が、割り込み対象の仮想計算機に対する優先度として設定される。
【０１４６】
したがって、割り込み対象の仮想計算機が、割り込み前に動作していた仮想計算機と同じではない場合、割り込み前に動作していた仮想計算機とは異なる割り込み対象の他の仮想計算機を優先して実行することができる。
【０１４７】
また、上記の仮想計算機制御装置において、前記タスク実行部によって通知される前記優先度を記憶する優先度記憶部をさらに備え、前記仮想計算機制御部は、前記割り込み要因に対応付けられている優先度と、前記優先度記憶部に記憶されている優先度とを比較し、前記割り込み要因に対応付けられている優先度が前記優先度記憶部に記憶されている優先度よりも高い場合、前記割り込み要因に対応付けられている優先度を、前記割り込み対象の仮想計算機に対する優先度として設定する仮想計算機優先度設定部をさらに含むことが好ましい。
【０１４８】
この構成によれば、優先度記憶部には、タスク実行部によって通知される優先度が記憶されている。そして、割り込み要因に対応付けられている優先度と、優先度記憶部に記憶されている優先度とが比較され、割り込み要因に対応付けられている優先度が優先度記憶部に記憶されている優先度よりも高い場合、割り込み要因に対応付けられている優先度が、割り込み対象の仮想計算機に対する優先度として設定される。
【０１４９】
したがって、割り込み要因に対応付けられている優先度が優先度記憶部に記憶されている優先度よりも高い場合、割り込み要因に対応付けられている優先度が、割り込み対象の仮想計算機に対する優先度として設定されるので、割り込みが発生した場合に、必ずしも割り込みを実行するのではなく、より優先度の高いタスクを優先して実行することができる。
【０１５０】
また、上記の仮想計算機制御装置において、各仮想計算機の実行コンテキストを記憶する実行コンテキスト記憶部をさらに備え、前記仮想計算機制御部は、切り替え前の仮想計算機に対応する実行コンテキストを前記実行コンテキスト記憶部に退避させ、切り替え後の仮想計算機に対応する実行コンテキストを前記実行コンテキスト記憶部から復帰させることが好ましい。
【０１５１】
この構成によれば、実行コンテキスト記憶部には、各仮想計算機の実行コンテキストが記憶されている。そして、切り替え前の仮想計算機に対応する実行コンテキストが実行コンテキスト記憶部に退避され、切り替え後の仮想計算機に対応する実行コンテキストが実行コンテキスト記憶部から復帰される。
【０１５２】
したがって、仮想計算機が切り替わる前に、切り替え前の仮想計算機に対応する実行コンテキストが退避されるので、中断時の状態から切り替えタスクを実行することができる。
【０１５３】
また、上記の仮想計算機制御装置において、前記タスク実行部によって通知される前記優先度を記憶する優先度記憶部をさらに備え、前記仮想計算機制御部は、前記タスク実行部によって通知される前記優先度と切り替え指示とを受け取った場合、切り替え前の仮想計算機に対応する実行コンテキストを前記実行コンテキスト記憶部に退避させ、前記タスク実行部によって通知される前記優先度を前記優先度記憶部に記憶し、切り替え後の仮想計算機に対応する実行コンテキストを前記実行コンテキスト記憶部から復帰させ、切り替え後の仮想計算機に含まれる前記タスク実行部は、中断された切り替えタスクを再度実行し、切り替え後の仮想計算機に含まれる前記優先度設定部は、前記優先度記憶部に記憶されている切り替え前の仮想計算機の前記優先度を取得し、取得した前記優先度を切り替えタスクの優先度として設定することが好ましい。
【０１５４】
この構成によれば、優先度記憶部には、タスク実行部によって通知される優先度が記憶されている。そして、仮想計算機制御部は、タスク実行部によって通知される優先度と切り替え指示とを受け取った場合、切り替え前の仮想計算機に対応する実行コンテキストを実行コンテキスト記憶部に退避させ、タスク実行部によって通知される優先度を優先度記憶部に記憶する。その後、仮想計算機制御部は、切り替え後の仮想計算機に対応する実行コンテキストを実行コンテキスト記憶部から復帰させる。切り替え後の仮想計算機に含まれるタスク実行部は、中断された切り替えタスクを再度実行し、切り替え後の仮想計算機に含まれる優先度設定部は、優先度記憶部に記憶されている切り替え前の仮想計算機の優先度を取得し、取得した優先度を切り替えタスクの優先度として設定する。
【０１５５】
したがって、切り替え後の仮想計算機に対応する実行コンテキストが実行コンテキスト記憶部から復帰した後、切り替え後の仮想計算機の中断されていた切り替えタスクが再度実行され、切り替え前の仮想計算機の優先度が切り替えタスクの優先度として設定されるので、切り替え後の仮想計算機の切り替えタスクの優先度を、切り替え前の仮想計算機の最も優先度の高いタスクの優先度に設定することができる。
【０１５６】
また、上記の仮想計算機制御装置において、前記実行コンテキスト記憶部は、前記仮想計算機制御部によって退避された実行コンテキストを仮想計算機毎に記憶し、前記タスク実行部は、現在動作中の仮想計算機に障害が発生した場合、前記仮想計算機制御部に対し、現在動作中の仮想計算機に障害が発生したことを表す障害優先度を通知し、前記仮想計算機制御部は、前記タスク実行部によって通知される前記障害優先度を受け取った場合、前記実行コンテキスト記憶部に記憶されている最も古い実行コンテキストを復帰させることが好ましい。
【０１５７】
この構成によれば、実行コンテキスト記憶部には、仮想計算機制御部によって退避された実行コンテキストが仮想計算機毎に記憶されている。そして、タスク実行部は、現在動作中の仮想計算機に障害が発生した場合、仮想計算機制御部に対し、現在動作中の仮想計算機に障害が発生したことを表す障害優先度を通知する。仮想計算機制御部は、タスク実行部によって通知される障害優先度を受け取った場合、実行コンテキスト記憶部に記憶されている最も古い実行コンテキストを復帰させる。
【０１５８】
したがって、現在動作中の仮想計算機に障害が発生した場合であっても、実行コンテキスト記憶部に記憶されている最も古い実行コンテキストが復帰されるので、仮想計算機を障害が発生する前の状態に戻すことができる。
【０１５９】
本発明の他の局面に係る仮想計算機制御方法は、タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含む複数の仮想計算機の切り替えを制御する仮想計算機制御方法であって、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための切り替えタスクを実行するタスク実行ステップと、現在動作中の仮想計算機自身の実行可能なタスクの中から最も優先度の高いタスクの優先度を取得する優先度取得ステップと、前記切り替えタスクの優先度を、前記他の仮想計算機の前記優先度取得ステップにおいて取得された前記優先度に設定する優先度設定ステップと、前記オペレーティングシステムのタスクスケジューリングにより前記切り替えタスクを実行した場合、前記優先度取得ステップにおいて取得された前記優先度と、現在動作中の仮想計算機を前記他の仮想計算機に切り替える切り替え指示とを通知する通知ステップと、前記通知ステップにおいて通知される前記優先度と切り替え指示とを受け取り、現在動作中の仮想計算機を前記他の仮想計算機に切り替える切り替えステップとを含む。
【０１６０】
この構成によれば、タスク実行ステップは、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための切り替えタスクを実行する。優先度取得ステップは、現在動作中の仮想計算機自身の実行可能なタスクの中から最も優先度の高いタスクの優先度を取得する。優先度設定ステップは、切り替えタスクの優先度を、他の仮想計算機の優先度取得ステップにおいて取得された優先度に設定する。通知ステップは、オペレーティングシステムのタスクスケジューリングにより切り替えタスクを実行した場合、優先度取得ステップにおいて取得された優先度と、現在動作中の仮想計算機を他の仮想計算機に切り替える切り替え指示とを通知する。切り替えステップは、通知ステップにおいて通知される優先度と切り替え指示とを受け取り、現在動作中の仮想計算機を他の仮想計算機に切り替える。
【０１６１】
したがって、切り替えタスクの優先度が、他の仮想計算機における最も優先度の高いタスクの優先度に設定され、仮想計算機が切り替える場合にのみ、切り替えタスクが実行されるので、仮想計算機の中断と復帰との処理回数が削減され、仮想計算機の切り替えに要するオーバーヘッドを削減することができる。
【０１６２】
本発明の他の局面に係る仮想計算機制御プログラムは、タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含む複数の仮想計算機と、前記複数の仮想計算機の切り替えを制御する仮想計算機制御部としてコンピュータを機能させ、前記複数の仮想計算機の各々は、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための切り替えタスクを実行するタスク実行部と、現在動作中の仮想計算機自身の実行可能なタスクの中から最も優先度の高いタスクの優先度を取得する優先度取得部と、前記切り替えタスクの優先度を、前記他の仮想計算機の前記優先度取得部によって取得された前記優先度に設定する優先度設定部とを含み、前記タスク実行部は、前記オペレーティングシステムのタスクスケジューリングにより前記切り替えタスクを実行した場合、前記仮想計算機制御部に対し、前記優先度取得部によって取得された前記優先度と、現在動作中の仮想計算機を前記他の仮想計算機に切り替える切り替え指示とを通知し、前記仮想計算機制御部は、前記タスク実行部から通知される前記優先度と切り替え指示とを受け取り、現在動作中の仮想計算機を前記他の仮想計算機に切り替える。
【０１６３】
この構成によれば、複数の仮想計算機は、タスクの優先度に基づき実行するタスクのスケジューリングを行うオペレーティングシステムをそれぞれ含み、仮想計算機制御部は、複数の仮想計算機の切り替えを制御する。タスク実行部は、現在動作中の仮想計算機を切り替え対象である他の仮想計算機に切り替える切り替え処理を実行するための切り替えタスクを実行し、優先度取得部は、自仮想計算機の実行可能なタスクの中から最も優先度の高いタスクの優先度を取得し、優先度設定部は、切り替えタスクの優先度を、他の仮想計算機の優先度取得部によって取得された優先度に設定する。タスク実行部は、オペレーティングシステムのタスクスケジューリングにより切り替えタスクを実行した場合、仮想計算機制御部に対し、優先度取得部によって取得された優先度と、現在動作中の仮想計算機を他の仮想計算機に切り替える切り替え指示とを通知する。仮想計算機制御部は、タスク実行部によって通知される優先度と切り替え指示とを受け取り、現在動作中の仮想計算機を他の仮想計算機に切り替える。
【０１６４】
したがって、切り替えタスクの優先度が、他の仮想計算機における最も優先度の高いタスクの優先度に設定され、仮想計算機が切り替える場合にのみ、切り替えタスクが実行されるので、仮想計算機の中断と復帰との処理回数が削減され、仮想計算機の切り替えに要するオーバーヘッドを削減することができる。
【０１６５】
なお、発明を実施するための形態の項においてなされた具体的な実施態様又は実施例は、あくまでも、本発明の技術内容を明らかにするものであって、そのような具体例にのみ限定して狭義に解釈されるべきものではなく、本発明の精神と特許請求事項との範囲内で、種々変更して実施することができるものである。
【産業上の利用可能性】
【０１６６】
本発明にかかる仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラムは、複数の仮想計算機を有する大型計算機及びパーソナルコンピュータ等に有用である。また、本発明にかかる仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラムは、ＡＶ機器などの家電機器、携帯電話のような通信機器、産業機器及び乗用機器等の用途にも有用である。
【図１】
0005405320.tif 000002
【図２】
0005405320.tif 000003
【図３】
0005405320.tif 000004
【図４】
0005405320.tif 000005
【図５】
0005405320.tif 000006
【図６】
0005405320.tif 000007
【図７】
0005405320.tif 000008
【図８】
0005405320.tif 000009
【図９】
0005405320.tif 000010
【図１０】
0005405320.tif 000011
【図１１】
0005405320.tif 000012
【図１２】
0005405320.tif 000013