JP3918096B2 - 動的リンク方式、動的リンク制御方法およびプログラム - Google Patents

動的リンク方式、動的リンク制御方法およびプログラム Download PDF

Info

Publication number
JP3918096B2
JP3918096B2 JP2002353534A JP2002353534A JP3918096B2 JP 3918096 B2 JP3918096 B2 JP 3918096B2 JP 2002353534 A JP2002353534 A JP 2002353534A JP 2002353534 A JP2002353534 A JP 2002353534A JP 3918096 B2 JP3918096 B2 JP 3918096B2
Authority
JP
Japan
Prior art keywords
program
storage space
dynamic link
address
generated
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 - Fee Related
Application number
JP2002353534A
Other languages
English (en)
Other versions
JP2004185472A (ja
Inventor
尚生 黒澤
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2002353534A priority Critical patent/JP3918096B2/ja
Publication of JP2004185472A publication Critical patent/JP2004185472A/ja
Application granted granted Critical
Publication of JP3918096B2 publication Critical patent/JP3918096B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、電子計算機システムにおいて、外部モジュール(外部プログラム)を適切に呼び出すことのできる動的リンク方式、動的リンク制御方法およびプログラムに関する。
【0002】
【従来の技術】
従来より、電子計算機システムにおいて動的リンク方式が用いられている。この動的リンク方式は、リンク時にプログラムと外部モジュール(ライブラリ等の外部プログラム)とを結合するのではなく、プログラムの実行時に、必要に応じて外部モジュールを呼び出す手法である。
【0003】
具体的に図6及び図7を参照して動的リンク方式について説明する。なお、図6において、プログラム201は、実行対象となるプログラムであり、外部モジュールとなるプログラム202を呼ぶために、アドレス定数bを含んでいる。このアドレス定数bは、図7に示すように、フラグFと、アドレスAdとからなる。
フラグFは、リンク解決済み若しくはリンク未解決を示すフラグである(なお、プログラム201の実行開始前には、リンク未解決となっている)。
また、アドレスAdは、呼び出し対象のプログラムまたはデータの記憶空間上のアドレス(位置)を示している。
【0004】
図6(a)に示すように、まず、プログラムロード部101は、プログラム201を所定の補助記憶装置(ハードディスク等)から記憶空間へロードする。そして、プログラム201が実行されて処理が進み、CALL命令aが実行されると、アドレス定数bのフラグFがリンク未解決となっているため、図6(b)に示すように、動的リンク要求を示す例外(ソフトウェア割込み)が発生し、動的リンク部102に制御が移る。
動的リンク部102は、動的リンク情報Tを参照してプログラム202を補助記憶装置から記憶空間へロードし、アドレス定数bのアドレスAdにプログラム202の実行開始アドレスを設定する。そして、アドレス定数bのフラグFをリンク解決済みに変更する。
その後、図6(c)に示すように、プログラム201に制御が戻り、CALL命令aが再実行されると、アドレス定数bのアドレスAdに従って、動的リンク対象となるプログラム202の実行が開始される。
【0005】
また、このような動的リンク方式において、プログラムの実行速度、及び、リンク速度を向上させる技術も開示されている(例えば、特許文献1参照)。
【0006】
【特許文献1】
特開平5−53827号公報 (第3−5頁、第1図)
【0007】
【発明が解決しようとする課題】
しかしながら、従来の動的リンク方式には、次のような問題点があった。
まず、第1の問題点は、記憶空間自体の大きさが制限されてしまうことである。これは、図7に示したように、リンク解決済み/未解決を示すフラグFがアドレス定数b内に必要となるため、その分だけアドレスAdのビット数が小さくなることに起因する。
例えば、アドレス定数bが32ビット長である場合、本来であれば32ビット全てを使用して、記憶空間を指し示すことができる。しかし、フラグFに1ビットを使用してしまうため、記憶空間は残りの31ビットで指し示すことになる。このため、記憶空間の大きさが本来の2分の1に制限されてしまう。
【0008】
第2の問題点は、プログラムが複数のタスク間で共有されることを考慮し、同期をとる仕組みを組み込む必要があるため、プログラム作成の難易度が高くなってしまうことである。
例えば、プログラム201、プログラム202の両方が複数のタスク間で共有されていた場合に、プログラム201から、プログラム202を動的リンクするためには、プログラム201にタスク間で同期をとる仕組みを組み込まなければならない。
これは、同期をとる仕組みがないと、あるタスクでアドレス定数bを書き換え、全く同一時刻に別のタスクでアドレス定数bを参照した場合に、アドレス定数bが書き換え中の中間状態となってしまい、正常に動作できないためである。
【0009】
第3の問題点は、動的リンクが不可能となる場合が生じてしまうことである。例えば、プログラム201を複数のタスク間で共有し、プログラム202を共有しない場合、プログラム201からプログラム202への動的リンクが不可能となってしまう。
これは、プログラム202がタスク間で共有されていないと、一般にプログラム202の実行開始アドレスがタスク毎に異なる。それでも、プログラム202の実行開始アドレスを設定すべきアドレス定数bがタスク間で共有されていると、実行開始アドレスを1つしか設定できないため、プログラム202への動的リンクが不可能となる事態が生じてしまう。
【0010】
また、上述の特開平5−53827号公報に開示された動的リンク方式では、呼び出し元のプログラム(ロードモジュール)に、コンパイラやスタティックリンカが、NOP命令や直接呼び出し命令等を埋め込む必要があった。そのため、ロードモジュールの互換性が保てない等の問題があった。
【0011】
この発明は、上記実状に鑑みてなされたもので、電子計算機システムにおいて、外部モジュール(外部プログラム)を適切に呼び出すことのできる動的リンク方式、動的リンク制御方法およびプログラムを提供することを目的とする。
【0012】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点に係る動的リンク方式は、
電子計算機システムにおいて、第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク方式であって、
第1のプログラムを記憶空間にロードし、
第1のプログラムから第2のプログラムへの呼び出しを仲介する呼び出し命令を含む第3のプログラムを記憶空間に生成し、
記憶空間にロードされた第1のプログラムの呼び出し対象を、生成された第3のプログラムに変更し、
呼び出し対象が変更された第1のプログラムの実行に伴い、生成された第3のプログラムを実行させ、
呼び出し対象の第2のプログラムを記憶空間にロードし、
ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定し、
開始アドレスが設定された第3のプログラムの呼び出し命令の実行に伴い、呼び出された第2のプログラムを実行させる、
ことを特徴とする。
【0013】
この発明によれば、第1のプログラムがロードされた際に、第3のプログラムが生成される。そして、第1のプログラムから第3のプログラムを仲介して第2のプログラムが呼び出される。この結果、電子計算機システムにおいて、外部モジュール(外部プログラム)を適切に呼び出すことができる。
【0014】
上記目的を達成するため、本発明の第2の観点に係る動的リンク方式は、
電子計算機システムにおいて、第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク方式であって、
第1のプログラムを記憶空間にロードした際に、第1のプログラムから第2のプログラムへの呼び出しを仲介する呼び出し命令を含む第3のプログラムを記憶空間に生成すると共に、記憶空間にロードした第1のプログラムの呼び出し対象を、生成した第3のプログラムに変更するプログラムロード手段と、
呼び出し対象が変更された第1のプログラムが実行され、生成された第3のプログラムが実行した際に、第2のプログラムを記憶空間にロードすると共に、ロードした第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定して、第3のプログラムの呼び出し命令から呼び出された第2のプログラムを実行する動的リンク手段と、
を備えることを特徴とする。
【0015】
この発明によれば、プログラムロード手段は、第1のプログラムをロードした際に、第3のプログラムを生成する。そして、動的リンク手段は、第3のプログラムを仲介して、第2のプログラムを実行する。この結果、電子計算機システムにおいて、外部モジュール(外部プログラム)を適切に呼び出すことができる。
【0016】
上記目的を達成するため、本発明の第3の観点に係る動的リンク方式は、
動的リンクの対象を示す動的リンク情報と、動的リンクが未解決であるか否かを示すフラグ及び、呼び出し対象のアドレスからなるアドレス定数と、を含む第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク方式であって、
第1のプログラムを記憶空間にロードした際に、フラグを含まないアドレス定数及び、呼び出し命令を含んだ第3のプログラムを記憶空間に生成する生成手段と、
生成された第3のプログラムのアドレス定数に動的リンク情報のアドレスをセットするセット手段と、
記憶空間にロードされた第1のプログラムのアドレス定数を、フラグを排除し、生成された第3のプログラムのアドレスに変更する変更手段と、
アドレス定数が変更された第1のプログラムが実行され、生成された第3のプログラムが実行した際に、第1のプログラムの動的リンク情報に従って、第2のプログラムを記憶空間にロードするロード手段と、
ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定する設定手段と、
開始アドレスが設定された呼び出し命令の実行により、呼び出された第2のプログラムを実行するリンク手段と、
を備えることを特徴とする。
【0017】
この発明によれば、生成手段は、第1のプログラムをロードした際に、第3のプログラムを生成する。そして、リンク手段は、第3のプログラムを仲介して第2のプログラムを実行する。この結果、電子計算機システムにおいて、外部モジュール(外部プログラム)を適切に呼び出すことができる。
【0018】
上記の動的リンク方式は、プログラムからプログラムへの呼び出しを仲介する雛形プログラムを更に備え、
前記生成手段は、前記雛形プログラムに従って、第3のプログラムを記憶空間に生成してもよい。
【0019】
上記目的を達成するため、本発明の第4の観点に係る動的リンク制御方法は、
電子計算機システムにおいて、第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク制御方法であって、
第1のプログラムを記憶空間にロードするステップと、
第1のプログラムから第2のプログラムへの呼び出しを仲介する呼び出し命令を含む第3のプログラムを記憶空間に生成するステップと、
記憶空間にロードされた第1のプログラムの呼び出し対象を、生成された第3のプログラムに変更するステップと、
呼び出し対象が変更された第1のプログラムの実行に伴い、生成された第3のプログラムを実行させるステップと、
呼び出し対象の第2のプログラムを記憶空間にロードするステップと、
ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定するステップと、
開始アドレスが設定された第3のプログラムの呼び出し命令の実行に伴い、呼び出された第2のプログラムを実行させるステップと、
を備えることを特徴とする。
【0020】
この発明によれば、第1のプログラムがロードされた際に、第3のプログラムが生成される。そして、第1のプログラムから第3のプログラムを仲介して第2のプログラムが呼び出される。この結果、電子計算機システムにおいて、外部モジュール(外部プログラム)を適切に呼び出すことができる。
【0021】
上記目的を達成するため、本発明の第5の観点に係る動的リンク制御方法は、
動的リンクの対象を示す動的リンク情報と、動的リンクが未解決であるか否かを示すフラグ及び、呼び出し対象のアドレスからなるアドレス定数と、を含む第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク制御方法であって、
第1のプログラムを記憶空間にロードした際に、フラグを含まないアドレス定数及び、呼び出し命令を含んだ第3のプログラムを記憶空間に生成する生成ステップと、
生成された第3のプログラムのアドレス定数に動的リンク情報のアドレスをセットするセットステップと、
記憶空間にロードされた第1のプログラムのアドレス定数を、フラグを排除し、生成された第3のプログラムのアドレスに変更する変更ステップと、
アドレス定数が変更された第1のプログラムが実行され、生成された第3のプログラムが実行した際に、第1のプログラムの動的リンク情報に従って、第2のプログラムを記憶空間にロードするロードステップと、
ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定する設定ステップと、
開始アドレスが設定された呼び出し命令の実行により、呼び出された第2のプログラムを実行するリンクステップと、
を備えることを特徴とする。
【0022】
この発明によれば、生成ステップは、第1のプログラムをロードした際に、第3のプログラムを生成する。そして、リンクステップは、第3のプログラムを仲介して第2のプログラムを実行する。この結果、電子計算機システムにおいて、外部モジュール(外部プログラム)を適切に呼び出すことができる。
【0023】
上記目的を達成するため、本発明の第6の観点に係るプログラムは、
コンピュータに、
コンピュータに、
第1のプログラムを補助記憶装置から記憶空間にロードするステップと、第1のプログラムから第2のプログラムへの呼び出しを仲介する呼び出し命令を含む第3のプログラムを記憶空間に生成するステップと、記憶空間にロードされた第1のプログラムの呼び出し対象を、生成された第3のプログラムに変更するステップと、呼び出し対象が変更された第1のプログラムの実行に伴い、生成された第3のプログラムを演算処理部に実行させるステップと、呼び出し対象の第2のプログラムを補助記憶装置から記憶空間にロードするステップと、ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定するステップと、開始アドレスが設定された第3のプログラムの呼び出し命令の実行に伴い、呼び出された第2のプログラムを演算処理部に実行させるステップと、
を実行させることを特徴とする。
【0024】
【発明の実施の形態】
本発明の実施の形態にかかる動的リンク方式について、以下図面を参照して説明する。
【0025】
図1は、この発明の実施の形態に適用される動的リンク方式の構成の一例を示すブロック図である。なお、この動的リンク方式は、所定のハードウェア(CPU、メモリ、及び、ハードディスク等)を備えた電子計算機システムにて実現され、プログラムロード部11と、動的リンク部12と、プログラム21と、プログラム22と、プログラム23と、を含んで構成される。
【0026】
プログラムロード部11は、例えば、システムプログラム等からなり、補助記憶装置(ハードディスク等)に記憶されている実行対象となるプログラム21等を、記憶空間(メモリ等)にロードする。
このプログラム21は、電子計算機システムにてメインに実行されるユーザプログラム(又は、アプリケーションプログラム)等であり、プログラム23を動的リンクの対象としている。そして、記憶空間にロードされ、演算処理部(CPU等)にて実行が開始されると、プログラム22を介して外部モジュールとなるプログラム23を呼び出す。
【0027】
具体的にプログラム21には、動的リンク情報T、アドレス定数b、及び、CALL命令aが含まれている。
動的リンク情報Tは、動的リンクの対象となるプログラム23を示す情報(例えば、プログラム名)からなる。
【0028】
アドレス定数bは、初期状態(プログラム21の実行開始前)において、図2(a)に示すように、フラグFと、アドレスAd0とからなる。
フラグFは、リンク解決済み若しくはリンク未解決を示すフラグである(なお、初期状態において、リンク未解決となっている)。また、アドレスAd0は、呼び出し対象のプログラムまたはデータの記憶空間上のアドレス(位置)を示している。
なお、アドレス定数bは、プログラム21の実行時に、プログラムロード部11により、図2(b)に示す形式に変換される。
【0029】
CALL命令aは、初期状態において、アドレス定数bのアドレスAd0にて指定されたプログラムに制御を移す命令である。
【0030】
プログラム22は、プログラムロード部11により、記憶空間に生成され、プログラム21から外部モジュールのプログラム23を呼ぶ際に、仲介役を果たすプログラムである。
具体的にプログラム22には、アドレス定数t、CALL命令b、及び、CALL命令cが含まれている。
なお、プログラム22も演算処理部(CPU等)にて実行される。
【0031】
アドレス定数tは、図2(b)に示すように、上述の図2(a)と異なり、アドレスAd1だけからなる。そして、アドレスAd1は、動的リンク情報Tのアドレスを示している。
CALL命令bは、パラメータ(引数)にアドレス定数tと変数Enを指定し、動的リンク部12を呼び出す(制御を移す)命令である。
CALL命令cは、変数Enに設定されたアドレスのプログラムに制御を移す命令である。
【0032】
プログラム23は、プログラム21の動的リンクの対象となる外部モジュール(外部プログラム)であり、初期状態において、補助記憶装置に記憶されている。
なお、プログラム23も記憶空間にロードされ、演算処理部(CPU等)にて実行される。
【0033】
また、プログラムロード部11は、プログラム21の実行開始時に、アドレス定数bを更新する。具体的には、プログラムロード部11は、アドレス定数bを図2(b)に示す形式に変換する。そして、記憶空間にプログラム22を生成して、アドレスAd1にプログラム22の実行開始アドレスを設定する。
【0034】
動的リンク部12は、例えば、システムプログラム等からなり、上述のプログラム22に呼び出される。動的リンク部12は、プログラム21の動的リンク情報Tに従って、動的リンクの対象となるプログラム23を特定する。そして、特定したプログラム23を記憶空間に動的にロードし、プログラム23の実行開始アドレスを変数Enにセットして、プログラム22に返却する。
【0035】
以下、この発明の形態にかかる動的リンク方式の動作について、図3等を参照して説明する。
図3は、プログラムロード部11及び、動的リンク部12にて実行される動的リンク制御処理を説明するためのフローチャートである。この処理は、電子計算機システムにて、メインプログラムとなるプログラム21の実行が指示された後に開始される。
【0036】
まず、プログラムロード部11は、実行対象のプログラム21を記憶空間にロードする(ステップS11)。つまり、図4(a)に示すように、プログラムロード部11によりプログラム21が補助記憶装置から記憶空間にロードされる。
プログラムロード部11は、プログラム21に含まれるアドレス定数bを検索する(ステップS12)。
【0037】
プログラムロード部11は、検索したアドレス定数bにて、フラグFがリンク未解決となっているか否かを判別する(ステップS13)。つまり、図2(a)に示すようなアドレス定数bにおいてフラグFの値が、リンク未解決となっているか否かを判別する。
プログラムロード部11は、リンク未解決でない(リンク解決済み)であると判別すると、後述するステップS17に処理を進める。一方、フラグFがリンク未解決であると判別した場合に、プログラムロード部11は、プログラム22を記憶空間上に生成する(ステップS14)。つまり、図4(a)に示すように、プログラムロード部11によりプログラム22が記憶空間上に生成される。
【0038】
そして、プログラムロード部11は、生成したプログラム22のアドレス定数tに、動的リンク情報Tのアドレスを設定する。(ステップS15)、また、プログラムロード部11は、プログラム21のアドレス定数bを、図2(a)の形式から図2(b)の形式に変換し、アドレスAd1にプログラム22の実行開始アドレスをセットする(ステップS16)。
【0039】
プログラムロード部11は、ステップS12にて検索したアドレス定数bが、最後のアドレス定数であるか否かを判別する(ステップS17)。つまり、プログラム21中の全てのアドレス定数bに対して処理を行ったか否かを判別する。
プログラムロード部11は、最後のアドレス定数でないと判別すると、ステップS12に処理を戻し、上述のステップS12〜S17の処理を繰り返し実行する。一方、最後のアドレス定数であると判別した場合に、実行前の事前準備を終え、プログラム21の実行が開始される(ステップS18)。
【0040】
プログラム21の実行が開始され、CALL命令aが実行されると、この実行に伴い、プログラム22に制御が移る(ステップS19)。
これは、上述のステップS16にて、アドレス定数b(アドレスAd1)にプログラム22の実行開始アドレスがセットされているためである。つまり、図4(a)に示すように、CALL命令aが実行され、アドレス定数b(アドレスAd1)が参照され、プログラム22に制御が移る。
【0041】
プログラム22に制御が移り、最初にCALL命令bが実行されると、この実行に伴い、動的リンク部12に制御が移る(ステップS20)。つまり、図4(a)に示すように、CALL命令bにて、パラメータにアドレス定数tと変数Enを指定し、動的リンク部12が呼び出される。
【0042】
動的リンク部12は、動的リンクの対象となるプログラム23を記憶空間にロードする(ステップS21)。すなわち、動的リンク部12は、図4(b)に示すように、パラメータのアドレス定数tを参照して、動的リンク情報Tを取得すると、取得した動的リンク情報Tに従って、動的リンクの対象となるプログラム23を特定する。そして、このプログラム23を、補助記憶装置から記憶空間に動的にロードする。
動的リンク部12は、プログラム23の実行開始アドレスを変数Enに設定して、プログラム22に返却する(ステップS22)。つまり、プログラム23の実行開始アドレスを変数Enにセットして、プログラム22に制御を戻す。
【0043】
プログラム22に制御が戻り、続いてCALL命令cが実行されると、この実行に伴い、プログラム23の実行が開始される(ステップS23)。つまり、図4(c)に示すように、変数Enには、プログラム23の実行開始アドレスがセットされているため、プログラム23が呼び出され実行される。
【0044】
このように、動的リンク制御処理により、従来の動的リンク方式の課題を解決しつつ、外部モジュール(外部プログラム)を適切に呼び出すことができる。
すなわち、本発明の実施の形態にかかる動的リンク方式は、以下のような効果がある。
【0045】
まず、第1の効果は、記憶空間の大きさを広げることが可能となる。これは、プログラム21が実行される際に、アドレス定数bが、図2(a)の形式から図2(b)の形式に変換されるためである。つまり、プログラム21の開始時点で、図2(a)のフラグFが不要となり、アドレス定数bをアドレス設定だけに使用できることとなり、記憶空間の大きさを広げることできる(第1の問題点に対応)。
【0046】
第2の効果は、プログラム21及びプログラム23の両方が複数のタスク間で共有されていた場合であっても、アプリケーションプログラム側(プログラム21)に、タスク間で同期をとる仕組みを必要としないことである。これは、プログラム21の実行開始後には、アドレス定数bが動的に書き換えられることが無いためである。つまり、あるタスクでアドレス定数bを更新中に、他のタスクがアドレス定数bを参照することが無いため、プログラム21に、タスク間で同期をとる仕組みを必要としない(第2の問題点に対応)。
【0047】
第3の効果は、プログラム21を複数のタスク間で共有し、かつ、プログラム23をタスク間で共有しない場合であっても、プログラム21からプログラム23を動的リンクすることが可能となる。これは、仲介役となるプログラム22のアドレス定数tの位置がタスク毎に異なるためである。つまり、タスクによってプログラム23の実行開始アドレスが異なる場合であっても、そのアドレスをアドレス定数tに設定できるため、プログラム21からプログラム23を動的リンクすることができる(第3の問題点に対応)。
【0048】
更に、第4の効果は、本方式を採用するにあたり、プログラム21及びプログラム23を再作成、再コンパイル、若しくは、再リンクする必要がないことである。
【0049】
上記の実施の形態では、プログラムロード部11は、記憶空間に仲介役となるプログラム22を生成するが、このプログラム22の生成手法は任意である。
例えば、プログラムロード部11は、雛形となるプログラムに従って、プログラム22を生成してもよい。
以下、本発明の変形例について、図5を参照して簡単に説明する。図5は、この発明の他の実施の形態に適用される動的リンク方式の構成の一例を示すブロック図である。
【0050】
図示するように、この動的リンク方式は、プログラムロード部11と、動的リンク部12と、プログラム21と、プログラム22と、プログラム23と、雛形プログラム31と、を含んで構成される。
なお、プログラムロード部11〜プログラム23については、上述の図1に示す動的リンク方式の構成と同じである。
雛形プログラム31は、仮想空間内のシステムプログラム領域に配置され、プログラム22の雛形となる。
つまり、プログラムロード部11は、この雛形プログラム31を、記憶空間(ユーザプログラム実行領域等)にコピーすることにより、プログラム22を生成する。
【0051】
この動的リンク方式も、上述した図3の動的リンク制御処理にて動作することとなる。具体的な相違点は、プログラム22を生成する箇所(ステップS14)である。
すなわち、プログラム22を記憶空間上に生成するステップS14において、プログラムロード部11は、雛形プログラム31を、システムプログラム領域内からユーザプログラム実行領域にコピーすることにより、プログラム22を生成する。
【0052】
この図5に示す動的リンク方式によっても、従来の動的リンク方式の課題を解決しつつ、外部モジュール(外部プログラム)を適切に呼び出すことができる。
【0053】
なお、この発明の実施の形態にかかる動的リンク方式は、専用機器によらず、通常のコンピュータシステムを用いて実現可能である。例えば、コンピュータに上述のいずれかを実行するためのプログラムを格納した媒体(フレキシブルディスク、CD−ROM等)から当該プログラムをインストールすることにより、上述の処理を実行する動的リンク方式を構成することができる。
【0054】
また、コンピュータにプログラムを供給するための手法は、任意である。例えば、通信回線、通信ネットワーク、通信システム等を介して供給してもよい。一例を挙げると、通信ネットワークの掲示板(BBS)に当該プログラムを掲示し、これをネットワークを介して搬送波に重畳して配信する。
そして、このプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【0055】
【発明の効果】
以上説明したように、本発明によれば、電子計算機システムにおいて、外部モジュール(外部プログラム)を適切に呼び出すことができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る動的リンク方式の構成の一例を示す模式図である。
【図2】実行対象のプログラムに含まれるアドレス定数の構造の一例を示す模式図であり、(a)が実行開始前のアドレス定数の図であり、(b)が実行開始後のアドレス定数の図である。
【図3】本発明の実施の形態に係る動的リンク制御処理を説明するためのフローチャートである。
【図4】(a)〜(c)共に、動的リンク方式の具体的動作を説明するための模式図である。
【図5】本発明の他の実施の形態に係る動的リンク方式の構成の一例を示す模式図である。
【図6】(a)〜(c)共に、従来の動的リンク方式の具体的動作を説明するための模式図である。
【図7】従来の実行対象のプログラムに含まれるアドレス定数の構造の一例を示す模式図である。
【符号の説明】
11 プログラムロード部
12 動的リンク部
21〜23 プログラム
31 雛形プログラム

Claims (7)

  1. 電子計算機システムにおいて、第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク方式であって、
    第1のプログラムを記憶空間にロードし、
    第1のプログラムから第2のプログラムへの呼び出しを仲介する呼び出し命令を含む第3のプログラムを記憶空間に生成し、
    記憶空間にロードされた第1のプログラムの呼び出し対象を、生成された第3のプログラムに変更し、
    呼び出し対象が変更された第1のプログラムの実行に伴い、生成された第3のプログラムを実行させ、
    呼び出し対象の第2のプログラムを記憶空間にロードし、
    ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定し、
    開始アドレスが設定された第3のプログラムの呼び出し命令の実行に伴い、呼び出された第2のプログラムを実行させる、
    ことを特徴とする動的リンク方式。
  2. 電子計算機システムにおいて、第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク方式であって、
    第1のプログラムを記憶空間にロードした際に、第1のプログラムから第2のプログラムへの呼び出しを仲介する呼び出し命令を含む第3のプログラムを記憶空間に生成すると共に、記憶空間にロードした第1のプログラムの呼び出し対象を、生成した第3のプログラムに変更するプログラムロード手段と、
    呼び出し対象が変更された第1のプログラムが実行され、生成された第3のプログラムが実行した際に、第2のプログラムを記憶空間にロードすると共に、ロードした第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定して、第3のプログラムの呼び出し命令から呼び出された第2のプログラムを実行する動的リンク手段と、
    を備えることを特徴とする動的リンク方式。
  3. 動的リンクの対象を示す動的リンク情報と、動的リンクが未解決であるか否かを示すフラグ及び、呼び出し対象のアドレスからなるアドレス定数と、を含む第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク方式であって、
    第1のプログラムを記憶空間にロードした際に、フラグを含まないアドレス定数及び、呼び出し命令を含んだ第3のプログラムを記憶空間に生成する生成手段と、
    生成された第3のプログラムのアドレス定数に動的リンク情報のアドレスをセットするセット手段と、
    記憶空間にロードされた第1のプログラムのアドレス定数を、フラグを排除し、生成された第3のプログラムのアドレスに変更する変更手段と、
    アドレス定数が変更された第1のプログラムが実行され、生成された第3のプログラムが実行した際に、第1のプログラムの動的リンク情報に従って、第2のプログラムを記憶空間にロードするロード手段と、
    ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定する設定手段と、
    開始アドレスが設定された呼び出し命令の実行により、呼び出された第2のプログラムを実行するリンク手段と、
    を備えることを特徴とする動的リンク方式。
  4. プログラムからプログラムへの呼び出しを仲介する雛形プログラムを更に備え、
    前記生成手段は、前記雛形プログラムに従って、第3のプログラムを記憶空間に生成する、
    ことを特徴とする請求項3に記載の動的リンク方式。
  5. 電子計算機システムにおいて、第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク制御方法であって、
    第1のプログラムを記憶空間にロードするステップと、
    第1のプログラムから第2のプログラムへの呼び出しを仲介する呼び出し命令を含む第3のプログラムを記憶空間に生成するステップと、
    記憶空間にロードされた第1のプログラムの呼び出し対象を、生成された第3のプログラムに変更するステップと、
    呼び出し対象が変更された第1のプログラムの実行に伴い、生成された第3のプログラムを実行させるステップと、
    呼び出し対象の第2のプログラムを記憶空間にロードするステップと、
    ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定するステップと、
    開始アドレスが設定された第3のプログラムの呼び出し命令の実行に伴い、呼び出された第2のプログラムを実行させるステップと、
    を備えることを特徴とする動的リンク制御方法。
  6. 動的リンクの対象を示す動的リンク情報と、動的リンクが未解決であるか否かを示すフラグ及び、呼び出し対象のアドレスからなるアドレス定数と、を含む第1のプログラムから第2のプログラムを動的にリンクして実行させる動的リンク制御方法であって、
    第1のプログラムを記憶空間にロードした際に、フラグを含まないアドレス定数及び、呼び出し命令を含んだ第3のプログラムを記憶空間に生成する生成ステップと、
    生成された第3のプログラムのアドレス定数に動的リンク情報のアドレスをセットするセットステップと、
    記憶空間にロードされた第1のプログラムのアドレス定数を、フラグを排除し、生成された第3のプログラムのアドレスに変更する変更ステップと、
    アドレス定数が変更された第1のプログラムが実行され、生成された第3のプログラムが実行した際に、第1のプログラムの動的リンク情報に従って、第2のプログラムを記憶空間にロードするロードステップと、
    ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定する設定ステップと、
    開始アドレスが設定された呼び出し命令の実行により、呼び出された第2のプログラムを実行するリンクステップと、
    を備えることを特徴とする動的リンク制御方法。
  7. コンピュータに、
    第1のプログラムを補助記憶装置から記憶空間にロードするステップと、第1のプログラムから第2のプログラムへの呼び出しを仲介する呼び出し命令を含む第3のプログラムを記憶空間に生成するステップと、記憶空間にロードされた第1のプログラムの呼び出し対象を、生成された第3のプログラムに変更するステップと、呼び出し対象が変更された第1のプログラムの実行に伴い、生成された第3のプログラムを演算処理部に実行させるステップと、呼び出し対象の第2のプログラムを補助記憶装置から記憶空間にロードするステップと、ロードされた第2のプログラムの開始アドレスを、生成された第3のプログラムの呼び出し命令に設定するステップと、開始アドレスが設定された第3のプログラムの呼び出し命令の実行に伴い、呼び出された第2のプログラムを演算処理部に実行させるステップと、
    を実行させるためのプログラム。
JP2002353534A 2002-12-05 2002-12-05 動的リンク方式、動的リンク制御方法およびプログラム Expired - Fee Related JP3918096B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002353534A JP3918096B2 (ja) 2002-12-05 2002-12-05 動的リンク方式、動的リンク制御方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002353534A JP3918096B2 (ja) 2002-12-05 2002-12-05 動的リンク方式、動的リンク制御方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2004185472A JP2004185472A (ja) 2004-07-02
JP3918096B2 true JP3918096B2 (ja) 2007-05-23

Family

ID=32754801

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002353534A Expired - Fee Related JP3918096B2 (ja) 2002-12-05 2002-12-05 動的リンク方式、動的リンク制御方法およびプログラム

Country Status (1)

Country Link
JP (1) JP3918096B2 (ja)

Also Published As

Publication number Publication date
JP2004185472A (ja) 2004-07-02

Similar Documents

Publication Publication Date Title
US7849452B2 (en) Modification of computer applications at load time for distributed execution
US6298481B1 (en) System for modifying the functionality of compiled computer code at run-time
US6665735B1 (en) Method of changing a dynamic link library function efficiently and a computer system for executing the same
JP4873423B2 (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
KR20100036279A (ko) 복수의 프로세서들을 포함하는 시스템 및 그 동작 방법
JP2006523884A (ja) 並行して実行されるプロセスがfifoバッファを介して通信するデータ処理
JP2010086410A (ja) メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体
CN112882694A (zh) 一种程序编译方法、装置、电子设备及可读存储介质
US6256751B1 (en) Restoring checkpointed processes without restoring attributes of external data referenced by the processes
US7458070B2 (en) Reducing the run-time cost of invoking a server page
JP3918096B2 (ja) 動的リンク方式、動的リンク制御方法およびプログラム
JP2015210769A (ja) 情報処理装置、情報処理方法およびプログラム
US8010955B2 (en) Reducing the run-time cost of incorporating custom tags in a server page
CN114721735B (zh) 一种程序动态加载方法、装置及电子设备
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
JP6691294B2 (ja) 情報処理装置、ダイナミックリンクプログラムおよびプログラム再開方法
JPH0619717A (ja) 情報処理装置
JPH09231069A (ja) 情報処理方法及び装置
JP2006113935A (ja) ダイナミックリンクライブラリ呼び出しコード生成方法、プログラム、および、装置
JP3137094B2 (ja) シミュレーション方法、シミュレーション装置及びその記録媒体
JP2000231494A (ja) ソフトウェア実行システム及びソフトウェア実行方法
CN118377559A (zh) 一种页面显示方法、可穿戴电子设备及可读存储介质
JP2002182931A (ja) 共通osシステムコール方法
JP2020086871A (ja) 情報処理装置、プログラム、オペレーティングシステム、実行方法及びプログラムの修正方法
JP3853309B2 (ja) マイクロプロセッサおよび該マイクロプロセッサで実行されるプログラムのためのコンパイル装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060711

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060908

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070116

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070129

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080526

A072 Dismissal of procedure

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20080909

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100223

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110223

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110223

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120223

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120223

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130223

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130223

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140223

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees