JPH02156332A - プロセス間共有コード管理方式 - Google Patents
プロセス間共有コード管理方式Info
- Publication number
- JPH02156332A JPH02156332A JP63310827A JP31082788A JPH02156332A JP H02156332 A JPH02156332 A JP H02156332A JP 63310827 A JP63310827 A JP 63310827A JP 31082788 A JP31082788 A JP 31082788A JP H02156332 A JPH02156332 A JP H02156332A
- Authority
- JP
- Japan
- Prior art keywords
- shared
- compiled code
- code object
- data
- address
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、コンパイラが出力するコンパイルドコードオ
ブジェクトをインタプリタが実行、管理するような言語
プロセッサを1つのプロセスとして複数実行する情報処
理装置において、コンパイルドコードオブジェクトを複
数のインタプリタで共有することのできるプロセス間共
有コード管理方式に関する。
ブジェクトをインタプリタが実行、管理するような言語
プロセッサを1つのプロセスとして複数実行する情報処
理装置において、コンパイルドコードオブジェクトを複
数のインタプリタで共有することのできるプロセス間共
有コード管理方式に関する。
言語プロセッサの一方式として、例えば第5図に示すよ
うに、実行効率を向上させるためにソースプログラムを
翻訳してコンパイルドコードオブジェクト44を生成す
るコンパイラ42と、ソースプログラム以外に上記のコ
ンパイルドコードオブジェクト44の記憶域管理、実行
管理を行うインタプリタ41とを設けた言語プロセッサ
がある。
うに、実行効率を向上させるためにソースプログラムを
翻訳してコンパイルドコードオブジェクト44を生成す
るコンパイラ42と、ソースプログラム以外に上記のコ
ンパイルドコードオブジェクト44の記憶域管理、実行
管理を行うインタプリタ41とを設けた言語プロセッサ
がある。
このような言語プロセッサにおける従来のコンパイルド
コードオブジェクト44は、同図に示すように、成る種
のヘッダ情報(そのコンパイルドコードオブジェクトを
識別するための名前例えば関数名、サイズ等を含む)を
格納するヘッダ領域45と、機械語命令列の並びを格納
するl!械話語命令列領域46、インタプリタ41が生
成管理しているヒープ領域43に格納されているデータ
を機械語命令列領域46中の機械語命令から参照するた
めに使用するアドレスを格納するアドレス格納領域47
とを含む形式を有している。ここで、コンパビルドコー
ドオブジェクト44内からヒープ領域43上のデータを
参照する場合、ソースプログラムのコンパイル時にはヒ
ープ領域43上のデータのアドレスを決定することがで
きないので、インタプリタ41は、コンパイルドコード
オブジェクト44を記憶域空間40にロードする際にヒ
ープ領域43上のデータのアドレスを確定し、その確定
したアドレスをアドレス格納領域、47の予め定められ
た場所に格納するようにしている。従って、コンパイラ
42は、コンパイル時点ではコンパイルドコードオフ゛
ジェクト44内にヒープ領域43上のアドレスが確定で
きた時点でそのアドレスをインタプリタ41が格納する
為のアドレス格納領域47を設けておき、またそのアド
レス格納領域47のどの場所にどの機械語命令で参照す
るデータのアドレスを格納するかを予め決め、その場所
を経由してデータを参照するような構造の機械語命令を
生成している。
コードオブジェクト44は、同図に示すように、成る種
のヘッダ情報(そのコンパイルドコードオブジェクトを
識別するための名前例えば関数名、サイズ等を含む)を
格納するヘッダ領域45と、機械語命令列の並びを格納
するl!械話語命令列領域46、インタプリタ41が生
成管理しているヒープ領域43に格納されているデータ
を機械語命令列領域46中の機械語命令から参照するた
めに使用するアドレスを格納するアドレス格納領域47
とを含む形式を有している。ここで、コンパビルドコー
ドオブジェクト44内からヒープ領域43上のデータを
参照する場合、ソースプログラムのコンパイル時にはヒ
ープ領域43上のデータのアドレスを決定することがで
きないので、インタプリタ41は、コンパイルドコード
オブジェクト44を記憶域空間40にロードする際にヒ
ープ領域43上のデータのアドレスを確定し、その確定
したアドレスをアドレス格納領域、47の予め定められ
た場所に格納するようにしている。従って、コンパイラ
42は、コンパイル時点ではコンパイルドコードオフ゛
ジェクト44内にヒープ領域43上のアドレスが確定で
きた時点でそのアドレスをインタプリタ41が格納する
為のアドレス格納領域47を設けておき、またそのアド
レス格納領域47のどの場所にどの機械語命令で参照す
るデータのアドレスを格納するかを予め決め、その場所
を経由してデータを参照するような構造の機械語命令を
生成している。
例えば、コンパイルドコードオブジェクト44に対応す
るソースプログラムの中でヒープ領域43上のデータ4
9(“abc”なる文字列データ)を参照する機械語命
令がある場合、コンパイラ42は、データ49のヒープ
領域43上のアドレスをアドレス格納領域47の例えば
第3番目(3ワード目)の場所48に格納するように決
めると共に、その機械語命令として場所48を経由して
データを参照する命令を生成し、インタプリタ4Iでは
、コンパイルドコードオブジェクト44のロード時に、
データ49のヒープ領域43上のアドレスをその場所4
8に格納するものである。これによって、インタプリタ
41の解釈実行に際し使用されるペースレジスタRがコ
ンパイルドコードオブジェクト44の先頭をポイントし
、ヘッダ領域45+機械語命令列領域46の大きさをα
バイトとすると、ペースレジスタRからの相対位置が(
αハイド+3ワード目)となる領域48に格納されてい
るアドレスが、文字列“abc”のデータ49を指すポ
インタデータとなる。
るソースプログラムの中でヒープ領域43上のデータ4
9(“abc”なる文字列データ)を参照する機械語命
令がある場合、コンパイラ42は、データ49のヒープ
領域43上のアドレスをアドレス格納領域47の例えば
第3番目(3ワード目)の場所48に格納するように決
めると共に、その機械語命令として場所48を経由して
データを参照する命令を生成し、インタプリタ4Iでは
、コンパイルドコードオブジェクト44のロード時に、
データ49のヒープ領域43上のアドレスをその場所4
8に格納するものである。これによって、インタプリタ
41の解釈実行に際し使用されるペースレジスタRがコ
ンパイルドコードオブジェクト44の先頭をポイントし
、ヘッダ領域45+機械語命令列領域46の大きさをα
バイトとすると、ペースレジスタRからの相対位置が(
αハイド+3ワード目)となる領域48に格納されてい
るアドレスが、文字列“abc”のデータ49を指すポ
インタデータとなる。
(発明が解決しようとする課題〕
ところで、この種の言語プロセッサは1つのプロセスと
して他のプロセスと並行して情報処理装置で実行される
ものであり、情報処理装置によっては、そのような言語
プロセッサを複数個並行して実行するものがある。この
ようなとき、従来のコンパイルドコードオブジェクト管
理方式においては、コンパイルドコードオブジェクトか
らヒープ6N域上のデータを参照し得るようにする為に
、コンパイルドコードオブジェクトを記憶域空間に割り
付ける際にヒープ領域上のデータのアドレスを確定して
コンパイルドコードオブジェクトと一体化したアドレス
格納領域にそのアドレスを格納するような構造を採用し
ているため、個々のプロセスとして実行される複数のイ
ンタプリタでコンパイルドコードオブジェクトを共有す
ることができないという問題点があった。従って、記憶
域空間を有効に活用するようなシステムを構築すること
が困難であった。
して他のプロセスと並行して情報処理装置で実行される
ものであり、情報処理装置によっては、そのような言語
プロセッサを複数個並行して実行するものがある。この
ようなとき、従来のコンパイルドコードオブジェクト管
理方式においては、コンパイルドコードオブジェクトか
らヒープ6N域上のデータを参照し得るようにする為に
、コンパイルドコードオブジェクトを記憶域空間に割り
付ける際にヒープ領域上のデータのアドレスを確定して
コンパイルドコードオブジェクトと一体化したアドレス
格納領域にそのアドレスを格納するような構造を採用し
ているため、個々のプロセスとして実行される複数のイ
ンタプリタでコンパイルドコードオブジェクトを共有す
ることができないという問題点があった。従って、記憶
域空間を有効に活用するようなシステムを構築すること
が困難であった。
本発明はこのような事情に鑑みて為されたものであり、
その目的は、各インタプリタ間でコンパイルドコードオ
ブジェクトを共有することができるようにすることにあ
る。
その目的は、各インタプリタ間でコンパイルドコードオ
ブジェクトを共有することができるようにすることにあ
る。
〔課題を解決するための手段〕
本発明のプロセス間共有コード管理方式は、上記の目的
を達成するために、複数プロセスの並列実行が可能で且
つプロセス間で共有できるプロセス間共有空間を有し、
ソースプログラムを翻訳するごとによりデータを参照す
る機械語命令を含むコンパイルドコードオブジェクトを
出力するコンパイラと前記コンパイルドコードオブジェ
クトを解釈実行するインタプリタとを含む言語プロセッ
サを1つのプロセスとして複数実行する情報処理装置に
おいて、プロセス間で共有するコンパイルドコードオブ
ジェクトを前記プロセス間共有空間に割り付け、この割
り付けられた共有コンパイルドコードオブジェクトを解
釈実行するインタプリタは、その共有コンパイルドコー
ドオブジェクト中の前記機械語命令が参照するデータに
相当する自ヒープ領域上のデータのアドレスを、自ヒー
プ領域上に生成したアドレス格納領域に格納し、このア
ドレス格納領域を使用して前記共有コンパイルドコード
オブジェクトの解釈実行を進める。
を達成するために、複数プロセスの並列実行が可能で且
つプロセス間で共有できるプロセス間共有空間を有し、
ソースプログラムを翻訳するごとによりデータを参照す
る機械語命令を含むコンパイルドコードオブジェクトを
出力するコンパイラと前記コンパイルドコードオブジェ
クトを解釈実行するインタプリタとを含む言語プロセッ
サを1つのプロセスとして複数実行する情報処理装置に
おいて、プロセス間で共有するコンパイルドコードオブ
ジェクトを前記プロセス間共有空間に割り付け、この割
り付けられた共有コンパイルドコードオブジェクトを解
釈実行するインタプリタは、その共有コンパイルドコー
ドオブジェクト中の前記機械語命令が参照するデータに
相当する自ヒープ領域上のデータのアドレスを、自ヒー
プ領域上に生成したアドレス格納領域に格納し、このア
ドレス格納領域を使用して前記共有コンパイルドコード
オブジェクトの解釈実行を進める。
本発明のプロセス間共有コード管理方式においては、プ
ロセス間で共有するコンパイルドコードオブジェクトが
プロセス間共有空間に割り付けられることにより、その
共有コンパイルドコードオブジェクトを解釈実行する複
数のインタプリタによるコンパイルドコードオブジェク
ト中の機械語命令等の参照が可能となり、また各インタ
プリタが、その共有コンパイルドコードオブジェクト中
の@成語命令が参照するデータに相当する自ヒープ領域
上のデータのアドレスを、自ヒープ領域上に生成したア
ドレス格納領域に格納することにより、上記参照した共
有コンパイルドコードオブジェクト中の機械語命令によ
る自ヒープ領域上のデータの参照が個別に可能となる。
ロセス間で共有するコンパイルドコードオブジェクトが
プロセス間共有空間に割り付けられることにより、その
共有コンパイルドコードオブジェクトを解釈実行する複
数のインタプリタによるコンパイルドコードオブジェク
ト中の機械語命令等の参照が可能となり、また各インタ
プリタが、その共有コンパイルドコードオブジェクト中
の@成語命令が参照するデータに相当する自ヒープ領域
上のデータのアドレスを、自ヒープ領域上に生成したア
ドレス格納領域に格納することにより、上記参照した共
有コンパイルドコードオブジェクト中の機械語命令によ
る自ヒープ領域上のデータの参照が個別に可能となる。
次に、本発明の実施例について図面を参照して詳細に説
明する。
明する。
第1図は本発明の一実施例の構成図である。同図におい
て、インタプリタ4−1とコンパイラ5−1とは一つの
言語プロセッサを構成し、インタプリタ4−2とコンパ
イラ5−2とは別の一つの言語プロセッサを構成する。
て、インタプリタ4−1とコンパイラ5−1とは一つの
言語プロセッサを構成し、インタプリタ4−2とコンパ
イラ5−2とは別の一つの言語プロセッサを構成する。
インタプリタ4−1を含む言語プロセッサとインタプリ
タ4−2を含む言語プロセッサは、それぞれプロセスl
、プロセス2として、本発明が適用される情報処理装置
で並行して実行される。プロセス1には、インタプリタ
4−1が生成、管理しているヒープ領域9−1があって
、その中にインタプリタ4−1によって生成、管理され
るデータ11−1等が存在する。同様にプロセス2には
、インタプリタ4−2が生成、管理しているヒープ領域
9−2があって、その中にインタプリタ4−2によって
生成、管理されるデータ11−2等が存在する。プロセ
ス間共有空間3は、プロセスlとプロセス2との間で共
有される記憶域空間である。
タ4−2を含む言語プロセッサは、それぞれプロセスl
、プロセス2として、本発明が適用される情報処理装置
で並行して実行される。プロセス1には、インタプリタ
4−1が生成、管理しているヒープ領域9−1があって
、その中にインタプリタ4−1によって生成、管理され
るデータ11−1等が存在する。同様にプロセス2には
、インタプリタ4−2が生成、管理しているヒープ領域
9−2があって、その中にインタプリタ4−2によって
生成、管理されるデータ11−2等が存在する。プロセ
ス間共有空間3は、プロセスlとプロセス2との間で共
有される記憶域空間である。
このような構成において、プロセスlとして動作するイ
ンタプリタ4−1及びプロセス2として動作するインタ
プラク4−2間でコンパイルドコードオブジェクトを共
有する場合、同図に示すように、共有するコンパイルド
コードオブジェクト6がプロセス間共有空間3に割り付
けられると共に、その共有コンパベルドコードオブジェ
クト6中の機械語命令が参照するデータに相当する自己
のデータ(インタプリタ4−1にあってはヒープ領域9
−1上のデータ11−1等、インタプリタ4−2にあっ
てはヒープ領域9−2上のデータ11−2等のデータ)
のアドレスを格納したアドレス格納領域10−1.10
−2を、それぞれのし−プ領域9−1.9−2に生成す
る。即ち、従来コンパイルドコードオブジェクトと一体
化されていたアドレス格納領域を機械語命令列を含むオ
ブジェクト本体から分離し、オブジェクト本体はコンパ
イルドコードオブジェクト6としてプロセス間共有空間
3に割り付け、アドレス格納領域は各インタプリタが生
成、管理するヒープ領域9−1゜9−2上におけるデー
タの存在アドレスに見合った内容にして個別に各ヒープ
領域9−1.9−2に設けるものである。このように、
機械語命令を含む本体をプロセス間共有空間3に割り付
けることにより複数のインタプリタ4−1.4−2から
の参照が可能となり、またアドレス格納領域を個別に設
けることにより、上記の機械語命令が参照するデータを
正しくアクセスすることが可能となり、コンパイルドコ
ードオブジェクトを複数のインタプリタで共有すること
ができる。なお、第1図の破線で示すデータ参照手段8
−1.8−2は、コンパイルドコードオブジェクト6か
ら各プロセス上のインタプリタ4−1.4−2が生成、
管理しているヒープ領域9−1.9−2上のデータ11
−1.11−2等を参照する手段を構成している。
ンタプリタ4−1及びプロセス2として動作するインタ
プラク4−2間でコンパイルドコードオブジェクトを共
有する場合、同図に示すように、共有するコンパイルド
コードオブジェクト6がプロセス間共有空間3に割り付
けられると共に、その共有コンパベルドコードオブジェ
クト6中の機械語命令が参照するデータに相当する自己
のデータ(インタプリタ4−1にあってはヒープ領域9
−1上のデータ11−1等、インタプリタ4−2にあっ
てはヒープ領域9−2上のデータ11−2等のデータ)
のアドレスを格納したアドレス格納領域10−1.10
−2を、それぞれのし−プ領域9−1.9−2に生成す
る。即ち、従来コンパイルドコードオブジェクトと一体
化されていたアドレス格納領域を機械語命令列を含むオ
ブジェクト本体から分離し、オブジェクト本体はコンパ
イルドコードオブジェクト6としてプロセス間共有空間
3に割り付け、アドレス格納領域は各インタプリタが生
成、管理するヒープ領域9−1゜9−2上におけるデー
タの存在アドレスに見合った内容にして個別に各ヒープ
領域9−1.9−2に設けるものである。このように、
機械語命令を含む本体をプロセス間共有空間3に割り付
けることにより複数のインタプリタ4−1.4−2から
の参照が可能となり、またアドレス格納領域を個別に設
けることにより、上記の機械語命令が参照するデータを
正しくアクセスすることが可能となり、コンパイルドコ
ードオブジェクトを複数のインタプリタで共有すること
ができる。なお、第1図の破線で示すデータ参照手段8
−1.8−2は、コンパイルドコードオブジェクト6か
ら各プロセス上のインタプリタ4−1.4−2が生成、
管理しているヒープ領域9−1.9−2上のデータ11
−1.11−2等を参照する手段を構成している。
以下、本実施例の構成および動作をより詳細に説明する
。
。
第2図はコンパイラ5−1.コンパイラ5−2が出力す
る共有コンパイルドコードオブジェクトの論理的な構成
例を示す、同図に示すようにコンパイルドコードオブジ
ェクトは、そのコンパイルドコードオブジェクトを識別
するための名前やサイズ等を含むヘッダ情報を格納する
ヘッダ領域21と、機械語命令24で例示する如くし−
プ領域上のデータを参照する機械語命令の並びを格納す
る機械語命令列領域22と、この機械語命令列領域22
中の機械語命令によって参照しているヒープ領域上のデ
ータを識別することができるデータ、例えばソースプロ
グラム上の形式と同じ外部形式のデータを所定の順序で
格納するアドレス生成用データ領域23とで構成される
。なお、上記機械語命令24は、文字列“abc”の先
頭アドレスをレジスタRxへ移送することを示す例えば
m。
る共有コンパイルドコードオブジェクトの論理的な構成
例を示す、同図に示すようにコンパイルドコードオブジ
ェクトは、そのコンパイルドコードオブジェクトを識別
するための名前やサイズ等を含むヘッダ情報を格納する
ヘッダ領域21と、機械語命令24で例示する如くし−
プ領域上のデータを参照する機械語命令の並びを格納す
る機械語命令列領域22と、この機械語命令列領域22
中の機械語命令によって参照しているヒープ領域上のデ
ータを識別することができるデータ、例えばソースプロ
グラム上の形式と同じ外部形式のデータを所定の順序で
格納するアドレス生成用データ領域23とで構成される
。なお、上記機械語命令24は、文字列“abc”の先
頭アドレスをレジスタRxへ移送することを示す例えば
m。
vc abc、Rxなるソース形式をコンパイルし
たものであり、 abc”のアドレスは後述するアド
レス格納領域の先頭の要素に格納するものと決めている
為、O(R)となっており、且つ、 abc”がアド
レス生成用データ領域23の先頭に格納されているもの
である。上記のアドレス生成用データ領域23は、当該
コンパイルドコードオブジェクトを解釈実行するインタ
プリタが後述するアドレス格納領域生成処理を行う際に
利用されるものである。
たものであり、 abc”のアドレスは後述するアド
レス格納領域の先頭の要素に格納するものと決めている
為、O(R)となっており、且つ、 abc”がアド
レス生成用データ領域23の先頭に格納されているもの
である。上記のアドレス生成用データ領域23は、当該
コンパイルドコードオブジェクトを解釈実行するインタ
プリタが後述するアドレス格納領域生成処理を行う際に
利用されるものである。
第3図は第1図のインタプリタ、ll−1,4−2が有
するコンパイルドコードオブジェクト割り付は手段7〜
1.7−2の処理の一例を示し、第4図は第1図のプロ
セス間共有空間3.プロセス1のヒープ領域9−1およ
びプロセス2のヒープ領域9−2を抜き出してより詳細
に図示したものである0次に、第3図および第4図を参
照して、各インタプリタ4−1.4−2が有するコンパ
イルドコードオブジェクト割り付は手段7−1.72の
動作を説明する。
するコンパイルドコードオブジェクト割り付は手段7〜
1.7−2の処理の一例を示し、第4図は第1図のプロ
セス間共有空間3.プロセス1のヒープ領域9−1およ
びプロセス2のヒープ領域9−2を抜き出してより詳細
に図示したものである0次に、第3図および第4図を参
照して、各インタプリタ4−1.4−2が有するコンパ
イルドコードオブジェクト割り付は手段7−1.72の
動作を説明する。
コンパイルドコードオブジェクト割り付は手段7−1.
7−2は、コンパイルドコードオブジェクトのロード要
求が発生すると、ロードしたいコンパイルドコードオブ
ジェクト(これはコンパイラ5−1あるいは5−2が出
力したもので、図示しないファイル等に格納されている
)がプロセス間で共存するコンパイルドコードオブジェ
クトか否かをチエツクする(S 1 ) 、もしプロセ
ス間で共有しないコンパイルドコードオブジェクトであ
れば、自分自身のプロセス空間へ割り付ける(S2)、
プロセス間で共有するコンパイルドコードオブジェクト
の場合は、そのコンパイルドコードオブジェクトが既に
プロセス間共有空間3に割り付けられているか否かをチ
エツクする(S3)。
7−2は、コンパイルドコードオブジェクトのロード要
求が発生すると、ロードしたいコンパイルドコードオブ
ジェクト(これはコンパイラ5−1あるいは5−2が出
力したもので、図示しないファイル等に格納されている
)がプロセス間で共存するコンパイルドコードオブジェ
クトか否かをチエツクする(S 1 ) 、もしプロセ
ス間で共有しないコンパイルドコードオブジェクトであ
れば、自分自身のプロセス空間へ割り付ける(S2)、
プロセス間で共有するコンパイルドコードオブジェクト
の場合は、そのコンパイルドコードオブジェクトが既に
プロセス間共有空間3に割り付けられているか否かをチ
エツクする(S3)。
まだプロセス間共有空間3に割り付けられていなければ
、その共有コンパイルドコードオブジェクトをプロセス
間共有空間3に割り付け(S4)、そのコンパイルドコ
ードオブジェクト中の機械語命令列から自ヒープ領域9
−1.9−2上のデータの参照を解決するためアドレス
格納領域生成処理を行う(S5)、このアドレス格納領
域生成処理については後に詳述する。また、共有コンパ
イルドコードオブジェクトが既にプロセス間共有空間3
に割り付けられているときは、アドレス格納領域生成処
理だけを行う(S6)、従って、例えば成る共有コンパ
イルドコードオブジェクトのロード要求がインタプリタ
4−1で先に発生した場合、インタプリタ4−1はその
共有コンパイルドコードオブジェクトをプロセス間共有
空間3に割り付けると共に、自ヒープ領域9−1にアド
レス格納領域10−1を生成することになり、その後に
インタプリタ4−2でその共有コンパイルドコードオブ
ジェクトのロード要求が発生した場合には、既にプロセ
ス間共有空間3に割り付けられているので、インタプリ
タ4−2は自ヒープ領域10−2にアドレス格納領域1
0−2を生成するだけで良いことになる。これが、既に
プロセス間共有空間3に割り付けられている共有コンパ
イルドコードオブジェクトに対するロード処理となる。
、その共有コンパイルドコードオブジェクトをプロセス
間共有空間3に割り付け(S4)、そのコンパイルドコ
ードオブジェクト中の機械語命令列から自ヒープ領域9
−1.9−2上のデータの参照を解決するためアドレス
格納領域生成処理を行う(S5)、このアドレス格納領
域生成処理については後に詳述する。また、共有コンパ
イルドコードオブジェクトが既にプロセス間共有空間3
に割り付けられているときは、アドレス格納領域生成処
理だけを行う(S6)、従って、例えば成る共有コンパ
イルドコードオブジェクトのロード要求がインタプリタ
4−1で先に発生した場合、インタプリタ4−1はその
共有コンパイルドコードオブジェクトをプロセス間共有
空間3に割り付けると共に、自ヒープ領域9−1にアド
レス格納領域10−1を生成することになり、その後に
インタプリタ4−2でその共有コンパイルドコードオブ
ジェクトのロード要求が発生した場合には、既にプロセ
ス間共有空間3に割り付けられているので、インタプリ
タ4−2は自ヒープ領域10−2にアドレス格納領域1
0−2を生成するだけで良いことになる。これが、既に
プロセス間共有空間3に割り付けられている共有コンパ
イルドコードオブジェクトに対するロード処理となる。
次に、アドレス格納領域生成処理S5.S6について説
明する。このアドレス格納領域生成処理は、第4図に図
示した共有コンパビルドコードオブジェクト6中のアド
レス生成用データ領域63上に格納されているデータを
使用して行う、先ず、アドレス格納領域生成処理では、
プロセス間共有空間3に割り付けられたコンパベルドコ
ードオブジェクト6中のアドレス生成用データ領域63
に格納されているデータの個数に見合ったサイズのアド
レス格納領域10−1.10−2を自ヒープ領域9−1
.9−2に生成する0次に、アドレス生成用データ領域
63に格納されているデータをその先頭から順次に評価
し、そのデータに相当する自ヒープ領域9−1.9−2
上のデータのアドレスを求め、そのアドレスを上記生成
したアドレス格納領域10−1.10−2へその先頭の
要素から順番に書き込んでいく0例えば、第4図に示す
ように、アドレス生成用データ領域63の先頭に機械語
命令64が参照する文字列“abc”にかかるデータが
あって、プロセスlのヒープ領域9−1上ではそのデー
タ11−1がアドレスαに存在していたとすると、イン
タプリタ4−1によるアドレス格納領域生成処理では、
そのアドレスαをアドレス格納領域10−1の先頭の要
素(1バイト目)100−1に書き込むものである。ま
た、プロセス2のヒープ領域9−2では同じデータ11
−2がアドレスβに存在していたとすると、インタプリ
タ4−2のアドレス格納領域生成処理では、そのアドレ
スβをアドレス格納領域1〇−2の最初の要素(1バイ
ト目)too−2に格納するものである。このようにし
て、自ヒープ領域上のデータの存在するアドレスに見合
ったアドレス群を格納するアドレス格納領域を独自に生
成するものである。
明する。このアドレス格納領域生成処理は、第4図に図
示した共有コンパビルドコードオブジェクト6中のアド
レス生成用データ領域63上に格納されているデータを
使用して行う、先ず、アドレス格納領域生成処理では、
プロセス間共有空間3に割り付けられたコンパベルドコ
ードオブジェクト6中のアドレス生成用データ領域63
に格納されているデータの個数に見合ったサイズのアド
レス格納領域10−1.10−2を自ヒープ領域9−1
.9−2に生成する0次に、アドレス生成用データ領域
63に格納されているデータをその先頭から順次に評価
し、そのデータに相当する自ヒープ領域9−1.9−2
上のデータのアドレスを求め、そのアドレスを上記生成
したアドレス格納領域10−1.10−2へその先頭の
要素から順番に書き込んでいく0例えば、第4図に示す
ように、アドレス生成用データ領域63の先頭に機械語
命令64が参照する文字列“abc”にかかるデータが
あって、プロセスlのヒープ領域9−1上ではそのデー
タ11−1がアドレスαに存在していたとすると、イン
タプリタ4−1によるアドレス格納領域生成処理では、
そのアドレスαをアドレス格納領域10−1の先頭の要
素(1バイト目)100−1に書き込むものである。ま
た、プロセス2のヒープ領域9−2では同じデータ11
−2がアドレスβに存在していたとすると、インタプリ
タ4−2のアドレス格納領域生成処理では、そのアドレ
スβをアドレス格納領域1〇−2の最初の要素(1バイ
ト目)too−2に格納するものである。このようにし
て、自ヒープ領域上のデータの存在するアドレスに見合
ったアドレス群を格納するアドレス格納領域を独自に生
成するものである。
さて、以上のようにして各ヒープ領域9−1゜9−2に
自プロセス専用のアドレス格納領域10−1.10−2
が出来上がると、各インタプリタ4−1.4−2はそれ
を使用して共有コンパイルドコードオブジェクト6の解
釈実行を進めることが可能となる0例えば第4図に示す
ようにコンパイルドコードオブジェクト6の機械語命令
列領域62における機械語命令rmove O(R)
RXJ (これは第2回で説明したように、文字列a
b c ” 領域の先頭アドレスをレジスタRxへ移
送することを示すmove abc、Rxのソース
形式をコンパイルした機械語命令である)のように、
abc”を参照している場合、どのプロセス上でもレジ
スタRが自分自身のアドレス格納領域10−1.10−
2の先頭を指すようにすれば、 abc”を指すアド
レスは各アドレス格納領域10−1.10−2の最初の
要素100−1,100−2に格納されることになって
いるので、レジスタRの指す場所から相対位置O番目の
領域すなわち要素100〜1,100−2からabc”
を指すアドレスを得ることができる。
自プロセス専用のアドレス格納領域10−1.10−2
が出来上がると、各インタプリタ4−1.4−2はそれ
を使用して共有コンパイルドコードオブジェクト6の解
釈実行を進めることが可能となる0例えば第4図に示す
ようにコンパイルドコードオブジェクト6の機械語命令
列領域62における機械語命令rmove O(R)
RXJ (これは第2回で説明したように、文字列a
b c ” 領域の先頭アドレスをレジスタRxへ移
送することを示すmove abc、Rxのソース
形式をコンパイルした機械語命令である)のように、
abc”を参照している場合、どのプロセス上でもレジ
スタRが自分自身のアドレス格納領域10−1.10−
2の先頭を指すようにすれば、 abc”を指すアド
レスは各アドレス格納領域10−1.10−2の最初の
要素100−1,100−2に格納されることになって
いるので、レジスタRの指す場所から相対位置O番目の
領域すなわち要素100〜1,100−2からabc”
を指すアドレスを得ることができる。
これはプロセス1でもプロセス2でも共通であるため、
move O(R)、Rxとすることにより、プロセ
ス間共通とすることができる。
move O(R)、Rxとすることにより、プロセ
ス間共通とすることができる。
以上説明したように、本発明のプロセス間共存コード管
理方式においては、各プロセスで共有するコンパイルド
コードオブジェクトをプロセス間共有空間に割り付け、
その共有コンパイルドコードオブジェクト中の機械語命
令で参照しているデータに相当する自ヒープ領域上のデ
ータのアドレスを、自ヒープ領域に独自に設けたアドレ
ス格納領域に格納したことにより、コンパイルドコード
オブジェクトを各プロセス上で動作するインタプリタで
共有することができる効果がある。これにより、インタ
プリタとコンパイラとから構成される言語プロセッサを
複数同時並行して実行させた’Jd合に、各言語プロセ
ッサ間でコンパイルドコードオブジェクトの共有が可能
となり、記憶域空間の効率的な使用、記憶域空間の消費
量の削減が可能となる。
理方式においては、各プロセスで共有するコンパイルド
コードオブジェクトをプロセス間共有空間に割り付け、
その共有コンパイルドコードオブジェクト中の機械語命
令で参照しているデータに相当する自ヒープ領域上のデ
ータのアドレスを、自ヒープ領域に独自に設けたアドレ
ス格納領域に格納したことにより、コンパイルドコード
オブジェクトを各プロセス上で動作するインタプリタで
共有することができる効果がある。これにより、インタ
プリタとコンパイラとから構成される言語プロセッサを
複数同時並行して実行させた’Jd合に、各言語プロセ
ッサ間でコンパイルドコードオブジェクトの共有が可能
となり、記憶域空間の効率的な使用、記憶域空間の消費
量の削減が可能となる。
第1図は本発明の一実施例の構成図、
第2図はコンパイラ5−1.5−2が出力する共有コン
パイルドコードオブジェクトの論理的な構成を示す図、 第3図はコンパイルドコードオブジェクト割り付は手段
7−’1.7−2の処理例の流れ図、第4図はプロセス
間共有空間6.各プロセスのヒープ領域をより詳細に示
す図および、第5図は従来方式の構成図である。 図において、 1.2・・・プロセス 3・・・プロセス間共有空間 4−1.4−2・・・インタプリタ 5−1 5−2・・・コンパイラ 6・・・コンパイルドコードオブジェクト7−1.7−
2・・・コンパイルドコードオブジェクト割り付は手段 8−1.8−2・・・データ参照手段 9−1.9−2・・・ヒープ領域 1(1−1,10−2・・・アドレス格納領域11−1
.11−2・・・データ
パイルドコードオブジェクトの論理的な構成を示す図、 第3図はコンパイルドコードオブジェクト割り付は手段
7−’1.7−2の処理例の流れ図、第4図はプロセス
間共有空間6.各プロセスのヒープ領域をより詳細に示
す図および、第5図は従来方式の構成図である。 図において、 1.2・・・プロセス 3・・・プロセス間共有空間 4−1.4−2・・・インタプリタ 5−1 5−2・・・コンパイラ 6・・・コンパイルドコードオブジェクト7−1.7−
2・・・コンパイルドコードオブジェクト割り付は手段 8−1.8−2・・・データ参照手段 9−1.9−2・・・ヒープ領域 1(1−1,10−2・・・アドレス格納領域11−1
.11−2・・・データ
Claims (1)
- 【特許請求の範囲】 複数プロセスの並列実行が可能で且つプロセス間で共有
できるプロセス間共有空間を有し、ソースプログラムを
翻訳することによりデータを参照する機械語命令を含む
コンパイルドコードオブジェクトを出力するコンパイラ
と前記コンパイルドコードオブジェクトを解釈実行する
インタプリタとを含む言語プロセッサを1つのプロセス
として複数実行する情報処理装置において、 プロセス間で共有するコンパイルドコードオブジェクト
を前記プロセス間共有空間に割り付け、該割り付けられ
た共有コンパイルドコードオブジェクトを解釈実行する
インタプリタは、その共有コンパイルドコードオブジェ
クト中の前記機械語命令が参照するデータに相当する自
ヒープ領域上のデータのアドレスを、自ヒープ領域上に
生成したアドレス格納領域に格納し、該アドレス格納領
域を使用して前記共有コンパイルドコードオブジェクト
の解釈実行を進めることを特徴とするプロセス間共有コ
ード管理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63310827A JPH02156332A (ja) | 1988-12-08 | 1988-12-08 | プロセス間共有コード管理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63310827A JPH02156332A (ja) | 1988-12-08 | 1988-12-08 | プロセス間共有コード管理方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02156332A true JPH02156332A (ja) | 1990-06-15 |
Family
ID=18009885
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63310827A Pending JPH02156332A (ja) | 1988-12-08 | 1988-12-08 | プロセス間共有コード管理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH02156332A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0744372A (ja) * | 1993-07-30 | 1995-02-14 | Nec Corp | コンパイルドコードオブジェクトのパッチ処理方式 |
-
1988
- 1988-12-08 JP JP63310827A patent/JPH02156332A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0744372A (ja) * | 1993-07-30 | 1995-02-14 | Nec Corp | コンパイルドコードオブジェクトのパッチ処理方式 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11175896B2 (en) | Handling value types | |
| US6029207A (en) | Apparatus and method for dynamic linking of computer software components | |
| KR100518584B1 (ko) | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 | |
| EP1955153B1 (en) | Method and apparatus for converting program code with access coordination for a shared resource | |
| US5812852A (en) | Software implemented method for thread-privatizing user-specified global storage objects in parallel computer programs via program transformation | |
| EP0620522A2 (en) | High performance dynamic linking through caching | |
| US20060095483A1 (en) | Modified computer architecture with finalization of objects | |
| JPH0256640A (ja) | 共通ブロックへのアクセス競合軽減方法 | |
| US10635472B2 (en) | Import mechanism for hardware intrinsics | |
| US6260191B1 (en) | User controlled relaxation of optimization constraints related to volatile memory references | |
| JP2000347876A (ja) | スタック・スロット割当て方法および装置 | |
| Theobald et al. | Overview of the Threaded-C language | |
| US5062039A (en) | Sharing of workspaces in interactive processing using workspace name tables for linking of workspaces | |
| US6959430B2 (en) | Specialized heaps for creation of objects in object-oriented environments | |
| JPH02156332A (ja) | プロセス間共有コード管理方式 | |
| US6789253B1 (en) | Method, system, and apparatus to improve performance of multi-threaded computer programs | |
| Namashivayam et al. | OpenSHMEM as a portable communication layer for PGAS models: a case study with coarray fortran | |
| JPH0660047A (ja) | マルチプロセッサ処理装置 | |
| JPH02156333A (ja) | プロセス間共有コード管理方式 | |
| JPH064498A (ja) | マルチプロセッサ処理装置 | |
| JPS6234240A (ja) | デ−タ割付け方式 | |
| JP3239963B2 (ja) | マルチ・プロセッサ計算機システム | |
| JPH0535496A (ja) | プロセス間共有データ参照方式 | |
| Arvind et al. | A multithreaded substrate and compilation model for the implicitly parallel language pH | |
| Kaemmer et al. | Split objects for multiconsistent shared memory |