(57)【要約】【課題】メモリ解放漏れによるメモリリークなど潜在的な不具合は、不具合を持ったプログラムを計算機上で長期間動作させることではじめて顕在化するため、再現試験に長期間を要する。そのため、再現試験期間の短縮が必要である。【解決手段】オペレーティングシステム３０１が設定したタイマ割込み間隔を設定するレジスタ２０１の設定値Ｎを計算機ハードウェア内のレジスタアクセス機能３０３を用いたプログラムで変更することでタイマ割込み間隔を短くして加速試験を行う。【効果】オペレーティングシステム上のプログラムへのＣＰＵリソース割当て間隔が短くなり、再現試験に要する期間を短縮できる。【選択図】　図３
2004038350.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムへのＣＰＵの割当てを切り替えるＣＰＵリソース割当て機能と、アプリケーションプログラムに対して計算機ハードウェア内のレジスタへアクセスするためのインターフェイスを提供するレジスタアクセス機能とを備えたオペレーティングシステムを有し、前記レジスタアクセス機能によりタイマ割込み間隔を設定するレジスタに通常モードよりも小さい値の数値を設定し、前記ＣＰＵリソース割当て機能によりアプリケーションプログラムへのＣＰＵリソース割当てを通常モードより短い時間間隔のタイマ割込みで切り替えてソフトウェアの試験を行うことを特徴とする計算機の加速試験方法。
【請求項２】
試験時間短縮プログラムによりオペレーティングシステムであるレジスタアクセス機能を用いてレジスタへアクセスして通常モードより短いタイマ割込み間隔を設定し、オペレーティングシステムであるＣＰＵリソース割当て機能によりアプリケーションプログラムの基幹処理とスリーブを繰り返してソフトウェアの試験を行うことを特徴とする計算機の加速試験方法。
【請求項３】
前記オペレーティングシステムがアプリケーションプログラムが専用に使用するためのメモリ領域の確保と解放の処理を行うメモリ管理機能を備えたものであって、前記アプリケーションプログラムのメモリリークの加速試験を行う請求項１又は２に記載の計算機の加速試験方法。
【請求項４】
前記試験時間短縮プログラムが前記レジスタへ設定する設定値の入力画面を表示装置に表示し、入力装置により入力された設定値を前記レジスタの設定する請求項２に記載の計算機の加速試験方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機上のソフトウェアの不具合を再現する試験方法に係り、特に、再現時間を短縮して不具合のあるソフトウェアを特定するのに好適な計算機の加速試験方法に関する。
【０００２】
【従来の技術】
通常、メモリ解放漏れによるメモリリークなどの潜在的な不具合は、不具合を持ったプログラムを計算機上で長期間動作させることではじめて顕在化する。このメモリリークを検出する従来の技術として、特開２００１−３３１３６８号公報には、ソフトウェアを実行する際に、ソフトウェアのメモリ使用量の変化を記録し、通常の使用量の増減の周期よりも長い所定の分析期間にわたって増大する傾向が検出されたとき、メモリ解放漏れが発生しているものと判断するメモリ解放漏れ判定方法が開示されている。又、特開２０００−２９３４００号公報には、アプリケーションプログラムが、処理中にメモリ確保の要求が発生すると、メモリ管理ライブラリを呼び出して所定のメモリ領域の確保とダンプ情報を管理テーブルに記憶し、情報処理後に確保したメモリ解放の要求が発生すると、メモリ管理ライブラリを呼び出してメモリ管理ライブラリによりメモリ領域の解放とダンプ情報の削除を行うが、アプリケーションプログラム完了後にダンプ情報が記録されていると判別した場合は、ダンプ情報に含まれるスタックフレームを表示するようにしたメモリリーク検出方法が開示されている。
【０００３】
【発明が解決しようとする課題】
特開２００１−３３１３６８号公報に記載のメモリ解放漏れ判定方法は、通常の使用量の増減の周期よりも長い所定の分析期間にわたって増大する傾向が検出されたとき、メモリ解放漏れが発生しているものと判断するので、メモリ解放漏れ判定に長時間を要するものであった。又、特開２０００−２９３４００号公報に記載のメモリリーク検出方法は、ダンプ情報を管理する必要があり、一般的なＯＳには適用しがたいものであり、不具合がユーザにはブラックボックスであるソフトウェアで生じた場合はソースプログラムはユーザが見ることができないため、不具合が生じている箇所が特定できないという問題がある。そのため、特にユーザにはブラックボックスであるプログラムを含む計算機上で動作するプログラムの中から不具合を持ったプログラムを特定するためには、長期間の再現試験を必要とするという問題があった。
【０００４】
本発明の第１の目的は、再現期間を短縮して不具合が生じている箇所を特定できる計算機の加速試験方法を提供することにある。
【０００５】
本発明の第２の目的は、オペレーティングシステム上のプログラムへのＣＰＵリソース割当て間隔が短くなり、再現試験に要する期間を短縮できる計算機の加速試験方法を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明の計算機の加速試験方法は、オペレーティングシステムが時刻を刻むために使用するタイマ割込み信号の間隔を短く設定することにより、不具合を持ったプログラムへのＣＰＵの割当て間隔を短縮するものである。
【０００７】
又、タイマ割込み信号の間隔の短縮は、タイマ割込み信号の間隔を短くするための試験時間短縮プログラムを用いておこなうものである。又、試験時間短縮プログラムはオペレーティングシステムの提供する計算機ハードウェア内のレジスタへのアクセス機能を用いてレジスタに設定されている数値を変更して、タイマ割込み間隔を短縮するものである。
【０００８】
【発明の実施の形態】
本発明の一実施例を図１から図８により説明する。図１は、本実施例の計算機のハードウェア構成図である。
【０００９】
図１に示すように、本実施例の計算機は、ＣＰＵ１０２，ＣＰＵ１０２とチップセット１０３を介して接続されたメモリ１０６，チップセット１０３と接続された入力装置１０７および表示装置１０８で構成される。計算機は発信器１０１から発信されるクロックに同期して動作する。チップセット１０３にはデータ転送制御機能１０４と時間計測機能１０５が設けられている。データ転送制御機能１０４は、ＣＰＵ１０２，メモリ１０６，入力装置１０７，表示装置１０８間のデータの送受信を制御する。時間計測機能１０５は、発信器１０１からのクロックをカウントすることでタイマ割込み信号を発生させ、計算機上で動作するソフトウェアに時間の経過を通知する。
【００１０】
図２に時間計測機能１０５の構成図を示す。時間計測機能１０５は、タイマ割込み間隔を設定するレジスタ２０１，レジスタ２０１の出力を入力するセレクタ２０２，セレクタ２０２に接続されたカウンタ２０３，カウンタ２０３の出力を入力し、セレクタ２０２に出力する減算器２０４，カウンタ２０３の出力を入力する比較器２０５で構成される。セレクタ２０２は、比較器２０５の出力側の選択信号線２０６と接続されており、比較器２０５の出力はタイマ割込み信号として用いられる。
【００１１】
通常のモードでは、レジスタ２０１には、クロック数Ｎが設定され、このクロック数によりタイマ割込み信号を発生させる時間間隔が決められている。セレクタ２０２には、減算器２０４からの入力１と、レジスタ２０１からの入力２との２つの信号が入力され、このセレクタ２０２は、選択信号線２０６から選択信号が入力されていない場合は入力１を出力し、選択信号線２０６から選択信号が入力されている場合は入力２を出力するようになっている。カウンタ２０３は入力されたクロック数を記録する。減算器２０４は、カウンタ２０３にクロック数が入力される毎に入力されたクロック数から１を引いて入力１として出力する。比較器２０５ではカウンタ２０３からの入力１と０である入力３を入力して比較し、入力１と入力３とが同じ値であった場合には、選択信号及びタイマ割込み信号を出力する。
【００１２】
次に、このように構成された時間計測機能１０５の動作について説明する。レジスタ２０１にタイマ割込み発生間隔に対応したクロック数Ｎが設定される。カウンタ２０３の初期値は０であるため、比較器２０５には入力１として０が入力される。比較器２０５の入力３は０に設定されており、比較器２０５に入力される入力１と入力３とは同じ値となるので、比較器２０５から選択信号及びタイマ割込み信号が出力される。セレクタ２０２に選択信号が入力されると、セレクタ２０２からは入力２であるＮが出力され、カウンタ２０３にＮが設定される。比較器２０５の入力１がＮで入力３は０で異なる値となるため、選択信号及びタイマ割込み信号は出力されなくなる。
【００１３】
一方、減算器２０４へはカウンタ２０３の出力値Ｎが入力されるので、減算器２０４からは入力１としてＮ−１が出力され、セレクタ２０２に入力される。セレクタ２０２には選択信号が入力されていないので、セレクタ２０２からは入力１の値Ｎ−１が出力され、Ｎ−１がカウンタ２０３に設定される。減算器２０４によりＮ回減算が行われるとカウンタ２０３の値は０となる。カウンタ２０３が０になると、上述したように比較器２０５から選択信号及びタイマ割込み信号が出力されるので、再びカウンタ２０３にレジスタ２０１の値Ｎが設定される。この動作を繰り返すことにより、時間計測機能１０５は設定されたＮクロック間隔でタイマ割込み信号を出力する。
【００１４】
図３に本実施例のソフトウェア構成を示す。ソフトウェアはオペレーティングシステム（以下、ＯＳと略称する）３０１と、１個又は複数個のアプリケーションプログラムと、試験時間短縮プログラム８０１で構成される。
【００１５】
本実施例では、２個のアプリケーションプログラム３０５とアプリケーションプログラム３０６がある場合を例にとり説明する。ＯＳ３０１はＣＰＵリソース割当て機能３０２，計算機ハードウェア内のレジスタアクセス機能３０３，メモリ管理機能３０４を有する。ＣＰＵリソース割当て機能３０２は、時間計測機能１０５からのタイマ割込み信号をカウントすることで時間を計測し、アプリケーションプログラム３０５とアプリケーションプログラム３０６へのＣＰＵリソースの割当てを切り替える。レジスタアクセス機能３０３は、アプリケーションプログラムに対して計算機ハードウェア内のレジスタへアクセスするためのインターフェイスを提供する。メモリ管理機能３０４は、アプリケーションプログラムが専用に使用するためのメモリ領域の確保と解放の処理を行う。ＯＳ３０１は設定された時間間隔でタイマ割込み信号を得るため、レジスタアクセス機能３０３を用いて初期化処理時にレジスタ２０１にクロック数を設定する。
【００１６】
図４に試験時間短縮プログラム８０１の処理フローを示す。試験時間短縮プログラム８０１は、ステップ９０１で、レジスタ２０１へ設定する値の入力画面を表示装置１０８に表示し、ステップ９０２で、計算機のユーザからの入力待ち状態となる。ユーザは入力装置１０７を用いて設定値を入力する。この設定値として、計算機を通常のモードで使用する場合は、数値Ｎが入力され、加速試験を行う場合は、数値Ｍ（＜Ｎ）が入力される。加速試験用の数値Ｍが入力されると、試験時間短縮プログラム８０１は、ＯＳ３０１の提供するレジスタアクセス機能３０３を用いて、タイマ割込み間隔設定レジスタ２０１に新たな値Ｍを設定する。
【００１７】
このように、ユーザが入力装置を用いて数値Ｍを入力することにより加速試験が行えるので、加速試験の加速度合いを調節することができる。
【００１８】
アプリケーションプログラム３０６の処理は、図５に示すように、アプリケーションプログラム３０６の基幹処理５０１と次の処理開始までのスリーブ５０２が繰り返される。仮に、アプリケーションプログラム３０６に、確保したメモリ領域を解放する処理は含まれていないという不具合があると仮定した場合、基幹処理５０１の中にメモリ領域を確保する処理が含まれ、確保したメモリ領域を解放する処理が含まれていないため、アプリケーションプログラム３０６は同じ処理を周期的に繰り返し行われ、アプリケーションプログラム３０６の基幹処理
５０１が実行される毎に、メモリ領域が確保され続けることとなる。
【００１９】
図６は、このようなアプリケーションプログラム３０６の処理により障害が発生するまでのメモリ領域の状態の推移を示した図である。初期状態６０１では、メモリ内にＯＳ，アプリケーションプログラム３０５，アプリケーションプログラム３０６がマッピングされているだけであり、十分な空き領域がある。稼働中６０２では、アプリケーションプログラム３０６が基幹処理５０１を繰り返してメモリ領域が確保されるため、次第に空き領域が減り、空き領域が無くなると、計算機が停止して障害発生時６０３となる。
【００２０】
図７は、計算機を通常のモードで使用する場合の障害発生までのアプリケーションプログラム３０５，アプリケーションプログラム３０６へのＣＰＵリソース割当てを示している。この例では、アプリケーションプログラム３０５，アプリケーションプログラム３０６へのＣＰＵリソースの割当てを、ＯＳ３０１のＣＰＵリソース割当て機能３０２がタイマ割込み毎に切り替える場合を示しており、アプリケーションプログラム３０５の基幹処理とスリーブ、アプリケーションプログラム３０６の基幹処理とスリーブが交互に繰り返され、ＴＮ　時間経過後に障害が発生している。
【００２１】
図７に示すように、アプリケーションプログラムがブラックボックスであった場合、通常のモードでは、この障害の再現を行うためにはＴＮ　時間を要し、障害発生の原因となるアプリケーションプログラムを特定するためには、アプリケーションプログラムを１つ１つ検証していくため、ＴＮ　×（アプリケーションプログラム数）の時間を要する。
【００２２】
図８は、加速試験を行った場合の障害発生までのアプリケーションプログラム３０５，アプリケーションプログラム３０６へのＣＰＵリソース割当てを示している。図８に示すように、アプリケーションプログラム３０５およびアプリケーションプログラム３０６は、試験時間短縮プログラム８０１によりタイマ割込み間隔設定レジスタ２０１の設定値が変更されて起動されると、時間計測機能１０５によるタイマ割込み間隔がＭ（＜Ｎ）クロック分に短縮されるため、障害発生までの時間がＴＭ＝ＴＮ×Ｍ／Ｎに短縮される。すなわち、オペレーティングシステム上のプログラムへのＣＰＵリソース割当て間隔が短くなり、再現試験に要する期間を短縮できる。この結果、障害発生の原因となったアプリケーションプログラムを特定するための時間を短縮することができる。
【００２３】
以上の説明では、アプリケーションプログラムを１つ１つ検証していく場合について説明したが、原因が推定できるような場合は、メモリの使用量を監視するアプリケーションを設けて、メモリ使用量により補助的に判定することができる。このメモリの使用量の監視は、例えば現在アドレスが記憶されたＯＳを読み込み、カーネルをアクセスすることにより、現在のメモリ使用状況の情報を読み込むことにより行われる。
【００２４】
【発明の効果】
本発明によれば、計算機の原因不明の障害が生じる場合でも、障害発生の原因となったアプリケーションプログラムを特定するための時間を短縮することができる。
【図面の簡単な説明】
【図１】本発明の一実施例である計算機のハードウェア構成図である。
【図２】チップセットの時間計測機能の構成図である。
【図３】本実施例のソフトウェア構成図である。
【図４】図３に示す試験時間短縮プログラムの処理フロー図である。
【図５】アプリケーションプログラムの処理フロー図である。
【図６】アプリケーションプログラムの処理によるメモリ領域の変化を示す図である。
【図７】計算機を通常モードで使用する場合の障害発生までのＣＰＵリソース割当てを示す図である。
【図８】加速試験を行った場合の障害発生までのＣＰＵリソース割当てを示す図である。
【符号の説明】
１０１…発信器、１０２…ＣＰＵ、１０３…チップセット、１０４…データ転送制御機能、１０５…時間計測機能、１０６…メモリ、１０７…入力装置、１０８…表示装置、２０１…レジスタ、２０２…セレクタ、２０３…カウンタ、２０４…減算器、２０５…比較器、３０１…ＯＳ、３０２…ＣＰＵリソース割当て機能、３０３…レジスタアクセス機能、８０１…試験時間短縮プログラム。
【図１】
2004038350.tif 000003
【図２】
2004038350.tif 000004
【図３】
2004038350.tif 000005
【図４】
2004038350.tif 000006
【図５】
2004038350.tif 000007
【図６】
2004038350.tif 000008
【図７】
2004038350.tif 000009
【図８】
2004038350.tif 000010