JPH06332689A - プログラムの表示方法およびプログラムの編集受付け方法 - Google Patents

プログラムの表示方法およびプログラムの編集受付け方法

Info

Publication number
JPH06332689A
JPH06332689A JP5120190A JP12019093A JPH06332689A JP H06332689 A JPH06332689 A JP H06332689A JP 5120190 A JP5120190 A JP 5120190A JP 12019093 A JP12019093 A JP 12019093A JP H06332689 A JPH06332689 A JP H06332689A
Authority
JP
Japan
Prior art keywords
program
graphic
processing unit
display
processing
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
JP5120190A
Other languages
English (en)
Inventor
Tadashi Kamiwaki
正 上脇
Shinichiro Yamaguchi
伸一朗 山口
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 JP5120190A priority Critical patent/JPH06332689A/ja
Publication of JPH06332689A publication Critical patent/JPH06332689A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】複数の処理を並列に実行するプログラムを、視
覚的に、図形を用いて階層的に作成可能とする。 【構成】プログラムを構成する各処理421、422、
424、各処理でアクセスするデータ、処理間の同期4
4の指定を、それぞれ対応する図形の指定によって受付
け、各処理の起動、被起動関係、データへの書き出し、
読み出し、処理間の同期関係を、対応する図形間を結ぶ
矢印の指定によって受け付ける。また、処理423の内
容は、必要に応じて、さらに、細かな処理を表す図形4
231、..、4234、4240の組み合わせで階層
的に受けつける。最下位の階層の処理の内容の定義は、
テキスト形式で受け付ける。また、矢印の指定を受け付
けた場合に、この矢印の表す処理を指定する命令を、対
応する図形の処理を定義するテキスト中に挿入する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数のプロセッサを有
する計算機上で、複数の処理を並列に実行可能なプログ
ラムを開発するための技術に関するものである。
【0002】
【従来の技術】従来のテキスト型のプログラムは、シリ
アルなプログラムを表現するのには適しているが、並列
に処理が進行するプログラムを表記するには適していな
い。そこで、最近では、図形を用いて視覚的にプログラ
ムを作成するツールが注目されている。図形は、2次元
的広がりがあるため、単なる手続きの順番のみではな
く、平行して実行される手続も同時に記述することが可
能となる。
【0003】また、並列プログラムの実行トレースを取
り、その結果を視覚的に表示する技術も開発されてい
る。並列プログラムは、一般にその性能を引き出すこと
が難しい。そこで、性能上の問題点の解析と、その問題
を解決するためのプログラム変更とを繰り返すことによ
り性能をチューニングしていく。実行トレースを解析す
ることは問題点の抽出に有効である。
【0004】これらの技術は、たとえば、Tutorial Tex
t: Software Tools for Visualization of Parallel an
d Distributed Programs and Systems,COMPSAC'91,IEEE
Computer Society等に述べられている。
【0005】また、従来のテキストで記述した並列プロ
グラムなどのデバッグに関しては、特開平2ー2304
32号公報、特開平3ー160532号公報、特開昭6
3ー317840号公報記載の技術が知られている。
【0006】
【発明が解決しようとする課題】しかし、前記「Softwa
re Tools for Visualization of Parallel and Distrib
uted Programs and Systems」記載の技術では、図形に
よる階層的なプログラミングについて考慮されておら
ず、複雑なプログラムを記述するのに適していない。ま
た、図形を用いたプログラミングのみでは、必ずしも、
設計条件が厳しい処理について充分に詳細に記述できな
い場合もある。また、処理を並列に実行するプログラム
では、処理間で共通して使用するデータの取扱いが問題
となるが、このことについて特別の考慮が払われていな
い。
【0007】そこで、本発明は、階層的に図形を用いた
プログラムの編集を可能とすることを目的とする。ま
た、並列に実行される処理の間で共通に使用されるデー
タおよび、これに対する操作を、視覚的に良好に表現す
ることを目的とする。
【0008】また、さらに、本発明は、並列に実行され
る処理の間で共通に使用されるデータの値の確定性を保
証することを目的とする。
【0009】
【課題を解決するための手段】前記目的達成達成のため
に、本発明は、たとえば、表示装置を備えた計算機にお
いて、複数の処理単位より階層的に構成されるプログラ
ムの構造の編集を受け付けるプログラム編集方法であっ
て、複数の処理処理単位をそれぞれ表す複数の図形と、
関係付ける複数の処理単位に対応する複数の図形間を結
び、複数の処理単位間の関係を表す図形の、前記表示装
置の表示上における階層的な編集によって、前記プログ
ラムを構成する複数の前記処理単位の階層的な構造の編
集を受付けることを特徴とするプログラムの編集受付方
法を提供する。
【0010】
【作用】本発明の一実施態様によれば、処理単位は四角
の図形で表現され、共有データは楕円などの図形で表現
される。画面上にこれらの図形を配置し、それらを矢印
で結合することにより並列プログラムが作成される。各
処理単位の内容は、テキストにより記述することも可能
であるが、さらに図形と矢印で定義することも可能であ
る。このように、処理内容を階層的に記述することがで
きる。
【0011】また、さらに、処理単位から共有データへ
のアクセスを定義する際には、ツールがそのアクセスと
他の処理単位からのアクセスの関係を調べ、このアクセ
スにより共有データの値が不確定にならないか判断す
る。不確定になると判断された場合には、その原因とな
る処理とアクセスを表している図形の色を変化させてユ
ーザに警告する。
【0012】
【実施例】以下、本発明に係る計算機の一実施例につい
て説明する。
【0013】まず、図1に、本実施例に係る計算機の構
成を示す。
【0014】図示するように、本実施例に係る計算機
は、複数のプロセッサ141〜143が協調して動作す
る並列計算機である。図中、13は、並列計算機システ
ム全体を表しており、11が計算機のキュービクルを表
している。141〜143のプロセッサは、バス63に
接続されている。全てのプロセッサは、このバスを通し
てメモリ18にアクセスする。ディスク15もバス63
に接続されており、プロセッサはメモリ上のデータをデ
ィスク15に書き込むことができ、また、ディスク15
上のデータをメモリ18に読みだしてくることもでき
る。16は端末コントローラであり、これには、ディス
プレイ17、キーボード65、マウス64が接続されて
いる。各プロセッサ141〜143は、バス63を通し
て端末コントローラにアクセスする。
【0015】図中、メモリ18はの内部には、メモリ1
8に記憶されている内容を示した。19はオペレーティ
ングシステム(OS)、20はライブラリ関数、211
〜213はプロセスである。また、メモリ18は、プロ
セス間で共有されるデータを記憶する領域23、プロセ
ス間で共有されるプログラムを記憶する領域24、トレ
ースデータを記憶される領域22を有している。ここ
で、本実施例に係る並列計算機は、プロセスを処理実行
の単位としている。プロセッサ141〜143が、プロ
セスの情報をロードして、それを元にして各プログラム
を実行する。
【0016】図2は、プロセス211の詳細を示したも
のである。
【0017】図中、2611〜2612はプロセッサの
レジスタを退避する領域である。プロセッサ141〜1
43は、時分割でプロセスを切り替えて処理を行う。プ
ロセッサが、あるプロセスの処理を中断して、別のプロ
セスに実行を移すときには、現在のレジスタの状態を2
61の領域に退避する。中断されたプロセスの処理を再
開するときには、この領域の内容を読みだしてプロセッ
サのレジスタにセットする。レジスタ退避領域が複数有
るのは、複数のプロセッサが、並行して一つのプロセス
の複数のプログラムを実行できるようにするためであ
る。321〜323は、プロセスに固有のプログラムで
あり、271は、プロセスに固有のデータが記憶される
領域である。プロセス間の通信は、相手のプロセスのメ
ッセージキュー281にメッセージを送ることによりな
される。
【0018】次に、本実施例に係る計算機におけるプロ
グラムの実行環境について説明する。
【0019】図3に、本計算機上に実現されるプログラ
ムの実行環境を示す。
【0020】図中、13は並列計算機であり、前述した
ように複数のプロセッサ14、ディスプレイ17、キー
ボード65、マウス64を備えている。
【0021】また、図中のプログラム開発環境74、コ
ンパイラ29、トレーサ33は並列計算機上で実行され
るプロセスとして実現されている機能である。
【0022】ソースプログラム35は、プログラム開発
環境74によって作成されたプログラムである。ソ−ス
プログラム35は、コンパイラ29に読み込まれ(91
2)、コンパイルされた後、オブジェクトプログラム3
6として出力される(913)。プロセッサ14は、オ
ブジェクトプログラム36を実行して、計算データを処
理する(917、918)。プログラム開発環境74中
のプログラムであるデバッガは、ソースプログラムの間
違いを捜すためのプログラムであり、オブジェクトプロ
グラム36を実行中のプロセッサを制御したり(91
5)、計算データ37を読んだり(909)書いたり
(908)する。トレーサ33は、プロセッサ14がオ
ブジェクトプログラム36を実行した履歴を読み込み
(916)、トレースデータ34として記録する(91
1)。プログラム開発環境74中のプログラムである並
列度評価プログラムは、トレースデータを読みだして
(910)、プログラムの並列度、通信の頻度等の計算
を行う。
【0023】次に、図4に、プログラム開発環境74と
ソ−スプログラム35の詳細を示す。
【0024】図示するように、プログラム開発環境74
は、プログラムとして、自プロセスに固有のプログラム
として、前述したようにエディタ30、デバッカ31、
並列度評価プログラム32を有している。エディタプロ
グラム30は、ソースプログラム35の作成および変更
を行う。デバッガ31、並列評価プログラム32は、ソ
ースプログラム35のデバッグおよび評価を行う。ま
た、プログラム開発環境74は、ソースプログラム35
の内容をグラフィカルにディスプレイ17に表示し、マ
ウス61やキーボード65からの指示をエディタ30、
デバッガ31、並列度評価プログラム32に伝えるプロ
グラムGUI56を有している。
【0025】さて、本実施例では、プログラムを、当該
プログラムが行う処理の組み合わせを、処理を表す図形
の組み合わせで記述することにより作成/編集する。し
たがい、ソースプログラム35は、図形を定義するテー
ブル等より構成される。図中、971は図形の種類や位
置関係を定義する図形定義テーブル、972は処理の詳
細をさらに図形で表現する場合にその内容を定義する図
形内部定義テーブル、973は処理の詳細をテキストで
表現する場合にその内容を定義するテキスト定義テーブ
ル、974と975は、処理間の同期を行う関数joi
nとバリアの定義を行うjoin定義テーブルとバリア
定義テーブル、973は各処理に使用するデータを定義
するテーブルである。これらのテーブルを組み合わせる
ことにより、図形とテキスト、図形同士、テキスト同士
の関係を表現することができる。すなわち、これらのテ
ーブルを組み合わせることによりプログラムを構成する
処理の組み合わせを定義できるので、これらのテーブル
を組み合わせによってプログラムを表現することができ
る。
【0026】ここで、本実施例におけるプログラムの記
述法とソースプログラム35の各テ−ブルとの関係を説
明する。
【0027】図4は、本実施例に従って記述した並列プ
ログラムの一例である。
【0028】プログラムは、図中、40のスタート記号
の所から始まる。図形421〜424は、それぞれ一つ
の処理を表している。処理の上の辺に向かっている矢印
は、処理の流れを示している。すなわち、最初に541
の矢印により、421の処理1が起動され、処理1の中
で処理2(422)と処理3(423)の起動が行われ
る(491、492)ことを示している。すなわち、処
理1の残りの部分と処理2、処理3が並列に実行される
ことになる。
【0029】また、45は処理間で共通にアクセスされ
るデータを表している。矢印532、531は、処理2
と処理3が、このデータに書き込みを行うことを表して
いる。44は、関数joinの実行を表している。関数
joinは、後述するように分かれて並列に動作してい
る処理を1つにまとめる働きをする。44の上の辺に向
いている矢印(521〜523)の出元の処理(421
〜423)の全てが終了すると、下辺から出ている矢印
542が向いている処理4(424)が起動されること
になる。エンド記号41は、実行がエンド記号41に来
るとプログラムが終了することを示している。
【0030】また、処理3を表す図形423は、四角が
2重になっている。これは、この処理に関しては、さら
に詳しい処理内容が図形で定義されていることを表して
いる。詳細な処理内容は、図6に示すように、やはり図
形の組み合わせで階層的に記述することができる。すな
わち図6中、4231〜4234は処理、4235〜4
239は処理の流れ、4240はjoinを表してお
り、これらの記法は、図5で説明したものと同じであ
る。また、図6において、処理3−2を表す4232の
四角が二重になっているのは、この処理に関してはさら
に細かい処理の記述が表示可能であることを示してい
る。
【0031】一方、図5、6において、1重の四角で表
されている処理の内容は、図7に示すように、テキスト
で形式で記述する。図7は、テキスト4222で記述さ
れた図5の処理422を示している。
【0032】なお、このような、ソ−スプログラムの記
述は、後述するようにディスプレイ17の表示上で行わ
れる。
【0033】さて、ソースプログラム35の各テ−ブル
は、このようなプログラムの記述法に対応して設けられ
ている。
【0034】図8は、図形定義テーブル971を示して
いる。
【0035】このテーブルには、ソースプログラム35
に含まれる全ての図形の内容が定義されている。
【0036】図8において、9701〜9711は、そ
れぞれレ−コ−ドであり、図6のプログラムを構成する
図形の、それぞれに対応する。各レコ−ドにおいて、メ
ンバ9601はテーブルのレコ−ドの番号、メンバ96
02は図形の名称、メンバ9603とメンバ9604は
図形を表示する座標、種類メンバ9605はその図形の
種類、メンバ9606はその図形に対応する処理の内容
が定義されている場所、メンバ9608はその図形によ
り詳細な定義があるときに、その詳細な定義の内容を表
示するかどうかを示している。
【0037】例えば、レコ−ド9701は図6の処理1
の定義となっている。その名称は処理1であり、表示す
る座標は(300、50)であり、種別はテキストであ
り、これは、この図形に対応する処理の詳細定義がテキ
ストで記述されており、この詳細定義がメンバ9606
で指定されるテキスト定義テーブル973の位置、すな
わち、1番目のレコ−ドに記されている。現在、詳細定
義はオープン、すなわち、表示している状態にない。
【0038】また、9703は図6の処理3(423)
の定義となっている。その名称は処理3、表示する座標
は(100、75)である。図形の種類は図形であり、
これは、この図形に対応する処理の詳細定義がその詳細
定義がさらに図形で記述されていることを表しており、
この詳細定義がメンバ9606で指定される図形内部定
義テーブル972のレコ−ド、すなわち、2番目のレコ
−ドに記されていることを表している。また、図6に示
すように、処理3は、現在、詳細定義をオープンした状
態にある。
【0039】図9は、図形内部定義テーブル972を示
しており、図形に対応する処理の詳細定義をさらに図形
で行ったときの、その図形の情報が記されている。
【0040】図中、9610はテーブルのレコ−ド番号
であり、図形定義テ−ブル971の定義番号メンバ96
06により指定される。レコ−ド9713では、図8の
9703の定義番号メンバに示されている通り、図6の
処理3の詳細定義が記されている。
【0041】ここで、後述するように各矢印は、端子リ
スト(図11)によって管理され、図形の所属関係は図
形リスト(図10)によって管理される。
【0042】図形内部定義テーブル972では、他の図
形との間の矢印と、対応する図形に詳細定義に含まれる
図形を端子リスト(図11)と、図形リスト(図10)
のレコ−ドを指定することにより定義する。
【0043】すなわち、図9において、メンバ9611
は、図形リスト中における、この詳細定義に含まれる図
形のレコ−ドの先頭位置を表す。メンバ9612は他の
図形からこの処理に入ってきている矢印の、端子リスト
中のレコ−ドの先頭位置を、メンバ9613はこの図形
から他の図形に出ていっている矢印の、端子リスト中の
レコ−ドの先頭位置を示している。
【0044】図10は、図形リストを示している。
【0045】メンバ9620はレコ−ドの番号、次メン
バ9622はレコ−ドを連結するためのポインタであ
る。9621は、このレコ−ドに登録された図形の番号
であり、これは、図形定義テ−ブルのレコ−ドの番号9
601に一致する。
【0046】ここで、図6の処理3−1の図形(423
1)は図形定義テ−ブル971の7番目のレコ−ド97
26に、処理3−2の図形(4232)は8番目のレコ
−ドに9728、処理3−3の図形(4233)は9番
目のレコ−ド9729に、joinに対応する図形43
20は10番目のレコ−ド9729に、処理3−4の図
形(4234)は11番目のレコ−ド97330に登録
されている。
【0047】たとえば、図9の9713に示されている
通り9726が図6の処理3(423)の詳細定義に含
まれる図形の先頭レコ−ドである。レコ−ド9726に
は、7番目のレコ−ドに登録されている処理3−1の図
形についてのものであり、レコ−ド9726の次のポイ
ンタが8になっているのは図形リストの8番目のレコ−
ド9727も、処理3に含まれることを示している。以
下同様にレコ−ド9730までが連なっている。レコ−
ド9730の次メンバは0になっており、これで処理3
についてのリストが終わりであることを示す。
【0048】図11は、端子リストを定義している。
【0049】このリストにより、図形と図形を関係付け
ることが出来る。9630はレコ−ドの番号である。メ
ンバ9631は矢印の元となっている図形の番号、メン
バ9632は先となっている図形の番号であり、これら
は、図形定義テ−ブルのレコ−ドの番号9601に一致
する。メンバ9633は矢印の接続する端子が図形の上
下左右のどこに位置しているかを示す。次メンバ963
4はレコ−ドを連結するためのポインタであり、図形リ
スト(図10)のポインタ9622と同様の働きをす
る。
【0050】例えば、図9の9713では、図6の処理
3からの矢印の出口の情報が端子リストの4番目のレコ
−ド9734から始まるレコ−ドに登録されていること
が記されている。図6の処理3には出口が2つある。1
つは処理3−2(4232)から出て、データ1に入っ
ているもの、もう1つは処理3−4から出て、join
に入っているものである。これらの出口がそれぞれ、図
11の、ポインタ9634により連結されたレコ−ド9
734と9735に定義されている。
【0051】図12は定義テーブルを示している。
【0052】図8の9701では処理1の詳細定義がテ
キスト定義テーブルのレコ−ド1に示されていることが
記されている。9741がこの定義であり、処理1のテ
キストの内容が処理1という名前のファイルに格納され
ていることを示している。また、処理1の矢印の入口情
報が、端子リスト(図11)の6番目のレコ−ドから、
出口情報が7番目のレコ−ドから存在することを示して
いる。
【0053】図13、図14は、それぞれ前述したjo
inとバリアの定義をしているテーブルである。これら
のレコ−ドは、図形定義テ−ブル(図8)の種別960
5と定義番号9606により指定される。これらのテ−
ブルは、両方とも入口と出口の端子の管理を行ってい
る。
【0054】図15は、データを定義しているテーブル
である。このレコ−ドは、図形定義テ−ブル(図8)の
種別9605と定義番号9606により指定される。本
テ−ブルは、データの型とそのデータに関する排他制御
を行うロックの初期値を定義している。
【0055】以下、プログラム開発環境74の動作の詳
細について説明する。
【0056】まず、GUI56の動作について説明す
る.GUI56は、メウス64やキ−ボ−ド65による
指示をエディタ30、デバッガ31、並列度評価プログ
ラム32に伝える等、プログラム開発環境74全体を制
御する役割を担う。
【0057】図16に、GUI56が、ディスプレイ1
7に表示する画面を示している。図示するように、GU
I56は、前述したように、ソースプログラム35の内
容をグラフィカルにディスプレイ17に表示する。ま
た、何も図形が表示されていない場所にマウスカーソル
を移動して、マウスをクリックすると、モードメニュー
92を新たに表示する。モードメニューには5つのボタ
ンがある。921のエディットボタンをクリックする
と、エディタ30に処理が移り、プログラムを編集する
モードに移行する。922のコンパイルボタンをクリッ
クすると、コンパイラ29が起動されプログラムがコン
パイルされる。923のランボタンをクリックすると、
コンパイルされたオブジェクトプログラムが実行され
る。924のデバッグボタンをクリックすると、デバッ
カ31に処理が移り、デバッグモードに移行する。92
5のトレースボタンをクリックすると、プログラムを実
行し、そのトレース結果を記録した後、トレ−サ33が
起動され、トラ−ス結果の解析結果が表示される。
【0058】GUI56は、このような処理を、プロセ
ス固有データ271として備えたイベントベクトルテー
ブルと、ウィンドウテーブルを用いて行う。
【0059】図17に、イベントベクトルテーブルを示
す。
【0060】本テ−ブルには、あるウィンドウ(ボタ
ン、図形、矢印等も含む)に対して、あるイベントが発
生した時、どのような動作をすべきかが登録されてい
る。9686はテーブルの要素を指定するための番号、
9687はウィンドウの番号であり、ウィンドウテーブ
ルのインデックスとなっている。9688はイベント種
別である。イベントの種別としては、マウスのボタンが
押されたクリック、マウスのカーソルのウィンドウへの
出入り、キーボード入力等がある。
【0061】9689は、生時に実行する関数のアドレ
スである。9784から9788までの各レコードは、
モードメニュー(92)の各ボタンに対するイベントの
定義である。9748を例にとるとウィンドウの定義が
ウィンドウテーブルの1番目に記されており、そのウィ
ンドウ内にマウスのカーソルがある時にマウスのボタン
を押すとeditという関数が呼び出されることを示し
ている。editという関数は、エディタを起動する。
本テーブルに登録されているイベントは、画面に表示さ
れていないウィンドウに対するものも登録可能である。
また、本テーブルへの登録は、GUIプログラムの初期
設定の部分でもなされるが、編集の段階で処理を表す図
形や矢印が新たに作成された時などにも、それに対する
イベント処理が動的に登録される。
【0062】図18は、ウィンドウテーブルを示してい
る。
【0063】本テ−ブルには、ウィンドウ(ボタン、図
形、矢印等も含む)に関する情報が登録されている。画
面に表示されていないウィンドウについても、その情報
がここに登録されている。9690はテーブルの要素を
指定するための番号、9691はウィンドウの名称、9
692と9697はそれぞれウィンドウを表示するX座
標とY座標、9693と9694はそれぞれウィンドウ
の縦と横の大きさ、9695はウィンドウの種別、96
96はそのウィンドウが現在表示中であるかを示してい
る。9790〜9794は、モードメニューの各ボタン
の情報を表している。
【0064】図19に、GUI56の行う処理の処理手
順を示す。
【0065】図中、2510から2514は初期設定で
あり、2510では、図16の画面にあるスクロールボ
タン(471〜474)やスクロールバー(481〜4
82)のイベントに対する処理を図17のイベントベク
トルテーブルに登録し、座標等を図18のウィンドウテ
ーブルに登録している。また、実際にそのウィンドウの
表示も行なう。2511でも同様に、図16のモードメ
ニュー(92)の各ボタン(921〜925)の情報を
イベントベクトルテーブルとウィンドウテーブルに登録
し、ウィンドウを表示している。2512、2513、
2514についても、それぞれ、後述するデバッグ用メ
ニューの各ボタン、部品メニューの各ボタンの情報を登
録する。ただし、2512〜2514については、表示
はしない。
【0066】2515では、イベントが発生するのを待
っている。発生すると、2516で、発生したイベント
を図17のイベントベクトルテーブルで検索し、251
7でそのイベントに対応した関数を呼び出す。
【0067】また、GUI56は、エディタ30等の要
求に応じて、ソ−スプログラムのディスプレイ17への
表示を行う。
【0068】図20には、ソ−スプログラムを表示する
ためにGUI56は実行する処理手順を示す。
【0069】図示するように、まず、ステップ2412
で、これから図形を表示するための座標系の原点を画面
の原点に設定する。ステップ2413では、図9の図形
内部定義テーブルの先頭レコードを読み込み、それをn
1に代入する。この場合、9712のレコ−ドが代入さ
れる。2714では、図11の端子リストより、n1の
入口リストメンバ9612が指すレコードを読み込み、
t1に代入する。例の場合9712の入口リストメンバ
の値は1なので、レコ−ド9731が読み込まれる。
【0070】ステップ2415ではt1の位置メンバに
従って端子を表示する。レコ−ド9731の位置メンバ
9633の値は上なので、画面の上部にプログラムの開
始を表す下三角を表示する。次に、ステップ2416
で、t1が最後のレコ−ドであるかを、次メンバ963
4の値を調べることにより判断している。次の要素があ
った場合は、ステップ2417に進み、t1に次の要素
を読み込み同様な処理を繰り返すが、9731の次メン
バの値は0であり、次の要素がないことがわかる。ない
場合には、ステップ2418に進み、n1の出口リスト
メンバについて、入口リストと同様な処理を行なう(ス
テップ2418〜2421)。
【0071】例の場合には、出口の端子として9732
があるので、画面の下部にプログラムの終了を表す上三
角を表示する。これが終るとステップ2422で、n1
を引数として、プログラム表示再帰処理を呼び出し、画
面を構成する他の図形を描画する。
【0072】図21に、プログラム表示再帰処理の処理
手順を示す。
【0073】本処理では、まず、ステップ2432で引
数として受けとった、図形内部定義のレコードをn2と
する。図20で用いた例では、9712のレコ−ドを引
数として渡しているので、この値がn2に代入される。
ステップ2433では、n2の図形リスト9611の値
が指すレコードを図10の図形リストより読み、f1と
する。レコ−ド9712の図形リストメンバの値は1な
ので、図形リストのレコ−ド9720がf1に代入され
る。ステップ2434では、f1の図形番号メンバが指
すレコードを図8の図形定義テーブルより読み、d1に
代入する。9720の図形番号メンバの値は1なので、
図形定義テーブルのレコ−ド9701がd1に代入され
る。ステップ2435でd1の種別メンバを調べてい
る。その値に応じてステップ2436から2440で、
それぞれに対応した図形を表示している。ここでは、レ
コ−ド9701の種別メンバの値は、テキストなので、
処理内容がテキストで定義されていることを表す図形が
表示される。
【0074】次に、ステップ2441でf1が、図形リ
ストの連結の最後であるか調べている。最後である場合
には、本処理を呼んだ処理にリターンし、そうでない場
合には、ステップ2442でリストの次の要素をf1に
代入して同様の処理を繰り返す。レコ−ド9720の次
メンバの値は2なので、レコ−ド9721がf1に代入
される。レコ−ド9721の図形番号メンバは、図8の
9702を指しているので、図6のデータ1の図形が表
示される。以下、同様に、図10のリストの連結が途切
れる9725まで、処理が繰り返される。
【0075】さて、前述したように、本実施例では、図
形が表現している処理単位の内容が、さらに図形で表現
されている場合には、要求に応じて、図形が表現してい
る処理単位の内容を、さらに詳細に図形で表示する。こ
のような表示は、プログラム表示再帰処理を再帰的に呼
び出すことにより実現される。すなわち、このプログラ
ム表示再帰処理から図22に示す図形表示処理を呼んで
いるが、図形表示処理の中から、このプログラム表示再
帰処理を更に呼ぶことにより、図形が表現している処理
単位の内容を、さらに詳細に図形で表示する。
【0076】図22は、プログラム表示再帰処理(図2
1)のステップ2438で呼ばれる図形表示処理であ
り、処理内容が、さらに図形で表現されている場合に、
それを表示する。ここでは、図6の処理3の図形423
を例に上げて説明する。
【0077】ステップ2451では、プログラム表示再
帰処理から渡された図形定義レコード(d1)のオープ
ンメンバ9608の値を調べている。このメンバは、現
在、その処理内容を詳細に表示した状態(オープン)に
あるか、詳細に表示していない状態(クローズ)にある
かを示している。オープンの場合には、ステップ245
2で処理の詳細を図形表示するための大きめの枠をウィ
ンドウとして表示する。クローズの状態にある場合に
は、ステップ2453で、図形により、その詳細が定義
されていることを表す2重枠の四角形を表示する。
【0078】この例の処理3(423)の場合には、そ
の図形定義レコードが図8の9703なので、オープン
した状態にあることがわかる。したがって、大きめの枠
が表示される。ステップ2454では、d1の定義番号
メンバ9606が指すレコードを図形内部定義テーブル
(図9)より読み、n3に代入している。レコ−ド97
03の定義番号メンバの値は2なので、図形内部定義テ
ーブル(図9)のレコ−ド9713がn3に代入され
る。ステップ2455では、n3の出口リストメンバが
指すレコードを図11の端子リストより読み込み、t3
に代入している。レコ−ド9713の出口リストメンバ
の値は3なので、端子リストのレコ−ド9733がt3
に代入される。ステップ2456では、t3を引数とし
て、出口矢印表示処理を呼ぶ。これにより表示している
図形から出ていっている矢印が表示される。ステップ2
457では、ステップ2451と同じく、図形がオープ
ンの状態にあるか調べる。クローズの状態にある場合に
は、そのまま、本処理を呼んだ処理にリターンする。オ
ープンの状態にある場合には、ステップ2458で図形
を表示するための原点をステップ2452で表示した枠
の左上に変更する。ステップ2459でn3の入口リス
トメンバが指すレコードを図44の端子リストより読み
t4とする。ステップ2460では、このt4を引数と
して入口矢印表示処理を呼ぶ。これにより、表示してい
る図形に入ってくる矢印の内、表示する必要のあるもの
が表示される。ステップ2461では、n3を引数とし
てプログラム表示再帰処理を再帰的に呼ぶ。これによ
り、表示する処理の詳細な定義が図形で表示される。ス
テップ2462では、ステップ2458で変更した原点
を元に戻している。
【0079】図23に、図形表示処理の、ステップ24
56で呼ばれる出口矢印表示処理の処理手順を示す。
【0080】図示するように、本処理では、まず、ステ
ップ2471で、引数で渡された端子リスト先頭のレコ
ードをtとする。そして、ステップ2472で、表示図
形の表示枠上でのtの位置メンバの位置を(x1、y
1)とする。たとえば、tが図44の9734だった場
合、位置メンバは、左なので図6の423の表示枠の左
側の端子の座標が代入される。ステップ2473で、先
図形と表示図形が図43の図形リストで同一のリストに
入っているか調べる。入っている場合には、ステップ2
475で先図形の端子座標を(x2、y2)に代入す
る。入っていない場合には、ステップ2474で、表示
している図形の1つ外側の図形の出口端子リストから、
元図形が表示図形と一致しているもの探索する。1つ外
側の図形とは、図6でいえば、4232の処理3−2に
対する、423の処理3のような関係である。次に、ス
テップ2476で探索された端子の座標を(x2、y
2)に代入する。ステップ2477で、(x1、y1)
から(x2、y2)へ矢印を表示する。ステップ247
8で、tが端子リストの最後の要素であるか調べ、そう
であるならば終了し、そうでない場合にはステップ24
79で次の要素をtとして、再び同様な処理を行なう。
【0081】図24は、図形表示処理のステップ246
0で呼ばれる入口矢印表示処理の処理手順を示したもの
である。
【0082】本処理では、ステップ2481で、引数で
渡された端子リスト先頭のレコードをtとする。ステッ
プ2482で、元図形と表示図形が図10の図形リスト
で同一のリストに入っているか調べる。入っている場合
には、この矢印は出口矢印表示関数でも表示されるので
処理を飛ばす。入っていない場合には、ステップ248
3で、表示している図形の1つ外側の図形の入口端子リ
ストから、先図形が表示図形と一致しているもの探索す
る。ステップ2484で探索した端子の座標を(x1、
y1)に代入する。ステップ2485で、表示図形の表
示枠上でのtの位置メンバの位置を(x2、y2)とす
る。ステップ2486で、(x1、y1)から(x2、
y2)へ矢印を表示する。ステップ2487で、tが端
子リストの最後の要素であるか調べ、そうであるならば
終了し、そうでない場合にはステップ2479で次の要
素をtとして、再び同様な処理を行なう。
【0083】以上の処理によって、GUI56は、図
5、6、7に示したような記述法に従ったプログラムの
表示を行う。
【0084】ところで、以上の処理では、画面上で図形
が重なって表示される場合が生じる。 たとえば、図2
5は、422の処理2と423の処理3が重なり合って
いる。この様な場合には、GUI56は、重なっている
図形がマウスによってクリックされた場合に、図形の重
なり方を変化させる。図26は、この図形の重なりを変
更する処理の手順を示したものである。
【0085】図示するように、910で、マウスによっ
てクリックされた図形が、重なりの1番上に位置してい
るか判定している。もし、1番上に位置している場合に
は、その図形を重なりの1番下に移動する。そうでない
場合には、その図形を重なりの1番上に移動する。
【0086】以下、本実施例に係る計算機の動作を、プ
ログラム作成の実際の作業に沿って説明する。
【0087】まず、プログラムの編集について説明す
る。
【0088】図27に、プログラム編集時の各部の動作
の流れを示す。
【0089】図中、15はディスク、16は端末コント
ローラ、17はディスプレー、18はメモリ、19はオ
ペレーティングシステム、85はオペレーティングシス
テム用のデータ、23は共有データ領域、24は共有プ
ログラム領域、63はバス、64はマウス、65はキー
ボード、141〜142はプロセッサ、1411〜14
21はレジスタ、214〜216はプロセス、241〜
243、328〜332、844〜846はプログラム
である。
【0090】213はプロセスとして実現されたデバッ
カ31、214はプロセスとして実現されたのGUI5
6、215はプロセスとして実現されたエディタ30、
216はプロセスとして実現されたコンパイラ29であ
る。プロセッサ141、142..は、メモリ上にある
プロセスから退避されているレジスタ264、265を
ロードすること(645〜646)により、各プロセス
の処理を実行することができる。
【0091】さて、まず、エディタプロセス215のプ
ログラムが、ソースプログラム35の内容をディスプレ
ー17に表示する手順を説明する。エディタのプログラ
ム331がソースプログラムの内容を読み込み(89
0)、表示の要求をGUIのプロセス214のメッセー
ジキューに送る(891)。GUIのプログラム328
は、メッセージキューよりメッセージを取り出し(90
4)、その内容にしたがって、システムコールを発する
(893)。オペレーティングシステムがディスプレー
17にプログラムの内容を表示する。
【0092】次に、ユーザがマウス64やキーボード6
5を操作してプログラムを書き換える動作を説明する。
GUIのプログラム329は、readのシステムコー
ルを発して(903)、待機状態に移行する。オペレー
ティングシステムのプログラム846に、マウスやキー
ボードから操作が与えられると、GUIのプログラム3
29は、903のシステムコールからリターンして89
6のメッセージをエディタのプロセス215に送信す
る。エディタのプログラム330は、このメッセージを
取り出して、指示通りにソースプログラム35を変更す
る898。ソースプログラム35の変更は、先に図8か
ら図13に示したテ−ブル、リストの内容を変更するこ
とにより行われる。
【0093】なお、プログラムの作成が終了するとユー
ザはコンパイラプロセス216を起動する。コンパイラ
のプログラム332は、ソースプログラム35を読み込
み(899)、コンパイルして、オブジェクトプログラ
ム36を生成する(900)。オブジェクトプログラム
は最後にディスク15に格納される(901)。プログ
ラムを実行するときには、ディスクに格納されたオブジ
ェクトプログラムを共有プログラム領域24にロードし
て実行する。
【0094】以下、プログラムの編集動作の詳細につい
て説明する。
【0095】まず、本実施例において、編集するプログ
ラムに使用することのできるライブラリ関数について説
明しておく。ライブラリ関数は、あらかじめ、メモリ上
にライブラリとして登録しておいた、任意のプログラム
から利用することのできる関数である。図28にライブ
ラリ関数の一覧を示す。
【0096】図中、関数mforkは、引き数で指定し
た数より1つ少ないプロセスを生成する。初めてmfo
rkが実行された時点では、mforkを実行したプロ
セスも合わせて引数で指定した数のプロセスが存在する
ことになる。生成されたプロセスは、生成したプロセス
と同じプロセスであり、生成したプロセスと同じプログ
ラムを同じ位置より実行し始める。ただし、関数mfo
rkの返り値がシリアル番号となっており、それぞれ異
なるので各プロセスを区別することが可能である。
【0097】関数getqueは、実行可能となったス
レッドが入るキューを生成する。スレッドは、プロセス
よりも細かい処理の実行単位である。プロセスに比べ
て、生成等のオーバヘッドが少ない。本実施例では、プ
ロセスが仮想プロセッサ的な働きをして、スレッドを実
行する。すなわち、スレッドをキューに登録すると、仮
想プロセッサがキューよりスレッドを取り出して、それ
を実行する。
【0098】関数threadは、スレッドを生成し
て、キューに登録する。関数threadの引数とし
て、生成されたスレッドが実行する関数のアドレスと、
その関数に与える引数を記述する。関数msgget
は、プロセス間でメッセージ転送をするために必要なキ
ューをプロセスに生成する。すなわち、図2におけるキ
ュー281が生成される。
【0099】関数msggetは、生成されたメッセー
ジキューの識別子を返す。関数sendは、引数で与え
た識別子のメッセージキューに引数で与えたメッセージ
を送信する。関数rcvは、引数で与えた識別子のメッ
セージキューよりメッセージを取り出す。指定されたメ
ッセージキューが空だった場合には、メッセージが送ら
れて来るまで待つ。
【0100】関数putは、共有データに値を書き込
む。関数getは、共有データの値を読み出す。関数p
utと関数getでは、共有データアクセス時の排他制
御を自動的に行う。
【0101】関数getbrrは、バリア同期のための
バリアを生成する。バリアは、任意の個数のスレッドの
相互同期を行う。スレッドの処理がバリアに達すると、
指定した個数のスレッドが既にバリアに達しているか調
べ、まだ、達していなければ達するまで待つ、達してい
れば、そのまま通過する。関数barrierはバリア
同期を行う関数である。
【0102】関数vpは、スレッドを実行する仮想プロ
セッサの処理を行う。全てのスレッドの処理が終了する
までこの関数からリターンすることはない。
【0103】関数getjoinはjoin同期のため
の構造体を生成する。
【0104】関数joinでも、任意の個数のスレッド
が相互同期を行う。前述したバリア同期と異なる点は、
バリアは、同期後、全てのスレッドが次の処理を続行す
るのに対して、join同期は、同期後、一つのみのス
レッドが次の処理に進み、他のスレッドは終了する点で
ある。
【0105】関数joinはjoin同期を行う関数で
ある。
【0106】さて、図29は、エディタ30がGUI5
6を通して、ディスプレイ17に表示する画面の一例で
ある。この画面をディスプレイに複数同時に表示するこ
とも可能である。
【0107】図29に於て、46が編集対象のプログラ
ムを表示する画面である。66は、マウスカーソルであ
り、マウス64を前後左右に動かすことにより、これを
上下左右に移動させることができる。また、マウスには
ボタンがあり、マウスカーソルを図形の上に持ってい
き、このボタンを押せば、その図形が選択される。これ
をクリックと呼ぶ。また、目的の図形の上にマウスカー
ソルを移動して、ボタンを押し、押したままマウスカー
ソルを移動させることもできる。これをドラッグと呼
ぶ。
【0108】68はカーソルであり、キーボード65を
打つと、このカーソルの位置に文字が挿入される。47
1〜474及び481、482は、プログラム5が大き
すぎて画面46に表示しきれなかった場合に使用するス
クロール用ボタンである。481及び482の位置は、
プログラム5のどの部分が画面に表示されているかを示
している。これらのボタンをドラッグして移動させる
と、表示されている部分も変化する。例えば481を右
に移動させると、プログラム5の右の方が表示される。
471〜474のボタンをクリックすると、481や4
82のボタンが一定の距離、上下左右に移動する。55
は、プログラムを作成するための部品のメニューであ
る。このメニューの部品をドラッグして必要な位置に持
っていけばよい。552はjoinのためのバー、55
3はバリア同期のためのバー、554は処理を表す四
角、553は共有データを表す楕円である。また、前述
したように、処理3を表す図形423は、四角が2重に
なっている。これは、この処理に関しては、さらに詳し
い処理内容が図形で定義されていることを表している。
【0109】さて、先に図6に示したように、プログラ
ム中の1つの処理を更に詳細に表示させる場合には、図
29の編集画面で、四角が2重になっている処理3の四
角をクリックすることにより、詳細な処理内容を表示さ
せることができる。図6がその状態であり、処理3を表
す四角423が大きくなり、その内部に詳細な処理が表
示される。4231〜4234は処理、4235〜42
39は処理の流れ、4240はjoinを表している。
4232の四角が二重になっているのは、この処理に関
してはさらに細かい処理の記述が表示可能であることを
示している。
【0110】また、図7に示したように、処理内容をテ
キスト4222で表示するためには、1重の四角で表示
されている処理2の四角をクリックすることにより、処
理内容をテキストで表示させることができる。また、こ
の表示内容を編集することもできる。図7では、422
1が、図4中の422の四角が大きくなって4221と
なり、その内部に処理内容がテキスト4222で表示さ
れている。このような、表示状態において、ユ−ザはテ
キスト4222の内容を編集することができる。
【0111】次に、図30は、プログラムを作成開始時
の画面の初期状態を示す。図中、40はスタート図形、
541、542は処理の流れを表す矢印、421は処理
を表す四角、41はエンド図形、66はマウスカーソ
ル、55は部品メニューである。初期状態では、プログ
ラムは内容のない処理421、一つからなる。マウスカ
ーソルを処理を表す四角の中に移動してから、キーボー
ドで字を入力すると、処理の図形に名前を付けることが
できる。
【0112】次に、図31は図形を配置する方法を示し
ている。処理を表す図形を新たに配置したい場合には、
メニュー中の処理を表す図形554をマウスカーソル6
6でドラッグして(671)、好きな場所(422)に
配置する。
【0113】図32は、処理の起動を、矢印によって記
述する方法を示している。464は編集画面である。処
理421の中で処理422を起動する場合、処理421
の横の辺4251の上にマウスカーソル66を移動し、
目的の処理を表す四角の上辺までドラッグする。する
と、矢印491が描かれる。
【0114】図33は、処理内容がテキストで表示され
ているときの、処理の起動表す矢印を描く方法を示して
いる。465は編集画面である。この場合も、図32と
同様に矢印を描くが、処理421の横の辺をドラッグす
るときに、テキスト中の処理を起動したい場所のすぐ横
をドラッグするようにする。するとその部分にスレッド
起動のためのライブラリ関数threadの呼び出しが
自動的に挿入され(681)、矢印491も表示され
る。逆に、キーボードから、カーソル68の場所にth
read関数の呼び出しを打ち込んだ場合にも、矢印4
91が表示される。
【0115】図34は、処理間のメッセージ通信を、矢
印によって記述する方法を示している。処理421から
処理422にメッセ−ジを送る場合、処理421の横の
辺の上にマウスカーソルを移動し、送信先の処理を表す
四角の横の辺までドラッグする。すると、矢印533が
描かれる。図示した場合、処理421から処理422に
メッセージ533が送られる。
【0116】図35は、図16のメッセージ通信をテキ
ストで詳細表示したところである。送信側にはsend
の呼び出し682が挿入されており、受信側にはrcv
683が挿入されている。メッセージ通信をユーザが記
述する方法は、図32、図33の処理の起動と同様であ
る。
【0117】図36は、処理からの共有データへの書き
込みを、矢印によって記述する方法を示している。処理
421の横の辺の上にマウスカーソルを移動し、書き込
み先のデータ1を表す四角の上の辺までドラッグする。
すると、矢印533が描かれる。この場合は、処理42
1から共有データ45にデータを書き込んでいる(53
1)。
【0118】図37は、図336の共有データへの書き
込みをテキストで詳細表示したところである。テキスト
には共有データへの書き込みを行うライブラリ関数pu
tの呼び出し684が挿入されている。共有データへの
書き込みをユーザが記述する方法は、図32、図33の
処理の起動と同様である。
【0119】図38は、処理からの共有データの読み出
しを、矢印によって記述する方法を示している。データ
1の上の辺の上にマウスカーソルを移動し、処理1を表
す四角421の上の辺までドラッグする。すると、矢印
534が描かれる。処理421から共有データ45のデ
ータを読みだしている(534)。
【0120】図39は、図20の共用データの読み出し
をテキストで詳細表示したところである。テキストには
共有データ読み出しを行うライブラリ関数getの呼び
出し685が挿入されている。共有データからの読み出
しをユーザが記述する方法は、図32、33の処理の起
動と同様である。
【0121】図40は、処理同志の待ち合わせ(joi
n)を記述する方法を表している。
【0122】図示した例では、joinを表す図形44
を配置し、この図形44に、待合せを行う処理421、
422から矢印を描き、待合せ後に実行する処理423
に、図形44から矢印を描いている。こうして描かれた
プログラムは、421と422の両方の処理が終了して
初めて、処理423が開始されることを表している。5
35〜537は処理の流れを表す矢印であり、44の記
号は535と536の両方が来てから、537に進むこ
とを表している。
【0123】図40は、図22の処理同志の待ち合わせ
をテキストで詳細表示したところである。待ち合わせは
ライブラリ関数joinにより実現されている。処理4
21と処理422の両方が関数joinを呼び出すと処
理3が起動される。処理の待ち合わせをユーザが記述す
る方法は、図32、33の処理の起動と同様である。
【0124】図41は、処理同志のバリア同期を記述す
る方法を表している。
【0125】バリヤを表す図形69を配置し、この図形
44に、待合せを行う処理421、422から矢印を描
き、待合せ後に実行する処理423、424に、図形6
9から矢印を描いている。こうして描かれたプログラム
は、421と422の両方の処理が終了して初めて、処
理423と処理424が開始される。538〜544は
処理の流れを表す矢印であり、69のバリアは538と
539の両方の流れが来てから、543と544に進む
ことを表している。
【0126】図42は、図41のバリア同期をテキスト
で詳細表示したところである。テキストには、処理の待
ち合わせを表す関数barrierの呼び出し(68
9、692)が挿入されている。関数barrierか
らリターンすると、691と693の関数thread
で処理3(423)と処理4(424)が起動される。
バリア同期をユーザが記述する方法は、図33、図34
の処理の起動と同様である。
【0127】さて、以上のようなプログラムの編集は、
GUI56が、オペレーティングシステムを介して得た
ユ−ザの操作に応じたメッセ−ジをエディタのプロセス
215に送信し、エディタは、このメッセージを取り出
して、先に図8から図13に示したテ−ブル、リストの
内容を変更することにより行われる。たとえば、図6、
7に示したような処理内容の詳細表示は、エディタが、
クリックされた図形定義テ−ブル(図8)のオ−プンメ
ンバ9608の値を変更し、GUI56に表示を依頼す
ることにより達成される。また、図形、矢印の移動、追
加等は、操作内容に従った、各テ−ブル、リストへのレ
コ−ドの追加や、レコ−ド内容の変更および、GUIへ
の表示依頼によって達成される。また、矢印の設定に伴
うライブラリ関数の挿入や、ユ−ザの記述に従ったテキ
ストの追加、削除、変更は、テキスト定義テ−ブル(図
12)に定義された図形に対応するファイルの内容を更
新することにより達成される。
【0128】さて、このようにして作成したプログラム
が、図45に示したようなものである場合、共有データ
が不確定になる。
【0129】図45において、421〜427は処理、
493〜499は処理の流れ、45は共有データ、54
5と546は共有データへの書き込み、441はjoi
n、701〜703は共有データへの書き込みが発生す
るまでの経緯を示している。
【0130】すなわち、処理1(421)から起動され
た処理4(425)と処理5(424)が441のjo
inで待ち合わせて、処理6(426)へ進み、その中
で共有データ45へ書き込むという経緯が701と70
3である。一方、702の経緯は、処理1(421)か
ら起動された処理2(422)の中で共有データ45に
書き込み545を行っている。前者の経緯と後者の経緯
の間では同期等が行われておらず、546と545の書
き込みのどちらが先に実行されるか確定していない。こ
れは、実行の度に、共有データの値が異なってしまい好
ましくない。
【0131】そこで、プログラムを作成していく段階
で、新たに共有データへのアクセスを定義する毎に、共
有データの値が不確定にならないか確認するのが好まし
い。
【0132】図45に、共有データの値が確定すること
を確認することのできるアルゴリズムを示している。
【0133】本実施例では、プログラムを作成していく
段階で、新たに共有データへのアクセスを定義する毎
に、このアルゴリズムに従った処理を実行し共有データ
の値が不確定にならないか確認する。
【0134】すなわち、まず、あらたに定義した共有デ
ータへのアクセスをNとする(ステップ711)。次
に、その共有データへアクセスしている他の処理を順番
に調べる。ステップ712では、調べていない処理がも
うないか判断する。そして、ない場合には処理を終了す
る。あった場合には、その処理の1つをRとする(ステ
ップ713)。処理Nの前に実行される処理の集合をB
nとする(ステップ715)。集合Bnから処理を1つ
ずつ取り出しRまで到達可能であるか調べ、到達可能で
ある場合には、その経路上にある処理を集合Brに入れ
る(ステップ716)。処理Nの後にある処理の集合を
Anとし(ステップ717)、処理Rの後にある処理の
集合をArとする(ステップ718)。ステップ719
〜721では、ArとBn、AnとBrの要素間でメッ
セージ、バリア、join等の同期が行われているか調
べている。どちらの集合の要素間でも同期が行われてい
ない場合には共有データの値が不確定になるので警告を
表示する(ステップ722)。どちらかの集合の要素間
で同期が行われている場合には共有データの値は確定し
ている(ステップ723、724)。両方の集合の要素
間で同期が行われている場合には、デッドロックの可能
性があるので警告を発する(ステップ725)。
【0135】さて、実際に、図44のプログラムに、図
45のアルゴリズムに適用してみると次のようになる。
【0136】まず、新しくアクセスする処理Nを処理2
(422)とする。ステップ713で選択される処理は
処理6(426)しかないので、Rはこの処理となる。
ステップ715でNの前にある処理の集合Bnを求めて
いるが、Nである処理2の前に実行される処理は処理1
(421)のみである。よって、Bn={処理1}とな
る。ステップ716で、Bnの各要素からRへのルート
を捜している。Bnの要素は処理1のみである。処理1
からRである処理6へのルートは、処理4を通り、jo
in(441)を経て処理6へ達するルートと、処理
5、joinを通り処理6に達するルートの2つが存在
する。ルート中の処理の集合Br={処理4、処理5}
となる。ステップ717で、Nである処理2の後に実行
される処理の集合Anを求めているこれは、An={処
理3、処理7}である。同様にステップ718では、A
r={処理7}である。ステップ719で、集合Arの
要素から、集合Bnへの要素へのメッセージ、バリア、
joinがあるか調べている。Arの要素は、処理7の
みであり、Bnの要素は処理1のみである。両者の間に
は同期が存在しないので、ステップ719の判定はNと
なる。ステップ720では、同様に集合Anと集合Br
の関係を調べている。Anの要素は処理3と処理7であ
り、Brの要素は処理4と処理5である。これらの間に
も同期は存在しない。したがって、ステップ720の判
定もNとなる。したがって、ステップ722で共有デー
タの値が不確定であると判定され、警告が発せられる。
【0137】さて、本実施例では、警告は、不確定の原
因となっている処理と、処理の流れと、不確定となる共
有データへの書き込みの表示色を変化させることにより
行う。たとえば、図44の共有データ45への書き込み
545を定義したところで、共有データが不確定になる
ことが検出された場合に行う警告は、図46に示すよう
に、不確定の原因となっている処理421、422、4
24、425、426と、処理の流れ493〜495、
500、501と、共有データへの書き込み545、5
46の表示色を変化させることにより行う。
【0138】以上プログラムの編集について説明した。
次に、このように、作成/編集したプログラムの実行に
ついて説明する。
【0139】編集後、前述したモ−ドメニュ−(図1
6)を表示させ、ランボタンをクリックすると、ソ−ス
プログラム35はコンパイラ29によってコンパイルさ
れ、オブジェクトプログラム36が生成され、実行され
る。ソ−スプログラム35のコンパイルは、図12のテ
キスト定義テ−ブルに登録されている各ファイルのテキ
ストをコンパイルすることにより実現される。全ての処
理は、最終的にテキストによって定義され、処理間の関
係や、データのアクセス等は、これを表す矢印を配置し
たときに、これらのテキスト中に反映されているからで
ある。
【0140】さて、図47は、プログラムを実行したと
きに、最初に生成されるプロセスの処理内容を示してい
る。58が処理全体である。ステップ581では、図1
の共有データ領域22を確保した後、初期化している。
ステップ582では、スレッド用のキューを共有データ
領域に生成している。ステップ583では、スレッド用
キューに最初に実行するスレッドを入れている。図5に
示したプログラムの場合、処理1を実行するスレッドが
キューに入ることになる。ステップ584では、プログ
ラム実行に使用するプロセサの台数をユーザが指定して
いるか調べている。指定している場合には、使用するプ
ロセッサ台数nprocを指定されたプロセスの数とす
る(ステップ586)。指定されていない場合には、シ
ステムにあるプロセッサの台数と同じ数のプロセスを使
用することにする(ステップ585)。ステップ587
でプロセスを実際に生成している。生成されたプロセス
は、それらを生成したプロセスと同じプログラムを同じ
場所より実行し始めるので、以後の処理は、生成された
プロセスも合わせて実行する。ステップ588〜589
では、トレースを行う場合にはトレース領域を確保して
いる。トレース領域も各プロセスが、それぞれ、自分の
場所を確保する。ステップ590で仮想プロセッサの処
理を開始する。すなわち、キューに入っているスレッド
を取り出して実行する。
【0141】一方、プロセスを生成するmforkの動
作は、図48に示すように行われる。
【0142】図中、18はメモリであり、プロセス21
1、オペレーティングシステム19、ライブラリ20、
共有データ領域23、共有プログラム領域24、トレー
スデータ領域22がある。プロセス211がライブラリ
20中のmforkを実行した(60)とする。プロセ
スの生成は特権モードで実行しなければならない。そこ
で、ライブラリ20は、システムコールにより、オペレ
ーティングシステム19にプロセス生成の処理を依頼す
る(61)。オペレーティングシステムが、プロセス2
12、213を生成する。
【0143】前述した仮想プロセッサ(vp)とライブ
ラリ関数threadの関係は、図49に示すようにな
る。
【0144】同図に於て、15はディスク、16は端末
コントローラ、17はディスプレー、18はメモリ、2
0はライブラリ、23は共有データ領域、24は共有プ
ログラム領域、63はバス、64はマウス、65はキー
ボード、141〜142はプロセッサ、1411〜14
21はレジスタ、211〜212はプロセス、201〜
202、241〜243、321、324はプログラム
である。
【0145】プロセッサは、退避されているレジスタ2
61〜262をプロセス211〜212からロードする
こと(641〜642)により、プロセスの処理を実行
する。プロセッサ142はプロセス211を実行中であ
るが、そのレジスタ1421中のプログラムカウンタ
(PC)がライブラリ関数202のアドレスを指してい
る(652)。これは、プロセッサ142が関数vpを
実行中であることを表す。ここで、別のプロセス212
を実行しているプロセッサ141が、ライブラリの関数
threadを実行して(651)、put_queu
e(203)により、スレッドキュー231にスレッド
を登録した(661)とする。ただし、関数threa
dの実行も、スレッドを実行中の仮想プロセッサによっ
てなされているかもしれない。スレッドキュー231に
は、スレッドが実行する関数のアドレス2311とその
関数の引数2312が登録される。ライブラリ関数vp
(202)は、204のget_queueにより関数
のアドレス2313と引数2314を取り出して、その
関数243を205で呼び出す(671)。この関数の
中で再びライブラリ関数thread(201)が呼ば
れて(673)、スレッドが生成されることもある。
【0146】以上、プログラムの実行について説明し
た。
【0147】さて、次に、トレ−ス動作について説明す
る。
【0148】前述したモ−ドメニュ−(図16)を表示
させ、トレ−スボタン925をクリックするとトレ−サ
33は、プログラムの実行の履歴であるトレ−スデータ
に基づいて、プログラムの実行のようすを再現、表示す
る。
【0149】まず、トレ−スデータについて説明する。
トレ−スデータは、実行されるプログラム自身が作成す
る。
【0150】たとえば、図28に示した各ライブラリ関
数については、図50に示すように、各ライブラリ関数
の処理中に、トレ−スデータの作成を行うステップ73
1、734を、あらかじめ設けておく。
【0151】図50において、ステップ731では、ラ
イブラリの処理が開始されたことを記録するトレース処
理が行われる。ステップ732では、並列プログラムを
デバッグするときに、ライブラリ関数の部分でブレーク
したり、ライブラリ関数を実行中であること表示したり
するための処理が行われる。ステップ733では、その
ライブラリ関数、本来の処理を行う。ステップ734で
は、ライブラリ関数の処理が終了したことを記録するト
レース処理が行われる。
【0152】図51は、図50中のステップ731とス
テップ734のトレース処理をさらに詳細に記述したも
のである。ステップ735で、トレースを実行中である
か判定しており、トレースが実行中ではない場合には、
処理を終了する。ステップ736では、トレースバッフ
ァが一杯になっているか判定している。トレースバッフ
ァは、トレース情報が記録されるバッファであり、図1
のトレースデータ領域(24)に存在する。トレースバ
ッファが一杯である場合には、ステップ737で、トレ
ースバッファの既存の内容をディスク15(図1)に書
き出す。ステップ738では、トレースデータをトレー
スバッファに書き込んでいる。
【0153】図52に、このトレースデータの構成を表
している。
【0154】トレースデータはトレースバッファ571
〜573に書き込まれる。トレースバッファは、プロセ
ッサ毎に分かれている。トレースデータ中で、5711
は時刻、5712はライブラリ関数が呼び出されたアド
レス、5713は呼び出されたライブラリ関数の名前、
5714は状態、5715〜5716はライブラリ関数
に渡された引数である。
【0155】さて、プログラムの実行が終了すると、作
成されたトレ−スデータに基づいてトレ−サ33が、図
53に示すようなトレースデータを解析した結果を画面
に表示する。この画面は、プログラムの各部分が何回実
行されたかを表示している。表示されているプログラム
は図7と同じものである。87は、凡例であり各色87
1が、何回の実行(872)に対応するか示している。
421のような処理の色は、その処理が何回実行された
かを表している。テキストの横の帯88の色は、テキス
トの各部分が何回実行されたかを示している。共有デー
タへの書き込み532の色もその書き込みが何回実行さ
れたかを示している。この図は、実行回数を表示してい
るが、同様の画面構成で、各部分が実行されたときに何
台のプロセッサがアイドルではなかったかなどの情報を
表示することが可能である。
【0156】このような、トレ−サ33による表示は、
アドレス図形対応テーブルを用いて行われる。
【0157】図54に、アドレス図形対応テーブルを示
す。
【0158】このテーブルはプログラムのコンパイル時
に併せて作成される。テ−ブル中の各レコ−ド9780
〜9783はライブラリ関数を呼び出す命令毎に設けら
れている。各レコ−ドにおいて、9680はレコ−ド番
号、9681は当該命令のオブジェクトプログラム中で
のアドレス、9682は該アドレスでのライブラリ呼び
出しが、表示図形のどの矢印に対応するかを示す端子定
義番号、9683は該アドレスが、どの図形のテキスト
で定義されているかを示すテキスト定義番号、9684
はテキストファイル中の何行目に定義されているか示す
行数、9685はトレースデータ中にこのアドレスが現
れた回数である。例えば、9780のレコードは、オブ
ジェクトプログラム中のアドレスが1FFE23D4の
ライブラリ呼び出しに関する情報を保持している。この
呼び出しは、図11の端子リスト中の4番目のレコード
9734が表す矢印に対応し、図12のテキスト定義テ
ーブルの8番目のテキストの23行目にあることを示し
ている。
【0159】さて、トレ−サ33は、まず、図55に示
す処理手順を実行しトレースデータを集計する。
【0160】この処理では、全部のプロセッサのトレー
スデータについて集計する必要があるので、プロセッサ
の番号を記憶する変数pを設け、ステップ2490でそ
れにプロセッサ0の番号を代入する。ステップ2491
では、図52のトレースデータの内、プロセッサpのデ
ータを全部読み終ったか調べている。読み終ったなら
ば、次のプロセッサのデータを調べるためにステップ2
495へ飛ぶ。読み終っていないならば、ステップ24
92でpのトレースデータよりレコードを1読みだし、
tに代入する。ステップ2493では、tのアドレスメ
ンバの値と一致するアドレスメンバを持つレコードを図
54のアドレス図形対応テーブルで捜す。ステップ24
94で、そのレコードの回数メンバの値をインクリメン
トし、次のトレースデータを処理するためにステップ2
491に飛ぶ。ステップ2495では、全部のプロセッ
サのトレースデータを集計し終ったか調べ、終っていた
ら、関数からリターンする。終っていなければ、次のプ
ロセッサの番号をpに設定して、同様の処理を繰り返
す。
【0161】このような集計が終了したならば、トレ−
サ33は、アドレス図形対応テーブルに集計したトレー
スデータに基づいて、図53に示したような画面に表示
する処理を行う。
【0162】この処理では、図57に示すように、ま
ず、ステップ2500で、アドレス図形対応テーブルか
ら、レコードを1つ読み込み、それをcとする。ステッ
プ2501では、cの回数メンバの値により、色iを決
定する。色は図36の87に表示されている凡例の色帯
に従って決定される。ステップ2502でcの端子定義
番号が0か調べている。0の場合には、そのアドレスに
対応した矢印は存在しないので、矢印の表示の処理を飛
ばす。
【0163】ステップ2503では、cの端子定義番号
メンバの指すレコードを図11の端子リストより読み込
み、tとする。ステップ2504では、tが表している
矢印をiの色に変更する。ただし、この時、該矢印が画
面に表示されていなければ、色を変更する必要はない。
ステップ2505では、tの矢印が先が図形の上側に接
しているかどうか調べている。上側に接している時に
は、ステップ2506で、その接している図形の色もi
の色に変更している。ただし、この場合も該図形が表示
されていなければ、変更する必要はない。ステップ25
07では、cのテキスト定義番号メンバが指す図形が、
表示中でオープンの状態であるか調べている。そうであ
る場合にはステップ2508で、そのテキストを表示し
ている図形の、cの行メンバで示される行の横にi色の
帯を表示する。
【0164】以上、トレ−ス動作について説明した。
【0165】ところで、トレ−スとしては、トレ−スデ
ータとして、単にプログラムを構成する処理単位や、ラ
イブラリ関数の実行のようすを時系列に記憶し、図57
に示す処理を実行することによって、各図形の表示を実
行順に変化させるトレ−スも実行できるようにするのが
好ましい。
【0166】図57の処理では、まず、ステップ870
でトレースデータを1つ取り出し、ステップ871とス
テップ872でトレースデータの表す処理と矢印の色を
変更している。ステップ873でボタン入力待となる。
そして、ボタンが入力されると変更した色を元に戻して
次のトレースデータを取り出し処理することにより、ト
レースデータを元に実行の様子を逐次表示する。
【0167】次に、デバック動作について説明する。
【0168】プログラムをコンパイル後に、前述したモ
−ドメニュ−(図16)を表示させ、デバックボタンを
クリックすると、デバックモ−ドに移行し、図58に示
す画面が表示される。この画面は、図29の編集画面と
同一の画面上に表示される。
【0169】表示されているプログラムは図7のものと
同じであり、421〜423は処理、45は共有デー
タ、491は処理の流れ、532は共有データへの書き
込みを示している。
【0170】さて、この画面において、デバッカ31
は、現在、実行されている処理に対応する図形の表示の
色を変化させる。図58では処理422と423の色が
変わっており、これより処理が並列に実行されているこ
とがわかる。さらに、処理の内容をテキストによって詳
細に表示した場合には、実行中のテキスト行に75のよ
うなカーソルを表示する。また、実行中の処理が変わる
場合には、その処理の流れを表す矢印の色が変わる。共
有データへの書き込み、メッセージ通信が行われている
ときには、それらを表している矢印の色が変わる。図で
は、共有データ45への書き込みが行われている最中な
ので、532の色が変わっている。
【0171】78は、デバッグを行うためのメニューで
ある。ユーザは、マウスカーソルでメニュー中のボタン
を指示することにより、デバッガ31によって、デバッ
カ対象プログラムの実行を制御することができる。79
はステップボタンであり、デバッカ31にデバック対象
のプログラムを一行実行させる。80はネクストボタン
であり、デバッガ31に、次の処理の最初までデバック
対象プログラムの実行を進めさせ停止させる。81はコ
ンティニューボタンであり、デバッカ31にデバッカ対
象プログラムを、次のブレークポイントまで実行させ
る。82はランボタンであり、デバッカ31にデバッカ
対象プログラムを最初から実行させる。83はブレーク
ポインタを設定するための項目である。83の図形をブ
レークを掛けたい所までドラッグすれば、その個所にブ
レークポインタがデバッカ31によって設定される。ブ
レークポインタによるブレークは、処理(832)、テ
キスト行(831)、処理の流れ(833)、共有デー
タへの書き込み、メッセージなどに掛けることができ
る。
【0172】図59は、デバッグ時の、プログラムのブ
レ−クに関する動作を示した図である。同図に於て、1
5はディスク、16は端末コントローラ、17はディス
プレー、18はメモリ、19はオペレーティングシステ
ム、85はオペレーティングシステム用のデータ、20
はライブラリ、23は共有データ領域、24は共有プロ
グラム領域、63はバス、64はマウス、65はキーボ
ード、141〜142はプロセッサ、1411〜142
1はレジスタ、211、213はプロセス、210〜2
02、241〜243、325〜327、841〜84
3はプログラムである。
【0173】本図においてデバッガ31はプロセスとし
て実現されており、213のプロセスがそのプロセスで
ある。211のプロセスは、仮想プロセッサの働きをし
てプログラムを実行する。プロセッサは、メモリ上にあ
るプロセスから退避されているレジスタ261、263
をロードすること(643〜644)により、プロセス
の処理を実行することができる。デバッガのプロセス2
13が持っているプログラム325は、ブレークポイン
トを設定するためのプログラムである。このプログラム
は、図58中の83の項目を選択することにより起動さ
れる。
【0174】デバック対象のプログラム実行中にブレー
クするためには、ブレークさせたい部分にソフトウェア
割り込みの命令を埋め込む必要がある。しかし、通常の
プロセスのプログラムからは、プログラムを書き換える
ことが出来ない。そこで、デバッガのプログラムはオペ
レーティングシステム19中のプログラム841にプロ
グラムの書換えを依頼する(674)。そして、オペレ
ーティングシステムがプログラム241にソフトウェア
割り込みの命令245を書き込む(675)。プロセス
643を実行しているプロセッサ141がこのソフトウ
ェア割り込み命令245を実行すると、処理がオペレー
ティングシステム19のプログラム842に移る。プロ
グラム842では、書き換えられたプログラムを元に戻
し、プロセス211を待の状態に切り替える。デバッガ
でデータを書き換えたい時も、デバッガのプログラム2
13からオペレーティングシステムのプログラム843
に依頼して書き換える(678)。
【0175】ライブラリにブレークポインタが仕掛けら
れている時には、図29中の732の処理中で停止す
る。また、このとき、画面上の矢印の色を変える必要あ
る。この場合には、855のようにデバッガに色変化の
メッセージを送信する。メッセージを受信した(85
4)デバッガのプログラム327は、GUIのプロセス
214に対してメッセージを送り(852)、色の変化
を依頼する。各ライブラリ関数において、このような処
理を行うのが、図50中のステップ732のデバッグ用
処理である。図60に、このデバッグ用処理の内容を詳
細に示す。
【0176】ライブラリ関数のデバッグ用処理では、ま
ず、ステップ861でデバッグモードで実行しているか
判定し、デバッグモードでない場合には処理を終了す
る。デバッグモードであった場合には、ステップ862
で実行中の処理を表す図形の色を変更し、ステップ86
3で実行中のライブラリを表す矢印の色を変更するよう
メッセ−ジを送る。ステップ864では、ライブラリ呼
び出しにブレークが掛かっているか判定している。掛か
っている場合にはステップ866でボタン入力待をす
る。掛かっていない場合には、ステップ865で、全体
停止のフラグが立っているか見る。全体停止のフラグ
は、プログラム全体の実行を一次停止させるためのフラ
グである。フラグが立っていた場合には、やはり、ボタ
ン入力待となる。ステップ867では、ステップ862
とステップ863で変更した色を元に戻すようメッセ−
ジを送っている。
【0177】以上説明してきたように、本実施例によれ
ば、視覚的手法により並列プログラムを自然に記述可能
となる。さらに、階層的にプログラム開発が可能なた
め、複雑な並列プログラムも比較的簡単に作成可能であ
る。また、プログラム作成ツールとデバッグツールと評
価ツールを統合化することにより、作成、デバッグ、評
価を繰り返すプログラムのライフサイクルを容易に行う
ことが出来る。また、共有データに対するアクセスを明
示的に図形で表現することにより、従来とらえにくかっ
た共有データに対するアクセスのデバッグが容易にな
る。また、プログラム作成時に、共有データへのアクセ
スが適正であるかチェックするので、この部分にバグが
入り込む可能性が少ない。
【0178】
【発明の効果】以上にように、本発明によれば、階層的
に図形を用いたプログラムの階層的開発を可能とするこ
とができる。また、並列に実行される処理の間で共通に
使用されるデータに対する操作を、視覚的に良好に表現
することができる。また、並列に実行される処理の間で
共通に使用されるデータの値の確定性を保証することが
できる。
【図面の簡単な説明】
【図1】並列計算機の構成を示すブロック図である。
【図2】プロセスの構成を示す説明図である。
【図3】並列計算機上に構築されるプログラム実行環境
を示すブロック図である。
【図4】プログラム開発環境の構成を示すブロック図で
ある。
【図5】図形を用いたプログラムの記述例を示す説明図
である。
【図6】図形を用いたプログラムの記述例を示す説明図
である。
【図7】図形を用いたプログラムの記述例を示す説明図
である。
【図8】図形定義テ−ブルの構成を示す説明図である。
【図9】図形内部テ−ブルの構成を示す説明図である。
【図10】図形リストの構成を示す説明図である。
【図11】端子リストの構成を示す説明図である。
【図12】テキスト定義テ−ブルの構成を示す説明図で
ある。
【図13】join定義テ−ブルの構成を示す説明図で
ある。
【図14】バリア定義テ−ブルの構成を示す説明図であ
る。
【図15】データ定義テ−ブルの構成を示す説明図であ
る。
【図16】モ−ドメニュ−を示す説明図である。
【図17】イベントベクトルテ−ブルの構成を示す説明
図である。
【図18】ウィンドウテ−ブルの構成を示す説明図であ
る。
【図19】メニュ−の選択等に応じてGUIの行う処理
の手順を示すフロ−チャ−トである。
【図20】GUIの行うプログラム表示処理の手順を示
すフロ−チャ−トである。
【図21】GUIの行うプログラム表示再帰処理の手順
を示すフロ−チャ−トである。
【図22】GUIの行う図形表示処理の手順を示すフロ
−チャ−トである。
【図23】GUIの行う出口矢印処理の手順を示すフロ
−チャ−トである。
【図24】GUIの行う入口矢印処理の手順を示すフロ
−チャ−トである。
【図25】図形の表示の重なりを示す説明図である。
【図26】図形の表示の重なりを変更する処理の手順を
示すフロ−チャ−トである。
【図27】プログラムの編集動作を示す説明図である。
【図28】ライブラリ関数の一覧を示す説明図である。
【図29】プログラムの編集時の表示画面を示す説明図
である。
【図30】プログラムの編集時の初期表示画面を示す説
明図である。
【図31】図形の配置操作を示す説明図である。
【図32】処理の起動を表す矢印を配置する操作を示す
説明図である。
【図33】処理を起動を表す矢印を配置する操作を示す
説明図である。
【図34】メッセ−ジ通信を表す矢印を配置する操作を
示す説明図である。
【図35】メッセ−ジ通信を表す矢印を配置する操作を
示す説明図である。
【図36】共有データへの書き込みを表す矢印を配置す
る操作を示す説明図である。
【図37】共有データへの書き込みを表す矢印を配置す
る操作を示す説明図である。
【図38】共有データの読み出しを表す矢印を配置する
操作を示す説明図である。
【図39】共有データの読み出しを表す矢印を配置する
操作を示す説明図である。
【図40】join同期を記述するための操作を示す説
明図である。
【図41】join同期を記述するための操作を示す説
明図である。
【図42】バリア同期を記述するための操作を示す説明
図である。
【図43】バリア同期を記述するための操作を示す説明
図である。
【図44】共有データが不確定となるプログラムの例を
示す説明図である。
【図45】共有データの確定性を検査する手順を示した
フロ−チャ−トである。
【図46】共有データの不確定性を警告する表示画面を
示す説明図である
【図47】各プロセス共通の初期処理手順を示すフロ−
チャ−トである。
【図48】ライブラリ関数mforkの実行時の動作を
示す説明図である。
【図49】threadとvpの関係を示す説明図であ
る。
【図50】ライブラリ関数実行時の処理手順を示すフロ
−チャ−トである。
【図51】ライブラリ関数におけるトレ−ス処理の手順
を示すフロ−チャ−トである。
【図52】トレ−スデータの構成を示す説明図である。
【図53】トレ−サが表示する画面を示す説明図であ
る。
【図54】アドレス図形対応テ−ブルの構成を示す説明
図である。
【図55】トレ−ス結果集計処理の手順を示すフロ−チ
ャ−トである。
【図56】トレ−ス結果表示処理の手順を示すフロ−チ
ャ−トである。
【図57】他のトレ−ス処理の手順を示すフロ−チャ−
トである。
【図58】デバックモ−ド時の表示画面を示す説明図で
ある。
【図59】デバック動作時のブレ−ク動作を示す説明図
である。
【図60】ライブラリ関数におけるデバック処理の手順
を示すフロ−チャ−トである。
【符号の説明】
11 キュービクル 13 並列計算機 14 プロセッサ 141〜143 プロセッサ 1411〜1421 レジスタ 15 ディスク 16 端末コントローラ 17 ディスプレー 18 メモリ 19 オペレーティングシステム 20 ライブラリ 201〜202 ライブラリ関数 211〜216 プロセス 22 トレースデータ領域 23 共有データ領域 24 共有プログラム領域 231 スレッドキュー 241〜243 共有プログラム 2611〜2612、262〜263 レジスタ退避領
域 271 データ領域 281〜285 メッセージキュー 29 コンパイラ 30 エディタ 31 デバッガ 32 並列度評価プログラム 321〜332 プログラム 33 トレーサ 34 トレースデータ 35 ソースプログラム 36 オブジェクトプログラム
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.5 識別記号 庁内整理番号 FI 技術表示箇所 G06F 15/16 430 Z 9190−5L 15/60 360 P 7623−5L

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】表示装置を備えた計算機において、複数の
    処理単位より構成されるプログラムの定義を前記表示装
    置に表示する方法であって、 前記複数の処理単位をそれぞれを表す複数の図形を、当
    該図形の表す処理単位と関連する他の処理単位を表す図
    形と関連付けて表示し、 2以上の前記処理単位が共通してアクセスするデータを
    表す図形を、当該データをアクセスする処理単位を表す
    図形と関連付けて表示することにより、 前記プログラムの定義の表示を行うことを特徴とするプ
    ログラムの表示方法。
  2. 【請求項2】入力装置と表示装置とを備えた計算機にお
    いて、表示装置に、複数の処理単位より構成されるプロ
    グラムの定義を表示する方法であって、 プログラムの定義を、複数の、プログラムを構成する処
    理の単位である処理単位のそれぞれを表す図形を、当該
    図形の表す処理単位と関連する他の処理単位を表す図形
    と関連付けて前記表示装置に表示するステップと、 特定の処理単位を表す図形の指定を、前記入力装置より
    受け付けるステップと、 指定された図形が表す処理単位が、さらに複数の処理単
    位によって構成されている場合に、前記指定された図形
    に代えて、指定された図形が表す処理単位を構成する前
    記複数の処理単位のそれぞれを表す複数の図形のそれぞ
    れを、当該図形の表す処理単位と関連する他の処理単位
    を表す図形と関連付けて、表示するステップとを有する
    ことを特徴とするプログラムの表示方法。
  3. 【請求項3】入力装置と表示装置とを備えた計算機にお
    いて、表示装置に、複数の処理単位より構成されるプロ
    グラムの定義を表示する方法であって、 複数の処理単位のそれぞれを表す図形を、当該図形の表
    す処理単位と関連する他の処理単位を表す図形と関連付
    けて前記表示装置に表示するステップと、 特定の処理単位を表す図形の指定を、前記入力装置より
    受け付けるステップと、 指定された図形が表す処理単位が、テキストによって定
    義されている場合に、前記指定された図形に代えて、指
    定された図形が表す処理単位を定義するテキストを、当
    該テキストに含まれる各テキスト文と、当該テキスト文
    と関連する他の処理単位を表す図形とを関連付けて、表
    示するステップとを有することを特徴とするプログラム
    の表示方法。
  4. 【請求項4】請求項2記載のプログラムの表示方法であ
    って、 前記さらに複数の処理単位の組み合わせによって定義さ
    れている処理単位を表す図形については、複数の処理単
    位の組み合わせによって定義されていない処理単位を表
    す図形と、区別可能に表示することを特徴とするプログ
    ラムの表示方法。
  5. 【請求項5】表示装置を備えた計算機において、複数の
    処理単位より構成されるプログラムの編集を受付けるプ
    ログラム編集受付け方法であって、 複数の前記処理単位の指定を、当該処理単位を表す図形
    の指定に応じて受付け、複数の処理単位によってアクセ
    スされるデータである共有データの指定を、当該共有デ
    ータを表す図形の指定に応じて受付け、処理単位と前記
    共有データとの関係もしくは複数の処理単位間の関係の
    指定を、共有データと処理単位もしくは複数の処理単位
    を表す複数の図形間を結ぶ図形の指定に応じて受付ける
    ことを特徴とするプログラムの編集受付け方法。
  6. 【請求項6】表示装置を備えた計算機において、複数の
    処理単位より階層的に構成されるプログラムの構造の編
    集を受け付けるプログラム編集受付方法であって、 複数の処理処理単位をそれぞれ表す複数の図形と、複数
    の処理単位に対応する複数の図形間を結び、当該複数の
    処理単位間の関係を表す図形の、前記表示装置の表示上
    における階層的な編集によって、前記プログラムを構成
    する複数の前記処理単位の階層的な構造の編集を受付け
    ることを特徴とするプログラムの編集受付方法。
  7. 【請求項7】請求項6記載のプログラムの編集受付方法
    であって、 前記階層上、より下位の処理単位を有さない処理単位の
    内容の定義を、テキスト形式で受け付けることを特徴と
    するプログラム編集方法。
  8. 【請求項8】表示装置と入力装置とを備えた計算機であ
    って、 前記表示装置の表示画面上において、編集するプログラ
    ムを構成する複数の処理単位をそれぞれ表す図形と、2
    以上の前記処理単位によってアクセスされるデータであ
    る共有データを表す図形と、共有データもしくは処理単
    位に対応する複数の図形間を結び、各処理単位と前記共
    有データとの関係、もしくは、複数の処理単位間の関係
    を表す図形の編集を、前記入力装置の操作に応じて受付
    ける手段と、 受け付けた、各図形の編集内容に従ってプログラムを編
    集する手段とを有することを特徴とする計算機。
  9. 【請求項9】請求項8記載の計算機であって、 受け付けた、各図形の編集内容より、前記プログラム実
    行時の前記共有データの不確定性を検証する手段を有す
    ることを特徴とする計算機。
  10. 【請求項10】表示装置と入力装置とを備えた計算機で
    あって、 前記表示装置の表示画面上において、編集するプログラ
    ムを構成する複数の処理単位をそれぞれ表す複数の図形
    と、関係付ける複数の処理単位に対応する複数の図形間
    を結び、複数の処理単位間の関係を表す図形の、前記表
    示装置の表示上における階層的な編集を受け付ける手段
    と、 前記表示装置の表示画面上において、前記階層上、より
    下位の図形を有さない図形の表す処理単位の内容を定義
    するテキストの編集を受け付ける手段と、 受け付けた、各図形とテキストの編集内容に従って、複
    数の処理単位より階層的に構成されるプログラムを編集
    する手段とを有することを特徴とする計算機。
  11. 【請求項11】請求項10記載の計算機であって、 前記プログラムを編集する手段は、関係付ける複数の処
    理単位に対応する複数の図形間を結び、複数の処理単位
    間の関係を表す図形の編集内容に応じて、前記複数の処
    理単位間の関係を表す図形によって結ばれた図形の表す
    処理単位の内容を定義するテキストに、前記図形が表す
    関係を実現するテキスト文を追加/挿入する手段を有す
    ることを特徴とする計算機。
  12. 【請求項12】請求項8または9記載の計算機であっ
    て、 編集されたプログラムを実行する手段と、 プログラムの実行の履歴を示す情報である履歴情報を収
    集する手段と、 収集した履歴情報に応じて、前記表示装置の画面上で編
    集された図形の表示のうち、実行された処理単位を表す
    図形の表示と、実行に用いられた関係を表す図形の表示
    と、アクセスされた共有データを表す図形の表示を、実
    行の順序に従って順次、変化させる手段を有することを
    特徴とする計算機。
  13. 【請求項13】請求項8または9記載の計算機であっ
    て、 編集されたプログラムを実行する手段と、 プログラムの実行の履歴を示す情報である履歴情報を収
    集する手段と、 収集した履歴情報に応じて、前記表示装置の画面上で編
    集された図形の表示のうち、実行された処理単位を表す
    図形の表示と、実行に用いられた関係を表す図形の表示
    と、アクセスされた共有データを表す図形の表示を、処
    理単位を表す図形については実行された回数、関係を表
    す図形については実行に用いられた回数、共有データを
    表す図形についてはアクセスされた回数に従って、変化
    させる手段を有することを特徴とする計算機。
  14. 【請求項14】請求項10または11記載の計算機であ
    って、 編集されたプログラムを実行する手段と、 プログラムの実行の履歴を示す情報である履歴情報を収
    集する手段と、 収集した履歴情報に応じて、前記表示装置の画面上で編
    集された図形の表示のうち、実行された処理単位を表す
    図形の表示と、実行に用いられた関係を表す図形の表示
    を、実行の順序に従って順次、変化させる手段を有する
    ことを特徴とする計算機。
  15. 【請求項15】請求項10または11記載の計算機であ
    って、 編集されたプログラムを実行する手段と、 プログラムの実行の履歴を示す情報である履歴情報を収
    集する手段と、 収集した履歴情報に応じて、前記表示装置の画面上で編
    集された図形の表示のうち、実行された処理単位を表す
    図形の表示と、実行に用いられた関係を表す図形の表示
    を、処理単位を表す図形については実行された回数、関
    係を表す図形については実行に用いられた回数に従っ
    て、変化させる手段を有することを特徴とする計算機。
  16. 【請求項16】請求項8または9記載の計算機であっ
    て、 前記入力装置よりの所定の操作に応じて、編集されたプ
    ログラムを、逐次的に実行する手段と、 前記表示装置の画面上で編集された図形の表示のうち、
    実行中の処理単位を表す図形およびアクセス中の共有デ
    ータを表す図形の表示を変化させる手段とを有すること
    を特徴とする計算機。
  17. 【請求項17】請求項10または11記載の計算機であ
    って、 前記入力装置よりの所定の操作に応じて、編集されたプ
    ログラムを、逐次的に実行する手段と、 前記表示装置の画面上で編集された図形およびテキスト
    の表示のうち、実行中の処理単位を表す図形の表示およ
    び実行中のテキストの表示を変化させる手段とを有する
    ことを特徴とする計算機。
  18. 【請求項18】請求項1、2、3または4記載のプログ
    ラム表示方法であって、 複数の前記図形を、当該複数の図形が重なった状態で表
    示した場合に、要求に応じて、重りの順序を変更して表
    示することを特徴とするプログラムの表示方法。
  19. 【請求項19】請求項9記載の計算機であって、 不確定性を有する前記共有データが存在した場合に、 受け付けた、各図形の編集内容より、当該不確定性の要
    因に関連する処理単位もしくは共有データもしくは関係
    を表す図形の表示の全てもしくは一部を変化変化させる
    手段を有することを特徴とする計算機。
  20. 【請求項20】請求項8または10記載の計算機であっ
    て、 編集されたプログラムを実行する複数のプロセッサと、 プログラムの実行の履歴を示す情報である履歴情報をプ
    ロセッサ毎に収集する手段と、 収集した履歴情報に応じて、前記表示装置の画面上で編
    集された図形の表示のうち、少なくとも、実行したプロ
    グラム実行期間中の各時点において、実行された処理単
    位を表す図形の表示と、実行したプログラム実行期間中
    の各時点において、実行に用いられた関係を表す図形の
    表示を時間的順序に従って順次変化させると共に、各時
    点における各プロセッサの実行状況を、前記表示装置に
    表示する手段を有することを特徴とする計算機。
  21. 【請求項21】表示装置を備えた計算機であって、 プログラムを構成する複数の処理単位をそれぞれを表す
    複数の図形を、当該図形の表す処理単位と関連する他の
    処理単位を表す図形と関連付けて表示し、2以上の前記
    処理単位が共通してアクセスするデータをを表す図形
    を、当該データをアクセスする処理単位を表す図形と関
    連付けて表示する手段と、 表示したプログラムを実行する手段と、 プログラムの実行の履歴を示す情報である履歴情報を収
    集する手段と、 収集した履歴情報に応じて、前記表示装置の画面上で編
    集された図形の表示のうち、実行された処理単位を表す
    図形の表示と、実行に用いられた関係を表す図形の表示
    と、アクセスされた共有データを表す図形の表示を変化
    させる手段を有することを特徴とする計算機。
JP5120190A 1993-05-21 1993-05-21 プログラムの表示方法およびプログラムの編集受付け方法 Pending JPH06332689A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5120190A JPH06332689A (ja) 1993-05-21 1993-05-21 プログラムの表示方法およびプログラムの編集受付け方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5120190A JPH06332689A (ja) 1993-05-21 1993-05-21 プログラムの表示方法およびプログラムの編集受付け方法

Publications (1)

Publication Number Publication Date
JPH06332689A true JPH06332689A (ja) 1994-12-02

Family

ID=14780144

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5120190A Pending JPH06332689A (ja) 1993-05-21 1993-05-21 プログラムの表示方法およびプログラムの編集受付け方法

Country Status (1)

Country Link
JP (1) JPH06332689A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000112736A (ja) * 1998-10-01 2000-04-21 Seiko Epson Corp プログラム作成装置
JP2007094922A (ja) * 2005-09-30 2007-04-12 Fuji Electric Holdings Co Ltd プログラム自動生成装置、方法、およびプログラム
WO2010058455A1 (ja) * 2008-11-19 2010-05-27 株式会社日立製作所 情報処理装置
JP2010134879A (ja) * 2008-12-08 2010-06-17 Ricoh Co Ltd ビジュアルプログラミング支援装置、ビジュアルプログラミング支援装置のビジュアルプログラミング支援方法、プログラム、および記憶媒体
US8074211B2 (en) 2008-09-30 2011-12-06 Kabushiki Kaisha Toshiba Computer program, multiprocessor system, and grouping method
WO2018012348A1 (ja) * 2016-07-13 2018-01-18 三菱電機株式会社 プログラム作成装置、プログラム作成実行装置、および、プログラム作成方法
WO2019138570A1 (ja) * 2018-01-15 2019-07-18 富士通株式会社 部分処理定義データのデータ構造、部分処理定義データ生成方法、および部分処理定義データ生成プログラム
JP2020102699A (ja) * 2018-12-20 2020-07-02 株式会社ドヴァ 情報処理装置、制御方法及びプログラム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000112736A (ja) * 1998-10-01 2000-04-21 Seiko Epson Corp プログラム作成装置
JP2007094922A (ja) * 2005-09-30 2007-04-12 Fuji Electric Holdings Co Ltd プログラム自動生成装置、方法、およびプログラム
US8074211B2 (en) 2008-09-30 2011-12-06 Kabushiki Kaisha Toshiba Computer program, multiprocessor system, and grouping method
WO2010058455A1 (ja) * 2008-11-19 2010-05-27 株式会社日立製作所 情報処理装置
JP2010134879A (ja) * 2008-12-08 2010-06-17 Ricoh Co Ltd ビジュアルプログラミング支援装置、ビジュアルプログラミング支援装置のビジュアルプログラミング支援方法、プログラム、および記憶媒体
WO2018012348A1 (ja) * 2016-07-13 2018-01-18 三菱電機株式会社 プログラム作成装置、プログラム作成実行装置、および、プログラム作成方法
JP6272595B1 (ja) * 2016-07-13 2018-01-31 三菱電機株式会社 プログラム作成装置、プログラム作成実行装置、および、プログラム作成方法
WO2019138570A1 (ja) * 2018-01-15 2019-07-18 富士通株式会社 部分処理定義データのデータ構造、部分処理定義データ生成方法、および部分処理定義データ生成プログラム
JP2020102699A (ja) * 2018-12-20 2020-07-02 株式会社ドヴァ 情報処理装置、制御方法及びプログラム

