(57)【要約】【課題】複数のＯＳを切り替えてプロセッサ上で動作させる場合に、安全な動作を実現する。【解決手段】割り込みを管理する特権ソフトウェアと、ＯＳとを記憶するオンチップメモリと、特権ソフトウェアとＯＳとを動作させるプロセッサと、プロセッサ上でＯＳが動作しているときに、デバイスからＯＳへの割り込み通知を検出する検出部と、所定の時間を経過するまでに、ＯＳによる特権ソフトウェアの呼び出しが行われているか否か判断する判断部と、ＯＳによる呼び出しが行われていないと判断された場合、プロセッサに対してリセットを行うプロセッサリセット信号発生部と、を備える。【選択図】        図１
2008158899.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアに従って動作するプロセッサと、
デバイスから前記プロセッサに対する割り込みを管理する特権ソフトウェアを記憶する記憶手段と、
前記ソフトウェアを実行しているときに前記デバイスから割り込みを検出すると前記特権ソフトウェアを前記記憶手段から呼び出すＯＳを記憶するＯＳ記憶手段と、
前記プロセッサ上で前記ＯＳが動作しているときに前記デバイスから前記ＯＳへの割り込みを検出する検出手段と、
前記デバイスから前記ＯＳへの割り込みを検出してから所定の第１の時間を経過するまでに前記ＯＳが前記特権ソフトウェアを前記記憶手段から呼び出したか否かを判断する判断手段と、
前記ＯＳが前記特権ソフトウェアを前記記憶手段から呼び出していないと前記判断手段によって判断された場合、前記プロセッサに対してリセットを行うリセット手段と、
を備えることを特徴とするデバイス制御装置。
【請求項２】
前記割り込みを検出した際に、所定の第１の時間を計測するための時間計測手段を、さらに備え、
前記判断手段は、前記時間計測手段が前記所定の第１の時間を計測した後に、前記ＯＳによる前記特権ソフトウェアの呼び出しが行われているか否か判断すること、
を特徴とする請求項１に記載のデバイス制御装置。
【請求項３】
前記特権ソフトウェアは、前記ＯＳからの呼び出しに応じて、前記プロセッサ上での動作を開始した場合に、前記特権ソフトウェアが動作を開始したことを示す開始通知を、前記判断手段に対して通知し、
前記判断手段は、前記開始通知を受け付けた場合に、前記ＯＳによる前記特権ソフトウェアの呼び出しが行われたと判断すること、
を特徴とする請求項１又は２に記載のデバイス制御装置。
【請求項４】
前記プロセッサ上で動作しているソフトウェアが前記特権ソフトウェアであるか否か判断する特権判断手段と、をさらに備え、
前記判断手段は、前記第１の時間を経過した後、前記開始通知を受け付けていないが、前記特権判断手段により前記特権ソフトウェアであると判断された場合に、前記第１の時間経過後の所定の第２の時間を経過するまでに、前記ＯＳによる前記特権ソフトウェアの呼び出しが行われているか否か再度判断すること、
を特徴とする請求項３に記載のデバイス制御装置。
【請求項５】
前記判断手段は、前記第２の時間を経過した後、前記開始通知を受け付けておらず、前記特権判断手段により前記特権ソフトウェアではないと判断された場合に、前記ＯＳによる前記特権ソフトウェアの呼び出しが行われていないと判断すること、
を特徴とする請求項４に記載のデバイス制御装置。
【請求項６】
前記ＯＳ記憶手段に記憶される前記ＯＳは、前記プロセッサ上で動作している時に、前記デバイスからの割り込みを検出した場合に、当該デバイスが当該ＯＳで制御可能であるか否かにかかわらず、前記プロセッサ上で動作するソフトウェアとして前記特権ソフトウェアを呼び出すこと、
を特徴とする請求項１乃至５のいずれか一つに記載のデバイス制御装置。
【請求項７】
前記デバイスから割り込みを受け付けた場合に当該割り込みを無視するか否か判断し、無視しないと判断した場合に前記割り込みを前記プロセッサに出力する割り込み制御手段と、をさらに備えることを特徴とする請求項１乃至６のいずれか一つに記載のデバイス制御装置。
【請求項８】
前記割り込み制御手段は、前記デバイスから受け付けた割り込みを無視しないと判断した場合に、さらに前記割り込みを前記検出手段に出力することを特徴とする請求項７に記載のデバイス制御装置。
【請求項９】
前記ＯＳが前記デバイスに対してアクセス可能か否かを前記特権ソフトウェアにより設定された設定情報に応じて、前記プロセッサ上で動作しているＯＳ毎にデバイスに対するアクセスを制御するアクセス制御手段を、
さらに備えることを特徴とする請求項１乃至８のいずれか一つに記載のデバイス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のソフトウェアが搭載されているデバイス制御装置に関するものである。
【背景技術】
【０００２】
従来から、データベースシステムやミッションクリティカルな処理を実行するサーバマシンにおいては、その処理の重要性や内部で保持するデータの機密度などの要因から、信頼性やセキュリティが重要視されていた。しかし近年では、これら汎用計算機等に限らず、組込み機器等の様々な装置において信頼性やセキュリティを確保することが重要となっている。
【０００３】
一方で、近年のシステムＬＳＩの小型化に伴い、システムＬＳＩにプロセッサを組み込み、従来は専用の個々のハードウェアで実現されていた複数の機能を、ソフトウェアで実装する傾向がある。そして、システムＬＳＩに組み込まれたプロセッサ上で、それら複数のソフトウェアを実行させることで、１つのシステムＬＳＩでより多くの機能を実現させている。
【０００４】
この場合、従来はハードウェアで実現されていた機能であったソフトウェア群（例えばプロセッサ上で実行される暗号処理プログラムのような機密性の高いプログラムや、メディア処理のような資産性の高いプログラム）についても、個人情報などのデータと同様に流出を防ぐ必要がある。
【０００５】
複数のプログラムを１つのプロセッサ上で動作させる場合、ある１つのプログラムの不具合のためにその他全てのプログラムの実行が影響を受け、結果として機器全体の動作が停止するという問題がある。また、外部からのダウンロード等によりインストールされたプログラムが悪意のある不正なプログラムであった場合、秘密にしておくべき情報やプログラムが外部に漏洩したり、破壊されたり、改竄されたりする可能性があるという問題がある。
【０００６】
上記の問題を解決するには、各機能を実現するプログラムに割り当てられたメモリやデバイスといったリソースへのアクセスを制御する必要がある。例えば、あるプログラムに割り当てたリソースへの他のプログラムや機能からのアクセスを禁止したり、複数の機能やプログラムから共有されるリソースへのアクセスを排他制御して管理する方法等が挙げられる。さらに、アクセス制御機構やアクセス制御情報自体も自由に操作できないように保護する必要がある。
【０００７】
これらの保護を実現し、複数の機能を隔離して実行させることにより信頼性やセキュリティを高める手段として、計算機の仮想化技術が提案されている。この仮想化技術の実装には様々な形態が存在する。実装の例としては、ハードウェアとＯＳ（Operating  System）の間に仮想化層を設けて、当該仮想化層上に複数のＯＳ（ゲストＯＳ）を動作させる形態がある。この仮想化層は、一般にハイパーバイザ層と呼ばれている。このハイパーバイザ層は、リソースを管理し、個々のゲストＯＳに対して割り当てたリソースで構成される仮想計算機を提供する。これにより複数のゲストＯＳが互いに干渉せず隔離された状態での実行が実現できる。このハイパーバイザ層の機能をソフトウェアで実現する場合、当該ソフトウェアはハイパーバイザと呼ばれている。
【０００８】
汎用計算機に使用されるプロセッサでは、プロセッサ自体に仮想化をサポートするハードウェア機構が用意されている。例としては、非特許文献１に示したＩｎｔｅｌ（登録商標）社が提唱する技術が存在する。この技術を実装したプロセッサでは、実行中のプログラムの権限を示す特権モードを多数用意し、任意の命令の実行時に、より上位の特権モードへ移行するように設定することが可能となる。これにより、ゲストＯＳから共有リソースへのアクセスをハードウェアで監視し、アクセス時により上位の特権モードを付与したソフトウェアでそのアクセス内容をチェックすることが可能になる。
【０００９】
他の例としては、Ａｄｖａｎｃｅｄ Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ社が提唱する技術がある。当該技術を実装したプロセッサでは、割り込みをインターセプトする機構と、ソフトウェアから仮想割り込みを発生させる機能とが用意されている。これにより、ハイパーバイザで割り込みを一旦インターセプトした上で、その割り込みを必要とするゲストＯＳへの割り込みの配送を管理することができる。また、ゲストＯＳによるアドレス変換テーブルへのアクセスを監視する機構が用意される。これにより、ゲストＯＳが自由にアドレス変換テーブルを書き換えて、他のゲストＯＳに割り当てられたメモリ領域をアクセスすることを防ぐことができる。
【００１０】
【非特許文献１】“Intel(R) Virtualization Technology Specification for the IA-32 Intel(R) Architecture”、[online]、[平成１７年５月３１日検索]、インターネット<URL: ftp://download.intel.com/technology/computing/vptech/C97063-002.pdf>
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、サーバ計算機や汎用計算機に使用されるような高機能なプロセッサと異なり、システムＬＳＩやＳｏＣ（Ｓｙｓｔｅｍ ｏｎ Ｃｈｉｐ）に組み込まれて使用される機能の限られた既存のプロセッサには仮想化をサポートする機構が実装されていない。通常これらプロセッサでは、特権モードと非特権モードの２種類の特権モードしか提供されていないため、当該プロセッサで複数のゲストＯＳを実行した場合、各ゲストＯＳが最上位の特権モードで動作することになる。
【００１２】
このようなプロセッサにおいて、ゲストＯＳが最上位の特権モードで動作している場合、当該ゲストＯＳはプロセッサが提供するアクセス制御機構を自由に操作できる。したがって、プロセッサはデバイスから割り込み要求を通知された際に実行する命令が格納された割り込みベクタテーブルを、ゲストＯＳによる書き換えから保護することができず、他のゲストＯＳが使用しているデバイスの割り込みを無視したり、デバイスの割り込みに対して虚偽の返答を行うことで不具合を引き起こすという攻撃が可能という問題が生じる。
【００１３】
このことは、当該プロセッサでは、デバイスからの割り込みの配送を妨げる悪意のあるソフトウェアからの攻撃に対して、ソフトウェアのみでは対処できないことも意味する。なぜならば、当該ゲストＯＳがプロセッサの最上位の特権モードで動作していること及びデバイスによる割り込みがプロセッサの動作と非同期に発生することにより、プロセッサに割り込みが通知された瞬間、当該悪意のあるソフトウェアが動作していた場合、当該プロセッサでは、他のゲストＯＳ等に制御を切り替えることができないためである。
【００１４】
本発明は、上記に鑑みてなされたものであって、仮想化を支援する機能が実装されていないプロセッサで複数のゲストＯＳを動作させた場合において安全性を向上させるデバイス制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、本発明は、ソフトウェアに従って動作するプロセッサと、デバイスから前記プロセッサに対する割り込みを管理する特権ソフトウェアを記憶する記憶手段と、前記ソフトウェアを実行しているときに前記デバイスから割り込みを検出すると前記特権ソフトウェアを前記記憶手段から呼び出すＯＳを記憶するＯＳ記憶手段と、前記プロセッサ上で前記ＯＳが動作しているときに前記デバイスから前記ＯＳへの割り込みを検出する検出手段と、前記デバイスから前記ＯＳへの割り込みを検出してから所定の第１の時間を経過するまでに前記ＯＳが前記特権ソフトウェアを前記記憶手段から呼び出したか否かを判断する判断手段と、前記ＯＳが前記特権ソフトウェアを前記記憶手段から呼び出していないと前記判断手段によって判断された場合、前記プロセッサに対してリセットを行うリセット手段と、を備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、デバイスからの割り込みを検出した場合に、安全な動作が実現できるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明にかかるデバイス制御装置の最良な実施の形態を詳細に説明する。また、後述する実施の形態においては、デバイス制御装置をシステムＬＳＩに適用した例について説明する。なお、デバイス制御装置は、システムＬＳＩに限らず、どのような装置に適用しても良い。
【００１８】
（第１の実施の形態）
図１に示すように、情報処理装置１００は、システムＬＳＩ１１０と、第１のデバイス１７１と、第２のデバイス１７２とを備える。
【００１９】
第１のデバイス１７１及び第２のデバイス１７２は、システムＬＳＩ１１０に接続され、システムＬＳＩ１１０に含まれるプロセッサ１２０により制御が行われるデバイスとする。また、第１のデバイス１７１及び第２のデバイス１７２は、情報処理装置１００の筐体内部に備えるものでも、情報処理装置１００の外部に備えるものでもよい。また、情報処理装置１００に接続されるデバイスの数を２個に制限するものではなく、何個でも良いものとする。
【００２０】
また、第１のデバイス１７１及び第２のデバイス１７２の例としては、メモリモジュール、ハードディスクドライブ等の大容量外部記憶装置、ネットワークインターフェース等の外部通信装置、キーボードやマウスなど利用者が入力に用いる入力装置、さらにはディスプレイ等の外部出力装置が考えられるが、これらに限るものではない。
【００２１】
システムＬＳＩ１１０は、プロセッサ１２０と、オンチップメモリ１３０と、割り込みコントローラ１４０と、割り込み処理監視装置１５０と、第１のデバイスコントローラ１６１と、第２のデバイスコントローラ１６２と、第３のデバイスコントローラ１６３と、第３のデバイス１７３と、各構成を接続するオンチップバス１８０と、特権状態管理装置１９０と、を備える。
【００２２】
第３のデバイス１７３は、後述するプロセッサ１２０により制御が行われるデバイスとする。このように、プロセッサで制御されるデバイスは、システムＬＳＩ１１０内部に備えるものでも良い。
【００２３】
第１のデバイスコントローラ１６１は、オンチップバス１８０を介してプロセッサ１２０等から第１のデバイス１７１に対するアクセスを受け付け、アクセス内容に応じた制御信号を第１のデバイス１７１へ送出する。また、第１のデバイスコントローラ１６１は、第１のデバイス１７１から受け取った信号を、オンチップバス１８０に送信するデータに変換し、そのデータを、オンチップバス１８０を介してプロセッサ１２０等に送信する。さらに、第１のデバイスコントローラ１６１は、第１のデバイス１７１からの割り込み要求を、プロセッサ１２０の割り込み受付部１２５及び割り込み処理監視装置１５０に対して通知するために、前記割り込みコントローラ１４０へ送出する。
【００２４】
第２のデバイスコントローラ１６２及び第３のデバイスコントローラ１６３は、制御対象となるデバイスが第２のデバイス１７２及び第３のデバイス１７３となる以外、第１のデバイスコントローラ１６１と同様の処理を行うため説明を省略する。
【００２５】
オンチップメモリ１３０は、特権ソフトウェア１３１、第１のゲストＯＳ１３２、第２のゲストＯＳ１３３を保持している。換言すれば、オンチップメモリ１３０は、特権ソフトウェア１３１を記憶する記憶部と、第１のゲストＯＳ１３２及び第２のゲストＯＳ１３３を記憶するＯＳ記憶部と、を含む構成に相当する。また、本実施の形態においては、特権ソフトウェア１３１と、第１のゲストＯＳ１３２と、第２のゲストＯＳ１３３とを１つのオンチップメモリ１３０に保持することとしたが、別の記憶手段にそれぞれ保持することにしてもよい。なお、オンチップメモリ１３０に格納するゲストＯＳの数は、２個に制限するものではなく、あらゆる個数で良い。
【００２６】
特権ソフトウェア１３１は、デバイスからの割り込みを管理するソフトウェアとする。また、特権ソフトウェア１３１は、真に信頼できるものとして割り込み処理監視装置１５０のタイマ初期値設定部１５３へのアクセスが許可されている。そして、特権ソフトウェア１３１は、他のゲストＯＳがプロセッサ１２０上で正常に動作している場合、当該ゲストＯＳがデバイスからの割り込み要求を受信した後、当該ゲストＯＳから呼び出される。これにより、特権ソフトウェア１３１は、デバイスが起こす全ての割り込みを管理することができる。また、本実施の形態では、プロセッサ１２０の起動直後及びリセットからの復帰直後に、必ず特権ソフトウェア１３１が実行されるものとする。リセットとは、プロセッサ１２０が実行する命令を、それまで実行していたプロセス等を無視して、あらかじめ決められた命令に強制的に変えることである。ここでは、今実行しているゲストＯＳやプロセス等の命令のアドレスもしくは次に取ってくる命令のアドレスを保持しているレジスタの内容を、特権ソフトウェアの命令のアドレスに書き換えることに相当する。
【００２７】
特権ソフトウェア１３１の信頼性を保証する機構は、どのような手法で実現しても良い。本実施の形態では、オンチップメモリ１３０上に読み出しのみ可能な領域を設け、製造時にその領域に特権ソフトウェア１３１を予め書き込むこととする。また、他の実施形態としては、認証用のデバイスを情報処理装置１００に接続し、当該デバイスがオンチップバス１８０を介してオンチップメモリ１３０に格納されている特権ソフトウェア１３１が改竄されているか否かチェックし、改竄されていないと判断された場合のみ特権ソフトウェア１３１を起動してもよい。
【００２８】
本実施の形態では、特権ソフトウェア１３１が動作している状態を、情報処理装置１００が特権状態であると呼ぶこととする。そして、プロセッサ１２０上で特権ソフトウェア１３１が動作を開始すると、後述する特権状態管理装置１９０は、情報処理装置１００が特権状態であることを検出して、そのことを、割り込み処理監視装置１５０内の制御部１５１に通知する。これにより、割り込み処理監視装置１５０内の制御部１５１は、情報処理装置１００が特権状態であるか否かを認識することができる。なお、割り込み処理監視装置１５０内の制御部１５１が、情報処理装置１００が特権状態であるか否かを認識する手法としては、この手法に限らず、どのような手法を用いても良い。
【００２９】
また、特権ソフトウェア１３１は、デバイス毎に、当該デバイスにアクセス可能なソフトウェア（例えばＯＳ、特権ソフトウェア）を制限しても良い。本実施の形態では、第２のデバイス１７２が、第１のゲストＯＳ１３２で排他的に制御されるデバイスとし、第３のデバイス１７３が、第２のゲストＯＳ１３３に排他的に制御されるデバイスとする。
【００３０】
第１のゲストＯＳ１３２及び第２のゲストＯＳ１３３は、後述するプロセッサ１２０上で動作するＯＳとする。また、第１のゲストＯＳ１３２と第２のゲストＯＳ１３３、さらにＯＳ上で動作するアプリケーションは、割り込み処理監視装置１５０に対してアクセスを許可されていない。
【００３１】
これは、ゲストＯＳ（例えば、第１のゲストＯＳ１３２又は第２のゲストＯＳ１３３）又はアプリケーションプログラムが、上述した特権ソフトウェア１３１のように信頼できることが保証されていないためである。このため、仮に、ゲストＯＳ又はアプリケーションプログラムなどのソフトウェアに、割り込み処理監視装置１５０に対するアクセスを許可した場合、これらソフトウェアに不備又は悪意があれば、割り込み処理監視装置１５０が本来の処理を実行できなくなる可能性がある。
【００３２】
オンチップメモリ１３０は、後述するプロセッサ１２０上で特権ソフトウェア１３１、第１のゲストＯＳ１３２、第２のゲストＯＳ１３３が作業する際に利用する作業領域（図示しない）を保持している。また、本実施の形態にかかるオンチップメモリ１３０は、特権ソフトウェア１３１を保持する読み込みのみ可能なＲＯＭ（Read  Only  Memory）領域と、第１のゲストＯＳ１３２、第２のゲストＯＳ１３３及び作業領域を保持する読み書き可能なＲＡＭ（Random  Access  Memory）領域と、から構成されるものとする。なお、オンチップメモリ１３０は、このような構成に限らず、一般的に利用されているあらゆる記憶手段により構成することができる。
【００３３】
特権状態管理装置１９０は、割り込み処理監視装置１５０の制御部１５１に対して、情報処理装置１００が特権状態であるか否かを示す信号を常に通知している。つまり、特権状態管理装置１９０は、オンチップメモリ１３０に格納された特権ソフトウェア１３１がプロセッサ１２０上で実行されている場合には、特権状態を示す信号を、制御部１５１に対して通知する。特権状態管理装置１９０は、第１のゲストＯＳ１３２又は第２のゲストＯＳ１３３等、特権ソフトウェア１３１と異なるソフトフェアがプロセッサ１２０上で実行されている場合、特権状態では無いことを示す信号を、制御部１５１に対して通知する。
【００３４】
この特権状態管理装置１９０は、悪意のあるソフトウェアによる攻撃を避けるため、ハードウェアで実装することが望ましい。
【００３５】
プロセッサ１２０は、記憶制御部１２１と、制御部１２２と、演算部１２３と、プロセッサリセット制御部１２４と、割り込み受付部１２５とを備える。そして、プロセッサ１２０上において、特権ソフトウェア１３１、第１のゲストＯＳ１３２、第２のゲストＯＳ１３３、（図示しない）アプリケーションプログラムが動作する。
【００３６】
図２に示すように、特権ソフトウェア１３１は、論理的には第１のゲストＯＳ１３２及び第２のゲストＯＳ１３３の下層に配置される。そして、第１のゲストＯＳ１３２は割り込み処理ルーチン２２１を、第２のゲストＯＳ１３３は割り込み処理ルーチン２２２を保持する。また、特権ソフトウェア１３１は、割り込み管理ルーチン２１１を保持する。なお、本実施の形態は、特権ソフトウェア１３１を、第１のゲストＯＳ１３２及び第２のゲストＯＳ１３３の下層に配置することに制限するものではなく、例えば特権ソフトウェア１３１を、第１のゲストＯＳ１３２及び第２のゲストＯＳ１３３と並列に配置しても良い。
【００３７】
次に、図２を用いて、ハードウェア群２０１に含まれるハードウェアから割り込みを示す信号が通知された場合に正常に処理が行われた例について説明する。まず、第２のゲストＯＳ１３３がプロセッサ１２０上で動作しているものとする。このような状況で、第２のデバイス１７２及び第３のデバイス１７３から割り込みの通知がなされた場合、当該割り込みの通知は第２のゲストＯＳ１３３の割り込み処理ルーチン２２２が受信する。本実施の形態では、第２のデバイス１７２が第１のゲストＯＳ１３２が排他的に制御可能なデバイスであり、第３のデバイス１７３が第２のゲストＯＳ１３３が排他的に制御可能なデバイスである。つまり、割り込み処理ルーチン２２２には、当該第２のゲストＯＳ１３３で制御可能なデバイスからの割り込みと、当該第２のゲストＯＳ１３３で制御できないデバイスからの割り込みが通知されることになる。
【００３８】
この場合、第２のゲストＯＳ１３３は、通知された割り込みが当該第２のゲストＯＳ１３３で制御可能なデバイスからの割り込みであるか否かに拘わらず、特権ソフトウェア１３１を呼び出して、プロセッサ１２０上で動作するソフトウェアを特権ソフトウェア１３１に切り替える。これにより、特権ソフトウェア１３１が保持する割り込み管理ルーチン２１１が、通知された割り込みを全て認識することが可能となる。
【００３９】
そして、特権ソフトウェア１３１は、当該割り込みの送信元のデバイスを制御可能なゲストＯＳを呼び出して、当該ゲストＯＳをプロセッサ１２０上で動作させる。なお、特権ソフトウェア１３１は、切り替え前のゲストＯＳが複数の割り込みを受信したと判断した場合、予め設定された割り込みの優先度等に基づいて、切り替えるゲストＯＳを判断する。図２に示した例では、特権ソフトウェア１３１は、第３のデバイス１７３を制御可能な第２のゲストＯＳ１３３を呼び出している。これにより、第２のゲストＯＳ１３３の割り込み処理ルーチン２２２は、割り込み管理ルーチン２１１からの通知に従って、第３のデバイス１７３を制御する。
【００４０】
図１に戻り、制御部１２２は、プロセッサ１２０全体の動作を制御する。演算部１２３は、制御部１２２の指示に従って演算をする。
【００４１】
記憶制御部１２１は、制御部１２２からの指示、又は演算部１２３の結果に基づいて、オンチップメモリ１３０等から命令を取得する。また、記憶制御部１２１は、オンチップメモリ１３０等にデータの読み書きする。さらに、記憶制御部１２１は、各デバイスコントローラ１６１〜１６３を介して、各デバイス１７１〜１７３にアクセスする。
【００４２】
プロセッサリセット制御部１２４は、後述する割り込み処理監視装置１５０からリセット要求を受け付けた場合に、制御部１２２に対してリセットを通知し、プロセッサ１２０上で実行されている処理の内容にかかわらずプロセッサ１２０をリセットする。
【００４３】
割り込み受付部１２５は、割り込みコントローラ１４０から、デバイス１７１〜１７３の割り込み要求を受け付ける。そして、割り込み受付部１２５は、割り込みの内容に従い、割り込みベクタテーブル内の予め決められた場所に格納された命令を実行するように制御部１２２に指示をする。これにより、制御部１２２上で動作しているソフトウェアが割り込みの発生を認識する。
【００４４】
プロセッサ１２０への入出力信号は、オンチップメモリ１３０をはじめとした装置等からオンチップバス１８０を介して入力されるアドレス信号やデータ信号、割り込みコントローラ１４０から入力されるデバイス割り込み通知信号、後述する割り込み処理監視装置１５０から入力されるプロセッサリセット信号とする。これらの信号を入出力するためのポートは、仮想化を支援する機能を内蔵しないプロセッサであっても必ず実装されている。
【００４５】
このことは、割り込み処理監視装置１５０および特権状態管理装置１９０を任意の情報処理装置に搭載する場合、当該情報処理装置に搭載されるプロセッサの入出力信号の種類又は数に依存していないことを意味する。つまり、割り込み処理監視装置１５０および特権状態管理装置１９０を搭載して上述した構成を備えることで、仮想化を支援する機能が内蔵されていない任意のプロセッサでも、デバイス割り込みの適切なゲストＯＳへの配送を実現することができる。
【００４６】
割り込みコントローラ１４０は、デバイス割り込み通知部１４１と、デバイス割り込み処理部１４２と、デバイス割り込み設定部１４３とを備える。また、割り込みコントローラ１４０は、割り込み用の専用線を介して割り込み処理監視装置１５０及びプロセッサ１２０と接続されている。これにより、割り込みコントローラ１４０は、デバイスコントローラ１６１〜１６３から受信した割り込み要求を、プロセッサ１２０及び割り込み処理監視装置１５０に通知することができる。
【００４７】
なお、本実施の形態においては、図１に示すようにデバイスコントローラ１６１〜１６３と割り込みコントローラ１４０とを割り込み用の専用線を介して接続しているが、オンチップバス１８０を介して接続していてもよい。同様に、本実施の形態においては、割り込みコントローラ１４０とプロセッサ１２０と割り込み処理監視装置１５０とを割り込み用の専用線を介して接続しているが、オンチップバス１８０を介して接続してもよい。
【００４８】
デバイス割り込み設定部１４３は、デバイス１７１〜１７３からの割り込み要求を無視するか否かの設定をデバイス毎に記憶する。
【００４９】
デバイス割り込み処理部１４２は、デバイス１７１〜１７３それぞれを制御するデバイスコントローラ１６１〜１６３と割り込み専用線で接続されている。そして、デバイス割り込み処理部１４２は、接続された割り込み専用線を介してデバイスコントローラ１６１〜１６３から割り込みを受け付ける。さらに、デバイス割り込み処理部１４２は、オンチップバス１８０を介して、どのデバイスが割り込み要求を出したのかチェックする機構と、割り込み要求に対する返答を受け付ける機構とを備える。
【００５０】
デバイス割り込み通知部１４１は、デバイス割り込み処理部１４２が割り込み要求を受け付けた場合、デバイス割り込み設定部１４３に記憶された設定に従って、当該割り込み要求を無視するか否か判断する。そして、デバイス割り込み通知部１４１は、無視すべきではないと判断した場合に当該割り込み要求をプロセッサ１２０及び割り込み処理監視装置１５０に通知する。
【００５１】
割り込み処理監視装置１５０は、制御部１５１と、タイマ１５２と、タイマ初期値設定部１５３と、プロセッサリセット信号発生部１５４とを備える。
【００５２】
タイマ初期値設定部１５３は、プロセッサ１２０上で動作する特権ソフトウェア１３１からの、後述するタイマ１５２への初期値設定要求を受け付ける。その際、タイマ初期値設定部１５３は、初期値設定要求が来たことを後述する制御部１５１に通知し、また制御部１５１からの指示に従ってタイマ１５２に対して初期値を設定する。なお、タイマ初期値設定部１５３が設定する初期値は初期値設定要求に含まれる値とする。
【００５３】
タイマ１５２は、制御部１５１により制御されるタイマとする。本実施の形態では、タイマ１５２は、タイマ初期値設定部１５３によって予め設定された初期値（正の値）から‘０’になるまで単調減少するカウントダウン型のタイマとする。なお、タイマの種類をカウントダウン型のタイマに限定するものではなく、‘０’から単調増加して予め設定された初期値（正の値）になるまで動作するカウントアップ型のタイマを用いても良い。
【００５４】
制御部１５１は、検出部１５５と、判断部１５６とを備え、割り込み処理監視装置１５０全体を制御する。制御部１５１は、割り込みコントローラ１４０からの割り込み通知、情報処理装置１００が特権状態にあるか否か、タイマ１５２のカウント数、タイマ初期値設定部１５３により設定されたタイマの初期値、そしてタイマ初期値設定部１５３に初期値設定要求が来たかどうかに基づいて処理を行う。また、制御部１５１は、割り込み処理監視装置１５０の状態情報を保持する。
【００５５】
検出部１５５は、割り込みコントローラ１４０からの割り込み通知により、デバイス１７１〜１７３からの割り込みを検出する。
【００５６】
判断部１５６は、タイマ１５２のカウント値が‘０’になった場合に、プロセッサ１２０上で動作しているソフトウェアが特権ソフトウェア１３１を呼び出したか否か判断する。判断部１５６は、タイマ初期値設定部１５３がプロセッサ１２０上で動作する特権ソフトウェア１３１からタイマ初期化要求を受信したことを、タイマ初期値設定部１５３から通知された場合に、特権ソフトウェア１３１が呼び出されたものと判断する。なお、詳細な判断手順については後述する。
【００５７】
プロセッサリセット信号発生部１５４は、制御部１５１からの指示に従って、プロセッサ１２０のプロセッサリセット制御部１２４に対して、プロセッサのリセットを要求する信号を送信する。
【００５８】
また、制御部１５１は、割り込み処理監視装置１５０の状態情報を管理している。図３に示すように、状態情報には、ＳＴＯＰ状態、ＲＥＡＤＹ状態、ＲＵＮＮＩＮＧ状態、ＰＥＮＤＩＮＧ状態の４種類の状態が設定される。
【００５９】
これらの状態は、割り込みコントローラ１４０からの割り込み通知、特権状態管理装置１９０からの情報処理装置１００が特権状態にあるか否かを示す信号、タイマ１５２の動作状態、タイマ初期値設定部１５３からの特権ソフトウェア１３１によるタイマ初期値設定要求の通知に基づいて遷移する。次に、図３に示した各状態、状態の遷移及び遷移する条件を説明する。
【００６０】
ＳＴＯＰ状態は、タイマ１５２が動作しておらず、また初期化もされていない状態とする。制御部１５１は、情報処理装置１００の起動時に割り込み処理監視装置１５０の状態情報をＳＴＯＰ状態（符号３０１の遷移）に設定する。また、制御部１５１は、割り込み処理監視装置１５０がＲＵＮＮＩＮＧ状態およびＰＥＮＤＩＮＧ状態の時に、プロセッサリセット信号発生部１５４がプロセッサリセット信号を発生してプロセッサ１２０をリセットした場合、割り込み処理監視装置１５０の状態情報をＳＴＯＰ状態に設定する（符号３０７および符号３０９の遷移）。
【００６１】
また、制御部１５１は、ＳＴＯＰ状態の時に、特権ソフトウェア１３１からタイマ１５２の初期値設定要求が来たことをタイマ初期値設定部１５３から通知された場合、タイマ初期値設定部１５３にタイマ１５２の初期値設定を指示した上で割り込み処理監視装置１５０の状態情報をＲＥＡＤＹ状態に設定する（符号３０２の遷移）。これにより、タイマ１５２に初期値が設定される。なお、この初期値とは、デバイスによる割り込みが割り込み処理監視装置１５０に通知されてからプロセッサ１２０上で特権ソフトウェア１３１が実行を開始するまでの許容時間を示したものとする。つまり、タイマ１５２がカウントを開始してカウント値が初期値から‘０’になり、かつ特権ソフトウェア１３１が呼び出されていない場合には、判断部１５６がプロセッサ１２０をリセットすべきと判断する。
【００６２】
ＲＥＡＤＹ状態は、タイマ初期値設定部１５３によりタイマ１５２の初期値が設定され、当該タイマ１５２がカウントを開始する準備が完了した状態とする。また、ＲＥＡＤＹ状態では、タイマ１５２の初期値の設定はなされたが、当該タイマ１５２のカウントは開始していない。制御部１５１は、割り込み処理監視装置１５０の状態がＳＴＯＰ状態、ＲＵＮＮＩＮＧ状態、ＰＥＮＤＩＮＧ状態及びＲＥＡＤＹ状態の時、特権ソフトウェア１３１からタイマ初期値設定要求が来たことをタイマ初期値設定部１５３から通知された場合に、タイマ初期値設定部１５３にタイマ１５２の初期値設定指示した上で割り込み処理監視装置１５０の状態情報をＲＥＡＤＹ状態に設定する（符号３０２、符号３０５、符号３０８及び符号３０３の遷移）。この符号３０２、符号３０５、符号３０８及び符号３０３の遷移により、タイマ１５２に初期値が設定される。
【００６３】
また、制御部１５１は、ＲＥＡＤＹ状態の時に、制御部１５１に対して割り込みコントローラ１４０から割り込みが発生した旨の通知を受け付けた場合、タイマ１５２のカウントを開始させ、割り込み処理監視装置１５０の状態情報をＲＵＮＮＩＮＧ状態に設定する（符号３０４の遷移）。
【００６４】
ＲＵＮＮＩＮＧ状態は、タイマ１５２がカウントダウンをしており、まだカウント値が‘０’になっていない状態とする。また、初期値として設定された時間を経過していないため、プロセッサリセット信号発生部１５４はプロセッサリセット信号を発生していない。
【００６５】
本実施の形態のように、タイマ１５２が予め設定された初期値からカウントダウンするカウントダウンタイマの場合、タイマ１５２は、クロックのような周期的な入力信号にしたがってカウント値が‘０’になるまでカウントダウンを行う。
【００６６】
割り込み処理監視装置１５０の状態情報がＲＵＮＮＩＮＧ状態の時にタイマ１５２のカウント値が‘０’になり（予め設定された時間が経過した）、かつ判断部１５６がプロセッサ１２０上で特権ソフトウェア１３１が実行していると判断した場合、制御部１５１は割り込み処理監視装置１５０の状態情報をＰＥＮＤＩＮＧ状態に設定する（符号３０６の遷移）。判断部１５６は、プロセッサ１２０上で特権ソフトウェア１３１が実行しているか否かを、特権状態管理装置１９０から送信される情報処理装置１００が特権状態であるか否かの通知により判断できる。符号３０６の遷移では、制御部１５１はタイマ１５２に対してカウントを停止するように指示する。
【００６７】
また、割り込み処理監視装置１５０の状態情報がＲＵＮＮＩＮＧ状態の時に、タイマ１５２のカウント値が‘０’になり、かつ判断部１５６がプロセッサ１２０上で特権ソフトウェア１３１が実行していないと判断した場合、制御部１５１は割り込み処理監視装置１５０の状態情報をＳＴＯＰ状態に設定する（符号３０７の遷移）。符号３０７の遷移では、制御部１５１はタイマ１５２に対してカウントを停止するように指示した上で、プロセッサリセット信号発生部１５４に対してプロセッサリセット制御部１２４にプロセッサリセット要求信号を送出するように指示する。これにより、プロセッサ１２０がリセットされる。
【００６８】
このＰＥＮＤＩＮＧ状態は、予め設定された時間が経過したものの、プロセッサリセット信号の発生が抑制されている状態ということになる。
【００６９】
割り込み処理監視装置１５０の状態情報がＰＥＮＤＩＮＧ状態の時、制御部１５１が、タイマ初期値設定部１５３から特権ソフトウェア１３１によるタイマ１５２の初期値設定要求を受け付けたことを通知された場合、割り込み処理監視装置１５０の状態情報をＲＥＡＤＹ状態に設定し、タイマ初期値設定部１５３にタイマ１５２への初期値設定を指示する（符号３０８の遷移）。これにより、タイマ１５２に新たに初期値が設定される。
【００７０】
また、割り込み処理監視装置１５０の状態情報がＰＥＮＤＩＮＧ状態の時、タイマ初期値設定部１５３がタイマ１５２の初期値設定要求を受け付けていないにも拘わらず、判断部１５６が特権ソフトウェア１３１以外のソフトウェアがプロセッサ１２０上で動作している（特権状態でなくなった）と判断した場合、制御部１５１はプロセッサリセット信号発生部１５４に対してプロセッサリセット信号の送出を指示し、割り込み処理監視装置１５０の状態情報をＳＴＯＰ状態に設定する（符号３０９の遷移）。これにより、プロセッサ１２０がリセットされる。
【００７１】
次に、割り込み処理監視装置１５０が実行する処理の手順について、図４を用いて説明する。なお、図４に示された当該処理手順では、最初、情報処理装置１００の電源が投入された後、制御部１５１は、割り込み処理監視装置１５０の状態情報にＳＴＯＰ状態を設定する（ステップＳ４０１）。
【００７２】
割り込み処理監視装置１５０のタイマ初期値設定部１５３は、プロセッサ１２０上で動作する特権ソフトウェア１３１からタイマ初期値設定要求を受け付けたか否かを判断する（ステップＳ４０２）。タイマ初期値設定部１５３が受け付けていないと判断した場合（ステップＳ４０２：Ｎｏ）、タイマ初期値設定要求の検出処理を継続する（ステップＳ４０２）。
【００７３】
タイマ初期値設定部１５３がタイマ初期値設定要求を受け付けたと判断した場合（Ｓ４０２：Ｙｅｓ）、タイマ初期値設定部１５３は制御部１５１にタイマ１５２の初期値設定要求を受け付けたことを通知し、その通知を受けて制御部１５１は、タイマ初期値設定部１５３にタイマ１５２の初期値設定を指示する（ステップＳ４０３）。そして、制御部１５１は、割り込み処理監視装置１５０の状態情報をＲＥＡＤＹ状態に設定する（ステップＳ４０４）。
【００７４】
次に、検出部１５５は、割り込みコントローラ１４０から送信されるデバイスの割り込みを示す通知信号の検出を行う（ステップＳ４０５）。検出部１５５は、デバイスの割り込みを示す通知信号を検出しなかった場合（ステップＳ４０５：Ｎｏ）、当該通知信号の検出処理を継続する（ステップＳ４０５）。
【００７５】
検出部１５５がデバイスの割り込みを示す通知信号を検出した場合（ステップＳ４０５：Ｙｅｓ）、制御部１５１は、タイマ１５２に動作を指示し、タイマ１５２は動作を開始する（ステップＳ４０６）。本実施の形態では、カウント値が初期値からカウントダウンしていくことになる。これにより、割り込み信号を検出してからの経過時間を計測することが可能となる。
【００７６】
制御部１５１は、タイマ１５２のカウントを開始させた場合、割り込み処理監視装置１５０の状態情報をＲＵＮＮＩＮＧ状態に設定する（ステップＳ４０７）。次に、制御部１５１は、タイマ初期値設定部１５３がプロセッサ１２０上で動作する特権ソフトウェア１３１からタイマ初期値設定要求を受け付けたことを通知されたか否かを判断する（ステップＳ４０８）。タイマ初期値設定部１５３がタイマ初期値設定要求を受け付けたことを通知された場合（ステップＳ４０８：Ｙｅｓ）、制御部１５１はタイマ１５２に対してカウントの停止を指示する。これにより、タイマ１５２のカウントが停止する（ステップＳ４０９）。その後、制御部１５１はタイマ初期値設定部１５３にタイマ１５２の初期値設定を指示する（ステップＳ４０３）。
【００７７】
制御部１５１は、タイマ初期値設定部１５３からタイマ初期値設定要求を受け付けたことを通知されていない場合（ステップＳ４０８：Ｎｏ）、デバイスの割り込みを示す通知を検出してから所定の時間を経過したか否か判断する（ステップＳ４１０）。これは、タイマ１５２のカウント値が初期値から‘０’になったか否かで判断することができる。
【００７８】
制御部１５１が、所定の時間が経過していないと判断した場合（ステップＳ４１０：Ｎｏ）、再びタイマ初期値設定部１５３がタイマ１５２の初期値設定要求を受け付けたか否かの判断を行う（ステップＳ４０８）。
【００７９】
所定の時間を経過したと判断した場合（ステップＳ４１０：Ｙｅｓ）、制御部１５１は、タイマ１５２のカウントを停止させる（ステップＳ４１１）。
【００８０】
そして、判断部１５６が、プロセッサ１２０上で動作しているソフトウェアが、特権ソフトウェア１３１であるか否か判断する（ステップＳ４１２）。これは、特権状態管理装置１９０からの信号に基づいて判断できる。
【００８１】
特権ソフトウェア１３１がプロセッサ１２０上で動作していると判断した場合（ステップＳ４１２：Ｙｅｓ）、制御部１５１は、割り込み処理監視装置１５０の状態情報にＰＥＮＤＩＮＧ状態を設定する（ステップＳ４１３）。
【００８２】
その後、制御部１５１は、タイマ初期値設定部１５３がプロセッサ１２０上で動作している特権ソフトウェア１３１からタイマ１５２の初期値設定要求を受け付けたか否かを判断する（ステップＳ４１４）。そして、タイマ１５２の初期値設定要求を受け付けていないと判断した場合（ステップＳ４１４：Ｎｏ）、プロセッサ１２０上で特権ソフトウェア１３１が動作しているか否かを再び判断する（ステップＳ４１２）。
【００８３】
そして、制御部１５１が、プロセッサ１２０上で動作しているソフトウェアが、特権ソフトウェア１３１ではないと判断した場合（ステップＳ４１２：Ｎｏ）、制御部１５１は、プロセッサリセット信号発生部１５４に、プロセッサリセット制御部１２４に対して、プロセッサリセットを要求する信号の送信を指示する。これにより、プロセッサ１２０がリセットされる（ステップＳ４１５）。
【００８４】
プロセッサ１２０がリセットされた後、制御部１５１は、割り込み処理監視装置１５０の状態情報をＳＴＯＰ状態に設定する（ステップＳ４０１）。そして、再びステップＳ４０２以降の処理を行うことになる。
【００８５】
上述した処理を行うことで、デバイス群１７１〜１７３が割り込み要求を発生し、所定の時間内に特権ソフトウェア１３１が呼び出されていない場合に、プロセッサ１２０をリセットすることができる。
【００８６】
次に、本実施の形態における情報処理装置１００の各構成が行う処理を、シーケンス図を使用して詳細に説明する。図５〜図８では、下方向の長さが経過した時間を示している。また、第３のデバイス１７３、割り込みコントローラ１４０、プロセッサ１２０及び割り込み処理監視装置１５０間で示された矢印は、当該構成間で行われた通信を表わしている。
【００８７】
図５〜図８のプロセッサ１２０では、当該プロセッサ上で動作しているソフトウェアを示している。なお、図示していないが、第３のデバイス１７３及び割り込みコントローラ１４０間では、当然に第３のデバイスコントローラ１６３を介して通信が行われている。また、割り込み処理監視装置１５０には、割り込み処理監視装置１５０の状態情報が示されている。
【００８８】
また、図５〜図８では、情報処理装置１００に電源投入時から経過した時間において行われた通信などを示している。まず、割り込み処理監視装置１５０が管理している状態情報の初期値は、ＳＴＯＰ状態とする。また、最初にプロセッサ１２０上で動作するソフトウェアは、特権ソフトウェア１３１とする。
【００８９】
なお、図５〜図８で示す処理手順は、電源投入時に限り行われる処理ではなく、情報処理装置１００の起動中であれば適宜行われる処理とする。また、図５〜図８で示す処理手順では、割り込み処理監視装置１５０が管理している状態情報は最初ＳＴＯＰ状態が設定されていることを仮定しているが、最初の状態情報をＳＴＯＰ状態に制限するものではない。
【００９０】
また、図５〜図８で示す処理手順では、割り込みコントローラ１４０は、第３のデバイスコントローラ１６３から通知される割り込みを無視しない設定がなされているものとする。
【００９１】
図５に示すシーケンス図は、第３のデバイス１７３から割り込みを示す通知が行われてから所定時間内に、タイマ初期値設定部１５３が特権ソフトウェア１３１からタイマの初期値設定要求を受け付けた場合の例を示している。
【００９２】
まず、プロセッサ１２０上で動作している特権ソフトウェア１３１が、割り込み処理監視装置１５０のタイマ初期値設定部１５３に対してタイマ１５２の初期値設定要求を送信する（ステップＳ５０１）。これにより、タイマ初期値設定部１５３から制御部１５１に対して、初期値設定要求が届いたことが伝えられ、制御部１５１がタイマ初期値設定部１５３にタイマの初期値の設定を指示し、タイマ初期値設定部１５３がタイマ１５２の初期値を設定する。そして、制御部１５１は、割り込み処理監視装置１５０の状態情報をＳＴＯＰ状態からＲＥＡＤＹ状態に設定する。なお、当該処理は、図４に示したステップＳ４０２〜ステップＳ４０４の処理に相当する。
【００９３】
なお、特権ソフトウェア１３１は、タイマ１５２の初期値として、第１のゲストＯＳ１３２又は第２のゲストＯＳ１３３が割り込みを検出してから特権ソフトウェア１３１に制御を移すために必要十分な時間を設定すべきである。これは、初期値として非常に短い時間を設定した場合、第１のゲストＯＳ１３２等に不具合又は悪意がない場合でも、設定された時間内に特権ソフトウェア１３１を呼び出すことができない可能性があるからである。この場合、第１のゲストＯＳ１３２等が正常な動作を行えない可能性がある。逆に初期値として非常に長い時間を設定した場合、第１のゲストＯＳ１３２等に悪意があった場合に、当該ソフトウェアが不正な処理をするための十分な時間を与えてしまうことになる。
【００９４】
なお、タイマ初期値設定部１５３がタイマ１５２の初期値として任意の値を受け付け可能とした場合、指定すべき初期値の決定手法としては、各ゲストＯＳの割り込み応答時間（割り込みを通知されてから特権ソフトウェアに通知するまでの時間）を考慮して決定する手法や、デバイスの種類や特徴（割り込み応答時間は短い方が良いか、長くても良いか）に応じて決定する手法などが考えられる。
【００９５】
処理に戻り、プロセッサ１２０上で動作する特権ソフトウェア１３１は、第１のゲストＯＳ１３２を呼び出して、プロセッサ１２０上で動作するソフトウェアを第１のゲストＯＳ１３２に変更する（ステップＳ５０２）。これにより、第１のゲストＯＳ１３２が動作を開始する。このとき、特権状態管理装置１９０からの通知は、情報処理装置１００が特権状態でないことを示すものに変化する。なお、特権状態管理装置１９０からの特権状態を示す通知は変化するものの、ＲＥＡＤＹ状態において注目している信号に変化がないので、制御部１５１は、割り込み処理監視装置１５０の状態情報として、ＲＥＡＤＹ状態を保持する。
【００９６】
次に、第３のデバイス１７３は、割り込みコントローラ１４０に対して、第３のデバイスコントローラ１６３を経由して、割り込みを要求する旨を通知する（ステップＳ５０３）。
【００９７】
割り込みコントローラ１４０は、第３のデバイスコントローラ１６３から通知された割り込みを無視しない設定となっていることをデバイス割り込み設定部１４３に格納された情報で確認した後、プロセッサ１２０に対して割り込みを要求する旨を通知する（ステップＳ５０４）。
【００９８】
また、割り込みコントローラ１４０は、ステップＳ５０４に示した通知とほぼ同時に、割り込み処理監視装置１５０に対して割り込みが発生した旨を通知する（ステップＳ５０５）。これにより、割り込み処理監視装置１５０の制御部１５１はタイマ１５２の動作を開始させる（ステップＳ５０６）。また、制御部１５１は、割り込みコントローラ１４０からデバイスの割り込みが発生した旨の通知を受け付けたことで、管理している状態情報をＲＥＡＤＹ状態からＲＵＮＮＩＮＧ状態に設定する。なお、割り込みが発生した旨の通知を受け付けてからの処理は、図４のステップＳ４０５〜Ｓ４０７の処理に相当する。
【００９９】
プロセッサ１２０の割り込み受付装置１２５は、割り込みコントローラ１４０からの割り込み要求を受け付けると、制御部１２２に対して割り込み処理用の命令を実行するよう指示をする。この指示により実行している命令列をデバイス割り込み専用の命令列に強制的に変更させられた第１のゲストＯＳ１３２は、割り込みが通知されたことを特権ソフトウェア１３１に伝えるために、予め設定された割り込み処理通知用の特権ソフトウェア１３１を呼び出す。これにより、プロセッサ１２０上で動作するソフトウェアが、第１のゲストＯＳ１３２から特権ソフトウェア１３１に変更される（ステップＳ５０７）。なお、当該処理では、特権状態管理装置１９０の通知する信号が、情報処理装置１００が特権状態であることを示すものに変化するものの、ＲＵＮＮＩＮＧ状態において制御部１５１が注目している信号に変化はないので、制御部１５１は、割り込み処理監視装置１５０の状態情報として、ＲＵＮＮＩＮＧ状態を保持する。
【０１００】
なお、本実施の形態のプロセッサ１２０と異なる、割り込みベクタの保護機構を持った汎用計算機用のプロセッサでは、ステップＳ５０７で示した処理の後半、つまり第１のゲストＯＳから特権ソフトウェアへの変更を、当該プロセッサ内部に実装されたハードウェアで強制的に行っている。これにより、特権ソフトウェアによる割り込みの完全管理を実現している。これに対し、本実施の形態にかかるプロセッサ１２０は、このような機能を備えていない、従来からシステムＬＳＩやＳｏＣ等に組み込まれて使用されているプロセッサである。このようなプロセッサでは、第１のゲストＯＳ１３２等から明示的に特権ソフトウェア１３１の呼び出しを行わない限り、特権ソフトウェア１３１に制御が移ることはない。
【０１０１】
第１のゲストＯＳ１３２から割り込みが起きたことを通知された特権ソフトウェア１３１は、タイマ１５２を停止させるため、及び次の割り込みがいつ発生しても検出できるように、割り込み処理監視装置１５０のタイマ初期値設定部１５３に対して、タイマ１５２の初期値設定の要求を通知する（ステップＳ５０８）。これにより、制御部１５１は、タイマ１５２を停止する指示を行った上でタイマ初期値設定部１５３にタイマ１５２の初期値設定を指示する。
【０１０２】
なお、特権ソフトウェア１３１からのタイマ１５２の初期値設定を要求する旨の通知は、タイマ１５２がカウントしているカウント値が‘０’になる前に受け付けたものとする。そして、所定時間内にタイマ初期値設定部１５３が初期値設定の要求を受け付けたので、制御部１５１は管理している割り込み処理監視装置１５０の状態情報を、ＲＵＮＮＩＮＧ状態からＲＥＡＤＹ状態に設定する。なお、タイマ１５２の初期値設定を要求する旨の通知を受け付けてからの処理は、図４のステップＳ４０８、Ｓ４０９、Ｓ４０３及びＳ４０４の処理に相当する。
【０１０３】
次に、プロセッサ１２０上で動作している特権ソフトウェア１３１は、割り込み要求の確認を割り込みコントローラ１４０に対して行う（ステップＳ５０９）。さらに、特権ソフトウェア１３１は、必要に応じて、第３のデバイス１７３に対して、割り込みを発生させたデバイスを特定するために信号の送受信等の処理を行う（ステップＳ５１０）。これにより、割り込みを発生させたデバイスを特定すると共に、当該デバイスを排他的に使用している又は処理を担当するソフトウェアを特定する。なお、図５に示した処理手順では、特定されたソフトウェアを第２のゲストＯＳ１３３とする。なお、これらの処理では、制御部１５１が注目している信号に変化はないので、割り込み処理監視装置１５０が管理している割り込み処理監視装置１５０の状態情報はＲＥＡＤＹ状態のまま保持される。
【０１０４】
その後、特権ソフトウェア１３１は、割り込み処理監視装置１５０のタイマ初期値設定部１５３に対して、タイマ１５２の初期値設定の要求を通知する（ステップＳ５１１）。なお、タイマ初期値設定部１５３がタイマ１５２の初期値の設定要求を受け付けた際、制御部１５１が管理している割り込み処理監視装置の状態情報はＲＥＡＤＹ状態であり、ＲＥＡＤＹ状態の時に制御部１５１が注目している信号に変化はないので、ＲＥＡＤＹ状態をそのまま保持する。
【０１０５】
そして、プロセッサ１２０上で動作している特権ソフトウェア１３１が第２のゲストＯＳ１３３を呼び出すことで、プロセッサ１２０上で動作するソフトウェアが特権ソフトウェア１３１から、第３のデバイス１７３の処理を担当する第２のゲストＯＳ１３３に変更される（ステップＳ５１２）。なお、当該処理によって特権状態管理装置１９０が通知する信号が、情報処理装置１００が特権状態でないことを示すものに変化するものの、制御部１５１が注目している信号に変化はないので、制御部１５１が管理している割り込み処理監視装置１５０の状態情報はＲＥＡＤＹ状態のまま保持される。
【０１０６】
図６に示すシーケンス図では、第１のゲストＯＳ１３２で不具合が発生した等の理由で、第１のゲストＯＳ１３２から特権ソフトウェア１３１に変更されなかった例を示した図である。つまり、第３のデバイス１７３から割り込みを要求する通知が行われてから所定時間を経過したにも拘わらず、タイマ初期値設定部１５３が特権ソフトウェア１３１からのタイマ１５２の初期値設定要求を受け付けず、第１のゲストＯＳ１３２が動作したままになっている例である。
【０１０７】
図６のステップＳ６０１〜Ｓ６０６までの処理は、図５のステップＳ５０１〜Ｓ５０６までの処理と同様なので説明を省略する。
【０１０８】
制御部１５１は、タイマ１５２のカウント値が‘０’になったことを検出することで、割り込みが発生した旨の通知を受け取ってから所定時間が経過したものと判断する（ステップＳ６０７）。そして、制御部１５１は、タイマ１５２のカウントを停止させる。
【０１０９】
なお、図６のステップＳ６０７の処理を行っている時、特権状態管理装置１９０からは情報処理装置１００が特権状態ではない旨の信号が通知されている。これにより、判断部１５６は、プロセッサ１２０上で動作しているソフトウェアが特権ソフトウェア１３１に変更されていないと判断できる。
【０１１０】
そこで、割り込み処理監視装置１５０の制御部１５１は、プロセッサリセット信号発生部１５４にプロセッサリセット信号を発生するように指示し（ステップＳ６０８）、プロセッサ１２０をリセットする。これにより、不具合が発生していた第１のゲストＯＳ１３２を強制的に終了させることができる。
【０１１１】
制御部１５１は、プロセッサ１２０のリセットが行われた後、管理している割り込み処理監視装置１５０の状態情報をＲＵＮＮＩＮＧ状態からＳＴＯＰ状態に設定する。なお、タイマ１５２のカウント値が‘０’になったことを検出してからの処理は、図４のステップＳ４１０、Ｓ４１１、Ｓ４１２、Ｓ４１５及びＳ４０１の処理に相当する。
【０１１２】
リセットされて再起動したプロセッサ１２０は、特権ソフトウェア１３１の実行を開始する（ステップＳ６０９）。これにより、特権ソフトウェア１３１は、第１のゲストＯＳ１３２から通知されなかった割り込みを調べることができる。
【０１１３】
これ以降、図６のステップＳ６１０〜Ｓ６１３までの処理は、図５のステップＳ５０９〜Ｓ５１２までの処理と同様なので説明を省略する。
【０１１４】
図７に示すシーケンス図では、プロセッサ１２０で動作するソフトウェアが変更される時のきわどいタイミングによる不安定な動作を防止するために、制御部１５１が管理している割り込み処理監視装置１５０の状態情報をＰＥＮＤＩＮＧ状態に設定する例である。つまり、第１のゲストＯＳ１３２から特権ソフトウェア１３１に変更されたものの、特権ソフトウェア１３１からタイマ初期値設定部１５３へのタイマ１５２の初期値設定要求が遅れて、第３のデバイス１７３から割り込みを示す通知が行われてから所定時間を経過してしまった例を示している。
【０１１５】
図７のステップＳ７０１〜Ｓ７０６までの処理は、図５のステップＳ５０１〜Ｓ５０６までの処理と同様なので説明を省略する。
【０１１６】
プロセッサ１２０上で動作する第１のゲストＯＳ１３２が特権ソフトウェア１３１を呼び出すことで、プロセッサ１２０上で動作するソフトウェアが第１のゲストＯＳ１３２から特権ソフトウェア１３１に変更される（ステップＳ７０７）。なお、変更される際の処理は、図５で説明したので省略する。
【０１１７】
このとき、プロセッサ１２０上で動作するソフトウェアが、第１のゲストＯＳ１３２から特権ソフトウェア１３１に変更されたものの、特権ソフトウェア１３１がタイマ初期値設定部１５３に対してタイマ１５２の初期値設定要求を送信する前に、タイマ１５２のカウント値が‘０’になったものとする。すると、制御部１５１は、割り込みが発生してから所定時間が経過したと判断する（ステップＳ７０８）。その後、制御部１５１はタイマ１５２に動作の停止を指示する。なお、これらの処理は、図４のステップＳ４１０〜Ｓ４１１に相当する。
【０１１８】
なお、制御部１５１は、特権状態管理装置１９０からの通知により情報処理装置１００が特権状態になっていること、つまりプロセッサ１２０上で特権ソフトウェア１３１が動作していることを認識できる。
【０１１９】
そこで、制御部１５１は、制御部１５１が管理している割り込み処理監視装置１５０の状態情報をＲＵＮＮＩＮＧ状態からＰＥＮＤＩＮＧ状態に設定する。このＰＥＮＤＩＮＧ状態は、制御部１５１からプロセッサリセット信号発生部１５４へのプロセッサリセット信号発生要求は行われない状態である。なお、これらの処理は、図４のステップＳ４１２〜Ｓ４１３の処理に相当する。
【０１２０】
割り込みが発生したことを第１のゲストＯＳ１３２から通知された特権ソフトウェア１３１は、タイマ初期値設定部１５３に対して、タイマ１５２の初期値設定の要求を通知する（ステップＳ７０９）。そして、制御部１５１は、タイマ初期値設定部１５３がタイマ１５２の初期値設定要求を受け付けたことを通知され、タイマ初期値設定部１５３に対してタイマ１５２の初期値の設定を指示すると共に、管理している割り込み処理監視装置１５０の状態情報をＰＥＮＤＩＮＧ状態からＲＥＡＤＹ状態に設定する。
【０１２１】
これ以降、図７のステップＳ７１０〜Ｓ７１３までの処理は、図５のステップＳ５０９〜Ｓ５１２までの処理と同様なので説明を省略する。
【０１２２】
図８に示すシーケンス図は、制御部１５１が管理している割り込み処理監視装置１５０の状態情報をＰＥＮＤＩＮＧ状態に設定した後、第１のゲストＯＳ１３２が特権ソフトウェア１３１に割り込みを通知するための予め定められた呼び出しを行わないという不正な処理により、特権ソフトウェア１３１がタイマ初期値設定部１５３に対してタイマ１５２の初期値設定要求をしなかった例である。つまり、第３のデバイス１７３から割り込みを示す通知が行われた後、プロセッサ１２０上で動作するソフトウェアが、第１のゲストＯＳ１３２から特権ソフトウェア１３１に変更されたものの、初期値設定要求の通知を行わないうちに再び特権ソフトウェア１３１から第１のゲストＯＳ１３２に変更された場合の例を示している。
【０１２３】
図８のステップＳ８０１〜Ｓ８０６までの処理は、図５のステップＳ５０１〜Ｓ５０６までの処理と同様なので説明を省略する。
【０１２４】
プロセッサ１２０上で動作している第１のゲストＯＳ１３２は、割り込みが発生したことを認識しながら、予め定められた割り込み処理を通知するための特権呼び出しで行うべき特権ソフトウェア１３１への割り込みが発生したことの通知をせず、別の特権呼び出しを行って特権ソフトウェア１３１を呼び出したものとする。なお、第１のゲストＯＳ１３２がこのような処理を行う原因としては、第１のゲストＯＳ１３２に悪意がある場合や、第１のゲストＯＳ１３２に不具合が発生した場合等が考えられる。
【０１２５】
これにより、プロセッサ１２０上で動作するソフトウェアが、第１のゲストＯＳ１３２から特権ソフトウェア１３１に変更される（ステップＳ８０７）。特権状態管理装置１９０が通知する、情報処理装置１００が特権状態か否かを示す信号は、特権ソフトウェア１３１が動作しているため、特権状態であることを示す信号に変化する。
【０１２６】
その後、タイマ１５２のカウント値が‘０’になったものとする。すると、制御部１５１は、割り込みが発生してから所定時間が経過したと判断する（ステップＳ８０８）。したがって、制御部１５１は、タイマ１５２に動作の停止を指示する。なお、これらの処理は、図４のステップＳ４１０〜Ｓ４１１に相当する。
【０１２７】
このとき、制御部１５１は、特権状態管理装置１９０からの通知により情報処理装置１００が特権状態であること、つまりプロセッサ１２０上で特権ソフトウェア１３１が動作していることを認識できる。
【０１２８】
そこで、制御部１５１は、管理している割り込み処理監視装置１５０の状態情報をＲＵＮＮＩＮＧ状態からＰＥＮＤＩＮＧ状態に設定する。なお、これらの処理は、図４のステップＳ４１２〜Ｓ４１３の処理に相当する。
【０１２９】
特権ソフトウェア１３１は、第１のゲストＯＳ１３２から呼び出されたものの、割り込み処理を通知するための呼び出しが行われたわけではないので、タイマ初期値設定部１５３にタイマ１５２の初期値設定を要求することもなく、当該呼び出された処理を終了すると、第１のゲストＯＳ１３２に処理を戻す（ステップＳ８０９）。
【０１３０】
プロセッサ１２０上で動作するソフトウェアが特権ソフトウェア１３１から第１のゲストＯＳ１３２に切り替わったことで、特権状態管理装置１９０が通知する、情報処理装置１００が特権状態か否かを示す信号は、特権状態ではないことを示すものに変化し、制御部１５１は、情報処理装置１００が特権状態でなくなったことを認識できる。この処理は、図４のステップＳ４１２の処理に相当する。
【０１３１】
そして、特権状態でなくなったことを認識した制御部１５１は、プロセッサリセット信号発生部１５４にプロセッサリセット信号の発生を指示し、プロセッサリセット信号発生部１５４は、プロセッサリセット信号を発生させる（ステップＳ８１０）。これによりプロセッサ１２０がリセットされる。
【０１３２】
そして、制御部１５１は、プロセッサ１２０のリセットが行われた後、管理している割り込み処理監視装置１５０の状態情報をＰＥＮＤＩＮＧ状態からＳＴＯＰ状態に設定する。なお、プロセッサリセット信号を指示してからの処理は、図４のステップＳ４１５及びＳ４０１の処理に相当する。
【０１３３】
つまり、図８で示した処理手順では、制御部１５１が管理する割り込み処理監視装置１５０の状態情報としてＰＥＮＤＩＮＧ状態が存在することで、プロセッサ１２０に対して所定時間よりさらに時間が経過した場合でも、第１のゲストＯＳ１３２や第２のゲストＯＳ１３３が起こした不具合等を見逃すことなくプロセッサをリセットすることができる。
【０１３４】
リセットされて再起動したプロセッサ１２０は、特権ソフトウェア１３１の実行を開始する（ステップＳ８１１）。これにより、特権ソフトウェア１３１は、第１のゲストＯＳ１３２から通知されなかった割り込みを調べることができる。
【０１３５】
以降、図８のステップＳ８１２〜Ｓ８１５までの処理は、図５のステップＳ５０９〜Ｓ５１２までの処理と同様なので説明を省略する。
【０１３６】
上述した処理手順により、ゲストＯＳに悪意若しくは不具合があることで、デバイス１７１〜１７３の起こした割り込みの発生が特権ソフトウェア１３１に伝えられなくても、一定時間後に割り込み処理監視装置１５０によりプロセッサ１２０がリセットされることになる。そして、プロセッサ１２０の再起動時に特権ソフトウェア１３１が実行されるので、発生した割り込みを調査することができる。
【０１３７】
また、特権ソフトウェア１３１は、プロセッサ１２０をリセットさせる原因となったゲストＯＳ等のソフトウェアを実行しないように管理する。特権ソフトウェア１３１がこのような管理を行うことで、リセットする原因となったゲストＯＳに悪意又は不具合ある場合でも、当該ゲストＯＳを除いた情報処理装置１００の安全な動作が実現できる。
【０１３８】
上記実施形態においては、従来仮想化を支援する機能が実装されたプロセッサでなければ提供できなかったデバイスの割り込みの正しいゲストＯＳやプログラムへの配送を、仮想化を支援する機能が実装されていないプロセッサを使用して組み込み機器用のシステムＬＳＩを構築する場合でも、プロセッサに手を加えることなく、ハードウェアを追加することで実現することができる。
【０１３９】
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【０１４０】
（第１の実施の形態の変形例１）
上述した第１の実施の形態では、タイマ１５２において設定した初期値から‘０’へとカウントダウンしていくカウントダウンタイマを用いた実施形態について説明した。しかしながら、デバイスからの割り込みが発生してからの経過時間を計測するために用いるタイマをカウントダウンタイマに制限するものではない。そこで、第１の実施の形態の変形例としてアップカウンタを用いた例について説明する。なお、割り込み処理監視装置以外の構成は第１の実施形態と同様なので説明を省略する。
【０１４１】
図９に示すように、割り込み処理監視装置９１０は、第１の実施の形態に係る割り込み処理監視装置１５０とは、タイマ初期値設定部１５３が削除され、タイマ最大値設定部９１１が追加され、タイマ１５２と処理が異なるタイマ９１２を備え、制御部１５１とは処理が異なる制御部９１３を備えた点のみ異なる。なお、本実施の形態の割り込み処理監視装置９１０の構成で、第１の実施の形態の割り込み処理監視装置１５０と共通な構成については説明を省略する。
【０１４２】
タイマ最大値設定部９１１は、特権ソフトウェア１３１からの後述するタイマ９１２の最大値設定要求を受け付ける。その後、タイマ最大値設定部９１１は、タイマ９１２への最大値設定要求が来たことを後述する制御部９１３に通知し、制御部９１３からの指示に従ってタイマ９１２に対して最大値を設定する。なお、タイマ最大値設定部９１１が設定する最大値は最大値設定要求に含まれる任意の値とする。
【０１４３】
タイマ９１２は、制御部９１３により制御されるタイマとする。本実施の形態では、タイマ９１２は、‘０’からタイマ最大値設定部９１１によって予め設定された最大値（正の値）まで単調増加するアップカウンタ型のタイマとする。
【０１４４】
制御部９１３は、タイマ９１２のカウント値を監視して、タイマ９１２のカウント値とタイマ最大値設定部９１１で設定された最大値とが同じ値になったか否かを判断する。
【０１４５】
また、このような割り込み処理監視装置１５０の変更に伴い、プロセッサ１２０から送信される信号が、第１の実施形態のような初期値設定要求ではなく最大値設定要求に変更される。なお、最大値設定要求が送信されるタイミングは、第１の実施形態の初期値設定要求と同様なので説明を省略する。
【０１４６】
制御部９１３は、最大値設定要求を受け付けたことをタイマ最大値設定部９１１から通知されると、割り込み処理監視装置９１０の状態情報に、ＲＥＡＤＹ状態を設定する。つまり、ＲＥＡＤＹ状態は、タイマ最大値設定部９１１によりタイマ９１２の最大値の設定がなされ、当該タイマ９１２がカウントを開始する準備が完了した状態とする。なお、他の遷移及び処理等については、第１の実施形態のＲＥＡＤＹ状態と同様なので説明を省略する。
【０１４７】
そして、ＲＵＮＮＩＮＧ状態は、タイマ９１２によるカウントアップが開始されており、まだカウント値が最大値になっていない状態とする。つまり、本変形例では、タイマ９１２は、クロックのような周期的な入力信号にしたがってカウント値が‘０’から最大値になるまでカウントアップを行う。なお、遷移及び処理等については、第１の実施形態のＲＵＮＮＩＮＧ状態と同様なので説明を省略する。
【０１４８】
なお、ＳＴＯＰ状態及びＰＥＮＤＩＮＧ状態は、制御部９１３が、タイマ最大値設定部９１１が特権ソフトウェア１３１からタイマ９１２の最大値設定要求を受け付けたことを通知された場合に、割り込み処理監視装置９１０の状態情報にＲＥＡＤＹ状態を設定する以外、第１の実施形態と同様なので説明を省略する。
【０１４９】
なお、第１の実施形態及び本変形例は、割り込み処理監視装置のタイマにアップカウンタ又はダウンカウンタを用いることに制限するものではなく、他の様々なカウンタを用いても良い。
【０１５０】
（第１の実施の形態の変形例２）
第１の実施形態の割り込み処理監視装置１５０では、タイマ１５２に設定される初期値を特権ソフトウェア１３１が送信する初期値設定要求に含まれる任意の値としたが、特権ソフトウェア１３１から送信される初期値設定要求には設定する初期値を含まず、製造時又は出荷時にＲＯＭ等に予め書き込んでおいた初期値を設定することも可能である。そこで、第１の実施形態の変形例２では、初期値を製造時又は出荷時にＲＯＭ等に予め書き込んでおく例とする。
【０１５１】
本変形例のように、初期値をＲＯＭ等に書き込むことで、後で初期値を変更することを防止できると共に、意図的にタイマ１５２の初期値を偽る攻撃から情報処理装置１００を保護することができる。なお、本変形例にかかる情報処理装置の構成及び処理については、第１の実施形態と同様なので説明を省略する。
【０１５２】
また、本変形例では、タイマがカウントダウン形式であり初期値を予め書き込んでおく例を挙げたが、初期値のみ書き込むことに制限するものではない。例えばタイマにアップカウンタを用いた場合、最大値をＲＯＭ等に予め書き込んでもよい。
【０１５３】
（第１の実施の形態の変形例３）
第１の実施形態では、割り込みコントローラ１４０から割り込み処理監視装置１５０及びプロセッサ１２０に対して割り込みが発生したことを示す通知を行っていた。しかしながら、第１の実施形態は、割り込み処理監視装置１５０に対して送信されるデバイス割り込みの通知を、割り込みコントローラ１４０からの通知に制限するものではない。
【０１５４】
そこで第１の実施形態の変形例３では、デバイスコントローラ１６１〜１６３から直接、割り込み処理監視装置１５０に対して割り込みが発生したことを示す通知が送信される例とする。図１０に示すように、デバイスコントローラ群１６１〜１６３と割り込みコントローラ１４０とを接続する専用線において、経路の途中で分岐している専用線１００１が割り込み処理監視装置１５０と接続されている。
【０１５５】
これに伴い、割り込みコントローラ１４０から割り込みが発生した旨を通知するための専用線１００２が、プロセッサ１２０のみと接続されるよう変更された。また、システムＬＳＩ１０１０は、専用線１００１及び専用線１００２以外の構成が、第１の実施形態のシステムＬＳＩ１１０と同様なので説明を省略する。
【０１５６】
これにより、任意のデバイスによる割り込みが発生した場合、デバイスコントローラ群１６１〜１６３が割り込みコントローラ１４０及び割り込み処理監視装置１５０の制御部１５１に対して、直接割り込みが発生したことを通知する。これにより、検出部１５５は、直接デバイスコントローラ群１６１〜１６３から送信された通知に基づいて、割り込みを検出することができる。
【０１５７】
（第１の実施の形態の変形例４）
第１の実施形態では、割り込みコントローラ１４０から割り込み処理監視装置１５０及びプロセッサ１２０に対して割り込みが発生したことを示す通知を行っていた。しかしながら、割り込みが発生したことを示す通知の信号が、必ず割り込みコントローラ１４０を介する必要はない。
【０１５８】
図１１に示すように、本変形例にかかる情報処理装置１１００は、上述した第１の実施の形態にかかる情報処理装置１００とは、割り込みコントローラ１４０が削除された構成を有している点で異なる。以下の説明では、上述した実施の形態１と同一の構成要素には同一の符号を付してその説明を省略している。
【０１５９】
図１１に示すように、本変形例にかかる情報処理装置１１００では、デバイスコントローラ群１６１〜１６３と、プロセッサ１２０及び割り込み処理監視装置１５０とを専用線で接続している。これにより、デバイスコントローラ群１６１〜１６３から直接、プロセッサ１２０及び割り込み処理監視装置１５０に対して割り込みが発生したことを示す通知が送信される。検出部１５５は、直接デバイスコントローラ群１６１〜１６３から送信された通知に基づいて、割り込みを検出することができる。
【０１６０】
また、本変形例における情報処理装置１１００の各構成が行う処理は、本実施の形態における情報処理装置１００の各構成が行う処理とは、デバイスから割り込みコントローラ１４０を介さずに直接プロセッサ１２０及び割り込み処理監視装置１５０に対して割り込み通知を行っている点と、特権ソフトウェア１３１や第１のゲストＯＳ１３２及び第２のゲストＯＳ１３３が発生した割り込みを確認する際、割り込みコントローラ１４０に対して行わず、直接デバイスに対して行う点のみ異なる。
【０１６１】
そこで、第３のデバイス１７３から割り込みが発生してから所定時間内に第１のゲストＯＳ１３２から特権ソフトウェア１３１に割り込みの発生が通知される例について説明する。
【０１６２】
図１２は、第３のデバイス１７３から割り込みを示す通知を受け付けた後、割り込み処理監視装置１５０のタイマ初期値設定部１５３が、所定時間内に特権ソフトウェア１３１からタイマ１５２の初期値設定要求を受け付けた例を示している。このとき、図１２に示すように、第３のデバイス１７３、プロセッサ１２０及び割り込み処理監視装置１５０との間で通信が行われている。
【０１６３】
図１２のステップＳ１２０１〜Ｓ１２０２は、図５のステップＳ５０１〜Ｓ５０２と同様の処理手順のため説明を省略する。
【０１６４】
そして、第３のデバイス１７３は、プロセッサ１２０上で動作している第１のゲストＯＳ１３２に対して、第３のデバイスコントローラ１６３を経由して、割り込みを要求する旨を通知する（ステップＳ１２０３）。さらに、第３のデバイス１７３は、ステップＳ１２０３に示した通知とほぼ同時に、割り込み処理監視装置１５０に対して割り込みの発生を通知する（ステップＳ１２０４）。
【０１６５】
図１２のステップＳ１２０５〜Ｓ１２０７は、図５のステップＳ５０６〜Ｓ５０８と同様の処理手順のため説明を省略する。
【０１６６】
次に、プロセッサ１２０上の特権ソフトウェア１３１は、割り込み要求の確認を第３のデバイス１７３に対して行う（ステップＳ１２０８）。このように特権ソフトウェア１３１は、接続された各デバイスに対して割り込み要求の確認を行う。これにより、割り込み要求を行ったデバイスを確認できる。
【０１６７】
図１２のステップＳ１２０９〜Ｓ１２１０は、図５のステップＳ５１１〜Ｓ５１２と同様の処理手順のため説明を省略する。
【０１６８】
なお、第３のデバイス１７３から割り込みが発生してから所定時間内に第１のゲストＯＳ１３２から特権ソフトウェア１３１に割り込みの発生が通知されず、プロセッサ１２０上で動作するソフトウェアが変更されない場合等の処理手順は、図１２で示した第３のデバイス１７３からの割り込み通知、プロセッサ１２０から発信される割り込みの確認以外の処理手順が第１の実施の形態の図６〜図８の処理手順と同様なので、説明を省略する。
【０１６９】
（第１の実施の形態の変形例５）
第１の実施の形態はデバイスコントローラ群１６１〜１６３から直接オンチップバス１８０や割り込みコントローラ１４０に接続していた。しかしながら、この場合、プロセッサ１２０の最上位の特権モードで動作するゲストＯＳが接続されている不正なアクセスを行い、デバイスに割り込みを発生させる等の攻撃が可能である。そこで、第１の実施形態の変形例５では、デバイスに対する、ゲストＯＳ等のソフトウェアからのアクセス制御を細かく設定して、デバイスを保護する例について説明する。
【０１７０】
図１３に示すように、情報処理装置１３００は、上述した第１の実施の形態にかかる情報処理装置１００とは、デバイスアクセス制御装置１３２１〜１３２３が追加されていること、保護領域１３４０が追加され、そして特権状態管理装置１９０とは処理が異なる特権状態管理装置１３３０に変更された構成を有している点で異なる。以下の説明では、上述した第１の実施の形態と同一の構成要素には同一の符号を付してその説明を省略している。
【０１７１】
特権状態管理装置１３３０は、情報処理装置１３００が特権状態であるか否かを示す信号を、各デバイスアクセス制御装置１３２１〜１３２３及び保護領域１３４０に対して通知する。なお、特権状態管理装置１３３０は、第１の実施形態の特権状態管理装置１９０と同様に割り込み処理監視装置１５０に対しても通知を行う。なお、割り込み処理監視装置１５０に対する通知は、第１の実施形態で説明したので省略する。
【０１７２】
これにより、情報処理装置１３００は、デバイスアクセス制御装置１３２１〜１３２３が保持する設定情報に対する書き込みを、情報処理装置１３００が特権状態つまり特権ソフトウェア１３１が動作している時だけに制限することができる。また、情報処理装置１３００は、保護領域１３４０に対する読み込み又は書き込み処理を、特権状態つまり特権ソフトウェア１３１が動作している時に制限することができる。
【０１７３】
保護領域１３４０は、特権ソフトウェア１３１に限りアクセスが許可されている記憶領域とする。保護領域１３４０は、デバイスを管理するための情報などを格納する記憶手段であり、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの一般的に利用されているあらゆる記憶手段により構成することができる。
【０１７４】
また、保護領域１３４０は、後述するデバイスアクセス制御装置１３２１〜１３２３で用いる設定データを格納している。そして、保護領域１３４０は、特権状態管理装置１３３０から情報処理装置１３００が特権状態であることを通知されている時に書き込み要求を受け付けた場合、当該書き込み要求が特権ソフトウェア１３１から行われたものとして、書き込み要求を許可する。
【０１７５】
特権ソフトウェア１３１は、保護領域１３４０に格納されているデバイスアクセス制御装置１３２１〜１３２３に設定するデバイスアクセス制御用情報を読み出す。その後特権ソフトウェア１３１は、読み出したデバイスアクセス制御用情報を用いて、デバイスアクセス制御装置１３２１〜１３２３の設定を行う。
【０１７６】
デバイスアクセス制御用情報とは、例えば第１のデバイス１７１に対して、第１のゲストＯＳ１３２がアクセス可であり、そして第２のゲストＯＳ１３３がアクセス不可能であること等を含む情報とする。
【０１７７】
第１のデバイスアクセス制御装置１３２１は、第１のデバイスコントローラ１６１及び特権状態管理装置１３３０と接続されている。そして、第１のデバイスアクセス制御装置１３２１は、格納されている設定に応じて、ゲストＯＳ毎に第１のデバイス１７１に対するアクセスを許容するか否か判断し、許容すると判断した場合にゲストＯＳから受け付けたデータの送信又はゲストＯＳへのデータの送信を行う。このように、第１のデバイスアクセス制御装置１３２１が、ゲストＯＳによるデバイスへのアクセスを制御することで、安全性が向上する。
【０１７８】
また、第１のデバイスアクセス制御装置１３２１は、特権ソフトウェア１３１に限り設定の変更要求を受け付ける。第１のデバイスアクセス制御装置１３２１は、特権状態管理装置１３３０からの、情報処理装置１３００が特権状態であるか否かの通知により、特権ソフトウェア１３１からのアクセスであるか否かを判断する。これにより、プロセッサ１２０の最上位の特権モードで動作するゲストＯＳによる、第１のデバイスアクセス制御装置１３２１そのものに対するアクセスを保護でき、第１のデバイスアクセス制御装置１３２１の設定の書き換えを防止することができる。
【０１７９】
また、第２のデバイスアクセス制御装置１３２２は第２のデバイスコントローラ１６２と接続されていることを除けば、第１のデバイスアクセス制御装置１３２１と同様なので説明を省略する。また、第３のデバイスアクセス制御装置１３２３は第３のデバイスコントローラ１６３と接続されていることを除けば、第１のデバイスアクセス制御装置１３２１と同様なので説明を省略する。
【０１８０】
なお、本変形例では、デバイスアクセス制御装置とデバイスコントローラを別の構成としたが、１つの装置にこれらの構成を含めることにしてもよい。
【０１８１】
本変形例では、保護領域１３４０に格納されているデバイスアクセス制御装置１３２１〜１３２３の設定内容は、特権ソフトウェア１３１しか書き換えられない。さらに、保護領域１３４０に格納されているデバイスアクセス制御用情報は、特権ソフトウェア１３１しか書き換えられない。これにより、情報処理装置１３００は、悪意のあるソフトウェアによる攻撃からより強固に保護することができる。
【０１８２】
本変形例にかかる情報処理装置１３００では、上述した構成を備えることで、デバイスアクセス制御装置１３２１〜１３２３用の制御データを悪意のあるソフトウェアから保護することができる。これにより、情報処理装置１３００の安全性がさらに向上する。
【産業上の利用可能性】
【０１８３】
以上のように、本発明にかかるデバイス制御装置は、複数のゲストＯＳで動作を行う際に、任意のデバイスから割り込みが生じた場合に適切にゲストＯＳの切り替えを行う技術として有用である。
【図面の簡単な説明】
【０１８４】
【図１】第１の実施の形態にかかる情報処理装置の構成を示すブロック図である。
【図２】プロセッサ上で動作するソフトウェア構成を示した図である。
【図３】割り込み処理監視装置が管理しているタイマの状態の遷移を示した状態遷移図である。
【図４】割り込み処理監視装置の処理手順を示すフローチャートである。
【図５】情報処理装置の各構成間で行われた通信手順を示した第１の例を示すシーケンス図である。
【図６】情報処理装置の各構成間で行われた通信手順を示した第２の例を示すシーケンス図である。
【図７】情報処理装置の各構成間で行われた通信手順を示した第３の例を示すシーケンス図である。
【図８】情報処理装置の各構成間で行われた通信手順を示した第４の例を示すシーケンス図である。
【図９】第１の実施形態の変形例１にかかる割り込み処理監視装置の構成を示すブロック図である。
【図１０】第１の実施形態の変形例３にかかる情報処理装置の構成を示すブロック図である。
【図１１】第１の実施形態の変形例４にかかる情報処理装置の構成を示すブロック図である。
【図１２】第１の実施形態の変形例４にかかる情報処理装置の各構成間で行われた通信手順を示した例を示すシーケンス図である。
【図１３】第１の実施形態の変形例５にかかる情報処理装置の構成を示すブロック図である。
【符号の説明】
【０１８５】
１００、１０００、１１００、１３００  情報処理装置
１１０、１０１０、１１１０、１３１０  システムＬＳＩ
１２０  プロセッサ
１２１  記憶制御部
１２２  制御部
１２３  演算部
１２４  プロセッサリセット制御部
１２５  割り込み受付部
１３０  オンチップメモリ
１３１  特権ソフトウェア
１３２  第１のゲストＯＳ
１３３  第２のゲストＯＳ
１４０  割り込みコントローラ
１４１  デバイス割り込み通知部
１４２  デバイス割り込み処理部
１４３  デバイス割り込み設定部
１５０  割り込み処理監視装置
１５１  制御部
１５２  タイマ
１５３  タイマ初期値設定部
１５４  プロセッサリセット信号発生部
１５５  検出部
１５６  判断部
１６１  第１のデバイスコントローラ
１６２  第２のデバイスコントローラ
１６３  第３のデバイスコントローラ
１７１  第１のデバイス
１７２  第２のデバイス
１７３  第３のデバイス
１８０  オンチップバス
１９０、１３３０  特権状態管理装置
２０１  ハードウェア群
２１１  割り込み管理ルーチン
２２１、２２２  割り込み処理ルーチン
９１０  割り込み処理監視装置
９１１  タイマ最大値設定部
９１２  タイマ
９１３  制御部
１００１、１００２  専用線
１３２１  第１のデバイスアクセス制御装置
１３２２  第２のデバイスアクセス制御装置
１３２３  第３のデバイスアクセス制御装置
１３４０  保護領域
【図１】
2008158899.tif 000003
【図２】
2008158899.tif 000004
【図３】
2008158899.tif 000005
【図４】
2008158899.tif 000006
【図５】
2008158899.tif 000007
【図６】
2008158899.tif 000008
【図７】
2008158899.tif 000009
【図８】
2008158899.tif 000010
【図９】
2008158899.tif 000011
【図１０】
2008158899.tif 000012
【図１１】
2008158899.tif 000013
【図１２】
2008158899.tif 000014
【図１３】
2008158899.tif 000015