JP4859546B2 - コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム - Google Patents

コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム Download PDF

Info

Publication number
JP4859546B2
JP4859546B2 JP2006159863A JP2006159863A JP4859546B2 JP 4859546 B2 JP4859546 B2 JP 4859546B2 JP 2006159863 A JP2006159863 A JP 2006159863A JP 2006159863 A JP2006159863 A JP 2006159863A JP 4859546 B2 JP4859546 B2 JP 4859546B2
Authority
JP
Japan
Prior art keywords
user
kernel
trace data
side trace
trace
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006159863A
Other languages
English (en)
Other versions
JP2007328597A (ja
Inventor
吉章 片山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2006159863A priority Critical patent/JP4859546B2/ja
Publication of JP2007328597A publication Critical patent/JP2007328597A/ja
Application granted granted Critical
Publication of JP4859546B2 publication Critical patent/JP4859546B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、ソフトウェアのトレースデータを蓄積するコンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラムに関するものである。
汎用パーソナルコンピュータ(PC:Personal Computer)や組込み機器などのコンピュータシステム(以下、システムとする)においては、障害発生時にシステム全体のソフトウェアの動作履歴を把握するため、トレースデータを蓄積する。ただし、トレースデータ蓄積を行うとソフトウェアの動作が遅くなるため、トレースデータ蓄積をするか否かを表すスイッチ(蓄積要否フラグ)をシステム内に設け、製品リリース時にはトレースデータ蓄積機能を無効にしていた(例えば、特許文献1)。
ところが、上記システムのうち、メモリ保護機能を持つOS(Operating System)上で動作するソフトウェアは、一般的にユーザモード(非特権モードともいう)とカーネルモード(特権モード、スーパバイザモードともいう)とのどちらかのモードで動作する。ユーザモードは、実行可能なCPU(Central Processing Unit)命令が制限され、かつメモリ保護機能が有効な状態である。アプリケーションソフトウェア(以下、アプリケーションとする)などがこのユーザモードで動作する。ユーザモードにおいては、一般的にアプリケーション毎にメモリ空間が割り当てられ、異なるメモリ空間で動作する他のアプリケーションのデータには直接アクセスできないようにOSによりメモリ保護されている。カーネルモードは、上述したCPU命令の制限を持たない状態であり、OS自身やデバイスドライバなどがこのカーネルモードで動作する。
このようなシステムにおいては、カーネルモード側に上記蓄積要否フラグとトレースデータを蓄積するためのトレースバッファとを具備し、OSを介してユーザモードからカーネルモードへ動作モードを一旦遷移することにより、カーネルモード側の蓄積要否フラグやトレースバッファを用いて、ユーザモードソフトウェアのトレースデータを蓄積していた。
また他のシステムにおいては、蓄積要否フラグとトレースバッファとをユーザモードとカーネルモードとの双方に具備し、ユーザモードとカーネルモードとでおのおの個別にトレースデータを蓄積していた。
特開2002−149444号公報 (第2頁、段落[0002])
しかし、前者の場合、蓄積要否フラグがカーネルモード側に具備されているため、ユーザモードソフトウェアは、トレースデータ蓄積機能の有効・無効を蓄積要否フラグを参照して判定する度に、OSのシステムコールを介してカーネルモードへ遷移する必要がある。そのため、前者のシステムにはユーザモードソフトウェアのトレース蓄積にかかるオーバヘッドが大きくなってしまうという課題があった。
また、後者の場合、ユーザモードソフトウェアとカーネルモードソフトウェアとがそれぞれのトレースバッファにトレースデータを蓄積するため、システム全体の動作履歴を把握するには、ユーザモードとカーネルモードとの双方で蓄積したトレースデータをマージし、発生順に並び替えてトレースデータを参照する必要がある。このトレースデータを発生順に並び替える方法として、システムに搭載された高精度ハードウェアタイマのカウンタ値をトレースデータに埋め込んでおくことが考えられる。ただし、実装コストや消費電力など制限の多い組込み機器などでは、高精度ハードウェアタイマを搭載していない、もしくは高精度ハードウェアタイマを常時利用できないという場合が多く、このトレースデータの発生順の並び替え方法は使えなかった。また、使用するハードウェアタイマが低精度である場合、ユーザモードのトレースデータとカーネルモードのトレースデータとが同一の発生時刻を示し、トレースデータを正確な発生順に並び替えられないということが考えられる。つまり、後者のシステムには、時系列のトレースデータを得るために、高コスト・高消費電力になるという課題があった。
この発明は、個々の動作モードおよびソフトウェアのトレースデータの時系列を維持するための特別なハードウェア装置を具備していないコンピュータシステムにおいて、例えば、上記のような課題点を解決するためになされたものである。
例えば、本発明は、ユーザモードソフトウェアとカーネルモードソフトウェアとの双方で発生したトレースデータの時系列を維持することと、ユーザモードソフトウェアのトレースにかかるオーバヘッドを削減することとの双方を実現することを目的とする。
本発明のコンピュータシステムは、システムが提供する機能を実行するカーネルモードで使用するカーネル側メモリに記憶したカーネル側トレース制御情報に基づいて、システムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータを記憶するコンピュータシステムであり、ユーザモードで使用され、前記カーネル側メモリにおける前記カーネル側トレース制御情報の記憶域を示す制御情報アドレスを記憶したユーザ側メモリと、前記カーネル側メモリにユーザ側トレースデータを記憶するカーネル側トレース出力部と、前記ユーザ側メモリに記憶された前記制御情報アドレスが示す前記カーネル側メモリにおける記憶域に記憶された前記カーネル側トレース制御情報を参照し、参照した前記カーネル側トレース制御情報が示す蓄積要否フラグに基づいてユーザ側トレースデータの蓄積要否を判定するユーザ側トレース制御部と、前記ユーザ側トレース制御部がユーザ側トレースデータの蓄積要と判定した場合に前記カーネル側トレース出力部を呼び出すユーザ側トレース出力代行部とを備え、前記カーネル側トレース出力部は前記ユーザ側トレース出力代行部から呼び出された際にユーザ側トレースデータを前記カーネル側メモリに記憶することを特徴とする。
本発明によれば、例えば、ユーザモードソフトウェアとカーネルモードソフトウェアとの双方で発生したトレースデータの時系列を維持することと、ユーザモードソフトウェアのトレースにかかるオーバヘッドを削減することとの双方を実現するコンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラムを提供することができる。
実施の形態1.
実施の形態1では、カーネルモードのトレースデータとユーザモードのトレースデータとを蓄積するコンピュータシステムにおいて、カーネル側メモリに記憶したカーネル側トレース制御情報の記憶域を示す制御情報アドレスをユーザ側メモリに記憶することで、カーネルモードに遷移することなくユーザモードでトレースデータの蓄積要否を判定する実施形態を示す。
カーネルモードは特権モードやスーパバイザモードとも呼ばれるコンピュータシステムの動作モードの一つであり、コンピュータシステムが提供する機能である特定のCPU命令はカーネルモードでのみ実行される。
ユーザモードは、非特権モードとも呼ばれるコンピュータシステムの動作モードの一つであり、実行可能なCPU命令が制限され、また、カーネルモードで使用されるメモリやユーザモードで動作する他のソフトウェアプログラムが使用するメモリへのアクセスが制限される。そのため、制限されたCPU命令の実行および制限されたメモリへのアクセスが必要な場合、ユーザモードではシステムコールを行うことでOSを介してカーネルモードへ遷移して制限されたメモリへアクセスする。
以下、カーネルモードで使用されるメモリをカーネル側メモリ、カーネルモードで動作するソフトウェアプログラムをカーネルモードソフトウェア(または、カーネルモードソフトウェアプログラム)、カーネルモードで発生しカーネルモードソフトウェアの動作履歴を示すトレースデータをカーネル側トレースデータとする。
また、ユーザモードで使用されるメモリをユーザ側メモリ、ユーザモードで動作するソフトウェアプログラムをユーザモードソフトウェア(または、ユーザモードソフトウェアプログラム)、ユーザモードで発生しユーザモードソフトウェアの動作履歴を示すトレースデータをユーザ側トレースデータとする。
また、カーネル側トレースデータとユーザ側トレースデータとの少なくともいずれかを含むトレースデータをシステムトレースデータとする。
カーネル側メモリおよびユーザ側メモリは実メモリと仮想メモリとのいずれであってもよく、実メモリおよび仮想メモリの記憶域はバッファやメモリ空間ともいう。
また、特定の記憶域を示すアドレス(制御情報アドレス)を記憶する処理の一例としてメモリマッピングがあり、メモリマッピングでは主に仮想メモリのアドレスと実メモリのアドレスとを対応付けて記憶する。メモリマッピングを行うことにより、各アプリケーションは仮想メモリのアドレスを用いて実メモリにアクセスすることができる。以下で説明するメモリマッピングでは、ユーザ側トレース制御情報7(図1参照)の記憶域を示すアドレスとカーネル側トレース制御情報6(図1参照)の記憶域を示すアドレス(制御情報アドレス)とが対応付けられて、システムのメモリ保護ユニット(MMU:Memory Management Unit)の記憶域に記憶されるものとする。ここで、メモリマッピングによりユーザ側トレース制御情報7の記憶域を示すアドレスがカーネル側トレース制御情報6の記憶域を示す制御情報アドレスにMMUの記憶域において対応付けられることも、ユーザ側メモリ192がカーネル側トレース制御情報6の記憶域を示す制御情報アドレスを記憶することに含めるものとする。
また、アプリケーションやアプリケーションプログラムなどと呼ばれるソフトウェアはユーザモードソフトウェアの一例であり、OSはカーネルモードソフトウェアの一例である。
コンピュータシステムは、単に、コンピュータまたはシステムともいう。
ソフトウェアプログラムは、単に、ソフトウェアまたはプログラムともいう。
図1は、実施の形態1におけるコンピュータシステム1の構成図である。
図1において、コンピュータシステム1は、組込み機器など、コンピュータシステム1を有する又は使用する機械も意味するものとする。
OS実行部2はメモリ保護機能などの機能を持つOSを実行する。
ユーザモードソフトウェア実行部3は、アプリケーションソフトウェアなどのユーザモードで動作するユーザモードソフトウェアを実行する。
カーネルモードソフトウェア実行部4は、デバイスドライバなどのカーネルモードで動作するカーネルモードソフトウェアを実行する。
カーネル側トレースバッファ5(第1のカーネル側メモリ)はカーネルモードソフトウェア実行部4から出力されたカーネル側トレースデータとユーザモードソフトウェア実行部3から出力されたユーザ側トレースデータとのシステムトレースデータを蓄積する。
カーネル側トレース制御情報6は、トレースデータを蓄積するか否かの情報(以下、蓄積要否フラグとする)を含み、カーネル側メモリ194(第2のカーネル側メモリ)に記憶される。
ユーザ側トレース制御情報7はユーザモードのメモリ空間(ユーザ側メモリ192[第2のユーザ側メモリ])にメモリマッピングされたカーネル側トレース制御情報6(制御情報アドレス)を示す。
カーネル側トレース初期化部8はカーネル側トレース制御情報6を初期化する。
トレース制御情報マップ部9は、カーネル側トレース初期化部8から呼び出され、カーネル側トレース制御情報6をユーザ側トレース制御情報7としてメモリマッピングする。
カーネル側トレース出力部10はカーネル側トレースバッファ5へシステムトレースデータを書き込む。
カーネル側トレース制御部11は、カーネル側トレース制御情報6を参照し、カーネル側トレース出力部10を呼び出すか否かを判断する。
ユーザ側トレース出力代行部12はカーネル側トレースバッファ5へユーザ側トレースデータを書き込むためにカーネル側トレース出力部10を呼び出す。
ユーザ側トレース制御部13は、ユーザ側トレース制御情報7を参照し、ユーザ側トレース出力代行部12を呼び出すか否かを判断する。
カーネルモードソフトウェア実行部4、カーネル側トレース制御部11、カーネル側トレース出力部10、トレース制御情報マップ部9およびカーネル側トレース初期化部8は、CPU911を用いて、OSの拡張部であるカーネルモードソフトウェアもしくはOSとは独立したカーネルモードソフトウェアとして実行される。
図2は、実施の形態1におけるコンピュータシステム1のハードウェア資源の一例を示す図である。
図2において、コンピュータシステム1は、プログラムを実行するCPU911(中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
RAM914は、揮発性メモリの一例である。ROM913、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶機器、記憶装置あるいは記憶部の一例である。
通信ボード915は、入出力機器、入出力装置あるいは入出力部の一例である。
通信ボード915は、有線または無線で、LAN(Local Area Network)、インターネット、ISDN等のWAN(ワイドエリアネットワーク)、電話回線などの通信網に接続されている。
磁気ディスク装置920には、OS921(オペレーティングシステム)、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、OS921により実行される。
上記プログラム群923には、実施の形態において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態において、「〜部」の機能を実行した際の「〜の判定結果」、「〜の計算結果」、「〜の処理結果」などの結果データ、「〜部」の機能を実行するプログラム間で受け渡しするデータ、その他の情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。例えば、ユーザ側トレース制御情報7、カーネル側トレース制御情報6、システムトレースデータなどが記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、実施の形態において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、磁気ディスク装置920の磁気ディスク、その他の記録媒体に記録される。また、データや信号値は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスクやその他の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、トレースデータ蓄積プログラムは、「〜部」としてコンピュータを機能させるものである。あるいは、「〜部」の手順や方法をコンピュータに実行させるものである。
次に、コンピュータシステム1におけるトレースデータ蓄積方法の動作について説明する。
実施の形態1におけるコンピュータシステム1は以下に説明するシステム初期化処理(図3参照)、カーネル側トレース出力処理(図4参照)およびユーザ側トレース出力処理(図5参照)を実行することによりシステムトレースデータの蓄積を行う。
図3は、実施の形態1におけるコンピュータシステム1が実行するシステム初期化処理を示すフローチャートである。
まずは、コンピュータシステム1がトレース機能を起動する際に実行するシステムの初期化処理の動作について、図3に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
OS実行部2はシステム起動時もしくはトレース機能利用開始時にカーネル側トレース初期化部8を呼び出す(S100)。
カーネル側トレース初期化部8は、OS実行部2から呼び出されると、カーネル側メモリ194においてカーネル側トレース制御情報6を初期化する(S101)。
また、カーネル側トレース初期化部8はカーネル側トレースバッファ5も初期化する(S102)。
次に、カーネル側トレース初期化部8はトレース制御情報マップ部9を呼び出す(S103)。
トレース制御情報マップ部9は、システム(通常はCPU911)が具備しているメモリ保護ユニットを用いて、もしくはOS実行部2が提供するMMU操作に関するシステムコールを用いて、カーネル側トレース制御情報6をユーザモードのメモリ空間(ユーザ側メモリ192)にユーザ側トレース制御情報7としてメモリマッピングする(S104:制御情報アドレス記憶処理)。
なお、コンピュータシステム1は、ユーザモードソフトウェアが複数起動されユーザモードソフトウェア毎にメモリ空間を割り当てるなどにより、ユーザモードに複数のメモリ空間が存在する場合、全てのユーザモードソフトウェアで共通に使用するメモリ領域にカーネル側トレース制御情報6をメモリマッピングすればよい。また、コンピュータシステム1は個々のメモリ空間上にカーネル側トレース制御情報6をメモリマッピングしてもよい。なお、OS実行部2によって新たなユーザモードのメモリ空間が生成された場合には、トレース制御情報マップ部9はその都度呼び出され、新たに生成されたメモリ空間に対してもカーネル側トレース制御情報6をメモリマッピングするものとする。
図4は、実施の形態1におけるコンピュータシステム1が実行するカーネル側トレース出力処理を示すフローチャートである。
次に、カーネルモードソフトウェアのトレースデータ(カーネル側トレースデータ)を出力する際の動作について、図4に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
カーネルモードソフトウェア実行部4は、カーネルモードソフトウェアの実行に際して発生したカーネル側トレースデータを出力するために、カーネル側トレース制御部11を呼び出す(S111)。
カーネル側トレース制御部11では、カーネル側トレース制御情報6に含まれる蓄積要否フラグを参照してカーネル側トレースデータの蓄積要否を判定する(S112:カーネル側トレース制御処理)。
カーネル側トレースデータを蓄積すると判定した場合、カーネル側トレース制御部11はカーネル側トレース出力部10を呼び出す(S113)。
カーネル側トレース出力部10はカーネル側トレースデータをカーネル側トレースバッファ5に書き込み、カーネルモードソフトウェア実行部4はカーネル側トレース出力処理を終了する。カーネル側トレース出力部10は、カーネル側トレースデータの書き込みを、カーネル側トレースバッファ5において書き込み済みのシステムトレースデータの後ろに行って、システムトレースデータの時系列を確保する(S114:カーネル側トレース出力処理)。
S112において、カーネル側トレースデータを蓄積しないと判定した場合、カーネル側トレース制御部11は呼び出し元であるカーネルモードソフトウェア実行部4に処理を戻し、カーネルモードソフトウェア実行部4はカーネル側トレース出力処理を終了する。
図5は、実施の形態1におけるコンピュータシステム1が実行するユーザ側トレース出力処理を示すフローチャートである。
次に、ユーザモードソフトウェアのトレースデータ(ユーザ側トレースデータ)を出力する際の動作について、図5に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
ユーザモードソフトウェア実行部3は、ユーザモードソフトウェアの実行に際して発生したユーザ側トレースデータを出力するために、ユーザ側トレース制御部13を呼び出す(S121)。
ユーザ側トレース制御部13では、ユーザ側メモリ192においてユーザ側トレース制御情報7を参照することにより、ユーザ側トレース制御情報7にメモリマッピングされたカーネル側トレース制御情報6に含まれる蓄積要否フラグを参照する。そして、ユーザ側トレース制御部13は蓄積要否フラグに基づいてユーザ側トレースデータの蓄積要否を判定する(S122:ユーザ側トレース制御処理)。
ユーザ側トレースデータを蓄積すると判定した場合、ユーザ側トレース制御部13はユーザ側トレース出力代行部12を呼び出す(S123)。
ユーザ側トレース出力代行部12は、ユーザ側トレースデータをカーネル側トレースバッファ5に書き込むために、OS実行部2を介してカーネル側トレース出力部10を呼び出す(S124:ユーザ側トレース出力代行処理)。
そして、カーネル側トレース出力部10はユーザ側トレースデータをカーネル側トレースバッファ5に書き込み、ユーザモードソフトウェア実行部3はユーザ側トレース出力処理を終了する。カーネル側トレース出力部10は、ユーザ側トレースデータの書き込みを、カーネル側トレースバッファ5において書き込み済みのシステムトレースデータの後ろに行って、システムトレースデータの時系列を確保する(S125:ユーザ側トレース出力処理)。
S122において、ユーザ側トレースデータを蓄積しないと判定した場合、ユーザ側トレース制御部13は呼び出し元であるユーザモードソフトウェア実行部3に処理を戻し、ユーザモードソフトウェア実行部3はユーザ側トレース出力処理を終了する。
本実施の形態において、以下の手段を備えたシステムトレースデータ蓄積方式について説明した。
(a)カーネルモードソフトウェアやオペレーティングシステムを動作させるカーネルモード側に具備した、トレースデータ蓄積をするか否かを表す蓄積要否フラグを含むカーネル側トレース制御情報6を、ユーザモードで動作するユーザモードソフトウェアが直接アクセス可能なメモリ空間であるユーザ側メモリ192にメモリマッピングするトレース制御情報マップ部9。
(b)上記トレース制御情報マップ部9によってメモリマッピングされたユーザ側トレース制御情報7を直接参照し、ユーザ側トレースデータの蓄積をするか否かを判断するユーザ側トレース制御部13。
(c)上記ユーザ側トレース制御部13によって蓄積要と判断された場合に呼び出され、カーネル側トレースバッファ5にユーザ側トレースデータを書き込むために、カーネル側トレース出力部10を呼び出すユーザ側トレース出力代行部12。
以上のように本実施の形態によれば、システムで唯一のカーネル側トレースバッファ5にユーザモードソフトウェアとカーネルモードソフトウェアとの双方のトレースデータを発生順に書き込むことにより、システムトレースデータの時系列を維持することができる。
また、本実施の形態では、カーネル側トレース制御情報6をユーザ側トレース制御情報7にメモリマッピングすることによって、カーネル側トレース制御情報6に含まれる蓄積要否フラグをユーザモードから直接参照可能にする。これにより、ユーザ側トレースデータの蓄積要否を判定するためにユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態では、ユーザモードソフトウェアが複数動作中であっても、カーネル側トレース制御情報6の蓄積要否フラグを書き換えるだけで、全てのユーザモードソフトウェアに対してシステムトレースデータの蓄積要否を変更することができる。
実施の形態2.
以上の実施の形態1では、トレース制御情報マップ部9によりカーネル側トレース制御情報6をユーザ側トレース制御情報7にメモリマッピングする実施形態を示したが、実施の形態2では、メモリマッピングを使わず、カーネル側トレース制御情報6の内容をユーザ側トレース制御情報7に複写する実施形態を示す。
以下、実施の形態1と異なる事項について説明し、説明しない事項は実施の形態1と同様である。
図6は、実施の形態2におけるコンピュータシステム1の構成図である。
図1と同一符号の構成は同一又は相当部分を示す。
図6において、トレース制御情報アドレス表14はユーザ側トレース制御情報7のメモリアドレスを1つもしくは複数有し、カーネル側メモリ195に格納される。
トレース制御情報複写部15は、トレース制御情報アドレス表14をもとに、カーネル側トレース制御情報6をユーザ側トレース制御情報7に複写する。
トレース制御情報変更部16はカーネル側トレース制御情報6を変更する機能とカーネル側トレース制御情報6を変更したことをトレース制御情報複写部15に通知する機能とを具備する。
トレース制御情報アドレス登録部17はトレース制御情報アドレス表14にユーザ側トレース制御情報7のメモリアドレスを登録する。
ユーザ側トレース初期化部18はユーザモードソフトウェア実行部3がユーザ側トレース制御部13を呼び出す前に実行される。
トレース制御情報複写部15、トレース制御情報変更部16およびトレース制御情報アドレス登録部17は、CPU911を用いて、OSの拡張部であるカーネルモードソフトウェアもしくはOSとは独立したカーネルモードソフトウェアとして実行される。
次に、コンピュータシステム1におけるトレースデータ蓄積方法の動作について説明する。
まずは、コンピュータシステム1がトレース機能を起動する際に実行するシステムの初期化処理の動作について説明する。コンピュータシステム1は以下に説明するカーネルモード初期化処理(図7参照)およびユーザモードソフトウェア初期化処理(図8参照)を実行することによりシステムの初期化を行う。
図7は、実施の形態2におけるコンピュータシステム1が実行するカーネルモード初期化処理を示すフローチャートである。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
OS実行部2はシステム起動時もしくはトレース機能利用開始時にカーネル側トレース初期化部8を呼び出す(S200)。
カーネル側トレース初期化部8は、OS実行部2から呼び出されると、カーネル側トレース制御情報6を初期化する(S201)。
また、カーネル側トレース初期化部8はカーネル側トレースバッファ5も初期化する(S202)。
さらに、カーネル側トレース初期化部8はトレース制御情報アドレス表14も初期化する(S203)。
図8は、実施の形態2におけるコンピュータシステム1が実行するユーザモードソフトウェア初期化処理を示すフローチャートである。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
ユーザモードソフトウェア実行部3は、ユーザ側トレースデータの蓄積を開始する際、ユーザ側トレース制御部13を呼び出す前に一度、ユーザ側トレース初期化部18を呼び出す(S211)。
ユーザ側トレース初期化部18は、動作中のユーザモードソフトウェアの各々に対して、ユーザ側トレース制御情報7に使用するメモリをユーザ側メモリ192に確保し、確保したメモリにおいてユーザ側トレース制御情報7の初期化を行う(S212)。
次に、ユーザ側トレース初期化部18は、OS実行部2を介して、全てのユーザ側トレース制御情報7のメモリアドレスをトレース制御情報アドレス登録部17に通知する(S213)。
トレース制御情報アドレス登録部17は通知されたユーザ側トレース制御情報7のメモリアドレスをトレース制御情報アドレス表14に加える(S214)。
次に、トレース制御情報アドレス登録部17はトレース制御情報複写部15を呼び出す(S215)。
トレース制御情報複写部15はトレース制御情報アドレス表14を参照する(S216)。
そして、トレース制御情報複写部15は、トレース制御情報アドレス表14に登録されたすべてのメモリアドレスについて、ユーザ側トレース制御情報7にカーネル側トレース制御情報6を複写する(S217:ユーザ側トレース制御情報記憶処理)。
なお、ユーザモードソフトウェアが終了する際には、ユーザモードソフトウェア実行部3はユーザ側トレース初期化部18を介して当該ユーザ側トレース制御情報7に使用したメモリを解放し、トレース制御情報アドレス登録部17を介してトレース制御情報アドレス表14に登録された当該ユーザ側トレース制御情報7のメモリアドレスを削除するものとする。
また、新たにユーザモードソフトウェアを起動する際には、コンピュータシステム1は新たに起動したユーザモードソフトウェアについて、上記処理(S211〜S217)を実行するものとする。
カーネルモードソフトウェアのトレースデータを出力する際の動作(カーネル側トレース出力処理)については、実施の形態1(図4)と同じであるため、説明を省略する。
ユーザモードソフトウェアのトレースデータを出力する際の動作(ユーザ側トレース出力処理)についても、実施の形態1(図5)と同じであるため、説明を省略する。
図9は、実施の形態2におけるコンピュータシステム1が実行するユーザ側トレース制御情報更新処理を示すフローチャートである。
次に、ユーザモードソフトウェアの実行中におけるシステムトレースデータの蓄積要否の変更について、図9に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
システムトレースデータの蓄積要否を変更する際、カーネルモードソフトウェア実行部4はカーネル側トレース制御部11を呼び出す(S221)。
カーネル側トレース制御部11はトレース制御情報変更部16を呼び出す(S222)。
トレース制御情報変更部16はカーネル側トレース制御情報6のシステムトレースデータの蓄積要否フラグを書き換える(S223)。
次に、トレース制御情報変更部16はトレース制御情報複写部15を呼び出す(S224)。
トレース制御情報複写部15はトレース制御情報アドレス表14を参照する(S225)。
そして、トレース制御情報複写部15は、トレース制御情報アドレス表14に登録されたすべてのメモリアドレスについて、ユーザ側トレース制御情報7にカーネル側トレース制御情報6を複写する(S226:トレース制御情報複写処理)。
本実施の形態において、以下の手段を備えたシステムトレースデータ蓄積方式について説明した。
(a)蓄積要否フラグを含むトレース制御情報を、ユーザモードのメモリ空間であるユーザ側メモリ192に確保して初期化し、そのユーザ側メモリ192のメモリアドレスをトレース制御情報アドレス登録部17に通知するユーザ側トレース初期化部18。
(b)上記ユーザ側トレース初期化部18によって確保・初期化されたユーザ側トレース制御情報7を直接参照し、ユーザ側トレースデータの蓄積をするか否かを判断するユーザ側トレース制御部13。
(c)上記ユーザ側トレース制御部13によって蓄積要と判断された場合に呼び出され、カーネル側トレースバッファ5にユーザ側トレースデータを書き込むために、カーネル側トレース出力部10を呼び出すユーザ側トレース出力代行部12。
(d)ユーザ側トレース初期化部18から通知されたユーザ側トレース制御情報7のメモリアドレスをトレース制御情報アドレス表14に登録するトレース制御情報アドレス登録部17。
(e)カーネル側トレース制御情報6を変更する機能を具備し、変更したことをトレース制御情報複写部15に通知するトレース制御情報変更部16。
(f)トレース制御情報アドレス登録部17によってトレース制御情報アドレス表14が変更された時や、トレース制御情報変更部16によってカーネル側トレース制御情報6が変更された時に呼び出され、カーネル側トレース制御情報6をトレース制御情報アドレス表14に記載のメモリアドレス先のメモリに複写するトレース制御情報複写部15。
以上のように本実施の形態によれば、システムで唯一のカーネル側トレースバッファ5にユーザモードソフトウェアとカーネルモードソフトウェアとの双方のトレースデータを発生順に書き込むことにより、システムトレースデータの時系列を維持することができる。
また、本実施の形態では、カーネル側トレース制御情報6をユーザ側トレース制御情報7に複写することによって、カーネル側トレース制御情報6に含まれる蓄積フラグをユーザモードから直接参照可能にする。これにより、MMUを直接操作するとOSとの間で不都合が生じる場合やOSがMMU操作に関するシステムコールを提供していない場合などにおいても、ユーザ側トレースデータの蓄積要否を判定するためにユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態では、新たに動作させたユーザモードソフトウェアについてもユーザ側トレースデータを時系列に蓄積することができ、ユーザモードソフトウェアの動作中にシステムトレースデータの蓄積要否を変更することができる。
実施の形態3.
以上の実施の形態1では、カーネル側トレースデータとユーザ側トレースデータとを蓄積する領域としてカーネル側トレースバッファ5を唯一具備することによりシステムトレースデータの時系列を維持する実施形態を示したが、実施の形態3では、カーネル側トレースバッファ5と1つのユーザ側トレースバッファとを具備してシステムトレースデータの時系列を維持する実施形態を示す。
以下、実施の形態1と異なる事項について説明し、説明しない事項は実施の形態1と同様である。
図10は、実施の形態3におけるコンピュータシステム1の構成図である。
図1、図6と同一符号の構成は同一又は相当部分を示す。
図10において、ユーザ側トレースバッファ19(第1のユーザ側メモリ)はユーザモードソフトウェア実行部3から出力されたユーザ側トレースデータを蓄積する。
ユーザ側トレース出力部20はユーザ側トレースバッファ19へユーザ側トレースデータを書き込む。
トレースデータ移動部21はユーザ側トレースバッファ19からユーザ側トレースデータを取得し、取得したユーザ側トレースデータをカーネル側トレースバッファ5に書き込む。
トレースデータ移動部21は、CPU911を用いて、OSの拡張部であるカーネルモードソフトウェアもしくはOSとは独立したカーネルモードソフトウェアとして実行される。
次に、コンピュータシステム1におけるトレースデータ蓄積方法の動作について説明する。
図11は、実施の形態3におけるコンピュータシステム1が実行するシステム初期化処理を示すフローチャートである。
まずは、コンピュータシステム1がトレース機能を起動する際に実行するシステムの初期化処理の動作について、図11に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
<カーネルモード初期化処理:S300〜S304>
OS実行部2はシステム起動時もしくはトレース機能利用開始時にカーネル側トレース初期化部8を呼び出す(S300)。
カーネル側トレース初期化部8は、OS実行部2から呼び出されると、カーネル側トレース制御情報6を初期化する(S301)。
また、カーネル側トレース初期化部8はカーネル側トレースバッファ5も初期化する(S302)。
次に、カーネル側トレース初期化部8はトレース制御情報マップ部9を呼び出す(S303)。
トレース制御情報マップ部9は、システム(通常はCPU911)が具備しているメモリ保護ユニット(MMU)を用いて、もしくはOS実行部2が提供するMMU操作に関するシステムコールを用いて、カーネル側トレース制御情報6をユーザモードのメモリ空間(ユーザ側メモリ192)にメモリマッピングする(S304:制御情報アドレス記憶処理)。
<ユーザモード初期化処理:S311〜S314>
次に、ユーザモードソフトウェア実行部3は、ユーザ側トレースデータの蓄積を開始する際、ユーザ側トレース制御部13を呼び出す前に一度、ユーザ側トレース初期化部18を呼び出す(S311)。
ユーザ側トレース初期化部18はユーザ側トレースバッファ19のメモリ確保・初期化を行う(S312)。
次に、ユーザ側トレース初期化部18は、OS実行部2を介して、ユーザ側トレースバッファ19のメモリアドレスをトレースデータ移動部21に通知する(S313)。
トレースデータ移動部21は通知されたユーザ側トレースバッファ19のメモリアドレスを記憶する(S314)。
図12は、実施の形態3におけるコンピュータシステム1が実行するカーネル側トレース出力処理を示すフローチャートである。
次に、カーネルモードソフトウェアのトレースデータ(カーネル側トレースデータ)を出力する際の動作について、図12に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
カーネルモードソフトウェア実行部4は、カーネルモードソフトウェアの実行に際して発生したカーネル側トレースデータを出力するために、カーネル側トレース制御部11を呼び出す(S321)。
カーネル側トレース制御部11では、カーネル側トレース制御情報6に含まれる蓄積要否フラグを参照してカーネル側トレースデータの蓄積要否を判定する(S322:カーネル側トレース制御処理)。
カーネル側トレースデータを蓄積すると判定した場合、カーネル側トレース制御部11はトレースデータ移動部21を呼び出す(S323)。
トレースデータ移動部21は、S314で記憶したメモリアドレスが示すユーザ側トレースバッファ19からその時点で蓄積完了したユーザ側トレースデータを取得する(S324)。
そして、トレースデータ移動部21は取得したユーザ側トレースデータをカーネル側トレースバッファ5へ書き込む。トレースデータ移動部21は、ユーザ側トレースデータの書き込みを、カーネル側トレースバッファ5において書き込み済みのシステムトレースデータの後ろに行って、システムトレースデータの時系列を確保する(S325:ユーザ側トレースデータ移動処理)。
その後、カーネル側トレース制御部11はカーネル側トレース出力部10を呼び出す(S326)。
そして、カーネル側トレース出力部10はカーネル側トレースデータをカーネル側トレースバッファ5に書き込み、カーネルモードソフトウェア実行部4はカーネル側トレース出力処理を終了する。カーネル側トレース出力部10は、カーネル側トレースデータの書き込みを、カーネル側トレースバッファ5において書き込み済みのシステムトレースデータの後ろに行って、システムトレースデータの時系列を確保する(S327:カーネル側トレース出力処理)。
S322において、カーネル側トレースデータを蓄積しないと判定した場合、カーネル側トレース制御部11は呼び出し元であるカーネルモードソフトウェア実行部4に処理を戻し、カーネルモードソフトウェア実行部4はカーネル側トレース出力処理を終了する。
図13は、実施の形態3におけるコンピュータシステム1が実行するユーザ側トレース出力処理を示すフローチャートである。
次に、ユーザモードソフトウェアのトレースデータ(ユーザ側トレースデータ)を出力する際の動作について、図13に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
ユーザモードソフトウェア実行部3は、ユーザモードソフトウェアの実行に際して発生したユーザ側トレースデータを出力するために、ユーザ側トレース制御部13を呼び出す(S331)。
ユーザ側トレース制御部13では、ユーザ側トレース制御情報7にメモリマッピングされたカーネル側トレース制御情報6に含まれる蓄積要否フラグを参照してユーザ側トレースデータの蓄積要否を判定する(S332:ユーザ側トレース制御処理)。
ユーザ側トレースデータを蓄積すると判定した場合、ユーザ側トレース制御部13はユーザ側トレース出力部20を呼び出す(S333)。
ユーザ側トレース出力部20はユーザ側トレースデータをユーザ側トレースバッファ19に書き込む。ユーザ側トレース出力部20は、ユーザ側トレースデータの書き込みを、ユーザ側トレースバッファ19において書き込み済みのユーザ側トレースデータの後ろに行って、ユーザ側トレースデータの時系列を確保する(S334:ユーザ側トレース出力処理)。
S332において、ユーザ側トレースデータを蓄積しないと判定した場合、ユーザ側トレース制御部13は呼び出し元であるユーザモードソフトウェア実行部3に処理を戻し、ユーザモードソフトウェア実行部3はユーザ側トレース出力処理を終了する。
なお、ユーザモードソフトウェアが終了する際には、ユーザモードソフトウェア実行部3は、ユーザ側トレース初期化部18を介して、ユーザ側トレースバッファ19を解放し、トレースデータ移動部21に記憶されているユーザ側トレースバッファ19のメモリアドレスを無効にする。また、ユーザ側トレース初期化部18は、ユーザ側トレースバッファ19を解放する前に,OS実行部2を介してトレースデータ移動部21に通知することで,ユーザ側トレースバッファ19に残存するトレースデータをカーネル側トレースバッファ5に移動することができる。
また、S325において、トレースデータ移動部21は、ユーザ側トレースバッファ19のメモリアドレスが未通知または無効な場合、何も処理を行わない。
上記の説明ではコンピュータシステム1はユーザ側トレースデータの蓄積要否の判定を、実施の形態1と同様に、カーネル側トレース制御情報6をメモリマッピングしたユーザ側トレース制御情報7を使用しているが、コンピュータシステム1は、実施の形態2と同様に、カーネル側トレース制御情報6を複製したユーザ側トレース制御情報7を使用してもよい。
本実施の形態において、以下の手段を備えたシステムトレースデータ蓄積方式について説明した。
(a)ユーザ側トレースバッファ19をユーザモードのメモリ空間に確保して初期化し、そのユーザ側トレースバッファ19のメモリアドレスをトレースデータ移動部21に通知するユーザ側トレース初期化部18。
(b)カーネルモードソフトウェア実行部4から呼び出された時、トレースデータ移動部21を呼び出した後、カーネル側トレース出力部10を呼び出すカーネル側トレース制御部11。
(c)カーネル側トレース制御部11から呼び出され、事前にユーザ側トレース初期化部18から通知されたユーザ側トレースバッファ19から蓄積済みのユーザ側トレースデータを取得し、カーネル側トレースバッファ5に書込みを行うトレースデータ移動部21。
以上のように本実施の形態によれば、カーネルモードソフトウェアのトレースデータをカーネル側トレースバッファ5に書き込む前に、それまでに蓄積されたユーザモードソフトウェアのトレースデータをカーネル側トレースバッファ5に書き込むことにより、システムトレースデータの時系列を維持することができる。
また、本実施の形態では、ユーザ側トレースデータの蓄積要否を判定するためにユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態では、カーネル側トレースデータが発生する間、ユーザ側トレースデータをユーザ側トレースバッファ19に蓄積することで、ユーザ側トレースデータの発生の度にユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態において、ユーザ側トレースバッファ19の領域に空きがなくなった場合にユーザ側トレース出力部20がユーザ側トレースバッファ19の領域不足をトレースデータ移動部21に通知し、通知を受けたトレースデータ移動部21がユーザ側トレースバッファ19からカーネル側トレースバッファ5にユーザ側トレースデータを移動させることにより、領域不足でユーザ側トレースバッファ19にユーザ側トレースデータを書き込めなくなることを防ぐことができる。
実施の形態4.
以上の実施の形態3では、システムトレースデータを蓄積する領域としてカーネル側トレースバッファ5とユーザ側トレースバッファ19とを各々1つずつ具備する実施形態を示したが、実施の形態4では、カーネル側トレースバッファ5と、1つもしくは複数のユーザ側トレースバッファとを具備する実施形態を示す。
また、実施の形態3では、カーネル側トレースデータの発生の際、カーネル側トレースデータの蓄積前に、ユーザ側トレースバッファ19に蓄積されているユーザ側トレースデータをカーネル側トレースバッファ5に移動することにより、システムトレースデータの時系列を維持する実施形態を示した。実施の形態4では、ユーザモードからカーネルモードへの遷移の際、カーネル側トレースデータの発生前に、ユーザ側トレースバッファ19に蓄積されているユーザ側トレースデータをカーネル側トレースバッファ5に移動することにより、システムトレースデータの時系列を維持する実施形態を示す。
以下、実施の形態1と異なる事項について説明し、説明しない事項については実施の形態1と同様である。
図14は、実施の形態4におけるコンピュータシステム1の構成図である。
図1、図6、図10と同一符号は同一又は相当部分を示す。
図14において、トレースバッファアドレス表23はユーザ側トレースバッファ19のメモリアドレスを1つもしくは複数有し、カーネル側メモリ196に格納される。
トレースバッファアドレス登録部22はトレースバッファアドレス表23にユーザ側トレースバッファ19のメモリアドレスを登録する。
トレースバッファアドレス登録部22は、CPU911を用いて、OSの拡張部であるカーネルモードソフトウェアもしくはOSとは独立したカーネルモードソフトウェアとして実行される。
次に、コンピュータシステム1におけるトレースデータ蓄積方法の動作について説明する。
まずは、コンピュータシステム1がトレース機能を起動する際に実行するシステムの初期化処理の動作について説明する。コンピュータシステム1は以下に説明するカーネルモード初期化処理(図15参照)およびユーザモードソフトウェア初期化処理(図16参照)を実行することによりシステムの初期化を行う。
図15は、実施の形態4におけるコンピュータシステム1が実行するカーネルモード初期化処理を示すフローチャートである。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
OS実行部2はシステム起動時もしくはトレース機能利用開始時にカーネル側トレース初期化部8を呼び出す(S400)。
カーネル側トレース初期化部8は、OS実行部2から呼び出されると、カーネル側トレース制御情報6を初期化する(S401)。
また、カーネル側トレース初期化部8はカーネル側トレースバッファ5も初期化する(S402)。
さらに、カーネル側トレース初期化部8はトレースバッファアドレス表23も初期化する(S403)。
図16は、実施の形態4におけるコンピュータシステム1が実行するユーザモードソフトウェア初期化処理を示すフローチャートである。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
ユーザモードソフトウェア実行部3は、ユーザ側トレースデータの蓄積を開始する際、ユーザ側トレース制御部13を呼び出す前に一度、ユーザ側トレース初期化部18を呼び出す(S411)。
ユーザ側トレース初期化部18は、動作中のユーザモードソフトウェアの各々に対して、ユーザ側トレースバッファ19のメモリ確保・初期化を行う(S412)。
次に、ユーザ側トレース初期化部18は、OS実行部2を介して、全てのユーザ側トレースバッファ19のメモリアドレスをトレースバッファアドレス登録部22に通知する(S413)。
トレースバッファアドレス登録部22は通知されたユーザ側トレース制御情報7のメモリアドレスをトレースバッファアドレス表23に加える(S414)。
カーネルモードソフトウェアのトレースデータを出力する際の動作(カーネル側トレース出力処理)については、実施の形態1(図4)と同じであるため、説明を省略する。
ユーザモードソフトウェアのトレースデータを出力する際の動作(ユーザ側トレース出力処理)については、実施の形態3(図13)と同じであるため、説明を省略する。
つまり、実施の形態4では、カーネル側トレースデータはカーネル側トレースバッファ5に蓄積され、ユーザ側トレースデータはユーザモードソフトウェア毎にユーザ側トレースバッファ19に一時的に蓄積される。
図17は、実施の形態4におけるコンピュータシステム1が実行するカーネル側トレースデータ移動処理を示すフローチャートである。
次に、ユーザ側トレースバッファ19内に蓄積されたユーザ側トレースデータをカーネル側トレースバッファ5に移動する処理の動作について、図17に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
動作モードがユーザモードからカーネルモードへ遷移する際、OS実行部2はトレースデータ移動部21を呼び出す。OS実行部2がトレースデータ移動部21を呼び出す契機としては、例えば、ユーザモードソフトウェア間での実行の切替え(一般にはプロセス切替え)時や、ユーザモードソフトウェア実行部3からのシステムコールの発行時や、ハードウェアからの割込み発生時が含まれる。なお、呼び出された際にトレースデータ移動部21は、それまで動作していたユーザモードソフトウェアを識別可能な値もしくはそれまで動作していたユーザモードソフトウェアに対応するユーザ側トレースバッファ19を識別可能な値として、例えばプロセスIDが、OS実行部2から通知されるものとする(S421)。
トレースデータ移動部21は、OS実行部2からの通知を元にトレースバッファアドレス表23を参照し、それまで動作していたユーザモードソフトウェアに対応するユーザ側トレースバッファ19のメモリアドレスを取得する(S422)。
次に、トレースデータ移動部21は、取得したメモリアドレスが示すユーザ側トレースバッファ19から、その時点で蓄積されている当該ユーザモードソフトウェアのユーザ側トレースデータを取り出す(S423)。
そして、トレースデータ移動部21は取り出したユーザ側トレースデータをカーネル側トレースバッファ5へ書き込む。トレースデータ移動部21は、ユーザ側トレースデータの書き込みを、カーネル側トレースバッファ5において書き込み済みのシステムトレースデータの後ろに行って、システムトレースデータの時系列を確保する(S424:ユーザ側トレースデータ移動処理)。
つまり、実施の形態4におけるコンピュータシステム1は、プロセス切替え前のユーザモードソフトウェアのトレースデータを、プロセス切替え後のユーザモードソフトウェアにおいてトレースデータが発生する前に、カーネル側トレースバッファ5に蓄積するため、ユーザモードソフトウェア間におけるトレースデータの時系列を確保することができる。
また、実施の形態4におけるコンピュータシステム1は、カーネルモードへの遷移前に発生したユーザ側トレースデータを、モード遷移後にカーネルモードでトレースデータが発生する前に、カーネル側トレースバッファ5に蓄積するため、ユーザ側トレースデータとカーネル側トレースデータとの間における時系列を確保することができる。
なお、ユーザモードソフトウェアが終了する際には、ユーザモードソフトウェア実行部3はユーザ側トレース初期化部18を介して当該ユーザ側トレースバッファ19を解放し、トレースバッファアドレス登録部22を介してトレースバッファアドレス表23に登録された当該ユーザ側トレースバッファ19のメモリアドレスを削除するものとする。また、ユーザ側トレース初期化部18は、ユーザ側トレースバッファ19を解放する前に,OS実行部2を介してトレースデータ移動部21に通知することで,ユーザ側トレースバッファ19に残存するトレースデータをカーネル側トレースバッファ5に移動することができる。
上記の説明ではコンピュータシステム1はユーザ側トレースデータの蓄積要否の判定を、実施の形態1と同様に、カーネル側トレース制御情報6をメモリマッピングしたユーザ側トレース制御情報7を使用しているが、コンピュータシステム1は、実施の形態2と同様に、カーネル側トレース制御情報6を複製したユーザ側トレース制御情報7を使用してもよい。
以上のように本実施の形態によれば、OS実行部2によってユーザモードからカーネルモードへ遷移する際に、それまでに蓄積されたユーザモードソフトウェアのトレースデータをカーネル側トレースバッファ5に書き込むことにより、システムトレースデータの時系列を維持することができる。
また、本実施の形態では、1つもしくは複数のユーザモードソフトウェアに対して、ユーザ側トレースデータの蓄積要否を判定するためにユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態では、ユーザモードからカーネルモードへ遷移する契機を利用してユーザ側トレースデータをカーネル側トレースバッファ5に蓄積することで、ユーザ側トレースデータをカーネル側トレースバッファ5に蓄積することだけを目的としてユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
本実施の形態において、以下の手段を備えたシステムトレースデータ蓄積方式について説明した。
(a)ユーザ側トレース初期化部18によってメモリ確保・初期化されたユーザ側トレースバッファ19のメモリアドレスをトレースバッファアドレス表23に登録するトレースバッファアドレス登録部22。
(b)OS実行部2から呼び出され、トレースバッファアドレス表23に記載のユーザ側トレースバッファ19のうち、OS実行部2から通知されたユーザモードソフトウェアのユーザ側トレースバッファ19に蓄積済みのユーザ側トレースデータを取得し、取得したユーザ側トレースデータをカーネル側トレースバッファ5に書込みするトレースデータ移動部21。
実施の形態1におけるコンピュータシステム1の構成図。 実施の形態1におけるコンピュータシステム1のハードウェア資源の一例を示す図。 実施の形態1におけるコンピュータシステム1が実行するシステム初期化処理を示すフローチャート。 実施の形態1におけるコンピュータシステム1が実行するカーネル側トレース出力処理を示すフローチャート。 実施の形態1におけるコンピュータシステム1が実行するユーザ側トレース出力処理を示すフローチャート。 実施の形態2におけるコンピュータシステム1の構成図。 実施の形態2におけるコンピュータシステム1が実行するカーネルモード初期化処理を示すフローチャート。 実施の形態2におけるコンピュータシステム1が実行するユーザモードソフトウェア初期化処理を示すフローチャート。 実施の形態2におけるコンピュータシステム1が実行するユーザ側トレース制御情報更新処理を示すフローチャート。 実施の形態3におけるコンピュータシステム1の構成図。 実施の形態3におけるコンピュータシステム1が実行するシステム初期化処理を示すフローチャート。 実施の形態3におけるコンピュータシステム1が実行するカーネル側トレース出力処理を示すフローチャート。 実施の形態3におけるコンピュータシステム1が実行するユーザ側トレース出力処理を示すフローチャート。 実施の形態4におけるコンピュータシステム1の構成図。 実施の形態4におけるコンピュータシステム1が実行するカーネルモード初期化処理を示すフローチャート。 実施の形態4におけるコンピュータシステム1が実行するユーザモードソフトウェア初期化処理を示すフローチャート。 実施の形態4におけるコンピュータシステム1が実行するカーネル側トレースデータ移動処理を示すフローチャート。
符号の説明
1 コンピュータシステム、2 OS実行部、3 ユーザモードソフトウェア実行部、4 カーネルモードソフトウェア実行部、5 カーネル側トレースバッファ、6 カーネル側トレース制御情報、7 ユーザ側トレース制御情報、8 カーネル側トレース初期化部、9 トレース制御情報マップ部、10 カーネル側トレース出力部、11 カーネル側トレース制御部、12 ユーザ側トレース出力代行部、13 ユーザ側トレース制御部、14 トレース制御情報アドレス表、15 トレース制御情報複写部、16 トレース制御情報変更部、17 トレース制御情報アドレス登録部、18 ユーザ側トレース初期化部、19 ユーザ側トレースバッファ、20 ユーザ側トレース出力部、21 トレースデータ移動部、22 トレースバッファアドレス登録部、23 トレースバッファアドレス表、192 ユーザ側メモリ、194,195,196 カーネル側メモリ、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、923 プログラム群、924 ファイル群。

Claims (8)

  1. システムが提供する機能を実行するカーネルモードで動作するカーネルモードソフトウェアプログラムの動作履歴を示すカーネル側トレースデータとシステムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータとを記憶するコンピュータシステムであり、
    カーネルモードで使用され、カーネル側トレースデータとユーザ側トレースデータとを記憶する第1のカーネル側メモリと、
    ユーザモードで使用され、ユーザ側トレースデータを記憶する第1のユーザ側メモリと、
    ユーザ側トレースデータが発生した際に発生した前記ユーザ側トレースデータを前記第1のユーザ側メモリに記憶するユーザ側トレース出力部と、
    カーネル側トレースデータが発生した際に前記ユーザ側トレース出力部が前記第1のユーザ側メモリに記憶した前記ユーザ側トレースデータを前記第1のカーネル側メモリに移動するトレースデータ移動部と、
    カーネル側トレースデータが発生した際に発生した前記カーネル側トレースデータを前記トレースデータ移動部が前記第1のカーネル側メモリに移動した前記ユーザ側トレースデータの後ろに記憶するカーネル側トレース出力部と
    を備えたことを特徴とするコンピュータシステム。
  2. システムが提供する機能を実行するカーネルモードで動作するカーネルモードソフトウェアプログラムの動作履歴を示すカーネル側トレースデータとシステムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータとを記憶するコンピュータシステムであり、
    カーネルモードで使用され、カーネル側トレースデータとユーザ側トレースデータとを記憶する第1のカーネル側メモリと、
    ユーザモードで使用され、ユーザ側トレースデータを記憶する第1のユーザ側メモリと、
    ユーザ側トレースデータが発生した際に発生した前記ユーザ側トレースデータを前記第1のユーザ側メモリに記憶するユーザ側トレース出力部と、
    ユーザモードからカーネルモードへの遷移の際に前記ユーザ側トレース出力部が前記第1のユーザ側メモリに記憶した前記ユーザ側トレースデータを前記第1のカーネル側メモリに移動するトレースデータ移動部と、
    カーネル側トレースデータが発生した際に発生したカーネル側トレースデータを前記トレースデータ移動部が前記第1のカーネル側メモリに移動した前記ユーザ側トレースデータの後ろに記憶するカーネル側トレース出力部と
    を備えたことを特徴とするコンピュータシステム。
  3. 前記コンピュータシステムは、さらに、
    カーネルモードで使用され、ユーザ側トレースデータの蓄積要否フラグを示すカーネル側トレース制御情報を記憶する第2のカーネル側メモリと、
    ユーザモードで使用され、前記第2のカーネル側メモリにおける前記カーネル側トレース制御情報の記憶域を示す制御情報アドレスを記憶する第2のユーザ側メモリと、
    前記第2のユーザ側メモリに記憶された前記制御情報アドレスが示す前記第2のカーネル側メモリにおける記憶域に記憶された前記カーネル側トレース制御情報を参照し、参照した前記カーネル側トレース制御情報が示す前記蓄積要否フラグに基づいてユーザ側トレースデータの蓄積要否を判定するユーザ側トレース制御部とを備え、
    前記ユーザ側トレース出力部は、
    前記ユーザ側トレース制御部がユーザ側トレースデータの蓄積要と判定した場合にユーザ側トレースデータを前記第1のユーザ側メモリに記憶する
    ことを特徴とする請求項1または請求項記載のコンピュータシステム。
  4. 前記コンピュータシステムは、さらに、
    カーネルモードで使用され、ユーザ側トレースデータの蓄積要否フラグを示すカーネル側トレース制御情報を記憶する第2のカーネル側メモリと、
    ユーザモードで使用され、前記第2のカーネル側メモリに記憶された前記カーネル側トレース制御情報をコピーしたユーザ側トレース制御情報を記憶する第2のユーザ側メモリと、
    前記第2のユーザ側メモリに記憶された前記ユーザ側トレース制御情報を参照し、参照した前記ユーザ側トレース制御情報が示す蓄積要否フラグに基づいてユーザ側トレースデータの蓄積要否を判定するユーザ側トレース制御部とを備え、
    前記ユーザ側トレース出力部は、
    前記ユーザ側トレース制御部がユーザ側トレースデータの蓄積要と判定した場合にユーザ側トレースデータを前記第1のユーザ側メモリに記憶する
    ことを特徴とする請求項1または請求項記載のコンピュータシステム。
  5. 前記コンピュータシステムは、さらに、
    前記カーネル側トレース制御情報が示す蓄積要否フラグが変更された際に変更された前記カーネル側トレース制御情報が示す前記蓄積要否フラグをコピーして前記ユーザ側トレース制御情報が示す前記蓄積要否フラグを更新するトレース制御情報複写部
    を備えたことを特徴とする請求項記載のコンピュータシステム。
  6. システムが提供する機能を実行するカーネルモードで動作するカーネルモードソフトウェアプログラムの動作履歴を示すカーネル側トレースデータとシステムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータとを記憶するコンピュータシステムのトレースデータ蓄積方法であり、
    ユーザトレース出力部がユーザ側トレースデータが発生した際に発生した前記ユーザ側トレースデータを第1のユーザ側メモリに記憶するユーザ側トレース出力処理と、
    トレースデータ移動部がカーネル側トレースデータが発生した際に前記ユーザ側トレース出力部が前記第1のユーザ側メモリに記憶した前記ユーザ側トレースデータを第1のカーネル側メモリに移動するトレースデータ移動処理と、
    カーネル側トレース出力部がカーネル側トレースデータが発生した際に発生した前記カーネル側トレースデータを前記トレースデータ移動部が前記第1のカーネル側メモリに移動した前記ユーザ側トレースデータの後ろに記憶するカーネル側トレース出力処理と
    を実行することを特徴とするコンピュータシステムのトレースデータ蓄積方法。
  7. システムが提供する機能を実行するカーネルモードで動作するカーネルモードソフトウェアプログラムの動作履歴を示すカーネル側トレースデータとシステムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータとを記憶するコンピュータシステムのトレースデータ蓄積方法であり、
    ユーザ側トレース出力部がユーザ側トレースデータが発生した際に発生した前記ユーザ側トレースデータを第1のユーザ側メモリに記憶するユーザ側トレース出力処理と、
    トレースデータ移動部がユーザモードからカーネルモードへの遷移の際に前記ユーザ側トレース出力部が前記第1のユーザ側メモリに記憶した前記ユーザ側トレースデータを第1のカーネル側メモリに移動するトレースデータ移動処理と、
    カーネル側トレース出力部がカーネル側トレースデータが発生した際に発生したカーネル側トレースデータを前記トレースデータ移動部が前記第1のカーネル側メモリに移動した前記ユーザ側トレースデータの後ろに記憶するカーネル側トレース出力処理と
    を実行することを特徴とするコンピュータシステムのトレースデータ蓄積方法。
  8. 請求項6または請求項記載のコンピュータシステムのトレースデータ蓄積方法をコンピュータシステムに実行させるトレースデータ蓄積プログラム。
JP2006159863A 2006-06-08 2006-06-08 コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム Expired - Fee Related JP4859546B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006159863A JP4859546B2 (ja) 2006-06-08 2006-06-08 コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006159863A JP4859546B2 (ja) 2006-06-08 2006-06-08 コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム

Publications (2)

Publication Number Publication Date
JP2007328597A JP2007328597A (ja) 2007-12-20
JP4859546B2 true JP4859546B2 (ja) 2012-01-25

Family

ID=38929020

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006159863A Expired - Fee Related JP4859546B2 (ja) 2006-06-08 2006-06-08 コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム

Country Status (1)

Country Link
JP (1) JP4859546B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8180905B2 (en) * 2008-12-09 2012-05-15 Microsoft Corporation User-mode based remote desktop protocol (RDP) encoding architecture
KR101134464B1 (ko) * 2009-05-19 2012-04-13 한국전자통신연구원 네트워크 비동기 입출력 방법 및 장치
CN103761175B (zh) * 2013-11-25 2016-08-17 中国科学院计算技术研究所 一种Linux系统下程序执行路径监测系统及其方法
JP6272088B2 (ja) * 2014-03-06 2018-01-31 三菱電機株式会社 計算機装置及びプロセス解析方法及びプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149444A (ja) * 2000-11-13 2002-05-24 Mitsubishi Electric Corp ソフトウェア試験システム及びソフトウェア試験方法及びソフトウェア試験方法を計算機で実現するためのプログラムを記録した計算機で読み取り可能なプログラム記録媒体及びソフトウェア試験方法を計算機で実現するためのプログラム
JP4376587B2 (ja) * 2003-10-21 2009-12-02 株式会社エヌ・ティ・ティ・データ アクセス履歴記録装置及びアクセス制御装置

Also Published As

Publication number Publication date
JP2007328597A (ja) 2007-12-20

Similar Documents

Publication Publication Date Title
US6684305B1 (en) Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
JP5655677B2 (ja) ハイパーバイザ置き換え方法および情報処理装置
KR100848603B1 (ko) 데이터 처리장치와 복귀상태의 저장방법
JP6202543B2 (ja) 動的アドレス変換テーブルを管理する方法、システムおよびコンピュータ・プログラム
JP4939387B2 (ja) データ処理装置及びアドレス空間保護方法
US8578136B2 (en) Apparatus and method for mapping architectural registers to physical registers
JP2000506639A (ja) 単一のレジスタ・ファイルを使用して浮動小数点命令およびパック・データ命令を実行する方法および装置
JP2015523650A (ja) ローカル・クリア制御
CN111201518B (zh) 用于管理能力元数据的设备和方法
KR20220045211A (ko) 캐패빌리티 기입 어드레스 추적
TW201843584A (zh) 用於管理能力使用的設備與方法
JP4859546B2 (ja) コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム
JP2013161299A (ja) 情報処理装置、インタフェースアクセス方法
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP5318197B2 (ja) ホストデータ処理装置内におけるデバイスエミュレーションのサポート
US6199156B1 (en) System for explicitly referencing a register for its current content when performing processor context switch
EP0619899A1 (en) Software control of hardware interruptions
WO2006132758A2 (en) Memory operations in microprocessors with multiple execution modes and register files
JP4594889B2 (ja) 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム
JP3554320B2 (ja) オブジエクト指向メモリ保護メカニズムを採用するデータ処理システムで実行環境間の通信を実行するデータ処理システム
US7937525B2 (en) Method and apparatus for decoding a virtual machine control structure identification
TW202427202A (zh) 用於執行轉譯表項目載入/儲存操作之設備、方法、及電腦程式
JPH0738168B2 (ja) データ処理装置
Early ESPRIT LTR 21917 (Pegasus II) Deliverable 2.1. 2 Pentium Port Report
Hillebrand et al. Computer Architecture II: Memory Management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110920

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111013

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111101

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111101

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141111

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees