(57)【要約】【課題】プログラムの稼働状況をソースプログラムのステップ単位で容易に監視できるようにすること。【解決手段】稼働状況監視装置２０のＨＤ２２にインストールされた稼働状況監視プログラム２２ｂは、マッピングリスト２２ｃ及びリンケージリスト２２ｄ、動的マッピングリスト２２ｆを用いることにより、被監視コンピュータ１０のプログラムカウンタ１１ａから読み出された実行論理アドレスに基づいて、実行されているのがどのソースプログラムのどのステップなのかを特定し、特定されたステップについて実行回数をカウントし、その結果をディスプレイ２５上に稼働状況マップＭとして表示させる。稼働状況マップＭは、各ステップに一対一で対応する単位図形を格子状に並べて表示すると共に、各単位図形の輝度を対応するステップの実行回数に応じて変化させることにより、各ステップ毎の実行頻度を視認できるようにしている。【選択図】図１
2007328722.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実行されるプログラムの稼働状況を監視するための稼働状況監視プログラムであって、
コンピュータに、
ソースプログラムを機械語に翻訳してメモリ空間にマッピングした実行モジュールに含まれる機械語命令の実行を検知する検知機能と、
ソースプログラムの各ステップと前記実行モジュールの機械語命令との対応情報を記憶した定義リストを参照し、検知された機械語命令に相当するステップを特定するステップ位置特定機能と、
ソースプログラムの各ステップとステップ単位の実行回数との対応を定義した稼働状況マップ用データテーブルの、前記ステップ位置特定機能により特定されたステップの実行回数を加算し、該稼働状況マップ用データテーブルを更新する更新機能と、
各ステップに一対一で対応する単位図形を並べて表示すると共に、前記稼働状況マップ用データテーブルに記憶された内容に基づいて各単位図形の表示パターンを対応するステップの実行回数に応じて変化させることにより、各ステップ毎の実行頻度を視認できるようにした稼働状況マップを出力する出力機能と、
を実現させることを特徴とする稼働状況監視プログラム。
【請求項２】
前記ステップ位置特定機能は、実行された機械語命令の絶対アドレスに基づいて前記定義リストに含まれる、前記実行モジュールがマッピングされた前記メモリ空間内の絶対アドレスを定義したマッピングリストおよび動的マッピングリストを参照し、当該機械語命令が含まれるプログラムを特定し、当該絶対アドレスから実行モジュールの先頭の絶対アドレスを引いて得られた相対アドレスに基づいて、前記定義リストに含まれる、ソースプログラムの各ステップと当該ソースプログラムを機械語に翻訳して得られるロードモジュールの機械語命令の相対アドレスとの対応を定義したリンケージリストを参照し、当該機械語命令に該当するステップを特定する
ことを特徴とする請求項１に記載の稼働状況監視プログラム。
【請求項３】
前記検知機能は、前記実行モジュールが前記メモリ空間内の固定した絶対アドレスにマッピングされないような動的配置プログラムである時には、オペレーティングシステムが設定する、プログラム名と動的配置アドレスの対応情報に基づき、該実行モジュールに含まれる機械語命令の実行を検知することを特徴とする請求項１に記載の稼働状況監視プログラム。
【請求項４】
コンピュータに、
前記稼働状況マップデータから実行回数が所定の規定値以下のステップを抽出する抽出機能と、
抽出されたステップを特定する情報、及び当該ステップを含むプログラムを特定する情報とを一覧にして出力する一覧出力機能と、
を更に実現させることを特徴とする請求項１から３のいずれかに記載の稼働状況監視プログラム。
【請求項５】
コンピュータにより実行されるプログラムの稼働状況を監視するための稼働状況監視装置であって、
ソースプログラムを機械語に翻訳してメモリ空間にマッピングした実行モジュールに含まれる機械語命令の実行を検知する検知手段と、
ソースプログラムの各ステップと前記実行モジュールの機械語命令との対応を定義した定義リストを参照し、検知された機械語命令に相当するステップを特定するステップ位置特定機能と、
ソースプログラムの各ステップとステップ単位の実行回数との対応を定義した稼働状況マップ用データテーブルにおいて、前記ステップ位置特定機能により特定されたステップの実行回数を加算する更新手段と、
各ステップに一対一で対応する単位図形を並べて表示すると共に、前記稼働状況マップ用データテーブルの内容に基づいて各単位図形の表示パターンを対応するステップの実行回数に応じて変化させることにより、各ステップ毎の実行頻度を視認できるようにした稼働状況マップを出力する出力手段と、
を備えることを特徴とする稼働状況監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で実行されるプログラムの稼働情報を監視するための機能をコンピュータに付与する稼働状況監視プログラムに関する。
【背景技術】
【０００２】
コンピュータを業務に使用している多くの私企業／自治体などでは、業務や組織の変化に応じて新しいプログラムが追加され、かつ、既存のプログラムを削除するにはリスクが伴うため、時間の経過と共にプログラムの本数が増加する傾向がある。ただし、プログラム本数が増加しても、実際に業務で稼働しているプログラムはその一部でしかない場合がある。このような場合には、実際に使用しないプログラムに対して保守費用を支払ったり、ストレージ装置の容量を無駄に消費するという問題がある。
【０００３】
このため、従来から、システムに含まれるプログラムの稼働状況を監視し、稼働していないプログラムを削除対象としてリストアップする方法が提案されている。例えば、特許文献１には、オペレーティングシステムによって実行されるプロセスについての情報を、プログラム・インタフェースを利用して収集し、プロセスの実行状況を監視する監視手段と、監視手段が収集する情報に含まれるアプリケーション・ソフトウエアについてのプロセスの実行状況を集計して、アプリケーション・ソフトウエアの稼働実績を生成する生成手段とを含む稼働状況監視装置が開示されている。
【０００４】
【特許文献１】特開２００４−２５９０３６号公報  段落００１４
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示されるような従来の装置は、稼働状況をプロセス単位、あるいは、プログラム単位でしか監視できず、実際に業務に使用される部分がプログラム中のほんの一部であり、他の大部分が使用されないようなプログラムもそのまま残すしかないという問題がある。ストレージ装置の有効利用やプログラムの実行速度の向上を図るためには、上記のようなプロセス単位、プログラム単位での稼働状況の監視では不十分であり、ソースプログラムのステップ単位での稼働状況の把握が求められている。
【０００６】
なお、ソースプログラムのステップ単位の監視が必要な場合、従来はプログラマーが机上でソースプログラムを分析したり、運用しているシステムにトレース用のプログラムを埋めて実行される行を調査したり、あるいは、ＣＰＵエミュレータにより緻密な走行アドレスを調査していた。ただし、いずれの方法も、技術的には非常に困難な作業を伴い、コンピュータの高度な専門家ではない利用者側で実施するのは困難であった。
【０００７】
本発明は、上記の従来技術の問題点に鑑みてなされたものであり、その課題は、コンピュータの高度な専門家ではない利用者側でも、プログラムの稼働状況をソースプログラムのステップ単位で容易に監視することができる装置としてコンピュータを機能させるプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明にかかる稼働状況監視プログラムは、上記の課題を解決するため、コンピュータにより実行されるプログラムの稼働状況を監視するためのプログラムであって、コンピュータに、ソースプログラムを機械語に翻訳してメモリ空間にマッピングした実行モジュールに含まれる機械語命令の実行を検知する検知機能と、ソースプログラムの各ステップと実行モジュールの機械語命令との対応情報を記憶した定義リストを参照し、検知された機械語命令に相当するステップを特定するステップ位置特定機能と、ソースプログラムの各ステップとステップ単位の実行回数との対応を定義した稼働状況マップ用データテーブルの、ステップ位置特定機能により特定されたステップの実行回数を加算し、稼働状況マップ用データテーブルを更新する更新機能と、各ステップに一対一で対応する単位図形を並べて表示すると共に、稼働状況マップ用データテーブルに記憶された内容に基づいて各単位図形の表示パターンを対応するステップの実行回数に応じて変化させることにより、各ステップ毎の実行頻度を視認できるようにした稼働状況マップを出力する出力機能と、を実現させることを特徴とする。
【０００９】
上記の定義リストは、ソースプログラムのステップと実行モジュールの機械語命令との対応を直接関連付けるものであってもよいが、ソースプログラムの各ステップと当該ソースプログラムを機械語に翻訳して得られるロードモジュールの機械語命令の相対アドレスとの対応を定義したリンケージリストと、実行モジュールがマッピングされたメモリ空間内の絶対アドレスを定義したマッピングリストとの２つのリストから構成する方が汎用性が高くなる。後者の場合、ステップ位置特定機能は、実行された機械語命令の絶対アドレスに基づいてマッピングリストを参照し、当該機械語命令が含まれるプログラムを特定し、当該絶対アドレスから実行モジュールの先頭の絶対アドレスを引いて得られた相対アドレスに基づいてリンケージリストを参照し、当該機械語命令に該当するステップを特定することができる。
【００１０】
さらに、実行モジュールがマッピングされるメモリ空間内の絶対アドレスが動的に定義される動的配置プログラムの場合、上記の定義リストとして、動的なマッピングを保持する動的マッピングリストと、ソースプログラムの各ステップと当該ソースプログラムを機械語に翻訳して得られるロードモジュールの機械語命令の相対アドレスとの対応を定義したリンケージリストとを用意すれば、ステップ位置特定機能は、実行された機械語命令の絶対アドレスに基づいて動的マッピングリストを参照し、当該機械語命令が含まれるプログラムを特定し、当該絶対アドレスから実行モジュールの動的に配置された先頭の絶対アドレスを引いて得られた相対アドレスに基づいてリンケージリストを参照し、当該機械語命令に該当するステップを特定することができる。
【００１１】
また、本発明の稼働状況監視プログラムは、コンピュータに、稼働状況マップデータから実行回数が所定の規定値以下のステップを抽出する抽出機能と、抽出されたステップを特定する情報、及び当該ステップを含むプログラムを特定する情報とを一覧にして出力する一覧出力機能と、をさらに実現させることが望ましい。
【００１２】
上記の出力機能は、コンピュータに接続されたディスプレイ上に稼働状況マップを表示させ、単位図形の輝度又は色を実行回数に合わせて変化させることが望ましい。稼働状況マップは、紙にプリントアウトしてもよい。
【００１３】
さらに、本発明の稼働状況監視プログラムは、任意のステップが指定された際に、当該ステップを含むプログラムの全ステップに対応する単位図形を他の実行モジュールのステップに対応する単位図形に対して区別できるように表示させる識別表示機能を含むことが望ましい。
【発明の効果】
【００１４】
以上のように構成された本発明のプログラムによれば、コンピュータの実際の運用時に、ソースプログラムのステップ単位で実行回数をカウントし、これを目に見える形で出力できるため、コンピュータの高度な専門家ではない利用者側でも、プログラムの稼働状況をソースプログラムのステップ単位で容易に監視することができる。したがって、ステップ単位でプログラムの修正や削除をする際の判断資料を提供することができる。また、日々の稼働状況をリアルタイムで監視することができるため、任意の時点で、不要プログラムや未使用ステップを削除することができる。
【００１５】
また、定義リストをマッピングリストとリンケージリストとに分けた場合には、マッピングリストは当該コンピュータに特有の構成となるが、リンケージリストは当該プログラムについて共通となり、他のコンピュータ上で実行される場合にも利用することができる。このようなリンケージリストは、ソースプログラムを機械語に翻訳(コンパイル、及びリンク)した際に翻訳プログラムから出力されるものを利用することができる。
【００１６】
抽出機能及び一覧表示機能を持たせた場合には、実行頻度の少ないステップを自動的に抽出し、利用者に提示することができる。利用者は、一覧に基づいて不要なステップを削除したり、プログラムのロジックを再検討したりすることができる。
【００１７】
さらに、識別表示機能を持たせた場合には、稼働状況マップから、特定のステップがどのプログラムに含まれるステップであるかを容易に判断することできる。したがって、アクセスがない、あるいは、少ないステップが集中している箇所を稼働状況マップ上で発見した時に、これらのステップがどのプログラムのステップであるのか、容易に判別することができ、プログラム単位の稼働状況を把握して削除判断の基準に供することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明にかかる稼働状況監視プログラム及びこれを適用した稼働状況監視装置の実施形態を図面に基づいて説明する。最初に、図１に基づいて本実施形態の稼働状況監視プログラムが適用されるコンピュータシステムの概要を説明する。図１に示されるように、このコンピュータシステムは、ネットワーク、あるいはパラレル、シリアル通信を介して互いに接続された被監視コンピュータ１０と、この被監視コンピュータの稼働状況を監視する稼働状況監視装置(コンピュータ)２０とから構成される。
【００１９】
被監視コンピュータ１０は、ＣＰＵ１１、並びにこのＣＰＵ１１に接続されたハードディスク(ＨＤ)１２、メモリ(ＲＡＭ)１３及び通信アダプタ１４を備えている。ＨＤ１２には、オペレーティングシステム１２ａと、ＣＰＵ１１が実行している機械語命令の論理アドレスをカウントするプログラムカウンタ１１ａの値を逐次読み取るプログラムカウンタ読み出し処理ユニット１５と、動的配置プログラム情報テーブル１２ｂと、複数のアプリケーションプログラム１２ｃとがインストールされている。被監視コンピュータ１０が起動すると、ＣＰＵ１１はＨＤ１２からオペレーティングシステム１２ａをＲＡＭ１３上に読み出して実行し、プログラムカウンタ読み出し処理ユニット１５と、このオペレーティングシステム上で必要なアプリケーションプログラム１２ｃとを起動する。
【００２０】
オペレーティングシステム１２ａは、ＨＤ１２の所定の領域を利用することにより、ＲＡＭ１３の限られた物理メモリ領域を拡張した論理メモリ空間を管理している。物理アドレスと論理アドレスとの変換はオペレーティングシステム１２ａにより自動的に実行される。実行物理アドレスは、以下の計算により実行論理アドレスに変換される。
実行論理アドレス＝実行物理アドレス−プログラム展開先先頭物理アドレス
＋プログラム先頭論理アドレス
【００２１】
また、オペレーティングシステム１２ａは、ＲＡＭ１３の限られた物理メモリ領域を拡張した論理メモリ空間に動的配置プログラムを配置して実行するために、例えば、以下の表１に示されるように、動的配置するプログラム名と配置アドレスを動的配置プログラム情報テーブル１２ｂに管理している。当該プログラム名と配置先頭論理アドレスの記録はオペレーティングシステム１２ａにより自動的に実行される。
【００２２】
【表１】
2007328722.tif 000003
【００２３】
アプリケーションプログラム側では論理アドレスのみを考慮すれば足りるため、以下、論理メモリ空間を基準にして、論理アドレスに基づいて説明する。プログラムカウンタ１１ａは、ＣＰＵ１１が実行している機械語命令の実行論理アドレスを示すカウンタであり、ＣＰＵ１１に接続されたプログラムカウンタ読み出し処理ユニット１５は、この実行論理アドレスを読み出して稼働状況監視装置２０に送信する。
同様にプログラムカウンタ読み出し処理ユニット１５は、動的配置プログラム情報テーブル１２ｂの動的配置プログラム名及び配置先論理アドレスを読み出して稼働状況監視装置２０に送信する。
【００２４】
また、本明細書では、COBOLやC言語等の高級言語で書かれたコードをソースプログラム、これを機械語に翻訳(コンパイル及びリンク)して得られるモジュールをロードモジュール、このロードモジュールが被監視コンピュータ１０の論理メモリ空間にロードされたものを実行モジュールとして区別する。ソースプログラムでは、各ステップ位置は当該ソースプログラム先頭を起点とした相対ステップ位置で表され、ロードモジュールでは、各機械語命令位置はモジュール先頭を起点とした相対アドレスで表され、実行モジュールでは、各機械語命令位置は論理メモリ空間の先頭を起点とした絶対アドレスで表される。なお、「実行論理アドレス」、「先頭論理アドレス」等の「論理アドレス」の文字を含むアドレスは、いずれも論理メモリ空間の絶対アドレスを示し、ロードモジュール内のアドレスを示す相対アドレスとは区別される。
【００２５】
稼働状況監視装置２０は、ＣＰＵ２１、並びにこのＣＰＵ２１に接続されたＨＤ２２、ＲＡＭ２３及び通信アダプタ２４、ディスプレイ２５を備えている。ＨＤ２２には、オペレーティングシステム２２ａと、被監視装置１０のプログラム稼働状況を監視する稼働状況監視プログラム２２ｂとがインストールされると共に、この稼働状況監視プログラムに利用されるマッピングリスト２２ｃ及びマッピングリスト２２ｆ、リンケージリスト２２ｄ、そして、稼働状況監視プログラム２２ｂの出力を記録する稼働状況マップ用データテーブル２２ｅが保存されている。
【００２６】
マッピングリスト２２ｃ及びリンケージリスト２２ｄは、ソースプログラムの各ステップと実行モジュールの機械語命令との対応を定義した定義リストに相当する。マッピングリスト２２ｃは、実行モジュールがマッピングされたメモリ空間内の絶対論理アドレスを定義したものであり、例えば、以下の表２に示されるように、被監視コンピュータ１０により実行されている各実行モジュールの論理メモリ空間への展開先の先頭論理アドレスと終了論理アドレスとを定義している。
【００２７】
【表２】
2007328722.tif 000004
【００２８】
一方、リンケージリスト２２ｄは、ソースプログラムの各ステップと当該ソースプログラムを機械語に翻訳して得られるロードモジュールの機械語命令の相対アドレスとの対応を定義したものであり、表２に示された各プログラム毎に定義されている。例えば、上記の表２のプログラムAAAAについて、以下の表３に示されるようなリンケージリスト２２ｄが用意される。リストには、各ステップに相当する機械語命令の先頭相対アドレスと終了相対アドレス、先頭ステップを０とした相対ステップ位置、そして、総ステップ数が含まれている。ソースプログラムの１ステップに対しては、通常複数行の機械語命令が対応するため、以下のように先頭、終了相対アドレスを定義することにより、各ステップに相当する機械語命令の範囲を示している。
【００２９】
【表３】
2007328722.tif 000005
【００３０】
稼働状況監視プログラム２２ｂは、上記のマッピングリスト２２ｃ及びリンケージリスト２２ｄを用いることにより、被監視コンピュータ１０のプログラムカウンタ読み出し処理ユニット１５から出力される実行論理アドレスに基づいて、実行されているのがどのソースプログラムのどのステップなのかを特定する。すなわち、実行論理アドレスに基づいてマッピングリスト２２ｃを参照することにより、当該実行論理アドレスに割り当てられた機械語命令が含まれるプログラムを特定できる。そして、この実行論理アドレスから実行モジュールの先頭論理アドレスを引いて得られた相対アドレスに基づいてリンケージリスト２２ｄを参照することにより、当該機械語命令に該当するステップを特定することができる。
【００３１】
稼働状況監視プログラム２２ｂは、実行時に動的にロードモジュールがメモリ空間に配置されるプログラムの場合、メモリ空間における配置先のアドレスなどを管理するために、以下の表４に示されるような動的マッピングリスト２２ｆが用意される。被監視コンピュータ１０のプログラムカウンタ読み出し処理ユニット１５から出力される実行論理アドレスに基づいて、動的マッピングリスト２２ｆをあらかじめ更新しておき、後にプログラムカウンタ読み出し処理ユニット１５から出力される実行論理アドレスに基づいて動的マッピングリスト２２ｆを参照することにより、当該実行論理アドレスに割り当てられた機械語命令が含まれるプログラムを特定できる。そして、この実行論理アドレスから実行モジュールの配置先頭論理アドレスを引いて得られた相対アドレスに基づいてリンケージリスト２２ｄを参照することにより、当該機械語命令に該当するステップを特定することができる。
【００３２】
【表４】
2007328722.tif 000006
【００３３】
稼働状況監視プログラム２２ｂは、特定されたステップについて実行回数をカウントし、その結果を稼働状況マップ用データテーブル２２ｅに保存すると共に、このテーブルのデータに基づいてディスプレイ２５上に図１に示すような稼働状況マップＭを表示させる。稼働状況マップ用データテーブル２２ｅは、マッピングリスト２２ｃ及び動的マッピングリスト２２ｆに定義されている全ての実行モジュールについて、ソースプログラムのステップ毎に実行回数を保存しており、例えば、以下の表５に示されるように、動的配置プログラムも含めて全ソースプログラムを通してユニークな通番としてつけられた絶対ステップ位置と、個々のソースプログラム毎につけられた相対ステップ位置と、ステップ毎の実行回数とを対応づけて記録している。表５では、表２のプログラムAAAAに含まれるステップが二重線で囲まれている。
【００３４】
【表５】
2007328722.tif 000007
【００３５】
稼働状況マップＭは、各ステップに一対一で対応する正方形の単位図形を格子状に並べて表示すると共に、稼働状況マップ用データテーブル２２ｅの内容に基づいて各単位図形の表示パターンを対応するステップの実行回数に応じて変化させることにより、各ステップ毎の実行頻度を視認できるようにしている。この例では、図２に示すように、実行回数に応じて各単位図形の輝度(図面では濃淡で示されている)を変化させるようにしている。なお、表示パターンの変化としては、グレースケールの輝度のみでなく、色を変化させてもよし、点滅の周波数を変化させてもよい。また、ディスプレイ２５に表示させるのみでなく、図示せぬプリンタから用紙にプリントアウトしてもよい。
【００３６】
稼働状況マップＭの単位図形は、表５に示す絶対ステップ位置に対応しており、図中の上から下、左から右、に向けて絶対ステップ位置が増加するよう配置されている。すなわち、図３に示すように、左上端の単位図形が絶対ステップ位置０のステップに相当し、中央上端の単位図形が絶対ステップ位置30000のステップに相当している。利用者は、ディスプレイ２５に表示された稼働状況マップＭを見ることにより、ステップ単位で実行頻度を確認することができる。
【００３７】
また、利用者が稼働状況マップＭ上で特定のステップ、例えば実行頻度が少ないステップを指定すると、稼働状況監視プログラム２２ｂは、図３に示すように、指定された単位図形に対応するステップを含む実行モジュールの全ステップを他の実行モジュールのステップに対して区別できるように枠Ｆで囲んで表示し、そのプログラム名をラベルＬとしてマップ中に表示させる。これにより、利用者は、指定したステップがどのプログラムに含まれるものであるか、容易に判断でき、プログラム単位の稼働状況を把握して削除判断の基準に供することができる。なお、ステップの指定は、マウス等のポインティングデバイスを用いて画面上で指定できるようにしてもよいし、絶対ステップ位置を数値で指定してもよい。
【００３８】
続いて、図４〜図１４に示すフローチャートに基づいて、実施形態の被監視コンピュータ１０と稼働状況監視装置２０とで実行される処理の流れについて説明する。図４、図５は、被監視コンピュータ１０の処理を示し、図６〜図１４は、稼働状況監視装置２０上で実行される稼働状況監視プログラム２２ｂの処理内容を示す。また、図６〜図１１は、稼働状況監視装置２０側で稼働状況マップを表示する処理を示し、図１２及び図１３は、稼働状況監視装置２０側で稼働状況マップデータから実行回数が所定の規定値以下のステップを抽出する抽出してプログラムを特定する情報を出力する一覧出力機能に関する処理を示し、図１４は、指定されたステップを含む実行モジュールを区別できるように表示させる識別表示機能に関する処理を示す。
【００３９】
被監視コンピュータ１０のプログラムカウンタ読み出し処理ユニット１５は、プログラムカウンタ１１ａの実行論理アドレスを読み出して稼働状況監視装置２０に送信する。すなわち、プログラムカウンタ読み出し処理ユニット１５は、図４に示すように、プログラムカウンタ１１ａにアドレスの書き込みがあるのを待ち(S001)、書き込みがあった場合にはプログラムカウンタ１１ａの実行論理アドレスを読み込み(S002)、稼働状況監視装置２０に送信する(S003)。
また、プログラムカウンタ読み出し処理ユニット１５は、図５に示すように、動的配置プログラム情報テーブル１２ｂに動的配置プログラム名及び配置先論理アドレスの書き込みがあるのを待ち(S011)、書き込みがあった場合には動的配置プログラム情報テーブル１２ｂの動的配置プログラム名及び配置先論理アドレスを読み込み(S012)、稼働状況監視装置２０に送信する(S013)。
【００４０】
稼働状況監視装置２０の稼働状況監視プログラム２２ｂは、図６に示すように、監視コンピュータ１０から発せられた実行論理アドレスを受信するのを待ち(S101)、受信するとこれを読み込む(S102)。続いて、図９に示すステップ位置特定処理(S103)、図１０に示す稼働状況マップデータ更新処理(S104)、図１１に示す該当ステップ位置表示処理(S105)のサブルーチンを順に実行する。S101の処理は機械語命令の実行を検知する検知機能に該当する。また、図９の処理は、検知された機械語命令に相当するステップを特定するステップ位置特定機能、図１０の処理は、特定されたステップの実行回数を加算する更新機能、図１１の処理は、稼働状況マップを出力する出力機能にそれぞれ該当する。
【００４１】
以上に加えて稼働状況監視プログラム２２ｂは、動的配置プログラムの起動時には、図７に示すように、監視コンピュータ１０から発せられた動的配置プログラム名及び配置先論理アドレスを受信するのを待ち(S111)、受信するとこれを読み込む(S112)。続いて、図８に示す動的マッピングリスト更新処理(S113)のサブルーチンを実行する。
【００４２】
図８に示す動的マッピングリスト更新処理は、S121で読み込まれた配置先論理アドレスが動的マッピングリスト２２ｆに記憶済か否かを、表４に示されたプログラムの先頭から配置先頭論理アドレスと終了論理アドレスとの間の範囲に含まれるか否かを判断し(S122, S123)また記憶済の場合は当該論理アドレスが別の動的配置プログラムに割当てられていたか否かを判断(S124)して、動的マッピングリスト２２ｆに記憶される情報を更新するための処理である。当該情報を更新する場合はまず、動的配置プログラムに対応したリンケージリストにより終了相対アドレスを読み出す(S125)。読み出した終了相対アドレスを配置先論理アドレスに加算したアドレスＷ_addを算出し(S126)、動的マッピングリスト２２ｆに動的配置プログラム名および配置先論理アドレス、アドレスＷ_addをセットする(S127)。同一プログラムが複数アドレスに配置されることもあるため、配置先頭論理アドレスが異なれば作用するという以上の方式であれば漏れなく情報を追加出来る。
【００４３】
図９に示すステップ位置特定処理は、S102で読み込まれた実行論理アドレスに相当するソースプログラム上のステップを特定するための処理である。まず、計算に使う変数「検索済プログラムステップ数総和S」を０にリセットし(S201)、読み出した実行論理アドレスX_addを用いてマッピングリスト２２ｃを検索する(S202)。ここでは、表２に示されたプログラムの先頭から、実行論理アドレスX_addが当該プログラムの先頭論理アドレスと終了論理アドレスとの間の範囲に含まれるか否かを判断し(S203)、含まれない場合には検索済プログラムステップ数総和Sに当該プログラムの総ステップ数を加算し(S204)、マッピングリスト２２ｃにあるすべてのプログラムを検索(S210)し、範囲に当てはまるプログラムが見つかるまでS202〜S204の処理を繰り返す。
【００４４】
実行論理アドレスが該当するプログラムが見つかると、稼働状況監視プログラム２２ｂは、表２に示すマッピングリスト２２ｃからプログラム名を抽出し(S205)、この実行論理アドレスが当該プログラムのどのステップに該当するかを判断するため、実行論理アドレスX_addからこのプログラム(実行モジュール)の先頭論理アドレスを減算し、相対アドレスY_addを求める(S206)。このとき図１０の処理で動的配置ではない固定配置のプログラムの処理をするために動的配置プログラム表示をOFFに設定する(S216)。そして、求められた相対アドレスY_addを用いてリンケージリスト２２ｄをステップ順に検索し(S207)、この相対アドレスY_addがリンケージリスト２２ｄの先頭相対アドレスと終了相対アドレスとの間の範囲内となるか否か判断する(S208)。S208の条件を満たすまでS207,S208の処理を繰り返し、相対ステップ位置が範囲内となるステップが見つかると、リンケージリスト２２ｄからそのステップの相対ステップ位置を抽出し(S209)、図５の処理に戻る。
【００４５】
S210の条件でマッピングリスト２２ｃに当該プログラムがない場合、動的配置プログラムとして読み出した実行論理アドレスX_addを用いて動的マッピングリスト２２ｆを検索する(S211)。ここでは、表４に示されたプログラムの先頭から、実行論理アドレスX_addが当該プログラムの配置先頭論理アドレスと配置終了論理アドレスとの間の範囲に含まれるか否かを判断し(S212)、S212の条件を満たすまでS211,S212の処理を繰り返し、実行論理アドレスX_addが範囲内となるプログラムが見つかると、動的マッピングリスト２２ｆからそのプログラム名を抽出し(S213)、実行論理アドレスX_addからこのプログラム(実行モジュール)の配置先頭論理アドレスを減算し、相対アドレスY_addを求める(S214)。このとき図１０の処理で動的配置プログラムの処理をするために動的配置プログラム表示をONに設定し(S215)、S207から処理を行う。
【００４６】
図１０に示す稼働状況マップデータ更新処理は、ステップ位置特定処理により特定されたステップについて、表５に示される稼働状況マップ用データテーブル２２ｅの実行回数を更新するための処理である。S215 またはS216でONまたはOFFにセットされた動的配置プログラム表示を判定(S305)し、OFF(Yes)の場合はステップ位置特定処理により特定された相対ステップ位置を絶対ステップ位置に変換するため、検索済ステップ数総和Sを読み出し(S301)、相対ステップ位置を読み出す(S302)。S305の条件判定でON(No)であった場合、稼働状況マップ用データテーブル２２ｅからこの動的配置プログラムとプログラム名が一致する絶対ステップ位置の先頭位置を求めて検索済ステップ数総和Sに設定する(S306)。総和Sは、実行されたステップが含まれるソースプログラムの先頭の絶対ステップ位置を示すため、これに相対ステップ位置を加算することにより、当該ステップの絶対ステップ位置が特定される(S303)。そして、特定されたステップの実行回数に１を加える(S304)。これにより、稼働状況マップ用データテーブルが更新される。
【００４７】
続いて、図１１に示す該当ステップ位置表示処理では、検索済ステップ数総和Sに相対ステップ位置を加算して絶対ステップ位置を求め(S401)、稼働状況マップ用データから当該ステップのアクセス回数Xを読み出し(S402)、図２に示す輝度チャートに基づいて実行回数Ｘに該当する輝度を決定し(S403)、稼働状況マップＭの該当ステップの単位図形を決定された輝度に設定する(S404)。
【００４８】
以上の図５〜図１１の処理を繰り返すことにより、プログラムのステップが実行される毎に、稼働状況マップ用データテーブル２２ｅ内の実行回数が更新されると共に、ディスプレイ２５に表示された稼働状況マップＭの単位図形の輝度が変化する。利用者は、予め定めた一定時間上記の処理を実行させることにより、被監視コンピュータ１０にインストールされたプログラムの稼働状況をステップ単位で把握することができる。
【００４９】
次に、ディスプレイ２５に表示された稼働状況マップＭを利用して実行回数が所定の回数以下のステップを抽出する処理について、図１２及び図１３に基づいて説明する。まず、利用者が抽出の閾値となる実行回数Yを設定する(S501)。稼働状況監視プログラム２０ｂは、この実行回数Yに基づいて稼働状況マップ用データテーブル２２ｅを１ステップずつ配置順に検索する(S502)。
【００５０】
すなわち、対象となるステップの実行回数を稼働状況マップ用データテーブル２２ｅから読み出し、これが閾値Y以下であるか否かを判断する(S503)。閾値以下である場合には、稼働状況マップ用データテーブル２２ｅから絶対ステップ位置を抽出し(S504)、図１３に示すプログラム名特定処理を実行する(S505)。この処理については後述する。プログラム名が特定されると、このプログラム名と該当ステップの実行回数とを保持し(S506)、稼働状況マップ用データテーブル２２ｅから該当ステップの相対ステップ位置を抽出して保持する(S507)。実行回数が閾値Yより大きい場合(S503, No)には、S504〜S507のステップ特定のための処理はスキップされる。これらS502〜S507の処理が、稼働状況マップ用データテーブル２２ｅに登録された全てのステップについて実行され、実行回数が閾値Ｙ以下であるステップが全て抽出される。
【００５１】
稼働状況マップ用データテーブル２２ｅに登録された全てのステップについて実行回数のチェックが終了すると(S508, Yes)、保持されたプログラム名、相対ステップ位置、実行回数を全て読み出す(S509, S510, S511)。そして、読み出したプログラム名、相対ステップ位置、実行回数の一覧を出力する(S512)。一覧はディスプレイ２５上に表示してもよいし、用紙にプリントアウトしてもよい。利用者は、この一覧を参考にして実行回数が少ないステップについてこのステップを含むロジックを見直したり、あるいは、実行回数が０のステップを削除するなど、一覧を個々のソースプログラム内部の冗長部分を解消するための資料として利用することができる。
【００５２】
S505で実行されるプログラム名特定処理では、図１３に示されるように、S504で抽出された絶対ステップ位置が、いずれのプログラムに含まれるステップであるかを特定する処理である。まず、検索済プログラムステップ数総和Sを０にリセットし(S601)、絶対ステップ位置を読み出す(S602)。次に、マッピングリスト２２ｃを配置順に検索し、リンケージリスト２２ｄから各プログラムの総ステップ数を１プログラム分ずつ順に抽出する(S603)。
【００５３】
そして、抽出された１つのプログラムの総ステップ数を検索済プログラムステップ数総和Sに加算し(S604)、絶対ステップ位置がこの総和Sより小さいか否かを判断する(S605)。絶対ステップ位置は、このステップが含まれるプログラムより前に配置されたプログラムのステップ数の総和より大きく、このステップが含まれるプログラムの総ステップ数を更に加えたステップ数より小さくなる。このため、上記のようにプログラム単位で総ステップ数を加算しながら絶対ステップ位置が総和Sより小さくなったか否かを判断すれば、小さくなった時点で、最後に加算されたプログラムに当該絶対ステップ位置で示されるステップが含まれることが判明する。そこで、このプログラムのプログラム名をマッピングリスト２２ｃから抽出し(S606)、図１２の処理に戻る。
【００５４】
次に、図１４に示すプログラム位置表示処理について説明する。この処理は、図５に示した監視側表示処理を実行してディスプレイ２５上に稼働状況マップＭが表示された状態で、特定のステップに相当する単位図形を指定することにより、このステップを含むプログラムのマップ上での範囲と、プログラム名とを表示するための処理である。
【００５５】
絶対ステップ位置に基づいてプログラム名を特定するS701〜S707の処理は、図１３に示すプログラム名特定処理と同一である。ただし、図１４の処理では、当該プログラムの先頭を示す絶対ステップ位置を特定するため、当該プログラムの総ステップ数を加算する前の検索済プログラムステップ数総和Sの値をワークWに保存するS704の処理が加えられている。
【００５６】
S707でプログラム名が抽出されると、先のワークWに保存した絶対アドレス位置を当該プログラムの先頭の絶対アドレス位置とし、当該プログラムの総ステップ数を加えた総和Sで表される絶対アドレス位置を当該プログラムの最終の絶対アドレス位置として設定する(S708)。そして、稼働状況マップＭ上で先頭の絶対アドレス位置に相当する単位図形から、最終の絶対アドレス位置に相当する単位図形までを図３に示すような枠Ｆで囲い(S709)、プログラム名をラベルＬとして枠に付記する(710)。これにより、利用者は、絶対ステップ位置で表されるステップを含むプログラムの範囲とプログラム名とをディスプレイ２５上に表示された稼働状況マップMにより確認することができ、プログラム単位の稼働状況を把握して削除判断の基準に供することができる。
【００５７】
（付記１）
コンピュータにより実行されるプログラムの稼働状況を監視するための稼働状況監視プログラムであって、
コンピュータに、
ソースプログラムを機械語に翻訳してメモリ空間にマッピングした実行モジュールに含まれる機械語命令の実行を検知する検知機能と、
ソースプログラムの各ステップと前記実行モジュールの機械語命令との対応情報を記憶した定義リストを参照し、検知された機械語命令に相当するステップを特定するステップ位置特定機能と、
ソースプログラムの各ステップとステップ単位の実行回数との対応情報を記憶する稼働状況マップ用データテーブルの、前記ステップ位置特定機能により特定されたステップの実行回数を加算し、該稼働状況マップ用データテーブルを更新する更新機能と、
各ステップに一対一で対応する単位図形を並べて表示すると共に、前記稼働状況マップ用データテーブルに記憶された内容に基づいて各単位図形の表示パターンを、対応するステップの実行回数に応じて変化させることにより、各ステップ毎の実行頻度を視認できるようにした稼働状況マップを出力する出力機能と、
を実現させることを特徴とする稼働状況監視プログラム。（１）
【００５８】
（付記２）
前記ステップ位置特定機能は、実行された機械語命令の絶対アドレスに基づいて前記定義リストに含まれる、前記実行モジュールがマッピングされた前記メモリ空間内の絶対アドレスを定義したマッピングリストおよび動的マッピングリストを参照し、当該機械語命令が含まれるプログラムを特定し、当該絶対アドレスから実行モジュールの先頭の絶対アドレスを引いて得られた相対アドレスに基づいて、前記定義リストに含まれる、ソースプログラムの各ステップと当該ソースプログラムを機械語に翻訳して得られるロードモジュールの機械語命令の相対アドレスとの対応を定義したリンケージリストを参照し、当該機械語命令に該当するステップを特定する
ことを特徴とする付記１に記載の稼働状況監視プログラム。（２）
【００５９】
（付記３）
前記検知機能は、前記実行モジュールが前記メモリ空間内の固定した絶対アドレスにマッピングされないような動的配置プログラムである時には、オペレーティングシステムが設定する、プログラム名と動的配置アドレスの対応情報に基づき、該実行モジュールに含まれる機械語命令の実行を検知する
ことを特徴とする付記１に記載の稼働状況監視プログラム。（３）
【００６０】
（付記４）
コンピュータに、
前記稼働状況マップデータから実行回数が所定の規定値以下のステップを抽出する抽出機能と、
抽出されたステップを特定する情報、及び当該ステップを含むプログラムを特定する情報とを一覧にして出力する一覧出力機能と、
を更に実現させることを特徴とする付記１から３のいずれかに記載の稼働状況監視プログラム。（４）
【００６１】
（付記５）
前記出力機能は、コンピュータに接続されたディスプレイ上に前記稼働状況マップを表示させ、前記単位図形の輝度又は色を実行回数に合わせて変化させる
ことを特徴とする付記１または２に記載の稼働状況監視プログラム。
【００６２】
（付記６）
コンピュータに、
任意のステップが指定された際に、当該ステップを含むプログラムの全ステップに対応する単位図形を他の実行モジュールのステップに対応する単位図形に対して区別できるように表示させる識別表示機能
を更に実現させることを特徴とする付記５に記載の稼働状況監視プログラム。
【００６３】
（付記７）
コンピュータにより実行されるプログラムの稼働状況を監視するための稼働状況監視装置であって、
ソースプログラムを機械語に翻訳してメモリ空間にマッピングした実行モジュールに含まれる機械語命令の実行を検知する検知手段と、
ソースプログラムの各ステップと前記実行モジュールの機械語命令との対応情報を記憶した定義リストを参照し、検知された機械語命令に相当するステップを特定するステップ位置特定手段と、
ソースプログラムの各ステップとステップ単位の実行回数との対応情報を記憶する稼働状況マップ用データテーブルの、前記ステップ位置特定機能により特定されたステップの実行回数を加算し、該稼働状況マップ用データテーブルを更新する更新手段と、
各ステップに一対一で対応する単位図形を並べて表示すると共に、前記稼働状況マップ用データテーブルに記憶された内容に基づいて各単位図形の表示パターンを対応するステップの実行回数に応じて変化させることにより、各ステップ毎の実行頻度を視認できるようにした稼働状況マップを出力する出力手段と、
を実現させることを特徴とする稼働状況監視プログラム。（５）
【００６４】
（付記８）
前記ステップ位置特定手段は、実行された機械語命令の絶対アドレスに基づいて前記定義リストに含まれる、前記実行モジュールがマッピングされた前記メモリ空間内の絶対アドレスを定義したマッピングリストおよび動的マッピングリストを参照し、当該機械語命令が含まれるプログラムを特定し、当該絶対アドレスから実行モジュールの先頭の絶対アドレスを引いて得られた相対アドレスに基づいて、前記定義リストに含まれる、ソースプログラムの各ステップと当該ソースプログラムを機械語に翻訳して得られるロードモジュールの機械語命令の相対アドレスとの対応を定義したリンケージリストを参照し、当該機械語命令に該当するステップを特定する
ことを特徴とする付記７に記載の稼働状況監視装置。
【００６５】
（付記９）
前記検知手段は、前記実行モジュールが前記メモリ空間内の固定した絶対アドレスにマッピングされないような動的配置プログラムである時には、オペレーティングシステムが設定する、プログラム名と動的配置アドレスの対応情報に基づき、該実行モジュールに含まれる機械語命令の実行を検知する
ことを特徴とする付記７に記載の稼働状況監視装置。
【００６６】
（付記１０）
前記稼働状況マップデータから実行回数が所定の規定値以下のステップを抽出する抽出手段と、
抽出されたステップを特定する情報、及び当該ステップを含むプログラムを特定する情報とを一覧にして出力する一覧出力手段と、
を更に備えることを特徴とする付記７から９のいずれかに記載の稼働状況監視装置。
【００６７】
（付記１１）
前記出力手段は、コンピュータに接続されたディスプレイ上に前記稼働状況マップを表示させ、前記単位図形の輝度又は色を実行回数に合わせて変化させる
ことを特徴とする付記７または８に記載の稼働状況監視装置。
【００６８】
（付記１２）
任意のステップが指定された際に、当該ステップを含むプログラムの全ステップに対応する単位図形を他の実行モジュールのステップに対応する単位図形に対して区別できるように表示させる識別表示手段
を更に備えることを特徴とする付記１１に記載の稼働状況監視装置。
【００６９】
（付記１３）
コンピュータにより実行されるプログラムの稼働状況を監視するための稼働状況監視装置が、
ソースプログラムを機械語に翻訳してメモリ空間にマッピングした実行モジュールに含まれる機械語命令の実行を検知する検知ステップと、
ソースプログラムの各ステップと前記実行モジュールの機械語命令との対応情報を記憶した定義リストを参照し、検知された機械語命令に相当するステップを特定するステップ位置特定ステップと、
ソースプログラムの各ステップとステップ単位の実行回数との対応情報を記憶する稼働状況マップ用データテーブルの、前記ステップ位置特定機能により特定されたステップの実行回数を加算し、該稼働状況マップ用データテーブルを更新する更新ステップと、
各ステップに一対一で対応する単位図形を並べて表示すると共に、前記稼働状況マップ用データテーブルに記憶された内容に基づいて各単位図形の表示パターンを対応するステップの実行回数に応じて変化させることにより、各ステップ毎の実行頻度を視認できるようにした稼働状況マップを出力する出力ステップと、
を実行することを特徴とする稼働状況監視方法。
【００７０】
（付記１４）
前記ステップ位置特定ステップは、実行された機械語命令の絶対アドレスに基づいて前記定義リストに含まれる、前記実行モジュールがマッピングされた前記メモリ空間内の絶対アドレスを定義したマッピングリストおよび動的マッピングリストを参照し、当該機械語命令が含まれるプログラムを特定し、当該絶対アドレスから実行モジュールの先頭の絶対アドレスを引いて得られた相対アドレスに基づいて、前記定義リストに含まれる、ソースプログラムの各ステップと当該ソースプログラムを機械語に翻訳して得られるロードモジュールの機械語命令の相対アドレスとの対応を定義したリンケージリストを参照し、当該機械語命令に該当するステップを特定する
ことを特徴とする付記１３に記載の稼働状況監視方法。
【００７１】
（付記１５）
前記検知ステップは、前記実行モジュールが前記メモリ空間内の固定した絶対アドレスにマッピングされないような動的配置プログラムである時には、オペレーティングシステムが設定する、プログラム名と動的配置アドレスの対応情報に基づき、該実行モジュールに含まれる機械語命令の実行を検知する
ことを特徴とする付記１３に記載の稼働状況監視方法。
【００７２】
（付記１６）
前記稼働状況マップデータから実行回数が所定の規定値以下のステップを抽出する抽出ステップと、
抽出されたステップを特定する情報、及び当該ステップを含むプログラムを特定する情報とを一覧にして出力する一覧出力ステップと、
を更に実行することを特徴とする付記１３から１５のいずれかに記載の稼働状況監視方法。
【００７３】
（付記１７）
前記出力ステップは、コンピュータに接続されたディスプレイ上に前記稼働状況マップを表示させ、前記単位図形の輝度又は色を実行回数に合わせて変化させる
ことを特徴とする付記１３または１４に記載の稼働状況監視方法。
【００７４】
（付記１８）
任意のステップが指定された際に、当該ステップを含むプログラムの全ステップに対応する単位図形を他の実行モジュールのステップに対応する単位図形に対して区別できるように表示させる識別表示ステップ
を更に実行することを特徴とする付記１７に記載の稼働状況監視方法。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施形態にかかる稼働状況監視プログラムが適用されるコンピュータシステムを示すブロック図である。
【図２】図１に示す稼働状況監視装置のディスプレイに表示される単位図形の輝度チャートである。
【図３】図１に示す稼働状況監視装置のディスプレイに表示される稼働状況マップの説明図である。
【図４】図１に示す被監視コンピュータの処理を示すフローチャートである。
【図５】図１に示す被監視コンピュータの処理を示すフローチャートである。
【図６】図１に示す稼働状況監視装置で実行される監視側表示処理を示すフローチャートである。
【図７】図１に示す稼働状況監視装置で実行される被監視側処理を示すフローチャートである。
【図８】図７に含まれる動的マッピングリスト更新処理を示すフローチャートである。
【図９】図６に含まれるステップ位置特定処理を示すフローチャートである。
【図１０】図６に含まれる稼働状況マップ用データ更新処理示すフローチャートである。
【図１１】図６に含まれる該当ステップ位置表示処理を示すフローチャートである。
【図１２】図１に示す稼働状況監視装置で実行される監視側検索処理を示すフローチャートである。
【図１３】図１２に含まれるプログラム名特定処理を示すフローチャートである。
【図１４】図１に示す稼働状況監視装置で実行されるプログラム位置表示処理を示すフローチャートである。
【符号の説明】
【００７６】
１０  被監視コンピュータ
１１  ＣＰＵ
１１ａ  プログラムカウンタ
１２  ＨＤ
１２ａ  オペレーティングシステム
１２ｂ  動的配置プログラム情報テーブル
１２ｃ  アプリケーションプログラム
１３  ｒａｍ
１４  通信アダプタ
１５  プログラムカウンタ読み出し処理ユニット
２０  稼働状況監視装置
２１  ＣＰＵ
２２  ＨＤ
２２ａ  オペレーティングシステム
２２ｂ  稼働状況監視プログラム
２２ｃ  マッピングリスト
２２ｄ  リンケージリスト
２２ｅ  稼働状況マップ用データテーブル
２２ｆ  動的マッピングリスト
２３  ＲＡＭ
２４  通信アダプタ
２５  ディスプレイ
【図１】
2007328722.tif 000008
【図２】
2007328722.tif 000009
【図３】
2007328722.tif 000010
【図４】
2007328722.tif 000011
【図５】
2007328722.tif 000012
【図６】
2007328722.tif 000013
【図７】
2007328722.tif 000014
【図８】
2007328722.tif 000015
【図９】
2007328722.tif 000016
【図１０】
2007328722.tif 000017
【図１１】
2007328722.tif 000018
【図１２】
2007328722.tif 000019
【図１３】
2007328722.tif 000020
【図１４】
2007328722.tif 000021