JPH0981383A - オブジェクト指向計算機システム及びオブジェクト指向プログラムのコンパイラ - Google Patents

オブジェクト指向計算機システム及びオブジェクト指向プログラムのコンパイラ

Info

Publication number
JPH0981383A
JPH0981383A JP23516295A JP23516295A JPH0981383A JP H0981383 A JPH0981383 A JP H0981383A JP 23516295 A JP23516295 A JP 23516295A JP 23516295 A JP23516295 A JP 23516295A JP H0981383 A JPH0981383 A JP H0981383A
Authority
JP
Japan
Prior art keywords
shared
data
procedure
storage area
class
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
JP23516295A
Other languages
English (en)
Inventor
Takanori Yokoyama
孝典 横山
Eiko Naya
英光 納谷
Atsuhiko Hirota
敦彦 廣田
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP23516295A priority Critical patent/JPH0981383A/ja
Publication of JPH0981383A publication Critical patent/JPH0981383A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】プロセス間でオブジェクトを効率よく共有でき
る、オブジェクト指向計算機システムおよび開発ツール
を提供する。 【構成】共有オブジェクトのデータを記憶する共有デー
タ記憶手段10od1等と、共有オブジェクトの手続き
を記憶する共有手続き記憶手段10cp1等と、共有オ
ブジェクトのデータと共有オブジェクトの手続きとを管
理するための情報を記憶する共有オブジェクト管理デー
タ記憶手段10sd、10cd1等と、共有オブジェク
ト管理データ記憶手段に記憶された情報を用いて前記共
有オブジェクトの管理を行う共有オブジェクト管理手段
10spを設ける。これにより、共有オブジェクトの処
理要求を遠隔手続き呼び出しやプロセス間通信を用いる
ことなく、直接オブジェクトの手続きを呼び出すことに
より実行できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、オブジェクト指向に基
づく計算機システムに係り、特に、複数のプロセス上の
オブジェクトが、他の同一のオブジェクトを共有し、並
行に動作することが可能なオブジェクト指向計算機シス
テムに関する。
【0002】また、上記のオブジェクト指向計算機シス
テムを対象として、オブジェクトのソースプログラムを
入力し、複数のプロセス上のオブジェクトが他の同一の
オブジェクトを共有し、並行に動作することが可能な実
行可能プログラムを生成するコンパイラに関する。
【0003】
【従来の技術】最近、データとそれに関する手続きをま
とめたオブジェクトの集合によりプログラムを記述す
る、いわゆるオブジェクト指向に基づく計算機システム
が増えてきた。オブジェクト指向システムでは、複数の
オブジェクトが、互いに手続きを呼び出し合って、全体
として処理を実行する。
【0004】一方、ひとつの計算機上で複数のプロセス
を並行に実行できる、いわゆるマルチプロセスによる処
理が可能な計算機システムが広く使用されている。プロ
セスは一連の処理の流れであり、タスクとも呼ばれる。
一般にマルチプロセスが可能な計算機システムでは、各
プロセスは固有の記憶領域、すなわちアドレス空間を有
し、並行にプロセスを実行することができる。
【0005】マルチプロセスが可能な計算機システム上
でオブジェクト指向プログラムを処理する方式として、
各プロセス上にそれぞれ複数のオブジェクトを設け、そ
れらのオブジェクトが互いに処理を呼び出して実行する
方法がある。この方式で、複数のプロセス間で同一のオ
ブジェクトを共有し、該共有したオブジェクトの処理を
実行したいことがある。ここで、複数のプロセスが実行
する同一のオブジェクトを共有オブジェクトと呼ぶこと
にする。ところが、一般に各プロセスはアドレス空間が
異なるため、単純に共有オブジェクトを設けることはで
きない。
【0006】そこで、例えば、プレンティス・ホール社
(Prentice Hall)刊、ネットワーク・コンピューティ
ング・システム・リファレンス・マニュアル(1990
年)(Network Computing System Reference Manual (1
990))に記載されている、遠隔手続き呼び出し(Remote
Procedure Call;RPC)を用いて、複数のプロセス
が同一のオブジェクトを実行する方法がある。遠隔手続
き呼び出しは、異なるプロセス間で手続き呼び出しを実
現する方法である。遠隔手続き呼び出しでは、手続きを
呼び出す側のプロセスをクライアント・プロセス、呼び
出される手続きが存在するプロセスをサーバ・プロセス
と呼ぶ。
【0007】遠隔手続きを用いて共有オブジェクトを実
現するには、共有オブジェクトを利用する複数のプロセ
スとは別に、新たなプロセスを用意し、このプロセス上
に共有オブジェクトを設ける。共有オブジェクトを利用
するプロセスは、遠隔手続きにより共有オブジェクトが
存在するプロセス上の手続きを呼び出す。呼び出された
手続きが共有オブジェクトの手続きを呼び出す。すなわ
ち、共有オブジェクトを利用するプロセスをクライアン
ト・プロセスとし、共有オブジェクトが存在するプロセ
スをサーバプロセスとし、複数のクライアントプロセス
がサーバプロセス上の共有オブジェクトの手続きを、遠
隔手続き呼び出しを介して呼び出す。
【0008】また、特開平5−12025に記載されて
いるように、他のプロセスに存在するサーバオブジェク
トに対応する仮想的なオブジェクトを、クライアントプ
ロセス内に設け、処理要求元オブジェクトが、同一プロ
セス内の仮想的な処理要求先オブジェクトに処理を要求
すると、該仮想的な処理要求先オブジェクトが、サーバ
プロセスに存在する処理要求先オブジェクトに対してプ
ロセス間通信を行い、該処理要求先オブジェクトが処理
を実行することもできる。
【0009】
【発明が解決しようとする課題】上記した従来技術で
は、オブジェクト指向プログラムをマルチプロセスが可
能な計算機システム上で処理する場合に、共有オブジェ
クトへの処理要求を遠隔手続き呼び出しや、プロセス間
通信を行う必要があるため、実行効率がよくないという
問題があった。また、共有オブジェクトへの処理要求を
行うプロセスにおいて、該プロセス内のオブジェクトと
共有オブジェクトでは、オブジェクトの生成、消去、処
理要求方法等が異なるため、両者を区別したプログラミ
ングをする必要があった。このため、プログラマの負担
が大きくなり、オブジェクトのプログラムの再利用性も
よくないという問題があった。
【0010】第一の本発明は、遠隔手続きやプロセス間
通信を用いることなく、プロセス間共有オブジェクトを
実現する構成が簡単で、実行効率に優れたオブジェクト
指向計算機システムを提供することを目的としている。
【0011】第二の本発明は、第一の本発明によるオブ
ジェクト指向計算機システムを対象として、プログラマ
の負担が少なく、プログラムの再利用性に優れた、オブ
ジェクト指向プログラムのコンパイラを提供することを
目的としている。
【0012】
【課題を解決するための手段】第一の本発明の目的は、
プロセス毎にオブジェクトの手続きとデータを記憶し、
前記オブジェクトのデータを指定して処理を要求をした
とき、前記オブジェクトの手続きが前記データに対して
処理を進めるオブジェクト指向計算機システムにおい
て、複数のプロセス上のオブジェクトからの処理要求を
受け付ける共有オブジェクトの共有データを記憶する共
有データ記憶手段と、前記共有オブジェクトの共有手続
きを記憶する共有手続き記憶手段と、前記共有オブジェ
クトの生成、消去および/または参照を管理する共有オ
ブジェクト管理手段を設け、プロセス上のオブジェクト
が前記共有データ記憶手段に記憶されたデータを指定し
て前記共有オブジェクトに処理を要求したとき、前記共
有手続き記憶手段に記憶された前記共有オブジェクトの
共有手続きが前記共有データ記憶手段に記憶された共有
データに関する処理を実行することにより達成される。
【0013】第一の本発明の目的は、上記の構成による
オブジェクト指向計算機システムを対象として、オブジ
ェクトのソースプログラムの字句解析処理手段、構文解
析処理手段及び実行可能プログラム生成処理手段を備え
て、実行可能プログラムを生成するオブジェクト指向プ
ログラムのコンパイラにおいて、前記実行可能プログラ
ム生成処理手段は、前記共有オブジェクトのソースプロ
グラムから、前記共有手続き記憶手段に記憶する前記共
有オブジェクトの手続きの実行可能プログラムと、前記
共有データ記憶手段に記憶する前記共有オブジェクトの
共有データと、さらには、前記共有オブジェクト管理手
段に使用される管理情報を出力する機能を有しているこ
とにより達成される。
【0014】
【作用】本発明のオブジェクト指向計算機システムにお
いては、複数のプロセス間で共有のオブジェクトを実現
するために、図1に示すように、共有オブジェクト記憶
領域10を設け、手続き100p1とデータ11od1
を有する共有オブジェクト1001を記憶し、共有オブ
ジェクト記憶領域10を、プロセス11のアドレス空間
とプロセス12のアドレス空間にマッピングする。これ
により、共有オブジェクト記憶領域10をプロセス1
1、12の両方から参照し、その手続きを呼び出すこと
ができる。
【0015】さらに、共有オブジェクト毎に、どのプロ
セスから参照されているかを管理して、あるプロセスか
らの処理要求が他のプロセスからの処理に支障を与えな
いようにする。また、本システムにおける共有オブジェ
クトは実行中に動的に生成または消去されるので、現存
している共有オブジェクトを管理し、複数のプロセスか
らの生成要求の重複を回避したり、参照要求への対応可
/否などを管理する。
【0016】このため、共有オブジェクト記憶領域10
に、現存する共有オブジェクトの情報や共有オブジェク
トに対する参照プロセスの情報等の管理情報100r1
を記憶するとともに、共有オブジェクトの生成、消去、
参照を管理するプログラムで、プロセッサ1pによって
処理される、共有オブジェクト管理手段10cを設けて
いる。例えば、プロセス11の処理が共有オブジェクト
1001の消去を要求した場合に、共有オブジェクト管
理手段10cは管理情報100r1を参照して、オブジ
ェクト1001が他のプロセスによって参照されていな
いか調べ、他のプロセスからの参照が無い場合にのみ消
去処理を実行する。
【0017】本発明のオブジェクト指向計算機システム
によれば、異なるプロセス間で同一オブジェクトを共有
して、マルチプロセスによる処理が可能になる。これに
よれば、従来のように、共有オブジェクトへの処理要求
を遠隔手続き呼び出しや、プロセス間通信を行う必要が
なくなるので、実行効率が向上できる。なお、本発明で
単に、共有オブジェクト管理手段という場合、これらの
管理プログラムや管理情報及びプロセッサによる処理の
相対的な機能を指す。
【0018】第二の本発明のオブジェクト指向プログラ
ムのコンパイラ(開発ツール)は、前記共有手続きとプ
ロセス上の手続き、さらには、前記共有データとプロセ
ス上のデータの記憶形式を同一としたオブジェクト指向
計算機システムを対象として構成されているので、共有
オブジェクトと非共有オブジェクトの混在するソースプ
ログラム上で、手続きの定義を変えるのみで実行可能プ
ログラムの生成が可能になる。また、入力された共有オ
ブジェクトのソースプログラムから、共有オブジェクト
管理手段が使用する管理情報(初期値)が生成される。
【0019】これによれば、プログラマの負担が少な
く、プログラムの再利用性にも優れた共有オブジェクト
を含むプログラムのコンパイラが提供できる。
【0020】
【実施例】以下、本発明の実施例を図を用いて詳細に説
明する。最初に、第一の本発明の一実施例によるオブジ
ェクト指向計算機システムについて説明する。第一の本
発明は、複数のプロセスを並行に処理でき、各プロセス
上ではオブジェクト間で処理を要求し合って処理を進め
ることのできる、オブジェクト指向計算機システムを対
象とする。
【0021】図2は、本発明の一実施例によるオブジェ
クト指向計算機システムの全体構成図である。計算機1
はプロセッサ1p、メモリ1m、ディスク装置1dから
なる。メモリ1mには計算機が実行するプログラムが存
在し、これをプロセッサ1pが読みだして処理を実行す
る。メモリ1mには、オペレーティングシステム(O
S)のプログラムを記憶する領域1o、プロセスのプロ
グラムを記憶する領域11、12...等、プロセス間
共有手続きを記憶する共有手続き記憶領域10p、プロ
セス間共有データを記憶する共有データ記憶領域10d
がある。
【0022】OSはプログラムの実行やユーザとの基本
的なサービスを行うソフトウェアである。本実施例のO
Sは複数のプロセスを適当に切り換えながら並行に実行
することのできるマルチプロセス機能を有している。マ
ルチプロセスが可能なOSとしては、例えば、プレンテ
ィス・ホール社(Prentice‐Hall)刊、ザ・デザイン・
オブ・ザ・ユニックス・オペレーティング・システム
(1986)(The Designof the UNIX Operating Syst
em (1986))に記載されているOSがあり、これを利用
することにより、ひとつの計算機上で複数のプロセスを
同時に実行できる。プロセスはタスクとも呼ばれる。
【0023】OSは、プロセス間で同一の手続きを共有
し、呼び出すことを可能とする共有手続き管理処理1o
pm、プロセス間で同一のデータをアクセスすることを
可能とする共有データ管理処理1odmの機能を有して
いる。これにより、共有手続き記憶領域10p上に記憶
された手続きを、複数のプロセスから呼び出して実行で
きる。
【0024】共有手続き管理処理としては、例えば、イ
ンターナショナル・ビジネス・マシーンズ社(Internat
ional business Machines Corporation)刊、アイ・ビ
ー・エム・ジャーナル・オブ・リサーチ・アンド・デベ
ロップメント、34巻1号(IBM jouranal of Research
and Development(1990))中のマネジング・プログラム
ス・アンド・ライブラリズ・イン・エー・アイ・エック
ス・バージョン3・フォー・リスク・システム(Managi
ng Programs and Libraries in AIX Version3for RISC
System/6000 Processors)や、ユーズニックス・アソシ
エーション(USENIX Association)刊、プロシーディン
グス・オブ・ザ・サマー・1987・ユーズニックス・
コンファレンス(Proceedings of the Summer 1987 USE
NIX Conference (1987))中のシェアード・ライブラリ
ズ・イン・サン・オー・エス(Shared Libraries in Su
n OS)に記載の方法がある。
【0025】これらの方法を利用して、共有手続き記憶
領域10p上に記憶された手続きを複数のプロセス1
1,12から呼び出して実行させる共有手続き管理処理
10pmを実現できる。
【0026】共有データ管理処理としては、例えば、上
述のプレンティス・ホール社刊、ザ・デザイン・オブ・
ザ・ユニックス・オペレーティング・システム(198
6)(The Design of the UNIX Operating System)、
367頁〜370頁に記載されている方法がある。これ
を利用することにより、共有データ記憶領域10dをプ
ロセス11、12のメモリ空間にマッピングし、プロセ
ス11、12からの共有データのアクセスを可能にする
共有データ管理処理10dmを実現できる。
【0027】メモリ1m上の各プロセスの記憶領域に
は、各プロセスの処理を実行する、複数のオブジェクト
のプログラムが記憶される。オブジェクトはひと纏まり
のデータとそれに関する手続きをまとめたプログラムの
単位である。オブジェクト指向プログラムでは、同一種
類のオブジェクトは同一のクラスに属する。同一クラス
のオブジェクトは手続き及びデータの構造が同一で、デ
ータの値のみが異なり得る。これについては後述する。
【0028】プロセス11の記憶領域には、手続き記憶
領域11p、データ記憶領域11dがある。手続き記憶
領11p、データ記憶領域11dがある。手続き記憶領
域11pにはクラス手続き11cp1等、そのプロセス
の処理に使用されるクラスの手続きがクラス分だけ記憶
される。データ記憶領域11dには、クラスデータ11
cd1等およびオブジェクトデータ11od1等が記憶
される。すなわち、データ記憶領域には、そのプロセス
の処理に使用されるクラスのデータが、それらのクラス
分だけ、また、そのプロセスの処理に使用されるオブジ
ェクトのデータが、オブジェクト分だけ記憶される。な
お、プロセス12も同様に構成されている。
【0029】プロセス11とプロセス12は、通常は異
なるアドレス空間を有するため、互いに他のオブジェク
トを参照できない。ただし、本実施例では、複数のプロ
セスが処理を要求できる同一のオブジェクト、すなわち
共有オブジェクトのプログラムは、プロセスの記憶領域
には記憶されない。
【0030】メモリ1mの共有手続き記憶領域10pに
は、共有オブジェクトを管理するための手続きである共
有管理クラス手続き10sp、および共有オブジェクト
のクラス手続き10cp1、10cp2等が記憶され
る。共有データ記憶領域10dには、共有オブジェクト
を管理するためのデータである共有管理クラスデータ1
0sd、共有オブジェクトのクラスデータ10cd1、
10cd2等、共有オブジェクトのオブジェクトデータ
10od1、10od2等が記憶される。
【0031】次に、本実施例のオブジェクトの構造につ
いて説明する。一般にオブジェクト指向プログラムでは
オブジェクトの種類をクラス、個々のオブジェクトをイ
ンスタンスと呼ぶ。クラスはインスタンスのデータ構造
や動作を定義したもので、本実施では、単にオブジェク
トと呼ぶ場合はインスタンスを意味する。
【0032】プログラマが記述するプログラムはクラス
の定義である。クラスの定義方法は、オブジェクト指向
言語により定められている。オブジェクト指向言語に
は、例えば米国ゼロックス社が開発した Smalltalk‐8
0、米国AT&T社が開発したC言語にオブジェクト指
向の言語機能を追加したC++言語などがある。
【0033】クラス定義では、オブジェクトのデータ構
造と手続きを宣言する。例えば、Smalltalk‐80 では、
オブジェクトの個々のデータはインスタンス変数、手続
きはメソッドと呼ばれる。また、C++言語では、個々
のデータはメンバと呼ばれ、手続きはメンバ関数と呼ば
れる。本実施例では、オブジェクトのデータに含まれる
個々のデータを変数、個々の手続きを関数と呼ぶことに
する。プログラマにより記述されたクラス定義は、コン
パイラにより実行可能プログラムに変換され、それをメ
モリ上にロードして実行することができる。オブジェク
トを生成する関数と、オブジェクトを消去する関数は、
プログラマが記述しなくても、コンパイラによって自動
生成されるものとする。
【0034】オブジェクト指向言語には継承と呼ばれる
機能がある。この継承機能は、既に定義されたクラスを
継承することを宣言し、さらに追加する定義のみを記述
することにより、既に定義したあったクラス定義の関数
および変数と、追加して定義した関数および変数を加え
た、新たなクラスを容易に定義するものである。例え
ば、クラス1で関数1、関数2、変数1を宣言し、クラ
ス2でクラス1を継承することと、関数3、変数2のみ
を宣言すると、クラス2は関数1、関数2、関数3、変
数1、変数2を宣言したのと同じ効果が得られる。この
場合、クラス1はクラス2の上位クラスであり、継承さ
れるクラスが継承するクラスの上位クラスと呼ばれる。
継承するクラスひとつとは限らず、複数継承することも
できる。これを多重継承と呼ぶ。このようにして、継承
機能を用いることにより、クラスを効率的に定義するこ
とができる。
【0035】次にオブジェクトの構造について説明す
る。まず、プロセス上のオブジェクトの構造について説
明する。
【0036】図3は、プロセスの記憶領域上におけるオ
ブジェクトの構造を表わしている。図にはプロセス11
の例を示しているが、プロセス12も同様な構造とな
る。クラスに関するプログラムの記憶領域は、クラス手
続き記憶領域11cp1、クラスデータ記憶領域11c
d1からなる。クラス手続き記憶領域およびクラスデー
タ記憶領域は、クラス毎にそれぞれ一つずつ存在する。
継承機能を利用した場合、上位クラスのクラス手続き記
憶領域およびクラスデータ記憶領域と、下位クラスのク
ラス手続き記憶領域およびクラスデータ記憶領域は別々
に記憶される。クラス手続き領域11cp1は、図2に
おいて、プロセスの手続き記憶領域11pに存在し、ク
ラスデータ記憶領域11cd1はプロセスのデータ記憶
領域11dに存在する。
【0037】クラス定義により定義されたオブジェクト
の関数は、クラス手続き記憶領域11cp1内に記憶さ
れる。クラス手続き記憶領域11cp1には、コンパイ
ラによって自動的に生成されるオブジェクト生成関数の
プログラム11cp1cおよびオブジェクト消去関数の
プログラム11cp1d、プログラマが定義したオブジ
ェクトの関数(関数1)11cp11、11cp12
(関数2)を含む。継承機能を利用した場合、下位クラ
スのクラス手続き記憶領域内には、下位クラスの定義で
新たに宣言した関数のプログラムのみが記憶される。
【0038】クラスデータ11cd1は、関数テーブル
11cd1tと上位クラスリスト11cd1cからな
る。関数テーブル11cd1tは、そのクラスのオブジ
ェクト生成関数名11cd1tic、オブジェクト消去
関数名11cd1tid、プログラマが定義した関数名
11cd1ti1、11cd1ti2と、それぞれの関
数名に対応した関数ポインタ11cd1tpc、11c
d1tpd、11cd1tp1、11cd1tp2を記
憶している。関数ポインタ11cd1tpcはオブジェ
クト生成関数11cp1c、関数ポインタ11cd1t
pdはオブジェクト消去関数11cp1d、関数ポイン
タ11cd1tp1、11cd1tp2はそれぞれの関
数名に対応した関数11cp11、11cp12のプロ
グラムの先頭番地を指している。継承機能を利用した場
合、下位クラスの関数テーブルには、下位クラスの定義
で新たに宣言した関数についてのみこれらの情報が記憶
される。上位クラスリスト11cd1cには、そのクラ
スが別の上位クラスを継承しているとき、その上位クラ
スのクラスデータの先頭番地を指している。上位クラス
が存在しないとき(継承するクラスがないとき)、上位
クラスリストは空である。多重継承の場合、継承した全
てのクラスデータの先頭番地を記憶する。
【0039】オブジェクトのデータは、オブジェクト単
位に、オブジェクトデータ記憶領域11od1、11o
d2等に記憶される。実行時に新たなオブジェクトを生
成すると、新たにオブジェクトデータ記憶領域が割り当
てられる。オブジェクトデータ記憶領域11od1には
クラスポインタ11odp、クラス定義により宣言され
たオブジェクトの変数11od11、11od12、1
1od13等が存在する。継承機能を利用した場合、オ
ブジェクトデータ記憶領域には、そのクラスの定義で宣
言した変数のみでなく、その上位のクラスで宣言した変
数も含む。継承が多段階にわたる場合、全ての上位クラ
スの変数が含まれる。オブジェクトデータ記憶領域11
od1は、図2において、プロセスのデータ記憶領域1
1dに存在する。
【0040】クラス手続きおよびクラスデータは、実行
可能プログラムがメモリ上にロードされ、プロセスの処
理が実行可能になった段階でメモリ上に存在し、プロセ
スが終了するまで存在し続ける。一方、オブジェクトデ
ータは、実行時に動的に生成されたり、消去されたりす
る。クラスはプログラマが記述したソースプログラム、
すなわちクラス定義中ではクラス名で指定するが、コン
パイラにより、実行時には、プロセスのデータ記憶領域
内の対応するクラスデータの先頭アドレスに変換されて
いる。一方、オブジェクトを指定する場合には、プロセ
スのデータ記憶領域内の、そのオブジェクトデータの先
頭アドレスを指定する。
【0041】次に、プロセス間で共有される共有オブジ
ェクトの構造について説明する。図4は、共有オブジェ
クトの記憶領域上の構造を示している。まず、クラスに
関する部分について説明する。共有オブジェクト記憶領
域10のクラス手続き記憶領域10cp1は、プロセス
上のオブジェクトのクラス手続き、例えば記憶領域11
cp1と同様である。ただし、クラス手続き記憶領域1
0cp1は、図2において共有手続き記憶領域10pに
存在する。
【0042】共有オブジェクトのクラスデータ記憶領域
10cd1には、関数テーブル10cd1t、上位クラ
スリスト10cd1c、共有オブジェクトテーブル10
cd1oが存在する。このうち、関数テーブル10cd
1tと上位クラスリスト10cd1cは、プロセス上の
クラスデータ11cd1の関数テーブル11cd1tと
上位クラスリスト11cd1cと同様である。ただし、
上位クラスリスト10cd1cには、継承した上位クラ
スへのポインタのみでなく、後述する共有管理クラスデ
ータ10sdへのポインタも記憶され、この点でプロセ
ス上の上位クラスリストと異なる。
【0043】共有オブジェクトテーブル10cd1o
は、自己のクラスに属する共有オブジェクト名10cd
1oi1、10cd1oi2...等と、それぞれに対
応したオブジェクトポインタ10cd1op1、10c
d1op2...等を記憶している。オブジェクトポイ
ンタ10cd1op1、10cd1op2等は、オブジ
ェクトデータ10od1、10od2等の先頭アドレス
を指している。共有管理クラスデータ記憶領域10sd
は、図2の共有データ10d内に存在する。
【0044】共有管理クラス手続き記憶領域10spに
は、共有オブジェクト生成関数のプログラム10sp
c、共有オブジェクト参照関数のプログラム10sp
r、共有オブジェクト消去関数のプログラム10spd
が記憶されている。共有管理クラスデータ10sdは関
数テーブル10sdtを含む。関数テーブル10sdt
は、共有オブジェクト生成関数名10sdtic、オブ
ジェクト参照関数名10sdtir、共有オブジェクト
消去関数名10sdtidと、それぞれに対応した関数
ポインタ10sdtpc、10sdtpr、10sdt
pdを記憶している。そして関数ポインタ10sdtp
cは共有オブジェクト生成関数10spcのプログラム
の先頭番地、関数ポインタ10sdtprは共有オブジ
ェクト参照関数10sprのプログラムの先頭番地、関
数ポインタ10sdtpdは共有オブジェクト消去関数
10spdのプログラムの先頭番地を指している。
【0045】クラス手続き10cp1は、プロセス上の
オブジェクトのクラス手続き11cp1と同一形式であ
る。クラス手続き10cp1中の関数10cp11、関
数10cp12はプログラマが定義したオブジェクトの
関数である。関数10cp1c、関数10cp1dは本
来、プロセス上のオブジェクトの生成、消去を行う関数
であり、共有オブジェクトの生成、消去には不要であ
る。しかし、本実施例では、コンパイラのクラス手続き
処理を同一にできることや、プログラムの移植性、流用
性を高めることができるように、プロセス上のオブジェ
クトと共有オブジェクトで、クラス手続きの形式を共通
化している。また、共有オブジェクトの関数テーブル1
0cd1tと、プロセス上の関数テーブル11cd1t
も、同様の理由によって同一形式としている。
【0046】共有オブジェクトのデータは、オブジェク
ト単位に、共有オブジェクトのオブジェクトデータ記憶
領域10od1、10od2等に記憶される。共有オブ
ジェクトデータ記憶領域10od1には、クラスポイン
タ10od1p、参照プロセスリスト10od1r、ク
ラス定義により宣言されたオブジェクトの変数11od
11、11od12、11od13が存在する。参照プ
ロセスリストには、該共有オブジェクトを参照している
全てのプロセスのプロセス番号が記憶される。
【0047】本実施例では、計算機システムを立ち上げ
た時点で、OSは、共有管理クラス手続きと共有オブジ
ェクトの全てのクラス手続きを共有手続き記憶領域に、
また共有管理クラスデータと共有オブジェクトの全ての
クラスデータを共有データ記憶領域にロードされ、計算
機システムが停止するまで存在する。一方、共有オブジ
ェクトのデータは、プロセスからの要求により、共有デ
ータ記憶領域上に、動的に生成したり、消去したりする
ことができる。
【0048】共有オブジェクトのクラスは、プログラマ
が記述したソースプログラム、すなわちクラス定義中で
はクラス名で指定するが、コンパイラにより、実行時に
は、共有データ記憶領域内の、対応する共有オブジェク
トのクラスデータの先頭アドレスに変換されている。一
方、共有オブジェクトを指定する場合には、共有データ
記憶領域内のその共有オブジェクトデータの先頭アドレ
スを指定する。ただし、本実施例では、共有データ記憶
領域のアドレス空間は、全てのプロセスに共通のプロセ
ス上の特定のアドレス空間にマッピングするものとす
る。したがって、共有オブジェクトや共有オブジェクト
のクラスを指定した場合のアドレスは、全てのプロセス
で共通になる。
【0049】次に、以上のように構成されている本実施
例の動作について説明する。まず、各プロセス上のオブ
ジェクトの生成および消去について説明する。プロセス
上のオブジェクトの生成および消去は、オブジェクト生
成関数およびオブジェクト消去関数を呼び出すことによ
り実行する。オブジェクトを生成するには、プログラム
に、生成すべきオブジェクトのクラス名を指定し、戻り
値pとして、 p= create(クラス名); という記述をすればよい。戻り値pは、生成したオブジ
ェクトへのポインタ、すなわちオブジェクトの先頭アド
レスを示す。create(クラス名);という処理は、オブジ
ェクト生成関数(図3中のオブジェクト生成関数11c
p1c)を呼び出すことになる。
【0050】図5に、オブジェクト生成の処理フローを
示す。オブジェクト生成関数11cp1cが呼び出され
ると、指定されたクラスのオブジェクトのオブジェクト
データの大きさ分の記憶領域を割り当てることをOSに
要求する(処理11cp1c1)。OSは、割り当て処
理を行い、割り当てた領域の先頭アドレスを返してく
る。これにより、例えば、図3に示したオブジェクトク
トデータの記憶領域11od1が確保される。次に、割
り当てられた領域内の、クラスポインタ、この場合、ク
ラスポインタ11d1pに、そのオブジェクトのクラス
のクラスデータ11cd1の先頭アドレスを設定する
(処理11cp1c2)。そして、割り当てられた領域
の先頭アドレスを返して終了する(処理11cp1c
3)。
【0051】図6に、オブジェクト消去の処理フローを
示す。不要になったオブジェクトを消去するには、 delete(オブジェクトへのポインタ); という記述をすればよい。delete(オブジェクトへのポ
インタ)という処理は、オブジェクト消去関数(図3中
のオブジェクト消去関数11cp1d)を呼び出すこと
になる。オブジェクト消去関数11cp1dが呼び出さ
れると、引数で指定されたデータ記憶領域内のオブジェ
クトデータの領域を解放することをOSに要求する(処
理11cp1d1)。OSは指定された領域の解放処理
を実行する。そして、処理を終了する(処理11cp1
d2)。
【0052】次に共有オブジェクトの生成、参照、およ
び消去の処理について説明する。プロセス上のオブジェ
クトの生成、参照、消去は、共有オブジェクト生成関
数、共有オブジェクト参照関数、および共有オブジェク
ト消去関数を呼び出すことにより実行する。本実施例
で、共有オブジェクトがプロセス上のオブジェクトと異
なるのは、オブジェクトが名前を持つ点である。
【0053】共有オブジェクトを生成するには、プログ
ラムに、生成すべきオブジェクトのクラス名とオブジェ
クト名を指定し、 p= s_create(クラス名, 共有オブジェクト名); という記述をする。戻り値pは、生成したオブジェクト
へのポインタ、すなわちオブジェクトの先頭アドレスを
示す。s_create(クラス名,共有オブジェクト名)による
処理は、共有オブジェクト生成関数(図4中の共有オブ
ジェクト生成関数10spc)を呼び出すことになる。
【0054】図7に、共有オブジェクト生成の処理フロ
ーを示す。オブジェクト生成関数10spcが呼び出さ
れると、まず、指定されたクラスのクラスデータ、例え
ばクラスデータ10cd1の共有オブジェクトテーブル
10cd1o中に、指定された共有オブジェクト名が存
在するかどうか調べる(処理10spc1)。例えば、
共有オブジェクト名1(110cd1oi1)が指定さ
れ、もし存在すれば、対応する共有オブジェクトデータ
10od1の参照プロセスリスト10od1rに、生成
要求をしたプロセスのプロセス番号を追加し(処理10
cpc2)、そのオブジェクト名に対応するオブジェク
トポインタの値を返して終了する(処理10cpc
3)。
【0055】一方、指定された共有オブジェクト名が存
在しなければ、指定されたクラスの共有オブジェクトデ
ータの大きさ分の記憶領域を割り当てることをOSに要
求する(処理10cpc4)。OSは、割り当て処理を
行い、割り当てた領域の先頭アドレスを返してくる。こ
れにより、例えば、図3に示したオブジェクトクトデー
タの記憶領域10od1が確保される。次に、割り当て
られた領域内の、クラスポインタ、この場合、クラスポ
インタ10d1pに、そのオブジェクトのクラスのクラ
スデータ、この場合、クラスデータ10cd1の先頭ア
ドレスを設定する(処理10cpc5)。次に、共有オ
ブジェクトデータの参照プロセスリスト10od1r
に、この共有オブジェクトの生成要求をしたプロセスの
プロセス番号を記憶する(処理10cpc6)。そし
て、共有オブジェクトテーブル1ocd1oに、生成し
たオブジェクト名と割り当てられた領域の先頭アドレス
(オブジェクトポインタ)を格納し(処理10cpc
7)、その割り当てられた領域の先頭アドレスを返して
終了する(処理10cpc8)。
【0056】あるプロセスの要求で生成された共有オブ
ジェクトを、別のプロセスで参照するには、プログラム
に、参照するオブジェクトのクラス名とオブジェクト名
を指定し、 p= s_refer(クラス名,共有オブジェクト名); という記述をする。この戻り値pは、参照したいオブジ
ェクトのポインタ、すなわちオブジェクトの先頭アドレ
スを示す。s_refer(クラス名,共有オブジェクト名)に
よる処理は、共有オブジェクト参照関数(例えば、図4
中の共有オブジェクト参照関数10spr)を呼び出す
ことになる。
【0057】図8に、あるプロセスによる共有オブジェ
クト参照の処理フローを示す。オブジェクト参照関数1
0sprが呼び出されると、まず、指定されたクラスの
クラスデータ、例えばクラスデータ10cd1の共有オ
ブジェクトテーブル10cd1o中に、指定された共有
オブジェクト名が存在するかどうか調べる(処理10s
pr1)。もし存在しなけば、値0を返して終了する
(処理10spr2)。これは、参照すべき共有オブジ
ェクトの存在しないことを示す。一方、存在すれば、対
応する共有オブジェクトデータの参照プロセスリスト、
例えば存在するのがオブジェクト名1(10cd1oi
1)だとすると、参照プロセスリスト10od1rに、
この共有オブジェクト生成要求をしたプロセスのプロセ
ス番号を追加して(処理10spr3)、そのオブジェ
クト名に対応するオブジェクトポインタの値を返して終
了する(処理10spr4)。
【0058】あるプロセスにおいて不要になった共有オ
ブジェクトを消去するには、 s_delete(オブジェクトへのポインタ); という記述をすればよい。s_delete(オブジェクトへの
ポインタ)による処理は、共有オブジェクト消去関数
(例えば、図4中の共有オブジェクト消去関数10sp
d)を呼び出すことになる。この場合、本実施例におい
ては、必ずしも共有オブジェクトを消去するとは限らな
い。すなわち、あるプロセスが共有オブジェクトの消去
を要求したとき、当該共有オブジェクトが他のプロセス
により参照されている場合には、消去の要求元プロセス
による当該オブジェクトの参照をやめるだけに止める。
他に参照しているプロセスが存在しない場合にのみ実際
に消去する。
【0059】図9に、あるプロセスにおいて不要になっ
た共有オブジェクトを消去する(参照をやめる)処理フ
ローを示す。オブジェクト消去関数10spdが呼び出
されると、指定された共有オブジェクトデータ、例えば
共有オブジェクトデータ10od1が指定されたとする
と、その参照プロセスリスト10od1rから、消去要
求元のプロセスのプロセス番号を削除する(処理10s
pd1)。そして、この参照プロセスリストに記憶され
ているプロセス番号が皆無になったかどうかを調べ(処
理10spd2)、まだ残っていれば終了する(処理1
0spd3)。一方、参照プロセスリストが空になった
場合には、クラスデータ中の共有オブジェクトテーブ
ル、この場合共有オブジェクトテーブル10cd1oか
ら、当該オブジェクトデータに対応するオブジェクト名
とオブジェクトポインタを削除する(処理10spd
4)。次に、引数で指定された共有データ記憶領域内の
オブジェクトデータの領域解放をOSに要求する(処理
10spd5)。OSは指定された領域の解放処理を実
行し、処理を終了する(処理10spd6)。
【0060】次に、オブジェクトに処理を要求する場合
の動作について説明する。同一プロセス上のあるオブジ
ェクトが他のオブジェクトに処理を要求する場合、相手
先のオブジェクトと関数名を指定して処理を要求する。
すなわち、 call(オブジェクトへのポインタ,関数名,引数の並
び); という記述による。必要とする引数は呼び出す関数によ
って決まる。このcall処理は、オブジェクト指向計算機
システムが有している通常のオブジェクト関数呼び出し
処理によって実行される。
【0061】図10に、オブジェクト関数呼び出しの処
理フローを示す。オブジェクト関数呼び出し処理100
では、まず、第1引数であるオブジェクトへのポインタ
で指定されたオブジェクトデータに含まれるクラスポイ
ンタの指しているクラスデータを探索する(処理100
1)。例えば、図2のオブジェクトデータ11od1が
指定されたとすると、クラスデータ11cd1が探索さ
れる。
【0062】次に、探索されたクラスデータ内の関数テ
ーブル中に、第2引数で指定された関数名が存在するか
どうかを調べる(処理1002)。もし存在すれば、指
定の関数名に対応する関数を、指定された引数の並びを
用いて実行する(処理1003)。例えば、関数名1
(11cd1ti1)であれば、関数11cp11を実
行する。一方、存在しなければ、上位クラスリスト11
cd1cを参照して、クラスポインタの指している上位
クラスのクラスデータを探索する(処理1005)。そ
して、この上位クラスのクラスデータについて、再び処
理1002以降を実行する。このようにして、指定され
た関数を探索し実行する。
【0063】なお、オブジェクトへの処理要求を、 関数名(オブジェクトへのポインタ,引数の並び) という形式で記述し、実行する関数のアドレスを明示的
に指定する呼び出し処理としてもよい。この形式は、実
行する関数をコンパイラにより決定してアドレスを指定
する、実行可能プログラムとして生成される。これによ
れば、システム構成が簡単になり、実行効率も向上す
る。
【0064】以上は、プロセス上に存在するオブジェク
トへの処理要求の場合を例にして説明した。このこと
は、プロセス上のオブジェクトが共有オブジェクトに処
理を要求する場合にも、全く同様にして処理できる。す
なわち、本実施例の構成においては、共有データ記憶領
域のアドレス空間は、全てのプロセスに共通の特定のア
ドレス空間にマッピングされているので、第1引数のポ
インタが指しているオブジェクトが共有オブジェクト記
憶領域に存在する場合でも、あたかも自プロセス上のオ
ブジェクトであるかのように、プロセスからの処理要求
が実行される。
【0065】なお、共有オブジェクトに対する関数呼び
出しで、第2引数で指定された関数名が共有オブジェク
トの生成(s_create)、参照(s_refer)または消去(s
_delete)の場合には、上述した参照プロセスリストに
基づく管理が行なわれることは言うまでもない。
【0066】なお、図4のクラス手続き10cp1中に
おいて、オブジェクト生成関数10cp1cとオブジェ
クト消去関数10cp1dが存在するのは、上述のよう
に、プロセス上のオブジェクトとクラス手続きの形式を
共通化するためである。そこで、本実施例においては、
共有オブジェクト生成関数10spc、共有オブジェク
ト消去関数10spdは、それぞれ関数名 s_create、s
_delete が指定されたときに呼び出され、オブジェクト
生成関数10cp1c、共有オブジェクト消去関数10
cp1dは、それぞれ関数名 create、delete が指定さ
れたときに呼び出される。しかし、共有オブジェクトの
場合には、原則として s_create、s_delete が使用さ
れ、 create、delete が使用されないので、実際にはオ
ブジェクト生成関数10cp1c、共有オブジェクト消
去関数10cp1dが呼び出されることはない。
【0067】以上、本発明のオブジェクト指向計算機シ
ステムの一実施例を説明した。これによれば、複数のプ
ロセスで共有可能な共有オブジェクトを実現し、メモリ
容量を低減できる。また、共有オブジェクトを呼び出す
プロセスのプログラムと独立して、共有オブジェクトの
データ及び手続きを構成するので、その修正や入替えを
単独に行え、システムの保守や拡張が容易になる。
【0068】上記した実施例では、共有オブジェクトの
手続きとデータを共有オブジェクト記憶領域に設けてい
るが、この構成に限られるものではない。
【0069】図11は、本発明の第二の実施例によるオ
ブジェクト指向計算機システムの全体構成図である。第
一の実施例(図2)との相違は、共有オブジェクトの手
続きを、各プロセスの手続き記憶領域に移した点にあ
る。すなわち、共有管理クラス手続き10spと共有オ
ブジェクトのクラス手続き10cp1、10cp2等
は、各プロセスの手続き記憶領域11p、12p上に記
憶している。これによれば、各プロセスに共有オブジェ
クトの手続きを持たせる分、システム全体のメモリ容量
は第一の実施例に比べて増加するが、OSが共有手続き
を扱う機能を持つ必要がなくなり、システム構成が簡単
になるとともに、使用できるOSの範囲が拡大する。
【0070】図12は、本発明の第三の実施例によるオ
ブジェクト指向計算機システムの全体構成図である。第
二の実施例(図11)との相違は、共有オブジェクトの
データも、各プロセスのデータ記憶領域に移した点にあ
る。すなわち、各プロセスのデータ記憶領域11d、1
2d上に、それぞれデータ一致化記憶領域11cd、1
2cdを設け、ここに共有管理クラスデータ10sd、
共有オブジェクトクラスデータ10sd...、共有オ
ブジェクトデータ10od1...を記憶する。そし
て、各プロセス間で滴々にコピーすることにより、各プ
ロセスは同一のデータを持つことができる。これによ
り、メモリ容量は増えるが、OSが共有オブジェクトを
扱う機能が必要なくなり、システム構成が簡単になると
ともに、使用できるOSの範囲が拡大する。
【0071】次に、第二の本発明であるオブジェクト指
向プログラムのコンパイラの一実施例を説明する。この
コンパイラにより生成される実行可能プログラムは、第
一の本発明であるオブジェクト指向計算機システムに適
用される。
【0072】図13は、一実施例によるコンパイラの構
成を示す。このコンパイラでは、オブジェクトのクラス
定義のソースプログラムを入力し、非共有オブジェクト
や共有オブジェクトのクラスデータ及びクラス手続きを
生成する。
【0073】コンパイラ1000は字句解析処理部10
01、構文解析処理部1002、共有オブジェクト判定
処理部1003、非共有オブジェクトクラス手続き生成
処理部1004、非共有オブジェクトクラスデータ生成
処理部1005、共有オブジェクトクラス手続き生成処
理部1006、共有オブジェクトクラスデータ生成処理
部1007からなる。
【0074】クラス定義のソースプログラム1000s
は、プログラマにより定義される。非共有オブジェクト
のクラス定義は、例えばC++言語の文法に従って記述
されている。また、共有オブジェクトのクラス定義で
は、C++言語によるクラス定義の前に”share
d”という宣言がなされる。このように、ソースプログ
ラム1000sでは、非共有オブジェクトと共有オブジ
ェクトのクラス定義の混在が許される。
【0075】コンパイラ1000にソースプログラム1
000sを入力すると、字句解析処理部1001でクラ
ス定義の字句の解析が行われ、構文解析処理部1002
で構文の解析が行われる。これにより、入力されたクラ
ス定義中で、宣言された手続きとデータが何であるか解
析することができる。また、”shared”という宣
言の有無も解析できる。この結果、判定処理部1003
はクラス定義前の”shared”の有無で、非共有オ
ブジェクト/共有オブジェクトを判定する。
【0076】非共有オブジェクトと判定された場合、非
共有オブジェクトクラス手続き生成処理部1004は、
図3の形式によるクラス手続き11cp1の実行可能プ
ログラムを生成する。次に、非共有オブジェクトクラス
データ生成処理部1005は、図3の形式によるクラス
データ11cd1の実行可能プログラムを生成する。こ
れらの処理は、従来のコンパイラによる処理と同じであ
る。
【0077】これに対し、共有オブジェクトと判定され
た場合、共有オブジェクトクラス手続き生成処理部10
06は、図4の形式によるクラス手続き10cp1の実
行可能プログラムを生成する。次に、共有オブジェクト
クラスデータ生成処理部1007は、図4の形式による
クラスデータ10cd1の実行可能プログラムを生成す
る。ここで、非共有オブジェクトのクラス手続き11c
p1と共有オブジェクトのクラス手続き10cp1は基
本的に同一の形式となるので、その生成処理も同じにな
る。一方、共有オブジェクトクラスデータ生成処理部1
007は、従来のオブジェクトクラスデータ生成処理部
1005に対して、共有オブジェクトテーブル10cd
1oの生成処理を追加した構成となる。
【0078】本実施例によれば、共有オブジェクトのク
ラス定義の場合に、プログラマは非共有のクラス定義文
の前に”shared”を宣言すれば、コンパイラがそ
れを識別して、非共有オブジェクト/共有オブジェクト
の形式に従った実行可能プルグラムを自動的に生成する
ので、プログラマの負担が少ない。
【0079】なお、上述したように、実行する関数をコ
ンパイラにより決定し、明示的に実行する関数のアドレ
スを指定した呼び出しをする実行可能プログラムを生成
するようにしてもよい。
【0080】また、第一の本発明によるオブジェクト指
向の計算機システムの実施例では、共有オブジェクトは
実行時に動的に生成している。しかし、ソースプログラ
ムで共有オブジェクトを宣言し、本実施例のコンパイラ
によって、共有データ記憶領域に記憶する共有オブジェ
クトの情報(クラスでデータや共有オブジェクトデー
タ)を生成し、実行可能プログラムのロード時にメモリ
上記憶させてもよい。これにより、共有オブジェクトの
情報を実行時に生成する必要がなくなり、システムの実
行効率が向上する。
【0081】さらに、第二の本発明によるコンパイラを
第一の本発明によるオブジェクト指向の計算機システム
と一体的に構成することも可能である。
【0082】
【発明の効果】本発明のオブジェクト指向計算機システ
ムによれば、遠隔手続き呼び出しやプロセス間通信を用
いることなく、複数のプロセスから直接オブジェクトの
手続きを呼び出すことのできる共有オブジェクトを実現
したので、プロセス間共有オブジェクトの実行効率を向
上できる効果がある。
【0083】また、あるプロセスの処理要求が他のプロ
セスの処理に支障を与えないように、複数のプロセスに
よる共有オブジェクトの参照状況を管理しているので、
システムの信頼性とコストパフォーマンスを向上できる
効果がある。
【0084】さらに、共有オブジェクトを呼び出すプロ
セスのプログラムと独立して、共有オブジェクトを構成
するので、その修正や入替えを単独に行え、システムの
保守や拡張が容易になる効果がある。
【0085】また、本発明によれば、プロセス上のオブ
ジェクトの定義と、共有オブジェクトのオブジェクト定
義は同一で、区別する必要がない。したがって、プログ
ラムの再利用性が向上するという効果がある。
【0086】本発明のコンパイラによれば、ソースプロ
グラム上で、同一プロセス内のオブジェクトへの処理要
求と、共有オブジェクトへの処理要求が同一に扱うこと
ができる。したがって、プログラマの負担が減少すると
いう効果がある。
【図面の簡単な説明】
【図1】本発明による共有オブジェクトの概念を示す説
明図。
【図2】本発明の第一の実施例によるオブジェクト指向
計算機システムの全体構成図。
【図3】第一の実施例によるメモリ上プロセスでのオブ
ジェクトの構成図。
【図4】第一の実施例によるメモリ上での共有オブジェ
クトの構成図。
【図5】プロセス上のオブジェクト生成の処理フローチ
ャート。
【図6】プロセス上のオブジェクト消去の処理フローチ
ャート。
【図7】共有オブジェクト生成の処理フローチャート。
【図8】共有オブジェクト参照の処理フローチャート。
【図9】共有オブジェクト消去の処理フローチャート。
【図10】オブジェクト関数呼び出しの処理フローチャ
ート。
【図11】本発明の第二の実施例によるオブジェクト指
向計算機システムの全体構成図。
【図12】本発明の第三の実施例によるオブジェクト指
向計算機システムの全体構成図。
【図13】本発明の一実施例によるコンパイラの構成
図。
【符号の説明】
1…計算機、1p…プロセッサ、1m…メモリ、1d…
ディスク装置、1o…OS、11,12…プロセス、1
1p,12p…プロセス上の手続き記憶領域、11d,
12d…プロセス上のデータ記憶領域、11cp1,1
2cp1…プロセス上のクラス手続き、11cd1,1
2cd2…プロセス上のクラスデータ、11od1,1
2od2…プロセス上のオブジェクトデータ、10p…
共有手続き記憶領域、10sp…共有管理クラス手続
き、10cp1,10cp2…共有オブジェクトのクラ
ス手続き、10d…共有データ記憶領域、10sd…共
有管理クラスデータ域、10cd1,10cd2…共有
オブジェクトのクラスデータ、10cd1o…共有オブ
ジェクトテーブル、10od1,10od2…共有オブ
ジェクトのオブジェクトデータ、10od1r,10o
d2r…参照プロセスリスト、1000…コンパイラ
(開発ツール)、1001…字句解析処理部、1002
…構文解析処理部、1003…共有オブジェクト判定処
理部、1004…非共有オブジェクトクラス手続き生成
処理部、1005…非共有オブジェクトクラスデータ生
成処理部、1006…共有オブジェクトクラス手続き生
成処理部、1007…共有オブジェクトクラスデータ生
成処理部。

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 プロセス毎にオブジェクトの手続きとデ
    ータを記憶し、前記オブジェクトのデータを指定して処
    理を要求をしたとき、前記オブジェクトの手続きが前記
    データに対して処理を進めるオブジェクト指向計算機シ
    ステムにおいて、 複数のプロセス上のオブジェクトからの処理要求を受け
    付ける共有オブジェクトの共有データを記憶する共有デ
    ータ記憶手段と、前記共有オブジェクトの共有手続きを
    記憶する共有手続き記憶手段と、前記共有オブジェクト
    の生成、消去および/または参照を管理する共有オブジ
    ェクト管理手段を設け、 プロセス上のオブジェクトが前記共有データ記憶手段に
    記憶されたデータを指定して前記共有オブジェクトに処
    理を要求したとき、前記共有手続き記憶手段に記憶され
    た前記共有オブジェクトの共有手続きが前記共有データ
    記憶手段に記憶された共有データに関する処理を実行す
    ることを特徴とするオブジェクト指向計算機システム。
  2. 【請求項2】 プロセス毎に、オブジェクトの手続きを
    記憶する手続き記憶領域と、オブジェクトのデータを記
    憶するデータ記憶領域を有し、前記オブジェクトのデー
    タを指定して処理を要求をしたとき、前記オブジェクト
    の手続きが前記データに対して処理を進めるオブジェク
    ト指向計算機システムにおいて、 複数のプロセスに共通する共有オブジェクトの共有手続
    きを各プロセスの前記手続き記憶領域に記憶するととも
    に、複数のプロセス上のオブジェクトからの処理要求を
    受け付ける前記共有オブジェクトの共有データを記憶す
    る共有データ記憶手段と、前記共有オブジェクトの生
    成、消去および/または参照を管理する共有オブジェク
    ト管理手段を設け、 プロセス上のオブジェクトが前記共有データ記憶手段に
    記憶されたデータを指定して前記共有オブジェクトに処
    理を要求したとき、前記手続き記憶領域に記憶された前
    記共有オブジェクトの共有手続きが前記共有データ記憶
    手段に記憶された共有データに関する処理を実行するこ
    とを特徴とするオブジェクト指向計算機システム。
  3. 【請求項3】 プロセス毎に、オブジェクトの手続きを
    記憶する手続き記憶領域と、オブジェクトのデータを記
    憶するデータ記憶領域を有し、前記オブジェクトのデー
    タを指定して処理を要求をしたとき、前記オブジェクト
    の手続きが前記データに対して処理を進めるオブジェク
    ト指向計算機システムにおいて、 複数のプロセスに共通する共有オブジェクトの共有手続
    きを各プロセスの前記手続き記憶領域に記憶し、前記共
    有オブジェクトの共有データを一致化して各プロセスの
    前記データ記憶領域内のデータ一致化記憶領域に記憶す
    るとともに、前記共有オブジェクトの生成処理、消去処
    理および/または参照処理を管理する共有オブジェクト
    管理手段を設け、 前記データ一致化記憶領域に記憶されたデータを指定し
    て前記共有オブジェクトに処理を要求したとき、前記手
    続き記憶領域に記憶された前記共有オブジェクトの共有
    手続きが前記データ記憶領域に記憶された共有データに
    関する処理を実行することを特徴とするオブジェクト指
    向計算機システム。
  4. 【請求項4】 請求項1または2または3において、 前記共有オブジェクト管理手段は、所定の共有オブジェ
    クトに対するあるプロセスの処理要求が他のプロセスか
    らの処理要求に支障を与えることの無いように管理する
    ことを特徴とするオブジェクト指向計算機システム。
  5. 【請求項5】 請求項1または2または3または4にお
    いて、 前記共有オブジェクトの共有データ、該共有データと前
    記共有手続きの関係を管理する管理情報を前記共有デー
    タの記憶領域内に記憶し、前記共有オブジェクト管理手
    段によって参照されることを特徴とするオブジェクト指
    向計算機システム。
  6. 【請求項6】 請求項5において、 前記管理情報は、前記共有オブジェクトのソースプログ
    ラムを入力として、前記共有オブジェクトの実行可能プ
    ログラムを出力するコンパイラを介して初期設定される
    ことを特徴とするオブジェクト指向計算機システム。
  7. 【請求項7】 請求項5または6において、 前記管理情報は、現存している共有データのオブジェク
    ト名称とその共有データの先頭アドレスを示すポインタ
    を設定する共有オブジェクトテーブルと、前記共有オブ
    ジェクトに対して処理中のプロセス名称を登録するプロ
    セスリストを含むことを特徴とするオブジェクト指向計
    算機システム。
  8. 【請求項8】 請求項7において、 前記共有オブジェクト管理手段は、プロセスのオブジェ
    クトから共有オブジェクト生成の要求がなされると、前
    記共有手続きの記憶領域に記憶されている共有オブジェ
    クト生成関数を起動し、前記共有オブジェクトテーブル
    中に該当するオブジェクト名称のないことを確認して、
    OSから前記共有データ記憶領域内における当該共有オ
    ブジェクトのデータ領域の割当てを受け、当該共有オブ
    ジェクトの共有データの参照プロセスリストに処理要求
    元のプロセス名称を登録し、前記共有オブジェクトテー
    ブルに当該オブジェクトの設定を行うことを特徴とする
    オブジェクト指向計算機システム。
  9. 【請求項9】 請求項7または8において、 前記共有オブジェクト管理手段は、プロセスのオブジェ
    クトから指定された共有オブジェクト消去の要求がなさ
    れると、前記共有手続きの記憶領域に記憶されている共
    有オブジェクト消去関数を起動し、指定された共有オブ
    ジェクトの共有データの参照プロセスリストから要求元
    のプロセス名称を削除し、当該参照プロセスリストの登
    録が空にならない場合はそのまま処理を終了し、一方、
    当該参照プロセスリストの登録が空になった場合は、前
    記共有オブジェクトテーブルから当該共有オブジェクト
    の設定を削除するとともに、OSに対して当該共有オブ
    ジェクトのデータ領域の解放を要求することを特徴とす
    るオブジェクト指向計算機システム。
  10. 【請求項10】 請求項7または8または9において、 前記共有オブジェクト管理手段は、プロセスのオブジェ
    クトから指定された共有オブジェクト参照の要求がなさ
    れると、前記共有手続きの記憶領域に記憶されている共
    有オブジェクト参照関数を起動し、前記共有オブジェク
    トテーブル中に該当するオブジェクト名称が存在する場
    合は、対応する共有オブジェクトの共有データの参照プ
    ロセスリストに要求元のプロセス名称を登録することを
    特徴とするオブジェクト指向計算機システム。
  11. 【請求項11】 プロセス毎にオブジェクトの手続きと
    データを記憶し、前記オブジェクトのデータを指定して
    処理を要求をしたとき、前記オブジェクトの手続きが前
    記データに対して処理を進めるオブジェクト指向計算機
    システムにおいて、 複数のプロセス上のオブジェクトからの処理要求を受け
    付ける共有オブジェクトのデータを記憶する共有データ
    記憶手段と、前記共有オブジェクトの手続きを記憶する
    共有手続き記憶手段と、前記共有オブジェクトの生成、
    消去および/または参照を管理する共有オブジェクト管
    理手段を設け、 前記共有手続き記憶手段には同一の形式によって、共有
    オブジェクト生成関数、共有オブジェクト消去関数を含
    む共有管理クラス手続きを記憶する共有管理クラス手続
    き記憶領域と、オブジェクト生成関数、オブジェクト消
    去関数及び所定関数を含むクラス手続きを記憶するクラ
    ス手続き記憶領域を設け、 クラス定義の異なる共有オブジェクトと非共有オブジェ
    クトが混在するソースプログラムを入力として、前記同
    一の形式による前記共有オブジェクト及び前記非共有オ
    ブジェクトの実行可能プログラムを出力するコンパイラ
    から、前記共有管理クラス手続き記憶領域及び前記クラ
    ス手続き記憶領域に移植されてなることを特徴とするオ
    ブジェクト指向計算機システム。
  12. 【請求項12】 請求項11において、 前記共有データ記憶手段には同一の形式によって、前記
    共有オブジェクト生成関数、前記共有オブジェクト消去
    関数の各関数名とポインタからなる関数テーブルを記憶
    する共有管理クラスデータ記憶領域と、前記オブジェク
    ト生成関数、前記オブジェクト消去関数及び前記所定関
    数の各関数名とポインタからなる関数テーブルを記憶す
    るクラスデータ記憶領域を設け、 前記コンパイラからの実行可能プログラムを、共有管理
    クラスデータ記憶領域及び前記クラスデータ記憶領域に
    移植されてなることを特徴とするオブジェクト指向計算
    機システム。
  13. 【請求項13】 プロセス毎に、オブジェクトの手続き
    を記憶する手続き記憶領域と、オブジェクトのデータを
    記憶するデータ記憶領域とを有するとともに、複数のプ
    ロセス上のオブジェクトからの処理要求を受け付ける共
    有オブジェクトの共有データを記憶する共有データ記憶
    手段と、前記共有オブジェクトの共有手続きを記憶する
    共有手続き記憶手段を有し、オブジェクトの処理要求を
    該当オブジェクトのデータを指定して実行するオブジェ
    クト指向計算機システムを対象とし、オブジェクトのソ
    ースプログラムの字句解析処理手段、構文解析処理手段
    及び実行可能プログラム生成処理手段を備えて、実行可
    能プログラムを生成するオブジェクト指向プログラムの
    コンパイラにおいて、 前記実行可能プログラム生成処理手段は、ソースプログ
    ラムの定義から共有オブジェクトと非共有オブジェクト
    を判別する判定処理手段と、前記共有オブジェクトのソ
    ースプログラムから、前記共有データ記憶手段に記憶す
    る共有データと、そのデータに対応付けて前記共有手続
    き記憶手段に記憶する共有手続きを出力する共有オブジ
    ェクト生成処理手段と、前記非共有オブジェクトのソー
    スプログラムから、前記データ記憶手段に記憶するデー
    タと、そのデータに対応付けて前記手続き記憶手段に記
    憶する手続きを出力するオブジェクト生成処理手段を有
    することを特徴とするオブジェクト指向プログラムのコ
    ンパイラ。
  14. 【請求項14】 プロセス毎に、オブジェクトの手続き
    を記憶する手続き記憶領域と、オブジェクトのデータを
    記憶するデータ記憶領域とを有するとともに、複数のプ
    ロセス上のオブジェクトからの処理要求を受け付ける共
    有オブジェクトの共有データを記憶する共有データ記憶
    手段と、前記共有オブジェクトの共有手続きを記憶する
    共有手続き記憶手段と、前記共有オブジェクトの生成、
    消去および/または参照を管理する共有オブジェクト管
    理手段を有し、オブジェクトの処理要求を該当オブジェ
    クトのデータを指定して実行するオブジェクト指向計算
    機システムを対象とし、オブジェクトのソースプログラ
    ムの字句解析処理手段、構文解析処理手段及び実行可能
    プログラム生成処理手段を備えて、実行可能プログラム
    を生成するオブジェクト指向プログラムのコンパイラに
    おいて、 前記実行可能プログラム生成処理手段は、前記共有オブ
    ジェクトのソースプログラムから、前記共有手続き記憶
    手段に記憶する前記共有オブジェクトの手続きの実行可
    能プログラムと、前記共有データ記憶手段に記憶する前
    記共有オブジェクトの共有データと、前記共有オブジェ
    クト管理手段に使用される管理情報を出力する機能を有
    していることを特徴とするオブジェクト指向プログラム
    のコンパイラ。
