JP4859546B2 - コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム - Google Patents
コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム Download PDFInfo
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
ところが、上記システムのうち、メモリ保護機能を持つOS(Operating System)上で動作するソフトウェアは、一般的にユーザモード(非特権モードともいう)とカーネルモード(特権モード、スーパバイザモードともいう)とのどちらかのモードで動作する。ユーザモードは、実行可能なCPU(Central Processing Unit)命令が制限され、かつメモリ保護機能が有効な状態である。アプリケーションソフトウェア(以下、アプリケーションとする)などがこのユーザモードで動作する。ユーザモードにおいては、一般的にアプリケーション毎にメモリ空間が割り当てられ、異なるメモリ空間で動作する他のアプリケーションのデータには直接アクセスできないようにOSによりメモリ保護されている。カーネルモードは、上述したCPU命令の制限を持たない状態であり、OS自身やデバイスドライバなどがこのカーネルモードで動作する。
このようなシステムにおいては、カーネルモード側に上記蓄積要否フラグとトレースデータを蓄積するためのトレースバッファとを具備し、OSを介してユーザモードからカーネルモードへ動作モードを一旦遷移することにより、カーネルモード側の蓄積要否フラグやトレースバッファを用いて、ユーザモードソフトウェアのトレースデータを蓄積していた。
また他のシステムにおいては、蓄積要否フラグとトレースバッファとをユーザモードとカーネルモードとの双方に具備し、ユーザモードとカーネルモードとでおのおの個別にトレースデータを蓄積していた。
また、後者の場合、ユーザモードソフトウェアとカーネルモードソフトウェアとがそれぞれのトレースバッファにトレースデータを蓄積するため、システム全体の動作履歴を把握するには、ユーザモードとカーネルモードとの双方で蓄積したトレースデータをマージし、発生順に並び替えてトレースデータを参照する必要がある。このトレースデータを発生順に並び替える方法として、システムに搭載された高精度ハードウェアタイマのカウンタ値をトレースデータに埋め込んでおくことが考えられる。ただし、実装コストや消費電力など制限の多い組込み機器などでは、高精度ハードウェアタイマを搭載していない、もしくは高精度ハードウェアタイマを常時利用できないという場合が多く、このトレースデータの発生順の並び替え方法は使えなかった。また、使用するハードウェアタイマが低精度である場合、ユーザモードのトレースデータとカーネルモードのトレースデータとが同一の発生時刻を示し、トレースデータを正確な発生順に並び替えられないということが考えられる。つまり、後者のシステムには、時系列のトレースデータを得るために、高コスト・高消費電力になるという課題があった。
例えば、本発明は、ユーザモードソフトウェアとカーネルモードソフトウェアとの双方で発生したトレースデータの時系列を維持することと、ユーザモードソフトウェアのトレースにかかるオーバヘッドを削減することとの双方を実現することを目的とする。
実施の形態1では、カーネルモードのトレースデータとユーザモードのトレースデータとを蓄積するコンピュータシステムにおいて、カーネル側メモリに記憶したカーネル側トレース制御情報の記憶域を示す制御情報アドレスをユーザ側メモリに記憶することで、カーネルモードに遷移することなくユーザモードでトレースデータの蓄積要否を判定する実施形態を示す。
ユーザモードは、非特権モードとも呼ばれるコンピュータシステムの動作モードの一つであり、実行可能なCPU命令が制限され、また、カーネルモードで使用されるメモリやユーザモードで動作する他のソフトウェアプログラムが使用するメモリへのアクセスが制限される。そのため、制限されたCPU命令の実行および制限されたメモリへのアクセスが必要な場合、ユーザモードではシステムコールを行うことでOSを介してカーネルモードへ遷移して制限されたメモリへアクセスする。
また、ユーザモードで使用されるメモリをユーザ側メモリ、ユーザモードで動作するソフトウェアプログラムをユーザモードソフトウェア(または、ユーザモードソフトウェアプログラム)、ユーザモードで発生しユーザモードソフトウェアの動作履歴を示すトレースデータをユーザ側トレースデータとする。
また、カーネル側トレースデータとユーザ側トレースデータとの少なくともいずれかを含むトレースデータをシステムトレースデータとする。
また、特定の記憶域を示すアドレス(制御情報アドレス)を記憶する処理の一例としてメモリマッピングがあり、メモリマッピングでは主に仮想メモリのアドレスと実メモリのアドレスとを対応付けて記憶する。メモリマッピングを行うことにより、各アプリケーションは仮想メモリのアドレスを用いて実メモリにアクセスすることができる。以下で説明するメモリマッピングでは、ユーザ側トレース制御情報7(図1参照)の記憶域を示すアドレスとカーネル側トレース制御情報6(図1参照)の記憶域を示すアドレス(制御情報アドレス)とが対応付けられて、システムのメモリ保護ユニット(MMU:Memory Management Unit)の記憶域に記憶されるものとする。ここで、メモリマッピングによりユーザ側トレース制御情報7の記憶域を示すアドレスがカーネル側トレース制御情報6の記憶域を示す制御情報アドレスにMMUの記憶域において対応付けられることも、ユーザ側メモリ192がカーネル側トレース制御情報6の記憶域を示す制御情報アドレスを記憶することに含めるものとする。
また、アプリケーションやアプリケーションプログラムなどと呼ばれるソフトウェアはユーザモードソフトウェアの一例であり、OSはカーネルモードソフトウェアの一例である。
ソフトウェアプログラムは、単に、ソフトウェアまたはプログラムともいう。
図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を呼び出すか否かを判断する。
図2において、コンピュータシステム1は、プログラムを実行するCPU911(中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
RAM914は、揮発性メモリの一例である。ROM913、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶機器、記憶装置あるいは記憶部の一例である。
通信ボード915は、入出力機器、入出力装置あるいは入出力部の一例である。
磁気ディスク装置920には、OS921(オペレーティングシステム)、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、OS921により実行される。
ファイル群924には、実施の形態において、「〜部」の機能を実行した際の「〜の判定結果」、「〜の計算結果」、「〜の処理結果」などの結果データ、「〜部」の機能を実行するプログラム間で受け渡しするデータ、その他の情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。例えば、ユーザ側トレース制御情報7、カーネル側トレース制御情報6、システムトレースデータなどが記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、実施の形態において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、磁気ディスク装置920の磁気ディスク、その他の記録媒体に記録される。また、データや信号値は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
実施の形態1におけるコンピュータシステム1は以下に説明するシステム初期化処理(図3参照)、カーネル側トレース出力処理(図4参照)およびユーザ側トレース出力処理(図5参照)を実行することによりシステムトレースデータの蓄積を行う。
まずは、コンピュータシステム1がトレース機能を起動する際に実行するシステムの初期化処理の動作について、図3に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
カーネル側トレース初期化部8は、OS実行部2から呼び出されると、カーネル側メモリ194においてカーネル側トレース制御情報6を初期化する(S101)。
また、カーネル側トレース初期化部8はカーネル側トレースバッファ5も初期化する(S102)。
次に、カーネル側トレース初期化部8はトレース制御情報マップ部9を呼び出す(S103)。
トレース制御情報マップ部9は、システム(通常はCPU911)が具備しているメモリ保護ユニットを用いて、もしくはOS実行部2が提供するMMU操作に関するシステムコールを用いて、カーネル側トレース制御情報6をユーザモードのメモリ空間(ユーザ側メモリ192)にユーザ側トレース制御情報7としてメモリマッピングする(S104:制御情報アドレス記憶処理)。
次に、カーネルモードソフトウェアのトレースデータ(カーネル側トレースデータ)を出力する際の動作について、図4に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
カーネル側トレース制御部11では、カーネル側トレース制御情報6に含まれる蓄積要否フラグを参照してカーネル側トレースデータの蓄積要否を判定する(S112:カーネル側トレース制御処理)。
カーネル側トレースデータを蓄積すると判定した場合、カーネル側トレース制御部11はカーネル側トレース出力部10を呼び出す(S113)。
カーネル側トレース出力部10はカーネル側トレースデータをカーネル側トレースバッファ5に書き込み、カーネルモードソフトウェア実行部4はカーネル側トレース出力処理を終了する。カーネル側トレース出力部10は、カーネル側トレースデータの書き込みを、カーネル側トレースバッファ5において書き込み済みのシステムトレースデータの後ろに行って、システムトレースデータの時系列を確保する(S114:カーネル側トレース出力処理)。
S112において、カーネル側トレースデータを蓄積しないと判定した場合、カーネル側トレース制御部11は呼び出し元であるカーネルモードソフトウェア実行部4に処理を戻し、カーネルモードソフトウェア実行部4はカーネル側トレース出力処理を終了する。
次に、ユーザモードソフトウェアのトレースデータ(ユーザ側トレースデータ)を出力する際の動作について、図5に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
ユーザ側トレース制御部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。
また、本実施の形態では、カーネル側トレース制御情報6をユーザ側トレース制御情報7にメモリマッピングすることによって、カーネル側トレース制御情報6に含まれる蓄積要否フラグをユーザモードから直接参照可能にする。これにより、ユーザ側トレースデータの蓄積要否を判定するためにユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態では、ユーザモードソフトウェアが複数動作中であっても、カーネル側トレース制御情報6の蓄積要否フラグを書き換えるだけで、全てのユーザモードソフトウェアに対してシステムトレースデータの蓄積要否を変更することができる。
以上の実施の形態1では、トレース制御情報マップ部9によりカーネル側トレース制御情報6をユーザ側トレース制御情報7にメモリマッピングする実施形態を示したが、実施の形態2では、メモリマッピングを使わず、カーネル側トレース制御情報6の内容をユーザ側トレース制御情報7に複写する実施形態を示す。
以下、実施の形態1と異なる事項について説明し、説明しない事項は実施の形態1と同様である。
図1と同一符号の構成は同一又は相当部分を示す。
トレース制御情報複写部15は、トレース制御情報アドレス表14をもとに、カーネル側トレース制御情報6をユーザ側トレース制御情報7に複写する。
トレース制御情報変更部16はカーネル側トレース制御情報6を変更する機能とカーネル側トレース制御情報6を変更したことをトレース制御情報複写部15に通知する機能とを具備する。
トレース制御情報アドレス登録部17はトレース制御情報アドレス表14にユーザ側トレース制御情報7のメモリアドレスを登録する。
ユーザ側トレース初期化部18はユーザモードソフトウェア実行部3がユーザ側トレース制御部13を呼び出す前に実行される。
まずは、コンピュータシステム1がトレース機能を起動する際に実行するシステムの初期化処理の動作について説明する。コンピュータシステム1は以下に説明するカーネルモード初期化処理(図7参照)およびユーザモードソフトウェア初期化処理(図8参照)を実行することによりシステムの初期化を行う。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
カーネル側トレース初期化部8は、OS実行部2から呼び出されると、カーネル側トレース制御情報6を初期化する(S201)。
また、カーネル側トレース初期化部8はカーネル側トレースバッファ5も初期化する(S202)。
さらに、カーネル側トレース初期化部8はトレース制御情報アドレス表14も初期化する(S203)。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
ユーザ側トレース初期化部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:ユーザ側トレース制御情報記憶処理)。
また、新たにユーザモードソフトウェアを起動する際には、コンピュータシステム1は新たに起動したユーザモードソフトウェアについて、上記処理(S211〜S217)を実行するものとする。
次に、ユーザモードソフトウェアの実行中におけるシステムトレースデータの蓄積要否の変更について、図9に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
カーネル側トレース制御部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。
また、本実施の形態では、カーネル側トレース制御情報6をユーザ側トレース制御情報7に複写することによって、カーネル側トレース制御情報6に含まれる蓄積フラグをユーザモードから直接参照可能にする。これにより、MMUを直接操作するとOSとの間で不都合が生じる場合やOSがMMU操作に関するシステムコールを提供していない場合などにおいても、ユーザ側トレースデータの蓄積要否を判定するためにユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態では、新たに動作させたユーザモードソフトウェアについてもユーザ側トレースデータを時系列に蓄積することができ、ユーザモードソフトウェアの動作中にシステムトレースデータの蓄積要否を変更することができる。
以上の実施の形態1では、カーネル側トレースデータとユーザ側トレースデータとを蓄積する領域としてカーネル側トレースバッファ5を唯一具備することによりシステムトレースデータの時系列を維持する実施形態を示したが、実施の形態3では、カーネル側トレースバッファ5と1つのユーザ側トレースバッファとを具備してシステムトレースデータの時系列を維持する実施形態を示す。
以下、実施の形態1と異なる事項について説明し、説明しない事項は実施の形態1と同様である。
図1、図6と同一符号の構成は同一又は相当部分を示す。
ユーザ側トレース出力部20はユーザ側トレースバッファ19へユーザ側トレースデータを書き込む。
トレースデータ移動部21はユーザ側トレースバッファ19からユーザ側トレースデータを取得し、取得したユーザ側トレースデータをカーネル側トレースバッファ5に書き込む。
図11は、実施の形態3におけるコンピュータシステム1が実行するシステム初期化処理を示すフローチャートである。
まずは、コンピュータシステム1がトレース機能を起動する際に実行するシステムの初期化処理の動作について、図11に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
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に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
カーネル側トレース制御部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に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
ユーザ側トレース制御部13では、ユーザ側トレース制御情報7にメモリマッピングされたカーネル側トレース制御情報6に含まれる蓄積要否フラグを参照してユーザ側トレースデータの蓄積要否を判定する(S332:ユーザ側トレース制御処理)。
ユーザ側トレースデータを蓄積すると判定した場合、ユーザ側トレース制御部13はユーザ側トレース出力部20を呼び出す(S333)。
ユーザ側トレース出力部20はユーザ側トレースデータをユーザ側トレースバッファ19に書き込む。ユーザ側トレース出力部20は、ユーザ側トレースデータの書き込みを、ユーザ側トレースバッファ19において書き込み済みのユーザ側トレースデータの後ろに行って、ユーザ側トレースデータの時系列を確保する(S334:ユーザ側トレース出力処理)。
S332において、ユーザ側トレースデータを蓄積しないと判定した場合、ユーザ側トレース制御部13は呼び出し元であるユーザモードソフトウェア実行部3に処理を戻し、ユーザモードソフトウェア実行部3はユーザ側トレース出力処理を終了する。
また、S325において、トレースデータ移動部21は、ユーザ側トレースバッファ19のメモリアドレスが未通知または無効な場合、何も処理を行わない。
(a)ユーザ側トレースバッファ19をユーザモードのメモリ空間に確保して初期化し、そのユーザ側トレースバッファ19のメモリアドレスをトレースデータ移動部21に通知するユーザ側トレース初期化部18。
(b)カーネルモードソフトウェア実行部4から呼び出された時、トレースデータ移動部21を呼び出した後、カーネル側トレース出力部10を呼び出すカーネル側トレース制御部11。
(c)カーネル側トレース制御部11から呼び出され、事前にユーザ側トレース初期化部18から通知されたユーザ側トレースバッファ19から蓄積済みのユーザ側トレースデータを取得し、カーネル側トレースバッファ5に書込みを行うトレースデータ移動部21。
また、本実施の形態では、ユーザ側トレースデータの蓄積要否を判定するためにユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態では、カーネル側トレースデータが発生する間、ユーザ側トレースデータをユーザ側トレースバッファ19に蓄積することで、ユーザ側トレースデータの発生の度にユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態において、ユーザ側トレースバッファ19の領域に空きがなくなった場合にユーザ側トレース出力部20がユーザ側トレースバッファ19の領域不足をトレースデータ移動部21に通知し、通知を受けたトレースデータ移動部21がユーザ側トレースバッファ19からカーネル側トレースバッファ5にユーザ側トレースデータを移動させることにより、領域不足でユーザ側トレースバッファ19にユーザ側トレースデータを書き込めなくなることを防ぐことができる。
以上の実施の形態3では、システムトレースデータを蓄積する領域としてカーネル側トレースバッファ5とユーザ側トレースバッファ19とを各々1つずつ具備する実施形態を示したが、実施の形態4では、カーネル側トレースバッファ5と、1つもしくは複数のユーザ側トレースバッファとを具備する実施形態を示す。
また、実施の形態3では、カーネル側トレースデータの発生の際、カーネル側トレースデータの蓄積前に、ユーザ側トレースバッファ19に蓄積されているユーザ側トレースデータをカーネル側トレースバッファ5に移動することにより、システムトレースデータの時系列を維持する実施形態を示した。実施の形態4では、ユーザモードからカーネルモードへの遷移の際、カーネル側トレースデータの発生前に、ユーザ側トレースバッファ19に蓄積されているユーザ側トレースデータをカーネル側トレースバッファ5に移動することにより、システムトレースデータの時系列を維持する実施形態を示す。
以下、実施の形態1と異なる事項について説明し、説明しない事項については実施の形態1と同様である。
図1、図6、図10と同一符号は同一又は相当部分を示す。
トレースバッファアドレス登録部22はトレースバッファアドレス表23にユーザ側トレースバッファ19のメモリアドレスを登録する。
まずは、コンピュータシステム1がトレース機能を起動する際に実行するシステムの初期化処理の動作について説明する。コンピュータシステム1は以下に説明するカーネルモード初期化処理(図15参照)およびユーザモードソフトウェア初期化処理(図16参照)を実行することによりシステムの初期化を行う。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
カーネル側トレース初期化部8は、OS実行部2から呼び出されると、カーネル側トレース制御情報6を初期化する(S401)。
また、カーネル側トレース初期化部8はカーネル側トレースバッファ5も初期化する(S402)。
さらに、カーネル側トレース初期化部8はトレースバッファアドレス表23も初期化する(S403)。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
ユーザ側トレース初期化部18は、動作中のユーザモードソフトウェアの各々に対して、ユーザ側トレースバッファ19のメモリ確保・初期化を行う(S412)。
次に、ユーザ側トレース初期化部18は、OS実行部2を介して、全てのユーザ側トレースバッファ19のメモリアドレスをトレースバッファアドレス登録部22に通知する(S413)。
トレースバッファアドレス登録部22は通知されたユーザ側トレース制御情報7のメモリアドレスをトレースバッファアドレス表23に加える(S414)。
次に、ユーザ側トレースバッファ19内に蓄積されたユーザ側トレースデータをカーネル側トレースバッファ5に移動する処理の動作について、図17に基づいて以下に説明する。
「〜部」として説明するコンピュータシステム1の各構成はCPU911を用いて以下の処理を実行する。
トレースデータ移動部21は、OS実行部2からの通知を元にトレースバッファアドレス表23を参照し、それまで動作していたユーザモードソフトウェアに対応するユーザ側トレースバッファ19のメモリアドレスを取得する(S422)。
次に、トレースデータ移動部21は、取得したメモリアドレスが示すユーザ側トレースバッファ19から、その時点で蓄積されている当該ユーザモードソフトウェアのユーザ側トレースデータを取り出す(S423)。
そして、トレースデータ移動部21は取り出したユーザ側トレースデータをカーネル側トレースバッファ5へ書き込む。トレースデータ移動部21は、ユーザ側トレースデータの書き込みを、カーネル側トレースバッファ5において書き込み済みのシステムトレースデータの後ろに行って、システムトレースデータの時系列を確保する(S424:ユーザ側トレースデータ移動処理)。
また、実施の形態4におけるコンピュータシステム1は、カーネルモードへの遷移前に発生したユーザ側トレースデータを、モード遷移後にカーネルモードでトレースデータが発生する前に、カーネル側トレースバッファ5に蓄積するため、ユーザ側トレースデータとカーネル側トレースデータとの間における時系列を確保することができる。
また、本実施の形態では、1つもしくは複数のユーザモードソフトウェアに対して、ユーザ側トレースデータの蓄積要否を判定するためにユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
また、本実施の形態では、ユーザモードからカーネルモードへ遷移する契機を利用してユーザ側トレースデータをカーネル側トレースバッファ5に蓄積することで、ユーザ側トレースデータをカーネル側トレースバッファ5に蓄積することだけを目的としてユーザモードからカーネルモードへ遷移する必要がなくなり、そのオーバヘッドを削減することができる。
(a)ユーザ側トレース初期化部18によってメモリ確保・初期化されたユーザ側トレースバッファ19のメモリアドレスをトレースバッファアドレス表23に登録するトレースバッファアドレス登録部22。
(b)OS実行部2から呼び出され、トレースバッファアドレス表23に記載のユーザ側トレースバッファ19のうち、OS実行部2から通知されたユーザモードソフトウェアのユーザ側トレースバッファ19に蓄積済みのユーザ側トレースデータを取得し、取得したユーザ側トレースデータをカーネル側トレースバッファ5に書込みするトレースデータ移動部21。
Claims (8)
- システムが提供する機能を実行するカーネルモードで動作するカーネルモードソフトウェアプログラムの動作履歴を示すカーネル側トレースデータとシステムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータとを記憶するコンピュータシステムであり、
カーネルモードで使用され、カーネル側トレースデータとユーザ側トレースデータとを記憶する第1のカーネル側メモリと、
ユーザモードで使用され、ユーザ側トレースデータを記憶する第1のユーザ側メモリと、
ユーザ側トレースデータが発生した際に発生した前記ユーザ側トレースデータを前記第1のユーザ側メモリに記憶するユーザ側トレース出力部と、
カーネル側トレースデータが発生した際に前記ユーザ側トレース出力部が前記第1のユーザ側メモリに記憶した前記ユーザ側トレースデータを前記第1のカーネル側メモリに移動するトレースデータ移動部と、
カーネル側トレースデータが発生した際に発生した前記カーネル側トレースデータを前記トレースデータ移動部が前記第1のカーネル側メモリに移動した前記ユーザ側トレースデータの後ろに記憶するカーネル側トレース出力部と
を備えたことを特徴とするコンピュータシステム。 - システムが提供する機能を実行するカーネルモードで動作するカーネルモードソフトウェアプログラムの動作履歴を示すカーネル側トレースデータとシステムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータとを記憶するコンピュータシステムであり、
カーネルモードで使用され、カーネル側トレースデータとユーザ側トレースデータとを記憶する第1のカーネル側メモリと、
ユーザモードで使用され、ユーザ側トレースデータを記憶する第1のユーザ側メモリと、
ユーザ側トレースデータが発生した際に発生した前記ユーザ側トレースデータを前記第1のユーザ側メモリに記憶するユーザ側トレース出力部と、
ユーザモードからカーネルモードへの遷移の際に前記ユーザ側トレース出力部が前記第1のユーザ側メモリに記憶した前記ユーザ側トレースデータを前記第1のカーネル側メモリに移動するトレースデータ移動部と、
カーネル側トレースデータが発生した際に発生したカーネル側トレースデータを前記トレースデータ移動部が前記第1のカーネル側メモリに移動した前記ユーザ側トレースデータの後ろに記憶するカーネル側トレース出力部と
を備えたことを特徴とするコンピュータシステム。 - 前記コンピュータシステムは、さらに、
カーネルモードで使用され、ユーザ側トレースデータの蓄積要否フラグを示すカーネル側トレース制御情報を記憶する第2のカーネル側メモリと、
ユーザモードで使用され、前記第2のカーネル側メモリにおける前記カーネル側トレース制御情報の記憶域を示す制御情報アドレスを記憶する第2のユーザ側メモリと、
前記第2のユーザ側メモリに記憶された前記制御情報アドレスが示す前記第2のカーネル側メモリにおける記憶域に記憶された前記カーネル側トレース制御情報を参照し、参照した前記カーネル側トレース制御情報が示す前記蓄積要否フラグに基づいてユーザ側トレースデータの蓄積要否を判定するユーザ側トレース制御部とを備え、
前記ユーザ側トレース出力部は、
前記ユーザ側トレース制御部がユーザ側トレースデータの蓄積要と判定した場合にユーザ側トレースデータを前記第1のユーザ側メモリに記憶する
ことを特徴とする請求項1または請求項2記載のコンピュータシステム。 - 前記コンピュータシステムは、さらに、
カーネルモードで使用され、ユーザ側トレースデータの蓄積要否フラグを示すカーネル側トレース制御情報を記憶する第2のカーネル側メモリと、
ユーザモードで使用され、前記第2のカーネル側メモリに記憶された前記カーネル側トレース制御情報をコピーしたユーザ側トレース制御情報を記憶する第2のユーザ側メモリと、
前記第2のユーザ側メモリに記憶された前記ユーザ側トレース制御情報を参照し、参照した前記ユーザ側トレース制御情報が示す蓄積要否フラグに基づいてユーザ側トレースデータの蓄積要否を判定するユーザ側トレース制御部とを備え、
前記ユーザ側トレース出力部は、
前記ユーザ側トレース制御部がユーザ側トレースデータの蓄積要と判定した場合にユーザ側トレースデータを前記第1のユーザ側メモリに記憶する
ことを特徴とする請求項1または請求項2記載のコンピュータシステム。 - 前記コンピュータシステムは、さらに、
前記カーネル側トレース制御情報が示す蓄積要否フラグが変更された際に変更された前記カーネル側トレース制御情報が示す前記蓄積要否フラグをコピーして前記ユーザ側トレース制御情報が示す前記蓄積要否フラグを更新するトレース制御情報複写部
を備えたことを特徴とする請求項4記載のコンピュータシステム。 - システムが提供する機能を実行するカーネルモードで動作するカーネルモードソフトウェアプログラムの動作履歴を示すカーネル側トレースデータとシステムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータとを記憶するコンピュータシステムのトレースデータ蓄積方法であり、
ユーザトレース出力部がユーザ側トレースデータが発生した際に発生した前記ユーザ側トレースデータを第1のユーザ側メモリに記憶するユーザ側トレース出力処理と、
トレースデータ移動部がカーネル側トレースデータが発生した際に前記ユーザ側トレース出力部が前記第1のユーザ側メモリに記憶した前記ユーザ側トレースデータを第1のカーネル側メモリに移動するトレースデータ移動処理と、
カーネル側トレース出力部がカーネル側トレースデータが発生した際に発生した前記カーネル側トレースデータを前記トレースデータ移動部が前記第1のカーネル側メモリに移動した前記ユーザ側トレースデータの後ろに記憶するカーネル側トレース出力処理と
を実行することを特徴とするコンピュータシステムのトレースデータ蓄積方法。 - システムが提供する機能を実行するカーネルモードで動作するカーネルモードソフトウェアプログラムの動作履歴を示すカーネル側トレースデータとシステムが提供する機能を使用するユーザモードで動作するユーザモードソフトウェアプログラムの動作履歴を示すユーザ側トレースデータとを記憶するコンピュータシステムのトレースデータ蓄積方法であり、
ユーザ側トレース出力部がユーザ側トレースデータが発生した際に発生した前記ユーザ側トレースデータを第1のユーザ側メモリに記憶するユーザ側トレース出力処理と、
トレースデータ移動部がユーザモードからカーネルモードへの遷移の際に前記ユーザ側トレース出力部が前記第1のユーザ側メモリに記憶した前記ユーザ側トレースデータを第1のカーネル側メモリに移動するトレースデータ移動処理と、
カーネル側トレース出力部がカーネル側トレースデータが発生した際に発生したカーネル側トレースデータを前記トレースデータ移動部が前記第1のカーネル側メモリに移動した前記ユーザ側トレースデータの後ろに記憶するカーネル側トレース出力処理と
を実行することを特徴とするコンピュータシステムのトレースデータ蓄積方法。 - 請求項6または請求項7記載のコンピュータシステムのトレースデータ蓄積方法をコンピュータシステムに実行させるトレースデータ蓄積プログラム。
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)
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)
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 | 株式会社エヌ・ティ・ティ・データ | アクセス履歴記録装置及びアクセス制御装置 |
-
2006
- 2006-06-08 JP JP2006159863A patent/JP4859546B2/ja not_active Expired - Fee Related
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 |