JPH08123699A - 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール - Google Patents

並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール

Info

Publication number
JPH08123699A
JPH08123699A JP6262555A JP26255594A JPH08123699A JP H08123699 A JPH08123699 A JP H08123699A JP 6262555 A JP6262555 A JP 6262555A JP 26255594 A JP26255594 A JP 26255594A JP H08123699 A JPH08123699 A JP H08123699A
Authority
JP
Japan
Prior art keywords
program
communication
executing
processing
module
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
JP6262555A
Other languages
English (en)
Inventor
Takanori Yokoyama
孝典 横山
Kunihiko Tsunetomi
邦彦 恒冨
Masaru Shimada
優 島田
Masahiko Saito
雅彦 齊藤
Takashi Owaki
隆志 大脇
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 JP6262555A priority Critical patent/JPH08123699A/ja
Publication of JPH08123699A publication Critical patent/JPH08123699A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】プログラマが通信方式や呼び出し方式を指定す
ることなく最適な通信方式や呼び出し方式を実行するこ
とができ、効率よい並行処理が可能な、並行処理システ
ムを提供する。 【構成】依頼先プログラムから必要とする情報を得るま
で依頼元プログラムは次の処理の実行を中断する方式
と、依頼先プログラムへの処理依頼後依頼元プログラム
はただちに次の処理を実行する方式との両者を実行でき
るプログラム間通信手段あるいはプログラム・モジュー
ル呼び出し手段と、依頼元プログラムが依頼先のプログ
ラムを実行して得た情報を必要とする場合には依頼元プ
ログラムは次の処理の実行を中断し、必要としない場合
には依頼元プログラムはただちに次の処理を実行するこ
とを決定する通信方式決定手段あるいは呼び出し方式決
定手段を設ける。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は複数のプログラムを並行
に実行する並行処理システムに係り、特に、プログラマ
に負担を欠けることなく複数のプログラムを効率よく実
行できる並行処理方式に関する。
【0002】
【従来の技術】複数のプログラムを並行に実行する方式
として、ひとつのプログラムにそれを実行するプロセス
を割り当て、それらのプロセス間で通信を行いながら処
理を依頼し合って並行に実行する方式がある。
【0003】この方式において処理を依頼する場合、依
頼先プロセスが依頼先プログラム中の依頼された処理を
実行することによって得られる情報を、依頼元プロセス
が依頼元プログラムを実行するのに必要とする場合に
は、依頼元プロセスは処理依頼の通信を行った後、その
情報を得るまで依頼元プログラムの実行を中断する必要
がある。
【0004】しかし、処理を依頼する場合に、常に依頼
元プロセスが処理を中断し、依頼先プロセス処理の終了
を待つのでは、依頼元プロセスと依頼先プロセスの処理
を並行に実行できず、効率がよくない。ところが、依頼
先からの情報を依頼元が必要としない場合には、依頼元
プロセスは処理依頼の通信後直ちに処理を継続すれば、
依頼元のプロセスと依頼先のプロセスを並行に実行で
き、効率を上げることができる例えば、岩波書店刊、コ
ンピュータソフトウェア、第3巻、第3号(1986
年)、9頁〜23頁(以下、引用例1と呼ぶ)に記載さ
れているように、オブジェクトと呼ぶプロセス(プログ
ラム)間の処理依頼の通信において、過去型、現在型、
未来型の3種の通信方式を用意し、依頼元が依頼先の情
報を必要としない場合には過去型の通信を、必要とする
場合には現在型または未来型の通信を指定して実行する
ことにより、並行処理の効率を向上する方法がある。た
だし、この方式は処理の依頼元と依頼先のプログラムに
ついてそれぞれ、別々のプロセスを割り当てる必要があ
り、多くの資源を消費してしまう。
【0005】そこで、資源を効率よく用いて、複数のプ
ログラムを並行に実行することのできる技術として、例
えば、共立出版社刊、分散オペレーティングシステム;
UNIXの次に来るもの(1991年)、38頁〜39
頁および271頁〜272頁(以下、引用例2と呼ぶ)
に記載されているように、プログラム・モジュール間の
呼び出しに従って、ひとつのプロセスが複数のプログラ
ム・モジュールを実行していく方法がある。この方法で
は、あるプログラム・モジュールの実行中に他のプログ
ラムモジュールの処理を呼び出す場合、呼び出し元のプ
ログラム・モジュールの処理を行っていたプロセスが、
呼び出し先のプログラム・モジュールの処理を実行し、
その終了後に、再び呼び出し元のプログラムモジュール
の処理を実行する。
【0006】
【発明が解決しようとする課題】しかし、引用例1の従
来技術では、プログラマが、依頼先プログラム中の依頼
された処理を実行することによって得られる情報を依頼
元プログラムを実行するのに必要とするかどうかを判定
して、どの通信方式を用いるかを決定し、それに応じた
プログラムを記述する必要があるため、プログラミング
の効率がよくないという問題があった。
【0007】また、引用例2の従来技術では、呼び出し
時には常に、呼び出し先プログラム・モジュールの処理
が終了するまで、呼び出し元のプログラム・モジュール
の処理を中断することになり、依頼元プログラム・モジ
ュールと依頼先プログラム・モジュールの処理を並行に
実行できず、処理効率がよくないという問題がある。
【0008】本発明の目的は、プログラマが通信方式や
呼び出し方式を指定することなく、通常の記述によるソ
ースプログラムを汎用のコンパイルで変換した実行プロ
グラムを基にして、依頼先プログラム中の依頼された処
理を実行することによって得られる情報を依頼元プログ
ラムを実行するのに必要とするかどうかに応じ処理効率
の最適な通信方式を実行したり、呼び出し先プログラム
・モジュールの処理によって得られる情報を呼び出し元
のプログラムモジュールの処理が必要とするかに応じて
処理効率の最適な呼び出し方式を実行することができる
並行処理方法及び並行処理システムを提供することにあ
る。
【0009】本発明の他の目的は、プログラマが通信方
式や呼び出し方式を指定することなく、通常の記述によ
るソースプログラムを入力し、依頼先プログラム中の依
頼された処理を実行することによって得られる情報を依
頼元プログラムを実行するのに必要とするかどうかに応
じ最適な通信方式を実行したり、呼び出し先プログラム
・モジュールの処理によって得られる情報を呼び出し元
のプログラムモジュールの処理が必要とするかに応じて
最適な呼び出し方式を実行する、並行処理システム上で
実行可能なプログラムを生成するプログラム変換ツール
を提供することにある。
【0010】
【課題を解決するための手段】本発明の並列処理システ
ムでは、プログラム間の通信において、依頼元のプログ
ラムは依頼先のプログラムへの処理依頼通信の実行後た
だちに次の処理を実行する非同期通信処理と、依頼先プ
ログラムから必要とする情報を得るまで次の処理の実行
を中断する同期通信処理の両者を実行できるプログラム
間通信手段と、依頼元のプログラムが依頼先のプログラ
ムを実行して得た情報を必要とする場合には同期通信を
用い、必要としない場合には非同期通信を行うことを決
定する通信方式決定手段を設けることにより、上記目的
を達成する。
【0011】また、本発明の並列処理システムでは、呼
び出し元のプログラム・モジュールを実行したスレッド
が呼び出し先のプログラム・モジュールを実行する継続
実行か、呼び出し元のプログラム・モジュールを実行し
たスレッドとは別のスレッドにより呼び出し先のプログ
ラム・モジュールを実行する分岐実行かを指定して呼び
出し処理を行うプログラム・モジュール呼び出し手段
と、呼び出し元のプログラム・モジュールが呼び出し先
のプログラム・モジュールを実行して得た情報を必要と
する場合には継続実行を行い、必要としない場合には分
岐実行を行うことを決定する呼び出し方式決定手段を設
けることにより、上記目的を達成する。
【0012】本発明のプログラム変換ツールでは、プロ
グラマが記述したソースプログラムを入力し、依頼先の
プログラムが実行して得た情報を依頼元のプログラムが
必要とする場合には同期通信処理を行うプログラム・コ
ードを生成し、必要としない場合には非同期通信を行う
プログラム・コードを生成するプログラム・コード生成
手段を設けることにより、上記目的を達成する。
【0013】また、本発明のプログラム変換ツールで
は、プログラマが記述したソースプログラムを入力し、
呼び出し先のプログラム・モジュールを実行して得た情
報を呼び出し元のプログラム・モジュールが必要とする
場合には継続実行を行うプログラム・コードを生成し、
必要としない場合には分岐実行を行うプログラム・コー
ドを生成するプログラム・コード生成手段を設けること
により、上記目的を達成する。
【0014】
【作用】本発明の並行処理システムによれば、依頼元の
プログラムから依頼された処理を依頼先のプログラムが
実行して得ることのできる所定情報を依頼元のプログラ
ムが必要とする場合には、プロセス間で依頼先への処理
依頼の通信を行い、依頼先プログラムからの前記情報を
得るまで依頼元のプログラムの次の処理の実行を中断す
る同期通信処理を行う。また、依頼元のプログラムが前
記所定情報を不要とする場合には、依頼先への処理依頼
の通信を行った後、ただちに依頼元のプログラムの次の
処理を継続して実行する形式の通信処理を行う。
【0015】また、本発明の並行処理システムによれ
ば、呼び出し元のプログラム・モジュールが呼び出した
呼び出し先のプログラム・モジュールの処理の実行によ
り得た所定情報を呼び出し元のプログラム・モジュール
が必要とする場合には、呼び出し元のプログラム・モジ
ュールを実行したスレッドが呼び出し後、呼び出し先の
プログラム・モジュールを実行し、その終了後呼び出し
元のプログラム・モジュールの呼び出し後の処理をする
継続実行を行い、呼び出し元のプログラム・モジュール
が前記所定情報を不要とする場合には、呼び出し元のプ
ログラム・モジュールを実行したプロセスが2つに分岐
し、一方が依頼元のプログラム・モジュールの呼び出し
処理以後の処理を実行し、もう一方が依頼先のプログラ
ム・モジュールの処理を実行する分岐実行を行う。
【0016】これによれば、プログラマが通信方式や呼
び出し方式を指定することなく、依頼先プロセスが依頼
先プログラム中の依頼された処理を実行することによっ
て得られる情報を依頼元プロセスが依頼元プログラムを
実行するのに必要とするかどうかに応じ最適な通信方式
を実行したり、呼び出し先プログラム・モジュールの処
理によって得られる情報を呼び出し元のプログラムモジ
ュールの処理が必要とするかに応じて最適な呼び出し方
式を実行することができ、処理の中断を少なくして効率
を向上できる。
【0017】しかも、呼び出し先プログラム・モジュー
ルの処理によって得られる情報を呼び出し元のプログラ
ムモジュールが必要とする場合は、一つのプロセスとし
て実行できるので資源の使用効率をよくすることができ
る。また、プログラマの作成するソースプログラムは従
来通りのままで、汎用コンパイラーの利用も可能であ
る。
【0018】本発明によれば、逐次型処理を前提にして
記述されたプログラムを並行処理しようとする場合に、
プログラムの通信処理やプログラム・モジュールの呼び
出し処理のプログラムを修正することなく、並行処理で
きるので、プログラムの再利用性がよくなるという効果
がある。
【0019】本発明のプログラム変換ツールによれば、
プログラマが作成したソースプログラムを入力し、プロ
グラム間通信処理の部分の解析を行い、依頼元のプログ
ラムから依頼された処理を依頼先のプログラムが実行し
て得ることのできる所定情報を依頼元のプログラムが必
要とする場合には同期通信処理を行うプログラム・コー
ドを生成し、不要とする場合には非同期通信を行うプロ
グラム・コードを生成して、並行処理システム上で実行
可能なプログラムに変換する。
【0020】また、本発明のプログラム変換ツールによ
れば、プログラマが作成したソースプログラムを入力
し、プログラム・モジュール呼び出し処理の部分の解析
を行い、呼び出し元のプログラム・モジュールが呼び出
した呼び出し先のプログラム・モジュールの処理の実行
により得ることのできる所定情報を呼び出し元のプログ
ラム・モジュールが必要とする場合には継続実行を行う
プログラム・コードを生成し、不要とする場合には分岐
実行を行うプログラム・コードを生成し、並行処理シス
テム上で実行可能なプログラムに変換する。
【0021】従って、プログラマは従来と同じソースプ
ログラムを作成するのみで、並行システムに適用して、
プロセス間通信の同期通信/非同期通信の選択実行ある
いはプログラム・モジュール間呼出し処理の継続処理/
分岐処理の選択実行可能になる。これによれば、利用す
る通信方式や呼出し方式を決定したり、それに応じたソ
ースプログラムを記述するという必要が一切ないので、
プログラミングの効率がよい。
【0022】
【実施例】以下、本発明の実施例を図を用いて詳細に説
明する。
【0023】図1は本発明の一実施例による分散システ
ムの構成図である。本実施例の分散システムは、複数の
計算機、すなわち計算機1、計算機2がネットワーク9
に接続されている。各計算機はプロセッサ1p、2p、
メモリ1m、2m、ネットワークアダプタ1n、2n、
ディスク装置1d、2dを具備している。
【0024】ネットワークアダプタ1n、2nは、ネッ
トワーク9を介して他の計算機と情報をやりとりするた
めの装置である。各計算機1,2には、計算機番号と呼
ばれるユニークな識別子(Id)が与えられており、こ
の計算機番号を指定することにより、他の計算機とネッ
トワークを介した通信が可能になる。
【0025】メモリ1m、2mには、計算機1,2が実
行するオペレーティングシステム(OS)のプログラム
1o、2oとアプリケーションプログラム11、12、
21、22が記憶され、これをプロセッサ1p、2pが
読みだして処理を実行する。なお、プロセスは、メモリ
上のひとつのプログラム(正確には、プログラムを実行
するひとつのアドレス空間)にひとつだけ対応し、タス
クとも呼ばれる。
【0026】プログラム11、12、21、22は、プ
ログラマによって記述されたプログラムを、図示してい
ない汎用のコンパイラによって実行可能なプログラムに
変換し、それをメモリ1m上に記憶している。一般に、
ひとつのプログラムは複数のプログラム・モジュールに
分割できる。
【0027】OSはプログラムの実行やユーザとの基本
的なサービスを行うソフトウェアである。本発明の一実
施例のOSは複数のプロセスを適当に切り換えながら並
行に実行することのできるマルチプロセス機能を有して
いる。例えば、アジソン・ウェスリー社(Addison-Wesl
ey Publish Company)刊、ザ・デザイン・アンド・イン
プリメンテーション・オブ・ザ・4.3ビー・エス・デ
ィー・ユニックス・オペレーティング・システム(19
89年)(The Design and Implementation ofthe 4.3B
SD UNIX Operation System (1989))に記載されている
ように、現在広く用いられているユニックス(UNI
X)・オペレーティングシステム(UNIXはユニック
ス・システムズ・ラボラトリ(UNIX Systems Laborator
y)が開発し、販売しているオペレーティングシステム
で、米国その他での登録商標)はマルチプロセス機能を
持っており、これを利用することによりひとつの計算機
上で複数のプロセスを同時に実行できる。UNIXのプ
ロセスはそれぞれ、独立したアドレス空間を有してお
り、データの記憶領域はプロセス間で異なっている。
【0028】さらに、本実施例のOSは通常のプロセス
の他、スレッドと呼ばれる、資源をあまり消費しない軽
量プロセスを扱うことができる。そして、ひとつのプロ
セス内で複数のスレッドを実行できる、マルチスレッド
機能を有している。マルチスレッド機能は、例えば、共
立出版社刊、分散オペレーティングシステム;UNIX
の次に来るもの(1991年)、35頁〜41頁に記載
の手法により実現できる。
【0029】スレッドは、ひとつのプログラムの処理を
実行するプロセスを、並行に複数の流れで処理する場合
の、各処理の流れである。したがって、ひとつのプロセ
ス内の複数のスレッドは、データの記憶領域を共有して
いる。言い替えれば、データは一つのプロセス内の全て
のスレッドで共有される。このように、複数のスレッド
は、そのプロセスの資源を共有しながら、並行に処理で
きる。
【0030】図2に、スレッドを概念的に表した説明図
を示す。図2(a)は、プロセスとスレッドの関係を示
し、プログラム11を実行するプロセス11’中に、同
一のアドレス空間を共有する3つのスレッド111、1
12、113が並存していることを表わしている。ま
た、上方から下方に向かって時間が流れていくものとし
て描いてある。
【0031】プロセス11’では、まず、スレッド11
1が生成されて処理を開始し、途中でスレッド112を
生成する。これによりそれまで1つであったスレッド1
11は2つのスレッド111と112に分岐する。ここ
で、最初に存在していたスレッド111は親スレッド、
新たに生成されたスレッド112を子スレッドと呼ぶ。
さらに、スレッド112はスレッド113を生成して分
岐する。この場合は、スレッド112が親スレッド、ス
レッド113が子スレッドになる。スレッドは自己が生
成した(分岐した)スレッドの処理の終了を待ち合わせ
ることによって合流することができる。例えば、スレッ
ド112はスレッド113の終了を待って合流してい
る。
【0032】図2(b)は、ひとつのプログラムとスレ
ッドの関係を示し、プログラム11は複数のプログラム
・モジュール1101、1102、1103から構成さ
れている。プログラムモジュール1101−1を実行中
のスレッド111からは、プログラムモジュール110
2−1を実行するスレッド112が分岐し、さらにスレ
ッド112からプログラムモジュール1103−1を実
行するスレッド113が分岐している。
【0033】このように、ひとつのプログラム中の、異
なるスレッドは並行して同一のプログラムを実行できる
(正確には、プログラムを実行するひとつのアドレス空
間を共有できる)。また、メモリ上のひとつのプログラ
ム内の異なるプログラム・モジュールを並行に実行する
には、プロセスではなく、スレッドでなければならな
い。
【0034】本実施例の分散システムで、プログラム1
1,21は、システムコールと呼ばれる手続き呼び出し
によりOSに対して、プロセス間通信や、ディスク装置
中のファイルへのアクセス処理を依頼することができ
る。プロセス間通信は、送信元のプロセスと送信先のプ
ロセスが、同一計算機上に存在するか別の計算機上に存
在するかにかかわらず、同じように処理される。ユニッ
クス・オペレーティングシステムでは、ソケット(sock
et)と呼ばれるプロセス間通信機能を提供している。
【0035】プログラム11または21は、他のプログ
ラムとの通信を行う通信処理部110、120、21
0、220、メタオブジェクト11m1、11m2、1
2m1、12m2、21m1、21m2、22m1、2
2m2、オブジェクト11o1、11o2、12o1、
12o2、21o1、21o2、22o1、22o2等
を有している。
【0036】ここで、オブジェクトはプログラマが記述
したプログラム・モジュールの一種で、オブジェクト指
向プログラムのことである。本実施例ではオブジェクト
を採用しているが、ひとつのプログラム・モジュールが
ひとつの手続に対応する手続型プログラムであってもよ
い。なお、メタオブジェクトはオブジェクトの動作を監
視・制御する管理プログラムである。
【0037】通信処理部110、120、210、22
0は、ひとつのプログラム内にひとつずつ備えられる。
本実施例では、遠隔手続き呼び出しソフトウェアを用い
て通信処理部を実現する。遠隔手続き呼び出し機能(Re
mote Procedure Call、RPC)には、例えば、プレン
ティス・ホール社(Prentice Hall)刊、ネットワーク
・コンピューティング・システム・リファレンス・マニ
ュアル(Network Com-puting System Reference Manua
l)(1990年)に記載されているNCS(Ne-twork C
omputing System)と呼ぶソフトウェアがある(NCS
はヒューレットパッカード社が開発し、販売しているソ
フトウェア)。
【0038】また、遠隔手続き呼出し機能を持つ分散処
理環境ソフトウェアには、プレンティス・ホール社刊、
オー・エス・エフ・ディー・シー・イー・アプリケーシ
ョン・ディベロップメント・リファレンス(OSF D
CE Application Development Reference)(1993
年)に記載されているOSF(Opne Software Foundatio
n)/DCE(Distributed Computing Environment)と
呼ぶソフトウェアがある(OSF(Open Software Foun
dation)は登録商標)。また、OSF/DCEは前述の
マルチスレッド機能も提供している。
【0039】遠隔手続き呼び出しソフトウェアは、OS
のプロセス間通信処理機能を利用して、他のプロセスと
通信を行う。例えば、ユニックス・オペレーティングシ
ステムのソケット機能を用いる。ソケットではソケット
アドレスを指定することにより、ポートと呼ばれる通信
の口を指定して、プロセス間通信が可能である。本実施
例では、プロセスにそれぞれひとつのポートを与え、そ
のポートのソケットアドレスを指定して遠隔手続きを実
行することにより、他のプロセス上の手続きを呼び出す
ことができる。
【0040】図3に、オブジェクトのソフトウェア構造
を示す。オブジェクトは、データとそれに関する手続き
から成るプログラムモジュールである。手続きは、例え
ばC言語では、関数と呼ぶプログラムモジュールで記述
する。オブジェクト11o1は関数11o11、11o
12、11o13から成る。オブジェクトのデータは、
例えばC言語では、構造体と呼ばれる変数の集合であ
る。オブジェクト11o1に含まれる構造体11o5
は、変数11o16、11o17、11o18から成っ
ている。オブジェクトの実行は、スレッドがオブジェク
トの関数を実行することである。
【0041】オブジェクトは他のオブジェクトに対して
処理を依頼することができる。本実施例では、同一プロ
セス内の他のオブジェクトに対して処理を依頼するに
は、依頼先のオブジェクトと、実行すべき関数とを指定
して、呼び出す処理を行う。必要により、処理に使用す
るデータを引数として渡す。具体的には、ソースプログ
ラム中で、 戻り値を返す変数=call(実行する関数のアドレス,オ
ブジェクトの構造体へのポインタ,引数1,引数2,・
・・) という形式の処理を記述する。
【0042】依頼した処理の結果は戻り値を返す変数に
代入される。結果が必要ない時は、上記の「戻り値を返
す変数=」は不要で、 call(実行する関数のアドレス,オブジェクトの構造体
へのポインタ,引数1,引数2,・・・) のみを記述する。この処理を本実施例ではcall処理と呼
ぶことにする。
【0043】一方、異なるプロセス上のオブジェクトへ
の処理依頼は、プロセス間通信を行う必要がある。本実
施例では、依頼先のオブジェクトが存在するプロセスに
与えられたソケットアドレスと、呼び出すオブジェクト
のオブジェクト名、実行すべき関数名を指定して、プロ
セス間通信処理を行う。必要により、処理に使用するデ
ータを引数として渡す。具体的には、プログラム中で、 戻り値を返す変数=rpc(オブジェクトが存在するプロ
セスのソケットアドレス,実行する関数名,オブジェク
ト名,引数1,引数2,・・・) という形式の処理を記述する。依頼した処理の結果は戻
り値を返す変数に代入される。結果が必要ない時は、 rpc(オブジェクトが存在するプロセスのソケットアド
レス,実行する関数名,オブジェクト名,引数1,引数
2,・・・) と記述する。この処理を本実施例ではrpc処理と呼ぶこ
とにする。
【0044】オブジェクトのソースプログラムにおける
これらのcall処理及びrpc処理の記述は従来と同様で、
コンパイル時にそれぞれ、呼出しId、通信Idと呼ば
れる呼び出し元の識別子が与えられる。この識別子によ
り、call処理(呼出し処理)およびrpc処理(通信処
理)を一意に決定できる。そして、実行時には、call処
理およびrpc処理の呼出しの第1引数に、その処理の呼
出しIdまたは通信Idが付加される。すなわち、実行
時には、call処理の場合には、 call(呼出しId,実行する関数のアドレス,オブジェ
クトの構造体のポインタ,引数1,引数2,・・・) rpc処理の場合には、 rpc(通信Id,オブジェクトが存在するプロセスのソ
ケットアドレス,実行する関数名,オブジェクト名,引
数1,引数2,・・・) という形式の呼び出しがなされる。これは戻り値を返す
場合も同様である。
【0045】この呼び出しIdと通信Idを与える処理
と同時に、呼び出し情報及び通信情報の抽出も行うが、
この処理については後述する。
【0046】図4に、メタオブジェクトの構造を示す。
メタオブジェクトは、オブジェクトの管理プログラム
で、本実施例ではひとつのオブジェクトに対応してひと
つのメタオブジェクトが存在するものとする。
【0047】メタオブジェクト11m1は、通信処理部
の呼び出し処理部11m11、通信方式決定処理部11
m12、通信情報11m13、オブジェクト呼び出し処
理部11m14、呼び出し方式決定処理部11m15及
び呼び出し情報11m16から成る。
【0048】呼び出し情報11m16は、メタオブジェ
クト11m1と対応関係にあるオブジェクト、この場合
はオブジェクト11o1が、同一プロセス上の他のオブ
ジェクトの処理を呼び出す時、戻り値が必要であるかど
うか、必要な時はそのデータ型とそれを格納する変数の
アドレスを、呼び出し毎に記憶している。
【0049】図5に、呼び出し情報11m16のデータ
構造を示す。呼び出し情報11m16は、そのオブジェ
クト(この場合、オブジェクト1101)が呼び出す、
呼び出し数11m16nと、呼び出し毎の情報である個
別呼び出し情報11m161、11m162、11m1
63等を含む、呼び出し情報テーブル11m16tから
なる。個別呼び出し情報11m161には、その呼び出
しを識別するための呼び出しId11m1611、呼び
出す関数のアドレス11m1612、戻り値の要否11
m1613、戻り値が必要な場合の戻り値のデータ型1
1m1614、戻り値を格納する変数のアドレス11m
1615が記憶されている。他の個別呼び出し情報も同
様である。
【0050】戻り値の要否は、オブジェクトのソースプ
ログラムで、同一プロセス内の他のオブジェクトの呼び
出し方式が 戻り値を返す変数=call(実行する関数のアドレス,オ
ブジェクトの構造体へのポインタ,引数1,引数2,・
・・) の場合は戻り値が必要であり、 call(実行する関数のアドレス,オブジェクトの構造体
へのポインタ,引数1,引数2,・・・) の場合は不要となる。
【0051】呼び出し情報は、プログラマが記述するこ
ともできるし、自動的に与えることもできる。自動的に
与えるには、ソースプログラムのコンパイル時に、ca
ll処理に呼び出しIdを与える処理中で、該call
処理の記述から抽出すればよい。すなわち、呼び出し数
は、ソースプログラム中のcall処理の出現回数をカ
ウントすればよい。また、呼び出す関数のアドレスはc
all処理中に記述してあるものをそのまま用いればよ
い。戻り値の要否は、call処理の記述に、戻り値を
返す変数のある場合は要とし、ない場合は不要とする。
また、戻り値のデータ型は、戻り値を返す変数のデータ
型である。格納変数のアドレスは、C言語の場合は変数
名に”&”を付ければよい。たとえば、変数名が”r
c”であれば、そのアドレスは”&rc”である。
【0052】呼び出し方式決定処理部11m15は、メ
タオブジェクト11m1に対応するオブジェクト11o
1が、同一プロセス内の他のオブジェクトに対して処理
を依頼する場合に呼び出される。具体的には、オブジェ
クト1101が前記call処理を実行した時に呼び出され
る。ここで呼び出されるとは、オブジェクト1101を
実行していたスレッドがメタオブジェクト11m1の呼
び出し方式決定処理部11m15を実行することであ
る。
【0053】図6に、呼び出し方式決定処理部11m1
5の処理フローを示す。呼び出し方式決定処理1120
は、まず呼び出し元のオブジェクトが呼び出し先のオブ
ジェクトに依頼した処理の戻り値を必要とするかどうか
を、呼び出し情報11m16を読み出して決定する(処
理1121)。
【0054】前述のように、実行時の呼び出し、すなわ
ちcall処理の第1引数には、その処理の呼び出しIdが
付加されているので、図5の呼び出し情報11m16の
呼び出し情報テーブル11m16tをサーチし、その呼
び出しIdを含む個別呼び出し情報を見つける。そし
て、その個別呼び出し情報中の戻り値の要否の情報を読
出す。例えば、個別呼び出し情報11m161中の呼び
出しId11m1611が、call処理の第1引数の呼び
出しIdと同一であれば、戻り値要否情報11m161
3を読出すことにより、戻り値の要否か判定できる。
【0055】その判定により(処理1122)、戻り値
が必要であれば継続実行としてオブジェクトを呼び出す
ことを指定してオブジェクト呼び出し処理部11m14
を起動してその処理に移り(処理1123)、不要であ
れば分岐実行としてオブジェクトを呼び出すことを指定
してオブジェクト呼び出し処理部11m14の処理に移
る(処理1124)。オブジェクト呼び出し処理部の処
理に移るとは、呼び出し方式決定処理部を実行していた
スレッドがオブジェクト呼び出し処理部を実行すること
である。
【0056】図7に、オブジェクト呼び出し処理部11
m14の処理フローを示す。オブジェクト呼び出し処理
1130は、まず、呼び出し方式が継続実行を指定され
ているか、分岐実行を指定されているか判定する(処理
1131)。継続実行が指定されていれば、オブジェク
トのcall処理で指定された呼び出し先のオブジェクトの
関数を呼び出す(処理1132)。分岐実行が指定され
ていれば、新たなスレッドを生成するスレッド分岐処理
を実行する(処理1133)。
【0057】そして、各スレッドは自分が親スレッドか
子スレッドかの判定を行い(処理1134)、親スレッ
ドであればオブジェクト呼び出し処理を終了し、子スレ
ッドであれば、オブジェクトのcall処理で指定された呼
び出し先のオブジェクトの関数を呼び出す(処理113
5)。このようにして同一プロセス上の他のオブジェク
トの処理の呼び出しが実行される。
【0058】一方、他のプロセス上のオブジェクトの処
理を呼び出すときは、呼出し元のオブジェクト、この場
合はオブジェクト11o1が、戻り値が必要であるかど
うか、また必要な時はそのデータ型とそれを格納する変
数のアドレスを、メタオブジェクト11m1の通信情報
11m13に呼び出し毎に記憶している。
【0059】図8に、通信情報11m13のデータ構造
を示す。通信情報11m13は、オブジェクト1101
が呼び出す呼び出し数11m13nと、呼び出し毎の情
報である個別通信情報11m131、11m1312、
11m133等を含む、通信情報テーブル11m13t
からなる。
【0060】個別通信情報11m131には、その通信
を識別するため通信Id11m131、呼び出し先のソ
ケットアドレス11m1312、呼び出す関数名11m
1313、戻り値の要否11m1314、戻り値が必要
な場合の戻り値のデータ型11m1315、戻り値を格
納する変数のアドレス11m1316が記憶されてい
る。他の個別呼び出し情報も同様である。
【0061】戻り値の要否は、オブジェクトのソースプ
ログラムで、他のプロセス上のオブジェクトの呼び出し
方式が 戻り値を返す変数=rpc(オブジェクトが存在するプロ
セスのソケットアドレス,実行する関数名,オブジェク
ト名,引数1,引数2,・・・) の場合は戻り値が必要であり、 rpc(オブジェクトが存在するプロセスのソケットアド
レス,実行する関数名,オブジェクト名,引数1,引数
2,・・・) の場合は不要となる。
【0062】通信情報は、プログラマが記述することも
できるし、自動的に与えることもできる。自動的に与え
るには、ソースプログラムのコンパイル時に、rpc処
理に通信Idを与える処理中で、該rpc処理の記述か
ら抽出すればよい。すなわち、通信数は、ソースプログ
ラム中のrpc処理の出現回数をカウントすればよい。
また、ソケットアドレスや実行する関数名は、rpc処
理中に記述してあるものをそのまま用いればよい。戻り
値の要否は、rpc処理の記述に、戻り値を返す変数の
ある場合には要とし、ない場合には不要とする。戻り値
のデータ型は戻り値を返す変数のデータ型である。格納
変数のアドレスは、C言語の場合、変数名に”&”を付
ければよい。
【0063】通信方式決定処理部11m12は、オブジ
ェクト11o1が他のプロセス上のオブジェクトに対し
て処理を依頼する場合に呼び出される。具体的には、オ
ブジェクトが前記rpc処理を実行した時に呼び出され
る。ここで呼び出されるとは、オブジェクト1101を
実行していたスレッドがメタオブジェクト11m1の通
信方式決定処理部11m12を実行することである。
【0064】図9に、通信方式決定処理部11m12の
処理フローを示す。通信方式決定処理1140は、まず
呼び出し元のオブジェクト1101が呼び出し先の他の
プロセス上のオブジェクトに依頼した処理の戻り値を必
要とするかどうかを、通信情報11m13を読み出して
決定する(処理1141)。
【0065】前述のように、実行時の呼び出し、すなわ
ちrpc処理の第1引数には、その処理の通信Idが付加
されているので、図8の呼び出し情報11m13の通信
情報テーブル11m13tをサーチし、その通信Idを
含む個別通信情報を見つける。そして、その個別情報中
の戻り値の要否の情報を読出す。例えば、個別通信情報
11m131中の通信Id11m1311が、rpc処理
の第1引数の通信Idと同一であれば、戻り値要否情報
11m1314を読出すことにより、戻り値が必要かど
うか判定できる。
【0066】その判定により(処理1142)、戻り値
が必要であれば同期通信を指定して通信処理部呼び出し
処理部11m11の処理に移り(処理1143)、不要
であれば非同期通信を指定して通信処理部呼び出し処理
部11m11の処理に移る(処理1144)。通信処理
部呼び出し処理部の処理に移るとは、通信方式決定処理
部を実行していたスレッドが通信処理部呼び出し処理部
を実行することである。
【0067】通信処理部呼び出し処理部11m11は、
図1に示した通信処理部110に、同期通信か非同期通
信かを指定して、他のプロセス上のオブジェクトの処理
を実行するための通信を行うよう要求する。
【0068】通信処理部110はオブジェクトのrpc処
理で指定された、オブジェクトが存在するプロセスのソ
ケットアドレス、実行する関数名、オブジェクト名、引
数に関する情報を用いて、通信先のプロセスに対して、
呼び出し先のオブジェクトの処理の実行を依頼する通信
処理を実行する。本実施例では、この処理は、前述の遠
隔手続き呼び出しソフトウェアを用いて実現する。
【0069】通信処理部として、NCSやOSF/DC
Eを使用する場合、特に指定のないRPCは同期通信に
より処理される。ただし、RPCに”maybe”という属
性を指定して非同期通信を実行することができ、これに
より、同期通信と非同期通信の両者が可能になる。
【0070】図10に、通信処理部が実行する、(a)
同期通信、(b)非同期通信の動作ダイアグラムを示
す。まず、同期通信処理の場合について説明する。同図
で、スレッド1101は、処理依頼元のプログラムを実
行するプロセス中で通信処理を実行するスレッド、スレ
ッド1102は、処理依頼先のプログラムを実行するプ
ロセス中で、他のプロセスからの処理依頼待ちをしてい
るスレッドとする。スレッド1101は、処理依頼の通
信を処理依頼先のプロセスに対して実行すると、該処理
依頼先のプロセスからの返答を受け取るまで処理を中断
する。
【0071】一方、処理依頼元のプロセスからの処理依
頼の通信を受けた処理依頼先のプロセスのスレッド11
02は、依頼された処理(関数)を実行する。そして、
該処理の終了後、依頼元のプロセスに対して返答のため
の通信を実行する。スレッド1102が実行した処理の
実行結果、すなわち関数の戻り値は、この返答のための
通信によって依頼元のプロセスに送られる。その後、ス
レッド1102は再び他のプロセスからの処理依頼待ち
の状態に移る。一方、処理依頼先からの返答を受けた処
理依頼元のプロセス中のスレッド1101は、処理を再
開する。
【0072】次に、非同期通信処理の場合について説明
する。ここでは、スレッド1106が処理依頼元のプロ
グラムを実行するプロセス中で通信処理を実行するスレ
ッド、スレッド1107が処理依頼先のプログラムを実
行するプロセス中で、他のプロセスからの処理依頼待ち
をしているスレッドとする。スレッド1106は、処理
依頼の通信を処理依頼先のプロセスに対して実行した
後、そのまま処理を継続する。
【0073】一方、処理依頼元のプロセスからの処理依
頼の通信を受けた処理依頼先のプロセスのスレッド11
07は、依頼された処理(関数)を実行し、該処理の終
了後、再び他のプロセスからの処理依頼待ちの状態に移
る。このようにして他のプロセス上のオブジェクトの処
理の呼び出しのための通信が実行される。
【0074】以上、本発明の第一の実施例について詳細
に説明した。本実施例によれば、同一プロセス中の複数
のオブジェクト間の処理の呼び出しと、異なるプロセス
上の複数のオブジェクト間の処理の呼び出しを自由に行
うことができ、さまざまな計算機構成に対応できる汎用
の並行処理を実現できるという効果がある。しかも、そ
れらの呼出し処理を最適化して処理効率を向上する効果
がある。
【0075】本実施例によれば、逐次型処理を前提にし
て記述されたプログラムを並行処理しようとする場合
に、プログラムの通信処理やプログラム・モジュールの
呼び出し処理のプログラムを修正することなく、並行処
理できるので、プログラムの再利用性がよくなるという
効果がある。
【0076】また、本実施例によれば、通常のソースプ
ログラムの記述によって、上記の呼出し処理や通信処理
が可能になるので、プログラマに負担がかからない。
【0077】また、本実施例によれば、通信処理部呼び
出し処理や通信方式決定処理、呼び出し方式決定処理や
オブジェクト呼び出し処理を、ひとつのオブジェクトに
対しひとつずつ設けたメタオブジェクトにより実行する
ため、それぞれのオブジェクトに応じた処理が可能であ
るとともに、オブジェクトの生成や削除に柔軟に対応で
きるという効果がある。
【0078】さらに、本実施例によれば、呼び出し先の
オブジェクトが実行して得た情報を呼び出し元のオブジ
ェクトが必要とするかどうかの判定を、呼び出し元のオ
ブジェクトが呼び出しの戻り値を使用するかどうかによ
り決定するので、判定処理を効率よく実行できるという
効果がある。
【0079】さらにまた、呼び出し情報や通信情報を、
コンパイル時にメタオブジェクトがオブジェクトのプロ
グラム・コードを解析して得る方式では、メタオブジェ
クトがオブジェクト固有の情報を予め持つことがないの
で、汎用的なライブラリのみで提供できるという効果が
ある。
【0080】上記第一の実施例は、以下のように種々の
変形や代案が可能である。
【0081】呼び出し先のオブジェクトが実行して得た
情報を呼び出し元のオブジェクトに返す方法として戻り
値を用いたが、情報のデータを返す変数を呼び出し元の
オブジェクトに設け、そのアドレス(ポインタ)を呼び
出しの引数として呼び出し先のオブジェクトに与え、呼
び出し先のオブジェクトがそのアドレスの変数に呼び出
し元が必要とするデータを与えることにより、呼び出し
先のオブジェクトからの情報を呼び出し元のオブジェク
トに返すこともできる。これにより、複数の情報を返す
ことができるという効果がある。
【0082】また、呼び出し先のオブジェクトが実行し
て得た情報を呼び出し元のオブジェクトに返す方法とし
て戻り値を用いたが、呼び出し元のオブジェクトと呼び
出し先のオブジェクトがともに参照できる変数を設け、
呼び出し先のオブジェクトが変数に呼び出し元が必要と
するデータを与えることにより、呼び出し先のオブジェ
クトからの情報を呼び出し元のオブジェクトに返すこと
もできる。これにより、処理を効率化できるという効果
がある。
【0083】また、ひとつのオブジェクトに対しひとつ
のメタオブジェクトを与えたが、プロセス内でひとつの
メタオブジェクトを設け、プロセス内の全オブジェクト
が共有してもよい。これにより、使用するメモリを節約
できるという効果がある。
【0084】さらに、通信処理部呼び出し処理や通信方
式決定処理、呼び出し方式決定処理やオブジェクト呼び
出し処理をメタオブジェクトにより実行したが、通常の
ライブラリで実行してもよい。これにより、一般のシス
テムに広く適用できるという効果がある。
【0085】次に、本発明の第二の実施例を説明する。
上記第一の実施例では、他のプロセス上のオブジェクト
の処理依頼のための通信が、同期処理か非同期処理かの
判定を、実行時にメタオブジェクトが判定して、それに
応じた通信処理を行った。しかし、処理依頼先のプロセ
スが実行したオブジェクトの処理(関数)の戻り値を、
処理依頼元のプロセスのオブジェクトが必要とする場合
には同期通信処理を行うプログラム・コードを生成し、
不要とする場合には非同期通信を行うプログラム・コー
ドを生成する、プログラム・コード生成装置を用いる方
式もある。すなわち、プログラマが記述したオブジェク
トソースプログラムをこのプログラム・コード生成装置
に入力し、戻り値を必要とするかどうかに応じて、同期
通信あるいは非同期通信を行う処理を埋め込んだオブジ
ェクトの実行プログラムを生成し、それを実行する方式
である。
【0086】本実施例を図11を用いて説明する。プロ
グラムコード生成装置60は、オブジェクトのソースプ
ログラムのファイル50を読み込み、オブジェクトの実
行プログラムのファイル70を出力する。プログラムコ
ード生成装置60は、入力したオブジェクトのソースプ
ログラムの字句解析を行う字句解析処理部601、字句
解析結果を用いて構文解析を行う構文解析処理部60
2、構文解析結果をもとに、他のプロセス上のオブジェ
クトへの処理依頼を、同期通信処理または非同期通信処
理で行うプログラムコードに変換する変換処理部60
3、変換処理部によって出力された変換後のプログラム
をコンパイルしてオブジェクトの実行プログラムを出力
するコンパイル処理部604からなる。
【0087】変換処理部603は、ソースプログラム中
の他のプロセス上のオブジェクトへの処理以来、すなわ
ちrpc処理において、戻り値が必要な場合には同期通信
処理を行うプログラムコードを、戻り値が不要な場合は
非同期通信を行うプログラムコードを出力する。例え
ば、ソースプログラム中のオブジェクトの呼び出し方式
が、 戻り値を返す変数=rpc(オブジェクトが存在するプロ
セスのソケットアドレス,実行する関数名,オブジェク
ト名,引数1,引数2,・・・) の場合には、 set_sync_call( ); 戻り値を返す変数=rpc(オブジェクトが存在するプロ
セスのソケットアドレス,実行する関数名,オブジェク
ト名,引数1,引数2,・・・) というプログラムコードを出力する。
【0088】また、 rpc(オブジェクトが存在するプロセスのソケットアド
レス,実行する関数名,オブジェクト名,引数1,引数
2,・・・) の場合には、 set_async_call( ); rpc(オブジェクトが存在するプロセスのソケットアド
レス,実行する関数名,オブジェクト名,引数1,引数
2,・・・) というプログラムコードを出力する。
【0089】ここで、set_sync_call( )は遠隔手続呼び
出しソフトウェアに同期通信を要求する関数、set_asyn
c_call( )は遠隔手続呼び出しソフトウェアに非同期通
信を要求する関数である。
【0090】このように、プログラムコード生成装置に
より、オブジェクトのソースプログラムを書き替えた
後、コンパイルすることにより、戻り値を必要とする場
合には同期通信を、戻り値を不要とする場合は非同期通
信を実行することができる。
【0091】これにより、プログラマは、通常のソース
プログラムによって上記した通信処理や呼出し処理を記
述できるので、プログラミング効率が高い。また、第1
の実施例のように、実行時にメタオブジェクトが同期通
信を行うか非同期通を行うかの判定処理が不要になり、
処理効率が向上すると共にメタオブジェクトに代えて通
常のライブラリが適用できる効果がある。
【0092】次に、本発明の第三の実施例を説明する。
上記第一の実施例では、同一プロセス上のオブジェクト
の処理の呼び出しが継続実行か分岐実行かの判定を、実
行時にメタオブジェクトが判定して、それに応じた呼び
出し処理を行った。
【0093】第三の実施例では、呼び出し先のオブジェ
クトの処理(関数)の戻り値を、呼び出し元のオブジェ
クトが必要とする場合には継続実行を行うプログラム・
コードを生成し、不要とする場合には分岐実行を行うプ
ログラム・コードを生成する、プログラム・コード生成
装置を用いる。すなわち、プログラマが記述したオブジ
ェクトソースプログラムをこのプログラム・コード生成
装置に入力し、戻り値を必要とするかどうかに応じて、
継続実行あるいは分岐実行を行う処理を埋め込んだオブ
ジェクトの実行プログラムを生成し、それを実行する方
式である。
【0094】本実施例も、上記第二の実施例と同様に、
プログラムコード生成装置60中の変換処理部603
が、ソースプログラム中の同一プロセス上のオブジェク
トへの処理依頼、すなわちcall処理において、戻り値が
必要な場合には継続実行を行うプログラムコードを、戻
り値が不要な場合には分岐処理を行うプログラムコード
を出力する。例えば、ソースプログラム中のオブジェク
トの呼び出し方式が、 戻り値を返す変数=call(実行する関数のアドレス,オ
ブジェクトの構造体へのポインタ,引数1,引数2,・
・・) の場合には変換を行わず、そのままのプログラムコード
を出力し、 call(実行する関数のアドレス,オブジェクトの構造体
へのポインタ,引数1,引数2,・・・) の場合には、オブジェクトの呼び出し部分に、 obj=オブジェクトの構造体へのポインタ; pthread_create(thr,pthred_attr_default,async_call_
関数名,obj); pthread_detach(thr); というプログラムコードを置き、他に、 という関数を出力する。これはOSF/DCEのスレッ
ド機能を用いる場合の例で、スレッドを生成する関数pt
hread_create( )と、スレッド終了時にスレッドを消去
する関数pthread_detach( )を使用している。pthread_c
reate( )が呼び出されると、スレッドが生成され、asyn
c_call_関数名という名前の関数、すなわちcall処理を
行う関数が、生成されたスレッドで実行される。
【0095】このように、プログラムコード生成装置に
より、戻り値が存在しない場合には新たなスレッドを生
成するプログラムとすることにより、分岐処理を実行す
ることができる。
【0096】これにより、プログラマの負担が低減でき
る。また、メタオブジェクトが実行時に継続実行を行う
か分岐実行を行うかの判定処理が不要になり、処理効率
が向上すると共に通常のライブラリが適用できる効果が
ある。
【0097】上記の各実施例では、プログラムモジュー
ルはオブジェクトであったが、オブジェクト指向に基づ
かないプログラム・モジュールでもよい。これにより、
オブジェクト指向によらない一般のシステムに広く適用
できるという効果がある。
【0098】
【発明の効果】本発明によれば、依頼先プロセスが依頼
先プログラム中の依頼された処理を実行することによっ
て得られる情報を依頼元プロセスが依頼元プログラムを
実行するのに必要とするかどうかに応じて最適な通信方
式を選択して実行するため、効率よい並行処理を実現で
きるという効果がある。
【0099】また、本発明によれば、呼び出し先プログ
ラム・モジュールの処理によって得られる情報を呼び出
し元のプログラムモジュールの処理が必要とするかどう
かに応じて最適な呼び出し方式を選択して実行するた
め、効率よい並行処理を実現できるという効果がある。
【0100】本発明によれば、プログラマは、同期通信
や非同期通信を意識して通信処理のプログラムを記述す
ることなく、自動的に最適な通信方式を選択して実行で
きるため、効率よいプログラミングが可能になるという
効果がある。
【0101】また、本発明によれば、プログラマは、継
続実行や分岐実行を意識してプログラム・モジュールの
呼び出し処理のプログラムを記述することなく、自動的
に最適な呼び出し方式を選択して実行できるため、効率
よいプログラミングが可能になるという効果がある。
【0102】本発明によれば、逐次型処理を前提にして
記述されたプログラムを並行処理しようとする場合に、
プログラムの通信処理やプログラム・モジュールの呼び
出し処理のプログラムを修正することなく、並行処理で
きるので、プログラムの再利用性がよくなるという効果
がある。
【図面の簡単な説明】
【図1】本発明の一実施例による並行処理システムの構
成図。
【図2】実施例のスレッドの動作を説明するための概念
図。
【図3】実施例のオブジェクトの構造図。
【図4】実施例のメタオブジェクトの構造図。
【図5】実施例の呼出し情報のデータ構造図。
【図6】実施例の呼び出し方式決定処理の動作を表わす
処理フロー図。
【図7】実施例のオブジェクト呼び出し処理の動作を表
わす処理フロー図。
【図8】実施例の通信情報のデータ構造図。
【図9】実施例の通信方式決定処理の動作を表わす処理
フロー図。
【図10】実施例の同期通信と非同期通信の動作を表わ
すダイアグラム。
【図11】本発明の他の実施例によるプログラムコード
生成装置の構成と動作を示す説明図。
【符号の説明】
1,2…計算機、1p,2p…プロセッサ、1n,2n
…ネットワークアダプタ、1d,2d…ディスク装置、
1m,2m…メモリ、1o,2o…OS、11,12,
21,22…プロセス、110,120,210,22
0…通信処理部、11m1,11m2,12m1,12
m2,21m1,21m2,22m1,22m2…メタ
オブジェクト、11o1,11o2,12o1,12o
2,21o1,21o2,22o1,22o2…オブジ
ェクト、11m11…通信処理部呼び出し処理部、11
m12…通信方式決定処理部、11m13…通信情報、
11m14…オブジェクト呼び出し処理部、11m15
…呼び出し方式決定処理部、11m16…呼び出し情
報。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 G06F 15/163 (72)発明者 齊藤 雅彦 茨城県日立市大みか町七丁目1番1号 株 式会社日立製作所日立研究所内 (72)発明者 大脇 隆志 茨城県日立市大みか町五丁目2番1号 株 式会社日立製作所大みか工場内

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 複数のプログラムをそれぞれ異なるプロ
    セスとして並行に実行でき、それらのプロセス間で処理
    依頼の通信をおこなって処理を進める並行処理方法にお
    いて、 第1のプログラムを実行する第1のプロセスから処理依
    頼された第2のプログラムを実行する第2のプロセスよ
    り得られる所定の情報を前記第1のプログラムが必要と
    する場合には、前記第1のプロセスは前記第2のプロセ
    スから前記所定の情報を得るまで前記第1のプログラム
    の次の処理の実行を中断する同期通信を行い、前記所定
    の情報を前記第1のプログラムが不要とする場合には、
    前記第1のプロセスは前記第2のプロセスへの処理依頼
    の通信の実行後ただちに前記第1のプログラムの次の処
    理を実行する非同期通信を行うことを特徴とする並行処
    理方法。
  2. 【請求項2】 ひとつのプログラムを構成する複数のプ
    ログラム・モジュール間で呼出し処理を行って、複数の
    スレッドを並行して実行する並行処理方法において、 第1のプログラム・モジュールから呼び出された第2の
    プログラム・モジュールの実行によって得られる所定情
    報を、前記第1のプログラム・モジュールが必要とする
    場合には、前記第1のプログラム・モジュールを実行す
    るスレッドが前記第2のプログラム・モジュールを実行
    し、その実行後に前記第1のプログラム・モジュールの
    次の処理を継続実行し、前記所定情報を前記第1のプロ
    グラム・モジュールが必要としない場合には、前記第1
    のプログラム・モジュールを実行するスレッドとは異な
    るスレッドにより、前記第2のプログラム・モジュール
    を分岐実行することを特徴とする並行処理方法。
  3. 【請求項3】 プログラムを記憶するメモリと、該メモ
    リ上に記憶されたプログラムを実行するプロセッサを有
    し、該プロセッサは、前記メモリ上に記憶された複数の
    プログラムを、それぞれ異なるプロセスとして並行に実
    行でき、それらのプロセス間で処理依頼のための通信を
    行って処理を進める並行処理システムにおいて、 依頼元のプログラムを実行する第1のプロセスは、依頼
    先のプログラムを実行する第2のプロセスへの処理依頼
    の通信の実行後、ただちに次の処理を実行する非同期通
    信と、前記第2のプロセスが前記依頼先のプログラムの
    実行により得られる所定情報の返答を得るまで次の処理
    を中断する同期通信とのうち、指定された通信方式によ
    り通信を実行する通信手段と、 前記依頼元のプログラムが前記所定情報を必要とするか
    否かを示す要否情報を記憶する要否情報記憶手段と、 前記要否情報記憶手段を読み出して、前記依頼元のプロ
    グラムが前記所定情報を必要とする場合には同期通信を
    行うことを決定し、前記依頼元のプログラムが前記所定
    情報を必要としない場合には非同期通信を行うことを決
    定する通信方式決定手段を備え、 前記第1のプロセスは前記第2のプロセスに通信を行う
    場合に、前記第1のプロセスは前記通信方式決定手段を
    起動して前記同期通信を行うか前記非同期通信を行うか
    決定し、該決定した通信方式を指定して前記通信手段を
    起動することを特徴とする並行処理システム。
  4. 【請求項4】 請求項3において、 前記通信手段は前記プログラムと対応し、前記要否情報
    記憶手段及び前記通信方式決定手段は前記プログラムを
    構成するプログラム・モジュールと対応して設けられる
    ことを特徴とする並行処理システム。
  5. 【請求項5】 プログラムを記憶するメモリと、該メモ
    リ状に記憶されたプログラムを実行するプロセッサを有
    し、該プロセッサは、前記メモリ上に記憶されたひとつ
    のプログラムを、複数のスレッドで並行に実行できるも
    のであって、前記ひとつのプログラムは複数のプログラ
    ム・モジュールから構成され、前記スレッドはそれらの
    プログラム・モジュール内の処理およびプログラム・モ
    ジュール間の呼出し処理を行って処理を進める並行処理
    システムにおいて、 呼出し元のプログラム・モジュールを実行するスレッド
    が呼出し先のプログラム・モジュールを実行し、その実
    行後に前記呼出し元のプログラム・モジュールの次の処
    理を実行する継続実行と、前記呼出し元のプログラム・
    モジュールを実行するスレッドとは異なるスレッドによ
    り、前記呼出し先プログラム・モジュールを実行する分
    岐実行とのうち、指定された呼出し方式によって呼出し
    処理を実行するプログラム・モジュール呼出し手段と、 前記呼出し元のプログラム・モジュールが前記呼出し先
    のプログラム・モジュールの実行により得られる所定情
    報を必要とするか否かを示す要否情報を記憶する要否情
    報記憶手段と、 前記要否情報記憶手段に記憶されている前記要否情報を
    読みだして、前記呼出し元のプログラム・モジュールが
    前記所定情報を必要とする場合には前記継続実行を行う
    ことを決定し、前記呼出し元のプログラム・モジュール
    が前記所定情報を必要としない場合には前記分岐実行を
    行うことを決定する呼出し方式決定手段を備え、 前記呼出し元のプログラム・モジュールを実行するスレ
    ッドが前記呼出し先のプログラム・モジュールを呼び出
    す場合に、前記呼出し元のプログラム・モジュールを実
    行するスレッドは前記呼出し方式決定手段を起動して前
    記継続実行を行うか前記分岐実行を行うかを決定した
    後、該決定した呼出し方式を指定して前記プログラム・
    モジュール呼出し手段を起動することを特徴とする並行
    システム。
  6. 【請求項6】 請求項5において、 前記プログラム・モジュール呼出し手段、前記要否情報
    記憶手段及び前記呼出し方式決定手段は、前記プログラ
    ム・モジュールと1対1に対応して設けられることを特
    徴とする並行処理システム。
  7. 【請求項7】 プログラムを記憶するメモリと、該メモ
    リ上に記憶されたプログラムを実行するプロセッサを有
    し、該プロセッサは、前記メモリ上に記憶された複数の
    プログラムを異なるプロセスとして並行に実行でき、か
    つ、複数のプログラム・モジュールから構成される前記
    ひとつのプログラムを複数のスレッドで並行に実行でき
    るものであって、前記プロセス間で処理依頼のための通
    信を行いあるいは前記プログラム・モジュール間の呼出
    しを行って処理を進める並行処理システムにおいて、 通信先のプログラムの実行または呼出し先のプログラム
    ・モジュールの実行により得られる所定情報を、通信元
    のプログラムまたは呼出し元のプログラムが必要とする
    か否かを示す要否情報を記憶する要否情報記憶手段と、 前記要否情報記憶手段に記憶されている前記要否情報を
    読みだして、前記依頼元のプログラムが前記所定情報を
    必要とする場合は、前記通信元のプログラムを実行する
    第1のプロセスは前記通信先のプログラムを実行する第
    2のプロセスから前記所定情報を得るまで前記第1のプ
    ログラムの次の処理の実行を中断する同期通信と、前記
    所定の情報を前記第1のプログラムが不要とする場合
    は、前記第1のプロセスは前記第2のプロセスへの処理
    依頼の通信の実行後ただちに前記第1のプログラムの次
    の処理を実行する非同期通信とを選択的に実行する通信
    処理手段と、 前記要否情報記憶手段に記憶されている前記要否情報を
    読みだして、前記呼出し元のプログラム・モジュールが
    前記所定情報を必要とする場合は、前記呼出し元プログ
    ラム・モジュールを実行するスレッドが前記呼出し先プ
    ログラム・モジュールを実行し、その実行後に前記呼出
    し元プログラム・モジュールの次の処理を継続実行と、
    前記呼出し元のプログラム・モジュールが前記所定情報
    を必要としない場合は、前記第1のプログラム・モジュ
    ールを実行するスレッドとは異なるスレッドによって前
    記第2のプログラム・モジュールを実行する分岐実行と
    を選択的に実行するプログラム・モジュール読出し手段
    と、を設けることを特徴とする並行処理システム。
  8. 【請求項8】 請求項5、6または7において、 前記プログラム・モジュールがオブジェクトで構成さ
    れ、前記要否情報記憶手段及び前記プログラム・モジュ
    ール読出し手段が前記オブジェクトに対応するメタオブ
    ジェクトで構成されることを特徴とする並行処理システ
    ム。
  9. 【請求項9】 請求項3、4、7または8において、 複数の前記プロセッサがネットワークを経由して接続さ
    れ、前記プロセス間の処理依頼のための通信はひとつの
    プロセッサ内および/または複数のプロセッサ間で実行
    されることを特徴とする並行処理システム。
  10. 【請求項10】 複数のプログラムをそれぞれ異なるプ
    ロセスとして並行に実行でき、それらのプロセス間で処
    理依頼のための通信を行って処理を進める並行処理シス
    テム上で動作するプログラムのソースプログラムを入力
    し、実行可能なプログラムを生成するプログラム変換ツ
    ールにおいて、 前記ソースプログラム中に記述された他のプログラムへ
    の処理依頼通信のプログラム・コードに、前記他のプロ
    グラムが実行して得られる所定情報を必要とすることを
    示す所定記述の有無を判定するプログラ・コード解析手
    段と、 前記プログラ・コード解析手段によって、前記所定記述
    が有る場合には、前記処理依頼通信の実行後、前記他の
    プログラムから前記所定情報を受け取るまで次の処理の
    実行を中断するプログラム・コードを含む実行可能プロ
    グラムを生成し、前記所定記述が無い場合には、前記処
    理依頼通信の実行後、ただちに次の処理を実行するプロ
    グラム・コードを含む実行可能プログラムを生成する実
    行プログラム生成手段を備えることを特徴とするプログ
    ラム変換ツール。
  11. 【請求項11】 複数のプログラムから構成されるひと
    つのプログラムを、複数のスレッドで並行に実行する並
    行処理システム上で動作するプログラムのソースプログ
    ラムを入力し、実行可能プログラムを生成するプログラ
    ム変換ツールにおいて、 前記ソースプログラム中の第1のプログラム・モジュー
    ル記述された第2のプログラム・モジュールの呼出し処
    理のプログラム・コードに、前記第2のプログラム・モ
    ジュールが実行して得られる所定情報を必要とすること
    を示す所定記述の有無を判定するプログラム・コード解
    析手段と、 前記プログラム・コード解析手段によって、前記所定記
    述が有る場合には、前記第1のプログラム・モジュール
    を実行するスレッドが、前記第2のプログラム・モジュ
    ールを実行しその終了後、前記第1のプログラム・モジ
    ュールの呼出し後の処理を実行するプログラム・コード
    を含む実行可能プログラムを生成し、前記所定記述が無
    い場合には、前記第2のプログラム・モジュールの実行
    と前記第1のプログラム・モジュールの呼出し後の処理
    の実行を、それぞれ異なるスレッドにより実行するプロ
    グラム・コードを含む実行可能プログラムを生成する実
    行プログラム生成手段を備えることを特徴とするプログ
    ラム変換ツール。
JP6262555A 1994-10-26 1994-10-26 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール Pending JPH08123699A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6262555A JPH08123699A (ja) 1994-10-26 1994-10-26 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6262555A JPH08123699A (ja) 1994-10-26 1994-10-26 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール

Publications (1)

Publication Number Publication Date
JPH08123699A true JPH08123699A (ja) 1996-05-17

Family

ID=17377440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6262555A Pending JPH08123699A (ja) 1994-10-26 1994-10-26 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール

Country Status (1)

Country Link
JP (1) JPH08123699A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998019236A1 (fr) * 1996-10-31 1998-05-07 Sony Corporation Systeme et procede de traitement d'informations
JP2006260588A (ja) * 1998-08-17 2006-09-28 Microsoft Corp 分散コンポーネントアプリケーションでの待機メソッド呼び出し方法
US7318083B2 (en) 2001-08-27 2008-01-08 Ricoh Company, Ltd. Information processing system
JP2009009477A (ja) * 2007-06-29 2009-01-15 Toshiba Corp 演算方式を制御して情報を処理する装置、方法およびプログラム
JP2012018582A (ja) * 2010-07-08 2012-01-26 Fujitsu Ltd プロセス間通信プログラム及びプロセス間通信方法
JP2013521552A (ja) * 2010-03-01 2013-06-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 要求をディスパッチするための方法、システム、およびコンピュータ・プログラム
JP2015060247A (ja) * 2013-09-17 2015-03-30 株式会社リコー 情報処理システム、情報処理装置、プログラムおよび情報処理方法
JP2020013195A (ja) * 2018-07-13 2020-01-23 キヤノン株式会社 プリントサーバー、制御方法、およびそのプログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998019236A1 (fr) * 1996-10-31 1998-05-07 Sony Corporation Systeme et procede de traitement d'informations
JP2006260588A (ja) * 1998-08-17 2006-09-28 Microsoft Corp 分散コンポーネントアプリケーションでの待機メソッド呼び出し方法
US7318083B2 (en) 2001-08-27 2008-01-08 Ricoh Company, Ltd. Information processing system
JP2009009477A (ja) * 2007-06-29 2009-01-15 Toshiba Corp 演算方式を制御して情報を処理する装置、方法およびプログラム
JP2013521552A (ja) * 2010-03-01 2013-06-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 要求をディスパッチするための方法、システム、およびコンピュータ・プログラム
JP2012018582A (ja) * 2010-07-08 2012-01-26 Fujitsu Ltd プロセス間通信プログラム及びプロセス間通信方法
JP2015060247A (ja) * 2013-09-17 2015-03-30 株式会社リコー 情報処理システム、情報処理装置、プログラムおよび情報処理方法
JP2020013195A (ja) * 2018-07-13 2020-01-23 キヤノン株式会社 プリントサーバー、制御方法、およびそのプログラム

