JPH03188529A - タスク内共有変数検出処理方式 - Google Patents

タスク内共有変数検出処理方式

Info

Publication number
JPH03188529A
JPH03188529A JP32775489A JP32775489A JPH03188529A JP H03188529 A JPH03188529 A JP H03188529A JP 32775489 A JP32775489 A JP 32775489A JP 32775489 A JP32775489 A JP 32775489A JP H03188529 A JPH03188529 A JP H03188529A
Authority
JP
Japan
Prior art keywords
task
program
intra
inter
shared variable
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.)
Granted
Application number
JP32775489A
Other languages
English (en)
Other versions
JP2527055B2 (ja
Inventor
Kyoko Hanakada
羽中田 恭子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP1327754A priority Critical patent/JP2527055B2/ja
Publication of JPH03188529A publication Critical patent/JPH03188529A/ja
Application granted granted Critical
Publication of JP2527055B2 publication Critical patent/JP2527055B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はマルチプロセッサでの実行を記述可能な高級プ
ログラミング言語で記述された原始プログラムからタス
ク内共有変数とみなせるタスク間共有変数を検出してタ
スク内共有変数に置き換える処理方式に関するものであ
る。
〔従来の技術〕
複数のプログラム単位から構成される原始プログラムで
は、変数(配列)のために割り当てられる記憶領域を削
減したり、プログラム単位間でのデータのやりとりを簡
易化したりする目的で、共通ブロック化の手法が多く用
いられる0例えば、FORTRAN言語ではCoMMo
N文が用いられる。
ところで、マルチプロセッサでの実行を記述可能な高級
プログラミング言語、例えばFORTRAN言語で記述
された原始プログラムにおいて、CoMMoN文により
宣言された変数は、その宣言の含まれるプログラム単位
が属する複数のタスクによって共有されるタスク間共有
変数となり、プログラムの実行時においては複数のタス
クからの参照・書込に対して内容の正当性を保持するた
めに排他制御が行われる。
しかしながら、原始プログラム中で宣言されたタスク間
共有変数の全ての要素が複数のタスクによって現実に共
有されているとは限られず、多分に無用な宣言を含んで
おり、これがため、無用な排他制御によっ°ζプログラ
ムの実行効率が低下するという問題がある。
上記の問題を解決するには、原始プログラム中で宣言さ
れたタスク間共有変数が実質的に特定のタスク内のプロ
グラム単位間でしか共有されない変数(タスク内共有変
数)であることが明らかである場合には、TASKCO
MMON文によるタスク内共有変数の宣言に置き換えた
り、無用な宣言を削除するのが効果的である。
従来、上記の処理は専ら人間によって行われており、原
始プログラムのタスク構成を調べつつ、プログラム単位
毎の変数の参照情報リスト等を目視で比較し、実質的な
タスク内共有変数を発見した場合、エディタ等により原
始プログラムに修正を加えるようにしていた。
〔発明が解決しようとする課題〕
上述したように、従来、原始プログラムからタスク内共
有変数とみなせるタスク間共存変数を検出してタスク内
共有変数に置き換える等の処理は人手にまかされていた
ため、作業が煩雑で担当者の負担が重いと共に、処理に
時間がかかるという欠点があった。また、人間の作業で
あるため、検出漏れ、修正漏れ等が発生することもあり
、充分な実行時間短縮の効果が上げられない欠点もあっ
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、原始プログラムからタスク内共有変
数とみなせるタスク間共有変数を検出してタスク内共有
変数に置き換える処理を全て自動的に行えるタスク内共
有変数検出処理方式を提供するごとにある。
〔課題を解決するための手段〕
本発明は上記の目的を達成するため、マルチプロセッサ
での実行を記述可能な高級プログラミング1語で記述さ
れた原始プログラムからタスク内共有変数とみなせるタ
スク間共有変数を検出してタスク内共有変数に置き換え
る処理方式において、原始プログラムを入力してプログ
ラム単位共有変数情報およびプログラム構成情報を生成
するプログラム単位解析処理手段と、 生成されたプログラム単位共有変数情報およびプログラ
ム構成情報を参照してタスク単位共有変数情報を生成す
るタスク単位解析処理手段と、生成されたタスク単位共
有変数情報を参照してタスク間共有変数情報を生成する
タスク間解析処理手段と、 生成されたタスク間共有変数情報を参照して原始プログ
ラム中のタスク間共有変数の宣言のうち、自タスクのタ
スク内共有変数とみなせるものはタスク内共有変数の宣
言に置き換えるかタスク内共有変数であることの指示行
を原始プログラム中に挿入し、別タスクのタスク内共有
変数とみなせるものは原始プログラム中から削除して、
新たな原始プログラムを生成するプログラム変換処理手
段とを備えるようにしている。
〔作用〕
本発明のタスク内共有変数検出処理方式にあっては、プ
ログラム単位解析処理手段が原始プログラムを入力して
プログラム単位共有変数情報およびプログラム構成情報
を生成し、生成されたプログラム単位共有変数情報およ
びプログラム構成情報をタスク単位解析処理手段が参照
してタスク単位共有変数情報を生成し、生成されたタス
ク単位共有変数情報をタスク間解析処理手段が参照して
タスク間共有変数情報を生成し、生成されたタスク間共
有変数情報をプログラム変換処理手段が参照し、原始プ
ログラム中のタスク間共有変数の宣i゛のうち、自タス
クのタスク内共有変数とみなせるものはタスク内共有変
数の宣言に置き換えるかタスク内共有変数であることの
指示行を原始プログラム中に挿入し、別タスクのタスク
内共有変数とみなせるものは原始プログラム中から削除
して、新たな原始プログラムを生成する。
〔実施例〕
以下、本発明の実施例につき図面を参照して説明する。
第1図は本発明のタスク内共有変数検出処理方式の一実
施例を示す構成図である。第1図において、本発明のタ
スク内共有変数検出処理方式は、プログラム解析・生成
機構2として具体化され、このプログラム解析・生成機
構2はマルチプロセッサでの実行を記述可能な高級プロ
グラミング言語、例えばFORTRAN言語で記述され
た原始プログラム1を入力し、タスク内共有変数とみな
せるタスク間共有変数をタスク内共有変数に置き換えた
新たな原始プログラム3および共有変数情報リスト4を
出力するようになっている。なお、プログラム解析・生
成機構2は、機能部として、プログラム解析機構21と
プログラム生成機構25とを有し、情報格納領域として
、構成情報領域28と共有変数情報領域29とを有して
いる。また、プログラム解析機構21はプログラム単位
解析処理手段22とタスク単位解析処理手段23とタス
ク間解析処理手段24とから構成され、プログラム生成
機構25は共有変数情報編集・出力処理手段26とプロ
グラム変換処理手段27とから構成されている。各部の
機能は後述の動作を通して説明することとする。
第2図はFORTRAN言語で記述した原始プログラム
1の一例を示したものであり、5つのプログラム単位1
00,200,300,400゜500から構成されて
いるものとする。
プログラム単位100は、名前付き共通ブロックである
タスク間共有変数AA、CC,DDを宣iするタスク間
共有変数宣言文110,111゜112と、タスク間共
有変数DDの要素DM2と配列Cの領域結合を宣言する
EQU I VALENCE文113と、プログラム単
位300の手続き副プログラムAをタスクとして起動す
るタスク起動文120と、プログラム単位200の手続
き副プログラムDを呼び出す手続き呼び出し文121と
、タスク間共存変数の要素AM3.DMI、Cの参照を
含む共有変数参照文130,131,132とを含んで
いる。
プログラム単位200は、名前付き共通ブロックである
タスク間共有変数DDを宣言するタスク間共有変数宣言
文210と、タスク間共有変数の要素DDI、DD2の
参照を含む共有変数参照文230 231とを含んでい
る。
プログラム単位300は、名前付き共通ブロックである
タスク間共有変数AA、CCを宣言するタスク間共有変
数宣言文310.311と、プログラム単位400の手
続き副プログラムBを呼び出す手続き呼び出し文320
およびプログラム単位500の手続き副プログラムCを
呼び出す手続き呼び出し文321と、タスク間共有変数
の要素CA3  CA2.CAI、AAIの参照を含む
共有変数参照文330,331,332,333とを含
んでいる。
プログラム単位400は、名前付き共通ブロックである
タスク間共有変数AAを宣言するタスク間共有変数宣言
文410と、タスク間共有変数の要素AB2の参照を含
む共有変数参照文430とを含んでいる。
プログラム単位500は、名前付き共通ブロックである
タスク間共有変数AA、CCを宣言するタスク間共有変
数宣言文510,511と、タスク量弁を変数の要素A
CI、AC2,CCIの参照を含む共有変数参照文53
0,531,532とを含んでいる。
以下、第2図に示した原始プログラム1を例にとり、第
1図に示した実施例の動作を説明する。
プログラム解析・生成機構2は、プログラム単位100
,200,300,400,500から構成される原始
プログラムlを入力する。
プログラム解析機構21のプログラム単位解析処理手段
22は、各プログラム単位に出現する文の種類に応じ°
C以下の処理を行う、すなわち、プログラム単位100
のタスク間共有変数宣言文110を検出すると、第3図
に示すプログラム単位共有変数情報101の一部として
、共存変数名AAと、その要素名(名前)AMI、AM
2.AM3と、その要素長(長さ)4,8.8を含む共
有変数AAにかかる情報を共有変数情報領域29に格納
する。なお、参照情報は初期値とし°ζ未参照とし°C
おく、タスク間共有変数宣言文1.11,112につい
ても同様の処理を行い、タスク間共有変数CC,DDに
かかる情報を共有変数情報領域29に格納する。
次いで、プログラム単位解析処理手段22はタスク間共
有変数DDの要素DM2と配列Cの領域を結合するEQ
UI VALENCE文113を検出すると、この領域
結合によりタスク間共有変数の他の要素が領域結合され
るか否かを調べる。この場合、配列Cは複素型なので要
素長が40であり、要素長20の要素DM2と要素長2
0の要素DM3の真領域に対応するので、要素DM3も
配列Cと領域結合され、要素DM2.DM3はI要素と
なる。そごで、共有変数情報領域29内のプログラム単
位共有変数情報101(第3図参照)の共有変数DDの
情報を、要素名DMIをもつ長さ4の要素と要素名DM
2.DM3、Cをもつ長さ40の要素とから構成される
ように変更する。
次いで、プログラム単位解析処理手段22はタスク起動
文120を検出すると、手続き名、引数情報およびタス
ク起動であるというプログラム構成情報を構成情報領域
2日に格納する0手続き呼び出し文121についても同
様に処理する。
次いで、プログラム単位解析処理手段22はタスク間共
有変数AAの要素AM3を参照する共有変数参照文13
0を検出すると、プログラム単位共有変数情報101 
(第3図参照)のタスク間共有変数AAの要素AM3の
参照情報を参照有に変更する。共有変数参照文131,
132についても同様に処理する。
これらの処理を他のプログラム単位200,300.4
00,500に対しても実行し、第3図に示す如きプロ
グラム単位共有変数情9!201゜301.401,5
01を共有変数情報領域29上に生成する。
次に、プログラム解析機構21のタスク単位解析処理手
段23は、構成情報領域28のプログラム構成情報を参
照し、プログラム単位をタスク毎に分類する。すなわち
、プログラム名MAINのプログラム単位100は手続
き副プログラム名りであるプログラム単位200を呼び
出しており、プログラム単位200は他の手続き副プロ
グラムを呼び出していないので、プログラム単位100
とプログラム単位200とは同一のタスクに属すると判
定し、そのように分類する。同様に、プログラム単位1
00からタスク起動される手続き副プログラム名Aのプ
ログラム単位300は手続き副プログラム名B、 Cの
プログラム単位400゜500を呼び出しており、プロ
グラム単位400゜500は他の手続きを呼び出してい
ないので、プログラム単位300,400,500は同
一のタスクに属すると判定し、そのように分類する。す
なわち、プログラム単位100,200により構成され
るタスク(以下、タスクlOと呼ぶ、)と、プログラム
単位300,400,500により構成されるタスク(
以下、タスク20と呼ぶ、)との2つのタスクに分類さ
れる。
これらのタスク毎にプログラム単位を分類する処理が終
了すると、タスク単位解析処理手段23は、タスク10
を構成するプログラム単位100゜200のプログラム
単位共有変数情報101,201(第3図参照)を参照
し、宣5′されているタスク間共有変数AA、CC,D
Dのタスク内での要素の再構成を行い、共存変数情報領
域29上にタスク単位共有変数情報11の生成を行う、
この場合、タスク間共存変数AA、CCは、単一のプロ
グラム単位100でのみ宣言されているので、参照した
プログラム単位共有変数情報101の情報をそのまま使
用し、第4図に示すように、タスり単位共有変数情報1
1を生成する。一方、タスク間共存変数DDは、複数の
プログラム単位100.200で宣言されているので、
各々の要素を対応させる。すなわち、要素の対応の結果
、2番目の要素の重なりが不一致なので、領域の重なり
の最大値を1要素とするように情報を変更する。
これにより、タスク間共有変数DDは、長さ4でタスク
内で参照有の要素と長さ40で参照有の要素とし′ζタ
スク単位共有変数情報11が生成される。
他のタスク20についても同様の処理を行い、第4図に
示すようなタスク単位共有変数情報21を生成する。
次に、プログラム解析i横21のタスク間解析処理手段
24は、共:f変数情報領域29のタスク単位共有変数
情報11.21(第4図参照)を参照し、タスク間共有
変数AA、CC,DDを1つずつ抽出し、そのタスク間
共有変数の部分毎に参照情報を付したタスク間共有変数
情報31を共有変数情報領域29上に生成する。すなわ
ち、タスク間共有変数AAを抽出した際には、このタス
ク間共有変数AAを参照するタスクを部分毎に検索し、
この場合、タスク間共有変数AAの先頭から長さ12の
部分がプログラム単位300,400゜500から構成
されるタスク20でのみ参照され、次の長さ8の部分が
プログラム単位100,200から構成されるタスク1
0とプログラム単位300.400,500から構成さ
れるタスク20との両者で参照されているため、第5図
に示すように、その旨の情報を共有変数名AAと対応付
けてタスク間共有変数情報31を生成する。
他のタスク間共有変数CC,DDについても同様の処理
を行う。
次に、プログラム生成機構25の共有変数情報編集・出
力処理手段26は、共有変数情報領域29のプログラム
単位共有変数情報101,201゜301 401.5
01.タスク単位共有変数情報11,21.タスク間共
有変数情報31を参照し、所定の形式に編集した上で、
第6図に示す如き共有変数情報リスト4を出力する。こ
れは、プログラム開発者等の参考に供される。
最後に、プログラム生成機構25のプログラム変換処理
手段27は、原始プログラムlを再度入力し、共有変数
情報領域29のタスク間共有変数情報31(第5図参照
)を参照し゛ζ原始プログラム1中の各プログラム単位
中のタスク間共有変数の宣言のうち、自タスクのタスク
内共有変数とみなせるものはタスク内共有変数の宣言に
置き換えるかタスク内共有変数であることの指示行を原
始プログラム1中に挿入し、別タスクのタスク内共有変
数とみなせるものは原始プログラム1中から削除して、
新たな原始プログラム3を生成する。
すなわち、プログラム単位100(第2図参照)中のタ
スク間共有変数情報編集110を検出すると、タスク間
共有変数情報31を参照し、当該タスク間共有変数AA
がタスク内共有変数であるか否かを判定する。この場合
、タスク間共有変数宣言文110のタスク間共有変数A
Aの3要素AMI。
AM2.AM3の中で要素AMI、AM2に相当する先
頭から長さ12の部分が、プログラム単位100の属す
るタスク10とは別のタスク20の実質的なタスク内共
有変数であるごとが判明するため、タスク間共有変数A
Aから要素AMI、AM2を削除し、第7図に示すよう
に、1つの要素AM3から構成されるタスク間共有変数
AAのタスク間共有変数宣言文110aをプログラム単
位100中に生成する。
次いで、プログラム単位100(第2図参照)中からタ
スク間共有変数宣言文111を検出すると、タスク間共
有変数CCは全要素がプログラム単位100の属するタ
スク10とは別のタスク20の実質的なタスク内共有変
数なので、この宣言文111を削除する。
次いで、プログラム単位100(第2図参照)中からタ
スク間共有変数宣言文112を検出すると、タスク間共
有変数DDは全要素がプログラム単位100の属するタ
スク10の実質的なタスク内共有変数なので、この宣言
文112を第7図に示すようにタスク内共有変数宣言文
112aに変更する。
同様の処理を他のプログラム単位についても実行し、i
終的に第7図全体のような原始プログラム3を生成する
〔発明の効果〕
以上説明したように、本発明のタスク内共有変数検出処
理力式にあっ°Cは、原始プログラムからタスク内共有
変数とみなせるタスク間共有変数を検出してタスク内共
有変数に置き換える等の処理が自動的に行えるため、煩
雑な作業から人間が解放されると共に、処理時間が大幅
に短縮される効果がある。また、検出漏れ等が発生しな
いため、プログラム実行時の効率も充分に高めることが
できる。
【図面の簡単な説明】
第1図は本発明のタスク内共有変数検出処理方式の一実
施例を示す構成図、 第2図は原始プログラムの例を示す図、第3図はプログ
ラム単位共有変数情報の例を示す図、 第4図はタスク単位共有変数情報の例を示す図、第5図
はタスク間共有変数情報の例を示す図、第6図は共有変
数情報リストの例を示す図および、 第7図は変換後の原始プログラムの例を示す図である。 図において、 l・・・・・・原始プログラム 2・・・・・・プログラム解析・生成機構21・・・プ
ログラム解析機構 22・・・プログラム単位解析処理手段23・・・タス
ク単位解析処理手段 24・・・タスク間解析処理手段 25・・・プログラム生成機構 26・・・共有変数情報編集・出力処理手段27・・・
プログラム変換処理手段 28・・・構成情報領域 29・・・共有変数情報領域 3・・・・・・原始プログラム 4・・・・・・共有変数情報リスト 原始プログラムの例を示す図 第 図 タスク単位共有変数情報の例を示す図 第 図 タスク間共有変数情報の例を示す図 第 図 変換後の原始プログラムの例を示す図 第 図

Claims (1)

  1. 【特許請求の範囲】 マルチプロセッサでの実行を記述可能な高級プログラミ
    ング言語で記述された原始プログラムからタスク内共有
    変数とみなせるタスク間共有変数を検出してタスク内共
    有変数に置き換える処理方式において、 原始プログラムを入力してプログラム単位共有変数情報
    およびプログラム構成情報を生成するプログラム単位解
    析処理手段と、 生成されたプログラム単位共有変数情報およびプログラ
    ム構成情報を参照してタスク単位共有変数情報を生成す
    るタスク単位解析処理手段と、生成されたタスク単位共
    有変数情報を参照してタスク間共有変数情報を生成する
    タスク間解析処理手段と、 生成されたタスク間共有変数情報を参照して原始プログ
    ラム中のタスク間共有変数の宣言のうち、自タスクのタ
    スク内共有変数とみなせるものはタスク内共有変数の宣
    言に置き換えるかタスク内共有変数であることの指示行
    を原始プログラム中に挿入し、別タスクのタスク内共有
    変数とみなせるものは原始プログラム中から削除して、
    新たな原始プログラムを生成するプログラム変換処理手
    段とを備えたことを特徴とするタスク内共有変数検出処
    理方式。
JP1327754A 1989-12-18 1989-12-18 タスク内共有変数検出処理方式 Expired - Lifetime JP2527055B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1327754A JP2527055B2 (ja) 1989-12-18 1989-12-18 タスク内共有変数検出処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1327754A JP2527055B2 (ja) 1989-12-18 1989-12-18 タスク内共有変数検出処理方式

Publications (2)

Publication Number Publication Date
JPH03188529A true JPH03188529A (ja) 1991-08-16
JP2527055B2 JP2527055B2 (ja) 1996-08-21

Family

ID=18202615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1327754A Expired - Lifetime JP2527055B2 (ja) 1989-12-18 1989-12-18 タスク内共有変数検出処理方式

Country Status (1)

Country Link
JP (1) JP2527055B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000029742A (ja) * 1998-05-21 2000-01-28 Lucent Technol Inc オ―プンシステムを閉じる方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62216042A (ja) * 1986-03-17 1987-09-22 Nec Corp デ−タ領域のメモリ割付方式
JPH01295336A (ja) * 1988-05-23 1989-11-29 Nec Corp クリティカルセクション最適化方式

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62216042A (ja) * 1986-03-17 1987-09-22 Nec Corp デ−タ領域のメモリ割付方式
JPH01295336A (ja) * 1988-05-23 1989-11-29 Nec Corp クリティカルセクション最適化方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000029742A (ja) * 1998-05-21 2000-01-28 Lucent Technol Inc オ―プンシステムを閉じる方法

Also Published As

Publication number Publication date
JP2527055B2 (ja) 1996-08-21

Similar Documents

Publication Publication Date Title
Walker et al. MPI: a standard message passing interface
Olsson et al. A dataflow approach to event‐based debugging
JP2005510790A (ja) ソフトウェア・オブジェクトを作成する方法と装置
JPS6325733A (ja) コンパイラ処理方式
Kaiser Incremental dynamic semantics for language-based programming environments
JPH03188529A (ja) タスク内共有変数検出処理方式
Kalé The reduce-or process model for parallel execution of logic programs
JP3102030B2 (ja) プログラム作成装置
Dhamdhere Register assignment using code placement techniques
US6233732B1 (en) Compiling system using intermediate codes to store a plurality of values
Chandy et al. A deterministic notation for cooperating processes
Barghouti et al. Implementation of a knowledge-based programming environment
Lima et al. A formal semantics for sequence diagrams and a strategy for system analysis
Allard et al. Real-time programming in Common Lisp
Chandy et al. A notation for deterministic cooperating processes
Bouteldja et al. Buidling an Embedded Knowledge-Based Application Using Abstractions.
Matsumoto Automatic software reuse process in integrated case environment
Wu Methodology of generating recovery procedures in a robotic cell
Davies CAREL: A visible distributed lisp
JPH0337201B2 (ja)
Wakita First class continuation facilities in concurrent programming language Harmony/2
Darscht et al. An object-oriented approach to handle complex real-time industrial automation projects
Aridor et al. Design of an Actor language for implicit parallel programming
JPS6347838A (ja) 知識継承制御方式
Slaby et al. The use of parallel genetic algorithms for optimization in the early design phases