(57)【要約】【課題】電子計算機システムにおいて、外部モジュールを適切に呼び出すことのできる動的リンク方式を提供することである。【解決手段】プログラムロード部１１は、プログラム２１のアドレス定数ｂがリンク未解決である場合に、プログラム２２を生成して、アドレス定数ｔに動的リンク情報Ｔのアドレスを設定する。また、プログラム２１のアドレス定数ｂの形式を変換し、プログラム２２の開始アドレスをセットする。そして、プログラム２１の実行が開始され、ＣＡＬＬ命令ａが実行されると、プログラム２２に移りＣＡＬＬ命令ｂが実行される。この実行で動的リンク部１２に制御が移り、プログラム２３をロードする。動的リンク部１２は、プログラム２３の開始アドレスを変数Ｅｎに設定してプログラム２２に返却する。プログラム２２にてＣＡＬＬ命令ｃが実行されると、プログラム２３の実行が開始される。【選択図】  図４
2004185472.tif 000002
【特許請求の範囲】
【請求項１】
電子計算機システムにおいて、第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク方式であって、
第１のプログラムを記憶空間にロードし、
第１のプログラムから第２のプログラムへの呼び出しを仲介する第３のプログラムを記憶空間に生成し、
記憶空間にロードされた第１のプログラムの呼び出し対象を、生成された第３のプログラムに変更し、
呼び出し対象が変更された第１のプログラムの実行に伴い、生成された第３のプログラムを実行させ、
呼び出し対象の第２のプログラムを記憶空間にロードし、
ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムに設定し、
開始アドレスが設定された第３のプログラムの実行に伴い、呼び出された第２のプログラムを実行させる、
ことを特徴とする動的リンク方式。
【請求項２】
電子計算機システムにおいて、第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク方式であって、
第１のプログラムを記憶空間にロードした際に、第１のプログラムから第２のプログラムへの呼び出しを仲介する第３のプログラムを記憶空間に生成すると共に、記憶空間にロードした第１のプログラムの呼び出し対象を、生成した第３のプログラムに変更するプログラムロード手段と、
呼び出し対象が変更された第１のプログラムが実行され、生成された第３のプログラムが実行した際に、第２のプログラムを記憶空間にロードすると共に、ロードした第２のプログラムの開始アドレスを、生成された第３のプログラムに設定して、第３のプログラムから呼び出された第２のプログラムを実行する動的リンク手段と、
を備えることを特徴とする動的リンク方式。
【請求項３】
動的リンクの対象を示す動的リンク情報と、動的リンクが未解決であるか否かを示すフラグ及び、呼び出し対象のアドレスからなるアドレス定数と、を含む第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク方式であって、
第１のプログラムを記憶空間にロードした際に、フラグを含まないアドレス定数及び、呼び出し命令を含んだ第３のプログラムを記憶空間に生成する生成手段と、
生成された第３のプログラムのアドレス定数に動的リンク情報のアドレスをセットするセット手段と、
記憶空間にロードされた第１のプログラムのアドレス定数を、フラグを排除し、生成された第３のプログラムのアドレスに変更する変更手段と、
アドレス定数が変更された第１のプログラムが実行され、生成された第３のプログラムが実行した際に、第１のプログラムの動的リンク情報に従って、第２のプログラムを記憶空間にロードするロード手段と、
ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムの呼び出し命令に設定する設定手段と、
開始アドレスが設定された呼び出し命令の実行により、呼び出された第２のプログラムを実行するリンク手段と、
を備えることを特徴とする動的リンク方式。
【請求項４】
プログラムからプログラムへの呼び出しを仲介する雛形プログラムを更に備え、
前記生成手段は、前記雛形プログラムに従って、第３のプログラムを記憶空間に生成する、
ことを特徴とする請求項３に記載の動的リンク方式。
【請求項５】
電子計算機システムにおいて、第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク制御方法であって、
第１のプログラムを記憶空間にロードするステップと、
第１のプログラムから第２のプログラムへの呼び出しを仲介する第３のプログラムを記憶空間に生成するステップと、
記憶空間にロードされた第１のプログラムの呼び出し対象を、生成された第３のプログラムに変更するステップと、
呼び出し対象が変更された第１のプログラムの実行に伴い、生成された第３のプログラムを実行させるステップと、
呼び出し対象の第２のプログラムを記憶空間にロードするステップと、
ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムに設定するステップと、
開始アドレスが設定された第３のプログラムの実行に伴い、呼び出された第２のプログラムを実行させるステップと、
を備えることを特徴とする動的リンク制御方法。
【請求項６】
動的リンクの対象を示す動的リンク情報と、動的リンクが未解決であるか否かを示すフラグ及び、呼び出し対象のアドレスからなるアドレス定数と、を含む第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク制御方法であって、
第１のプログラムを記憶空間にロードした際に、フラグを含まないアドレス定数及び、呼び出し命令を含んだ第３のプログラムを記憶空間に生成する生成ステップと、
生成された第３のプログラムのアドレス定数に動的リンク情報のアドレスをセットするセットステップと、
記憶空間にロードされた第１のプログラムのアドレス定数を、フラグを排除し、生成された第３のプログラムのアドレスに変更する変更ステップと、
アドレス定数が変更された第１のプログラムが実行され、生成された第３のプログラムが実行した際に、第１のプログラムの動的リンク情報に従って、第２のプログラムを記憶空間にロードするロードステップと、
ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムの呼び出し命令に設定する設定ステップと、
開始アドレスが設定された呼び出し命令の実行により、呼び出された第２のプログラムを実行するリンクステップと、
を備えることを特徴とする動的リンク制御方法。
【請求項７】
コンピュータに、
第１のプログラムを補助記憶装置から記憶空間にロードするステップと、第１のプログラムから第２のプログラムへの呼び出しを仲介する第３のプログラムを記憶空間に生成するステップと、記憶空間にロードされた第１のプログラムの呼び出し対象を、生成された第３のプログラムに変更するステップと、呼び出し対象が変更された第１のプログラムの実行に伴い、生成された第３のプログラムを演算処理部に実行させるステップと、呼び出し対象の第２のプログラムを補助記憶装置から記憶空間にロードするステップと、ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムに設定するステップと、開始アドレスが設定された第３のプログラムの実行に伴い、呼び出された第２のプログラムを演算処理部に実行させるステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電子計算機システムにおいて、外部モジュール（外部プログラム）を適切に呼び出すことのできる動的リンク方式、動的リンク制御方法およびプログラムに関する。
【０００２】
【従来の技術】
従来より、電子計算機システムにおいて動的リンク方式が用いられている。この動的リンク方式は、リンク時にプログラムと外部モジュール（ライブラリ等の外部プログラム）とを結合するのではなく、プログラムの実行時に、必要に応じて外部モジュールを呼び出す手法である。
【０００３】
具体的に図６及び図７を参照して動的リンク方式について説明する。なお、図６において、プログラム２０１は、実行対象となるプログラムであり、外部モジュールとなるプログラム２０２を呼ぶために、アドレス定数ｂを含んでいる。このアドレス定数ｂは、図７に示すように、フラグＦと、アドレスＡｄとからなる。
フラグＦは、リンク解決済み若しくはリンク未解決を示すフラグである（なお、プログラム２０１の実行開始前には、リンク未解決となっている）。
また、アドレスＡｄは、呼び出し対象のプログラムまたはデータの記憶空間上のアドレス（位置）を示している。
【０００４】
図６（ａ）に示すように、まず、プログラムロード部１０１は、プログラム２０１を所定の補助記憶装置（ハードディスク等）から記憶空間へロードする。そして、プログラム２０１が実行されて処理が進み、ＣＡＬＬ命令ａが実行されると、アドレス定数ｂのフラグＦがリンク未解決となっているため、図６（ｂ）に示すように、動的リンク要求を示す例外（ソフトウェア割込み）が発生し、動的リンク部１０２に制御が移る。
動的リンク部１０２は、動的リンク情報Ｔを参照してプログラム２０２を補助記憶装置から記憶空間へロードし、アドレス定数ｂのアドレスＡｄにプログラム２０２の実行開始アドレスを設定する。そして、アドレス定数ｂのフラグＦをリンク解決済みに変更する。
その後、図６（ｃ）に示すように、プログラム２０１に制御が戻り、ＣＡＬＬ命令ａが再実行されると、アドレス定数ｂのアドレスＡｄに従って、動的リンク対象となるプログラム２０２の実行が開始される。
【０００５】
また、このような動的リンク方式において、プログラムの実行速度、及び、リンク速度を向上させる技術も開示されている（例えば、特許文献１参照）。
【０００６】
【特許文献１】
特開平５−５３８２７号公報  （第３−５頁、第１図）
【０００７】
【発明が解決しようとする課題】
しかしながら、従来の動的リンク方式には、次のような問題点があった。
まず、第１の問題点は、記憶空間自体の大きさが制限されてしまうことである。これは、図７に示したように、リンク解決済み／未解決を示すフラグＦがアドレス定数ｂ内に必要となるため、その分だけアドレスＡｄのビット数が小さくなることに起因する。
例えば、アドレス定数ｂが３２ビット長である場合、本来であれば３２ビット全てを使用して、記憶空間を指し示すことができる。しかし、フラグＦに１ビットを使用してしまうため、記憶空間は残りの３１ビットで指し示すことになる。このため、記憶空間の大きさが本来の２分の１に制限されてしまう。
【０００８】
第２の問題点は、プログラムが複数のタスク間で共有されることを考慮し、同期をとる仕組みを組み込む必要があるため、プログラム作成の難易度が高くなってしまうことである。
例えば、プログラム２０１、プログラム２０２の両方が複数のタスク間で共有されていた場合に、プログラム２０１から、プログラム２０２を動的リンクするためには、プログラム２０１にタスク間で同期をとる仕組みを組み込まなければならない。
これは、同期をとる仕組みがないと、あるタスクでアドレス定数ｂを書き換え、全く同一時刻に別のタスクでアドレス定数ｂを参照した場合に、アドレス定数ｂが書き換え中の中間状態となってしまい、正常に動作できないためである。
【０００９】
第３の問題点は、動的リンクが不可能となる場合が生じてしまうことである。
例えば、プログラム２０１を複数のタスク間で共有し、プログラム２０２を共有しない場合、プログラム２０１からプログラム２０２への動的リンクが不可能となってしまう。
これは、プログラム２０２がタスク間で共有されていないと、一般にプログラム２０２の実行開始アドレスがタスク毎に異なる。それでも、プログラム２０２の実行開始アドレスを設定すべきアドレス定数ｂがタスク間で共有されていると、実行開始アドレスを１つしか設定できないため、プログラム２０２への動的リンクが不可能となる事態が生じてしまう。
【００１０】
また、上述の特開平５−５３８２７号公報に開示された動的リンク方式では、呼び出し元のプログラム（ロードモジュール）に、コンパイラやスタティックリンカが、ＮＯＰ命令や直接呼び出し命令等を埋め込む必要があった。そのため、ロードモジュールの互換性が保てない等の問題があった。
【００１１】
この発明は、上記実状に鑑みてなされたもので、電子計算機システムにおいて、外部モジュール（外部プログラム）を適切に呼び出すことのできる動的リンク方式、動的リンク制御方法およびプログラムを提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点に係る動的リンク方式は、
電子計算機システムにおいて、第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク方式であって、
第１のプログラムを記憶空間にロードし、
第１のプログラムから第２のプログラムへの呼び出しを仲介する第３のプログラムを記憶空間に生成し、
記憶空間にロードされた第１のプログラムの呼び出し対象を、生成された第３のプログラムに変更し、
呼び出し対象が変更された第１のプログラムの実行に伴い、生成された第３のプログラムを実行させ、
呼び出し対象の第２のプログラムを記憶空間にロードし、
ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムに設定し、
開始アドレスが設定された第３のプログラムの実行に伴い、呼び出された第２のプログラムを実行させる、
ことを特徴とする。
【００１３】
この発明によれば、第１のプログラムがロードされた際に、第３のプログラムが生成される。そして、第１のプログラムから第３のプログラムを仲介して第２のプログラムが呼び出される。この結果、電子計算機システムにおいて、外部モジュール（外部プログラム）を適切に呼び出すことができる。
【００１４】
上記目的を達成するため、本発明の第２の観点に係る動的リンク方式は、
電子計算機システムにおいて、第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク方式であって、
第１のプログラムを記憶空間にロードした際に、第１のプログラムから第２のプログラムへの呼び出しを仲介する第３のプログラムを記憶空間に生成すると共に、記憶空間にロードした第１のプログラムの呼び出し対象を、生成した第３のプログラムに変更するプログラムロード手段と、
呼び出し対象が変更された第１のプログラムが実行され、生成された第３のプログラムが実行した際に、第２のプログラムを記憶空間にロードすると共に、ロードした第２のプログラムの開始アドレスを、生成された第３のプログラムに設定して、第３のプログラムから呼び出された第２のプログラムを実行する動的リンク手段と、
を備えることを特徴とする。
【００１５】
この発明によれば、プログラムロード手段は、第１のプログラムをロードした際に、第３のプログラムを生成する。そして、動的リンク手段は、第３のプログラムを仲介して、第２のプログラムを実行する。この結果、電子計算機システムにおいて、外部モジュール（外部プログラム）を適切に呼び出すことができる。
【００１６】
上記目的を達成するため、本発明の第３の観点に係る動的リンク方式は、
動的リンクの対象を示す動的リンク情報と、動的リンクが未解決であるか否かを示すフラグ及び、呼び出し対象のアドレスからなるアドレス定数と、を含む第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク方式であって、
第１のプログラムを記憶空間にロードした際に、フラグを含まないアドレス定数及び、呼び出し命令を含んだ第３のプログラムを記憶空間に生成する生成手段と、
生成された第３のプログラムのアドレス定数に動的リンク情報のアドレスをセットするセット手段と、
記憶空間にロードされた第１のプログラムのアドレス定数を、フラグを排除し、生成された第３のプログラムのアドレスに変更する変更手段と、
アドレス定数が変更された第１のプログラムが実行され、生成された第３のプログラムが実行した際に、第１のプログラムの動的リンク情報に従って、第２のプログラムを記憶空間にロードするロード手段と、
ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムの呼び出し命令に設定する設定手段と、
開始アドレスが設定された呼び出し命令の実行により、呼び出された第２のプログラムを実行するリンク手段と、
を備えることを特徴とする。
【００１７】
この発明によれば、生成手段は、第１のプログラムをロードした際に、第３のプログラムを生成する。そして、リンク手段は、第３のプログラムを仲介して第２のプログラムを実行する。この結果、電子計算機システムにおいて、外部モジュール（外部プログラム）を適切に呼び出すことができる。
【００１８】
上記の動的リンク方式は、プログラムからプログラムへの呼び出しを仲介する雛形プログラムを更に備え、
前記生成手段は、前記雛形プログラムに従って、第３のプログラムを記憶空間に生成してもよい。
【００１９】
上記目的を達成するため、本発明の第４の観点に係る動的リンク制御方法は、
電子計算機システムにおいて、第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク制御方法であって、
第１のプログラムを記憶空間にロードするステップと、
第１のプログラムから第２のプログラムへの呼び出しを仲介する第３のプログラムを記憶空間に生成するステップと、
記憶空間にロードされた第１のプログラムの呼び出し対象を、生成された第３のプログラムに変更するステップと、
呼び出し対象が変更された第１のプログラムの実行に伴い、生成された第３のプログラムを実行させるステップと、
呼び出し対象の第２のプログラムを記憶空間にロードするステップと、
ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムに設定するステップと、
開始アドレスが設定された第３のプログラムの実行に伴い、呼び出された第２のプログラムを実行させるステップと、
を備えることを特徴とする。
【００２０】
この発明によれば、第１のプログラムがロードされた際に、第３のプログラムが生成される。そして、第１のプログラムから第３のプログラムを仲介して第２のプログラムが呼び出される。この結果、電子計算機システムにおいて、外部モジュール（外部プログラム）を適切に呼び出すことができる。
【００２１】
上記目的を達成するため、本発明の第５の観点に係る動的リンク制御方法は、
動的リンクの対象を示す動的リンク情報と、動的リンクが未解決であるか否かを示すフラグ及び、呼び出し対象のアドレスからなるアドレス定数と、を含む第１のプログラムから第２のプログラムを動的にリンクして実行させる動的リンク制御方法であって、
第１のプログラムを記憶空間にロードした際に、フラグを含まないアドレス定数及び、呼び出し命令を含んだ第３のプログラムを記憶空間に生成する生成ステップと、
生成された第３のプログラムのアドレス定数に動的リンク情報のアドレスをセットするセットステップと、
記憶空間にロードされた第１のプログラムのアドレス定数を、フラグを排除し、生成された第３のプログラムのアドレスに変更する変更ステップと、
アドレス定数が変更された第１のプログラムが実行され、生成された第３のプログラムが実行した際に、第１のプログラムの動的リンク情報に従って、第２のプログラムを記憶空間にロードするロードステップと、
ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムの呼び出し命令に設定する設定ステップと、
開始アドレスが設定された呼び出し命令の実行により、呼び出された第２のプログラムを実行するリンクステップと、
を備えることを特徴とする。
【００２２】
この発明によれば、生成ステップは、第１のプログラムをロードした際に、第３のプログラムを生成する。そして、リンクステップは、第３のプログラムを仲介して第２のプログラムを実行する。この結果、電子計算機システムにおいて、外部モジュール（外部プログラム）を適切に呼び出すことができる。
【００２３】
上記目的を達成するため、本発明の第６の観点に係るプログラムは、
コンピュータに、
第１のプログラムを補助記憶装置から記憶空間にロードするステップと、第１のプログラムから第２のプログラムへの呼び出しを仲介する第３のプログラムを記憶空間に生成するステップと、記憶空間にロードされた第１のプログラムの呼び出し対象を、生成された第３のプログラムに変更するステップと、呼び出し対象が変更された第１のプログラムの実行に伴い、生成された第３のプログラムを演算処理部に実行させるステップと、呼び出し対象の第２のプログラムを補助記憶装置から記憶空間にロードするステップと、ロードされた第２のプログラムの開始アドレスを、生成された第３のプログラムに設定するステップと、開始アドレスが設定された第３のプログラムの実行に伴い、呼び出された第２のプログラムを演算処理部に実行させるステップと、
を実行させることを特徴とする。
【００２４】
【発明の実施の形態】
本発明の実施の形態にかかる動的リンク方式について、以下図面を参照して説明する。
【００２５】
図１は、この発明の実施の形態に適用される動的リンク方式の構成の一例を示すブロック図である。なお、この動的リンク方式は、所定のハードウェア（ＣＰＵ、メモリ、及び、ハードディスク等）を備えた電子計算機システムにて実現され、プログラムロード部１１と、動的リンク部１２と、プログラム２１と、プログラム２２と、プログラム２３と、を含んで構成される。
【００２６】
プログラムロード部１１は、例えば、システムプログラム等からなり、補助記憶装置（ハードディスク等）に記憶されている実行対象となるプログラム２１等を、記憶空間（メモリ等）にロードする。
このプログラム２１は、電子計算機システムにてメインに実行されるユーザプログラム（又は、アプリケーションプログラム）等であり、プログラム２３を動的リンクの対象としている。そして、記憶空間にロードされ、演算処理部（ＣＰＵ等）にて実行が開始されると、プログラム２２を介して外部モジュールとなるプログラム２３を呼び出す。
【００２７】
具体的にプログラム２１には、動的リンク情報Ｔ、アドレス定数ｂ、及び、ＣＡＬＬ命令ａが含まれている。
動的リンク情報Ｔは、動的リンクの対象となるプログラム２３を示す情報（例えば、プログラム名）からなる。
【００２８】
アドレス定数ｂは、初期状態（プログラム２１の実行開始前）において、図２（ａ）に示すように、フラグＦと、アドレスＡｄ０とからなる。
フラグＦは、リンク解決済み若しくはリンク未解決を示すフラグである（なお、初期状態において、リンク未解決となっている）。また、アドレスＡｄ０は、呼び出し対象のプログラムまたはデータの記憶空間上のアドレス（位置）を示している。
なお、アドレス定数ｂは、プログラム２１の実行時に、プログラムロード部１１により、図２（ｂ）に示す形式に変換される。
【００２９】
ＣＡＬＬ命令ａは、初期状態において、アドレス定数ｂのアドレスＡｄ０にて指定されたプログラムに制御を移す命令である。
【００３０】
プログラム２２は、プログラムロード部１１により、記憶空間に生成され、プログラム２１から外部モジュールのプログラム２３を呼ぶ際に、仲介役を果たすプログラムである。
具体的にプログラム２２には、アドレス定数ｔ、ＣＡＬＬ命令ｂ、及び、ＣＡＬＬ命令ｃが含まれている。
なお、プログラム２２も演算処理部（ＣＰＵ等）にて実行される。
【００３１】
アドレス定数ｔは、図２（ｂ）に示すように、上述の図２（ａ）と異なり、アドレスＡｄ１だけからなる。そして、アドレスＡｄ１は、動的リンク情報Ｔのアドレスを示している。
ＣＡＬＬ命令ｂは、パラメータ（引数）にアドレス定数ｔと変数Ｅｎを指定し、動的リンク部１２を呼び出す（制御を移す）命令である。
ＣＡＬＬ命令ｃは、変数Ｅｎに設定されたアドレスのプログラムに制御を移す命令である。
【００３２】
プログラム２３は、プログラム２１の動的リンクの対象となる外部モジュール（外部プログラム）であり、初期状態において、補助記憶装置に記憶されている。
なお、プログラム２３も記憶空間にロードされ、演算処理部（ＣＰＵ等）にて実行される。
【００３３】
また、プログラムロード部１１は、プログラム２１の実行開始時に、アドレス定数ｂを更新する。具体的には、プログラムロード部１１は、アドレス定数ｂを図２（ｂ）に示す形式に変換する。そして、記憶空間にプログラム２２を生成して、アドレスＡｄ１にプログラム２２の実行開始アドレスを設定する。
【００３４】
動的リンク部１２は、例えば、システムプログラム等からなり、上述のプログラム２２に呼び出される。動的リンク部１２は、プログラム２１の動的リンク情報Ｔに従って、動的リンクの対象となるプログラム２３を特定する。そして、特定したプログラム２３を記憶空間に動的にロードし、プログラム２３の実行開始アドレスを変数Ｅｎにセットして、プログラム２２に返却する。
【００３５】
以下、この発明の形態にかかる動的リンク方式の動作について、図３等を参照して説明する。
図３は、プログラムロード部１１及び、動的リンク部１２にて実行される動的リンク制御処理を説明するためのフローチャートである。この処理は、電子計算機システムにて、メインプログラムとなるプログラム２１の実行が指示された後に開始される。
【００３６】
まず、プログラムロード部１１は、実行対象のプログラム２１を記憶空間にロードする（ステップＳ１１）。つまり、図４（ａ）に示すように、プログラムロード部１１によりプログラム２１が補助記憶装置から記憶空間にロードされる。
プログラムロード部１１は、プログラム２１に含まれるアドレス定数ｂを検索する（ステップＳ１２）。
【００３７】
プログラムロード部１１は、検索したアドレス定数ｂにて、フラグＦがリンク未解決となっているか否かを判別する（ステップＳ１３）。つまり、図２（ａ）に示すようなアドレス定数ｂにおいてフラグＦの値が、リンク未解決となっているか否かを判別する。
プログラムロード部１１は、リンク未解決でない（リンク解決済み）であると判別すると、後述するステップＳ１７に処理を進める。一方、フラグＦがリンク未解決であると判別した場合に、プログラムロード部１１は、プログラム２２を記憶空間上に生成する（ステップＳ１４）。つまり、図４（ａ）に示すように、プログラムロード部１１によりプログラム２２が記憶空間上に生成される。
【００３８】
そして、プログラムロード部１１は、生成したプログラム２２のアドレス定数ｔに、動的リンク情報Ｔのアドレスを設定する。（ステップＳ１５）、また、プログラムロード部１１は、プログラム２１のアドレス定数ｂを、図２（ａ）の形式から図２（ｂ）の形式に変換し、アドレスＡｄ１にプログラム２２の実行開始アドレスをセットする（ステップＳ１６）。
【００３９】
プログラムロード部１１は、ステップＳ１２にて検索したアドレス定数ｂが、最後のアドレス定数であるか否かを判別する（ステップＳ１７）。つまり、プログラム２１中の全てのアドレス定数ｂに対して処理を行ったか否かを判別する。
プログラムロード部１１は、最後のアドレス定数でないと判別すると、ステップＳ１２に処理を戻し、上述のステップＳ１２〜Ｓ１７の処理を繰り返し実行する。一方、最後のアドレス定数であると判別した場合に、実行前の事前準備を終え、プログラム２１の実行が開始される（ステップＳ１８）。
【００４０】
プログラム２１の実行が開始され、ＣＡＬＬ命令ａが実行されると、この実行に伴い、プログラム２２に制御が移る（ステップＳ１９）。
これは、上述のステップＳ１６にて、アドレス定数ｂ（アドレスＡｄ１）にプログラム２２の実行開始アドレスがセットされているためである。つまり、図４（ａ）に示すように、ＣＡＬＬ命令ａが実行され、アドレス定数ｂ（アドレスＡｄ１）が参照され、プログラム２２に制御が移る。
【００４１】
プログラム２２に制御が移り、最初にＣＡＬＬ命令ｂが実行されると、この実行に伴い、動的リンク部１２に制御が移る（ステップＳ２０）。つまり、図４（ａ）に示すように、ＣＡＬＬ命令ｂにて、パラメータにアドレス定数ｔと変数Ｅｎを指定し、動的リンク部１２が呼び出される。
【００４２】
動的リンク部１２は、動的リンクの対象となるプログラム２３を記憶空間にロードする（ステップＳ２１）。すなわち、動的リンク部１２は、図４（ｂ）に示すように、パラメータのアドレス定数ｔを参照して、動的リンク情報Ｔを取得すると、取得した動的リンク情報Ｔに従って、動的リンクの対象となるプログラム２３を特定する。そして、このプログラム２３を、補助記憶装置から記憶空間に動的にロードする。
動的リンク部１２は、プログラム２３の実行開始アドレスを変数Ｅｎに設定して、プログラム２２に返却する（ステップＳ２２）。つまり、プログラム２３の実行開始アドレスを変数Ｅｎにセットして、プログラム２２に制御を戻す。
【００４３】
プログラム２２に制御が戻り、続いてＣＡＬＬ命令ｃが実行されると、この実行に伴い、プログラム２３の実行が開始される（ステップＳ２３）。つまり、図４（ｃ）に示すように、変数Ｅｎには、プログラム２３の実行開始アドレスがセットされているため、プログラム２３が呼び出され実行される。
【００４４】
このように、動的リンク制御処理により、従来の動的リンク方式の課題を解決しつつ、外部モジュール（外部プログラム）を適切に呼び出すことができる。
すなわち、本発明の実施の形態にかかる動的リンク方式は、以下のような効果がある。
【００４５】
まず、第１の効果は、記憶空間の大きさを広げることが可能となる。これは、プログラム２１が実行される際に、アドレス定数ｂが、図２（ａ）の形式から図２（ｂ）の形式に変換されるためである。つまり、プログラム２１の開始時点で、図２（ａ）のフラグＦが不要となり、アドレス定数ｂをアドレス設定だけに使用できることとなり、記憶空間の大きさを広げることできる（第１の問題点に対応）。
【００４６】
第２の効果は、プログラム２１及びプログラム２３の両方が複数のタスク間で共有されていた場合であっても、アプリケーションプログラム側（プログラム２１）に、タスク間で同期をとる仕組みを必要としないことである。これは、プログラム２１の実行開始後には、アドレス定数ｂが動的に書き換えられることが無いためである。つまり、あるタスクでアドレス定数ｂを更新中に、他のタスクがアドレス定数ｂを参照することが無いため、プログラム２１に、タスク間で同期をとる仕組みを必要としない（第２の問題点に対応）。
【００４７】
第３の効果は、プログラム２１を複数のタスク間で共有し、かつ、プログラム２３をタスク間で共有しない場合であっても、プログラム２１からプログラム２３を動的リンクすることが可能となる。これは、仲介役となるプログラム２２のアドレス定数ｔの位置がタスク毎に異なるためである。つまり、タスクによってプログラム２３の実行開始アドレスが異なる場合であっても、そのアドレスをアドレス定数ｔに設定できるため、プログラム２１からプログラム２３を動的リンクすることができる（第３の問題点に対応）。
【００４８】
更に、第４の効果は、本方式を採用するにあたり、プログラム２１及びプログラム２３を再作成、再コンパイル、若しくは、再リンクする必要がないことである。
【００４９】
上記の実施の形態では、プログラムロード部１１は、記憶空間に仲介役となるプログラム２２を生成するが、このプログラム２２の生成手法は任意である。
例えば、プログラムロード部１１は、雛形となるプログラムに従って、プログラム２２を生成してもよい。
以下、本発明の変形例について、図５を参照して簡単に説明する。図５は、この発明の他の実施の形態に適用される動的リンク方式の構成の一例を示すブロック図である。
【００５０】
図示するように、この動的リンク方式は、プログラムロード部１１と、動的リンク部１２と、プログラム２１と、プログラム２２と、プログラム２３と、雛形プログラム３１と、を含んで構成される。
なお、プログラムロード部１１〜プログラム２３については、上述の図１に示す動的リンク方式の構成と同じである。
雛形プログラム３１は、仮想空間内のシステムプログラム領域に配置され、プログラム２２の雛形となる。
つまり、プログラムロード部１１は、この雛形プログラム３１を、記憶空間（ユーザプログラム実行領域等）にコピーすることにより、プログラム２２を生成する。
【００５１】
この動的リンク方式も、上述した図３の動的リンク制御処理にて動作することとなる。具体的な相違点は、プログラム２２を生成する箇所（ステップＳ１４）である。
すなわち、プログラム２２を記憶空間上に生成するステップＳ１４において、プログラムロード部１１は、雛形プログラム３１を、システムプログラム領域内からユーザプログラム実行領域にコピーすることにより、プログラム２２を生成する。
【００５２】
この図５に示す動的リンク方式によっても、従来の動的リンク方式の課題を解決しつつ、外部モジュール（外部プログラム）を適切に呼び出すことができる。
【００５３】
なお、この発明の実施の形態にかかる動的リンク方式は、専用機器によらず、通常のコンピュータシステムを用いて実現可能である。例えば、コンピュータに上述のいずれかを実行するためのプログラムを格納した媒体（フレキシブルディスク、ＣＤ−ＲＯＭ等）から当該プログラムをインストールすることにより、上述の処理を実行する動的リンク方式を構成することができる。
【００５４】
また、コンピュータにプログラムを供給するための手法は、任意である。例えば、通信回線、通信ネットワーク、通信システム等を介して供給してもよい。一例を挙げると、通信ネットワークの掲示板（ＢＢＳ）に当該プログラムを掲示し、これをネットワークを介して搬送波に重畳して配信する。
そして、このプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【００５５】
【発明の効果】
以上説明したように、本発明によれば、電子計算機システムにおいて、外部モジュール（外部プログラム）を適切に呼び出すことができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る動的リンク方式の構成の一例を示す模式図である。
【図２】実行対象のプログラムに含まれるアドレス定数の構造の一例を示す模式図であり、（ａ）が実行開始前のアドレス定数の図であり、（ｂ）が実行開始後のアドレス定数の図である。
【図３】本発明の実施の形態に係る動的リンク制御処理を説明するためのフローチャートである。
【図４】（ａ）〜（ｃ）共に、動的リンク方式の具体的動作を説明するための模式図である。
【図５】本発明の他の実施の形態に係る動的リンク方式の構成の一例を示す模式図である。
【図６】（ａ）〜（ｃ）共に、従来の動的リンク方式の具体的動作を説明するための模式図である。
【図７】従来の実行対象のプログラムに含まれるアドレス定数の構造の一例を示す模式図である。
【符号の説明】
１１  プログラムロード部
１２  動的リンク部
２１〜２３  プログラム
３１  雛形プログラム
【図１】
2004185472.tif 000003
【図２】
2004185472.tif 000004
【図３】
2004185472.tif 000005
【図４】
2004185472.tif 000006
【図５】
2004185472.tif 000007
【図６】
2004185472.tif 000008
【図７】
2004185472.tif 000009