JP2866410B2 - プログラムのテスト方法 - Google Patents

プログラムのテスト方法

Info

Publication number
JP2866410B2
JP2866410B2 JP1297706A JP29770689A JP2866410B2 JP 2866410 B2 JP2866410 B2 JP 2866410B2 JP 1297706 A JP1297706 A JP 1297706A JP 29770689 A JP29770689 A JP 29770689A JP 2866410 B2 JP2866410 B2 JP 2866410B2
Authority
JP
Japan
Prior art keywords
program
interrupt
processing
instruction
execution
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 - Lifetime
Application number
JP1297706A
Other languages
English (en)
Other versions
JPH03158936A (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.)
Hitachi Ltd
Hitachi Information and Control Systems Inc
Original Assignee
Hitachi Ltd
Hitachi Process Computer Engineering Inc
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 Hitachi Ltd, Hitachi Process Computer Engineering Inc filed Critical Hitachi Ltd
Priority to JP1297706A priority Critical patent/JP2866410B2/ja
Publication of JPH03158936A publication Critical patent/JPH03158936A/ja
Application granted granted Critical
Publication of JP2866410B2 publication Critical patent/JP2866410B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、プログラムのテスト方法、特に、実行時間
の遅延をはかってなるプログラムのテスト方法に関す
る。
〔従来の技術〕 電子計算機のOSは、ハードウェア資源の効率的な利用
及び応答性の向上を目的とした、複数プログラムを同時
に実行するマルチプログラミングやマルチチューザOSが
一般的である。ここで、マルチプログラミングとは、2
以上のプログラムが時分割に作動することであり、マル
チチューザOSとは、こうした2以上のプログラムを作動
させるようにOSが形成されていることである。
マルチプログラミングOS下で平行に処理されるプログ
ラム同士が相互に協調して仕事をするためには、2つ以
上のプログラムが主メモリ上の共通のデータ領域(共用
データ)をアクセスすることが必要である。
この場合、複数のプログラムが同時に共用データを更
新すると不都合を生じることがある。
2つのプログラム1,2があり、共通にアクセスされる
共用データが主メモリ内にあるとする。
それぞれのプログラムの動作は、例えば簡単のため
に、プログラム1の動きは共用データの値を5つ増す。
その後で、プログラム2の動きは共用データの値を3つ
増すものとする。従って、初期値が1であれば、(1+
5)+3=9の共用データにさせることを意味する。
それぞれのプログラムを実行する機械語の系列は次の
様になる。
プログラム1の動き: (A1)共用データの値をプログラム1内共用データ用バ
ッファに読み込む。
(A2)プログラム1内共用データ用バッファの値を共用
データに書き込む。
プログラム2の動き: (B1)共用データの値をプログラム2内共用データ用バ
ッファに読み込む。
(B2)プログラム2内共用データ用バッファの値に3加
える。
(B3)プログラム2内共用データ用バッファの値を共用
データに書き込む。
なお、関連する従来例には、特開昭60−65350号公報
等が挙げられる。
〔発明が解決しようとする課題〕
プログラム1における命令(A1),(A2),(A3)の
実行と、プログラム2における(B1),(B2),(B3)
と実行とが時間的に相重なると、共用データの値は9に
ならない場合が生じ得る。
例えば第2図の様に(A1)が実行され、次に(A2)と
(B1)が同時に実行(CPUの処理上で考えた場合)さ
れ、次に(A3)と(B2)が同時に実行され、最後に(B
2)が実行された場合である。この結果、(A3)により
共用データは一時的に6となるが、(B3)の実行により
共用データは9ではなく4となってしまう。
この問題を生じないようにするための方法は、2つ以
上のプログラムが同時に共用データを更新しないように
すること、すなわち相互排除できるようにすることであ
る。
この共用データの競合を管理し、相互排除を実現する
のが競合管理処理プログラムである。
競合管理処理プログラムのテストは、意図的に第2図
に示す如き共用データの競合発生させることが必要であ
るため、1つのプログラムが共用データの更新処理を実
行中に他のプログラムの共用データの更新処理を実行し
なければならない。しかし実際の共用データの更新処理
の実行時間は、IMIPS(Million Instruction Per Secon
d)の電子計算機で数μsにすぎないので、時間的には
1つのプログラムが共用データの更新処理を実行しよう
としたとき、他のプログラムが共用データの更新処理を
実行中である可能性は非常に小さい。現実に競合管理処
理に誤りがあった場合でも不都合が発生するのは、24時
間稼働するオンラインシステムでさえ数年に一度程度で
ある。
しかし競合管理処理プログラムの作成誤りは、システ
ムダウンにつながる可能性が高く、発生による社会的影
響度が大きいため、テストで確実に発見することが必要
である。
しかし共用データの競合が発生する可能性そのものが
小さいため、共用データの競合を発生させることが必要
な競合管理処理のテストを確実に行うことは従来困難で
あった。
上記競合管理処理プログラムのテストを確実に行うた
めには、命令を遅く実行することにより共用データの更
新処理の実行時間を長くすることで、時間的に共用デー
タの競合が発生する可能性を大きくする必要がある。ま
たCPUの負荷を意図的に増大させて、過負荷時のCPUの動
きをテストしてみたいことがある。こうした場合も、一
部のプログラム又はその一部のステップの処理を遅らせ
ることが有効となるはずである。
なお、上記従来例の特開昭60−65350号は実行時間を
長くする例であるが、これはプログラムの動きを遅くす
ることでそのプログラムの細かい動きをみようとするも
のであり、競合管理処理や負荷の増大といった記載はな
い。
本発明の目的は、競合管理処理のテストやCPU負荷の
増大テストを実行時間を変化させて実現させたプログラ
ム制御方法を提供するものである。
〔課題を解決するための手段〕
本発明は、イ先ず、割込み処理プログラムの働く区間
を指定する。具体的には命令の実行時間を変化させる遅
延対象プログラム又は遅延対象ステップの先頭とその最
後尾とを指定する。ロこの指定を受けて処理装置は先頭
位置で割込み処理プログラムを起動させ、最後尾で割込
み処理プログラムを終了させる。ハ更に開始と終了との
区間にあっては、その間のプログラム又はステップの実
行速度を遅くする上記割込み処理プログラムを働かせ
る。ニこの割込み処理プログラムは実行時間を任意に設
定可能なプログラムである。
尚、具体的には、イ,ロの処理装置機能は、デバッグ
時に使用されるトレース割込みを利用すればよい。トレ
ース割込みとは、1命令を実行する毎に、処理装置が自
分自身で割込みを発生させる機能である。従って、対象
プログラムであればそのプログラムを構成する全ステッ
プについて割込み処理プログラムが働き、対象が1ステ
ップであればそのステップ1回限りで割込み処理プログ
ラムが働く。
〔作 用〕
第1図は本発明の原理図であり、第1図を用いて説明
する。
1はプログラムの命令の並びを示し、2は処理装置の
実行順序を示している。
このプログラム1に対して、処理S4〜S7までの区間を
実行時間遅延区間を指定したとする。この指定がある
と、処理装置は、処理S4の先頭で割込み処理プログラム
の起動をかけて実行し、処理S7の最後尾で割込み処理プ
ログラムを終了させる割込みを行う。即ち、トレース割
込みを採用した場合には、処理装置は命令4を実行し、
割込み発生開始命令3を実行後、1命令実行終了毎に割
込みを発生する。割込み発生により処理装置は現在実行
しているプログラムの処理を中断し、割込み処理プログ
ラム5を実行する。割込み処理プログラム5では、任意
の時間処理を行い、割込み処理を終了する。
処理装置は割込み処理終了後、中断していたプログラ
ムの処理S5の実行を再開する。次の1命令4の実行終了
後、処理装置は再び割込みを発生させる。
以後、処理装置が割込み発生終了命令6を実行するま
で、割込み処理プログラム5を1命令毎に実行して行
く。
このことにより、プログラムの命令実行時間は、1命
令毎に割込み処理プログラム5を実行しているため、見
かけ上割込み処理プログラムの実行時間分だけ長くな
る。
〔実施例〕
以下、本発明をリソースの競合テストを用いた実施例
で、第3図、第4図、第5図、第7図により説明する。
リソースの競合テストとは、複数のプログラム間で共
有する資源へのアクセスの競合を発生させることによる
競合管理処理部分の相互排除についてのテストである。
本実施例では、命令を遅くする手段として処理装置の
割込みを使用する。第7図が計算機システムのブロック
図であり、第7図は処理装置101、主メモリ102、周辺装
置103より成る。処理装置101は命令制御ブロック104、
実行ユニット105より成り、命令制御部104の命令の読出
し、解読を受けて、実行ユニット105がその実行を行
う。実行ユニット105は、レジスタ群106、演算ユニット
108より成り、演算ユニット108より成り、演算ユニット
108は、レジスタ群106との間でデータの受渡しを行いな
がら所定の演算を行う。レジスタ群106中のステータス
レジスタ107が本実施例で重要な役割を果す。第3図が
割込み処理の概要である。一般に割込みは周辺装置103
が処理装置101にサービスを要求するときや主メモリ装
置102に格納しているプログラムを実行中に異常が発生
したとき、発生した異常に対応する主メモリ装置102に
格納している処理プログラムを実行するために使用され
ている。本実施例ではトレース割込みを使用する。
割込みが発生すると、処理装置101はどの処理プログ
ラムを実行するのかを識別するために各周辺装置103に
割り当てた割込みベクタ番号(割込み種別を示す信号)
を周辺装置103から受け取り、割込みベクタ番号から割
込み処理プログラムの先頭アドレスを格納している割込
みベクタアドレスを算出し、割込みベクタを読み込み、
割込み処理プログラムを実行する。
割込み処理により命令の実行速度を見かけ上遅くする
には、1命令の実行毎に割込みを発生し、時間遅延用
(例えばその間、何の実行も行わない処理であるノーオ
ペ処理)割込み処理プログラムを実行させ、割込み処理
プログラムで時間を遅延させることが必要である。
1命令の実行毎に割込みを発生させるには、処理装置
101の命令追跡機能(トレース割込み機能)を使用す
る。命令追跡機能のは、処理装置のステータスレジスタ
107の命令追跡ビットが1のとき、1命令の実行毎に、
処理装置101が割込みを発生させる機能である。この機
能を使用するため、第5図のプログラム1の競合管理処
理開始部分ISの直前に、ステータスレジスタ107の命令
追跡ビットを1にする処理を追加し、競合管理処理終了
部分IEの直後に、ステータスレジスタ107の命令追跡ビ
ットを0にする処理を追加する。
なお、命令の実行速度を遅くする区間は、割込みを発
生させる区間であるので、ステータスレジスタ107の命
令追跡ビットの操作処理の位置を変えることにより、命
令の実行速度を遅くする区間が任意に設定可能になる。
割込み発生時に割込み処理プログラムを実行させるに
は、割込みベクタへ割込み処理プログラムの先頭アドレ
スを登録することが必要であるので、命令追跡割込みの
割込みベクタ番号から割込みベクタのアドレスを算出
し、割込み処理プログラムの先頭アドレスを登録する。
第4図が割込み処理プログラムのフローチャートであ
る。割込み処理プログラムは見かけ上の命令の実行速度
を遅くするための時間稼ぎが目的であるため、ループ回
数を設定してループさせるだけで十分である。ループ回
数は命令を遅くする時間によって任意に設定可能であ
る。
また割込み処理プログラムは、目的が時間稼ぎに有る
ので、割込み処理プログラムに共用データの競合発生の
有無を監視させることも可能である。競合管理処理プロ
グラムは、1つのプログラムが共用データの更新処理中
に共用データを更新しようとした他のプログラムを待ち
状態にする。待ち状態にしたプログラムは、待ち状態を
管理するテーブルへ登録され、共用データを更新中のプ
ログラムが更新処理終了後に競合管理処理プログラムに
より、待ち状態から解放される。
したがって共用データの競合発生の有無は、待ち状態
を管理するためのデーブルを監視することで判断するこ
とができるので、割込み処理プログラムにこのテーブル
を監視させることにより、競合発生の有無を簡単に調べ
ることができ、テスト効率が向上する。競合発生時のテ
ーブルの内容を出力させることにより、デバック効率が
向上する。
また、割込みを発生させる代りに、ハード命令をソフ
トウェアでシミュレーションすることにより、命令の実
行速度を遅くすることも可能である。
1命令毎に割込みを発生させるために、処理装置の命
令追跡機能(デバック時のトレース割込みのこと)を使
用した。命令追跡機能では、ステータスレジスタ上にオ
ペレータの指定する割込み区間(第1図の例でのS4〜S7
の区間を云う)をセットするレジスタである。処理装置
はこのレジスタの指定データをみて割込みの起動及び終
了を指示する。そして処理装置のステータスレジスタの
命令追跡ビットが1のとき、1命令を実行する毎に割込
みを発生させる。このトレース割込み機能を使用するた
めの処理例を第5図に示す。第5図は、プログラム1に
割込みをかけ、プログラム2に割込みをかけない例を示
した。また、プログラム1は、第1図対応のS4〜S7の区
間の割込み例であり、S4〜S7の各実行後(τ12,…の
処理時間後)に、割込みプログラムの実行(T1)を行わ
せている例を示した。これにより、本来ならば競合発生
の確率は少ないのであるが、プログラム1の処理でわか
るように区間T3にわたって競合発生用の処理が生じたこ
とになり、意図的な競合発生を作り出せる。
以上の処理を実現するためには、第5図のプログラム
1の競合管理処理開始部分ISの直前に、ステータスレジ
スタの命令追跡ビットを1とする処理を追加し、競合管
理処理終了部分IEの直後に、ステータスレジスタの命令
追跡ビットを0に戻す処理を追加すればよい。
さて、第5図において、プログラム2は本発明を用い
ていないので、競合管理処理部分の実行時間T2はt=0.
5となる。プログラム2の全体の実行時間はt=10であ
り、実行中は他のプログラムが一様に実行できると仮定
すると、競合が発生する確率は、競合管理処理部分の実
行時間/全体の実行時間で表され、0.05となる。
しかし本発明を用いているプログラム1では、競合管
理処理部分の1命令の実行毎に割込み処理プログラムが
実行されているので、競合管理処理部分の実行時間T3
t=13となり、26倍長くなる。プログラム1の全体の実
行時間はt=21であるので、上記仮定の上で競合が発生
する確率を求めると0.62となり、本発明を用いていない
場合の12倍となる。
このように本発明により競合が発生する確率を高くす
ることができる。
次に本発明を負荷テストに用いた実施例で、第4図,
第6図を用いて説明する。
負荷テストとは、処理装置の負荷を増加させ、処理装
置によるプログラムの実行時間が激減したときの実行時
間が激減したプログラム及び他のプログラムへの影響に
ついてのテストである。
割込み処理プログラムは第4図のフローチャートを使
用する。
第6図を用いてプログラムの動作を説明する。
割込み発生区間はプログラム全体(IS〜IE)とする。
プログラム起動直後、一命令全体後毎に割込みが発生
する。このことによりプログラムの実行時間t1〜t2は、
(プログラムの処理時間ΣT1)+(割込み処理プログラ
ムの実行時間ΣT2)となる。よってプログラム一つだけ
しか動作していなくても、処理装置がプログラムの処理
を行っている割合は、ΣT1/(ΣT1+ΣT2)となり、割
込み処理プログラムのループ回数を変更することによ
り、割込み処理プログラムの実行時間T2を調節し、任意
の値の負荷でプログラムを実行することが容易に可能と
なる。
尚、以上の各実施例でトレース割込み例を使用した
が、その種類の割込みにより、実行時間を実質的に遅ら
せてもよい。
〔発明の効果〕
本発明によれば、特定プログラム又は特定プログラム
の特定処理の動作時間を任意の値まで遅くし、プログラ
ム毎の実行速度に差をつけることにより、複数プログラ
ムで共有されている資源に対し競合が発生する確率を高
くすることができる。したがって、従来困難であったリ
ソースの競合テストを容易に実施することができる。
また、プログラム全体の命令の実行速度を遅くするこ
とにより、少ないプログラムを実行することで処理装置
に多くの負荷が加わった状態にすることができる。
したがって少ないプログラムを実行することで、容易
に負荷テストを実施することができる。
【図面の簡単な説明】
第1図は本発明の原理図、第2図は共用データ更新のフ
ローチャート、第3図は割込み処理の概要を示すフロー
チャート、第4図は割込み処理プログラムのフローチャ
ート、第5図は本発明をリソースの競合テストに用いた
ときのタイムチャート、第6図は本発明を負荷テストに
用いたときのタイムチャート、第7図は本発明の計算機
システム図である。 1……タスクの命令の並び、2……処理装置の実行順
序、3……割込み発生開始命令、4……タスクの命令、
5……割込み処理プログラム。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 関 光平 茨城県日立市大みか町5丁目2番1号 日立プロセスコンピュータエンジニアリ ング株式会社内 (72)発明者 中島 宏 茨城県日立市大みか町5丁目2番1号 日立プロセスコンピュータエンジニアリ ング株式会社内 (72)発明者 大脇 隆志 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内 (72)発明者 大島 啓二 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内 (56)参考文献 特開 平1−113843(JP,A) 特開 昭63−175947(JP,A) 特開 平1−144135(JP,A) 特開 昭62−297937(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 11/28 - 11/34 G06F 12/00 535 G06F 15/16

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】複数のプログラム間で共有する資源へのア
    クセスの競合を発生させることにより競合管理処理部分
    の相互排除についてテストを行なう方法において、 排他制御が必要なプログラム間で共有する資源を複数の
    プログラムが操作時に、一部のプログラムの共有する資
    源を操作する処理部分に対し、競合発生確率を高めるた
    めの範囲を指定して指定した範囲の命令実行遅延処理を
    行なうことを特徴とするプログラムのテスト方法。
JP1297706A 1989-11-17 1989-11-17 プログラムのテスト方法 Expired - Lifetime JP2866410B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1297706A JP2866410B2 (ja) 1989-11-17 1989-11-17 プログラムのテスト方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1297706A JP2866410B2 (ja) 1989-11-17 1989-11-17 プログラムのテスト方法

Publications (2)

Publication Number Publication Date
JPH03158936A JPH03158936A (ja) 1991-07-08
JP2866410B2 true JP2866410B2 (ja) 1999-03-08

Family

ID=17850111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1297706A Expired - Lifetime JP2866410B2 (ja) 1989-11-17 1989-11-17 プログラムのテスト方法

Country Status (1)

Country Link
JP (1) JP2866410B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2013057769A1 (ja) * 2011-10-20 2015-04-02 富士通株式会社 情報処理装置、情報処理装置の制御方法および制御プログラム
WO2013057769A1 (ja) * 2011-10-20 2013-04-25 富士通株式会社 情報処理装置、情報処理装置の制御方法および制御プログラム
JP6447280B2 (ja) 2015-03-18 2019-01-09 富士通株式会社 情報処理装置、およびエミュレータプログラム

Also Published As

Publication number Publication date
JPH03158936A (ja) 1991-07-08

Similar Documents

Publication Publication Date Title
KR930000592B1 (ko) 타스크 추적장치
US4631674A (en) Active wait
JPS6258341A (ja) 入出力割込処理方式
JPH0535453B2 (ja)
JPH0535454B2 (ja)
US5247684A (en) Light update notification mechanism for shared data structures
JP2539913B2 (ja) デ―タ処理システム
CA2056356C (en) Interruption handling system
JP2866410B2 (ja) プログラムのテスト方法
KR102235142B1 (ko) 시간 집약적 명령의 처리
EP2630577B1 (en) Exception control in a multiprocessor system
JPH0877039A (ja) テスト方法
JPS61184643A (ja) 仮想計算機の起動制御方式
JP3022398B2 (ja) 仮想計算機方式
JP2550708B2 (ja) デバッグ方式
JPH0638238B2 (ja) 仮想計算機システム
JPH0754470B2 (ja) 仮想計算機システムの制御方法
JPH0391055A (ja) ハードウエアロックのセット方法、ハードウエアロック制御装置、ハードウエアロックの検出方法と装置
KR20200125633A (ko) 외부 예외 핸들링
JPS607295B2 (ja) デ−タ処理装置
JPH0567972B2 (ja)
JPS60225944A (ja) 仮想計算機システム
JPH0693225B2 (ja) 事象処理方式
JPH087689B2 (ja) タスク制御方式
JPH0348938A (ja) 仮想計算機方式