(57)【要約】【課題】仮想計算機における物理デバイスの割込みへの応答を高速化するとともに、仮想計算機モニタを単純化することを目的とする。【解決手段】割込み制御装置は、仮想マシンモニタ２０２が動作する計算機２０１であって、仮想マシンモニタ２０２によりハードウェアリソースが仮想化された複数の仮想マシン２０３，２０４が提供され、各仮想マシンにおいてオペレーティングシステム２０５，２０６が動作する計算機２０１である。仮想マシンモニタ２０２は、デバイス２０７，２０８から割込み信号が送信されるとオペレーティングシステム２０５，２０６それぞれへ割込みを通知し、オペレーティングシステム２０５，２０６は、そのオペレーティングシステムにおいて、通知された割込み信号に対応するデバイス２０７，２０８へアクセスして割り込みを発生させたか否かを判定する。【選択図】図２
2012003478.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアリソースを仮想化した複数の仮想マシンを提供する仮想マシンモニタを処理装置により動作させる仮想マシンモニタ実行部と、
前記仮想マシンモニタ実行部が動作させた複数の仮想マシンの各仮想マシンの制御下で、オペレーティングシステムを処理装置により動作させるオペレーティングシステム実行部と、
前記オペレーティングシステム実行部が前記各仮想マシンの制御下で動作させたオペレーティングシステムに対応付けられた複数のデバイスから同一の識別情報が割り当てられた割込み信号が送信される場合に、前記複数のデバイスのうちのあるデバイスから送信された割込み信号を受信し、受信した割込み信号を前記仮想マシンモニタへ送信する割込みコントローラと
を備え、
前記仮想マシンモニタは、前記割込みコントローラから割込み信号が送信されると、その割込み信号を前記各仮想マシンへ送信し、
前記各仮想マシンの制御下で動作するオペレーティングシステムは、割込み信号が送信されると、デバイスドライバを動作させてそのオペレーティングシステムに対応付けられたデバイスにアクセスすることにより、そのデバイスが割込みを発生させたか否かを判定するとともに、割込みを発生させたと判定した場合、その割込みに対応する処理を実行する
ことを特徴とする割込み制御装置。
【請求項２】
前記各仮想マシンの制御下で動作する前記オペレーティングシステムは、デバイスドライバが実行する処理が正常終了したことを示す応答を出力するダミーデバイスドライバを備え、デバイスドライバに対応するデバイスが割込みを発生させていないと判定した場合、前記ダミーデバイスドライバを動作させて処理が正常終了したことを示す応答を出力させる
ことを特徴とする請求項１に記載の割込み制御装置。
【請求項３】
前記ダミーデバイスドライバは、前記デバイスドライバがオペレーティングシステムに登録される場合に、合わせてオペレーティングシステムに登録される
ことを特徴とする請求項２に記載の割込み制御装置。
【請求項４】
ハードウェアリソースを仮想化した複数の仮想マシンを提供する仮想マシンモニタを処理装置により動作させる仮想マシンモニタ実行部と、
前記仮想マシンモニタ実行部が動作させた複数の仮想マシンの各仮想マシンの制御下で、オペレーティングシステムを処理装置により動作させるオペレーティングシステム実行部と、
前記各仮想マシンにおいて動作するオペレーティングシステムに対応付けられた複数のデバイスから同一の識別情報が割り当てられた割込み信号が送信される場合に、前記複数のデバイスのうちのあるデバイスから送信された割込み信号を受信し、受信した割込み信号を前記仮想マシンモニタへ送信する割込みコントローラと
を備え、
前記仮想マシンモニタは、前記割込みコントローラから割込み信号が送信されると、送信された割込み信号がどの仮想マシンで動作するオペレーティングシステムに対応するデバイスから送信された割込み信号であるかを特定するとともに、その割込み信号を特定したオペレーティングシステムが動作する仮想マシンへ送信し、
前記各仮想マシンの制御下で動作するオペレーティングシステムは、割込み信号が送信されると、デバイスドライバを動作させてそのオペレーティングシステムに対応して設けられたデバイスにアクセスして、その割込みに対応する処理を実行する
ことを特徴とする割込み制御装置。
【請求項５】
各オペレーティングシステムで動作するデバイスドライバは、オペレーティングシステムが起動する際、割込み信号がその仮想マシンで動作するオペレーティングシステムに対応するデバイスから送信された割込み信号であるかを判定する処理を実行する割込み判定処理を前記仮想マシンモニタに登録し、
前記仮想マシンモニタは、割込み信号を送信されると、各デバイスドライバに登録された割込み判定処理を実行することにより、割込み信号がどの仮想マシンで動作するオペレーティングシステムに対応するデバイスから送信された割込み信号であるかを特定する
ことを特徴とする請求項４に記載の割込み制御装置。
【請求項６】
前記仮想マシンモニタは、各デバイスドライバに登録された割込み判定処理を所定の順に実行し、実行した割込み判定処理で割込み信号を送信したデバイスが特定された場合には、残りの割込み判定処理の実行を止める
ことを特徴とする請求項５に記載の割込み制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、仮想マシンを実現する計算機におけるデバイスからの割込み制御技術に関する。
【背景技術】
【０００２】
従来の仮想計算機は、物理マシンで仮想マシンモニタ（ＶＭＭ）が動作し、ＶＭＭによりハードウェアリソースが仮想化された仮想マシン（ＶＭ）が提供され、ＶＭでオペレーティングシステム（ＯＳ，ゲストＯＳ）が動作している。
従来のＶＭＭは、物理マシン内のデバイスからの割込みに対応する処理を一旦実行し、その結果を用いてＯＳへＶＭ内の仮想デバイスとして提供する。物理マシン内の複数デバイスが同一割込み番号を使用している場合でも、一旦ＶＭＭが割込みを受信し処理を実行することで、その割込みを発生させている物理デバイスを特定できる。そのため、割込みをどのＯＳへ通知すべきかを判断し、通知することが可能である。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｄａｖｉｄ  Ｃｈｉｓｎｅｌｌ著、日本仮想化技術（株）監訳、渡邉了介訳、「仮想化技術」（株）毎日コミュニケーションズ、２００８年８月２０日発行、ｐ．２６〜３５
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したように、従来の仮想計算機は、物理デバイスからの割込みに対応する処理を一旦ＶＭＭが実行し、その結果を用いて仮想デバイスをＯＳへ提供する。そのため、ＶＭＭにオーバヘッドがかかり、リアルタイム応答性が損なわれている。また、ＶＭＭが物理デバイスに対応するデバイスドライバを有している必要があり、ＶＭＭが複雑化している。
この発明は、仮想計算機における物理デバイスの割込みへの応答を高速化するとともに、ＶＭＭを単純化することを目的とする。
【課題を解決するための手段】
【０００５】
この発明に係る割込み制御装置は、
ハードウェアリソースを仮想化した複数の仮想マシンを提供する仮想マシンモニタを処理装置により動作させる仮想マシンモニタ実行部と、
前記仮想マシンモニタ実行部が動作させた複数の仮想マシンの各仮想マシンの制御下で、オペレーティングシステムを処理装置により動作させるオペレーティングシステム実行部と、
前記オペレーティングシステム実行部が前記各仮想マシンの制御下で動作させたオペレーティングシステムに対応付けられた複数のデバイスから同一の識別情報が割り当てられた割込み信号が送信される場合に、前記複数のデバイスのうちのあるデバイスから送信された割込み信号を受信し、受信した割込み信号を前記仮想マシンモニタへ送信する割込みコントローラと
を備え、
前記仮想マシンモニタは、前記割込みコントローラから割込み信号が送信されると、その割込み信号を前記各仮想マシンへ送信し、
前記各仮想マシンの制御下で動作するオペレーティングシステムは、割込み信号が送信されると、デバイスドライバを動作させてそのオペレーティングシステムに対応付けられたデバイスにアクセスすることにより、そのデバイスが割込みを発生させたか否かを判定するとともに、割込みを発生させたと判定した場合、その割込みに対応する処理を実行する
ことを特徴とする。
【発明の効果】
【０００６】
この発明に係る割込み制御装置では、ＶＭＭは割込みに対応する処理を実行せず、各ＶＭへ割込みを通知するだけである。したがって、ＶＭＭにはオーバヘッドがかからない。また、ＶＭＭにデバイスドライバを持たせる必要もないため、ＶＭＭが単純な構成になる。
【図面の簡単な説明】
【０００７】
【図１】計算機の構成図。
【図２】実施の形態１に係る計算機２０１の構成図。
【図３】ＤＥＶ−Ｘ２０７からの割込みが発生した場合における計算機２０１の動作を示すフローチャート。
【図４】実施の形態２に係る計算機４０１の構成図。
【図５】ＤＥＶ−Ｘ４０７からの割込みが発生した場合における計算機４０１の動作を示すフローチャート。
【図６】計算機１０１、計算機２０１、計算機４０１のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【０００８】
以下の説明において、処理装置とは後述するＣＰＵ９１１等のことである。つまり、処理装置はハードウェアである。
また、以下の説明において、仮想マシンモニタは仮想マシンモニタ実行部が処理装置により動作させ、オペレーティングシステムはオペレーティングシステム実行部が処理装置により動作させるものである。つまり、仮想マシンモニタ、オペレーティングシステム等は、ハードウェアである処理装置と協調して動作するものである。
【０００９】
実施の形態１．
まず、計算機における基本的な割込み制御について簡単に説明する。
図１は、計算機の構成図である。
図１において、計算機１０１は物理的な計算機（物理マシン）である。計算機１０１では、仮想マシンモニタであるＶＭＭ１０２が動作している。ＶＭＭ１０２は仮想マシンであるＶＭ−Ａ１０３、ＶＭ−Ｂ１０４を提供している。ＶＭ−Ａ１０３、ＶＭ−Ｂ１０４では、それぞれオペレーティングシステムであるＯＳ−Ａ１０５、ＯＳ−Ｂ１０６が動作している。
【００１０】
計算機１０１内には、物理デバイスであるＤＥＶ−Ｘ１０７、ＤＥＶ−Ｙ１０８の割込み線が、割込みコントローラであるＩＮＴＣ１０９のＩＲＱ＃９へ接続されている。つまり、ＤＥＶ−Ｘ１０７とＤＥＶ−Ｙ１０８とが同一の割り込み番号“９”（識別情報）を共有している。従って、ＩＲＱ＃９の割込みが発生した場合、その割込みの要因がＤＥＶ−Ｘ１０７、ＤＥＶ−Ｙ１０８のいずれか、または両方かを一意に判断することはできない。
【００１１】
計算機１０１内のＩＮＴＣ１０９は、物理デバイスからの割込み信号を検出するとＶＭＭ１０２の割込みハンドラであるＩＲＱＨ１１０へ割込み信号を送信する。
割込み信号を受信したＩＲＱＨ１１０は、その割込み番号に登録されているデバイスドライバＤＤ−Ｘ１１１、ＤＤ−Ｙ１１２を実行する。ＤＤ−Ｘ１１１、ＤＤ−Ｙ１１２はそれぞれ物理デバイスであるＤＥＶ−Ｘ１０７、ＤＥＶ−Ｙ１０８へアクセスし、割込みを発生させているか否かを判定する。割込みハンドラＩＲＱＨ１１０は、ＤＥＶ−Ｘ１０７が割込みを発生させている場合は、そのデバイスを使用する仮想マシンＶＭ−Ａ１０３の仮想割込みコントローラｖＩＮＴＣ−Ａ１１３へ割込み発生を通知する。同様にＤＥＶ−Ｙ１０８が割込みを発生させている場合は、そのデバイスを使用する仮想マシンＶＭ−Ｂ１０４の割込みコントローラｖＩＮＴＣ−Ｂ１１５へ割込み発生を通知する。
割込み発生を通知された仮想割込みコントローラｖＩＮＴＣ−Ａ１１３（もしくはｖＩＮＴＣ−Ｂ１１５）は、ＯＳ−Ａ１０５（もしくはＯＳ−Ｂ１０６）の割込みハンドラＩＲＱＨ−Ａ１１７（もしくはＩＲＱＨ−Ｂ１１９）へ割込み発生を通知する。
割込みハンドラは該割込み番号へ登録されたデバイスドライバｖＤＤ−Ｘ１１８（もしくはｖＤＤ−Ｙ１２０）を実行する。デバイスドライバｖＤＤ−Ｘ１１８（もしくはｖＤＤ−Ｙ１１２）は、ＶＭ内の仮想デバイスｖＤＥＶ−Ｘ１１４（もしくはｖＤＥＶ−Ｙ１１６）へアクセスする。
【００１２】
つまり、計算機１０１では、ＶＭＭ１０２のＩＲＱＨ１１０が割込み番号に対応する全てのデバイスドライバを実行して、どのデバイスが割込みを発生させたかを特定する。そのため、ＶＭＭ１０２にはオーバヘッドがかかる。また、ＶＭＭ１０２は全てのデバイスドライバを持つ必要がある。
【００１３】
次に、実施の形態１に係る計算機２０１（割込み制御装置）について説明する。
図２は、実施の形態１に係る計算機２０１の構成図である。
図２において、計算機２０１は物理的な計算機である。計算機２０１では、仮想マシンモニタであるＶＭＭ２０２が動作している。ＶＭＭ２０２は仮想マシンであるＶＭ−Ａ２０３、ＶＭ−Ｂ２０４を提供している。ＶＭ−Ａ２０３、ＶＭ−Ｂ２０４では、それぞれオペレーティングシステムであるＯＳ−Ａ２０５、ＯＳ−Ｂ２０６が動作している。
【００１４】
計算機２０１内には、物理デバイスであるＤＥＶ−Ｘ２０７、ＤＥＶ−Ｙ２０８の割込み線が、割込みコントローラであるＩＮＴＣ２０９のＩＲＱ＃９へ接続されている。なお、ここでは割込み番号を９としているが、他の割込み番号でも構わない。
【００１５】
ＶＭＭ２０２内では、割込みハンドラであるＩＲＱＨ２１０が動作する。ＩＲＱＨ２１０は、計算機２０１のＩＮＴＣ２０９から割込み信号を受信すると、各ＶＭ（ＶＭ−Ａ２０３、ＶＭ−Ｂ２０４）へ割込み信号を送信する。
ＶＭ−Ａ２０３、ＶＭ−Ｂ２０４内では、それぞれ仮想割込みコントローラであるｖＩＮＴＣ−Ａ２１１、ｖＩＮＴＣ−Ｂ２１２が動作する。各ｖＩＮＴＣはＶＭＭ２０２のＩＲＱＨ２１０から割込み信号を受信し、受信した割込み信号をＯＳへ送信する。
ＯＳ−Ａ２０５、ＯＳ−Ｂ２０６内では、それぞれ割込みハンドラであるＩＲＱＨ−Ａ２１３、ＩＲＱＨ−Ｂ２１６と、デバイスドライバであるＤＤ−Ｘ２１４、ＤＤ−Ｙ２１７と、ダミーデバイスドライバであるｄＤＤ−Ａ２１５、ｄＤＤ−Ｂ２１８とが動作する。各ＯＳ内のＩＲＱＨはＶＭのｖＩＮＴＣから割込み発生を受信し、その割込み番号に登録されているデバイスドライバＤＤおよびｄＤＤを実行する。ＤＤ−Ｘ２１４、ＤＤ−Ｙ２１７は、それぞれ計算機２０１内のＤＥＶ−Ｘ２０７、ＤＥＶ−Ｙ２０８へアクセスし割込みが発生している場合は、それに対する処理を実行する。ｄＤＤ−Ａ２１５、ｄＤＤ−Ｂ２１８は、デバイスに対して何もせずに割込み処理の正常終了を応答する。
【００１６】
次に、実施の形態１に係る計算機２０１の割込み制御について説明する。
図３は、ＤＥＶ−Ｘ２０７からの割込みが発生した場合における計算機２０１の動作を示すフローチャートである。
まず、計算機２０１のＤＥＶ−Ｘ２０７で割込みが発生し（Ｓ３０１）、ＩＮＴＣ２０９が割込み発生を示す割込み信号を受信する（Ｓ３０２）。ＩＮＴＣ２０９は、ＶＭＭ２０２へ割込み信号を送信する（Ｓ３０３）。割込み信号を受信したＶＭＭ２０２のＩＲＱＨ２１０は、各ＶＭ（ＶＭ−Ａ２０３、ＶＭ−Ｂ２０４）へ割込み信号を送信する（Ｓ３０４）。
【００１７】
割込み信号を受信したＶＭ−Ａ２０３のｖＩＮＴＣ−Ａ２１１は、ＯＳ−Ａ２０５へ割込み信号を送信する（Ｓ３０５）。割込み信号を受信したＯＳ−Ａ２０５のＩＲＱＨ−Ａ２１３は、受信した割込み信号に割り当てられているデバイスドライバ（ＤＤ−Ｘ２１４）を実行する（Ｓ３０６）。ＤＤ−Ｘ２１４は、計算機２０１のＤＥＶ−Ｘ２０７へアクセスし（Ｓ３０７）、ＤＥＶ−Ｘ２０７が割込みを発生させているかを判定する（Ｓ３０８）。
ＤＤ−Ｘ２１４は、ＤＥＶ−Ｘ２０７が割込みを発生させている場合（Ｓ３０８でＹＥＳ）、ＤＥＶ−Ｘ２０７の割込みに対応する処理を実行する（Ｓ３０９）。これにより、ＤＥＶ−Ｘ２０７の割込みが停止され（Ｓ３１０）、ＤＤ−Ｘ２１４は割込み処理の正常終了をＩＲＱＨ−Ａ２１３へ応答する（Ｓ３１１）。一方、ＤＤ−Ｘ２１４は、ＤＥＶ−Ｘ２０７が割込みを発生させていなかった場合（Ｓ３０８でＮＯ）、デバイスに対する処理を実行せず、処理を（Ｓ３１２）へ進める。なお、ここでは、ＤＥＶ−Ｘ２０７が割込みを発生させているため、（Ｓ３０８）から（Ｓ３０９）へ処理が進む。
ＩＲＱＨ−Ａ２１３は、ｄＤＤ−Ａ２１５を実行して、割込み処理の正常終了を応答させる（Ｓ３１２）。割込み処理の正常終了を受け取ったＩＲＱＨ−Ａ２１３は、ドライバ実行を終了する（Ｓ３１３）。
【００１８】
同様に、割込み通知を受信したＶＭ−Ｂ２０４のｖＩＮＴＣ−Ｂ２１２はＯＳ−Ｂ２０６へ割込み信号を送信する（Ｓ３１４）。割込み信号を受信したＯＳ−Ｂ２０６のＩＲＱＨ−Ｂ２１６は、受信した割込み信号に割り当てられているデバイスドライバ（ＤＤ−Ｙ２１７）を実行する（Ｓ３１５）。ＤＤ−Ｙ２１７は、計算機２０１のＤＥＶ−Ｙ２０８へアクセスし（Ｓ３１６）、ＤＥＶ−Ｙ２０８が割込みを発生させているかを判定する（Ｓ３１７）。
ＤＤ−Ｙ２１７は、ＤＥＶ−Ｙ２０８が割込みを発生させている場合（Ｓ３１７でＹＥＳ）、ＤＥＶ−Ｙ２０８の割込みに対応する処理を実行する（Ｓ３１８）。これによりＤＥＶ−Ｙ２０８の割込みが停止され、ＤＤ−Ｙ２１７は割込み処理の正常終了をＩＲＱＨ−Ｂ２１６へ応答する（Ｓ３１９）。一方、ＤＥＶ−Ｙ２０８が割込みを発生させていなかった場合（Ｓ３１７でＮＯ）、デバイスに対する処理を実行せず、処理を（Ｓ３２０）へ進める。なお、ここでは、ＤＥＶ−Ｙ２０８が割込みを発生させていないため、（Ｓ３１７）から（Ｓ３２０）へ処理が進む。
ＩＲＱＨ−Ｂ２１６は、ｄＤＤ−Ｂ２１８を実行して、割込み処理の正常終了を応答させる（Ｓ３２０）。割込み処理の正常終了を受け取ったＩＲＱＨ−Ｂ２１６はドライバ実行を終了する（Ｓ３２１）。
【００１９】
以上のように、実施の形態１に係る計算機２０１では、ＶＭＭ２０２は単に割込み信号を各ＶＭへ送信するだけである。したがって、ＶＭＭ２０２にはオーバヘッドがかからない。また、ＶＭＭ２０２はデバイスドライバを実行することがないため、ＶＭＭ２０２の構造を単純化できる。
【００２０】
なお、上記説明において、（Ｓ３１２）や（Ｓ３２０）でｄＤＤ−Ａ２１５やｄＤＤ−Ｂ２１８のダミーデバイスドライバが割込み処理の正常終了を応答するとした。これは、通常、ＩＲＱＨ−Ａ２１３やＩＲＱＨ−Ｂ２１６の割込みハンドラは、デバイスドライバを実行した後、所定時間内に割込み処理の正常終了の応答がない場合、処理が異常終了したと判定してしまう。また、通常、割込み処理を実行していないデバイスドライバは、割込み処理の正常終了を応答しない。そこで、割込みが発生していないにも関わらず、デバイスドライバが実行された場合、ダミーデバイスドライバが割込み処理の正常終了を応答するようにしている。
上記説明では、割込みが発生した場合においては、デバイスドライバとダミーデバイスドライバとの両方から割込み処理の正常終了の応答がされる。割込みが発生した場合においては、ダミーデバイスドライバから割込み処理の正常終了の応答をする処理（（Ｓ３１２）や（Ｓ３２０））が実行されないようにしてもよい。しかし、デバイスドライバとダミーデバイスドライバとの両方から割込み処理の正常終了の応答がされても、割込みハンドラの処理には影響を与えない。そのため、処理を単純にすることを考慮して、上記説明の通りの処理の流れとしてもよい。
【００２１】
実施の形態２．
実施の形態１では、ＶＭＭの割込みハンドラは割込みを発生させた物理デバイスを特定せず、全ＶＭに対して割込み発生を通知するようにした。実施の形態２では、ＶＭＭの割込みハンドラが、デバイスドライバを実行するのではなく、割込み発生の判定のみ実施する方法について説明する。
【００２２】
実施の形態１に係る計算機２０１（割込み制御装置）について説明する。
図４は、実施の形態２に係る計算機４０１の構成図である。
図４において、計算機４０１は物理的な計算機である。計算機４０１では、仮想マシンモニタであるＶＭＭ４０２が動作している。ＶＭＭ４０２は仮想マシンであるＶＭ−Ａ４０３、ＶＭ−Ｂ４０４を提供している。ＶＭ−Ａ４０３、ＶＭ−Ｂ４０４では、それぞれオペレーティングシステムであるＯＳ−Ａ４０５、ＯＳ−Ｂ４０６が動作している。
【００２３】
計算機４０１内には、物理デバイスであるＤＥＶ−Ｘ４０７、ＤＥＶ−Ｙ４０８の割込み線が、割込みコントローラであるＩＮＴＣ４０９のＩＲＱ＃９へ接続されている。なお、ここでは割込み番号を９としているが、他の割込み番号でも構わない。
【００２４】
ＶＭＭ４０２内では、割込みハンドラであるＩＲＱＨ４１０と、割込みハンドラから実行され割込みを発生させているデバイスを検出する割込み判定処理ｊＤＤ−Ｘ４１１、ｊＤＤ−Ｙ４１２とが動作する。ＩＲＱＨ４１０は、計算機４０１のＩＮＴＣ４０９から割込み信号を受信し、受信した割込みに対応する割込み判定処理を実行する。割込み判定処理ｊＤＤ−Ｘ４１１、ｊＤＤ−Ｙ４１２は、それぞれ計算機４０１内の物理デバイスＤＥＶ−Ｘ４０７、ＤＥＶ−Ｙ４０８へアクセスし、割込みを発生させているかを判定する。ＩＲＱＨ４１０は、割込み判定処理の結果を元にどのＶＭへ割込み信号を送信するか特定し、特定したＶＭへ割込み信号を送信する。
ＶＭ−Ａ４０３、ＶＭ−Ｂ４０４内では、仮想割込みコントローラであるｖＩＮＴＣ−Ａ４１３、ｖＩＮＴＣ−Ｂ４１４が動作する。ｖＩＮＴＣ−Ａ４１３、ｖＩＮＴＣ−Ｂ４１４は、ＶＭＭ４０２のＩＲＱＨ４１０から割込み信号を受信し、ＯＳ−Ａ４０５、ＯＳ−Ｂ４０６へ通知する。
ＯＳ−Ａ４０５、ＯＳ−Ｂ４０６内では、割込みハンドラであるＩＲＱＨ−Ａ４１５、ＩＲＱＨ−Ｂ４１７と、デバイスドライバであるＤＤ−Ｘ４１６、ＤＤ−Ｙ４１８とが動作する。各ＯＳ内のＩＲＱＨは、対応するＶＭのｖＩＮＴＣから割込み信号を受信し、その割込み番号に登録されているデバイスドライバＤＤを実行する。ＤＤ−Ｘ４１６、ＤＤ−Ｙ４１８は、それぞれ計算機４０１内のＤＥＶ−Ｘ４０７、ＤＥＶ−Ｙ４０８へアクセスし割込みが発生している場合は、それに対する処理を実行する。
【００２５】
次に、実施の形態２に係る計算機４０１の割込み制御について説明する。
図５は、ＤＥＶ−Ｘ４０７からの割込みが発生した場合における計算機４０１の動作を示すフローチャートである。
まず、計算機４０１のＤＥＶ−Ｘ４０７により割込みが発生し（Ｓ５０１）、ＩＮＴＣ４０９が割込み発生を示す割込み発生を受信する（Ｓ５０２）。ＩＮＴＣ４０９は、ＶＭＭ４０２へ割込み信号を送信する（Ｓ５０３）。
【００２６】
割込み信号を受信したＶＭＭ４０２のＩＲＱＨ４１０は、受信した割込み信号に割り当てられている割込み判定処理（ｊＤＤ−Ｘ４１１、ｊＤＤ−Ｙ４１２）を実行する。ｊＤＤ−Ｘ４１１は、ＤＥＶ−Ｘ４０７へアクセスし（Ｓ５０４）、ＤＥＶ−Ｘ４０７が割込みを発生させているかを判定する（Ｓ５０５）。ＤＥＶ−Ｘ４０７が割込みを発生している場合（Ｓ５０５でＹＥＳ）、ＤＥＶ−Ｘ割込みフラグを内部メモリにセットする（Ｓ５０６）。同様に、ｊＤＤ−Ｙ４１２は、ＤＥＶ−Ｙ４０８へアクセスし（Ｓ５０７）、ＤＥＶ−Ｙ４０８が割込みを発生させているかを判定する（Ｓ５０８）。ＤＥＶ−Ｙ４０８が割込みを発生している場合（Ｓ５０８でＹＥＳ）、ＤＥＶ−Ｙ割込みフラグを内部メモリにセットする（Ｓ５０９）。ＩＲＱＨ４１０は、内部メモリにセットされた割込みフラグをチェックし、ＤＥＶ−Ｘ４０７が割込みを発生させている場合はＶＭ−Ａ４０３へ、ＤＥＶ−Ｙ４０８が割込みを発生させている場合はＶＭ−Ｂ４０４へ割込み信号を送信する（Ｓ５１０）。
なお、ここでは、ＤＥＶ−Ｘ４０７が割込みを発生させているため、ＩＲＱＨ４１０はＶＭ−Ａ４０３へ割込み信号を送信する。そこで、図５では、割込み信号が送信されないＶＭ−Ｂ４０４側の処理を破線で示す。
【００２７】
割込み信号を受信したＶＭ−Ａ４０３のｖＩＮＴＣ−Ａ４１３は、ＯＳ−Ａ４０５へ割込み信号を送信する（Ｓ５１１）。割込み信号を受信したＯＳ−Ａ４０５のＩＲＱＨ−Ａ４１５は、受信した割込み信号に割り当てられているデバイスドライバ（ＤＤ−Ｘ４１６）を実行する（Ｓ５１２）。ＤＤ−Ｘ４１６は、計算機４０１のＤＥＶ−Ｘ４０７へアクセスし（Ｓ５１３）、ＤＥＶ−Ｘ４０７が割込みを発生させているかを判定する（Ｓ５１４）。ＤＤ−Ｘ４１６は、ＤＥＶ−Ｘ４０７が割込みを発生させている場合にＤＥＶ−Ｘ４０７の割込みに対応する処理を実行する（Ｓ５１５）。これによりＤＥＶ−Ｘ４０７の割込みが停止され（Ｓ５１６）、ＤＤ−Ｘ４１６は割込み処理の正常終了をＩＲＱＨ−Ａ４１５へ応答する（Ｓ５１７）。割込み処理の正常終了を受け取ったＩＲＱＨ−Ａ４１５はドライバ実行を終了する（Ｓ５１８）。
【００２８】
以上のように、実施の形態２に係る計算機４０１では、ＶＭＭ４０２はデバイスドライバを実行するのではなく、単に割込みを発生させているデバイスを特定する処理のみを行う。したがって、ＶＭＭ４０２は、実施の形態１に係る計算機２０１に比べるとオーバヘッドが発生するものの、計算機１０１に比べるとオーバヘッドが小さくなる。また、実施の形態１に係る計算機２０１と同様に、ＶＭＭ４０２がデバイスドライバを持つ必要がない。
また、実施の形態２に係る計算機４０１では、ＶＭＭ４０２が割込みを発生させているデバイスを特定しているため、ＶＭに無駄な処理が発生せず、ＶＭにかかる負荷を軽減できる。
【００２９】
なお、ＶＭＭ４０２で割込みを発生させているデバイスを特定した上で、対応するＶＭへ割込み信号を送信しているため、割込み信号が送信されたＶＭでは割込みが発生しているか否かを判定する必要はない。したがって、（Ｓ５１４）での判定は本来不要である。しかし、判定を行っても何ら処理に影響はなく、デバイスドライバの処理を敢えて変更する必要はないため、上記説明の通りの処理の流れとしてもよい。
【００３０】
また、上記説明では、ＤＥＶ−Ｘ４０７が割込みを発生させた場合について説明したため、ＶＭ−Ｂ４０４側の処理についての説明は省略した。ＶＭ−Ｂ４０４側の処理は、ＶＭ−Ａ４０３側の処理と同様である。
【００３１】
また、上記説明では、ＤＥＶ−Ｘ４０７とＤＥＶ−Ｙ４０８とが同時に割込みを発生させる場合も想定して、（Ｓ５０５）と（Ｓ５０８）とでＤＥＶ−Ｘ４０７とＤＥＶ−Ｙ４０８とが割込みを発生させているかを判定した。しかし、ＤＥＶ−Ｘ４０７とＤＥＶ−Ｙ４０８とが同時に割込みを発生させることがないのであれば、（Ｓ５０５）でＤＥＶ−Ｘ４０７が割込みを発生させているか否か判定するだけで、ＤＥＶ−Ｘ４０７とＤＥＶ−Ｙ４０８とのどちらが割込みを発生させているか判定できる。
さらに、３つ以上のデバイスについて、どのデバイスが割込みを発生させているかを判定する場合もある。この場合には、各デバイスについての割込み判定処理ｊＤＤを順に実行して、割込みを発生させているデバイスが特定された時点で、残りの割込み判定処理ｊＤＤの実行を止めてもよい。
【００３２】
また、各割込み判定処理ｊＤＤは、対応するデバイスドライバ（例えば、ｊＤＤ−Ｘ４１１であれば、ＤＤ−Ｘ４１６）が登録されたＯＳ−Ａ４０５が起動する場合に、デバイスドライバがＶＭＭ４０２に登録するものとする。
【００３３】
次に、実施の形態における計算機１０１、計算機２０１、計算機４０１のハードウェア構成について説明する。
図６は、計算機１０１、計算機２０１、計算機４０１のハードウェア構成の一例を示す図である。
図６に示すように、計算機１０１、計算機２０１、計算機４０１は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、ＬＣＤ９０１（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、通信ボード９１５、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０（固定ディスク装置）の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置９２０は、所定の固定ディスクインタフェースを介して接続される。
【００３４】
ＲＯＭ９１３、磁気ディスク装置９２０は、不揮発性メモリの一例である。ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３とＲＡＭ９１４と磁気ディスク装置９２０とは、記憶装置（メモリ）の一例である。
【００３５】
磁気ディスク装置９２０又はＲＯＭ９１３などには、オペレーティングシステム９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００３６】
プログラム群９２３には、上記の説明において「ＶＭＭ１０２」、「ＶＭ−Ａ１０３」、「ＶＭ−Ｂ１０４」、「ＯＳ−Ａ１０５」、「ＯＳ−Ｂ１０６」、「ＩＮＴＣ１０９」、「ＩＲＱＨ１１０」、「ＤＤ−Ｘ１１１」、「ＤＤ−Ｙ１１２」、「ｖＩＮＴＣ−Ａ１１３」、「ｖＤＥＶ−Ｘ１１４」、「ｖＩＮＴＣ−Ｂ１１５」、「ｖＤＥＶ−Ｙ１１６」、「ＩＲＱＨ−Ａ１１７」、「ｖＤＤ−Ｘ１１８」、「ＩＲＱＨ−Ｂ１１９」、「ｖＤＤ−Ｙ１２０」、「ＶＭＭ２０２」、「ＶＭ−Ａ２０３」、「ＶＭ−Ｂ２０４」、「ＯＳ−Ａ２０５」、「ＯＳ−Ｂ２０６」、「ＩＮＴＣ２０９」、「ＩＲＱＨ２１０」、「ｖＩＮＴＣ−Ａ２１１」、「ｖＩＮＴＣ−Ｂ２１２」、「ＩＲＱＨ−Ａ２１３」、「ＤＤ−Ｘ２１４」、「ｄＤＤ−Ａ２１５」、「ＩＲＱＨ−Ｂ２１６」、「ＤＤ−Ｙ２１７」、「ｄＤＤ−Ｂ２１８」、「ＶＭＭ４０２」、「ＶＭ−Ａ４０３」、「ＶＭ−Ｂ４０４」、「ＯＳ−Ａ４０５」、「ＯＳ−Ｂ４０６」、「ＩＮＴＣ４０９」、「ＩＲＱＨ４１０」、「ｊＤＤ−Ｘ４１１」、「ｊＤＤ−Ｙ４１２」、「ｖＩＮＴＣ−Ａ４１３」、「ｖＩＮＴＣ−Ｂ４１４」、「ＩＲＱＨ−Ａ４１５」、「ＤＤ−Ｘ４１６」、「ＩＲＱＨ−Ｂ４１７」、「ＤＤ−Ｙ４１８」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、上記の説明において「割込み信号」、「割込みフラグ」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００３７】
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、その他光ディスク等の記録媒体やＩＣチップに記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ９１３等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【符号の説明】
【００３８】
１０１，２０１，４０１  計算機、１０２，２０２，４０２  ＶＭＭ、１０３，２０３，４０３  ＶＭ−Ａ、１０４，２０４，４０４  ＶＭ−Ｂ、１０５，２０５，４０５  ＯＳ−Ａ、１０６，２０６，４０６  ＯＳ−Ｂ、１０７，２０７，４０７  ＤＥＶ−Ｘ、１０８，２０８，４０８  ＤＥＶ−Ｙ、１０９，２０９，４０９  ＩＮＴＣ、１１０，２１０，４１０  ＩＲＱＨ、１１１，２１４，４１６  ＤＤ−Ｘ、１１２，２１７，４１８  ＤＤ−Ｙ、１１３，２１１，４１３  ｖＩＮＴＣ−Ａ、１１４  ｖＤＥＶ−Ｘ、１１５，２１２，４１４  ｖＩＮＴＣ−Ｂ、１１６  ｖＤＥＶ−Ｙ、１１７，２１３，４１５  ＩＲＱＨ−Ａ、１１８  ｖＤＤ−Ｘ、１１９，２１６，４１７  ＩＲＱＨ−Ｂ、１２０  ｖＤＤ−Ｙ、２１５  ｄＤＤ−Ａ、２１８  ｄＤＤ−Ｂ、４１１  ｊＤＤ−Ｘ、４１２  ｊＤＤ−Ｙ。
【図１】
2012003478.tif 000003
【図２】
2012003478.tif 000004
【図３】
2012003478.tif 000005
【図４】
2012003478.tif 000006
【図５】
2012003478.tif 000007
【図６】
2012003478.tif 000008