JPH02157936A - コモンセクションの動的リンク方式 - Google Patents

コモンセクションの動的リンク方式

Info

Publication number
JPH02157936A
JPH02157936A JP31185188A JP31185188A JPH02157936A JP H02157936 A JPH02157936 A JP H02157936A JP 31185188 A JP31185188 A JP 31185188A JP 31185188 A JP31185188 A JP 31185188A JP H02157936 A JPH02157936 A JP H02157936A
Authority
JP
Japan
Prior art keywords
common section
common
program
loaded
area
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.)
Granted
Application number
JP31185188A
Other languages
English (en)
Other versions
JP3293821B2 (ja
Inventor
Masaharu Ijiri
井尻 雅春
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP31185188A priority Critical patent/JP3293821B2/ja
Publication of JPH02157936A publication Critical patent/JPH02157936A/ja
Application granted granted Critical
Publication of JP3293821B2 publication Critical patent/JP3293821B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概   要〕 コモンセクションを保持するロードモジュール間の動的
リンク機構に関し、 コモンセクションを保持するロードモジュール群の間で
動的リンクを可能とすることを目的とし、ロードモジュ
ールのローディング機構において、コモンセクション付
のロードモジュールか否かの識別を行うコモンセクショ
ンの有無識別手段と、前記ロードモジュールがコモンセ
クション付でなければ動的リンク機構を利用し、コモン
セクション付であればすでにコモンセクションがローデ
ィング済であるか否かをコモンセクション共用制御表の
検索によって調べ、ローディングされていなければ、コ
モンセクションを新たにローディングし、コモンセクシ
ョン共用制御表を新たに作成し、コモンセクションポイ
ンタにコモンセクションの領域のアドレスを設定する制
御を行うコモンセクションの共用制御手段と、コモンセ
クションの長さが定義した長さ内になっているかどうか
を検出するコモンセクションの根長検出手段と、前記コ
モンセクションがローディング済である場合で、ローデ
ィング済のコモンセクションの領域の長さが定義した長
さよりも長い場合には、ローディング済コモンセクショ
ンのアドレスをコモンセクションポインタ領域に設定し
、ローディング済コモンセクションの領域の長さが定義
した長さより短い場合には、新たにコモンセクション領
域を獲得した後、ローディング済であったコモンセクシ
ョン領域の内容を複写した後、該コモンセクションを参
照するプログラムの全コモンセクションポインタを新た
に獲得したコモンセクション領域のアドレスに変更し、
以前のローディング済コモンセクション領域を返却する
制御を行ってコモンセクションへのアクセスを可能とす
るコモンセクションのアクセス制御手段とを有し、コモ
ンセクションを保持するロードモジュール群の実行時に
リンクを可能とするように構成する。
〔産業上の利用分野〕
本発明は、主プログラムと複数の外部手続きの間で共通
に使用されるデータを共通区の宣言を通じて参照するコ
モンセクション方式に係り、更に詳しくは、コモンセク
ションを保持するロードモジュール間の動的リンク機構
に関する。
近年、汎用計算機システムばかりでな(、パーソナルユ
ースの計算機システムにおいても、利用者プログラムの
保守性のために、ロードモジュールすなわち、実行可能
なプログラムそのものの間で動的にリンクして、使用す
る要求が高まってきた。ロードモジュール間で動的にリ
ンクすることにより利用者プログラム実行時のワーキン
グ領域が削減でき、重複したプログラムコードの保有に
起因するロードモジュールの保管ディスク容量が膨張す
るという問題を回避することが可能である。
〔従来の技術〕
従来、複数個のプログラム単位の間でデータを共有して
利用するコモンセクションの方式では、コモンセクショ
ンの宣言は、ソースプログラムで行い、コンパイルし、
リンクし、ローダへの入力としていた。ロードモジュー
ル化された後では、動的リンクする機構はサポートでき
ず、コモンセクションの有無を識別する機構はまったく
装備されていなかった。
〔発明が解決しようとする課題〕
従って、従来のローディング機構ではコモンセクション
を保持するロードモジュール間の動的リンクの処理は禁
止されていた。そのため、複数のロードモジュールに対
して利用者プログラムの保守を行う時にも、コンパイル
単位のロードモジュールの入れ替えが出来ず、必ず静的
リンクのやり直しを伴っていた。このため、煩雑なロー
ドモジュール関係の管理が必要となり、保守時間の無駄
と、管理の複雑化といった問題が生じていた。
さらに静的リンクを行っているため、実行時に不必要な
ワーキングセットが増加したり、ロードモジュールの保
管ディスク容量が膨張するという問題が生じていた。
本発明は、コモンセクションを保持するロードモジュー
ル群の間で動的リンクを可能とすることを目的とする。
〔課題を解決するための手段〕
第1図は本発明の原理図である。
利用者プログラムがまず動的リンク要求(CALL文呼
び出し関数呼出し等を行って、システムコールする。そ
して、動的リンク機構において、コモンセクションの有
無識別手段1は、要求プログラムがコモンセクション付
のロードモジュールか否かの識別を行い、コモンセクシ
ョンの共用制御手段2は、ロードモジュールがコモンセ
クション付でなければ従来の動的リンク機構を利用し、
コモンセクション付であればすでにコモンセクションが
ローディング済であるか否かをコモンセクション共用制
御表の検索によって調べ、ローディングされていなけれ
ば要求プログラムの内、コモンセクション以外のセクシ
ョンがローディング済かを調べる。そして、コモンセク
ション以外のセクションもローディングした後に、コモ
ンセクションを新たにローディングし、コモンセクショ
ン共用制御表を新たに作成する。そして、コモンセクシ
ョンポインタにコモンセクションの領域のアドレスを設
定する制御を行う。コモンセクションの共用制御手段2
でコモンセクションがローディング済と判断したとき、
コモンセクションの根長検出手段3により、要求コモン
セクションの長さがローディング済コモンセクションの
長さより大かどうかを検出し、コモンセクションのアク
セス制御手段4は、要求コモンセクションの長さがロー
ディング済のコモンセクションの領域の長さより短い場
合には、ローディング済コモンセクションのアドレスを
コモンセクションポインタ領域に設定し、要求コモンセ
クションの長さがローディング済コモンセクションの領
域の長さより長い場合には、新たにコモンセクション領
域を獲得した後、ローディング済であったコモンセクシ
ョン領域の内容を複写し、該コモンセクションを参照す
るプログラムの全コモンセクションポインタを新たに獲
得したコモンセクション領域のアドレスに変更し、以前
のローディング済コモンセクション領域を返却する制御
を行ってコモンセクションへのアクセスを可能とし、コ
モンセクションを保持するロードモジュール群の実行時
にリンクを可能とする。
〔作   用〕
ロードモジュールのローディング機構に、コモンセクシ
ョンの有無を識別する機構l、コモンセクションの共用
制御機構2、コモンセクションの根長検出機構3、コモ
ンセクションへのアクセス手順4を設け、コモンセクシ
ョンを保持するロードモジュール間の動的リンクを実現
できるようにした。
〔実  施  例〕
次に本発明の実施例を図面を参照して説明する。
−iにオブジェクトプログラムが直接実行形態で動(機
械語はロードモジュールと呼ばれる。このロードモジュ
ールを作成する場合には、幾つかの単位に区切られたプ
ログラムを読み込んで、プログラム相互にまたがる名前
の参照を解釈し、更にその名前による参照を番地による
参照に換えるため、リンケージという作業が行われる。
与えられたプログラムは必要なだけの標準的な副プログ
ラム類を選択して結合するセレクティブローディングの
機能を有している。更にプログラムに指定された変数の
初期値等が代入されて、ロードモジュールが形成される
。FORTRAN等で書かれたプログラムにおける手続
きは、1つの主プログラムと複数個のサブルーチン、す
なわち外部手続きに分割されている。これら分割された
手続きでは、各々の関数やサブルーチンがプログラム単
位であって、各プログラム単位で、名前(名標と呼ばれ
る)の有効範囲の局所性を定める必要がある。
その名標によって参照されるデータはプログラム単位の
内部に閉じ込められる場合もあれば他のプログラム単位
とやりとりされる場合もあり、また共通区すなわちコモ
ンセクションの宣言を通してコモンセクション中のデー
タをお互いに参照する場合もある。
一般に、複数個のプログラム単位がある1つのコモンセ
クションのデータを参照する場合、それらのプログラム
単位の実行中はそのコモンセクション中のデータの値は
保存されるが、コモンセクションを宣言しているプログ
ラム単位のうち、実行系列の最下位のものの実行が終わ
るとそのコモンセクション中のデータの値は不定となる
。例えばプログラム単位Aがプログラム単位BとCを呼
んでいる、すなわちcallLでいるとした場合で、さ
らにそのBとCはコモンセクションXのデータを共用す
るとする。このような場合には、一般にプログラム単位
BとCの中にコモンセクションの宣言を書き、そのBと
Cを呼んでいるプログラム単位A、すなわち上位のプロ
グラム単位にもしコモンセクションXの宣言がない場合
には、BやCの実行が終わった時点ではXの値は不定と
なる。
一般に、複数のプログラム単位上で個別に定義されるコ
モンセクションはこのため、ソースプログラムのみで定
義されていた。コモンセクションを保持するロードモジ
ュール群の間では動的にリンクすることが出来なかった
ため、コンパイル単位のロードモジュールの入れ替えが
出来ない等の問題が生じていた。そこで、本発明はコモ
ンセクションを保持するロードモジュール群の間でも動
的にリンクを可能したものである。
第2図(a)は本発明の構成図で、働)はコモンセクシ
ョンへのアクセス手順の実施例図である。同図(a)、
 (b)において5は利用者プログラム、6は動的リン
ク機構、1はコモンセクションの有無を識別する識別機
構、2はコモンセクションの共用制御機構、3は課長検
出機構、4はコモンセクションへのアクセス機構である
。第2図(a)に示されるように、本発明では、コモン
セクション付のロードモジュールか否かを識別機構1で
行い、コモンセクション付でなければ、従来通りの動的
リンク機構を利用する。すなわち、各プログラム単位で
共通に使われる共通データはないので、従来通りの動的
リンク機構が可能となる。識別機構1において、もしコ
モンセクション付であると判明した場合には、コモンセ
クション共用制御機構2は、そのコモンセクションがす
でに主記憶装置にローディング済であるか否かをコモン
セクション共用制御表の検索によって調べる。そして、
ローディングされていなければ、コモンセクションを新
たに主記憶装置にローディングし、コモンセクション共
用制御表を新たに作成する。そして、コモンセクション
ポインタにコモンセクションの領域のアドレス、すなわ
ち第2図(b)に示されるコモンセクションポインタA
に、コモンセクション領域7の先頭アドレス8を設定す
る。この場合、コモンセクションポインタAは必ず書き
込み可能セクションに作成し、書き込み禁止セクション
からのコモンセクションへの参照は必ず書き込み可能セ
クション経由で行うものとする。
コモンセクション領域マがすでに主記憶装置にローディ
ング済であれば、ローディング済のコモンセクションの
領域の長さが要求されたコモンセクションの長さ、すな
わち定義された領域の長さ以上か否かをコモンセクショ
ンの課長検出機構3によって調べる。コモンセクション
の課長検出機構3におけるこの根長とはコモンセクショ
ン定着長が異なる状態をいう。そしてローディング済コ
モンセクションの領域の長さが長い場合には、ローディ
ング済コモンセクション領域7の先頭アドレス8をコモ
ンセクションポインタ領域、すなわち第2図(b)に示
されるコモンセクションポインタAに設定する。一方、
ローディング済コモンセクション領域7の長さが短い場
合には新たにコモンセクション領域7を獲得した後、ロ
ーディング済であったコモンセクション領域7の内容を
そこに複写した後、該コモンセクション領域7を参照す
るプログラムのコモンセクションポインタAを新たに獲
得したコモンセクション領域7の先頭アドレス8に変更
し、以前のローディング済コモンセクションの領域を返
却する。なおここで複数のソースプログラム上で個別に
定義されたコモンセクションの領域の長さは同一にして
おく必要はなく、動的リンク時にこれらのコモンセクシ
ョン定義のうちの最大長が採用されることになる。
また、コモンセクションへのアクセス手順は第2図(b
)に示されるように行われる。コモンセクションへのア
クセスを行う場合には、主記憶上の書き込み可能な領域
、すなわち書き込み可能セクションを用いてまず、■に
示すようにコモンセクションアドレス、すなわち第2図
℃)の下に示されるコモンセクション領域7の先頭アド
レス8を第2図(b)のコモンセクションポインタAか
ら取り出し、■に示すように、その先頭アドレス8をベ
ースにして、コモンセクション領域7内のデータにアク
セスする。ここでベースとは相対番地の基底をなすアド
レスであって、プログラム単位の相互間では、プログラ
ム単位の頭からの相対番地等の方法でコモンセクション
内のデータがアクセスされる。
第3図は本発明のコモンセクションの動的リンク方式に
従うコモンセクションを保持するロードモジュールに対
応するプログラム例である。プログラムはわかりわすい
ようにアセンブラ言語で書かれているが、実際にはこれ
はロードモジュールであるとする。プログラム単位Aは
プログラムBを(CALL  B)というCALL文で
呼んでいる。
すなわちプログラムAはプログラムBよりも上位であっ
て、プログラム単位AもBも名標Xというコモンセクシ
ョンのデータを共通に宣言している。
この場合、上位のプログラム単位であるプログラム単位
Aにも、下位のプログラム単位Bにも、コモンセクショ
ンXの宣言があるので、プログラム単位Bの実行が終わ
った時点でのXの値は不定とはならず、AとBとの間で
Xを通じてデータの値をやりとりをすることが可能とな
る。もしプログラムAにコモンセクションXの宣言がな
ければ、プログラムBの実行が終わった時点でのXの値
は不定となる。
このように、プログラム単位間の呼び出しの実行が一般
に木構造になり、複数のプログラム単位で1つの或いは
多数のコモンセクションを参照している場合1.これら
のプログラム単位の実行中は宣言されたコモンセクショ
ンをもっているプログラム間ではそのコモンセクション
中のデータの値は保存される。
第3回に示した実施例図の動作順序は次のようになる。
1)プログラムAを実行させる(EXECPCM=A)
2)動的リンク機構はプログラムへ〇ローディング時に
名標Xを持つコモンセクション領域を獲得し、プログラ
ムX内のアドレス定数XC0Mにアドレスを格納する。
3)動的リンク機構はプログラムAに制御を渡す。
4)プログラムAが実行し、コモンセクション領域の内
容を変更、参照等行った後、動的リンクでプログラムB
を呼び出す。
5)動的リンク機構はプログラムBのローディング時に
、まず仮想アドレス空間内を名標Xで検索する。例では
名標Xが発見でき、コモンセクション長を比較するが、
長さが違うため、長い方の長さを新規に獲得し直し、旧
領域から新領域に内容を複写する。新領域のアドレスを
プログラムAとプログラムBのアドレス定数域(XCO
MとYCOM)に格納する。
6)動的リンク機構はプログラムBに制御を渡す。
7)プログラムBが実行し、コモンセクション領域の内
容を変更、参照等おこなう。
まず、プログラムAが実行されると、本発明の動的リン
ク機構ではプログラムAのローディング時に名標Xを持
つコモンセクション領域を獲得する。図に示されるよう
に、このコモンセクションのデータ長は100Aであっ
て、そのアドレスはA  (X)とすれば、プログラム
X内のアドレス定数XC0Mにそのアドレスが格納され
る。その後、動的リンク機構はプログラムAに制御が渡
される。プログラムAが実行されると、実行途中でXは
その内容が変更され、また参照されるので、コモンセク
ション領域の内容もそれに従って変更される。このよう
に変更された値は(CALLB)のところでプログラム
Bを呼び出すために、プログラムBに移る。この時、プ
ログラムBにおいてもこのXはコモンセクションの共通
データである。従って、プログラムAで更新された値が
プログラムBに渡される。5)に移って本発明の動的リ
ンク機構はプログラムBのローディング時にまず、仮想
アドレス空間内を名標Xで検索する。
すなわちプログラムB″rxにあたると名標Xで検索す
ることになる。そして名標Xが発見されると、そのコモ
ンセクション長を比較する。プログラムAでは名標Xの
長さは100AであったがプログラムBではXは300
Aで定義されている。そのため、プログラムAで更新さ
れたXの値はプログラムBOXにそのままその内容が複
写することが可能となる。すなわち、長さが違う場合に
は、領域の長い方の長さに新規に獲得し直し、旧領域か
ら新領域にその内容を複写する。この例では、すでにプ
ログラムBのコモンセクションの長さはプログラムへの
コモンセクションの長さよりモ長いためそのまま複写す
ることが可能となる。こうして新領域のアドレス、すな
わちコモンセクションの先頭アドレスは新規に変わる。
そして、そのコモンセクションの先頭アドレスはプログ
ラムAとプログラムBのアドレス定数域、すなわちXC
0MとYCOMに格納される。この動作が終わった後、
動的リンク機構はプログラムBに制御をわたす。プログ
ラムBにおいても、このXは当然使われているため、プ
ログラムBの実行時にコモンセクション領域の内容は変
更され、参照される。その変更された内容はプログラム
AのCALL文以下の命令において、利用されることに
なる。
〔発明の効果〕
以上説明したように、本発明によればコモンセクション
付のロードモジュールが混在する場合にも、その存在を
意識すること無く動的リンクを利用できるため、あらゆ
る場合について、動的リンクを前提としたプログラム実
行環境とプログラム保守・管理の環境を構築可能となる
。従って、実行時には必要最小限のワーキングセットに
抑えることが出来、ロードモジュール保管に際しては必
要最小限のディスク容量に抑えることが出来、また保守
・管理については、再リンク不要となる。
そして、保守方法の一貫性を保つことが出来、プログラ
ム開発、プログラム実行環境の構築と、プログラムの保
守、管理の資源節約と手順の簡素化に寄与するところが
大きい。
【図面の簡単な説明】
第1図は本発明の原理図、 第2図(a)は本発明の構成図、(b)はコモンセクシ
ョンへのアクセス手順の実施例図、 第3図は本発明のコモンセクションの動的リンク方式に
従うコモンセクションを保持するロードモジュールに対
応するプログラムの実施例図である。 1・・・コモンセクションの有無識別手段、2・・・コ
モンセクションの共用制?ill 手段、3・・・コモ
ンセクションの課長検出!、4・・・コモンセクション
のアクセス制御手段。 コモンセクションへのアクセス手順咲の実施(pl(u
Wk2図(b)

Claims (1)

  1. 【特許請求の範囲】 ロードモジュールのローディング機構において、コモン
    セクション付のロードモジュールか否かの識別を行うコ
    モンセクションの有無識別手段(1)と、 前記ロードモジュールがコモンセクション付でなければ
    動的リンク機構を利用し、コモンセクション付であれば
    すでにコモンセクションがローディング済であるか否か
    をコモンセクション共用制御表の検索によって調べ、ロ
    ーディングされていなければ、コモンセクションを新た
    にローディングし、コモンセクション共用制御表を新た
    に作成し、コモンセクションポインタにコモンセクショ
    ンの領域のアドレスを設定する制御を行うコモンセクシ
    ョンの共用制御手段(2)と、 コモンセクションの長さが定義した長さ内になっている
    かどうかを検出するコモンセクションの誤長検出手段(
    3)と、 前記コモンセクションがローディング済である場合で、
    ローディング済のコモンセクションの領域の長さが定義
    した長さよりも長い場合には、ローディング済コモンセ
    クションのアドレスをコモンセクションポインタ領域に
    設定し、ローディング済コモンセクションの領域の長さ
    が定義した長さより短い場合には、新たにコモンセクシ
    ョン領域を獲得した後、ローディング済であったコモン
    セクション領域の内容を複写した後、該コモンセクショ
    ンを参照するプログラムの全コモンセクションポインタ
    を新たに獲得したコモンセクション領域のアドレスに変
    更し、以前のローディング済コモンセクション領域を返
    却する制御を行ってコモンセクションへのアクセスを可
    能とするコモンセクションのアクセス制御手段(4)と
    を有し、コモンセクションを保持するロードモジュール
    群の実行時にリンクを可能とすることを特徴とするコモ
    ンセクションの動的リンク方式。
JP31185188A 1988-12-12 1988-12-12 動的リンクシステム Expired - Fee Related JP3293821B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31185188A JP3293821B2 (ja) 1988-12-12 1988-12-12 動的リンクシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31185188A JP3293821B2 (ja) 1988-12-12 1988-12-12 動的リンクシステム

Publications (2)

Publication Number Publication Date
JPH02157936A true JPH02157936A (ja) 1990-06-18
JP3293821B2 JP3293821B2 (ja) 2002-06-17

Family

ID=18022179

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31185188A Expired - Fee Related JP3293821B2 (ja) 1988-12-12 1988-12-12 動的リンクシステム

Country Status (1)

Country Link
JP (1) JP3293821B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62241031A (ja) * 1986-04-11 1987-10-21 Nec Corp プログラムの動的リンク制御装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62241031A (ja) * 1986-04-11 1987-10-21 Nec Corp プログラムの動的リンク制御装置

Also Published As

Publication number Publication date
JP3293821B2 (ja) 2002-06-17

Similar Documents

Publication Publication Date Title
US5916308A (en) Dynamic link libraries without linker or loader support
KR100518584B1 (ko) 공유 라이브러리 시스템 및 상기 시스템 구축 방법
US5339435A (en) Heterogenous software configuration management apparatus
US5247678A (en) Load time linker for software used with a multiprocessor system
JP2986042B2 (ja) オブジェクト指向プログラミング環境を変更するための方法及び装置
US6202205B1 (en) System and method for profile-based, on-the-fly optimization of library code
US6154878A (en) System and method for on-line replacement of software
EP0620522B1 (en) High performance dynamic linking through caching
US5848274A (en) Incremental byte code compilation system
JP3314378B2 (ja) 実行可能プログラムに対するメモリ割当を管理するシステムおよび方法
US5353411A (en) Operating system generation method
KR100450312B1 (ko) 읽기전용메모리에클래스들을로딩하기위한방법및시스템
US7992141B2 (en) Method and apparatus for building executable computer programs using compiled program libraries
US6665735B1 (en) Method of changing a dynamic link library function efficiently and a computer system for executing the same
US20080005728A1 (en) Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US20080005719A1 (en) Methods, systems, and computer program products for providing a program execution environment
JPH02188833A (ja) アプリケーションとデータベース管理システム間の相互通信システム及び方法
JPH01154267A (ja) 入出力機器制御プログラムのアドレス解決方法
US20080005727A1 (en) Methods, systems, and computer program products for enabling cross language access to an addressable entity
US20080022265A1 (en) Methods, systems, and computer program products for generating and using object modules
US20070006201A1 (en) Method and system for generating and applying patches to a computer program concurrently with its execution
JPH0836488A (ja) ダイナミック・パッチングを使用するランタイム・エラー・チェック方法と装置
US7028293B2 (en) Constant return optimization transforming indirect calls to data fetches
US4787034A (en) Program access system
US20040123308A1 (en) Hybird of implicit and explicit linkage of windows dynamic link labraries

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees