JPH0535496A - プロセス間共有データ参照方式 - Google Patents
プロセス間共有データ参照方式Info
- Publication number
- JPH0535496A JPH0535496A JP20851691A JP20851691A JPH0535496A JP H0535496 A JPH0535496 A JP H0535496A JP 20851691 A JP20851691 A JP 20851691A JP 20851691 A JP20851691 A JP 20851691A JP H0535496 A JPH0535496 A JP H0535496A
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- code object
- compiled code
- inter
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 コンパイルドコードオブジェクトから参照す
るデータを複数のプロセス間で共有可能にする。 【構成】 ソースプログラム3 中のコンパイル指示手段
14によってプロセス間共有データとすべき指定を受けた
データ6 については、コンパイラ12-1が生成したコンパ
イルドコードオブジェクト13-2のロード時に、インタプ
リタ7-1 のローダ8-1 がプロセス間共有空間1 のデータ
領域4 に割り付け、そのアドレスをアドレス格納領域5
に設定し、そのアドレスに基づいてコンパイルドコード
オブジェクト13-2中のデータ6 を参照する機械語命令に
ついてアドレス格納領域内オフセット解決処理11-1を行
う。他のプロセス2-2 のコンパイルドコードオブジェク
ト13-3等のロード時にデータ6 についてデータ領域4 へ
の割り付けとアドレス設定とが既に行われていた場合に
は、アドレス格納領域内オフセット解決処理11-1だけを
行う。
るデータを複数のプロセス間で共有可能にする。 【構成】 ソースプログラム3 中のコンパイル指示手段
14によってプロセス間共有データとすべき指定を受けた
データ6 については、コンパイラ12-1が生成したコンパ
イルドコードオブジェクト13-2のロード時に、インタプ
リタ7-1 のローダ8-1 がプロセス間共有空間1 のデータ
領域4 に割り付け、そのアドレスをアドレス格納領域5
に設定し、そのアドレスに基づいてコンパイルドコード
オブジェクト13-2中のデータ6 を参照する機械語命令に
ついてアドレス格納領域内オフセット解決処理11-1を行
う。他のプロセス2-2 のコンパイルドコードオブジェク
ト13-3等のロード時にデータ6 についてデータ領域4 へ
の割り付けとアドレス設定とが既に行われていた場合に
は、アドレス格納領域内オフセット解決処理11-1だけを
行う。
Description
【0001】
【産業上の利用分野】本発明は、コンパイラが出力する
コンパイルドコードオブジェクトをインタプリタが実
行,管理するような言語プロセッサを1つのプロセスと
して複数実行する情報処理装置において、コンパイルド
コードオブジェクトから参照するデータを複数のプロセ
スで共有することができるプロセス間共有データ参照方
式に関する。
コンパイルドコードオブジェクトをインタプリタが実
行,管理するような言語プロセッサを1つのプロセスと
して複数実行する情報処理装置において、コンパイルド
コードオブジェクトから参照するデータを複数のプロセ
スで共有することができるプロセス間共有データ参照方
式に関する。
【0002】
【従来の技術】言語プロセッサの一方式として、例えば
図4に示すように、実行効率を向上させるためにソース
プログラムを翻訳してコンパイルドコードオブジェクト
44を生成するコンパイラ42と、ソースプログラム以
外に上記のコンパイルドコードオブジェクト44の記憶
域管理,実行管理を行うインタプリタ41とを備えた言
語プロセッサがある。
図4に示すように、実行効率を向上させるためにソース
プログラムを翻訳してコンパイルドコードオブジェクト
44を生成するコンパイラ42と、ソースプログラム以
外に上記のコンパイルドコードオブジェクト44の記憶
域管理,実行管理を行うインタプリタ41とを備えた言
語プロセッサがある。
【0003】このような言語プロセッサにおけるコンパ
イルドコードオブジェクト44は、或る種のヘッダ情報
(そのコンパイルドコードオブジェクトを識別するため
の名前例えば関数名,サイズ等を含む)を格納するヘッ
ダ領域45と、機械語命令列の並びを格納する機械語命
令列領域46と、インタプリタ41が生成管理している
ヒープ領域43に格納されているデータを機械語命令列
領域46中の機械語命令から参照するために使用するア
ドレスを格納するアドレス格納領域47とを含む形式を
有している。
イルドコードオブジェクト44は、或る種のヘッダ情報
(そのコンパイルドコードオブジェクトを識別するため
の名前例えば関数名,サイズ等を含む)を格納するヘッ
ダ領域45と、機械語命令列の並びを格納する機械語命
令列領域46と、インタプリタ41が生成管理している
ヒープ領域43に格納されているデータを機械語命令列
領域46中の機械語命令から参照するために使用するア
ドレスを格納するアドレス格納領域47とを含む形式を
有している。
【0004】ここで、コンパイルドコードオブジェクト
44内からヒープ領域43上のデータを参照する場合、
ソースプログラムのコンパイル時にはヒープ領域43上
のデータのアドレスを決定することができないので、イ
ンタプリタ41は、コンパイルドコードオブジェクト4
4を記憶域空間40にロードする際にヒープ領域43上
のデータのアドレスを確定し、その確定したアドレスを
アドレス格納領域47の予め定められた場所に格納する
ようにしている。
44内からヒープ領域43上のデータを参照する場合、
ソースプログラムのコンパイル時にはヒープ領域43上
のデータのアドレスを決定することができないので、イ
ンタプリタ41は、コンパイルドコードオブジェクト4
4を記憶域空間40にロードする際にヒープ領域43上
のデータのアドレスを確定し、その確定したアドレスを
アドレス格納領域47の予め定められた場所に格納する
ようにしている。
【0005】従って、コンパイラ42は、コンパイル時
点ではコンパイルドコードオブジェクト44内にヒープ
領域43上のアドレスが確定できた時点でそのアドレス
をインタプリタ41が格納するためのアドレス格納領域
47を設けておき、またそのアドレス格納領域47のど
の場所にどの機械語命令で参照するデータのアドレスを
格納するかを予め決め、その場所を経由してデータを参
照するような構造の機械語命令を生成している。
点ではコンパイルドコードオブジェクト44内にヒープ
領域43上のアドレスが確定できた時点でそのアドレス
をインタプリタ41が格納するためのアドレス格納領域
47を設けておき、またそのアドレス格納領域47のど
の場所にどの機械語命令で参照するデータのアドレスを
格納するかを予め決め、その場所を経由してデータを参
照するような構造の機械語命令を生成している。
【0006】例えば、コンパイルドコードオブジェクト
44に対応するソースプログラムの中でヒープ領域43
上のデータ49を参照する機械語命令がある場合、コン
パイラ42は、データ49のヒープ領域43上のアドレ
スをアドレス格納領域47の例えば3番目(3ワード
目)の場所48に格納するように決めると共に、その機
械語命令として場所48を経由してデータ49を参照す
る命令を生成し、インタプリタ41では、コンパイルド
コードオブジェクト44のロード時に、データ49のヒ
ープ領域43上のアドレスをその場所48に格納するも
のである。これによって、インタプリタ41の解釈実行
に際し使用されるベースレジスタRがコンパイルドコー
ドオブジェクト44の先頭をポイントし、ヘッダ領域4
5+機械語命令列領域46の大きさをαバイトとする
と、ベースレジスタRからの相対位置(αバイト+3ワ
ード目)となる領域48に格納されているアドレスが、
データ49を指すポインタデータとなる。
44に対応するソースプログラムの中でヒープ領域43
上のデータ49を参照する機械語命令がある場合、コン
パイラ42は、データ49のヒープ領域43上のアドレ
スをアドレス格納領域47の例えば3番目(3ワード
目)の場所48に格納するように決めると共に、その機
械語命令として場所48を経由してデータ49を参照す
る命令を生成し、インタプリタ41では、コンパイルド
コードオブジェクト44のロード時に、データ49のヒ
ープ領域43上のアドレスをその場所48に格納するも
のである。これによって、インタプリタ41の解釈実行
に際し使用されるベースレジスタRがコンパイルドコー
ドオブジェクト44の先頭をポイントし、ヘッダ領域4
5+機械語命令列領域46の大きさをαバイトとする
と、ベースレジスタRからの相対位置(αバイト+3ワ
ード目)となる領域48に格納されているアドレスが、
データ49を指すポインタデータとなる。
【0007】
【発明が解決しようとする課題】ところで、この種の言
語プロセッサは1つのプロセスとして他のプロセスと並
行して情報処理装置で実行されるものであり、情報処理
装置によっては、そのような言語プロセッサを複数個並
行して実行するものがある。
語プロセッサは1つのプロセスとして他のプロセスと並
行して情報処理装置で実行されるものであり、情報処理
装置によっては、そのような言語プロセッサを複数個並
行して実行するものがある。
【0008】このような情報処理装置においては、コン
パイルドコードオブジェクトから参照する全てのデータ
をインタプリタが生成,管理しているヒープ領域に割り
付ける従来のデータ参照方式では、インタプリタが個々
のプロセスとして各々存在するためにヒープ領域も各プ
ロセス上にとられることになるので、コンパイルドコー
ドオブジェクトから参照するデータを各プロセス上の言
語処理プロセッサで共有することができないという欠点
がある。
パイルドコードオブジェクトから参照する全てのデータ
をインタプリタが生成,管理しているヒープ領域に割り
付ける従来のデータ参照方式では、インタプリタが個々
のプロセスとして各々存在するためにヒープ領域も各プ
ロセス上にとられることになるので、コンパイルドコー
ドオブジェクトから参照するデータを各プロセス上の言
語処理プロセッサで共有することができないという欠点
がある。
【0009】本発明はこのような事情に鑑みて為された
ものであり、その目的は、コンパイルドコードオブジェ
クトから参照するデータを複数のプロセスで共有するこ
とができるようにすることにある。
ものであり、その目的は、コンパイルドコードオブジェ
クトから参照するデータを複数のプロセスで共有するこ
とができるようにすることにある。
【0010】
【課題を解決するための手段】本発明のプロセス間共有
データ参照方式は、上記の目的を達成するために、複数
プロセスの並列実行が可能で且つプロセス間で共有でき
るプロセス間共有空間を有し、ソースプログラムを翻訳
することによりデータを参照する機械語命令を含むコン
パイルドコードオブジェクトを出力するコンパイラと前
記コンパイルドコードオブジェクトを解釈実行するイン
タプリタとを含む言語プロセッサを1つのプロセスとし
て複数実行する情報処理装置において、プロセス間で共
有するデータを前記プロセス間共有空間に割り付け、そ
の割り付けたアドレスを前記プロセス間共有空間に設け
たアドレス格納領域に設定し、この設定されたアドレス
に基づいてアドレス格納領域内オフセット解決処理を行
った前記コンパイルドコードオブジェクト中の機械語命
令によって前記プロセス間共有データの参照を行うよう
にしている。
データ参照方式は、上記の目的を達成するために、複数
プロセスの並列実行が可能で且つプロセス間で共有でき
るプロセス間共有空間を有し、ソースプログラムを翻訳
することによりデータを参照する機械語命令を含むコン
パイルドコードオブジェクトを出力するコンパイラと前
記コンパイルドコードオブジェクトを解釈実行するイン
タプリタとを含む言語プロセッサを1つのプロセスとし
て複数実行する情報処理装置において、プロセス間で共
有するデータを前記プロセス間共有空間に割り付け、そ
の割り付けたアドレスを前記プロセス間共有空間に設け
たアドレス格納領域に設定し、この設定されたアドレス
に基づいてアドレス格納領域内オフセット解決処理を行
った前記コンパイルドコードオブジェクト中の機械語命
令によって前記プロセス間共有データの参照を行うよう
にしている。
【0011】
【作用】本発明のプロセス間共有データ参照方式におい
ては、プロセス間で共有されるデータがプロセス間共有
空間に割り付けられ、その割り付けたアドレスが同空間
に設けられたアドレス格納領域に設定され、この設定さ
れたアドレスに基づいてアドレス格納領域内オフセット
解決処理を行ったコンパイルドコードオブジェクト中の
機械語命令によって前記プロセス間共有空間上のデータ
の参照が行われる。
ては、プロセス間で共有されるデータがプロセス間共有
空間に割り付けられ、その割り付けたアドレスが同空間
に設けられたアドレス格納領域に設定され、この設定さ
れたアドレスに基づいてアドレス格納領域内オフセット
解決処理を行ったコンパイルドコードオブジェクト中の
機械語命令によって前記プロセス間共有空間上のデータ
の参照が行われる。
【0012】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
詳細に説明する。
【0013】図1は本発明の一実施例の構成図である。
同図において、インタプリタ7−1とコンパイラ12−
1とは1つの言語プロセッサを構成し、インタプリタ7
−2とコンパイラ12−2とは別の1つの言語プロセッ
サを構成する。
同図において、インタプリタ7−1とコンパイラ12−
1とは1つの言語プロセッサを構成し、インタプリタ7
−2とコンパイラ12−2とは別の1つの言語プロセッ
サを構成する。
【0014】インタプリタ7−1を含む言語プロセッサ
とインタプリタ7−2を含む言語プロセッサは、それぞ
れプロセス2−1,2−2として、本発明が適用される
情報処理装置で並行して実行される。
とインタプリタ7−2を含む言語プロセッサは、それぞ
れプロセス2−1,2−2として、本発明が適用される
情報処理装置で並行して実行される。
【0015】プロセス2−1には、インタプリタ7−1
が生成,管理しているヒープ領域15−1があって、そ
の中にコンパイルドコードオブジェクト13−2等が格
納される。また、インタプリタ7−1はローダ8−1を
備え、このローダ8−1はアドレス格納領域登録処理1
0−1およびアドレス格納領域内オフセット解決処理1
1−1を行う共有データ生成手段9−1を有している。
が生成,管理しているヒープ領域15−1があって、そ
の中にコンパイルドコードオブジェクト13−2等が格
納される。また、インタプリタ7−1はローダ8−1を
備え、このローダ8−1はアドレス格納領域登録処理1
0−1およびアドレス格納領域内オフセット解決処理1
1−1を行う共有データ生成手段9−1を有している。
【0016】同様にプロセス2−2には、インタプリタ
7−2が生成,管理しているヒープ領域15−2があっ
て、その中にコンパイルドコードオブジェクト13−3
等が格納される。また、インタプリタ7−2はローダ8
−2を備え、このローダ8−2はアドレス格納領域登録
処理10−2およびアドレス格納領域内オフセット解決
処理11−2を行う共有データ生成手段9−2を有して
いる。
7−2が生成,管理しているヒープ領域15−2があっ
て、その中にコンパイルドコードオブジェクト13−3
等が格納される。また、インタプリタ7−2はローダ8
−2を備え、このローダ8−2はアドレス格納領域登録
処理10−2およびアドレス格納領域内オフセット解決
処理11−2を行う共有データ生成手段9−2を有して
いる。
【0017】プロセス間共有空間1は、プロセス2−1
とプロセス2−2とで共有される記憶域空間である。こ
のプロセス間共有空間1にはデータ領域4があり、この
データ領域4にプロセス2−1,2−2で共有されるデ
ータ6と、このデータ6を各プロセス2−1,2−2が
参照するときに使用するアドレス格納領域5とが格納さ
れる。
とプロセス2−2とで共有される記憶域空間である。こ
のプロセス間共有空間1にはデータ領域4があり、この
データ領域4にプロセス2−1,2−2で共有されるデ
ータ6と、このデータ6を各プロセス2−1,2−2が
参照するときに使用するアドレス格納領域5とが格納さ
れる。
【0018】なお、或るコンパイルドコードオブジェク
トを各プロセス2−1,2−2で共有する場合、そのコ
ンパイルドコードオブジェクトは符号13−1で示され
るように、プロセス間共有空間1に割り付けられる。こ
のようなコンパイルドコードオブジェクトの共有に関す
る技術を記載した文献としては、例えば特願昭63−3
10827号添付明細書および図面がある。
トを各プロセス2−1,2−2で共有する場合、そのコ
ンパイルドコードオブジェクトは符号13−1で示され
るように、プロセス間共有空間1に割り付けられる。こ
のようなコンパイルドコードオブジェクトの共有に関す
る技術を記載した文献としては、例えば特願昭63−3
10827号添付明細書および図面がある。
【0019】次に、上述のように構成された本実施例の
動作を説明する。
動作を説明する。
【0020】今、プロセス2−1のコンパイラ12−1
にコンパイルさせるソースプログラム3中に、プロセス
間共有データとしたいデータ「abc」が存在する場
合、その旨をコンパイル指示子 'commonを含むコ
ンパイラ指示手段14でソースプログラム3において指
定しておく。
にコンパイルさせるソースプログラム3中に、プロセス
間共有データとしたいデータ「abc」が存在する場
合、その旨をコンパイル指示子 'commonを含むコ
ンパイラ指示手段14でソースプログラム3において指
定しておく。
【0021】コンパイラ12−1は、ソースプログラム
3をコンパイルしてコンパイルドコードオブジェクトを
生成するが、その際、コンパイルドコードオブジェクト
から参照しているデータがプログラム間共有データか否
かを前記コンパイラ指示手段14によって識別し、識別
結果をコンパイル結果に含めておく。
3をコンパイルしてコンパイルドコードオブジェクトを
生成するが、その際、コンパイルドコードオブジェクト
から参照しているデータがプログラム間共有データか否
かを前記コンパイラ指示手段14によって識別し、識別
結果をコンパイル結果に含めておく。
【0022】コンパイラ12−1によって生成されたコ
ンパイルドコードオブジェクトはインタプリタ7−1の
有するローダ8−1によって自プロセス2−1のヒープ
領域15−1またはプロセス間共有空間1にロードされ
る。今の場合は例としてヒープ領域15−1にコンパイ
ルドコードオブジェクト13−2としてロードされたも
のとする。
ンパイルドコードオブジェクトはインタプリタ7−1の
有するローダ8−1によって自プロセス2−1のヒープ
領域15−1またはプロセス間共有空間1にロードされ
る。今の場合は例としてヒープ領域15−1にコンパイ
ルドコードオブジェクト13−2としてロードされたも
のとする。
【0023】このロードの際、ローダ8−1は図2に示
すような処理を実行する。
すような処理を実行する。
【0024】先ず、コンパイルドコードオブジェクト1
3−2の中から参照しているデータを生成する際、デー
タがプロセス間共有データか否かをチェックする(A−
1)。プロセス間共有データでなければ、自分自身のプ
ロセス空間上のヒープ領域15−1へデータを生成する
(A−2)。
3−2の中から参照しているデータを生成する際、デー
タがプロセス間共有データか否かをチェックする(A−
1)。プロセス間共有データでなければ、自分自身のプ
ロセス空間上のヒープ領域15−1へデータを生成する
(A−2)。
【0025】プロセス間共有データの場合は、プロセス
間共有空間1のデータ領域4に既にそのデータが生成さ
れているか否かをチェックする(A−3)。
間共有空間1のデータ領域4に既にそのデータが生成さ
れているか否かをチェックする(A−3)。
【0026】そのようなデータが生成されていない場
合、そのプロセス間共有データをプロセス間共有空間1
のデータ領域4に割り付け(A−4)、次のステップA
−5において共有データ生成手段9−1によるアドレス
格納領域登録処理10−1を行う。
合、そのプロセス間共有データをプロセス間共有空間1
のデータ領域4に割り付け(A−4)、次のステップA
−5において共有データ生成手段9−1によるアドレス
格納領域登録処理10−1を行う。
【0027】即ち、前述したようにデータ「abc」が
プロセス間共有データとして指定されており、それがデ
ータ領域4に未だ割り付けられていない場合、図2のス
テップA−4で図3の如くデータ領域4にデータ6を割
り付け、ステップA−5のアドレス格納領域登録処理1
0−1で、上記割り付けたデータ6のアドレスをデータ
領域4のアドレス格納領域5のエントリに格納する。図
3の例では、アドレス格納領域5の第2エントリ(先頭
から4バイト目)に格納している。
プロセス間共有データとして指定されており、それがデ
ータ領域4に未だ割り付けられていない場合、図2のス
テップA−4で図3の如くデータ領域4にデータ6を割
り付け、ステップA−5のアドレス格納領域登録処理1
0−1で、上記割り付けたデータ6のアドレスをデータ
領域4のアドレス格納領域5のエントリに格納する。図
3の例では、アドレス格納領域5の第2エントリ(先頭
から4バイト目)に格納している。
【0028】また、ステップA−5でアドレス格納領域
登録処理10−1を行った後、或いはステップA−3で
当該プロセス間共有データがプロセス間共有空間1に既
に割り付けられていると判断された場合には、ステップ
A−6において共有データ生成手段9−1によるアドレ
ス格納領域内オフセット解決処理11−1を行う。
登録処理10−1を行った後、或いはステップA−3で
当該プロセス間共有データがプロセス間共有空間1に既
に割り付けられていると判断された場合には、ステップ
A−6において共有データ生成手段9−1によるアドレ
ス格納領域内オフセット解決処理11−1を行う。
【0029】このアドレス格納領域内オフセット解決処
理11−1では、以下のような処理を行う。
理11−1では、以下のような処理を行う。
【0030】例えば、コンパイルドコードオブジェクト
13−2の機械語命令列上に、データ「abc」の先頭
アドレスをレジスタRxへ移送することを示す命令「m
ove ”abc” Rx」に対応する機械語命令の如
くプロセス間共有データ「abc」を参照する機械語命
令がある場合、先ず、その参照するプロセス間共有デー
タ「abc」のアドレスがアドレス格納領域5の何番の
エントリに格納されているかを調べる。図3の場合は、
アドレス格納領域5の第2エントリ即ち先頭から4バイ
ト目に格納されている。
13−2の機械語命令列上に、データ「abc」の先頭
アドレスをレジスタRxへ移送することを示す命令「m
ove ”abc” Rx」に対応する機械語命令の如
くプロセス間共有データ「abc」を参照する機械語命
令がある場合、先ず、その参照するプロセス間共有デー
タ「abc」のアドレスがアドレス格納領域5の何番の
エントリに格納されているかを調べる。図3の場合は、
アドレス格納領域5の第2エントリ即ち先頭から4バイ
ト目に格納されている。
【0031】そして、この調査結果に基づき、コンパイ
ルドコードオブジェクト13−2に存在する上記機械語
命令の内容を変更する。今の場合、プロセス間共有デー
タ「abc」のアドレスはアドレス格納領域5の先頭か
ら4バイト目に格納されているので、プロセス間共有空
間1のアクセス時にベースレジスタRがアドレス格納領
域4の先頭を指すものとすると、上記の機械語命令は、
図3の符号30に示すように「move 4(R),R
x」のように変更される。これにより、コンパイルドコ
ードオブジェクト13−2からプロセス間共有データ
「abc」を参照することが可能になる。
ルドコードオブジェクト13−2に存在する上記機械語
命令の内容を変更する。今の場合、プロセス間共有デー
タ「abc」のアドレスはアドレス格納領域5の先頭か
ら4バイト目に格納されているので、プロセス間共有空
間1のアクセス時にベースレジスタRがアドレス格納領
域4の先頭を指すものとすると、上記の機械語命令は、
図3の符号30に示すように「move 4(R),R
x」のように変更される。これにより、コンパイルドコ
ードオブジェクト13−2からプロセス間共有データ
「abc」を参照することが可能になる。
【0032】なお、上述したようにプロセス2−1のコ
ンパイラ12−1でソースプログラム3をコンパイルさ
せてコンパイルドコードオブジェクト13−2を生成し
た後に、プロセス間共有データ「abc」を参照する命
令を含む別のソースプログラムをプロセス2−2のコン
パイラ12−2にコンパイルさせて例えばコンパイルド
コードオブジェクト13−3を生成した場合、プロセス
間共有データ「abc」は既にデータ領域4に割り付け
られており、そのアドレスがアドレス格納領域5に格納
されているので、プロセス2−2のローダ8−2は図2
のステップA−4,A−5を省略し、ステップA−6に
おいて、アドレス格納領域内オフセット解決処理9−2
だけを行うことになる。この結果、コンパイラ12−2
で生成されたコンパイルドコードオブジェクト13−3
をプロセス2−2のヒープ領域15−2にロードする場
合、プロセス間共有データ「abc」を参照する機械語
命令は図3の符号31に示すように修正される。
ンパイラ12−1でソースプログラム3をコンパイルさ
せてコンパイルドコードオブジェクト13−2を生成し
た後に、プロセス間共有データ「abc」を参照する命
令を含む別のソースプログラムをプロセス2−2のコン
パイラ12−2にコンパイルさせて例えばコンパイルド
コードオブジェクト13−3を生成した場合、プロセス
間共有データ「abc」は既にデータ領域4に割り付け
られており、そのアドレスがアドレス格納領域5に格納
されているので、プロセス2−2のローダ8−2は図2
のステップA−4,A−5を省略し、ステップA−6に
おいて、アドレス格納領域内オフセット解決処理9−2
だけを行うことになる。この結果、コンパイラ12−2
で生成されたコンパイルドコードオブジェクト13−3
をプロセス2−2のヒープ領域15−2にロードする場
合、プロセス間共有データ「abc」を参照する機械語
命令は図3の符号31に示すように修正される。
【0033】また、コンパイルドコードオブジェクトを
プロセス間で共有するために、図1および図3に示すよ
うにコンパイルドコードオブジェクト13−1としてプ
ロセス間共有空間1にロードする場合、それを最初にロ
ードしたプロセスが図2の処理を行うものであり、既に
ロードされたコンパイルドコードオブジェクトを使用す
るプロセスは図2のような処理を行う必要がない。
プロセス間で共有するために、図1および図3に示すよ
うにコンパイルドコードオブジェクト13−1としてプ
ロセス間共有空間1にロードする場合、それを最初にロ
ードしたプロセスが図2の処理を行うものであり、既に
ロードされたコンパイルドコードオブジェクトを使用す
るプロセスは図2のような処理を行う必要がない。
【0034】
【発明の効果】以上説明したように、本発明によれば、
プロセス間共有空間上に割り付けたデータをコンパイル
ドコードオブジェクト中の機械語命令によって参照する
ことができるので、コンパイルドコードオブジェクトか
ら参照するデータを複数のプロセスで共有することがで
きる。
プロセス間共有空間上に割り付けたデータをコンパイル
ドコードオブジェクト中の機械語命令によって参照する
ことができるので、コンパイルドコードオブジェクトか
ら参照するデータを複数のプロセスで共有することがで
きる。
【0035】このため、実行時に修正,変更されないよ
うなデータ、例えばメッセージ文字列や辞書的なデータ
などが大量に存在する場合、それらをプロセス間共有デ
ータとすることで記憶域空間を有効に活用することがで
きる。
うなデータ、例えばメッセージ文字列や辞書的なデータ
などが大量に存在する場合、それらをプロセス間共有デ
ータとすることで記憶域空間を有効に活用することがで
きる。
【図1】本発明の一実施例の構成図である。
【図2】ローダの処理の一例を示すフローチャートであ
る。
る。
【図3】アドレス格納領域登録処理とアドレス格納領域
内オフセット解決処理の説明図である。
内オフセット解決処理の説明図である。
【図4】従来方式の構成図である。
1…プロセス間共有空間 2−1,2−2…プロセス 3…ソースプログラム 4…データ領域 5…アドレス格納領域 6…プロセス間で共有されるデータ 7−1,7−2…インタプリタ 8−1,8−2…ローダ 9−1,9−2…共有データ生成手段 10−1,10−2…アドレス格納領域登録処理 11−1,11−2…アドレス格納領域内オフセット解
決処理 12−1,12−2…コンパイラ 13−1〜13−3…コンパイルドコードオブジェクト 14…コンパイル指示手段 15−1,15−2…ヒープ領域
決処理 12−1,12−2…コンパイラ 13−1〜13−3…コンパイルドコードオブジェクト 14…コンパイル指示手段 15−1,15−2…ヒープ領域
Claims (1)
- 【特許請求の範囲】 【請求項1】 複数プロセスの並列実行が可能で且つプ
ロセス間で共有できるプロセス間共有空間を有し、ソー
スプログラムを翻訳することによりデータを参照する機
械語命令を含むコンパイルドコードオブジェクトを出力
するコンパイラと前記コンパイルドコードオブジェクト
を解釈実行するインタプリタとを含む言語プロセッサを
1つのプロセスとして複数実行する情報処理装置におい
て、 プロセス間で共有するデータを前記プロセス間共有空間
に割り付け、その割り付けたアドレスを前記プロセス間
共有空間に設けたアドレス格納領域に設定し、該設定さ
れたアドレスに基づいてアドレス格納領域内オフセット
解決処理を行った前記コンパイルドコードオブジェクト
中の機械語命令によって前記プロセス間共有データの参
照を行うことを特徴とするプロセス間共有データ参照方
式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20851691A JPH0535496A (ja) | 1991-07-25 | 1991-07-25 | プロセス間共有データ参照方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20851691A JPH0535496A (ja) | 1991-07-25 | 1991-07-25 | プロセス間共有データ参照方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0535496A true JPH0535496A (ja) | 1993-02-12 |
Family
ID=16557466
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP20851691A Pending JPH0535496A (ja) | 1991-07-25 | 1991-07-25 | プロセス間共有データ参照方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0535496A (ja) |
-
1991
- 1991-07-25 JP JP20851691A patent/JPH0535496A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6363522B1 (en) | Method and apparatus for handling exceptions as normal control flow | |
| EP0620522A2 (en) | High performance dynamic linking through caching | |
| US6792599B2 (en) | Method and apparatus for an atomic operation in a parallel computing environment | |
| US20060095483A1 (en) | Modified computer architecture with finalization of objects | |
| JPH05204656A (ja) | スレッド固有データ保持方法 | |
| JP2002525707A (ja) | バーチャルコールのインライン化のための精確な方法 | |
| US7003768B2 (en) | Method and apparatus for class intialization barriers and access to class variables in multitasking virtual machines | |
| JP2590045B2 (ja) | 分散処理制御方法及び分散処理システム | |
| CN1813243B (zh) | 在受控运行时使软件应用去同步的装置和方法 | |
| CN117193882A (zh) | 一种基于微内核操作系统的elf加载方法 | |
| US5555412A (en) | Complier and method for alias checking in a complier | |
| US6959430B2 (en) | Specialized heaps for creation of objects in object-oriented environments | |
| US7913243B2 (en) | Method and system for generating and applying patches to a computer program concurrently with its execution | |
| EP0358621A2 (en) | Sharing workspaces in interactive processing | |
| US7228527B1 (en) | Method and system for structuring a procedure | |
| US6275985B1 (en) | Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support | |
| US6865738B2 (en) | Method and apparatus for managing independent asynchronous I/O operations within a virtual machine | |
| Maranget | GAML: A parallel implementation of lazy ML | |
| Baker et al. | Implementing ada exceptions | |
| JPH0535496A (ja) | プロセス間共有データ参照方式 | |
| US20030135535A1 (en) | Transferring data between threads in a multiprocessing computer system | |
| JPH0660047A (ja) | マルチプロセッサ処理装置 | |
| JPH11212807A (ja) | プログラム実行方法 | |
| JPH02156332A (ja) | プロセス間共有コード管理方式 | |
| JP2729795B2 (ja) | 並列計算機及びその制御方法 |