(57)【特許請求の範囲】
【請求項１】
複数のデバイスと、
前記複数のデバイスが共有する割込み信号線を介して接続され、
前記複数のデバイスに割込みが発生した場合に、該複数のデバイスのうちいずれかからの割込みであるかを判定し、複数のＯＳのうち前記割込みを発生したデバイスに対応するＯＳを起動させる計算機と、
を備えた計算機システムにおいて、
前記計算機は、
前記複数のデバイスのうち割込みが発生したデバイスを判定するための情報を記憶した情報テーブルと、
前記複数のデバイスのうちいずれかから割込みが発生した場合に、前記情報テーブルを参照して割込みを発生したデバイスを判定し、前記割込みを発生したデバイスに対応するＯＳに割込みが発生したことを示す割込み発生信号を送信する割込み判定部と、
前記割込み発生信号を受信したＯＳから送信される前記割込みを発生したデバイスを確認するための確認信号を受信し、前記割込み判定部によって判定された前記割込みを発生したデバイスに関する情報を前記割込みが発生したデバイスに対応するＯＳに送信する割込み発生模擬部と、
を有することを特徴とする計算機システム。
【請求項２】
前記複数のデバイスは、割込み発生の有無を識別するための割込み発生フラグレジスタを備え、
前記割込みが発生したデバイスを判定するための情報は、前記割込み発生フラグレジスタのアドレス情報を有し、
前記割込み判定部は、前記複数のデバイスのうちいずれかから割込みが発生した場合に、前記情報テーブルを参照して前記割込み発生フラグレジスタのアドレス情報に基づいて前記割込みが発生したデバイスの前記割込み発生フラグレジスタにアクセスして割込みが発生したデバイスを判定することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記計算機は、
前記情報テーブルに記憶された前記割込みが発生したデバイスを判定するための情報の登録、変更、又は削除の指示を行う情報テーブル登録更新部を有することを特徴とする請求項１に記載の計算機システム。
【請求項４】
割込み信号線を共有する複数のデバイスと該割込み信号線で接続され、前記複数のデバイスのうち割込みが発生したデバイスに対応するＯＳを起動させる計算機において、
前記複数のデバイスのうち割込みを発生したデバイスを判定するための情報を記憶した情報テーブルと、
前記複数のデバイスのうちいずれかから割込みが発生した場合に、前記情報テーブルを参照して割込みを発生したデバイスを判定し、前記割込みを発生したデバイスに対応するＯＳに割込みが発生したことを示す割込み発生信号を送信する割込み判定部と、
前記割込み発生信号を受信したＯＳから送信される前記割込みを発生したデバイスを確認するための確認信号を受信し、前記割込み判定部によって判定された前記割込みを発生したデバイスに関する情報を該ＯＳに送信する割込み発生模擬部と、
を有することを特徴とする計算機。
【請求項５】
複数のデバイスと、
前記複数のデバイスが共有する割込み信号線を介して接続され、
前記複数のデバイスに割込みが発生した場合に、該複数のデバイスのうちいずれかからの割込みであるかを判定し、前記割込みを発生したデバイスに対応するＯＳを起動させる計算機と、を備えた計算機システムの割込み処理方法において、
前記複数のデバイスのうちいずれかから割込みが発生した場合に、前記複数のデバイスのうち割込みを発生したデバイスを判定するための情報を記憶した情報テーブルを参照し、割込みを発生したデバイスを判定する判定ステップと、
前記割込みを発生したデバイスに対応するＯＳに割込みが発生したことを示す割込み発生信号を送信するステップと、
前記割込み発生信号を受信したＯＳが送信する割込みを発生したデバイスを確認するための確認信号を受信するステップと、
前記割込み判定部によって判定された前記割込みを発生したデバイスに関する情報を該ＯＳに送信する応答ステップと、
を有することを特徴とする計算機システムの割込み処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデバイスが割込み信号線を共有して計算機へ割込みを通知する場合に、割込みを発生したデバイスを特定して割込み処理を実行させる計算機システムに関するものである。
【背景技術】
【０００２】
複数のデバイスが同一の割込み番号を共有する場合に、複数のオペレーティングシステム（ＯＳ）を切替えて割込み処理を行うマルチオペレーティング計算機システムとして、従来、ＯＳ間制御部が割込みを発生したデバイスの判定をし、複数のＯＳの中から割込みを発生したデバイスに割付けられたＯＳを起動させるものがある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２２９０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような複数のデバイスが割込み信号線を共有するシステムにおいては、ＯＳ間制御部が割込みを発生したデバイスに割り付けられたＯＳを起動した後、このＯＳが割込みを発生したデバイスの確認を行うことが多い。
【０００５】
しかしながら、デバイス識別レジスタがリードによりクリアされるレジスタで構成されている場合、ＯＳ間制御部がこのレジスタを参照する時にデバイス識別レジスタの値がクリアされ、その後起動したＯＳが割込み発生デバイスの確認をできないという課題があった。
【０００６】
本発明はこのような課題を解決するためになされたもので、デバイス識別レジスタの種別によらず、ＯＳから割込み発生デバイスを確認できる計算機システムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る計算機システムは、複数のデバイスと、前記複数のデバイスが共有する割込み信号線を介して接続され、前記複数のデバイスに割込みが発生した場合に、該複数のデバイスのうちいずれかからの割込みであるかを判定し、複数のＯＳのうち前記割込みを発生したデバイスに対応するＯＳを起動させる計算機と、を備えた計算機システムにおいて、前記計算機は、前記複数のデバイスのうち割込みが発生したデバイスを判定するための情報を記憶した情報テーブルと、前記複数のデバイスのうちいずれかから割込みが発生した場合に、前記情報テーブルを参照して割込みを発生したデバイスを判定し、前記割込みを発生したデバイスに対応するＯＳに割込みが発生したことを示す割込み発生信号を送信する割込み判定部と、前記割込み発生信号を受信したＯＳから送信される前記割込みを発生したデバイスを確認するための確認信号を受信し、前記割込み判定部によって判定された前記割込みを発生したデバイスに関する情報を前記割込みが発生したデバイスに対応するＯＳに送信する割込み発生模擬部と、を有することを特徴とする。
【０００８】
本発明に係る計算機は、割込み信号線を共有する複数のデバイスと該割込み信号線で接続され、前記複数のデバイスのうち割込みが発生したデバイスに対応するＯＳを起動させる計算機において、前記複数のデバイスのうち割込みを発生したデバイスを判定するための情報を記憶した情報テーブルと、前記複数のデバイスのうちいずれかから割込みが発生した場合に、前記情報テーブルを参照して割込みを発生したデバイスを判定し、前記割込みを発生したデバイスに対応するＯＳに割込みが発生したことを示す割込み発生信号を送信する割込み判定部と、前記割込み発生信号を受信したＯＳから送信される前記割込みを発生したデバイスを確認するための確認信号を受信し、前記割込み判定部によって判定された前記割込みを発生したデバイスに関する情報を該ＯＳに送信する割込み発生模擬部と、を有することを特徴とする。
【０００９】
本発明に係る計算機システムの割込み処理方法は、複数のデバイスと、前記複数のデバイスが共有する割込み信号線を介して接続され、前記複数のデバイスに割込みが発生した場合に、該複数のデバイスのうちいずれかからの割込みであるかを判定し、前記割込みを発生したデバイスに対応するＯＳを起動させる計算機と、を備えた計算機システムの割込み処理方法において、前記複数のデバイスのうちいずれかから割込みが発生した場合に、前記複数のデバイスのうち割込みを発生したデバイスを判定するための情報を記憶した情報テーブルを参照し、割込みを発生したデバイスを判定する判定ステップと、
前記割込みを発生したデバイスに対応するＯＳに割込みが発生したことを示す割込み発生信号を送信するステップと、前記割込み発生信号を受信したＯＳが送信する割込みを発生したデバイスを確認するための確認信号を受信するステップと、前記割込み判定部によって判定された前記割込みを発生したデバイスに関する情報を該ＯＳに送信する応答ステップと、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、計算機システム、計算機、計算機システムの割込み処理方法は、上記構成を備えたことにより、デバイス識別レジスタの種別によらず、ＯＳから割込み発生デバイスを確認できる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る計算機システムの構成を示す図である。
【図２】実施の形態１に係る計算機システムの機能ブロック図である。
【図３】実施の形態１に係る共有割込み判定テーブルの一例を示す図である。
【図４】実施の形態１における共有割込み判定テーブルへの情報の登録手順を示すシーケンス図である。
【図５】実施の形態１に係る計算機システムの割込み処理手順を示すシーケンス図である。
【図６】実施の形態１における共有割込み判定テーブルからの情報の削除手順を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
本発明を実施するための実施の形態１に係る計算機システムを図１ないし図６を用いて説明する。
【００１３】
図１において、計算機システム１は、計算機２と、ケーブルやネットワーク等を介して計算機２に接続されたキーボード31、マウス32、ディスプレイ33、プリンタ34、スキャナ35、外付けハードディスク36、など周辺機器であるデバイス３と、を備えている。計算機２は、ＣＰＵ４、割込みコントローラ５、メモリ６、割込み信号線７、等を備えている。なお、デバイス３の一部または全部は、計算機２に内蔵しても良い。
【００１４】
計算機２の内外に設けられた各デバイス３は、ＰＣＩ（Peripheral Component Interconnect）バス８を介して割込みコントローラ５に接続され、複数のデバイス３間で割込み信号線７を共有している。計算機２に設けられた割込み信号線７は、通常、ＰＣＩバス接続されたデバイス３の数よりも少ない。このため、各デバイス３は割込み信号線７を共有するが、割込み信号線７の数がＰＣＩバスで接続されたデバイス３の数以上の場合にも共有することができる。
【００１５】
図２は、計算機システム１の一例を示す機能ブロック図である。
計算機システム１は、ハードウェアのデバイス部30と、ソフトウェアの仮想マシンモニタ10及びオペレーティングシステム部20（以下、ＯＳ部20と称する）とで構成されている。ソフトウェアで構成される仮想マシンモニタ10及びＯＳ部20は、物理的にはメモリ６に記憶され、ＣＰＵ４からの指令（指示）に従い動作するものである。
なお、デバイス部30はデバイス３Ａ〜３Ｃを総称するものであればよく、物理的な構成として備えていなくても良い。ＯＳ部20も同様に、ＯＳ21Ａ〜21Ｃを総称するものであればよく、物理的な構成として備えていなくても良い。
【００１６】
図２の例では、ＯＳ部20には、デバイス部30のデバイス３Ａ〜３Ｃを操作する３つのＯＳ21Ａ〜21Ｃが設けられ、各ＯＳはデバイスを認識させるソフトウェアとしてデバイスドライバ22Ａ〜22Ｃをそれぞれ１つずつ備えている。ＯＳ21Ａ〜21Ｃは計算機２上で動作するソフトウェアであり、例えばMicrosoft Windows（登録商標）やLinux（登録商標）やリアルタイムOSなどがある。なお、１つのＯＳが複数のデバイスドライバ22Ａ〜22Ｃを備えていても良い。また、ＯＳ21Ａ〜21Ｃは、このＯＳ上で動作する１つ又は複数のアプリケーションプログラムで構成されるアプリケーション部23Ａ〜23Ｃを備えていても良い。
【００１７】
仮想マシンモニタ10は、デバイス部30の各デバイス３Ａ〜３Ｃ上で動作するＯＳ21Ａ〜21Ｃ（又はデバイスドライバ22Ａ〜22Ｃ）の切替え制御を行うソフトウェアであり、ハイパーバイザ、あるいはＯＳ間制御部とも呼ばれる。
【００１８】
仮想マシンモニタ10は、割込みを発生したデバイスを判定するために必要な情報を記憶した共有割込み判定テーブル11、各ＯＳ21Ａ〜21Ｃからの指示に応じて共有割込み判定テーブル11への情報の登録・更新・削除を行う共有割込み判定テーブル登録部12、共有割込み判定テーブル11に格納された情報を参照し、割込みを発生したデバイスがどのデバイスであるかを判定する共有割込み判定部13、デバイス３Ａ〜３Ｃから割込みが発生した場合にＯＳ21Ａ〜21Ｃからデバイス３Ａ〜３Ｃへの確認アクセスを受付け、デバイス３Ａ〜３Ｃの割込み発生を模擬して応答する割込み発生模擬部14、が設けられている。
【００１９】
デバイス部30は３つのデバイス３Ａ〜３Ｃを備えている。デバイス３Ａ〜３Ｃは、計算機２に内蔵しているものと外部接続しているものとで同じ役割を果たすため、図２では区別していない。
【００２０】
図３は、共有割込み判定テーブル11の一例を示している。デバイス３それぞれに対して（ａ）割込み発生フラグレジスタのＩ/Ｏアドレス情報、（ｂ）割込み発生を判定するためのビットマスク値、（ｃ）割込み未発生時の割込み発生フラグレジスタの値、を１つずつ備えている。
【００２１】
割込み発生フラグレジスタとは、各デバイス３に設けられた割込み発生の有無を識別するためのレジスタのことである。通常、データの読み書きは複数ビット単位で行うが、割込み発生フラグレジスタは１ビット又は数ビット程度である。よって、上記（ａ）で読み出したＩ/Ｏアドレスに対応するデータのうち、割込み発生の識別に不要なレジスタをマスクするために上記（ｂ）を用いる。
【００２２】
ここで、計算機システム１の動作を説明する。
【００２３】
・共有割込み判定テーブルへの情報の登録
【００２４】
図４に示すように、ＯＳ部20に設けられたＯＳ21Ａ〜21Ｃは、送信部（図示しない）から指示を送信することで共有割込み判定テーブル登録部12を呼び出し、自身に備えたアプリケーションプログラム23Ａ〜23Ｃやデバイスドライバ22Ａ〜22Ｃの情報を共有割込み判定テーブル11に登録させる（ステップS101）。上記呼び出しは、例えば仮想マシンモニタ10が提供するサービスコールであるハイパーコールを利用することにより可能となる。
【００２５】
共有割込み判定テーブル登録部12は、ＯＳ21Ａ〜21Ｃからの指示に従い、デバイス３Ａ〜３Ｃそれぞれについて共有割込み判定テーブル11を作成し、受信した情報を共有割込み判定テーブル11に登録する（ステップS102）。なお、共有割込み判定テーブル11が既に作成されている場合は、共有割込み判定テーブル登録部12は、ＯＳ21Ａ〜21Ｃからの指示に従い、受信した情報の更新を行う。
【００２６】
・共有割込み発生時の全体処理
【００２７】
図５に示すように、デバイス部30のいずれかのデバイス３Ａ〜３Ｃに割込みが発生すると、割込みを発生したデバイス３はＰＣＩバス８の割込み信号線７を介して共有割込み判定部13に割込み信号を送信する（ステップS111、第１の送信ステップ）。
【００２８】
共有割込み判定部13は、割込み信号を受信すると共有割込み判定テーブル11を参照し、この参照結果に基づき割込みを発生したデバイスを判定する（ステップS112、受信ステップ及び判定ステップ）。
具体的には、共有割込み判定部13が共有割込み判定テーブル11に割込み信号を送信すると、共有割込み判定テーブル11が（ａ）割込み発生フラグレジスタのＩ/Ｏアドレス情報、（ｂ）割込み発生を判定するためのビットマスク値、（ｃ）割込み未発生時の割込み発生フラグレジスタの値、を参照結果として返信する。
【００２９】
共有割込み判定部13は、受信した（ａ）割込み発生フラグレジスタのＩ/Ｏアドレスにアクセスし、このＩ／Ｏアドレスに対応するデバイス３Ａ〜３Ｃ内のレジスタのデータを読み出す。読み出したＩ／Ｏアドレスのデータには割込み発生フラグレジスタ以外の値も含まれているため、読み出したＩ／Ｏアドレスのデータと、共有割込み判定テーブル11から受信した（ｂ）割込み発生を判定するためのビットマスク値との論理積（ＡＮＤ）をとる。
【００３０】
次に、この論理積と共有割込み判定テーブル11から受信した（ｃ）割込み未発生時の割込み発生フラグレジスタの値を比較し、一致する場合はこのデバイスは割込みを発生したデバイスではないと判定し、不一致の場合はこのデバイスが割込みを発生したデバイスであると判定する。
【００３１】
ここで、デバイス３Ａが割込みを発生したとして、以下の説明を行う。
共有割込み判定部13は、割込みを発生したデバイス３Ａを特定すると、割込み発生模擬部14に判定結果を通知する（ステップS113）。判定結果の通知を受けた割込み発生模擬部14は、ＯＳ21Ａから割込み発生を確認する確認信号が送信された場合に自身が呼び出されるように仮想マシンモニタ10に対して設定を行う（ステップS114）。この設定は、例えばメモリコントロールユニット（ＭＭＵ）やＣＰＵの特権モード、Intel VT（Virtualization Technology）やAMD-V（Virtualization）機能によるＩ/Ｏアクセス保護機能を用いて、このＩ/Ｏアドレスへのアクセス保護を行うことで実現できる。
【００３２】
割込み発生模擬部14は設定が完了すると共有割込み判定部13にこれを通知し、共有割込み判定部13は、割込み発生デバイスに対応するデバイスドライバ22Ａを備えたＯＳ21Ａに割込み発生信号を送信する（ステップS115、第２の送信ステップ）。
なお、割込みを発生したデバイスがデバイス３Ｂ、３Ｃの場合は、これらの割込み発生デバイスに対応するデバイスドライバ22Ｂ、22Ｃ、及びこれを備えたＯＳ21Ｂ、21Ｃが上記デバイスドライバ22Ａ及びＯＳ21Ａと同様に動作する。
【００３３】
ＯＳ21Ａは、割込み発生信号を受信すると（ステップS116）、割込みを発生したデバイス３Ａへ割込みを発生しているか否かを確認するため、デバイス３Ａに設けられた割込み発生フラグレジスタを読み出す確認信号（第１の確認信号）をＯＳ21Ａからデバイスドライバ22Ａを介して、もしくはデバイスドライバ22Ａから直接、デバイス３Ａに向けて送信する（ステップS117、確認ステップ）。
なお、割込みを発生したデバイスがデバイス３Ｂ、３Ｃの場合は、デバイスドライバ22Ｂ又はＯＳ21Ｂからデバイス３Ｂの確認信号（第２の確認信号）、デバイスドライバ22Ｃ又はＯＳ21Ｃからデバイス３Ｃの確認信号が送信される。
【００３４】
仮想マシンモニタ10は、この確認信号を検知すると割込み発生模擬部14に通知し（ステップS118）、割込み発生模擬部14は、ステップS114による設定、すなわち確認信号を検知した場合に自身を呼び出す仮想マシンモニタ10への設定を解除する（ステップS119）。
【００３５】
次に、割込み発生模擬部14は受信した確認信号に対し、ステップS113により通知された判定結果に従い、割込みを発生したデバイス３Ａを模擬してこのデバイスの割込み発生フラグレジスタの値をＯＳ21Ａ又はデバイスドライバ22Ａへ返信する（ステップS120、応答ステップ）。
【００３６】
割込み発生模擬部14から割込み発生フラグレジスタの値を受信してＯＳ21Ａ又はデバイスドライバ22Ａは対応するデバイス３Ａの割込み発生を確認し（ステップS121）、このデバイス３Ａに対して割込み処理を実行する（ステップS122）。
【００３７】
・共有割込み判定テーブルからの情報の削除
【００３８】
ここで、デバイス３の交換等により、共有割込み判定テーブル11の登録情報が不要になった場合の削除手順について、図６を用いて説明する。
【００３９】
ＯＳ21は、デバイスドライバ22の無効化やアンロードを行い、これに伴い実行されるアプリケーション部23又はデバイスドライバ22からの指示（指令）により、共有割込み判定テーブル登録部12を呼び出す（ステップS131）。
【００４０】
共有割込み判定テーブル登録部12は、割込み発生模擬部14から仮想マシンモニタ10に対してステップS114による設定（確認信号を検知した場合に自身を呼び出す設定）がなされている場合は設定の解除を通知し（ステップS132）、この通知を受けた割込み発生模擬部14は仮想マシンモニタ10に対する設定を解除する（ステップS133）。
【００４１】
割込み発生模擬部14の仮想マシンモニタ10に対する設定解除を割込み発生模擬部14又は仮想マシンモニタ10からの通知もしくは自身の検知により確認すると、共有割込み判定テーブル登録部12はＯＳ21からの指示に従い、共有割込み判定テーブル11から指示されたデバイス３に関する情報を削除する（ステップS134）。デバイス３に関する情報とは、例えば、デバイス３の識別子、Ｉ/Ｏレジスタのアドレス情報、割込み発生フラグレジスタのビット情報、Ｉ/Ｏレジスタの割込み未発生時のデータ情報、等のことである。
なお、デバイス３に関する全ての情報を削除する場合は、共有割込み判定テーブル11を削除しても良い。
【００４２】
本実施の形態によれば、計算機システム１は、仮想マシンモニタ10が割込みを発生したデバイス３を判定する共有割込み判定部13と、この割込み発生デバイスに関する情報を保持し、ＯＳ21又はデバイスドライバ22から送信される割込み発生の確認信号に対してこのデバイス３を模擬した応答を返す割込み発生模擬部14とを備えたことにより、ＯＳ21はデバイス３の割込み発生フラグレジスタに直接アクセスせず、仮想マシンモニタ10との間でデバイス３の割込み発生有無を確認することが可能となる。これにより、デバイス３に設けられた割込み発生フラグレジスタがリードによりクリアされるレジスタであっても、ＯＳ21から割込みを発生したデバイス３を確認できる。
【００４３】
また、計算機システム１が使用するデバイス３を追加しても、ＯＳ部20や仮想マシンモニタ10の構成を変更することなく、共有割込み判定テーブル11の情報を更新することで、デバイス３の割込みを判定することもできる。
【００４４】
なお、上記実施の形態では、一例として、「情報テーブル」を「共有割込み判定テーブル」、「情報テーブル登録更新部」を「共有割込み判定テーブル登録部」、「割込み判定部」を「共有割込み判定部」として説明した。名称は上記のものに限らず、同様の機能を果たすものであれば「〜手段」、「〜プログラム」等であっても良い。
【符号の説明】
【００４５】
１  計算機システム
２  計算機
３、３Ａ〜３Ｃ  デバイス
７  割込み信号線
８  ＰＣＩ（Peripheral Component Interconnect）バス
10  仮想マシンモニタ
11  共有割込み判定テーブル
12  共有割込み判定テーブル登録部
13  共有割込み判定部
14  割込み発生模擬部
20  ＯＳ部（オペレーティングシステム部）
21、21Ａ〜21Ｃ  ＯＳ
22、22Ａ〜22Ｃ  デバイスドライバ
【図１】
0005617761.tif 000002
【図２】
0005617761.tif 000003
【図３】
0005617761.tif 000004
【図４】
0005617761.tif 000005
【図５】
0005617761.tif 000006
【図６】
0005617761.tif 000007