(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンを稼動させる仮想制御部と、
割込み要求の宛先となる仮想マシンを特定する割込み制御部と、を有し、
前記仮想制御部は、
前記複数の仮想マシン各々に対応付けて割込みプログラムが格納される格納先の情報を記憶する記憶部から、前記割込み制御部が特定した仮想マシンに対応付けられる割込みプログラムの格納先を特定する特定部と、
前記特定部によって特定された格納先から割込みプログラムを読み出して実行する際に、割込み要求の宛先となる前記仮想マシンにプロセッサの実行権が割り当てられているか否かを判定し、判定結果に基づき割込み処理を実行する実行制御部と
を有することを特徴とする情報処理装置。
【請求項２】
前記割込み制御部は、前記仮想制御部によって仮想マシンが稼動した場合に、稼動した仮想マシンを識別するマシン識別子と、当該仮想マシンによって使用される外部デバイスを識別するデバイス識別子と対応付けて識別子記憶部に格納し、
前記割込み要求が発生した場合に、前記割込み要求を発生させたデバイス識別子に対応するマシン識別子を前記識別子記憶部から特定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記識別子記憶部は、前記複数の仮想マシン各々にさらに対応付けて、前記仮想マシンの動作モードが格納されるアドレス情報を記憶し、
前記特定部は、前記仮想マシンに対応付けられるアドレス情報をさらに特定し、
前記実行制御部は、前記特定部によって特定されたアドレス情報から動作モードを読出し、読み出した動作モードで前記割込みプログラムを実行することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記実行制御部は、前記割込み制御部によって特定された仮想マシンにプロセッサの実行権が与えられていない場合には、前記割込みプログラムを読み出して実行し、前記割込み制御部によって特定された仮想マシンにプロセッサの実行権が与えられている場合には、前記割込み要求を仮想割込み要求に変換して前記割込み要求の宛先となる仮想マシンに出力することを特徴とする請求項１から３のいずれか一つに記載の情報処理装置。
【請求項５】
前記記憶部は、前記複数の仮想マシン各々に対応付けて、ハードウェア割込みに対して実行される割込みプログラムの格納先の情報を記憶し、
前記実行制御部は、前記特定部によって格納先が特定されたハードウェア割込みについては、特定された格納先から割込みプログラムを読み出して実行し、前記特定部によって格納先が特定されなかった割込み要求については、前記割込み要求を仮想割込みに変換して前記割込み要求の宛先となる仮想マシンに出力することを特徴とする請求項１から３のいずれか一つに記載の情報処理装置。
【請求項６】
情報処理装置が、
複数の仮想マシン各々に対応付けて割込みプログラムが格納される格納先の情報を記憶する記憶部から、割込み要求の宛先となる仮想マシンを特定する割込み制御部が特定した仮想マシンに対応付けられる割込みプログラムの格納先を特定し、
前記特定した格納先から割込みプログラムを読み出して実行する際に、割込み要求の宛先となる前記仮想マシンにプロセッサの実行権が割り当てられているか否かを判定し、判定結果に基づき割込み処理を実行する
処理を実行することを特徴とする割込み制御方法。
【請求項７】
情報処理装置に、
複数の仮想マシン各々に対応付けて割込みプログラムが格納される格納先の情報を記憶する記憶部から、割込み要求の宛先となる仮想マシンを特定する割込み制御部が特定した仮想マシンに対応付けられる割込みプログラムの格納先を特定し、
前記特定した格納先から割込みプログラムを読み出して実行する際に、割込み要求の宛先となる前記仮想マシンにプロセッサの実行権が割り当てられているか否かを判定し、判定結果に基づき割込み処理を実行する
処理を実行させることを特徴とする割込み制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、割込み制御方法および割込み制御プログラムに関する。
【背景技術】
【０００２】
従来、情報処理装置などの物理サーバ上で、ＶＭ（Virtual  Machine：仮想マシン）といわれる仮想的なサーバを動作させるサーバ仮想化技術が知られている。物理サーバでは、ＶＭの生成などＶＭに関する各種制御を実施するＶＭＭ（Virtual  Machine  Monitor）などと呼ばれるハイパーバイザを動作させている。
【０００３】
このようなサーバ仮想化技術を適用した物理サーバで、ＶＭに対する外部割込み要求が発生した場合、割込みコントローラがハイパーバイザに外部割込み要求を通知する。ハイパーバイザは、外部割込み要求を仮想割込み要求に変換し、割込みの宛先となるＶＭに通知する。仮想割込み要求が通知されたＶＭは、割込み処理を実行した後、実行が終了したことをハイパーバイザに通知する。そして、ハイパーバイザが、割込みが終了したことを割込みコントローラに通知して、割込み処理が終了する。
【０００４】
また、ＶＭに対する割込みを実行する技術としては、例えば、ＶＭが動作する際に、ハイパーバイザの割込みベクタテーブルのエントリをＶＭの割込み処理プログラムに書き換える技術が知られている。また、ＶＭの起動目的が割込みである場合に、割込み内容に適した情報をスタックに格納し、格納した情報に適した処理を実行するＶＭ内の割込みハンドラに制御を移す技術が知られている。また、性能モニタリング対象とするＶＭに実行権が与えられた場合に、当該ＶＭの割込みハンドラへのリンクをハイパーバイザの割込テーブルに登録する。そして、割込みが発生すると、割込テーブルにしたがって割込みハンドラを起動する技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６１−２０６０４３号公報
【特許文献２】特開昭６１−１８４６４３号公報
【特許文献３】特開２０１０−１５２４５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、ＣＰＵ（Central  Processing  Unit）が割り当てられていないＶＭへの割込み要求が発生した場合に、該当ＶＭにＣＰＵが割り当てられるまで割込み要求を処理できない状態となるので、割込み処理が効率的ではないという問題がある。
【０００７】
例えば、物理サーバで複数のＶＭが稼動している状況では、スケジューラ等によってＣＰＵが割り当てられた動作中の１つのＶＭが処理を実行できる。つまり、ＣＰＵの実行権を有するＶＭが各種処理を実行する。したがって、ＶＭ１、ＶＭ２、ＶＭ３が稼動している状況で、ＶＭ１にＣＰＵが割り当てられている場合には、ＶＭ１が実行中であり、ＶＭ２とＶＭ３は、起動はしているものの処理を実行できない実行待機中となる。
【０００８】
したがって、従来技術を用いた場合でも、実行待機中のＶＭに対して割込み要求が発生した場合には、該当ＶＭが実行中に遷移するまで割込み処理が実行できない。このように、割込み要求の宛先となるＶＭの状態によっては、割込み処理を完了させるまでに時間がかかり、割込み処理が効率的に実行できない場合がある。
【０００９】
１つの側面では、割込み処理を効率よく実行できる情報処理装置、割込み制御方法および割込み制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の案では、情報処理装置は、複数の仮想マシンを稼動させる仮想制御部と、割込み要求の宛先となる仮想マシンを特定する割込み制御部と、を有する。前記仮想制御部は、前記複数の仮想マシン各々に対応付けて割込みプログラムが格納される格納先の情報を記憶する記憶部から、前記割込み制御部が特定した仮想マシンに対応付けられる割込みプログラムの格納先を特定する特定部を有する。また、仮想制御部は、前記特定部によって特定された格納先から割込みプログラムを読み出して実行する実行制御部を有する。
【発明の効果】
【００１１】
割込み処理を効率よく実行できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る情報処理装置を説明する図である。
【図２】図２は、実施例１に係る情報処理装置が割込み処理を実行する例を説明する図である。
【図３】図３は、割込み処理の待ちが発生する例を示す図である。
【図４】図４は、割込み処理を効率的に実行する例を示す図である。
【図５】図５は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。
【図６】図６は、ゲストＩＤ管理テーブルに記憶される情報の例を示す図である。
【図７】図７は、割込みハンドラ管理テーブルに記憶される情報の例を示す図である。
【図８】図８は、実施例２に係る情報処理装置の処理シーケンスをＮＩＣデバイスを例にして示した図である。
【図９】図９は、実施例２に係る情報処理装置の処理シーケンスをＨＤＤデバイスを例にして示した図である。
【図１０】図１０は、割込み要求の宛先のゲストにＣＰＵが割り当てられている場合の処理シーケンス図である。
【図１１】図１１は、プロテクトモードを記憶するゲストＩＤ管理テーブルの例を示す図である。
【図１２】図１２は、割込み種別によって実行方式を変更することを説明する図である。
【図１３】図１３は、割込み制御プログラムを実行するコンピュータのハードウェア構成の例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示する情報処理装置、割込み制御方法および割込み制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１４】
図１は、実施例１に係る情報処理装置を説明する図である。図１に示す情報処理装置１０は、サーバ仮想化技術を適用したサーバであり、複数の仮想マシン（ＶＭ：Virtual  Machine）を動作させる。なお、ここでは情報処理装置１０がサーバである例で説明するが、これに限定されるものではなく、パーソナルコンピュータなど他の装置であってもよい。また、ここで説明するＶＭの数等についても、説明するものに限定されるものではない。
【００１５】
図１に示すように、情報処理装置１０は、割込み制御部１１と仮想制御部１２とを有する。また、情報処理装置１０は、仮想マシンとして、ゲストOperating  System（Ａ）「以下、ゲストＯＳ（Ａ）などと表記する」とゲストＯＳ（Ｂ）とゲストＯＳ（Ｃ）とを動作させている。ゲストＯＳ（Ａ）は、割込みプログラム（Ａ）を保持し、ゲストＯＳ（Ｂ）は、割込みプログラム（Ｂ）を保持し、ゲストＯＳ（Ｃ）は、割込みプログラム（Ｃ）を保持する。
【００１６】
割込み制御部１１は、割込み要求が発生した場合に、割込み要求の宛先となる仮想マシンを特定する処理部である。仮想制御部１２は、記憶部１２ａと特定部１２ｂと実行制御部１２ｃとを有し、これらによって割込み制御部１１から通知された割込みを処理する処理部である。なお、記憶部１２ａは、仮想制御部１２ではなく、情報処理装置１０内に他の処理部等が有していてもよい。
【００１７】
記憶部１２ａは、複数の仮想マシン各々に対応付けて、割込みプログラムが格納される格納先の情報を記憶する。特定部１２ｂは、割込み制御部１１が特定した仮想マシンに対応付けられる割込みプログラムの格納先を記憶部１２ａから特定する。実行制御部１２ｃは、特定部１２ｂによって特定された格納先から割込みプログラムを読み出して実行する。
【００１８】
このように、情報処理装置１０の割込み制御部１１は、外部割込み等を検出した場合に、外部割込みの宛先となるゲストＯＳを特定する。仮想制御部１２は、外部割込みの宛先となるゲストＯＳの割込みプログラムを読出し、当該ゲストＯＳを代行して実行する。ここで、図２を用いて、具体的な例を説明する。図２は、実施例１に係る情報処理装置が割込み処理を実行する例を説明する図である。
【００１９】
図２に示すように、割込み制御部１１は、外部割込みを検出すると、外部割込みの宛先となるゲストＯＳ（Ａ）を特定する。仮想制御部１２の特定部１２ｂは、ゲストＯＳ（Ａ）の割込みプログラムが格納されるアドレス情報を記憶部１２ａから特定する。実行制御部１２ｃは、特定したアドレス情報からゲストＯＳ（Ａ）の割込みプログラム（Ａ）を読み出して、仮想制御部１２内で実行する。
【００２０】
つまり、仮想制御部１２は、外部割込みの宛先であるゲストＯＳに代わって、割込みプログラムを実行する。したがって、情報処理装置１０は、該当ゲストＯＳにＣＰＵが割当てられるまで割込み処理を待機させることがなく、割込み処理を効率的に実行することができる。
【００２１】
例えば、図３は、割込み処理の待ちが発生する例を示す図である。図３は、時間の変化に伴って、ゲストＯＳ（Ａ）、ゲストＯＳ（Ｂ）、ゲストＯＳ（Ｃ）に順番にＣＰＵが割り当てられることを図示している。この場合に、仮想制御部１２は、時刻ｔ０でゲストＯＳ（Ａ）への割込み（Ａ）が発生すると、時刻ｔ０の時点ではゲストＯＳ（Ａ）にＣＰＵが割り当てられているので、割込み（Ａ）を仮想割込み（Ａ）に変換してゲストＯＳ（Ａ）に通知する。
【００２２】
そして、仮想制御部１２は、時刻ｔ１でゲストＯＳ（Ｃ）への割込み（Ｃ）が発生した場合、時刻ｔ１の時点ではゲストＯＳ（Ｂ）にＣＰＵが割り当てられているので、割込み（Ｃ）を待機させる。その後、仮想制御部１２は、ゲストＯＳ（Ｃ）にＣＰＵが割り当てられたｔ２以降に、割込み（Ｃ）を仮想割込み（Ｃ）に変換してゲストＯＳ（Ｃ）に通知して割込み（Ｃ）を実行させる。つまり、割込み（Ｃ）は、時刻ｔ１から時刻ｔ２まで待機させられる。このように、各ゲストで割込みを実行させる場合、ＣＰＵの割当て状況によっては割込みを待機させる時間が発生することがある。
【００２３】
一方、図４は、割込み処理を効率的に実行する例を示す図である。図４は、図１に示した情報処理装置１０が実行する割込み処理を説明する図であり、ＣＰＵの割当等については図３と同様とする。ここで、図４に示すように、時刻ｔ０でゲストＯＳ（Ａ）の割込み（Ａ）が発生したとする。この場合、仮想制御部１２は、ゲストＯＳ（Ａ）にＣＰＵが割り当てられているが割込み（Ａ）を仮想割込みに変換することなく、ゲストＯＳ（Ａ）の割込みプログラム（Ａ）を読み出して実行し、割込み（Ａ）を処理する。
【００２４】
そして、仮想制御部１２は、時刻ｔ１でゲストＯＳ（Ｃ）の割込み（Ｃ）が発生した場合、時刻ｔ１の時点ではゲストＯＳ（Ｂ）にＣＰＵが割り当てられているが、ゲストＯＳ（Ｃ）の割込みプログラム（Ｃ）を読み出して実行し、割込み（Ｃ）を処理する。このように、情報処理装置１０は、図３と比較してもわかるように、発生した割込みを待機させることなく、順次実行することができるので、割込み処理を効率よく実行できる。
【実施例２】
【００２５】
次に、実施例２に係る情報処理装置について説明する。実施例２では、実施例２に係る情報処理装置の構成、処理の流れ等について説明する。
【００２６】
［情報処理装置の構成］
図５は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。図５に示すように、情報処理装置２０は、仮想領域２０ａと通信インタフェース２０ｂと入出力インタフェース２０ｃと割込みコントローラ２２と制御部２５とを有する。なお、ここで図示した処理部は、あくまで例示であり、これに限定されるものではなく、例えば、メモリやハードディスクなどの記憶装置、ディスプレイなどの表示部、マウスなどの入力部等を有していてもよい。
【００２７】
仮想領域２０ａは、制御部２５のハイパーバイザ２６によって管理される領域であり、任意の数のＶＭを動作させることができる。図５では、ＶＭとして、ゲストＯＳ（Ａ）とゲストＯＳ（Ｂ）とゲストＯＳ（Ｃ）とが動作している。ここでは、ゲストＯＳ（Ａ）には、ゲストＯＳ（Ａ）を識別する識別子としてゲストＩＤ＝０が割り当てられ、ゲストＯＳ（Ｂ）には、ゲストＯＳ（Ｂ）を識別する識別子としてゲストＩＤ＝１が割り当てられている。また、ゲストＯＳ（Ｃ）には、ゲストＯＳ（Ｃ）を識別する識別子としてゲストＩＤ＝２が割り当てられている。また、各ゲストＯＳは、割込み要因に対応付けて、割込み処理を実行する割込みハンドラを保持する。
【００２８】
この仮想領域２０ａで動作する各ゲストＯＳには、ハイパーバイザ２６によって仮想プロセッサと仮想メモリとが割り当てられ、各ゲストＯＳは、この仮想プロセッサと仮想メモリによりＶＭとして動作し、各種処理を実行する。なお、仮想メモリは、情報処理装置２０のメモリにおける所定領域をゲストＯＳが使用するメモリとして割り当てることで実現された仮想的なメモリである。仮想プロセッサは、情報処理装置２０のプロセッサにおける所定処理能力をゲストＯＳが使用するプロセッサとして割り当てることで実現された仮想的なプロセッサである。
【００２９】
通信インタフェース２０ｂは、例えばＮＩＣ（Network  Interface  Card）デバイスなどのインタエースであり、情報処理装置２０と他の装置との間の通信を制御する。例えば、通信インタフェース２０ｂは、パケットやフレームなどのデータを他の装置から受信し、また、情報処理装置２０内で処理されたデータを他の装置に送信する。
【００３０】
入出力インタフェース２０ｃは、ディスプレイ、マウス、キーボード、ＨＤＤ（Hard  Disk  Drive）デバイスなどとの通信を制御する。例えば、入出力インタフェース２０ｃは、マウスやキーボードを介して、情報処理装置２０への入力を受け付ける。また、入出力インタフェース２０ｃは、情報処理装置２０の処理結果等をディスプレイに表示出力する。また、入出力インタフェース２０ｃは、各ゲストＯＳから送信された書き込み要求をＨＤＤデバイスなどの記憶装置に対して実行し、また、ＨＤＤデバイスから読み出したデータをゲストに出力する。
【００３１】
割込みコントローラ２２は、割込みターゲットレジスタ２２ａとゲストＩＤ管理テーブル２２ｂと格納制御部２２ｃと割込み先特定部２２ｄとを有し、これらによって割込みに関する処理を実行する処理部である。
【００３２】
割込みターゲットレジスタ２２ａは、割込みの宛先となるゲストＯＳのゲストＩＤを格納する。なお、ゲストＩＤは、仮想領域で動作するゲストＯＳを識別する識別子である。また、ここで記憶される情報は、割込み先特定部２２ｄによって更新される。また、割込みコントローラ２２またはハイパーバイザ２６は、割込み処理が完了した場合に、当該割込み処理を実行したゲストＩＤを削除してもよい。
【００３３】
ゲストＩＤ管理テーブル２２ｂは、ゲストＯＳ各々が使用するデバイスの情報を記憶する記憶部である。また、ここで記憶される情報は、管理者等によって格納されてもよく、格納制御部２２ｃによって格納されてもよい。図６は、ゲストＩＤ管理テーブルに記憶される情報の例を示す図である。図６に示すように、ゲストＩＤ管理テーブル２２ｂは、「ゲストＩＤ、デバイスＩＤ」を対応付けて記憶する。ここで記憶される「ゲストＩＤ」は、仮想領域２０ａで稼動する各ゲストＯＳを識別する識別子であり、「デバイスＩＤ」は、ゲストＯＳが使用するデバイスを識別する識別子であり、例えばＨＤＤやＮＩＣなどを識別する識別子である。
【００３４】
図６の場合、ゲストＩＤ＝０が割り当てられているゲストＯＳ（Ａ）は、デバイスＩＤがｄｅｖＡのデバイスを使用する。同様に、ゲストＩＤ＝１が割り当てられているゲストＯＳ（Ｂ）は、デバイスＩＤがｄｅｖＢのデバイスを使用する。また、ゲストＩＤ＝２が割り当てられているゲストＯＳ（Ｃ）は、デバイスＩＤがｄｅｖＣのデバイスとデバイスＩＤがｄｅｖＤのデバイスとを使用する。
【００３５】
なお、デバイスＩＤとしては、様々な情報を用いることもできる。例えば、デバイスがＮＩＣデバイスである場合には、「ＡＡ：ＡＡ：ＡＡ：ＡＡ：ＡＡ：ＡＡ」などのようにＮＩＣデバイスのＭＡＣアドレスをゲストＩＤ管理テーブル２２ｂに格納してもよい。また、デバイスがＨＤＤデバイスなどである場合には、「１ｏ９０９７ｈｉ−ｆｕｊｉｔｓｕ・・・」などのようにＨＤＤデバイスのＵＵＩＤ（Universally  Unique  Identifier）やデバイス名をゲストＩＤ管理テーブル２２ｂに格納してもよい。
【００３６】
格納制御部２２ｃは、仮想領域２０ａでゲストＯＳが稼動した場合に、稼動したゲストＯＳを識別するゲストＩＤと、当該ゲストＯＳによって使用されるデバイスのデバイスＩＤとを対応付けて、ゲストＩＤ管理テーブル２２ｂに格納する処理部である。例えば、格納制御部２２ｃは、新たな仮想マシンであるゲストＯＳ（Ｄ）が稼動した場合に、ゲストＯＳ（Ｄ）に割り当てられたゲストＩＤとゲストＯＳ（Ｄ）が使用するＮＩＣデバイスのデバイスＩＤとをオペレータ等から受信する。そして、格納制御部２２ｃは、受信したゲストＩＤとデバイスＩＤとを対応付けてゲストＩＤ管理テーブル２２ｂに格納する。
【００３７】
また、格納制御部２２ｃは、新たに稼動したゲストＯＳ（Ｄ）からＨＤＤデバイスへのアクセス要求が送信された場合に、このアクセス要求からゲストＩＤとデバイスＩＤとを抽出する。そして、格納制御部２２ｃは、抽出したゲストＩＤとデバイスＩＤとを対応付けてゲストＩＤ管理テーブル２２ｂに格納する。
【００３８】
割込み先特定部２２ｄは、割込み要求の宛先となる仮想マシンを特定する処理部である。例えば、割込み先特定部２２ｄは、通信インタフェース２０ｂにパケットが到着した場合に、パケット受信を要求する外部割込みが発生したと検出する。すると、割込み先特定部２２ｄは、当該パケットが到着したＮＩＣデバイスを特定する。そして、割込み先特定部２２ｄは、ＮＩＣデバイスのデバイスＩＤに対応付けられたゲストＩＤをゲストＩＤ管理テーブル２２ｂから特定する。続いて、割込み先特定部２２ｄは、特定したゲストＩＤを割込みターゲットレジスタ２２ａに格納し、パケット受信の外部割込み要求をハイパーバイザ２６に通知する。
【００３９】
また、割込み先特定部２２ｄは、ゲストＯＳから送信されたＤＭＡ（Direct  Memory  Access）転送の応答が入出力インタフェース２０ｃに到達すると、ＤＭＡ完了を通知する外部割込みが発生したと検出する。すると、割込み先特定部２２ｄは、ＤＭＡ完了通知から送信元のＨＤＤデバイスを特定する。そして、割込み先特定部２２ｄは、ＨＤＤデバイスに割り当てられているデバイスＩＤに対応付けられたゲストＩＤをゲストＩＤ管理テーブル２２ｂから特定する。続いて、割込み先特定部２２ｄは、特定したゲストＩＤを割込みターゲットレジスタ２２ａに格納し、ＤＭＡ完了通知の外部割込み要求をハイパーバイザ２６に通知する。
【００４０】
制御部２５は、処理制御部２５ａとハイパーバイザ２６とを有し、これらによって割込み処理を制御する処理部であり、例えばＣＰＵなどの電子回路である。なお、制御部２５は、内部メモリ等を有していてもよい。
【００４１】
処理制御部２５ａは、ゲストＯＳに関する処理以外の処理を実行する処理部である。例えば、処理制御部２５ａは、情報処理装置２０に搭載されるＯＳの起動停止、ハイパーバイザ２６の起動停止を実行する。
【００４２】
ハイパーバイザ２６は、割込みハンドラ管理テーブル２６ａとＣＰＵ割当部２６ｂと割込みハンドラ特定部２６ｃと割込み実行部２６ｄとを有し、これらによって、割込みコントローラ２２から通知された割込み要求を処理する処理部である。また、ハイパーバイザ２６は、各ゲストＯＳから送信されたパケットを宛先に送信したり、各ゲストＯＳから出力されたデバイスアクセス要求を該当デバイスに出力したりする。
【００４３】
割込みハンドラ管理テーブル２６ａは、複数のゲストＯＳ各々に対応付けて、割込みハンドラが格納される格納先の情報を記憶する記憶部である。図７は、割込みハンドラ管理テーブルに記憶される情報の例を示す図である。図７に示すように、割込みハンドラ管理テーブル２６ａは、「ゲストＩＤ、割込みベクタ、割込みハンドラ、ゲストページテーブル」を対応付けて記憶する。
【００４４】
ここで記憶される「ゲストＩＤ」は、仮想領域２０ａで稼動する各ゲストＯＳを識別する識別子であり、「割込みベクタ」は、割込みの要因を識別する識別子である。「割込みハンドラ」は、ゲストＯＳが使用する物理アドレスの形式、言い換えると、ハイパーバイザ２６によって提供される仮想アドレス空間のアドレス形式で格納され、割込みハンドラが格納される格納先の先頭アドレスを示す。「ゲストページテーブル」は、ゲストＯＳの仮想空間に変換するために使用するページテーブルであり、ゲストＯＳが保持している物理アドレス空間の先頭アドレス、つまり、ハイパーバイザ２６が提供する仮想アドレス空間の先頭アドレスを示す。
【００４５】
図７の場合、ゲストＩＤ＝０が割り当てられているゲストＯＳ（Ａ）に対して、割込みベクタが０である外部割込みが発生した場合に、ＰＴ０を用いて、ゲストＯＳ（Ａ）の物理アドレス「Handler＿0」を仮想アドレスに変換することを示す。この結果、ハイパーバイザ２６の割込み実行部２６ｄは、ゲストＯＳが管理するアドレス空間内で割込みハンドラを実行できる。同様に、ゲストＩＤ＝１が割り当てられているゲストＯＳ（Ｂ）に対して、割込みベクタが１である外部割込みが発生した場合に、ＰＴ１を用いて、ゲストＯＳ（Ｂ）の物理アドレス「Handler＿B」を仮想アドレスに変換することを示す。
【００４６】
また、割込みハンドラ管理テーブル２６ａは、さらに、ゲストＯＳが保持するＴＬＢ（Translation  Look-aside  Buffer）の先頭アドレスを対応付けて記憶することもできる。こうすることで、ハイパーバイザ２６は、ゲストＯＳの仮想アドレス空間内から割込みハンドラの格納先をより高速に特定することができる。
【００４７】
ＣＰＵ割当部２６ｂは、予め定められたスケジューラにしたがって、各ゲストＯＳにＣＰＵを割り与える処理部である。例えば、ＣＰＵ割当部２６ｂは、オペレータやハイパーバイザ等によって定められたスケジュールにしたがって、ゲストＯＳ（Ａ）からゲストＯＳ（Ｂ）にＣＰＵの実行権を移す。この結果、ゲストＯＳ（Ａ）は、実行権がない状態の実行待機中に遷移し、ゲストＯＳ（Ｂ）は、実行権を有する実行中に遷移する。
【００４８】
割込みハンドラ特定部２６ｃは、割込みコントローラ２２が特定したゲストＯＳに対応付けられる割込みハンドラの格納先を割込みハンドラ管理テーブル２６ａから特定する処理部である。例えば、割込みハンドラ特定部２６ｃは、パケット受信を要求する外部割込み要求を割込みコントローラ２２から受信する。続いて、割込みハンドラ特定部２６ｃは、割込みコントローラ２２の割込みターゲットレジスタ２２ａに格納されるゲストＩＤを取得する。つまり、割込みハンドラ特定部２６ｃは、パケット受信を要求する外部割込み要求の宛先を取得する。このとき、割込みハンドラ特定部２６ｃは、取得したゲストＩＤに対応するゲストＯＳを特定する。なお、ゲストＩＤとゲストＯＳの対応付けは、制御部２５の内部メモリや図示しないメモリ等の記憶装置に格納される。
【００４９】
そして、割込みハンドラ特定部２６ｃは、ＣＰＵ割当部２６ｂのＣＰＵ割当状況を取得し、パケット受信を要求する外部割込み要求の宛先となるゲストＯＳにＣＰＵが割り当てられているか否かを判定する。ＣＰＵが割り当てられている場合には、割込みハンドラ特定部２６ｃは、当該外部割込み要求を仮想割込みに変換し、割込み要求の宛先のゲストＯＳに、変換した仮想割込みを出力する。
【００５０】
一方、ＣＰＵが割り当てられていない場合には、割込みハンドラ特定部２６ｃは、当該外部割込みに対応する割込みベクタを特定する。例えば、割込みハンドラ特定部２６ｃは、割込み要求から割込みベクタを特定してもよく、割込み要求の種別と割込みベクタとを対応付けたテーブルを保持しておき、そのテーブルに基づいて特定してもよい。そして、割込みハンドラ特定部２６ｃは、割込みコントローラ２２から取得したゲストＩＤと特定した割込みベクタとの組み合わせに対応する、割込みハンドラとゲストページテーブルとを割込みハンドラ管理テーブル２６ａから読み出す。その後、割込みハンドラ特定部２６ｃは、読み出した割込みハンドラとゲストページテーブルとを割込み実行部２６ｄに出力する。
【００５１】
一例を挙げると、割込みハンドラ特定部２６ｃは、割込みベクタが０である外部割込みを割込みコントローラ２２から通知され、割込みターゲットレジスタ２２ａからゲストＩＤ＝０を取得したとする。そして、割込みハンドラ特定部２６ｃは、ゲストＩＤ＝０のゲストＯＳ（Ａ）にＣＰＵが割り当てられていると判定した場合、通知された外部割込みを仮想割込みに変換してゲストＯＳ（Ａ）に出力する。この結果、ゲストＯＳ（Ａ）が割込み処理を実行する。
【００５２】
一方、割込みハンドラ特定部２６ｃは、ゲストＩＤ＝０のゲストＯＳ（Ａ）にＣＰＵが割り当てられていないと判定した場合、ゲストＩＤ＝０と割込みベクタ＝０との組み合わせに対応するHandler＿0とＰＴ０とを割込みハンドラ管理テーブル２６ａから取得する。そして、割込みハンドラ特定部２６ｃは、割込みハンドラの物理アドレス「Handler＿0」とページテーブル「ＰＴ０」とを割込み実行部２６ｄに出力する。
【００５３】
割込み実行部２６ｄは、割込みハンドラ特定部２６ｃによって特定された格納先から割込みハンドラを読み出して実行する処理部である。例えば、割込み実行部２６ｄは、割込みハンドラ特定部２６ｃから物理アドレス「Handler＿0」とページテーブル「ＰＴ０」とを取得する。そして、割込み実行部２６ｄは、ページテーブル「ＰＴ０」を用いて、ゲストＯＳ（Ａ）が管理する物理アドレス空間の物理アドレス「Handler＿0」を、ゲストＯＳ（Ａ）が管理する仮想アドレス空間の仮想アドレスに変換する。その後、割込み実行部２６ｄは、変換した仮想アドレスから割込みハンドラを読み出して実行する。また、割込み実行部２６ｄは、割込みハンドラの実行が完了すると、割込みコントローラ２２または割込みを発生させた割込みコントローラに、完了通知である「ＥＯＩ（End  of  Interrupt）」を送信する。
【００５４】
［処理の流れ］
次に、図８から図１０を用いて、情報処理装置２０が実行する処理の流れを説明する。ここでは、図８を用いて、割込み要求の要求元がＮＩＣデバイスである例を説明し、図９を用いて、割込み要求の要求元がＨＤＤデバイスである例を説明し、図１０を用いて、割込み要求の宛先にＣＰＵが割り当てられている場合の例を説明する。
【００５５】
（ＮＩＣデバイスを用いた例）
図８は、実施例２に係る情報処理装置の処理シーケンスをＮＩＣデバイスを例にして示した図である。図８に示すように、オペレータ等によってゲストＯＳが仮想領域２０ａに作成される、または、ゲストＯＳが使用するＮＩＣデバイスが追加されると（Ｓ１０１とＳ１０２）、ハイパーバイザ２６は、Ｓ１０３を実行する。
【００５６】
すなわち、ハイパーバイザ２６は、ゲストＯＳが使用するまたは追加されたＮＩＣデバイスのＭＡＣアドレスの登録要求を割込みコントローラ２２に出力する（Ｓ１０３とＳ１０４）。このとき、ハイパーバイザ２６は、該当ゲストＯＳのゲストＩＤもあわせて割込みコントローラ２２に出力する。なお、ゲストＩＤは、オペレータが指定してもよく、ハイパーバイザが一意に割り与えてもよい。
【００５７】
そして、割込みコントローラ２２の格納制御部２２ｃは、該当するＮＩＣデバイスのＭＡＣアドレスと、ハイパーバイザ２６から通知されたゲストＩＤとを対応付けて、ゲストＩＤ管理テーブル２２ｂに格納する（Ｓ１０５とＳ１０６）。
【００５８】
その後、通信インタフェース２０ｂが有するＮＩＣデバイスにパケットが到着すると、通信インタフェース２０ｂは、パケット到着要求を割込みコントローラ２２に出力する（Ｓ１０７とＳ１０８）。すなわち、通信インタフェース２０ｂは、外部割込みを割込みコントローラ２２に通知する。
【００５９】
そして、割込みコントローラ２２の割込み先特定部２２ｄは、パケットが到着したＮＩＣデバイスのＭＡＣアドレスに対応付けられているゲストＩＤをゲストＩＤ管理テーブル２２ｂから特定する（Ｓ１０９からＳ１１１）。なお、割込み先特定部２２ｄは、パケットのヘッダ等に格納される宛先ＭＡＣアドレスを抽出してもよく、パケットが到着したＮＩＣデバイスから直接ＭＡＣアドレスを抽出してもよい。例えば物理的なＮＩＣデバイスを複数のゲストＯＳが共有している場合などには、宛先ＭＡＣアドレスからデバイスＩＤを抽出することができる。続いて、割込み先特定部２２ｄは、特定したゲストＩＤを割込みターゲットレジスタ２２ａに格納する（Ｓ１１２とＳ１１３）。その後、割込み先特定部２２ｄは、パケット到着要求言い換えると物理割込み要求をハイパーバイザ２６に送出する（Ｓ１１４とＳ１１５）。
【００６０】
一方、この間に、割込み先特定部２２ｄが特定したゲストＩＤを有するゲストＯＳが、ＣＰＵの割当から外れる（Ｓ１１６）。つまり、割込み要求の宛先ゲストＯＳがＣＰＵの実行権を有している状態から有さない状態に遷移したとする。
【００６１】
その後、ハイパーバイザ２６の割込みハンドラ特定部２６ｃは、割込みコントローラ２２から物理割込み要求を受信すると、割込みターゲットレジスタ２２ａを参照して、割込みの宛先となるゲストＩＤを特定する（Ｓ１１７とＳ１１８）。
【００６２】
続いて、割込みハンドラ特定部２６ｃは、ＣＰＵ割当部２６ｂの割当状況を確認し、特定されたゲストＩＤを有するゲストＯＳに、ＣＰＵが割り当てられていないことを検出する（Ｓ１１９）。
【００６３】
すると、割込みハンドラ特定部２６ｃは、割込みコントローラ２２から送出されたパケット到着要求から割込みベクタを抽出し、Ｓ１２０を実行する。すなわち、割込みハンドラ特定部２６ｃは、割込みベクタとゲストＩＤとの組み合わせに対応付けられている割込みハンドラの先頭アドレスとページテーブルとを特定する。
【００６４】
その後、割込み実行部２６ｄは、割込みハンドラ特定部２６ｃが特定した割込みハンドラの先頭アドレスとページテーブルとを用いて、該当する割込みハンドラをゲストＯＳから読み出して実行する（Ｓ１２１）。そして、割込み実行部２６ｄは、割込みハンドラの実行が終了すると、つまり、パケット到着要求による外部割込みが完了すると、ＥＯＩを割込みコントローラに送信する（Ｓ１２２とＳ１２３）。
【００６５】
（ＨＤＤデバイスを用いた例）
図９は、実施例２に係る情報処理装置の処理シーケンスをＨＤＤデバイスを例にして示した図である。図９に示すように、ゲストＯＳは、ＨＤＤデバイスへのアクセス要求をハイパーバイザ２６に送信する（Ｓ２０１とＳ２０２）。ハイパーバイザ２６は、アクセス要求を受信すると、アクセス要求先のＨＤＤデバイスにデバイスＩＤを割り与え、割り与えたデバイスＩＤとともに当該デバイスＩＤへのアクセス要求を割込みコントローラに出力する（Ｓ２０３とＳ２０４）。
【００６６】
そして、割込みコントローラ２２の格納制御部２２ｃは、アクセス要求等から要求元のゲストＯＳのゲストＩＤを特定し、Ｓ２０５を実行する。すなわち、格納制御部２２ｃは、特定したゲストＩＤと、アクセス要求とともに受信したデバイスＩＤとを対応付けて、ゲストＩＤ管理テーブル２２ｂに格納する（Ｓ２０５とＳ２０６）。
【００６７】
その後、割込みコントローラ２２は、ＤＭＡ転送要求を該当ＨＤＤに送信する（Ｓ２０７とＳ２０８）。そして、ＨＤＤに対するＤＭＡ転送が完了すると、ＨＤＤデバイスは、割込みコントローラ２２に対してＤＭＡ完了割込み要求を送信する（Ｓ２０９とＳ２１０）。すなわち、入出力インタフェース２０ｃは、外部割込みを割込みコントローラ２２に通知する。
【００６８】
その後に実行されるＳ２１１からＳ２２３までの処理は、図８で説明したＳ１０９からＳ１２１と同様なので、詳細な説明を省略する。そして、割込み実行部２６ｄは、割込みハンドラの実行が終了すると、つまり、ＤＭＡ完了割込み要求による外部割込みが完了すると、ＥＯＩを割込みコントローラ２２に送信する（Ｓ２２４とＳ２２５）。
【００６９】
（実行権を有するゲストＯＳへの割込み処理）
図１０は、割込み要求の宛先のゲストにＣＰＵが割り当てられている場合の処理シーケンス図である。図１０に示すＳ３０１からＳ３１０までの処理は、図９で説明したＳ２０１からＳ２１０までと同様の処理なので、詳細な説明は省略する。
【００７０】
そして、割込みコントローラ２２の割込み先特定部２２ｄは、ＤＭＡ転送要求を送信したＨＤＤデバイスのデバイスＩＤに対応するゲストＩＤをゲストＩＤ管理テーブル２２ｂから特定する（Ｓ３１１からＳ３１３）。続いて、割込み先特定部２２ｄは、特定したゲストＩＤを割込みターゲットレジスタ２２ａに格納する（Ｓ３１４とＳ３１５）。その後、割込み先特定部２２ｄは、ＤＭＡ転送要求言い換えると物理割込み要求をハイパーバイザ２６に送出する（Ｓ３１６とＳ３１７）。
【００７１】
その後、ハイパーバイザ２６の割込みハンドラ特定部２６ｃは、割込みコントローラ２２から物理割込み要求を受信すると、割込みターゲットレジスタ２２ａを参照して、割込みの宛先となるゲストＩＤを特定する（Ｓ３１８とＳ３１９）。
【００７２】
続いて、割込みハンドラ特定部２６ｃは、ＣＰＵ割当部２６ｂの割当状況を確認し、特定されたゲストＩＤを有するゲストＯＳにＣＰＵが割り当てられていることを検出する（Ｓ３２０）。
【００７３】
そして、割込みハンドラ特定部２６ｃは、ＤＭＡ転送要求を仮想割込み要求に変換し（Ｓ３２１）、変換した仮想割込み要求を、特定したゲストＩＤを有するゲストＯＳに送出する（Ｓ３２２とＳ３２３）。その後、仮想割込み要求を受信したゲストＯＳは、割込み処理を実行し、割込み処理が完了すると、ＥＯＩを割込みコントローラに送信する（Ｓ３２４とＳ３２５）。
【００７４】
このように、実施例２に係る情報処理装置２０では、複数のゲストＯＳが動作している場合に、どのゲストＯＳ宛の割込みかを判定して、ゲストＯＳの割込みハンドラをハイパーバイザ２６が代行処理を行うことができる。また、情報処理装置２０は、ゲストＯＳにＣＰＵが割り当てるのを待たずに割込み処理を終了できるので、後続の割込みを待たせることなく随時処理することができる。また、情報処理装置２０は、仮想割込みを経由することなく、ゲストＯＳの割込みハンドラを直接呼び出すため、ゲストＯＳへの割込み処理を効率よく実行することができる。また、割込みハンドラでＥＯＩを発行することによって、次の割込みを待たせることなく処理することができる。
【実施例３】
【００７５】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００７６】
（プロテクトモード）
開示する情報処理装置は、実施例２で説明したゲストＩＤ管理テーブルに記憶される情報として、例えば仮想マシンの動作モードが格納されるアドレス情報をさらに記憶させてもよい。図１１は、プロテクトモードを記憶するゲストＩＤ管理テーブルの例を示す図である。図１１に示すように、ゲストＩＤ管理テーブルは、実施例２等で説明した「ゲストＩＤ、デバイスＩＤ」に対してさらに「プロテクトモード」を記憶する。ここで記憶される「プロテクトモード」は、ゲストＯＳが動作する動作モードの格納先を示す情報であり、例えばゲストＯＳが管理する仮想アドレス空間の先頭アドレスなどである。このプロテクトモードで示されるアドレスから読み出した動作モードは、例えば保護仮想アドレスモード（Protected  Virtual  Address  Mode）などとも呼ばれる。なお、このプロテクトモードは、割込みコントローラ２２がオペレータ等から受け付けて格納する。一例を挙げると、図８のＳ１０２のタイミングでハイパーバイザ２６がオペレータから受け付けた情報を、割込みコントローラ２２がゲストＩＤ管理テーブルに格納する。
【００７７】
割込みコントローラ２２の割込み先特定部２２ｄは、割込みの宛先のゲストＩＤを特定した際に、このプロテクトモードもあわせて特定し、割込みターゲットレジスタ２２ａに登録したり、ハイパーバイザ２６に通知したりする。そして、ハイパーバイザ２６の割込み実行部２６ｄは、割込みハンドラを実行する際に、このプロテクトモードを格納先から読み出して、各ゲストＯＳの動作モードで割込みハンドラを実行する。したがって、情報処理装置２０は、各ゲストの動作モードで割込みハンドラを実行することができるので、他のゲストＯＳのメモリ空間などの破壊を防止することができる。
【００７８】
（割込み種別）
開示する情報処理装置は、割込み種別によって、ハイパーバイザ２６が割込み処理を代行するか否かを判定することもできる。例えば、ハイパーバイザ２６の割込みハンドラ管理テーブル２６ａに、ゲストＯＳ各々に対応付けてハードウェア割込みに対して実行される割込みハンドラの格納先の情報を記憶させる。こうすることで、ハードウェア割込みをソフトウェア割込みより優先して実行することができる。
【００７９】
ハードウェア割込みとは、例えばイーサネット（登録商標）ドライバ処理、ＳＣＳＩ（Small  Computer  System  Interface）ホストアダプタドライバ処理、シリアルドライバ処理などの割込み処理である。このハードウェア割込みは、割込みが発生した場合になるべく早く実行を完了させて、実行時間が短くなることを要求される割込み処理である。また、ソフトウェア割込みとは、ＴＣＰ（Transmission  Control  Protocol）／ＩＰ（Internet  Protocol）プロトコル処理、ＳＣＳＩプロトコル処理、端末制御処理などの割込み処理である。このソフトウェア割込みは、ハードウェア割込みに比べて早急な実行完了を要求されない割込み処理である。
【００８０】
開示する情報処理装置のハイパーバイザは、ハードウェア割込みハンドラのコンテキストで実行し、ハードウェア割込みハンドラ内ではソフトウェア割込みの登録だけを実行し後からまとめて実行する。図１２は、割込み種別によって実行方式を変更することを説明する図である。
【００８１】
図１２に示すように、ハイパーバイザは、ハードウェア割込みを実行するハード割込みハンドラを保持し、このハード割込みハンドラは、ハードウェア割込みごとの割込みハンドラを早い割込みハンドラとして保持する。そして、ハイパーバイザは、ハードウェア割込みが発生した場合に、ハード割込みハンドラを起動して該当する早い割込みハンドラを呼び出し、ゲストＯＳを代行して割込み処理を実行する。その後、早い割込みハンドラは、実行が完了すると、割込みコントローラにＥＯＩを発行する。
【００８２】
また、ハイパーバイザは、ソフトウェア割込みが発生した場合に、ハード割込みハンドラを起動して仮想割込みに変換して、ゲストＯＳのカーネルに通知する。ゲストＯＳは、仮想割込みを受信すると、遅い割込みハンドラを実行する。なお、遅い割込みハンドラとは、例えばソフトウェア割込みを実行する割込みハンドラである。その後、ゲストＯＳの遅い割込みハンドラは、スケジューラ等によってゲストＯＳがプロセッサの実行権を獲得すると、ソフト割込みハンドラを実行して割込み処理を実行する。そして、ソフト割込みハンドラは、処理が完了すると、割込みコントローラにＥＯＩを発行する。
【００８３】
なお、上記例では、ハードウェア割込みとソフトウェア割込みとが別々の割込みとして発生した例を説明したが、１つの外部割込みについて、先にハードウェア割込みを実行してＥＯＩを発行し、後からソフトウェア割込みとしてまとめて実行することもできる。例えば、割込みコントローラは、ＮＩＣデバイスにパケットが到着すると、割込み要求を生成してハイパーバイザのハード割込みハンドラを起動する。ハイパーバイザのハード割込みハンドラは、当該外部割込みが遅い割込みに該当するので、外部割込みを仮想割込みに変換して、ゲストＯＳのカーネルが保持する遅い割込みハンドラに通知する。一方で、ハイパーバイザのハード割込みハンドラは、登録されたゲストの早い割込みハンドラを呼び出して、早い割込みハンドラの処理が終了するとＥＯＩを発行する。その後、ゲストＯＳの遅い割込みハンドラは、スケジューラ等によってゲストＯＳがプロセッサの実行権を獲得すると、ソフト割込みハンドラを実行して割込み処理を実行する。
【００８４】
（実行手法）
実施例２では、ゲストＯＳにプロセッサの実行権が与えられていない場合には、割込みハンドラを読み出して実行し、ゲストＯＳにプロセッサの実行権が与えられている場合には、外部割込みを仮想割込み要求に変換してゲストＯＳに出力する例を説明した。しかし、開示する情報処理装置の割込み実行手法はこれに限定されるものではない。例えば、情報処理装置のハイパーバイザは、割込み対象のゲストＯＳにプロセッサの実行権が与えられている場合でも、当該ゲストＯＳを代行して割込みハンドラを実行することもできる。
【００８５】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８７】
（プログラム）
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【００８８】
図１３は、割込み制御プログラムを実行するコンピュータのハードウェア構成の例を示す図である。図１３に示すように、コンピュータ１００は、ＣＰＵ１０２、入力装置１０３、出力装置１０４、通信インタフェース１０５、媒体読取装置１０６、ＨＤＤ（Hard  Disk  Drive）１０７、ＲＡＭ（Random  Access  Memory）１０８を有する。また、図１３に示した各部は、バス１０１で相互に接続される。
【００８９】
入力装置１０３は、マウスやキーボードであり、出力装置１０４は、ディスプレイなどであり、通信インタフェース１０５は、ＮＩＣなどのインタフェースである。ＨＤＤ１０７は、割込み制御プログラム１０７ａととともに、図５に示した各テーブルの情報を記憶する。記録媒体の例としてＨＤＤ１０７を例に挙げたが、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）、ＣＤ−ＲＯＭ等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記憶媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
【００９０】
ＣＰＵ１０２は、割込み制御プログラム１０７ａを読み出してＲＡＭ１０８に展開することで、図５等で説明した各機能を実行する割込み制御プロセス１０８ａを動作させる。すなわち、割込み制御プロセス１０８ａは、図５に記載した格納制御部２２ｃ、割込み先特定部２２ｄ、割込みハンドラ特定部２６ｃ、割込み実行部２６ｄと同様の機能を実行する。このようにコンピュータ１００は、プログラムを読み出して実行することで割込み制御方法を実行する情報処理装置として動作する。
【００９１】
例えば、コンピュータ１００は、媒体読取装置１０６によって記録媒体から割込み制御プログラム１０７ａを読み出し、読み出された割込み制御プログラム１０７ａを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ１００によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００９２】
１０  情報処理装置
１１  割込み制御部
１２  仮想制御部
１２ａ  記憶部
１２ｂ  特定部
１２ｃ  実行制御部
２０  情報処理装置
２０ａ  仮想領域
２０ｂ  通信インタフェース
２０ｃ  入出力インタフェース
２２  割込みコントローラ
２２ａ  割込みターゲットレジスタ
２２ｂ  ゲストＩＤ管理テーブル
２２ｃ  格納制御部
２２ｄ  割込み先特定部
２５  制御部
２５ａ  処理制御部
２６  ハイパーバイザ
２６ａ  割込みハンドラ管理テーブル
２６ｂ  ＣＰＵ割当部
２６ｃ  割込みハンドラ特定部
２６ｄ  割込み実行部
【図１】
0005737050.tif 000002
【図２】
0005737050.tif 000003
【図３】
0005737050.tif 000004
【図４】
0005737050.tif 000005
【図５】
0005737050.tif 000006
【図６】
0005737050.tif 000007
【図７】
0005737050.tif 000008
【図８】
0005737050.tif 000009
【図９】
0005737050.tif 000010
【図１０】
0005737050.tif 000011
【図１１】
0005737050.tif 000012
【図１２】
0005737050.tif 000013
【図１３】
0005737050.tif 000014