JP23516295A 1995-09-13 1995-09-13 オブジェクト指向計算機システム及びオブジェクト指向プログラムのコンパイラ Pending JPH0981383A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23516295A JPH0981383A (ja) 1995-09-13 1995-09-13 オブジェクト指向計算機システム及びオブジェクト指向プログラムのコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23516295A JPH0981383A (ja) 1995-09-13 1995-09-13 オブジェクト指向計算機システム及びオブジェクト指向プログラムのコンパイラ

Publications (1)

Publication Number Publication Date
JPH0981383A true JPH0981383A (ja) 1997-03-28

Family

ID=16981980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23516295A Pending JPH0981383A (ja) 1995-09-13 1995-09-13 オブジェクト指向計算機システム及びオブジェクト指向プログラムのコンパイラ

Country Status (1)

Country Link
JP (1) JPH0981383A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000222230A (ja) * 1999-02-03 2000-08-11 Toshiba Corp 並列分散対応コンポーネント実行システム、その開発方法、並列分散対応コンポーネント実行プログラムを記録したコンピュータ読み取り可能な記録媒体、および並列分散対応コンポーネント実行システム開発用フレームワークを記録したコンピュータ読み取り可能な記録媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000222230A (ja) * 1999-02-03 2000-08-11 Toshiba Corp 並列分散対応コンポーネント実行システム、その開発方法、並列分散対応コンポーネント実行プログラムを記録したコンピュータ読み取り可能な記録媒体、および並列分散対応コンポーネント実行システム開発用フレームワークを記録したコンピュータ読み取り可能な記録媒体

Similar Documents

Publication Publication Date Title
US10620988B2 (en) Distributed computing architecture
US6606742B1 (en) Object-oriented interface for portability to diverse operating systems or hardware platforms
US5404529A (en) Object-oriented interprocess communication system interface for a procedural operating system
US6275983B1 (en) Object-oriented operating system
US5473777A (en) Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls
US5455951A (en) Method and apparatus for running an object-oriented program on a host computer with a procedural operating system
US7219329B2 (en) Systems and methods providing lightweight runtime code generation
US5519867A (en) Object-oriented multitasking system
JP4791461B2 (ja) ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置
JP4837660B2 (ja) ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置
JPH05216692A (ja) プログラム実行を管理する方法およびシステム
Kafura et al. ACT++ 2.0: A class library for concurrent programming in C++ using Actors
KR19990064026A (ko) 컴퓨터 시스템 또는 그 프로그램이 중지될 필요가 없는 객체 지향형 메쏘드 유지 보수 메카니즘
JPH0855035A (ja) マイクロカーネル・データ処理システム用の伝送制御の分離の方法および装置
Arjomandi et al. ABC++: Concurrency by inheritance in C++
JPH08106441A (ja) プロセス間通信方法並びにプロセス間通信用のサブシステムおよびシステム
JP2888420B2 (ja) マルチタスク・アーキテクチャにおけるプロセス間通信方法
JPH0855037A (ja) プロセス間通信方法およびプロセス間通信用のシステム
JPH0981383A (ja) オブジェクト指向計算機システム及びオブジェクト指向プログラムのコンパイラ
Skjellum et al. Object‐oriented analysis and design of the Message Passing Interface
Pautet et al. CORBA & DSA: Divorce or marriage?
Wang et al. Implementation of Strong Mobility for Multi-Threaded Agents in Java
Havelka Thread-based mobility for a distributed dataflow language
Weyns et al. Run-time Repartitioning of Distributed Java Applications
Kienzle Ada 95