(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムを用いて動作し、オペレーティングシステム内部の処理を呼び出すための複数のシステムコールを備える情報処理装置におけるシステムコール情報の記録方法であって、
システムコールが発生したとき、システムコールトレース機能が有効であるか否かを判定する第１のステップと、
前記第１のステップでシステムコール機能が有効であると判定されたとき、前記システムコールの属するシステムコールグループがシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作へ移行する第２のステップと、
前記第２のステップで前記システムコールグループが記録を行なうモードに設定されていないとき、前記システムコールがシステムコール情報の記録を行なうモードに設定されているか否かを個別に判定し、記録を行なうモードに設定されているとき記録動作に移行する第３のステップとからなることを特徴とするシステムコール情報の記録方法。
【請求項２】
オペレーティングシステムを用いて動作し、オペレーティングシステム内部の処理を呼び出すための複数のシステムコールを備える情報処理装置におけるシステムコール情報の記録方法であって、
システムコールが発生したとき、システムコールトレース機能が有効であるか否かを判定する第１のステップと、
前記第１のステップでシステムコール機能が有効であると判定されたとき、すべてのシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作に移行する第２のステップと、
前記第２のステップですべてのシステムコール情報の記録を行なうモードに設定されていないと判定されたとき、前記システムコールの属するシステムコールグループがシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作へ移行する第３のステップと、
前記第３のステップで前記システムコールグループが記録を行なうモードに設定されていないとき、前記システムコールがシステムコール情報の記録を行なうモードに設定されているか否かを個別に判定し、記録を行なうモードに設定されているとき記録動作に移行する第４のステップとからなることを特徴とするシステムコール情報の記録方法。
【請求項３】
オペレーティングシステムを用いて動作し、オペレーティングシステム内部の処理を呼び出すための複数のシステムコールを備える情報処理装置におけるシステムコール情報記録装置であって、
システムコールが発生したとき、システムコールトレース機能が有効であるか否かを判定する第１の手段と、
前記第１の手段でシステムコール機能が有効であると判定されたとき、前記システムコールの属するシステムコールグループがシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作へ移行する第２の手段と、
前記第２の手段で前記システムコールグループが記録を行なうモードに設定されていないとき、前記システムコールがシステムコール情報の記録を行なうモードに設定されているか否かを個別に判定し、記録を行なうモードに設定されているとき記録動作に移行する第３の手段とからなることを特徴とするシステムコール情報記録装置。
【請求項４】
オペレーティングシステムを用いて動作し、オペレーティングシステム内部の処理を呼び出すための複数のシステムコールを備える情報処理装置におけるシステムコール情報記録装置であって、
システムコールが発生したとき、システムコールトレース機能が有効であるか否かを判定する第１の手段と、
前記第１の手段でシステムコール機能が有効であると判定されたとき、すべてのシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作に移行する第２の手段と、
前記第２の手段ですべてのシステムコール情報の記録を行なうモードに設定されていないと判定されたとき、前記システムコールの属するシステムコールグループがシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作へ移行する第３の手段と、
前記第３の手段で前記システムコールグループが記録を行なうモードに設定されていないとき、前記システムコールがシステムコール情報の記録を行なうモードに設定されているか否かを個別に判定し、記録を行なうモードに設定されているとき記録動作に移行する第４の手段とからなることを特徴とするシステムコール情報記録装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オペレーティングシステムを用いて動作し、オペレーティングシステム内部の処理を呼び出すための複数のシステムコールを備える情報処理装置におけるシステムコール情報記録方法および記録装置に関する。
【０００２】
【従来の技術】
オペレーティングシステム（ＯＳ）を用いて動作する情報処理装置は、ＯＳの機能を利用し動作するアプリケーションプログラムがＯＳの機能を呼び出すためにシステムコールと呼ばれるサブルーチンを持っている。アプリケーションプログラムの開発者は、装置の制御やプログラム内でのデータや処理の制御のために、このシステムコールを多く用いてユーザプログラムであるアプリケーションプログラムを作成する。
【０００３】
作成したユーザプログラムの動作確認や、不具合発生時のデバッグ作業において、ＯＳへのアクセス状況からプログラムの動作や不具合を調査するために、システムコールの呼び出し方や順序を記録するためのシステムコールトレース機能を情報処理装置内に有するものがある。
このシステムトレース機能を利用してプログラムの動作状況を記録しようとした場合、従来は、システムトレース機能を有効にするか無効にするかの指定動作、あるいはシステムトレース動作を開始するか終了するかの指定動作しか行なわれなかった。
【０００４】
【発明が解決しようとする課題】
従来のシステムトレース機能を利用した場合、トレース結果が記録された通常、ログと呼ばれるデータへ全てのシステムトレース結果が記録されることになる。このため、ユーザがログから必要な情報を得ようとすると、
・ユーザ自身が目視にてログを調べ、必要な結果のみをピックアップする、
・ログの中の全ての結果から検索機能を持ったツールを使用して必要な結果のみをピックアップする、
などの作業がシスムトレースを行なう度に必要であった。
【０００５】
また、システムトレース機能を利用する情報処理装置内に、全てのトレース結果を保持するために十分な記録領域を確保する必要があるが、これはシステムトレース機能を有効にしている間にアプリケーションプログラムがシステムコールを呼び出す数に比例した領域を必要とするため、非常に大きな領域を確保しておく必要があった。
【０００６】
【課題を解決するための手段】
本発明では、システムコールをＯＳ内での処理機能毎にグループ分けし、各々のグループ毎に、システムコール情報の記録を行なうモードにあるか否かを設定するようにする。さらに個々のシステムコールについてもシステムコール毎に、システムコール情報の記録を行なうモードにあるか否かを設定するようにする。また、システムコールトレース機能が有効であるか無効であるかを設定する。
さらに必要に応じて、全てのシステムコールについてシステムコール情報の記録を行なうモードにあるか否かを設定する。
【０００７】
図１は、本発明の第１の構成によるシステムコール情報記録方法を示す図である。
【０００８】
図１の構成においては、システムコールが発生したとき、システムコールトレース機能が有効であるか否かを判定するステップ（Ｓ１）と、ステップＳ１でシステムコール機能が有効であると判定されたとき、そのシステムコールの属するシステムコールグループがシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作へ移行するステップ（Ｓ２）と、ステップＳ２でそのシステムコールグループが記録を行なうモードに設定されていないとき、そのシステムコールがシステムコール情報の記録を行なうモードに設定されているか否かを個別に判定し、記録を行なうモードに設定されているとき記録動作に移行するステップ（Ｓ３）とを備えている。ステップＳ４はシステムコールの情報をログへ記録するステップ、ステップＳ５はシステムコールの処理ステップである。
【０００９】
図２は、本発明の第２の構成によるシステムコール情報記録方法を示す図である。
【００１０】
図２の構成においては、システムコールが発生したとき、システムコールトレース機能が有効であるか否かを判定するステップ（Ｓ１０）と、ステップＳ１０でシステムコール機能が有効であると判定されたとき、すべてのシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作に移行するステップ（Ｓ１１）と、ステップＳ１１ですべてのシステムコール情報の記録を行なうモードに設定されていないと判定されたとき、そのシステムコールの属するシステムコールグループがシステムコール情報の記録を行なうモードに設定されているか否かを判定し、記録を行なうモードに設定されているとき記録動作へ移行するステップ（Ｓ１２）と、ステップＳ１２でそのシステムコールグループが記録を行なうモードに設定されていないとき、そのシステムコールがシステムコール情報の記録を行なうモードに設定されているか否かを個別に判定し、記録を行なうモードに設定されているとき記録動作に移行するステップ（Ｓ１３）とを備えている。ステップＳ１４はシステムコールの情報をログへ記録するステップ、ステップＳ１５はシステムコールの処理ステップである。
【００１１】
【発明の実施の形態】
図３は、本発明の１実施例のシステムコールのグループ分けを示す図である。システムコールａ〜ｈは、システムコールａ〜ｄからなるグループＡとシステムコールｅ〜ｈからなるグループＢに分けられる。
【００１２】
図４は、各グループに対するシステムトレース機能の有効／無効を設定するためのグループ設定レジスタＧｆの構成例を示す図である。Ｇｆのビット０がグループＡの有効／無効を示し、ビット１がグループＢの有効／無効を示している。
【００１３】
図５は、各システムコール毎にシステムトレース機能の有効／無効を設定するためのシステムコール設定レジスタＳｆの構成例を示す図である。Ｓｆのビット０がシステムコールａの有効／無効を示し、ビット１がシステムコールｂの有効／無効を示し、以下同様にして最後のビット７がシステムコールｈの有効／無効を示している。
【００１４】
図６は、全システムコールをトレースする機能の有効／無効を設定するためのシステムトレース設定レジスタＯｆの構成例を示す図である。Ｏｆのビット０が全システムコールトレース機能の有効／無効を示している。
【００１５】
図７は、システムトレース機能全体の有効／無効を設定するためのシステムトレース機能設定レジスタＦｆの構成例を示す図である。Ｆｆのビット０がシステムトレース機能全体の有効／無効を示している。
【００１６】
上記した各種レジスタＧｆ、Ｓｆ、Ｏｆ、Ｆｆはメモリ上に置かれ、各種判断処理時にメモリから読み出されて使用される。
【００１７】
図８は、グループ設定レジスタＧｆの内容でログ動作の有無を判定する実施例を示す図である。図８において、ＧｆへグループＢを有効にする「０Ｘ０２」が設定されたとする。ここで、０Ｘは１６進数であることを示す。以下同様である。この設定状態において、図８（ａ）に示すように、アプリケーションからグループＡに属するシステムコールａ（ａ〜ｄのどれでもかまわない）を呼ぶと、最初の判断処理ステップＳ２０でＧｆ（＝「０Ｘ０２」）とシステムコールａのグループコード「０Ｘ０１」の論理積は「０」となり「＝０」へ分岐するため、ログへの記録は行なわれない。なお、論理積演算は、２つのビット群について同一ビット位置のビット同士の間で演算が行なわれる。
【００１８】
同様に図８（ｂ）に示すように、アプリケーションからグループＢに属するシステムコールｇ（ｅ〜ｈのどれでもかまわない）を呼ぶと、最初の判断処理ステップＳ２１でＧｆ（＝「０Ｘ０２」）とシステムコールｇのグループコード「０Ｘ０２」の論理積は「０Ｘ０２」となり「≠０」へ分岐するため、システムコールの情報がログへ記録されるようになる。
【００１９】
図９は、システムコール設定レジスタＳｆの内容でログ動作の有無を判定する実施例を示す図である。図９において、Ｓｆへ「０Ｘａａ」（２進数で１０１０１０１０）が設定されたとする。
この設定状態において、図９（ａ）に示すように、アプリケーションからシステムコールｂを呼ぶと、最初の判断処理ステップＳ３１でＳｆ（＝「０Ｘａａ」）とシステムコールｂの個別コード「０Ｘ０２」の論理積は「０Ｘ０２」となり「≠０」へ分岐するため、システムコールｂの情報がログへ記録される。
【００２０】
同様に図９（ｂ）に示すように、アプリケーションからシステムコールｃを呼ぶと、最初の判断処理ステップＳ３２でＳｆ（＝「０Ｘａａ」）とシステムコールｃの個別コード「０Ｘ０４」の論理積は「０」となり「＝０」へ分岐するため、システムコールｂの情報はログへ記録されない。
【００２１】
次に、図１０は、システムトレース機能設定レジスタＦｆ、システムトレース設定レジスタＯｆ、グループ設定レジスタＧｆ、システムコール設定レジスタＳｆをすべて使用した場合の実施例を示す図である。
【００２２】
Ｆｆへシステムトレース機能そのものを無効とする「０Ｘ００」を設定した場合、この設定の下でアプリケーションからシステムコールｅ（ａ〜ｈのどれでも構わない）を呼ぶと、最初の判断ステップＳ４１でＦｆ（＝「０Ｘ００」）と固定値「０Ｘ０１」の論理積は「０」となり、「＝０」へ分岐するため、システムトレースの各種判断処理と情報のログへの記録処理を通さずにシステムコールｅの処理を行なう。
【００２３】
これとは逆に、Ｆｆへシステムトレース機能を有効にする「０Ｘ０１」を設定した場合、この設定の下でアプリケーションからシステムコールｅ（ａ〜ｈのどれでも構わない）を呼ぶと、最初の判断ステップＳ４１でＦｆ（＝「０Ｘ０１」）と固定値「０Ｘ０１」の論理積は「０Ｘ０１」となり、「≠０」へ分岐するため、Ｏｆと固定値「０Ｘ０１」の論理積を求める判断ステップＳ４２へ進む。
ここで、全システムコールをトレースする機能の有効／無効を設定するためのシステムトレース設定レジスタＯｆへシステムトレースを有効にする「０Ｘ０１」を設定しておくと、判断ステップＳ４２でＯｆ（＝「０Ｘ０１」）と固定値「０Ｘ０１」の論理積は「０Ｘ０１」となり「≠０」へ分岐し、これ以後、無条件でシステムコールｅの情報をログへ記録し、システムコールｅの処理を行なう。
【００２４】
一方、Ｏｆへ全システムコールをトレースする機能を無効にする「０Ｘ００」を設定していた場合、ステップＳ４２の処理はＯｆ（＝「０Ｘ００」）と固定値「０Ｘ０１」との論理積なので、結果は「０」となり、「＝０」へ分岐し、判断ステップＳ４３へ進む。
【００２５】
ステップＳ４３で、Ｇｆに「０Ｘ０２」（グループＢのトレースを有効）が設定されていた場合、Ｇｆとシステムコールｅのグループ識別コード「０Ｘ０２」との論理積は「≠０」であり、「≠０」へ分岐し、システムコールｅの情報をログへ記録する。
ステップＳ４３で、Ｇｆに「０Ｘ０１」（グループＡのトレースを有効）が設定されていた場合、Ｇｆとシステムコールｅのグループ識別コード「０Ｘ０２」との論理積は「＝０」であり、「＝０」へ分岐し、ステップＳ４４へ進む。
【００２６】
ステップＳ４４で、Ｓｆのビットコードとしてビット４の位置に１を含むコードが設定されていた場合、Ｓｆとシステムコールｅの個別識別コード「０Ｘ１０」との論理積は「≠０」であり、「≠０」へ分岐し、システムコールｅの情報をログへ記録する。
一方、ステップＳ４４で、Ｓｆのビットコードとしてビット４の位置に１を含まないコードが設定されていた場合、Ｓｆとシステムコールｅの個別識別コード「０Ｘ１０」との論理積は「＝０」であり、「＝０」へ分岐し、情報のログへの記録処理を通さずにシステムコールｅの処理を行なう。
【００２７】
本発明の他の実施例として、図１０の実施例においてステップＳ４２の判断処理を持たない構成を採用することもできる。この場合、ステップＳ４１の判断結果で「≠０」へ分岐したとき、ステップＳ４３へ直接進むことになる。
【００２８】
また、図１０に示す各判断ステップＳ４１〜Ｓ４４をそれぞれ実行する判断処理ユニットを設けることにより、システムコール情報記録装置を実現することができる。この場合も、ステップ４２に相当する判断処理ユニットを持たない構成とすることもできる。
【００２９】
【発明の効果】
本発明によれば、ユーザはトレースの結果を知りたいシステムコールに的を絞ってシステムトレース機能を利用できるため、トレース結果の記録であるログを調査する際に、従来の問題点であるユーザが記録の中から必要な情報をピックアップする作業や、必要な情報を抜き出すためのツールを利用する必要がなくなる。また、不必要な情報が記録されないため、従来の問題点である大きなメモリ領域を必要としていたところを、大幅に減らすことができる。
【００３０】
さらに、従来の方式のように全てをトレースするように設定することもできるので、今まで蓄えたデータとの互換性も保つことができる。
【００３１】
システムトレースを行なうシステムコールの選択は、該当する設定項目の有効か無効かの選択を行なえば済み、また、多数のシステムコールを記録する必要がある場合でも、必要なグループの項目を設定することで選択を行なう項目を減らすことができ、容易に設定することができる。
【図面の簡単な説明】
【図１】本発明の第１の構成によるシステムコール情報記録方法を示す図である。
【図２】本発明の第２の構成によるシステムコール情報記録方法を示す図である。
【図３】本発明の１実施例のシステムコールのグループ分けを示す図である。
【図４】グループ設定レジスタＧｆの構成例を示す図である。
【図５】システムコール設定レジスタＳｆの構成例を示す図である。
【図６】システムトレース設定レジスタＯｆの構成例を示す図である。
【図７】システムトレース機能設定レジスタＦｆの構成例を示す図である。
【図８】グループ設定レジスタＧｆの内容でログ動作の有無を判定する実施例を示す図である。
【図９】システムコール設定レジスタＳｆの内容でログ動作の有無を判定する実施例を示す図である。
【図１０】本発明の１実施例を示す図である。
【符号の説明】
Ｇｆ      グループ設定レジスタ
Ｓｆ      システムコール設定レジスタ
Ｏｆ      システムトレース設定レジスタ
Ｆｆ      システムトレース機能設定レジスタ
【図１】
0003767276.tif 000002
【図２】
0003767276.tif 000003
【図３】
0003767276.tif 000004
【図４】
0003767276.tif 000005
【図５】
0003767276.tif 000006
【図６】
0003767276.tif 000007
【図７】
0003767276.tif 000008
【図８】
0003767276.tif 000009
【図９】
0003767276.tif 000010
【図１０】
0003767276.tif 000011