JPH10301807A - コンピュータソフトウェアの評価のための高速トラップ - Google Patents

コンピュータソフトウェアの評価のための高速トラップ

Info

Publication number
JPH10301807A
JPH10301807A JP10003265A JP326598A JPH10301807A JP H10301807 A JPH10301807 A JP H10301807A JP 10003265 A JP10003265 A JP 10003265A JP 326598 A JP326598 A JP 326598A JP H10301807 A JPH10301807 A JP H10301807A
Authority
JP
Japan
Prior art keywords
computer
trap
patch
instruction
module
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.)
Pending
Application number
JP10003265A
Other languages
English (en)
Inventor
Henry H Knapp Iii
エイチ. ナップ サード ヘンリー
Joseph R Eykholt
アール. エコルト ジョセフ
Roger A Faulkner
エー. フォウルクナー ロージャー
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10301807A publication Critical patent/JPH10301807A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 単一のネイティブ計算機命令をオペレーティ
ングシステムのカーネルに対するユーザプログラマブル
トラップで置換すると共にトラップの実行により評価計
算機命令のシーケンスに対する制御を移行させる。 【解決手段】 カーネル114内のトラップハンドラ5
02は挿入済トラッピング計算機命令402Tがトラッ
プを引き起こしたか決定し、ユーザトラップハンドラ4
06に対する制御を移行させる。ユーザトラップハンド
ラ406は、トラップサイトを評価計算機命令のパッチ
410に対してマップする。トラッピング計算機命令4
02Tが実行されると、トラップハンドラ502はカー
ネル114からユーザトラップハンドラ406に対して
制御を移行させる。この結果、処理は計算機処理の原ア
ドレスから計算機処理の目的アドレスに対して移行され
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータソフ
トウェアの評価に関し、特に、評価の結果得られるコン
ピュータソフトウェアのリダクションを能率的に最小に
すると共にその中で任意のサイズのコンピュータソフト
ウェアが有効に評価されるシステム及び方法に関する。
【0002】
【従来の技術】コンピュータソフトウェアの評価は周知
であり、実行期間中、特定の計算機プログラム内への計
算機プログラムを評価する計算機命令の書込みを伴う。
ここで用いられる計算機プログラムは、コンピュータが
読取り可能なメモリ内に格納される計算機処理を集合的
に定義する一連の計算機命令及びデータである。計算機
処理装置は、計算機処理を形成するために計算機プログ
ラムの計算機命令を読み出し、実行する。計算機処理
は、計算機プログラムの計算機命令及び計算機処理の実
行状態を表現するデータを有する。評価済計算機処理の
実行は、評価済計算機処理の評価を助けるために書込み
済計算機命令の実行を引き起こす。計算機プログラム及
び計算機処理の双方が評価され得る。
【0003】計算機プログラムの評価は、一般的に3つ
の技術の内の1つの技術により実現される。これらの技
術はまた、一般的に計算機処理の評価に適用し得る。第
1の技術では、評価計算機命令は、計算機プログラム又
は計算機処理の中に、すなわち、そのネイティブな(原
存する)計算機命令の間に、直接書き込まれる。ここで
用いられる評価計算機命令は、計算機プログラムを分析
するために計算機プログラム中に書き込まれる計算機命
令であり、また、ネイティブな計算機命令は計算機プロ
グラム内の他の任意の計算機命令である。開発期間中、
通常、計算機プログラムは、評価計算機命令及びネイテ
ィブな計算機命令の双方を有する。しかしながら、計算
機プログラムが商業製品として販売されると、通常、計
算機プログラムは、ネイティブ計算機命令だけを含み、
そして、通常、全ての評価計算機命令は計算機プログラ
ムから取り除かれる。
【0004】第1の技術の例のように、評価計算機命令
は、特定のアドレスにてコンピュータのメモリにアクセ
スするネイティブな計算機命令の前に書き込まれ得る。
この例では、評価計算機命令は、特定のアドレスを決定
し、その特定アドレスと有効なメモリアドレス範囲とを
比較し、また、特定アドレスがいずれの有効なメモリア
ドレス範囲内にも存在しない場合には誤りを報告するこ
とができる。
【0005】第2の技術では、計算機プログラムの2つ
以上のネイティブなコンピュータ命令が、計算機プログ
ラム内に離間配置される別の評価シーケンスの呼出に置
き換えられる。シーケンスの呼出は、周知であるが念の
ために簡単に説明する。シーケンスの呼出は、計算機処
理の制御をシーケンスに移行させると共に、例えば、デ
ータをスタック上にプッシュすることによりシーケンス
にデータを提供する。したがって、シーケンスの呼出
は、(データをスタック上に押しつけることによる)計
算機処理の状態の変化、及び制御の移行を伴う。シーケ
ンスは、シーケンスの呼出により読み出しされると共に
実行される1個以上の計算機命令を含む。
【0006】計算機プログラムが置換済ネイティブ計算
機命令の1つの読取り及び実行を試みると、評価シーケ
ンスが代わりに呼び出される。例えば、置換済ネイティ
ブ計算機命令及び多くの評価計算機命令を含み得る評価
シーケンスの計算機命令が実行される。評価シーケンス
の多くの計算機命令の実行に続き、処理は、計算機プロ
グラム中の計算機命令の評価シーケンスに対する呼出の
直後に戻る。例えば、特定のアドレスにてコンピュータ
メモリにアクセスする2個以上のネイティブ計算機命令
は、特定のアドレスを決定し、その特定アドレスと有効
なメモリアドレス範囲とを比較し、また、特定アドレス
がいずれの有効なメモリアドレス範囲内にも存在しない
場合には誤りを報告する多くの評価計算機命令を含む、
シーケンスに対する呼出を用いて置き換えられ得る。
【0007】第3の技術では、単一のネイティブ計算機
命令が、多くの評価計算機命令のシーケンスに対する分
岐で置き換えられる。そのシーケンスは、数ある計算機
命令の中で特に、置換済ネイティブ計算機命令を含み得
る。シーケンスの最後の計算機命令は、一般的に、置換
済ネイティブ計算機命令の実行直後に通常実行される計
算機プログラムの計算機命令に対する分岐である。例え
ば、特定のアドレスにてコンピュータメモリにアクセス
するネイティブ計算機命令は、特定のアドレスを決定
し、その特定アドレスと有効なメモリアドレス範囲とを
比較し、また、特定アドレスがいずれの有効なメモリア
ドレス範囲内にも存在しない場合には誤りを報告する多
くの評価計算機命令を含む計算機命令のシーケンスに処
理を移行させる分岐命令と置き換えられ得る。
【0008】計算機プログラムに対する迅速な評価計算
機命令の追加、及び計算機プログラムからの迅速な評価
計算機命令の除去は、一般的に有益なことである。した
がって、当業者の間ではソースコード形式よりもオブジ
ェクトコード形式の評価計算機プログラムが一般的に好
まれている。ソースコードは人間が理解し得る形式の1
個以上の計算機命令の集合であり、オブジェクトコード
は計算機処理装置が理解し得る形式の1個以上の計算機
命令の集合である。計算機プログラムは、通常、ソース
コードをコンパイルする、すなわちソースコードをオブ
ジェクトコードに翻訳するソフトウェアエンジニアによ
って、ソースコード形式の計算機命令を構成すると共に
組み合わせることにより生成される。計算機プログラム
のコンパイレーションは、非常に時間を要すると共にコ
ンピュータシステムの相当なリソースを必要とし得る。
ソースコード形式の間に計算機プログラムが評価される
場合には、計算機プログラムは、評価された計算機プロ
グラムがコンピュータシステム内で実行され得る前に再
度コンパイルされなければならない。評価計算機命令
は、オブジェクトコード形式の間、すなわちプログラム
のコンパイレーションの後に、評価計算機命令が計算機
プログラムに追加される場合には、計算機プログラムの
再コンパイレーションを必要とすることなく計算機プロ
グラムに対して加えられ得る。この方法では、評価計算
機命令は、計算機プログラムに対して迅速に追加され又
は、計算機プログラムから迅速に除去され得る、すなわ
ち、一般的に、計算機プログラムのコンパイルが必要な
場合と比べて飛躍的に少ない時間で追加あるいは除去さ
れ得る。
【0009】さらに、通常、計算機処理はオブジェクト
コード形式の計算機命令を含んでいる。したがって、オ
ブジェクトコードを評価する能力は、計算機処理の評価
を可能にする。この結果、計算機処理は、計算機処理実
行中にデバッガによって必要に応じて評価され得る。デ
バッガは他の計算機処理を制御すると共に分析する計算
機処理である。
【0010】評価計算機命令は、一般的に3通りの方法
の内の1つの方法でオブジェクトコード形式の計算機プ
ログラムに対して追加される。第1に、評価計算機命令
は、計算機プログラム中の評価計算機命令が実行される
べき場所に書き込まれ、これにより、ネイティブ計算機
命令が計算機プログラム中のサブシーケンス位置に移動
させられる。この技術は、評価された計算機プログラム
を最も能率的に実行し得るという利点を有する。しかし
ながら、ネイティブ計算機命令は移動させられるので、
計算機プログラム内の移動済ネイティブ計算機命令の参
照は、移動させられたネイティブ計算機命令を参照する
ために配置されると共に評価されなければならない。こ
のような参照の配置及び評価は、計算機プログラムのソ
ースコードからの再コンパイルとほぼ同程度の処理を実
行すると共に、新規エラーが計算機プログラム中に導入
されるというリスクをもたらす。したがって、評価計算
機命令をオブジェクトコード形式の計算機プログラムに
追加するためのこの機構は、たとえあるとしても、ソー
スコード形式の計算機プログラムに評価計算機命令を追
加するための機構を越える僅かな利点を提供するにすぎ
ない。
【0011】評価計算機命令をオブジェクトコード形式
の計算機プログラムに追加するための第2の機構は、2
個以上のネイティブ計算機命令の連続ブロックを評価計
算機命令のシーケンスに対する呼出と置き換える。計算
機命令のシーケンスに対する呼出は、一般的に、如何な
る単一の計算機命令よりも長い。従って、多数のネイテ
ィブ計算機命令の移動を避けるために置換済ネイティブ
計算機命令のブロックサイズは、少なくとも評価計算機
命令のシーケンスに対する呼出のサイズである。呼出サ
イズが置換済計算機命令のブロックサイズより小さい場
合には、呼出及び無演算計算機命令が集合的に置換済ネ
イティブ計算機命令のブロックによって空けられるアド
レス空間と同一量の空間を占めるように、実行時に何ら
の効果も有しない無演算計算機命令が呼出の前後いずれ
かに挿入される。計算機命令のシーケンスに対する呼出
は、通常、計算機命令の呼出シーケンスによってアクセ
ス可能なスタック上にデータを置く計算機命令、及び計
算機命令の呼出シーケンスに対して処理を移行する計算
機命令を有している。
【0012】評価計算機命令の呼出シーケンスは、通
常、計算機プログラムの全体の挙動を保存するために置
換済ネイティブ計算機命令を有する。いくつかの置換済
ネイティブ計算機命令に対する評価済計算機プログラム
内の参照は、評価計算機命令のシーケンスに対する呼出
を参照するために配置されると共に評価されなければな
らない。評価計算機命令を計算機プログラムに追加する
ためのこの第2の機構は、第1の機構よりも少ないネイ
ティブ計算機命令を移動させるが、この第2の機構は、
前述の第1の機構と同一の短所にかなり悩まされること
となる。
【0013】評価計算機命令をオブジェクトコード形式
の計算機プログラムに追加するための第3の機構は、単
一のネイティブ計算機命令を評価計算機命令のシーケン
スに対して処理を移行すると共に置換済ネイティブ計算
機命令を含み得る分岐計算機命令で置き換える。僅か1
つのネイティブ計算機命令が移動させられるだけなの
で、移動済ネイティブ計算機命令に対する全ての制御の
移行は、移動済ネイティブ計算機命令を含む評価計算機
命令のシーケンスに対する制御を順次移行させる、分岐
計算機命令に対する制御を移行させる。したがって、計
算機プログラムの全体の挙動は、評価されても変更され
ない。制御の移行は、ここでは一般的に計算機命令の実
行シーケンスを意味する用語として用いるものとする。
つまり、制御が第1計算機命令から第2計算機命令に移
行される場合、第1計算機命令に続いてすぐに第2計算
機命令が実行される。
【0014】シーケンスの最後の評価計算機命令は、一
般的に、評価計算機命令を備えない計算機プログラム中
において置換済ネイティブ計算機命令の実行の直後にそ
の実行が続くネイティブ計算機命令に対する制御を移行
させる分岐計算機命令である。分岐計算機命令のサイズ
は、他のネイティブ計算機命令の移動を避けるため、通
常、置換済ネイティブ計算機命令と同一サイズである。
分岐計算機命令のサイズが置換済ネイティブ計算機命令
のサイズよりも小さい場合には、分岐計算機命令及び無
演算計算機命令が置換済ネイティブ計算機命令により空
けられたアドレス空間と同じだけの空間を集合的に占有
するように1個以上の無演算計算機命令が分岐計算機命
令の前後いずれかに挿入される。
【0015】評価計算機命令のシーケンスは、ネイティ
ブ計算機命令の実行シーケンスが変更されない限り、一
般的に計算機プログラムの任意の位置に挿入され得る。
ネイティブ計算機命令が移動させられるように評価計算
機命令のシーケンスがある位置に挿入される場合には、
評価計算機命令を計算機プログラムに追加するためのこ
の第3の機構は、置換済ネイティブ計算機命令に対する
参照は、配置されると共に評価されなければならないと
いう前記2つの機構と同一の不都合に悩まされる。した
がって、本技術分野では、ネガティブ計算機命令が1つ
も移動させられることのないように計算機プログラムの
最後に加えられる評価計算機命令のシーケンスが一般的
に好まれている。
【0016】
【発明が解決しようとする課題】しかしながら、このこ
とは、置換ネイティブ計算機命令の原位置が、置換済ネ
イティブ計算機命令と同一サイズの分岐命令が到達する
には評価計算機命令のシーケンスから離れすぎていると
きには頻繁に実現することはできない。以下、例示を用
いて説明する。
【0017】例えば、PUSH計算機命令といったネイ
ティブ計算機命令の中には、1バイトと同じ大きさのも
のがある。このようなネイティブ計算機命令は、一般的
に1バイト以下の長さの分岐計算機命令によって置き換
えられなければならない。このような分岐計算機命令
は、通常、255バイト以下だけ分岐計算機命令から移
動させられる計算機命令に対する制御を移行させること
ができる。したがって、その長さが僅か1バイトである
ネイティブ計算機命令は、ネイティブ計算機命令が自身
によって占有している計算機プログラムの最後のアドレ
スから255バイト以下である場合には、上記第3の機
構によってのみ能率的に評価され得る。今日用いられて
いる多くの計算機プログラムは、255バイトよりも数
桁大きい。したがって、これらの計算機プログラムの多
くのネイティブ計算機命令は、非常に多くの他のネイテ
ィブ計算機命令を移動させない限り前述した技術のいず
れによっても評価され得ない。
【0018】したがって、現在の所、特定の大規模計算
機プログラムに対して評価計算機命令を追加するための
満足いく機構は存在しない。現在の解決手段は、(i)
計算機プログラムに対して評価計算機命令を追加し、又
は計算機プログラムから評価計算機命令を除去するため
に多大な時間及びリソースを必要とし、あるいは、(i
i)計算機プログラムの所定のネイティブ計算機命令を
効率的に評価できない。
【0019】本発明は、上記従来技術の問題点を解決す
るためになされたものであり、単一のネイティブ計算機
命令をオペレーティングシステムのカーネルに対するユ
ーザプログラマブルトラップに置き換えると共にトラッ
プの実行により評価計算機命令のシーケンスに対する制
御を移行させることを目的とする。また、カーネルに対
するトラップにより、計算機プログラムのサイズ又は計
算機プログラムのメモリアドレス空間内における2個の
計算機命令間の距離に関わりなく計算機プログラムの任
意の計算機命令から計算機プログラムの任意の他の計算
機命令に対して制御を移行させることを目的とする。さ
らに、単一ネイティブ計算機命令が置換によって他のネ
イティブ計算機命令が移動させられないようにユーザプ
ログラマブルトラップによって置き換えることを目的と
する。
【0020】
【課題を解決するための手段】計算機命令セットの中に
は、計算機命令は、通常、ユーザプログラマブルトラッ
プの機能性をカーネルに提供するためには短すぎる1バ
イトの長さを有し得る。しかしながら、本発明に従え
ば、カーネルに対するシステムとラップを処理するため
のトラップハンドラは、1バイト長の特権計算機命令、
例えば、HALT計算機命令の実行によって新規なシス
テムトラップハンドラと置き換えられる。新規なシステ
ムトラップハンドラは、処理スタックの内容を素早く検
査することにより、先ずトラップが一般特権誤り(Gene
ral Privilege Fault)として周知の型であるか否かを
決定する。トラップが一般特権誤りの場合には、新規な
トラップハンドラは、トラップ生成計算機命令と特定の
特権計算機命令とを比較する。特定特権計算機命令がト
ラップを生成する場合には、新規なトラップハンドラ
は、特定特権計算機命令用ユーザ定義トラップハンドラ
が実装済であるか否かを決定する。実装済の場合には、
ユーザ定義の実装済特定特権計算機命令トラップハンド
ラが実行される。一方、そのようなユーザ定義ハンドラ
が実装されていない場合には、新規なシステムトラップ
ハンドラが従来の方法でHALT計算機命令を処理す
る。したがって、その長さが1バイトであるネイティブ
計算機命令は、本発明に従うカーネルに対するユーザプ
ログラマブルトラップで置換され得る。
【0021】カーネルに対する従来のトラップは、非効
率的であり、又計算機プログラムを遅らせる追加処理を
必要ととし、これにより評価が許容可能なレベルを超え
る。しかしながら、本発明に従えば、そのようなトラッ
プが飛躍的に改良された効率を用いて処理されることを
確実にするために、いくつかの機構が採用される。先
ず、新規なトラップハンドラは、可能な限り多くの計算
機処理の状態を保護する間、できる限り迅速にカーネル
から計算機処理アドレス空間に処理を移行させる。つま
り、カーネルに対するクイックトラップを処理する際に
は、新規なトラップハンドラは、実質的に(i)0個以
上のカーネルに対するトラップにより変更される計算機
処理状態の構成要素を表すデータの引出し、(ii)計算
機処理によりアクセス可能なメモリ位置内へのデータの
格納、及び(iii)計算機処理に対する処理の移行以外
のことは行わない。実施形態の1つでは、トラップハン
ドラは、一片の情報、すなわち、プログラムカウンタを
計算機処理上に置き、また、計算機処理アドレス空間中
のトラップ処理手順に対する処理を移行させる。他の実
施形態では、計算機処理状態に対して何らの変更も加え
られず、また、トラップハンドラは、計算機処理アドレ
ス空間中のトラップ処理手順に対する処理を移行させ
る。この実施形態では、そこでトラップが生成されたア
ドレスは他の情報から引き出され、あるいは、各トラッ
プはトラップが生成されたアドレスに関わりなく同一の
方法で処理される。計算機処理アドレス空間中における
トラップ処理手順は、トラップ時における計算機処理の
プログラムカウンタによって特定され、システムハンド
ラによって送られ、あるいは、他の情報からのトラップ
処理手順によって引き出されるトラップ生成アドレスに
従い、どの評価計算機命令を実行するかを決定する。例
えば、いくつかの処理装置(プロセッサ)は、そこでト
ラップが発生する特別のアドレスを格納し、そのアドレ
スを決定するために計算機処理により読み出され得る周
知のレジスタである。
【0022】第2に、計算機処理のアドレス空間内にお
けるトラップ処理手順は、計算機処理により呼び出され
るトラップが予期されると共に実装済パッチに一致する
か否かを一層迅速に決定する。ここで用いられるパッチ
は、1個以上のネイティブ計算機命令を置換する評価計
算機プログラムの集合である。パッチは置換済ネイティ
ブ計算機命令を含み得る。パッチが実行されるとき最初
に実行される評価計算機命令のアドレスは、パッチのエ
ントリポイントである。トラップ処理手順は、その中で
パッチのエントリポイントが対応トラップサイトに関連
付けられるテーブルを含む。ここで用いられるトラップ
サイトは、トラップ計算機命令、すなわち、置換済ネイ
ティブ計算機命令を置換すると共に実行時にトラップを
発生させる計算機命令、の計算機処理内のアドレスであ
る。
【0023】予期されないトラップのためのパッチの欠
如は検出されないが、代わりに避けられる。特に、テー
ブルは、任意のサイト、すなわち予期される又は予期さ
れないサイトがパッチに対して適当にマップされるよう
に分布される。予期されないトラップについてのパッチ
は、計算機処理内に提供され、予期されないトラップは
このパッチの実行をもたらす。このパッチは、一般的に
ユーザに対して予期せぬエラーが発生しており、また計
算機処理が終了することを知らせる。この方法で予期せ
ぬトラップを指示することにより、特定のトラップにつ
いてパッチが実装されているかの試験が不要となる。従
って、予期されるトラップ、すなわち計算機プログラム
内に意図的に配置されたトラップ、がより迅速に処理さ
れることになる。
【0024】第3に、トラップは、パッチに対する分岐
を用いる単一ネイティブ計算機命令の置換が受け入れ不
可能である、例えば、置換済ネイティブ計算機命令及び
パッチ間の距離が、置換済ネイティブ計算機命令に対し
て長さの等しい分岐命令の到達可能範囲を超える、状況
においてのみ計算機プログラムを評価するために用いら
れる。したがって、本発明の局面に従えば、より効率的
な評価済計算機プログラムを提供するために本発明の新
規な評価機構が従来の評価機構と組み合わされる。
【0025】
【発明の実施の形態】本発明に従えば、計算機処理は計
算機処理の個々のネイティブ計算機命令をその中で計算
機処理を実行するオペレーティングシステムのカーネル
に対するトラップで置換することにより評価される。カ
ーネルは、処理実行中にそのトラップを処理する際に、
処理を計算機処理、より詳細には計算機処理中のトラッ
プ処理手順に返送する。本発明に従う計算機処理の評価
を更に詳しく説明する前に、その中で計算機処理を実行
すると共に、本発明に従い計算機処理が評価されるコン
ピュータシステム、及びそれを構成する構成要素につい
て簡単に説明する。
【0026】今日用いられているほとんどのコンピュー
タシステムは、一般的に図1に図示する構成である。コ
ンピュータシステム100は、バス106を介してメモ
リ104から計算機命令を読み出すと共にそれら計算機
命令を実行するプロセッサ102を備える。メモリ10
4から読み出しされた計算機命令を実行する際には、プ
ロセッサ102はメモリ104からデータを引き出し、
あるいは、メモリ104にデータを書き込み、1台以上
のコンピュータ表示装置120に情報を表示し、1個以
上のユーザ入力装置130から命令信号を受け取り、あ
るいは、データを集合的にコンピュータネットワーク
(図示しない)を形成する他のコンピュータシステムに
移行させる。プロセッサ102は、例えば、アメリカ合
衆国カリフォルニア州マウンテンビュー市所在のサンマ
イクロシステムズ社から入手可能な任意のSPARC
(スパーク)プロセッサ、同イリノイ州ショーンバーグ
市所在のモトローラ社から入手可能な任意のPower
PCプロセッサ、同カリフォルニア州サンタクララ市所
在のインテル社から入手可能な任意のX86シリーズの
任意のプロセッサ、あるいは、これらと互換性のある任
意のプロセッサであり得る。メモリ104は、制限無
く、ランダムアクセスメモリ(RAM)、リードオンリ
メモリ(ROM)、及び磁気ディスク又は光学ディスク
といった磁気的及び光学的記録媒体を含む記憶装置を含
む任意の型のコンピュータメモリを含み得る。コンピュ
ータ表示装置120は、例えば、プリンタ及び陰極線管
(CRT)、発光ダイオード(LED)及び液晶(LC
D)といったコンピュータ表示スクリーンを含み得る。
ユーザ入力装置130は、制限無く、電子キーボード及
び電子マウス、トラックボール、ライトペン、指動輪
(サムホイール)、タブレット装置(ディジタイジング
タブレット)、接触感応パッドといったポインティング
デバイスを含み得る。
【0027】コンピュータシステム100は、例えば、
同カリフォルニア州マウンテンビュー市所在のサンマイ
クロシステムズ社から入手可能な任意のSPARCstat
ionワークステーションコンピュータシステム、Pow
erPCプロセッサを搭載すると共に同カリフォルニア
州クパチーノ市所在のアップルコンピュータ社から入手
可能な任意のマッキントッシュコンピュータシステム、
あるいは、インテル社から入手可能なX86シリーズの
プロセッサ又はその互換プロセッサを搭載する同ニュー
ヨーク州サマーズ市所在のIBM社から入手可能なIB
MPCコンピュータシステムと互換性を有する任意のコ
ンピュータシステムであり得る。Sun、Sun Microsystem
s、及びSunのロゴは、アメリカ合衆国及び他の国々にお
けるサンマイクロシステムズ社の商標又は登録商標であ
る。全てのSPARCの商標は、アメリカ合衆国及び他
の国々におけるスパークインターナショナル社の商標で
あると共に、使用権契約に基づき用いられるている。S
PARCの商標が表示される製品は、サンマイクロシス
テムズ社によって開発されるアーキテクチャに基づいて
いる。
【0028】プロセッサ102内では、メモリ104か
らの新規な評価処理108が実行される。評価処理(in
strumentation process)108は、他の計算機処理に
対して評価計算機命令を追加し、または、他の計算機処
理から評価計算機命令を取り除くことにより、他の計算
機処理、例えば対象処理(subject process)110の
分析を促進する計算機処理である。評価計算機命令を選
択的に対象処理110に追加することにより、評価処理
108は、対象処理110の分析を促進する方法で対象
処理110の挙動を変化させる。評価処理108による
対象処理110の評価について以下により詳細に説明す
る。評価処理108は、計算機処理である対象処理11
0を評価するが、以下に述べる技術もまたオブジェクト
コード形式の計算機プログラムを含む計算機プログラム
の評価に適用可能であることは明らかである。
【0029】プロセッサ102内ではまた、メモリ10
4からのカーネル114を含むオペレーティングシステ
ム112が実行される。オペレーティングシステム11
2は、一般的にコンピュータシステム100が、ユーザ
入力装置130及びコンピュータ表示装置120を通じ
た命令、制御入力及びコンピュータシステム100の出
力を理解し得るようにすると共に処理可能にする計算機
プログラムセットであり、計算機処理の実行を管理し、
コンピュータシステム100のメモリ104の個々の記
憶装置内に格納されるデータを管理し、また、コンピュ
ータシステム100に結合されている周辺装置(図示し
ない)の動作を制御する。オペレーティングシステム1
12のカーネル114は、計算機処理(例えば、評価処
理108及び対象処理110)及びユーザ入力装置13
0、計算機処理及びコンピュータ表示装置120間のイ
ンターフェースを管理し、メモリ104を管理し、計算
機処理の実行を管理し、順次メモリ104の個々の記憶
装置上の記憶データを管理するファイルシステムを管理
するオペレーションシステム112の一部である。。あ
る発明の実施の形態では、カーネル114は、コンピュ
ータシステム100のハードウェア構成要素と対話する
オペレーティングシステム112のほんの一部にすぎな
い。全てのコンピュータシステム100のハードウェア
構成要素との対話は、カーネル114を通じて行われ
る。
【0030】評価処理108は、論理フローチャート2
00(図2)に従い対象処理110の分析を促進する。
ステップ202では、評価処理108は、その中で対象
処理110を実行するスレッドを生成する。スレッド、
計算機処理、及び計算機プログラムは、以下のように相
互に関連している。
【0031】計算機プログラムは、コンピュータシステ
ム内で実行される際、タスクを実行する一連の計算機命
令及びデータである。計算機プログラムの実行は、計算
機処理であり、計算機プログラムは計算機処理を定義す
る。単一計算機プログラムは、任意の回数実行され得る
と共に、各実行処理は異なる計算機処理である。今日用
いられているほとんどのコンピュータシステムは、コン
ピュータシステム内でいくつかの計算機処理が同時に実
行することを許容する。計算機プログラムを定義する計
算機命令及びデータに加え、計算機処理は、現在実行さ
れている計算機命令、次に実行される計算機命令、及び
後の復元のために前計算機処理の状態を保存するべく用
いられるスタックを含む計算機処理の現在の状況を識別
する情報を含んでいる。
【0032】あるオペレーティングシステムでは、計算
機処理は、時にスレッドと呼ばれ、計算機処理の実行状
態の影響を受けず、また、互いに及びコンピュータシス
テム内の計算機処理と同時に実行する、新規実行状態を
生成することができる。同時に実行する各スレッドは、
カーネル114(図1参照)によって別々に実行が予定
される。このような複数のスレッドを有する計算機処理
は、一般的にマルチスレッド化計算機処理と呼ばれ、ま
た、各スレッドは時に軽量処理と呼ばれる。計算機処理
の各スレッドは、計算機処理のコンテキスト内で実行す
る。特に、各スレッドは計算機処理のアドレス空間を共
有し、また、リソースは計算機処理に割り当てられるの
で、計算機処理の全スレッドはむしろ独立スレッドであ
る。その中で対象処理110が実行するスレッドを生成
する際には、評価処理108は、ネイティブ計算機命令
及び対象処理110のアドレス空間を含む、対象処理1
10の構成要素に対するアクセスを維持する。
【0033】処理はステップ202(図2)から、対象
処理110の個々のネイティブ計算機命令をそれぞれ、
各々が1個以上の評価計算機命令を含むと共に対応する
置換済ネイティブ計算機命令を含み得るパッチで置換す
ることにより評価処理108(図1)が対象処理110
を評価するステップ204に移行する。個々のネイティ
ブ計算機命令をそれぞれパッチで置換する方法を以下に
詳述する。
【0034】処理はステップ204(図2)から、評価
処理108(図1参照)が評価された対象処理110を
実行させるステップ206(図2)に移行する。対象処
理110の実行は、以下に詳細に説明する方法で実行さ
れる対応する置換された個々のネイティブ計算機命令に
代わる各パッチの実行を含む。各パッチの評価計算機命
令は、メモリ104に対するアクセスが対象処理110
に割り当てられているメモリ104の一部であるかの検
証、ユーザに対する報告又は後の分析のための対象処理
110の状態の構成要素の記録、評価処理108のユー
ザが対象処理110の状態の個々の構成要素を問い合わ
せる命令を発行することができるよう対象処理110の
実行の割込、及び対象処理110の個々のネイティブ計
算機命令が実行された回数の数え上げを含む任意の数の
タスクを制限無く実行することができる。
【0035】続いて、処理はステップ206(図2)か
ら、ステップ204(図2)にて実装された各パッチ
が、ステップ204(図2)のパッチによって置換され
た原対応ネイティブ計算機命令と置き換えられると共
に、この結果評価が対象処理110(図1参照)から除
去されるステップ208(図2)に移行する。ステップ
208(図2)の後、論理フローチャート200に従う
処理は終了する。したがって、評価処理108(図1参
照)は、その評価が非評価化される前に対象処理110
を評価し、対象処理110の挙動を分析するために評価
された対象処理110を実行し、また、対象処理110
を先の状態である非評価状態に戻すために対象処理11
0から評価計算機命令を取り除く。
【0036】以上簡単に説明したように、評価処理10
8は、ステップ204(図2)にて対象処理110の個
々のネイティブ計算機命令をそれぞれ評価計算機命令の
パッチで置換することにより対象処理110を評価す
る。ステップ204(図2)は、図3において論理フロ
ーチャート204として詳細に図示されている。ステッ
プ204に先立ち、対象処理110は一般的に、図4
(a)に図示されるアドレス空間110ASを有する。
アドレス空間110ASは、対象処理110によってア
ドレス可能なメモリ104の一部である。アドレス空間
110ASは、対象処理110に割り当てられると共に
対象処理110により用いられる割当メモリ404A、
及び対象処理110に割り当てられていない共に対象処
理110により用いられていない不使用メモリ404U
を含む。論理フローチャート204(図3)に従う処理
は、そこにおいて評価処理108が不使用メモリ404
U(図4(a)参照)内にトラップ処理手順であるユー
ザトラップハンドラ406(図4(b))及びパッチデ
ータベース408を含むステップ302から開始する。
ユーザトラップハンドラ406及びパッチデータベース
408は、対象処理110の置換済ネイティブ計算機命
令をそれぞれ対応するパッチに結合する。その詳細につ
いては以下に説明する。
【0037】処理はステップ302(図3)から、そこ
において対象処理110の多くの個々のネイティブ計算
機命令がそれぞれパッチで置き換えられるループを次の
ステップ320と共に定義するループステップ304に
移行する。それら各ネイティブ計算機命令についての処
理は、ループステップ304(図3)からステップ30
8に移行する。一旦、ループステップ304及び次のス
テップ320により定義されてたループに従い各ネイテ
ィブ計算機命令が処理されると、処理はループステップ
304から、そこにおいて論理フローチャート204に
従う処理が終了する終了ステップ306に移行する。ル
ープステップ304及び次期ステップ320により定義
されてたループの各繰り返しの間、処理されたネイティ
ブ計算機命令は対象ネイティブ計算機命令と呼ばれる。
【0038】ステップ308では、評価処理108は、
対象ネイティブ計算機命令、例えばネイティブ計算機命
令402(図4(a))を置換するパッチ、例えば41
0Aをパッチデータベース408(図4(b))中に挿
入する。処理はステップ308から、そこにおいて評価
処理108が対象ネイティブ計算機命令及びアドレス空
間110AS(図4(b))内の対応するパッチ間の距
離を決定するステップ310に移行する。例えば、評価
処理はネイティブ計算機命令402(図4(a))、及
び対応するパッチの第1計算機命令のアドレス、すなわ
ち、エントリポイント間の距離を決定する。処理は、ス
テップ310から、そこにおいて評価処理108が対象
ネイティブ計算機命令及び対応するパッチのエントリポ
イント間の距離と対象ネイティブ計算機命令のサイズ以
下のサイズを有する分岐計算機命令の最大到達可能距離
とを比較する試験ステップ312に移行する。
【0039】対象ネイティブ計算機命令及び対応するパ
ッチ間の距離が対象ネイティブ計算機命令のサイズ以下
のサイズを有する分岐計算機命令の最大到達可能距離以
下の場合には、処理はそこにおいて評価処理108が対
象ネイティブ計算機命令を、実行時に対象処理110の
制御を対応するパッチ、例えば、パッチ410A(図4
(b))に移行させる分岐計算機命令で置き換えるステ
ップ318に移行する。したがって、対象ネイティブ計
算機命令が従来の方法で対象処理110の制御を対応す
るパッチに移行させる分岐計算機命令で置き換えられ得
る場合には、通常分岐計算機命令を用いる制御の移行は
カーネル114に対するトラップを介する制御の移行よ
りも効率がよいことから分岐計算機命令が用いられる。
しかしながら、対象ネイティブ計算機命令及び対応する
パッチ間の距離が対象ネイティブ計算機命令のサイズ以
下のサイズを有する分岐計算機命令の最大到達可能距離
よりも長い場合には、処理は試験ステップ312からス
テップ314に移行する。
【0040】ステップ314では、評価処理108は、
アドレス空間110AS内におけるネイティブ計算機命
令402に対応するパッチ、例えば、410Aのエント
リポイントの位置に関する情報をパッチデータベース4
08(図4(b))内に格納する。パッチデータベース
408は、それにより対象処理110の実行中にパッチ
410Aが迅速且つ効率的に配置され得るデータ構造を
含む。パッチデータベースの特定の構造及び特定のパッ
チを配置するために用いられる情報の格納については以
下に詳述する。処理は、ステップ314から、そこにお
いて評価処理108が対象ネイティブ計算機命令、例え
ば、ネイティブ計算機命令402(図4(a))を同サ
イズ以下のトラッピング計算機命令、例えば、トラッピ
ング計算機命令402T(図4(b))で置き換える、
ステップ316に移行する。トラッピング計算機命令4
02T(図4(b))がネイティブ計算機命令402
(図4(a))よりも小さい場合には、無演算計算機命
令及びトラッピング計算機命令402Tが集合的にネイ
ティブ計算機命令402(図4(a))と等しいサイズ
となるように、実行時に何らの効果も有しない無演算計
算機命令がトラッピング計算機命令402Tと共に挿入
される。したがって、対象処理110の他の全てのネイ
ティブ計算機処理は、アドレス空間110AS内に移動
させられることなく、また、評価無くして適当に実行す
る。トラッピング命令402Tの実行は、カーネル11
4に対するトラップを呼び出すと共に、最後には以下に
詳細に説明する方法で対応するネイティブ計算機命令4
02(図4(a))の代わりにパッチ410A(図4
(b))の実行をもたらす。
【0041】したがって、対象ネイティブ計算機命令及
び対応するパッチ間の距離が対象ネイティブ計算機命令
のサイズ以下のサイズを有する分岐計算機命令の最大到
達可能距離よりもはるかに長い場合には、対象計算機命
令は、その実行が以下に詳細に説明するように、対応す
るパッチへ処理を順次移行させるカーネル114に対す
るトラップをもたらすトラッピング命令と置き換えられ
る。別の発明の実施の形態では、処理はステップ308
からステップ314に直接移行し、また、全対象ネイテ
ィブ計算機命令は、最後に制御を対応する各パッチに移
行させるトラッピング計算機命令で置き換えられる。
【0042】処理はステップ318又はステップ316
のいずれかから次期ステップ320を通じて、そこにお
いてループステップ304及び次期ステップ320によ
り定義されたループに従い次期対象ネイティブ計算機命
令が処理されるループステップ304に移行する。前述
のように、一旦、評価されるべき各ネイティブ計算機命
令がループステップ304及び次期ステップ320のル
ープに従い処理されると、論理フローチャート204に
従う処理はステップ204(図2)にて終了する。
【0043】上述のように、評価処理108は、ステッ
プ206(図2参照)にて評価された対象処理110を
実行する。対象処理110の実行中、ネイティブ計算機
命令402が実行されていなければトラッピング計算機
命令402T(図4(b)及び図5)が実行される。ト
ラッピング計算機命令402T(図5)の実行に基づい
て、処理はカーネル114のカーネルトラップハンドラ
502に移行する。オペレーティングシステムのカーネ
ルのトラップハンドラに対する制御の移行は周知である
と共に一般的であるから、ここでは詳細を説明しない。
簡単に言えば、所定の計算機命令の実行を含む所定の環
境は、計算機処理、例えば対象処理110に割込をもた
らし、代わりにトラップ処理手順、例えばカーネル11
4内のカーネルトラップハンドラ502の実行をもたら
す。
【0044】このようなトラップをもたらす環境は、通
常、その状態からの回復が困難である無効状態、又は、
計算機処理に関連する周辺装置内の動作の結果もたらさ
れる計算機処理の割込を加える計算機処理を含む。いず
れの場合も、迅速且つ効率的なカーネルへの処理の移行
及びカーネルからの処理の移行が考慮されていない。前
者の場合、計算機処理に関して何かが非常に調子が悪い
ので、カーネルのタスクは、有効な状態に対する計算機
処理を復元すべきでなく、代わりに診断のために計算機
処理の状態に関する充分な情報がユーザに対して報告さ
れるべきである。つまり、計算機処理はもはや現在の関
心事でなく、計算機処理における関心事は計算機処理に
何が起きたかを正確に決定することにある。後者の場
合、計算機処理の処理は割込され、周辺装置に関する機
能の実現が先延ばしされる。周辺装置を伴う機能は、一
般的に、制御をカーネルに対して又はカーネルから移行
させるために必要な時間及び処理、及びその制御の移行
期間における計算機処理の全状態の保存及び復元に関連
する大量の時間を必要とする。したがって、カーネルに
対する及びカーネルからの効率的な制御の移行は、一般
的に、後者にあっては重要でない。この結果、従来のカ
ーネルトラップハンドラは、通常、対象処理110の実
行の遅れを伴うことなく評価済計算機処理内においてト
ラッピング計算機命令402T(図5)から対応するパ
ッチ410Aに制御を移行させるために充分に効率的で
なく、この結果、評価は許容限度を超える。
【0045】カーネル114のカーネルトラップハンド
ラ502(図5)は、新規であり、特に効率的なトラッ
プハンドラである。カーネルトラップハンドラ502
は、論理フローチャート600(図6)に従う対象処理
110の計算機命令の実行により生成されるトラップを
処理する。処理は、カーネルトラップハンドラ502
(図5)がそのトラップはユーザ定義トラップ処理手順
が挿入されているトラップであるか否かを決定するステ
ップ602にて開始する。ユーザ定義トラップ処理手順
は、オペレーティングシステム112の外部から定義さ
れると共にトラッピング計算機命令の特定の類型に緒理
も垂らされるトラップの事象内にて実行されるべき計算
機命令及びデータ構造の集合である。カーネルトラップ
ハンドラ502は、その中にカーネル502の予想に基
づく対象処理110の実行状態を表す一部であるデータ
構造504を含む。データ構造504は、ユーザ定義ト
ラップ処理手順のエントリポイントと、ユーザ定義トラ
ップ処理手順を呼び出すために用いられ得るトラッピン
グ計算機命令により使用されている各割込アドレスとを
関連付ける。それためのユーザ定義トラップ処理手順が
実装されていない各割込アドレスについては、関連する
エントリポイントはナル(NULL)、すなわち有効な
アドレスでない、と表示される。一般的に、各割込アド
レスはトラッピング計算機命令の各類型、すなわち、ト
ラップの生成が可能である計算機命令の各類型に対応す
る。あるいは、データ構造504は、ユーザ定義トラッ
プ処理手順のエントリポイントとトラッピング計算機命
令の各類型とを関連付ける。トラッピング計算機命令の
特定の類型のためのそのようなユーザ定義トラップ処理
手順が定義されていない場合には、データ構造504内
でトラッピング計算機命令のその類型と関連付けられる
エントリポイントはない。特定のユーザ定義トラップ処
理手順のエントリポイントとトラッピング計算機命令の
特定の類型との関連付けは、時に、実装(installing)
と呼ばれるトラッピング計算機命令の特定の類型のため
のユーザ定義トラップ処理手順である。発明の実施の形
態の1つでは、カーネル502は、ユーザ定義トラップ
処理ルーチンが1つも実装されていない場合にはナルで
ある単一ユーザ定義トラップ処理手順エントリポイント
を含む。
【0046】トラップを生成した計算機命令の類型に対
応する割込アドレスのためにユーザ定義トラップ処理手
順が1つも実装されていない場合には、処理は、従来の
方法でトラップが処理(handle)されると共に、その後
に論理フローチャート600に従う処理が終了するステ
ップ604に移行する。これに対して、トラップを生成
した計算機命令の類型、例えばトラッピング計算機命令
402T(図5)のためにユーザ定義トラップ処理手順
が定義されている場合には、処理は、ステップ606に
移行する。
【0047】ステップ606では、カーネルトラップハ
ンドラ502は、対象処理110のトラッピング計算機
命令402Tのために実装されているユーザトラップハ
ンドラ406と通信するためのトラップの状態を一括す
る。一括トラップ状態は、実質的に、計算機処理110
の実行状態がカーネル114に対するトラップの前に計
算機処理110の状態に復元されるため、及び計算機処
理110がどの計算機命令を次に実行するかを決定する
ために必要なもの以外は含まない。例えば、カーネル1
14に対するトラップの結果対象処理110の実行状態
の多くの構成要素が変更される場合には、トラップの前
にそれら構成要素の状態を表現するデータが引き出され
ると共に、一括状態に含まれる。一括状態はまた、一般
的に、トラップを生成する計算機命令のアドレス、例え
ば、そこにトラッピング計算機命令402Tが配置され
るアドレス空間110AS内のアドレスであるトラップ
サイトを含む。発明の実施の形態の1つでは、一括トラ
ップ状態はまた、計算機命令のアドレス、置換済ネイテ
ィブ計算機命令の直後に続く実行を含み、この結果、置
換パッチに対応する実行が続く。例えば、SPARCプ
ロセッサのようなプロセッサは、メモリアドレスに位置
する計算機命令が分岐計算機命令の直後に分岐計算機命
令の目標計算機命令に先立ち実行されるようにに計算機
命令をパイプライン処理する。このような場合、パッチ
410Aの評価計算機命令の実行の直後に実行する計算
機命令は、トラッピング計算機命令402Tのアドレス
の直後のアドレス空間110AS内のアドレスにある計
算機命令でなく、アドレス空間110AS内にてトラッ
ピング計算機命令の直前の分岐計算機命令のターゲット
である。さらに、カーネルトラップハンドラ502は、
例えば、カーネルトラップハンドラ502によるサブシ
ーケント処理がカーネル114に対するとらっぷとして
のレジスタの状態に影響を与えぬように新規なレジスタ
ウィンドウを開くことにより、対象処理110の実行状
態を更に変化させるあらゆる動作を回避する。さらに、
カーネルトラップハンドラ502は、対象処理110の
前実行状態を復元するために、また、ある発明の実施の
形態ではトラップサイトを識別するために、更に、ある
発明の実施の形態ではトラップサイトに対応するパッチ
の実行の直後にその実行が続く計算機命令を識別するた
めに、対象処理110に対して十分な情報を実質的にで
きる限り小さく提供することにより対象処理110の実
行状態に及ぼすさらなる影響を回避する。
【0048】従来のカーネルトラップハンドラにおいて
は、通常、処理を任意のトラップハンドラに移行させる
前に計算機処理110及びプロセッサ102の全状態が
取得されると共に格納される。処理状態を取得する理由
は、先に簡単に述べたように、通常、カーネルに対する
トラップは、いくつかの大きな変動の発生のために、あ
るいは、時間消費事象、例えばユーザ入力装置からの入
力による計算機処理の割込の結果から時間が本質的要件
でないことを示す。全処理状態の取得は、一般的に
(i)トラップのサイトの決定、(ii)トラップの処理
のあとにどの計算機命令か実行されるべきかの決定、及
び(iii)トラップに先立つ計算機処理状態の他の全て
の点に関して計算機処理状態の復元のために要求される
最小情報だけを実質上取得するために必要な時間と比較
して100倍から1000倍の処理時間を必要とする。
したがって、従来のカーネルトラップ処理手順は、許容
可能な速度で計算機処理の評価を実行するために充分な
迅速さをもって、トラッピング計算機命令から対応する
評価計算機命令のパッチに対して処理を効率的に移行さ
せるには不十分である。
【0049】処理はステップ606(図6)から、カー
ネルトラップハンドラ502(図5)が対象処理110
の状態を保存するステップ608に移行する。カーネル
トラップハンドラ502により処理されるトラップの呼
出に際しては、一般的に対象処置110の状態が変更さ
れる。ステップ608(図6)では、パッチ410Aの
評価計算機命令がネイティブ計算機命令402の代わり
にアドレス空間110AS中に挿入されたかのように、
対象処理110(図5)の状態はパッチ410Aが実行
されるように復元される。カーネルトラップハンドラ5
02は、例えば、対象処理110のコンテキストを保存
するようにその中で動作すべき新規コンテキストを生成
することにより、あるいは、対象処理110の実行状態
の構成要素を単に変更しないことにより対象処理110
の状態を保存する。コンテキストは、一般的に、計算機
処理の実行状態の構成要素を表す1個以上のレジスタ及
び/又はフラグを有する。カーネルトラップハンドラ5
02の詳細例と共に対象処理110の状態復元の詳細な
例を以下に説明する。
【0050】処理はステップ608(図6)から、ユー
ザトラップハンドラ408がステップ606にて一括化
されたトラップ状態と通信している間、カーネルトラッ
プハンドラ502(図5)が処理制御を終了すると共に
ユーザトラップハンドラ408に対して移行させるステ
ップ610に移行する。発明の実施の形態の1つでは、
一括トラップ状態は、メモリ104内のユーザトラップ
ハンドラ406がアクセス可能な位置、例えば対象処理
110のスタックに一括トラップ状態を格納することに
よりユーザトラップハンドラ406(図5)と通信させ
られる。
【0051】ユーザトラップハンドラ406は、一括ト
ラップ状態情報を引き出すと共にアンパックし、また、
トラップ状態情報に従い処理制御をパッチ、すなわち、
パッチ410A、410B、410Cの内の1つに対し
て移行させる。特に、ユーザトラップハンドラ406
は、トラップサイト、すなわち現在のトラップを生成す
る計算機命令であるトラッピング計算機命令402Tの
アドレス空間内のアドレスから一括トラップ状態情報を
引き出す。その後、ユーザトラップハンドラ406は、
パッチデータベース408から引出済トラップサイトに
対応するパッチのパッチエントリポイントを引き出す。
例えば、トラップサイトがトラッピング計算機命令40
2Tのアドレスの場合には、対応するパッチはパッチ4
10Aである。
【0052】ユーザトラップハンドラ406は、制御を
パッチエントリポイントに対して移行させ、そして、パ
ッチの計算機命令が実行される。パッチ410Aの評価
計算機命令の実行後、制御は、通常置換済ネイティブ計
算機命令の実行に引き続き直ちに実行する計算機処理1
10の計算機命令に移行する。パッチ410Aの長さは
特定の長さに限定されていないので、特に長さの長い分
岐計算機命令は、アドレス空間110AS内の任意のア
ドレスに到達するために計算機処理110のネイティブ
計算機命令に処理を戻すためにパッチ410A内に含ま
れ得る。したがって、本発明に従えば、ネイティブ計算
機命令402はトラッピング計算機命令402Tで置き
換えられ、その実行は、カーネルトラップハンドラ50
2を介して処理制御をネイティブ計算機命令402の代
わりに実行される評価計算機命令のパッチ410Aに対
するユーザトラップハンドラ406に移行させる。
【0053】「パッチデータベース」図7にはパッチデ
ータベース408が詳細に図示されている。パッチデー
タベースの構成は、論理フローチャート800(図8)
のコンテキスト内に記載されており、これに従うとユー
ザトラップハンドラ406は特定のトラップサイトに対
応するパッチエントリポイントをパッチデータベースか
ら受け取る。トラップサイトは、第1レベルインデック
ス、第2レベルインデックス、第3レベルインデック
ス、及び第4レベルインデックスの4つのインデックス
に分析(parse)される。パッチデータベース408
は、一般的に、4つのレベルのテーブル及び各テーブル
レベルに対応するトラップサイトの各インデックスを含
む。発明の実施の形態の1つでは、トラップサイトは3
2ビットアドレスであり、トラップサイトから分析され
る各インデックスは1バイトのトラップサイトであり、
第1レベルインデックスが最大有効ビットであり、第4
レベルインデックスが最小有効ビットである。本発明の
趣旨を逸脱することなく4つのレベルより少ない又は多
いレベル数が用いられ得ることは理解されるべきであ
る。処理はステップ802(図8)から、ユーザトラッ
プハンドラ406(図5)が第1レベルテーブル702
(図7)からトラップサイトの第1インデックスに対応
する第2のレベルテーブル、例えば第2レベルテーブル
704に対する参照を引き出すステップ804に移行す
る。第1レベルテーブル702は、インデックス値70
2A及び第2レベルテーブル参照702Bを有し、また
トラップサイトの第1レベルインデックスの可能性ある
各値を第2レベルテーブルに対する参照に関連付ける。
発明の実施の形態の1つでは、第2レベルテーブル参照
702Bは、第2のレベルテーブル、例えば第2レベル
テーブル704に対するポインタである。
【0054】処理は、ステップ804(図8)から、ユ
ーザトラップハンドラ406(図5)が第2レベルテー
ブル704(図7)からトラップサイトの第2インデッ
クスに対応する第3のレベルテーブル、例えば第3レベ
ルテーブル706に対する参照を引き出すステップ80
6に移行する。第2レベルテーブル704は、インデッ
クス値704A及び第3レベルテーブル参照704Bを
有し、またトラップサイトの第2レベルインデックスの
可能性ある各値を第3レベルテーブルに対する参照に関
連付ける。処理は、ステップ806(図8)から、テー
ブル702、704に関して既述した方法とまさに類似
する方法でユーザトラップハンドラ406(図5)が第
3レベルテーブル706(図7)からトラップサイトの
第3インデックスに対応する第4レベルテーブル708
に対する参照を引き出すステップ806に移行する。発
明の実施の形態の1つでは、第4レベルテーブル708
は、個々の第4レベルインデックス708Aをパッチエ
ントリポイント708Bに関連付けるインデックスアレ
イである。第4レベルテーブル708(図7)内におけ
るトラッピング計算機命令402T(図5)のトラップ
サイトの第4レベルインデックスは、パッチ410Aに
対応するパッチエントリポインタと関連付けられる。処
理は、ステップ808(図8)から、トラップサイトの
第4レベルインデックスを用いてユーザトラップハンド
ラ406(図5)が第4レベルテーブル708(図7)
からパッチ410Aのパッチエントリポイントを引き出
すステップ810に移行する。
【0055】パッチデータベースからのパッチエントリ
ポイントの引出しは、パッチデータベース408内に多
くの数のトラップサイト/パッチエントリポイント結合
が格納されているときにこそ特に効率がよい。第1に、
パッチデータベース408を複数のレベルに分割するこ
とにより、ユーザトラップハンドラ406(図5)によ
る2,3のメモリアクセス(ステップ804〜808、
図8)が、いくぶん大きなデータベースからその中で特
定のパッチエントリポイントが迅速且つ効率的に配置さ
れ得る比較的小さなデータ構造、例えば第4レベルテー
ブル(図7)を引き出すために用いられ得る。発明の実
施の形態の1つでは、トラップサイトの第4レベルイン
デックスは、8個の最小有効ビットのトラップサイトで
あり、256個の値の内の1つを有する。したがって、
第4レベルテーブル708は、第4レベルインデックス
及び欠くパッチエントリポイント間に256個以下の結
合を有し得る。第4レベルテーブルは、一般的に迅速且
つ効率的に検索され得る任意の構成を有することができ
る。発明の実施の形態の1つでは、第4レベルテーブル
708は、第4レベルインデックス708Aが対応する
関連パッチエントリポイントをインデックスするために
用いられるインデックスアレイである。
【0056】第2に、論理フローチャート800はトラ
ップに対応するパッチエントリポイントがパッチデータ
ベース408(図7)内に含まれていないことを決定す
るための論理を備えていないので、論理フローチャート
800(図8)に従う処理は特に効率的である。パッチ
データベース408が予期せぬエラーのトラップサイト
に関連付けられているパッチエントリポイントを含んで
いないとき、対象処理110内の予期せぬエラーが、順
次カーネルトラップハンドラを生成するカーネルに対す
るトラップにユーザトラップハンドラ406に対して処
理制御を移行させることは可能である。しかしながら、
このような偶発事象の検出に対する論理の適用は、パッ
チデータベース408の各々の及び全てのアクセスを遅
らせると共に、トラッピング計算機命令402Tからパ
ッチ410Aに対して処理制御を移行させるために既に
遅延させられている対象処理110を更に遅らせる。多
くの数のパッチ、例えば数千個のパッチが対象処理11
0に対して追加されるとき、パッチデータベース408
の各々の及び全てのアクセスのさらなる遅延は、許容限
度以下に評価された対象処理110の処理速度を容易に
低下させ得る。
【0057】このような遅延を回避するために、デフォ
ルトパッチ410Cがパッチデータベース408内に含
まれている。論理フローチャート800に従いユーザト
ラップハンドラ406がパッチデータベース408にア
クセスすると、予期されていない全てのトラップサイト
が自動的にデフォルトパッチ410C(図5参照)と関
連付けられる。デフォルトパッチ410Cの実行は、例
えば、予期せぬエラーのユーザへの通知及び対象処理1
10の実行の終了といった適当な動作を採る。パッチデ
ータベース408の第4レベルテーブル708は、第4
レベルテーブル708に対応する各々の及び全ての不使
用第4レベルインデックス、及びデフォルトパッチ41
0Cに対応するパッチエントリポイント間における結合
を有する。第4レベルテーブル708に対応する不使用
第4レベルインデックスは、(i)第4レベルテーブル
708を特定する第3レベルインデックス、(ii)第3
レベルテーブル706を特定する第2レベルインデック
ス、及び(iii)第2レベルテーブル704を特定する
第1レベルインデックスと共同して、既述した方法で評
価処理108(図1参照)によって生成されるトラップ
サイトを特定しない第4レベルインデックスである。し
たがって、図8を参照して上述したトラップサイトの第
1、第2及び第3レベルインデックスを有すると共に、
記述の方法で評価処理108により対象処理110に追
加されるパッチと対応しない第4レベルインデックスを
有する任意のトラップサイトは、特にトラップサイトが
予期されない偶発事象のための試験を必要とすることな
くデフォルトパッチ410に向けられる。
【0058】さらに、パッチデータベース408は、そ
の中で全ての可能性ある第4レベルインデックス714
Aがデフォルトパッチ410Cに対応するパッチエント
リポイント714Bに関連付けられる第4レベルテーブ
ル714を有する。それのためのパッチがパッチデータ
ベース408内に含まれていない第3レベルテーブル7
06内の各々の及び全ての第3レベルインデックスは、
第3レベルテーブル706内にて第4レベルテーブル7
14に対するポインタと関連付けられる。したがって、
ユーザトラップハンドラ406がステップ806にて第
3レベルテーブル706を引き出し、また、現在のトラ
ップサイトの第3レベルインデックスを有する任意のト
ラップサイトについてパッチが実装されていない場合に
は、ステップ808にて第4レベルテーブル714引き
出され、また、対象計算機処理110内の制御は最後に
デフォルトパッチ410Cに移行する。
【0059】パッチデータベース408はまた、第3レ
ベルテーブル712及び第2レベルテーブル710を有
する。第3レベルテーブル712内の全ての可能性ある
第3レベルインデックスは、第4レベルテーブル714
に対する参照712Bに関連付けられており、また第2
レベルテーブル710内の全ての可能性ある第2レベル
インデックスは、第3レベルテーブル712に対する参
照710Bに関連付けられている。それについてのパッ
チがパッチデータベース408内に含まれていない第2
レベルテーブル704内の全ての第2レベルインデック
スは、第3レベルテーブル712に対する参照に関連付
けられ、また、それについてのパッチがパッチデータベ
ース408内に含まれていない第1レベルテーブル70
2内の全ての第1レベルインデックスは、第2レベルテ
ーブル710に対する参照に関連付けられている。トラ
ップサイトの第1レベルインデックスに対応するパッチ
がパッチデータベース408内に含まれていない場合に
は、ユーザトラップハンドラ406は、ステップ804
にて第2レベルテーブル710を引出し、またデフォル
トパッチ410Cが最後に実行される。同様にして、ト
ラップサイトの第2レベルインデックスに対応するパッ
チがパッチデータベース408内に含まれていない場合
には、ユーザトラップハンドラ406は、ステップ80
6にて第3レベルテーブル712を引出し、またデフォ
ルトパッチ410Cが最後に実行される。したがって、
トラップサイトが予期されておらず、またトラップサイ
トに対応するパッチがパッチデータベース408内に含
まれていない場合には、特にこのような状態についての
試験の必要なく論理フローチャート800に従いデフォ
ルトパッチ410Cのパッチエントリポイントが引き出
される。
【0060】パッチは以下のようにしてパッチデータベ
ース408内に格納される。図3を参照して既述したよ
うに、ステップ314(図3参照)にて、評価処理10
8は、アドレス空間110AS内における特定のネイテ
ィブ計算機命令に対応するパッチの配置に関する情報を
パッチデータベース408内に格納する。ステップ31
4の詳細は、図9の論理フローチャートに図示されてい
る。先ず、パッチデータデータベース408内に任意の
パッチを内包する前に、パッチデータベース408に
は、第1レベルテーブル702、第2レベルテーブル7
10、第3レベルテーブル712、第4レベルテーブル
714、及びデフォルトパッチ410Cだけが含まれ、
また、第1レベルテーブル702のすべての第1レベル
インデックス702Aは、第2レベルテーブル710に
対するポインタと関連付けられている。したがって、任
意のパッチがパッチデータベース408に加えられる前
に、全トラップサイトがデフォルトパッチ410Cと対
応する。さらに、アドレス空間110ASの全てのアド
レスは、効率的にトラバースされ得る比較的小さなデー
タ構造内におけるパッチデータベース408内にてデフ
ォルトパッチ410Cと関連付けられる。以下に、トラ
ッピング計算機命令402Tがパッチ410Aを実行さ
せるようにパッチデータベース408に対してパッチ4
10Aを追加する説明を用いて論理フローチャート31
4を説明する。論理フローチャート314では、処理は
ステップ902にて開始する。
【0061】ステップ902では、評価処理108は、
新規トラップサイト、すなわちネイティブ計算機命令4
02のアドレス空間110AS内のアドレスを分析す
る。新規トラップサイトの分析は、第1レベルインデッ
クス、第2レベルインデックス、第3レベルインデック
ス、及び第4レベルインデックスを生成する。処理は、
ステップ902から、ステップ804(図8参照)を参
照して上述した方法とまさに同様の方法で新規トラップ
サイトの第1レベルインデックスに従い評価処理108
が第1レベルテーブル702から第2のレベルテーブル
に対するポインタを引き出すステップ904に移行す
る。処理は、ステップ904から、評価処理108が引
出されたポインタが第2レベルテーブル710を識別す
るか否かを決定し、これによりパッチデータベース40
8が新規トラップサイトの第1レベルインデックスに対
応するパッチを含んでいないことを示す試験ステップ9
06に移行する。引出されたポインタが第2レベルテー
ブル710を識別しない場合には、処理は以下に説明す
るステップ914に移行する。これに対して、引出され
たポインタが第2レベルテーブル710を識別する場合
には、処理がステップ908に移行する。
【0062】ステップ908では、評価処理108は新
規な第2のレベルテーブル、例えば第2レベルテーブル
704(図7参照)を生成する。処理は、第3レベルテ
ーブル712を参照するために、評価処理108が新規
な第2のレベルテーブルの全ての第3レベルテーブル参
照(reference)、例えば、第2レベルテーブル704
の第3レベルテーブル参照704Bを設定するステップ
910に移行する。この例では、第2レベルテーブル7
04は新規に生成されるので、第2レベルテーブル70
4は、パッチデータベース408内のいずれのパッチに
も対応せず、したがって、第2レベルテーブル704
は、ユーザトラップハンドラ406にデフォルトパッチ
410Cを参照させる。第2レベルテーブル704は、
後述するようにユーザトラップハンドラ406を既述の
ようにステップ308にて実装される新規実装済パッチ
410Aに導くために後に更新される。処理は、ステッ
プ910から評価処理108が、第1レベルテーブル7
02内に新規に生成された第2レベルテーブル704に
対する参照と新規トラップサイトの第1レベルインデッ
クスとを関連付けるステップ912に移行する。処理は
ステップ912からステップ914に移行する。
【0063】ステップ914では、評価処理108は、
新規トラップサイトの第2レベルインデックスに従い、
ステップ904にて引き出された、又はステップ908
にて生成された第2レベルテーブル704から第3レベ
ルテーブルに対する参照を引き出す。ステップ914
は、上述のステップ806とまさに同様である。処理
は、ステップ914から、評価処理108が引出された
参照が第3レベルテーブル712を識別するか否かを決
定し、これによりパッチデータベース408は、新規ト
ラップサイトの第2レベルインデックスに対応するパッ
チを含まないことを示す、試験ステップ916に移行す
る。引出された参照が第3レベルテーブル712を識別
しない場合には、処理は後述するステップ924に移行
する。これに対して、引出された参照が第3レベルテー
ブル712を識別する場合には、処理はステップ918
に移行する。
【0064】ステップ918では、評価処理108は新
規な第3のレベルテーブル、例えば第3レベルテーブル
706(図7参照)を生成する。処理は、第4レベルテ
ーブル714を参照するために、評価処理108が新規
な第3のレベルテーブルの全ての第4レベルテーブル参
照、例えば、第3レベルテーブル706の第4レベルテ
ーブル参照706Bを設定するステップ920に移行す
る。この例では、第3レベルテーブル706は新規に生
成されるので、第3レベルテーブル706は、パッチデ
ータベース408内のいずれのパッチにも対応せず、し
たがって、第3レベルテーブル706は、最後にユーザ
トラップハンドラ406にデフォルトパッチ410Cを
参照させる。第3レベルテーブル706は、後述するよ
うに実装済パッチ410Aと新規トラップサイトとを関
連付けるために後に更新される。処理は、ステップ92
0から評価処理108が、第2レベルテーブル704内
に新規に生成された第3レベルテーブル706に対する
参照と新規トラップサイトの第2レベルインデックスと
を関連付けるステップ922に移行する。処理はステッ
プ922からステップ924に移行する。
【0065】ステップ924では、評価処理108は、
新規トラップサイトの第3レベルインデックスに従い、
ステップ914にて引き出された、又はステップ918
にて生成された第3レベルテーブル706から第4レベ
ルテーブルに対する参照を引き出す。ステップ924
は、上述のステップ808とまさに同様である。処理
は、ステップ924から、評価処理108が引出された
参照が第4レベルテーブル714を識別するか否かを決
定し、これによりパッチデータベース408は、新規ト
ラップサイトの第3レベルインデックスに対応するパッ
チを含まないことを示す、試験ステップ926に移行す
る。引出された参照が第4レベルテーブル714を識別
しない場合には、処理は後述するステップ934に移行
する。これに対して、引出された参照が第4レベルテー
ブル714を識別する場合には、処理はステップ928
に移行する。
【0066】ステップ928では、評価処理108は新
規な第4のレベルテーブル、例えば第4レベルテーブル
708(図7参照)を生成する。処理は、評価処理10
8が新規な第4のレベルテーブルの全ての第4レベルイ
ンデックス、例えば、第4レベルテーブル708の第4
レベルインデックス708Aをデフォルトパッチ410
Cと関連付けるステップ930に移行する。この例で
は、第4レベルテーブル708は新規に生成されるの
で、第4レベルテーブル708は、パッチデータベース
408内のいずれのパッチにも対応せず、したがって、
第4レベルテーブル708は、デフォルトパッチ410
Cとテーブル708の全ての第4レベルインデックスと
を関連付ける。第4レベルテーブル708は、後述する
ように実装済パッチ410Aと新規トラップサイトとを
関連付けるために後に更新される。処理は、ステップ9
30から評価処理108が、第3レベルテーブル706
内に新規に生成された第4レベルテーブル708に対す
るポインタと新規トラップサイトの第3レベルインデッ
クスとを関連付けるステップ932に移行する。処理は
ステップ932からステップ934に移行する。
【0067】ステップ934では、評価処理108は、
その中で新規トラップサイトの第4レベルインデックス
が新規パッチ410Aのパッチエントリポインタと関連
付けられるパッチ記録を構築する。処理は、ステップ9
34から、ステップ810を参照して既述したようにユ
ーザトラップハンドラ406が第4レベルテーブル70
8に対する参照によってパッチ410Aに向けられるよ
うに第4レベルテーブル708内にパッチ記録を含め
る、ステップ936に移行する。ステップ936の後、
論理フローチャート314に従う処理、すなわちステッ
プ314(図3参照)は終了する。したがって、論理フ
ローチャート314に従い、パッチデータベース408
を介してパッチ410Aへのパスが確立され、また、パ
ッチデータベース408の各テーブル内における不使用
項目はユーザトラップハンドラ406をデフォルトパッ
チ410Cに導く。
【0068】「詳細な実施例」既述のように、コンピュ
ータシステム100は、例えば、アメリカ合衆国カリフ
ォルニア州マウンテンビュー市所在のサンマイクロシス
テムズ社から入手可能な任意のSPARCstationsワー
クステーションコンピュータシステム、同カリフォルニ
ア州クパチーノ市所在のアップル社から入手可能である
と共にPowerPCプロセッサ搭載の任意のマッキン
トッシュコンピュータシステム、同カリフォルニア州サ
ンタクララ市所在のインテル社から入手可能な任意のX
86シリーズのプロセッサ、あるいは、これらと互換性
のあるプロセッサを搭載する同ニューヨーク州サマーズ
市所在のIBM社から入手可能なIBMコンピュータシ
ステムと互換性を有する任意のコンピュータシステムで
あり得る。オペレーティングシステム112のカーネル
114に対するトラップは、これらの各プラットフォー
ム上で異なって実行される。したがって、本発明の異な
る実施の形態は、その上で本発明が評価される各プラッ
トフォームに対応する。
【0069】「X86プロセッサ」コンピュータシステ
ム100のプロセッサ102がインテル社から入手可能
な任意のX86プロセッサの場合には、ネイティブ計算
機命令はサイズが変化し得ると共に、1バイトと同じだ
け小さくあり得る。これにより、2個の異なるトラッピ
ング計算機命令の1つは、置換済ネイティブ計算機命令
の特定のサイズに依存して対象処理110のネイティブ
計算機命令を置き換える。置換済みネイティブ計算機命
令が1バイト長の場合には、HLT(すなわち、ホール
ト)計算機命令はトラップを呼び出すと共に1バイト長
なので、HLT計算機命令はトラッピング命令である。
実行にあたり1バイト長であると共にカーネル114に
対するトラップをもたらす他の計算機命令が用いられ得
ることは明確である。しかしながら、HLT計算機命令
は対象処理110の実行状態に比較的影響を与えること
の少ないHLT計算機命令が好ましい。
【0070】これとは逆に、置換済ネイティブ計算機命
令が1バイト長より長い場合には、INT31(すなわ
ち、割込番号31)計算機命令はトラッピング計算機命
令であると共に2バイト長である。置換済ネイティブ計
算機命令が2バイト長よりも長い場合には、その実行が
プロセッサ102に動作を起こさせないNULL計算機
命令が置換済ネイティブ計算機命令の全サイズが満たさ
れるまでINT31計算機命令に対して追加される。N
ULL計算機命令は、無演算計算機命令型である。
【0071】オペレーティングシステムは、一般的に、
その内のいくつかがオペレーティングシステムによって
用いられると共にその残りがユーザコンピュータプロセ
ッサ、すなわちユーザによって起動されると共にオペレ
ーティングシステムを通じてコンピュータシステム10
0の個々の構成要素と対話する計算機処理によって用い
られ得る多くの割込アドレスを提供する。HLT計算機
命令は、HLT計算機命令の実行によってもたらされる
トラップがオペレーティングシステム112によって用
いられると共に一般的に対象処理110のようなユーザ
計算機処理による使用には利用不可能である割込アドレ
スを使用するので、通常、トラッピング計算機命令とし
て用いられない。しかしながら、以下の疑似コード断片
は、1バイト長のトラッピング計算機命令としてHLT
計算機命令の使用を説明すると共に、特に効率的な方法
でカーネルトラップハンドラ502により処理される。
【0072】
【表1】 HLT計算機命令は特権化されている、すなわちオペレ
ーティングシステム112だけがHLT計算機命令の実
行を許されているので、対象処理110によるHLT計
算機命令の実行の試みは、割込アドレス13を使用する
カーネル114に対するトラップを生成させ、また、対
象処理110による特権計算機命令の実行の試みは、割
込アドレス13を使用するトラップをもたらす。
【0073】割込アドレス13は、対象アドレス110
が任意の特権計算機命令の実行を試みる際に用いられる
ので、カーネルトラップハンドラ502は、維持コード
断片(1)の4行目にて割込アドレス13の使用を招来
する特定エラーが特権命令エラーであるか否か、すなわ
ち対象処理による特権計算機命令の実行の試みによりも
たらされたか否かを決定する。エラーが特権命令エラー
以外のエラーである場合には、カーネルトラップハンド
ラ502は、疑似コード断片(1)の12行目において
従来汎用保護除外ハンドラを実行する。これに対して、
エラーが特権命令エラーの場合には、疑似コード断片
(1)の5行目にてカーネルトラップハンドラ502
は、トラッピング計算機命令402TをHLT計算機命
令と比較する。
【0074】カーネルトラップハンドラ502はトラッ
プを招来する特定エラーを特定する情報を有すると共に
追加情報を参照することなくその決定を行い得るので、
トラッピング計算機命令402TとHLT計算機命令と
の比較は、カーネルトラップハンドラ502が、エラー
は特権命令エラーであると決定するまで延期される。ト
ラッピング計算機命令402TとHLT計算機命令と比
較するために、カーネルトラップハンドラ502は、一
般的に、メモリ104からトラッピング計算機命令40
2T受け取らなければならず、また、そのような引出は
疑似コード断片(1)のリマインダを実行するために必
要な時間に関連する相当な時間量を要求することができ
る。したがって、トラッピング計算機命令402Tの引
出は、割込アドレス13が特権命令エラー以外のエラー
のために用いられる可能性がなくなるまで延期される。
しかしながら、カーネルトラップハンドラ502は、割
込アドレス13が特権命令エラー以外のエラーのために
用いられる可能性を最初に除外することなくカーネル1
14に対するトラップを適当に処理することができる。
【0075】カーネルトラップハンドラ502が、HL
T計算機命令の実行を試みた結果としてトラップが生じ
たと決定する場合には、カーネルトラップハンドラ50
2は、ユーザ定義トラップハンドラが割込アドレス13
のために実装されているか否かを決定する。カーネルト
ラップハンドラ502は、エラーポイントがデータ構造
504内の割込アドレス13に関連付けられているか否
かを決定することによりそのような決定を行う。
【0076】一旦、カーネルトラップハンドラ502が
トラップはHLT計算機命令の実行を試みた結果として
生じたものと決定した場合には、特権計算機命令はHL
T計算機命令であり、また割込アドレスのためのユーザ
定義トラップハンドラが(それぞれ疑似コード断片
(1)の4,5,6行目にて)実装され、カーネルトラ
ップハンドラ502は疑似コード断片(1)の7〜8行
目にてトラップ状態を一括する(図6のステップ60
6)。カーネルトラップハンドラ502は、対象処理1
10のスタックを、集合的にトラップサイトを特定する
トラップコードセグメントポインタ及びトラップ命令ポ
インタにプッシュすることによりトラップ状態を一括す
る。カーネルトラップハンドラ502は、(i)対象処
理110のスタックからのポッピングデータを控えると
共に(ii)対象処理110のフラグレジスタの内容を対
象処理110のスタック上に復元することにより対象処
理110の状態を保存する。
【0077】例えば、対象処理110といった計算機処
理のフラグレジスタは、フラグを有しており、各フラグ
は計算機処理の実行状態の構成要素を定義する。例え
ば、このようなフラグは、計算機処理により直近に実行
された算術演算の結果が正、負、あるいは0のいずれで
あるかを表示する。トラッピング計算機命令402Tの
実行を試みる際に対象処理110の状態を定義するフラ
グは、自動的に対象処理110のフラグレジスタ内に保
存される。対象処理110のフラグレジスタを対象処理
110のスタック上に配置することにより、カーネルト
ラップハンドラ502は、対象処理110の実行状態を
復元することができる。対象処理110は、自身のスタ
ックからフラグレジスタの先の内容をプルすると共に、
スタックから取得される内容を含むために対象処理11
0のフラグレジスタを復元することにより自身の実行状
態を復元することができる。10行目では、ユーザトラ
ップハンドラ406が実行され、カーネルトラップハン
ドラ502による処理は終了する。
【0078】あるいは、割込アドレス31が用いられる
場合、すなわちINT31計算機命令がトラッピング計
算機命令402Tの場合には、カーネルトラップハンド
ラ502は割込アドレス31のためのユーザトラップハ
ンドラが実装されているかを検証し、実装されている場
合には、(i)トラップ状態を一括し、(ii)対象処理
110の状態を保存し、また(iii)記述の方法にて疑
似コード断片(1)の16〜20行においてユーザトラ
ップハンドラ406を実行する。
【0079】「SPARCプロセッサ」コンピュータシ
ステム100のプロセッサ102(図1参照)がサンマ
イクロシステムズから入手可能なSPARCプロセッサ
である場合には、全ての計算機命令が同一サイズであ
る。計算機処理を評価するために、ネイティブ計算機命
令が2個のトラッピング計算機命令、すなわちAta0x
30@計算機命令及びAta0x39@計算機命令、の1
つと置き換えられる。SPARCプロセッサ命令セット
によって定義されたAta0x38@及びAta0x39@計
算機命令は、カーネル114に対するトラップを引き起
こす。この実施の形態では、カーネルトラップハンドラ
502は、評価処理108が別々のトラッピング計算機
命令を1つ又は2つの異なる評価方式と関連付けること
を許容する。したがって、カーネルトラップハンドラ5
02は、トラッピング計算機命令402TとしてAta0
x38@計算機命令又はAta0x39@計算機命令のい
ずれかを選択することにより選択済の1つ又は2つの異
なる評価方式に従い対象処理110を評価することがで
きる。以下の疑似コード断片は、プロセッサ102がS
PARCプロセッサである場合の本発明に従うユーザ定
義トラップの検出を説明する。
【0080】
【表2】 3行目及び4行目では、カーネルトラップハンドラ50
2は、カーネルに対するトラップを引き起こす計算機命
令、例えばトラッピング計算機命令402TがAta0x
38@計算機命令、又はAta0x39@計算機命令のい
ずれであるかを決定する。したがって、疑似コード断片
(2)では、双方のトラッピング計算機命令が同一の方
法で処理される。その場合、カーネルトラップハンドラ
502は、トラップハンドラ、例えばユーザトラップハ
ンドラ406が、疑似コード断片(2)の5行目にて特
定のトラッピング計算機命令のために実装されているか
否かを決定する。カーネルトラップハンドラ502は、
データ構造504内で、エントリポイントが、カーネル
114に対する現在のトラップを引き起こした特定のト
ラッピング計算機命令と関連付けられているか否かを決
定することによりそのような決定を行う。そのようなト
ラップハンドラが実装されていない場合には、カーネル
トラップハンドラ502は、疑似コード断片(2)の1
2行目にて従来の方法でトラップを処理する。これに対
して、そのようなハンドラが実装されている場合には、
カーネルトラップハンドラ502による処理は、疑似コ
ード断片(2)の6行目に進む。
【0081】疑似コード(2)の6行目では、カーネル
トラップハンドラ502は、プロセッサ102内の先の
レジスタ状態を保存するために新規レジスタウィンドウ
を開く。カーネルトラップハンドラ502によるあらゆ
る重大な処理に先立ち、例えば疑似コード断片(2)の
7行〜10行に従う処理に先立ち、プロセッサ102内
のレジスタ状態を保存することにより、カーネルトラッ
プハンドラ502により影響されるレジスタ状態内のあ
らゆる変更は、対象処理110の処理状態に影響を与え
ない。カーネルトラップハンドラ502は、新規に開か
れたレジスタウィンドウ内で、疑似コード断片(2)の
(i)7行、(ii)8行、(iii)9行及び(iv)10
行のそれぞれにおいて、(i)トラップサイトとしての
ローカルレジスタ1内にプログラムカウンタを格納し、
(ii)現在のトラップの結果として実行されるパッチの
実行直後に実行する計算機命令としてローカルレジスタ
2内に次期プログラムカウンタを格納し、(iii)カー
ネルに対するトラップを実行中に評価済計算機処理の状
態を保存するために現在のトラップの時間の整数状態コ
ードを整数状態コードレジスタ内に格納し、また(iv)
トラッピング計算機命令402Tと関連付けられている
ユーザトラップハンドラ、すなわちユーザトラップハン
ドラ406、の実行を開始する。したがって、ユーザト
ラップハンドラがトラッピング計算機命令402Tのた
めいに実装されると、カーネルトラップハンドラ502
は迅速且つ効率的に対象処理110の状態を保存し、ト
ラップサイトを含むトラップ状態を一括し、また処理を
ユーザトラップハンドラ406に送る。
【0082】「PowerPCプロセッサ」コンピュー
タシステム100のプロセッサ102(図1参照)がモ
トローラ社から入手可能なPowerPCプロセッサで
ある場合には、全ての計算機命令が同一サイズである。
計算機処理を評価するために、ネイティブ計算機命令が
2個のトラッピング計算機命令、すなわちAtwi1f,01@
計算機命令及びAtwi1f,0,2@計算機命令、の1つと置き
換えられる。PowerPCプロセッサ命令セットによ
って定義されたAtwi1f,01@及びAtwi1f,0,2@計算機命
令は、カーネル114に対するトラップを引き起こす。
この実施の形態では、カーネルトラップハンドラ502
は、評価処理108が別々のトラッピング計算機命令を
1つ又は2つの異なる評価方式と関連付けることを許容
する。したがって、カーネルトラップハンドラ502
は、トラッピング計算機命令402TとしてAtwi1f,01
@計算機命令及びAtwi1f,0,2@計算機命令のいずれかを
選択することにより選択済の1つ又は2つの異なる評価
方式に従い対象処理110を評価することができる。以
下の疑似コード断片は、プロセッサ102がPower
PCプロセッサである場合の本発明に従うユーザ定義ト
ラップの検出を説明する。
【0083】
【表3】 3行目及び4行目では、カーネルトラップハンドラ50
2は、カーネルに対するトラップを引き起こす計算機命
令、例えばトラッピング計算機命令402TがAtwi1f,0
1@計算機命令及びAtwi1f,0,2@計算機命令のいずれで
あるかを決定する。その場合、カーネルトラップハンド
ラ502は、トラップハンドラ、例えばユーザトラップ
ハンドラ406が、疑似コード断片(3)の5行目にて
特定のトラッピング計算機命令のために実装されている
か否かを決定する。カーネルトラップハンドラ502
は、データ構造504内で、エントリポイントが、カー
ネル114に対する現在のトラップを引き起こした特定
のトラッピング計算機命令と関連付けられているか否か
を決定することによりそのような決定を行う。そのよう
なトラップハンドラが実装されていない場合には、カー
ネルトラップハンドラ502は、疑似コード断片(3)
の14行目にて従来の方法でトラップを処理する。これ
に対して、そのようなハンドラが実装されている場合に
は、カーネルトラップハンドラ502による処理は、疑
似コード断片(3)の6行目に進む。
【0084】疑似コード(3)の6〜10行では、カー
ネルトラップハンドラ502は、(i)対象処理110
のスタックの先のスタックポインタ及び(ii)状態保存
レジスタ0を対象計算機処理のスタック上にプッシュす
る。状態保存レジスタ0は、カーネル114に対するト
ラップを引き起こす計算機命令、例えばトラッピング計
算機命令402T、の対象処理110のアドレス空間1
10AS内のアドレスを特定するデータを含んでいる。
そして、カーネルトラップハンドラ502は、カーネル
に対するトラップの結果として状態レジスタからトラッ
プ状態レジスタに移されたデータを状態レジスタ内に格
納することにより、対象計算機処理110の状態の一部
であるトラッピング計算機命令402Tの実行時におけ
る自身の状態に対象計算機処理110の状態を復元す
る。その後、カーネルトラップハンドラ502は、トラ
ッピング計算機命令402Tに関連付けられているユー
ザトラップハンドラ、すなわち、ユーザトラップハンド
ラ406の実行を開始する。したがって、ユーザトラッ
プハンドラがトラッピング計算機命令402Tのためい
に実装されると、カーネルトラップハンドラ502は迅
速且つ効率的に対象処理110の状態を保存し、トラッ
プサイトを含むトラップ状態を一括し、また処理をユー
ザトラップハンドラ406に送る。
【0085】以上、いくつかの発明の実施の形態に基づ
き本発明を説明したが、本発明の趣旨から逸脱しない範
囲で種々の変更改良が可能である。
【0086】
【発明の効果】以上説明したように、本発明によれば、
単一のネイティブ計算機命令が、オペレーティングシス
テムのカーネルに対するユーザプログラマブルトラップ
に置き換えられると共に、トラップの実行により評価計
算機命令のシーケンスに対する制御を移行させることが
できる。また、カーネルに対するトラップにより計算機
プログラムのサイズ又は計算機プログラムのメモリアド
レス空間内における2個の計算機命令間の距離に関わり
なく計算機プログラムの任意の計算機命令から計算機プ
ログラムの任意の他の計算機命令に対して制御を移行さ
せることができる。さらに、単一ネイティブ計算機命令
は、置換によって他のネイティブ計算機命令が移動させ
られないようにユーザプログラマブルトラップによって
置き換えられ得る。
【図面の簡単な説明】
【図1】 本発明に従うコンピュータシステムのブロッ
ク図である。
【図2】 本発明に従う計算機処理の評価及び評価され
た計算機処理の実行に用いられる論理フローチャートで
ある。
【図3】 本発明に従う計算機処理の評価に用いられる
論理フローチャートである。
【図4】 (a)は本発明に従う計算機処理を評価する
前の計算機処理のアドレス空間のブロック図であり、
(b)は本発明に従う計算機処理を評価した後の計算機
処理のアドレス空間のブロック図である。
【図5】 本発明に従うカーネルを介する評価計算機命
令のパッチに対する制御の移行を説明するブロック図で
ある。
【図6】 本発明に従うカーネルトラップハンドラによ
りカーネルに対するトラップを処理するために用いられ
る論理フローチャートである。
【図7】 本発明に従うパッチデータベースのブロック
図である。
【図8】 本発明に従う特定のトラップサイトに対応す
るパッチエントリポイントのための図7のパッチデータ
ベースからの引出しに用いられる論理フローチャートで
ある。
【図9】 パッチエントリポイントの図7のパッチデー
タベース内の内包及びトラップサイトのための図7のデ
ータベース内の新規包含パッチエントリポイントとの結
合に用いられる論理フローチャートである。
【符号の説明】
100…コンピュータシステム、102…プロセッサ、
104…メモリ、106…バス、108…評価処理、1
10…対象処理、110AS…アドレス空間、112…
オペレーティングシステム、114…カーネル、120
…コンピュータ表示装置、130…ユーザ入力装置、4
02…ネイティブ計算機命令、402T…トラッピング
計算機命令、404…割当メモリ、404U…不使用メ
モリ、406…ユーザトラップハンドラ、408…パッ
チデータベース、410A、410B…パッチ、410
C…(デフォルト)パッチ、502…カーネルトラップ
ハンドラ、504…データ構造、702…第1レベルテ
ーブル、702A…インデックス値、702B…第2レ
ベルテーブル参照、704…第2レベルテーブル、70
4A…インデックス値、704B…第3レベルテーブル
参照、706…第3レベルテーブル、706A…インデ
ックス値、706B…第4レベルテーブル参照、708
…第4レベルテーブル、708A…第4レベルインデッ
クス、714…第4レベルテーブル、714A…第4レ
ベルインデックス、714B…パッチエントリポイン
ト。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョセフ アール. エコルト アメリカ合衆国, カリフォルニア州, ロス アルトス, ヒエラ コート 858 (72)発明者 ロージャー エー. フォウルクナー アメリカ合衆国, カリフォルニア州, マウンテン ヴュー, サウス レングス トーフ アヴェニュー 255, アパート メント 88

