JPH01263734A - マルチ・タスク環境における動的リンク識別子供給方法 - Google Patents
マルチ・タスク環境における動的リンク識別子供給方法Info
- Publication number
- JPH01263734A JPH01263734A JP2596589A JP2596589A JPH01263734A JP H01263734 A JPH01263734 A JP H01263734A JP 2596589 A JP2596589 A JP 2596589A JP 2596589 A JP2596589 A JP 2596589A JP H01263734 A JPH01263734 A JP H01263734A
- Authority
- JP
- Japan
- Prior art keywords
- code
- dll
- program
- selector
- application
- 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
Links
- 230000006870 function Effects 0.000 abstract description 32
- 238000000926 separation method Methods 0.000 abstract 1
- 238000000034 method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000011800 void material Substances 0.000 description 6
- 238000002955 isolation Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 101150034533 ATIC gene Proteins 0.000 description 1
- 241001227713 Chiron Species 0.000 description 1
- 102100036466 Delta-like protein 3 Human genes 0.000 description 1
- 102100033553 Delta-like protein 4 Human genes 0.000 description 1
- 101000928513 Homo sapiens Delta-like protein 3 Proteins 0.000 description 1
- 101000872077 Homo sapiens Delta-like protein 4 Proteins 0.000 description 1
- 101100499376 Xenopus laevis dll2 gene Proteins 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 229940127276 delta-like ligand 3 Drugs 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L29/00—Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
- H01L29/02—Semiconductor bodies ; Multistep manufacturing processes therefor
- H01L29/12—Semiconductor bodies ; Multistep manufacturing processes therefor characterised by the materials of which they are formed
- H01L29/20—Semiconductor bodies ; Multistep manufacturing processes therefor characterised by the materials of which they are formed including, apart from doping materials or other impurities, only AIIIBV compounds
- H01L29/201—Semiconductor bodies ; Multistep manufacturing processes therefor characterised by the materials of which they are formed including, apart from doping materials or other impurities, only AIIIBV compounds including two or more compounds, e.g. alloys
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Theoretical Computer Science (AREA)
- Ceramic Engineering (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
A、産業上の利用分野
本発明は総括的にいえば情報処理システムに関するもの
であり、さらに具体的にいえば、情報処理システム用の
オペレーティング・システム及びサブシステム、ならび
に多重ロード可能/実行可能プログラム単位として実現
されるアプリケ−シロンに関するものである。
であり、さらに具体的にいえば、情報処理システム用の
オペレーティング・システム及びサブシステム、ならび
に多重ロード可能/実行可能プログラム単位として実現
されるアプリケ−シロンに関するものである。
B、従来技術
パーソナル−コンピューターシステムの発展の初期には
、そのためのオペレーティング・システムは、たとえば
、周知のスプレッドシート・プログラムの場合における
ように、通常、ただ1つの一般的な機能またはタスクを
実行することを目的とした単一アプリケーションのみを
、システムで実行可能であるといったものであった。し
かし、そのようなシステムに固有な限界から、複数のア
プリケーション・プログラムを同時に実行する機能を備
えることが非常に望ましいことがまもなく明らかになっ
た。この機能は当技術では、「マルチ・タスク」と呼ば
れるものであり、たとえば、ワード・プロセッシング・
プログラム、グラフィック・パッケージなどとともにス
プレッドシート・プログラムが実行される場合を指す。
、そのためのオペレーティング・システムは、たとえば
、周知のスプレッドシート・プログラムの場合における
ように、通常、ただ1つの一般的な機能またはタスクを
実行することを目的とした単一アプリケーションのみを
、システムで実行可能であるといったものであった。し
かし、そのようなシステムに固有な限界から、複数のア
プリケーション・プログラムを同時に実行する機能を備
えることが非常に望ましいことがまもなく明らかになっ
た。この機能は当技術では、「マルチ・タスク」と呼ば
れるものであり、たとえば、ワード・プロセッシング・
プログラム、グラフィック・パッケージなどとともにス
プレッドシート・プログラムが実行される場合を指す。
したがって、所望されるこの機能をサポートする種々の
環境が考案されたが、これらの環境によってアプリケ−
シロンを、多重ロード可能プログラム単位として実行し
、共用ライブラリの出現をうながすことが可能となった
。これらの開発の中で注目スヘきものは、IBM社(7
)IBM O8/2(IBM社の商標)及びAIX(
IBM社の商標)オペレーティング・システム、及びA
T&T社のUNIXCAT&T社の商標)システムを含
む強力なオペレーティング・システム及びサブシステム
の考案であった。
環境が考案されたが、これらの環境によってアプリケ−
シロンを、多重ロード可能プログラム単位として実行し
、共用ライブラリの出現をうながすことが可能となった
。これらの開発の中で注目スヘきものは、IBM社(7
)IBM O8/2(IBM社の商標)及びAIX(
IBM社の商標)オペレーティング・システム、及びA
T&T社のUNIXCAT&T社の商標)システムを含
む強力なオペレーティング・システム及びサブシステム
の考案であった。
上記マルチ・タスク動作環境のあるものの望ましい機能
の1つは、アプリケーション・プログラムがオペレーテ
ィング・システムを破壊するか、さもない場合はオペレ
ーティング・システムに損害を与えることを、オペレー
ティング・システムが防止することである。アプリケ−
シロンまたはサブシステムが、そのアプリケ−シロンに
割り振られていないメモリにアクセスしようとする場合
は、アプリケーションは終了され、その終了が報告され
るようになったシステムが考案された。
の1つは、アプリケーション・プログラムがオペレーテ
ィング・システムを破壊するか、さもない場合はオペレ
ーティング・システムに損害を与えることを、オペレー
ティング・システムが防止することである。アプリケ−
シロンまたはサブシステムが、そのアプリケ−シロンに
割り振られていないメモリにアクセスしようとする場合
は、アプリケーションは終了され、その終了が報告され
るようになったシステムが考案された。
そのようなシステムは通常、保護動作モードを提供する
、新たに開発されたマイクロプロセッサ・ファミリを利
用し、この保護動作モードでは、物理的メモリ・アドレ
スはセレクタ及びオフセットから間接的に計算され、オ
フセットはそれにより上記のメモリ分離を行ない、オペ
レーティング・システムがオペレーティング・システム
に対するアプリケーションによる損傷を防ぐことを可能
にする。そのため、アプリケ−シロンの実行可能コード
に含まれていないセグメントに対する外部参照をアプリ
ケ−シロン・プログラムが「動的連係」を介して行なう
ことを可能にするオペレーティング・システムが考案さ
れた。それらのセグメントに対する参照は、ローダ、す
なわち、ディスクからメモリにプログラムをロードする
責任を負うオペレーティング・システムのカーネルの部
分により、以下で動的リンク・ライブラリ(DLL)と
呼ぶ特別のプログラム・ライブラリで解決された。
、新たに開発されたマイクロプロセッサ・ファミリを利
用し、この保護動作モードでは、物理的メモリ・アドレ
スはセレクタ及びオフセットから間接的に計算され、オ
フセットはそれにより上記のメモリ分離を行ない、オペ
レーティング・システムがオペレーティング・システム
に対するアプリケーションによる損傷を防ぐことを可能
にする。そのため、アプリケ−シロンの実行可能コード
に含まれていないセグメントに対する外部参照をアプリ
ケ−シロン・プログラムが「動的連係」を介して行なう
ことを可能にするオペレーティング・システムが考案さ
れた。それらのセグメントに対する参照は、ローダ、す
なわち、ディスクからメモリにプログラムをロードする
責任を負うオペレーティング・システムのカーネルの部
分により、以下で動的リンク・ライブラリ(DLL)と
呼ぶ特別のプログラム・ライブラリで解決された。
しかし、これらの新しいシステム及びサブシステムは深
刻な問題を伴っていた。上記システムは、従来技術で経
験されたように、アプリケーションがシステムを損傷す
るのを回避することはできたが、それにもかかわらず、
終了を引き起こしたエラーの原因に関するさらに詳細な
指示(たとえば、特定のサブシステムにおける指定され
たロケーション)をプログラマ及びエンド・ユーザが受
は取ることが依然として望まれていた。このことは、デ
バッグのため(プログラマの場合)と、問題をさらに詳
細にそのようなプログラマに報告することが可能である
ようにするため(エンド・ユーザの場合)である。
刻な問題を伴っていた。上記システムは、従来技術で経
験されたように、アプリケーションがシステムを損傷す
るのを回避することはできたが、それにもかかわらず、
終了を引き起こしたエラーの原因に関するさらに詳細な
指示(たとえば、特定のサブシステムにおける指定され
たロケーション)をプログラマ及びエンド・ユーザが受
は取ることが依然として望まれていた。このことは、デ
バッグのため(プログラマの場合)と、問題をさらに詳
細にそのようなプログラマに報告することが可能である
ようにするため(エンド・ユーザの場合)である。
マルチ・タスク・システムによりもたらされた決定的な
利点にもかかわらず、動的リンク・ライブラリを使って
実現されるプログラムに対するさらに詳細なエラー表示
を提供することに関して、少なくとも2つの別個の問題
が本明細書で考察するオペレーティング・システム環境
と関連づけられた。最初に、動的リンク・ライブラリ内
で実現された特定の機能が与えられたとすると、プログ
ラマは、アプリケーションが連係されたとき生成される
マツプを調べて、問題の機能の動的リンク・ライブラリ
内でのオフセットを決定することができた。しかし、プ
ログラマはまた、デバッグのため、ライブラリのコード
・セレクタを決定することができなければならない。し
かし、あいにく、セレクタの割当ては通常は機械に依存
し、アプリケーションの連続的実行に際して変わる。さ
らに、動的リンク・ライブラリ内での実行中にアプリケ
ーション・プログラムがシステムにより終了された場合
は、たとえ、障害状態のプログラムと関連した関連コー
ド・セレクタ及びオフセットがそのような終了時にオペ
レーティング・システムにより表示されたとしても、エ
ンド・ユーザが、問題を開発機構のプログラマに報告し
て、終了を引き起こしている特定の動的リンク・ライブ
ラリが正確に識別できるようにすることが必要であった
。
利点にもかかわらず、動的リンク・ライブラリを使って
実現されるプログラムに対するさらに詳細なエラー表示
を提供することに関して、少なくとも2つの別個の問題
が本明細書で考察するオペレーティング・システム環境
と関連づけられた。最初に、動的リンク・ライブラリ内
で実現された特定の機能が与えられたとすると、プログ
ラマは、アプリケーションが連係されたとき生成される
マツプを調べて、問題の機能の動的リンク・ライブラリ
内でのオフセットを決定することができた。しかし、プ
ログラマはまた、デバッグのため、ライブラリのコード
・セレクタを決定することができなければならない。し
かし、あいにく、セレクタの割当ては通常は機械に依存
し、アプリケーションの連続的実行に際して変わる。さ
らに、動的リンク・ライブラリ内での実行中にアプリケ
ーション・プログラムがシステムにより終了された場合
は、たとえ、障害状態のプログラムと関連した関連コー
ド・セレクタ及びオフセットがそのような終了時にオペ
レーティング・システムにより表示されたとしても、エ
ンド・ユーザが、問題を開発機構のプログラマに報告し
て、終了を引き起こしている特定の動的リンク・ライブ
ラリが正確に識別できるようにすることが必要であった
。
デバッグの問題に対する1つの解決策はソース・レベル
・デバッガである。この−例は、IBM/マイクロソフ
トC用にrcodevievJという商品名でマイクロ
ソフト(Microsoft )社により販売されてい
る製品である。そのようなツールは一般には、プログラ
マが簡略記憶法でコード及びデータを参照するのを可能
にするので、セレクタの値を知ることを不必要にする。
・デバッガである。この−例は、IBM/マイクロソフ
トC用にrcodevievJという商品名でマイクロ
ソフト(Microsoft )社により販売されてい
る製品である。そのようなツールは一般には、プログラ
マが簡略記憶法でコード及びデータを参照するのを可能
にするので、セレクタの値を知ることを不必要にする。
しかし、エンド・ユーザは一般にはソース・コードまた
はデバッガにアクセスしないので、これらのツールは、
問題を報告するエンド・ユーザにとっての問題を解決し
ない。さらに、そのようなソース・レベルのデバッグ・
ツールは版売者の言語に依存しており、使用されている
多数のソース言語のすべてにただちに使用可能なわけで
はない。また、ある特定の問題にとっては、アセンブラ
・レベルのデバッガ(セレクタ値に関する知識を必要と
する)の方が望ましいこともある(必要プログラム資源
がソース・レベルのデバッガの容量を超えるとき、また
はタイミングに依存する問題の場合等)。
はデバッガにアクセスしないので、これらのツールは、
問題を報告するエンド・ユーザにとっての問題を解決し
ない。さらに、そのようなソース・レベルのデバッグ・
ツールは版売者の言語に依存しており、使用されている
多数のソース言語のすべてにただちに使用可能なわけで
はない。また、ある特定の問題にとっては、アセンブラ
・レベルのデバッガ(セレクタ値に関する知識を必要と
する)の方が望ましいこともある(必要プログラム資源
がソース・レベルのデバッガの容量を超えるとき、また
はタイミングに依存する問題の場合等)。
さらに詳細なエラー表示を提供するさらにもう1つの方
法は(特定の動的リンク・ライブラリ・ファイルのため
の特定のセレクタを識別することにより、または、その
代りに、指定されたセレクタからファイルを識別するこ
とにより)、オペレーティング・システムの内部データ
域にアクセスする装置ドライバを書き、次に、ドライバ
から情報を得るためのプログラムを書くことにより実行
することができる。当技術では周知のそのような方法の
1つの問題点は、ドライバを組み立てることは比較的困
難かつ高価であり、退屈な設計、コーディング、及び特
に困難なものとなる可能性があるデバッグを必要とする
。しかし、その上、−層深刻なことには、そのようなド
ライバは、たとえ効果的に設計されたとしても、同じ保
護レベルでオペレーティング・システムと共に動作する
であろう。したがって、ドライバはすべてのシステム・
データ・セグメントにアクセスし、その結果、考察中の
オペレーティング・システム環境の上記利点、すなわち
、メモリ分離はそれによって無効にされる。
法は(特定の動的リンク・ライブラリ・ファイルのため
の特定のセレクタを識別することにより、または、その
代りに、指定されたセレクタからファイルを識別するこ
とにより)、オペレーティング・システムの内部データ
域にアクセスする装置ドライバを書き、次に、ドライバ
から情報を得るためのプログラムを書くことにより実行
することができる。当技術では周知のそのような方法の
1つの問題点は、ドライバを組み立てることは比較的困
難かつ高価であり、退屈な設計、コーディング、及び特
に困難なものとなる可能性があるデバッグを必要とする
。しかし、その上、−層深刻なことには、そのようなド
ライバは、たとえ効果的に設計されたとしても、同じ保
護レベルでオペレーティング・システムと共に動作する
であろう。したがって、ドライバはすべてのシステム・
データ・セグメントにアクセスし、その結果、考察中の
オペレーティング・システム環境の上記利点、すなわち
、メモリ分離はそれによって無効にされる。
C0発明が解決しようとする問題点
したがって、アプリケーションが多重ロード可能プログ
ラム単位として実行されることを可能にする環境で特定
のプログラム単位の識別を可能にし、アプリケーション
・プログラマにより容易かつ簡単に実現されることが可
能な解決策が求められ、強く望まれていた。
ラム単位として実行されることを可能にする環境で特定
のプログラム単位の識別を可能にし、アプリケーション
・プログラマにより容易かつ簡単に実現されることが可
能な解決策が求められ、強く望まれていた。
D0問題点を解決するための手段
本発明は、プログラマが所定のコード・セレクタを、オ
ペレーティング・システム・アプリケーションまたはサ
ブシステム内の特定の動的リンク・ライブラリのための
セレクタとして識別し、さらに、特定の動的リンク・ラ
イブラリが与えられれば、その動的リンク・ライブラリ
のためのコード・セレクタを識別することを可能にする
手法を提供する。
ペレーティング・システム・アプリケーションまたはサ
ブシステム内の特定の動的リンク・ライブラリのための
セレクタとして識別し、さらに、特定の動的リンク・ラ
イブラリが与えられれば、その動的リンク・ライブラリ
のためのコード・セレクタを識別することを可能にする
手法を提供する。
アプリケ−シリンが多重ロード可能プログラム単位を実
行することを可能にするオペレーティング・システム環
境が提供される。システムは保護メモリ・モードで稼働
し、アプリケーション・プログラムが動的リンクを介し
て、アプリケージぼンの実行可能コードに含まれていな
いセグメントを外部的に参照することを可能にする。ア
プリケージ鮪ン・プログラムは、実行時アプリケーシロ
ン・プログラム・インターフェース機能コードを含む特
別なプログラム動的リンク・ライブラリDLLに対する
アプリケーション・プログラム・インターフェース呼出
しにより、これらの外部参照を含む。
行することを可能にするオペレーティング・システム環
境が提供される。システムは保護メモリ・モードで稼働
し、アプリケーション・プログラムが動的リンクを介し
て、アプリケージぼンの実行可能コードに含まれていな
いセグメントを外部的に参照することを可能にする。ア
プリケージ鮪ン・プログラムは、実行時アプリケーシロ
ン・プログラム・インターフェース機能コードを含む特
別なプログラム動的リンク・ライブラリDLLに対する
アプリケーション・プログラム・インターフェース呼出
しにより、これらの外部参照を含む。
システム・カーネルのローダ部分はロード中にDLL内
のセグメントに対するセグメント間参照を解決する。各
アプリケーションは、アプリケ−シロン専用のセグメン
トを含む相関的な局所記述子テーブルLDTを有する。
のセグメントに対するセグメント間参照を解決する。各
アプリケーションは、アプリケ−シロン専用のセグメン
トを含む相関的な局所記述子テーブルLDTを有する。
LDTはまた、使用可能な全セグメントをシステム内の
すべてのタスクにもたらすシステム大域記述子テーブル
GDTの複写を含む。これにより、すべてのシステム・
セグメントに対するアクセスがアプリケ−シロンに提供
される。
すべてのタスクにもたらすシステム大域記述子テーブル
GDTの複写を含む。これにより、すべてのシステム・
セグメントに対するアクセスがアプリケ−シロンに提供
される。
ローダがアプリケ−シロンをロードするとき、対応する
DLLがロードされ、セレクタを割り当てられる。相関
セグメントは、そのセレクタ及びオフセットに対する機
能のアドレスを決定するローダによりGDT及びLDT
に記憶される。同じ機能を参照する後続アプリケ−シロ
ンの外部参照は同じセレクタ及びオフセットに帰着され
る。それによって、マルチ・タスク環境における複数の
アプリケーションは、アプリケージ1ン・プログラム・
インターフェース・コードのコピー1部のみが必要とな
る。
DLLがロードされ、セレクタを割り当てられる。相関
セグメントは、そのセレクタ及びオフセットに対する機
能のアドレスを決定するローダによりGDT及びLDT
に記憶される。同じ機能を参照する後続アプリケ−シロ
ンの外部参照は同じセレクタ及びオフセットに帰着され
る。それによって、マルチ・タスク環境における複数の
アプリケーションは、アプリケージ1ン・プログラム・
インターフェース・コードのコピー1部のみが必要とな
る。
各DLLについて、動的リンク識別機能DLIFがDL
L内の入口点として含まれる。DLIFによって、それ
ぞれのプログラムにおける各DLLごとにセレクタをも
たらすルーチンを呼び出すプログラムを作成することが
可能となる。あるプログラムはそれぞれのセレクタによ
る名前ごとにすべてのDLLを表示する。別のプログラ
ムはアプリケージ冒ンの異常終了時にシステム・カーネ
ルに報告されたセレクタを受は取り、DLL内のセレク
タの番号を含むDLLm別を返す。
L内の入口点として含まれる。DLIFによって、それ
ぞれのプログラムにおける各DLLごとにセレクタをも
たらすルーチンを呼び出すプログラムを作成することが
可能となる。あるプログラムはそれぞれのセレクタによ
る名前ごとにすべてのDLLを表示する。別のプログラ
ムはアプリケージ冒ンの異常終了時にシステム・カーネ
ルに報告されたセレクタを受は取り、DLL内のセレク
タの番号を含むDLLm別を返す。
このようにして、システム・カーネルに対するアプリケ
−シロン・プログラム・インターフェースは所定のDL
Lファイルに対するコード・セレクタを識別するか、ま
たはその代りとして、コード・セレクタを与えられたD
LLファイルを識別する。
−シロン・プログラム・インターフェースは所定のDL
Lファイルに対するコード・セレクタを識別するか、ま
たはその代りとして、コード・セレクタを与えられたD
LLファイルを識別する。
E、実施例
そのメモリ・モデルが当技術で周知のメモリ間接手段を
提供するマイクロプロセッサがある。−例ではあるが、
「保護モード」で動作するインテル社製のよく知られた
2 88/386プロセツサ・ファミリのメモリ・モデ
ルはそのようなメモリ間接手段を提供する。第1図を参
照すると、保護モードは、以下のように、この点で「実
モード」から区別されている。
提供するマイクロプロセッサがある。−例ではあるが、
「保護モード」で動作するインテル社製のよく知られた
2 88/386プロセツサ・ファミリのメモリ・モデ
ルはそのようなメモリ間接手段を提供する。第1図を参
照すると、保護モードは、以下のように、この点で「実
モード」から区別されている。
a、実モードでは、物理アドレス1は「セグメント」2
(メモリの開始ロケーションを識別する)及び「オフセ
ット」3(開始ロケーションからのバイト数を識別する
)から直接計算される。
(メモリの開始ロケーションを識別する)及び「オフセ
ット」3(開始ロケーションからのバイト数を識別する
)から直接計算される。
b、保護モードでは、物理アドレス4は、実質的にテー
ブル6へのインデックスであるセレクタ5とオフセット
7から間接的に計算される。
ブル6へのインデックスであるセレクタ5とオフセット
7から間接的に計算される。
セレクタに対するテーブル項目はアドレス計算のための
メモリの開始ロケーションを識別する。
メモリの開始ロケーションを識別する。
保護モードは、以下でさらに詳細に説明する本発明に関
連した幾つかの利点をもたらすが、これらの利点の中に
は、アプリケーションがシステムに損害を与えるのを防
止するメモリ分離がある。
連した幾つかの利点をもたらすが、これらの利点の中に
は、アプリケーションがシステムに損害を与えるのを防
止するメモリ分離がある。
システム内のすべてのタスクにとって使用可能なすべて
のセグメントに対して使用されるテーブル6を、大域記
述テーブル(GDT)と呼ぶ。IBM社のO8/2オペ
レーテイング・システムのシステム・アーキテクチャ構
造を示す第2図を参照すると、アプリケーションはアプ
リケ−シロン・プログラム・インターフェース(API
)11を使って、オペレーティング・システムにアクセ
スする。このシステムは、マルチ・タスク及び動的リン
ク機能を特徴とするオペレーティング・システムを示す
ものであり、その他の例には、AIX及び幾つかのバー
ジロンのUNIXがある。以下で使用されるオペレーテ
ィング・システムという用語はこのようなシステムを指
すものである。したがって、本発明の1実施例を説明す
るためO8/2オペレーテイング・システムの詳細を本
明細書で用いるかもしれないが、本発明はこれに限定さ
れるものではなく、その他のオペレーティング・システ
ムに対する広範な適用を意図するものであることを理解
すべきである。O8/2オペレーテイング・システムに
ついてのこれ以上の詳細は、引用により本明細書に組み
込まれたEd IacobucciのOS/2 Pro
grammer’s Guide1マグロ−ヒル、19
88年から得ることができる。
のセグメントに対して使用されるテーブル6を、大域記
述テーブル(GDT)と呼ぶ。IBM社のO8/2オペ
レーテイング・システムのシステム・アーキテクチャ構
造を示す第2図を参照すると、アプリケーションはアプ
リケ−シロン・プログラム・インターフェース(API
)11を使って、オペレーティング・システムにアクセ
スする。このシステムは、マルチ・タスク及び動的リン
ク機能を特徴とするオペレーティング・システムを示す
ものであり、その他の例には、AIX及び幾つかのバー
ジロンのUNIXがある。以下で使用されるオペレーテ
ィング・システムという用語はこのようなシステムを指
すものである。したがって、本発明の1実施例を説明す
るためO8/2オペレーテイング・システムの詳細を本
明細書で用いるかもしれないが、本発明はこれに限定さ
れるものではなく、その他のオペレーティング・システ
ムに対する広範な適用を意図するものであることを理解
すべきである。O8/2オペレーテイング・システムに
ついてのこれ以上の詳細は、引用により本明細書に組み
込まれたEd IacobucciのOS/2 Pro
grammer’s Guide1マグロ−ヒル、19
88年から得ることができる。
オペレーティング・システム拳カーネル・コード15及
び共通サブシステム・サービス13に対するAPIのた
め必要とされるセグメントが、GDTに含まれている。
び共通サブシステム・サービス13に対するAPIのた
め必要とされるセグメントが、GDTに含まれている。
オペレーティング・システムを拡張可能に設計する1つ
の方法は、アプリケーシロン10がそれら自体のサブシ
ステム14を書いて、それらのAP112をオペレーテ
ィング・システムの論理的拡張部分にすることができる
ようにすることである。これらのサブシステムにとって
必要なセグメントもGDTに含まれる。
の方法は、アプリケーシロン10がそれら自体のサブシ
ステム14を書いて、それらのAP112をオペレーテ
ィング・システムの論理的拡張部分にすることができる
ようにすることである。これらのサブシステムにとって
必要なセグメントもGDTに含まれる。
オペレーティング・システムでは、ハード−ファイル等
の他の媒体からメモリにプログラムをロードする責任を
負うシステム・カーネルの部分を、ローダと呼ぶ。オペ
レーティング・システムは、アプリケ−シロン・プログ
ラムが、アプリケ−シロンの実行可能コード(EXEフ
ァイル)に含まれていないセグメントに対して「動的リ
ンク」を介して外部参照を行なうことを可能にする。ロ
ーダは、動的リンク・ライブラリ(DLL)と呼ばれる
特別なプログラム・ライブラリに含まれたセグメントに
対する参照を解決することができる。API(及びその
拡張部分)全体は動的リンクに基づく。実行時APIコ
ード全体はDLLに含まれる。DLLに対する外部参照
(たとえば、API呼出し)を含むプログラムをロード
する場合、ローダはセグメント間の参照を解決する。好
ましい実施例における各アプリケ−シロンは、そのアプ
リケーション専用のセグメントを含む、局所記述子テー
ブル(LDT)と呼ばれるそれ自体の記述子テーブル、
ならびにシステム・セグメントに対するアプリケ−シロ
ン・アクセスをもたらすGDTの複写ををする。
の他の媒体からメモリにプログラムをロードする責任を
負うシステム・カーネルの部分を、ローダと呼ぶ。オペ
レーティング・システムは、アプリケ−シロン・プログ
ラムが、アプリケ−シロンの実行可能コード(EXEフ
ァイル)に含まれていないセグメントに対して「動的リ
ンク」を介して外部参照を行なうことを可能にする。ロ
ーダは、動的リンク・ライブラリ(DLL)と呼ばれる
特別なプログラム・ライブラリに含まれたセグメントに
対する参照を解決することができる。API(及びその
拡張部分)全体は動的リンクに基づく。実行時APIコ
ード全体はDLLに含まれる。DLLに対する外部参照
(たとえば、API呼出し)を含むプログラムをロード
する場合、ローダはセグメント間の参照を解決する。好
ましい実施例における各アプリケ−シロンは、そのアプ
リケーション専用のセグメントを含む、局所記述子テー
ブル(LDT)と呼ばれるそれ自体の記述子テーブル、
ならびにシステム・セグメントに対するアプリケ−シロ
ン・アクセスをもたらすGDTの複写ををする。
上記より、要するに、API機能のための実行時コード
がDLLに含まれていることに、留意されたい。このよ
うなAPI機能の例には、ファイルの読取り及び書込み
がある。アプリケ−シロンがこの機能に対する呼出しを
含んでいる場合、アプリケーションのEXEファイルは
この機能に対する外部参照のみを含む。ローダがこのア
プリケージ1ンをロードするときは、必要に応じ、DL
Lをもロードしくそれにセレクタを割り当て、実際のセ
グメントをGDT及びLDTに記憶する)、機能のアド
レスをそのセレクタ及びオフセットに分解する。同じ機
能を参照する後続のアプリケーションは、それらの外部
参照を同じセレクタ及びオフセットに分解させる。した
がって、マルチ・タスク環境におけるすべてのアプリケ
ーションに必要なのは、APIコードのコピー1つのみ
となる。
がDLLに含まれていることに、留意されたい。このよ
うなAPI機能の例には、ファイルの読取り及び書込み
がある。アプリケ−シロンがこの機能に対する呼出しを
含んでいる場合、アプリケーションのEXEファイルは
この機能に対する外部参照のみを含む。ローダがこのア
プリケージ1ンをロードするときは、必要に応じ、DL
Lをもロードしくそれにセレクタを割り当て、実際のセ
グメントをGDT及びLDTに記憶する)、機能のアド
レスをそのセレクタ及びオフセットに分解する。同じ機
能を参照する後続のアプリケーションは、それらの外部
参照を同じセレクタ及びオフセットに分解させる。した
がって、マルチ・タスク環境におけるすべてのアプリケ
ーションに必要なのは、APIコードのコピー1つのみ
となる。
マルチ・タスク・オペレーティング環境の望ましい機能
の1つは、アプリケ−シロン・プログラムがシステムを
破壊できないことである。保護モードはメモリ分離をも
たらすので、オペレーティング・システムは、アプリケ
ーションがシステムに損害を与えるのを防ぐことができ
る。アプリケーション(またはサブシステム)が、その
アプリケーションに割り振られていないメモリにアクセ
スしようとすると、システムはそのアプリケーションを
終了し、問題を訂正するため使用することができる情報
と共に保護違反を報告する。この情報は、他の項目と共
に、プログラムが違法動作を試みたコード・セレクタ及
びオフセットを含んでいる。
の1つは、アプリケ−シロン・プログラムがシステムを
破壊できないことである。保護モードはメモリ分離をも
たらすので、オペレーティング・システムは、アプリケ
ーションがシステムに損害を与えるのを防ぐことができ
る。アプリケーション(またはサブシステム)が、その
アプリケーションに割り振られていないメモリにアクセ
スしようとすると、システムはそのアプリケーションを
終了し、問題を訂正するため使用することができる情報
と共に保護違反を報告する。この情報は、他の項目と共
に、プログラムが違法動作を試みたコード・セレクタ及
びオフセットを含んでいる。
アプリケ−シロンをオペレーティング・システムに対す
る拡張として実現する能力は、そのような問題をコード
で訂正しなければならないプログラマに対してジレンマ
を生じる。アプリケーション・−プログラムが終了され
た場合、アプリケ−シロンが連係されたとき生成される
マツプを使って、アプリケ−シリンの該当するコード・
セグメントに、コード・セレクタを容易にマツプするこ
とができる。これは、アプリケ−シロンが実行されるた
びに、アプリケージぼンにとって局所的なセグメントに
同じセレクタが割り当てられるからである。しかし、D
LLに対するセレクタは容易に特定のプログラムと関連
づけられず、実際には、アプリケーションが実行される
たびに異なる可能性がある。
る拡張として実現する能力は、そのような問題をコード
で訂正しなければならないプログラマに対してジレンマ
を生じる。アプリケーション・−プログラムが終了され
た場合、アプリケ−シロンが連係されたとき生成される
マツプを使って、アプリケ−シリンの該当するコード・
セグメントに、コード・セレクタを容易にマツプするこ
とができる。これは、アプリケ−シロンが実行されるた
びに、アプリケージぼンにとって局所的なセグメントに
同じセレクタが割り当てられるからである。しかし、D
LLに対するセレクタは容易に特定のプログラムと関連
づけられず、実際には、アプリケーションが実行される
たびに異なる可能性がある。
本明細書で考察しているオペレーティング・システム環
境では、DLLを使用して実現されたプログラムに対し
て、開発機構に現われる2つの異なる問題がある。
境では、DLLを使用して実現されたプログラムに対し
て、開発機構に現われる2つの異なる問題がある。
1、DLL内に特定の機能が与えられた場合、プログラ
マはマツプを調べ、その機能のDLL内のオフセットを
見つけることができる。しかし、プログラマはまた、デ
バッグのためDLLのコード・セレクタを判別しなけれ
ばならない。セレクタの割当ては機械により、さらには
、アプリケージ目ンの連続的実行で変わることに留意さ
れたい。
マはマツプを調べ、その機能のDLL内のオフセットを
見つけることができる。しかし、プログラマはまた、デ
バッグのためDLLのコード・セレクタを判別しなけれ
ばならない。セレクタの割当ては機械により、さらには
、アプリケージ目ンの連続的実行で変わることに留意さ
れたい。
2、DLL内での実行中に、プログラムがシステムによ
り終了された場合、終了が行なわれたときにコード・セ
レクタ及びオフセットがオペレーティング・システムに
より表示されるか、または他の方法で示されるとすると
、顧客は、どのDLLから終了が生じたかを正確に識別
するような方法で、問題をプログラマに報告することが
できなければならない。
り終了された場合、終了が行なわれたときにコード・セ
レクタ及びオフセットがオペレーティング・システムに
より表示されるか、または他の方法で示されるとすると
、顧客は、どのDLLから終了が生じたかを正確に識別
するような方法で、問題をプログラマに報告することが
できなければならない。
これらの問題を解決するための1つの方法は、特定のD
LLファイルに対するセレクタを識別するため、または
セレクタを与えられたDLLファイルを識別するため、
システム・カーネルがAPIを提供することである。オ
ペレーティング・システムに本来備わったそのような機
能がなくても、情報を判別するためオペレーティング・
システムの内部領域にアクセスする装置ドライバを作成
し、次に装置ドライバから情報を得るためのプログラム
を作成することにより、プログラマはその機能を提供す
ることができる。しかし、装置ドライバを作成すること
は非常に単調な作業であり、コードは特にデバッグが困
難である。さらに、そのような装置ドライバはオペレー
ティング・システム自体と同じ保護レベルで働き、した
がって、すべてのシステム・データ・セグメントにアク
セスし、システムのメモリ分離を弱体化の危険にさらす
ことになる。どのようなプログラマでもアプリケ−シロ
ンについて実現することができる簡単な解決策が一層望
ましい。
LLファイルに対するセレクタを識別するため、または
セレクタを与えられたDLLファイルを識別するため、
システム・カーネルがAPIを提供することである。オ
ペレーティング・システムに本来備わったそのような機
能がなくても、情報を判別するためオペレーティング・
システムの内部領域にアクセスする装置ドライバを作成
し、次に装置ドライバから情報を得るためのプログラム
を作成することにより、プログラマはその機能を提供す
ることができる。しかし、装置ドライバを作成すること
は非常に単調な作業であり、コードは特にデバッグが困
難である。さらに、そのような装置ドライバはオペレー
ティング・システム自体と同じ保護レベルで働き、した
がって、すべてのシステム・データ・セグメントにアク
セスし、システムのメモリ分離を弱体化の危険にさらす
ことになる。どのようなプログラマでもアプリケ−シロ
ンについて実現することができる簡単な解決策が一層望
ましい。
この実施例では、プログラムの各DLLについて、動的
リンク識別機能(DL I F)と呼ばれるDLL内の
入口点である機能が含まれる(この機能はDLLにより
伝えられる)。これらの機能の各々は次のように定義さ
れる。
リンク識別機能(DL I F)と呼ばれるDLL内の
入口点である機能が含まれる(この機能はDLLにより
伝えられる)。これらの機能の各々は次のように定義さ
れる。
char far 零far pascal fn (
void);次の表1は本発明の動的リンク識別機能の
Cプログラミング言語のソース・コードである。
void);次の表1は本発明の動的リンク識別機能の
Cプログラミング言語のソース・コードである。
表 1
1 ff1nclude <dos、h>2
int getsel (void);35tatic
void du+u+y (void);4 cha
r far * far pascal fn 06i
nt rcニ ア void (:fp)0 =dummy;8
rc = getsel 0 9 FP 0FF(fp) =((re −FP 5
EG(fp)) )> 4) ÷1;10 retu
rn ((char far :) fp);125t
atic void du+amy 013〔 表1において、行1は、以下に示すように、Cポインタ
のオフセット及びセレクタ部分を判別するためのマクロ
を定義するオペレーティング・システム・ヘッダ・ファ
イルを示す。
int getsel (void);35tatic
void du+u+y (void);4 cha
r far * far pascal fn 06i
nt rcニ ア void (:fp)0 =dummy;8
rc = getsel 0 9 FP 0FF(fp) =((re −FP 5
EG(fp)) )> 4) ÷1;10 retu
rn ((char far :) fp);125t
atic void du+amy 013〔 表1において、行1は、以下に示すように、Cポインタ
のオフセット及びセレクタ部分を判別するためのマクロ
を定義するオペレーティング・システム・ヘッダ・ファ
イルを示す。
#define FP 5EG(fp) (零((un
signed零)&(fp) +1))udefine
FP 0FF(fp) (*((unsigned
:)&(fp)))次の表2は、そのコード・セレクタ
を返す機能の、アセンブラ・コードによるソース・コー
ドである。
signed零)&(fp) +1))udefine
FP 0FF(fp) (*((unsigned
:)&(fp)))次の表2は、そのコード・セレクタ
を返す機能の、アセンブラ・コードによるソース・コー
ドである。
表 2
text segment byte public
’C0DE’text ends assume cs: text text segment public getsel getsel proc far push as pop ax et getsel endp text ends nd 機能の実現態様を示す表1をさらに参照すると、行2は
機能getse lを宣言し、この機能は表2で、その
コード・セレクタ(CSレジスタ)を返すアセンブラ言
語ルーチンとして定義され、実現されている。行3は、
行12−14で定義されるダミー機能を宣言する。行4
はDLIF機能自体を、DLL内への入口点として必要
とされるものとして、かつ4バイトのfarポインタ
(fp)を返すものとして定義する。行7はfpを、機
能を指すポインタとして宣言し、f’l)はDLIFの
直後のダミー機能のアドレスにセットされる。このこと
によって、ポインタfPのセレクタ部分はDLIFのセ
レクタを含むようになるが、このセレクタはDLLの最
初のセレクタと等しいものでなければならない。行8で
、rcにはgetse 1機能のセレクタが割り当てら
れるが、このセレクタはDLLの最後のセレクタでなけ
ればならない。行9で、getse1機能に対するセレ
クタとDLIF機能に労するセレクタの間の差を16で
除算し、1を加算することにより、DLLに対するコー
ド・セレクタの数が計算される。この数は、DLIFを
指すポインタ内のオフセットの代りに記憶される。
’C0DE’text ends assume cs: text text segment public getsel getsel proc far push as pop ax et getsel endp text ends nd 機能の実現態様を示す表1をさらに参照すると、行2は
機能getse lを宣言し、この機能は表2で、その
コード・セレクタ(CSレジスタ)を返すアセンブラ言
語ルーチンとして定義され、実現されている。行3は、
行12−14で定義されるダミー機能を宣言する。行4
はDLIF機能自体を、DLL内への入口点として必要
とされるものとして、かつ4バイトのfarポインタ
(fp)を返すものとして定義する。行7はfpを、機
能を指すポインタとして宣言し、f’l)はDLIFの
直後のダミー機能のアドレスにセットされる。このこと
によって、ポインタfPのセレクタ部分はDLIFのセ
レクタを含むようになるが、このセレクタはDLLの最
初のセレクタと等しいものでなければならない。行8で
、rcにはgetse 1機能のセレクタが割り当てら
れるが、このセレクタはDLLの最後のセレクタでなけ
ればならない。行9で、getse1機能に対するセレ
クタとDLIF機能に労するセレクタの間の差を16で
除算し、1を加算することにより、DLLに対するコー
ド・セレクタの数が計算される。この数は、DLIFを
指すポインタ内のオフセットの代りに記憶される。
行10で、DLIFのセレクタを依然として含み、DL
Lに対するコード・セレクタの数を含むために変更され
た変数fpが、呼出しプログラムに返される。
Lに対するコード・セレクタの数を含むために変更され
た変数fpが、呼出しプログラムに返される。
アプリケージ騨ン(すなわち、EXEファイル)または
動的リンク・ライブラリ(すなわち、DLLファイル)
をリンクした場合、リンク処理が中力内のモジュールの
配列の指定を可能にすることを、想起されたい。
動的リンク・ライブラリ(すなわち、DLLファイル)
をリンクした場合、リンク処理が中力内のモジュールの
配列の指定を可能にすることを、想起されたい。
DLIFを含むモジュールがDLLに対するリンク・リ
ストの最初のモジュールであれば、DLLに対するコー
ド・セレクタの数が正確に返され、getsel ルー
チンがライブラリから静的に連係され、以下によりコー
ド化される。
ストの最初のモジュールであれば、DLLに対するコー
ド・セレクタの数が正確に返され、getsel ルー
チンがライブラリから静的に連係され、以下によりコー
ド化される。
text segment t+yte public
’C0DE’第3図を参照すると、これはDLIF機
能27を強制的にDLL2Bに対する最初のコード・セ
グメントにする。DLLがローダによりロードされると
きは、DLL21に対する最初のセレクタが割り当てら
れる。リンク処理はまた、getse1機能29をDL
L28に対する最後のコード・セグメントにおける他の
Cライブラリ機能とともに存在させる。DLLがローダ
によりロードされるときは、DLL23に対する最後の
セレクタが割り当てられる。他のセレクタは増分量16
で、中間でローダにより順次割り当てられる(この例で
はコード・セグメント225として)。第3図に示すよ
うに、実メモリ24におけるDLLのコードの物理的ロ
ケーションにかかわらず、入城記述子テーブル20にお
けるコード・セレクタの割当てはこのとき、DLLのす
べてのコード・セグメントを識別するため使用すること
ができる。本発明は、コード・セレクタを割り当てる方
法に限定されることを意図するものではなく、連続した
コード・セレクタを増分量8で割り当てる方法等の他の
方法が使用されるようになったローダを目的とするもの
であることを理解すべきである。さらに、本発明は、説
明したリンク処理に限定されることを意図するものでは
なく、他のある処理(セグメント名によりセグメントの
順序を明示的に指定するといった)が必要とされるリン
カを目的とするものである。
’C0DE’第3図を参照すると、これはDLIF機
能27を強制的にDLL2Bに対する最初のコード・セ
グメントにする。DLLがローダによりロードされると
きは、DLL21に対する最初のセレクタが割り当てら
れる。リンク処理はまた、getse1機能29をDL
L28に対する最後のコード・セグメントにおける他の
Cライブラリ機能とともに存在させる。DLLがローダ
によりロードされるときは、DLL23に対する最後の
セレクタが割り当てられる。他のセレクタは増分量16
で、中間でローダにより順次割り当てられる(この例で
はコード・セグメント225として)。第3図に示すよ
うに、実メモリ24におけるDLLのコードの物理的ロ
ケーションにかかわらず、入城記述子テーブル20にお
けるコード・セレクタの割当てはこのとき、DLLのす
べてのコード・セグメントを識別するため使用すること
ができる。本発明は、コード・セレクタを割り当てる方
法に限定されることを意図するものではなく、連続した
コード・セレクタを増分量8で割り当てる方法等の他の
方法が使用されるようになったローダを目的とするもの
であることを理解すべきである。さらに、本発明は、説
明したリンク処理に限定されることを意図するものでは
なく、他のある処理(セグメント名によりセグメントの
順序を明示的に指定するといった)が必要とされるリン
カを目的とするものである。
DLIFは、これらのルーチンを呼び出し、プログラム
内のDLLの各々に対するセレクタを得るアプリケーシ
ョン・プログラムを作成することを可能にする。
内のDLLの各々に対するセレクタを得るアプリケーシ
ョン・プログラムを作成することを可能にする。
次の表3は、−組の動的リンク・ライブラリのコード・
セレクタを識別するための本発明の動作の流れ図である
。
セレクタを識別するための本発明の動作の流れ図である
。
表 3
Display code 5electors of
DLLsFor each DLL in the
programCall the DLIF of t
he DLL to obtain thefirst
code selector add the number o
fcode 5eBents For each code segment of
the DLLDisplay the code 5
electorIncre+*ent the cod
e 5elector by 16Decrement
the nu+aber of 5elec
tors t。
DLLsFor each DLL in the
programCall the DLIF of t
he DLL to obtain thefirst
code selector add the number o
fcode 5eBents For each code segment of
the DLLDisplay the code 5
electorIncre+*ent the cod
e 5elector by 16Decrement
the nu+aber of 5elec
tors t。
display
ndfor
ndfor
表3を参照すると、ここに示したようなプログラムを作
成し、すべてのDLLをそれらのそれぞれのセレクタに
より名前ごとに表示することができる。
成し、すべてのDLLをそれらのそれぞれのセレクタに
より名前ごとに表示することができる。
次の表4は、表3に記載した機能の実施例の出力の画面
表示である。プログラムの画面出力を表4に示す。
表示である。プログラムの画面出力を表4に示す。
表 4
Selectors for DLLI are 5C
75D7Selector for DLL2 is
777Selector for DLL3 is B
17Selector for DLL4 is B1
7Selectors for DLL5 are B
87 B97Selector for DLL6 i
s B17Selector for DLL7 is
B17Selector for DLL8 is
C07Selector for DLL9 is C
67Selectors for DLLIOare
C87C97C07Selector for DLL
II is CC75elector for DLL
I2 is C07Selector for DLL
I3 is D87Selector for DLL
I4 is D47Selector for DLL
I5 is D17次の表5は、コード・セレクタを与
えられた動的リンク・ライブラリを識別するための本発
明の動作の流れ図である。
75D7Selector for DLL2 is
777Selector for DLL3 is B
17Selector for DLL4 is B1
7Selectors for DLL5 are B
87 B97Selector for DLL6 i
s B17Selector for DLL7 is
B17Selector for DLL8 is
C07Selector for DLL9 is C
67Selectors for DLLIOare
C87C97C07Selector for DLL
II is CC75elector for DLL
I2 is C07Selector for DLL
I3 is D87Selector for DLL
I4 is D47Selector for DLL
I5 is D17次の表5は、コード・セレクタを与
えられた動的リンク・ライブラリを識別するための本発
明の動作の流れ図である。
表 5
Identify DLL for a given
code 5electorFor each D
LL in the programCall
the DLIF of the DLL to ob
tain thefirst code 5elect
or and the numberof code
segments Initialize the number of
the code segmentwithin th
e DLL to IFor each code s
egment of the DLLIf the g
iven code 5elector is equ
al t。
code 5electorFor each D
LL in the programCall
the DLIF of the DLL to ob
tain thefirst code 5elect
or and the numberof code
segments Initialize the number of
the code segmentwithin th
e DLL to IFor each code s
egment of the DLLIf the g
iven code 5elector is equ
al t。
the DLL code 5electorDisp
lay the DLL nameDisplay t
he number of the code seg
mentwithin the DLL Exit the 1oop lse Increment the DLL code
5elector by 16Increme
nt the number of the
code segmentwithin the
DLL Decrement the number o
f 5electors to testndi
f ndfor 上記の表5に示すようなもう1つのプログラムを作成す
ることができるが、このプログラムは、アプリケ−シロ
ンが異常終了されたとき、システム・カーネルにより報
告されたセレクタを受は取り、DLL内のセレクタの数
を含むDLLm別を返すものである。このプログラムを
使用するときは、終了されたアプリケージ1ンと同じD
LLセットを参照する別のアプリケーションを同時に(
異常終了が発生したとき)実行することが必要である。
lay the DLL nameDisplay t
he number of the code seg
mentwithin the DLL Exit the 1oop lse Increment the DLL code
5elector by 16Increme
nt the number of the
code segmentwithin the
DLL Decrement the number o
f 5electors to testndi
f ndfor 上記の表5に示すようなもう1つのプログラムを作成す
ることができるが、このプログラムは、アプリケ−シロ
ンが異常終了されたとき、システム・カーネルにより報
告されたセレクタを受は取り、DLL内のセレクタの数
を含むDLLm別を返すものである。このプログラムを
使用するときは、終了されたアプリケージ1ンと同じD
LLセットを参照する別のアプリケーションを同時に(
異常終了が発生したとき)実行することが必要である。
表3に記載したプログラムをこのために使用することが
できる。このことは、表5に記載したプログラムが実行
されているときは、DLLに割り当てられたセレクタは
解放及び再割当てされないことを保証する。上述した本
発明の機能は問題解決及びデバッグの際にプログラム開
発者によっておおいに有益であることは明らかであろう
。
できる。このことは、表5に記載したプログラムが実行
されているときは、DLLに割り当てられたセレクタは
解放及び再割当てされないことを保証する。上述した本
発明の機能は問題解決及びデバッグの際にプログラム開
発者によっておおいに有益であることは明らかであろう
。
第4図には、前述のアルゴリズムの機能を提供するコン
ピュータ・プログラムを実行するため使用されて、本発
明のシステムを実現することが可能な処理装置のブロッ
ク・ダイヤグラムが示されている。システムは、IBM
パーソナル・システム/2で具現化されているような典
型的なパーソナル・コンピュータ・アーキテクチャの形
を取ることが好ましい。このシステム30に関連して、
インテル80286または80386デバイス等のマイ
クロプロセッサ32が設けられ、マイクロプロセッサ3
2はバス42により入出力装置34、ROM38、メモ
リ38及び媒体40の内の所望のものに結合される。バ
ス42は通常の態様で、当技術で周知の目的のためアド
レス、コマンド及びデータ線からなることが理解される
であろう。
ピュータ・プログラムを実行するため使用されて、本発
明のシステムを実現することが可能な処理装置のブロッ
ク・ダイヤグラムが示されている。システムは、IBM
パーソナル・システム/2で具現化されているような典
型的なパーソナル・コンピュータ・アーキテクチャの形
を取ることが好ましい。このシステム30に関連して、
インテル80286または80386デバイス等のマイ
クロプロセッサ32が設けられ、マイクロプロセッサ3
2はバス42により入出力装置34、ROM38、メモ
リ38及び媒体40の内の所望のものに結合される。バ
ス42は通常の態様で、当技術で周知の目的のためアド
レス、コマンド及びデータ線からなることが理解される
であろう。
本発明のシステム30に備えることができる入出力B置
34はIBMパーソナル・システム・カラー表示装置8
510等の表示装置、キーボード、ユーザ入力用のマウ
ス等、及び必要に応じ、印刷装置を含むことができる。
34はIBMパーソナル・システム・カラー表示装置8
510等の表示装置、キーボード、ユーザ入力用のマウ
ス等、及び必要に応じ、印刷装置を含むことができる。
簡単のため第4図からアダプタが省略されているが、そ
れぞれの装置34−40のためのそのようなアダプタは
IBMパーソナル・システム/2の一部として含めるこ
とも、または、IBM社からのプラグ・イン・オプショ
ンとして入手することができることも理解されるであろ
う。
れぞれの装置34−40のためのそのようなアダプタは
IBMパーソナル・システム/2の一部として含めるこ
とも、または、IBM社からのプラグ・イン・オプショ
ンとして入手することができることも理解されるであろ
う。
読取り専用メモリすなわちROM38内には、基本人出
力オペレーティング・システムすなわちBIO8が記憶
されており、プロセッサ32によって実行される。BI
O8は周知のようにコンピュータ・システム30の基本
動作を制御する。さらに、O8/2等のオペレーティン
グ・システム44が設けられており、オペレーティング
・システム44はメモリ38にロードされ、ROM3B
のBIO8と関連して実行される。
力オペレーティング・システムすなわちBIO8が記憶
されており、プロセッサ32によって実行される。BI
O8は周知のようにコンピュータ・システム30の基本
動作を制御する。さらに、O8/2等のオペレーティン
グ・システム44が設けられており、オペレーティング
・システム44はメモリ38にロードされ、ROM3B
のBIO8と関連して実行される。
本発明のシステム及び方法を実現するため好ましい実施
例で使用することができるパーソナル・システム/2及
びオペレーティング・システムO8/2に関するその他
の情報は、引用により本書に組み込まれた以下の参考文
献に記載されている。
例で使用することができるパーソナル・システム/2及
びオペレーティング・システムO8/2に関するその他
の情報は、引用により本書に組み込まれた以下の参考文
献に記載されている。
rIBMオペレーティング・システム/2バージロン1
.0基本版、技術解説書(IBM Operating
System/2 Version 1.05tand
ard EditionTechnical Refe
rence) J、IBMパーツ番号6280201、
注文番号5871−AAl r技術解説書、パーソナル
・システム/2(80型)(Personal Sys
tem/2 (Model 80)) J、IBMパー
ツ番号68X−2256、注文番号568X−2256
、及びrO8/2プログラマの手引(OS/2Prog
rammer’s Guide) J 、Iacobu
cci1Ed1マグロ−ヒル、1988年。
.0基本版、技術解説書(IBM Operating
System/2 Version 1.05tand
ard EditionTechnical Refe
rence) J、IBMパーツ番号6280201、
注文番号5871−AAl r技術解説書、パーソナル
・システム/2(80型)(Personal Sys
tem/2 (Model 80)) J、IBMパー
ツ番号68X−2256、注文番号568X−2256
、及びrO8/2プログラマの手引(OS/2Prog
rammer’s Guide) J 、Iacobu
cci1Ed1マグロ−ヒル、1988年。
本発明によれば、メモリ38にロードするか、または媒
体40に記憶することができるアプリケーション・プロ
グラム10がさらに設けられている。
体40に記憶することができるアプリケーション・プロ
グラム10がさらに設けられている。
この媒体40はハード・ファイル、ディスク駆動機構に
挿入されたディスケット等のどのような通常形態でもよ
い。O8/2によれば、データベース・アプリケーショ
ン・プログラム10はオペレーティング・システム44
の拡張と見なすことができ、システム30が上記の関係
データベース機能を実行できるようにプロセッサ32に
命令を与えるデータベース・プログラムと通常の方法で
関連づけられた多数の機能を含んでいる。オペレータは
種々の入出力装置34を介してデータベース・プログラ
ムとインターフェースすることができ、そのようなイン
ターフェース処理はデータの入力、アクセス、変更また
はデータベースからのデータの削除、及びその他の同様
なタスクを含むものである。たとえば、ユーザは当技術
で周知のSQL言語等の何らかの形式のコマンドをキー
ボードを介して入力することにより、データベース・プ
ログラム46とインターフェースすることができ、その
結果、システム30は、データベースにあるデータを照
会し、検査のためユーザにより設定された所望の応答を
ビデオ端末、印刷装置等に出力する。
挿入されたディスケット等のどのような通常形態でもよ
い。O8/2によれば、データベース・アプリケーショ
ン・プログラム10はオペレーティング・システム44
の拡張と見なすことができ、システム30が上記の関係
データベース機能を実行できるようにプロセッサ32に
命令を与えるデータベース・プログラムと通常の方法で
関連づけられた多数の機能を含んでいる。オペレータは
種々の入出力装置34を介してデータベース・プログラ
ムとインターフェースすることができ、そのようなイン
ターフェース処理はデータの入力、アクセス、変更また
はデータベースからのデータの削除、及びその他の同様
なタスクを含むものである。たとえば、ユーザは当技術
で周知のSQL言語等の何らかの形式のコマンドをキー
ボードを介して入力することにより、データベース・プ
ログラム46とインターフェースすることができ、その
結果、システム30は、データベースにあるデータを照
会し、検査のためユーザにより設定された所望の応答を
ビデオ端末、印刷装置等に出力する。
オペレーティング・システム44は、本発明の第2図の
構成要素t t−teと関連して考察した機能を実現す
るためのソフトウェア手段の一般化された説明図として
第4図上で認識される。
構成要素t t−teと関連して考察した機能を実現す
るためのソフトウェア手段の一般化された説明図として
第4図上で認識される。
第1図は、本発明の装置におけるメモリ・アドレス計算
を示すブロック・ダイヤグラムである。 第2図は、本発明の装置におけるシステム・アーキテク
チャ構造のブロック・ダイヤグラムである。 第3図は、本発明の大域記述テーブルと動的リンク・ラ
イブラリの間の関係の説明図である。 第4図は、第1図ないし第3図に関連して説明する本発
明のソフトウェア機能を実現するシステムの機能ブロッ
ク・ダイヤグラムである。 10・・・・アプリケ−シロン・プログラム、32・・
・・プロセッサ、34・・・・入出力装置、36・・・
・読取り専用メモリ、38・・・・メモリ、40・・・
・媒体、44・・・・オペレーティング・システム。 物可メモリ 24
を示すブロック・ダイヤグラムである。 第2図は、本発明の装置におけるシステム・アーキテク
チャ構造のブロック・ダイヤグラムである。 第3図は、本発明の大域記述テーブルと動的リンク・ラ
イブラリの間の関係の説明図である。 第4図は、第1図ないし第3図に関連して説明する本発
明のソフトウェア機能を実現するシステムの機能ブロッ
ク・ダイヤグラムである。 10・・・・アプリケ−シロン・プログラム、32・・
・・プロセッサ、34・・・・入出力装置、36・・・
・読取り専用メモリ、38・・・・メモリ、40・・・
・媒体、44・・・・オペレーティング・システム。 物可メモリ 24
Claims (1)
- 【特許請求の範囲】 アプリケーションが多重ロード可能プログラム単位とし
て実行される動作環境において、少なくとも1つの動的
リンク・ライブラリを生成するステップと、 複数のコード・セレクタを生成するステップと、上記複
数のコード・セレクタに関連した上記動的リンク・ライ
ブラリの内の上記少なくとも1つにおいて第1のコード
・モジュールを生成するステップと、 上記動的リンク・ライブラリ及び上記複数のコード・セ
レクタに対応する機能を引き出すステップと、 上記機能に対応する表示を生成するステップとからなる
マルチ・タスク環境における動的リンク識別子供給方法
。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17918988A | 1988-04-08 | 1988-04-08 | |
US179189 | 1988-04-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH01263734A true JPH01263734A (ja) | 1989-10-20 |
Family
ID=22655592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2596589A Pending JPH01263734A (ja) | 1988-04-08 | 1989-02-06 | マルチ・タスク環境における動的リンク識別子供給方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0336552A3 (ja) |
JP (1) | JPH01263734A (ja) |
BR (1) | BR8901646A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7320075B2 (en) | 2001-11-20 | 2008-01-15 | Safenet, Inc. | Software protection method utilizing hidden application code in a protection dynamic link library object |
JP2008149136A (ja) * | 1994-11-10 | 2008-07-03 | Baxter Internatl Inc | 医療用処理装置のための対話型制御システム |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0727505B2 (ja) * | 1990-02-12 | 1995-03-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | インターフェース方法及びインターフェース・システム |
US5297291A (en) * | 1991-03-07 | 1994-03-22 | Digital Equipment Corporation | System for linking program units by binding symbol vector index in the symbol table into calling image to obtain current value of the target image |
US20020073246A1 (en) | 1998-06-29 | 2002-06-13 | Stephen F.B. Pickett | Code server |
US5649204A (en) * | 1991-08-22 | 1997-07-15 | Rec Software, Inc. | Method and apparatus for consolidating software module linkage information used for starting a multi-module program |
GB2272085A (en) * | 1992-10-30 | 1994-05-04 | Tao Systems Ltd | Data processing system and operating system. |
US5375241A (en) * | 1992-12-21 | 1994-12-20 | Microsoft Corporation | Method and system for dynamic-link library |
US5513351A (en) * | 1994-07-28 | 1996-04-30 | International Business Machines Corporation | Protecting a system during system maintenance by usage of temporary filenames in an alias table |
US6078945A (en) * | 1995-06-21 | 2000-06-20 | Tao Group Limited | Operating system for use with computer networks incorporating two or more data processors linked together for parallel processing and incorporating improved dynamic load-sharing techniques |
US6332168B1 (en) | 1995-09-28 | 2001-12-18 | International Business Machines Corporation | Method of, system for, and computer program product for providing a run time subsystem for run time libraries |
US5956491A (en) | 1996-04-01 | 1999-09-21 | Marks; Daniel L. | Group communications multiplexing system |
US6078889A (en) * | 1997-09-30 | 2000-06-20 | Pitney Bowes Inc. | Method and system of implementing a carrier manager librarian |
US6873978B1 (en) | 1997-10-01 | 2005-03-29 | Pitney Bowes Inc. | Event interface for a carrier manager system |
US6910047B1 (en) | 1997-10-01 | 2005-06-21 | Pitney Bowes Inc. | Method and system for changing rating data via internet or modem in a carrier management system |
CN100442302C (zh) * | 2004-12-21 | 2008-12-10 | 国际商业机器公司 | 利用快速运行时间识别计量软件产品的使用的方法和系统 |
US8863132B2 (en) | 2009-05-08 | 2014-10-14 | Sap Se | Using abstraction layers to facilitate communication between systems |
US8234649B2 (en) | 2009-05-08 | 2012-07-31 | Sap Ag | Composite system to integrate process systems using secondarily created process objects for local database operations and inter process system communications |
IT1395439B1 (it) * | 2009-09-08 | 2012-09-21 | Isi Holding S R L | Sistema per l'acquisizione di segnale e la reazione automatica in sistemi di sicurezza |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS583042A (ja) * | 1981-06-30 | 1983-01-08 | Fujitsu Ltd | プログラム実行方式 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57162033A (en) * | 1981-03-31 | 1982-10-05 | Fujitsu Ltd | Subroutine link controlling system |
-
1989
- 1989-02-06 JP JP2596589A patent/JPH01263734A/ja active Pending
- 1989-02-27 EP EP19890301902 patent/EP0336552A3/en not_active Ceased
- 1989-04-07 BR BR898901646A patent/BR8901646A/pt unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS583042A (ja) * | 1981-06-30 | 1983-01-08 | Fujitsu Ltd | プログラム実行方式 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008149136A (ja) * | 1994-11-10 | 2008-07-03 | Baxter Internatl Inc | 医療用処理装置のための対話型制御システム |
US7320075B2 (en) | 2001-11-20 | 2008-01-15 | Safenet, Inc. | Software protection method utilizing hidden application code in a protection dynamic link library object |
Also Published As
Publication number | Publication date |
---|---|
BR8901646A (pt) | 1989-11-21 |
EP0336552A2 (en) | 1989-10-11 |
EP0336552A3 (en) | 1991-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6637025B1 (en) | Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file | |
EP0665496B1 (en) | Method and apparatus for run-time error checking using dynamic patching | |
JPH01263734A (ja) | マルチ・タスク環境における動的リンク識別子供給方法 | |
US5911073A (en) | Method and apparatus for dynamic process monitoring through an ancillary control code system | |
US5611043A (en) | Debugger system and method for controlling child processes | |
US8271965B2 (en) | Apparatus to guarantee type and initialization safety in multithreaded programs | |
US5636366A (en) | System and method for preserving instruction state-atomicity for translated program | |
Ho et al. | An approach to genuine dynamic linking | |
US6067641A (en) | Demand-based generation of symbolic information | |
US7757225B2 (en) | Linktime recognition of alternative implementations of programmed functionality | |
US7107579B2 (en) | Preserving program context when adding probe routine calls for program instrumentation | |
US5583988A (en) | Method and apparatus for providing runtime checking features in a compiled programming development environment | |
US6662362B1 (en) | Method and system for improving performance of applications that employ a cross-language interface | |
US6240545B1 (en) | Setting instance breakpoints in object oriented computer programs | |
US6738965B1 (en) | Trace information in a virtual machine | |
US20030126590A1 (en) | System and method for dynamic data-type checking | |
US8887141B2 (en) | Automatically modifying a native code module accessed from virtual machine bytecode to determine execution information | |
US7856637B1 (en) | Runtime emulating static thread local storage of portable executable software code | |
US7114152B2 (en) | Method, apparatus, and program to determine the mutability of an object at loading time | |
CA2248181A1 (en) | Interactive software development system | |
JP2002508560A (ja) | マルチプル・クラスファイルのランタイムイメージへの結合 | |
US20050172302A1 (en) | Method, system, program and data structure for controlling access to sensitive functions | |
US20050114844A1 (en) | Method and apparatus for generating data for use in memory leak detection | |
US6810519B1 (en) | Achieving tight binding for dynamically loaded software modules via intermodule copying | |
US20040083467A1 (en) | System and method for executing intermediate code |