JP2841363B2 - 外部モジュール獲得方式 - Google Patents
外部モジュール獲得方式Info
- Publication number
- JP2841363B2 JP2841363B2 JP63015198A JP1519888A JP2841363B2 JP 2841363 B2 JP2841363 B2 JP 2841363B2 JP 63015198 A JP63015198 A JP 63015198A JP 1519888 A JP1519888 A JP 1519888A JP 2841363 B2 JP2841363 B2 JP 2841363B2
- Authority
- JP
- Japan
- Prior art keywords
- module
- external
- main memory
- symbol
- load
- 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.)
- Expired - Lifetime
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は外部モジュール獲得方式に関し、特に実行中
のロードモジュールがオブジェクトモジュール格納ファ
イル内に存在するオブジェクトモジュールを動的にリン
クして自ロードモジュールの1モジュールとして実行可
能とする外部モジュール獲得方式に関する。
のロードモジュールがオブジェクトモジュール格納ファ
イル内に存在するオブジェクトモジュールを動的にリン
クして自ロードモジュールの1モジュールとして実行可
能とする外部モジュール獲得方式に関する。
従来、この種の外部モジュール獲得方式としては、実
行中のロードモジュールが他のロードモジュールを自ロ
ードモジュールの1モジュールとしてリンクして動作さ
せる方式がある。
行中のロードモジュールが他のロードモジュールを自ロ
ードモジュールの1モジュールとしてリンクして動作さ
せる方式がある。
また、実行中のロードモジュールが自ロードモジュー
ルを格納したファイルおよびリンクすべきオブジェクト
モジュールを格納したファイルを入力ファイルとして静
的リンカを起動して、その結果としてファイルに出力さ
れたロードモジュールと自ロードモジュールとの差異を
自ロードモジュールに対して反映する方法を用いてオブ
ジェクトモジュールを自ロードモジュールの1モジュー
ルとして実行可能とする方式がある。
ルを格納したファイルおよびリンクすべきオブジェクト
モジュールを格納したファイルを入力ファイルとして静
的リンカを起動して、その結果としてファイルに出力さ
れたロードモジュールと自ロードモジュールとの差異を
自ロードモジュールに対して反映する方法を用いてオブ
ジェクトモジュールを自ロードモジュールの1モジュー
ルとして実行可能とする方式がある。
上述した従来の外部モジュール獲得方式は、ロードモ
ジュールをリンクする方式の場合には、 (a) 主ロードモジュールにリンクされる各モジュー
ルがそれぞれロードモジュールを構成している必要があ
るので、利用者はロードモジュールの実行に先立ち、リ
ンクされる全てのロードモジュールを事前に作成してお
かなければならない、 (b) これらのロードモジュールのうちの複数が動的
なメモリ管理を行っているときには、それぞれ1つのロ
ードモジュールとしては何ら矛盾なく動作していたとし
ても、これらのロードモジュールをリンクしたことによ
り動的なメモリ管理の間に競合が発生する可能性が強
い、 等の欠点がある。
ジュールをリンクする方式の場合には、 (a) 主ロードモジュールにリンクされる各モジュー
ルがそれぞれロードモジュールを構成している必要があ
るので、利用者はロードモジュールの実行に先立ち、リ
ンクされる全てのロードモジュールを事前に作成してお
かなければならない、 (b) これらのロードモジュールのうちの複数が動的
なメモリ管理を行っているときには、それぞれ1つのロ
ードモジュールとしては何ら矛盾なく動作していたとし
ても、これらのロードモジュールをリンクしたことによ
り動的なメモリ管理の間に競合が発生する可能性が強
い、 等の欠点がある。
一方、実行時に静的リンカを起動する方式の場合に
は、 (c) 自ロードモジュールを格納したファイルを静的
リンカの入力とするので、このファイルは静的リンカの
再入力可能な形式を有している必要があり、一般にその
ようなロードモジュール格納ファイルは通常のロードモ
ジュール格納ファイルよりも大きなファイル資源を必要
とする、 (d) 静的リンカが出力したロードモジュールと自ロ
ードモジュールとの比較において、その増分のみからで
は新しく加わったオブジェクトモジュールの入口等は不
明であり、オブジェクトモジュール格納ファイルに対し
て何らかの解析が必要となるので、静的リンカの処理と
併せて入出力処理が多く行われることになり、外部モジ
ュールの獲得のために長い処理時間を必要とする、 等の欠点がある。
は、 (c) 自ロードモジュールを格納したファイルを静的
リンカの入力とするので、このファイルは静的リンカの
再入力可能な形式を有している必要があり、一般にその
ようなロードモジュール格納ファイルは通常のロードモ
ジュール格納ファイルよりも大きなファイル資源を必要
とする、 (d) 静的リンカが出力したロードモジュールと自ロ
ードモジュールとの比較において、その増分のみからで
は新しく加わったオブジェクトモジュールの入口等は不
明であり、オブジェクトモジュール格納ファイルに対し
て何らかの解析が必要となるので、静的リンカの処理と
併せて入出力処理が多く行われることになり、外部モジ
ュールの獲得のために長い処理時間を必要とする、 等の欠点がある。
本発明の目的は、上述の点に鑑み、オブジェクトモジ
ュール格納ファイル内に存在するオブジェクトモジュー
ルを動的に主記憶内のロードモジュールにリンクしてオ
ブジェクトモジュールをロードモジュールを形成する1
モジュールとして実行することができるようにした外部
モジュール獲得方式を提供することにある。
ュール格納ファイル内に存在するオブジェクトモジュー
ルを動的に主記憶内のロードモジュールにリンクしてオ
ブジェクトモジュールをロードモジュールを形成する1
モジュールとして実行することができるようにした外部
モジュール獲得方式を提供することにある。
本発明の外部モジュール獲得方式は、主記憶上にロー
ドされて実行中のロードモジュールが外部記憶装置内に
存在する外部モジュールを前記主記憶上にロードしてこ
の外部モジュールを自ロードモジュールを形成する1モ
ジュールとして実行可能とする外部モジュール獲得方式
において、前記外部モジュールとしてのオブジェクトモ
ジュールを格納するファイルが有する静的リンカのため
の情報を基に前記主記憶内に存在する外部シンボルを記
録する外部シンボル管理表,この外部シンボル管理表を
管理するハッシュ表および未定義の外部シンボルにそれ
ぞれ対応してこれら外部シンボルへの参照箇所をリスト
形式につなぐ未定義参照チェインを用いて未定義の外部
シンボルの参照の解決を行い前記オブジェクトモジュー
ルを前記主記憶内に再配置する動的リンク手段と、この
動的リンク手段によって再配置された前記オブジェクト
モジュールの外部シンボル名、記述言語名、返却データ
タイプ、およびパラメータデータタイプを含む情報を入
力し、該情報を基にして前記オブジェクトモジュールを
呼び出すためのインタフェースルーチンを作成して前記
主記憶内に出力し、さらに該主記憶内における前記イン
タフェースルーチンの先頭アドレスを前記ロードモジュ
ールに記録する入口名登録手段とを有し、前記インタフ
ェースルーチンが、実行中の前記ロードモジュールから
前記オブジェクトモジュールの起動がかけられたときに
制御を渡され、前記ロードモジュールから渡されたパラ
メータをもとに呼出しパラメータを作成し、前記オブジ
ェクトモジュールをサブルーチンを呼出しし、前記オブ
ジェクトモジュールから返されたデータをもとに前記ロ
ードモジュールへの返却値を作成し、前記ロードモジュ
ールに制御を戻す 〔作用〕 本発明の外部モジュール獲得方式では、動的リンク手
段が外部モジュールとしてのオブジェクトモジュールを
格納するファイルが有する静的リンカのための情報を基
に主記憶内に存在する外部シンボルを記録する外部シン
ボル管理表,外部シンボル管理表を管理するハッシュ表
および未定義の外部シンボルにそれぞれ対応してこれら
外部シンボルへの参照箇所をリスト形式につなぐ未定義
参照チェインを用いて未定義の外部シンボルの参照の解
決を行いオブジェクトモジュールを主記憶内に再配置
し、入口名登録手段が動的リンク手段によって再配置さ
れたオブジェクトモジュールをロードモジュールを形成
する1モジュールとして実行可能とするためのインタフ
ェースルーチンを出力し、インタフェースルーチンが、
実行中のロードモジュールからオブジェクトモジュール
の起動がかけられたときに制御を渡され、ロードモジュ
ールから渡されパラメータをもとに呼出しパラメータを
作成し、オブジェクトモジュールをサブルーチン呼出し
し、オブジェクトモジュールから返されたデータをもと
にロードモジュールへの返却値を作成し、ロードモジュ
ールに制御を戻す 〔実施例〕 次に、本発明について図面を参照して詳細に説明す
る。
ドされて実行中のロードモジュールが外部記憶装置内に
存在する外部モジュールを前記主記憶上にロードしてこ
の外部モジュールを自ロードモジュールを形成する1モ
ジュールとして実行可能とする外部モジュール獲得方式
において、前記外部モジュールとしてのオブジェクトモ
ジュールを格納するファイルが有する静的リンカのため
の情報を基に前記主記憶内に存在する外部シンボルを記
録する外部シンボル管理表,この外部シンボル管理表を
管理するハッシュ表および未定義の外部シンボルにそれ
ぞれ対応してこれら外部シンボルへの参照箇所をリスト
形式につなぐ未定義参照チェインを用いて未定義の外部
シンボルの参照の解決を行い前記オブジェクトモジュー
ルを前記主記憶内に再配置する動的リンク手段と、この
動的リンク手段によって再配置された前記オブジェクト
モジュールの外部シンボル名、記述言語名、返却データ
タイプ、およびパラメータデータタイプを含む情報を入
力し、該情報を基にして前記オブジェクトモジュールを
呼び出すためのインタフェースルーチンを作成して前記
主記憶内に出力し、さらに該主記憶内における前記イン
タフェースルーチンの先頭アドレスを前記ロードモジュ
ールに記録する入口名登録手段とを有し、前記インタフ
ェースルーチンが、実行中の前記ロードモジュールから
前記オブジェクトモジュールの起動がかけられたときに
制御を渡され、前記ロードモジュールから渡されたパラ
メータをもとに呼出しパラメータを作成し、前記オブジ
ェクトモジュールをサブルーチンを呼出しし、前記オブ
ジェクトモジュールから返されたデータをもとに前記ロ
ードモジュールへの返却値を作成し、前記ロードモジュ
ールに制御を戻す 〔作用〕 本発明の外部モジュール獲得方式では、動的リンク手
段が外部モジュールとしてのオブジェクトモジュールを
格納するファイルが有する静的リンカのための情報を基
に主記憶内に存在する外部シンボルを記録する外部シン
ボル管理表,外部シンボル管理表を管理するハッシュ表
および未定義の外部シンボルにそれぞれ対応してこれら
外部シンボルへの参照箇所をリスト形式につなぐ未定義
参照チェインを用いて未定義の外部シンボルの参照の解
決を行いオブジェクトモジュールを主記憶内に再配置
し、入口名登録手段が動的リンク手段によって再配置さ
れたオブジェクトモジュールをロードモジュールを形成
する1モジュールとして実行可能とするためのインタフ
ェースルーチンを出力し、インタフェースルーチンが、
実行中のロードモジュールからオブジェクトモジュール
の起動がかけられたときに制御を渡され、ロードモジュ
ールから渡されパラメータをもとに呼出しパラメータを
作成し、オブジェクトモジュールをサブルーチン呼出し
し、オブジェクトモジュールから返されたデータをもと
にロードモジュールへの返却値を作成し、ロードモジュ
ールに制御を戻す 〔実施例〕 次に、本発明について図面を参照して詳細に説明す
る。
第1図は、本発明の一実施例の外部モジュール獲得方
式の構成を示すブロック図である。本実施例の外部モジ
ュール獲得方式は、主記憶1と、主記憶1上にロードさ
れているロードモジュール2と、外部記憶装置上のオブ
ジェクトモジュール格納ファイル30内に格納されている
オブジェクトモジュール3と、オブジェクトモジュール
格納ファイル30が有する静的リンカ(図示せず)のため
の情報を基に外部シンボル管理表6,ハッシュ表5および
未定義参照チェイン9(第3図および第8図参照)を用
いて未定義の外部シンボルの参照の解決を行いオブジェ
クトモジュール3を主記憶1内に再配置する動的リンク
手段4と、外部シンボル管理表6を管理するハッシュ表
5と、主記憶1内に存在する外部シンボルを記録する外
部シンボル管理表6と、インタフェースルーチン8を出
力する入口名登録手段7と、動的リンク手段4によって
再配置されたオブジェクトモジュール3を自ロードモジ
ュール2を形成する1モジュールとして実行可能とする
ためのインタフェースルーチン8と、未定義の外部シン
ボルにそれぞれ対応しこれら外部シンボルへの参照箇所
をリスト形式につなぐ未定義参照チェイン9とから、そ
の主要部が構成されている。
式の構成を示すブロック図である。本実施例の外部モジ
ュール獲得方式は、主記憶1と、主記憶1上にロードさ
れているロードモジュール2と、外部記憶装置上のオブ
ジェクトモジュール格納ファイル30内に格納されている
オブジェクトモジュール3と、オブジェクトモジュール
格納ファイル30が有する静的リンカ(図示せず)のため
の情報を基に外部シンボル管理表6,ハッシュ表5および
未定義参照チェイン9(第3図および第8図参照)を用
いて未定義の外部シンボルの参照の解決を行いオブジェ
クトモジュール3を主記憶1内に再配置する動的リンク
手段4と、外部シンボル管理表6を管理するハッシュ表
5と、主記憶1内に存在する外部シンボルを記録する外
部シンボル管理表6と、インタフェースルーチン8を出
力する入口名登録手段7と、動的リンク手段4によって
再配置されたオブジェクトモジュール3を自ロードモジ
ュール2を形成する1モジュールとして実行可能とする
ためのインタフェースルーチン8と、未定義の外部シン
ボルにそれぞれ対応しこれら外部シンボルへの参照箇所
をリスト形式につなぐ未定義参照チェイン9とから、そ
の主要部が構成されている。
第2図を参照すると、外部シンボル管理表6は、シン
ボル名アドレス61と、モジュールの入口アドレスまたは
シンボルの先頭アドレスもしくは未定義参照チェイン9
の先頭アドレスを格納する参照解決用エントリ62と、参
照解決用エントリ62の内容の種別を示す種別標識63と、
同一ハッシュ値を有する外部シンボルに対する外部シン
ボル管理表6をつなぐハッシュチェインエントリ64とか
ら構成されている。
ボル名アドレス61と、モジュールの入口アドレスまたは
シンボルの先頭アドレスもしくは未定義参照チェイン9
の先頭アドレスを格納する参照解決用エントリ62と、参
照解決用エントリ62の内容の種別を示す種別標識63と、
同一ハッシュ値を有する外部シンボルに対する外部シン
ボル管理表6をつなぐハッシュチェインエントリ64とか
ら構成されている。
第3図を参照すると、未定義参照チェイン9は、次エ
ントリアドレス91と、参照箇所アドレス92とからなるエ
ントリがリスト形式につながれて構成される。なお、未
定義参照チェイン9の終端エントリは、次エントリアド
レス91が0となっていることにより判定される。
ントリアドレス91と、参照箇所アドレス92とからなるエ
ントリがリスト形式につながれて構成される。なお、未
定義参照チェイン9の終端エントリは、次エントリアド
レス91が0となっていることにより判定される。
第4図を参照すると、動的リンク手段4における処理
は、初期化済判定ステップ41と、初期化処理ステップ42
と、参照解決ステップ43と、再配置ステップ44とからな
る。
は、初期化済判定ステップ41と、初期化処理ステップ42
と、参照解決ステップ43と、再配置ステップ44とからな
る。
第5図を参照すると、入口名登録手段7における処理
は、外部シンボル名等入力ステップ71と、インタフェー
スルーチン出力ステップ72と、インタフェースルーチン
記録ステップ73とからなる。
は、外部シンボル名等入力ステップ71と、インタフェー
スルーチン出力ステップ72と、インタフェースルーチン
記録ステップ73とからなる。
第6図を参照すると、インタフェースルーチン8にお
ける処理は、呼出しパラメータ作成ステップ81と、オブ
ジェクトモジュール呼出しステップ82と、返却値作成ス
テップ83とからなる。なお、インタフェースルーチン8
に、必要に応じてレジスタの退避および復活,例外ハン
ドラの設定および解除等を行う処理を付加することは容
易である。
ける処理は、呼出しパラメータ作成ステップ81と、オブ
ジェクトモジュール呼出しステップ82と、返却値作成ス
テップ83とからなる。なお、インタフェースルーチン8
に、必要に応じてレジスタの退避および復活,例外ハン
ドラの設定および解除等を行う処理を付加することは容
易である。
次に、このように構成された本実施例の外部モジュー
ル獲得方式の動作について、第7図〜第9図を参照しな
がら説明する。
ル獲得方式の動作について、第7図〜第9図を参照しな
がら説明する。
いま、主記憶1にロードモジュール2がロードされて
動作していて、ロードモジュール2はオブジェクトモジ
ュール3に関する何らの情報も有していないものとす
る。
動作していて、ロードモジュール2はオブジェクトモジ
ュール3に関する何らの情報も有していないものとす
る。
ロードモジュール2の動作に伴いオブジェクトモジュ
ール3を獲得するようにとの指示があると、動的リンク
手段4が起動される。
ール3を獲得するようにとの指示があると、動的リンク
手段4が起動される。
動的リンク手段4は、まず初期化処理が済んでいるか
否かを確認する(ステップ41)。確認の方法としては種
々の方法が考えられるが、本実施例では初期化完了フラ
グ(図示せず)を設定し、その値を確認する方法が用い
られている。
否かを確認する(ステップ41)。確認の方法としては種
々の方法が考えられるが、本実施例では初期化完了フラ
グ(図示せず)を設定し、その値を確認する方法が用い
られている。
初期化処理が済んでいない場合には、動的リンク手段
4は、第7図に示すように、初期化処理として、ハッシ
ュ表5の作成と、ロードモジュール2内に入口を有しか
つ外部モジュールと共有すべきモジュール(例えば、メ
モリ管理モジュール21,I/O(入出力)モジュール22等)
が有する外部シンボルに対する外部シンボル管理表6の
作成とを行い、初期化完了フラグを初期化済を示す値に
セットする(ステップ42)。
4は、第7図に示すように、初期化処理として、ハッシ
ュ表5の作成と、ロードモジュール2内に入口を有しか
つ外部モジュールと共有すべきモジュール(例えば、メ
モリ管理モジュール21,I/O(入出力)モジュール22等)
が有する外部シンボルに対する外部シンボル管理表6の
作成とを行い、初期化完了フラグを初期化済を示す値に
セットする(ステップ42)。
ステップ41で初期化処理が済んでいた場合には、動的
リンク手段4はステップ42をスキップする。
リンク手段4はステップ42をスキップする。
次に、動的リンク手段4は、主記憶1上にオブジェク
トモジュール3をロードするための領域を確保し、獲得
対象となるオブジェクトモジュール3を格納したオブジ
ェクトモジュール格納ファイル30から静的リンカのため
の情報以外の部分、すなわちオブジェクトモジュール3
の本体(以下、単にオブジェクトモジュールと称する)
をロードする。
トモジュール3をロードするための領域を確保し、獲得
対象となるオブジェクトモジュール3を格納したオブジ
ェクトモジュール格納ファイル30から静的リンカのため
の情報以外の部分、すなわちオブジェクトモジュール3
の本体(以下、単にオブジェクトモジュールと称する)
をロードする。
続いて、動的リンク手段4は、オブジェクトモジュー
ル格納ファイル30に記録されている静的リンカのための
情報に基づいて、オブジェクトモジュール3が有する外
部シンボルおよびオブジェクトモジュール3から参照し
ている外部シンボルに対する外部シンボル管理表6を作
成および更新する(ステップ43)。
ル格納ファイル30に記録されている静的リンカのための
情報に基づいて、オブジェクトモジュール3が有する外
部シンボルおよびオブジェクトモジュール3から参照し
ている外部シンボルに対する外部シンボル管理表6を作
成および更新する(ステップ43)。
この外部シンボル管理表6の作成および更新処理につ
いて詳細に説明すると、外部シンボルの参照の解決にお
いて次の〜の場合がある。
いて詳細に説明すると、外部シンボルの参照の解決にお
いて次の〜の場合がある。
主記憶1上にすでにロードされているオブジェクト
モジュール3にはシンボルに関する情報がなく、新しく
ロードされたオブジェクトモジュール3内でシンボルが
定義されている場合。
モジュール3にはシンボルに関する情報がなく、新しく
ロードされたオブジェクトモジュール3内でシンボルが
定義されている場合。
この場合には、動的リンク手段4は、このシンボルに
対する外部シンボル管理表6を主記憶1上に割り付け、
シンボル名アドレス61を記入する。次に、オブジェクト
モジュール3の格納アドレスからシンボルの先頭アドレ
スを算出して参照解決用エントリ62に記入する。続い
て、種別標識63に定義済である旨を記入する。
対する外部シンボル管理表6を主記憶1上に割り付け、
シンボル名アドレス61を記入する。次に、オブジェクト
モジュール3の格納アドレスからシンボルの先頭アドレ
スを算出して参照解決用エントリ62に記入する。続い
て、種別標識63に定義済である旨を記入する。
主記憶1上にすでにロードされているオブジェクト
モジュール3にはシンボルに関する情報がなく、新しく
ロードされたオブジェクトモジュール3内でシンボルが
参照されている場合。
モジュール3にはシンボルに関する情報がなく、新しく
ロードされたオブジェクトモジュール3内でシンボルが
参照されている場合。
この場合には、動的リンク手段4は、の場合と同様
に、このシンボルに対する外部シンボル管理表6を主記
憶1上に割り付け、シンボル名アドレス61を記入し、参
照解決用エントリ62に0を記入し、種別標識63に未定義
である旨を記入する。
に、このシンボルに対する外部シンボル管理表6を主記
憶1上に割り付け、シンボル名アドレス61を記入し、参
照解決用エントリ62に0を記入し、種別標識63に未定義
である旨を記入する。
主記憶1上にすでにロードされているオブジェクト
モジュール3にはシンボルに対する定義があり、新しく
ロードされたオブジェクトモジュール3内でもシンボル
が定義されている場合。
モジュール3にはシンボルに対する定義があり、新しく
ロードされたオブジェクトモジュール3内でもシンボル
が定義されている場合。
この場合は通常は発生しないので、動的リンク手段4
は、利用者の指定誤りとして処理を中断する。
は、利用者の指定誤りとして処理を中断する。
主記憶1上にすでにロードされているオブジェクト
モジュール3にシンボルに対する定義があり、新しくロ
ードされたオブジェクトモジュール3内でシンボルが参
照されている場合。
モジュール3にシンボルに対する定義があり、新しくロ
ードされたオブジェクトモジュール3内でシンボルが参
照されている場合。
この場合には、動的リンク手段4は、後続する再配置
処理において実際のシンボルのアドレスを参照箇所に対
して記入するので(後記(2)参照)、ステップ23にお
いては処理を行わない。
処理において実際のシンボルのアドレスを参照箇所に対
して記入するので(後記(2)参照)、ステップ23にお
いては処理を行わない。
主記憶1上にすでにロードされているオブジェクト
モジュール3にシンボルに対する参照があり、新しくロ
ードされたオブジェクトモジュール3内でシンボルが定
義されている場合。
モジュール3にシンボルに対する参照があり、新しくロ
ードされたオブジェクトモジュール3内でシンボルが定
義されている場合。
この場合には、すでにロードされているオブジェクト
モジュール3の再配置処理において、シンボルへの参照
箇所が未定義参照チェイン9によって記録されている
(後記(3)参照)。
モジュール3の再配置処理において、シンボルへの参照
箇所が未定義参照チェイン9によって記録されている
(後記(3)参照)。
例えば、いま、第8図に示すように、主記憶1上にSY
M1なるシンボルへの参照が未定義状態で存在するものと
する。この状態に対して、第9図に示すように、シンボ
ルSYM1の定義を有するオブジェクトモジュール3を主記
憶1にロードすると、動的リンク手段4は、未定義参照
チェイン9の各エントリの参照箇所アドレス92が指示す
るアドレスにシンボルSYM1の先頭アドレスを記入する。
次に、シンボルSYM1に対する外部シンボル管理表6の参
照解決用エントリ62にもシンボルSYM1の先頭アドレスを
記入する。続いて、種別標識63を定義済である旨に更新
する。
M1なるシンボルへの参照が未定義状態で存在するものと
する。この状態に対して、第9図に示すように、シンボ
ルSYM1の定義を有するオブジェクトモジュール3を主記
憶1にロードすると、動的リンク手段4は、未定義参照
チェイン9の各エントリの参照箇所アドレス92が指示す
るアドレスにシンボルSYM1の先頭アドレスを記入する。
次に、シンボルSYM1に対する外部シンボル管理表6の参
照解決用エントリ62にもシンボルSYM1の先頭アドレスを
記入する。続いて、種別標識63を定義済である旨に更新
する。
主記憶1上にすでにロードされているオブジェクト
モジュール3にシンボルに対する参照があり、新しくロ
ードされたオブジェクトモジュール3内でもシンボルが
参照されている場合。
モジュール3にシンボルに対する参照があり、新しくロ
ードされたオブジェクトモジュール3内でもシンボルが
参照されている場合。
この場合には、動的リンク手段4は、後続する再配置
処理においてシンボルに対する未定義参照チェイン9を
延長するので(後記(3)参照)、ステップ43では何も
処理を行わない。
処理においてシンボルに対する未定義参照チェイン9を
延長するので(後記(3)参照)、ステップ43では何も
処理を行わない。
続いて、動的リンク手段4は、オブジェクトモジュー
ル格納ファイル30に静的リンカの入力情報となる再配置
のための情報が記録されているので、この情報を基に主
記憶1上のオブジェクトモジュール3に対して再配置処
理を行う(ステップ44)。
ル格納ファイル30に静的リンカの入力情報となる再配置
のための情報が記録されているので、この情報を基に主
記憶1上のオブジェクトモジュール3に対して再配置処
理を行う(ステップ44)。
再配置が必要になるのは、次の参照箇所の場合(1)
〜(3)に対してである。
〜(3)に対してである。
(1) 新しくロードされたオブジェクトモジュール3
自身内での参照の場合。
自身内での参照の場合。
この場合には、動的リンク手段4は、オブジェクトモ
ジュール3の先頭アドレスを参照箇所に記入されている
値、すなわちオブジェクトモジュール3からのオフセッ
ト値に加えて参照箇所に再記入する。
ジュール3の先頭アドレスを参照箇所に記入されている
値、すなわちオブジェクトモジュール3からのオフセッ
ト値に加えて参照箇所に再記入する。
(2) 参照解決処理の結果、新しくロードされたオブ
ジェクトモジュール3からの参照が主記憶1内に存在す
る外部シンボルを用いて解決された場合(前記参
照)。
ジェクトモジュール3からの参照が主記憶1内に存在す
る外部シンボルを用いて解決された場合(前記参
照)。
この場合には、動的リンク手段4は、参照箇所がどの
外部シンボルを参照しているのかをオブジェクトモジュ
ール格納ファイル30に記録されている再配置のための情
報から判定して対応する外部シンボル管理表6の種別標
識63を調べると外部シンボルが定義済であるので、参照
箇所に参照解決用エントリ62の内容を転記する。
外部シンボルを参照しているのかをオブジェクトモジュ
ール格納ファイル30に記録されている再配置のための情
報から判定して対応する外部シンボル管理表6の種別標
識63を調べると外部シンボルが定義済であるので、参照
箇所に参照解決用エントリ62の内容を転記する。
(3) 参照解決処理の結果、新しくロードされたオブ
ジェクトモジュール3からの参照が主記憶1内に存在す
る外部シンボルを用いても依然として主解決のままであ
り、未定義参照チェイン9を延長する必要がある場合
(前記参照)。
ジェクトモジュール3からの参照が主記憶1内に存在す
る外部シンボルを用いても依然として主解決のままであ
り、未定義参照チェイン9を延長する必要がある場合
(前記参照)。
この場合には、動的リンク手段4は、参照箇所がどの
外部シンボルを参照しているのかをオブジェクトモジュ
ール格納ファイル30に記録されている再配置のための情
報から判定して対応する外部シンボル管理表6の種別標
識63を調べると外部シンボルが未定義であるので、未定
義参照チェイン9の1エントリを主記憶1上に割り付
け、次エントリアドレス91に外部シンボル管理表6の参
照解決用エントリ62の内容を転記し、参照箇所アドレス
92に外部シンボルの参照箇所のアドレスを記入し、外部
シンボル管理表6の参照解決用エントリ62に未定義参照
チェイン9のエントリのアドレスを記入する。
外部シンボルを参照しているのかをオブジェクトモジュ
ール格納ファイル30に記録されている再配置のための情
報から判定して対応する外部シンボル管理表6の種別標
識63を調べると外部シンボルが未定義であるので、未定
義参照チェイン9の1エントリを主記憶1上に割り付
け、次エントリアドレス91に外部シンボル管理表6の参
照解決用エントリ62の内容を転記し、参照箇所アドレス
92に外部シンボルの参照箇所のアドレスを記入し、外部
シンボル管理表6の参照解決用エントリ62に未定義参照
チェイン9のエントリのアドレスを記入する。
以上により、動的リンク手段4の動作が完了する。
動的リンク手段4によって主記憶1上にロードされた
オブジェクトモジュール3は、参照の解決および再配置
は完了しているが、ロードモジュール2にはオブジェク
トモジュール3に対するパラメータの受け渡し方法等が
確立されていない。このため、動的リンク手段4の動作
が完了した直後の状態においては、ロードモジュール2
はオブジェクトモジュール3を自ロードモジュール2の
1モジュールとして実行することは不可能である。
オブジェクトモジュール3は、参照の解決および再配置
は完了しているが、ロードモジュール2にはオブジェク
トモジュール3に対するパラメータの受け渡し方法等が
確立されていない。このため、動的リンク手段4の動作
が完了した直後の状態においては、ロードモジュール2
はオブジェクトモジュール3を自ロードモジュール2の
1モジュールとして実行することは不可能である。
このため、動的リンク手段4の動作の完了に続いて入
口名登録手段7が起動される。
口名登録手段7が起動される。
入口名登録手段7は、まず、利用者からオブジェクト
モジュール3の外部シンボル名,記述言語名,返却デー
タタイプおよびパラメータデータタイプを入力する(ス
テップ71)。なお、オブジェクトモジュール3の記述言
語に応じてパラメータの受け渡しの方法が異なるので
(例えば、C言語ではパラメータ渡しは値渡しで行わ
れ、FORTRAN言語ではアドレス渡しで行われる)、イン
タフェースルーチン8はオブジェクトモジュール3の記
述言語に対応した呼出しを行う必要があり、このために
記述言語を情報として得ることは必須である。
モジュール3の外部シンボル名,記述言語名,返却デー
タタイプおよびパラメータデータタイプを入力する(ス
テップ71)。なお、オブジェクトモジュール3の記述言
語に応じてパラメータの受け渡しの方法が異なるので
(例えば、C言語ではパラメータ渡しは値渡しで行わ
れ、FORTRAN言語ではアドレス渡しで行われる)、イン
タフェースルーチン8はオブジェクトモジュール3の記
述言語に対応した呼出しを行う必要があり、このために
記述言語を情報として得ることは必須である。
次に、入口名登録手段7は、第1図に示すように、イ
ンタフェースルーチン8を主記憶1上に出力し(ステッ
プ72)、ロードモジュール2から先頭アドレスをポイン
トすることによりロードモジュール2にインタフェース
ルーチン8を記録する(ステップ73)。
ンタフェースルーチン8を主記憶1上に出力し(ステッ
プ72)、ロードモジュール2から先頭アドレスをポイン
トすることによりロードモジュール2にインタフェース
ルーチン8を記録する(ステップ73)。
次に、オブジェクトモジュール3をロードモジュール
2を形成する1モジュールとして実行する場合の動作に
ついて説明する。
2を形成する1モジュールとして実行する場合の動作に
ついて説明する。
実行中のロードモジュール2からオブジェクトモジュ
ール3の起動がかかると、インタフェースルーチン8に
制御が渡される。インタフェースルーチン8は、ロード
モジュール2から渡されたパラメータをもとに呼出しパ
ラメータを作成し(ステップ81)、オブジェクトモジュ
ール3をサブルーチン呼出しする(ステップ82)。オブ
ジェクトモジュール3の動作が終了してインタフェース
ルーチン8に制御が戻ってくると、インタフェースルー
チン8は、オブジェクトモジュール3から返されたデー
タをもとにロードモジュール2への返却値を作成し(ス
テップ83)、ロードモジュール2に制御を戻す。
ール3の起動がかかると、インタフェースルーチン8に
制御が渡される。インタフェースルーチン8は、ロード
モジュール2から渡されたパラメータをもとに呼出しパ
ラメータを作成し(ステップ81)、オブジェクトモジュ
ール3をサブルーチン呼出しする(ステップ82)。オブ
ジェクトモジュール3の動作が終了してインタフェース
ルーチン8に制御が戻ってくると、インタフェースルー
チン8は、オブジェクトモジュール3から返されたデー
タをもとにロードモジュール2への返却値を作成し(ス
テップ83)、ロードモジュール2に制御を戻す。
以上説明したように本発明は、オブジェクトモジュー
ル格納ファイル内に存在するオブジェクトモジュールを
動的に主記憶内のロードモジュールにリンクすることに
より、利用者は呼び出される外部モジュールをオブジェ
クトモジュールにしておくのみでよく、静的リンカを動
作させる必要がなく、その結果、必要なファイル資源は
オブジェクトモジュール格納ファイルのみで済むという
効果がある。
ル格納ファイル内に存在するオブジェクトモジュールを
動的に主記憶内のロードモジュールにリンクすることに
より、利用者は呼び出される外部モジュールをオブジェ
クトモジュールにしておくのみでよく、静的リンカを動
作させる必要がなく、その結果、必要なファイル資源は
オブジェクトモジュール格納ファイルのみで済むという
効果がある。
また、各モジュール間の参照が動的に解決されるの
で、主ロードモジュールで定義された外部シンボルを呼
び出された外部モジュールで参照することが可能とな
り、その結果、例えばメモリ管理モジュールを共有して
動作することにより同一プロセス空間で複数のモジュー
ルが動的なメモリ管理を行うことが可能になるという効
果がある。
で、主ロードモジュールで定義された外部シンボルを呼
び出された外部モジュールで参照することが可能とな
り、その結果、例えばメモリ管理モジュールを共有して
動作することにより同一プロセス空間で複数のモジュー
ルが動的なメモリ管理を行うことが可能になるという効
果がある。
さらに、インタフェースルーチンを介してロードされ
た外部モジュールを呼び出すようにしたことにより、利
用者は外部モジュールを呼び出す際の呼出し手順を一切
考慮する必要がないという効果がある。
た外部モジュールを呼び出すようにしたことにより、利
用者は外部モジュールを呼び出す際の呼出し手順を一切
考慮する必要がないという効果がある。
第1図は本発明の一実施例の外部モジュール獲得方式の
構成を示すブロック図、 第2図は第1図中の外部シンボル管理表の構成を示す
図、 第3図は未定義参照チェインの1エントリの構成を示す
図、 第4図は第1図中の動的リンク手段の処理を示す流れ
図、 第5図は第1図中の入口名登録手段の処理を示す流れ
図、 第6図は第1図中のインタフェースルーチンの処理を示
す流れ図、 第7図は第1図中の動的リンク手段による初期化処理を
説明するための図、 第8図は未定義な外部シンボルが存在する主記憶におけ
る未定義参照チェインの一例を示す図、 第9図は第8図に示した未定義な外部シンボルが再配置
処理により解消された状態を示す図である。 図において、 1……主記憶、 2……ロードモジュール、 3……オブジェクトモジュール、 4……動的リンク手段、 5……ハッシュ表、 6……外部シンボル管理表、 7……入口名登録手段、 8……インタフェースルーチン、 9……未定義参照チェイン、 21……メモリ管理モジュール、 22……I/Oモジュール、 30……オブジェクトモジュール格納ファイル、 61……シンボル名アドレス、 62……参照解決用エントリ、 63……種別標識、 64……ハッシュチェインエントリ、 91……次エントリアドレス、 92……参照箇所アドレスである。
構成を示すブロック図、 第2図は第1図中の外部シンボル管理表の構成を示す
図、 第3図は未定義参照チェインの1エントリの構成を示す
図、 第4図は第1図中の動的リンク手段の処理を示す流れ
図、 第5図は第1図中の入口名登録手段の処理を示す流れ
図、 第6図は第1図中のインタフェースルーチンの処理を示
す流れ図、 第7図は第1図中の動的リンク手段による初期化処理を
説明するための図、 第8図は未定義な外部シンボルが存在する主記憶におけ
る未定義参照チェインの一例を示す図、 第9図は第8図に示した未定義な外部シンボルが再配置
処理により解消された状態を示す図である。 図において、 1……主記憶、 2……ロードモジュール、 3……オブジェクトモジュール、 4……動的リンク手段、 5……ハッシュ表、 6……外部シンボル管理表、 7……入口名登録手段、 8……インタフェースルーチン、 9……未定義参照チェイン、 21……メモリ管理モジュール、 22……I/Oモジュール、 30……オブジェクトモジュール格納ファイル、 61……シンボル名アドレス、 62……参照解決用エントリ、 63……種別標識、 64……ハッシュチェインエントリ、 91……次エントリアドレス、 92……参照箇所アドレスである。
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 9/06,9/44,9/45,9/40,9/445
Claims (1)
- 【請求項1】主記憶上にロードされて実行中のロードモ
ジュールが外部記憶装置内に存在する外部モジュールを
前記主記憶上にロードしてこの外部モジュールを自ロー
ドモジュールを形成する1モジュールとして実行可能と
する外部モジュール獲得方式において、 前記外部モジュールとしてのオブジェクトモジュールを
格納するファイルが有する静的リンカのための情報を基
に前記主記憶内に存在する外部シンボルを記録する外部
シンボル管理表、この外部シンボル管理表を管理するハ
ッシュ表および未定義の外部シンボルにそれぞれ対応し
てこれら外部シンボルへの参照箇所をリスト形式につな
ぐ未定義参照チェインを用いて未定義の外部シンボルの
参照の解決を行い前記オブジェクトモジュールを前記主
記憶内に再配置する動的リンク手段と、 この動的リンク手段によって再配置された前記オブジェ
クトモジュールの外部シンボル名、記述言語名、返却デ
ータタイプ、およびパラメータデータタイプを含む情報
を入力し、該情報を基にして前記オブジェクトモジュー
ルを呼び出すためのインタフェースルーチンを作成して
前記主記憶内に出力し、さらに該主記憶内における前記
インタフェースルーチンの先頭アドレスを前記ロードモ
ジュールに記録する入口名登録手段とを有し、 前記インタフェースルーチンが、実行中の前記ロードモ
ジュールから前記オブジェクトモジュールの起動がかけ
られたときに制御を渡され、前記ロードモジュールから
渡されたパラメータをもとに呼出しパラメータを作成
し、前記オブジェクトモジュールをサブルーチン呼出し
し、前記オブジェクトモジュールから返されたデータを
もとに前記ロードモジュールへの返却値を作成し、前記
ロードモジュールに制御を戻すことを特徴とする外部モ
ジュール獲得方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63015198A JP2841363B2 (ja) | 1988-01-26 | 1988-01-26 | 外部モジュール獲得方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63015198A JP2841363B2 (ja) | 1988-01-26 | 1988-01-26 | 外部モジュール獲得方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01191232A JPH01191232A (ja) | 1989-08-01 |
JP2841363B2 true JP2841363B2 (ja) | 1998-12-24 |
Family
ID=11882168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63015198A Expired - Lifetime JP2841363B2 (ja) | 1988-01-26 | 1988-01-26 | 外部モジュール獲得方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2841363B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6363436B1 (en) | 1997-01-27 | 2002-03-26 | International Business Machines Corporation | Method and system for loading libraries into embedded systems |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6238954A (ja) * | 1985-08-14 | 1987-02-19 | Fujitsu Ltd | 動的リンクによるアドレスモ−ド切換え制御方式 |
-
1988
- 1988-01-26 JP JP63015198A patent/JP2841363B2/ja not_active Expired - Lifetime
Non-Patent Citations (1)
Title |
---|
情報処理学会「第32回(昭和61年前期)全国大会講演論文集(▲I▼)」(昭和61年4月15日特許庁資料館受入) P.193−194 |
Also Published As
Publication number | Publication date |
---|---|
JPH01191232A (ja) | 1989-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6115738A (en) | Input/output device information management method and apparatus for multi-computers | |
CA2049133C (en) | Methods and apparatus for implementing data bases to provide object-oriented invocation of applications | |
US9436457B2 (en) | Generating and applying patches to computer program code concurrently with its execution | |
US8074231B2 (en) | Configuration of isolated extensions and device drivers | |
US5930503A (en) | System and method for on demand registration of tasks | |
US7266807B2 (en) | Method for integration edition of setting file and setting file integration base | |
JP2666847B2 (ja) | 異種言語間連絡方式 | |
US5553286A (en) | System and method for preparing a computer program for execution | |
JPH0836488A (ja) | ダイナミック・パッチングを使用するランタイム・エラー・チェック方法と装置 | |
US4979109A (en) | Method of controlling a data dictionary directory system in a data base system | |
JP2681929B2 (ja) | プログラム起動方式 | |
JP2000010790A (ja) | グロ―バル衝突判定用のユニタリデ―タ構造体のシステム、方法及びコンピュ―タプログラム製品 | |
US5706511A (en) | Data base system and load distribution control method | |
JP2927325B2 (ja) | データ管理システム | |
JP2841363B2 (ja) | 外部モジュール獲得方式 | |
JP2704028B2 (ja) | ファイル領域管理方式 | |
US11947532B2 (en) | Lifecycle tracking of data objects | |
JPH0527951A (ja) | プログラム群管理システム | |
JP2621898B2 (ja) | 外部参照型アドレス定数の動的解決処理方式 | |
JPH05143427A (ja) | 情報処理システム | |
JP3604936B2 (ja) | 最適化方法,最適化装置及び記録媒体 | |
JP2655612B2 (ja) | 外部参照更新方式 | |
JPH01128130A (ja) | オーバレイ領域の自動ローディング方式 | |
JPH05189212A (ja) | リンキング方法 | |
JPH05257761A (ja) | ダンプ出力制御方式 |