Claims (72)

    【特許請求の範囲】
  1. 【請求項1】 1個以上のネイティブ計算機命令の集合
    を評価するための方法であって、 1個以上の選択済ネイティブ計算機命令を、実行時にそ
    の中で前記1個以上のネイティブ計算機命令の集合を実
    行するオペレーティングシステムに対するトラップを引
    き起こすトラッピング計算機命令で置換するステップ
    と、 1個以上の追加計算機命令のパッチを提供するステップ
    と、 前記トラッピング計算機命令の実行により引き起こされ
    る前記オペレーティングシステムに対するトラップが、
    順次、前記1個以上の追加計算機命令の実行を引き起こ
    すようにトラップハンドラを構成するステップと、を備
    える方法。
  2. 【請求項2】 請求項1に記載の方法において、1個以
    上の追加計算機命令の前記パッチは前記選択済ネイティ
    ブ計算機命令を含む、方法。
  3. 【請求項3】 請求項1に記載の方法において、前記選
    択済ネイティブ計算機命令のサイズは前記トラッピング
    計算機命令のサイズと等しい、方法。
  4. 【請求項4】 計算機処理の制御を移行させるための方
    法であって、 前記計算機処理内に選択済特権計算機命令を内包するス
    テップと、 前記計算機処理内にそれに対して処理が移行されるべき
    第2の計算機命令を提供するステップと、 その中で前記計算機処理を実行するオペレーティングシ
    ステムに対するトラップが前記選択済特権計算機命令の
    実行により引き起こされる場合、前記オペレーティング
    システムのトラップハンドラ内に実行時、計算機処理の
    制御を前記第2計算機命令に対して移行させる1個以上
    の計算機命令を内包するステップと、を備える方法。
  5. 【請求項5】 請求項4に記載の方法において、前記選
    択済特権計算機命令は1バイト長である、方法。
  6. 【請求項6】 請求項4に記載の方法において、前記ト
    ラップハンドラは、 前記トラップが特権計算機命令の実行の試みにより引き
    起こされたか否かを決定するステップ、及び前記トラッ
    プハンドラが前記トラップは特権計算機命令の実行の試
    みにより引き起こされたと決定する場合には、前記トラ
    ップが前記選択済特権計算機命令の実行の試みにより引
    き起こされたか否かを決定するステップを実行すること
    により、前記オペレーティングシステムに対するトラッ
    プが前記選択済特権計算機命令の実行により引き起こさ
    れるか否かを決定する、方法。
  7. 【請求項7】 請求項4に記載の方法において、前記選
    択済特権計算機命令はホールト計算機命令である、方
    法。
  8. 【請求項8】 計算機処理のトラッピング計算機命令の
    実行の試みが前記計算機処理の制御を前記計算機処理内
    のトラップハンドラに対して移行させると共にオペレー
    ティングシステムに対するトラップに応じて前記オペレ
    ーティングシステムに対する制御の移行が前記計算機処
    理の状態の0個以上の構成要素に影響を及ぼす計算機処
    理において前記オペレーティングシステムに対するプロ
    グラマブルトラップを評価する方法であって、前記計算
    機処理による前記オペレーティングシステムに対するト
    ラップに応じて実質的に、 前記0個以上の被影響構成要素の各々の状態を表す状態
    データを引き出すステップと、 前記計算機処理によりアクセス可能なメモリ位置に状態
    データを格納するステップと、 計算機処理に対する制御を移行させるステップと、から
    構成されている方法。
  9. 【請求項9】 請求項8に記載の方法はさらに、前記計
    算機処理による前記オペレーティングシステムに対する
    トラップに応じて実質的に、 前記トラッピング計算機命令のアドレスを表すトラップ
    サイトデータを引き出すステップ、 前記計算機処理によりアクセス可能な第2メモリ位置内
    に前記トラップサイトデータを格納するステップとから
    構成される、方法。
  10. 【請求項10】 請求項8に記載の方法はさらに、前記
    計算機処理による前記オペレーティングシステムに対す
    るトラップに応じて実質的に、 前記0個以上の被影響構成要素以外の前記計算機処理の
    状態に対する全ての変更を回避するステップから構成さ
    れる、方法。
  11. 【請求項11】 その各インスタンスが有限数である候
    補値の中の唯一値を有する対象データをキーデータに対
    してマッピングするための方法であって、 コンピュータのメモリ内にデータベースを格納するステ
    ップと、 前記データベース内にて、対象データの0個以上のイン
    スタンスをキーデータの0個以上のインスタンスに関連
    付けるステップと、 前記データベース内にて、デフォルト対象データをキー
    データの0個以上のインスタンス以外の有限数である候
    補値の中の1つに関連付けるステップと、を備える方
    法。
  12. 【請求項12】 トラップサイトを計算機処理の1個以
    上計算機命令のパッチに対してマッピングするための方
    法であって、 (a)コンピュータのメモリ中にパッチデータベースを
    格納するステップと、 (b)前記データベース内にて1個以上の計算機命令の
    0個以上のパッチを0個以上の各トラップサイトに関連
    付けるステップと、 (c)前記データベース内にて1個以上の計算機命令の
    デフォルトパッチを前記0個以上のトラップサイト以外
    の前記計算機処理の可能性ある全てのトラップサイトに
    関連付けるステップと、を備える方法。
  13. 【請求項13】 請求項12に記載の方法において、前
    記(b)ステップは、 前記パッチデータベースの第1の部分内で0個以上のト
    ラップサイトの最大有効ビット部分を前記パッチデータ
    ベースの各第2の部分に関連付けるステップと、 前記パッチデータベースの0個以上の前記第2の部分内
    で前記0個以上のトラップサイトの最小有効ビット部分
    を1個以上の計算機命令の0個以上のパッチのそれぞれ
    に関連付けるステップと、を備える、方法。
  14. 【請求項14】 請求項13に記載の方法において、前
    記(c)ステップは、 前記パッチデータベースの前記第1の部分内で、前記パ
    ッチデータベースのデフォルトの第2部分を前記0個以
    上のトラップサイトの最大有効ビット部分以外の全ての
    最大有効ビット部分に関連付けるステップと、 前記パッチデータベースの前記デフォルト第2部分内
    で、前記デフォルトパッチを前記計算機処理の全ての可
    能性あるトラップサイトの最小有効ビット部分に関連付
    けるステップと、を備える、方法。
  15. 【請求項15】 請求項14に記載の方法において、前
    記(c)ステップはさらに、 前記パッチデータベースの前記各第2部分内で、前記デ
    フォルトパッチを、前記パッチデータベースの第2部分
    と関連付けられている最大有効部分を有すると共に前記
    0個以上のトラップサイトとは異なる、全ての可能性あ
    るトラップサイトの最小有効ビット部分に関連付けるス
    テップを備える、方法。
  16. 【請求項16】 1個以上のネイティブ計算機命令の集
    合を評価するための方法であって、 (a)前記集合内の第1の位置にて前記ネイティブ計算
    機命令の1つを選択するステップと、 (b)前記集合内の第2の位置にて1個以上の追加計算
    機命令のパッチを提供するステップと、 (c)前記第1の位置と前記第2の位置との差が所定の
    敷居値よりも大きい場合には、 (i)前記選択済ネイティブ計算機命令を、実行時に前
    記ネイティブ計算機命令の集合を実行するオペレーティ
    ングシステムに対するトラップを引き起こすと共に、前
    記トラッピング計算機命令の実行により引き起こされる
    前記オペレーティングシステムに対するトラップが順
    次、1個以上の追加計算機命令のパッチの実行を引き起
    こすように構成される、トラッピング計算機命令で置換
    するステップを実行するステップと、 (d)前記第1の位置と前記第2の位置との差が所定の
    敷居値以下の場合には、 (i)前記選択済ネイティブ計算機命令を、実行時に前
    記ネイティブ計算機命令の集合の制御を1個以上の追加
    計算機命令のパッチに対して移行させる分岐計算機命令
    で置換するステップを実行するステップと、を備える方
    法。
  17. 【請求項17】 請求項16に記載の方法において、1
    個以上の追加計算機命令の前記パッチは、前記選択済ネ
    イティブ計算機命令を含む、方法。
  18. 【請求項18】 請求項16に記載の方法において、前
    記第1の位置と前記第2の位置との差が所定の敷居値よ
    りも大きい場合には、前記選択済ネイティブ計算機命令
    のサイズは前記トラッピング計算機命令のサイズと等し
    く、 さらに、前記第1の位置と前記第2の位置との差が所定
    の敷居値以下の場合には、前記選択済ネイティブ計算機
    命令のサイズは前記分岐計算機命令のサイズと等しい、
    方法。
  19. 【請求項19】 1個以上のネイティブ計算機命令の集
    合を評価するためのコンピュータ読み取り可能コードが
    記録されたコンピュータ読み取り可能媒体であって、 前記コンピュータ読み取り可能コードは、 前記ネイティブ計算機命令の選択済ネイティブ計算機命
    令を、実行時にその中で前記1個以上のネイティブ計算
    機命令を実行する前記オペレーティングシステムに対す
    るトラップを引き起こすトラッピング計算機命令で置換
    するために構成されている計算機命令置換モジュール
    と、 1個以上の計算機命令のパッチと、 前記パッチと機能的に結合されると共に、前記オペレー
    ティングシステムに対するトラップに応じて1個以上の
    計算機命令の前記パッチの実行を引き起こすトラップハ
    ンドラと、を備えている、コンピュータ読み取り可能媒
    体。
  20. 【請求項20】 請求項19に記載のコンピュータ読み
    取り可能媒体において、1個以上の計算機命令の前記パ
    ッチは、前記選択済ネイティブ計算機命令を含む、コン
    ピュータ読み取り可能媒体。
  21. 【請求項21】 請求項19に記載のコンピュータ読み
    取り可能媒体において、前記選択済ネイティブ計算機命
    令のサイズは、前記トラッピング計算機命令のサイズと
    等しい、コンピュータ読み取り可能媒体。
  22. 【請求項22】 計算機処理の制御を移行させるための
    コンピュータ読み取り可能コードが記録されたコンピュ
    ータ読み取り可能媒体であって、前記コンピュータ読み
    取り可能コードは、 (a)(i)原始位置(source location)に選択済特権
    計算機命令を有し、(ii)目的位置(destination loca
    tion)に第2の計算機命令を有する計算機処理のコンピ
    ュータプロセッサによる実行をもたらし得るオペレーテ
    ィングシステムと、 (b)前記オペレーティングシステムと機能的に結合さ
    れたトラップハンドラであって、(i)前記オペレーテ
    ィングシステムに対するトラップが前記選択済特権計算
    機命令の実行により引き起こされる場合には、実行時に
    前記計算機処理の制御を前記第2計算機命令に対して移
    行させる1個以上の計算機命令を有するトラップハンド
    ラと、を備えている、コンピュータ読み取り可能媒体。
  23. 【請求項23】 請求項22に記載のコンピュータ読み
    取り可能媒体において、前記選択済特権計算機命令は1
    バイト長である、コンピュータ読み取り可能媒体。
  24. 【請求項24】 請求項22に記載のコンピュータ読み
    取り可能媒体において、前記トラップハンドラの前記1
    個以上の計算機命令はさらに、 前記コンピュータプロセッサにより実行される時、前記
    トラップが特権計算機命令の実行の試みにより引き起こ
    されたか否かを決定する1個以上の計算機命令、 前記トラップが特権計算機命令の試みにより引き起こさ
    れた場合には、前記コンピュータプロセッサにより実行
    される時、前記トラップが前記選択済特権計算機命令の
    実行の試みにより引き起こされたか否かを決定する1個
    以上の計算機命令とを備える、コンピュータ読み取り可
    能媒体。
  25. 【請求項25】 請求項22に記載のコンピュータ読み
    取り可能媒体において、前記選択済特権計算機命令はホ
    ールト計算機命令である、コンピュータ読み取り可能媒
    体。
  26. 【請求項26】 計算機処理のトラッピング計算機命令
    の実行の試みが前記計算機処理の制御を前記計算機処理
    内のトラップハンドラに対して移行させると共にオペレ
    ーティングシステムに対するトラップに応じて前記オペ
    レーティングシステムに対する制御の移行が前記計算機
    処理の状態の0個以上の構成要素に影響を及ぼす計算機
    処理において前記オペレーティングシステムに対するプ
    ログラマブルトラップを評価するためのコンピュータ読
    み取り可能コードが記録されたコンピュータ読み取り可
    能媒体であって、 前記計算機処理による前記オペレーティングシステムに
    対するトラップに応じて、前記0個以上の被影響構成要
    素の各々の状態を表す状態データを引き出すステップ、
    前記計算機処理によりアクセス可能なメモリ位置に状態
    データを格納するステップ、及び計算機処理に対して制
    御を移行させるステップだけを実質的に実行するトラッ
    プハンドラを備えているコンピュータ読み取り可能媒
    体。
  27. 【請求項27】 請求項26に記載のコンピュータ読み
    取り可能媒体において、前記トラップハンドラは前記計
    算機処理による前記オペレーティングシステムに対する
    トラップに応じて、 前記トラッピング計算機命令のアドレスを表すトラップ
    サイトデータを引き出すステップ、 前記計算機処理によりアクセス可能な第2メモリ位置内
    に前記トラップサイトデータを格納するステップとを更
    に実行する、コンピュータ読み取り可能媒体。
  28. 【請求項28】 請求項26に記載のコンピュータ読み
    取り可能媒体において、前記トラップハンドラは前記計
    算機処理による前記オペレーティングシステムに対する
    トラップに応じて、 前記0個以上の被影響構成要素以外の前記計算機処理の
    状態に対する全ての変更を回避するステップを更に実行
    する、コンピュータ読み取り可能媒体。
  29. 【請求項29】 その各インスタンスが有限数である候
    補値の中の唯一値を有する対象データをキーデータに対
    してマッピングするためのコンピュータ読み取り可能コ
    ードが記録されたコンピュータ読み取り可能媒体であっ
    て、 (i)対象データの0個以上のインスタンスとキーデー
    タの0個以上のインスタンスとの関連付け、及び(ii)
    デフォルト対象データとキーデータの0個以上のインス
    タンス以外の有限数である候補値の中の1つとの関連付
    けを有するデータベースを備えたコンピュータ読み取り
    可能媒体。
  30. 【請求項30】 トラップサイトを計算機処理の1個以
    上計算機命令のパッチに対してマッピングするためコン
    ピュータ読み取り可能コードを記録したコンピュータ読
    み取り可能媒体であって、 0個以上のトラップサイトが、その各々が1個以上の計
    算機命令を含む対応するパッチにマップされているパッ
    チデータベースであって、(a)1個以上の計算機命令
    の0個以上のパッチと0個以上の各トラップサイトとの
    関連付け、及び(b)1個以上の計算機命令のデフォル
    トパッチと前記0個以上のトラップサイト以外の前記計
    算機処理の可能性ある全てのトラップサイトとの関連付
    けを有するパッチデータベースを備えたコンピュータ読
    み取り可能媒体。
  31. 【請求項31】 請求項30に記載のコンピュータ読み
    取り可能媒体において、前記関連付け(a)は、 (i)前記パッチデータベースの第1の部分内に0個以
    上のトラップサイトの最大有効ビット部分と前記パッチ
    データベースの各第2の部分との関連付けを、 (ii)前記パッチデータベースの0個以上の前記第2の
    部分内に前記0個以上のトラップサイトの最小有効ビッ
    ト部分と1個以上の計算機命令の0個以上のパッチのそ
    れぞれとの関連付けを備える、コンピュータ読み取り可
    能媒体。
  32. 【請求項32】 請求項31に記載のコンピュータ読み
    取り可能媒体において、前記関連付け(b)は、 (i)前記パッチデータベースの前記第1の部分内に前
    記パッチデータベースのデフォルトの第2部分と前記0
    個以上のトラップサイトの最大有効ビット部分以外の全
    ての最大有効ビット部分との関連付けを、 (ii)前記パッチデータベースの前記デフォルト第2部
    分内に前記デフォルトパッチと前記計算機処理の全ての
    可能性あるトラップサイトの最小有効ビット部分との関
    連付けを備える、コンピュータ読み取り可能媒体。
  33. 【請求項33】 請求項32に記載のコンピュータ読み
    取り可能媒体において前記関連付け(b)はさらに、 (iii)前記パッチデータベースの前記各第2部分内に
    前記デフォルトパッチと前記パッチデータベースの第2
    部分に関連付けられている最大有効部分を有すると共に
    前記0個以上のトラップサイトとは異なる可能性あるト
    ラップサイトの最小有効ビット部分との関連付けを備え
    る、コンピュータ読み取り可能媒体。
  34. 【請求項34】 ネイティブ計算機命令の集合を評価す
    るためのコンピュータ読み取り可能コードを記録したコ
    ンピュータ読み取り可能媒体であって、 (a)前記集合内の第1の位置にてネイティブ計算機命
    令を選択する選択モジュールと、 (b)前記選択モジュールと機能的に結合されていると
    共に前記集合内の第2の位置にて1個以上の計算機命令
    のパッチを提供するパッチモジュールと、 (c)前記選択モジュール及び前記パッチモジュールと
    機能的に結合されていると共に前記第1の位置と前記第
    2の位置との差を決定する距離モジュールと、 (d)前記選択モジュール及び前記パッチモジュールと
    機能的に結合されていると共に、 (i)前記選択済ネイティブ計算機命令を、実行時、そ
    の中で前記集合計算機命令を実行するオペレーティング
    システムに対するトラップを引き起こすトラッピング計
    算機命令で置換し、また、 (ii)前記トラッピング計算機命令の実行により引き起
    こされる前記オペレーティングシステムに対するトラッ
    プが、順次、1個以上の計算機命令の前記パッチの実行
    を引き起こす、第1置換モジュールと、 (e)前記選択モジュール及び前記パッチモジュールと
    機能的に結合されていると共に、前記選択済ネイティブ
    計算機命令を、実行時、1個以上の計算機命令の前記パ
    ッチに対する前記集合計算機命令の計算機命令の実行制
    御の移行を引き起こす分岐計算機命令で置換する第2置
    換モジュールと、 (f)前記第1及び第2置換モジュール、及び前記距離
    モジュールと機能的に結合されていると共に、前記第1
    の位置及び前記第2の位置の差が所定の敷居値よりも大
    きい場合には前記第1置換モジュールの実行を引き起こ
    し、また、前記第1の位置と前記第2の位置との差が所
    定の敷居値以下の場合には前記第2置換モジュールの実
    行を引き起こすモード選択モジュールと、を備えるコン
    ピュータ読み取り可能媒体。
  35. 【請求項35】 請求項34に記載のコンピュータ読み
    取り可能媒体において、1個以上の計算機命令の前記パ
    ッチは前記選択済ネイティブ計算機命令を含む、コンピ
    ュータ読み取り可能媒体。
  36. 【請求項36】 請求項34に記載のコンピュータ読み
    取り可能媒体において、前記第1の位置と前記第2の位
    置との差が所定の敷居値よりも大きい場合には、前記選
    択済ネイティブ計算機命令のサイズは前記トラッピング
    計算機命令のサイズと等しく、 さらに、前記第1の位置と前記第2の位置との差が所定
    の敷居値以下の場合には、前記選択済ネイティブ計算機
    命令のサイズは前記分岐計算機命令のサイズと等しい、
    コンピュータ読み取り可能媒体。
  37. 【請求項37】 計算機処理を評価するための装置であ
    って、 コンピュータシステム内で前記計算機処理を実行し得る
    オペレーティングシステムと、 前記計算機処理の選択済ネイティブ計算機命令を、実行
    時に前記オペレーティングシステムに対するトラップを
    引き起こすトラッピング計算機命令で置換するために構
    成されているモジュールと、 1個以上の計算機命令のパッチと、 前記オペレーティングシステムと機能的に結合されると
    共に、前記トラッピング計算機命令の実行により引き起
    こされる前記オペレーティングシステムに対するトラッ
    プに応じて1個以上の計算機命令の前記パッチの実行を
    引き起こすトラップハンドラと、を備える計算機処理評
    価装置。
  38. 【請求項38】 請求項37に記載の装置において、1
    個以上の計算機命令の前記パッチは前記選択済ネイティ
    ブ計算機命令を含む、装置。
  39. 【請求項39】 請求項37に記載の装置において、前
    記選択済ネイティブ計算機命令のサイズは、前記トラッ
    ピング計算機命令のサイズと等しい、装置。
  40. 【請求項40】 計算機処理内の第1の位置から前記計
    算機処理内の第2の位置の目的計算機命令に対して前記
    計算機処理の制御を移行させるための装置であって、 前記第1の位置に選択済特権計算機命令を含むために構
    成されているモジュールと、 その中で前記計算機処理を実行する、前記選択済特権計
    算機命令の実行により引き起こされるオペレーティング
    システムに対するトラップに応じて前記第2計算機命令
    に対して計算機処理の制御を移行させるトラップハンド
    ラと、を備える装置。
  41. 【請求項41】 請求項40に記載の装置において、前
    記選択済特権計算機命令は1バイト長である、装置。
  42. 【請求項42】 請求項40に記載の装置において、前
    記オペレーティングシステムは、 前記トラップが特権計算機命令の実行の試みにより引き
    起こされたか否かを決定するために構成されている第1
    モジュール、 前記トラップが前記選択済特権計算機命令の実行の試み
    により引き起こされたか否かを決定するために構成され
    ている第2モジュール、 前記第2モジュールは、前記トラップハンドラが前記ト
    ラップは特権計算機命令の実行の試みにより引き起こさ
    れたと決定する場合に実行される、装置。
  43. 【請求項43】 請求項40に記載の装置において、前
    記選択済特権計算機命令はホールト計算機命令である、
    装置。
  44. 【請求項44】 計算機処理のトラッピング計算機命令
    の実行の試みが前記計算機処理の制御を前記計算機処理
    内のトラップハンドラに対して移行させると共にオペレ
    ーティングシステムに対するトラップに応じて前記オペ
    レーティングシステムに対する制御の移行が前記計算機
    処理の状態の0個以上の構成要素に影響を及ぼす計算機
    処理において前記オペレーティングシステムに対するプ
    ログラマブルトラップを評価するための装置であって、 前記0個以上の被影響構成要素の各々の状態を表す状態
    データを引き出すために構成されている状態引出モジュ
    ールと、 前記計算機処理によりアクセス可能なメモリ位置に状態
    データを格納するために構成されている状態移行モジュ
    ールと、 前記計算機処理に対して制御を移行させるために構成さ
    れている制御移行モジュールと、を備え、 前記オペレーティングシステムに対するトラップに応じ
    て、前記状態引出モジュール、前記状態移行モジュー
    ル、及び前記制御移行モジュールだけを実質的に実行す
    る装置。
  45. 【請求項45】 請求項44に記載の装置はさらに、 前記トラッピング計算機命令のアドレスを表すトラップ
    サイトデータを引き出すために構成されているトラップ
    サイト引出モジュールと、 前記トラップサイト引出モジュールと機能的に結合され
    ていると共に、前記計算機処理によりアクセス可能な第
    2メモリ位置内に前記トラップサイトデータを格納する
    ために構成されているトラップサイト移行モジュール
    と、を備え、 前記オペレーティングシステムに対するトラップに応じ
    て、前記状態引出モジュール、前記状態移行モジュー
    ル、前記制御移行モジュール、前記トラップサイト引出
    モジュール、及び前記トラップサイト移行モジュールだ
    けを実質的に実行する装置。
  46. 【請求項46】 請求項44に記載の装置において、前
    記状態引出モジュール、前記状態移行モジュール及び前
    記制御移行モジュールは、実行時、実質的に前記0個以
    上の被影響構成要素以外の前記計算機処理の状態に対し
    て変更をもたらさない装置。
  47. 【請求項47】 その各インスタンスが有限数である候
    補値の中の唯一値を有する対象データをキーデータに対
    してマッピングするための装置であって、 対象データの0個以上のインスタンスとキーデータの0
    個以上のインスタンスとの関連付け、及びデフォルト対
    象データとキーデータの0個以上のインスタンス以外の
    有限数である候補値の中の1つとの関連付けを有するデ
    ータベースをコンピュータのメモリ内に備える装置。
  48. 【請求項48】 トラップサイトを計算機処理の1個以
    上計算機命令のパッチに対してマッピングするため装置
    であって、 (a)(i)1個以上の計算機命令の0個以上のパッチ
    と0個以上の各トラップサイトとの関連付け、及び(i
    i)1個以上の計算機命令のデフォルトパッチと前記0
    個以上のトラップサイト以外の前記計算機処理の可能性
    ある全てのトラップサイトとの関連付けを有するパッチ
    データベースをコンピュータのメモリ内に備える装置。
  49. 【請求項49】 請求項48に記載の装置において、前
    記パッチデータベースはさらに、 第1の部分、 1個以上の第2の部分を備え、 さらに前記関連付け(i)は、 前記第1の部分内に前記0個以上のトラップサイトの最
    大有効ビット部分と前記各第2の部分との関連付け、 前記第2の部分内に前記0個以上のトラップサイトの最
    小有効ビット部分と1個以上の計算機命令の0個以上の
    パッチのそれぞれとの関連付けとを備える、装置。
  50. 【請求項50】 請求項49に記載の装置において、前
    記関連付け(ii)は、 デフォルトの前記第1部分内に前記第2部分と前記0個
    以上のトラップサイトの最大有効ビット部分以外の全て
    の最大有効ビット部分との関連付けを、 前記デフォルト第2部分内に前記デフォルトパッチと前
    記計算機処理の全ての可能性あるトラップサイトの最小
    有効ビット部分との関連付けを備える、装置。
  51. 【請求項51】 請求項50に記載の装置において前記
    関連付け(ii)はさらに、 各第2部分内に、前記デフォルトパッチと、前記パッチ
    データベースの前記第2部分に関連付けられている最大
    有効部分を有すると共に前記0個以上のトラップサイト
    とは異なる全ての可能性あるトラップサイトの最小有効
    ビット部分との関連付けを備える、装置。
  52. 【請求項52】 ネイティブ計算機命令の集合を評価す
    るための装置であって、 コンピュータシステム内でネイティブ計算機命令の前記
    集合を実行し得るオペレーティングシステムと、 前記集合のアドレス空間内の第1の位置にてネイティブ
    計算機命令を選択するために構成されている選択モジュ
    ールと、 前記集合のアドレス空間内の第2の位置における1個以
    上の計算機命令のパッチと、 前記選択モジュール及び前記パッチと機能的に結合され
    ていると共に前記第1の位置と前記第2の位置との差を
    決定するために構成されている第1モジュールと、 前記第1モジュールと機能的に結合されていると共に、
    前記第1の位置と前記第2の位置との差が所定の敷居値
    以下の場合には、前記集合の前記選択済ネイティブ計算
    機命令を、実行時、1個以上の計算機命令の前記パッチ
    に対する前記計算機処理の処理の移行を引き起こす分岐
    計算機命令で置換するために構成されている第2モジュ
    ールと、 前記第1モジュールと機能的に結合されていると共に、
    前記第1の位置と前記第2の位置との差が所定の敷居値
    より大きい場合には、前記計算機処理の前記選択済計算
    機命令を、実行時、その中で前記計算機処理を実行する
    前記オペレーティングシステムに対するトラップを引き
    起こすトラッピング計算機命令で置換するために構成さ
    れている第3モジュールと、 前記オペレーティングシステム及び1個以上の計算機命
    令の前記パッチに機能的に結合されていると共に、前記
    トラッピング計算機命令の実行の試みにより引き起こさ
    れる前記オペレーティングシステムに対するトラップに
    応じて1個以上の計算機命令の前記パッチの実行を引き
    起こすために構成されているトラップハンドラと、を備
    える装置。
  53. 【請求項53】 請求項52に記載の装置において、1
    個以上の計算機命令の前記パッチは前記選択済ネイティ
    ブ計算機命令を含んでいる、装置。
  54. 【請求項54】 請求項52に記載の装置において、前
    記第1の位置と前記第2の位置との差が所定の敷居値よ
    りも大きい場合には、前記選択済ネイティブ計算機命令
    のサイズは前記トラッピング計算機命令のサイズと等し
    く、 さらに、前記第1の位置と前記第2の位置との差が所定
    の敷居値以下の場合には、前記選択済ネイティブ計算機
    命令のサイズは前記分岐計算機命令のサイズと等しい、
    装置。
  55. 【請求項55】 プロセッサと、 前記プロセッサと機能的に結合されているメモリと、 前記プロセッサ及び前記メモリに対して機能的に結合さ
    れていると共に前記プロセッサ内で前記メモリからの計
    算機命令の集合を実行し得るオペレーティングシステム
    と、 計算機命令の前記集合のネイティブ計算機命令を、実行
    時に前記オペレーティングシステムに対するトラップを
    引き起こすトラッピング計算機命令で置換するために構
    成されている置換モジュールと、 前記置換モジュールに機能的に結合されていると共に1
    個以上の追加計算機命令のパッチを計算機命令の前記集
    合内に含むために構成されているパッチモジュールとを
    有し、且つ、計算機命令の前記集合を評価するために構
    成されているモジュールと、 計算機命令の前記集合及び前記オペレーティングシステ
    ムに対して機能的に結合されていると共に、前記トラッ
    ピング計算機命令の実行により引き起こされる前記オペ
    レーティングシステムに対するトラップに応じて1個以
    上の追加計算機命令の前記パッチの実行を引き起こすト
    ラップハンドラと、を備えるコンピュータシステム。
  56. 【請求項56】 請求項55に記載のコンピュータシス
    テムにおいて、1個以上の追加計算機命令の前記パッチ
    は前記選択済ネイティブ計算機命令を含む、コンピュー
    タシステム。
  57. 【請求項57】 請求項55に記載のコンピュータシス
    テムにおいて、前記選択済ネイティブ計算機命令のサイ
    ズは前記トラッピング計算機命令のサイズと等しい、コ
    ンピュータシステム。
  58. 【請求項58】 プロセッサと、 前記プロセッサと機能的に結合されているメモリと、 前記プロセッサ及び前記メモリに対して機能的に結合さ
    れていると共に前記プロセッサ内で前記メモリからの計
    算機命令の集合を実行し得るオペレーティングシステム
    と、 第1アドレスに選択済特権計算機命令を有し且つ第2ア
    ドレスに目的計算機命令を有すると共に、前記選択済特
    権計算機命令に実行により引き起こされる前記オペレー
    ティングシステムに対するトラップに応じて前記計算機
    処理の処理制御を前記目的計算機命令に対して移行させ
    るトラップハンドラを有し、更に前記計算機処理の制御
    を移行させるように構成されているモジュールと、を備
    えるコンピュータシステム。
  59. 【請求項59】 請求項58に記載のコンピュータシス
    テムにおいて、前記選択済特権計算機命令は1バイト長
    である、コンピュータシステム。
  60. 【請求項60】 請求項58に記載のコンピュータシス
    テムにおいて、前記オペレーティングシステムは、 前記トラップが特権計算機命令の実行の試みにより引き
    起こされたか否かを決定するために構成されている第1
    モジュール、 前記第1モジュールと機能的に結合されていると共に、
    前記トラップが前記選択済特権計算機命令の実行の試み
    により引き起こされたか否かを決定するために構成され
    ている第2モジュールとを備え、 前記第2モジュールは、前記トラップが特権計算機命令
    の実行の試みにより引き起こされたとする前記第1モジ
    ュールの決定に応じて実行する、コンピュータシステ
    ム。
  61. 【請求項61】 請求項58に記載のコンピュータシス
    テムにおいて、前記選択済特権計算機命令はホールト計
    算機命令である、コンピュータシステム。
  62. 【請求項62】 プロセッサと、 前記プロセッサと機能的に結合されているメモリと、 前記0個以上の被影響構成要素の各々の状態を表す状態
    データを引き出すために構成されている状態引出モジュ
    ールと、 前記計算機処理によりアクセス可能なメモリ位置に状態
    データを格納するために構成されている状態移行モジュ
    ールと、 前記計算機処理に対して制御を移行させるために構成さ
    れている制御移行モジュールとを有すると共に(i)前
    記プロセッサ及び前記メモリに対して機能的に結合さ
    れ、(ii)前記プロセッサ内で前記メモリからの計算機
    命令を実行可能であり、(iii)その中で前記計算機処
    理のトラッピング計算機命令の実行の試みが前記計算機
    処理の制御を前記計算機処理内のトラップハンドラに対
    して移行させると共に、(iv)その中で自身に対するト
    ラップに応じて自身に対する制御の移行が前記計算機処
    理の前記状態の0個以上の構成要素に影響を与える、オ
    ペレーティングシステムと、を備え、 前記オペレーティングシステムに対するトラップに応じ
    て、前記状態引出モジュール、前記状態移行モジュー
    ル、及び前記制御移行モジュールだけを実質的に実行す
    るコンピュータシステム。
  63. 【請求項63】 請求項62に記載のコンピュータシス
    テムにおいて、前記オペレーティングシステムはさら
    に、 前記トラッピング計算機命令のアドレスを表すトラップ
    サイトデータを引き出すために構成されているトラップ
    サイト引出モジュール、 前記トラップサイト引出モジュールと機能的に結合され
    ていると共に、前記計算機処理によりアクセス可能な第
    2メモリ位置内に前記トラップサイトデータを格納する
    ために構成されているトラップサイト移行モジュールと
    を備え、 前記オペレーティングシステムに対するトラップに応じ
    て実質的に、前記状態引出モジュール、前記状態移行モ
    ジュール、前記制御移行モジュール、前記トラップサイ
    ト引出モジュール、及び前記トラップサイト移行モジュ
    ールだけを実行する、コンピュータシステム。
  64. 【請求項64】 請求項62に記載のコンピュータシス
    テムにおいて、前記状態引出モジュール、前記状態移行
    モジュール及び前記制御移行モジュールは、実行時、実
    質的に前記0個以上の被影響構成要素以外の前記計算機
    処理の状態に対して変更をもたらさない、コンピュータ
    システム。
  65. 【請求項65】 (a)プロセッサと、 (b)前記プロセッサと機能的に結合されているメモリ
    と、 (c)前記プロセッサ及び前記メモリに機能的に結合さ
    れていると共に前記プロセッサ内で前記メモリからの計
    算機命令の集合を実行し得るオペレーティングシステム
    と、 (d)その各インスタンスが有限数である候補値の中の
    唯一値を有する対象データをキーデータに対してマップ
    するように構成されているマッピングモジュールであっ
    て、(i)前記メモリ内に格納され、(1)対象データ
    の0個以上のインスタンスとキーデータの0個以上のイ
    ンスタンスとの関連付け、及び(2)デフォルト対象デ
    ータとキーデータの0個以上のインスタンス以外の有限
    数である候補値の中の1つとの関連付けを有するデータ
    ベースを備えたマッピングモジュールと、を備えるコン
    ピュータシステム。
  66. 【請求項66】 プロセッサと、 前記プロセッサと機能的に結合されているメモリと、 前記プロセッサ及び前記メモリに機能的に結合されてい
    ると共に前記プロセッサ内で前記メモリからの計算機命
    令の集合を実行し得るオペレーティングシステムと、 前記計算機処理の1個以上の計算機命令のパッチに対す
    る対してトラップサイトをマップするように構成されて
    いるマッピングモジュールであって、(a)前記メモリ
    内に格納され、(i)1個以上の計算機命令の0個以上
    のパッチと0個以上の各トラップサイトとの関連付け、
    及び(ii)1個以上の計算機命令のデフォルトパッチと
    前記0個以上のトラップサイト以外の前記計算機処理の
    可能性ある全てのトラップサイトとの関連付けを有する
    パッチデータベースを備えたマッピングモジュールと、
    を備えるコンピュータシステム。
  67. 【請求項67】 請求項66に記載のコンピュータシス
    テムにおいて、前記パッチデータベースはさらに、 第1の部分、 1個以上の第2の部分を備え、 さらに前記関連付け(i)は、 前記台の部分内の前記0個以上のトラップサイトの最大
    有効ビット部分と前記各第2の部分との関連付け、 前記第2の部分内の前記0個以上のトラップサイトの最
    小有効ビット部分と1個以上の計算機命令の0個以上の
    パッチのそれぞれとの関連付けとを備える、コンピュー
    タシステム。
  68. 【請求項68】 請求項67に記載のコンピュータシス
    テムにおいて、前記関連付け(ii)は、 デフォルトの前記第1部分内に、前記第2部分と前記0
    個以上のトラップサイトの重大なビット部分以外の全て
    の最大有効ビット部分との関連付けを、 前記デフォルト第2部分内に前記デフォルトパッチと前
    記計算機処理の全ての可能性あるトラップサイトの最小
    有効ビット部分との関連付けを備える、コンピュータシ
    ステム。
  69. 【請求項69】 請求項68に記載のコンピュータシス
    テムおいて前記関連付け(ii)はさらに、 前記各第2部分内に前記デフォルトパッチと前記パッチ
    データベースの第2部分に関連付けられている最大有効
    部分を有すると共に前記0個以上のトラップサイトとは
    異なる全ての可能性あるトラップサイトの最小有効ビッ
    ト部分との関連付けを備える、コンピュータシステム。
  70. 【請求項70】 プロセッサと、 前記プロセッサと機能的に結合されているメモリと、 前記プロセッサ及び前記メモリに対して機能的に結合さ
    れていると共に前記プロセッサ内で前記メモリからの計
    算機命令の集合を実行し得るオペレーティングシステム
    と、 前記オペレーティングシステムに機能的に結合され、計
    算機命令の集合を評価するように構成された評価モジュ
    ールであって、 (a)計算機命令の前記集合内の第1の位置にてネイテ
    ィブ計算機命令を選択するために構成されている選択モ
    ジュール、 (b)前記選択モジュールと機能的に結合されていると
    共に計算機命令の前記集合内の第2の位置にて1個以上
    の追加計算機命令のパッチを内包するように構成されて
    いる内包モジュール、 (c)前記選択モジュール及び前記内包モジュールと機
    能的に結合されていると共に前記第1の位置と前記第2
    の位置との差を決定するために構成されている決定モジ
    ュール、 (d)前記決定モジュールと機能的に結合されていると
    共に、前記第1の位置と前記第2の位置との差が所定の
    敷居値以下の場合には計算機命令の前記集合を、実行
    時、1個以上の計算機命令の前記パッチに対する計算機
    処理の前記集合の実行期間における制御の移行を引き起
    こす分岐計算機命令で置換するために構成されている第
    1置換モジュール、 (e)前記第1モジュールと機能的に結合されていると
    共に、前記第1の位置と前記第2の位置との差が所定の
    敷居値より大きい場合には計算機命令の前記集合の前記
    選択済ネイティブ計算機命令を、実行時、前記オペレー
    ティングシステムに対するトラップを引き起こすトラッ
    ピング計算機命令で置換するために構成されている第2
    置換モジュール、及び (f)前記オペレーティングシステムに機能的に結合さ
    れていると共に、前記トラッピング計算機命令の実行の
    試みにより引き起こされる前記オペレーティングシステ
    ムに対するトラップに応じて1個以上の追加計算機命令
    の前記パッチの実行を引き起こすために構成されている
    トラップハンドラを備える評価モジュールと、を備える
    コンピュータシステム。
  71. 【請求項71】 請求項70に記載のコンピュータシス
    テムにおいて、1個以上の追加計算機命令の前記パッチ
    は前記選択済ネイティブ計算機命令を含む、コンピュー
    タシステム。
  72. 【請求項72】 請求項70に記載のコンピュータシス
    テムにおいて、前記第1の位置と前記第2の位置との差
    が所定の敷居値よりも大きい場合には、前記選択済ネイ
    ティブ計算機命令のサイズは前記トラッピング計算機命
    令のサイズと等しく、 さらに、前記第1の位置と前記第2の位置との差が所定
    の敷居値以下の場合には、前記選択済ネイティブ計算機
    命令のサイズは前記分岐計算機命令のサイズと等しい、
    コンピュータシステム。
