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
Application number
JP20851691A
Other languages
English (en)
Inventor
Yukiko Hashimoto
ユキ子 橋本
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 JP20851691A priority Critical patent/JPH0535496A/ja
Publication of JPH0535496A publication Critical patent/JPH0535496A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; 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だけを
行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンパイラが出力する
コンパイルドコードオブジェクトをインタプリタが実
行,管理するような言語プロセッサを1つのプロセスと
して複数実行する情報処理装置において、コンパイルド
コードオブジェクトから参照するデータを複数のプロセ
スで共有することができるプロセス間共有データ参照方
式に関する。
【0002】
【従来の技術】言語プロセッサの一方式として、例えば
図4に示すように、実行効率を向上させるためにソース
プログラムを翻訳してコンパイルドコードオブジェクト
44を生成するコンパイラ42と、ソースプログラム以
外に上記のコンパイルドコードオブジェクト44の記憶
域管理,実行管理を行うインタプリタ41とを備えた言
語プロセッサがある。
【0003】このような言語プロセッサにおけるコンパ
イルドコードオブジェクト44は、或る種のヘッダ情報
(そのコンパイルドコードオブジェクトを識別するため
の名前例えば関数名,サイズ等を含む)を格納するヘッ
ダ領域45と、機械語命令列の並びを格納する機械語命
令列領域46と、インタプリタ41が生成管理している
ヒープ領域43に格納されているデータを機械語命令列
領域46中の機械語命令から参照するために使用するア
ドレスを格納するアドレス格納領域47とを含む形式を
有している。
【0004】ここで、コンパイルドコードオブジェクト
44内からヒープ領域43上のデータを参照する場合、
ソースプログラムのコンパイル時にはヒープ領域43上
のデータのアドレスを決定することができないので、イ
ンタプリタ41は、コンパイルドコードオブジェクト4
4を記憶域空間40にロードする際にヒープ領域43上
のデータのアドレスを確定し、その確定したアドレスを
アドレス格納領域47の予め定められた場所に格納する
ようにしている。
【0005】従って、コンパイラ42は、コンパイル時
点ではコンパイルドコードオブジェクト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を指すポインタデータとなる。
【0007】
【発明が解決しようとする課題】ところで、この種の言
語プロセッサは1つのプロセスとして他のプロセスと並
行して情報処理装置で実行されるものであり、情報処理
装置によっては、そのような言語プロセッサを複数個並
行して実行するものがある。
【0008】このような情報処理装置においては、コン
パイルドコードオブジェクトから参照する全てのデータ
をインタプリタが生成,管理しているヒープ領域に割り
付ける従来のデータ参照方式では、インタプリタが個々
のプロセスとして各々存在するためにヒープ領域も各プ
ロセス上にとられることになるので、コンパイルドコー
ドオブジェクトから参照するデータを各プロセス上の言
語処理プロセッサで共有することができないという欠点
がある。
【0009】本発明はこのような事情に鑑みて為された
ものであり、その目的は、コンパイルドコードオブジェ
クトから参照するデータを複数のプロセスで共有するこ
とができるようにすることにある。
【0010】
【課題を解決するための手段】本発明のプロセス間共有
データ参照方式は、上記の目的を達成するために、複数
プロセスの並列実行が可能で且つプロセス間で共有でき
るプロセス間共有空間を有し、ソースプログラムを翻訳
することによりデータを参照する機械語命令を含むコン
パイルドコードオブジェクトを出力するコンパイラと前
記コンパイルドコードオブジェクトを解釈実行するイン
タプリタとを含む言語プロセッサを1つのプロセスとし
て複数実行する情報処理装置において、プロセス間で共
有するデータを前記プロセス間共有空間に割り付け、そ
の割り付けたアドレスを前記プロセス間共有空間に設け
たアドレス格納領域に設定し、この設定されたアドレス
に基づいてアドレス格納領域内オフセット解決処理を行
った前記コンパイルドコードオブジェクト中の機械語命
令によって前記プロセス間共有データの参照を行うよう
にしている。
【0011】
【作用】本発明のプロセス間共有データ参照方式におい
ては、プロセス間で共有されるデータがプロセス間共有
空間に割り付けられ、その割り付けたアドレスが同空間
に設けられたアドレス格納領域に設定され、この設定さ
れたアドレスに基づいてアドレス格納領域内オフセット
解決処理を行ったコンパイルドコードオブジェクト中の
機械語命令によって前記プロセス間共有空間上のデータ
の参照が行われる。
【0012】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0013】図1は本発明の一実施例の構成図である。
同図において、インタプリタ7−1とコンパイラ12−
1とは1つの言語プロセッサを構成し、インタプリタ7
−2とコンパイラ12−2とは別の1つの言語プロセッ
サを構成する。
【0014】インタプリタ7−1を含む言語プロセッサ
とインタプリタ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を有している。
【0016】同様にプロセス2−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とが格納さ
れる。
【0018】なお、或るコンパイルドコードオブジェク
トを各プロセス2−1,2−2で共有する場合、そのコ
ンパイルドコードオブジェクトは符号13−1で示され
るように、プロセス間共有空間1に割り付けられる。こ
のようなコンパイルドコードオブジェクトの共有に関す
る技術を記載した文献としては、例えば特願昭63−3
10827号添付明細書および図面がある。
【0019】次に、上述のように構成された本実施例の
動作を説明する。
【0020】今、プロセス2−1のコンパイラ12−1
にコンパイルさせるソースプログラム3中に、プロセス
間共有データとしたいデータ「abc」が存在する場
合、その旨をコンパイル指示子 'commonを含むコ
ンパイラ指示手段14でソースプログラム3において指
定しておく。
【0021】コンパイラ12−1は、ソースプログラム
3をコンパイルしてコンパイルドコードオブジェクトを
生成するが、その際、コンパイルドコードオブジェクト
から参照しているデータがプログラム間共有データか否
かを前記コンパイラ指示手段14によって識別し、識別
結果をコンパイル結果に含めておく。
【0022】コンパイラ12−1によって生成されたコ
ンパイルドコードオブジェクトはインタプリタ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)。
【0025】プロセス間共有データの場合は、プロセス
間共有空間1のデータ領域4に既にそのデータが生成さ
れているか否かをチェックする(A−3)。
【0026】そのようなデータが生成されていない場
合、そのプロセス間共有データをプロセス間共有空間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バイト目)に格納している。
【0028】また、ステップA−5でアドレス格納領域
登録処理10−1を行った後、或いはステップA−3で
当該プロセス間共有データがプロセス間共有空間1に既
に割り付けられていると判断された場合には、ステップ
A−6において共有データ生成手段9−1によるアドレ
ス格納領域内オフセット解決処理11−1を行う。
【0029】このアドレス格納領域内オフセット解決処
理11−1では、以下のような処理を行う。
【0030】例えば、コンパイルドコードオブジェクト
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」を参照することが可能になる。
【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に示すように修正される。
【0033】また、コンパイルドコードオブジェクトを
プロセス間で共有するために、図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…ヒープ領域

Claims (1)

  1. 【特許請求の範囲】 【請求項1】 複数プロセスの並列実行が可能で且つプ
    ロセス間で共有できるプロセス間共有空間を有し、ソー
    スプログラムを翻訳することによりデータを参照する機
    械語命令を含むコンパイルドコードオブジェクトを出力
    するコンパイラと前記コンパイルドコードオブジェクト
    を解釈実行するインタプリタとを含む言語プロセッサを
    1つのプロセスとして複数実行する情報処理装置におい
    て、 プロセス間で共有するデータを前記プロセス間共有空間
    に割り付け、その割り付けたアドレスを前記プロセス間
    共有空間に設けたアドレス格納領域に設定し、該設定さ
    れたアドレスに基づいてアドレス格納領域内オフセット
    解決処理を行った前記コンパイルドコードオブジェクト
    中の機械語命令によって前記プロセス間共有データの参
    照を行うことを特徴とするプロセス間共有データ参照方
    式。
JP20851691A 1991-07-25 1991-07-25 プロセス間共有データ参照方式 Pending JPH0535496A (ja)

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)

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) 並列計算機及びその制御方法