Similar Documents

Publication Publication Date Title
Bomans et al. The Argonne/GMD macros in FORTRAN for portable parallel programming and their implementation on the Intel iPSC/2
Magee et al. A constructive development environment for parallel and distributed programs
JP2829078B2 (ja) プロセス分散方法
US7225426B2 (en) Dynamic objects with property slot definition and runtime mechanisms
US4949255A (en) Message interface and method for recursive calling between interpretive and compiled computer processes
US20020046230A1 (en) Method for scheduling thread execution on a limited number of operating system threads
US6470346B2 (en) Remote computation framework
KR19980086685A (ko) 원격으로 오브젝트를 실행하는 방법
JPH08115209A (ja) ソース・コード作成システム及び方法
Zaccone Python parallel programming cookbook
Pointon et al. The design and implementation of Glasgow Distributed Haskell
JPH08123699A (ja) 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール
US20080229220A1 (en) Multithreading iconic programming system
JP2001236234A (ja) コンピュータ、並びに、コンピュータ読み取り可能な記録媒体
Schwan et al. AC thread library for multiprocessors
Wismüller et al. Interactive debugging and performance analysis of massively parallel applications
US7958145B2 (en) Creating multiple MBeans from a factory MBean
Pase Dynamic probe class library (dpcl): Tutorial and reference guide
Skyrme et al. Exploring Lua for Concurrent Programming.
Baaij et al. Soosim: Operating system and programming language exploration
Tremblay et al. Threaded-C language reference manual (release 2.0)
JPH11249919A (ja) 手続き呼出しの処理方法およびスタブ生成方法
Hippold et al. A communication API for implementing irregular algorithms on SMP clusters
Endo et al. ComposableThreads: Rethinking User-level Threads with Composability and Parametricity in C++
JPH0660047A (ja) マルチプロセッサ処理装置