以下本発明の実施の形態について、図面を参照しながら説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
(実施の形態1)
図1は、本発明の実施の形態1における仮想計算機制御装置を備えた情報処理装置のハードウェア構成を示すブロック図である。
情報処理装置は、中央演算装置(CPU)1、統合割り込みコントローラ2、第1の割り込みコントローラ3、第2の割り込みコントローラ4、周辺デバイス5、周辺デバイス6、アイドル検知部7及びメモリ8を備えている。
CPU1は、処理能力が十分であれば任意のものが利用可能である。統合割り込みコントローラ2は、第1の割り込みコントローラ3、第2の割り込みコントローラ4及びアイドル検知部7から通知される割り込み要求のうち、最も優先度の高い割り込み要求を判断し、最も優先度の高い割り込みをCPU1へ通知する。
第1の割り込みコントローラ3は、周辺デバイス5から発生する割り込み要求を統合割り込みコントローラ2へ通知する。第2の割り込みコントローラ4は、第1の割り込みコントローラ3と同様に、周辺デバイス6から発生する割り込み要求を統合割り込みコントローラ2へ通知する。
周辺デバイス5,6は、各種の入出力装置であり、情報処理装置の使用目的に応じた入出力装置が利用される。例えば、周辺デバイス5,6は、キーデバイス、通信デバイス、表示デバイス、デコーダ、エンコーダ、DSP(Digital Signal Processor)及びDMA(Direct Memory Access)コントローラなどを含む。
なお、周辺デバイス5は、第1の仮想計算機30において処理される割り込みを発生させ、周辺デバイス6は、第2の仮想計算機40において処理される割り込みを発生させる。第1の割り込みコントローラ3は、第1の仮想計算機30への割り込み要求を出力し、第2の割り込みコントローラ4は、第2の仮想計算機40への割り込み要求を出力する。
アイドル検知部7は、CPU1がアイドル状態(省電力モード)に遷移する命令を実行したことを検知し、第2の割り込み種別判定部13へ割り込み要求を出力する。すなわち、アイドル検知部7は、CPU1が省電力モードに遷移する命令を発行する時にCPU1から出力される信号を検知し、統合割り込みコントローラ2に割り込み要求を通知する。
メモリ8には、仮想計算機制御部20と、第1の仮想計算機30と、第2の仮想計算機40としてCPU1を機能させるプログラムが格納されている。メモリ8は、単一のメモリ装置で構成されている必要はなく、同種の複数のメモリ又はリードオンリーメモリ(ROM)を含む異種のメモリの組み合わせであってもよい。さらに、メモリ8以外に、例えばハードディスクドライブのような外部記憶装置を設け、情報処理装置の動作に問題のない範囲で外部記憶装置にメモリ8の内容を移動させてもよい。
図2は、本発明の実施の形態1における情報処理装置のメモリ8の詳細な構成を示すブロック図である。メモリ8は、第1の仮想計算機30と、第2の仮想計算機40と、仮想計算機制御部20としてCPU1を機能させるプログラムを記憶する。
第1の仮想計算機30は、複数のタスク300と、第1のOS310とを備えている。また、第1のOS310は、タスクスケジューラ311と、割り込み処理部312とを含んでいる。
タスクスケジューラ311は、次に実行すべきタスクを決定し、決定したタスクを実行する。割り込み処理部312は、複数の割り込みハンドラ320を含み、割り込み発生を受け取ると、割り込みの要因に応じた割り込みハンドラ320を実行する。以下、第1の仮想計算機30は、ソフトウェアの改変が不可能な仮想計算機として説明する。
第2の仮想計算機40は、第1の仮想計算機30と同様に、複数のタスク400と、第2のOS410とを備えている。また、第2のOS410は、タスクスケジューラ411と、割り込み処理部412とを含んでいる。
タスクスケジューラ411は、次に実行すべきタスクを決定し、決定したタスクを実行する。割り込み処理部412は、複数の割り込みハンドラ420を含み、割り込み発生を受け取ると、割り込みの要因に応じた割り込みハンドラ420を実行する。
タスクスケジューラ411及び割り込み処理部412の動作は、第1の仮想計算機30に含まれるタスクスケジューラ311及び割り込み処理部312と同様である。
なお、各タスク300,400または割り込みハンドラ320,420ごとに、優先度が設定されている。
本発明の実施の形態1における情報処理装置は、複数の仮想計算機(第1の仮想計算機30及び第2の仮想計算機40)を備え、各仮想計算機(第1の仮想計算機30及び第2の仮想計算機40)は、互いに異なるOS(第1のOS310及び第2のOS410)と、タスク300,400と、割り込みハンドラ320,420とを備えている。
第1の仮想計算機30と第2の仮想計算機40とは、後述する仮想計算機制御部20により切り替えられる。複数の仮想計算機(第1の仮想計算機30及び第2の仮想計算機40)は、同時に動作することはなく、時分割で実行される。これにより、一つの物理的な計算機上において複数の計算機の働きをさせることができる。例えば、リアルタイム性能を要求される処理は、第1の仮想計算機30のタスク300または割り込みハンドラ320として実装し、第1のOS310にリアルタイム性能に優れたRTOSを用いる。また、ユーザインターフェイスに関する処理は、第2の仮想計算機40のタスク400または割り込みハンドラ420として実装し、第2のOS410にグラフィック機能の豊富なOSを用いる。
このような構成により、本実施の形態1の情報処理装置は、リアルタイム性能を必要とする伝送系の制御と、豊富なグラフィック機能を用いた優れたユーザインターフェイス制御とを同時に実現できる。
なお、第1のOS310と第2のOS410とを互いに異なるOSにする必要は必ずしもなく、第1のOS310と第2のOS410とを同じOSにしてもよい。
仮想計算機制御部20は、CPU1上で動作する複数の仮想計算機の切り替えを制御する。仮想計算機制御部20は、割り込み復帰先保存部200、仮想計算機状態保存部201、仮想計算機スケジュール部202、割り込み復帰先書換部203、第1の割り込み種別判定部204、割り込み通知受取部205、割り込みマスクレベル更新部206、割り込みマスクレベル設定テーブル207、第1の割り込みマスクレベル設定部208、割り込みハンドラ終了検出部209、切替通知受取部210、第1の割り込みマスク設定部211及び第1の割り込みレベル設定部212を備える。
割り込み通知受取部205は、割り込みが発生した際に、統合割り込みコントローラ2からの割り込み発生通知を、CPU1を介して受け取る。そして、割り込み通知受取部205は、割り込みが発生したことを表す割り込み情報を第1の割り込み種別判定部204に通知する。
第1の割り込み種別判定部204は、統合割り込みコントローラ2から通知された割り込みの種別を判定する。第1の割り込み種別判定部204は、割り込み通知受取部205から通知された割り込みに対応する割り込み種別を、後述する統合割り込みコントローラ2内の第2の割り込み種別判定部13に要求し、第2の割り込み種別判定部13から割り込み種別を取得する。
次に、第1の割り込み種別判定部204は、第2の割り込み種別判定部13から取得した割り込み種別に応じて、仮想計算機(第1の仮想計算機30及び第2の仮想計算機40)の動作状態を仮想計算機状態保存部201に設定する。仮想計算機の動作状態には、仮想計算機が処理を実行していることを表す実行状態と、仮想計算機が省電力モードに遷移していることを表すアイドル状態と、仮想計算機が一時的に動作を停止していることを表すサスペンド状態とが含まれる。
第1の割り込み種別判定部204は、第1の割り込みコントローラ3又は第2の割り込みコントローラ4から送信された割り込みであれば、当該割り込みを実行する仮想計算機の動作状態を実行状態に設定し、実行状態にあった仮想計算機をサスペンド状態に設定する。また、第1の割り込み種別判定部204は、アイドル検知部7から送信された割り込み通知であれば、該当する仮想計算機の動作状態をアイドル状態に設定する。更に、第1の割り込み種別判定部204は、第1の割り込みコントローラ3又は第2の割り込みコントローラ4から送信された割り込みであれば、割り込みが発生したことを表す割り込み情報を割り込み復帰先書換部203に通知し、アイドル検知部7から送信された割り込みであれば、割り込みが発生したことを表す割り込み情報を割り込みマスクレベル更新部206へ通知する。
なお、割り込み通知には、リセット要求を求める割り込み通知がある。ウォッチドッグタイマは、仮想計算機がフリーズ状態になった際に、リセット要求を求める割り込み通知を発行する。CPU1は、ウォッチドッグタイマから割り込み通知を受けた際、割り込みハンドラ処理の最後に割り込みを禁止した状態で無限ループを実行し、ハードウェア的な再起動を待つ。上記のようなリセット処理が実行される場合、割り込みが禁止された状態で無限ループに陥る。そのため、他の仮想計算機への割り込み処理が実行できなくなり、システムが動作できなくなるという課題がある。
そこで、例えば、発生した割り込みが、第1の仮想計算機30に対するウォッチドッグタイマによる割り込みである場合、第1の割り込み種別判定部204は、第1の仮想計算機30に設定されている特権モードを解除してもよい。第1の仮想計算機30の特権モードが解除されることで、第1の仮想計算機30によるCPU割り込みを禁止する操作が防止され、上記課題を解決することができる。
仮想計算機状態保存部201は、前述した第1の割り込み種別判定部204によって設定される仮想計算機(第1の仮想計算機30及び第2の仮想計算機40)の動作状態を保存する。
割り込み復帰先書換部203は、通知された割り込みで指定された割り込み復帰先アドレスを割り込み復帰先保存部200に退避し、割り込み復帰先アドレスを割り込みハンドラ終了検出部209のアドレスに書き換える。
割り込み復帰先書換部203は、第1の割り込み種別判定部204から割り込み情報が通知されると、通知された割り込みによって指定される割り込み復帰先アドレスを、割り込み復帰先保存部200に退避する。割り込み復帰先書換部203は、割り込み処理が終了した際に復帰する処理を表す割り込み復帰先アドレスを、割り込み復帰先保存部200に退避する。
次に、割り込み復帰先書換部203は、通知された割り込み情報に含まれる割り込み復帰先アドレスを、仮想計算機制御部20内の割り込みハンドラ終了検出部209のアドレスに書換え、仮想計算機スケジュール部202に割り込み情報を通知する。これにより、仮想計算機(第1の仮想計算機30又は第2の仮想計算機40)の割り込みハンドラ処理の終了を仮想計算機制御部20内で検出することが可能となる。
割り込み復帰先保存部200は、割り込み復帰先書換部203によって退避された割り込み復帰先アドレスを保存する。割り込み復帰先保存部200が保存する割り込み復帰先アドレスは、割り込み発生時に実行中であった仮想計算機(第1の仮想計算機30又は第2の仮想計算機40)のプログラムカウンタの値となる。割り込み復帰先保存部200は、第1の割り込み種別判定部204によって割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値を保存する。
割り込みマスクレベル更新部206は、統合割り込みコントローラ2における割り込みレベルを最新の状態に更新するよう統合割り込みコントローラ2に要求する。なお、本実施の形態において、割り込みマスクレベル更新部206が更新部の一例に相当する。
割り込みマスクレベル更新部206は、後述する統合割り込みコントローラ2内の割り込みレベル保存部16に割り込みマスクレベルの更新を要求して、割り込みレベル保存部16に保存されている割り込みマスクレベルを最新の状態へ更新し、割り込みマスクレベルを更新したことを仮想計算機スケジュール部202に通知する。第1の割り込みコントローラ3及び第2の割り込みコントローラ4に対する割り込み要因がクリアされていれば、この時点で、割り込みレベル保存部16に保存されていた該当割り込みレベルがクリアされる。
割り込みハンドラ終了検出部209は、実行されることで割り込みハンドラによる割り込み処理が終了したことを検出し、割り込みハンドラによる処理が終了したことを第1の割り込みマスクレベル設定部208へ通知する。つまり、割り込み復帰先書換部203が、割り込み復帰先アドレスを、割り込みハンドラ終了検出部209のアドレスに書き換えることで、割り込みハンドラによる処理が終了すると、割り込みハンドラ終了検出部209に処理が戻ることになる。なお、本実施の形態において、割り込みハンドラ終了検出部209が割り込み終了検出部の一例に相当する。
割り込みマスクレベル設定テーブル207は、仮想計算機(第1の仮想計算機30及び第2の仮想計算機40)によるタスク(タスク300及びタスク400)実行時の割り込みマスクレベルの設定値が保存されたテーブルである。割り込みマスクレベル設定テーブル207は、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を割り込みマスクレベル(第1の割り込みマスクレベル)として予め記憶する。なお、割り込みマスクレベルよりも高い優先度を有する割り込みは実行され、割り込みマスクレベルよりも低い優先度を有する割り込みは実行されない。割り込みマスクレベルは、システム起動時に仮想計算機制御部20により設定される値であり、システム稼働中に変更されない固定値とする。
第1の割り込みマスクレベル設定部208は、割り込みハンドラ終了検出部209からの割り込みハンドラ終了通知を受け取り、処理を行う。第1の割り込みマスクレベル設定部208は、割り込みマスクレベル設定テーブル207に設定されている割り込みマスクレベルを、統合割り込みコントローラ2内の第2の割り込みマスクレベル設定部15に設定する。第1の割り込みマスクレベル設定部208は、割り込みマスクレベルを設定したことを割り込みマスクレベル更新部206に通知する。
なお、第1の割り込みマスクレベル設定部208は、次に処理を実行する仮想計算機のタスク処理の割り込みマスクレベルを、割り込みマスクレベル設定テーブル207から取得する。例えば、第1の仮想計算機30向けの割り込みハンドラ処理が終了した場合、第1の仮想計算機30のタスクの割り込みマスクレベルが設定されることになる。
すなわち、第1の割り込みマスクレベル設定部208は、割り込みハンドラによる割り込み処理が終了した場合、割り込みマスクレベル設定テーブル207の中から、仮想計算機が次に実行する処理に対応する割り込みマスクレベルを統合割り込みコントローラ2に通知する。
切替通知受取部210は、実行中の処理を切り替える切り替え通知を第2の仮想計算機40から受け取り、割り込みハンドラによる処理の終了を仮想計算機スケジュール部202に通知する。
仮想計算機スケジュール部202は、呼び出し元と、割り込み種別と、仮想計算機の動作状態とに基づいて、仮想計算機の切り替え制御を行う。具体的には、仮想計算機スケジュール部202は、割り込み復帰先書換部203から呼び出された場合、第1の仮想計算機30への割り込み要求と判断し、割り込み処理部312を呼び出す。
また、仮想計算機スケジュール部202は、割り込みマスクレベル更新部206から呼び出された場合、割り込み種別がアイドル検知部7からの割り込み通知以外であれば、割り込み復帰先保存部200に保存されている割り込み復帰先アドレスへ遷移させる。仮想計算機スケジュール部202は、アイドル検知部7からの割り込み通知であれば、仮想計算機状態保存部201に保存された仮想計算機の動作状態を確認する。仮想計算機スケジュール部202は、第1の仮想計算機30と第2の仮想計算機40とが共にアイドル状態であれば、システム全体を省電力モードへ遷移させる。一方、仮想計算機スケジュール部202は、第1の仮想計算機30と第2の仮想計算機40とのうち、サスペンド状態の仮想計算機があれば、サスペンド状態の仮想計算機のタスクスケジューラ411を呼び出す。
また、仮想計算機スケジュール部202は、切替通知受取部210から呼び出された場合、第2の仮想計算機40の割り込み処理終了と判断し、割り込みマスクレベル設定テーブル207の優先度に基づき、第2の仮想計算機40のタスクスケジューラ411に処理を遷移させる。
第1の割り込みマスク設定部211は、統合割り込みコントローラ2で用いる割り込みマスクを設定するための割り込みマスク設定要求を、後述する統合割り込みコントローラ2内の第2の割り込みマスク設定部11に送信し、統合割り込みコントローラ2で用いる割り込みマスクを設定する。これにより、統合割り込みコントローラ2は、不要な割り込みをマスクすることが可能となる。
第1の割り込みレベル設定部212は、各割り込み種別に対応する割り込みレベルを設定するための割り込みレベル設定要求を、後述する統合割り込みコントローラ2内の第2の割り込みレベル設定部12に送信し、各割り込み種別に対応する割り込みレベルを設定する。なお、第1の割り込みレベル設定部212は、システム起動時に処理を行う。これにより、割り込みが発生した際に、割り込み種別の割り込みレベルに応じた処理を行うことが可能となる。
図3は、本発明の実施の形態1における情報処理装置の統合割り込みコントローラ2の詳細な構成を示すブロック図である。図3を用いて、統合割り込みコントローラ2の詳細な構成について説明する。
統合割り込みコントローラ2は、発生した割り込みの優先度を示す割り込みレベルに基づいて、仮想計算機制御部20への割り込みの通知を制御する。統合割り込みコントローラ2は、第2の割り込みマスク設定部11、第2の割り込みレベル設定部12、第2の割り込み種別判定部13、優先度判定部14、第2の割り込みマスクレベル設定部15及び割り込みレベル保存部16を備えている。なお、本実施の形態において、統合割り込みコントローラ2が割り込み制御部の一例に相当する。
第2の割り込みマスク設定部11は、第1の割り込みコントローラ3、第2の割り込みコントローラ4及びアイドル検知部7からの割り込み要求を、CPU1へ通知するか否かを設定するためのレジスタである。第2の割り込みマスク設定部11は、仮想計算機制御部20の第1の割り込みマスク設定部211からの割り込みマスク設定要求を受け、割り込みマスク設定要求に基づいた割り込みマスクの設定を保持する。
また、第2の割り込みマスク設定部11は、仮想計算機制御部20の仮想計算機スケジュール部202からの要求を受け、要求に基づいて割り込みをマスクするように優先度判定部14を設定する。第2の割り込みマスク設定部11は、仮想計算機制御部20へ割り込み要求を通知しないために、発生した割り込み要求をマスクするように優先度判定部14を設定する。
第2の割り込みマスク設定部11は、全ての仮想計算機の動作状態がアイドル状態である場合に、アイドル検知部7からの割り込み要求をマスクするように優先度判定部14を設定し、システム全体を省電力モードに遷移させる。
第2の割り込みレベル設定部12は、第1の割り込みコントローラ3、第2の割り込みコントローラ4及びアイドル検知部7からの割り込み要求に優劣をつけるため、それぞれの割り込み要求にレベル(優先度)を設定するレジスタである。第2の割り込みレベル設定部12は、仮想計算機制御部20の第1の割り込みレベル設定部212からの割り込みレベル設定要求を受け、割り込みレベル設定要求に基づいた割り込みレベルの設定を保持する。第2の割り込みレベル設定部12は、割り込みの種別に対応する割り込みレベルを保持する。
第2の割り込み種別判定部13は、新規に発生した割り込みを受け取り、新規に発生した割り込みの種別を判定し、判定した割り込み種別に対応する割り込みレベルを割り込みレベル保存部16に設定する。
第2の割り込み種別判定部13は、通知された割り込み要求を割り込み要求情報として保持し、どこから通知された割り込み要求かを判定し、第2の割り込みレベル設定部12に設定されており、かつ割り込み要求に対応する割り込みレベルを割り込みレベル保存部16に通知する。更に、第2の割り込み種別判定部13は、割り込み要求を受け付けたことを優先度判定部14に通知する。このとき、第2の割り込み種別判定部13は、割り込み要求に対応する割り込みレベルを優先度判定部14に通知する。さらに、第2の割り込み種別判定部13は、仮想計算機制御部20の第1の割り込み種別判定部204からの割り込み種別の要求を受け、割り込み種別を含む最新の割り込み要求情報を第1の割り込み種別判定部204へ返す。
優先度判定部14は、割り込みレベル保存部16に保存されている割り込みマスクレベル(第2の割り込みマスクレベル)と、第2の割り込み種別判定部13から通知される新規に発生した割り込みの割り込みレベルとを比較し、新規に発生した割り込みの割り込みレベルが割り込みレベル保存部16に保存されている割り込みマスクレベルより高い場合、仮想計算機制御部20へ割り込みを通知する。
優先度判定部14は、現在の割り込みマスクレベルを割り込みレベル保存部16から取得し、取得した割り込みマスクレベルと、第2の割り込み種別判定部13から通知された割り込みレベルとを比較する。割り込みレベルが割り込みマスクレベルよりも高い優先度を有する場合、優先度判定部14は、割り込み要求をCPU1へ通知する。ただし、第2の割り込みマスク設定部11において割り込み通知が無効に設定されている場合は、優先度判定部14は、割り込み要求をCPU1へ通知しない。CPU1は、優先度判定部14から割り込み要求が入力されると、割り込み発生通知を仮想計算機制御部20の割り込み通知受取部205へ送信する。
第2の割り込みマスクレベル設定部15は、仮想計算機制御部20の割り込みマスクレベル更新部206から、ソフトウェア制御にて設定された割り込みマスクレベルを、割り込みレベル保存部16に通知する。第2の割り込みマスクレベル設定部15は、第1の割り込みマスクレベル設定部208によって通知された割り込みマスクレベルを割り込みレベルとして割り込みレベル保存部16に設定する。
割り込みレベル保存部16は、第2の割り込み種別判定部13から通知された割り込みレベルと、第2の割り込みマスクレベル設定部15から通知された割り込みマスクレベルとを保存する。また、割り込みレベル保存部16は、保存されている割り込みレベルの内の最高優先度の割り込みレベルを現在の割り込みマスクレベルとして保存するレジスタである。保存された割り込みレベルは、仮想計算機制御部20にてクリアされるまで保持される。割り込みレベル保存部16に設定されている割り込みマスクレベルは、仮想計算機制御部20の第1の割り込みマスクレベル設定部208からの要求を受け、最新の状態に更新される。
このように、割り込みレベル保存部16は、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している割り込みレベルの内の最も優先度の高い割り込みレベルを割り込みマスクレベル(第2の割り込みマスクレベル)として保存する。
また、割り込みレベル保存部16は、第2の割り込み種別判定部13が受け取った割り込みの割り込みレベルを、第2の割り込みレベル設定部12にあらかじめ保持されている当該割り込みの種別に対応する割り込みレベルとして保存し、さらに第1の割り込みマスクレベル設定部208から第2の割り込みマスクレベル設定部15に対して通知された割り込みマスクレベルを割り込みレベルとして保存する。
また、優先度判定部14は、割り込みレベル保存部16に保存されている割り込みレベルの中で最も優先度の高い割り込みレベル以下の割り込みを仮想計算機制御部20へ通知しない。
以上の構成により、仮想計算機の割り込みハンドラ処理とタスク処理との終了を仮想計算機制御部20で検出し、割り込みハンドラ処理とタスク処理とが終了したタイミングで統合割り込みコントローラ2の割り込みマスクレベルを制御することができる。これにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、適切な仮想計算機のスケジュールを制御することが可能となる。
図4は、本発明の実施の形態1における統合割り込みコントローラ2の第2の割り込みレベル設定部12の設定内容の一例を示す図である。第2の割り込みレベル設定部12は、割り込みを通知してくるハードウェア(割り込み種別)ごとに割り込みレベルを設定する。割り込みレベルは、優先度を表している。図4では、割り込み種別は、第1の割り込みコントローラ3からの割り込み通知と、第2の割り込みコントローラ4からの割り込み通知と、アイドル検知部7からの割り込み通知との3つを含み、それぞれ“2”、“5”及び“3”の割り込みレベルが設定されている。なお、以下の説明においては、割り込みレベルは、“0”〜“7”の8段階に分け、数字が小さいほど、優先度が高いものとしている。以上の構成により、本発明の実施の形態1における統合割り込みコントローラ2は、各割り込みの優先順位を判断可能としている。
図5は、本発明の実施の形態1における統合割り込みコントローラ2の割り込みレベル保存部16の保存内容の一例を示す図である。ここでは、割り込みレベルは、“0”〜“7”の8段階に分けている。割り込みレベル保存部16は、統合割り込みコントローラ2において受け付けているハードウェア割り込みによる割り込みレベルと、仮想計算機制御部20からソフトウェア制御により設定された割り込みレベルとを保存する。割り込みレベル保存部16では、受け付けた割り込みレベルに対応するビットが1に設定される。また、受け付けた割り込みレベルのうち、最も数字が小さい割り込みレベルが、統合割り込みコントローラ2の割り込みマスクレベルとして設定される。統合割り込みコントローラ2は、割り込みレベル保存部16が保持している情報を用いて、割り込み処理と仮想計算機のタスク処理との優先順位をハードウェア的に判断可能とする。
図6は、本発明の実施の形態1における仮想計算機制御部20の割り込みマスクレベル設定テーブル207の設定内容の一例を示す図である。割り込みマスクレベル設定テーブル207には、割り込みマスクレベルを設定する対象となる種別と、種別ごとに設定される割り込みマスクレベルとが保存されている。割り込みハンドラ終了時に、第1の割り込みマスクレベル設定部208は、割り込みマスクレベル設定テーブル207に設定されている割り込みマスクレベルを、第2の割り込みマスクレベル設定部15に設定する。
次に、第1の仮想計算機30のタスク処理実行中に第1の割り込みコントローラ3からの割り込みが発生した場合の情報処理装置の動作について説明する。図7、図8、図9及び図10は、第1の仮想計算機30のタスク処理実行中に第1の割り込みコントローラ3からの割り込みが発生した場合の情報処理装置の動作の一例を示すフローチャートである。
まず、第1の割り込みコントローラ3における割り込み発生から、割り込み処理部312による割り込みハンドラ処理の終了までの動作について説明する。図7は、本発明の実施の形態1において、第1の割り込みコントローラ3における割り込み発生から、割り込み処理部312による割り込みハンドラ処理の終了までの動作を示すフローチャートである。
まず、第1の仮想計算機30のタスク処理実行中に、第1の割り込みコントローラ3からの割り込みが発生した場合、仮想計算機制御部20は、処理を開始する。割り込みが発生すると、割り込み通知受取部205は、CPU1から出力された割り込み発生通知を受け取る(ステップS1)。例えば、CPU1が、統合割り込みコントローラ2から出力される割り込み要求を受けて割り込みを検知した時に、処理がジャンプする先である割り込みベクターを、仮想計算機制御部20に設ける。これにより、割り込み発生時に、割り込み通知受取部205を動作させることが可能である。
割り込み通知受取部205は、割り込みが発生したことを表す割り込み情報を第1の割り込み種別判定部204に通知する。次に、第1の割り込み種別判定部204は、発生した割り込みの割り込み種別を判定する(ステップS2)。なお、第1の割り込み種別判定部204は、判定対象の割り込み種別を、統合割り込みコントローラ2の第2の割り込み種別判定部13から取得する。
割り込み種別を判定した結果、第1の割り込みコントローラ3からの割り込みであると判定された場合(ステップS2で“第1の割り込みコントローラ”)、第1の割り込み種別判定部204は、割り込みが発生したことを表す割り込み情報を割り込み復帰先書換部203に通知する(ステップS3)。
次に、割り込み復帰先書換部203は、通知された割り込み情報で指定される割り込み復帰先アドレスを、割り込み復帰先保存部200へ保存する(ステップS4)。次に、割り込み復帰先書換部203は、通知された割り込み情報に含まれる割り込み復帰先アドレスを、仮想計算機制御部20の内部のアドレスに書き換える(ステップS5)。割り込み復帰先書換部203は、仮想計算機スケジュール部202を呼び出す。なお、書き換える仮想計算機制御部20の内部のアドレスとは、割り込みハンドラ終了検出部209のアドレスである。また、割り込み種別を判定した結果、アイドル検知部7からの割り込みであると判定された場合については図9、第1の割り込みコントローラ3からの割り込みであると判定された場合については図10を用いて後で説明する。
次に、仮想計算機スケジュール部202は、割り込み復帰先書換部203から呼び出されたことから、第1の仮想計算機30への割り込み要求と判断し、第1の仮想計算機30の割り込み処理部312を呼び出す(ステップS6)。
次に、割り込み処理部312は、発生した割り込みに対応する割り込みハンドラ320による処理を実行する(ステップS7)。
割り込みハンドラによる処理が終了した後、割り込みハンドラ終了検出部209は、割り込みハンドラによる処理の終了を検出する(ステップS8)。また、割り込みハンドラ終了検出部209は、割り込みハンドラによる処理が終了したことを第1の割り込みマスクレベル設定部208に通知する。
図8は、図7のステップS8の処理に続いて、割り込みハンドラによる処理が終了した後の動作の一例を示すフローチャートである。
第1の割り込みマスクレベル設定部208は、図6に示す割り込みマスクレベル設定テーブル207から、設定されている割り込みマスクレベルを取得し、取得した割り込みマスクレベルを第2の割り込みマスクレベル設定部15に設定する(ステップS9)。第1の割り込みマスクレベル設定部208は、割り込みマスクレベルを設定したことを割り込みマスクレベル更新部206に通知する。なお、第1の割り込みマスクレベル設定部208は、次に処理を実行する仮想計算機のタスク処理の割り込みマスクレベルを取得する。ここでは、第1の仮想計算機30の割り込みハンドラ320による処理が終了しているので、第1の仮想計算機30のタスク300の割り込みマスクレベル(例えば、“4”)が設定される。
次に、割り込みマスクレベル更新部206は、図5に示す割り込みレベル保存部16にアクセスし、割り込みマスクレベルを最新の割り込み状況に更新するよう要求し、割り込みマスクレベルを更新したことを仮想計算機スケジュール部202に通知する(ステップS10)。つまり、割り込みレベル保存部16において、割り込み要因がクリアされている割り込みレベルに関しては、ビットが0に更新される。
次に、仮想計算機スケジュール部202は、割り込み復帰先保存部200から割り込み復帰先アドレスを取得し、仮想計算機を割り込み発生前の状態へ遷移させる(ステップS11)。ここでは、第1の仮想計算機30のタスク処理実行中に割り込み要求が発生したことから、第1の仮想計算機30のタスク処理に戻ることになる。
次に、第1の仮想計算機30は、タスク300の処理を実行する(ステップS12)。なお、ここでは、ステップS9において割り込みマスクレベルが“4”に設定されている。そのため、第1の仮想計算機30のタスク処理実行中は、割り込みレベルが“5”である第2の割り込みコントローラ4からの割り込みはマスクされ、図6に示す優先度に従い、仮想計算機をスケジュールすることが可能である。
第1の仮想計算機30によるタスク処理が終了すると、CPU1は、第1の仮想計算機30を省電力モード(アイドル状態)へ遷移する命令を発行する(ステップS13)。
アイドル検知部7は、ステップS13で発行された命令を検出し、統合割り込みコントローラ2へ割り込み要求を送信する(ステップS14)。これにより、仮想計算機制御部20は、第1の仮想計算機30におけるタスク処理の終了を検出可能としている。
そして、統合割り込みコントローラ2は、アイドル検知部7からの割り込み要求を受信すると、割り込み要求をCPU1へ出力する。CPU1は、割り込み発生通知を仮想計算機制御部20へ出力する。その後、図7のステップS1の処理に戻り、割り込み通知受取部205は、CPU1から出力された割り込み発生通知を受け取る。
図9は、図7のステップS2において、アイドル検知部7からの割り込みであると判定された後の動作の一例を示すフローチャートである。
割り込み種別を判定した結果、アイドル検知部7からの割り込みであると判定された場合(ステップS2で“アイドル検知部”)、第1の割り込み種別判定部204は、仮想計算機状態保存部201の保存内容に基づいて、直前に実行中だった仮想計算機を判別する(ステップS15)。
第1の仮想計算機30が直前に実行中だったと判別された場合(ステップS15で“第1の仮想計算機”)、第1の割り込み種別判定部204は、仮想計算機状態保存部201に記憶されている第1の仮想計算機の動作状態をアイドル状態に更新する(ステップS16)。一方、第2の仮想計算機40が直前に実行中だったと判別された場合(ステップS15で“第2の仮想計算機”)、第1の割り込み種別判定部204は、仮想計算機状態保存部201に記憶されている第2の仮想計算機の動作状態をアイドル状態に更新する(ステップS17)。
仮想計算機状態保存部201における仮想計算機の動作状態を更新した後、割り込みマスクレベル更新部206は、割り込み要因をクリアする(ステップS18)。次に、割り込みマスクレベル更新部206は、割り込みレベル保存部16にアクセスし、割り込みマスクレベルを最新の割り込み状況に更新するよう要求し、割り込みマスクレベルを更新したことを仮想計算機スケジュール部202に通知する(ステップS19)。
次に、仮想計算機スケジュール部202は、仮想計算機状態保存部201に記憶されている仮想計算機の動作状態を確認し、第1の仮想計算機30と第2の仮想計算機40とが共にアイドル状態であるか否かを判断する(ステップS20)。
ここで、第1の仮想計算機30と第2の仮想計算機40とが共にアイドル状態であると判断された場合(ステップS20でYES)、仮想計算機スケジュール部202は、第2の割り込みマスク設定部11に対して、アイドル検知部7からの割り込みをマスクするよう要求する。第2の割り込みマスク設定部11は、アイドル検知部7からの割り込みをマスクするように優先度判定部14を設定する(ステップS21)。これは、実際にシステム全体を省電力モードへ遷移させるため、省電力モードへの命令実行時に発生する割り込み通知をマスクするために実施する。その後、CPU1は、システム全体を省電力モードへ遷移させる(ステップS22)。続いて、図7のステップS1の処理に戻り、割り込みが発生した場合に、割り込み通知受取部205は、CPU1から出力された割り込み発生通知を受け取る。
一方、第1の仮想計算機30と第2の仮想計算機40とが共にアイドル状態でない、すなわち、アイドル状態でない仮想計算機があると判断された場合(ステップS20でNO)、仮想計算機スケジュール部202は、アイドル状態でない仮想計算機のタスク処理へ遷移させる(ステップS23)。
次に、第1の仮想計算機30がアイドル状態でない場合、第2の仮想計算機40は、タスク400の処理を実行し、第2の仮想計算機40がアイドル状態でない場合、第1の仮想計算機30は、タスク300の処理を実行する(ステップS24)。その後、図7のステップS1の処理に戻り、割り込みが発生した場合に、割り込み通知受取部205は、CPU1から出力された割り込み発生通知を受け取る。
図10は、図7のステップS2において、第2の割り込みコントローラ4からの割り込みであると判定された後の動作の一例を示すフローチャートである。
割り込み種別を判定した結果、第2の割り込みコントローラ4からの割り込みであると判定された場合(ステップS2で“第2の割り込みコントローラ”)、第1の割り込み種別判定部204は、仮想計算機スケジュール部202を呼び出す。仮想計算機スケジュール部202は、第1の割り込み種別判定部204から呼び出されたことから、第2の仮想計算機40への割り込み要求と判断し、第2の仮想計算機40の割り込み処理部412を呼び出す(ステップS25)。
次に、割り込み処理部412は、発生した割り込みに対応する割り込みハンドラ420による処理を実行する(ステップS26)。
割り込みハンドラによる処理が終了した後、割り込み処理部412は、実行中の処理を切り替える切り替え通知を仮想計算機制御部20の切替通知受取部210へ送る(ステップS27)。
切替通知受取部210は、切り替え通知を受け取り、仮想計算機スケジュール部202に、第2の仮想計算機40の割り込みハンドラによる処理の終了を通知する。仮想計算機スケジュール部202は、第2の仮想計算機40のタスク処理へ遷移させる(ステップS28)。次に、第2の仮想計算機40は、タスク400の処理を実行する(ステップS29)。その後、図7のステップS1の処理に戻り、割り込みが発生した場合に、割り込み通知受取部205は、CPU1から出力された割り込み発生通知を受け取る。
以上の構成により、仮想計算機の割り込みハンドラ処理とタスク処理との終了を仮想計算機制御部20で検出し、検出したタイミングで統合割り込みコントローラ2の割り込みマスクレベルを制御することができる。これにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、適切な仮想計算機のスケジュール制御を行うことが可能となる。
特に、買い入れたバイナリプログラムなど、改変が不可能なソフトウェアの場合、タスクの優先度を通知することができないバイナリプログラムを組み込んだソフトウェアでも、適切な仮想計算機のスケジュール制御を行うことができる。
(実施の形態2)
図11は、本発明の実施の形態2における仮想計算機制御装置を備えた情報処理装置の構成を示すブロック図である。特に、図11では、統合割り込みコントローラ2の詳細について示している。
図11では、図3で示した統合割り込みコントローラ2に通知レベル受信部17を追加し、第2の割り込みコントローラ4に割り込みレベル通知部18を追加している。また、図11において、図3と同じ構成要素については同じ符号を用いている。以下、新規に追加した構成要素について説明し、同じ構成要素についての説明を省略する。
割り込みレベル通知部18は、割り込みの種類に応じて異なる複数の割り込みレベルを統合割り込みコントローラ2に通知する。すなわち、割り込みレベル通知部18は、第2の割り込みコントローラ4内部で設定されている各割り込みのレベル(優先度)を通知レベルとして、統合割り込みコントローラ2内の通知レベル受信部17に通知する。
通知レベル受信部17は、割り込みレベル通知部18によって通知される複数の割り込みレベルを受信し、受信した複数の割り込みレベルをそれぞれ割り込みマスクレベルとして割り込みマスクレベル設定テーブル207に記憶する。
通知レベル受信部17は、割り込みレベル通知部18から通知レベルを受け取り、受け取った通知レベルを第2の割り込み種別判定部13に通知する。これで、統合割り込みコントローラ2内で、第2の割り込みコントローラ4からの割り込みに優先度を設けることができ、優先度に基づいて仮想計算機を制御することが可能となる。つまり、第2の割り込み種別判定部13は、通知された通知レベルを第2の割り込みレベル設定部12へ出力し、第2の割り込みレベル設定部12は、通知レベルに応じた割り込みレベルを割り込み種別に対応付けて設定する。
以上の構成により、第2の割り込み種別判定部13は、受け付けた割り込み種別と、通知レベル受信部17から通知された通知レベルに対応する割り込みレベルとを第2の割り込みレベル設定部12から取得し、取得した割り込みレベルを割り込みレベル保存部16に通知することができる。つまり、仮想計算機制御部20内の割り込みマスクレベル設定テーブル207の設定により、第2の仮想計算機40の一部またはすべての割り込み処理を、第1の仮想計算機30のタスク処理よりも優先させて動作させることが可能となる。
図12は、実施の形態2において、統合割り込みコントローラ2の第2の割り込みレベル設定部12の設定内容の一例を示す図である。なお、以下の説明においては、第2の割り込みコントローラ4からの通知レベルが“0”〜“7”の8段階で構成されている例について説明する。
図12では、通知レベルが“4”〜“0”の第2の割り込みコントローラ4からの割り込み通知の割り込みレベルは“4”に設定され、通知レベルが“7”〜“5”の第2の割り込みコントローラ4からの割り込み通知の割り込みレベルは“6”に設定されている。なお、割り込みレベルは数字が小さいほど、優先度が高いものとしている。以上の構成により、仮想計算機制御部20内の割り込みマスクレベル設定テーブル207の設定を用いて、統合割り込みコントローラ2は、第2の仮想計算機40の一部の割り込み処理を、第1の仮想計算機30のタスク処理より優先させて動作させることができる。
図13は、本発明の実施の形態2において、仮想計算機制御部20の割り込みマスクレベル設定テーブル207の設定内容の一例を示す図である。マスクレベル設定テーブル207には、割り込みマスクレベルを設定する対象となる種別と、種別ごとに設定される割り込みマスクレベルとが保存されている。図13では、通知レベルが“4”〜“0”である第2の割り込みコントローラ4からの割り込み通知の割り込みマスクレベルは“4”に設定され、第1の仮想計算機30のタスク処理の割り込みマスクレベルは“5”に設定されている。また、通知レベルが“7”〜“5”である第2の割り込みコントローラ4からの割り込み通知の割り込みマスクレベルは“6”に設定されている。これにより、第1の仮想計算機30のタスク300の実行中であっても、通知レベルが“4”〜“0”である第2の割り込みコントローラ4からの割り込みであれば、優先的に動作することになる。
以上の構成により、仮想計算機の割り込みハンドラ処理とタスク処理との終了を仮想計算機制御部20で検出し、検出したタイミングで統合割り込みコントローラ2の割り込みマスクレベルを制御することができる。これにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、適切な仮想計算機のスケジュール制御を行うことが可能となる。特に、仮想計算機制御部20内の割り込みマスクレベル設定テーブル207の設定で、第2の仮想計算機40の一部またはすべての割り込み処理を、第1の仮想計算機30のタスク処理より優先させて動作させることが可能となる。
(実施の形態3)
図14は、本発明の実施の形態3における仮想計算機制御装置を備えた情報処理装置のハードウェア構成を示すブロック図である。
図14では、図1で示した情報処理装置に、割り込みネゲート検知部9を追加している。なお、図14において、図1と同じ構成要素については同じ符号を用いている。以下、新規に追加した構成要素について説明し、同じ構成要素についての説明を省略する。
割り込みネゲート検知部9は、周辺デバイス5から出力される割り込み要求が解除されたことを検知し、統合割り込みコントローラ2へ割り込みを発生させる。すなわち、割り込みネゲート検知部9は、第1の割り込みコントローラ3から統合割り込みコントローラ2への割り込み要求が解除されたことを検知し、割り込み要求が解除されたことを統合割り込みコントローラ2へ割り込みで通知する。割り込み要求の解除は、第1の割り込みコントローラ3への割り込みを発生させている割り込み要因をクリアすることで行われる。割り込み要因がクリアされた時、統合割り込みコントローラ2への割り込み信号がネゲートされる。割り込みネゲート検知部9は、第1の割り込みコントローラ3から統合割り込みコントローラ2へ出力される割り込み信号がネゲートされたことを検知する。
これにより、仮想計算機制御部20で、第1の割り込みコントローラ3から発生した、第1の仮想計算機30への割り込みハンドラ処理の終了を検出することが可能となる。
図15は、本発明の実施の形態3における情報処理装置のメモリ8の詳細な構成を示すブロック図である。図15は、図2で示した仮想計算機制御部20から割り込み復帰先書換部203と割り込みハンドラ終了検出部209とを削除した構成である。本実施の形態3において、割り込み復帰先書換部203と割り込みハンドラ終了検出部209とを削除しているのは、前述した割り込みネゲート検知部9を設けたことで、割り込み要求の解除の検知が可能となったためである。
図16は、本発明の実施の形態3における情報処理装置の統合割り込みコントローラ2の詳細な構成を示すブロック図である。図16では、統合割り込みコントローラ2の第2の割り込み種別判定部19が、割り込みネゲート検知部9からの割り込みを受け付ける点が、図3と異なっている。
図17は、本発明の実施の形態3において、統合割り込みコントローラ2の第2の割り込みレベル設定部12の設定内容の一例を示す図である。割り込み種別は、割り込みネゲート検知部9からの割り込み通知、第1の割り込みコントローラ3からの割り込み通知、アイドル検知部からの割り込み通知及び第2の割り込みコントローラ4からの割り込み通知を含む。割り込みネゲート検知部9からの割り込み通知には、割り込みレベル“1”が設定されている。つまり、割り込みネゲート検知部9からの割り込み発生時は、割り込みレベル保存部16の割り込みマスクレベルは“2”に設定されている状態なので、割り込みレベルが“1”である割り込みネゲート検知部9からの割り込み通知は受け付けられる。
図18は、本発明の実施の形態3において、第1の割り込みコントローラ3からの割り込みが発生した場合の情報処理装置の動作の一例を示すフローチャートである。
まず、第1の仮想計算機30のタスク処理実行中に、第1の割り込みコントローラ3からの割り込みが発生した場合、仮想計算機制御部20は、処理を開始する。割り込みが発生すると、割り込み通知受取部205は、CPU1から出力された割り込み発生通知を受け取る(ステップS41)。
割り込み通知受取部205は、割り込みが発生したことを表す割り込み情報を第1の割り込み種別判定部204に通知する。次に、第1の割り込み種別判定部204は、発生した割り込みの割り込み種別を判定する(ステップS42)。なお、第1の割り込み種別判定部204は、判定対象の割り込み種別を、統合割り込みコントローラ2の第2の割り込み種別判定部19から取得する。
割り込み種別を判定した結果、第1の割り込みコントローラ3からの割り込みであると判定された場合(ステップS42で“第1の割り込みコントローラ”)、第1の割り込み種別判定部204は、第1の仮想計算機30の割り込み処理部312を呼び出す(ステップS43)。
なお、割り込み種別を判定した結果、アイドル検知部7からの割り込みであると判定された場合(ステップS42で“アイドル検知部”)、前述した図9のステップS15の処理へ移行し、第2の割り込みコントローラ4からの割り込みであると判定された場合(ステップS42で“第2の割り込みコントローラ”)、前述した図10のステップS25の処理へ移行する。
次に、割り込み処理部312は、発生した割り込みに対応する割り込みハンドラ320を呼び出し、当該割り込みハンドラ320による処理を実行する(ステップS44)。次に、割り込みハンドラ320による処理中に、第1の割り込みコントローラ3による割り込み要因がクリアされると、割り込みネゲート検知部9は、割り込み要因のクリアを検知する(ステップS45)。
次に、割り込みネゲート検知部9は、統合割り込みコントローラ2へ割り込み要求を送信する(ステップS46)。これにより、統合割り込みコントローラ2は、割り込みを発生させる。すなわち、統合割り込みコントローラ2は、割り込みネゲート検知部9からの割り込み要求を受信すると、割り込み要求をCPU1へ出力する。CPU1は、割り込み発生通知を仮想計算機制御部20へ出力する。その後、ステップS41の処理へ戻り、割り込み通知受取部205は、CPU1から出力された割り込み発生通知を受け取る。
割り込み通知受取部205は、割り込みが発生したことを表す割り込み情報を第1の割り込み種別判定部204に通知する。次に、第1の割り込み種別判定部204は、発生した割り込みの割り込み種別を判定する(ステップS42)。第1の割り込み種別判定部204は、判定対象の割り込み種別を、統合割り込みコントローラ2の第2の割り込み種別判定部19から取得する。
割り込み種別を判定した結果、割り込みネゲート検知部9からの割り込みであると判定された場合(ステップS42で“割り込みネゲート検知部”)、第1の割り込み種別判定部204は、通知された割り込み情報で指定される割り込み復帰先アドレスを割り込み復帰先保存部200に保存する(ステップS47)。その後、前述の図8のステップS9の処理へ移行する。
以上の構成により、割り込みネゲート検知部9及び第1の割り込み種別判定部204を用いて、第1の仮想計算機30の割り込みハンドラ320による処理の終了を検出することができる。これにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、適切な仮想計算機のスケジュール制御を行うことが可能となる。
(実施の形態4)
図19は、本発明の実施の形態4における仮想計算機制御装置を備えた情報処理装置の構成を示すブロック図である。図19では、特に、統合割り込みコントローラ2の詳細な構成について示している。
図19に示す情報処理装置は、図11に示す情報処理装置の構成に、割り込みネゲート検知部9を追加している。また、図16との違いは、統合割り込みコントローラ2に図11に示す通知レベル受信部17を備え、第2の割り込みコントローラ4に図11に示す割り込みレベル通知部18を備えている点である。
割り込みレベル通知部18は、第2の割り込みコントローラ4内部で設定されている各割り込みのレベル(優先度)を通知レベルとして、統合割り込みコントローラ2内の通知レベル受信部17に通知する。
通知レベル受信部17は、割り込みレベル通知部18から通知レベルを受け取り、受け取った通知レベルを第2の割り込み種別判定部19に通知する。これにより、統合割り込みコントローラ2内で、第2の割り込みコントローラ4からの割り込みに優先度を設けることができ、優先度に基づいて仮想計算機を制御することが可能となる。つまり、第2の割り込み種別判定部19は、通知された通知レベルを第2の割り込みレベル設定部12へ出力し、第2の割り込みレベル設定部12は、通知レベルに応じた割り込みレベルを割り込み種別に対応付けて設定する。
また、割り込みネゲート検知部9は、第1の割り込みコントローラ3から統合割り込みコントローラ2への割り込み要求が解除されたことを検知し、割り込み要求が解除されたことを統合割り込みコントローラ2へ割り込みで通知する。割り込み要求の解除は、第1の割り込みコントローラ3への割り込みを発生させている割り込み要因をクリアすることで行われる。割り込み要因がクリアされた時、統合割り込みコントローラ2への割り込み信号がネゲートされる。割り込みネゲート検知部9は、第1の割り込みコントローラ3から統合割り込みコントローラ2へ出力される割り込み信号がネゲートされたことを検知する。
これにより、仮想計算機制御部20で、第1の割り込みコントローラ3から発生した、第1の仮想計算機30への割り込みハンドラ処理の終了を検出することが可能となる。
以上の構成により、第2の割り込み種別判定部19は、受け付けた割り込み種別と、通知レベル受信部17から通知された通知レベルに対応する割り込みレベルとを第2の割り込みレベル設定部12から取得し、取得した割り込みレベルを割り込みレベル保存部16に通知することができる。つまり、仮想計算機制御部20内の割り込みマスクレベル設定テーブル207の設定により、第2の仮想計算機40の一部またはすべての割り込み処理を、第1の仮想計算機30のタスク処理よりも優先させて動作させることが可能となる。
更に、割り込みネゲート検知部9及び第1の割り込み種別判定部204を用いて、第1の仮想計算機30の割り込みハンドラ320による処理の終了を検出することができる。これにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、適切な仮想計算機のスケジュール制御を行うことが可能となる。
以上、本実施の形態1〜4によれば、ソフトウェアの改変が不可能な仮想計算機に関し、設計された優先度に従って、タスク処理及び割り込み処理の実行が可能である。
なお、本明細書では仮想計算機が2つの場合を実施の形態として示しているが、本発明はこれに限定されない。情報処理装置が3つ以上の仮想計算機を有する場合でも、同様に本発明を用いることができる。
また、本実施の形態1〜4において、統合割り込みコントローラ2、仮想計算機制御部20及びアイドル検知部7は、それぞれ個別のハードウェアにより構成しているが、本発明は特にこれに限定されず、統合割り込みコントローラ2、仮想計算機制御部20及びアイドル検知部7は、プログラムにより構成してもよい。この場合、統合割り込みコントローラ2、仮想計算機制御部20及びアイドル検知部7としてCPU1を機能させる仮想計算機制御プログラムは、メモリ8内に格納される。さらに、仮想計算機制御プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。
また、本発明の各機能ブロックは典型的にはソフトウェアとして実現されるが、集積回路であるLSIとして実現しても良い。各機能ブロックは個別に1チップ化されても良いし、一部又はすべてを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI又はウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)、LSI内部の回路セルの接続または設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。LSIに置き換わる集積回路化の技術としては、例えばバイオ技術の適応等が可能性としてありえる。
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。
本発明の一局面に係る仮想計算機制御装置は、CPU上で動作する複数の仮想計算機の切り替えを制御する仮想計算機制御部と、発生した割り込みの優先度を示す割り込みレベルに基づいて、前記仮想計算機制御部への割り込みの通知を制御する割り込み制御部とを備え、前記仮想計算機制御部は、前記割り込み制御部から通知された割り込みの種別を判定する第1の割り込み種別判定部と、前記第1の割り込み種別判定部によって割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値を保存する割り込み復帰先保存部と、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を第1の割り込みマスクレベルとして予め記憶する割り込みマスクレベル設定テーブルと、仮想計算機による割り込み処理が終了した場合、前記割り込みマスクレベル設定テーブルの中から、仮想計算機が次に実行する処理に対応する第1の割り込みマスクレベルを前記割り込み制御部に通知する第1の割り込みマスクレベル設定部と、前記割り込み制御部における割り込みレベルを最新の状態に更新するよう前記割り込み制御部に要求する更新部とを含み、前記割り込み制御部は、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している前記割り込みレベルの内の最も優先度の高い割り込みレベルを第2の割り込みマスクレベルとして保存する割り込みレベル保存部と、前記第1の割り込みマスクレベル設定部によって通知された前記第1の割り込みマスクレベルを割り込みレベルとして前記割り込みレベル保存部に設定する第2の割り込みマスクレベル設定部と、新規に発生した割り込みを受け取り、前記新規に発生した割り込みの種別を判定し、判定した割り込み種別に対応する割り込みレベルを前記割り込みレベル保存部に設定する第2の割り込み種別判定部と、前記割り込みレベル保存部に保存されている前記第2の割り込みマスクレベルと、前記第2の割り込み種別判定部から通知される新規に発生した割り込みの割り込みレベルとを比較し、新規に発生した割り込みの割り込みレベルが前記割り込みレベル保存部に保存されている前記第2の割り込みマスクレベルより高い場合、前記仮想計算機制御部へ割り込みを通知する優先度判定部とを含む。
この構成によれば、仮想計算機制御部は、CPU上で動作する複数の仮想計算機の切り替えを制御し、割り込み制御部は、発生した割り込みの優先度を示す割り込みレベルに基づいて、仮想計算機制御部への割り込みの通知を制御する。割り込み制御部から通知された割り込みの種別が判定され、割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値が保存される。割り込みマスクレベル設定テーブルは、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を第1の割り込みマスクレベルとして予め記憶している。仮想計算機による割り込み処理が終了した場合、割り込みマスクレベル設定テーブルの中から、仮想計算機が次に実行する処理に対応する第1の割り込みマスクレベルが割り込み制御部に通知される。また、割り込み制御部における割り込みレベルを最新の状態に更新するよう割り込み制御部に要求される。割り込みレベル保存部は、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している割り込みレベルの内の最も優先度の高い割り込みレベルを第2の割り込みマスクレベルとして保存する。通知された第1の割り込みマスクレベルが割り込みレベルとして割り込みレベル保存部に設定される。新規に発生した割り込みが受け取られ、新規に発生した割り込みの種別が判定され、判定された割り込み種別に対応する割り込みレベルが割り込みレベル保存部に設定される。割り込みレベル保存部に保存されている第2の割り込みマスクレベルと、第2の割り込み種別判定部から通知される新規に発生した割り込みの割り込みレベルとが比較され、新規に発生した割り込みの割り込みレベルが割り込みレベル保存部に保存されている第2の割り込みマスクレベルより高い場合、仮想計算機制御部へ割り込みが通知される。
したがって、仮想計算機の割り込み処理が終了したタイミングで、割り込み制御部において割り込みをマスクするための優先度を更新することにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、仮想計算機の切り替えを適切に制御することができる。
また、上記の仮想計算機制御装置において、前記割り込み制御部は、割り込みの種別に対応する割り込みレベルを保持する割り込みレベル設定部をさらに含み、前記割り込みレベル保存部は、前記第2の割り込み種別判定部が受け取った割り込みの割り込みレベルを、前記割り込みレベル設定部にあらかじめ保持されている当該割り込みの種別に対応する割り込みレベルとして保存し、さらに前記第1の割り込みマスクレベル設定部から前記第2の割り込みマスクレベル設定部に対して通知された第1の割り込みマスクレベルを割り込みレベルとして保存し、前記優先度判定部は、前記割り込みレベル保存部に保存されている割り込みレベルの中で最も優先度の高い割り込みレベル以下の割り込みを前記仮想計算機制御部へ通知しないことが好ましい。
この構成によれば、割り込みレベル設定部には、割り込みの種別に対応する割り込みレベルが保持される。割り込みレベル保存部は、第2の割り込み種別判定部が受け取った割り込みの割り込みレベルが、割り込みレベル設定部にあらかじめ保持されている当該割り込みの種別に対応する割り込みレベルとして保存され、かつ第1の割り込みマスクレベル設定部から前記第2の割り込みマスクレベル設定部に対して通知された第1の割り込みマスクレベルが割り込みレベルとして保存される。そして、割り込みレベル保存部に保存されている割り込みレベルの中で最も優先度の高い割り込みレベル以下の割り込みが仮想計算機制御部へ通知されない。
したがって、割り込み制御部に通知された割り込みに対応する割り込みレベルを割り込みレベル保存部に適切に保存することができる。
また、上記の仮想計算機制御装置において、前記CPUがアイドル状態に遷移する命令を実行したことを検知し、前記第2の割り込み種別判定部へ割り込み要求を出力するアイドル検知部をさらに備えることが好ましい。
この構成によれば、CPUがアイドル状態に遷移する命令を実行したことが検知され、第2の割り込み種別判定部へ割り込み要求が出力されるので、CPUがアイドル状態、すなわち仮想計算機の動作状態がアイドル状態に遷移したことを検知することができ、当該検知結果に応じて割り込み制御部を制御することができる。
また、上記の仮想計算機制御装置において、前記仮想計算機制御部は、前記複数の仮想計算機の動作状態を保存する仮想計算機状態保存部をさらに含み、前記割り込み制御部は、前記仮想計算機制御部へ割り込み要求を通知しないために、発生した割り込み要求をマスクするように前記優先度判定部を設定する割り込みマスク設定部をさらに含み、前記第2の割り込み種別判定部は、発生した割り込みが前記アイドル検知部からの割り込み要求であると判定した場合、前記仮想計算機状態保存部に保存されている直前に実行中だった仮想計算機の動作状態をアイドル状態に更新し、前記割り込みマスク設定部は、全ての仮想計算機の動作状態がアイドル状態である場合に、前記アイドル検知部からの割り込み要求をマスクするように前記優先度判定部を設定し、全ての仮想計算機をアイドル状態に遷移させることが好ましい。
この構成によれば、仮想計算機状態保存部は、複数の仮想計算機の動作状態を保存する。また、発生した割り込みがアイドル検知部からの割り込み要求であると判定された場合、仮想計算機状態保存部に保存されている直前に実行中だった仮想計算機の動作状態がアイドル状態に更新される。そして、全ての仮想計算機の動作状態がアイドル状態である場合に、アイドル検知部からの割り込み要求をマスクするよう設定され、仮想計算機制御装置がアイドル状態に遷移される。
したがって、全ての仮想計算機がアイドル状態になった場合に、仮想計算機制御装置がアイドル状態に遷移されるので、複数の仮想計算機のうち、一の仮想計算機がアイドル状態になり、他の仮想計算機がアイドル状態でない場合に、仮想計算機制御装置がアイドル状態に遷移することなく、確実に仮想計算機制御装置をアイドル状態に遷移させることができる。
また、上記の仮想計算機制御装置において、割り込みの種類に応じて異なる複数の割り込みレベルを前記割り込み制御部に通知する割り込みレベル通知部をさらに備え、前記割り込み制御部は、前記割り込みレベル通知部によって通知される前記複数の割り込みレベルを受信し、受信した前記複数の割り込みレベルをそれぞれ第1の割り込みマスクレベルとして前記割り込みマスクレベル設定テーブルに記憶する通知レベル受信部をさらに含むことが好ましい。
この構成によれば、割り込みの種類に応じて異なる複数の割り込みレベルが割り込み制御部に通知される。そして、割り込み制御部において、通知される複数の割り込みレベルが受信され、受信された複数の割り込みレベルがそれぞれ第1の割り込みマスクレベルとして割り込みマスクレベル設定テーブルに記憶される。
したがって、複数の仮想計算機のうちの一の仮想計算機において、割り込みの種類に応じて異なる優先度を割り込みマスクレベル設定テーブルに設定することができ、一の仮想計算機の一部又は全ての割り込み処理を、他の仮想計算機のタスク処理より優先させて動作させることができる。
また、上記の仮想計算機制御装置において、前記仮想計算機制御部は、仮想計算機による割り込み処理が終了したことを検出する割り込み終了検出部と、前記通知された割り込みで指定された割り込み復帰先アドレスを前記割り込み復帰先保存部に退避し、前記割り込み復帰先アドレスを前記割り込み終了検出部のアドレスに書き換える割り込み復帰先書き換え部とを含むことが好ましい。
この構成によれば、割り込み終了検出部は、仮想計算機による割り込み処理が終了したことを検出し、割り込み復帰先書き換え部は、通知された割り込みで指定された割り込み復帰先アドレスを割り込み復帰先保存部に退避し、割り込み復帰先アドレスを割り込み終了検出部のアドレスに書き換える。
したがって、仮想計算機による割り込み処理が終了すると、割り込み終了検出部により割り込み処理が終了したことが検出されるので、割り込み処理が終了したことを確実に検知することができる。
また、上記の仮想計算機制御装置において、周辺装置から出力される割り込み要求が解除されたことを検知し、前記割り込み制御部へ割り込みを発生させる割り込みネゲート検知部をさらに備えることが好ましい。
この構成によれば、割り込みネゲート検知部は、周辺装置から出力される割り込み要求が解除されたことを検知し、割り込み制御部へ割り込みを発生させるので、割り込み処理が終了したことをハードウェア的に検知することができ、割り込み処理が終了したことを確実に検知することができる。
本発明の他の局面に係る仮想計算機制御プログラムは、CPU上で動作する複数の仮想計算機の切り替えを制御する仮想計算機制御部と、発生した割り込みの優先度を示す割り込みレベルに基づいて、前記仮想計算機制御部への割り込みの通知を制御する割り込み制御部としてコンピュータを機能させ、前記仮想計算機制御部は、前記割り込み制御部から通知された割り込みの種別を判定する第1の割り込み種別判定部と、前記第1の割り込み種別判定部によって割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値を保存する割り込み復帰先保存部と、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を第1の割り込みマスクレベルとして予め記憶する割り込みマスクレベル設定テーブルと、仮想計算機による割り込み処理が終了した場合、前記割り込みマスクレベル設定テーブルの中から、仮想計算機が次に実行する処理に対応する第1の割り込みマスクレベルを前記割り込み制御部に通知する第1の割り込みマスクレベル設定部と、前記割り込み制御部における割り込みレベルを最新の状態に更新するよう前記割り込み制御部に要求する更新部とを含み、前記割り込み制御部は、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している前記割り込みレベルの内の最も優先度の高い割り込みレベルを第2の割り込みマスクレベルとして保存する割り込みレベル保存部と、前記第1の割り込みマスクレベル設定部によって通知された前記第1の割り込みマスクレベルを割り込みレベルとして前記割り込みレベル保存部に設定する第2の割り込みマスクレベル設定部と、新規に発生した割り込みを受け取り、前記新規に発生した割り込みの種別を判定し、判定した割り込み種別に対応する割り込みレベルを前記割り込みレベル保存部に設定する第2の割り込み種別判定部と、前記割り込みレベル保存部に保存されている前記第2の割り込みマスクレベルと、前記第2の割り込み種別判定部から通知される新規に発生した割り込みの割り込みレベルとを比較し、新規に発生した割り込みの割り込みレベルが前記割り込みレベル保存部に保存されている前記第2の割り込みマスクレベルより高い場合、前記仮想計算機制御部へ割り込みを通知する優先度判定部とを含む。
この構成によれば、仮想計算機制御部は、CPU上で動作する複数の仮想計算機の切り替えを制御し、割り込み制御部は、発生した割り込みの優先度を示す割り込みレベルに基づいて、仮想計算機制御部への割り込みの通知を制御する。割り込み制御部から通知された割り込みの種別が判定され、割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値が保存される。割り込みマスクレベル設定テーブルは、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を第1の割り込みマスクレベルとして予め記憶している。仮想計算機による割り込み処理が終了した場合、割り込みマスクレベル設定テーブルの中から、仮想計算機が次に実行する処理に対応する第1の割り込みマスクレベルが割り込み制御部に通知される。また、割り込み制御部における割り込みレベルを最新の状態に更新するよう割り込み制御部に要求される。割り込みレベル保存部は、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している割り込みレベルの内の最も優先度の高い割り込みレベルを第2の割り込みマスクレベルとして保存する。通知された第1の割り込みマスクレベルが割り込みレベルとして割り込みレベル保存部に設定される。新規に発生した割り込みが受け取られ、新規に発生した割り込みの種別が判定され、判定された割り込み種別に対応する割り込みレベルが割り込みレベル保存部に設定される。割り込みレベル保存部に保存されている第2の割り込みマスクレベルと、第2の割り込み種別判定部から通知される新規に発生した割り込みの割り込みレベルとが比較され、新規に発生した割り込みの割り込みレベルが割り込みレベル保存部に保存されている第2の割り込みマスクレベルより高い場合、仮想計算機制御部へ割り込みが通知される。
したがって、仮想計算機の割り込み処理が終了したタイミングで、割り込み制御部において割り込みをマスクするための優先度を更新することにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、仮想計算機の切り替えを適切に制御することができる。
本発明の他の局面に係る仮想計算機制御回路は、CPU上で動作する複数の仮想計算機の切り替えを制御する仮想計算機制御回路と、発生した割り込みの優先度を示す割り込みレベルに基づいて、前記仮想計算機制御回路への割り込みの通知を制御する割り込み制御回路とを備え、前記仮想計算機制御回路は、前記割り込み制御回路から通知された割り込みの種別を判定する第1の割り込み種別判定回路と、前記第1の割り込み種別判定回路によって割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値を保存する割り込み復帰先保存回路と、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を第1の割り込みマスクレベルとして予め記憶する割り込みマスクレベル設定テーブルと、仮想計算機による割り込み処理が終了した場合、前記割り込みマスクレベル設定テーブルの中から、仮想計算機が次に実行する処理に対応する第1の割り込みマスクレベルを前記割り込み制御回路に通知する第1の割り込みマスクレベル設定回路と、前記割り込み制御回路における割り込みレベルを最新の状態に更新するよう前記割り込み制御回路に要求する更新回路とを含み、前記割り込み制御回路は、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している前記割り込みレベルの内の最も優先度の高い割り込みレベルを第2の割り込みマスクレベルとして保存する割り込みレベル保存回路と、前記第1の割り込みマスクレベル設定回路によって通知された前記第1の割り込みマスクレベルを割り込みレベルとして前記割り込みレベル保存回路に設定する第2の割り込みマスクレベル設定回路と、新規に発生した割り込みを受け取り、前記新規に発生した割り込みの種別を判定し、判定した割り込み種別に対応する割り込みレベルを前記割り込みレベル保存回路に設定する第2の割り込み種別判定回路と、前記割り込みレベル保存回路に保存されている前記第2の割り込みマスクレベルと、前記第2の割り込み種別判定回路から通知される新規に発生した割り込みの割り込みレベルとを比較し、新規に発生した割り込みの割り込みレベルが前記割り込みレベル保存回路に保存されている前記第2の割り込みマスクレベルより高い場合、前記仮想計算機制御回路へ割り込みを通知する優先度判定回路とを含む。
この構成によれば、仮想計算機制御回路は、CPU上で動作する複数の仮想計算機の切り替えを制御し、割り込み制御回路は、発生した割り込みの優先度を示す割り込みレベルに基づいて、仮想計算機制御回路への割り込みの通知を制御する。割り込み制御回路から通知された割り込みの種別が判定され、割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値が保存される。割り込みマスクレベル設定テーブルは、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を第1の割り込みマスクレベルとして予め記憶している。仮想計算機による割り込み処理が終了した場合、割り込みマスクレベル設定テーブルの中から、仮想計算機が次に実行する処理に対応する第1の割り込みマスクレベルが割り込み制御回路に通知される。また、割り込み制御回路における割り込みレベルを最新の状態に更新するよう割り込み制御回路に要求される。割り込みレベル保存回路は、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している割り込みレベルの内の最も優先度の高い割り込みレベルを第2の割り込みマスクレベルとして保存する。通知された第1の割り込みマスクレベルが割り込みレベルとして割り込みレベル保存回路に設定される。新規に発生した割り込みが受け取られ、新規に発生した割り込みの種別が判定され、判定された割り込み種別に対応する割り込みレベルが割り込みレベル保存回路に設定される。割り込みレベル保存回路に保存されている第2の割り込みマスクレベルと、第2の割り込み種別判定回路から通知される新規に発生した割り込みの割り込みレベルとが比較され、新規に発生した割り込みの割り込みレベルが割り込みレベル保存回路に保存されている第2の割り込みマスクレベルより高い場合、仮想計算機制御回路へ割り込みが通知される。
したがって、仮想計算機の割り込み処理が終了したタイミングで、割り込み制御回路において割り込みをマスクするための優先度を更新することにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、仮想計算機の切り替えを適切に制御することができる。
本発明の他の局面に係る仮想計算機制御方法は、発生した割り込みの優先度を示す割り込みレベルに基づいて、割り込みの通知を制御する割り込み制御部から通知された割り込みの種別を判定する第1の割り込み種別判定ステップと、前記第1の割り込み種別判定ステップにおいて割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値を保存する割り込み復帰先保存ステップと、仮想計算機による割り込み処理が終了した場合、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を第1の割り込みマスクレベルとして予め記憶する割り込みマスクレベル設定テーブルの中から、仮想計算機が次に実行する処理に対応する第1の割り込みマスクレベルを前記割り込み制御部に通知する第1の割り込みマスクレベル設定ステップと、前記割り込み制御部における割り込みレベルを最新の状態に更新するよう前記割り込み制御部に要求する更新ステップと、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している前記割り込みレベルの内の最も優先度の高い割り込みレベルを第2の割り込みマスクレベルとして割り込みレベル保存部に保存する割り込みレベル保存ステップと、前記第1の割り込みマスクレベル設定ステップにおいて通知された前記第1の割り込みマスクレベルを割り込みレベルとして前記割り込みレベル保存部に設定する第2の割り込みマスクレベル設定ステップと、新規に発生した割り込みを受け取り、前記新規に発生した割り込みの種別を判定し、判定した割り込み種別に対応する割り込みレベルを前記割り込みレベル保存部に設定する第2の割り込み種別判定ステップと、前記割り込みレベル保存部に保存されている前記第2の割り込みマスクレベルと、前記第2の割り込み種別判定部から通知される新規に発生した割り込みの割り込みレベルとを比較し、新規に発生した割り込みの割り込みレベルが前記割り込みレベル保存部に保存されている前記第2の割り込みマスクレベルより高い場合、CPU上で動作する複数の仮想計算機の切り替えを制御する仮想計算機制御部へ割り込みを通知する優先度判定ステップとを含む。
この構成によれば、仮想計算機制御部は、CPU上で動作する複数の仮想計算機の切り替えを制御し、割り込み制御部は、発生した割り込みの優先度を示す割り込みレベルに基づいて、仮想計算機制御部への割り込みの通知を制御する。割り込み制御部から通知された割り込みの種別が判定され、割り込みの種別を判定した結果、発生した割り込みが現在実行中の仮想計算機に対する割り込みであると判定された場合、割り込み発生直前のプログラムカウンタ値が保存される。割り込みマスクレベル設定テーブルは、各仮想計算機において実行される割り込み処理の優先度及び各仮想計算機において実行されるタスク処理の優先度を第1の割り込みマスクレベルとして予め記憶している。仮想計算機による割り込み処理が終了した場合、割り込みマスクレベル設定テーブルの中から、仮想計算機が次に実行する処理に対応する第1の割り込みマスクレベルが割り込み制御部に通知される。また、割り込み制御部における割り込みレベルを最新の状態に更新するよう割り込み制御部に要求される。割り込みレベル保存部は、発生した割り込みの優先度を示す割り込みレベルを1つ以上保存し、保存している割り込みレベルの内の最も優先度の高い割り込みレベルを第2の割り込みマスクレベルとして保存する。通知された第1の割り込みマスクレベルが割り込みレベルとして割り込みレベル保存部に設定される。新規に発生した割り込みが受け取られ、新規に発生した割り込みの種別が判定され、判定された割り込み種別に対応する割り込みレベルが割り込みレベル保存部に設定される。割り込みレベル保存部に保存されている第2の割り込みマスクレベルと、第2の割り込み種別判定部から通知される新規に発生した割り込みの割り込みレベルとが比較され、新規に発生した割り込みの割り込みレベルが割り込みレベル保存部に保存されている第2の割り込みマスクレベルより高い場合、仮想計算機制御部へ割り込みが通知される。
したがって、仮想計算機の割り込み処理が終了したタイミングで、割り込み制御部において割り込みをマスクするための優先度を更新することにより、タスクの優先度を通知することができない仮想計算機であっても、タスクの優先度に応じて仮想計算機の優先度を決定し、仮想計算機の切り替えを適切に制御することができる。
なお、発明を実施するための形態の項においてなされた具体的な実施態様または実施例は、あくまでも、本発明の技術内容を明らかにするものであって、そのような具体例にのみ限定して狭義に解釈されるべきものではなく、本発明の精神と特許請求事項との範囲内で、種々変更して実施することができるものである。