JPH09218795A - 並列プログラム処理方法及びその装置 - Google Patents
並列プログラム処理方法及びその装置Info
- Publication number
- JPH09218795A JPH09218795A JP8026758A JP2675896A JPH09218795A JP H09218795 A JPH09218795 A JP H09218795A JP 8026758 A JP8026758 A JP 8026758A JP 2675896 A JP2675896 A JP 2675896A JP H09218795 A JPH09218795 A JP H09218795A
- Authority
- JP
- Japan
- Prior art keywords
- activity
- activities
- variable
- global
- variables
- 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.)
- Withdrawn
Links
Landscapes
- Memory System (AREA)
- Multi Processors (AREA)
Abstract
(57)【要約】
【課題】 従来の多重プログラミング環境では、こうし
たコンピュータ資源の意味を明確に区別して扱う機構が
提供されていなかったため、逐次プログラミングの資産
を安全に活用することは難しく、結果的に異常動作の原
因となることが多かった。 【解決手段】 複数のアクティビティ101,102の
それぞれで使用される変数を共有メモリに設け、それら
変数を複数のアクティビティのそれぞれのローカル変数
(variable 1〜4)として定義する。そして、複数の
アクティビティのそれぞれにおいて、他のアクティビテ
ィと独立に、そのローカル変数にアクセスして参照或は
更新する。また、これら複数のアクティビティ間で共通
に使用されるグローバル変数130を定義し、これら変
数にアクセスするときには、他のアクティビティよりの
アクセスを禁止する。
たコンピュータ資源の意味を明確に区別して扱う機構が
提供されていなかったため、逐次プログラミングの資産
を安全に活用することは難しく、結果的に異常動作の原
因となることが多かった。 【解決手段】 複数のアクティビティ101,102の
それぞれで使用される変数を共有メモリに設け、それら
変数を複数のアクティビティのそれぞれのローカル変数
(variable 1〜4)として定義する。そして、複数の
アクティビティのそれぞれにおいて、他のアクティビテ
ィと独立に、そのローカル変数にアクセスして参照或は
更新する。また、これら複数のアクティビティ間で共通
に使用されるグローバル変数130を定義し、これら変
数にアクセスするときには、他のアクティビティよりの
アクセスを禁止する。
Description
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
・システム等において用いられるメモリ共有型の並列プ
ログラム処理方法及びその装置に関するものである。
・システム等において用いられるメモリ共有型の並列プ
ログラム処理方法及びその装置に関するものである。
【0002】
【従来の技術】逐次プログラミングでは、プログラムの
実行の軌跡は1本であり、プログラムとして記述された
手続きなどに従って、メモリの読み書きや入出力装置の
制御などが行われ、全体として所定の処理を実行する業
務が達成されている。これに対して多重プログラミング
では、プログラムが実行される軌跡が複数存在する。各
々のプログラムが実行される軌跡は、一般に逐次プログ
ラミングと同様であって、この多重プログラミングによ
って実行される業務は、全てのプログラムの実行の軌跡
に伴う作用を合成したものとなる。各プログラムが実行
される軌跡を描く主体は、物理的にはそのプログラムを
実行するプロセッサであるが、論理的にはオペレーティ
ングシステムによって与えられる仮想的なプロセッサ、
或はコ・ルーチン的な手法を用いて提供される多重コン
テキストである。以下では、これらを総称してアクティ
ビティと呼ぶ。
実行の軌跡は1本であり、プログラムとして記述された
手続きなどに従って、メモリの読み書きや入出力装置の
制御などが行われ、全体として所定の処理を実行する業
務が達成されている。これに対して多重プログラミング
では、プログラムが実行される軌跡が複数存在する。各
々のプログラムが実行される軌跡は、一般に逐次プログ
ラミングと同様であって、この多重プログラミングによ
って実行される業務は、全てのプログラムの実行の軌跡
に伴う作用を合成したものとなる。各プログラムが実行
される軌跡を描く主体は、物理的にはそのプログラムを
実行するプロセッサであるが、論理的にはオペレーティ
ングシステムによって与えられる仮想的なプロセッサ、
或はコ・ルーチン的な手法を用いて提供される多重コン
テキストである。以下では、これらを総称してアクティ
ビティと呼ぶ。
【0003】多重プログラミングにおいて問題となるの
は、複数のアクティビティ間の相互排除と同期である。
つまり、別々のアクティビティが同一のメモリ領域や入
出力装置で競合する場合に、アクティビティの実行順序
を調停する必要が生じ、この実行順序の調停は、アクテ
ィビティとコンピュータ資源との関係によって異なる。
は、複数のアクティビティ間の相互排除と同期である。
つまり、別々のアクティビティが同一のメモリ領域や入
出力装置で競合する場合に、アクティビティの実行順序
を調停する必要が生じ、この実行順序の調停は、アクテ
ィビティとコンピュータ資源との関係によって異なる。
【0004】第1には、コンピュータ資源にアクティビ
ティが内包される場合である。この場合には、コンピュ
ータ資源に対する競合が発生しないため、アクティビテ
ィ間の相互排除が不要となり、メッセージ通信等による
同期で充分である。典型的な例としては、ネットワーク
により結合された複数のコンピュータシステムを用いた
分散処理が挙げられるが、一般にはこの限りではない。
ティが内包される場合である。この場合には、コンピュ
ータ資源に対する競合が発生しないため、アクティビテ
ィ間の相互排除が不要となり、メッセージ通信等による
同期で充分である。典型的な例としては、ネットワーク
により結合された複数のコンピュータシステムを用いた
分散処理が挙げられるが、一般にはこの限りではない。
【0005】第2は、アクティビティにコンピュータ資
源が内包される場合で、この場合はプログラムは、コン
ピュータ資源間の相互作用として記述される。この場合
は、コンピュータ資源に対する要求は内包されたアクテ
ィビティの実行中は保留され、アクティビティの実行の
終了時に、ある値としてその要求を発行した側に渡され
る。このため複数のアクティビティ間の相互排除と同期
は、コンピュータ資源に対する操作において、暗黙のう
ちに満足されたものとなっている。こうした形態は、主
として大規模並列システム上の細粒度データ並列プログ
ラミングにおいて用いられる。
源が内包される場合で、この場合はプログラムは、コン
ピュータ資源間の相互作用として記述される。この場合
は、コンピュータ資源に対する要求は内包されたアクテ
ィビティの実行中は保留され、アクティビティの実行の
終了時に、ある値としてその要求を発行した側に渡され
る。このため複数のアクティビティ間の相互排除と同期
は、コンピュータ資源に対する操作において、暗黙のう
ちに満足されたものとなっている。こうした形態は、主
として大規模並列システム上の細粒度データ並列プログ
ラミングにおいて用いられる。
【0006】第3は、アクティビティとコンピュータ資
源とが互いに独立しているものである。この場合には、
アクティビティ間で競合しているコンピュータ資源に対
して明示的に相互排除と同期を行わなければならない。
これを行うための手法としては、セマフォやモニタなど
多種多様な方式が確立されており、専用言語もしくはラ
イブラリを用いることで実現することができる。このよ
うな形態は、共有メモリ型マルチプロセッサシステム上
で、逐次プログラミング言語、或はそれを拡張した並行
プログラミング言語による適用業務プログラミングの記
述において顕著に認められるものである。
源とが互いに独立しているものである。この場合には、
アクティビティ間で競合しているコンピュータ資源に対
して明示的に相互排除と同期を行わなければならない。
これを行うための手法としては、セマフォやモニタなど
多種多様な方式が確立されており、専用言語もしくはラ
イブラリを用いることで実現することができる。このよ
うな形態は、共有メモリ型マルチプロセッサシステム上
で、逐次プログラミング言語、或はそれを拡張した並行
プログラミング言語による適用業務プログラミングの記
述において顕著に認められるものである。
【0007】以上、3種類の形態について述べたが、現
在最も一般的なのは第1の形態(コンピュータ資源にア
クティビティが内包される)であり、第2の形態(アク
ティビティにコンピュータ資源が内包される)が最もま
れである。しかしこれは、個々の形態の優劣によるもの
ではなく、利用分野やコストなどに基づいて決定された
ものである。また、これらは必ずしも互いに矛盾したも
のではない。例えば第1の形態と第3の形態の併用はし
ばしば用いられるものである。また一般的に特殊な用途
であり、意味的に円滑な結合が難しいという欠点はある
が、第2の形態も共存させることが可能である。つまり
多重プログラミングでは、対象となるシステムや環境に
応じて、上述した3種類の形態を適宜使い分けられるこ
とが肝要であり、そのための言語的な支援が必要になっ
ている。
在最も一般的なのは第1の形態(コンピュータ資源にア
クティビティが内包される)であり、第2の形態(アク
ティビティにコンピュータ資源が内包される)が最もま
れである。しかしこれは、個々の形態の優劣によるもの
ではなく、利用分野やコストなどに基づいて決定された
ものである。また、これらは必ずしも互いに矛盾したも
のではない。例えば第1の形態と第3の形態の併用はし
ばしば用いられるものである。また一般的に特殊な用途
であり、意味的に円滑な結合が難しいという欠点はある
が、第2の形態も共存させることが可能である。つまり
多重プログラミングでは、対象となるシステムや環境に
応じて、上述した3種類の形態を適宜使い分けられるこ
とが肝要であり、そのための言語的な支援が必要になっ
ている。
【0008】しかしながら、現在確立されており、プロ
グラミング上の問題も少ないのは、第1と第2の形態の
みである。第3の形態や、それと第1或は第2の形態を
併用したものでは言語的な支援は必ずしも充分ではな
い。まず第1の形態と第3の形態とを併用した場合で
は、第1の形態単独では存在し得なかったコンピュータ
資源の競合によって副作用が生じ、しばしば異常動作の
原因となる。
グラミング上の問題も少ないのは、第1と第2の形態の
みである。第3の形態や、それと第1或は第2の形態を
併用したものでは言語的な支援は必ずしも充分ではな
い。まず第1の形態と第3の形態とを併用した場合で
は、第1の形態単独では存在し得なかったコンピュータ
資源の競合によって副作用が生じ、しばしば異常動作の
原因となる。
【0009】また第2の形態と第3の形態の併用におい
ても、第2の形態で提供される活性なコンピュータ資源
自体が競合の対象となり得るため、第2の形態単独では
不要であった相互排除と同期の問題を解決する必要が生
じ、本来の利点を生かすことができなくなる。こうした
問題は、明らかに言語的な支援の欠落によるものと言え
よう。
ても、第2の形態で提供される活性なコンピュータ資源
自体が競合の対象となり得るため、第2の形態単独では
不要であった相互排除と同期の問題を解決する必要が生
じ、本来の利点を生かすことができなくなる。こうした
問題は、明らかに言語的な支援の欠落によるものと言え
よう。
【0010】別の観点では、以下のような問題もある。
即ち、従来の逐次プログラミング言語で記述されたプロ
グラムを多重プログラムにおいて再利用する場合に、コ
ンピュータ資源に対する競合を考慮していないものをそ
のまま使用することができない。典型的な例としては、
大域変数の操作が挙げられる。つまり逐次プログラミン
グでは、一般的に大域変数に対する相互排除と同期につ
いて考慮する必要がないのに対して、多重プログラミン
グでは、一般に複数のアクティビティが大域変数を参照
することができる。
即ち、従来の逐次プログラミング言語で記述されたプロ
グラムを多重プログラムにおいて再利用する場合に、コ
ンピュータ資源に対する競合を考慮していないものをそ
のまま使用することができない。典型的な例としては、
大域変数の操作が挙げられる。つまり逐次プログラミン
グでは、一般的に大域変数に対する相互排除と同期につ
いて考慮する必要がないのに対して、多重プログラミン
グでは、一般に複数のアクティビティが大域変数を参照
することができる。
【0011】ここで問題になるのは、逐次プログラミン
グにおいて大域変数として表現された資源の意味であ
る。即ち、真の意味での共有資源であって、複数のアク
ティビティ間で競合するものであれば、適切な相互排除
と同期が必要である。これに対して、言語で提供される
変数のスコープ上の制約によって、本来アクティビティ
固有の資源であるにもかからわず、大域変数として表現
されてしまうため、アクティビティへの従属性を表現す
ることはできない。従来の多重プログラミング環境で
は、こうしたコンピュータ資源の意味を明確に区別して
扱う機構が提供されていなかったため、逐次プログラミ
ングの資産を安全に活用することは難しく、結果的に異
常動作の原因となることが多かった。
グにおいて大域変数として表現された資源の意味であ
る。即ち、真の意味での共有資源であって、複数のアク
ティビティ間で競合するものであれば、適切な相互排除
と同期が必要である。これに対して、言語で提供される
変数のスコープ上の制約によって、本来アクティビティ
固有の資源であるにもかからわず、大域変数として表現
されてしまうため、アクティビティへの従属性を表現す
ることはできない。従来の多重プログラミング環境で
は、こうしたコンピュータ資源の意味を明確に区別して
扱う機構が提供されていなかったため、逐次プログラミ
ングの資産を安全に活用することは難しく、結果的に異
常動作の原因となることが多かった。
【0012】本発明は上記従来例に鑑みてなされたもの
で、並列プログラム処理において、アクティビティ間の
相互排除と同期の扱いを簡略化できる並列プログラム処
理方法及びその装置を提供することを目的とする。
で、並列プログラム処理において、アクティビティ間の
相互排除と同期の扱いを簡略化できる並列プログラム処
理方法及びその装置を提供することを目的とする。
【0013】また本発明の目的は、複数のアクティビテ
ィが同一資源に関して競合する可能性を考慮していな
い、従来の逐次プログラミング資産を再利用できる並列
プログラム処理方法及びその装置を提供することにあ
る。
ィが同一資源に関して競合する可能性を考慮していな
い、従来の逐次プログラミング資産を再利用できる並列
プログラム処理方法及びその装置を提供することにあ
る。
【0014】
【課題を解決するための手段】上記目的を達成するため
に本発明の並列プログラム処理装置は以下のような構成
を備える。即ち、複数のアクティビティ間でメモリを共
有して実行する並列プログラム処理装置であって、前記
複数のアクティビティのそれぞれで使用される変数をア
クティビティ毎に前記メモリに設け、前記変数を前記複
数のアクティビティのそれぞれに固有の変数として束縛
する手段を有する。
に本発明の並列プログラム処理装置は以下のような構成
を備える。即ち、複数のアクティビティ間でメモリを共
有して実行する並列プログラム処理装置であって、前記
複数のアクティビティのそれぞれで使用される変数をア
クティビティ毎に前記メモリに設け、前記変数を前記複
数のアクティビティのそれぞれに固有の変数として束縛
する手段を有する。
【0015】また上記目的を達成するために本発明の並
列プログラム処理方法は以下のような工程を備える。即
ち、複数のアクティビティ間でメモリを共有して実行す
る並列プログラム処理方法であって、前記複数のアクテ
ィビティのそれぞれで使用される変数を前記メモリに設
け、前記変数を前記複数のアクティビティのそれぞれに
固有なローカル変数として束縛する工程を有する。
列プログラム処理方法は以下のような工程を備える。即
ち、複数のアクティビティ間でメモリを共有して実行す
る並列プログラム処理方法であって、前記複数のアクテ
ィビティのそれぞれで使用される変数を前記メモリに設
け、前記変数を前記複数のアクティビティのそれぞれに
固有なローカル変数として束縛する工程を有する。
【0016】また好ましくは、前記複数のアクティビテ
ィのそれぞれで共通に使用される変数をアクティビティ
毎に前記メモリに設け、前記共通変数を前記複数のアク
ティビティに固有なグローバル変数として束縛する手段
を更に有する。
ィのそれぞれで共通に使用される変数をアクティビティ
毎に前記メモリに設け、前記共通変数を前記複数のアク
ティビティに固有なグローバル変数として束縛する手段
を更に有する。
【0017】また、コンピュータ資源が各アクティビテ
ィに内包され、各アクティビティの実行終了時に外部か
ら参照可能となるようなコンピュータ資源を有する並列
プログラム処理方法であって、前記各アクティビティの
それぞれで使用される変数をアクティビティ毎に前記メ
モリに設け、前記変数を前記各アクティビティのそれぞ
れのローカル変数として束縛する工程を有し、アクティ
ビティ間の競合を解消させる。
ィに内包され、各アクティビティの実行終了時に外部か
ら参照可能となるようなコンピュータ資源を有する並列
プログラム処理方法であって、前記各アクティビティの
それぞれで使用される変数をアクティビティ毎に前記メ
モリに設け、前記変数を前記各アクティビティのそれぞ
れのローカル変数として束縛する工程を有し、アクティ
ビティ間の競合を解消させる。
【0018】また、オペレーティングシステム上でユー
ザプログラムが実行される並列プログラム処理方法であ
って、それぞれがユーザプログラムを含む複数のアクテ
ィビティのそれぞれで使用される変数を共有メモリに設
け、前記変数を前記複数のアクティビティのそれぞれの
グローバル変数として束縛する工程と、前記ログローバ
ル変数として束縛された変数を前記オペレーティングシ
ステムにおいてアクティビティ毎に区別して参照及び更
新する工程を有する。
ザプログラムが実行される並列プログラム処理方法であ
って、それぞれがユーザプログラムを含む複数のアクテ
ィビティのそれぞれで使用される変数を共有メモリに設
け、前記変数を前記複数のアクティビティのそれぞれの
グローバル変数として束縛する工程と、前記ログローバ
ル変数として束縛された変数を前記オペレーティングシ
ステムにおいてアクティビティ毎に区別して参照及び更
新する工程を有する。
【0019】
【発明の実施の形態】以下、添付図面を参照して本発明
の好適な実施の形態を詳細に説明する。
の好適な実施の形態を詳細に説明する。
【0020】図1は本実施の形態のコンピュータ・シス
テムの構成を示すブロック図である。
テムの構成を示すブロック図である。
【0021】図中、1はシステムバスで、複数のCPU
(1〜n)2、主記憶装置3、入出力装置4、通信装置
5などを互いに接続している。本実施の形態では、図に
示したようなバス結合型マルチプロセッサのCPUを用
いたが、一般にはこの限りではなく、複数のアクティビ
ティが資源を共有する機能を備えたものであればよい。
(1〜n)2、主記憶装置3、入出力装置4、通信装置
5などを互いに接続している。本実施の形態では、図に
示したようなバス結合型マルチプロセッサのCPUを用
いたが、一般にはこの限りではなく、複数のアクティビ
ティが資源を共有する機能を備えたものであればよい。
【0022】CPU(1〜n)2は、プログラムの実行
を行うCPUであり、一台又は複数台から構成される。
主記憶装置3は、複数のCPU2により実行される制御
プログラムや各種データを記憶している。入出力装置4
は、例えばキーボード、ディスプレイ、プリンタ、外部
記憶装置などを備え、各種データの入力及び印刷表示等
のデータ出力を行う。通信装置5は、ネットワーク・イ
ンターフェース、モデムなど、及びその補助装置などか
ら構成されている。
を行うCPUであり、一台又は複数台から構成される。
主記憶装置3は、複数のCPU2により実行される制御
プログラムや各種データを記憶している。入出力装置4
は、例えばキーボード、ディスプレイ、プリンタ、外部
記憶装置などを備え、各種データの入力及び印刷表示等
のデータ出力を行う。通信装置5は、ネットワーク・イ
ンターフェース、モデムなど、及びその補助装置などか
ら構成されている。
【0023】以上の構成において、本実施の態様のコン
ピュータシステムでは、オペレーティング・システムが
稼働しているものとし、そのオペレーティング・システ
ムによって複数のアクティビティを用いた適用業務プロ
グラムの稼働が支援されているものとする。更に、各々
のアクティビティに固有なメモリ領域が、主記憶装置3
内に少なくとも1語(ワード)分確保されており、アク
ティビティの実行中に随時内容を読み出すことができる
ものとする。これらは全て既知の手法によって実現可能
である。
ピュータシステムでは、オペレーティング・システムが
稼働しているものとし、そのオペレーティング・システ
ムによって複数のアクティビティを用いた適用業務プロ
グラムの稼働が支援されているものとする。更に、各々
のアクティビティに固有なメモリ領域が、主記憶装置3
内に少なくとも1語(ワード)分確保されており、アク
ティビティの実行中に随時内容を読み出すことができる
ものとする。これらは全て既知の手法によって実現可能
である。
【0024】図2は、本実施の形態のコンピュータシス
テムで実行される適用業務プログラムの一例について、
その一部分を示したものである。
テムで実行される適用業務プログラムの一例について、
その一部分を示したものである。
【0025】図中、21は複数のアクティビティ間で共
有される大域変数(public_variable)を定義している。
有される大域変数(public_variable)を定義している。
【0026】22は、大域変数(public_variable)の値
を“1”だけ増加させることを指示する文である。この
大域変数は、複数のアクティビティ間で共有されるた
め、その値の参照や更新を行う場合には、例えば本実施
の形態における“mutex begin”〜“mutex end”のよう
な構文などを用いて、複数のアクティビティ間での相互
排除や同期を明示的に記述しなければならない。
を“1”だけ増加させることを指示する文である。この
大域変数は、複数のアクティビティ間で共有されるた
め、その値の参照や更新を行う場合には、例えば本実施
の形態における“mutex begin”〜“mutex end”のよう
な構文などを用いて、複数のアクティビティ間での相互
排除や同期を明示的に記述しなければならない。
【0027】23は個々のアクティビティにおいて固有
の値を持つ、アクティビティ内の大域変数(private_var
iable)の定義文である。アクティビティ内の大域変数(p
rivate_variable)は、言語上のスコープによらずに参照
することができる一種の大域変数であるが、このアクテ
ィビティ内の大域変数に束縛される値は、そのアクティ
ビティに固有であり、複数のアクティビティ間での競合
が起こらない点で通常の大域変数(global variable)
とは異なっている。
の値を持つ、アクティビティ内の大域変数(private_var
iable)の定義文である。アクティビティ内の大域変数(p
rivate_variable)は、言語上のスコープによらずに参照
することができる一種の大域変数であるが、このアクテ
ィビティ内の大域変数に束縛される値は、そのアクティ
ビティに固有であり、複数のアクティビティ間での競合
が起こらない点で通常の大域変数(global variable)
とは異なっている。
【0028】24はアクティビティ内大域変数(private
_variable)の値を“1”増加させることを指示する文で
ある。このようなアクティビティ内大域変数の更新は、
前述のアクティビティ間の大域変数(public_variable)
と異なり、アクティビティ内大域変数の参照や更新にお
ける相互排除などの記述、例えば前述の“mutex begi
n”〜“mutex end”は不要である。
_variable)の値を“1”増加させることを指示する文で
ある。このようなアクティビティ内大域変数の更新は、
前述のアクティビティ間の大域変数(public_variable)
と異なり、アクティビティ内大域変数の参照や更新にお
ける相互排除などの記述、例えば前述の“mutex begi
n”〜“mutex end”は不要である。
【0029】25は、21で示したアクティビティ間の
大域変数(public_variable)と、23で示したアクティ
ビティ内大域変数(private_variable)の定義文である
が、ここでは同一の変数名(variable)が用いられてい
る場合を示している。この場合の扱いについては、使用
する言語処理系に依存する。最も単純な方法は、同一名
称の利用を許さないものとし、言語処理系においてエラ
ーとして扱うものである。別の方法としては、変数の名
前空間の優先度を設け、優先度の最も高いものについて
値を束縛するというものもある。さらに変数の名前空間
を明示的に指定することによって、束縛すべき値を指定
する方法もある。
大域変数(public_variable)と、23で示したアクティ
ビティ内大域変数(private_variable)の定義文である
が、ここでは同一の変数名(variable)が用いられてい
る場合を示している。この場合の扱いについては、使用
する言語処理系に依存する。最も単純な方法は、同一名
称の利用を許さないものとし、言語処理系においてエラ
ーとして扱うものである。別の方法としては、変数の名
前空間の優先度を設け、優先度の最も高いものについて
値を束縛するというものもある。さらに変数の名前空間
を明示的に指定することによって、束縛すべき値を指定
する方法もある。
【0030】本実施の形態においては、このような手法
によって、異なる名前空間に属する変数について、同一
名称の利用を可能にしている。
によって、異なる名前空間に属する変数について、同一
名称の利用を可能にしている。
【0031】26は、25において定義されたアクティ
ビティ間の大域変数の値(variable)を“1”だけ増加さ
せることを指示する文である。ここではアクティビティ
内大域変数との混乱を避けるために、大域名前空間指示
子“::”を用いて記述している。
ビティ間の大域変数の値(variable)を“1”だけ増加さ
せることを指示する文である。ここではアクティビティ
内大域変数との混乱を避けるために、大域名前空間指示
子“::”を用いて記述している。
【0032】27は、25において定義されたアクティ
ビティ内大域変数の値(activity::variable)を“1”だ
け増加させることを指示する文である。
ビティ内大域変数の値(activity::variable)を“1”だ
け増加させることを指示する文である。
【0033】本実施の形態では、アクティビティ内大域
変数の名前空間を、一般の大域変数の名前空間より優先
度が高いものとして扱っているが、図2の文27で示す
ように、アクティビティ内大域変数に対する大域名前空
間指示子“activity::”を用いて明示的に記述すること
も可能である。
変数の名前空間を、一般の大域変数の名前空間より優先
度が高いものとして扱っているが、図2の文27で示す
ように、アクティビティ内大域変数に対する大域名前空
間指示子“activity::”を用いて明示的に記述すること
も可能である。
【0034】なお、本実施の形態においては大域変数を
対象としたが、これは用いられる言語仕様に依存するも
のである。既知のプログラミング言語においては、大域
変数と局所変数の中間的な意味合いを持つスコープを提
供するものもあるが、本実施の形態において提供する方
式は、これらに対しても適用可能である。
対象としたが、これは用いられる言語仕様に依存するも
のである。既知のプログラミング言語においては、大域
変数と局所変数の中間的な意味合いを持つスコープを提
供するものもあるが、本実施の形態において提供する方
式は、これらに対しても適用可能である。
【0035】以下では、言語仕様として提供されるスコ
ープの意味付けに拘わらず、複数のアクティビティから
同一の名称で参照可能できる変数を総称して大域変数と
呼ぶことにする。
ープの意味付けに拘わらず、複数のアクティビティから
同一の名称で参照可能できる変数を総称して大域変数と
呼ぶことにする。
【0036】図3(a)(b)は、アクティビティ内大
域変数(private_variable)を格納するメモリ領域の構成
を示す図で、このメモリ領域は、例えば図1の例では、
主記憶装置3に設けられている。
域変数(private_variable)を格納するメモリ領域の構成
を示す図で、このメモリ領域は、例えば図1の例では、
主記憶装置3に設けられている。
【0037】図中、31はオペレーティングシステムに
よって提供されるアクティビティ制御ブロック(AC
B:Activity Control Block)である。このアクティビ
ティ制御ブロック31は、アクティビティのレジスタ退
避領域やスタックなどから構成されるとともに、上述し
たアクティビティ固有のメモリ領域を含んでいる。32
はアクティビティ制御ブロック31から、後述するアク
ティビティ内大域変数格納領域33を参照するための機
構を模式的に示したものである。本実施の形態では、メ
モリアドレスを用いて直接参照する方法を用いたが、メ
モリアドレスを直に格納できない場合には、補助的な変
換表を用いて間接参照を行うことによって実現される。
33はアクティビティ内大域変数(private_variable)の
格納領域である。これは全てのアクティビティについて
共通な構造を持つ変数格納領域であり、アクティビティ
起動時に確保された後に初期化され、そのアクティビテ
ィの終了時に解放される。
よって提供されるアクティビティ制御ブロック(AC
B:Activity Control Block)である。このアクティビ
ティ制御ブロック31は、アクティビティのレジスタ退
避領域やスタックなどから構成されるとともに、上述し
たアクティビティ固有のメモリ領域を含んでいる。32
はアクティビティ制御ブロック31から、後述するアク
ティビティ内大域変数格納領域33を参照するための機
構を模式的に示したものである。本実施の形態では、メ
モリアドレスを用いて直接参照する方法を用いたが、メ
モリアドレスを直に格納できない場合には、補助的な変
換表を用いて間接参照を行うことによって実現される。
33はアクティビティ内大域変数(private_variable)の
格納領域である。これは全てのアクティビティについて
共通な構造を持つ変数格納領域であり、アクティビティ
起動時に確保された後に初期化され、そのアクティビテ
ィの終了時に解放される。
【0038】ここで確保されるメモリ領域サイズは、以
下のようにして決定される。即ち、図2の例において、
アクティビティ内大域変数“private_variable”を含む
一連の変数が指示された時点で、それらはアクティビテ
ィ内大域変数の格納領域33の中に順次割り振られる。
全てのアクティビティについて共通な構造が決定される
と、それを格納するために必要なメモリサイズが決定さ
れる。この際、個々のアクティビティ内大域変数に対応
する値の格納領域中の位置も同時に決定されている。言
語処理系においては、これらの情報に基づいて、変数に
対する値の束縛を行う。
下のようにして決定される。即ち、図2の例において、
アクティビティ内大域変数“private_variable”を含む
一連の変数が指示された時点で、それらはアクティビテ
ィ内大域変数の格納領域33の中に順次割り振られる。
全てのアクティビティについて共通な構造が決定される
と、それを格納するために必要なメモリサイズが決定さ
れる。この際、個々のアクティビティ内大域変数に対応
する値の格納領域中の位置も同時に決定されている。言
語処理系においては、これらの情報に基づいて、変数に
対する値の束縛を行う。
【0039】図3(b)は、アクティビティ内大域変数
の格納領域44を実現するもう一つの例を示している。
ここでは、アクティビティ内大域変数の格納領域44
を、変数名(name1-n)と値(variable1-n)の組からな
る辞書として構成し、アクティビティ制御ブロック41
による実行時に、その変数名(name)に対応する値(va
riable)を検索することによって、その変数を得ること
ができるようになっている。
の格納領域44を実現するもう一つの例を示している。
ここでは、アクティビティ内大域変数の格納領域44
を、変数名(name1-n)と値(variable1-n)の組からな
る辞書として構成し、アクティビティ制御ブロック41
による実行時に、その変数名(name)に対応する値(va
riable)を検索することによって、その変数を得ること
ができるようになっている。
【0040】言語処理系によっては、変数がアクティビ
ティ内大域変数であった場合に、該辞書を参照して値を
取り出すための一連の命令列が生成される。辞書の参照
において用いられる変数名は、一般に言語処理系内部の
処理によって生成され、数字や文字列として表現される
ものである。
ティ内大域変数であった場合に、該辞書を参照して値を
取り出すための一連の命令列が生成される。辞書の参照
において用いられる変数名は、一般に言語処理系内部の
処理によって生成され、数字や文字列として表現される
ものである。
【0041】これら大域変数の格納領域33及び34
は、アクティビティ内大域変数を静的に決定可能かどう
かによって使い分けることも可能である。つまり、アク
ティビティ内大域変数(private_variable)の格納領域3
3は実行時の負荷が小さく高速であるのに対して、図3
(b)の格納領域44は、図3(a)の格納領域33の
場合に比べて低速ではあるが、アクティビティ毎に異な
る辞書を構成することができる点で融通性が高い。
は、アクティビティ内大域変数を静的に決定可能かどう
かによって使い分けることも可能である。つまり、アク
ティビティ内大域変数(private_variable)の格納領域3
3は実行時の負荷が小さく高速であるのに対して、図3
(b)の格納領域44は、図3(a)の格納領域33の
場合に比べて低速ではあるが、アクティビティ毎に異な
る辞書を構成することができる点で融通性が高い。
【0042】本実施の形態ではそれぞれの特徴を生かす
ために両者を併用した。即ち、静的に決定できるものに
ついては格納領域33を、動的にしか決定できないもの
については格納領域34を採用することによって、アク
ティビティの実行時の負荷を軽減しつつ、そのアクティ
ビティに特有のアクティビティ内大域変数を利用するこ
とが可能となった。
ために両者を併用した。即ち、静的に決定できるものに
ついては格納領域33を、動的にしか決定できないもの
については格納領域34を採用することによって、アク
ティビティの実行時の負荷を軽減しつつ、そのアクティ
ビティに特有のアクティビティ内大域変数を利用するこ
とが可能となった。
【0043】図4は、本実施の形態の並列プログラミン
グの概念図である。
グの概念図である。
【0044】ここでは、アクティビティ101と102
とが並行して動作しており、各アクティビティは、図3
で説明したように、アクティビティ制御ブロック(AC
B)111(121)と、各アクティビティ内の大域変
数領域(variable1〜4)112,122を備えてい
る。130は、アクティビティ間で定義された大域変数
を示し、ここでは2つの変数(G-variable1,2)が定義
されており、これらアクティビティ内大域変数112,
122及びアクティビティ間大域変数130はいずれ
も、これらアクティビティに共有されている主記憶装置
3(図1)に設けられている。尚、ここでアクティビテ
ィ内大域変数112,122とアクティビティ間大域変
数130とを互いに異なる名前で示したが、本発明はこ
れに限定されるものでなく、言語によっては同じ名前で
あっても良い。
とが並行して動作しており、各アクティビティは、図3
で説明したように、アクティビティ制御ブロック(AC
B)111(121)と、各アクティビティ内の大域変
数領域(variable1〜4)112,122を備えてい
る。130は、アクティビティ間で定義された大域変数
を示し、ここでは2つの変数(G-variable1,2)が定義
されており、これらアクティビティ内大域変数112,
122及びアクティビティ間大域変数130はいずれ
も、これらアクティビティに共有されている主記憶装置
3(図1)に設けられている。尚、ここでアクティビテ
ィ内大域変数112,122とアクティビティ間大域変
数130とを互いに異なる名前で示したが、本発明はこ
れに限定されるものでなく、言語によっては同じ名前で
あっても良い。
【0045】そして図2のプログラムリストで示すよう
に、各アクティビティは自アクティビティ内の大域変数
112(122)にアクセスするときは、通常の変数へ
のアクセスと同様にしてアクセスすることができ、また
特に規定しない限り、各アクティビティはこれら変数を
アクティビティ内大域変数として扱うものとし、アクテ
ィビティ間の大域変数として扱うときは、例えば前述の
図2のように、“mutex begin”と“mutex end”を用い
て、他のアクティビティに対して排他的にアクセスす
る。
に、各アクティビティは自アクティビティ内の大域変数
112(122)にアクセスするときは、通常の変数へ
のアクセスと同様にしてアクセスすることができ、また
特に規定しない限り、各アクティビティはこれら変数を
アクティビティ内大域変数として扱うものとし、アクテ
ィビティ間の大域変数として扱うときは、例えば前述の
図2のように、“mutex begin”と“mutex end”を用い
て、他のアクティビティに対して排他的にアクセスす
る。
【0046】図5は、本実施の態様におけるアクティビ
ティにおける変数に対する処理を示すフローチャート
で、ここでは、各アクティビティにおいてアクティビテ
ィ内大域変数と、アクティビティ間の大域変数とを定義
し、アクティビティ内大域変数については通常の変数と
同様にアクセスし、グローバルな変数に対しては他のア
クティビティによるアクセスを禁止してアクセスしてい
る。
ティにおける変数に対する処理を示すフローチャート
で、ここでは、各アクティビティにおいてアクティビテ
ィ内大域変数と、アクティビティ間の大域変数とを定義
し、アクティビティ内大域変数については通常の変数と
同様にアクセスし、グローバルな変数に対しては他のア
クティビティによるアクセスを禁止してアクセスしてい
る。
【0047】まずステップS11で、アクティビティ内
大域変数を定義し(例えば、図2の23或は25)、ス
テップS12では、各アクティビティ間で共通に使用さ
れるアクティビティ間大域変数を定義する(図2の21
或は25)。この様な変数の定義は、どうしてもグロー
バルな大域変数として定義しなければならない変数だけ
をグローバルな大域変数として定義し、それ以外はアク
ティビティ内大域変数として定義するようにしている。
大域変数を定義し(例えば、図2の23或は25)、ス
テップS12では、各アクティビティ間で共通に使用さ
れるアクティビティ間大域変数を定義する(図2の21
或は25)。この様な変数の定義は、どうしてもグロー
バルな大域変数として定義しなければならない変数だけ
をグローバルな大域変数として定義し、それ以外はアク
ティビティ内大域変数として定義するようにしている。
【0048】こうしてステップS13に進み、ある変数
に対してアクセスする必要があるかどうかをみて、必要
があればステップS14に進み、その大域変数がアクテ
ィビティ内大域変数かどうかを調べ、そうであればステ
ップS15で、通常の変数と同様に参照或は更新する
(図2の23、或は27)。尚、本実施の態様では、前
述したように、特に規定しない限り、各アクティビティ
はこれら変数をアクティビティ内大域変数として扱うも
のとしているため、このような判断行なわずに、特に規
定されたアクティビティ間大域変数だけに対してステッ
プS16〜S18に示すステップを実行するようにして
も良い。
に対してアクセスする必要があるかどうかをみて、必要
があればステップS14に進み、その大域変数がアクテ
ィビティ内大域変数かどうかを調べ、そうであればステ
ップS15で、通常の変数と同様に参照或は更新する
(図2の23、或は27)。尚、本実施の態様では、前
述したように、特に規定しない限り、各アクティビティ
はこれら変数をアクティビティ内大域変数として扱うも
のとしているため、このような判断行なわずに、特に規
定されたアクティビティ間大域変数だけに対してステッ
プS16〜S18に示すステップを実行するようにして
も良い。
【0049】一方、ステップS14でアクティビティ内
大域変数でないときはステップS16に進み、その変数
に対して他のアクティビティよりのアクセスを禁止する
ための排他コマンドを発行し、ステップS17でそのコ
マンドを参照或は更新し、その処理が終了するとステッ
プS18で、排他コマンドを解除して処理を終了する
(図2の22或は26)。
大域変数でないときはステップS16に進み、その変数
に対して他のアクティビティよりのアクセスを禁止する
ための排他コマンドを発行し、ステップS17でそのコ
マンドを参照或は更新し、その処理が終了するとステッ
プS18で、排他コマンドを解除して処理を終了する
(図2の22或は26)。
【0050】尚、本実施の形態の図5において、ステッ
プS11,S12で示す処理はプログラム作成時に行わ
れ、ステップS15やステップS16〜S18はプログ
ラムの実行時に実行される処理を示している。またステ
ップS14の処理は仮想的なものである。
プS11,S12で示す処理はプログラム作成時に行わ
れ、ステップS15やステップS16〜S18はプログ
ラムの実行時に実行される処理を示している。またステ
ップS14の処理は仮想的なものである。
【0051】ここで、従来の逐次プログラムを用いる場
合は、そのプログラムで使用される変数を全てアクティ
ビティ内大域変数として定義することにより、その逐次
プログラムを変更することなく、本実施の態様のよう
な、並列プログラミング・システムに適用することがで
きる。
合は、そのプログラムで使用される変数を全てアクティ
ビティ内大域変数として定義することにより、その逐次
プログラムを変更することなく、本実施の態様のよう
な、並列プログラミング・システムに適用することがで
きる。
【0052】[第2の実施の形態]以上説明したアクテ
ィビティ内大域変数を適用することによって、アクティ
ビティとコンピュータ資源との関係が相互に干渉するの
を避けることが可能である。例えば、アクティビティが
コンピュータ資源に内包される場合については、以下の
ようになる。
ィビティ内大域変数を適用することによって、アクティ
ビティとコンピュータ資源との関係が相互に干渉するの
を避けることが可能である。例えば、アクティビティが
コンピュータ資源に内包される場合については、以下の
ようになる。
【0053】アクティビティを内包しているコンピュー
タ資源に対して複数のアクティビティを設けることによ
り、新たにアクティビティ間の同期に関する問題が発生
するが、その同期に関する問題が本質的であるのは、一
般にそのコンピュータ資源についてであって、その他に
ついてはアクティビティ内大域変数で充分であることが
多い。そのような場合については、上記実施の形態にお
いて説明した手法を変形して用いることで対処できる。
即ち、大域変数としてアクティビティ内大域変数と本質
的にグローバルな大域変数があった場合に、特に指定が
ない場合にはアクティビティ内大域変数として扱うもの
として、共有資源について明示的な指定を行うようにす
ればよい。この方法は極めて容易に実現できるものであ
るが、適用業務プログラムの開発においては、大幅に記
述量の削減が可能となる。
タ資源に対して複数のアクティビティを設けることによ
り、新たにアクティビティ間の同期に関する問題が発生
するが、その同期に関する問題が本質的であるのは、一
般にそのコンピュータ資源についてであって、その他に
ついてはアクティビティ内大域変数で充分であることが
多い。そのような場合については、上記実施の形態にお
いて説明した手法を変形して用いることで対処できる。
即ち、大域変数としてアクティビティ内大域変数と本質
的にグローバルな大域変数があった場合に、特に指定が
ない場合にはアクティビティ内大域変数として扱うもの
として、共有資源について明示的な指定を行うようにす
ればよい。この方法は極めて容易に実現できるものであ
るが、適用業務プログラムの開発においては、大幅に記
述量の削減が可能となる。
【0054】一方、コンピュータ資源がアクティビティ
に内包されている場合の扱いについても、アクティビテ
ィ内大域変数を用いることにより、アクティビティ間の
競合を解消することが可能である。アクティビティ間の
競合の原因は、コンピュータ資源を内包するアクティビ
ティ自体が、その他のアクティビティ間の競合の対象と
なりうることにあり、コンピュータ資源を内包するアク
ティビティをアクティビティ内大域変数として束縛する
ことによって、競合の発生が根本的に回避される。
に内包されている場合の扱いについても、アクティビテ
ィ内大域変数を用いることにより、アクティビティ間の
競合を解消することが可能である。アクティビティ間の
競合の原因は、コンピュータ資源を内包するアクティビ
ティ自体が、その他のアクティビティ間の競合の対象と
なりうることにあり、コンピュータ資源を内包するアク
ティビティをアクティビティ内大域変数として束縛する
ことによって、競合の発生が根本的に回避される。
【0055】一般にアクティビティに内包されるコンピ
ュータ資源は、その粒度が極めて小さく、その値自体に
対する競合が問題になることは少ない。むしろ競合が問
題になるのは、アクティビティの実行が終了して値が返
されるタイミングに対する同期においてである。こうし
たアクティビティ間の同期の扱いについては、コンピュ
ータ資源がアクティビティに内包されるというモデルに
おいては扱いが困難であるが、他のモデルにおいては極
めて容易に表現される。実際アクティビティ内大域変数
を用いた場合は、その値を他のアクティビティに渡す時
点で、必要な同期操作を行えばよい。
ュータ資源は、その粒度が極めて小さく、その値自体に
対する競合が問題になることは少ない。むしろ競合が問
題になるのは、アクティビティの実行が終了して値が返
されるタイミングに対する同期においてである。こうし
たアクティビティ間の同期の扱いについては、コンピュ
ータ資源がアクティビティに内包されるというモデルに
おいては扱いが困難であるが、他のモデルにおいては極
めて容易に表現される。実際アクティビティ内大域変数
を用いた場合は、その値を他のアクティビティに渡す時
点で、必要な同期操作を行えばよい。
【0056】[第3の実施の形態]アクティビティ内大
域変数のもう一つの応用として、逐次プログラミング資
産の活用について説明する。
域変数のもう一つの応用として、逐次プログラミング資
産の活用について説明する。
【0057】第1の例は、動的メモリ管理である。適用
業務プログラムの記述においては、動的なメモリ領域の
確保と解放が行われるが、従来これは大域的な管理表を
用いて実現されていた。しかし複数のアクティビティが
存在する環境では、このような大域的な管理表はアクテ
ィビティ間の競合の対象となるため、そのまま用いるこ
とは不可能である。しかし共有しているメモリの確保と
解放は、本質的にはアクティビティ毎に独立に処理され
るべきものである。この問題は、メモリ管理表をアクテ
ィビティ内大域変数によって実現することによって容易
に解決できる。特に、一旦メモリ管理表がアクティビテ
ィ内大域変数に束縛された時点で、メモリ管理手続き間
の共有データ領域がアクティビティ毎に設けられること
から、メモリ管理手続き自体の記述を変更する必要がな
くなる。このため、従来の逐次プログラミングで記述さ
れたプログラムをそのままの形で再利用することが可能
になる。
業務プログラムの記述においては、動的なメモリ領域の
確保と解放が行われるが、従来これは大域的な管理表を
用いて実現されていた。しかし複数のアクティビティが
存在する環境では、このような大域的な管理表はアクテ
ィビティ間の競合の対象となるため、そのまま用いるこ
とは不可能である。しかし共有しているメモリの確保と
解放は、本質的にはアクティビティ毎に独立に処理され
るべきものである。この問題は、メモリ管理表をアクテ
ィビティ内大域変数によって実現することによって容易
に解決できる。特に、一旦メモリ管理表がアクティビテ
ィ内大域変数に束縛された時点で、メモリ管理手続き間
の共有データ領域がアクティビティ毎に設けられること
から、メモリ管理手続き自体の記述を変更する必要がな
くなる。このため、従来の逐次プログラミングで記述さ
れたプログラムをそのままの形で再利用することが可能
になる。
【0058】入出力操作を含む場合など、最終的に資源
に対する競合が避けられない場合については本方法を適
用することは困難であるが、一般には多くの場合につい
て同様の手法で対処可能である。
に対する競合が避けられない場合については本方法を適
用することは困難であるが、一般には多くの場合につい
て同様の手法で対処可能である。
【0059】このように第3の実施の態様では、メモリ
管理表のように、グローバルな変数として持つ必要のな
い変数を、積極的にアクティビティ内大域変数として定
義することにより、各アクティビティにおいて、その変
数の取り扱いについて特別な考慮を要しないようにでき
る。
管理表のように、グローバルな変数として持つ必要のな
い変数を、積極的にアクティビティ内大域変数として定
義することにより、各アクティビティにおいて、その変
数の取り扱いについて特別な考慮を要しないようにでき
る。
【0060】[第4の実施の形態]さらに、オペレーテ
ィングシステムにおいてアクティビティ内大域変数の参
照を行うようにすれば、逐次プログラミング資産の活用
範囲をさらに広げることが可能である。具体例として、
システムコールにおけるエラーコードの扱いについて説
明する。このエラーコードは、オペレーティングシステ
ムがシステムコールの処理結果を適用業務プログラムに
対して通知する際に用いられており、特に逐次プログラ
ミングにおいては最終的に大域変数に格納するようにな
っていた。
ィングシステムにおいてアクティビティ内大域変数の参
照を行うようにすれば、逐次プログラミング資産の活用
範囲をさらに広げることが可能である。具体例として、
システムコールにおけるエラーコードの扱いについて説
明する。このエラーコードは、オペレーティングシステ
ムがシステムコールの処理結果を適用業務プログラムに
対して通知する際に用いられており、特に逐次プログラ
ミングにおいては最終的に大域変数に格納するようにな
っていた。
【0061】しかし複数のアクティビティによるシステ
ムコールの要求タイミングが重なった場合に、エラーコ
ード自体が共有大域変数となっている場合には、その内
容は一般に補償されない。この問題を回避しつつ逐次プ
ログラミングの資産を再利用するためには、エラーコー
ドをアクティビティ内大域変数として表現すると同時
に、オペレーティングシステムから通知されるエラーコ
ードを当該アクティビティ内大域変数の値として格納す
る必要がある。
ムコールの要求タイミングが重なった場合に、エラーコ
ード自体が共有大域変数となっている場合には、その内
容は一般に補償されない。この問題を回避しつつ逐次プ
ログラミングの資産を再利用するためには、エラーコー
ドをアクティビティ内大域変数として表現すると同時
に、オペレーティングシステムから通知されるエラーコ
ードを当該アクティビティ内大域変数の値として格納す
る必要がある。
【0062】そこで、図3のアクティビティ内大域変数
格納領域33(34)をオペレーティングシステムが参
照するよう変更しなければならない。ここで、アクティ
ビティ制御ブロック31はオペレーティングシステムの
管理下にあり、ユーザプログラムのメモリ領域の参照も
可能であることから、このような変更は極めて容易であ
る。この結果、エラーコードの扱いもアクティビティ毎
に独自に行うことになるため、システムコールの要求の
重なりによらず、完全にエラーコードの参照が可能とな
る。
格納領域33(34)をオペレーティングシステムが参
照するよう変更しなければならない。ここで、アクティ
ビティ制御ブロック31はオペレーティングシステムの
管理下にあり、ユーザプログラムのメモリ領域の参照も
可能であることから、このような変更は極めて容易であ
る。この結果、エラーコードの扱いもアクティビティ毎
に独自に行うことになるため、システムコールの要求の
重なりによらず、完全にエラーコードの参照が可能とな
る。
【0063】また本発明は、複数の機器から構成される
システムに適用しても、1つの機器からなる装置に適用
しても良い。また、本発明はシステム或は装置に本発明
を実施するプログラムを供給することによって達成され
る場合にも適用できる。この場合、本発明に係るプログ
ラムを格納した記憶媒体が、本発明を構成することにな
る。そして記憶媒体からそのプログラムをシステム或は
装置に読み出すことによって、そのシステム或は装置が
そのプログラムに従って動作する。
システムに適用しても、1つの機器からなる装置に適用
しても良い。また、本発明はシステム或は装置に本発明
を実施するプログラムを供給することによって達成され
る場合にも適用できる。この場合、本発明に係るプログ
ラムを格納した記憶媒体が、本発明を構成することにな
る。そして記憶媒体からそのプログラムをシステム或は
装置に読み出すことによって、そのシステム或は装置が
そのプログラムに従って動作する。
【0064】以上説明したように本実施の形態によれ
ば、多重プログラミングにおける大域変数束縛方式とし
てアクティビティ内大域変数を設けることにより、アク
ティビティとコンピュータ資源との内包関係が多様であ
る場合にそれらの共存が容易になるという効果がある。
ば、多重プログラミングにおける大域変数束縛方式とし
てアクティビティ内大域変数を設けることにより、アク
ティビティとコンピュータ資源との内包関係が多様であ
る場合にそれらの共存が容易になるという効果がある。
【0065】また本実施の態様によれば 一般的な逐次
プログラミング資産の活用が容易になるという効果を有
する。
プログラミング資産の活用が容易になるという効果を有
する。
【0066】このように本実施の態様の多重プログラミ
ング言語において、アクティビティ毎に異なる変数を与
え、コンピュータ資源の私有と共有を明確に区別するこ
とによって、アクティビティ相互の競合の調停や解消を
実現することができる。。
ング言語において、アクティビティ毎に異なる変数を与
え、コンピュータ資源の私有と共有を明確に区別するこ
とによって、アクティビティ相互の競合の調停や解消を
実現することができる。。
【0067】また、並列処理を考慮していない逐次プロ
グラミングにおける大域変数などの私有化や共有化も実
現できる。
グラミングにおける大域変数などの私有化や共有化も実
現できる。
【0068】更に、コンピュータ資源とアクティビティ
間において、メッセージ通信系では、特定の変数を除い
てアクティビティ毎に固有なローカル変数を定義して共
有メモリなどに対する各アクティビティによるアクセス
を独立させ、またデータ並列処理系では、活性な資源を
特定のアクティビティだけに限定して割り当てることに
より、並列処理が考慮されていないデータにおいても、
アクティビティ間での競合を排除することができる。
間において、メッセージ通信系では、特定の変数を除い
てアクティビティ毎に固有なローカル変数を定義して共
有メモリなどに対する各アクティビティによるアクセス
を独立させ、またデータ並列処理系では、活性な資源を
特定のアクティビティだけに限定して割り当てることに
より、並列処理が考慮されていないデータにおいても、
アクティビティ間での競合を排除することができる。
【0069】
【発明の効果】以上説明したように本発明によれば、並
列プログラム処理において、アクティビティ間の相互排
除と同期の扱いを簡略化できるという効果がある。
列プログラム処理において、アクティビティ間の相互排
除と同期の扱いを簡略化できるという効果がある。
【0070】また本発明によれば、複数のアクティビテ
ィが同一資源に関して競合する可能性を考慮していな
い、従来の逐次プログラミング資産を再利用できるとい
う効果がある。
ィが同一資源に関して競合する可能性を考慮していな
い、従来の逐次プログラミング資産を再利用できるとい
う効果がある。
【図1】本発明における実施の形態を説明するためのコ
ンピュータ・システムの構成図である。
ンピュータ・システムの構成図である。
【図2】本実施の態様のコンピュータ・システムの業務
プログラムにおけるアクティビティ内大域変数の参照例
を示す図である。
プログラムにおけるアクティビティ内大域変数の参照例
を示す図である。
【図3】本実施の態様のコンピュータ・システムのアク
ティビティ内大域変数を格納するメモリ領域の構成を示
す図である。
ティビティ内大域変数を格納するメモリ領域の構成を示
す図である。
【図4】本実施の形態の並列プログラミングの概念図で
ある。
ある。
【図5】本実施の態様におけるアクティビティにおける
変数に対する処理を示すフローチャートである。
変数に対する処理を示すフローチャートである。
1 システムバス 2 CPU(1〜n) 3 主記憶装置 4 入出力装置 5 通信装置 31 アクティビティ制御ブロック(ACB) 33,34 アクティビティ内大域変数格納領域
Claims (6)
- 【請求項1】 複数のアクティビティ間でメモリを共有
して実行する並列プログラム処理装置であって、 前記複数のアクティビティのそれぞれで使用される変数
をアクティビティ毎に前記メモリに設け、前記変数を前
記複数のアクティビティのそれぞれに固有なローカル変
数として束縛する手段を有することを特徴とする並列プ
ログラム処理装置。 - 【請求項2】 前記複数のアクティビティのそれぞれで
共通に使用される変数をアクティビティ毎に前記メモリ
に設け、前記共通変数を前記複数のアクティビティに固
有なグローバル変数として束縛する手段を更に有するこ
とを特徴とする請求項1に記載の並列プログラム処理装
置。 - 【請求項3】 複数のアクティビティ間でメモリを共有
して実行する並列プログラム処理方法であって、 前記複数のアクティビティのそれぞれで使用される変数
をアクティビティ毎に前記メモリに設け、前記変数を前
記複数のアクティビティのそれぞれに固有な変数として
束縛する工程を有することを特徴とする並列プログラム
処理方法。 - 【請求項4】 前記複数のアクティビティのそれぞれで
共通に使用される変数をアクティビティ毎に前記メモリ
に設け、前記共通変数を前記複数のアクティビティグロ
ーバル変数として束縛する工程を更に有することを特徴
とする請求項3に記載の並列プログラム処理方法。 - 【請求項5】 コンピュータ資源が各アクティビティに
内包され、各アクティビティの実行終了時に外部から参
照可能となるようなコンピュータ資源を有する並列プロ
グラム処理方法であって、 前記各アクティビティのそれぞれで使用される変数をア
クティビティ毎に前記メモリに設け、前記変数を前記各
アクティビティのそれぞれのローカル変数として束縛す
る工程を有し、 アクティビティ間の競合を解消させるようにしたことを
特徴とする並列プログラム処理方法。 - 【請求項6】 オペレーティングシステム上でユーザプ
ログラムが実行される並列プログラム処理方法であっ
て、 それぞれがユーザプログラムを含む複数のアクティビテ
ィのそれぞれで使用される変数を共有メモリに設け、前
記変数を前記複数のアクティビティのそれぞれのグロー
バル変数として束縛する工程と、 前記グローバル変数として束縛された変数を前記オペレ
ーティングシステムにおいてアクティビティ毎に区別し
て参照及び更新する工程と、を有することを特徴とする
並列プログラム処理方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8026758A JPH09218795A (ja) | 1996-02-14 | 1996-02-14 | 並列プログラム処理方法及びその装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8026758A JPH09218795A (ja) | 1996-02-14 | 1996-02-14 | 並列プログラム処理方法及びその装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09218795A true JPH09218795A (ja) | 1997-08-19 |
Family
ID=12202188
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8026758A Withdrawn JPH09218795A (ja) | 1996-02-14 | 1996-02-14 | 並列プログラム処理方法及びその装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH09218795A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2020086871A (ja) * | 2018-11-22 | 2020-06-04 | Necプラットフォームズ株式会社 | 情報処理装置、プログラム、オペレーティングシステム、実行方法及びプログラムの修正方法 |
-
1996
- 1996-02-14 JP JP8026758A patent/JPH09218795A/ja not_active Withdrawn
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2020086871A (ja) * | 2018-11-22 | 2020-06-04 | Necプラットフォームズ株式会社 | 情報処理装置、プログラム、オペレーティングシステム、実行方法及びプログラムの修正方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW505855B (en) | Parallel software processing system | |
| JP2013546106A (ja) | 分散型コンピューティングアーキテクチャ | |
| JPH0687222B2 (ja) | アプリケーションとデータベース管理システム間の相互通信システム及び方法 | |
| JPH0628053B2 (ja) | マルチプロセッサシステムの資源の割当制御方法 | |
| JPH11149385A (ja) | マルチos構成方法 | |
| US5825649A (en) | Kernel substitution method in multi-processor system and multi-processor system having kernel substitution function | |
| JP4712876B2 (ja) | 並列プロセッサ方法と装置 | |
| US10360079B2 (en) | Architecture and services supporting reconfigurable synchronization in a multiprocessing system | |
| Mistry et al. | Adapting FreeRTOS for multicores: An experience report | |
| JP2026504251A (ja) | タスクスケジューリング実行方法、タスクスケジューリング実行命令の生成方法及び装置 | |
| JP4964243B2 (ja) | プロセッサ方法と装置 | |
| KR101150661B1 (ko) | 정보 처리 장치 및 메모리 영역 관리 방법 | |
| US7661115B2 (en) | Method, apparatus and program storage device for preserving locked pages in memory when in user mode | |
| JPH06243112A (ja) | マルチプロセッサ装置 | |
| JPH09218795A (ja) | 並列プログラム処理方法及びその装置 | |
| JP2001216172A (ja) | マルチos構成方法 | |
| US8010963B2 (en) | Method, apparatus and program storage device for providing light weight system calls to improve user mode performance | |
| JP2007035066A (ja) | マルチos構成方法 | |
| Gupta et al. | Operating system | |
| JP2588175B2 (ja) | ハツシユ・テ−ブル・エントリ排他処理装置 | |
| Sobiesiak et al. | How to avoid complicated if-clause structure in FORTRAN real-time programming | |
| JPH0363768B2 (ja) | ||
| JPH03204731A (ja) | 仮想計算機システムのエミュレーション実行装置及び方法 | |
| Mills | Executive systems and software development for minicomputers | |
| JPS62221041A (ja) | 仮想計算機システムにおけるデイスパツチ制御装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20030506 |