以下に添付図面を参照して、この発明にかかるデバイス制御装置の最良な実施の形態を詳細に説明する。また、後述する実施の形態においては、デバイス制御装置をシステムLSIに適用した例について説明する。なお、デバイス制御装置は、システムLSIに限らず、どのような装置に適用しても良い。
(第1の実施の形態)
図1に示すように、情報処理装置100は、システムLSI110と、第1のデバイス171と、第2のデバイス172とを備える。
第1のデバイス171及び第2のデバイス172は、システムLSI110に接続され、システムLSI110に含まれるプロセッサ120により制御が行われるデバイスとする。また、第1のデバイス171及び第2のデバイス172は、情報処理装置100の筐体内部に備えるものでも、情報処理装置100の外部に備えるものでもよい。また、情報処理装置100に接続されるデバイスの数を2個に制限するものではなく、何個でも良いものとする。
また、第1のデバイス171及び第2のデバイス172の例としては、メモリモジュール、ハードディスクドライブ等の大容量外部記憶装置、ネットワークインターフェース等の外部通信装置、キーボードやマウスなど利用者が入力に用いる入力装置、さらにはディスプレイ等の外部出力装置が考えられるが、これらに限るものではない。
システムLSI110は、プロセッサ120と、オンチップメモリ130と、割り込みコントローラ140と、割り込み処理監視装置150と、第1のデバイスコントローラ161と、第2のデバイスコントローラ162と、第3のデバイスコントローラ163と、第3のデバイス173と、各構成を接続するオンチップバス180と、特権状態管理装置190と、を備える。
第3のデバイス173は、後述するプロセッサ120により制御が行われるデバイスとする。このように、プロセッサで制御されるデバイスは、システムLSI110内部に備えるものでも良い。
第1のデバイスコントローラ161は、オンチップバス180を介してプロセッサ120等から第1のデバイス171に対するアクセスを受け付け、アクセス内容に応じた制御信号を第1のデバイス171へ送出する。また、第1のデバイスコントローラ161は、第1のデバイス171から受け取った信号を、オンチップバス180に送信するデータに変換し、そのデータを、オンチップバス180を介してプロセッサ120等に送信する。さらに、第1のデバイスコントローラ161は、第1のデバイス171からの割り込み要求を、プロセッサ120の割り込み受付部125及び割り込み処理監視装置150に対して通知するために、前記割り込みコントローラ140へ送出する。
第2のデバイスコントローラ162及び第3のデバイスコントローラ163は、制御対象となるデバイスが第2のデバイス172及び第3のデバイス173となる以外、第1のデバイスコントローラ161と同様の処理を行うため説明を省略する。
オンチップメモリ130は、特権ソフトウェア131、第1のゲストOS132、第2のゲストOS133を保持している。換言すれば、オンチップメモリ130は、特権ソフトウェア131を記憶する記憶部と、第1のゲストOS132及び第2のゲストOS133を記憶するOS記憶部と、を含む構成に相当する。また、本実施の形態においては、特権ソフトウェア131と、第1のゲストOS132と、第2のゲストOS133とを1つのオンチップメモリ130に保持することとしたが、別の記憶手段にそれぞれ保持することにしてもよい。なお、オンチップメモリ130に格納するゲストOSの数は、2個に制限するものではなく、あらゆる個数で良い。
特権ソフトウェア131は、デバイスからの割り込みを管理するソフトウェアとする。また、特権ソフトウェア131は、真に信頼できるものとして割り込み処理監視装置150のタイマ初期値設定部153へのアクセスが許可されている。そして、特権ソフトウェア131は、他のゲストOSがプロセッサ120上で正常に動作している場合、当該ゲストOSがデバイスからの割り込み要求を受信した後、当該ゲストOSから呼び出される。これにより、特権ソフトウェア131は、デバイスが起こす全ての割り込みを管理することができる。また、本実施の形態では、プロセッサ120の起動直後及びリセットからの復帰直後に、必ず特権ソフトウェア131が実行されるものとする。リセットとは、プロセッサ120が実行する命令を、それまで実行していたプロセス等を無視して、あらかじめ決められた命令に強制的に変えることである。ここでは、今実行しているゲストOSやプロセス等の命令のアドレスもしくは次に取ってくる命令のアドレスを保持しているレジスタの内容を、特権ソフトウェアの命令のアドレスに書き換えることに相当する。
特権ソフトウェア131の信頼性を保証する機構は、どのような手法で実現しても良い。本実施の形態では、オンチップメモリ130上に読み出しのみ可能な領域を設け、製造時にその領域に特権ソフトウェア131を予め書き込むこととする。また、他の実施形態としては、認証用のデバイスを情報処理装置100に接続し、当該デバイスがオンチップバス180を介してオンチップメモリ130に格納されている特権ソフトウェア131が改竄されているか否かチェックし、改竄されていないと判断された場合のみ特権ソフトウェア131を起動してもよい。
本実施の形態では、特権ソフトウェア131が動作している状態を、情報処理装置100が特権状態であると呼ぶこととする。そして、プロセッサ120上で特権ソフトウェア131が動作を開始すると、後述する特権状態管理装置190は、情報処理装置100が特権状態であることを検出して、そのことを、割り込み処理監視装置150内の制御部151に通知する。これにより、割り込み処理監視装置150内の制御部151は、情報処理装置100が特権状態であるか否かを認識することができる。なお、割り込み処理監視装置150内の制御部151が、情報処理装置100が特権状態であるか否かを認識する手法としては、この手法に限らず、どのような手法を用いても良い。
また、特権ソフトウェア131は、デバイス毎に、当該デバイスにアクセス可能なソフトウェア(例えばOS、特権ソフトウェア)を制限しても良い。本実施の形態では、第2のデバイス172が、第1のゲストOS132で排他的に制御されるデバイスとし、第3のデバイス173が、第2のゲストOS133に排他的に制御されるデバイスとする。
第1のゲストOS132及び第2のゲストOS133は、後述するプロセッサ120上で動作するOSとする。また、第1のゲストOS132と第2のゲストOS133、さらにOS上で動作するアプリケーションは、割り込み処理監視装置150に対してアクセスを許可されていない。
これは、ゲストOS(例えば、第1のゲストOS132又は第2のゲストOS133)又はアプリケーションプログラムが、上述した特権ソフトウェア131のように信頼できることが保証されていないためである。このため、仮に、ゲストOS又はアプリケーションプログラムなどのソフトウェアに、割り込み処理監視装置150に対するアクセスを許可した場合、これらソフトウェアに不備又は悪意があれば、割り込み処理監視装置150が本来の処理を実行できなくなる可能性がある。
オンチップメモリ130は、後述するプロセッサ120上で特権ソフトウェア131、第1のゲストOS132、第2のゲストOS133が作業する際に利用する作業領域(図示しない)を保持している。また、本実施の形態にかかるオンチップメモリ130は、特権ソフトウェア131を保持する読み込みのみ可能なROM(Read Only Memory)領域と、第1のゲストOS132、第2のゲストOS133及び作業領域を保持する読み書き可能なRAM(Random Access Memory)領域と、から構成されるものとする。なお、オンチップメモリ130は、このような構成に限らず、一般的に利用されているあらゆる記憶手段により構成することができる。
特権状態管理装置190は、割り込み処理監視装置150の制御部151に対して、情報処理装置100が特権状態であるか否かを示す信号を常に通知している。つまり、特権状態管理装置190は、オンチップメモリ130に格納された特権ソフトウェア131がプロセッサ120上で実行されている場合には、特権状態を示す信号を、制御部151に対して通知する。特権状態管理装置190は、第1のゲストOS132又は第2のゲストOS133等、特権ソフトウェア131と異なるソフトフェアがプロセッサ120上で実行されている場合、特権状態では無いことを示す信号を、制御部151に対して通知する。
この特権状態管理装置190は、悪意のあるソフトウェアによる攻撃を避けるため、ハードウェアで実装することが望ましい。
プロセッサ120は、記憶制御部121と、制御部122と、演算部123と、プロセッサリセット制御部124と、割り込み受付部125とを備える。そして、プロセッサ120上において、特権ソフトウェア131、第1のゲストOS132、第2のゲストOS133、(図示しない)アプリケーションプログラムが動作する。
図2に示すように、特権ソフトウェア131は、論理的には第1のゲストOS132及び第2のゲストOS133の下層に配置される。そして、第1のゲストOS132は割り込み処理ルーチン221を、第2のゲストOS133は割り込み処理ルーチン222を保持する。また、特権ソフトウェア131は、割り込み管理ルーチン211を保持する。なお、本実施の形態は、特権ソフトウェア131を、第1のゲストOS132及び第2のゲストOS133の下層に配置することに制限するものではなく、例えば特権ソフトウェア131を、第1のゲストOS132及び第2のゲストOS133と並列に配置しても良い。
次に、図2を用いて、ハードウェア群201に含まれるハードウェアから割り込みを示す信号が通知された場合に正常に処理が行われた例について説明する。まず、第2のゲストOS133がプロセッサ120上で動作しているものとする。このような状況で、第2のデバイス172及び第3のデバイス173から割り込みの通知がなされた場合、当該割り込みの通知は第2のゲストOS133の割り込み処理ルーチン222が受信する。本実施の形態では、第2のデバイス172が第1のゲストOS132が排他的に制御可能なデバイスであり、第3のデバイス173が第2のゲストOS133が排他的に制御可能なデバイスである。つまり、割り込み処理ルーチン222には、当該第2のゲストOS133で制御可能なデバイスからの割り込みと、当該第2のゲストOS133で制御できないデバイスからの割り込みが通知されることになる。
この場合、第2のゲストOS133は、通知された割り込みが当該第2のゲストOS133で制御可能なデバイスからの割り込みであるか否かに拘わらず、特権ソフトウェア131を呼び出して、プロセッサ120上で動作するソフトウェアを特権ソフトウェア131に切り替える。これにより、特権ソフトウェア131が保持する割り込み管理ルーチン211が、通知された割り込みを全て認識することが可能となる。
そして、特権ソフトウェア131は、当該割り込みの送信元のデバイスを制御可能なゲストOSを呼び出して、当該ゲストOSをプロセッサ120上で動作させる。なお、特権ソフトウェア131は、切り替え前のゲストOSが複数の割り込みを受信したと判断した場合、予め設定された割り込みの優先度等に基づいて、切り替えるゲストOSを判断する。図2に示した例では、特権ソフトウェア131は、第3のデバイス173を制御可能な第2のゲストOS133を呼び出している。これにより、第2のゲストOS133の割り込み処理ルーチン222は、割り込み管理ルーチン211からの通知に従って、第3のデバイス173を制御する。
図1に戻り、制御部122は、プロセッサ120全体の動作を制御する。演算部123は、制御部122の指示に従って演算をする。
記憶制御部121は、制御部122からの指示、又は演算部123の結果に基づいて、オンチップメモリ130等から命令を取得する。また、記憶制御部121は、オンチップメモリ130等にデータの読み書きする。さらに、記憶制御部121は、各デバイスコントローラ161〜163を介して、各デバイス171〜173にアクセスする。
プロセッサリセット制御部124は、後述する割り込み処理監視装置150からリセット要求を受け付けた場合に、制御部122に対してリセットを通知し、プロセッサ120上で実行されている処理の内容にかかわらずプロセッサ120をリセットする。
割り込み受付部125は、割り込みコントローラ140から、デバイス171〜173の割り込み要求を受け付ける。そして、割り込み受付部125は、割り込みの内容に従い、割り込みベクタテーブル内の予め決められた場所に格納された命令を実行するように制御部122に指示をする。これにより、制御部122上で動作しているソフトウェアが割り込みの発生を認識する。
プロセッサ120への入出力信号は、オンチップメモリ130をはじめとした装置等からオンチップバス180を介して入力されるアドレス信号やデータ信号、割り込みコントローラ140から入力されるデバイス割り込み通知信号、後述する割り込み処理監視装置150から入力されるプロセッサリセット信号とする。これらの信号を入出力するためのポートは、仮想化を支援する機能を内蔵しないプロセッサであっても必ず実装されている。
このことは、割り込み処理監視装置150および特権状態管理装置190を任意の情報処理装置に搭載する場合、当該情報処理装置に搭載されるプロセッサの入出力信号の種類又は数に依存していないことを意味する。つまり、割り込み処理監視装置150および特権状態管理装置190を搭載して上述した構成を備えることで、仮想化を支援する機能が内蔵されていない任意のプロセッサでも、デバイス割り込みの適切なゲストOSへの配送を実現することができる。
割り込みコントローラ140は、デバイス割り込み通知部141と、デバイス割り込み処理部142と、デバイス割り込み設定部143とを備える。また、割り込みコントローラ140は、割り込み用の専用線を介して割り込み処理監視装置150及びプロセッサ120と接続されている。これにより、割り込みコントローラ140は、デバイスコントローラ161〜163から受信した割り込み要求を、プロセッサ120及び割り込み処理監視装置150に通知することができる。
なお、本実施の形態においては、図1に示すようにデバイスコントローラ161〜163と割り込みコントローラ140とを割り込み用の専用線を介して接続しているが、オンチップバス180を介して接続していてもよい。同様に、本実施の形態においては、割り込みコントローラ140とプロセッサ120と割り込み処理監視装置150とを割り込み用の専用線を介して接続しているが、オンチップバス180を介して接続してもよい。
デバイス割り込み設定部143は、デバイス171〜173からの割り込み要求を無視するか否かの設定をデバイス毎に記憶する。
デバイス割り込み処理部142は、デバイス171〜173それぞれを制御するデバイスコントローラ161〜163と割り込み専用線で接続されている。そして、デバイス割り込み処理部142は、接続された割り込み専用線を介してデバイスコントローラ161〜163から割り込みを受け付ける。さらに、デバイス割り込み処理部142は、オンチップバス180を介して、どのデバイスが割り込み要求を出したのかチェックする機構と、割り込み要求に対する返答を受け付ける機構とを備える。
デバイス割り込み通知部141は、デバイス割り込み処理部142が割り込み要求を受け付けた場合、デバイス割り込み設定部143に記憶された設定に従って、当該割り込み要求を無視するか否か判断する。そして、デバイス割り込み通知部141は、無視すべきではないと判断した場合に当該割り込み要求をプロセッサ120及び割り込み処理監視装置150に通知する。
割り込み処理監視装置150は、制御部151と、タイマ152と、タイマ初期値設定部153と、プロセッサリセット信号発生部154とを備える。
タイマ初期値設定部153は、プロセッサ120上で動作する特権ソフトウェア131からの、後述するタイマ152への初期値設定要求を受け付ける。その際、タイマ初期値設定部153は、初期値設定要求が来たことを後述する制御部151に通知し、また制御部151からの指示に従ってタイマ152に対して初期値を設定する。なお、タイマ初期値設定部153が設定する初期値は初期値設定要求に含まれる値とする。
タイマ152は、制御部151により制御されるタイマとする。本実施の形態では、タイマ152は、タイマ初期値設定部153によって予め設定された初期値(正の値)から‘0’になるまで単調減少するカウントダウン型のタイマとする。なお、タイマの種類をカウントダウン型のタイマに限定するものではなく、‘0’から単調増加して予め設定された初期値(正の値)になるまで動作するカウントアップ型のタイマを用いても良い。
制御部151は、検出部155と、判断部156とを備え、割り込み処理監視装置150全体を制御する。制御部151は、割り込みコントローラ140からの割り込み通知、情報処理装置100が特権状態にあるか否か、タイマ152のカウント数、タイマ初期値設定部153により設定されたタイマの初期値、そしてタイマ初期値設定部153に初期値設定要求が来たかどうかに基づいて処理を行う。また、制御部151は、割り込み処理監視装置150の状態情報を保持する。
検出部155は、割り込みコントローラ140からの割り込み通知により、デバイス171〜173からの割り込みを検出する。
判断部156は、タイマ152のカウント値が‘0’になった場合に、プロセッサ120上で動作しているソフトウェアが特権ソフトウェア131を呼び出したか否か判断する。判断部156は、タイマ初期値設定部153がプロセッサ120上で動作する特権ソフトウェア131からタイマ初期化要求を受信したことを、タイマ初期値設定部153から通知された場合に、特権ソフトウェア131が呼び出されたものと判断する。なお、詳細な判断手順については後述する。
プロセッサリセット信号発生部154は、制御部151からの指示に従って、プロセッサ120のプロセッサリセット制御部124に対して、プロセッサのリセットを要求する信号を送信する。
また、制御部151は、割り込み処理監視装置150の状態情報を管理している。図3に示すように、状態情報には、STOP状態、READY状態、RUNNING状態、PENDING状態の4種類の状態が設定される。
これらの状態は、割り込みコントローラ140からの割り込み通知、特権状態管理装置190からの情報処理装置100が特権状態にあるか否かを示す信号、タイマ152の動作状態、タイマ初期値設定部153からの特権ソフトウェア131によるタイマ初期値設定要求の通知に基づいて遷移する。次に、図3に示した各状態、状態の遷移及び遷移する条件を説明する。
STOP状態は、タイマ152が動作しておらず、また初期化もされていない状態とする。制御部151は、情報処理装置100の起動時に割り込み処理監視装置150の状態情報をSTOP状態(符号301の遷移)に設定する。また、制御部151は、割り込み処理監視装置150がRUNNING状態およびPENDING状態の時に、プロセッサリセット信号発生部154がプロセッサリセット信号を発生してプロセッサ120をリセットした場合、割り込み処理監視装置150の状態情報をSTOP状態に設定する(符号307および符号309の遷移)。
また、制御部151は、STOP状態の時に、特権ソフトウェア131からタイマ152の初期値設定要求が来たことをタイマ初期値設定部153から通知された場合、タイマ初期値設定部153にタイマ152の初期値設定を指示した上で割り込み処理監視装置150の状態情報をREADY状態に設定する(符号302の遷移)。これにより、タイマ152に初期値が設定される。なお、この初期値とは、デバイスによる割り込みが割り込み処理監視装置150に通知されてからプロセッサ120上で特権ソフトウェア131が実行を開始するまでの許容時間を示したものとする。つまり、タイマ152がカウントを開始してカウント値が初期値から‘0’になり、かつ特権ソフトウェア131が呼び出されていない場合には、判断部156がプロセッサ120をリセットすべきと判断する。
READY状態は、タイマ初期値設定部153によりタイマ152の初期値が設定され、当該タイマ152がカウントを開始する準備が完了した状態とする。また、READY状態では、タイマ152の初期値の設定はなされたが、当該タイマ152のカウントは開始していない。制御部151は、割り込み処理監視装置150の状態がSTOP状態、RUNNING状態、PENDING状態及びREADY状態の時、特権ソフトウェア131からタイマ初期値設定要求が来たことをタイマ初期値設定部153から通知された場合に、タイマ初期値設定部153にタイマ152の初期値設定指示した上で割り込み処理監視装置150の状態情報をREADY状態に設定する(符号302、符号305、符号308及び符号303の遷移)。この符号302、符号305、符号308及び符号303の遷移により、タイマ152に初期値が設定される。
また、制御部151は、READY状態の時に、制御部151に対して割り込みコントローラ140から割り込みが発生した旨の通知を受け付けた場合、タイマ152のカウントを開始させ、割り込み処理監視装置150の状態情報をRUNNING状態に設定する(符号304の遷移)。
RUNNING状態は、タイマ152がカウントダウンをしており、まだカウント値が‘0’になっていない状態とする。また、初期値として設定された時間を経過していないため、プロセッサリセット信号発生部154はプロセッサリセット信号を発生していない。
本実施の形態のように、タイマ152が予め設定された初期値からカウントダウンするカウントダウンタイマの場合、タイマ152は、クロックのような周期的な入力信号にしたがってカウント値が‘0’になるまでカウントダウンを行う。
割り込み処理監視装置150の状態情報がRUNNING状態の時にタイマ152のカウント値が‘0’になり(予め設定された時間が経過した)、かつ判断部156がプロセッサ120上で特権ソフトウェア131が実行していると判断した場合、制御部151は割り込み処理監視装置150の状態情報をPENDING状態に設定する(符号306の遷移)。判断部156は、プロセッサ120上で特権ソフトウェア131が実行しているか否かを、特権状態管理装置190から送信される情報処理装置100が特権状態であるか否かの通知により判断できる。符号306の遷移では、制御部151はタイマ152に対してカウントを停止するように指示する。
また、割り込み処理監視装置150の状態情報がRUNNING状態の時に、タイマ152のカウント値が‘0’になり、かつ判断部156がプロセッサ120上で特権ソフトウェア131が実行していないと判断した場合、制御部151は割り込み処理監視装置150の状態情報をSTOP状態に設定する(符号307の遷移)。符号307の遷移では、制御部151はタイマ152に対してカウントを停止するように指示した上で、プロセッサリセット信号発生部154に対してプロセッサリセット制御部124にプロセッサリセット要求信号を送出するように指示する。これにより、プロセッサ120がリセットされる。
このPENDING状態は、予め設定された時間が経過したものの、プロセッサリセット信号の発生が抑制されている状態ということになる。
割り込み処理監視装置150の状態情報がPENDING状態の時、制御部151が、タイマ初期値設定部153から特権ソフトウェア131によるタイマ152の初期値設定要求を受け付けたことを通知された場合、割り込み処理監視装置150の状態情報をREADY状態に設定し、タイマ初期値設定部153にタイマ152への初期値設定を指示する(符号308の遷移)。これにより、タイマ152に新たに初期値が設定される。
また、割り込み処理監視装置150の状態情報がPENDING状態の時、タイマ初期値設定部153がタイマ152の初期値設定要求を受け付けていないにも拘わらず、判断部156が特権ソフトウェア131以外のソフトウェアがプロセッサ120上で動作している(特権状態でなくなった)と判断した場合、制御部151はプロセッサリセット信号発生部154に対してプロセッサリセット信号の送出を指示し、割り込み処理監視装置150の状態情報をSTOP状態に設定する(符号309の遷移)。これにより、プロセッサ120がリセットされる。
次に、割り込み処理監視装置150が実行する処理の手順について、図4を用いて説明する。なお、図4に示された当該処理手順では、最初、情報処理装置100の電源が投入された後、制御部151は、割り込み処理監視装置150の状態情報にSTOP状態を設定する(ステップS401)。
割り込み処理監視装置150のタイマ初期値設定部153は、プロセッサ120上で動作する特権ソフトウェア131からタイマ初期値設定要求を受け付けたか否かを判断する(ステップS402)。タイマ初期値設定部153が受け付けていないと判断した場合(ステップS402:No)、タイマ初期値設定要求の検出処理を継続する(ステップS402)。
タイマ初期値設定部153がタイマ初期値設定要求を受け付けたと判断した場合(S402:Yes)、タイマ初期値設定部153は制御部151にタイマ152の初期値設定要求を受け付けたことを通知し、その通知を受けて制御部151は、タイマ初期値設定部153にタイマ152の初期値設定を指示する(ステップS403)。そして、制御部151は、割り込み処理監視装置150の状態情報をREADY状態に設定する(ステップS404)。
次に、検出部155は、割り込みコントローラ140から送信されるデバイスの割り込みを示す通知信号の検出を行う(ステップS405)。検出部155は、デバイスの割り込みを示す通知信号を検出しなかった場合(ステップS405:No)、当該通知信号の検出処理を継続する(ステップS405)。
検出部155がデバイスの割り込みを示す通知信号を検出した場合(ステップS405:Yes)、制御部151は、タイマ152に動作を指示し、タイマ152は動作を開始する(ステップS406)。本実施の形態では、カウント値が初期値からカウントダウンしていくことになる。これにより、割り込み信号を検出してからの経過時間を計測することが可能となる。
制御部151は、タイマ152のカウントを開始させた場合、割り込み処理監視装置150の状態情報をRUNNING状態に設定する(ステップS407)。次に、制御部151は、タイマ初期値設定部153がプロセッサ120上で動作する特権ソフトウェア131からタイマ初期値設定要求を受け付けたことを通知されたか否かを判断する(ステップS408)。タイマ初期値設定部153がタイマ初期値設定要求を受け付けたことを通知された場合(ステップS408:Yes)、制御部151はタイマ152に対してカウントの停止を指示する。これにより、タイマ152のカウントが停止する(ステップS409)。その後、制御部151はタイマ初期値設定部153にタイマ152の初期値設定を指示する(ステップS403)。
制御部151は、タイマ初期値設定部153からタイマ初期値設定要求を受け付けたことを通知されていない場合(ステップS408:No)、デバイスの割り込みを示す通知を検出してから所定の時間を経過したか否か判断する(ステップS410)。これは、タイマ152のカウント値が初期値から‘0’になったか否かで判断することができる。
制御部151が、所定の時間が経過していないと判断した場合(ステップS410:No)、再びタイマ初期値設定部153がタイマ152の初期値設定要求を受け付けたか否かの判断を行う(ステップS408)。
所定の時間を経過したと判断した場合(ステップS410:Yes)、制御部151は、タイマ152のカウントを停止させる(ステップS411)。
そして、判断部156が、プロセッサ120上で動作しているソフトウェアが、特権ソフトウェア131であるか否か判断する(ステップS412)。これは、特権状態管理装置190からの信号に基づいて判断できる。
特権ソフトウェア131がプロセッサ120上で動作していると判断した場合(ステップS412:Yes)、制御部151は、割り込み処理監視装置150の状態情報にPENDING状態を設定する(ステップS413)。
その後、制御部151は、タイマ初期値設定部153がプロセッサ120上で動作している特権ソフトウェア131からタイマ152の初期値設定要求を受け付けたか否かを判断する(ステップS414)。そして、タイマ152の初期値設定要求を受け付けていないと判断した場合(ステップS414:No)、プロセッサ120上で特権ソフトウェア131が動作しているか否かを再び判断する(ステップS412)。
そして、制御部151が、プロセッサ120上で動作しているソフトウェアが、特権ソフトウェア131ではないと判断した場合(ステップS412:No)、制御部151は、プロセッサリセット信号発生部154に、プロセッサリセット制御部124に対して、プロセッサリセットを要求する信号の送信を指示する。これにより、プロセッサ120がリセットされる(ステップS415)。
プロセッサ120がリセットされた後、制御部151は、割り込み処理監視装置150の状態情報をSTOP状態に設定する(ステップS401)。そして、再びステップS402以降の処理を行うことになる。
上述した処理を行うことで、デバイス群171〜173が割り込み要求を発生し、所定の時間内に特権ソフトウェア131が呼び出されていない場合に、プロセッサ120をリセットすることができる。
次に、本実施の形態における情報処理装置100の各構成が行う処理を、シーケンス図を使用して詳細に説明する。図5〜図8では、下方向の長さが経過した時間を示している。また、第3のデバイス173、割り込みコントローラ140、プロセッサ120及び割り込み処理監視装置150間で示された矢印は、当該構成間で行われた通信を表わしている。
図5〜図8のプロセッサ120では、当該プロセッサ上で動作しているソフトウェアを示している。なお、図示していないが、第3のデバイス173及び割り込みコントローラ140間では、当然に第3のデバイスコントローラ163を介して通信が行われている。また、割り込み処理監視装置150には、割り込み処理監視装置150の状態情報が示されている。
また、図5〜図8では、情報処理装置100に電源投入時から経過した時間において行われた通信などを示している。まず、割り込み処理監視装置150が管理している状態情報の初期値は、STOP状態とする。また、最初にプロセッサ120上で動作するソフトウェアは、特権ソフトウェア131とする。
なお、図5〜図8で示す処理手順は、電源投入時に限り行われる処理ではなく、情報処理装置100の起動中であれば適宜行われる処理とする。また、図5〜図8で示す処理手順では、割り込み処理監視装置150が管理している状態情報は最初STOP状態が設定されていることを仮定しているが、最初の状態情報をSTOP状態に制限するものではない。
また、図5〜図8で示す処理手順では、割り込みコントローラ140は、第3のデバイスコントローラ163から通知される割り込みを無視しない設定がなされているものとする。
図5に示すシーケンス図は、第3のデバイス173から割り込みを示す通知が行われてから所定時間内に、タイマ初期値設定部153が特権ソフトウェア131からタイマの初期値設定要求を受け付けた場合の例を示している。
まず、プロセッサ120上で動作している特権ソフトウェア131が、割り込み処理監視装置150のタイマ初期値設定部153に対してタイマ152の初期値設定要求を送信する(ステップS501)。これにより、タイマ初期値設定部153から制御部151に対して、初期値設定要求が届いたことが伝えられ、制御部151がタイマ初期値設定部153にタイマの初期値の設定を指示し、タイマ初期値設定部153がタイマ152の初期値を設定する。そして、制御部151は、割り込み処理監視装置150の状態情報をSTOP状態からREADY状態に設定する。なお、当該処理は、図4に示したステップS402〜ステップS404の処理に相当する。
なお、特権ソフトウェア131は、タイマ152の初期値として、第1のゲストOS132又は第2のゲストOS133が割り込みを検出してから特権ソフトウェア131に制御を移すために必要十分な時間を設定すべきである。これは、初期値として非常に短い時間を設定した場合、第1のゲストOS132等に不具合又は悪意がない場合でも、設定された時間内に特権ソフトウェア131を呼び出すことができない可能性があるからである。この場合、第1のゲストOS132等が正常な動作を行えない可能性がある。逆に初期値として非常に長い時間を設定した場合、第1のゲストOS132等に悪意があった場合に、当該ソフトウェアが不正な処理をするための十分な時間を与えてしまうことになる。
なお、タイマ初期値設定部153がタイマ152の初期値として任意の値を受け付け可能とした場合、指定すべき初期値の決定手法としては、各ゲストOSの割り込み応答時間(割り込みを通知されてから特権ソフトウェアに通知するまでの時間)を考慮して決定する手法や、デバイスの種類や特徴(割り込み応答時間は短い方が良いか、長くても良いか)に応じて決定する手法などが考えられる。
処理に戻り、プロセッサ120上で動作する特権ソフトウェア131は、第1のゲストOS132を呼び出して、プロセッサ120上で動作するソフトウェアを第1のゲストOS132に変更する(ステップS502)。これにより、第1のゲストOS132が動作を開始する。このとき、特権状態管理装置190からの通知は、情報処理装置100が特権状態でないことを示すものに変化する。なお、特権状態管理装置190からの特権状態を示す通知は変化するものの、READY状態において注目している信号に変化がないので、制御部151は、割り込み処理監視装置150の状態情報として、READY状態を保持する。
次に、第3のデバイス173は、割り込みコントローラ140に対して、第3のデバイスコントローラ163を経由して、割り込みを要求する旨を通知する(ステップS503)。
割り込みコントローラ140は、第3のデバイスコントローラ163から通知された割り込みを無視しない設定となっていることをデバイス割り込み設定部143に格納された情報で確認した後、プロセッサ120に対して割り込みを要求する旨を通知する(ステップS504)。
また、割り込みコントローラ140は、ステップS504に示した通知とほぼ同時に、割り込み処理監視装置150に対して割り込みが発生した旨を通知する(ステップS505)。これにより、割り込み処理監視装置150の制御部151はタイマ152の動作を開始させる(ステップS506)。また、制御部151は、割り込みコントローラ140からデバイスの割り込みが発生した旨の通知を受け付けたことで、管理している状態情報をREADY状態からRUNNING状態に設定する。なお、割り込みが発生した旨の通知を受け付けてからの処理は、図4のステップS405〜S407の処理に相当する。
プロセッサ120の割り込み受付装置125は、割り込みコントローラ140からの割り込み要求を受け付けると、制御部122に対して割り込み処理用の命令を実行するよう指示をする。この指示により実行している命令列をデバイス割り込み専用の命令列に強制的に変更させられた第1のゲストOS132は、割り込みが通知されたことを特権ソフトウェア131に伝えるために、予め設定された割り込み処理通知用の特権ソフトウェア131を呼び出す。これにより、プロセッサ120上で動作するソフトウェアが、第1のゲストOS132から特権ソフトウェア131に変更される(ステップS507)。なお、当該処理では、特権状態管理装置190の通知する信号が、情報処理装置100が特権状態であることを示すものに変化するものの、RUNNING状態において制御部151が注目している信号に変化はないので、制御部151は、割り込み処理監視装置150の状態情報として、RUNNING状態を保持する。
なお、本実施の形態のプロセッサ120と異なる、割り込みベクタの保護機構を持った汎用計算機用のプロセッサでは、ステップS507で示した処理の後半、つまり第1のゲストOSから特権ソフトウェアへの変更を、当該プロセッサ内部に実装されたハードウェアで強制的に行っている。これにより、特権ソフトウェアによる割り込みの完全管理を実現している。これに対し、本実施の形態にかかるプロセッサ120は、このような機能を備えていない、従来からシステムLSIやSoC等に組み込まれて使用されているプロセッサである。このようなプロセッサでは、第1のゲストOS132等から明示的に特権ソフトウェア131の呼び出しを行わない限り、特権ソフトウェア131に制御が移ることはない。
第1のゲストOS132から割り込みが起きたことを通知された特権ソフトウェア131は、タイマ152を停止させるため、及び次の割り込みがいつ発生しても検出できるように、割り込み処理監視装置150のタイマ初期値設定部153に対して、タイマ152の初期値設定の要求を通知する(ステップS508)。これにより、制御部151は、タイマ152を停止する指示を行った上でタイマ初期値設定部153にタイマ152の初期値設定を指示する。
なお、特権ソフトウェア131からのタイマ152の初期値設定を要求する旨の通知は、タイマ152がカウントしているカウント値が‘0’になる前に受け付けたものとする。そして、所定時間内にタイマ初期値設定部153が初期値設定の要求を受け付けたので、制御部151は管理している割り込み処理監視装置150の状態情報を、RUNNING状態からREADY状態に設定する。なお、タイマ152の初期値設定を要求する旨の通知を受け付けてからの処理は、図4のステップS408、S409、S403及びS404の処理に相当する。
次に、プロセッサ120上で動作している特権ソフトウェア131は、割り込み要求の確認を割り込みコントローラ140に対して行う(ステップS509)。さらに、特権ソフトウェア131は、必要に応じて、第3のデバイス173に対して、割り込みを発生させたデバイスを特定するために信号の送受信等の処理を行う(ステップS510)。これにより、割り込みを発生させたデバイスを特定すると共に、当該デバイスを排他的に使用している又は処理を担当するソフトウェアを特定する。なお、図5に示した処理手順では、特定されたソフトウェアを第2のゲストOS133とする。なお、これらの処理では、制御部151が注目している信号に変化はないので、割り込み処理監視装置150が管理している割り込み処理監視装置150の状態情報はREADY状態のまま保持される。
その後、特権ソフトウェア131は、割り込み処理監視装置150のタイマ初期値設定部153に対して、タイマ152の初期値設定の要求を通知する(ステップS511)。なお、タイマ初期値設定部153がタイマ152の初期値の設定要求を受け付けた際、制御部151が管理している割り込み処理監視装置の状態情報はREADY状態であり、READY状態の時に制御部151が注目している信号に変化はないので、READY状態をそのまま保持する。
そして、プロセッサ120上で動作している特権ソフトウェア131が第2のゲストOS133を呼び出すことで、プロセッサ120上で動作するソフトウェアが特権ソフトウェア131から、第3のデバイス173の処理を担当する第2のゲストOS133に変更される(ステップS512)。なお、当該処理によって特権状態管理装置190が通知する信号が、情報処理装置100が特権状態でないことを示すものに変化するものの、制御部151が注目している信号に変化はないので、制御部151が管理している割り込み処理監視装置150の状態情報はREADY状態のまま保持される。
図6に示すシーケンス図では、第1のゲストOS132で不具合が発生した等の理由で、第1のゲストOS132から特権ソフトウェア131に変更されなかった例を示した図である。つまり、第3のデバイス173から割り込みを要求する通知が行われてから所定時間を経過したにも拘わらず、タイマ初期値設定部153が特権ソフトウェア131からのタイマ152の初期値設定要求を受け付けず、第1のゲストOS132が動作したままになっている例である。
図6のステップS601〜S606までの処理は、図5のステップS501〜S506までの処理と同様なので説明を省略する。
制御部151は、タイマ152のカウント値が‘0’になったことを検出することで、割り込みが発生した旨の通知を受け取ってから所定時間が経過したものと判断する(ステップS607)。そして、制御部151は、タイマ152のカウントを停止させる。
なお、図6のステップS607の処理を行っている時、特権状態管理装置190からは情報処理装置100が特権状態ではない旨の信号が通知されている。これにより、判断部156は、プロセッサ120上で動作しているソフトウェアが特権ソフトウェア131に変更されていないと判断できる。
そこで、割り込み処理監視装置150の制御部151は、プロセッサリセット信号発生部154にプロセッサリセット信号を発生するように指示し(ステップS608)、プロセッサ120をリセットする。これにより、不具合が発生していた第1のゲストOS132を強制的に終了させることができる。
制御部151は、プロセッサ120のリセットが行われた後、管理している割り込み処理監視装置150の状態情報をRUNNING状態からSTOP状態に設定する。なお、タイマ152のカウント値が‘0’になったことを検出してからの処理は、図4のステップS410、S411、S412、S415及びS401の処理に相当する。
リセットされて再起動したプロセッサ120は、特権ソフトウェア131の実行を開始する(ステップS609)。これにより、特権ソフトウェア131は、第1のゲストOS132から通知されなかった割り込みを調べることができる。
これ以降、図6のステップS610〜S613までの処理は、図5のステップS509〜S512までの処理と同様なので説明を省略する。
図7に示すシーケンス図では、プロセッサ120で動作するソフトウェアが変更される時のきわどいタイミングによる不安定な動作を防止するために、制御部151が管理している割り込み処理監視装置150の状態情報をPENDING状態に設定する例である。つまり、第1のゲストOS132から特権ソフトウェア131に変更されたものの、特権ソフトウェア131からタイマ初期値設定部153へのタイマ152の初期値設定要求が遅れて、第3のデバイス173から割り込みを示す通知が行われてから所定時間を経過してしまった例を示している。
図7のステップS701〜S706までの処理は、図5のステップS501〜S506までの処理と同様なので説明を省略する。
プロセッサ120上で動作する第1のゲストOS132が特権ソフトウェア131を呼び出すことで、プロセッサ120上で動作するソフトウェアが第1のゲストOS132から特権ソフトウェア131に変更される(ステップS707)。なお、変更される際の処理は、図5で説明したので省略する。
このとき、プロセッサ120上で動作するソフトウェアが、第1のゲストOS132から特権ソフトウェア131に変更されたものの、特権ソフトウェア131がタイマ初期値設定部153に対してタイマ152の初期値設定要求を送信する前に、タイマ152のカウント値が‘0’になったものとする。すると、制御部151は、割り込みが発生してから所定時間が経過したと判断する(ステップS708)。その後、制御部151はタイマ152に動作の停止を指示する。なお、これらの処理は、図4のステップS410〜S411に相当する。
なお、制御部151は、特権状態管理装置190からの通知により情報処理装置100が特権状態になっていること、つまりプロセッサ120上で特権ソフトウェア131が動作していることを認識できる。
そこで、制御部151は、制御部151が管理している割り込み処理監視装置150の状態情報をRUNNING状態からPENDING状態に設定する。このPENDING状態は、制御部151からプロセッサリセット信号発生部154へのプロセッサリセット信号発生要求は行われない状態である。なお、これらの処理は、図4のステップS412〜S413の処理に相当する。
割り込みが発生したことを第1のゲストOS132から通知された特権ソフトウェア131は、タイマ初期値設定部153に対して、タイマ152の初期値設定の要求を通知する(ステップS709)。そして、制御部151は、タイマ初期値設定部153がタイマ152の初期値設定要求を受け付けたことを通知され、タイマ初期値設定部153に対してタイマ152の初期値の設定を指示すると共に、管理している割り込み処理監視装置150の状態情報をPENDING状態からREADY状態に設定する。
これ以降、図7のステップS710〜S713までの処理は、図5のステップS509〜S512までの処理と同様なので説明を省略する。
図8に示すシーケンス図は、制御部151が管理している割り込み処理監視装置150の状態情報をPENDING状態に設定した後、第1のゲストOS132が特権ソフトウェア131に割り込みを通知するための予め定められた呼び出しを行わないという不正な処理により、特権ソフトウェア131がタイマ初期値設定部153に対してタイマ152の初期値設定要求をしなかった例である。つまり、第3のデバイス173から割り込みを示す通知が行われた後、プロセッサ120上で動作するソフトウェアが、第1のゲストOS132から特権ソフトウェア131に変更されたものの、初期値設定要求の通知を行わないうちに再び特権ソフトウェア131から第1のゲストOS132に変更された場合の例を示している。
図8のステップS801〜S806までの処理は、図5のステップS501〜S506までの処理と同様なので説明を省略する。
プロセッサ120上で動作している第1のゲストOS132は、割り込みが発生したことを認識しながら、予め定められた割り込み処理を通知するための特権呼び出しで行うべき特権ソフトウェア131への割り込みが発生したことの通知をせず、別の特権呼び出しを行って特権ソフトウェア131を呼び出したものとする。なお、第1のゲストOS132がこのような処理を行う原因としては、第1のゲストOS132に悪意がある場合や、第1のゲストOS132に不具合が発生した場合等が考えられる。
これにより、プロセッサ120上で動作するソフトウェアが、第1のゲストOS132から特権ソフトウェア131に変更される(ステップS807)。特権状態管理装置190が通知する、情報処理装置100が特権状態か否かを示す信号は、特権ソフトウェア131が動作しているため、特権状態であることを示す信号に変化する。
その後、タイマ152のカウント値が‘0’になったものとする。すると、制御部151は、割り込みが発生してから所定時間が経過したと判断する(ステップS808)。したがって、制御部151は、タイマ152に動作の停止を指示する。なお、これらの処理は、図4のステップS410〜S411に相当する。
このとき、制御部151は、特権状態管理装置190からの通知により情報処理装置100が特権状態であること、つまりプロセッサ120上で特権ソフトウェア131が動作していることを認識できる。
そこで、制御部151は、管理している割り込み処理監視装置150の状態情報をRUNNING状態からPENDING状態に設定する。なお、これらの処理は、図4のステップS412〜S413の処理に相当する。
特権ソフトウェア131は、第1のゲストOS132から呼び出されたものの、割り込み処理を通知するための呼び出しが行われたわけではないので、タイマ初期値設定部153にタイマ152の初期値設定を要求することもなく、当該呼び出された処理を終了すると、第1のゲストOS132に処理を戻す(ステップS809)。
プロセッサ120上で動作するソフトウェアが特権ソフトウェア131から第1のゲストOS132に切り替わったことで、特権状態管理装置190が通知する、情報処理装置100が特権状態か否かを示す信号は、特権状態ではないことを示すものに変化し、制御部151は、情報処理装置100が特権状態でなくなったことを認識できる。この処理は、図4のステップS412の処理に相当する。
そして、特権状態でなくなったことを認識した制御部151は、プロセッサリセット信号発生部154にプロセッサリセット信号の発生を指示し、プロセッサリセット信号発生部154は、プロセッサリセット信号を発生させる(ステップS810)。これによりプロセッサ120がリセットされる。
そして、制御部151は、プロセッサ120のリセットが行われた後、管理している割り込み処理監視装置150の状態情報をPENDING状態からSTOP状態に設定する。なお、プロセッサリセット信号を指示してからの処理は、図4のステップS415及びS401の処理に相当する。
つまり、図8で示した処理手順では、制御部151が管理する割り込み処理監視装置150の状態情報としてPENDING状態が存在することで、プロセッサ120に対して所定時間よりさらに時間が経過した場合でも、第1のゲストOS132や第2のゲストOS133が起こした不具合等を見逃すことなくプロセッサをリセットすることができる。
リセットされて再起動したプロセッサ120は、特権ソフトウェア131の実行を開始する(ステップS811)。これにより、特権ソフトウェア131は、第1のゲストOS132から通知されなかった割り込みを調べることができる。
以降、図8のステップS812〜S815までの処理は、図5のステップS509〜S512までの処理と同様なので説明を省略する。
上述した処理手順により、ゲストOSに悪意若しくは不具合があることで、デバイス171〜173の起こした割り込みの発生が特権ソフトウェア131に伝えられなくても、一定時間後に割り込み処理監視装置150によりプロセッサ120がリセットされることになる。そして、プロセッサ120の再起動時に特権ソフトウェア131が実行されるので、発生した割り込みを調査することができる。
また、特権ソフトウェア131は、プロセッサ120をリセットさせる原因となったゲストOS等のソフトウェアを実行しないように管理する。特権ソフトウェア131がこのような管理を行うことで、リセットする原因となったゲストOSに悪意又は不具合ある場合でも、当該ゲストOSを除いた情報処理装置100の安全な動作が実現できる。
上記実施形態においては、従来仮想化を支援する機能が実装されたプロセッサでなければ提供できなかったデバイスの割り込みの正しいゲストOSやプログラムへの配送を、仮想化を支援する機能が実装されていないプロセッサを使用して組み込み機器用のシステムLSIを構築する場合でも、プロセッサに手を加えることなく、ハードウェアを追加することで実現することができる。
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
(第1の実施の形態の変形例1)
上述した第1の実施の形態では、タイマ152において設定した初期値から‘0’へとカウントダウンしていくカウントダウンタイマを用いた実施形態について説明した。しかしながら、デバイスからの割り込みが発生してからの経過時間を計測するために用いるタイマをカウントダウンタイマに制限するものではない。そこで、第1の実施の形態の変形例としてアップカウンタを用いた例について説明する。なお、割り込み処理監視装置以外の構成は第1の実施形態と同様なので説明を省略する。
図9に示すように、割り込み処理監視装置910は、第1の実施の形態に係る割り込み処理監視装置150とは、タイマ初期値設定部153が削除され、タイマ最大値設定部911が追加され、タイマ152と処理が異なるタイマ912を備え、制御部151とは処理が異なる制御部913を備えた点のみ異なる。なお、本実施の形態の割り込み処理監視装置910の構成で、第1の実施の形態の割り込み処理監視装置150と共通な構成については説明を省略する。
タイマ最大値設定部911は、特権ソフトウェア131からの後述するタイマ912の最大値設定要求を受け付ける。その後、タイマ最大値設定部911は、タイマ912への最大値設定要求が来たことを後述する制御部913に通知し、制御部913からの指示に従ってタイマ912に対して最大値を設定する。なお、タイマ最大値設定部911が設定する最大値は最大値設定要求に含まれる任意の値とする。
タイマ912は、制御部913により制御されるタイマとする。本実施の形態では、タイマ912は、‘0’からタイマ最大値設定部911によって予め設定された最大値(正の値)まで単調増加するアップカウンタ型のタイマとする。
制御部913は、タイマ912のカウント値を監視して、タイマ912のカウント値とタイマ最大値設定部911で設定された最大値とが同じ値になったか否かを判断する。
また、このような割り込み処理監視装置150の変更に伴い、プロセッサ120から送信される信号が、第1の実施形態のような初期値設定要求ではなく最大値設定要求に変更される。なお、最大値設定要求が送信されるタイミングは、第1の実施形態の初期値設定要求と同様なので説明を省略する。
制御部913は、最大値設定要求を受け付けたことをタイマ最大値設定部911から通知されると、割り込み処理監視装置910の状態情報に、READY状態を設定する。つまり、READY状態は、タイマ最大値設定部911によりタイマ912の最大値の設定がなされ、当該タイマ912がカウントを開始する準備が完了した状態とする。なお、他の遷移及び処理等については、第1の実施形態のREADY状態と同様なので説明を省略する。
そして、RUNNING状態は、タイマ912によるカウントアップが開始されており、まだカウント値が最大値になっていない状態とする。つまり、本変形例では、タイマ912は、クロックのような周期的な入力信号にしたがってカウント値が‘0’から最大値になるまでカウントアップを行う。なお、遷移及び処理等については、第1の実施形態のRUNNING状態と同様なので説明を省略する。
なお、STOP状態及びPENDING状態は、制御部913が、タイマ最大値設定部911が特権ソフトウェア131からタイマ912の最大値設定要求を受け付けたことを通知された場合に、割り込み処理監視装置910の状態情報にREADY状態を設定する以外、第1の実施形態と同様なので説明を省略する。
なお、第1の実施形態及び本変形例は、割り込み処理監視装置のタイマにアップカウンタ又はダウンカウンタを用いることに制限するものではなく、他の様々なカウンタを用いても良い。
(第1の実施の形態の変形例2)
第1の実施形態の割り込み処理監視装置150では、タイマ152に設定される初期値を特権ソフトウェア131が送信する初期値設定要求に含まれる任意の値としたが、特権ソフトウェア131から送信される初期値設定要求には設定する初期値を含まず、製造時又は出荷時にROM等に予め書き込んでおいた初期値を設定することも可能である。そこで、第1の実施形態の変形例2では、初期値を製造時又は出荷時にROM等に予め書き込んでおく例とする。
本変形例のように、初期値をROM等に書き込むことで、後で初期値を変更することを防止できると共に、意図的にタイマ152の初期値を偽る攻撃から情報処理装置100を保護することができる。なお、本変形例にかかる情報処理装置の構成及び処理については、第1の実施形態と同様なので説明を省略する。
また、本変形例では、タイマがカウントダウン形式であり初期値を予め書き込んでおく例を挙げたが、初期値のみ書き込むことに制限するものではない。例えばタイマにアップカウンタを用いた場合、最大値をROM等に予め書き込んでもよい。
(第1の実施の形態の変形例3)
第1の実施形態では、割り込みコントローラ140から割り込み処理監視装置150及びプロセッサ120に対して割り込みが発生したことを示す通知を行っていた。しかしながら、第1の実施形態は、割り込み処理監視装置150に対して送信されるデバイス割り込みの通知を、割り込みコントローラ140からの通知に制限するものではない。
そこで第1の実施形態の変形例3では、デバイスコントローラ161〜163から直接、割り込み処理監視装置150に対して割り込みが発生したことを示す通知が送信される例とする。図10に示すように、デバイスコントローラ群161〜163と割り込みコントローラ140とを接続する専用線において、経路の途中で分岐している専用線1001が割り込み処理監視装置150と接続されている。
これに伴い、割り込みコントローラ140から割り込みが発生した旨を通知するための専用線1002が、プロセッサ120のみと接続されるよう変更された。また、システムLSI1010は、専用線1001及び専用線1002以外の構成が、第1の実施形態のシステムLSI110と同様なので説明を省略する。
これにより、任意のデバイスによる割り込みが発生した場合、デバイスコントローラ群161〜163が割り込みコントローラ140及び割り込み処理監視装置150の制御部151に対して、直接割り込みが発生したことを通知する。これにより、検出部155は、直接デバイスコントローラ群161〜163から送信された通知に基づいて、割り込みを検出することができる。
(第1の実施の形態の変形例4)
第1の実施形態では、割り込みコントローラ140から割り込み処理監視装置150及びプロセッサ120に対して割り込みが発生したことを示す通知を行っていた。しかしながら、割り込みが発生したことを示す通知の信号が、必ず割り込みコントローラ140を介する必要はない。
図11に示すように、本変形例にかかる情報処理装置1100は、上述した第1の実施の形態にかかる情報処理装置100とは、割り込みコントローラ140が削除された構成を有している点で異なる。以下の説明では、上述した実施の形態1と同一の構成要素には同一の符号を付してその説明を省略している。
図11に示すように、本変形例にかかる情報処理装置1100では、デバイスコントローラ群161〜163と、プロセッサ120及び割り込み処理監視装置150とを専用線で接続している。これにより、デバイスコントローラ群161〜163から直接、プロセッサ120及び割り込み処理監視装置150に対して割り込みが発生したことを示す通知が送信される。検出部155は、直接デバイスコントローラ群161〜163から送信された通知に基づいて、割り込みを検出することができる。
また、本変形例における情報処理装置1100の各構成が行う処理は、本実施の形態における情報処理装置100の各構成が行う処理とは、デバイスから割り込みコントローラ140を介さずに直接プロセッサ120及び割り込み処理監視装置150に対して割り込み通知を行っている点と、特権ソフトウェア131や第1のゲストOS132及び第2のゲストOS133が発生した割り込みを確認する際、割り込みコントローラ140に対して行わず、直接デバイスに対して行う点のみ異なる。
そこで、第3のデバイス173から割り込みが発生してから所定時間内に第1のゲストOS132から特権ソフトウェア131に割り込みの発生が通知される例について説明する。
図12は、第3のデバイス173から割り込みを示す通知を受け付けた後、割り込み処理監視装置150のタイマ初期値設定部153が、所定時間内に特権ソフトウェア131からタイマ152の初期値設定要求を受け付けた例を示している。このとき、図12に示すように、第3のデバイス173、プロセッサ120及び割り込み処理監視装置150との間で通信が行われている。
図12のステップS1201〜S1202は、図5のステップS501〜S502と同様の処理手順のため説明を省略する。
そして、第3のデバイス173は、プロセッサ120上で動作している第1のゲストOS132に対して、第3のデバイスコントローラ163を経由して、割り込みを要求する旨を通知する(ステップS1203)。さらに、第3のデバイス173は、ステップS1203に示した通知とほぼ同時に、割り込み処理監視装置150に対して割り込みの発生を通知する(ステップS1204)。
図12のステップS1205〜S1207は、図5のステップS506〜S508と同様の処理手順のため説明を省略する。
次に、プロセッサ120上の特権ソフトウェア131は、割り込み要求の確認を第3のデバイス173に対して行う(ステップS1208)。このように特権ソフトウェア131は、接続された各デバイスに対して割り込み要求の確認を行う。これにより、割り込み要求を行ったデバイスを確認できる。
図12のステップS1209〜S1210は、図5のステップS511〜S512と同様の処理手順のため説明を省略する。
なお、第3のデバイス173から割り込みが発生してから所定時間内に第1のゲストOS132から特権ソフトウェア131に割り込みの発生が通知されず、プロセッサ120上で動作するソフトウェアが変更されない場合等の処理手順は、図12で示した第3のデバイス173からの割り込み通知、プロセッサ120から発信される割り込みの確認以外の処理手順が第1の実施の形態の図6〜図8の処理手順と同様なので、説明を省略する。
(第1の実施の形態の変形例5)
第1の実施の形態はデバイスコントローラ群161〜163から直接オンチップバス180や割り込みコントローラ140に接続していた。しかしながら、この場合、プロセッサ120の最上位の特権モードで動作するゲストOSが接続されている不正なアクセスを行い、デバイスに割り込みを発生させる等の攻撃が可能である。そこで、第1の実施形態の変形例5では、デバイスに対する、ゲストOS等のソフトウェアからのアクセス制御を細かく設定して、デバイスを保護する例について説明する。
図13に示すように、情報処理装置1300は、上述した第1の実施の形態にかかる情報処理装置100とは、デバイスアクセス制御装置1321〜1323が追加されていること、保護領域1340が追加され、そして特権状態管理装置190とは処理が異なる特権状態管理装置1330に変更された構成を有している点で異なる。以下の説明では、上述した第1の実施の形態と同一の構成要素には同一の符号を付してその説明を省略している。
特権状態管理装置1330は、情報処理装置1300が特権状態であるか否かを示す信号を、各デバイスアクセス制御装置1321〜1323及び保護領域1340に対して通知する。なお、特権状態管理装置1330は、第1の実施形態の特権状態管理装置190と同様に割り込み処理監視装置150に対しても通知を行う。なお、割り込み処理監視装置150に対する通知は、第1の実施形態で説明したので省略する。
これにより、情報処理装置1300は、デバイスアクセス制御装置1321〜1323が保持する設定情報に対する書き込みを、情報処理装置1300が特権状態つまり特権ソフトウェア131が動作している時だけに制限することができる。また、情報処理装置1300は、保護領域1340に対する読み込み又は書き込み処理を、特権状態つまり特権ソフトウェア131が動作している時に制限することができる。
保護領域1340は、特権ソフトウェア131に限りアクセスが許可されている記憶領域とする。保護領域1340は、デバイスを管理するための情報などを格納する記憶手段であり、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶手段により構成することができる。
また、保護領域1340は、後述するデバイスアクセス制御装置1321〜1323で用いる設定データを格納している。そして、保護領域1340は、特権状態管理装置1330から情報処理装置1300が特権状態であることを通知されている時に書き込み要求を受け付けた場合、当該書き込み要求が特権ソフトウェア131から行われたものとして、書き込み要求を許可する。
特権ソフトウェア131は、保護領域1340に格納されているデバイスアクセス制御装置1321〜1323に設定するデバイスアクセス制御用情報を読み出す。その後特権ソフトウェア131は、読み出したデバイスアクセス制御用情報を用いて、デバイスアクセス制御装置1321〜1323の設定を行う。
デバイスアクセス制御用情報とは、例えば第1のデバイス171に対して、第1のゲストOS132がアクセス可であり、そして第2のゲストOS133がアクセス不可能であること等を含む情報とする。
第1のデバイスアクセス制御装置1321は、第1のデバイスコントローラ161及び特権状態管理装置1330と接続されている。そして、第1のデバイスアクセス制御装置1321は、格納されている設定に応じて、ゲストOS毎に第1のデバイス171に対するアクセスを許容するか否か判断し、許容すると判断した場合にゲストOSから受け付けたデータの送信又はゲストOSへのデータの送信を行う。このように、第1のデバイスアクセス制御装置1321が、ゲストOSによるデバイスへのアクセスを制御することで、安全性が向上する。
また、第1のデバイスアクセス制御装置1321は、特権ソフトウェア131に限り設定の変更要求を受け付ける。第1のデバイスアクセス制御装置1321は、特権状態管理装置1330からの、情報処理装置1300が特権状態であるか否かの通知により、特権ソフトウェア131からのアクセスであるか否かを判断する。これにより、プロセッサ120の最上位の特権モードで動作するゲストOSによる、第1のデバイスアクセス制御装置1321そのものに対するアクセスを保護でき、第1のデバイスアクセス制御装置1321の設定の書き換えを防止することができる。
また、第2のデバイスアクセス制御装置1322は第2のデバイスコントローラ162と接続されていることを除けば、第1のデバイスアクセス制御装置1321と同様なので説明を省略する。また、第3のデバイスアクセス制御装置1323は第3のデバイスコントローラ163と接続されていることを除けば、第1のデバイスアクセス制御装置1321と同様なので説明を省略する。
なお、本変形例では、デバイスアクセス制御装置とデバイスコントローラを別の構成としたが、1つの装置にこれらの構成を含めることにしてもよい。
本変形例では、保護領域1340に格納されているデバイスアクセス制御装置1321〜1323の設定内容は、特権ソフトウェア131しか書き換えられない。さらに、保護領域1340に格納されているデバイスアクセス制御用情報は、特権ソフトウェア131しか書き換えられない。これにより、情報処理装置1300は、悪意のあるソフトウェアによる攻撃からより強固に保護することができる。
本変形例にかかる情報処理装置1300では、上述した構成を備えることで、デバイスアクセス制御装置1321〜1323用の制御データを悪意のあるソフトウェアから保護することができる。これにより、情報処理装置1300の安全性がさらに向上する。