JP10003265A 1997-01-09 1998-01-09 コンピュータソフトウェアの評価のための高速トラップ Pending JPH10301807A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/780,777 US6253317B1 (en) 1997-01-09 1997-01-09 Method and apparatus for providing and handling traps
US08/780777 1997-01-09

Publications (1)

Publication Number Publication Date
JPH10301807A true JPH10301807A (ja) 1998-11-13

Family

ID=25120669

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10003265A Pending JPH10301807A (ja) 1997-01-09 1998-01-09 コンピュータソフトウェアの評価のための高速トラップ

Country Status (4)

Country Link
US (1) US6253317B1 (ja)
EP (1) EP0853278A3 (ja)
JP (1) JPH10301807A (ja)
CA (1) CA2226224A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073398A1 (en) * 1998-12-14 2002-06-13 Jeffrey L. Tinker Method and system for modifying executable code to add additional functionality
US6412081B1 (en) * 1999-01-15 2002-06-25 Conexant Systems, Inc. System and method for providing a trap and patch function to low power, cost conscious, and space constrained applications
US20020087949A1 (en) * 2000-03-03 2002-07-04 Valery Golender System and method for software diagnostics using a combination of visual and dynamic tracing
US6701518B1 (en) * 2000-08-03 2004-03-02 Hewlett-Packard Development Company, L.P. System and method for enabling efficient processing of a program that includes assertion instructions
GB2367648B (en) 2000-10-03 2002-08-28 Sun Microsystems Inc Multiple trap avoidance mechanism
US8312435B2 (en) * 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US7292900B2 (en) * 2001-07-13 2007-11-06 Siemens Aktiengesellschaft Power distribution expert system
US7603289B2 (en) 2001-07-13 2009-10-13 Siemens Aktiengesellschaft System and method for electronic delivery of content for industrial automation systems
US6975913B2 (en) 2001-07-13 2005-12-13 Siemens Aktiengesellschaft Database system and method for industrial automation services
US6928449B2 (en) 2001-10-18 2005-08-09 Sun Microsystems, Inc. Mechanism for facilitating backtracking
US6836857B2 (en) * 2001-10-18 2004-12-28 Sun Microsystems, Inc. Mechanism for debugging a computer process
US6993750B2 (en) * 2001-12-13 2006-01-31 Hewlett-Packard Development Company, L.P. Dynamic registration of dynamically generated code and corresponding unwind information
US7017153B2 (en) * 2001-12-13 2006-03-21 Hewlett-Packard Development Company, L.P. Uninstrumenting in-line code instrumentation via stack unwinding and cleanup
US6996810B2 (en) * 2001-12-13 2006-02-07 Hewlett-Packard Development Company, L.P. Lazy and precise update of unwind information for dynamically generated code
US6968547B2 (en) * 2002-01-29 2005-11-22 Sun Microsystems, Inc. Dynamic trap table interposition for efficient collection of trap statistics
FR2838590B1 (fr) * 2002-04-16 2005-12-30 St Microelectronics Sa Procede de routage pour un reseau de telecommunication et routeur pour la mise en oeuvre dudit procede
CA2383832A1 (en) * 2002-04-24 2003-10-24 Ibm Canada Limited-Ibm Canada Limitee System and method for intelligent trap analysis
US7386839B1 (en) 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
US6959262B2 (en) * 2003-02-27 2005-10-25 Hewlett-Packard Development Company, L.P. Diagnostic monitor for use with an operating system and methods therefor
US6889167B2 (en) * 2003-02-27 2005-05-03 Hewlett-Packard Development Company, L.P. Diagnostic exerciser and methods therefor
US7716638B2 (en) * 2005-03-04 2010-05-11 Microsoft Corporation Methods for describing processor features
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US10055251B1 (en) * 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
CN101561764B (zh) * 2009-05-18 2012-05-23 华为技术有限公司 一种多核环境下的补丁方法与补丁装置
US9392017B2 (en) 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
WO2013176711A2 (en) 2012-02-15 2013-11-28 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
US8930743B2 (en) 2012-05-21 2015-01-06 International Business Machines Corporation Preventing cascade failures in computer systems
US10657262B1 (en) 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
US9348671B1 (en) * 2015-07-23 2016-05-24 Google Inc. Monitoring application loading
WO2018071450A1 (en) * 2016-10-11 2018-04-19 Green Hills Software, Inc. Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction
EP4012554B1 (en) * 2020-01-17 2023-10-18 Shenzhen Goodix Technology Co., Ltd. Chip patching method and chip

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4074353A (en) * 1976-05-24 1978-02-14 Honeywell Information Systems Inc. Trap mechanism for a data processing system
US4542453A (en) * 1982-02-19 1985-09-17 Texas Instruments Incorporated Program patching in microcomputer
US4769767A (en) * 1984-01-03 1988-09-06 Ncr Corporation Memory patching system
US4866599A (en) * 1985-06-27 1989-09-12 Bull Hn Information Systems Inc. Call instruction, return instruction and trap procedure for ring crossing architecture
JPS6362039A (ja) * 1986-09-03 1988-03-18 Mitsubishi Electric Corp 計算機
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
US5257358A (en) * 1989-04-18 1993-10-26 Nec Electronics, Inc. Method for counting the number of program instruction completed by a microprocessor
US5093914A (en) * 1989-12-15 1992-03-03 At&T Bell Laboratories Method of controlling the execution of object-oriented programs
US5109504A (en) * 1989-12-29 1992-04-28 Texas Instruments Incorporated Graphics program adaptor
US5278985A (en) * 1990-10-31 1994-01-11 Hewlett-Packard Company Software method for implementing dismissible instructions on a computer
WO1993001547A1 (en) * 1991-07-08 1993-01-21 Seiko Epson Corporation Risc microprocessor architecture implementing fast trap and exception state
ATE192246T1 (de) * 1991-09-23 2000-05-15 Intel Corp Rechnersystem mit software- unterbrechungsbefehlen, das selektiv in einem virtuellen modus arbeitet
US5359730A (en) * 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5710941A (en) * 1995-02-28 1998-01-20 Microsoft Corporation System for substituting protected mode hard disk driver for real mode driver by trapping test transfers to verify matching geometric translation
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US5659679A (en) * 1995-05-30 1997-08-19 Intel Corporation Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system

