JPH07160483A - 指定のプログラムイメージと関連ライブラリプログラムとを実行可能なアプリケーションプログラムイメージに動的にリンクする方法 - Google Patents

指定のプログラムイメージと関連ライブラリプログラムとを実行可能なアプリケーションプログラムイメージに動的にリンクする方法

Info

Publication number
JPH07160483A
JPH07160483A JP6097874A JP9787494A JPH07160483A JP H07160483 A JPH07160483 A JP H07160483A JP 6097874 A JP6097874 A JP 6097874A JP 9787494 A JP9787494 A JP 9787494A JP H07160483 A JPH07160483 A JP H07160483A
Authority
JP
Japan
Prior art keywords
program
library
image
list
symbol
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
JP6097874A
Other languages
English (en)
Inventor
Michael N Nelson
マイケル・エヌ・ネルソン
Graham Hamilton
グラハム・ハミルトン
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 JPH07160483A publication Critical patent/JPH07160483A/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 指定のプログラムイメージと関連ライブラリ
プログラムとを動的にリンクして実行可能なプログラム
イメージを得る方法。 【構成】 指定のプログラムイメージを表すアーギュメ
ントと、相互にリンクすべき関連ライブラリプログラム
上にデータを含む命名文脈とをリンカーに与えることに
よって、所要のプログラムのリンクリストを作成する。
親がプログラムイメージを指定のアドレスにマッピング
して、実行可能なアプリケーションのリンクが完了す
る。所要のプログラムを探し出す際に、リンカーは、イ
メージキャッシュをチェックして新しいプログラムとそ
の関連プログラムとが以前に実行済みのために既にリン
クされてキャッシュ化されているかどうかを調べる。イ
メージキャッシュ内にプログラムがなければ、リンカー
オブジェクトは次にライブラリプログラムが部分リンク
済みの形式でキャッシュ化されているかどうかを調べ、
探し出せる限り多数のライブラリプログラムを利用す
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、既存の計算システム、
クライアント−サーバ計算とオブジェクト指向プログラ
ミングの分野に関する。
【0002】
【従来の技術】コンピュータプログラマーは、プログラ
ム、即ちソースプログラムを書く際に、一般的にアドレ
スを記号で表したりオペレーションコードを特殊な文字
や頭辞語で表す高等言語で書く。このソースコードに
は、コンピュータに与える命令群と命令とともに又は命
令によって動作するデータとが含まれる。これら命令と
データは、コンピュータがプログラム処理を実行できる
ように、コンピュータのメモリの所定のアドレスに格納
しておかなければならない。そうするためには、ソース
コードをコンパイラで処理して、コンピュータが実行可
能な二進の目的コードを生成しなければならない。コン
ピュータがこのようにして新たに作成されたプログラム
を実行できるようになるまでには、プログラムをいくつ
かの追加ステップで処理しなければならず、この間、プ
ログラム内のアドレスは様々な形式で表現される。通
常、コンパイラはソースコードの記号アドレスを再配置
可能なアドレス(プログラムのはじめのアドレスから1
6バイトなど)に結合する。次に、リンケージエディタ
またはローダーがこれらの再配置可能なアドレスを絶対
アドレス(メモリロケーション64216など)に結合
する。この結合処理は、あるアドレス空間から別のアド
レス空間へのマッピングである。命令とデータのメモリ
アドレスへの結合は、コンパイル時に行ってもよいし、
ロード時に行ってもよいし、あるいはプログラム実行時
に行ってもよい。
【0003】第1図には上述したいくつかのステップが
図示されている。ソースプログラム1は目的コードモジ
ュール3を作成するためのコンパイラ2で処理される。
この目的コードモジュール3は、一般的には、前もって
コンパイルされた他の目的モジュール4と共にリンケー
ジエディタ5で処理されて、ロードモジュール6が作成
される。ロードモジュール6と所要のいずれかのシステ
ムライブラリ7とがローダー8で処理されて、ローダー
8によって、元のプログラムのメモリ内二進イメージ1
0と関連のモジュールおよびライブラリが作成される。
そして、このメモリ内二進イメージ10をコンピュータ
が実行するのである。
【0004】引き続き第1図を参照する。メモリ内でプ
ログラムがどこに常駐するかがコンパイルタイムにおい
て解っているのであれば、これらのプログラムはアドレ
ス用の絶対コードを使ってコンパイルされる。しかし、
たいていの場合、コンパイル時においてメモリ内でのプ
ログラムの常駐場所はわからないことが多いので、コン
パイラでメモリアドレス用の再配置可能コードを作成す
るようにしなければならない。この場合、メモリロケー
ションのアドレスへの最終的な結合は、ロード時13か
あるいは実行時14まで遅延される。モデムシステムに
よっては、プログラムイメージをプログラム実行中にあ
るメモリセグメントから別のメモリセグメントへ移動で
きるときや、プログラムイメージが位置独立コード(P
IC)などの再配置可能なアドレスをほとんど含まない
ためにプログラムの開始コストが大きくないような場合
は、実行時14までアドレスへの結合ができない。な
お、PICとは、ある種のコンパイラが作成するコード
で、全てのメモリがプログラムカウンタに関して参照さ
れるのでメモリ内の任意の場所に配置できるコードのこ
とである。
【0005】最近のコンピュータオペレーティングシス
テムは、メモリ空間を最大限有効に利用しつつユーザー
の待ち時間を最小限に抑えるように設計されている。こ
れは、アドレス結合/プログラムローディング処理にお
いて、プログラム目的モジュールが他のモジュールに実
際に呼び出された時のみプログラムの目的モジュールの
ダイナミックローディングを行って、目的モジュール
を、対応のシステムライブラリルーチンが必要なときに
のみシステムライブラリルーチンに動的にリンクするこ
とによって行われる。こうした場合には、メインプログ
ラムをメモリ内にロードして実行し、サポートしている
目的モジュールまたはシステムライブラリは、メインプ
ログラムからの呼出しがない限りロードしないようにし
ているので、プログラムの起動タイムはいくぶん遅くな
るものの、メモリ空間とロードタイムとが節約される。
また、メモリにすでに常駐している可能性の高いシステ
ムライブラリは、呼出しに応じて実行中のメインプログ
ラムに動的にリンクさせることができるので、システム
ライブラリをコピーしてロード時に各メインプログラム
にリンク・ロードさせる必要がないので、プログラムの
起動タイムと実行タイムとが若干遅くなるものの、ここ
でも、メモリ空間の節約ができる。ダイナミックリンキ
ング処理では、各ライブラリ−ルーチン参照用イメージ
にスタブが含まれる。このスタブは、適切なメモリ常駐
ライブラリルーチンをどの様に位置付けるかを表すコー
ドの小部分である。スタブが実行されると、スタブは自
身をルーチンのアドレスと入れ替えて、ルーチンを実行
させる。このようにして、ライブラリルーチンを使うす
べてのプログラムでは、ライブラリコードの同じコピー
が使われる。
【0006】ダイナミックリンキングおよびローディン
グを最大限に活用するために、プログラムコンパイラ
を、必要な再配置可能アドレス参照、サブルーチンスタ
ブコードおよび効果的なPICコードを作成するように
設計しなければならない。しかし、残念なことに、既存
のオブジェクト指向プログラムモジュール用のコンパイ
ラはこの様なコードを効率よく作成できない。例えば、
cfront3.0プレプロセッサとG++コンパイラ
は、仮想関数テーブルを、再配置可能な記号への参照を
多数含む初期データ構造として作成する。この様に、オ
ブジェクト指向プログラムモジュール内に含まれる再配
置可能な記号は、よりオーソドックスなプログラムモジ
ュールに含まれる再配置可能な記号よりもずっと数が多
く、動的にこれらのモジュールをリンクするために生じ
るプログラムの開始遅れは、再配置を多数回行うため
に、耐え難いほどに大きくなる。したがって、プログラ
ムモジュールを多数の再配置可能な記号に効率よく動的
にリンクできるシステムが望まれている。
【0007】
【発明が解決しようとする課題】本発明は、リンクした
プログラムイメージのみならず、部分的にリンクしたラ
イブラリプログラムをもキャッシュ化して、この様な問
題を解決することを目的とするものである。
【0008】
【課題を解決するための手段】本発明では、完全にリン
クしたプログラムイメージをそのシステムライブラリモ
ジュールと共にキャッシュ化する優れた効率のよいシス
テムを構築し、アドレスが暫定的に固定された(部分的
にリンクされた)再配置可能なライブラリプログラムを
キャッシュ化するための第2レベルのキャッシュを形成
し、これらのキャッシュを使って他のプログラム/ルー
チンが呼び出された時に完全にあるいは部分的にリンク
したモジュールを供給するようにしている。そのため新
しいオブジェクト指向プログラムをリンクする際に生じ
るシステムでの遅延を最小限に抑えることができる。し
たがって、新しいアプリケーションをリンクするとき
に、システムで、まず、イメージキャッシュをチェック
して、プログラムが以前にリンクされているかどうかを
調べ、そうである場合には、リンク済みバージョンのプ
ログラムを対応のリンク済みライブラリプログラムと共
に使ってそれ以上の処理のオーバーヘッドを防止するよ
うにしている。新しいアプリケーションがイメージキャ
ッシュ内に見つからない場合は、ライブラリプログラム
キャッシュをチェックして関連のライブラリプログラム
のうちの一部または全部がすでに暫定的に固定(部分的
リンク)されているかどうかを調べて、オーバーヘッド
を最小限に抑えるようにする。ライブラリプログラムが
ライブラリプログラムキャッシュ内に見つからない場合
にのみ、リンクシステムによって、プログラムの完全な
ロードとリンクを行わせるようにして、リンクに伴うオ
ーバーヘッドを最小限に抑えるようにしている。
【0009】指定のプログラムイメージと関連ライブラ
リプログラムとを動的にリンクして実行可能なプログラ
ムイメージを得る方法が開示されている。かかる方法で
は、指定のプログラムイメージを表すアーギュメント
と、相互にリンクすべき関連ライブラリプログラム上に
データを含む命名文脈とをリンカーに与えることによっ
て、所要のプログラムのリンクリストを作成する。リン
カーは所要のプログラムをすべて探し出してリンクす
る。親がプログラムイメージを指定のアドレスにマッピ
ングして、実行可能なアプリケーションプログラムのリ
ンクが完了する。所要のプログラムを探し出す際に、リ
ンカーは、まず、イメージキャッシュをチェックして新
しいプログラムとその関連ライブラリプログラムとが以
前に実行済みのために既にリンクされてキャッシュ化さ
れているかどうかを調べる。イメージキャッシュ内に新
しいプログラムがなければ、リンカーオブジェクトは次
にライブラリプログラムキャッシュをチェックして、ラ
イブラリプログラムが部分リンク済みの形式でキャッシ
ュ化されているかどうかを調べ、探し出せる限り多数の
その様なライブラリプログラムを利用する。まだ位置付
けをしなければならないライブラリプログラムがあれ
ば、リンカーはその様なプログラムを格納データから読
み込んで処理し、全ライブラリプログラムと新プログラ
ムイメージをリンクして全体的に実行可能な形式にす
る。このようにして新プログラムイメージをライブラリ
プログラムと共にキャッシュ化して各部分リンク済みラ
イブラリプログラムをキャッシュ化するようにすれば、
新しいプログラムの実行時にプログラム開始時間の遅れ
を最小限に抑えることができる。
【0010】考え方と名称 以下に記載する詳細な説明は、コンピュータもしくはコ
ンピュータネットワーク上で実行するプログラム処理を
想定している。当該技術分野において通常の技量を有す
る者が発明を実施可能なように、これらの処理について
説明し、図示する。ここに説明する処理は、一般的に、
所望の結果を得るようにつじつまのあう順序で行う一連
のステップである。これらのステップは、物理量の物理
的処理を必要とする。必ずしもという訳ではないが、通
常、この物理量は、記憶、転送、結合、比較などで処理
できる電気あるいは磁気信号である。主に呼称を統一す
る目的で、これらの信号については、ビット、値、エレ
メント、記号、文字、用語、数で表現することとする。
ただし、その様な呼称や類似の用語に対してはしかるべ
き物理量が存在するのであり、ここで用いる呼称はそう
した物理量に対して便宜上与えるものにすぎない。
【0011】処理すべき動作については、加算するや比
較するなどの用語でこれを呼ぶこととするが、上記と同
様、その様な用語に対しても、人のオペレータが行う精
神的動作が存在している。ただし、本発明では人のオペ
レータがその様な動作を行う必要はなく、あるいは不必
要であることがほとんどの場合において望ましく、動作
は機械的動作である。本発明の動作を実行するのに有用
な機械としては、一般用デジタルコンピュータや同様の
装置が挙げられる。
【0012】また、本発明はこれらの動作を実行するた
めの装置にも関連している。係る装置は、所要の目的の
ためだけに専用の構造にしてもよいし、一般用コンピュ
ータを部分的に動作させたり、中に格納したコンピュー
タプログラムによって一般用コンピュータを再構成する
ようにしてもよい。ここに説明する処理は、特定のコン
ピュータや他の装置に適用が限定されるものではない。
ここに記載する教示内容にしたがって書かれたプログラ
ムは、様々な種類の一般用機械で実行可能であるが、所
要の方法ステップを実行するにはそれにより適した特別
の装置を使用するのがより好都合な場合もある。こうし
た様々な機械を構成する所要の構造についても以下に説
明する。
【0013】
【実施例】本発明の完全な理解を促進するために、以下
に例として、特定のデータおよび形態を説明する。ここ
に説明する好ましい実施例は、サンマイクロシステムズ
社のSPRINGオブジェクト指向オペレーティングシ
ステムの一部として実施される(Sun Microsystemsは、
サンマイクロシステムズ社の登録商標)。しかしなが
ら、本発明がこれに限られないことは言うまでもなく、
本発明は様々なコンピュータシステムや様々な形態、タ
イトにリンクしたプロセッサの構造やモデル、ルースに
リンクしたマルチプロセッサシステムの様々な形態で実
施可能である。また、本発明が非オブジェクト指向計算
システムにも実施可能であることも言うまでもない。
【0014】SPRINGの定義域はスレッド(threa
d)の集まりを持ったアドレス空間である。ある定義域
をあるオブジェクトのサーバと他のオブジェクトのクラ
イアントとして機能させることができる。作成者、つま
りオブジェクトマネージャーとクライアントとは同じ定
義域にしてもよいし異なる定義域にしてもよい。
【0015】SPRINGオブジェクトモデル SPRINGでは、他の既存のオブジェクト指向システ
ムトは少し異なった方法でオブジェクトを見る。そこ
で、本発明の詳細な説明に入る前に、この点について説
明しておく。既存のシステムは、そのほとんどが、オブ
ジェクトをサーバ機に常駐させて、サーバでオブジェク
トを指しているオブジェクトハンドルをクライアント機
で処理している(図2aを参照)。クライアントはオブ
ジェクトの周りではなくオブジェクトハンドルの周りを
パスするのである。
【0016】SPRINGでは、クライアントがオブジ
ェクトハンドルではなくオブジェクト上で直接動作する
(第2b図を参照)。これらのオブジェクトのうちのい
くつかは、どこかの離れたサイトで興味深い状態をすべ
て維持することがあるため、オブジェクトのローカル状
態はこの離れた状態へのハンドルのみからなる。オブジ
ェクトは、1度に1ヶ所でしか存在できないので、オブ
ジェクトを誰かに送信した場合、オブジェクトの送信側
にはオブジェクトはなくなる。しかしながら、オブジェ
クトは送信前にコピーすることができるので、送信前に
コピーしておけば同じ遠隔状態を指す2つの別個のオブ
ジェクトを得ることができる。
【0017】したがって、MACHなどのシステムでは
どれかの遠隔オブジェクトを参照しているオブジェクト
ハンドルを持つクライアントが幾つか存在することにな
るのに対し、SPRINGでは同じ遠隔状態を参照して
いるオブジェクトを持つクライアントが幾つか存在する
ことになる。
【0018】SPRINGにおける処理イメージのダイ
ナミックリンキング ここで第3図を参照して、本発明の基本ステップについ
て簡単に説明する。SPRINGにおいてクライアント
定義域でプログラムを開始したいのであれば、20で示
すように、クライアント定義域で「Link(イメージ
メモリオブジェクト、命名文脈オブジェクト)」コマン
ドをリンカーオブジェクト上で実行する。リンカーオブ
ジェクトは、まず、イメージメモリオブジェクトを調べ
てイメージキャッシュ22をチェックし、イメージメモ
リオブジェクトによって表される完全リンクバージョン
のプログラムをイメージキャッシュが含むかどうかと、
このキャッシュ化されたバージンが命名文脈オブジェク
トでライブラリプログラムを用いてリンクされているか
どうかを調べる。一致が見つかれば(28)、リンカー
オブジェクトは基本的に動作を終了し、メモリオブジェ
クトのキャッシュ化リストと探し出したイメージメモリ
に関連する関連アドレス38に戻る。イメージキャッシ
ュをチェックした結果、一致が見つからなければ(2
4)、リンカーオブジェクトは、26に示すように、イ
メージメモリオブジェクトに要求されていて命名文脈オ
ブジェクトが使っているライブラリプログラム名前のリ
ストを探し、各ライブラリプログラムに関連するメモリ
オブジェクトをもってきて、各ライブラリプログラムと
の一致がないかどうかライブラリプログラムキャッシュ
をチェックする。ライブラリプログラムメモリオブジェ
クトとの一致が見つかれば(36)、リンカーオブジェ
クトは、探したライブラリプログラムの暫定固定コピー
を表すメモリオブジェクトとこのプログラムをマッピン
グすべき関連アドレスを得る。一致が見つからない場合
(30)には、リンカーオブジェクトは問題のライブラ
リプログラムをマッピングすべきアドレスを決定し、問
題のライブラリプログラムのコピー−オン−ライトのコ
ピーであるメモリオブジェクトを作成してこのメモリオ
ブジェクトをそれ用に選択したアドレスでマッピングす
る。次に、34で、リンカーオブジェクトは、このプロ
グラムの新しいコピーを暫定的に固定し、ライブラリプ
ログラムのメモリオブジェクトとライブラリプログラム
キャッシュ32のうちの関連のアドレスに格納する。所
要の各ライブラリプログラム用のメモリオブジェクトを
見つけだしたら、それらがライブラリプログラムキャッ
シュの中で見つかったのかそれとも新たに作成したコピ
ーの中で見つかったのかを調べ、リンカーオブジェクト
は新しいプログラムイメージとこれらのライブラリプロ
グラムすべての中の未解決の参照記号をすべて解決し、
この完全リンクバージョンのコピーをイメージキャッシ
ュに書き込む。最後に、リンカーオブジェクトは、メモ
リオブジェクトのリストと、この完全リンク新プログラ
ムイメージの関連アドレスと、対応のライブラリプログ
ラムとをクライアント定義域に戻す。
【0019】以上が本発明の概略であるが、今から図4
〜図7を参照して処理の例についてさらに詳細に説明す
る。なお、リンカーオブジェクト、クライアント定義域
などの呼称は例示的なものであって、本発明を実施する
にあたってはこれらを他のどの様な呼称で指しても構わ
ないことは言うまでもない。
【0020】本発明をさらに詳細に説明する前に、「非
固定プログラム」の例と再配置によってこれがどの様に
して「固定される」、つまり実行可能なプログラムイメ
ージになるのかについて説明する。図8に非固定プログ
ラムを示す。40で示すのはプログラムイメージを含む
ファイルFである。このファイルは4つの部分に分かれ
る。即ち、プログラムの実行を開始させるためのアドレ
ス44および使用すべき共用ライブラリプログラムのリ
スト46を含むヘッダー42と;プログラム用コード5
2と;プログラム中に定義されたすべての外部記号を含
む記号テーブル48と;再配置すべき記号がどれである
のかを示すリストを含む再配置テーブル50である。こ
の例では、プログラムヘッダー42がプログラムが共用
ライブラリSL46を必要とすることを通知している。
再配置テーブル50は、プログラム用コード52が外部
記号foo54を参照するアドレスA1の命令を含むこ
とを示している。さらに、記号テーブル48は、プログ
ラムがアドレスA2で外部関数bar56を定義してい
ることを示している。また、図8にはファイルF2が図
示されており、このファイルには共用ライブラリSL
(60)が含まれている。ファイルF2もファイルFと
同様に同じ4つの部分から構成される。即ち、プログラ
ムヘッダー62と;ライブラリプログラム用コード72
と;記号テーブル68と;再配置可能テーブル70とあ
る。この共用ライブラリは他の共用ライブラリに依存し
ないため、共用ライブラリリスト66は空である。再配
置テーブル70は、ライブラリコードが外部記号bar
64を参照するアドレスB1の命令を含んでいることを
示している。また、記号テーブル68は、ライブラリコ
ードがアドレスB2(76)で外部関数fooを定義し
ていることを示している。図9に図8に図示したものと
同じプログラムとライブラリプログラムの「固定」バー
ジョンを示す。図9には、固定プログラムコード82と
固定ライブラリコード84を含むアドレス空間80が図
示されている。ファイルF内のプログラムイメージのコ
ード(図8の52)は全プログラムイメージに固定のア
ドレス86でマッピングされている。このアドレスの値
は、イメージ内の各コードアドレス(図8の52)が正
しくなるような値である(例えば、アドレスA1のコー
ド(図8の58)はアドレス空間86内のアドレスA1
にマッピングされている)。一方、共用ライブラリSL
は、アドレス空間位置アドレスR1のはじめにマッピン
グされており、このため、簡単な各ライブラリコードア
ドレスはアドレス空間80においてR1(90)によっ
てオフセットされる。ファイルFの再配置テーブルに命
令A1として示した命令A1内の記号foo(図8の5
4)の外部参照は共用ライブラリによって満足されてい
る。記号fooは共用ライブラリにおいてアドレスB2
に定義され(図8の76)、アドレスB2がアドレス空
間80においてアドレスR1+B2にマッピングされる
ため、A1におけるfooに対応する実際のアドレスプ
ットは88で示すR1+B2となる。ライブラリ再配置
テーブルに示した命令B1における記号bar(図8の
64)の外部参照は、プログラムイメージ内のアドレス
A2にbarを定義しているプログラムコードによって
満足されている。共用ライブラリ内のアドレスB1の命
令は、実際にはアドレス空間90内のアドレスR1+B
1にマッピングされるので、R1+B1での命令内での
実際のアドレスは92で示すA2である。
【0021】次に図10を参照して、発明の好ましい実
施例を示すために、同図にはSPRINGオブジェクト
指向システム内での環境の例が図示されている。図から
わかる通り、文脈オブジェクトC(102)の作成者を
含む命名サービス100と;アドレス空間106を含む
定義域D(104)と;マッピングリスト120とオブ
ジェクトC(109)とオブジェクトL(110)とオ
ブジェクトM(112)とオブジェクトAS(114)
とオブジェクトD(116)とDM(118)とを含む
クライアント定義域108と;オブジェクトAS(12
8)を含む定義域オブジェクトD(126)の作成者を
それ自身が含む定義域マネージャー124を含んでいる
SPRING核122と;オブジェクトAS用のアドレ
ス空間作成者(132)を含む、SPRING核に含ま
れる仮想メモリマネージャー130と;メモリオブジェ
クトM(154)と、メモリオブジェクトM2(15
6)と、メモリオブジェクトSL(158)と、メモリ
オブジェクトSL2(160)と、メモリオブジェクト
SL3(162)を含むファイルサーバ定義域152
と;リンカーオブジェクトL(142)用の作成者と、
メモリオブジェクトのリストと関連アドレス172とメ
モリオブジェクトC(164)、M(166)、M2
(168)とSL(170)をそれ自身が含む例示キャ
ッシュエントリー146を含むイメージキャッシュ14
4と、メモリオブジェクトSL(172)およびメモリ
オブジェクトSL2(174)とをそれ自身が含む例示
キャッシュエントリー150と、キャッシュ化プログラ
ム開始アドレス176と、を含むリンカー定義域140
が設けられている。
【0022】ここで、下記のオブジェクトが同価である
点に注意しなければならない。即ち、M(112)およ
びM(166);M2(175)およびM2(16
8);SL3(177)およびSL3(170);C
(109)およびC(164)である。ここでは、サー
バの資源状態を参照している2つのオブジェクトは同価
と考えることとする。
【0023】次に示す例では、クライアント定義域でf
ooという名前のプログラムを開始させたい場合であ
る。プログラムを開始させた後の状態を図10に示す。
この最も単純な例では、イメージキャッシュの中にキャ
ッシュヒットが存在する。この場合、新しい定義域を開
始させるには次の様なステップを実行する。
【0024】・ クライアント定義域108がSPRI
NG命名サービス100を介してfooを調べ、foo
のプログラムイメージを格納するメモリオブジェクトM
(112)を戻す。Mに格納されたプログラムイメージ
を動的にリンクするには共用ライブラリSLを使う;即
ち、イメージをリンクすべきライブラリ名を、ディスク
154上で実行されるメモリオブジェクトM(112)
に格納する。
【0025】・ クライアント定義域108が、命名サ
ービス100を用いてリンカー定義域140によって実
行されたリンカーオブジェクトL(110)を調べる。 ・ L(110)上で、クライアント定義域108が、
2つのパラメータ、即ち、命名サービス100によって
実行されたメモリオブジェクトM(112)と命名オブ
ジェクトC(109)をパスするリンク方法を呼び出
す。
【0026】・ リンカー定義域140がM(112)
とC(109)をキーとして用いて自身のキャッシュを
調べ、キーM(166)およびC(164)で一致のエ
ントリーがあることを見出す(M(166)はM(12
2)に、C(164)はC(109)に同価)。キャッ
シュエントリーは、C(164)を用いてリンクされた
完全リンクバージョンのM(166)のキャッシュ化コ
ピーを含む。完全リンクバージョンは2つのメモリオブ
ジェクト、即ち、M2(168)とSL3(170)と
からなる。M2(168)は、アドレスA1(全プログ
ラムについて、プログラムイメージをマッピングするア
ドレスは値A1に固定されている)でリンクされたM
(166)の完全リンクコピーであり、SL3(17
0)はアドレスA2でリンクした共用ライブラリSL
(172)用のメモリオブジェクトの完全リンクコピー
である(メモリオブジェクトのリストおよび対応のリン
ク済みアドレスを173として示す)。
【0027】・ リンカー定義域140が、<アドレス
からマップ、メモリオブジェクト対>173のリストを
クライアント定義域108に返す(このリトはクライ
アント定義域108においてマッピングリスト120と
いう名札がつけられる)。リスト121内の第1のエン
トリーはアドレスA1とメモリオブジェクトM2を含
む。リスト123内の第2のエントリーはアドレスA2
とメモリオブジェクトSL3を含む。
【0028】・ クライアント定08が命名サー
ビス100を用いて定義域マネージャーオブジェクトD
M(118)を調べる。 ・ クライアント定義域108がオブジェクトDM(1
18)上でcreate domain 方法を呼び出して、新しい定
義域オブジェクトD(116)を得る。 ・ クライアント定義域108がD(116)上でget
address space 方法を呼び出して、Dのアドレス空間1
32を表すオブジェクトAS(114)を得る。
【0029】・ クライアント定義域108がASオブ
ジェクト114上でcopy and map方法を呼び出してオブ
ジェクトM2(175)をアドレスA1で、また、SL
3(177)をアドレスA2のコピー−オン−ライトで
マッピングする(ただし、この情報はマッピングリスト
120から得られる)。 ・ enter 方法を定義域オブジェクトD(116)で呼
び出することによって、クライアント定義域108が定
義域にD(126)で走り始める。
【0030】図10によれば、ライブラリキャッシュ1
48にも共用ライブラリSL(172)とメモリオブジ
ェクトSL2(174)内の暫定固定バージョンのキャ
ッシュ化コピーがある。しかし、ここでは、イメージキ
ャッシュ144上でヒットを得たので、ライブラリキャ
ッシュ148を調べる必要はない。第2の例は、イメー
ジキャッシュヒットはないがライブラリキャッシュヒッ
トがある場合である。この例は、クライアント定義域1
08がプログラムイメージをリンクようとするときに図
10のイメージキャッシュ144が空であることを想定
している。ここでは、リンカー定義域140が以下のよ
うにしてリンクを行う。
【0031】・ リンカー定義域140が、M(11
2)とC(109)を自身のイメージキャッシュ144
内で調べ、一致がないことを見つける。 ・ リンカー定義域140が、メモリオブジェクトM
(112)を調べてSLという名前の共用プログラムを
リンクする必要があることを見つける。 ・ リンカー定義域140が、文脈オブジェクトC(1
09)を使って名前SLを調べる(このステップは、必
要な各ライブラリプログラムごとにくり返し行われ
る)。この結果が、共用ライブラリプログラムSLの内
容を含むメモリオブジェクトSL(300)(このメモ
リオブジェクトはリンカー定義域140内には図示され
ていない)となる。
【0032】・ リンカー定義域140が、メモリオブ
ジェクトSL(300)をアーギュメントとして使って
ライブラリキャッシュ148を調べ、ライブラリキャッ
シュにキーSL(172)の一致のエントリーがあるこ
とを見つける(つまり、SL(172)はSL(30
0)と同じ)。キャッシュ化エントリーには、メモリオ
ブジェクトSL2(174)である共用ライブラリSL
の暫定固定バージョンのコピーが含まれている。 ・ リンカー定義域140が、M(112)のコピー−
オン−ライトのコピーであるメモリオブジェクトM2
(168)を作成し、SL2(174)のコピー−オン
−ライトのコピーであるメモリオブジェクトSL3(1
70)を作成する。 ・ リンカー定義域140が、SL3(170)を使っ
てM2(168)内の未解決の全参照を解決し、M2
(168)を使ってSL3(170)内の未解決の全参
照を解決する(この処理の説明については上記とフロー
チャートを参照のこと)。この結果が、プログラムfo
oの完全リンクバージョンを持ったM2(168)とS
L3(170)である。ここでも、複数のライブラリプ
ログラムが必要であれば、それぞれのライブラリに対し
て同じステップを行うようにする点は同じである。
【0033】・ リンカー定義域がM2(168)とS
L3(170)を関連のキー(メモリオブジェクトC
(164)とメモリオブジェクトM(166))と共に
自身のイメージキャッシュ144にエンターし、<アド
レスからマップ、メモリオブジェクト対>173のリス
トをクライアント定義域108に返す(このリストはク
ライアント定義域108においてマッピングリスト12
0という名札がつけられている)。リスト121内の第
1のエントリーはアドレスA1とメモリオブジェクトM
2を含み、リスト123内の第2のエントリーはアドレ
スA2とメモリオブジェクトSL3を含む。
【0034】次に、クライアント定義域108が、第1
の例と同じステップで新しい定義域を作成する。最後の
例は、イメージキャッシュヒットもライブラリキャッシ
ュヒットもない場合である。この例は、クライアント定
義域108がプログラムイメージをリンクしようとする
とき、イメージキャッシュ144とライブラリキャッシ
ュ148とが空であることを想定している。ここでは、
リンカー定義域140が以下の様にしてリンクを行う。
【0035】・ リンカー定義域140が、自身のイメ
ージキャッシュ144内でM(112)とC(109)
を調べ、一致がないことを見つける。 ・ リンカー定義域140がメモリオブジェクトM12
2を見つけ、自身のアドレス空間にメモリオブジェクト
M122をマッピングし、M112をリンクするために
共用ライブラリSLが必要であることを見つける。 ・ リンカー定義域140が、文脈オブジェクトC(1
09)を使って名前SLを調べる。この結果が、共用ラ
イブラリプログラムSLの内容を含むメモリオブジェク
トSL(172)となる。
【0036】・ リンカー定義域140が、メモリオブ
ジェクトSL(172)をアーギュメントとして使って
ライブラリキャッシュ148を調べ、一致がないことを
見つける(この例では、ライブラリキャッシュが空であ
る)。 ・ リンカー定義域140が、メモリオブジェクトSL
(172)をアドレス空間内で使用可能なアドレス(A
2とする)に固定することを決定する。 ・ リンカー定義域140が、SL(172)のコピー
−オン−ライトのコピーであるメモリオブジェクトSL
2(160)を作成し、自身のアドレス空間にマッピン
グする。
【0037】・ リンカー定義域140が、SL2を暫
定的に固定し(固定化に関する説明と詳細については、
上記と図4〜図7のフローチャートを参照のこと)、S
L2(174)をライブラリキャッシュ148に(キー
SL(172)と共に)格納する。 ・ リンカー定義域140が、M(112)のコピー−
オン−ライトのコピーであるメモリオブジェクトM2
(168)を作成し、SL2(174)のコピー−オン
−ライトのコピーであるメモリオブジェクトSL3(1
70)を作成する。
【0038】・ リンカー定義域140が、SL3(1
70)を使ってM2(168)内の未解決の全参照を解
決し、M2(168)を使ってSL3(170)内の未
解決の全参照を解決する(この処理の説明と詳細につい
ては上記と図4〜図7のフローチャートを参照のこ
と)。この結果が、プログラムfooの完全リンクバー
ジョンを持ったM2(168)とSL3(170)であ
る。 ・ リンカー定義域がM2(168)とSL3(17
0)を(関連のキー、即ちメモリオブジェクトM(16
6)と文脈オブジェクトC(164)と共)に自身のイ
メージキャッシュ144にエンターし、<アドレスから
マップ、メモリオブジェクト対>172のリストをクラ
イアント定義域108に返す。リスト121内の第1の
エントリーはアドレスA1とメモリオブジェクトM2を
含む。リスト123内の第2のエントリーはアドレスA
2とメモリオブジェクトSL3を含む。
【0039】この後、クライアント定義域108が、第
1の例と同じステップで新しい定義域108を作成す
る。本発明の別の実施例として、共用ライブラリプログ
ラムキャッシュのみをダイナミックリンカーシステム内
で使い、第2の例について上述したのと同じステップを
実行するようにしてもよい。以上、発明の好ましい実施
例、具体例、ステップの順序について説明したが、本発
明は上記範囲に限定されるものではなく、プログラムの
完全リンクイメージと関連ライブラリおよび部分固定ラ
イブラリルーチンをキャッシュ化すれば、基本的に、ダ
イナミックリンキングのオーバーヘッドコストを最小限
に抑えることができる。
【図面の簡単な説明】
【図1】 新プログラムのコンパイル処理とローディン
グの代表的なステップを示す図である(従来技術)。
【図2】 オブジェクトのSPRINGオペレーティン
グシステムの概念を示す図である。
【図3】 発明を示すハイレベルのフローチャートであ
る。
【図4】 発明を示す詳細なフローチャートである。
【図5】 発明を示す詳細なフローチャートである。
【図6】 発明を示す詳細なフローチャートである。
【図7】 発明を示す詳細なフローチャートである。
【図8】 非固定プログラムを示す図である。
【図9】 図5のプログラムの固定バージョンを示す図
である。
【図10】 SPRINGダイナミックリンキング環境
の例を示す図である。
【符号の説明】
1 ソースプログラム、2 コンパイラ又はアセンブ
ラ、3 目的モジュール、4 他の目的モジュール、5
リンケージエディタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 グラハム・ハミルトン アメリカ合衆国 94303 カリフォルニア 州・パロ アルト・デビッド コート・ 3143

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 アプリケーションプログラムと、ライブ
    ラリプログラムと、オペレーティングシステムを用いる
    計算システムで、指定のプログラムイメージと関連ライ
    ブラリプログラムとを実行可能なアプリケーションプロ
    グラムイメージに動的にリンクする方法において、 前記指定のプログラムイメージを表すパラメータと前記
    関連ライブラリプログラム用の命名文脈を表すパラメー
    タでリンク方法を呼び出すステップと、 前記指定のプログラムイメージと前記関連ライブラリプ
    ログラムとを位置付けるステップと、 前記関連ライブラリプログラムを相互に、また、前記指
    定のプログラムイメージにリンクし、プログラム識別子
    リストと、その識別子を持つ関連アドレスと前記指定の
    プログラムイメージおよび前記各関連ライブラリプログ
    ラムの関連アドレスとを作成するステップと、 前記プログラム識別子のリストに基づいて、前記指定の
    プログラムイメージと前記各関連ライブラリプログラム
    を前記関連アドレスにマッピングするステップと、を備
    え、 前記指定のプログラムイメージと前記関連ライブラリプ
    ログラムとを実行可能なプログラムイメージに動的にリ
    ンクすることを特徴とする方法。
  2. 【請求項2】 指定のプログラムイメージと関連ライブ
    ラリプログラムとを計算システム内で実行可能なプログ
    ラムイメージに動的にリンクする方法において、 前記指定のプログラムイメージを表すパラメータと前記
    関連ライブラリプログラム用の命名文脈を表すパラメー
    タでリンク方法を呼び出すステップと、 イメージキャッシュをチェックして、前記イメージキャ
    ッシュ内に前記指定のプログラムイメージと前記関連ラ
    イブラリプログラムに一致するキーが見つかった場合に
    は前記イメージキャッシュに基づいてプログラム識別子
    のリストと関連アドレスとを得るステップと、 前記プログラム識別子のリストに基づいて前記関連アド
    レスにおいて前記プログラム識別子で識別される各プロ
    グラムをマッピングするステップと、を備え、 前記指定のプログラムイメージと前記関連ライブラリプ
    ログラムとを実行可能なプログラムイメージに動的にリ
    ンクする方法。
  3. 【請求項3】クレーム2に記載の方法であって、さら
    に、 前記指定のプログラムイメージと前記関連ライブラリプ
    ログラムに一致するキーが前記イメージキャッシュ内に
    見つからなかった場合に、前記指定のプログラムイメー
    ジに関連する前記ライブラリプログラムの名前を含む第
    1のリストを作成するステップと、 前記第1のリスト上の前記ライブラリプログラムの前記
    名前のそれぞれを解決してライブラリプログラム識別子
    を得、前記ライブラリプログラム識別子のそれぞれを第
    2のリストに加えるステップと、を備える方法。
  4. 【請求項4】 クレーム3に記載の方法であって、さら
    に、 ライブラリプログラムキャッシュをチェックして前記第
    2のリスト内の各ライブラリプログラム識別子との一致
    がないか調べるステップと、 一致しているライブラリプログラム識別子が存在する場
    合に、前記ライブラリプログラムキャッシュから一致す
    るライブラリプログラムを得るステップと、 前記ライブラリプログラムから前記一致しているライブ
    ラリプログラム識別子を第3のリストに加えるステップ
    と、を備える方法。
  5. 【請求項5】 クレーム4に記載の方法であって、さら
    に、 前記ライブラリプログラムキャッシュ内に一致している
    ライブラリプログラム識別子が存在しない場合に、前記
    第2のリスト内で識別される所要のライブラリプログラ
    ムをリンクすべきアドレスを選択するステップと、 前記所要のライブラリプログラムのコピーを作るステッ
    プと、 前記所要のライブラリプログラムの前記コピー内の再配
    置可能な記号を暫定的に固定するステップと、 前記所要のライブラリプログラムの前記暫定的に固定さ
    れたコピーを前記ライブラリプログラムキャッシュに加
    えるステップと、 前記暫定的に固定されたライブラリプログラム識別子を
    前記第3のリストに加えるステップと、を備える方法。
  6. 【請求項6】 クレーム5に記載の方法であって、さら
    に、 記号テーブルと再配置テーブルとを持っている、前記指
    定のプログラムイメージのコピーを作り、そのコピーの
    識別子を第4のリストに加えるステップと、 前記第3のリストに基づいてそれぞれ記号テーブルと再
    配置テーブルとを持っている、前記ライブラリプログラ
    ムのそれぞれのコピーを作り、そのコピーの識別子を前
    記第4のリストに加えるステップと、を備える方法。
  7. 【請求項7】 クレーム6に記載の方法であって、さら
    に、 前記指定のプログラムイメージの前記コピー内で再配置
    すべき各記号を見つけるステップと、 前記第4のリスト内で識別される前記ライブラリプログ
    ラムすべてを検索し、前記再配置すべき記号に一致する
    第1の記号定義が見つかった場合に、前記再配置すべき
    記号に一致する前記第1の記号定義のアドレスを用いて
    前記再配置すべき記号の再配置を行うステップと、を備
    える方法。
  8. 【請求項8】 クレーム7に記載の方法であって、さら
    に、 前記第4のリスト内で識別される前記ライブラリプログ
    ラムのそれぞれに含まれている前記記号テーブルを用い
    て、前記第4のリスト内で識別された前記ライブラリプ
    ログラムのうちの第1番目のライブラリプログラムから
    順番に、前記記号テーブルの各記号を前記指定のプログ
    ラムイメージの記号テーブルと比較して、前記記号が前
    記指定のプログラムイメージの記号テーブル内の記号と
    一致する場合には、前記指定のプログラムイメージの記
    号テーブル内の記号を無効な記号としてマークするステ
    ップと、 前記記号テーブルのそれぞれに含まれる各記号を、前記
    第4のリスト内で識別された前記ライブラリプログラム
    の前記記号テーブルであって第4のリストにおいてチェ
    ック中の記号テーブルよりも高く、かつ、既にチェック
    済みとしてマークされた前記記号テーブルのすべてと比
    較するステップと、 第4のリスト内で識別された前記ライブラリプログラム
    のそれぞれに含まれている前記記号テーブルのチェック
    が終了した時点で、前記第4のリスト内の前記ライブラ
    リプログラムの識別子を、記号テーブルがチェック済み
    である識別子としてマークするステップと、 第4のリスト内で識別された前記ライブラリプログラム
    のそれぞれに含まれている前記記号テーブル内の前記記
    号を、前記記号テーブルすべての比較が終了するまで、
    同様の順序で比較するステップと、を備える方法。
  9. 【請求項9】 クレーム8に記載の方法であって、さら
    に、 前記第4のリスト内で識別された前記プログラムのそれ
    ぞれの前記再配置テーブルを用いて、前記第4のリスト
    内で識別された前記プログラムのうちの第1番目のプロ
    グラムから順番に、前記再配置テーブルをそれぞれ走査
    して未定義の記号を探し出すステップと、 前記再配置テーブルのうちのひとつの中の記号が定義済
    みの記号であれば前記定義済みの記号をチェックし、前
    記定義済みの記号が無効な記号としてマークされている
    場合には、前記定義済みの無効とマークされている記号
    の再配置可能なアドレスを取り消すステップと、 各未定義の記号と、再配置可能なアドレスが取り消され
    た各定義済みの記号とを検索アーギュメントとして用い
    て、前記指定のプログラムイメージの前記記号テーブル
    と第4のリスト内で識別された前記ライブラリプログラ
    ムのそれぞれに含まれている前記記号テーブルとをチェ
    ックして前記検索アーギュメントに一致する記号を探
    し、前記一致している記号が見つかった場合には、前記
    見つかった記号のアドレスを用いて前記検索アーギュメ
    ントとして用いた前記記号用のアドレス再配置を行うス
    テップと、 前記検索アーギュメントに一致する記号が見つからない
    場合に例外メッセージを通知するステップと、を備える
    方法。
  10. 【請求項10】 クレーム9に記載の方法であって、さ
    らに、 プログラム識別子のキャッシュ化可能リストを作成し、
    前記指定のプログラムイメージと前記第4のリスト内で
    識別された前記ライブラリプログラムのそれぞれのコピ
    ーを前記キャッシュ化可能リストに含めるステップと、 前記イメージキャッシュに前記プログラム識別子のキャ
    ッシュ化可能リストを組み込むステップと、 前記プログラム識別子のキャッシュ化可能リストを前記
    リンク方法の呼び出しがあったときに戻すステップと、
    を備える方法。
  11. 【請求項11】 計算システム内で、指定のプログラム
    イメージと関連ライブラリプログラムとを実行可能なプ
    ログラムイメージに動的にリンクする方法において、 前記指定のプログラムイメージを表すパラメータと、前
    記指定のプログラムイメージに関連するライブラリプロ
    グラムを表すパラメータを使ってリンク方法を呼び出す
    ステップと、 ライブラリプログラムキャッシュをチェックして、前記
    ライブラリプログラムキャッシュに前記関連ライブラリ
    プログラムが含まれる場合には、前記ライブラリプログ
    ラムキャッシュに基づいて、ライブラリプログラム識別
    子のリストと関連アドレスとを作成し、 前記ライブラリプログラムをそれぞれ互いに、また、前
    記指定のプログラムイメージにリンクし、 前記プログラム識別子のリストに基づいて、前記関連ア
    ドレスにおいて、前記プログラム識別子で識別されるプ
    ログラムをマッピングし、 前記指定のプログラムイメージと前記関連ライブラリプ
    ログラムとを実行可能なプログラムイメージに動的にリ
    ンクする方法。
  12. 【請求項12】 アプリケーションプログラムと、ライ
    ブラリプログラムと、オペレーティングシステムのため
    のデータ処理用ダイナミックリンキングシステムにおい
    て、 リンクしたアプリケーションプログラムと前記アプリケ
    ーションプログラムの関連ライブラリプログラムのイメ
    ージをキャッシュ化するためのイメージキャッシュと、 前記イメージキャッシュに接続されて、前記イメージキ
    ャッシュを検索し、前記指定のアプリケーションプログ
    ラムのリンク要求が出されたときに、指定のアプリケー
    ションプログラムに一致するリンク済みアプリケーショ
    ンプログラムイメージが前記イメージキャッシュ内に含
    まれているかどうかを判断する第1の検索機関と、 前記第1の検索機関に接続されて、前記指定のアプリケ
    ーションプログラムの前記リンク要求に対して応答する
    第1のコミュニケーション機関と、を備え、ただし、前
    記イメージキャッシュ内に前記指定のアプリケーション
    プログラムに一致するリンクアプリケーションプログラ
    ムイメージが存在する場合には、前記応答にはプログラ
    ム識別子のリストと、前記イメージキャッシュから得ら
    れた前記プログラム識別子に関連するアドレスとが含ま
    れるデータ処理用ダイナミックリンキングシステム。
  13. 【請求項13】 クレーム12に記載のデータ処理用ダ
    イナミックリンキングシステムであって、さらに、 前記イメージキャッシュに接続され、ライブラリプログ
    ラムをキャッシュ化するライブラリプログラムキャッシ
    ュと、 前記ライブラリプログラムキャッシュに接続され、前記
    ライブラリプログラムキャッシュを検索し、検索アーギ
    ュメントとして用いられる指定のライブラリプログラム
    に一致するライブラリプログラムが前記ライブラリプロ
    グラムキャッシュに含まれているかを判断する第2の検
    索機関と、を備えるデータ処理用ダイナミックリンキン
    グシステム。
  14. 【請求項14】 アプリケーションプログラムと、ライ
    ブラリプログラムと、オペレーティングシステムのため
    のデータ処理用ダイナミックリンキングシステムにおい
    て、 部分リンクされたライブラリプログラムをキャッシュ化
    するライブラリプログラムキャッシュと、 前記ライブラリプログラムキャッシュに接続され、前記
    指定のアプリケーションプログラムのリンク要求が出さ
    れたときに、前記ライブラリプログラムキャッシュを検
    索し、指定のアプリケーションプログラムが要求する部
    分リンク済みライブラリプログラムを前記ライブラリプ
    ログラムキャッシュが含んでいるかどうかを判断する第
    1の検索機関と、 前記第1の検索機関に接続されて、前記ライブラリプロ
    グラムキャッシュ内に探し出したライブラリプログラム
    が含まれていれば前記指定のアプリケーションプログラ
    ムに前記探し出したライブラリプログラムをリンクする
    第1のリンク機関と、を備えるデータ処理用ダイナミッ
    クリンキングシステム。
JP6097874A 1993-04-13 1994-04-13 指定のプログラムイメージと関連ライブラリプログラムとを実行可能なアプリケーションプログラムイメージに動的にリンクする方法 Pending JPH07160483A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/046,827 US5475840A (en) 1993-04-13 1993-04-13 High performance dynamic linking through caching
US046827 1993-04-13

Publications (1)

Publication Number Publication Date
JPH07160483A true JPH07160483A (ja) 1995-06-23

Family

ID=21945612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6097874A Pending JPH07160483A (ja) 1993-04-13 1994-04-13 指定のプログラムイメージと関連ライブラリプログラムとを実行可能なアプリケーションプログラムイメージに動的にリンクする方法

Country Status (4)

Country Link
US (1) US5475840A (ja)
EP (1) EP0620522B1 (ja)
JP (1) JPH07160483A (ja)
DE (1) DE69427174T2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152641A (ja) * 1993-11-29 1995-06-16 Fujitsu Ltd プログラムキャッシュ装置
JPH08241216A (ja) * 1995-01-06 1996-09-17 Mitsubishi Electric Corp 計算機システム
JP2007249519A (ja) * 2006-03-15 2007-09-27 Hitachi Software Eng Co Ltd 任意アプリケーションによる外部記憶装置への情報持ち出し制御方法
US7930710B2 (en) 2006-05-16 2011-04-19 Panasonic Corporation Program start-up unit, program start-up method, recording medium with start-up processing program recorded, and integrated circuit
US8402410B2 (en) 2007-08-27 2013-03-19 Samsung Electronics Co., Ltd. Method and apparatus for managing configuration memory of reconfigurable hardware

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3553991B2 (ja) * 1993-05-27 2004-08-11 キヤノン株式会社 プログラム制御方法
US5748961A (en) * 1993-07-12 1998-05-05 Digital Equipment Corporation Efficient method and apparatus for compiling and linking modules of computer code in a large software system
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
JPH07327093A (ja) * 1994-06-01 1995-12-12 Ekushingu:Kk データ伝送装置
US5797015A (en) * 1995-04-18 1998-08-18 Pitney Bowes Inc. Method of customizing application software in inserter systems
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
US5797014A (en) * 1995-12-14 1998-08-18 International Business Machines Corporation Method for reducing processor cycles used for global offset table address computation in a position independent shared library
US5774722A (en) * 1995-12-14 1998-06-30 International Business Machines Corporation Method for efficient external reference resolution in dynamically linked shared code libraries in single address space operating systems
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6466947B2 (en) * 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6003095A (en) * 1996-10-31 1999-12-14 International Business Machines Corporation Apparatus and method for demand loading a dynamic link library
US6769126B1 (en) 1996-12-10 2004-07-27 International Business Machines Corporation Apparatus and method for demand load analysis
US5946486A (en) * 1996-12-10 1999-08-31 International Business Machines Corporation Apparatus and method for tracing entries to or exits from a dynamic link library
US6052778A (en) * 1997-01-13 2000-04-18 International Business Machines Corporation Embedded system having dynamically linked dynamic loader and method for linking dynamic loader shared libraries and application programs
US5767978A (en) * 1997-01-21 1998-06-16 Xerox Corporation Image segmentation system
US6363436B1 (en) 1997-01-27 2002-03-26 International Business Machines Corporation Method and system for loading libraries into embedded systems
US7203769B2 (en) * 1997-03-14 2007-04-10 International Business Machines Corporation Bootstrapping technique for distributed object client systems
US5933630A (en) * 1997-06-13 1999-08-03 Acceleration Software International Corporation Program launch acceleration using ram cache
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6421827B1 (en) 1997-12-17 2002-07-16 International Business Machines Corporation System and method for detecting and reordering loading patterns
US6292843B1 (en) 1998-01-16 2001-09-18 International Business Machines Corporation Quick loading of run time dynamic link library for OS/2
EP1058883A2 (en) 1998-02-26 2000-12-13 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US6604127B2 (en) * 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
CN1292115A (zh) 1998-02-26 2001-04-18 太阳微系统公司 分布系统中动态验证信息的装置和方法
US20020046228A1 (en) * 1998-03-20 2002-04-18 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6591337B1 (en) 1999-04-05 2003-07-08 Lsi Logic Corporation Method and apparatus for caching objects in a disparate management environment
US6901518B1 (en) 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US6845393B1 (en) 1999-06-14 2005-01-18 Sun Microsystems, Inc. Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and services
US6928641B1 (en) * 1999-10-08 2005-08-09 Texas Instruments Incorporated Method and system for far branch and call instructions
US6542167B1 (en) * 2000-01-28 2003-04-01 Wind River Systems, Inc. System and method for flexible software linking
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
AU2001259342A1 (en) 2000-05-15 2001-11-26 Superspeed Software, Inc. System and method for high-speed substitute cache
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US20020129336A1 (en) * 2000-12-19 2002-09-12 Bolding Joe D. Automatic symbol table selection in a multi-cell environment
US7296275B2 (en) 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20030009750A1 (en) * 2001-07-09 2003-01-09 Robert Hundt Optimizing an executable computer program having linkage functions
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US20030051029A1 (en) 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US7805710B2 (en) * 2003-07-15 2010-09-28 International Business Machines Corporation Shared code caching for program code conversion
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7231632B2 (en) * 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
KR100617698B1 (ko) * 2004-06-07 2006-08-28 삼성전자주식회사 기능별 데이터 저장을 위한 바이너리 파일 생성 장치 및방법과 그 방법이 저장된 컴퓨터 판독 가능한 저장 매체
US20060075394A1 (en) * 2004-10-01 2006-04-06 Tatsuya Iwamoto Dynamic loading and unloading for processing unit
US7930709B2 (en) * 2006-10-02 2011-04-19 Red Hat, Inc. Methods and apparatus for a dynamic linker speed up
US8274520B2 (en) * 2007-06-08 2012-09-25 Apple Inc. Facilitating caching in an image-processing system
US10410117B2 (en) 2008-09-21 2019-09-10 Brainchip, Inc. Method and a system for creating dynamic neural function libraries
US9218373B2 (en) * 2012-10-10 2015-12-22 Business Objects Software Ltd. In-memory data profiling
US10606611B2 (en) 2017-06-02 2020-03-31 Apple Inc. Techniques for performing dynamic linking

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5269021A (en) * 1989-10-12 1993-12-07 Texas Instruments Incorporated Multiprocessor software interface for a graphics processor subsystem employing partially linked dynamic load modules which are downloaded and fully linked at run time
JPH04178731A (ja) * 1990-11-13 1992-06-25 Hitachi Ltd オブジェクト指向処理系におけるメソッド・キャッシュ情報の再利用方式

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152641A (ja) * 1993-11-29 1995-06-16 Fujitsu Ltd プログラムキャッシュ装置
JPH08241216A (ja) * 1995-01-06 1996-09-17 Mitsubishi Electric Corp 計算機システム
JP2007249519A (ja) * 2006-03-15 2007-09-27 Hitachi Software Eng Co Ltd 任意アプリケーションによる外部記憶装置への情報持ち出し制御方法
US7930710B2 (en) 2006-05-16 2011-04-19 Panasonic Corporation Program start-up unit, program start-up method, recording medium with start-up processing program recorded, and integrated circuit
US8402410B2 (en) 2007-08-27 2013-03-19 Samsung Electronics Co., Ltd. Method and apparatus for managing configuration memory of reconfigurable hardware

