(57)【要約】【課題】ＯＳ起動時の割り込み起因の競合問題を調査するために有用な情報を常時採取することが可能な情報処理装置を提供する。【解決手段】割り込み機構を有するＣＰＵを備えた情報処理装置において、割り込みを捕捉するためのフックを仕掛ける割り込み捕捉部５１と、該フックにより捕捉した割り込み発生時におけるシステム状態を示すコンテキスト情報をトレーサ情報として採取する情報採取部５２と、前記フックを仕掛けた時点後において前記フックにより捕捉した割り込み回数をフック回数としてカウントする割り込み捕捉統計情報記憶部５４と、前記フックを仕掛けた時点からあるいはＣＰＵが起動した時点からあらかじめ定めた時間閾値を超えた場合、あるいは、前記フック回数があらかじめ定めた回数閾値を超えた場合、仕掛けている前記フックを解除する割り込み捕捉停止判定部５３と、を少なくとも備えている。【選択図】        図１
2016184204.tif 000002
【特許請求の範囲】
【請求項１】
割り込み機構を有するＣＰＵ（Central  Processing  Unit）を備えた情報処理装置において、
割り込みを捕捉するためのフックを仕掛ける割り込み捕捉手段と、
該フックにより捕捉した割り込み発生時におけるシステム状態を示すコンテキスト情報をトレーサ情報として採取する情報採取手段と、
前記フックを仕掛けた時点後において前記フックにより捕捉した割り込み回数をフック回数としてカウントする割り込み捕捉統計情報記憶手段と、
前記フックを仕掛けた時点からあるいはＣＰＵが起動した時点からあらかじめ定めた時間閾値を超えた場合、もしくは、前記フック回数があらかじめ定めた回数閾値を超えた場合、仕掛けている前記フックを解除する割り込み捕捉停止判定手段と、
を少なくとも備えていることを特徴とする情報処理装置。
【請求項２】
前記情報採取手段により採取した前記トレーサ情報を、直接、不揮発性の情報記憶装置に書き出すか、もしくは、一時的にメモリ上にキャッシュしておき、前記割り込み捕捉停止判定手段により前記フックを解除した際に、または、ＯＳ（Operating  System）が正常に初期化を終了して起動が完了した場合や異常発生によるパニックが発生した場合にはあらかじめ定めた適切なタイミングで、キャッシュした前記トレーサ情報を不揮発性の前記情報記憶装置に書き出すことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記時間閾値および前記回数閾値を、外部から任意の値に指定して設定することができることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記割り込み捕捉停止判定手段による前記フックの解除動作を有効にするか否かを、また、前記割り込み捕捉停止判定手段により一旦解除された前記フックを再度仕掛けるか否かを、それぞれ、任意のタイミングで切り替えることができる外部スイッチをさらに備えていることを特徴とする請求項１ないし３のいずれかに記載の情報処理装置。
【請求項５】
少なくとも前記割り込み捕捉手段、前記情報採取手段、前記割り込み捕捉統計情報記憶手段および前記割り込み捕捉停止判定手段の各手段は、ＢＩＯＳ（Basic  Input／Output  System）に実装され、ＯＳとは独立に動作するか、もしくは、前記フックの設定および解除のトリガ部が、ＯＳと連携して動作するか、のいずれかであることを特徴とする請求項１ないし４のいずれかに記載の情報処理装置。
【請求項６】
割り込み機構を有するＣＰＵ（Central  Processing  Unit）を備えた情報処理装置における競合問題調査支援方法であって、
割り込みを捕捉するためのフックを仕掛ける割り込み捕捉ステップと、
該フックにより捕捉した割り込み発生時におけるシステム状態を示すコンテキスト情報をトレーサ情報として採取する情報採取ステップと、
前記フックを仕掛けた時点後において前記フックにより捕捉した割り込み回数をフック回数としてカウントする割り込み捕捉統計情報記憶ステップと、
前記フックを仕掛けた時点からあるいはＣＰＵが起動した時点からあらかじめ定めた時間閾値を超えた場合、もしくは、前記フック回数があらかじめ定めた回数閾値を超えた場合、仕掛けている前記フックを解除する割り込み捕捉停止判定ステップと、
を少なくとも有していることを特徴とする競合問題調査支援方法。
【請求項７】
前記情報採取ステップにより採取した前記トレーサ情報を、直接、不揮発性の情報記憶装置に書き出すか、もしくは、一時的にメモリ上にキャッシュしておき、前記割り込み捕捉停止判定ステップにより前記フックを解除した際に、または、ＯＳ（Operating  System）が正常に初期化を終了して起動が完了した場合や異常発生によるパニックが発生した場合にはあらかじめ定めた適切なタイミングで、キャッシュした前記トレーサ情報を不揮発性の前記情報記憶装置に書き出すことを特徴とする請求項６に記載の競合問題調査支援方法。
【請求項８】
請求項６または７のいずれかに記載の競合問題調査支援方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とする競合問題調査支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、競合問題調査支援方法および競合問題調査支援プログラムに関し、特に、ＯＳ起動時の初期化処理と割り込み処理との競合問題調査を支援する情報処理装置、競合問題調査支援方法および競合問題調査支援プログラムに関する。
【背景技術】
【０００２】
ＯＳ（Operating  System）起動時の初期化処理は、シングルＣＰＵ（Central  Processing  Unit）環境にて開始され、ＣＰＵやスケジューラの初期化まで進むと、複数ＣＰＵが並列に利用することができるようになる。さらに、デバイスからの割り込みを受け付ける段階まで初期化が進むと、デバイスから割り込みが上がった際に、通常の初期化処理と割り込み処理とが異なるＣＰＵ上にて同時に実行することができる状態になる。
【０００３】
したがって、特に、外部デバイスの初期化を伴う初期化処理においては、初期化処理中に割り込みに伴う割り込み処理が発生した際の排他制御を確実に実施することが必要である。
【０００４】
しかしながら、特定の装置やデバイスにおいてのみ、初期化処理中に稀に割り込みが発生するような場合には、ＯＳの排他制御漏れを、中々、検出することができなく、その結果として、稀に、初期化処理と割り込み処理とがレーシング状態になってしまい、メモリ上のＯＳの内部データが破壊されて、ＯＳパニックを引き起こすような問題が発生することがある。
【０００５】
一般に、ＯＳパニック等の障害が発生した際には、ＯＳパニック時のメモリダンプを採取して調査する方法が用いられるが、前記問題のように、割り込みとレーシングして、メモリが破壊された結果 ＯＳがパニックするような障害が発生した場合には、ＯＳパニック時には割り込み処理は既に終了していて、メモリダンプのような採取方法では、レーシングが発生していたことすら分からず、解析が困難になることが少なくない。
【０００６】
かくのごときケースにおいては、メモリダンプによる採取結果が不十分であると判明した後で、ＯＳコード内にトレーサを仕掛け、ＯＳの各処理の流れや各々の時点のＯＳ内部状態を確認するための情報を採取しながら、問題を再現させるといった方法を併用しながら、調査していくことになる。しかし、割り込みが関係していることすら分からない段階においては、トレーサを仕掛ける場所の検討すら困難であるため、原因究明に膨大な時間を要することが少なくない。
【０００７】
したがって、問題が発生する前から、割り込み発生時のシステム全体のコンテキスト情報を採取しておくことができるようになれば、このような解析困難な問題の調査にとって、非常に有用である。
【０００８】
かくのごとき問題を解決するために、特許文献１の特開平６−２５０８６０号公報「データ処理装置」や特許文献２の特開平９−２０４３２０号公報「割り込みトレース情報保存装置」や特許文献３の特開平１１−６５８９８号公報「電子計算機の保守方式」や特許文献４の特開２０１０−１８６３６１号公報「プログラムデバッグ装置およびエミュレータシステム」等に記載されたような技術が提案されている。
【０００９】
前記特許文献１に記載の技術は、データ処理装置において、例外処理発生の原因究明が容易にでき、ＣＰＵの停止や暴走状態からの自動復帰が可能なデータ処理装置を実現することを目的としており、以下のような技術を採用している。
【００１０】
ＣＰＵが定常動作を実行中に例外処理が発生したか否かを判定し、例外処理が発生すると、シーケンサ部が、アドレス信号等の情報を収集し、時系列的に記憶部に格納する。さらに、例外処理が発生した場合には、シーケンサ部がその時のアドレス信号等の情報を収集し時系列的に記憶部に格納し、ＣＰＵの動作を停止させる。シーケンサ部はＣＰＵの内部レジスタ等の情報を収集し記憶部に格納する。シーケンサ部は収集した情報よりＣＰＵの自動復帰が可能か否かを判断し、可能であれば、主記憶部等のデータ修正を実行し、リセット信号をリセットブロックに供給する。リセットブロックはＣＰＵリセット信号をＣＰＵに供給し、ＣＰＵによる定常動作が再開される。
【００１１】
また、前記特許文献２に記載の技術は、割り込み制御に関する障害解析として、通常運用時にトレース情報を採取できるようにし、障害解析力を向上させることを目的としており、以下のような技術を採用している。
【００１２】
新規に割り込みトレース情報格納機構を設けて、バスコントローラと接続し、デバイスから上がった割り込みが、ＣＰＵに上がると同時に割り込みトレース情報格納機構にも上がるようにして、トレース採取による性能低下が発生しないようにしている。また、特定デバイスから、連続して同じ割り込みが発生した場合、時刻と発生回数とを保存し、トレースに有効な情報が残るようにしている。さらに、一定の情報をキーとして、分類したトレース情報を保存できるようにしている。
【００１３】
前記特許文献３に記載の技術は、電子計算機の状態を外部記憶装置に記憶しておき、その情報を基に障害解析を行うことにより電子計算機の保守を容易にすることを目的としており、最優先ハードウェア割り込みと外部記憶装置とを備えた電子計算機において、電子計算機のハードウェアの情報を外部記憶装置に格納し、そのデータを用いて障害解析を行うという技術を採用している。
【００１４】
前記特許文献４に記載の技術は、ソフトウェア上の問題の早期解決を図るべく、トレースログの記録においてトレースログの効果的な絞り込みを行い、而して、再現性が低く解析が難しい問題の特定を迅速・容易化することを目的としており、以下のような技術を採用している。
【００１５】
ＣＰＵによるプログラム実行処理の任意状態を定義するイベントを管理し、プログラム実行処理の状態と比較して等価・非等価の判別結果であるイベント成立状態を出力するイベント制御手段と、ＣＰＵによるプログラム実行処理のトレースログを記録しておくためのトレースメモリと、イベント制御手段によるイベント成立状態が有効なときにＣＰＵによるプログラム実行処理のトレースログをトレースメモリに仮記録するトレース制御手段と、トレース制御手段によるトレースログ仮記録処理時間が現在までにおいて最長か否かに応じて、トレースメモリにおけるトレースログの仮記録を本記録として確定するか破棄するかを制御するトレースログ記録確定制御手段とを備える。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開平６−２５０８６０号公報（第４−５頁）
【特許文献２】特開平９−２０４３２０号公報（第２−４頁）
【特許文献３】特開平１１−６５８９８号公報（第２−４頁）
【特許文献４】特開２０１０−１８６３６１号公報（第１０−１２頁）
【発明の概要】
【発明が解決しようとする課題】
【００１７】
トレーサによる割り込み発生時の情報採取は、情報量の膨大さと採取処理のオーバヘッドとが問題となり、問題発生前から常時適用しておくことが難しい、という課題がある。しかしながら、従来の技術においては、いずれも、トレーサ自体を解除していく構成要素／動作が備えられていないという問題がある。
【００１８】
例えば、前記特許文献１に記載の技術は、割り込み発生時に、シーケンサ部がＣＰＵレジスタ値を含む各種情報を記憶部に格納するが、コストが掛かる情報採取処理を解除するような構成要素が備えられていないため、運用中の性能影響が懸念され、常時、情報を採取することが困難になる。
【００１９】
さらに、該特許文献１に記載の技術は、 ハードウェア／ＯＳが多重例外に対応していないシステム、もしくは、多重例外の発生自体がバグであるというシステムにおける、多重例外の発生要因を突き止めるための情報採取装置に関する技術であって、複数ＣＰＵのレーシングによるＯＳバグを調査することを目的としたものではない。このため、該特許文献１に記載の技術は、ＣＰＵレジスタ値を含むコンテキスト情報は多重例外発生時にしか採取していない。
【００２０】
また、前記特許文献２に記載の技術は、割り込みのトレース情報採取の高速化を図るために、割り込み捕捉（フック）の手段として、割り込みをＣＰＵと情報採取機構との２箇所に上げるようにし、情報採取のオーバヘッドを低減させることとし、而して、トレーサを解除するような構成要素を用いることなく、トレーサの常時起動を可能にしている。しかし、肝心の採取情報には、割り込み種別、タイミングは含まれているものの、レーシングの可能性を知るためのコンテキスト情報が含まれていない。したがって、割り込みをフックしてコンテキスト情報を採取しようすると、情報採取のオーバヘッドを低減することができなくなり、常時起動が困難になる可能性が高い。
【００２１】
また、前記特許文献３に記載の技術は、ＳＭＩ（System  Management  Interrupt）ハンドラの省電力機能を流用してハードウェア情報を外部に保存するものの、割り込み契機における情報採取を行うものではない。また、情報採取を解除していくような構成要素や動作は無く、常時起動することができない。
【００２２】
また、前記特許文献４に記載の技術は、一旦仮記録としてトレースメモリに記録したログを、本記録として確定するか破棄するかを制御するトレースログ記録確定制御手段を用いて、トレーサによって採取した情報のうち、効果的なログのみに絞ってすなわち最も処理に時間を要した場合の情報のみに絞ってトレースメモリから外部記憶部に書き出すことにより、採取情報を絞り込んでいるものの、トレーサ自体を解除していくような構成要素や動作を備えていないため、トレーサによる情報採取のオーバヘッドが性能に影響し、常時起動しておくのは困難である。
【００２３】
以上のように、従来の技術においては、採取した情報を自動的に分析する手法や、一回当たりの採取処理オーバヘッドを削減する等の手法による解決が試みられてきているものの、未だ、トレーサを常時起動させており、初回の問題発生時に調査用の情報を採取することができる、というところまでには至っていない。したがって、従来技術のように、常時ログを採取する方法を採用している場合には、割り込み発生時の情報採取をする際に、全ての割り込みを契機にしてイベントが発生するため、頻繁に発生する割り込みに対してオーバヘッドが大きいという問題がある。
【００２４】
（本発明の目的）
本発明は、かかる事情に鑑みてなされたものであり、ＯＳ起動時の割り込み起因の競合問題を調査するために有用な情報を常時採取することが可能な情報処理装置、競合問題調査支援方法および競合問題調査支援プログラムを提供することを、その目的としている。
【課題を解決するための手段】
【００２５】
前述の課題を解決するため、本発明による情報処理装置、競合問題調査支援方法および競合問題調査支援プログラムは、主に、次のような特徴的な構成を採用している。
【００２６】
（１）本発明による情報処理装置は、
割り込み機構を有するＣＰＵ（Central  Processing  Unit）を備えた情報処理装置において、
割り込みを捕捉するためのフックを仕掛ける割り込み捕捉手段と、
該フックにより捕捉した割り込み発生時におけるシステム状態を示すコンテキスト情報をトレーサ情報として採取する情報採取手段と、
前記フックを仕掛けた時点後において前記フックにより捕捉した割り込み回数をフック回数としてカウントする割り込み捕捉統計情報記憶手段と、
前記フックを仕掛けた時点からあるいはＣＰＵが起動した時点からあらかじめ定めた時間閾値を超えた場合、もしくは、前記フック回数があらかじめ定めた回数閾値を超えた場合、仕掛けている前記フックを解除する割り込み捕捉停止判定手段と、
を少なくとも備えていることを特徴とする。
【００２７】
（２）本発明による競合問題調査支援方法は、
割り込み機構を有するＣＰＵ（Central  Processing  Unit）を備えた情報処理装置における競合問題調査支援方法であって、
割り込みを捕捉するためのフックを仕掛ける割り込み捕捉ステップと、
該フックにより捕捉した割り込み発生時におけるシステム状態を示すコンテキスト情報をトレーサ情報として採取する情報採取ステップと、
前記フックを仕掛けた時点後において前記フックにより捕捉した割り込み回数をフック回数としてカウントする割り込み捕捉統計情報記憶ステップと、
前記フックを仕掛けた時点からあるいはＣＰＵが起動した時点からあらかじめ定めた時間閾値を超えた場合、もしくは、前記フック回数があらかじめ定めた回数閾値を超えた場合、仕掛けている前記フックを解除する割り込み捕捉停止判定ステップと、
を少なくとも有していることを特徴とする。
【００２８】
（３）本発明による競合問題調査支援プログラムは、少なくとも前記（２）に記載の競合問題調査支援方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とする。
【発明の効果】
【００２９】
本発明の情報処理装置、競合問題調査支援方法および競合問題調査支援プログラムによれば、以下のような効果を奏することができる。
【００３０】
第１の効果は、ＯＳ起動時の割り込み起因の競合問題を調査するために有用な情報を常時採取することができることである。その理由は、各デバイスからの最初の数回の割り込み発生時の情報が非常に有用なことが多いという、対象とする問題の特性に基づき、起動時の情報採取のためのトレース機能を徐々に解除していく処理を導入することにより、ＯＳ起動完了後のオーバヘッドを除去することができるため、従来の技術においては運用中の性能への影響の懸念から常時起動することが難しかったトレース機能を、ＯＳ起動時に常時起動させることを可能にしているからである。
【００３１】
第２の効果は、ＯＳ起動時の割り込み起因の競合問題調査用として採取された情報の分析が容易になることである。その理由は、各デバイスからの最初の数回の割り込み発生時の情報のみを採取することにより、一回のＯＳ起動当たりに採取される情報量を十分に少なくすることができるからである。
【００３２】
第３の効果は、問題発生時に運用再開優先等の都合により ＯＳ機能によるメモリダンプ等の情報採取を行うことができなかった場合においても、問題発生後に、問題発生時の情報に加え、過去の正常時の情報も採取することができることである。その理由は、正常時であっても問題発生時であっても、一旦、メモリ上に採取した情報は、当該メモリ上の情報が消去される前に、当該メモリの外部に設置されている不揮発性の情報記憶装置に書き出すか、あるいは、採取した情報を、直接、外部に設置されている不揮発性の情報記憶装置に書き出すようにしているからである。
【００３３】
第４の効果は、原因究明に要する時間や労力が削減することができることである。その理由は、第１の効果と第３の効果とにより、問題発生時に即座に調査に有用な情報を入手することができ、問題発生後に情報採取を初めて開始する場合と比較して、情報採取までの時間を大幅に削減することができることと、第２の効果により、採取した情報の分析に無駄な時間をかける必要がなくなるからである。
【図面の簡単な説明】
【００３４】
【図１】本発明による情報処理装置の特徴を表したブロック構成の一例を示すブロック構成図である。
【図２】図１に示す情報処理装置の動作についてその一例を説明するためのフローチャートである。
【図３】本発明による情報処理装置の第１の実施形態におけるブロック構成例を示すブロック構成図である。
【図４】第１の実施形態として図３に示した情報処理装置の動作の一例を説明するためのフローチャートである。
【図５】本発明による情報処理装置の第２の実施形態におけるブロック構成例を示すブロック構成図である。
【図６】第２の実施形態として図５に示した情報処理装置の動作の一例を説明するためのフローチャートである。
【図７】本発明による情報処理装置の第３の実施形態におけるブロック構成例を示すブロック構成図である。
【図８】第３の実施形態として図７に示した情報処理装置の動作の一例を説明するためのフローチャートである。
【図９】本発明による情報処理装置の第４の実施形態におけるブロック構成例を示すブロック構成図である。
【図１０】第４の実施形態として図９に示した情報処理装置の動作の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００３５】
以下、本発明による情報処理装置、競合問題調査支援方法および競合問題調査支援プログラムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明による情報処理装置および競合問題調査支援方法について説明するが、かかる競合問題調査支援方法をコンピュータにより実行可能な競合問題調査支援プログラムとして実施するようにしても良いし、あるいは、競合問題調査支援プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。また、以下の各図面に付した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではないことも言うまでもない。
【００３６】
（本発明の特徴）
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、割り込みに起因するＯＳ障害の調査を支援するための情報採取、トレーサ、デバッガに関する技術である。従来の情報採取手法の場合は、前述したように、割り込みを契機に情報採取を行うと、割り込み発生の都度、フック（割り込み捕捉手段）が動作して、オーバヘッドが大きくなったり、採取する情報量が膨大になったりするという問題があり、障害に備えて常時情報を採取しておくことが難しいという問題があった。
【００３７】
これに対し、本発明は、ＯＳ起動時に発生する解析が困難な障害は、入出力デバイスからの最初の一回または数回の割り込みに起因することが少なくないことに着目し、ＯＳ起動開始から最初の数回の割り込み時のみフック（割り込み捕捉手段）を有効にしてトレーサ機能により情報を採取した後、該フック（割り込み捕捉手段）を無効化してトレーサ機能を解除するという処理を、従来の情報採取手法に対して追加することにより、前述のような情報採取に関わるコストを抑え、障害に備えて解析に有用な情報を常時採取しておくことができることを主要な特徴としている。
【００３８】
さらに説明すると、本発明は、次のような特徴を有している。
【００３９】
本発明が対象としている、ＯＳ起動時の割り込み起因時の問題は、ＯＳ初期化処理中というＯＳ内部状態が不安定な間のＯＳが意図していなかった割り込み、すなわち、最初または最初から数回の間の割り込みによって引き起こされることが多いため、最初の数回の割り込み発生時の情報を、トレーサ情報（採取情報）として保存することができるならば、問題の解析がかなり楽になる。本発明は、かかる点に着目し、最初の数回の割り込み発生時の情報だけをトレーサ情報として残すことによって、解析に必要な情報を採取することと、情報採取コストとのトレードオフを極小化し、問題発生前から、常に、情報を採取するトレーサ機能を有効にしておくことを実現していることを主要な特徴としている。
【００４０】
最初の数回の割り込み発生時の情報だけをトレーサ情報として残すためには、割り込み発生時にトレーサに制御を移すためのフック（割り込み捕捉手段）と、例えば、各デバイスからの割り込み回数をカウントするカウント機構と、数回の情報を採取した後にフック（割り込み捕捉手段）を解除する処理とを、一般的なトレーサに対して付け加えることが必要である。
【００４１】
なお、割り込みをフックする手段と、該フックを解除する手段と、については、ＯＳ非依存の手段からＯＳ依存の手段まで、従来から様々な提案があるが、如何なるフック手段であっても、本発明を構成する要素手段として矛盾なく組み合わせることができる。
【００４２】
本発明は、前述のような構成を採用することによって、実用的な情報の常時採取を、汎用的な情報採取フレームワークに対して容易に適用することを可能にしている。以上のように、本発明による技術を適用すると、多くの問題の解析に有用な割り込み発生時の情報を採取することが可能であり、かつ、採取する情報量を適切な範囲に抑えて採取情報の解析を容易化することが可能であり、かつ、通常運用時には、フック（割り込み捕捉手段）が既に解除されているため、情報採取のオーバヘッドの極小化が可能であり、かつ、様々な実装に容易に適用することが可能になる、など様々な効果が得られる。
【００４３】
次に、本発明の特徴を表した構成を、図１を用いてさらに説明する。図１は、本発明による情報処理装置の特徴を表したブロック構成の一例を示すブロック構成図である。本発明による情報処理装置は、図１に示すように、ＣＰＵ１、メモリ２、デバイス３、ターゲットＯＳ４、情報採取機構５、および、情報記憶装置６を少なくとも含んで構成される。ここで、情報採取機構５を除く、ＣＰＵ１、メモリ２、デバイス３、ターゲットＯＳ４、および、情報記憶装置６は、一般的な情報処理装置の構成要素である。なお、ＣＰＵ１は、図１に示すように、ＣＰＵ１１、ＣＰＵ１２、…、ＣＰＵ１ｎ（ｎ：正整数）の複数台からなっている。また、ターゲットＯＳ４および情報採取機構５はメモリ２内に配置（記憶）されている。また、メモリ２の外部に設置の情報記憶装置６は、電源オフ状態であっても、記憶された情報が消去されることなく、そのまま、保持される不揮発性の記憶装置である。
【００４４】
情報採取機構５は、ターゲットＯＳ４のデバッグを支援する、トレーサ等の構成要素であり、割り込み捕捉部５１、情報採取部５２、割り込み捕捉停止判定部５３、割り込み捕捉統計情報記憶部５４、採取情報キャッシュ部５５、および、キャッシュ書き出し判定部５６を少なくとも含んで構成される。
【００４５】
割り込み捕捉部５１は、割り込み発生時に情報採取部５２に対してＣＰＵ１の制御を移すためのフック（割り込み捕捉手段）を仕掛け、しかる後のフック解除のために、フックを仕掛けた場所に関する情報を割り込み捕捉統計情報記憶部５４に保存する構成要素である。また、情報採取部５２は、デバッグに必要な情報を採取して一時的に採取情報キャッシュ部５５に保存するとともに、各デバイスの割り込みをフックした回数をカウントして割り込み捕捉統計情報記憶部５４ に保存する構成要素であり、本発明の特徴である、フック回数カウント機構の一つを構成している。
【００４６】
また、割り込み捕捉停止判定部５３は、割り込み捕捉統計情報記憶部５４のフック回数をチェックし、フックを仕掛けた時点後つまりＣＰＵ１の起動後においてフック回数があらかじめ定めた回数閾値を超えた場合に、当該フックを解除する構成要素であり、本発明の特徴である、フック回数カウント機構の他の一つを構成している。
【００４７】
また、キャッシュ書き出し判定部５６は、採取情報キャッシュ部５５に一時的に保存されている情報を、あらかじめ定めた適切なタイミングで、メモリ２外に別途設置されている不揮発性の情報記憶装置６に書き出す構成要素である。なお、採取情報キャッシュ部５５とキャッシュ書き出し判定部５６とは、情報記憶装置６へのアクセス速度が遅い場合に、一回の情報採取時間を削減するための構成要素であり、不揮発性の情報記憶装置６へのアクセス速度が十分に速く、キャッシュすることのメリットが少ない場合には、採取情報キャッシュ部５５とキャッシュ書き出し判定部５６とを備える必要はなく、情報採取部５２が、毎回、不揮発性の情報記憶装置６に採取情報を直接書き出す構成、動作としても良い。
【００４８】
次に、本発明の特徴を表した図１の情報処理装置の動作について、その一例を、図２のフローチャートを用いて説明する。図２は、図１に示す情報処理装置の動作についてその一例を説明するためのフローチャートである。
【００４９】
図２のフローチャートにおいて、ＣＰＵ１が起動されて、ターゲットＯＳ４が起動を開始すると、外部デバイス３からの割り込みを受け付けられるように、割り込みハンドラを含む各種ＯＳ内部データや、ＣＰＵ１の内部レジスタを含む各種デバイスを初期化する（ステップＳ１）。しかる後、割り込み捕捉部５１は、デバイス３からＣＰＵ１に割り込みが上がった際に、ＣＰＵ１の制御がターゲットＯＳ４ではなく、情報採取部５２に渡ってくるように、ターゲットＯＳ４が初期化した割り込みハンドラやデバイス等にフックを仕掛ける。また、割り込み捕捉部５１は、仕掛けた各フックに対応するエントリを、フック回数を‘０’回に初期化して割り込み捕捉統計情報記憶部５４に追加する（ステップＳ２）。
【００５０】
その間も並行して、ターゲットＯＳ４は様々な初期化処理を継続していくが（ステップＳ３）、実際に、デバイス３からＣＰＵ１に割り込みが上がると、ステップＳ４に移行して、ステップＳ２において仕掛けたフックにより（ステップＳ４のＹＥＳ）、ＣＰＵ１の制御が、情報採取部５２に移る。情報採取部５２は、割り込み発生時のシステム全体の状態を示すコンテキストを把握できるような情報（例えば、全ＣＰＵ１のＴＳＣ（Time  Stamp  Counter）値やＩＰ（Instruction  Pointer）値等）のシステム状態を示すコンテキスト情報を採取して（ステップＳ５）、採取情報キャッシュ部５５に保存する（ステップＳ６）。
【００５１】
また、情報採取部５２は、現在のＣＰＵ１の制御がどのフックによって移ってきたのかを、ＣＰＵ１のレジスタやスタックから判別し、割り込み捕捉統計情報記憶部５４内の当該フックのフック回数をインクリメントした後（ステップＳ７）、制御を割り込み捕捉停止判定部５３に移す。割り込み捕捉停止判定部５３は、ステップＳ２においてフックを仕掛けてから、あるいは、ＣＰＵ１が起動してから、ＯＳ４が初期化処理を完了するのに十分な時間としてあらかじめ定めた時間閾値の時間が経過しているか否かを確認し（ステップＳ８）、該時間閾値の時間が経過していた場合（ステップＳ８のＹＥＳ）、割り込み捕捉統計情報記憶部５４にエントリが存在する全てのフックを解除するとともに、割り込み捕捉統計情報記憶部５４の全エントリを削除する（ステップＳ９）。
【００５２】
一方、フックを仕掛けてから、あるいは、ＣＰＵ１が起動してから、まだ、前記時間閾値の時間が経過していない場合（ステップＳ８のＮＯ）、割り込み捕捉統計情報記憶部５４内の当該フックのフック回数がフックを仕掛けた時点後つまりＣＰＵ１の起動後においてあらかじめ定めた回数閾値を超えているか否かを確認し（ステップＳ１０）、該回数閾値を超えていた場合は（ステップＳ１０のＹＥＳ）、当該フックを解除するとともに、割り込み捕捉統計情報記憶部５４内の当該フックのエントリを削除する（ステップＳ１１）。しかる後、キャッシュ書き出し判定部５６に制御を移す。
【００５３】
キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しているか否かを確認し（ステップＳ１２）、エントリが存在していない場合には（ステップＳ１２のＮＯ）、ターゲットＯＳ４の初期化が完了したか、または、ターゲットＯＳ４がパニックしたものと判断して、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする（ステップＳ１３）。以上の動作によってフック内における処理は終了し、ＣＰＵ１の制御をターゲットＯＳ４の割り込みハンドラに移す。ターゲットＯＳ４は、割り込みを処理して（ステップＳ１４）、初期化処理を継続する状態に復帰する。
【００５４】
以降において、前記フック内の処理によりフックが解除されたデバイスから割り込みが上がってきた場合には、ステップＳ４に移行するが、情報採取機構５を一切経由することなく、ターゲットＯＳ４にＣＰＵ１の制御が移り（ステップＳ４のＮＯ）、ターゲットＯＳ４が割り込みを処理する（ステップＳ１４）。
【００５５】
また、以降において、割り込みが発生しなければ、ターゲットＯＳ４は、初期化処理を継続し、ターゲットＯＳ４は初期化処理を完了すると、正常に、起動を完了するか、もしくは、初期化処理中に異常が発生してパニックする（ステップＳ１５）。
【００５６】
ターゲットＯＳ４は、正常に起動完了したか、パニックした場合には、あらかじめ定めた適切なタイミングに割り込み捕捉停止判定部５３に通知して、割り込み捕捉停止判定部５３に制御を移す。割り込み捕捉停止判定部５３は、割り込み捕捉統計情報記憶部５４にエントリが存在する全てのフックを解除するとともに、割り込み捕捉統計情報記憶部５４の全エントリを削除する（ステップＳ９）。しかる後、キャッシュ書き出し判定部５６に制御を移す。
【００５７】
キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しているか否かを確認し（ステップＳ１２）、今回はエントリが存在していない場合であるので（ステップＳ１２のＮＯ）、ターゲットＯＳ４の初期化が完了したか、または、ターゲットＯＳ４がパニックしたものと判断して、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする（ステップＳ１３）。以上の動作によって情報採取機構５は動作を停止するため、ターゲットＯＳ４にＣＰＵ１の制御を戻すと、次回、システムが再起動されるまで、情報採取機構５にＣＰＵ１の制御が渡ることはない。
【００５８】
而して、問題が発生した場合、調査担当者は、任意のタイミングで情報記憶装置６から採取された情報を取得して、原因究明のために利用することができる。
【００５９】
（第１の実施形態の構成例）
次に、本発明による情報処理装置の具体的な構成について説明する。まず、第１の実施形態として、本発明による情報処理装置を例えばＩｎｔｅｌ社のＩＡ−３２アーキテクチャのサーバプラットフォームにおけるＢＩＯＳ（Basic  Input／Output  System）を実装した情報処理装置に適用した場合について説明する。
【００６０】
図３は、本発明による情報処理装置の第１の実施形態におけるブロック構成例を示すブロック構成図であり、Ｉｎｔｅｌ社のマイクロプロセッサ向けのアーキテクチャであるＩｎｔｅｌ  ＩＡ−３２アーキテクチャのサーバプラットフォームにおけるＢＩＯＳを実装した情報処理装置に適用した場合について示している。図３に示す情報処理装置は、ＣＰＵ１、メモリ２、デバイス３、ターゲットＯＳ４、情報採取機構５、および、情報記憶装置６を少なくとも含んで構成される。なお、ＣＰＵ１は、図１に示すように、ＣＰＵ１１、ＣＰＵ１２、…、ＣＰＵ１ｎ（ｎ：正整数）の複数台からなっている。また、ターゲットＯＳ４および情報採取機構５は、メモリ２内に配置（記憶）されて、情報採取機構５は、Ｉｎｔｅｌ社のＩＡ−３２アーキテクチャのサーバプラットフォームにおけるＢＩＯＳの一部として構成される。
【００６１】
Ｉｎｔｅｌ  ＩＡ−３２アーキテクチャのＣＰＵ１を構成する各ＣＰＵ１１、ＣＰＵ１２、…、ＣＰＵ１ｎは、それぞれ、割り込みハンドラ登録レジスタのＩＤＴＲレジスタ（Interrupt  Descriptor  Table  Register）とＣＰＵ内蔵の割り込みコントローラのローカルＡＰＩＣ（Advanced  Programmable  Interrupt  Controller）とを備え、ローカルＡＰＩＣコントローラは、内部に、ＩＣＲレジスタ（Interrupt  Command  Register）を備えている。また、ＢＩＯＳの一部を構成する情報採取機構５は、図１に示したように、割り込み捕捉部５１、情報採取部５２、割り込み捕捉停止判定部５３、割り込み捕捉統計情報記憶部５４、採取情報キャッシュ部５５、および、キャッシュ書き出し判定部５６を少なくとも含んで構成される。
【００６２】
Ｉｎｔｅｌ  ＩＡ−３２アーキテクチャにおいては、デバイス３が、（デバイス毎に割り当てられるベクタ番号を用いて）、ＣＰＵ１のローカルＡＰＩＣに割り込みを上げると、ＣＰＵ１はＩＤＴＲレジスタに格納されているアドレスをＩＤＴテーブル（Interrupt  Descriptor  Table）の先頭アドレスと見做して、上がってきた割り込みのベクタ番号に対応するＩＤＴテーブルのエントリを参照し、当該エントリに設定されている割り込みハンドラを実行する仕様になっている。ここで、ＩＤＴテーブルを作成し、該ＩＤＴテーブルの先頭アドレスをＣＰＵ１のＩＤＴＲレジスタに書き込むのは、ＯＳの役割である。ターゲットＯＳ４が起動時に前述の動作を実行すると、デバイス３からの割り込みをターゲットＯＳ４が受け付けられるようになる。
【００６３】
また、Ｉｎｔｅｌ  ＩＡ−３２アーキテクチャにおいては、ＳＭＩ（System  Management  Interrupt）と称する、前記動作とは全く異なる仕組みの、ＢＩＯＳ 等のシステム管理ソフトウェア専用の割り込みがある。ＣＰＵ１はＳＭＩ割り込みを受けると、ＳＭＭ（System  Management  Mode）と称するモードに移行し、通常モードではアクセスすることができないＳＭＲＡＭメモリと称する専用メモリ領域にアクセスすることができるようになる。
【００６４】
ＣＰＵ１は、ＳＭＭモードへの移行前のコンテキスト情報をＳＭＲＡＭメモリにセーブした後、ＳＭＲＡＭメモリ上に（ＢＩＯＳによって）準備された独立動作環境に切り替わり、ＳＭＲＡＭメモリ上に用意されてあるＳＭＩハンドラを実行する。ＳＭＩハンドラの実行が終了して、ＳＭＭモードから通常モードに戻る際には、ＣＰＵ１はＳＭＲＡＭメモリ上にセーブしているコンテキスト情報をリストアし、ＳＭＩ割り込み発生時のコード実行を再開する。かくのごとく、ＳＭＩ割り込みは、ＯＳを透過してＣＰＵ制御を一時的にＢＩＯＳに移すことができる。
【００６５】
ここで、ＳＭＩ割り込みを発行するには、ＣＰＵ１のＳＭＩピンをアサートする方法と、ローカルＡＰＩＣコントローラ内のＩＣＲレジスタに特定の値を書き込み、ローカルＡＰＩＣコントローラに伝送モードがＳＭＩのＩＰI割り込み（Inter-Processor  Interrupt）を発生させる方法とがある。
【００６６】
ＳＭＩピンをアサートする方法は、ハードウェア的な接続が必要であるが、ＩＣＲレジスタはメモリ空間上の０ｘＦＥＥ００３００，…，０ｘＦＥＥ００３１Ｆ にマップされているため、ＩＣＲレジスタがマップされているアドレスに対するメモリアクセス命令により、ソフトウェア的にもＳＭＩ割り込み（伝送モードをＳＭＩとするＩＰI割り込み）を発行させることができる。
【００６７】
また、ＩＡ−３２アーキテクチャのＢＩＯＳの一部として構成される情報採取機構５の割り込み捕捉部５１は、ターゲットＯＳ４によるＩＤＴテーブルとＩＤＴＲレジスタとの初期化を、周期的なＳＭＩ割り込みを用いて監視し、初期化が行われたことを検知すると、ターゲットＯＳ４がＩＤＴテーブルに設定した割り込みハンドラの先頭に、ＳＭＩ発行命令を埋め込む。なお、周期的なＳＭＩ割り込みは、最近のサーバプラットフォームに実装されているメモリパトロールスクラビング機能等で使われており、該機能と同等の仕組み（ＳＭＩ割り込みを上げるタイマデバイス等）を用いれば良い。
【００６８】
また、ターゲットＯＳ４がＩＤＴテーブルに設定する割り込みハンドラの先頭には、割り込み捕捉部５１が ＳＭＩ発行命令を埋め込むのに十分なバイト数分のｎｏｐ（No  Operation）命令（何もしない命令）を（命令埋め込み用スペースとして）あらかじめ配置しておく。ｎｏｐ（No  Operation）命令は、例えば、ＯＳのソースコード内に直接に配置しても良いし、あるいは、ｇｃｃコンパイラ（ＧＮＵ  Ｃ  Compiler）の −ｐｇオプション（全関数の先頭にｍｃｏｕｎｔ（）という関数をコールする命令を配置するオプション）の変形版として、指定バイト数分のｎｏｐ命令を全関数の先頭に配置するオプションを追加し、ＯＳコードのコンパイル時に自動的に配置するようにしても良い。
【００６９】
その結果として、デバイス３からの割り込み発生時に、ターゲットＯＳ４から ＳＭＩ発行命令が実行されるため、ＣＰＵ１の制御をフックして情報採取部５２に制御を移すことができる。
【００７０】
また、割り込み捕捉部５１は、ＳＭＩ発行命令を埋め込んだ際に、どのＣＰＵのどのＩＤＴテーブルのエントリに対してＳＭＩ発行命令を埋め込んだのかを記憶しておくために、ＣＰＵ番号、ベクタ番号、割り込みハンドラアドレスを組としたエントリを、割り込み捕捉統計情報記憶部５４に追加して記憶し、当該エントリのフック回数を‘０’に初期化する。しかる後、デバイス３から割り込みが上がって、割り込み捕捉部５１によって埋め込まれたＳＭＩ発行命令が実行されると、ＳＭＩハンドラに制御が移り、ＳＭＩハンドラは、割り込み要因が割り込み捕捉部５１によって埋め込まれたＳＭＩ発行命令であることを確認すると、情報採取部５２を実行する。
【００７１】
なお、割り込み要因が割り込み捕捉部５１によって埋め込まれたＳＭＩ発行命令ではなかった場合は、周期的なＳＭＩ割り込みと判断して、ターゲットＯＳ４によるＩＤＴテーブルとＩＤＴＲレジスタとの初期化を監視する、前述のＩＤＴ／ＩＤＴＲ 監視ルーチンを実行する。
【００７２】
また、情報採取部５２は、全ＣＰＵ１のＴＳＣ値やＩＰ値などのシステム全体のコンテキスト情報を採取し、採取情報キャッシュ部５５に保存する。また、情報採取部５２は、割り込み要因となったＣＰＵとＳＭＩ発行命令とを基にして、割り込み捕捉統計情報記憶部５４内のエントリを検索し、検索したエントリのフック回数をインクリメントする。しかる後、情報採取部５２は、割り込み捕捉停止判定部５３を実行する。
【００７３】
割り込み捕捉停止判定部５３は、割り込み捕捉部５１が埋め込んだＳＭＩ発行命令の削除と、周期的なＩＤＴ／ＩＤＴＲ監視動作の停止と、を行い、割り込み捕捉統計情報記憶部５４内のエントリも適切に削除する。ここで、ＳＭＩ発行命令削除のトリガは、割り込み捕捉統計情報記憶部５４に記録されているエントリのフック回数がフックを仕掛けた時点後つまりＣＰＵ１の起動後においてあらかじめ定めた回数閾値を超えた場合、もしくは、ＯＳが初期化処理を完了するのに十分な時間が経過した場合である。
【００７４】
エントリのフック回数が前記回数閾値を超えた場合には、当該エントリと、当該エントリに対応するＳＭＩ発行命令とを削除する。また、ＯＳが初期化処理を完了するのに十分な時間が経過した場合には、全エントリと、全エントリそれぞれに対応するＳＭＩ発行命令と、を削除し、さらに、割り込み捕捉部５１の周期的な ＩＤＴ／ＩＤＴＲ 監視動作も停止する。
【００７５】
しかる後、割り込み捕捉停止判定部５３は、キャッシュ書き出し判定部５６を実行する。キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しない場合、ターゲットＯＳ４の初期化が完了したか、あるいは、ターゲットＯＳ４がパニックしたものと判断し、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする。
【００７６】
しかる後、ＳＭＩハンドラに戻り、ＳＭＩハンドラは、ＳＭＭモードを終了し、通常モードに戻って、ターゲットＯＳ４の割り込みハンドラの通常コードの実行に戻る。しかる後は、ＳＭＩ発行命令が削除された割り込みハンドラに対応するデバイス３から割り込みが上がってきた場合は、情報採取機構５を一切経由することなく、ターゲットＯＳ４の割り込みハンドラが実行され、割り込みを処理する。
【００７７】
しかる後においても、ターゲットＯＳ４は、割り込みを処理しつつ、初期化処理を継続するが、割り込みが少なく、ＳＭＩ発行命令が残ったまま初期化が完了して正常に起動完了するか、もしくは、初期化処理の途中でパニックして停止することがある。かかる場合、周期的なＳＭＩ割り込みは停止されていないため、周期的にＣＰＵ１の制御が割り込み捕捉部５１に移る。割り込み捕捉部５１は、フックを仕掛けてからあるいはＣＰＵ１が起動してからあらかじめ定めた時間閾値を超える十分な時間が経過している場合には、ターゲットＯＳ４の初期化が完了し正常に起動完了したか、もしくは、初期化処理の途中でパニックして停止したものと判断し、周期的なＳＭＩ割り込みを停止するとともに、割り込み捕捉停止判定部５３を実行する。
【００７８】
割り込み捕捉停止判定部５３は、フックを仕掛けてからあるいはＣＰＵ１が起動してから十分な時間が経過していることを認識し、前述した、割り込み捕捉統計情報記憶部５４内の全エントリと全ＳＭＩ発行命令との削除やキャッシュ書き出し判定部５６の実行による採取情報の情報記憶装置６への書き出しを行った後、全ての動作を終了する。なお、フックを仕掛けてからあるいはＣＰＵ１が起動してから十分な時間としてあらかじめ定めた時間閾値を超える前に、ターゲットＯＳ４がリブートしてしまう場合には、ターゲットＯＳ４のリブートルーチンの最後にＢＩＯＳコールが実行され、ＢＩＯＳに制御が移るので、その中で、割り込み捕捉停止判定部５３の実行をトリガする。
【００７９】
（第１の実施形態の動作の説明）
次に、第１の実施形態として図３に示した情報処理装置の動作について、その一例を、図４のフローチャートを用いて説明する。図４は、第１の実施形態として図３に示した情報処理装置の動作の一例を説明するためのフローチャートである。
【００８０】
図４のフローチャートにおいて、ＢＩＯＳは、ＣＰＵ１の制御をＯＳブートローダにハンドオフする際に、割り込み捕捉部５１を実行する。割り込み捕捉部５１は、ＩＤＴＲ／ＩＤＴの変化（書き換え）を監視するために、ＩＤＴＲ／ＩＤＴ内部コピー用領域を初期化し、全ＣＰＵ１のＩＤＴＲ／ＩＤＴを取得して初期値として保存しておく。また、割り込み捕捉部５１は、割り込み捕捉統計情報記憶部５４をエントリが何もない状態に初期化する。さらに、割り込み捕捉部５１は、ＩＤＴＲ／ＩＤＴ監視用として、周期的に全ＣＰＵ１に対してＳＭＩ割り込みを上げるように、タイマ等の特定の外部デバイス３をセットし、この時の開始時刻を内部で記憶しておく（ステップＳ２１）。なお、ＢＩＯＳが割り込み捕捉部５１を起動した時刻をＣＰＵ１の起動時刻として内部に記憶するようにしても良い。
【００８１】
ＢＩＯＳは、割り込み捕捉部５１の実行が完了すると、ＯＳブートローダにＣＰＵ１の制御をハンドオフする。ＯＳブートローダは、ターゲットＯＳ４をメモリ上にロードし、ＣＰＵ１の制御をターゲットＯＳ４にハンドオフする。ターゲットＯＳ４は、各種初期化処理を開始し、その中で、外部デバイス３からの割り込みを受け付けられるように、ＩＤＴテーブルを作成し、ＩＤＴテーブルの先頭アドレスをＣＰＵ１のＩＤＴＲレジスタに書き込む（ステップＳ２２）。
【００８２】
ターゲットＯＳ４は、その後も、様々な初期化処理を行っていくが、その途中で、割り込み捕捉部５１がセットした周期的なＳＭＩ割り込みが外部デバイス３ からＣＰＵ１に上がると、ＣＰＵ１の制御がＢＩＯＳのＳＭＩハンドラに移る。ＳＭＩハンドラは、割り込み要因が特定の外部デバイス３であることから、割り込み捕捉部５１がＩＤＴＲ／ＩＤＴ監視のために仕掛けたＳＭＩ割り込みと判断し（ステップＳ２３のＮＯ）、割り込み捕捉部５１を実行する。割り込み捕捉部５１は、内部に記憶しておいた周期的なＳＭＩ割り込みによる計時結果がフック設定開始時刻からあらかじめ定めた十分な時間が経過しているか否かを確認し（ステップＳ２４）、十分な時間が経過していない場合には（ステップＳ２４のＮＯ）、全ＣＰＵ１のＩＤＴＲ／ＩＤＴを取得して（ステップＳ２５）、前回取得して保存しておいたＩＤＴＲ／ＩＤＴと比較する（ステップＳ２６）。
【００８３】
割り込み捕捉部５１は、ＩＤＴＲレジスタとＩＤＴテーブルのベクタ３２以降のエントリ（つまり外部デバイス用のエントリ）との双方に変更がなければ（ステップＳ２６のＮＯ）、今回取得した値を保存した後、ＳＭＩハンドラにＣＰＵ１の制御が戻り、ＳＭＩハンドラはターゲットＯＳ４にＣＰＵ１の制御を戻す。
【００８４】
一方、割り込み捕捉部５１は、まず、ＩＤＴＲレジスタの変更を検知すると（ステップＳ２６のＹＥＳ）、ＩＤＴテーブル全体が変更されたものと判断し、割り込み捕捉統計情報記憶部５４に登録されている全エントリを参照して、各エントリに対応するＳＭＩ発行命令（フック）を全て削除するとともに、各エントリ自体も全て削除する（ステップＳ２７）。
【００８５】
さらに、割り込み捕捉部５１は、ＩＤＴテーブルのベクタ３２ 以降の全エントリを参照して、フック（割り込み捕捉機構）として、各ベクタの割り込みハンドラの先頭にＳＭＩ発行命令（フック）を埋め込むとともに、ＣＰＵ番号、ベクタ番号、割り込みハンドラアドレスの組を一つのエントリとして割り込み捕捉統計情報記憶部５４に追加し、全エントリのフック回数を‘０’に初期化する（ステップＳ２８）。
【００８６】
なお、ＩＤＴＲレジスタの初回の変更検知時の場合は、割り込み捕捉統計情報記憶部５４にはエントリが存在しないので、ステップＳ２７の処理を行うことなく、ステップＳ２８のＳＭＩ発行命令埋め込み、および、割り込み捕捉統計情報記憶部５４へのエントリ追加の処理のみが実行される。
【００８７】
また、ステップＳ２６において、割り込み捕捉部５１は、ＩＤＴＲレジスタには変更がなく、ＩＤＴテーブルのベクタ３２以降のエントリに変更を検知すると（ステップＳ２６のＹＥＳ）、割り込み捕捉統計情報記憶部５４内の変更されたベクタ番号に対応するエントリを参照し、当該ベクタの割り込みハンドラの先頭から ＳＭＩ発行命令（フック）を削除するとともに、当該エントリ自体も削除する（ステップＳ２７）
【００８８】
さらに、割り込み捕捉部５１は、変更後のベクタの割り込みハンドラの先頭に ＳＭＩ発行命令（フック）を埋め込むとともに、ＣＰＵ番号、ベクタ番号、割り込みハンドラアドレスの組を一つのエントリとして割り込み捕捉統計情報記憶部５４に追加し、そのエントリのフック回数を‘０’に初期化する（ステップＳ２８）
【００８９】
以上の動作によって、一回のＩＤＴＲ／ＩＤＴ監視処理は終了して、割り込み捕捉部５１はＳＭＩハンドラにＣＰＵ１の制御を戻し、ＳＭＩハンドラはターゲットＯＳ４にＣＰＵ１の制御を戻し、ターゲットＯＳ４は各種の初期化処理を再開する。
【００９０】
しかる後、ターゲットＯＳ４の初期化処理が各種デバイスの初期化まで進んだ状態において（ステップＳ２９）、デバイス３からの割り込みが上がって、当該デバイスに対応するＩＤＴエントリの割り込みハンドラが実行された際に、割り込み捕捉部５１によって埋め込まれたＳＭＩ発行命令（フック）が実行された場合には（ステップＳ３０のＹＥＳ）、ＳＭＩハンドラに制御が移る。
【００９１】
ＳＭＩハンドラは、割り込み要因が特定の外部デバイス３ではないことから、割り込み捕捉部５１によって埋め込まれたＳＭＩ発行命令（フック）によるＳＭＩ割り込みと判断して（ステップＳ２３のＹＥＳ）、情報採取部５２を実行する。情報採取部５２は、全ＣＰＵ１のＴＳＣ値やＩＰ値等のシステム全体のコンテキスト情報を採取し（ステップＳ３１）、採取情報キャッシュ部５５に保存する（ステップＳ３２）。また、情報採取部５２は、ＳＭＩ割り込みを発生させたＣＰＵ１のＣＰＵ番号と、当該ＣＰＵ１によって実行されたＳＭＩ発行命令のアドレスとを基にして、今回フックした割り込みに対応する割り込み捕捉統計情報記憶部５４ 内のエントリを参照し、該エントリのフック回数をインクリメントする（ステップＳ３３）。
【００９２】
しかる後、情報採取部５２は、割り込み捕捉停止判定部５３を実行する。割り込み捕捉停止判定部５３は、割り込み捕捉部５１が内部に記憶しておいた周期的なＳＭＩ割り込みによる計時結果がフック設定開始時刻からあらかじめ定めた十分な時間が経過しているか否かを確認し（ステップＳ３４）、十分な時間が経過していない場合には（ステップＳ３４のＮＯ）、今回フックしたＳＭＩ割り込みに対応する割り込み捕捉統計情報記憶部５４内のエントリを参照し、フック回数がフックを仕掛けた時点後つまりＣＰＵ１の起動後においてあらかじめ定めた回数閾値を超えていた場合（ステップＳ３５のＹＥＳ）、当該エントリの割り込みハンドラの先頭からＳＭＩ発行命令を削除するとともに、エントリ自体も削除する（ステップＳ３６）。
【００９３】
一方、割り込み捕捉停止判定部５３は、ステップＳ３４において、割り込み捕捉部５１が内部に記憶しておいた周期的なＳＭＩ割り込みによる計時結果がフック設定開始時刻からあらかじめ定めた十分な時間が経過していた場合（ステップＳ３４のＹＥＳ）、ターゲットＯＳ４の初期化処理が完了して、起動動作が既に完了したものと判断し、特定の外部デバイス３からの周期的なＳＭＩ割り込み動作を解除し（ステップＳ３７）、割り込み捕捉統計情報記憶部５４に登録されている全エントリを参照して、各エントリに対応するＳＭＩ発行命令（フック）を削除するとともに、各エントリ自体も削除する（ステップＳ３８）。
【００９４】
割り込み捕捉停止判定部５３の処理が終了すると、次に、割り込み捕捉停止判定部５３は、キャッシュ書き出し判定部５６を実行する。キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しない場合には（ステップＳ３９のＮＯ）、ターゲットＯＳ４の初期化が完了して十分正常な状態に入ったものと判断して、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする（ステップＳ４０）。一方、割り込み捕捉統計情報記憶部５４にエントリが存在する場合には（ステップＳ３９のＹＥＳ）、キャッシュ書き出し判定部５６は、起動動作における情報採取中と判断して、何もせずに処理を終了する。
【００９５】
以上の動作によって、一回の割り込み契機による情報採取処理は終了し、キャッシュ書き出し判定部５６はＳＭＩハンドラにＣＰＵ１の制御を戻し、ＳＭＩハンドラはターゲットＯＳ４にＣＰＵ１の制御を戻し、ターゲットＯＳ４は自身の割り込みハンドラによる割り込みの処理を行う（ステップＳ４１）。
【００９６】
しかる後、ＳＭＩ発行命令（フック）が削除された割り込みハンドラに対応するデバイス３から割り込みが上がってきた場合は（ステップＳ３０のＮＯ）、情報採取機構５を一切経由することなく、ターゲットＯＳ４の割り込みハンドラが実行され、割り込みの処理を行う（ステップＳ４１）。
【００９７】
なお、ターゲットＯＳ４は、割り込みも処理しつつ、各種の初期化処理を継続するが （ステップＳ２９）、割り込みを上げることが少ないデバイス３に対応する割り込みハンドラは、フック回数判定によるＳＭＩ発行命令の削除が行われないまま、初期化処理が完了する場合もある。もしくは、初期化処理中にパニックしてしまい、デバイス３からの割り込みがほとんど上がらないまま、停止してしまう場合もある（ステップＳ４２）。
【００９８】
かかる場合、あらかじめ定めた適切なタイミングで、割り込み捕捉部５１によって開始された周期的なＳＭＩ割り込みが上がり、ＳＭＩハンドラが実行される。ＳＭＩハンドラは、割り込み要因が特定の外部デバイス３であることから、割り込み捕捉部５１がＩＤＴＲ／ＩＤＴ監視のためのフックとして仕掛けたＳＭＩ割り込みと判断し（ステップＳ２３のＮＯ）、割り込み捕捉部５１を実行する。
【００９９】
割り込み捕捉部５１は、内部に記憶しておいた周期的なＳＭＩ割り込みによる計時結果がフック設定開始時刻からあらかじめ定めた十分な時間が経過しているか否かを確認し（ステップＳ２４）、十分な時間が経過していた場合には（ステップＳ２４のＹＥＳ）、ターゲットＯＳ４の初期化処理が完了して、起動動作が既に完了したか、あるいは、パニックして停止しているものと判断し、特定の外部デバイス３からの周期的なＳＭＩ割り込み動作を解除し（ステップＳ３７）、割り込み捕捉統計情報記憶部５４に登録されている全エントリを参照して、各エントリに対応するＳＭＩ発行命令（フック）を削除するとともに、各エントリ自体も削除する（ステップＳ３８）。
【０１００】
割り込み捕捉部５１の処理が終了すると、次に、割り込み捕捉部５１は、キャッシュ書き出し判定部５６を実行する。キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しない場合には（ステップＳ３９のＮＯ）、ターゲットＯＳ４の初期化が完了して、起動動作が既に完了したか、あるいは、パニックして停止しているものと判断して、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする（ステップＳ４０）。
【０１０１】
以上の動作によって、一回の起動時における情報採取処理は全て終了し、キャッシュ書き出し判定部５６はＳＭＩハンドラにＣＰＵ１の制御を戻し、ＳＭＩハンドラはターゲットＯＳ４にＣＰＵ１の制御を戻し、ターゲットＯＳ４は、割り込みハンドラによる割り込み処理を終了させて（ステップＳ４１）、通常の処理を実行させる状態になる。以降、ターゲットＯＳ４の再起動が行われるまで、情報採取機構５は作動しない。
【０１０２】
なお、ターゲットＯＳ４は、想定より早く初期化処理を完了して即座にリブートしたり、パニック時に停止することなくリブートしたりする場合も生じる（ステップＳ４３）。かかる場合には、ターゲットＯＳ４からＢＩＯＳに対してリブート関数等のＢＩＯＳコールを利用したリブート要求が行われ、ＣＰＵ１の制御がＢＩＯＳに移るので、その延長から周期的な ＳＭＩ割り込みの解除（ステップＳ３７）と、割り込み捕捉統計情報記憶部５４の全エントリの削除（ステップＳ３８）と、キャッシュ書き出し判定部５６のキャッシュ書き出しの実行（ステップＳ４０）と、を行うことによって、採取した情報を、情報記憶装置６に書き出す処理が行われる。
【０１０３】
（第１の実施形態の効果の説明）
以上に詳細に説明したように、本第１の実施形態においては、以下のような効果が得られる。
【０１０４】
第１の効果は、ＯＳ起動時の割り込み起因の競合問題を調査するために有用な情報を常時採取することができることである。その理由は、各デバイスからの最初の数回の割り込み発生時の情報が非常に有用なことが多いという、対象とする問題の特性に基づき、起動時の情報採取のためのトレース機能を徐々に解除していく処理を導入することにより、ＯＳ起動完了後のオーバヘッドを除去することができるため、従来の技術においては運用中の性能への影響の懸念から常時起動することが難しかったトレース機能を、ＯＳ起動時に常時起動させることを可能にしているからである。
【０１０５】
第２の効果は、ＯＳ起動時の割り込み起因の競合問題調査用として採取された情報の分析が容易になることである。その理由は、各デバイスからの最初の数回の割り込み発生時の情報のみを採取することにより、一回のＯＳ起動当たりに採取される情報量を十分に少なくすることができるからである。
【０１０６】
第３の効果は、問題発生時に運用再開優先等の都合により ＯＳ機能によるメモリダンプ等の情報採取を行うことができなかった場合においても、問題発生後に、問題発生時の情報に加え、過去の正常時の情報も採取することができることである。その理由は、正常時であっても問題発生時であっても、一旦、メモリ上に採取した情報は、当該メモリ上の情報が消去される前に、当該メモリの外部に設置されている不揮発性の情報記憶装置に書き出すようにしているからである。
【０１０７】
第４の効果は、原因究明に要する時間や労力が削減することができることである。その理由は、第１の効果と第３の効果とにより、問題発生時に即座に調査に有用な情報を入手することができ、問題発生後に情報採取を初めて開始する場合と比較して、情報採取までの時間を大幅に削減することができることと、第２の効果により、採取した情報の分析に無駄な時間をかける必要がなくなるからである。
【０１０８】
なお、前述したような本発明の第１の実施形態のような仕組みを採用していない情報処理装置の場合は、問題発生後に、どこにトレーサを仕掛け、どのような情報を採取するか、という調査や検討を実施した上で、デバッグ用ＯＳやデバッガを準備し、再現トライを重ねて膨大な情報を採取し、採取した情報を膨大な時間と労力をかけて分析する、といったステップを踏んでいくことになる。したがって、運用中のシステムでしか問題が発生せず、再現トライを実施させることが困難な場合や、あるいは、再現に時間を要する問題や再現性のない問題の場合には、原因究明までに膨大な時間を要することを避けることができない。
【０１０９】
（第２の実施形態の構成例および動作例）
次に、本発明による情報処理装置の第２の実施形態における構成例および動作例について説明する。第１の実施形態においては、割り込みのフックやキャッシュ書き出しの判定を、ＯＳに依存することなく、ＢＩＯＳだけに実装し、ＯＳとは独立に動作させているため、周期的なＳＭＩ割り込みによるＯＳ動作の監視が必要であった。このため、監視周期が適切でなかった場合には、監視のオーバヘッドが大きくなったり、あるいは、フックを仕掛けるのが最初の割り込みに間に合わなくて、必要な情報を取りこぼしたりする、といった弊害が発生し得る。本第２の実施形態においては、ＯＳ依存性が多少増加するものの、第１の実施形態における弊害を除去するために、割り込みのフックの設定／解除やキャッシュ書き出しの判定のトリガ部分を、ＯＳとＢＩＯＳとを連携させるような実装にしている。
【０１１０】
以下、本第２の実施形態における情報処理装置の具体的な構成例と動作例とについて、図５のブロック構成図と図６のフローチャートとを用いて説明する。図５は、本発明による情報処理装置の第２の実施形態におけるブロック構成例を示すブロック構成図であり、ハッチングを施して示すように、ターゲットＯＳ４にＩＤＴＲ／ＩＤＴ初期化関数を有し、また、第１の実施形態におけるリブート関数の代わりに、パニック関数・起動完了またはリブート関数を有した構成とし、それぞれの関数の実行により、それぞれ、情報採取機構５の割り込み捕捉部５１、割り込み捕捉停止判定部５３に対して通知するように構成している。また、図６は、第２の実施形態として図５に示した情報処理装置の動作の一例を説明するためのフローチャートである。
【０１１１】
図６のフローチャートにおいて、ＢＩＯＳは、ＣＰＵ１の制御をＯＳブートローダにハンドオフする際に、割り込み捕捉部５１を実行する。割り込み捕捉部５１は、ＢＩＯＳ内部データを初期化するために、割り込み捕捉統計情報記憶部５４をエントリが何もない状態に初期化する（ステップＳ５１）。割り込み捕捉部５１の実行が完了すると、ＢＩＯＳは、ＯＳブートローダにＣＰＵ１の制御をハンドオフする。ＯＳブートローダは、ターゲットＯＳ４をメモリ上にロードし、ＣＰＵ１の制御をターゲットＯＳ４にハンドオフする。
【０１１２】
ターゲットＯＳ４は、各種の初期化処理を開始し、その中で、外部デバイス３からの割り込みを受け付けられるように、ＩＤＴテーブルを作成し、ＩＤＴテーブルの先頭アドレスをＣＰＵ１のＩＤＴＲレジスタに書き込む（ステップＳ５２）。ターゲットＯＳ４は、ＩＤＴＲ／ＩＤＴの初期化が完了したら、第１の実施形態の場合とは異なり、その旨をＢＩＯＳコールのＩＤＴＲ／ＩＤＴ初期化関数等を用いて割り込み捕捉部５１に通知し、割り込み捕捉部５１にＣＰＵ１の制御を移す（ステップＳ５３）。
【０１１３】
割り込み捕捉部５１は、割り込み捕捉統計情報記憶部５４に登録されている全エントリを参照して、各エントリに対応するＳＭＩ発行命令を削除するとともに、各エントリ自体も削除する（ステップＳ５４）。また、割り込み捕捉部５１は、ＩＤＴテーブルのベクタ３２以降の全エントリを参照して、各ベクタの割り込みハンドラの先頭にＳＭＩ発行命令（フック）を埋め込むとともに、ＣＰＵ番号、ベクタ番号、割り込みハンドラアドレスの組を一つのエントリとして割り込み捕捉統計情報記憶部５４に追加し、全エントリのフック回数を‘０’に初期化する（ステップＳ５５）。なお、初回の割り込み捕捉部５１実行時は、割り込み捕捉統計情報記憶部５４にはエントリが存在しないので、ステップＳ５４の処理は実行することなく、ステップＳ５５のＳＭＩ発行命令埋め込みおよび割り込み捕捉統計情報記憶部５４へのエントリ追加の処理のみが実行される。
【０１１４】
割り込み捕捉部５１は以上の処理によって、ターゲットＯＳ４からのＩＤＴＲ／ＩＤＴ初期化通知に対する処理を終了し、ターゲットＯＳ４にＣＰＵ制御を戻し、ターゲットＯＳ４は各種の初期化処理を再開する（ステップＳ５６）。
【０１１５】
しかる後、ターゲットＯＳ４の初期化処理が各種デバイスの初期化まで進んだ状態において（ステップＳ５６）、デバイス３からの割り込みが上がって、当該デバイスに対応するＩＤＴエントリの割り込みハンドラが実行された際に、割り込み捕捉部５１によって埋め込まれたＳＭＩ発行命令（フック）が実行された場合には（ステップＳ５７のＹＥＳ）、ＳＭＩハンドラに制御が移り、情報採取部５２が実行される。
【０１１６】
情報採取部５２は、全ＣＰＵ１のＴＳＣ値やＩＰ値等のシステム全体のコンテキスト情報を採取し（ステップＳ５８）、採取情報キャッシュ部５５に保存する（ステップＳ５９）。また、情報採取部５２は、ＳＭＩ割り込みを発生させたＣＰＵ１のＣＰＵ番号と、当該ＣＰＵ１によって実行されたＳＭＩ発行命令のアドレスとを基にして、今回フックした割り込みに対応する割り込み捕捉統計情報記憶部５４ 内のエントリを参照し、該エントリのフック回数をインクリメントする（ステップＳ６０）。
【０１１７】
しかる後、情報採取部５２は、割り込み捕捉停止判定部５３を実行する。割り込み捕捉停止判定部５３は、今回フックしたＳＭＩ割り込みに対応する割り込み捕捉統計情報記憶部５４内のエントリを参照し、フック回数がフックを仕掛けた時点後つまりＣＰＵ１の起動後においてあらかじめ定めた回数閾値を超えていた場合（ステップＳ６１のＹＥＳ）、当該エントリの割り込みハンドラの先頭からＳＭＩ発行命令（フック）を削除するとともに、エントリ自体も削除する（ステップＳ６２）。
【０１１８】
割り込み捕捉停止判定部５３の処理が終了すると、次に、割り込み捕捉停止判定部５３は、キャッシュ書き出し判定部５６を実行する。キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しない場合には（ステップＳ６３のＮＯ）、ターゲットＯＳ４の初期化が完了して十分正常な状態に入ったものと判断して、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする（ステップＳ６４）。一方、割り込み捕捉統計情報記憶部５４にエントリが存在する場合には（ステップＳ６３のＹＥＳ）、キャッシュ書き出し判定部５６は、起動動作における情報採取中と判断して、何もせずに処理を終了する。
【０１１９】
以上の動作によって、一回の割り込み契機による情報採取処理は終了し、キャッシュ書き出し判定部５６はＳＭＩハンドラにＣＰＵ１の制御を戻し、ＳＭＩハンドラはターゲットＯＳ４にＣＰＵ１の制御を戻し、ターゲットＯＳ４は自身の割り込みハンドラによる割り込みの処理を行う（ステップＳ６５）。
【０１２０】
しかる後、ＳＭＩ発行命令（フック）が削除された割り込みハンドラに対応するデバイス３から割り込みが上がってきた場合は（ステップＳ５７のＮＯ）、情報採取機構５を一切経由することなく、ターゲットＯＳ４の割り込みハンドラが実行され、割り込みの処理を行う（ステップＳ６５）。
【０１２１】
ターゲットＯＳ４は、割り込みも処理しつつ、各種の初期化処理を継続するが （ステップＳ５６）、やがて初期化処理が完了し、正常に起動完了するか、もしくは、初期化処理の途中にパニックしてしまう（ステップＳ６６）。かかる場合、第１の実施形態の場合とは異なり、ターゲットＯＳ４は、あらかじめ定めた適切なタイミングで、ＢＩＯＳコールのパニック関数・起動完了またはリブート関数等を用いて割り込み捕捉停止判定部５３にその旨を通知する（ステップＳ６７）。割り込み捕捉停止判定部５３は、割り込み捕捉統計情報記憶部５４に登録されている全エントリを参照して、各エントリに対応するＳＭＩ発行命令（フック）を削除するとともに、各エントリ自体も削除する（ステップＳ６８）。
【０１２２】
割り込み捕捉停止判定部５３の処理が終了すると、次に、割り込み捕捉停止判定部５３は、キャッシュ書き出し判定部５６を実行する。キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しない場合には（ステップＳ６３のＮＯ）、ターゲットＯＳ４の初期化が完了して十分正常な状態に入ったものと判断して、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする（ステップＳ６４）。
【０１２３】
以上の動作によって、一回の起動時における情報採取処理は全て終了し、キャッシュ書き出し判定部５６はＳＭＩハンドラにＣＰＵ１の制御を戻し、ＳＭＩハンドラはターゲットＯＳ４にＣＰＵ１の制御を戻し、ターゲットＯＳ４は、割り込みハンドラによる割り込み処理を終了させて（ステップＳ６５）、通常の処理を実行させる状態になる。以降、ターゲットＯＳ４の再起動が行われるまで、情報採取機構５は作動しない。
【０１２４】
なお、ターゲットＯＳ４は、ステップＳ６７において、起動完了を明確に定義することが難しい場合には、ＢＩＯＳコール等による通知として、正常起動完了した場合の起動完了関数を用いた通知を行わずに、異常発生時に、パニック関数を用いた関数を用いた通知を行うだけとし、その代り、ターゲットＯＳ４がリブートした際に、リブート関数等のＢＩＯＳコールを用いることとし、該ＢＩＯＳコールにより、ＢＩＯＳに制御が渡ってきた際に、ＢＩＯＳが、ステップＳ６８の割り込み捕捉停止判定部５３の処理（すなわち、各エントリに対応するＳＭＩ発行命令（フック）の削除および割り込み捕捉統計情報記憶部５４の全エントリの削除）とステップＳ６４のキャッシュ書き出し判定部５６の処理（すなわち、採取情報キャッシュ部５５の内容の書き出しと該内容のクリア）とを実行するようにしても良い。
【０１２５】
（第３の実施形態の構成例および動作例）
次に、本発明による情報処理装置の第３の実施形態における構成例および動作例について説明する。第１の実施形態および第２の実施形態においては、極力、ＯＳ依存度を抑え、如何なるＯＳが動作しても、常時情報を採取することができる情報処理装置を実現する場合について例示したが、本発明における特有の情報採取機構（第１、第２の実施形態における情報採取機構５）をＯＳ内部に直接実装するようにしても良い。本第３の実施形態においては、情報採取機構をＯＳ内に実装する場合について、図７のブロック構成図と図８のフローチャートとを用いて説明する。
【０１２６】
図７は、本発明による情報処理装置の第３の実施形態におけるブロック構成例を示すブロック構成図であり、第２の実施形態の図５に示したターゲットＯＳ４内に、情報採取機構５を直接実装している場合を示している。また、図８は、第３の実施形態として図７に示した情報処理装置の動作の一例を説明するためのフローチャートである。
【０１２７】
図８のフローチャートにおいて、ターゲットＯＳ４は、起動を開始すると、各種の初期化処理を開始し、その中で、外部デバイス３からの割り込みを受け付けられるように、ＩＤＴテーブルを作成し、ＩＤＴテーブルの先頭アドレスをＣＰＵ１のＩＤＴＲレジスタに書き込む（ステップＳ７１）。しかる後、ターゲットＯＳ４は、第１、第２の実施形態の場合とは異なり、割り込み捕捉部５１を実行する。割り込み捕捉部５１は、割り込み捕捉統計情報記憶部５４をエントリが何もない状態に初期化する。さらに、割り込み捕捉部５１は、ＩＤＴテーブルのベクタ３２以降の全エントリを参照して、各ベクタの割り込みハンドラの先頭に情報採取部５２の実行命令（フック）を埋め込むとともに、ＣＰＵ番号、ベクタ番号、割り込みハンドラアドレスの組を一つのエントリとして割り込み捕捉統計情報記憶部５４に追加し、全エントリのフック回数を‘０’に初期化する（ステップＳ７２）。
【０１２８】
割り込み捕捉部５１は以上の処理を終了すると、ターゲットＯＳ４にＣＰＵ制御を戻し、ターゲットＯＳ４は、各種の初期化処理を継続する（ステップＳ７３）。
【０１２９】
しかる後、ターゲットＯＳ４の初期化処理が各種デバイスの初期化まで進んだ状態において、デバイス３からの割り込みが上がって、当該デバイスに対応するＩＤＴエントリの割り込みハンドラが実行された際に、割り込み捕捉部５１によって埋め込まれた情報採取部５２の実行命令（フック）が実行された場合には（ステップＳ７４のＹＥＳ）、情報採取部５２が実行される。
【０１３０】
情報採取部５２は、ＩＰＩ（Inter−Processor  Interrupt）を用いて全ＣＰＵ１のＴＳＣ値やＩＰ値等のシステム全体のコンテキスト情報を採取し（ステップＳ７５）、採取情報キャッシュ部５５に保存する（ステップＳ７６）。また、情報採取部５２は、自身が動作中のＣＰＵ１のＣＰＵ番号と、当該ＣＰＵ１によって実行された情報採取部５２の実行命令のアドレス（戻り先アドレス）とを基にして、今回フックした割り込みに対応する割り込み捕捉統計情報記憶部５４ 内のエントリを参照し、該エントリのフック回数をインクリメントする（ステップＳ７７）。
【０１３１】
しかる後、情報採取部５２は、割り込み捕捉停止判定部５３を実行する。割り込み捕捉停止判定部５３は、今回フックした割り込みに対応する割り込み捕捉統計情報記憶部５４内のエントリを参照し、フック回数がフックを仕掛けた時点後つまりＣＰＵ１の起動後においてあらかじめ定めた回数閾値を超えていた場合（ステップＳ７８のＹＥＳ）、当該エントリの割り込みハンドラの先頭から情報採取部５２の実行命令（フック）を削除するとともに、エントリ自体も削除する（ステップＳ７９）。
【０１３２】
割り込み捕捉停止判定部５３の処理が終了すると、次に、割り込み捕捉停止判定部５３は、キャッシュ書き出し判定部５６を実行する。キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しない場合には（ステップＳ８０のＮＯ）、ターゲットＯＳ４の初期化が完了して十分正常な状態に入ったものと判断して、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする（ステップＳ８１）。一方、割り込み捕捉統計情報記憶部５４にエントリが存在する場合には（ステップＳ８０のＹＥＳ）、キャッシュ書き出し判定部５６は、起動動作における情報採取中と判断して、何もせずに処理を終了する。
【０１３３】
以上の動作によって、一回の割り込み契機による情報採取処理は終了し、キャッシュ書き出し判定部５６は情報採取部５２にＣＰＵ１の制御を戻し、情報採取部５２はターゲットＯＳ４にＣＰＵ１の制御を戻し、ターゲットＯＳ４は自身の割り込みハンドラによる割り込みの処理を行う（ステップＳ８２）。
【０１３４】
しかる後、情報採取部５２の実行命令（フック）が削除された割り込みハンドラに対応するデバイス３から割り込みが上がってきた場合は（ステップＳ７４のＮＯ）、情報採取機構５を一切経由することなく、ターゲットＯＳ４の割り込みハンドラが実行され、割り込みの処理を行う（ステップＳ８２）。
【０１３５】
ターゲットＯＳ４は、割り込みも処理しつつ、各種の初期化処理を継続するが （ステップＳ７３）、やがて初期化処理が完了し、正常に起動完了するか、もしくは、初期化処理の途中にパニックしてしまう（ステップＳ８３）。かかる場合、第１、第２の実施形態の場合とは異なり、ターゲットＯＳ４は、あらかじめ定めた適切なタイミングで、情報採取機構５の情報採取動作を完全に停止し、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出すために、直接、割り込み捕捉停止判定部５３を実行させる（ステップＳ８４）。割り込み捕捉停止判定部５３は、割り込み捕捉統計情報記憶部５４に登録されている全エントリを参照して、各エントリに対応する情報採取部５２の実行命令（フック）を削除するとともに、各エントリ自体も削除する（ステップＳ８５）。
【０１３６】
割り込み捕捉停止判定部５３の処理が終了すると、次に、割り込み捕捉停止判定部５３は、キャッシュ書き出し判定部５６を実行する。キャッシュ書き出し判定部５６は、割り込み捕捉統計情報記憶部５４にエントリが存在しない場合には（ステップＳ８０のＮＯ）、ターゲットＯＳ４の初期化が完了して十分正常な状態に入ったものと判断して、採取情報キャッシュ部５５の内容を情報記憶装置６に書き出し、採取情報キャッシュ部５５の内容をクリアする（ステップＳ８１）。
【０１３７】
以上の動作によって、一回の起動時における情報採取処理は全て終了し、キャッシュ書き出し判定部５６はターゲットＯＳ４にＣＰＵ１の制御を戻し、ターゲットＯＳ４は、通常の処理を実行させる状態になる。以降、ターゲットＯＳ４の再起動が行われるまで、情報採取機構５は作動しない。
【０１３８】
なお、ターゲットＯＳ４は、ステップＳ８３において、起動完了を明確に定義することが難しい場合には、ステップＳ８４において、正常起動完了した場合の情報採取機構５の情報採取動作の完全停止および割り込み捕捉停止判定部５３を実行することなく、異常発生時に、パニック関数を用いた関数を用いた通知を行うだけとし、その代り、ターゲットＯＳ４がリブートした際に、情報採取機構５の情報採取動作の完全停止およびステップＳ８５の割り込み捕捉停止判定部５３の処理（すなわち、各エントリに対応するＳＭＩ発行命令（フック）の削除および割り込み捕捉統計情報記憶部５４の全エントリの削除）とステップＳ８１のキャッシュ書き出し判定部５６の処理（すなわち、採取情報キャッシュ部５５の内容の書き出しと該内容のクリア）とを実行するようにしても良い。
【０１３９】
（第４の実施形態の構成例および動作例）
前述した第１、第２、第３の実施形態の情報処理装置においては、情報採取機構５の情報採取部５２が採取した情報は採取情報キャッシュ部５５に溜めておき、ターゲットＯＳ４の正常起動完了もしくはパニック発生の適切なタイミングで、情報記憶装置６に採取情報を書き出す構成例、動作例について説明したが、本発明は、かかる場合に限るものではない。例えば、情報記憶装置６へのアクセス速度が十分に速く、採取情報キャッシュ部５５にキャッシュすることによる性能面のメリットが少ない情報処理装置の場合には、採取情報キャッシュ部５５とキャッシュ書き出し判定部５６とを備える必要はなく、情報採取部５２が、毎回、直接、情報記憶装置６に採取情報を書き出す構成、動作としても良い。
【０１４０】
本第４の実施形態の構成例、動作例は、図９、図１０にそれぞれ示すように、情報採取部５２が、毎回、直接、情報記憶装置６に採取情報を書き出す構成、動作の一例を示すものである。つまり、図９は、本発明による情報処理装置の第４の実施形態におけるブロック構成例を示すブロック構成図であり、図１０は、第４の実施形態として図９に示した情報処理装置の動作の一例を説明するためのフローチャートである。図９の情報処理装置においては、情報採取機構５は、第１、第２、第３の実施形態の構成とは異なり、採取情報キャッシュ部５５とキャッシュ書き出し判定部５６とを省き、情報採取部５２が採取情報を、直接、情報記憶装置６に書き出す構成としている。なお、図９、図１０に示す構成や動作については、前述の各実施形態における説明から自明であるので、ここでの詳細な説明は割愛する。
【０１４１】
（第５の実施形態の構成例および動作例）
前述した第１、第２、第３、第４の実施形態の情報処理装置においては、フックを設定した時点からあるいはＣＰＵ１が起動してからあらかじめ定めた時間閾値を超えるまでの間、もしくは、フック回数がフックを仕掛けた時点後つまりＣＰＵ１の起動後においてあらかじめ定めた回数閾値を超えるまでの間、全ての外部デバイス３からの割り込みをフックして、全ＣＰＵ１のＴＳＣ値やＩＰ値などのシステム全体のコンテキスト情報を採取している場合について説明した。しかし、明らかに、情報採取が不要な割り込みベクタが分かっている場合や、情報採取が必要な割り込みベクタを特定することができている場合には、フックを仕掛けるベクタ番号のリストを、外部から指示することができるオプションを備えるような構成を用いても良い。
【０１４２】
また、前述した第１、第２、第３、第４の実施形態の情報処理装置においては、仕掛けたフックを徐々に解除している場合について説明した。しかし、フックを解除することなく、コンテキスト情報の採取を継続したい場合や、解除されたフックを（システムを再起動することなく）再度仕掛けたい場合には、かかる動作に任意のタイミングで切り替えることができる外部スイッチを情報処理装置にオプションとして付加しても良い。
【０１４３】
また、前述した第１、第２、第３、第４の実施形態の情報処理装置におけるフックを解除することに関わる閾値（フック回数に関する回数閾値や経過時間に関する時間閾値）、あるいは、第１の実施形態における周期的なＳＭＩ割り込みの発生間隔等のパラメータについて、外部からオプションとして任意の値に設定することができるように実装しても良い。
【０１４４】
以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
【符号の説明】
【０１４５】
１      ＣＰＵ
２      メモリ
３      デバイス
４      ターゲットＯＳ
５      情報採取機構
６      情報記憶装置
１１    ＣＰＵ
１２    ＣＰＵ
１ｎ    ＣＰＵ
５１    割り込み捕捉部
５２    情報採取部
５３    割り込み捕捉停止判定部
５４    割り込み捕捉統計情報記憶部
５５    採取情報キャッシュ部
５６    キャッシュ書き出し判定部
【図１】
2016184204.tif 000003
【図２】
2016184204.tif 000004
【図３】
2016184204.tif 000005
【図４】
2016184204.tif 000006
【図５】
2016184204.tif 000007
【図６】
2016184204.tif 000008
【図７】
2016184204.tif 000009
【図８】
2016184204.tif 000010
【図９】
2016184204.tif 000011
【図１０】
2016184204.tif 000012