Also Published As

Publication number Publication date
EP0853278A3 (en) 2002-05-02
CA2226224A1 (en) 1998-07-09
EP0853278A2 (en) 1998-07-15
US6253317B1 (en) 2001-06-26

Similar Documents

Publication Publication Date Title
JPH10301807A (ja) コンピュータソフトウェアの評価のための高速トラップ
US11494287B2 (en) Scalable execution tracing for large program codebases
US5870607A (en) Method and apparatus for selective replay of computer programs
US5611043A (en) Debugger system and method for controlling child processes
US6634020B1 (en) Uninitialized memory watch
US8020154B2 (en) Precise handling of exceptions during program code conversion
KR20210002701A (ko) 교차 레벨 트레이스 매핑을 통한 실행 제어
KR100342802B1 (ko) L1 데이타 캐시 패러티 에러 복구 메카니즘
US11030076B2 (en) Debugging method
US20070250820A1 (en) Instruction level execution analysis for debugging software
US8752020B2 (en) System and process for debugging object-oriented programming code leveraging runtime metadata
US20080301417A1 (en) System and Method for Debugging of Computer
JPH0734178B2 (ja) 変換コードを実行するための効果的エラー報告
KR101103973B1 (ko) 조정가능한 정밀도의 예외 핸들링 수행을 위한 방법 및장치
CN104169889A (zh) 在事务执行模式中的运行时间检测采样
EP3785125B1 (en) Selectively tracing portions of computer process execution
CN104380264A (zh) 运行时间检测报告
US20070169051A1 (en) Identifying Code that Wastes Time Performing Redundant Computation
CN104364769A (zh) 处理器特性的运行时间检测监控
CN104704474A (zh) 用于管理的运行时间的基于硬件的运行时间检测设施
CN104364768A (zh) 确定运行时间仪表控制的状态
US20120110554A1 (en) Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints
US9129062B1 (en) Intercepting subroutine return in unmodified binaries
US20070150866A1 (en) Displaying parameters associated with call statements
KR20070121785A (ko) 프로그램 코드 변환시 정밀한 예외 핸들링을 위한 방법 및장치