Also Published As

Publication number Publication date
DE69427174D1 (de) 2001-06-13
DE69427174T2 (de) 2002-01-03
EP0620522A3 (en) 1996-05-01
US5475840A (en) 1995-12-12
EP0620522B1 (en) 2001-05-09
EP0620522A2 (en) 1994-10-19

Similar Documents

Publication Publication Date Title
JPH07160483A (ja) 指定のプログラムイメージと関連ライブラリプログラムとを実行可能なアプリケーションプログラムイメージに動的にリンクする方法
US5727147A (en) System and method for resolving symbolic references to externally located program files
US6876996B2 (en) Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
US5414854A (en) Object-oriental system for managing shared libraries
US7644402B1 (en) Method for sharing runtime representation of software components across component loaders
JP3550151B2 (ja) ロード・リンキング装置および方法
KR100450312B1 (ko) 읽기전용메모리에클래스들을로딩하기위한방법및시스템
US5581765A (en) System for combining a global object identifier with a local object address in a single object pointer
US6112025A (en) System and method for dynamic program linking
JP4571710B2 (ja) ディスパッチテーブル構造のための方法と装置
EP0778521B1 (en) System and method for runtime optimization of private variable function calls in a secure interpreter
US7200840B2 (en) Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture
JP2013514569A (ja) 静的に型付けされたクラスベースのオブジェクト指向ソフトウェアのノンブロッキング動的更新の方法、コンピュータ・プログラム製品、およびシステム
US6243668B1 (en) Instruction set interpreter which uses a register stack to efficiently map an application register state
EP1374044A2 (en) Lazy compilation of template-generated classes in dynamic compilation execution environments
JPH11327916A (ja) コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術
JPH1063561A (ja) データベース・オブジェクト処理命令を挿入するためにデータベース・アクセス方法を自動的に変更するシステム及び方法
JPH0836488A (ja) ダイナミック・パッチングを使用するランタイム・エラー・チェック方法と装置
US20080005529A1 (en) Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
US9411617B2 (en) System and method for matching synthetically generated inner classes and methods
US7406687B1 (en) Sharing runtime representation of software component methods across component loaders
US6810519B1 (en) Achieving tight binding for dynamically loaded software modules via intermodule copying
US20080005528A1 (en) Methods, Systems, and Computer Program Products for Using a Structured Data Storage System to Provide Access to Addressable Entities in Virtual Address Space
JPH08512151A (ja) 一次記憶装置方式のデータベースにおけるデータアクセス方法
Lyu et al. A procedure-based dynamic software update

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041116

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050712

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051012

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20051017

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060314