Similar Documents

Publication Publication Date Title
WO2020134633A1 (zh) 一种应用程序的开发方法、装置及集成开发工具
US6026362A (en) Tool and method for diagnosing and correcting errors in a computer program
US4866638A (en) Process for producing human-computer interface prototypes
JP2795244B2 (ja) プログラムデバッグシステム
US6408430B2 (en) Interactive software testing system and method
KR101238550B1 (ko) 명령을 내리는 방법 및 컴퓨터 판독가능 매체
US5961610A (en) Systems, methods and apparatus for generating and controlling display of medical images
CA2211373C (en) Learn mode script generation in a medical imaging system
US20040205702A1 (en) Windows-based flowcharting and code generation system
US20010014958A1 (en) Information processing apparatus, defect analysis program, defect analysis method, and application program development assistance system
US6707469B1 (en) Synchronous execution in a medical imaging system
JPH07191872A (ja) システム解析装置
JPH04337843A (ja) プログラム動作表示方法
US5831612A (en) Cell overlap detection and correction in a medical imaging system
US20060085783A1 (en) Multi-process display method in debugger system
JPH06332689A (ja) プログラムの表示方法およびプログラムの編集受付け方法
US20020147963A1 (en) Method and apparatus for generating machine control instructions
Mathur et al. Idea: an immersive debugger for actors
Oberhuber et al. DETOP-an interactive debugger for PowerPC based multicomputers
JP2000112737A (ja) プログラム作成装置
JP2000112736A (ja) プログラム作成装置
Yan et al. The automated instrumentation and monitoring system (AIMS) reference manual
JP3372106B2 (ja) プログラムデバッグ装置
May et al. Retargetability and extensibility in a parallel debugger
Smyth et al. Code generation for sequential constructiveness