(57)【要約】【課題】複数のＯＳに対して割込みを効率的に通知できるようにすることを目的とする。【解決手段】割込み推定頻度テーブル２９０は、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃ毎に、各デバイス（１３０Ａから１３０Ｃ）が当該ＯＳに対して割込みを発生する頻度の推定値として予め定められる割込み推定頻度を記憶する。割込み通知部２１０は、各デバイスが発生する割込みを検出する。割込み通知部２１０は、割込み推定頻度テーブル２９０に記憶されるＯＳ１２０Ａ・１２０Ｂ・１２０Ｃ毎の割込み推定頻度に基づいて、いずれかのＯＳを割込みが発生した割込みＯＳとして推定する。割込み通知部２１０は、割込みＯＳとして推定したＯＳに対して割込みを通知する。通知先のＯＳが割込みＯＳでなかった場合、割込み通知部２１０は、割込みＯＳとして新たなＯＳを推定し、推定した新たなＯＳに対して割込みを通知する。【選択図】図１
2014006837.tif 000002
【特許請求の範囲】
【請求項１】
特定の処理を実行する複数の処理部の処理部毎に、１つ以上のデバイスから成るデバイス群が当該処理部に対して割込みを発生する頻度の推定値として予め定められる割込み推定頻度を記憶する割込み推定頻度記憶部と、
前記デバイス群が発生する割込みを検出する割込み検出部と、
前記割込み検出部によって割込みが検出された場合、前記割込み推定頻度記憶部に記憶される前記複数の処理部の処理部毎の割込み推定頻度に基づいて、前記複数の処理部のうちいずれかの処理部を前記割込みが発生した割込み処理部として推定する割込み処理部推定部と、
前記割込み処理部推定部によって前記割込み処理部として推定された処理部に対して、前記割込み検出部によって検出された前記割込みを通知する割込み通知部と
を備えることを特徴とする割込み制御装置。
【請求項２】
前記割込み処理部推定部は、前記割込み通知部によって前記割込みが通知された前記処理部が前記割込み処理部でなかった場合、新たな処理部を前記割込み処理部として推定し、
前記割込み通知部は、前記割込み処理部推定部によって前記割込み処理部として推定された前記新たな処理部に対して前記割込みを通知する
ことを特徴とする請求項１記載の割込み制御装置。
【請求項３】
前記割込み制御装置は、さらに、
前記複数の処理部の処理部毎に、処理部に対して割込みが発生した割込み発生時刻を記憶する割込み発生時刻記憶部を備え、
前記割込み処理部推定部は、前記複数の処理部の処理部毎に、前記割込みが検出された割込み検出時刻と前記割込み発生時刻記憶部に記憶された前記割込み発生時刻とに基づいて、前記割込みが当該処理部に対して発生した場合の割込み発生頻度を算出し、
前記割込み処理部推定部は、前記複数の処理部の処理部毎に割込み発生頻度と割込み推定頻度とを比較し、比較結果に基づいて前記割込み処理部を推定する
ことを特徴とする請求項１または請求項２記載の割込み制御装置。
【請求項４】
前記割込み制御装置は、さらに、
前記割込み通知部によって前記割込みが通知された前記処理部が前記割込み処理部であった場合、前記処理部の新たな割込み推定頻度を算出し、前記処理部の前記割込み推定頻度を前記新たな割込み推定頻度に更新する割込み推定頻度更新部を備える
ことを特徴とする請求項１記載の割込み制御装置。
【請求項５】
前記割込み制御装置は、さらに、
前記複数の処理部の処理部毎に、処理部に対して割込みが発生した割込み発生時刻を記憶する割込み発生時刻記憶部を備え、
前記割込み推定頻度更新部は、前記割込みが検出された割込み検出時刻と前記割込み発生時刻記憶部に記憶される前記処理部の前記割込み発生時刻とに基づいて前記新たな割込み推定頻度を算出する
ことを特徴とする請求項４記載の割込み制御装置。
【請求項６】
前記割込み制御装置は、前記複数の処理部として複数のＯＳ（オペレーティングシステム）を動作させる仮想計算機である
ことを特徴とする請求項１から請求項５いずれかに記載の割込み制御装置。
【請求項７】
前記デバイス群が、割込みを発生させるための割込み信号線を共有することを特徴とする請求項１から請求項６いずれかに記載の割込み制御装置。
【請求項８】
割込み推定頻度記憶部と、割込み検出部と、割込み処理部推定部と、割込み通知部とを備える割込み制御装置を用いる割込み制御方法であって、
前記割込み推定頻度記憶部は、特定の処理を実行する複数の処理部の処理部毎に、１つ以上のデバイスから成るデバイス群が当該処理部に対して割込みを発生する頻度の推定値として予め定められる割込み推定頻度を記憶する記憶部であり、
前記割込み検出部が、前記デバイス群が発生する割込みを検出し、
前記割込み処理部推定部が、前記割込み検出部によって割込みが検出された場合、前記割込み推定頻度記憶部に記憶される前記複数の処理部の処理部毎の割込み推定頻度に基づいて、前記複数の処理部のうちいずれかの処理部を前記割込みが発生した割込み処理部として推定し、
前記割込み通知部が、前記割込み処理部推定部によって前記割込み処理部として推定された処理部に対して、前記割込み検出部によって検出された前記割込みを通知する
ことを特徴とする割込み制御方法。
【請求項９】
請求項８記載の割込み制御方法をコンピュータに実行させるための割込み制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、複数のＯＳ（オペレーティングシステム）が動作するマルチオペレーティング計算機システムにおいて、割込み信号線を共有する複数のデバイスから発生した割込みを制御するための割込み制御装置、割込み制御方法および割込み制御プログラムに関するものである。
【背景技術】
【０００２】
複数のオペレーティングシステム（ＯＳ）を切替えて動作させるシステムをマルチオペレーティング計算機システムという。
従来のマルチオペレーティング計算機システムにおいて、デバイスから割込みが発生した場合に割込みを発生したデバイスを特定し、割込みを発生したデバイスに割付けられたＯＳを特定し、特定したＯＳを起動させるものがある（例えば、特許文献１参照）。
このようなシステムにおいて、複数のデバイスが割込み信号線（または割込み番号）を共有する場合、複数のＯＳを制御する仮想マシンモニタが割込みを発生したデバイスの特定を行うことが多い。
【０００３】
しかしながら、オープンソースの仮想化ソフトウェアや組込みのシステムなどで用いる小型・軽量の仮想マシンモニタには割込みを発生したデバイスを特定するためのデバイスドライバが無い場合が多い。
このような場合、割込みを発生したデバイスおよびそのデバイスを占有するＯＳを特定することができず、結果として、全てのＯＳに割込みの発生を通知する必要があり、非効率的である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２２９０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、例えば、複数のＯＳに対して割込みを効率的に通知できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の割込み制御装置は、
特定の処理を実行する複数の処理部の処理部毎に、１つ以上のデバイスから成るデバイス群が当該処理部に対して割込みを発生する頻度の推定値として予め定められる割込み推定頻度を記憶する割込み推定頻度記憶部と、
前記デバイス群が発生する割込みを検出する割込み検出部と、
前記割込み検出部によって割込みが検出された場合、前記割込み推定頻度記憶部に記憶される前記複数の処理部の処理部毎の割込み推定頻度に基づいて、前記複数の処理部のうちいずれかの処理部を前記割込みが発生した割込み処理部として推定する割込み処理部推定部と、
前記割込み処理部推定部によって前記割込み処理部として推定された処理部に対して、前記割込み検出部によって検出された前記割込みを通知する割込み通知部とを備える。
【発明の効果】
【０００７】
本発明によれば、例えば、複数のＯＳ（処理部の一例）に対して割込みを効率的に通知することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１における仮想計算機システム１００の構成図。
【図２】実施の形態１における仮想計算機システム１００のハードウェア構成図。
【図３】実施の形態１における割込み推定頻度テーブル２９０の一例を示す図。
【図４】実施の形態１における割込み発生時刻テーブル２８０の一例を示す図。
【図５】実施の形態１における仮想計算機システム１００の割込み制御方法を示すフローチャート。
【図６】実施の形態２における仮想計算機システム１００の構成図。
【図７】実施の形態２における仮想計算機システム１００の割込み制御方法を示すフローチャート。
【発明を実施するための形態】
【０００９】
実施の形態１．
複数のＯＳ（オペレーティングシステム）が動作するマルチオペレーティング計算機システムにおいて、割込みを発生したデバイスを占有するＯＳに対して割込みを効率的に通知するための形態について説明する。
【００１０】
図１は、実施の形態１における仮想計算機システム１００の構成図である。
図２は、実施の形態１における仮想計算機システム１００のハードウェア構成図である。
実施の形態１における仮想計算機システム１００の構成について、図１および図２に基づいて説明する。
【００１１】
図１において、仮想計算機システム１００は、複数のＯＳ（仮想ＯＳ）が動作する仮想計算機１０１（割込み制御装置の一例）を備える。
また、仮想計算機システム１００は、複数のハードウェアデバイス「デバイス１３０Ａ」「デバイス１３０Ｂ」「デバイス１３０Ｃ」を備える。これらのデバイスは、仮想計算機１０１に内蔵される装置であっても、ＰＣＩバス（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）を介して仮想計算機１０１に接続される周辺装置であっても構わない。
【００１２】
仮想計算機１０１は、ハードウェア１１０、仮想マシンモニタ２００（ＶＭＭ）および複数のＯＳ１２０Ａ・１２０Ｂ・１２０Ｃを備える。
【００１３】
ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃ（処理部の一例）は、アプリケーション（プログラム）の実行等により、仮想計算機１０１を機能させるソフトウェアまたはそのソフトウェアを実行する機能「〜部」である。
ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃは仮想マシンモニタ２００によって制御される。例えば、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃは仮想マシンモニタ２００によって切り替えられながら動作する。
仮想マシンモニタ２００によって制御されるこれらのＯＳ１２０Ａ・１２０Ｂ・１２０Ｃは、仮想マシンモニタ２００を動作させるためのＯＳ（ホストＯＳ）（図示省略）に対して「仮想ＯＳ」と呼ばれる。
以下、単に「ＯＳ」という場合、仮想ＯＳを意味するものとする。
【００１４】
ハードウェア１１０は、仮想マシンモニタ２００やＯＳ１２０を動作させるためのものである。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やメモリはハードウェア１１０の一例である。
【００１５】
仮想マシンモニタ２００は、複数のＯＳ１２０Ａ・１２０Ｂ・１２０Ｃを制御するソフトウェアまたはそのソフトウェアを実行する機能「〜部」である。
例えば、仮想マシンモニタ２００は、ＯＳ１２０Ａ・１２０Ｂ・１２０ＣにＣＰＵの使用時間などのハードウェア資源を割り当てることによって、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃを切り替えながら動作させる。
【００１６】
図２において、ＣＰＵ１１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ１１２および割込みコントローラ１１３は、仮想計算機１０１が備えるハードウェアの一例である。
また、キーボード１３１、マウス１３２、ディスプレイ１３３、プリンタ１３４、スキャナ１３５および外付けハードディスクドライブ（「外付けＨＤＤ１３６」と記す）は、仮想計算機１０１に内蔵されるデバイスまたは仮想計算機１０１に接続されるデバイスの一例である。
【００１７】
キーボード１３１または他のデバイスが割込み処理を要求した場合、割込みコントローラ１１３が割込み信号線１０２（割込みを通知するための信号線）を介して割込み信号を出力する。各デバイスからの割込み処理の要求および割込みコントローラ１１３による割込み信号の出力を「割込み」という。
但し、図２においてプリンタ１３４、スキャナ１３５および外付けＨＤＤ１３６は割込み信号線１０２を共有し、割込み信号線１０２を共有するこれらのデバイスは共通の割込み番号を用いて割込みを発生する。このため、これらのデバイスのうちいずれかのデバイスが割込みを発生した場合、割込みコントローラ１１３は割込みを発生したデバイスを特定することはできない。このような割込みを「共有割込み」という。
実施の形態において、デバイス１３０Ａ・１３０Ｂ・１３０Ｃ（図１参照）は、プリンタ１３４、スキャナ１３５および外付けＨＤＤ１３６のように、割込み信号線１０２を共有して共有割込みを発生するデバイスである。
【００１８】
図１において、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃは、デバイス１３０Ａ・１３０Ｂ・１３０Ｃ（またはこれらのうちいずれかのデバイス）を使用するための機能「〜部」としてデバイスドライバを備える。
実施の形態において、ＯＳ１２０Ａはデバイス１３０Ａを占有し、デバイス１３０Ａを使用するためのデバイスドライバ１２１Ａを備える。ＯＳ１２０Ｂはデバイス１３０Ｂを占有し、デバイス１３０Ｂを使用するためのデバイスドライバ１２１Ｂを備える。また、ＯＳ１２０Ｃはデバイス１３０Ｃを占有し、デバイス１３０Ｃを使用するためのデバイスドライバ１２１Ｃを備える。
【００１９】
仮想マシンモニタ２００は、ＯＳ制御部２０１、ドライバ制御部２０２、割込み通知部２１０（割込み検出部、割込み処理部推定部、割込み通知部の一例）および割込み推定頻度テーブル登録部２２０を備える。
さらに、仮想マシンモニタ２００は、各ＯＳ用の割込み発生時刻テーブル２８０（割込み発生時刻記憶部の一例）および割込み推定頻度テーブル２９０（割込み推定頻度記憶部の一例）を備える。
【００２０】
ＯＳ制御部２０１は、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃに対してハードウェア資源を割り当てることによって、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃを切り替えながら動作させる。
ドライバ制御部２０２は、各ＯＳ（１２０Ａ〜１２０Ｃ）のデバイスドライバ（１３０Ａ〜１３０Ｃ）を制御する。
【００２１】
各ＯＳ用の割込み推定頻度テーブル２９０は、当該ＯＳに対して発生する割込みの頻度の推定値（以下、「割込み推定頻度」という）に関する情報を示す。
【００２２】
各ＯＳ用の割込み発生時刻テーブル２８０は、当該ＯＳに対して割込みが発生した時刻（以下、「割込み発生時刻」という）に関する情報を示す。
【００２３】
割込み通知部２１０は、デバイス１３０Ａ・１３０Ｂ・１３０ＣからいずれかのＯＳに対して発生する割込みを検出する。
割込みを検出した場合、割込み通知部２１０は、割込みが発生したＯＳを各ＯＳ用の割込み推定頻度テーブル２９０および割込み発生時刻テーブル２８０に基づいて推測し、推測したＯＳに対して割込みを通知する。推測が間違っていた場合、割込み通知部２１０は、他のＯＳに対して割込みを通知する。
【００２４】
割込み推定頻度テーブル登録部２２０は、割込み推定頻度テーブル２９０を生成し、生成した割込み推定頻度テーブル２９０をメモリ１１２に記憶する。
【００２５】
図３は、実施の形態１における割込み推定頻度テーブル２９０の一例を示す図である。
実施の形態１における割込み推定頻度テーブル２９０について、図３に基づいて説明する。
【００２６】
割込み推定頻度テーブル２９０は、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃ毎に設けられる。
割込み推定頻度テーブル２９０は、デバイス１３０Ａ・１３０Ｂ・１３０Ｃ毎に割込み推定頻度を含む。
例えば、割込み推定頻度テーブル２９０は、割込み推定頻度として、単位時間当たりの割込み回数（例えば「１０回／秒」）、割込みが発生する割込み周期（例えば「０．１秒」）またはこれらの範囲（例えば「５〜１５回／秒」「０．０５〜０．２秒」）を示す。
【００２７】
図４は、実施の形態１における割込み発生時刻テーブル２８０の一例を示す図である。
実施の形態１における割込み発生時刻テーブル２８０について、図４に基づいて説明する。
【００２８】
割込み発生時刻テーブル２８０は、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃ毎に設けられる。
割込み発生時刻テーブル２８０は、デバイス１３０Ａ・１３０Ｂ・１３０Ｃ毎に割込みが発生した前回の割込み発生時刻を含む。
【００２９】
図５は、実施の形態１における仮想計算機システム１００の割込み制御方法を示すフローチャートである。
実施の形態１における仮想計算機システム１００の割込み制御方法について、図５に基づいて説明する。
【００３０】
まず、各ＯＳ用の割込み推定頻度テーブル２９０を登録（生成および記憶）するための前処理について説明する。
【００３１】
Ｓ１０１において、仮想マシンモニタ２００のＯＳ制御部２０１は、ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃを起動する。
仮想マシンモニタ２００によって起動されたＯＳ１２０Ａ・１２０Ｂ・１２０Ｃは、割込み推定頻度テーブル２９０の登録を要求するためのテーブル登録要求を生成し、生成したテーブル登録要求を仮想マシンモニタ２００に対して出力する（割込み推定頻度テーブル登録部２２０の呼び出し）。
テーブル登録要求は、デバイス毎の割込み推定頻度を含む。デバイス毎の割込み推定頻度は、当該ＯＳの使用者によって指定され、または予めメモリ１１２に記憶されているものとする。
Ｓ１０１の後、Ｓ１０２に進む。
【００３２】
Ｓ１０２において、仮想マシンモニタ２００の割込み推定頻度テーブル登録部２２０は、テーブル登録要求に含まれるデバイス毎の割込み推定頻度を用いて、テーブル登録要求を出力したＯＳ用の割込み推定頻度テーブル２９０（図３参照）を生成する。
また、割込み推定頻度テーブル登録部２２０は、現在時刻を割込み発生時刻の初期値として用いて、テーブル登録要求を出力したＯＳ用の割込み発生時刻テーブル２８０（図４参照）を生成する。
そして、割込み推定頻度テーブル登録部２２０は、生成した割込み推定頻度テーブル２９０および割込み発生時刻テーブル２８０をメモリ１１２に記憶する。
Ｓ１０２により、前処理は終了する。
【００３３】
次に、いずれかのデバイス（１３０Ａ〜１３０Ｃ）から割込みが発生した場合の割込み制御処理について説明する。
【００３４】
Ｓ１１１において、いずれかのデバイス（１３０Ａ〜１３０Ｃ）がいずれかのＯＳ（１２０Ａ〜１２０Ｃ）に対して割込みを発生する（割込み通知部２１０の呼び出し）。
以下、割込みを発生したデバイスを「割込みデバイス」という。
Ｓ１１１の後、Ｓ１２１に進む。
【００３５】
Ｓ１２１において、仮想マシンモニタ２００の割込み通知部２１０は、Ｓ１１１で発生した割込みを検出する。以下、割込みを検出した時刻を「割込み検出時刻」という。
Ｓ１２１の後、Ｓ１２２に進む。
【００３６】
Ｓ１２２において、割込み通知部２１０は、各ＯＳ用の割込み推定頻度テーブル２９０（図３参照）および割込み発生時刻テーブル２８０（図４参照）を参照し、割込みが発生したＯＳを推定する。つまり、割込み通知部２１０は、割込みが発生したＯＳの候補を選択する。
以下、割込みが発生したＯＳを「割込みＯＳ」といい、割込みが発生したＯＳの候補を「割込みＯＳ候補」という。
【００３７】
例えば、割込み通知部２１０は、割込みＯＳ候補を以下のように選択する。
割込み通知部２１０は、ＯＳ毎に、割込み推定頻度テーブル２９０が示す割込み推定頻度に基づいて割込み周期の推定値を算出する。
割込み通知部２１０は、ＯＳ毎に、割込み発生時刻テーブル２８０が示す前回の割込み発生時刻から今回の割込み検出時刻までの経過時間（以下、「割込み経過時間」という）を算出する。
割込み通知部２１０は、ＯＳ毎に、割込み周期の推定値と割込み経過時間との時間差（以下、「割込み頻度誤差」という）を算出する。
そして、割込み通知部２１０は、割込み頻度誤差が所定の誤差範囲内の値であるＯＳを割込みＯＳ候補として選択する。
【００３８】
割込みＯＳ候補が複数存在する場合、割込み通知部２１０は、全ての割込みＯＳ候補を選択する。つまり、全ての割込みＯＳ候補について以降の処理（Ｓ１２３からＳ１３５）が実行される。但し、割込み通知部２１０は、所定の優先順位に従って最も優先順位が高い割込みＯＳ候補（例えば、割込み頻度誤差が最も小さい割込みＯＳ候補）だけを選択しても構わない。
割込みＯＳ候補が一つも存在しない場合、割込み通知部２１０は、所定の優先順位に従って最も優先順位が高いＯＳを割込みＯＳ候補として選択する。例えば、割込み通知部２１０は、割込み頻度誤差が最も小さいＯＳを割込みＯＳ候補として選択する。
但し、割込み通知部２１０は、割込み頻度誤差が所定の誤差範囲内の値であるか否かに関わらず、割込み頻度誤差が最も小さいＯＳを割込みＯＳ候補して選択しても構わない。
【００３９】
例えば、ＯＳ１２０Ａ用の割込み推定頻度テーブル２９０が示すデバイス１３０Ａの割込み推定頻度が「１０回／秒」であり、ＯＳ１２０Ａ用の割込み発生時刻テーブル２８０が示すデバイス１３０Ａの前回の割込み発生時刻が「００時００分００秒０００ミリ秒」であるものとする。また、今回の割込み検出時刻が「００時００分００秒２００ミリ秒」であるものとする。
この場合、割込み周期の推定値は「０．１秒（＝１０回／秒）」である。また、前回の割込み発生時刻「００時００分００秒０００ミリ秒」から今回の割込み検出時刻「００時００分００秒２００ミリ秒」までの時間は「２００ミリ秒」であるため、割込み経過時間は「０．２秒（＝２００ミリ秒）」である。
したがって、デバイス１３０Ａに対するＯＳ１２０Ａの割込み頻度誤差は「０．１秒（＝０．２秒−０．１秒）」である。
割込み通知部２１０は、デバイス１３０Ｂ・１３０ＣについてもＯＳ１２０Ａの割込み頻度誤差を算出する。デバイス１３０Ａ・１３０Ｂ・１３０Ｃに対するＯＳ１２０Ａの割込み頻度誤差に所定の誤差範囲内の値が存在する場合、ＯＳ１２０Ａは割込みＯＳ候補である。
【００４０】
Ｓ１２２の後、Ｓ１２３に進む。
【００４１】
Ｓ１２３において、割込み通知部２１０は、Ｓ１２１で検出した割込みを割込みＯＳ候補のデバイスドライバに対して通知する。
Ｓ１２３の後、Ｓ１３１に進む。
【００４２】
Ｓ１３１において、割込みＯＳ候補のデバイスドライバは、Ｓ１２３で通知された割込みを受信する。
Ｓ１３１の後、Ｓ１３２に進む。
【００４３】
Ｓ１３２において、割込みＯＳ候補のデバイスドライバは、割込みＯＳ候補が占有しているデバイスで割込みが発生したことを確認するため、当該デバイスの割込みフラグレジスタを参照するための参照コマンドを出力する。
割込みフラグレジスタとは、割込みが発生しているか否かを示す割込みフラグが設定されるレジスタである。各デバイス（１３０Ａ〜１３０Ｃ）は割込みフラグレジスタを備える。
参照コマンドは、割込みＯＳ候補が占有しているデバイス（以下、「占有デバイス」という）を識別するデバイス識別子を含む。
【００４４】
仮想マシンモニタ２００のドライバ制御部２０２は、割込みＯＳ候補のデバイスドライバから出力された参照コマンドを検出する。
そして、ドライバ制御部２０２は、割込みＯＳ候補のデバイスドライバの代わりに占有デバイスの割込みフラグレジスタを参照し、割込みＯＳ候補のデバイスドライバに割込みフラグのフラグ値を通知する。
例えば、各デバイスの割込みフラグレジスタにアクセスするための信号線（バス）はデバイス毎に設けられ、ドライバ制御部２０２は占有デバイス用の信号線を介して占有デバイスの割込みフラグレジスタを参照する。
【００４５】
割込みＯＳ候補のデバイスドライバは、通知された割込みフラグのフラグ値に基づいて、割込みＯＳ候補の占有デバイスが割込みを発生した否かを判定する。
【００４６】
例えば、デバイス１３０Ａが割込みを発生した場合、デバイス１３０Ａの割込みフラグのフラグ値は「１（割込みが発生した）」である。一方、デバイス１３０Ｂ・１３０Ｃの割込みフラグのフラグ値は「０（割込みが発生していない）」である。
デバイス１３０Ａを占有しているＯＳ１２０Ａが割込みＯＳ候補である場合、ＯＳ１２０Ａのデバイスドライバ１２１Ａは、デバイス１３０Ａの割込みフラグレジスタに対する参照コマンドを出力する。この参照コマンドに対して、仮想マシンモニタ２００のドライバ制御部２０２は、デバイス１３０Ａの割込みフラグのフラグ値「１」をデバイスドライバ１２１Ａに通知する。
そして、デバイスドライバ１２１Ａは、通知されたフラグ値が「１」であるため、ＯＳ１２０Ａの占有デバイス（１３０Ａ）で割込みが発生したと判定する。
一方、デバイス１３０Ｂ・１３０Ｃを占有しているＯＳ１２０Ｂ・１２０Ｃが割込みＯＳ候補である場合、ドライバ制御部２０２から通知されるフラグ値は「０」である。このため、デバイスドライバ１２１Ｂ・１２１Ｃは、ＯＳ１２０Ｂ・１２０Ｃの占有デバイス（１３０Ｂ・１３０Ｃ）で割込みが発生していないと判定する。
【００４７】
割込みＯＳ候補の占有デバイスが割込みを発生した場合、処理はＳ１３３に進む。
割込みＯＳ候補の占有デバイスが割込みを発生していない場合、処理はＳ１３５に進む。
【００４８】
Ｓ１３３において、割込みＯＳ候補（＝割込みＯＳ）のデバイスドライバは、所定の割込み処理を実行する。
Ｓ１３３の後、Ｓ１３４に進む。
【００４９】
Ｓ１３４において、割込みＯＳ候補のデバイスドライバは、割込み処理を実行したことを通知するための割込み完了通知を仮想マシンモニタ２００に出力する（割込み通知部２１０の呼び出し）。割込み完了通知は、割込みＯＳ候補（＝割込みＯＳ）を識別するＯＳ識別子と、割込みＯＳ候補の占有デバイス（＝割込みデバイス）を識別するデバイス識別子とを含む。
仮想マシンモニタ２００の割込み通知部２１０は、割込み完了通知に基づいて割込みＯＳ候補用の割込み発生時刻テーブル２８０（図４参照）に割込みデバイスの今回の割込み発生時刻（新たな前回の割込み発生時刻）として割込み検出時刻を記憶する。
Ｓ１３４により、Ｓ１１１で発生した割込みに対する割込み制御処理が終了する。
【００５０】
Ｓ１３５において、割込みＯＳ候補（≠割込みＯＳ）のデバイスドライバは、占有デバイスで割込みが発生していないことを通知するための割込み未発生通知を仮想マシンモニタ２００に出力する（割込み通知部２１０の呼び出し）。
Ｓ１３５の後、Ｓ１２２に戻る。そして、Ｓ１２２において、仮想マシンモニタ２００の割込み通知部２１０は、割込みＯＳ候補として選択したＯＳを除いた残りのＯＳの中から新たな割込みＯＳ候補を選択する。その後、新たな割込みＯＳ候補を対象にしてＳ１２３以降の処理が実行される。
但し、Ｓ１２２における前回の処理で複数の割込みＯＳ候補が選択された場合、全ての割込みＯＳ候補から割込み未発生通知が出力されなければ、Ｓ１２２に戻らなくてよい。
【００５１】
実施の形態１は、例えば、以下のような特徴および効果を有する。
仮想マシンモニタ２００は、ＯＳ毎の割込み推定頻度に応じて各ＯＳに割込みを通知する。これにより、全てのＯＳに割込みを通知する場合に比べて、割込みの通知にかかるオーバヘッドを減らすことができる。
例えば、ＯＳ１２０Ａに対する割込み推定頻度が「１０回／秒」であり、１秒間に１００回の割込みが発生した場合、仮想マシンモニタ２００は、１００回の割込みのうち約１０分の１の割込み、つまり、約１０回の割込みをＯＳ１２０Ａに通知する。
【００５２】
仮想マシンモニタ２００は、ＯＳ毎の割込み推定頻度に基づいて割込みＯＳを推定することにより、割込みＯＳである可能性が高いと思われるＯＳから順番に割込みを通知することができる。
このため、仮想マシンモニタ２００は、一定の順番やランダムな順番で複数のＯＳに対して割込みを通知する場合に比べて余計な通知（割込みＯＳ以外のＯＳに対する割込みの通知）を減らすことができる。
つまり、複数のデバイスが割込み信号線を共有するなどの理由によって複数のＯＳから割込みＯＳを特定することができない場合、仮想マシンモニタ２００は、効率良く割込みを通知することができる。
【００５３】
仮想マシンモニタ２００は、ＯＳ毎にデバイス別の割込み推定頻度を記憶する代わりに、ＯＳ毎に一つの割込み推定頻度を記憶しても構わない。
【００５４】
仮想マシンモニタ２００の割込み通知部２１０または割込み推定頻度テーブル登録部２２０の呼び出しは、例えば、仮想マシンモニタ２００やハイパーバイザが提供するサービスコールを利用して行われる。
【００５５】
ここで、仮想計算機１０１のハードウェアについて補足説明を行う。
図２に示したように、仮想計算機１０１（コンピュータの一例）は、ＣＰＵ１１１やメモリ１１２を備えている。ＣＰＵ１１１は、バスを介してメモリ１１２、割込みコントローラ１１３、通信ボード（図示省略）、キーボード１３１、マウス１３２、ディスプレイ１３３、プリンタ１３４、スキャナ１３５、外付けＨＤＤ１３６などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。メモリ１１２や外付けＨＤＤ１３６は記憶装置または記憶部の一例であり、通信ボードは通信装置または通信部の一例である。
【００５６】
通信ボードは、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続する。
【００５７】
メモリ１１２または外付けＨＤＤ１３６には、ＯＳ（ホストＯＳおよび仮想ＯＳ）、プログラム群、ファイル群が記憶されている。
【００５８】
プログラム群には、実施の形態において「〜部」や「ＯＳ」として説明する機能を実行するプログラムが含まれる。プログラム（例えば、割込み制御プログラムやデバイスドライバ）は、ＣＰＵ１１１により読み出され実行される。すなわち、プログラムは、「〜部」や「ＯＳ」としてコンピュータを機能させるものであり、また「〜部」や「ＯＳ」の手順や方法をコンピュータに実行させるものである。
【００５９】
ファイル群には、実施の形態において説明する「〜部」や「ＯＳ」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００６０】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
フローチャートなどに基づいて説明する実施の形態の処理はハードウェア（例えば、ＣＰＵ１１１）を用いて実行される。
【００６１】
実施の形態において「〜部」や「ＯＳ」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」や「ＯＳ」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００６２】
実施の形態１において、例えば、以下のような割込み制御装置（仮想計算機１０１）について説明した。括弧内に実施の形態で用いた符号および名称を記す。
割込み制御装置は、割込み推定頻度記憶部（割込み推定頻度テーブル２９０）と、割込み検出部（割込み通知部２１０）と、割込み処理部推定部（割込み通知部２１０）と、割込み通知部（割込み通知部２１０）とを備える。
割込み推定頻度記憶部は、特定の処理を実行する複数の処理部（ＯＳ１２０Ａ・１２０Ｂ・１２０Ｃ）の処理部毎に、１つ以上のデバイスから成るデバイス群が当該処理部に対して割込みを発生する頻度の推定値として予め定められる割込み推定頻度を記憶する。
割込み検出部は、前記デバイス群が発生する割込みを検出する。
割込み処理部推定部は、前記割込み検出部によって割込みが検出された場合、前記割込み推定頻度記憶部に記憶される前記複数の処理部の処理部毎の割込み推定頻度に基づいて、前記複数の処理部のうちいずれかの処理部を前記割込みが発生した割込み処理部（割込みＯＳ）として推定する。
割込み通知部は、前記割込み処理部推定部によって前記割込み処理部として推定された処理部（割込みＯＳ候補）に対して、前記割込み検出部によって検出された前記割込みを通知する。
【００６３】
前記割込み処理部推定部は、前記割込み通知部によって前記割込みが通知された前記処理部が前記割込み処理部でなかった場合、新たな処理部を前記割込み処理部として推定する。
前記割込み通知部は、前記割込み処理部推定部によって前記割込み処理部として推定された前記新たな処理部に対して前記割込みを通知する。
【００６４】
前記割込み制御装置は、さらに、前記複数の処理部の処理部毎に、処理部に対して割込みが発生した割込み発生時刻を記憶する割込み発生時刻記憶部（割込み発生時刻テーブル２８０）を備える。
前記割込み処理部推定部は、前記複数の処理部の処理部毎に、前記割込みが検出された割込み検出時刻と前記割込み発生時刻記憶部に記憶された前記割込み発生時刻とに基づいて、前記割込みが当該処理部に対して発生した場合の割込み発生頻度（割込み経過時間）を算出する。
前記割込み処理部推定部は、前記複数の処理部の処理部毎に割込み発生頻度と割込み推定頻度とを比較し、比較結果に基づいて前記割込み処理部を推定する。
【００６５】
実施の形態２．
実際に発生した割込みの頻度に基づいて各ＯＳの割込み推定頻度を更新することによって、割込み推定頻度テーブル２９０を最適化する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００６６】
図６は、実施の形態２における仮想計算機システム１００の構成図である。
実施の形態２における仮想計算機システム１００の構成について、図６に基づいて説明する。
【００６７】
仮想マシンモニタ２００は、割込み推定頻度テーブル登録部２２０の代わりに、割込み推定頻度テーブル管理部２３０を備える。
割込み推定頻度テーブル管理部２３０は、実際に発生した割込みの頻度に基づいて各ＯＳの割込み推定頻度を更新することによって、割込み推定頻度テーブル２９０を最適化する。
【００６８】
その他の構成は、実施の形態１と同じである（図１、２参照）。
【００６９】
図７は、実施の形態２における仮想計算機システム１００の割込み制御方法を示すフローチャートである。
実施の形態２における仮想計算機システム１００の割込み制御方法について、図７に基づいて説明する。
【００７０】
仮想計算機システム１００は、実施の形態１で説明した割込み制御方法の処理（図５参照）に加えて、Ｓ１４１を実行する。
その他の処理（Ｓ１０１からＳ１３５）は実施の形態１と同じである。但し、Ｓ１０２において割込み推定頻度テーブル２９０を登録する構成は、割込み推定頻度テーブル登録部２２０ではなく、割込み推定頻度テーブル管理部２３０である。
以下、Ｓ１４１について説明する。
【００７１】
Ｓ１４１において、割込み推定頻度テーブル管理部２３０は、Ｓ１３４で出力された割込み完了通知に含まれる割込みＯＳのＯＳ識別子と割込みデバイスのデバイス識別子とに基づいて、割込みＯＳと割込みデバイスとを特定する。
割込み推定頻度テーブル管理部２３０は、割込みＯＳ用の割込み発生時刻テーブル２８０に含まれる割込み発生時刻のうち割込みデバイスの割込み発生時刻に基づいて、割込みデバイスが割込みＯＳに対して発生した割込みの頻度を新たな割込み推定頻度として算出する。
割込み推定頻度テーブル管理部２３０は、割込みＯＳ用の割込み推定頻度テーブル２９０に含まれる割込み推定頻度のうち割込みデバイスの割込み推定頻度を新たな割込み推定頻度に更新する。
【００７２】
例えば、割込み推定頻度テーブル管理部２３０は、前回の割込み発生時刻から今回の割込み発生時刻までの時間を割込み周期として算出し、算出した割込み周期に基づいて割込みの頻度（新たな割込み推定頻度）を算出する。
また例えば、割込み推定頻度テーブル管理部２３０は、複数の割込み発生時刻に基づいて単位時間当たりの割込み回数を割込みの頻度（新たな割込み推定頻度）として算出する。
但し、割込み推定頻度テーブル管理部２３０は、その他の算出方法によって割込みの頻度（新たな割込み推定頻度）を算出しても構わない。
【００７３】
Ｓ１４１で割込み推定頻度テーブル２９０を更新することにより、各ＯＳに対する割込みの発生状況に応じて割込みを効率的に通知することができる。
【００７４】
実施の形態２において、例えば、以下のような割込み制御装置（仮想計算機１０１）について説明した。括弧内に実施の形態で用いた符号および名称を記す。
前記割込み制御装置は、割込み推定頻度更新部（割込み推定頻度テーブル管理部２３０）を備える。
割込み推定頻度更新部は、前記割込み通知部（割込み通知部２１０）によって前記割込みが通知された前記処理部（割込みＯＳ候補）が前記割込み処理部（割込みＯＳ）であった場合、前記処理部の新たな割込み推定頻度を算出し、前記処理部の前記割込み推定頻度を前記新たな割込み推定頻度に更新する。
【００７５】
前記割込み制御装置は、前記複数の処理部の処理部毎に、処理部に対して割込みが発生した割込み発生時刻を記憶する割込み発生時刻記憶部（割込み発生時刻テーブル２８０）を備える。
前記割込み推定頻度更新部は、前記割込み検出時刻と前記割込み発生時刻記憶部に記憶される前記処理部の前記割込み発生時刻とに基づいて前記新たな割込み推定頻度を算出する。
【符号の説明】
【００７６】
１００  仮想計算機システム、１０１  仮想計算機、１０２  割込み信号線、１１０  ハードウェア、１１１  ＣＰＵ、１１２  メモリ、１１３  割込みコントローラ、１２０Ａ，１２０Ｂ，１２０Ｃ  ＯＳ、１２１Ａ，１２１Ｂ，１２１Ｃ  デバイスドライバ、１３０  デバイス、１３１  キーボード、１３２  マウス、１３３  ディスプレイ、１３４  プリンタ、１３５  スキャナ、１３６  外付けＨＤＤ、２００  仮想マシンモニタ、２０１  ＯＳ制御部、２０２  ドライバ制御部、２１０  割込み通知部、２２０  割込み推定頻度テーブル登録部、２３０  割込み推定頻度テーブル管理部、２８０  割込み発生時刻テーブル、２９０  割込み推定頻度テーブル。
【図１】
2014006837.tif 000003
【図２】
2014006837.tif 000004
【図３】
2014006837.tif 000005
【図４】
2014006837.tif 000006
【図５】
2014006837.tif 000007
【図６】
2014006837.tif 000008
【図７】
2014006837.tif 000009