JPH0793183A - プログラム分析のためのフック命令実行方法及びデータ処理システム - Google Patents

プログラム分析のためのフック命令実行方法及びデータ処理システム

Info

Publication number
JPH0793183A
JPH0793183A JP5199434A JP19943493A JPH0793183A JP H0793183 A JPH0793183 A JP H0793183A JP 5199434 A JP5199434 A JP 5199434A JP 19943493 A JP19943493 A JP 19943493A JP H0793183 A JPH0793183 A JP H0793183A
Authority
JP
Japan
Prior art keywords
hook
instruction
program
execution
hwa
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.)
Granted
Application number
JP5199434A
Other languages
English (en)
Other versions
JP2539161B2 (ja
Inventor
Alan I Alpert
アラン・イアン・アルパート
Carl E Clark
カール・エドワード・クラーク
Michel H T Hack
マイケル・ヘンリ・テオドア・ハック
Casper A Scalzi
キャスパー・アンソニー・スカルジ
Richard J Schmalz
アール・ジェイ・シュマルツ
Bhaskar Sinha
バースカー・シンハ
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0793183A publication Critical patent/JPH0793183A/ja
Application granted granted Critical
Publication of JP2539161B2 publication Critical patent/JP2539161B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 一意に制御されるフック命令と分析プログラ
ムの間に動的実行リンクを提供すること。 【構成】 新規の動的実行リンクはフック操作に対する
OSの関与を排除し、OSをフック命令の実行にリンク
するために従来使用されていた割込みを排除する。した
がって、本発明の動的実行リンクは各使用可能フック命
令から分析プログラムへの非割込み接続、及び分析プロ
グラムからフックされたプログラムへの非割込み接続を
もたらす。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は1つまたは複数のプログ
ラムを実行しながら、これらに関する統計情報、状態情
報またはデバッグ情報を効率的に収集し、生成する方法
及び手段に関する。
【0002】
【従来の技術】フック・プログラム(hooked program)
の実行に関する統計及び状態の情報の収集に使用される
S/370モニタ呼出し(MC)命令(及びその他のフ
ック命令)は、従来技術で説明されている。S/370
モニタ呼出し命令は「Enterprise System Architecture
/390」(資料番号:SA22−7201−00)という
既存の刊行物の第7−33ないし第7−34ページで説
明されている。モニタ呼出し命令が実行され、制御レジ
スタ8の対応するモニタ・マスク・ビットが1にセット
されると、プログラム割込みが生じる。モニタ・マスク
・ビットが0であると、MC命令に対する割込みは生じ
ない。MC命令のビット12−15(I2フィールドと
呼ぶ)は16の監視クラスの内の1つを指定する数字を
含んでいる。このクラスに対応したモニタ・マスク・ビ
ットが1にセットされると、モニタ事象プログラム割込
みが生じる。MC命令のフィールドB1、D1の最初の
オペランドはアドレスではないが、モニタ・コードを形
成し、このコードはシステム・メモリ・ワード位置15
6に格納され、プログラムの各MC命令に対する独自の
識別を可能とする。
【0003】本明細書において、「フック・プログラ
ム」とは(従来のMC命令がその一例である)フック命
令を含んでいる任意のプログラムと定義される。使用可
能なフック命令はこれらを含んでいるフック・プログラ
ム内で実行され、プログラムの特性を分析し、プログラ
ムに関する実行統計を収集し、プログラムの状態を監視
し、プログラムの実行中に存在する、分岐アドレスの検
出、プロセッサの状態、汎用レジスタの内容、システム
・メモリ内のプログラムやデータの位置、実行時間の記
録、あるいはフック命令の実行頻度などのその他の状態
を検出する。プログラムの選択された実行点における時
間、状態、特性及び位置の情報の収集は、実行プログラ
ムのデバッグ及びプログラムの作動の効率の決定に有用
なものである。
【0004】各使用可能MC命令は、オペレーティング
・システム(OS)にフック・プログラムの現在のディ
スパッチを終了させる割込み信号を生成することによっ
て、そのフック・プログラムからOSソフトウェアへプ
ロセッサの制御を渡す。次いで、OSは分析プログラム
(監視プログラム)を呼び出して、割込みMC命令に関
してフック・プログラムに対して存在するシステム及び
プロセッサの状態を分析する。分析プログラムの実行
後、OSはフック・プログラムを再ディスパッチし、M
C命令後に該プログラムの実行を継続する。割込みはフ
ック・プログラムの状態をセーブするが、この状態は割
込みに対するすべての処理が完了した後、OSによって
復元される。
【0005】フック・プログラムの割込み及び再ディス
パッチ(フックの使用可能なMC命令のタイプによる)
は、フック・プログラムのパフォーマンスを大幅に低下
させる。このようなタイプのフックを含んでいるプログ
ラムは一般に、プログラム・パフォーマンスの大幅な低
下が比較的短時間であるテスト操作に対して認められる
テスト環境においてのみ実行される。本発明は使用可
能、使用不能にかかわりなく、フック命令による再ディ
スパッチに対するプログラムの割込み及びOSの介入を
防止する。
【0006】MC命令を含んでいるフック・プログラム
の場合、OSはすべてのマスク・ビットをオフにし、フ
ック・プログラム内のすべてのMC命令を使用不能と
し、これによって、MC割込みによって引き起こされる
割込みオーバヘッドなしの実行を可能とする。あるい
は、OSは選択的に、マスク・ビットのあるものを使用
可能とし、他のものを使用不能として、MC命令のいく
つかが制御をOSが制御する分析プログラムに渡すこと
を選択的に可能とする。
【0007】従来の分析プログラムはIBM Insp
ectプログラムであり、これにはIBMが資料番号S
C26−4530−0で刊行している「Inspect for C/
370and PL/1 - Using INSPECT」という資料がある。I
nspectプログラムはC/370及びPL/1プロ
グラムを分析し、デバッグするために使用される。S/
390モニタ呼出し(MC)命令がフック・プログラム
(Inspectプログラムによる分析対象のプログラ
ム)の選択された点に挿入され、使用可能とされている
場合に、この命令によって、Inspectを呼出し、
フック・プログラムに関する分析及びデバッグ情報を生
成する。
【0008】
【発明が解決しようとする課題】この分野のその他の従
来技術には、同様な分析機能を達成するための組込み呼
出し、オーバレイ・トラップ、及びモニタ命令などがあ
る。
【0009】組込み呼出しはサブルーチン・リンクとし
て使用される。これらが使えるのは、所定の点において
のみであって、呼出しシーケンスは分析されているプロ
グラムの状態の一部を妨害する。実行オーバヘッドは最
小限であるが、通常、特権を広げることはできない。
【0010】モニタ呼出し(MC)命令や監視プログラ
ム呼出し(SVC)命令と同様オーバレイ・トラップは
割込みオーバヘッドを引き起こし、制御プログラムが分
析されているプログラムの状態を収集し、復元すること
を必要とする。これには大量の実行オーバヘッドを要す
るが、状態の妨害はほとんど、あるいはまったくない。
分析されているプログラムから分析プログラムへの特権
切換えは、制御プログラム(オペレーティング・システ
ム)が関与することによってのみ行われる。
【0011】従来のモニタ命令は条件付きトラップを引
き起こし、これは分析プログラムの実行を不能とするた
めに、マスクがセットされた場合に、システム・オーバ
ヘッドを防止する。分析プログラムの実行を可能とする
ようにマスクがセットされた場合、多量の実行オーバヘ
ッドを引き起こす制御プログラムの割込みをもたらす。
【0012】
【課題を解決するための手段】本発明は一意に制御され
るフック命令と分析プログラムの間に動的実行リンクを
提供する。新規の動的実行リンクはフック操作に対する
OSの関与を排除し、OSをフック命令の実行にリンク
するために従来使用されていた割込みを排除する。した
がって、本発明の動的実行リンクは使用可能な各フック
命令から分析プログラムへの割込みのない接続、及び逆
に分析プログラムからフック・プログラムへの割込みの
ない接続をもたらす。
【0013】本発明の動的実行リンクは分析プログラム
の作動効率を大幅に改善することができる。本発明によ
る分析プログラムの割込みのない呼出しは、プログラム
分析、プログラム監査、プログラム追跡、フック・プロ
グラムのデバッグなどに使用した場合に、フック・プロ
グラムに関する情報をより効率的に収集することができ
る。
【0014】本発明が提供する新規の実行リンクは、分
析プログラムがフック・プログラム(分析対象プログラ
ム)の全体の状態を妨げない態様で、フック・プログラ
ムとの間で制御を動的に授受することを可能とする。フ
ック・プログラム(分析対象プログラム)あるいは分析
プログラムのいずれにも割り込むことなくフック・プロ
グラムから分析プログラムへ制御を動的に転送する本発
明のプロセスを、本明細書では従来技術の「割込みフッ
ク」と対照区別して、「非割込みフック」と呼ぶ。
【0015】本発明はフック命令によるプログラム割込
みから生じるオペレーティング・システムによるディス
パッチ及び再ディスパッチも排除し、これは使用可能な
フック・プログラム及び分析プログラムの実行効率の大
幅な改善に寄与する。
【0016】本発明はフック・プログラムの実行に対す
る割込みを必要とすることなく、分析プログラムの実行
を、使用可能な各フック命令に付加する。一方、各従来
技術のモニタ呼出し(MC)命令の実行はフック・プロ
グラムに割り込み、オペレーティング・システム(O
S)ソフトウェアにフック・プログラムのディスパッチ
を解除し、分析プログラムをディスパッチさせる。分析
プログラムの実行後、従来技術では分析プログラムがO
Sにアクセスし、OSがこの分析プログラムをディスパ
ッチ解除し、フック・プログラムをディスパッチして、
MC命令の後でその実行を継続する。各MC命令の割込
みならびにその結果もたらされるディスパッチ解除及び
ディスパッチは、不必要なOSオーバヘッドをもたらす
が、これは本発明によって排除される。
【0017】本発明が提供する非割込みリンクは保全性
チェックを含んでおり、これは通常のプログラム・リン
クで生じる問題に対する保護を行う。
【0018】本発明の非割込みリンクはプロセッサ実行
制御に直接組み込まれた許可及び状況格納制御を含んで
おり、これらはOSを必要としない。本発明は、フック
・プログラムと分析プログラムの間において、本発明の
使用可能フック命令の双方向での連続的でスムースな実
行の遷移をもたらす。システムの保全性はプロセッサに
直接組み込まれた制御によって保存される。これらの制
御をプロセッサに直接組み込むと、フック命令と分析プ
ログラムの間の従来の割込みリンクを凌駕する、本発明
による非割込みリンクの主要なパフォーマンス上の利点
をもたらす。
【0019】本発明は任意の数の分析プログラム、ある
いは共通システム・メモリ内の同一の分析プログラムを
使用して、複数のプロセッサによって分析される任意の
数のフック・プログラムの同時実行を可能とする。これ
には複数のディスパッチ可能なユニットのもとで、ある
いは単一のディスパッチ可能なユニットのもとでサブス
ペースと共に実行されるプログラムが含まれる。
【0020】詳細にいうと、本発明はさまざまなタイプ
のフック命令を提供する。1つのタイプは多数のフック
番号を指定することのできる命令オペランドを有してい
る。フック・プログラムにおいて、このタイプのフック
命令を実行する場合に、プロセッサ・マスク・フィール
ドで、フック番号を使用可能(使用不能)としないこと
も、あるいはいずれかを使用可能(使用不能)とするこ
ともできる。このタイプのフック命令によって実行され
る分析プログラムは、そのためにOSサービスを呼び出
さずに、フック命令に対するマスク・フィールドの設定
を直接セット、リセット、あるいは変更することができ
る。それ故、分析プログラムにプロセッサの制御が与え
られた場合、該プログラムはどのフック命令タイプ番号
を使用可能とするか、あるいはどれを使用不能とするか
を直接制御することができる。たとえば、端末装置のと
ころにいるプログラマは分析プログラムと通信して、指
定されたフック番号に対するマスク変更を制御すること
ができる。
【0021】本発明が提供する他のタイプのフック命令
はマスクなしに作動する。このマスクレス・フック命令
に必要なものは操作コードだけであり、それ故、命令長
は短くなる。これにはフック番号を指定する機能はな
い。その使用目的はもともとフックを含むように設計さ
れておらず、フックが後で考えられたプログラム、ある
いはフックを備えているが、それが以前に計画されてい
た位置にないプログラムを監視するためである。これら
の小さい(2バイト)フック命令はオーバレイ・コード
によって、これらが常に使用可能とされると考えられる
必要な監視点のみに挿入される。本発明のマスク可能な
タイプのフック命令と同様に、本発明のマスクレス・タ
イプのフック命令もいかなるOSサービスを使用も、呼
出しもしない。既存のコードをオーバレイすることによ
るフックの挿入がフック・プログラムの実行に問題を引
き起こすことがあるので、本発明はそのマスクレス・フ
ック命令に、そのマスク・タイプのフック命令に対する
ものよりも厳密な実行基準を設ける。
【0022】本発明によって割込み及び再ディスパッチ
を排除すると、フック・プログラムの作動状態に対する
妨害が最小となる。状態の妨害が最小であることは、特
にフック命令がフック・プログラム内の多数の場所に配
置されている場合に、どのような実行状態がこれらの場
所に存在しているかを正確に判定するためには、監視操
作の精度上極めて重要である。
【0023】本発明の非割込みリンクは、定義され、制
御されているが直接分岐する機構を備えている。この機
構は、動的に割り当てられたフック作業域(HWA)を
採用しており、本発明の操作で使用するためには事前割
り振りされていることが好ましい。最善のパフォーマン
スを得るためには、これらを動的に事前割り振りする必
要がある。事前割振りHWAはこの場合でも、フック命
令の実行時に必要に応じて動的に割り当てられる。
【0024】さらに、本発明は実行中のフック・プログ
ラムによる修正アクセス(これは分析プログラムを変更
する)に対する分析プログラムのための記憶保護をサポ
ートする。本発明は分析プログラムのアクセスをフック
・プログラムに与えるとともに、フック・プログラムが
分析プログラムにアクセスするための機構を除去(また
は少なく)する制御を備えている。
【0025】さらに、本発明は異なるプロセッサないし
同一のプロセッサで個別に実行される複数のフック・プ
ログラムによる分析プログラム(読取り専用コードから
なる)への非同期入力を可能とする。任意の数のフック
命令が分析プログラムを同時に実行できるようにするの
であれば、分析プログラムは再帰的でなければならな
い。各フック命令は分析プログラムを、その入口点から
終了フック戻り命令まで実行する。したがって、任意の
時点で、分析プログラムはいくつかの異なるフック命令
に対して実行され、この場合、各実行は同時に分析プロ
グラム内の異なる命令で行われる。このような各実行は
個別の独自の作業域に関連づけられる。
【0026】すべての並行して実行される複数のフック
・プログラム、分析プログラム、及びフック作業域は同
じアドレス空間に配置され、これらの間のアドレス可能
度をもたらすものであることが好ましい。異なるフック
・プログラムを、マルチプロセッシング動作するマルチ
プロセッサ・システムの異なるプロセッサで、あるいは
マルチプログラミング作動をする同一プロセッサで実行
するとができる。
【0027】しかしながら、分析プログラムは多重仮想
記憶アドレス空間で実行されるフック・プログラムもサ
ポートできる。フック・プログラムのこのクロス・メモ
リ・サポートは、フック命令に対するHWAを、フック
・プログラム自体と同じアドレス空間に配置することに
よって達成される。マスク命令とともにフックを使用す
ると、多重仮想記憶アドレス空間で実行されるプログラ
ムがデバッグが行われるこれらの仮想アドレス空間を選
択的に選ぶことができる。
【0028】複数のフック・プログラムが複数の異なる
プロセッサで同時に稼動している場合、それぞれのプロ
セッサの汎用レジスタ(GR)は分析プログラムの実行
の各インスタンス、ならびにそれぞれのフック命令に対
して現在関連しているHWAを追跡する。任意の数のそ
れぞれのプロセッサにおけるこれらのGRは、異なるプ
ロセッサで実行される異なるフック・プログラムの、同
時実行される任意の数のフック命令に対して、分析プロ
グラムを再帰的に操作するのに必要な関連性を維持す
る。
【0029】それ故、本発明はコンピュータ・システム
内で次の4つのタイプの構成要素を利用するのが好まし
い。
【0030】1.各々が本発明の提供する1つまたは複
数の特別なタイプのフック命令を含んでおり、並行に実
行できる1つまたは複数のフック・プログラム。
【0031】2.フック・プログラムで実行される各フ
ック命令ごとに当該フック・プログラムの局面を監視ま
たは分析する分析プログラム。(分析プログラムがそれ
ぞれのフック命令に対して実行されている間はフック命
令は「実行中」とみなされる。)
【0032】3.一連のフック作業域(HWA)。HW
Aは使用可能なフック命令の「実行のインスタンス」に
割り当てられ、HWAが関連づけられている「インスタ
ンス」の時点でのフック・プログラムの既存の状態情報
を受け取る。
【0033】4.プロセッサの割込みを必要とすること
なく、フック命令後に、分析プログラムの実行に制御を
与えるために必要なリンク情報、ならびに分析プログラ
ムの実行終了時にフック・プログラムの実行の継続をも
たらすためのフック制御域。
【0034】HWAは連鎖され、連鎖の最初のHWAは
フック制御域からアドレスされ、フック・プログラムで
実行される現行のフック命令への割当てのためのHWA
を見つけだす。プロセス内フック・フラグがHWAロッ
ク・フィールドとして、各HWAに与えられる。現行の
フック命令に対するHWAの割当ては、HWAの連鎖内
で非ロック状態のプロセス内フック・フラグを有してい
る最初のHWAを探索することによって行われる。次い
で、プロセス内フック・フラグは直ちに、ロック状態に
セットされ、HWAの内容が割り当てられ、他のフック
命令に利用できないことを示す。分析プログラムが関連
するフック命令に対して実行を終了しない限り、ロック
状態は保持される。関連するフック命令に対する分析プ
ログラムによる実行が終了し、HWAの内容がフック・
プログラムへの復帰に備えて使用されると同時に、プロ
セス内フック・フラグは非ロック状態にセットされ、特
定のHWAが他のフック命令の実行による選択及び使用
のため再度利用できることを示す。
【0035】したがって、連鎖内の複数のHWAは複数
の異なるあるいは同一のフック・プログラム内の複数の
同時実行されるフック命令に対して同時にロック状態と
なることができる。これが生じるのは、プログラムがオ
ペレーティング・システム内で非同期出口を確立してい
るから、あるいはマルチプロセッシング・システムでマ
ルチタスクが行われているからである。フック命令の実
行によってHWAにおかれる情報は、関連するフック命
令の実行についての情報の分析、収集及び記録のために
使用される。
【0036】本発明はフック・プログラムによって現在
実行されているフック命令の操作コードを解釈してアク
セスされるハードウェアもしくはマイクロコード(HD
W/MCD)を使用する。マイクロコードはコンピュー
タ・システムの「内部コード」と呼ばれることがある。
このハードウェアもしくはマイクロコードは一般に何ら
かのフック・プログラムによって明示的にアドレスでき
ないメモリ域やレジスタを使用する。
【0037】フック命令の各実行に対して、システム・
フック制御は分析プログラムの入口点への暗示ブランチ
・アドレスをもたらす(フック命令自身はいかなる分岐
アドレス・オペランドも含んでいない)。フック命令を
実行しているプロセッサにおいて、この暗示ブランチ・
アドレスはフック命令の操作コードの解釈の一部とし
て、プロセッサ制御域から汎用レジスタ(たとえば、G
R15)にロードされる。暗示ブランチ・アドレスに使
用されるGRの元の内容はまずHWAに格納される。
【0038】フック命令の実行はHWAが見つかり、割
り当てられた場合に、その命令に対するHWAのアドレ
スを、他の暗示的に割り当てられたGR(たとえば、G
R4)にロードすることも含んでいる。GRにHWAの
アドレスをロードする前に、その内容がHWAに格納さ
れるので、フック・プログラムに戻った場合に、その元
の内容を復元することができる。さらに、フック命令の
実行は命令を実行しているときにプロセッサ内に存在し
ているプログラム状況ワード(PSW)に暗示的にアク
セスも行い、現行のフック命令に割り当てられた関連す
るHWAにPSWを格納する。格納されたPSWはフッ
ク・プログラム内で現行のフック命令の後に続く命令の
アドレスを含んでおり、分析プログラムからフック・プ
ログラムに戻ることが可能となる。
【0039】フック・プログラムに対するPSWの状態
はフック戻り命令を実行する分析プログラムによって、
分析プログラムからフック・プログラムの実行へ戻る手
段としてリセットされる。
【0040】分析プログラムは各実行フック命令に対し
てその入口点から論理的に完了するまで実行される。分
析プログラムの終わりには独自のフック戻り命令が設け
られ、これは分析プログラムの実行の対象となっていた
フック・プログラムへプロセッサの制御を戻すのに必要
な制御を与える。フック戻り命令はプロセッサの制御
を、分析プログラムからフック・プログラム内の次の命
令(HWAが格納したPSWによってアドレスされる、
最後に実行されたフック命令の後の命令である)に切り
換える。このアドレス切換えはフック戻り命令の操作コ
ードを解釈することによって呼び出されるハードウェア
もしくはマイクロコードによって行われる。
【0041】分析プログラム(及びその対応するコー
ド)によって生成される情報のタイプは、従来技術で使
用されるフック命令によって与えられる任意の周知のタ
イプの情報でかまわない。プロセッサは任意の情報を監
視、分析などに後で使用するためにメモリの区域に格納
することができる。
【0042】フック命令の本発明による実行はフック・
プログラムまたは分析プログラムいずれかの内部の正規
の、ただし任意のOSディスパッチ解除の影響を受けな
い。ディスパッチ解除では、フック・プログラムまたは
分析プログラムからオペレーティング・システムへ非同
期的に抜けることによって通常引き起こされるいずれか
のプログラム内でのディスパッチをOSが終了し、プロ
セッサを他のプログラム(フック・プログラムでも、分
析プログラムでもないもの)にディスパッチする。これ
は分析プログラムのフックによる実行に直接関係しない
事象、たとえば優先順位の高いプログラムのディスパッ
チを後で行う入出力またはタイマ割込みの結果として生
じる。結局、OSはディスパッチ解除されたプログラム
を再ディスパッチする。このような非同期事象はフック
・プログラムや分析プログラムのいずれの作動にも影響
を及ぼさない。プログラムの再ディスパッチは同一のプ
ロセッサ、または異なるプロセッサで行われ、これによ
って、プログラムが非同期割込みの時点で実行を終了す
るあらゆる点で、選択したプロセッサが実行をピックア
ップすることが可能となる。
【0043】このような非同期ディスパッチは、同時に
実行されるプロセッサによる複数のフック命令に対する
分析プログラムの並行実行のすべてのインスタンスにお
けるこのプログラムの作動によって収集されるデータの
保全性に影響を及ぼさない。分析プログラム(読取り専
用コードからなる)は、任意の数のフック・プログラム
を呼び出すことによって、再帰的に(同時に)かつ非同
期的に実行できる。したがって、本発明によって、フッ
ク命令に対して分析プログラムが生成するデータの保全
性に影響を及ぼすことなく、分析プログラム及び各フッ
ク・プログラムにいつでも、そのフック命令あるいはそ
の分析対象プログラムの実行に関係のない事象によって
割り込むことができる。このような無関係な割込みは、
たとえば、入出力、外部事象、タイマ及びその他の割込
みに対して生じる。それ故、いつでも、複数のフック・
プログラムの間の調整を必要とすることなく、任意の数
の現在実行されているプログラムに対して、分析プログ
ラムを非同期的に実行することができる。本発明はこの
ような各並行フック実行に対して個別のHWAを提供す
る。
【0044】分析プログラムあるいは何らかのフック・
プログラムを実行しているプロセッサに対する割込みの
ディスパッチは、あらゆる他のプログラムに対する割込
みを処理するのと同じ態様でオペレーティング・システ
ム(OS)によって処理される。何らかの割込みがあっ
た場合、関連する割込みがクリアされしだい、割込みを
受けたプログラムの実行をそれ自体の個別の記憶域で継
続するために、OSは戻り位置及びプログラム状態を格
納する。ここで重要なことは、フック命令自体がプロセ
ッサの作動に割込みをなんら生じないということであ
る。
【0045】フック命令を受け取る分析プログラム、制
御域、及び作業域(HWA)を実行中のフック・プログ
ラムから分離し、前者が後者によって格納されないよう
にすることが好ましい。本発明はフック・プログラムま
たはそのフック命令が分析プログラム、制御域、あるい
は作業域(HWA)に対する明示的なアドレス可能度を
有することを必要としないことによって、このような分
離をサポートする。S/390システムにおいて、分析
プログラムにはフック・プログラムに割り当てられてい
ない記憶キーを割り当て、フック・プログラムとHWA
を保護することができる。システム制御によって指定さ
れているとおり、S/390システムのフック命令及び
フック戻り命令中に記憶アクセス・キーを変更し、分析
プログラム、フック制御域、及びHWAに対して保護を
与えることができる。
【0046】フック・プログラムを特願平4−1064
73号(米国で1991年6月6日出願の米国特許願第
710875号)の共用記憶キー(PSK)をこれらに
割り当てることによって分離することができ、分析プロ
グラム、HWA及び制御域をすべてが同一のアドレス空
間にある1つまたは複数の非PSKのもとで稼動させる
ことができる。さらに、フック・プログラムは特願平5
−6915号(米国で1992年6月3日出願の米国特
許願第847521号)記載のサブスペースの発明を使
用して、この環境のPSKのもとの異なる仮想アドレス
・サブスペースで作動することができる。後者の場合、
暗示的に指定されて使用されるHWAはフック・プログ
ラムと同じサブスペース内にある。さらに、サブスペー
ス環境において、異なる分析プログラムを同じ基本空間
の異なるサブスペースに対して呼び出すことができる。
しかしながら、フックされた適用業務、分析プログラ
ム、HWA及び制御域を本発明によって指定されるよう
に作動させる場合、本発明はPSKやサブスペース環境
を必要としない。
【0047】フック命令の実行の各「インスタンス」に
は、このフック命令の実行のために収集された情報を分
析プログラムが格納する独自のHWAが割り当てられ
る。同じフック命令が実行されるたびに、異なるHWA
を割り当てることができるし、またHWAに格納された
状態が同一のフック命令の実行のたびに異なっていても
かまわない。
【0048】
【実施例】
(a)詳細な実施例の一般的な作動:本発明の好ましい
実施例はESA/390アーキテクチャの環境にフック
・マスク(HKM)命令及びフック・アンマスク(HK
U)命令としてフック命令を備えている。HKM及びH
KU命令は類似した作動をするが、これらはフック・プ
ログラムに異なる態様で挿入されるように設計されてい
る。HKM命令は、フック命令を含むように初めから設
計されているプログラムで使用するために設けられてお
り、コンパイルされテストされる前にこのようなプログ
ラムに挿入される。この特性は任意の命令フォーマット
及び命令長でHKMを定義することを可能とする。HK
Mはプログラム内でコンパイルされ、この内部に残る。
これらの命令はフックが使用可能でない場合には、ノー
・オペレーション(no−op)として実行され、フッ
ク制御を使用可能とすることによって、いつでも有効化
することができる。これらの特性によって、この命令を
使用して、さまざまなワークロードのもとでのサブシス
テムのパフォーマンスを定期的に監視すること、あるい
は特定の期間の間のさまざまな作動環境での統計を収集
することを可能とする。HKU命令は最初フック命令な
しで設計されたプログラムで使用するのが好ましいもの
で、このプログラムにおいて、プログラム内の既存の命
令をオーバレイすることによってプログラムをコンパイ
ルした後、HKU命令が挿入される。
【0049】HKUはデバッグ・セッション中に、既存
の命令の動的一時オーバレイとして使用される。それ
故、HKU命令によってオーバレイされる最小の命令の
サイズをHKU命令のサイズが超えないようなフォーマ
ットを選ばなければならない。HKUの実行は無条件で
あり、それ故、生産環境には適していない。この命令は
テスト環境におけるプログラムの動的デバッグ及び監視
のためのツールである。HKUがプログラム内の他の命
令をオーバレイするのであるから、これらの命令が生産
環境のプログラムに残っている必要はない。
【0050】制御レジスタなどの単一制御位置における
分析操作の総合使用可能性制御を含む特別なシステム使
用可能化制御が、本発明には設けられている。総合制御
をHKM及びHKU命令などの本発明によって提供され
るすべてのタイプのフック命令に適用できるようにする
ことも、あるいは総合マスク制御をHKMタイプの命令
だけに適用できるようにすることもできる。たとえば、
HKU命令が何らかのプログラムに挿入されている場合
に、この命令が常に実行されるためにマスクの必要がな
いと想定されれば、総合マスク制御をHKU命令に適用
されないようにすることもできる。
【0051】フック・アンダ・マスク(HKM)命令は
マスク番号を各命令に与え、この番号によって、フック
・プログラムにおけるHKM命令の実行がそのマスク番
号によって制御されるようにする。HKU(フック・ア
ンマスク)命令はマスク番号を有しておらず、よって、
サイズが小さく、フック・プログラムの占める空間が小
さくなる。サイズがより小さいため、HKU命令によっ
て必ずオーバレイされる命令が1つだけとなり、HKM
命令よりも既存のプログラムのコードをオーバレイしや
すくなる。
【0052】アドレスの形式でオペランドをもつが、こ
れがアドレスとしてではなくマスク名として解釈される
各HKM命令において、使用されるマスク番号(名)は
ユーザが選択する。異なるマスク名をユーザが選択する
ことによって、ユーザが同じフック・プログラムの異な
る点におかれた異なるHKM命令を区別することが可能
となる。HKM命令を実行する場合、マスク名が暗示制
御域に配置されているマスク・フィールドに対する索引
として使用される。索引付きマスク・ビットがマスク可
能状態である場合、命令は使用可能となり、マスク番号
が命令の現行インスタンスのHWAに格納される。索引
付きマスク・ビットがマスク不能状態である場合、命令
は使用不能となり、存在しないものであるかのように取
り扱われ、ノーオペレーション(no−op)命令とし
て処理される。no−opパフォーマンスは最低限のも
のであり、本発明の重要な態様である。
【0053】他のレベルのマスク制御がフック制御域の
クラス使用可能化マスクとして与えられる。このような
クラス使用可能化はマスク・ビットの複数のサブセット
のどれが、フック・マスク名によって使用できるように
されているかを示す。したがって、フック命令索引のマ
スク名がマスク・ビットの使用不能クラスを指している
場合には、フック命令が使用不能とされ、索引が指定し
たマスク・ビットの状態セッティングにかかわりなく、
ノーオペレーション(no−op)命令として実行され
る。
【0054】マスク使用可能化制御はHKM命令タイプ
だけに適用され、総合マスク使用可能性制御以外の制御
はHKM及びHKU両方の命令タイプに適用される。
【0055】HKU命令を実行した場合、これにはマス
ク名がなく、制御域のマスク・フィールドはアクセスさ
れない。それ故、HKU命令の実行に対して、フック名
がHWAにおかれることはない。ただし、HWAの関連
したフィールドはHKUが実行中であり、マスク名フィ
ールドが使用されていないことを示している。オーバレ
イされた命令が分析プログラムによって実行されてか
ら、フック・プログラムに戻る(HKRを介して)よう
にするためには、HKU命令の識別が必要である。
【0056】(b)図1の好ましい実施例:図1は本明
細書で「フック・アンダ・マスク」(HKM)命令と呼
ぶ新規のフック命令に関する本発明の一般的な実施例を
示す。HKM命令はフック・プログラム10内に示され
ているが、これはプログラムをコンパイルまたはアセン
ブルしたときに挿入されたものであり、フック・プログ
ラム10の実行のこの時点における状態情報を得るため
のものである。フック・プログラム10は適用業務プロ
グラム、システム制御プログラム、問題状態あるいは監
視状態で実行されるプログラムなど任意のタイプのプロ
グラムである。
【0057】プログラム10内のフック命令の実行に対
する総合使用可能性制御は、制御レジスタ11内のフィ
ールドHによって与えられる。マルチプロセッサ環境内
の各プロセッサはそれ自体の制御レジスタ(11)を有
している。ビットHが使用可能状態にセットされている
場合、これはHKM命令がプログラム10内で実行でき
るようにする。ビットHが使用不能状態にセットされて
いる場合、プログラム10内のHKM命令は実行されな
いが、プログラム10は実行され、この場合、HKM命
令はno−op命令として取り扱われる(HKM操作コ
ードが検出された場合には、プログラムの実行はHKM
命令の後の命令に進む)。図1の他の部分はHKM命令
が使用可能な場合にのみ、すなわち活動HKM命令の実
行中にのみ使用される。
【0058】使用可能な場合、HKMの実行はそのオペ
ランドにアクセスするが、このオペランドはアドレス・
コンポーネントの形式であっても(オペランド・アドレ
スを生成するために追加されるIBM S/370アー
キテクチャに使用されるベース及び変位形式、つまりB
+D=アドレスなど)そうでなくてもかまわない。後者
の場合、生成されたアドレスはアドレスとしては取り扱
われず、フック・マスク内の特定のマスク・ビットにア
クセスするための、本明細書でフック・マスク番号と呼
ぶ、索引として取り扱われる。
【0059】フック・プログラム10を実行するプロセ
ッサの命令ユニット内のハードウェアないしマイクロコ
ード(HDW/MCD)は、フック・プログラムによっ
て現在実行されている各命令の操作コードを解釈する。
(マイクロコードはIBMシステムでは「内部コード」
と呼ばれることがしばしばある。)このハードウェアな
いしマイクロコードは、フック・プログラムによって使
用される命令によって明示的にアドレスできないメモリ
域またはレジスタであるシステム・フック制御域12に
アクセスする。この情報は制御プログラムによって初期
化され、プログラムまたはタスクなどの特定の実行単
位、あるいはプログラムまたはタスクを含んでいるアド
レス空間に固有のものである。HKM命令の解釈はいく
つかの操作を行うが、その内の制御操作はHKM命令の
新たに生成されたフック・マスク番号を、生成された索
引値におけるフック・マスク内のマスク・ビットにアク
セスする暗示アドレスとして使用するためのものであ
る。マスク・ビットが使用可能状態にセットされている
場合、このHKM命令の実行は進行するが、マスク・ビ
ットが使用不能状態にセットされている場合には、この
HKM命令の実行は異常終了し、no−opに戻り、フ
ック・プログラムの実行は次の命令に進む。以下の説明
はHKM命令が使用可能な場合にのみ適用される。
【0060】HKM命令が使用可能な場合、ハードウェ
ア/マイクロコードの次の操作は、利用可能なフック作
業域(HWA)を見つけだし、HWA連鎖の探索中に現
在のHKM命令にこのHWAを割り当てるプロセスを開
始することである。HWAの利用可能性は連鎖内の各H
WAのプロセス内フック・フラグの状態によって示され
る。各プロセス内フック・フラグはアンロック状態また
はロック状態のいずれかを有している。探索中に、アン
ロック状態を有していると判断された最初のHWAが現
在のHKM命令に割り当てられる。選択されたHWAは
直ちにロック状態にセットされ、セッティング操作によ
って、すべてのCPUに対してシリアル状態にロックさ
れ、HKM命令に割り当てられたことを示すので、現在
のHKM命令に対する分析プログラムの実行が終了した
後、HWAがアンロック状態にセットされるまで、他の
HKM命令が使用することができなくなる。
【0061】次に、ハードウェア/マイクロコード制御
は現在のHKMフック命令を実行しているプロセッサ内
に存在しているプログラム状況ワード(PSW)にアク
セスし、図3のこの実施例について示されているフック
・プログラムのPSWを、現在のフック命令に割り当て
られている関連したHWAに格納する。ハードウェア/
マイクロコード制御は汎用レジスタの内容を、これらが
フック・プログラムのプロセッサにあったものとして格
納してから、汎用レジスタのいずれかにフック制御域1
2からロードすることも行う。PSWはフック・プログ
ラム内で現在実行されているHKM命令の後にある次の
命令のアドレスを含んでいる。
【0062】次いで、フック制御域内のパラメータはハ
ードウェア/マイクロコード制御によってアクセスさ
れ、プロセッサ内の汎用レジスタのいくつかにロードさ
れる。これは汎用レジスタA(GRA)に、現在のHK
M命令に新たに割り当てられたHWAのアドレスをロー
ドすることも含んでいる。また、区域12内の分析プロ
グラム(AP)の項目アドレスを、フック・プログラム
を実行しているプロセッサのPSWにロードして、現在
のHKM命令に対する分析プログラム16の実行を初期
化する。区域12内のAP項目アドレスは分析プログラ
ムを実行しているプロセッサの汎用レジスタBにもロー
ドされ、このプロセッサの作動のためのベース・アドレ
スを与える。AP項目アドレスは分析プログラムに対す
る命令の実行が開始される分析プログラムへのAP項目
アドレスである。フック命令が明示分岐アドレス・オペ
ランドをなんら含んでいないが、フック制御域に指定さ
れた暗示アドレスに対する分岐として作動することに留
意されたい。
【0063】分析プログラム(AP)16は割り当てら
れたHWAにおかれたPSW及びフック・プログラムの
状態情報を分析し、フック・プログラムのデータ及びプ
ログラム域を検証し、これらから他の情報を生成し、情
報のいずれかを図1に示されていないメモリ域に記録す
る。本実施例のHWA域のフォーマット及び個々のHW
Aのフォーマットを図4に示す。分析プログラムが生成
した情報のタイプは、従来技術で使用されるフック命令
がもたらす周知のいずれのタイプの情報であってもよ
い。HWAは分析プログラムがアドレスを、フック実行
の各インスタンスに対する付加的な情報を含んでいる記
憶位置におくことを可能とするために利用可能な空間を
含んでいる。
【0064】フック命令は分析プログラムがそれぞれの
フック命令に対して実行されている間は「活動状態」で
あるとみなされ、各使用可能フック命令の実行は関連す
るフック・プログラムを拡張したものであるとみなされ
る。関連するHWAのロック状態は、分析プログラムが
関連するフック命令の実行を終了しない限り、すなわち
フック命令が「活動状態」である間維持される。関連す
る(合致する)HKRの作動が完了すると、フック命令
は「不活動状態」となる。
【0065】分析プログラムは各実行中のフック命令に
対してその入口点アドレスから終わりまで実行される。
分析プログラムの終了は、実行した場合に、プロセッサ
の制御を分析プログラムから、分析プログラムが処理を
終了する対象であるHKM命令を含んでいるフック・プ
ログラムに戻すアドレス可能性をもたらす独自のフック
戻り(HKR)命令を与える。HKR命令はプロセッサ
の制御をフック・プログラム内の次の命令(分析プログ
ラムが実行されていたフック命令の次の命令)に切り換
える。アドレスのこの切換えは、(関連するHWAに現
在格納されている)PSWを、フック・プログラム内の
次の命令アドレスに実行を切り換えるプロセッサに暗示
的にロードするHKR命令の操作コードを解釈すること
によって呼び出されるハードウェア/マイクロコードに
よって行われる。すべてのPSWフィールドがロードさ
れるわけではない。PSWをロードする前に、格納され
ているGRがフック命令の実行時の状態に復元される。
【0066】また、HKR命令の実行によって、関連す
るHWAのプロセス内フック・フラグがアンロック状態
にセットされ、このHWAが他のフック命令を割り当て
るために再度利用できるようになったことを示す。HK
RがHWAのアンロックを他のCPUと直列化する必要
はない。
【0067】それぞれのフック命令に対する「実行のイ
ンスタンス」はフック命令の各実行に対して得られる。
したがって、異なる「実行のインスタンス」が、同一の
フック命令の個別の各実行ごとに得られる。例えばフッ
ク・プログラムがループしている場合、あるいはマルチ
プロセッシング環境において並行に実行されているタス
クによって何回も呼び出される場合などである、HWA
の割り当ては実行の1つのインスタンスに対するもので
ある。
【0068】異なるフック・プログラムをマルチプログ
ラミングによって作動しているマルチプロセッサ・シス
テム内の異なるプロセッサによって実行できる。HWA
連鎖内の複数のHWAが同時にロック状態となり、それ
ぞれによって、異なるプロセッサで同時に実行されてい
るフック命令、あるいは対応する複数の異なるあるいは
同一のプログラムに対する並行タスクを表すことができ
る。
【0069】並行に実行されるフック命令に関してそれ
ぞれのHWAにおかれる情報は、分析プログラムの異な
る再帰的な実行に、このような各実行について異なるH
WAを使用して関連づけられる。この場合、それぞれの
実行は異なるフック命令を実行するそれぞれのプロセッ
サによって制御されるが、これらの命令のいくつか、あ
るいはすべては同じタイプであってもかまわない。たと
えば、これらはすべてHKMまたはHKU命令であって
もかまわないし、あるいはHKM命令とHKU命令を混
合したものであってもかまわない。
【0070】したがって、分析プログラムの再帰性によ
って、任意の数のフック命令を複数のプロセッサで並行
して実行し、1つまたは複数のプロセッサについての制
御プログラムのディスパッチの決定にかかわりなく、適
切な実行をもたらすことが可能となる。フック命令の正
常な実行は、分析プログラムを、その入口点から終了フ
ック戻り命令まで実行させる。それ故、任意の時点にお
いて、分析プログラムをいくつかの異なるフック命令に
対して実行することができ、この場合、各実行は同時に
分析プログラムの異なる命令におけるものとなる。これ
は分析プログラムが再入可能となり、別々な作業域をフ
ック実行の各インスタンスに対して使用することを必要
とする。フック実行の一部としてHWAを割り当てるこ
とによって、これが容易となる。
【0071】したがって、本発明によって、本発明の提
供する任意のフック命令ごとに、フック・プログラムと
分析プログラムの間、あるいは分析プログラムとフック
・プログラムの間での切換え中に生じるプログラムの割
込みや再ディスパッチを行うことなく、分析プログラム
16の実行と実行中のフック・プログラム10(そのう
ち、1つのフック・プログラム10だけが図1に示され
ている)の間でのスムースな割込みのない制御の切換え
が可能となる。
【0072】スムースな切換えは、フック制御域12に
アクセスし、HWAを割り当て、割り当てられたHWA
にフック・プログラムを実行するプロセッサのGRの内
容を格納し、GRAにHWAのアドレスを、またGRB
に分析プログラムの実行が開始される該プログラムの入
口点のアドレスをロードし、分析プログラムの実行の終
了時にフック・プログラムの次の命令に戻るハードウェ
ア/マイクロコードによって得られる。各実行ごとの内
容が特定のHWAから得られる任意の数のプロセッサに
おけるこれらのGRは、異なるプロセッサで実行される
異なるフック・プログラムで同時に実行される任意の数
のフック命令に対する分析プログラムの再帰作動と、す
べてのこれらのプロセッサとの関連性を維持する。
【0073】また、本発明によって、フック・プログラ
ム及び分析プログラムに対する割込みを、同時に実行さ
れるプロセッサによる複数のフック命令に対する並行実
行のすべてのインスタンスにおける分析プログラムの作
動によって収集されたデータの保全性に影響を及ぼすこ
となく、フック命令によって引き起こされたものではな
い割込みによっていつでも行うことが可能となる。分析
プログラム(読取り専用コードからなる)は任意の数の
フック・プログラムによって、再帰的に(同時に)、か
つ非同期的に実行される。これらの割込み事象はフック
命令及び分析プログラムの実行とは無関係であり、フッ
ク・プログラム内のフック命令に対して分析プログラム
によって生成されるデータの保全性に影響を及ぼさな
い。このような無関係な割込みは、たとえば、入出力、
外部事象、タイマ及びその他の信号によって引き起こさ
れる。同時に非同期的に実行される複数フック・プログ
ラムの間の特別な調整は本発明によって与えられない
し、また必要とされない。
【0074】分析プログラムあるいはいずれかのフック
・プログラムに対する割込みは、他のタイプの割込みの
処理と同様、オペレーティング・システム(OS)によ
って処理される。無関係な割込みに対し、OSは関連し
た割込みがクリアされると同時に、割込みを受けたプロ
グラムに対して実行が継続される戻り位置を格納する。
本発明で重要なことは、フック命令自体がプロセッサの
作動に割込みを行わないことである。
【0075】プログラムのディスパッチは、プログラム
内の命令の後の任意の時点に、(フック・プログラム内
の任意の命令の後を含む)任意のプロセッサで、あるい
は分析プログラムの任意の場所(このプログラムが現在
のフック命令に対して終了する前)で終了できる。ま
た、このプログラムを同じあるいは異なるプロセッサに
再ディスパッチすることができ、このプロセッサは次い
で、新たなディスパッチに対応するGRをロードして、
プログラムが最後のディスパッチの終了時に実行を離れ
た点で、プロセッサが実行をピックアップすることを可
能とする。オペレーティング・システム・ソフトウェア
はディスパッチの開始及び終了時に、フック命令に対し
て分析され、生成されたデータの保全性に何の問題も起
こさずに、従来の態様で各プロセッサの状態を格納し、
復元することができる。
【0076】さらに、本発明によって、フック・プログ
ラムと分析プログラムを、任意のプロセッサ状態(問題
状態、ならびに監視状態を含む)で作動させることが可
能となる。
【0077】関連するHWA連鎖内のHWAを使用する
フック・ヘッダによって制御され、分析プログラムの単
一のバージョンを呼び出す、並行に実行中のフック・プ
ログラムのセットは、すべて単一のアドレス空間にあ
り、これらの間でのアドレスは可能である。ただし、分
析プログラム、制御域、及びフック情報を受け取る作業
域(HWA)は実行対象のフック・プログラムから分離
され、これらをフック・プログラムがでたらめに格納す
るのを保護する。フック・プログラムまたはフック命令
が分析プログラム、制御域、あるいは作業域(HWA)
に対する明示的なアドレス可能性を有する必要をなくす
ことによって、本発明はこの分離をサポートする。
【0078】フック・プログラムを前出の特願平4−1
06473号の共用記憶キー(PSK)をこれらに割り
当てることによって分離することができ、分析プログラ
ム、HWA及び制御域をすべてが同一のアドレス空間に
ある1つまたは複数の非PSKのもとで稼動させること
ができる。さらに、フック・プログラムを前出の許願平
5−6915号のサブスペースの異なるサブスペースに
おけるプログラム記憶キー(PSK)のもとで稼動させ
ることができる。サブスペース環境で使用するため、各
サブスペースはそのサブスペース内の分析プログラムの
呼出し(フック命令の実行による)に使用される独自の
フック・ヘッダ及びHWAの独自の連鎖を含んでいる。
単独の再入分析プログラムを使用して、サブスペース・
グループのすべてのサブスペースの呼出しサービスを行
うことができる。しかしながら、本発明はフックされた
適用業務、分析プログラム、HWA及び制御域を本発明
で規定するように作動させる場合に、PSKやサブスペ
ース環境を必要としない。
【0079】(c)図2の詳細な実施例:図2はフック
・マスク(HKM)またはフック・アンマスク(HK
U)のいずれかの命令と、フック戻り命令(HKR)命
令を使用して、ESA/390アーキテクチャの環境に
おけるフック命令を処理するための本発明の好ましい実
施例を示す。ESA/390アーキテクチャに関連して
説明するが、この開示はほとんどのコンピュータ・アー
キテクチャに適用できるものである。HKM及びHKU
命令は類似した作動をするが、フック・プログラムに異
なる態様で挿入されるように一般に設計されている。H
KM命令は初めからフックを含むように設計されている
プログラムで使用するために設けられており、HKM命
令はこのようなプログラムをコンパイルし、テストする
ときにこのプログラムに収められる。HKM命令の対象
となるこの環境によって、作動に対するいくつかの異な
るタイプの制御を得るために必要な任意のサイズにする
ことが可能となる。図5、図6及び図7はフック・プロ
グラムで遭遇した場合に、HKM命令の実行を制御する
ために使用されるプロセスを示す。
【0080】これに対し、HKU命令は初めからフック
命令なしで設計されテストされたプログラムで使用する
のが好ましいものである。その後、既存の命令またはデ
ータ項目をこのようなプログラムのオブジェクト・コー
ドにオーバレイすることによって、HKU命令が挿入さ
れる。それ故、オーバレイされた命令を実行するための
分析プログラムが存在していない限り、当初コンパイル
されたコードに対するHKU命令の挿入がこのコードを
損なうため(本番実行環境に当初リリースされた場合
に、このようなプログラムがフックを使用してテストさ
れていないので)、HKU命令は障害を起こす。図8、
図9及び図10はフック・プログラムで遭遇した場合
に、HKU命令の実行を制御するために使用されるプロ
セスを示す。分析プログラムは既存のプログラム命令に
対してHKU命令をおき、プログラムがその点に達した
場合に、このプログラムに対する入力を行わせる。分析
プログラムはフック・プログラムの入力またはその再開
の一部としてオーバレイされた命令を実行したり、ある
いはその実行のシミュレーションを行ったりする。
【0081】HKM命令はオペランドにマスク番号を備
えている。HKU命令はオペランドをまったく有してい
ない(したがって、マスク番号を有していない)。した
がって、HKU命令のサイズはこれに対応してHKM命
令のサイズよりも小さくなるので、すべての場合に、単
一の命令にオーバレイすることができ、オーバレイされ
た命令の実行に関する分析プログラムのジョブを単純化
する。
【0082】各HKM命令のオペランドは、S/370
のオペランド・アドレスを計算する際に使用されるベー
ス+変位(B,D)の形式を有しているが、HKM命令
の場合、計算したアドレス値の下位ビットはアドレスと
してではなく、マスク番号としてプロセッサ命令ユニッ
トによって解釈される。ユーザは異なるマスク番号を選
んで、フック・プログラムの種々の実行点におかれた異
なるHKM命令を区別することができる。HKM命令が
実行されると、そのマスク番号が、マスク・ビット位置
を選択するためのフック・ヘッダ域22Bに配置された
マスク・フィールドへの索引として使用される。索引付
けされたマスク位置におけるビットが使用可能状態を有
している場合、HKM命令は使用可能となり、HKM命
令に対する実行は継続する。マスク番号はHKM命令の
実行の現在のインスタンスに対して割り当てられている
HWAに格納される。索引付きマスク・ビットが使用不
能状態である場合には、HKM命令は使用不能となっ
て、その実行は終了し、no−op命令として処理され
る。
【0083】したがって、使用可能性を、異なるマスク
番号が割当てられたHKM命令ごとに個別に制御するこ
とができ、これらのHKM命令をそのマスク番号によっ
て制御することが可能である。それ故、フック・プログ
ラム(異なるマスク番号のサブセットを備えたHKM命
令を有する)は、使用可能なサブセットと使用不能なサ
ブセットを有することができるので、対象となるサブセ
ットだけが監視機能を果たすこととなる。サブセットの
この選択的な使用可能性は、フック・プログラムの実行
速度、及びそのフック命令によって収集された情報のタ
イプに影響を及ぼす。異なるサブセットを、特定の時期
に何を分析するかに応じて、異なる時期に使用可能とす
ることができる。
【0084】図2において、フック・ヘッダ22Bのフ
ック・マスクは2つのクラスのマスク・ビットに分割す
ることができるが、この内、クラス1は左側のグループ
であり、クラス2は右側のグループである。マスクを複
数のグループに分割することによって、任意の時点で、
クラスの一方のビットのみが変更されるため、マスク・
ビットの使用可能性の保守が容易となる。たとえば、ク
ラスのすべてのビットを使用不能状態にセットするだけ
で、クラス全体を簡単に使用不能とすることができる。
一方、個別のクラスをフック制御域の個別の要約ビット
によって制御することができるが、この制御をセットで
きるのは、オペレーティング・システムだけである。2
つのクラスによって、プログラミング階層の2つのプロ
グラム(たとえば、サブシステム及びその適用業務)
が、フック番号の調整を行わずにそれぞれの目的に独立
して分析プログラムを使用することが可能となる。OS
はプログラミング・サブシステムを一方のクラスに、ま
た適用業務を他のクラスに割り当てることができる。
【0085】それ故、フック・クラス要約制御ビットは
第2のレベルのマスク制御を提供し、HKM命令がアド
レスする各クラス内の独立したマスク・ビットは第3の
レベルを提供し、これらレベルは両方とも制御レジスタ
2(CR2)のビットHが提供する総合マスク制御のも
とで作動可能である。
【0086】これらのマスク制御はいずれもHKU命令
の実行には使用されない。HKU命令は無条件で実行さ
れる。しかしながら、HKU命令に対してHWAに格納
されたPSWのアドレスは、現在のHKU命令の後のフ
ック・プログラムの位置を表し、このHKU命令をフッ
ク・プログラム内の他のHKU命令と区別するために使
用される。このPSWの情報はHKM命令の実行のため
に割り当てられたHWAでも利用可能である。なお、H
KU命令に関連したフック番号はないが、HWAのフッ
ク番号フィールドのビット0を1にセットし、これによ
りHKU命令を、このビット0が1になりえないHKM
命令の実行と区別する。
【0087】図1及び図2の実施例は各々、フック・プ
ログラムに対するリアルタイムの監視をもたらすが、こ
れを行うのに使われるオーバヘッドは、従来技術のモニ
タ呼出し(MC)フック命令を使用する場合よりも大幅
に少なくなる。たとえば、MC命令を使用して、X個の
命令を有する分析プログラムを呼び出した場合、MC命
令はプログラム割込みを呼び出し、この割込みが各MC
実行のサービスに必要なオペレーティング・システム
(OS)のY個の付加的な命令を実行する。この場合、
合計X+Y個の命令が分析プログラムの実行のたびに実
行される。本発明の図1または図2の実施例の場合、分
析プログラムのX個の命令だけが実行され、本発明を同
一の速度のプロセッサで大幅に早く実行し、同一の監視
情報を得ることを可能とする(X+Y)/Xというパフ
ォーマンス比をもたらす。
【0088】図2の実施例は、記憶キーをアドレス空間
の各フック・プログラム20が使用し、1つまたは複数
の記憶キーを図2の他の記憶アドレス22ないし25が
使用することをサポートしている。たとえば、米国特許
願第710875(本明細書で前出)に開示されている
共用記憶キー(PSK)を、各フック・プログラム20
が使用することができ、またフック・プログラムまたは
分析プログラム25、あるいはこれら両方をマルチプロ
セッサ環境の異なるプロセッサで同時に実行することが
できる。PSKをすべてのフック・プログラムだけに割
り当てることにより、フック・プログラム(しばしば、
デバッグされるプログラム)の命令は分析プログラム2
5、HWA、またはフック制御域への無差別な格納を行
うことができなくなる。
【0089】(d)フック制御域22A(ASTE):
図2において、フック・プログラム20のフック命令か
らフック制御域22A及び22Bへのアクセス・リンク
は、S/390アーキテクチャを使用して得られたアク
セス・セキュリティ及びデータ保存性を得るために、S
/390仮想アドレス空間アーキテクチャを使用して実
現される。図2の好ましい実施例の構造はフック制御域
の一部を、S/390の制御ブロックが呼び出したアド
レス空間テーブル項目ASTE22Aにおく。ASTE
22Aのアドレスは、図1のフック制御域22に収めら
れているフック・ヘッダ域22Bをポイントする。
【0090】図2において、制御レジスタ21(総合使
用可能フィールドHを含んでいる)は「ASアドレス」
も含んでいる。ASアドレスは図2の構成要素20及び
22−25のコンピュータの実メモリの位置を決定す
る。
【0091】本明細書における制御レジスタ21の動作
はIBM刊行物「S/390 Principlesof Operation」(資
料番号SA22-7201-00)に記載されているIBM S/3
90コンピュータ・アーキテクチャにしたがっており、
この場合、制御レジスタ21はCR2であると想定す
る。CR2に示されているASアドレスはS/390ア
ーキテクチャにおいては「DUCTO」と呼ばれ、DU
CTOは「DUCT」という監視制御ブロックをコンピ
ュータの実メモリ中で特定する。DUCT内で、「AS
TEO」という所定の位置は、メモリに「ASTE」と
いう他の制御ブロックを配置するアドレスを含んでい
る。ASTE22Aは図2の構成要素20、22B及び
25を含んでいる仮想アドレス空間を定義するパラメー
タを含んでいる。
【0092】CR2、DUCT、及びASTEにアクセ
スできるのは、監視オペレーティング・システム(O
S)サービスを介してだけであり、このサービスは、構
成要素20、22−25を設定し初期化してから、この
実施例について説明する操作を開始できるようにする。
その後、各HKMまたはHKU命令の実行をサポートし
ているハードウェア/マイクロコードは、命令が実行さ
れたときにフック制御域22A及び22Bにアクセスす
る。それ故、フック・プログラム20及び分析プログラ
ム25のユーザは、フック制御域22Aへの直接アクセ
スを必要とせず、またこれを行わない。分析プログラム
は区域22Bにアクセスし、その全機能を実行する必要
があるが、フック・プログラム20はこれが分析プログ
ラムとは異なる記憶アクセス・キーによって実行されて
いる場合に、区域22Bへのアクセスを拒否できる。
【0093】区域22Aのフック・ヘッダ起点(HH
O)はフック・ヘッダ域22Bを特定する。図2におい
て、最初のHWA23は、各々が128バイトを含んで
いる等しい単位に分割されている4キロバイトのページ
境界から始まるHHO22Bに付加されて示されてい
る。最初の128バイトの単位はフック・ヘッダ域22
Bを含んでおり、次の128バイトの単位は最初のHW
A23となっている(詳細は図4)。
【0094】区域22Bのフック・マスクはクラス1及
び2という2つのグループのマスク・ビットに分割され
ている。マスク・ビットのクラス分けは、いくつかのタ
イプの操作を高速化し、フック制御域に要約制御ビット
をセットし、各クラスを個別に使用可能/使用不能とす
るオペレーティング・システムなどの他のレベルの操作
制御をもたらす。個別の使用可能化制御を有する個別の
マスクは、各グループの起点、機能、あるいは権限は異
なっているが同じ仮想アドレス空間にある異なるグルー
プのプログラムが、フック命令及び分析プログラムを並
行に使用することを可能とする。フック・マスク・ビッ
トはフック・ヘッダで特定され、もって分析プログラム
がフック・プログラムの分析セッション中に、制御プロ
グラムの介在を必要とすることなく、セッティングを自
由に変更できるようにする。
【0095】(e)記憶キー:図2の好ましい実施例は
S/390アーキテクチャにある記憶キー制御も使用す
る。これらのキーはS/390またはS/370コンピ
ュータの実メモリ内のいずれかの位置に対するアクセス
の、プログラムによる許可を制御する。各記憶キーは4
ビットのフィールドであり、メモリの4キロバイトのペ
ージへのアクセスを制御する。キーの値はOSによって
初期化される。プログラムに対する許可は現在許可され
ているキーの値をプログラムのPSWのキー・フィール
ドにセットすることによって与えられる。(フック・プ
ログラムまたは分析プログラムに対する)PSW内の許
可された値は、アクセスの発生前に、アクセスが要求さ
れている記憶位置を含む実メモリのページに対する記憶
キーの値と一致しなければならない。S/390アーキ
テクチャは実行時にプログラムが使用するすべてのキー
を含んでいる制御レジスタにPSWキー・マスクを与え
る。分析プログラムはフック・プログラムのフック命令
の実行の一部として、(フック・プログラムに対して許
可されているもの以外の)付加的なキーを得ることがで
きる。
【0096】AP状態制御ビット(S)がASTEの相
対状態インタロック・フィールドとして与えられる。ビ
ットSはプログラム20が監視状態で作動している場合
に、分析プログラム25が監視状態で制御を受け取るの
を防止し、特別な許可を必要とせず、また監視状態の実
行の責任を扱う準備をする必要のない分析プログラムを
使用できるようにする。
【0097】S=1の場合、分析プログラムは問題状態
で実行できるだけとなり、問題状態は終了する。
【0098】S=0の場合、分析プログラムを問題状態
または監視状態のいずれかにする準備をしなければなら
ない。フック動作は特権状態を変更しない。
【0099】フック・ヘッダ起点(HHO)がゼロであ
る限り、分析プログラムをシステム内で実行可能なフッ
ク命令を含んでいるプログラムに対してシステム内でロ
ードする必要はない。この場合、分析プログラムを後で
ロードすれば、使用可能なHKM命令をフック・プログ
ラムで実行したときに、実行される。
【0100】AP入力アドレス(APEA)は31ビッ
トの論理アドレスで、分析プログラム20への入口点
を、ASTEによって定義されたアドレス空間に指定す
る。
【0101】APキー・マスク権限(APKMA)は1
6ビットのフィールドで、分析プログラムが有すること
のできる最大PKM(プログラム・キー・マスク)を指
定する。制御プログラムはS=1をセットする前に、A
PKフィールドによって指定されたAPキーに対応する
APKMAのマスク・ビットが使用可能であること(1
にセット)を確認しなければならない。S/390アー
キテクチャにおいて、PKMはCR3のビット位置0−
15に収められている。分析プログラムを実行するため
には、APKに関連するPKMビットを任意のHKMま
たはHKU命令に対して使用可能にしなければならな
い。
【0102】フック・ヘッダ域(HH)は特定のマスク
値を使用可能とするためにHKM命令によって使用され
る8バイトのフィールドを1つ含んでいる。
【0103】フック・マスク(HM)は64ビットのフ
ィールドであり、その各ビットは割り当てられたフック
番号をもたらすためにHKM命令に対して生成された第
2のオペランド・アドレスの6つの下位ビット(本実施
例においては、ビット26−31)のシーケンス0ない
し63で取ることのできる64の値のうちの1つに対応
している。
【0104】分析プログラムへの入力をHKM命令に対
して認める前に、フック番号に等しい索引におけるフッ
ク・マスクのビットを、HKM命令が使用可能であるか
どうかの指示についてチェックする。使用可能な場合に
は、利用可能なHWAを見つけだし、実行のこのインス
タンスに対してHKM命令を割り当てる。HWAを同様
に、マスク・テストを必要としないHKU命令の実行に
ついて求めなければならない。いずれの場合も、利用可
能なHWAが見つからない場合には、このHKMまたは
HKU命令の実行の一部として、特別な操作例外が認め
られる。
【0105】フック作業域(HWA)は、実行プロセッ
サの制御レジスタ2によってアドレスされるDUCTの
ASTEOフィールドによってアドレスされるASTE
のセグメント・テーブル記述子(STD)によって定義
された仮想空間に配置される。各HWAは128バイト
のブロックである。最初のHWAはHHの直後に配置さ
れる。HWAはフック命令によってテストされる定義済
みフィールドを含んでおり、分析対象のプログラムの一
定の状況をセーブするための空間、及び分析プログラム
への入力のための状況を含んでいる空間が提供される。
HWAフィールドは次の通りである。
【0106】次HWA起点(NHO)は24ビットであ
り、7個の0が右側に付加され、HWAの連鎖内の次の
128ビットのHWAをポイントする31ビットの論理
アドレスを形成する。NHOの値が全て0なら、これが
HWA連鎖内の最後のHWAであることを示す。
【0107】プロセス内フック・フラグXは1ビットの
ロック・フィールドで、HWAへのアクセスを制御す
る。HKMまたはHKU命令がHWAにアクセスできる
のは、X=0の場合だけである。分析プログラムの終わ
りのHKR命令が実行されるのは、割り当てられたHW
AのX=1の場合だけである。
【0108】テスト対象フック番号(HN)は32ビッ
トのフィールドである。その高位ビットはHKM命令に
対してはゼロ値を有しており、HKU命令に対しては値
1を有している。他のビット1−31はHKM命令の第
2のオペランド・ビット1−31の値を受け取り、また
HKU命令の場合にはすべてゼロを受け取る。
【0109】命令長コード(ILC)の値はセーブされ
るので、分析プログラムは現行のHKM、HKU、また
は実行命令を区別することができる。
【0110】フック・プログラムのPKMビットDK
(BDK)は1ビットのフィールドであり、HKM/H
KUの実行の一部として、ASTE<DK>を表すフッ
ク・プログラムのPKMビットにセットされる。HKR
はこのビットを使用して、分析プログラムのPKMから
フック・プログラムPKMを再作成する。
【0111】フック・プログラムを実行するプロセッサ
のプログラム状況ワード(PSW)の内容は、64ビッ
ト・フィールドでHKMまたはHKU命令が正常に実行
された場合に、割り当てられたHWAにセーブされる。
分析プログラムはその割り当てられたHWAに対して読
み書きアクセスを行い、それ故、任意のフィールドを変
更できる。ただし、以下のPSWフィールド(かっこ内
のPSWビット位置によって示される)のみが、HKR
命令に対するハードウェア/マイクロコードの動作によ
ってフック・プログラムに復元される。
【0112】PSW<8−11>:問題状態において
は、キーの使用可能性を確認するHKR命令の実行の一
部として、(HP及びAP両方に対するPKMビットの
ANDを取ることによって)このフック・プログラム
(HP)のキー値がチェックされる。監視状態において
は、この使用可能性チェックは行われない。
【0113】PSW<17>:このアドレス空間制御ビ
ットは分析プログラムによって変更できる。PSW<
5,16>が分析プログラムに対してb"10"であり、
これらのPSWビットが無修正でフック・プログラムに
返されるので、フック・プログラムには基本モードまた
はARモードのいずれかで制御が戻される。
【0114】PSW<18−19>:条件コードは分析
プログラムによって修正できる。
【0115】PSW<20−23>:プログラム・マス
クは分析プログラムによって修正できる。
【0116】PSW<32>:フック・プログラムのセ
ーブされたアドレス指定モードはHKR命令の実行時に
復元される。分析プログラムはこれを変更し、24ビッ
トまたは31ビットいずれかの有効アドレス生成モード
でフック・プログラムに制御を返すことができる。
【0117】PSW<33−63>:戻り命令アドレス
を分析プログラムによって修正できる。
【0118】アクセス・レジスタ/汎用レジスタ対をA
GRという表記で表す。ARの内容は最大231バイトを
収めることのできるアドレス空間を指定する。関連する
GRはARが指定したアドレス空間内のバイト・アドレ
スを指定する。本発明はすべてのAGRの内容を実行フ
ック命令に関連したHWAに格納することを必要としな
い。したがって、本発明においては、以下のAGRのみ
が関連するHWAに格納される。
【0119】AGR4:AR/GR4の内容がセーブさ
れる。 AGR5:AR/GR5の内容がセーブされる。 AGR15:AR/GR15の内容がセーブされる。
【0120】選択したプログラミング・フィールドを分
析プログラムによる分析のためにセーブできる。例は必
要に応じ、他のAR/GR対も格納する。分析プログラ
ムは区域に対するポインタも格納し、浮動小数点レジス
タまたはその他のAR/GR対をセーブすることができ
る。このHWAフィールドはAPが使用するために予約
されており、長さは32バイトである。
【0121】(f)フック・マスク命令(HKM)実行
プロセス−図5ないし図7:図5、図6及び図7からな
る流れ図は、図2に示すメモリ・ブロック20ないし2
5及び制御レジスタ(CR2)へのアクセスを含むフッ
ク・アンダ・マスク命令(HKM)を実行するプロセッ
サが使用するプロセス・ステップを示している。(分析
プログラムはフック・プログラムと同じ仮想アドレス空
間にあるから、記憶キーが認める場合にはいずれのプロ
グラムも他のプログラムにアクセスできる分岐命令を有
することとなる。)
【0122】HKM実行プロセスはステップ50から始
まり、プロセッサが制御レジスタ2(CR2)内のビッ
トHの総合使用可能性状態にアクセスし、テストする。
ビットHが使用可能でない(たとえば、ゼロにセットさ
れている)場合、ステップ50からステップ51への
「ノー」(N)出口が選択され、HKM命令をno−o
pとして扱って、この命令を効果的に無視し、フック・
プログラムの次の連続した命令に進む。
【0123】CR2のHビットが使用可能状態にセット
されている(たとえば、1状態にセットされている)場
合、プロセスは継続し、この場合には、ステップ50か
らステップ52への「イエス」(Y)が選択される。ス
テップ52はビット位置5及び16に配置されているプ
ロセッサの現在のPSWの2つの個別の状態ビットをテ
ストする。PSWビット5はDAT(ダイナミック・ア
ドレス変換)状態がONであるかOFFであるかを示
し、PSWビット16は2次または1次アドレス空間モ
ードが存在しているかどうかを示す。本発明は1次すな
わちアクセス・レジスタ・モード操作におけるフッキン
グをサポートしている。ステップ52ではDAT状態が
ONで、2次モードがOFFである(この場合、1次モ
ードはON)であることが必要である。この状態はビッ
ト5、16がそれぞれ1、0である場合に示される。ス
テップ52でビット5、16が1、0と判断された場合
には、ステップ53への「イエス」出口が選択される。
【0124】しかし、ステップ52でビット5、16が
1、0を示していないと判断された場合には、ステップ
52からステップ51へのA入口への「ノー」(N)出
口が選択され、HKM命令をno−opとして扱って、
この命令を効果的に無視し、フック・プログラムの次の
連続命令へ進む。
【0125】ステップ53に進むと、これはHKM命令
のB、Dオペランドをプロセッサの命令加算器に送り、
ベース・レジスタBの内容を命令の変位フィールドDに
加える。加算器は(32ビット・ワード内の)31ビッ
トの値を出力する。この32ビット・ワードはアドレス
として扱われないが、そのビット位置26−31は現在
のHKM命令に対する「フック番号(HN)」として扱
われ、ステップ54に進む。位置26−31内の6ビッ
トは現在のフック命令のフック番号を表し、本実施例で
は0ないし63の範囲の値を有している。ステップ54
はその値が0−63の範囲の前半にあるか、後半にある
かを決定し、これは位置26のビットの値によって示さ
れる。ビット位置26がゼロの場合、フック番号は0−
31の範囲(クラス1範囲と呼ぶ)にある。ビット位置
26が1である場合、フック番号は32−63の範囲
(クラス2範囲と呼ぶ)にある。次いで、ステップ55
−1に進み、0または1の状態にセットされ、クラス1
範囲に対するマスク範囲を示すマスク・ビットH1(A
STE制御ブロック22A内の)の状態をテストする。
【0126】しかし、ビット位置26が1の場合、フッ
ク番号は範囲32−63(クラス2範囲と呼ぶ)にあ
る。次いで、ステップ55−2に進み、0または1の状
態にセットされ、クラス2範囲に対するマスク状態を示
すマスク・ビットH2の状態をテストする。
【0127】次いで、ステップ56に進み、選択したク
ラス・マスク・ビット(H1またはH2)が使用可能か
どうか判定する。使用不能な(0状態である)場合、フ
ック命令は使用不能となり、Aへの「ノー」出口が選択
され、no−opステップ51(上述)へ進む。
【0128】しかし、ステップ56が選択したクラス・
マスク・ビットが使用可能な場合(たとえば、1状態で
ある場合)、フック命令は第3レベルの使用可能性を検
査され、何らかの保全性規則に違反があるかどうかを判
定することが必要となる。これを行うため、プロセスは
ステップ57へ進む。
【0129】次のステップ57は、監視(スーパバイ
ザ)状態で作動しているフック・プログラムが問題(プ
ロブレム)状態専用に設計されている無許可の分析プロ
グラムにアクセスできないという保全性規則に違反があ
るかどうかを判定する。しかしながら、問題状態で作動
しているフック・プログラムは、問題状態あるいは監視
状態のいずれかで作動するように設計されている分析プ
ログラムにアクセスできる。
【0130】フック・プログラムの問題/監視状態はプ
ロセッサの現在のPSWビット15の状態によって示さ
れる。分析プログラムの問題/監視能力は現在のAST
EのビットSの状態によって示される。
【0131】したがって、ステップ57はフック・プロ
グラムを実行するプロセッサのPSWビット15をテス
トする。フック・プログラムが監視状態である場合、ス
テップ58に進み、期待される分析プログラムの状態
(ASTEビットSに格納されている)をテストして、
分析プログラムが監視状態で実行できるかどうかを判定
する。ステップ58で分析プログラムが問題状態のみで
実行できると判定された場合、保全性のエクスポージャ
が終了し、no−opステップ51への「ノー」出口が
選択される。
【0132】しかしながら、ステップ57で、フック・
プログラムが問題状態で作動していると判定された場合
には、ステップ57の「イエス」出口から直接ステップ
59に進む。また、分析プログラムが監視状態で実行で
きると判定された場合には、ステップ58の「イエス」
出口からステップ59へ進む。
【0133】ステップ59は保護キー使用可能性につい
ての特定の制御に関して、フック・プログラムの実行に
対しさらに保全性制御をもたらす。ステップ59はフッ
ク・プログラムのキー使用可能性が、ASTEの分析プ
ログラムに対して与えられるキー使用可能性のサブセッ
トであるかどうかをテストする。ASTEのフィールド
DKMAは分析プログラムに対して認められている最大
キー権限のキー・マスクを含んでおり、フィールドDK
MAは分析プログラムに対して認めることのできる各P
SWキーの索引に1ビットを有している。それ故、ステ
ップ59はフック・プログラムのPSWキーの索引にお
けるCR3のビットを、ASTE<DKMA>フィール
ドの対応する索引付きビットと比較し、これらが等しい
場合には、図6のプロセスを継続するための「イエス」
出口が選択される。これらが等しくない場合には、no
−opステップ51への「ノー」出口Aが選択される。
これはステップ59で、CR3のフック・プログラムの
キー・マスクが、ASTE<DKMA>フィールドに格
納されている現在の分析プログラムの最大権限キー・マ
スクのサブセットであるかどうかをテストすることによ
って行う。CR3の各ビットがASTE<DKMA>の
対応して配置されているビットと等しいか、低い場合に
は、サブセットPKMがCR3に存在する。すなわち、
1となる。しかし、ASTE<DKMA>ビットが0の
場合には、CR3の対応するビットは0でなければなら
ない(また、このCR3ビットが1である場合には、n
o−opステップ51への「ノー」出口Aが選択され
る)。したがって、フック・プログラムが分析プログラ
ムが使用することをASTEが許可していないアクセス
・キーを分析プログラムに渡すことが防止される。
【0134】次いで、図6のステップ61はASTEの
フック・ヘッダ起点フィールド(HHO)にアクセスす
る。HHOはフック・ヘッダ(HH)を見つけだすため
のアドレスを含んでおり、HHはその選択したクラス
(クラス1でも2でもかまわない)に現在のHKM命令
のフック番号に対する使用可能性/使用不能性を決定す
るために使用される第3レベルのフック・マスク制御を
含んでいる。以前に実行したステップ50及び56は現
在のHKM命令がその第1及び第2レベルの使用可能性
によって使用可能とされたことを判断し、ステップ55
はフック番号がクラス1なのかクラス2なのかを判断し
た。現在のHKM命令に対する第3レベルの使用可能性
は、5つのオペランド・ビット27−31(クラス選択
ビット26の次の)の値によって索引が付けられたHH
フィールドのビットの状態によって示される。この索引
付きHHビットの値はステップ62でテストされ、HK
M命令が第3レベルで使用可能であるかどうか判断され
る。索引付きビットが1であれば、使用可能であり、ス
テップ63に進む。しかし、索引付きビットが使用不能
(ゼロ)の場合、図5のno−opステップ51に進
む。
【0135】ステップ63はステップ64ないし69の
サブプロセスを開始し、現在のHKM命令の割当てのた
めのHWA(フック作業域)を見つけだす。フック・ヘ
ッダの当初割り振られた最大N個のHWAブロックがあ
り、これは図4でシステム主メモリ内に連続して配置さ
れたHWA−1ないしHWA−Nとして示されており、
HWA−1はフック・ヘッダ22Bに隣接して配置され
ている。(各HWAに連鎖アドレス・フィールドを設け
ることによって、HWAを不連続に配置することもでき
る。)
【0136】現在のHKM命令に対する割当てに、すべ
てもしくはいくつかのHWAを使用できることもある
が、全く使用できないこともある。また、HWAの若干
または全部が、これらがHKMまたはHKU命令を並行
に実行することによって使用されているため、利用でき
ないこともある。たとえば、ここで説明している実施例
は各HWAブロックに128のバイトを有している。い
ずれかのHKM命令が分析プログラムの処理を完了した
場合、そのHWAは他のHKMまたはHKU命令の実行
のために再割り当てする目的で、再度利用可能となる。
【0137】ステップ63はN値をHWAアドレス制御
フィールドCにロードすることによって、HWA選択サ
ブプロセスを初期化する。最初のHWA−0がアクセス
され、その選択可能性についてテストされる。各アクセ
スされたHWAでテストされる2つのフィールド、「プ
ロセス中フック」(X)フィールドと「次HWA起点」
(NHO)フィールドがある。Xフィールドは、現在要
求しているHKM命令に対する割当て及び選択に利用で
きるか利用できないかを示す。NHOフィールドはこれ
が最後のHWAブロックであるかどうかを示す。(NH
OフィールドはHWAが不連続に配置された連鎖内にあ
る場合に、次のHWAブロックに対する索引も含むこと
ができる。)値0をNHOフィールドに使用して、これ
が最後のHWAであるかどうかを示す。非ゼロのNHO
値(連続HWAに対する1や、非連続HWAに対するポ
インタ値など)は、HWAが最後でないことを示す。非
ゼロのX値はHWAが利用できないことを示し、Xフィ
ールドのゼロ値はHWAが利用できることを示す。
【0138】それ故、次のステップ64は現在アクセス
されているHWAでX=0であるかどうかをテストす
る。X=0の場合、HWAは利用可能であり、図7への
分岐が選択され、このHWAが現在のHKM命令に割り
当てられる。X=1の場合、HWAは利用できず、プロ
セスはステップ66へ進み、NHOをテストして、この
HWAがHWA 0−Nのセット内で最後のものである
かどうかを判定する。最後のものである場合には、現在
利用可能なHWAは存在せず、ステップ67へ進み、O
Sによる特別な処理のためにHKM実行プロセスに割り
込む特別な操作例外を生成する。特別処理はプロセッサ
を他のタスクへディスパッチすることを含んでおり、現
在割込みを受けているHKM命令は、その割り当てられ
たHKM命令がその分析プログラムの処理を完了次第H
WAが利用可能になるのを待機する。所定の時間の経過
後、このときまでに、おそらく1つまたは複数のHWA
が利用可能となっているので、OSは割込みを受けたプ
ロセスをディスパッチすることもできる。
【0139】しかし、現在のHWAが最後のものでない
(NHOが現在のHWAで非ゼロである)場合、ステッ
プ68Aに進み、HWAアドレス制御フィールドCを減
少させる。次いで、ステップ68BはHWA索引1ない
しNの内の1つでなければならないCの現在の値をテス
トする(C=0は無効の値である)。ステップ68Bが
C=0であると判断した場合、OSのサービスを受ける
特別操作例外に対するステップ67への「イエス」出口
が選択される。ステップ68BがCが非ゼロであると判
断した場合、ステップ68Bからステップ69への「ノ
ー」出口が選択され、現在のNHOフィールドに与えら
れている位置にある次のHWAにアクセスする。ステッ
プ64に進み、次のHWAの内容などによるプロセスを
繰り返す。ステップ64−69のループは利用可能なH
WAが見つかるまで、あるいは特別操作例外割込みが発
生するまで継続する。正常な状況では利用可能なHWA
が見つかり、ステップ64から図7へ進む。
【0140】図7において、ステップ71はXフィール
ドを1の状態にセットし、このHWAが他のどのHKM
にも利用できないことを示す。ステップ71を逐次実行
し、マルチプロセッシング・システムにおいて他のプロ
セッサで並行に実行されている他のHKM命令との競合
を防止する。Xフィールドへの他のすべてのプロセッサ
のアクセスを防止するとともに、S/390のCOMP
ARE AND SWAP命令あるいはTEST AN
D SET命令のプロセスと同様な態様で、Xフィール
ドがゼロであることを検査してから、これを1にセット
することによって、競合を回避する。(フィールドXを
ゼロ状態についてテストしてから、1にセットし、すべ
ての他のプロセッサがこのテスト及びセット操作中にフ
ィールドXを変更しないようにする。)ステップ71は
探索を行うHKM命令に対するHWA選択サブプロセス
を完了する。たとえば、他のCPUによる並行アクセス
のため、ステップ71がこのプロセスによってXフィー
ルドを1の状態にセットできない場合、利用可能なHW
Aの探索は、ステップ66へループ・バックすることに
よって継続する。
【0141】ここで、ステップ72に進み、HWAを割
り当てた現在のHWA命令の実行を継続する。図7のス
テップ72−77は分析プログラムに入って、現在のH
KM命令の実行を継続することを可能とし、かつ分析プ
ログラムによって(これがその実行を完了した場合に)
利用可能なリンクがフック・プログラムを現在のHKM
命令以外のフック・プログラムの実行を継続できるよう
にするためにマイクロコード/ハードウェア・リングを
設定するのに必要な格納操作を行う。
【0142】ステップ72は現在のHKM命令に関連す
る以下の情報を関連するHWAのフィールドに格納す
る。
【0143】A.フック番号フィールドHWA<HN
>、第2のオペランドのビット1−31の値(ビット位
置26−31を含んでいる)を保管することによる。ま
た、HNフィールドのビット0はゼロにセットされ、H
KM命令が実行されていることを示す。
【0144】B.HWA<ILC>フィールドは命令長
コードの値を受け取る。
【0145】C.HWA<BDK>フィールドはHWA
に格納されるビットで、フック・プログラムのPKMが
分析プログラム記憶キーを使用する権限を有しているか
どうかを表す。CR3のビット(分析プログラム・キー
を表す)を見つけだすためにASTE<DK>に格納さ
れている分析プログラム・キーの値を使用して、フック
・プログラムのPKM(CR3のプログラム・キー・マ
スク)に索引を付け、かつこのPKMビット位置のセッ
ティングをHWA<BDK>ビットにコピーすることに
よって、これは行われる。1の状態はフック・プログラ
ムが権限を有していることを示し、0の状態は分析プロ
グラムにアクセスする権限がないことを示す。これはフ
ック・プログラムがHKM実行時にAPKへのアクセス
を有していない場合に、フック・プログラムがフックの
戻り時にAPKへのアクセスを受け取ることを防止す
る。
【0146】D.HWA<PSW>フィールドはプロセ
ッサの現在のPSWを受け取る(現在のHKM命令の正
常な実行時に)。
【0147】E.AR/GR対4、5、及び15に対す
るHWAフィールドはこれらそれぞれのAR/GR対の
現在の内容を受け取る。
【0148】フック・プログラムには共用記憶キー(キ
ー9など)を割り当てることができる。共用記憶キーは
共用記憶キーを使用しているプログラムが記憶ブロック
が割り当てた他のキーにアクセスするのを防止するが、
他のキーを使用しているプログラムは共用記憶キーが割
り当てられたブロック内のプログラム及びデータにアク
セスすることができる。フック・プログラムに共用キー
が割り当てられている場合、このプログラムは記憶域内
の分析プログラムにアクセスすることができないが、分
析プログラム(他のキーが割り当てられている)はアク
セス・キーを操作することなくフック・プログラムにア
クセスすることができる。
【0149】次に、ステップ73はマイクロコード・ロ
ーカル記憶装置にPSWを構築し、後で、プロセッサが
分析プログラムの実行を開始できるようにする。ステッ
プ73は現在のプロセッサのPSWをローカル・プロセ
ッサ記憶装置に格納し、次いで、PSW内の次のサブフ
ィールドに格納することによってPSWフィールドのい
くつかを変更する。
【0150】A.アドレス指定モード・サブフィールド
PSW<A>は1にセットされる(31ビット・アドレ
ス・モードを示すため)。
【0151】B.PSWビット8−11におけるキー・
サブフィールドPSW<key>は分析プログラムに対
するPSWキーを含んでいるASTE<DK>にセット
される。
【0152】C.アドレス空間制御サブフィールドPS
W<AR>(PSWビット17の)は0にセットされ、
1次モードが使用されていることを示す。
【0153】D.DATモード及び1次空間モード・サ
ブフィールドPSW<5,16>は1、0の状態のまま
である。
【0154】E.命令アドレス・サブフィールドPSW
<IA>はフィールドASTE<DEA>から、分析プ
ログラムの入口アドレスへセットされる。
【0155】ステップ74は呼び出される分析プログラ
ムによって使用されるPKMを生成する。分析プログラ
ムはCR3にあるフック・プログラムのPKMを使用
し、さらに分析プログラムのキーを使用可能とする。こ
れはCR3の分析プログラム・キー・ビットに索引を付
け、これを1の状態にセットすることによって行われる
(ASTE<DK>フィールドは索引付け値を与え
る)。このCR3マスク・セッティング操作は分析プロ
グラムがHWAを含むそれ自体の記憶域にアクセスでき
るようにする。
【0156】次に、ステップ76は関連するHWAのア
ドレスを汎用レジスタAR/GR4に格納することによ
って、これを保存する。AR/GR5は分析プログラム
が自由に使用できる状態のままである。AR/GR15
には分析プログラムへの入口アドレスであるフィールド
ASTE<DEA>がロードされる。これは分析プログ
ラムに、アドレス空間におけるそれ自体の位置の基本ア
ドレスを与える。
【0157】次いで、ステップ77はロードPSW命令
を使用して、PSW(ステップ73によって構成され
た)をプロセッサに、その現在のPSW(分析プログラ
ムへの入口アドレスである命令アドレスを有している)
としてロードする。これは分析プログラムの実行を開始
し、このプログラムは分析プログラムの最後にあるステ
ップ78のフック戻し命令(HKR)命令に達するま
で、実行を継続する。
【0158】(g)フック・アンマスク命令(HKU)
実行プロセス−図8ないし図10:フック・アンマスク
(HKU)命令はHKU命令がフック番号オペランドを
有していない点で、フック・マスク(HKM)命令と異
なっている。これはHKU命令に対するオペランド・フ
ィールド(たとえば、B、D)の排除を可能とし、この
サイズを相対的にHKM命令よりも小さくする。HKU
命令が有しているのは、操作コード(opコード)だけ
である。
【0159】HKU命令のサイズが小さいことによっ
て、フックなしで以前にテストされ、フックの挿入後に
新たなプログラムテストが予定されていないプログラム
にフックを配置するのに、HKM命令より容易に使用す
ることが可能となり、これはHKU命令によってプログ
ラム内の既存のコードのいくつかをオーバレイすること
によって行われる。
【0160】図8、図9及び図10からなる流れ図は、
フック・アンマスク命令HKUが、実行プロセッサによ
って使用されるプロセス・ステップを示す。その実行プ
ロセスはステップ81で始まり、プロセッサがその操作
モードをテストし、フック・プログラムがDATモード
であり、かつS/390コンピュータ・アーキテクチャ
の1次空間モードであることを判定する。
【0161】ステップ81がPSWビット位置5及び1
6のビットがそれぞれ1及び0状態であると判断した場
合には、ステップ83への「イエス」出口が選択され
る。
【0162】しかし、ステップ81がビット5、16が
1、0を示していないと判断した場合には、ステップ8
1からステップ82へのD入口への「ノー」(N)出口
が選択され、OSによる特別な処理のためHKUの実行
に割り込む特別操作例外を発生する。特別処理はプロセ
ッサを他のタスクにディスパッチすることを含むことが
できる。HKU命令の使用はテストされたプログラム・
コードのオーバレイを含んでいると考えられるので、予
期しないどのような事象もフック・プログラムのそれ以
上の実行を疑わしいものとし、OSが監視しなければな
らないものとなる。
【0163】ステップ83に進んだ場合(正規の場
合)、保全性規則の違反が存在しているかどうかの判定
を行う。この規則の内容は監視状態で作動しているフッ
ク・プログラムが、問題状態だけで使用するように設計
された権限のない分析プログラムにアクセスできないこ
とにある。しかしながら、問題状態で作動しているフッ
ク・プログラムは問題状態または監視状態のいずれかで
作動するよう設計されている分析プログラムにアクセス
することができる。
【0164】フック・プログラムに対する問題状態/監
視状態は、プロセッサの現在のPSWビット15の状態
によって示される。分析プログラムに対する問題/監視
機能は、現在のASTEのビットSの状態によって示さ
れる。
【0165】したがって、ステップ83はフック・プロ
グラムを実行しているプロセッサのPSWビット15を
テストする。フック・プログラムが監視状態である場合
には、ステップ84に進み、予期される分析プログラム
の状態(ASTEビットSに格納されている)をテスト
し、分析プログラムが監視状態で実行できるかどうかを
判定する。分析プログラムが問題状態のみで実行されて
いるとステップ84が判定した場合には、保全性のエク
スポージャが存在しており、ステップ82への「ノー」
出口Dが選択され、特別操作例外を生成し、HKUプロ
セスに割り込む。
【0166】フック・プログラムが問題状態で実行され
ていると、ステップ83が判断した場合、ステップ83
の「イエス」出口からステップ86に直接進む。あるい
は、分析プログラムが監視状態で実行できると判断した
場合には、ステップ84の「イエス」出口からステップ
86に進む。
【0167】次いで、図8のステップ86はASTEの
フック・ヘッダ起点フィールド(HHO)にアクセスす
る。HHOはフック・ヘッダ(HH)を見つけだすアド
レスを含んでいる必要がある。HHOアドレスはHHO
域の隣に配置されている最初のHWAを見つけだす。H
HOアドレスは非ゼロ値であり、ステップ86はこれが
認められていないゼロ値(初期化されていない場合に発
生するもの等)であるかどうかをテストする。ゼロであ
る場合には、ステップ82に進む「イエス」出口Dが選
択され、ステップ82は特別操作例外を生成し、HKU
プロセスに割り込む。
【0168】使用可能性/使用不能性はHKU命令には
使用されず、したがって、CR2Hフィールド、AST
EフィールドH1及びH2、ならびにフック・マスク・
フィールドHMはHKU命令によって使用されない。
(これらが使用されるのは、HKM命令に対してだけで
ある。)
【0169】ステップ86がHHOに対して非ゼロの値
を発見した場合、ステップ86の「ノー」出口からステ
ップ87へ直接進む。現在のフック・プログラムの実行
に関する保全性制御を与え、フック・プログラムが分析
プログラムよりも大きなアクセス権限を有しないように
する。ステップ87は、CR3のフック・プログラムの
キー・マスクが、ASTE<DKMA>フィールドに格
納されている現在の分析プログラムの最大権限キー・マ
スクのサブセットであるかどうかをテストすることによ
って行われる。CR3の各ビットがASTE<DKMA
>の対応して配置されたビットと等しいか、少ない、す
なわち1の場合、サブセットPKMがフック・プログラ
ムに対するCR3に存在する。しかし、ASTE<DK
MA>ビットが0の場合、CR3の対応するビットは0
でなければならない(また、そのCR3のビットが1の
場合には、例外条件が存在する)。したがって、フック
・プログラムがASTEによって分析プログラムが使用
する権限が与えられていないアクセス・キーを、分析プ
ログラムに渡すのが防止される。
【0170】したがって、CR3のいずれかのビットが
ASTE<DKMA>の対応するビットよりも大きい場
合、Dへの「ノー」出口を選択して、ステップ82に進
み、HKUプロセスに割り込む特別操作例外を生成す
る。しかし、CR3のフック・プログラムのキー・マス
クがASTE<DKMA>に格納されている現在の分析
プログラムの最大権限キー・マスクのサブセットである
場合、ステップ88への「イエス」出口が選択される。
【0171】次いで、ステップ88はASTEのHHO
フィールドにアクセスして、フック・ヘッダ域にアクセ
スし、また図9のステップ91への出口が選択される。
HHOアドレスはフック・ヘッダ域の隣にある最初のH
WAを見つけ出せるようにする。
【0172】ステップ91はステップ92−97のサブ
プロセスを開始するが、これは本質的に図6のステップ
64ないし69(現在のHKM命令への割当てのために
利用可能なHWA(フック作業域)を見つける)に関し
て本明細書で説明したサブプロセスと同じものである。
この場合、ステップ92−97は現在のHKU命令への
割当てのために利用できるHWAを、システムに割り振
られているN個のHWAブロックから見つけだす。ステ
ップ91−97からの出口D及びFだけが、図6のステ
ップ64ないし69と異なっている。ステップ93また
はステップ96の「イエス」出口からの出口Dが選択さ
れ、ステップ82に進み、最後のHWAが利用できない
か、あるいは認められていないC=0の場合、特別操作
例外を生成し、HKUプロセスに割り込む。
【0173】HWAが利用できると判断された場合、こ
れが選択され、図10のステップ101へのステップ9
2からの出口F(ステップ64からの出口Cと同様な)
が選択され、HKUプロセスを継続する。
【0174】図10は1という値がHWAフック番号フ
ィールドHWA<HN>のビット0にセットされ,現在
の命令のタイプがHKUであることを示している以外、
図7と同一である。(図7において、HWA<HN>の
ビット0は0という値にセットされ、現在の命令のタイ
プがHKMであることを示している。)これを除けば、
図10の内容及び作動は図7について説明したところと
同じである。
【0175】(h)フック戻り(HKR)命令プロセス
−図11及び図12:フック戻り(HKR)命令は、フ
ック・アンマスク(HKU)命令またはフック・マスク
(HKM)命令のいずれかからハードウェア/マイクロ
コード・リターンを供給する。保管されているPSW命
令アドレスが分析プログラムによって変更されていなか
った場合、HKR命令によってアドレスされたHWAに
関連する最後に実行されたフック命令の直後のフック・
プログラム内の命令に戻る。HKR命令は操作コード
(opコード)、ならびに従来の(B)+Dアドレス値
を構成するオペランドを有している。ただし、このオペ
ランドのアドレスは、フック・プログラムへ戻るために
HKRを出す分析プログラム実行のこのインスタンスを
引き起こしたフック命令の実行によって現在使用されて
いるHWAのアドレスである。
【0176】アドレスされたHWAが選択的に利用でき
ることを、このHKR命令によってアドレスされたHW
AのXフィールドが示しているか、あるいはいずれかの
PSWアドレス・モード・フィールドがフック・プログ
ラム(この場合も、戻りプロセスによって始動される)
による実行と矛盾する場合には、現在のHKR命令の実
行を継続することはできない。留意すべきなのは、オペ
レーティング・システムがこの戻りプロセスに関与して
いないことである(例外状態が発生しない限り、OSが
フック・プログラムの以前の実行、及びこの同じフック
・命令に対する分析プログラムの以前の実行に関与して
いないのと同じである)。
【0177】HKR命令の実行は図11のステップ11
0から始まり、現在のPSWにアドレス指定モードをチ
ェックして、矛盾するアドレス指定モードが存在してい
ないことを判定する。この場合、PSWのビット位置
5、16、17はすべて、選択すべきステップ112へ
の「イエス」出口に対してそれぞれの値1、0、0を有
していなければならない。これらのPSWビット値はD
AT、1次、及び非ARの各モードを示す。いずれかの
モードがこの基準を満たしていない場合、ステップ11
1に進み、現在のHKR実行プロセスに割り込み、プロ
セッサ制御をOSが問題を処理するようにOSに切り換
える特別操作例外を生成する。OSによる特別な処理は
HKRプロセスの実行をプロセッサからディスパッチ解
除するものであり、プロセッサの他のタスクへのディス
パッチを含むこともできる。
【0178】ステップ112へ進んだ場合(正規の場
合)、保全性規則の違反が存在しているかどうかの判定
を行う。この規則はHWA内のXフィールドがそのアン
ロック状態である利用可能状態(X=0)を示してはな
らないというものである。X=0状態を発見した場合、
上述のように、特別操作例外のためのステップ111へ
の「イエス」出口が選択される。
【0179】ステップ112でXがゼロでない(ロック
状態)と判断された場合、プロセスはステップ113へ
進み、フック・プログラムがプロセッサの制御を再び獲
得したときに、フック・プログラムが後で使用するため
のローカル記憶装置(プロセッサのマイクロコードに利
用できる)にプログラム・キー・マスク(PKM)を構
築する。PKMの構築は現在のPKM(CR3からの)
のコピーを作成し、HWA<BDK>フィールドに格納
されているビットの索引ASTE<DK>におけるビッ
トとの論理積を取り、PKMをステップ114及び11
6のために保存する。
【0180】次いで、ステップ114に進み、提案され
ている新しいPSWキー(HWA<PSW>ビット9−
11)がステップ113で構築された新しいPKMの対
象となっているかどうかをチェックする。新しいPKM
が提案されたPSWキーを含んでいない場合、ステップ
111に進み、特別操作例外を反映する。それ以外の場
合には、ステップ116に進み、新しいPKMをインス
タンス化する。
【0181】次いで、図11のステップ116がローカ
ル作業域にステップ113によって構築されているフッ
ク・プログラムのプログラム・キー・マスク(PKM)
を使用して、CR3ビット0−15をロードする。次い
で、ステップ117が関連するHWAに格納されている
PSW値(GR4に格納されているアドレスによって見
つけだされる)を使用して、プロセッサの現在のPSW
をロードする。前述したように、これらはPSW<8−
11>、PSW<17>、PSW<18−19>、PS
W<20−23>、PSW<32>、及びPSW<33
−63>を含んでいる。
【0182】ステップ117が実行された後、図12の
ステップ121へ進む。ステップ121は対応するフィ
ールドHWA<AR/GR4>、HWA<AR/GR5
>及びHWA<AR/GR15>に格納されている内容
を使用してAR/GR4、5及び15をロードして、フ
ック・プログラムが現在のフック命令の実行を引き起こ
したときに、これらのフィールドが有していた状態にこ
れらを復元する。また、HWAに格納されているPSW
は一時的な記憶のため、マイクロコードのローカル記憶
装置にコピーされる。
【0183】次に、ステップ122で、関連するHWA
内の情報(そのHKR命令によって使用されるものであ
り、かつおそらくは現在のフック命令と依然関連してい
る)がもはや必要ないことを認識する。したがって、ス
テップ122はこのHWAのXフィールドをゼロ状態に
リセットし、これのロックを解除し、他のフック命令に
よる選択のために再度利用可能とする。
【0184】最後に、直ちにステップ123に進み、ス
テップ117でロードされたPSWの制御の下で実行を
開始することによって、プロセッサの実行をフック・プ
ログラムに切り換える。フック・プログラムは次いで、
正規の場合に最後に実行されたフック命令の直後の命令
のところで、実行を開始する。
【0185】(i)分析プログラムの動作の特性:分析
プログラムの実行は、表示画面及びキーボードにおける
分析プログラムと人間のユーザとの間の対話式コマンド
が分析プログラムに指示し、フック・プログラムの指定
されたHKM命令の使用可能性/使用不能性などの所定
のパラメータの変更を可能とすること、新しいHKU命
令のフック・プログラムへの挿入、フック・プログラム
に対するアクセス・キー、またはフック・プログラムが
実行を再開するアドレスの変更などの、いくつかの特徴
を含んでいる。
【0186】分析プログラムはフック命令の実行から得
られるフック・プログラムに関するデータの選択、分析
及び記録に対する制御を有している。それ故、分析プロ
グラムはフック・プログラムの実行中にこのプログラム
のリアルタイムの分析を行い、その要約した結果のみを
格納することができる。あるいは、分析プログラムはこ
れがデータの収集のために予約しているメモリの区域に
すべての分析データを格納し、バッチ・タイプの分析を
後で行うことができる。あるいは、データを表示画面で
オンラインで走査することができる。
【0187】したがって、本発明はプログラム(オブジ
ェクト・コード)の実行可能形式での分析を扱うもので
あり、ソース・コード形式でプログラムを扱うものでは
ない。
【0188】実行中の分析プログラムは通常フック・プ
ログラムにアクセスし、現在実行中のフック命令に関連
する情報を抽出し、フック情報を生成し、監視/追跡/
デバッグ情報を生成し、フック・プログラムにアクセス
できない記録可能作業域に書き込む分析プログラムにこ
れを伝える。フック命令が使用可能状態であるか、使用
不能状態であるかにかかわりなく、本発明のフック命令
の使用によって、割込みは生じない。フック・プログラ
ムと分析プログラムの間の遷移は、OSによる最初の許
可時に確立される制約の下でフック機構を介して直接発
生する。フック・プログラムと分析プログラムの間の制
御の正常な遷移の際に、OSによるこれ以降の処置は必
要ない。
【0189】
【発明の効果】したがって、本発明によって、本発明発
明の提供する任意のフック命令ごとに、フック・プログ
ラムと分析プログラムの間、あるいは分析プログラムと
フック・プログラムの間での切換え中に生じるプログラ
ムの割込みや再ディスパッチを行うことなく、分析プロ
グラム16の実行と実行中のフック・プログラム10
(そのうち、1つのフック・プログラム10だけが図1
に示されている)の間でのスムースな割込みのない制御
の切換えが可能となる。
【図面の簡単な説明】
【図1】本発明の一般的な実施例のブロック線図であ
る。
【図2】本発明の詳細な実施例のブロック線図である。
【図3】図2の実施例で使用されるプログラム状況ワー
ド(PSW)の関連フィールドの図である。
【図4】図2の実施例で使用されるフック・ヘッダ及び
フック作業域(HWA)の図である。
【図5】図2の実施例に対してフック・アンダー・マス
ク(HKM)命令によって使用されるプロセスの流れ図
である。
【図6】図2の実施例に対してフック・アンダー・マス
ク(HKM)命令によって使用されるプロセスの流れ図
である。
【図7】図2の実施例に対してフック・アンダー・マス
ク(HKM)命令によって使用されるプロセスの流れ図
である。
【図8】フック・アンマスク(HKU)命令によって使
用されるプロセスの流れ図である。
【図9】フック・アンマスク(HKU)命令によって使
用されるプロセスの流れ図である。
【図10】フック・アンマスク(HKU)命令によって
使用されるプロセスの流れ図である。
【図11】図2の実施例に対してフック戻り(HKR)
命令によって使用されるプロセスの流れ図である。
【図12】図2の実施例に対してフック戻り(HKR)
命令によって使用されるプロセスの流れ図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 カール・エドワード・クラーク アメリカ合衆国12603 ニューヨーク州 ポーキープシー バート・ドライブ 46 (72)発明者 マイケル・ヘンリ・テオドア・ハック アメリカ合衆国10506 ニューヨーク州 ピークスキル ファーネス・ドック・ロー ド 403 (72)発明者 キャスパー・アンソニー・スカルジ アメリカ合衆国12601 ニューヨーク州 ポーキープシー アカデミー・ストリート 160 (72)発明者 アール・ジェイ・シュマルツ アメリカ合衆国12590 ニューヨーク州 ワッピンガーズ・フォールス エッジ・ヒ ル・ドライブ 7 (72)発明者 バースカー・シンハ アメリカ合衆国12590 ニューヨーク州 ワッピンガース フォールス ケンダル・ ドライブ 19

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】プロセッサ手段を実行することによってフ
    ック・プログラム内のフック命令を実行し、 上記フック命令に対する分析プログラムの実行を開始
    し、かつ一連のフック作業域(HWA)を指定するため
    のフック制御域を見つけだしてアクセスし、 割当てられていないHWAを検出するために一連の上記
    HWAを探索し、かつ該割当てられていないHWAを上
    記フック命令に割り当て、 フック・プログラム内のフック命令の後に続く命令の命
    令アドレスを上記HWAに格納し、 上記HWAに格納された命令アドレスにおける命令にア
    クセスして実行するために、上記プロセッサ手段を呼び
    出し、フック・プログラム内の任意のフック命令の実行
    を維持するためにオペレーティング・システムの介在を
    必要とすることなく、上記フック命令に対する分析プロ
    グラムの実行の完了時にフック・プログラムの実行を継
    続するステップを含む、フック命令の実行方法。
  2. 【請求項2】フック・プログラム内のすべてのフック命
    令に対する使用可能性/使用不能性を制御するためのフ
    ック使用可能化手段を設け、 フック・プログラム内の上記フック命令の実行を可能と
    するために、上記フック使用可能化手段を使用可能状態
    にセットし、フック・プログラム内の上記フック命令の
    実行を不能とするために、上記フック使用可能化手段を
    使用不能状態にセットするステップを含む、 請求項1記載のフック命令実行方法。
  3. 【請求項3】フック・プログラム内の指定されたタイプ
    のフック命令の実行を可能/不能とするために上記フッ
    ク制御域にマスク使用可能性フィールドを設け、 マスク可能タイプの命令が、複数のフック番号のうちい
    ずれであるかを指示するためのオペランドを含み、 上記マスク使用可能性フィールドにフック番号による索
    引を付け、該フック番号によって表されたフック命令の
    タイプに関する使用可能性/使用不能性状態の指示を見
    つけだし、異なるタイプのフック命令を選択的に使用可
    能及び使用不能とするステップを含む、 請求項3記載のフック命令の実行方法。
  4. 【請求項4】操作コードだけを有し、オペランドを有し
    ていない小さなフック命令を構築し、フック・プログラ
    ム内のコードを該小さなフック命令によってオーバレイ
    するステップを含む、 請求項2記載のフック命令の実行方法。
  5. 【請求項5】フック制御域内の複数のクラス・マスク使
    用可能性フィールドを指定し、1つのクラスを単一の操
    作として使用可能または使用不能とするために、フック
    番号の異なるサブセットを異なるクラスのマスク可能タ
    イプのフック命令としてそれぞれ使用可能とするステッ
    プを含む、 請求項3記載のフック命令の実行方法。
  6. 【請求項6】フック・プログラム及び分析プログラムを
    異なる記憶保護キーを有する異なる実記憶域に割当てる
    ステップを含む、 請求項1記載のフック命令の実行方法。
  7. 【請求項7】同一の分析プログラムによって分析されて
    いる複数のフック命令を並行に実行することのできる複
    数のフック・プログラムを1つまたは複数のプロセッサ
    で実行し、並行して実行されているフック命令に異なる
    HWAを割当てるステップを含む、 請求項1記載のフック命令の実行方法。
  8. 【請求項8】並行して実行される複数のフック・プログ
    ラム及び分析プログラムを同一の仮想アドレス空間に配
    置するステップを含む、 請求項1又は7記載のフック命令の実行方法。
  9. 【請求項9】割り当てられていないHWAが見つからな
    い場合には、特別操作例外状態をプロセッサに通知する
    ステップを含む、 請求項1記載のフック命令の実行方法。
  10. 【請求項10】フック命令を含んでいるフック・プログ
    ラムの実行を継続するために、現在実行されているフッ
    ク命令に関連したHWAの命令アドレスにある命令にプ
    ロセッサ制御を渡すための操作コード及びオペランドか
    らなるフック戻り命令を構築するステップを含む、 請求項1記載のフック命令の実行方法。
  11. 【請求項11】指定されたタイプのフック命令がフック
    命令をノーオペレーション命令(no−op)として扱
    うことによって使用不能とされていることをマスク使用
    可能性フィールドが示す(フック命令のオペランドで示
    される)場合、フック命令の実行を禁止するステップを
    含む、 請求項3記載のフック命令の実行方法。
  12. 【請求項12】分析プログラムに割り込みそのタスク状
    態を保管することによって、第1のフック・プログラム
    に対して実行されている分析プログラムの実行中にプロ
    セッサ上のタスクを切り換え、 第2のフック・プログラムの他のタスク状態をプロセッ
    サにロードし、 プロセッサ上で第2のフック・プログラムに対して分析
    プログラムを実行してから、コンピュータ・システムの
    同一のプロセッサまたは他のプロセッサ上で第1のフッ
    ク・プログラムに対する分析プログラムの実行を復元す
    るステップを含む、 請求項1記載のフック命令の実行方法。
  13. 【請求項13】フック・プログラム内の異なるフック命
    令に対するタスクを切り換えることによって、複数の並
    行に実行されているフック・プログラム内の複数のフッ
    ク命令に対する分析プログラムを並行に実行し、 フック命令がフック・プログラムで実行される順序がど
    のようなものであっても、異なるフック・プログラムに
    対して分析プログラムをタスク切り換えするステップを
    含む、 請求項12記載のフック命令の実行方法。
  14. 【請求項14】コンピュータ・システムの内部コード手
    段もしくはハードウェア手段またはその両方を操作する
    中央演算処理装置(CPU)により、1つまたは複数の
    並行に実行されているフック・プログラムのフック命令
    を実行する方法であって、 分析プログラムの実行を開始するためのプログラム入口
    位置の情報と、一連のHWA内の最初のHWA(フック
    作業域)のHWA位置の情報とを含むフック制御域に、
    上記プロセッサ内部コード手段もしくはハードウェア手
    段またはその両方によってアクセスし、 割当てられていない状態を示す割当てフィールドを含ん
    でいるHWAを一連のHWAで探索し、割当てられてい
    ないHWAを発見した場合に、フック命令に対する割当
    て済状態を示すために割当てフィールドをセットし、 フック・プログラム内のフック命令の後に続く命令に対
    する命令アドレスを上記HWAに格納し、 上記プログラム入口位置の情報を使用して、プロセッサ
    内部コード手段もしくはハードウェア手段またはその両
    方によって分析プログラムの実行を呼出し、プロセッサ
    実行制御を該分析プログラムに渡し、フック命令の連続
    して割込みのない実行が該分析プログラムの実行を含む
    ようにし、 プロセッサ内部コード手段もしくはハードウェア手段ま
    たはその両方を呼び出す分析プログラムによる分析プロ
    グラムの実行の終了時に、HWAに格納されている命令
    アドレスにある命令にプロセッサ制御を渡し、分析プロ
    グラムの終了からフック命令の後に続く命令でのフック
    ・プログラムの実行への連続した割込みのない実行をプ
    ロセッサで維持し、オペレーティング・システム・プロ
    グラムによる該実行割込みなしに、プロセッサの連続し
    た実行を維持するステップを含むフック命令実行方法。
  15. 【請求項15】フック命令に割り当てられたHWAのア
    ドレスである分析プログラムの入口アドレスを、汎用レ
    ジスタ(GR)の所定のサブセットの内容のフック命令
    を実行している内部コード手段もしくはハードウェア手
    段またはその両方によって保管し、GRのそれぞれにロ
    ードし、1つまたは複数のGRを分析プログラムが使用
    できるようにし、 分析プログラムの終了時に、GRの保管された内容を上
    記内部コード手段もしくはハードウェア手段またはその
    両方によって復元してから、フック・プログラム内の次
    の命令を実行するステップを含む、 請求項14記載のフック命令の実行方法。
  16. 【請求項16】プロセッサ手段を実行することによって
    フック・プログラム内のフック命令を実行し、 上記フック命令に対する、分析プログラムの実行を開始
    し、一連のフック作業域(HWA)を指定するためのフ
    ック制御域を特定してアクセスし、 割当てられていないHWAを検出するために一連のHW
    Aを探索し、該割当られていないHWAをフック命令に
    割り当て、 フック・プログラム内のフック命令の後に続く命令の命
    令アドレスを上記HWAに格納し、 フック命令から分析プログラムへの実行リンク中に、オ
    ペレーティング・システムの介入を必要とすることな
    く、フック命令に対する分析プログラムを実行するステ
    ップを含むフック命令の実行方法。
  17. 【請求項17】フック・プログラム内のフック命令に対
    して分析プログラムを実行し、 フック・プログラム内のフック命令の後に続く命令のア
    ドレスをフック作業域(HWA)に格納し、 上記HWAに格納された命令アドレスの命令にアクセス
    して実行するために、プロセッサ手段を呼び出し、分析
    プログラムからフック・プログラムへの実行リンク中に
    オペレーティング・システムの介入を必要とすることな
    く、フック命令に対する分析プログラムの実行の終了時
    にフック・プログラムの実行を継続するステップを含む
    フック命令の実行方法。
  18. 【請求項18】フック命令を含む1または複数のフック
    ・プログラムを実行するためのプロセッサ部と、 上記フック命令に応答して上記フック・プログラムを分
    析するための分析部と、 使用可能なフック命令について割当てられ、フック・プ
    ログラムの状態情報を管理する一連のフック作業域(H
    WA)と、 上記一連のHWAのうち最初のHWAを指定するための
    アドレス情報並びに上記フック命令に対する分析部の実
    行を開始するためのリンク情報を含むフック制御域とを
    具備し、 上記分析部の実行終了時にフック・プログラムの実行が
    継続される、プログラム分析のためのデータ処理システ
    ム。
JP5199434A 1992-08-11 1993-08-11 プログラム分析のためのフック命令実行方法及びデ―タ処理システム Expired - Lifetime JP2539161B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US928937 1992-08-11
US07/928,937 US5454086A (en) 1992-08-11 1992-08-11 Dynamic program analyzer facility

Publications (2)

Publication Number Publication Date
JPH0793183A true JPH0793183A (ja) 1995-04-07
JP2539161B2 JP2539161B2 (ja) 1996-10-02

Family

ID=25457046

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5199434A Expired - Lifetime JP2539161B2 (ja) 1992-08-11 1993-08-11 プログラム分析のためのフック命令実行方法及びデ―タ処理システム

Country Status (2)

Country Link
US (1) US5454086A (ja)
JP (1) JP2539161B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013025559A (ja) * 2011-07-21 2013-02-04 Mitsubishi Electric Corp プログラムトレース管理装置及びプログラムトレース管理方法及びプログラム
JP2013506177A (ja) * 2009-09-29 2013-02-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 改良型モニタ機能実装

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0689132B1 (en) * 1994-06-23 2000-07-26 International Business Machines Corporation Visualizing object-oriented software
JPH08339298A (ja) * 1995-02-02 1996-12-24 Ricoh Co Ltd マイクロプロセッサにおける命令追加方法及びそれを用いたマイクロプロセッサ
US5732272A (en) * 1995-07-31 1998-03-24 Apple Computer, Inc. Subroutine execution time tracer
US5778169A (en) * 1995-08-07 1998-07-07 Synopsys, Inc. Computer system having improved regression testing
US5899987A (en) * 1995-10-03 1999-05-04 Memco Software Ltd. Apparatus for and method of providing user exits on an operating system platform
US5956479A (en) * 1995-11-13 1999-09-21 Object Technology Licensing Corporation Demand based generation of symbolic information
US5826005A (en) * 1996-03-22 1998-10-20 Sun Microsystems, Inc. System and method for diagnosing computer program faults through the provision of program probe points and referenceable diagnostic program probes
US6081664A (en) * 1996-09-30 2000-06-27 Intel Corporation Method for monitoring a BIOS
US5946486A (en) * 1996-12-10 1999-08-31 International Business Machines Corporation Apparatus and method for tracing entries to or exits from a dynamic link library
JPH10214203A (ja) * 1997-01-29 1998-08-11 Nec Corp 情報処理装置
US5940618A (en) * 1997-09-22 1999-08-17 International Business Machines Corporation Code instrumentation system with non intrusive means and cache memory optimization for dynamic monitoring of code segments
US5938778A (en) * 1997-11-10 1999-08-17 International Business Machines Corporation System and method for tracing instructions in an information handling system without changing the system source code
US6336184B1 (en) 1998-08-14 2002-01-01 International Business Machines Corporation Method and apparatus for performing a trap operation in an information handling system
US6708180B1 (en) 1998-08-14 2004-03-16 International Business Machines Corporation Method and apparatus for runtime remediation of object-code instructions in a computer program
WO2000068790A1 (en) * 1999-05-06 2000-11-16 Reality Bytes R & D Ltd. An operating system interface method
US6782424B2 (en) * 2002-08-23 2004-08-24 Finite State Machine Labs, Inc. System, method and computer program product for monitoring and controlling network connections from a supervisory operating system
US20060070033A1 (en) * 2004-09-24 2006-03-30 International Business Machines Corporation System and method for analyzing effects of configuration changes in a complex system
DE102006009263A1 (de) * 2006-02-28 2007-09-06 Siemens Ag System und Verfahren zur Analyse des Laufzeitverhaltens eines Steuerungsprogramms für einen Fertigungsprozess
US8151352B1 (en) 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US7818633B2 (en) * 2007-06-29 2010-10-19 International Business Machines Corporation Method and apparatus for identification of program check errors indicating code with high potential for storage overlay
US20090019318A1 (en) * 2007-07-10 2009-01-15 Peter Cochrane Approach for monitoring activity in production systems
US8793662B2 (en) * 2008-03-25 2014-07-29 Microsoft Corporation Runtime code hooking for print driver and functionality testing
US8260711B1 (en) * 2008-12-03 2012-09-04 Symantec Corporation Systems and methods for managing rights of data via dynamic taint analysis
EP2687989B1 (en) * 2011-03-15 2022-05-11 Hyundai Motor Company Communication test device and method
US8918885B2 (en) * 2012-02-09 2014-12-23 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
US10379997B2 (en) * 2017-09-19 2019-08-13 International Business Machines Corporation Expiring hooks for computer application discovery
CN112380094B (zh) * 2020-11-16 2023-07-04 金蝶云科技有限公司 一种rpa业务流程处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59202548A (ja) * 1983-05-02 1984-11-16 Omron Tateisi Electronics Co デバツグ装置
JPH01205348A (ja) * 1988-02-12 1989-08-17 Nec Corp プログラムデバッグ方式

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937740A (en) * 1985-09-18 1990-06-26 Cadre Technologies, Inc. Real time software analyzing system for storing selective m-bit addresses based upon correspondingly generated n-bit tags
US4831517A (en) * 1986-10-10 1989-05-16 International Business Machines Corporation Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system
US5265254A (en) * 1991-08-14 1993-11-23 Hewlett-Packard Company System of debugging software through use of code markers inserted into spaces in the source code during and after compilation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59202548A (ja) * 1983-05-02 1984-11-16 Omron Tateisi Electronics Co デバツグ装置
JPH01205348A (ja) * 1988-02-12 1989-08-17 Nec Corp プログラムデバッグ方式

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013506177A (ja) * 2009-09-29 2013-02-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 改良型モニタ機能実装
JP2013025559A (ja) * 2011-07-21 2013-02-04 Mitsubishi Electric Corp プログラムトレース管理装置及びプログラムトレース管理方法及びプログラム

Also Published As

Publication number Publication date
JP2539161B2 (ja) 1996-10-02
US5454086A (en) 1995-09-26

Similar Documents

Publication Publication Date Title
JP2539161B2 (ja) プログラム分析のためのフック命令実行方法及びデ―タ処理システム
EP0537309B1 (en) System and method for preserving source instruction atomicity in translated program code
US5740413A (en) Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
US5038281A (en) Acceleration of system interrupts between operating systems in guest-host relationship
Denning Third generation computer systems
US5953530A (en) Method and apparatus for run-time memory access checking and memory leak detection of a multi-threaded program
US5621886A (en) Method and apparatus for providing efficient software debugging
Baer A survey of some theoretical aspects of multiprocessing
US7765547B2 (en) Hardware multithreading systems with state registers having thread profiling data
US6694457B2 (en) System and method for monitoring execution of privileged instructions
US5253344A (en) Method and apparatus for dynamically changing the configuration of a logically partitioned data processing system
JPS5911943B2 (ja) デ−タ処理装置の為のトラツプ機構
US4780811A (en) Vector processing apparatus providing vector and scalar processor synchronization
EP0185378B1 (en) Virtual computer system
US5966543A (en) Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
CA1160350A (en) Multi-programming data processing system process suspension
US5499356A (en) Method and apparatus for a multiprocessor resource lockout instruction
GB2329049A (en) A debugger interface unit for identifying selected exceptions
KR19980086609A (ko) 동시적인 프로세서 요구에 의한 데이터 자원의 액세싱을 직렬화하기 위한 컴퓨터 시스템내에서의 블로킹 심볼 제어
Taki et al. Performance and architectural evaluation of the PSI machine
EP0578646B1 (en) Privileged instruction trap for operating system control
EP0523758B1 (en) A method and apparatus for coordinating execution of an instruction by a coprocessor
US20060026387A1 (en) Method and system for recognizing instructions and instruction blocks in computer code
US6772372B2 (en) System and method for monitoring unaligned memory accesses
GB1495729A (en) Apparatus and method for handling exceptions in a data processing system