JPS63634A - 並列論理型言語実行方式 - Google Patents

並列論理型言語実行方式

Info

Publication number
JPS63634A
JPS63634A JP14353386A JP14353386A JPS63634A JP S63634 A JPS63634 A JP S63634A JP 14353386 A JP14353386 A JP 14353386A JP 14353386 A JP14353386 A JP 14353386A JP S63634 A JPS63634 A JP S63634A
Authority
JP
Japan
Prior art keywords
execution
clause
executable
argument
suspended
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
JP14353386A
Other languages
English (en)
Inventor
Takeshi Sato
健 佐藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP14353386A priority Critical patent/JPS63634A/ja
Publication of JPS63634A publication Critical patent/JPS63634A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 C櫃 要〕 並列論理型言語GHCの処理において、実行を中断して
いるプロセスが実行可能になったときに、再開する節の
始めから実行する方式。
〔産業上の利用分野〕
本発明は並列論理型言語で作成したプログラムの実行中
に、あるプロセスで実行を中断し、そのプロセスが実行
可能になったとき、実行を再開する実行方式に関する。
〔従来の技術〕
プログラミング言語に並列論理型言語G HCと呼ばれ
るものがある。GHCはCLAUSE (節とも呼ぶ)
の集合であり、CLAUSEは H: −G 1. =−−Gm l B +、 =Bn
という形をしている。こ\でパーティカルバ−1”はT
RtlSTオペレータ、“1′″の前の部分はPASS
IVE PART、  ” l ” ノ後の部分はAC
TIVE  PARTと呼ばれる。またHはCLAII
SEのヘッド、Giはガード、B1はボディと呼ぶ。各
H,Gi、BiはATOMICFORMULAテある。
ATOMICFORMUL^は述語名または述語名(引
数、・・・・・・引数)という形をしている。同じ述語
名を持つ手続きを節と呼ぶ。引数(ヒキスウ)は 定数または変数または構造体 という形をしている。定数、述語名は小文字のアルファ
ベットから始まる文字列で表わす。変数は大文字のアル
ファベントから始まる文字列で表わす。構造体は 構造体名(引数、・・・・・・引数) という形をしている。構造体名は小文字のアルファベッ
トから始まる文字列で表わす。
、GHCで作成されたプログラムの実行は、最初、初期
プロセス列?I+、・・・・・・In、を与えることで
起動される。Iiはプロセスと呼ばれ、ATO旧CFO
RMULAである。
まずプロセスとCLAUSEとのマツチング(ユニフィ
ケーションとも呼ぶ)が行なわれる。マ・7チングは以
下の条件を満たせば成功である。
(1)プロセスとCLAUSHの述語名が等しい。
(2)プロセスの各引数に関して次の条件が満足される
。(a)プロセスの引数とCLAUSEの引数が両方定
数で、等しい。(b)プロセスの引数とCLAUSHの
引数が変数で、CLA[ISEの変数が他のプロセスの
変数とマツチングを行なっていない。(Clプロセスの
引数が定数でCLAUSEの引数が変数である。(dl
プロセスの引数が構造体でCLAUSHの引数が構造体
のとき■構造体名が等しい、または■各引数が上記(a
l〜・(d)の条件を満たず。
以上の条件を満たすCLAUSE (クローズ)のヘッ
ドを探す。もしなければ、以下の条件を満たすようなも
のがあればそのプロセスは実行を中断する。
(1)プロセスとCLAUSHの述語名が等しい。
(2)引数に次のものが1つ以上ある。(alプロセス
の引数が変数で、CLAUSEの引数が定数または構造
体である。fb)プロセスの引数とCLAUSHの引数
が変数で、CLAUSHの変数が他のプロセスの変数と
マツチングを行なっている。(C)プロセスの引数が構
造体でCLAUSHの引数が構造体のとき■構造体名が
等しい又は■引数の中に上記(al〜(C1の条件を満
たすものが存在する。
これは、プロセスの環境がまだ定まっていないとき(ま
だ変数のとき)に、CLAUSE内の変数でないものと
マツチしようとすると、そのプロセスの実行が中断され
るということである。プロセスの環境を外部環境と呼び
、プロセスが中断するときは外部環境を書き換えること
が起るときとみることもできる。そして実行がそれ以上
に進むことができるのは、どこからか値がその変数に代
入されたときとなる。
もし以上のどの条件も満たすCLAUSEがない場合に
はFAILする。もしマツチング成功するCLAUSE
があれば、そのガード部も実行する。ガード部ではやは
り外部環境を書き換えるような実行は中断される。もし
ガード部の実行がすべて成功するCLAUSEがあれば
、TRUSTの実行を行う。これは別なCLAUSEの
PASSIVE部に関する実行がなされているときその
実行をやめさせるものである。そして、プロセスはAC
TIVE  PARTの部分におきかわる。ここでは外
部環境を書き替えてもよい。
実行例を挙げると、今、次のCLAUSEがあり、■p
  (a、  Y)  ニーtruel仁rue。
■p  (X、  b)  : −truel tru
e。
■Q  (X、  Y)  ニーtruel Y=b。
これに対して次の初期プロセスを与えたとする。
?−p  (X、Y)、q  (X、Y)。
上記のゴールが起動されると先ずp(Qでもよいが)に
関してのCLAIISEが探され、■、■とのマツチン
グが生ずる。このヘッドとのマツチングは両方のCLA
USEとも中断(suspend )される。なぜなら
、■では第一引数が定数であるのに対しプロセスの第一
引数は変数だからであり、■では第二引数が定数である
のに対しプロセスの第二引数は変数だからである。次に
qに関してのCLAUSEが探され、■のヘッドとのマ
ツチングが生ずる。この場合は変数同士のマツチングな
ので成功する。次にqに関するACTIVE  PAR
Tの実行がなされる。これにより第二引数Yに定数すが
代入される。するとpに関して■のCLAUSEが実行
を進めることができ、pが実行されてpとq両方成功し
たので実行は終了するのである。
〔発明が解決しようとする問題点〕
この並列論理型言語GHCの処理において、実行が中断
したプロセスを中断プロセスリストにたくわえておき、
実行可能になった際に実行可能プロセスリストにつなげ
る方式において、実行の再開をする方式には以下の2つ
のものがあった。
(1)再開する手続きの始めから実行する方式。前記の
実行例で言えば、Y=bが得られたとき、述語名pにつ
いてのマツチングが得られる可能性が出てくるが、これ
を先ず■について行ない、次に■について行ないと、順
に行なう方式。
(2)再開する命令から実行する方式。前記の実行例で
言えば、ゴールと■とのミスマツチは一方は変数Y、他
方は定数すであることにより発生し、実行中断となった
が、y=bが分った現在、これはミスマツチではないと
する。
しかし、(1)の方式欠点は、失敗した節に関しても実
行を重複しなければならないことであり、また(2)の
方式の欠点は、その命令以前に実行した結果を覚えてお
く領域が必要となる点である。即ち、上記の例で言えば
、(1)では失敗である■とのマツチングをまた行なう
無駄があり、また(2)では変数Xについては一致、変
数Yについてはy+bで不一致、という比較結果を覚え
ておく必要がある。
本発明はか−る点を改善しようとするものである。
〔問題点を解決するための手段〕
本発明は、並列論理型言語GHCの処理において、実行
を中断しているプロセスが、実行可能になったときに、
再開する節の始めから実行する方式である。
〔作用〕
前記の例で言えば■から再開するので、(11の方式の
ように■に対する無用なマツチングをすることがなく、
また(2)の方式のように■とのマツチング結果を詳細
にメモリに格納しておく必要がない。
〔実施例〕
第1図に処理システムの概要を示す。図示のようにこの
システムはスケジューラ10、ユニファイア12、デー
タベース14、及びプロセス、引数ベクトル、ローカル
変数、ヒープ各領域16゜18.20.22からなる。
スケジューラは実行可能プロセスをプロセス領域から取
り出し、それをユニファイアに送る機能と、ユニファイ
アから再起動されたプロセスを実行可能プロセスリスト
につなぐ機能を持つ。またユニファイアは、スケジュー
ラから送られてきたプロセスと対応する手続きくプロセ
スの述語名と等しい述語の集まり)を実行する機能を持
つ。手続きを実行した際に使う変数の値がまだ定まって
いないと実行が中断されることがある。このときは、ユ
ニファイアはまだ定まっていない変数にそのプロセスを
つなげる。
また逆に変数に値が代入されるときにその変数に関して
中断しているプロセスがあれば、そのプロセスをスケジ
ューラに送る。またデータベースは手続きの定義を格納
してお(領域、ヒープ領域は実行中に造られる構造を蓄
える領域、弓i数ベクトル領域はプロセスの環境を蓄え
る領域、プロセス領域は処理の基本単位であるプロセス
の実体を蓄える領域、ローカル領域は実行中の参照結果
を覚えておく領域である。
プロセスは次のフィールド名を持つセルからなる。
P・・・・・・PRCDTG (プロシージャタグ)ま
たはCLSTG(クローズタグ)というタグを持ち、前
者はそのプロセスが実行する手続きへのポインタであり
、これは始めてそのプロセスが実行されるときにセット
されている。また後者はそのプロセスが実行する節への
ポインタであり、これは中断したあとのプロセスにセッ
トされている。実行中断したとき、再開すべき節はこの
ポインタにより示される。
A・・・・・・AVTG (アーキュメント ベクター
 タグ)というタグを持ち、そのプロセスが持つ引数の
ベクトルへのポインタである。どの引数ベクトルをその
プロセスが使っているかを示す。
■・・・・・・中断したとき、どの変数で中断したかを
表わすポインタである。LINKTG (リンクタグ)
または、PDTG (プロセス ディスクリブタタグ)
というタグを持ち、これらによって次のものを表す。
LINKTGのとき:そのプロセスがサスペンドのとき
は、そのプロセスで待っている変数へのポインタである
。そのプロセスが実行可能ならば、実行可能プロセスポ
インタへのポインタである。PDTGのとき:そのプロ
セスがサスペンドのときは、同じ変数でまっている変数
へのポインタである。そのプロセスが実行可能ならば、
他の実行可能プロセスへのポインタである。これにより
、実行可能プロセス、サスペンドプロセスともに、循環
リストを形成する。
B・・・・・・PDTGというタグを持ち、同じ手続き
呼出によってサスペンドしたプロセス(兄第プロセスと
呼ぶ)へのポインタである。前記の例ではp(X、Y)
については■と■でサスペンドし、2つのプロセスがで
きたが、これらを結ぶポインタである。同じ兄第プロセ
スは循環リストを形成している。
次にプロセスの実行過程を示す。例としては前と同じ次
のものをとり、この実行でプロセスがどの様に変化して
行くかを示す。
■ p   (a、   Y)   :  −仁ru6
 1 true。
■p (x、  b)  ニーtruel true。
■Q (X、 Y)  ニーtrue! Y=b。
?−p (X、Y)、q (X、Y)。
初期プロセス?−p (X、  Y) 、  q (X
、 Y) 。
が与えられた初期状態では各部は第2図の如くなってい
る。変数X、Yはまだ未定義なのでヒープ領域22の当
該領域にはIINBTG  (アンバウンドタグ)が置
かれる。プロセスp、  qの変数X、 Yはベクl−
ル領域18に、ヒープ領域のX、Yを指すLINKTG
としておかれる。またプロセスp、qは最初実行可能な
ので、実行可能プロセスリスト16(先頭はRIINN
−11というポインタ)に図示のようにつながれる。プ
ロセスpのPフィールドは■を七しており (■を実行
せよ、を示す)、Aフィールドはp用のaベクトルを指
し、■フィールドは次の実行可能プロセスqを指し、B
フィールドはまだ待ちプロセスはないので自己を指して
いる。
同様にqプロセスのPフィールドは■を指し、Aフィー
ルドはq用のaベクトルを指し、■フィールドは実行可
能リストを指し、Bは自己を指している。
次にRLINN−Hから最初のプロセスを取り出す。
このプロセスでは、Pフィールドが、pという手続きを
詣しているのでpを実行することになる。
pを実行すると、先ず■の節に関してヘッドのユニフィ
ケーションが起こる。しかし節の第1引数が定数でプロ
セス側が変数であるので、このユニフィケーションはサ
スペンドされる。そこでXについて、pのプロセスが■
のCLAUSEでサスペンドしていることを表すために
Xの変数をPDTGにして、そこからプロセスpの■に
関する待ち合わせプロセスを生成する(実際は元のプロ
セスが置き換わる)。次に■の節に関して実行するが今
度は第2引数に関してサスペンドするので、Yに関して
待ち合わせプロセスを生成する。そしてYで待つプロセ
スのBフィールドからXで待つプロセ′スのPフィール
ドを措して循環リストを形成する。pを実行した状態を
第3図に示す。24は中断プロセスリストを示す。
次にqを実行するが、qの実行ではパンシブパートの実
行が成功するのでアクティブ パートでの実行が開始さ
れる。ここではヒープ領域22のYにbが代入される。
このときヒープ領域22のYはPDTGであったのでY
で待っているプロセスがあることが分り、これを辿って
“Yで待つプロセス”に至り、これを実行可能プロセス
リスト16に加える。中断プロセスリスト24の“Xで
待つプロセス”については何もないので、そのま\であ
る。
qに関しては、他に実行するものがないので成功して、
消滅する。qを実行した状態を第4図に示す。
次はこの“Yで待っていたプロセス”を実行するが、そ
れはPフィールドのCLSTGが示す■の節より始める
。節■に関してのヘッドのユニフィケーションを再度行
なう(節■に関しては再実行を行なわない)と今度は成
功し、トラストが起る。
すると兄第プロセスであるXで待っているプロセスをB
フィール、ドを使ってたぐり、それを削除する。このあ
とアクティブ部は成功するので、実行しているプロセス
も削除されて全て成功したのでこの実行は正常終了する
このように本発明では、サスペンドしたとき変数毎に待
ちプロセスリスト24を作り、その待ちプロセスにどの
節でサスペンドしたかを記録しておき、実行可能になっ
たとき、待ちプロセスを実行可能リスト16に組み換え
、記録しであるサスペンド節より、核部の先頭から行な
うので、重複実行の部分を減らすことができかつ実行途
中の結果を覚える必要がない。また、制限されたGHC
(FLAT−GHC”)のパッシブ部にはユーザ定義の
節呼出かないため、節の最初から再実行するオーバーヘ
ッドはほとんどない。
〔発明の効果〕
以上説明したように本発明によれば7.実行が中断した
プロセスの再開を、失敗する節に対しても行なうことな
くまた前回実行結果を詳細に記憶しておく必要なく、適
確に行なうことができ甚だ有効である。
【図面の簡単な説明】
第1図は処理システムの構成を示すブロック図、第2図
〜第5図は実行過程の説明図である。 第2図、第3図で16は実行可能プロセスリスト、24
は実行中断プロセスリストである。

Claims (1)

  1. 【特許請求の範囲】 ヘッド(H)、ガード(Gi)、トラストオペレータ(
    l)、ボディ(Bi)からなる笛(H:−G・・・・・
    ・Gm|B_1、・・・・・・B_n)の集合である並
    列論理型言語でのプログラムの実行方式において、実行
    が中断したとき、その中断したプロセスを実行中断プロ
    セスリスト(24)に蓄え、かつどの節で中断したかを
    記録しておき、 実行再開が可能になったとき、前記実行中断プロセスを
    実行可能プロセスリスト(16)に組み換え、前記の記
    録により、中断した節を知って該節から実行開始するこ
    とを特徴とする並列論理型言語実行方式。
JP14353386A 1986-06-19 1986-06-19 並列論理型言語実行方式 Pending JPS63634A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP14353386A JPS63634A (ja) 1986-06-19 1986-06-19 並列論理型言語実行方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14353386A JPS63634A (ja) 1986-06-19 1986-06-19 並列論理型言語実行方式

Publications (1)

Publication Number Publication Date
JPS63634A true JPS63634A (ja) 1988-01-05

Family

ID=15340955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14353386A Pending JPS63634A (ja) 1986-06-19 1986-06-19 並列論理型言語実行方式

Country Status (1)

Country Link
JP (1) JPS63634A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4940221A (en) * 1987-12-23 1990-07-10 Heidelberger Druckmaschinen Ag Suction-type sheet-separating device for a feeder of a printing press

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4940221A (en) * 1987-12-23 1990-07-10 Heidelberger Druckmaschinen Ag Suction-type sheet-separating device for a feeder of a printing press

Similar Documents

Publication Publication Date Title
JPS599764A (ja) 複数行更新動作の原子性を保証する方法
JPH04229355A (ja) データアクセス方法及びデータ処理システム
US10606830B2 (en) Multi-version data system nested transactions isolation
Gelashvili et al. Block-stm: Scaling blockchain execution by turning ordering curse to a performance blessing
JPH0565892B2 (ja)
JP2752094B2 (ja) 論理型言語におけるバックトラック処理方式
JPS63634A (ja) 並列論理型言語実行方式
JPH0734177B2 (ja) 知識情報参照装置
Attiya et al. Staleness and Local Progress in Transactional Memory
JPS6380325A (ja) 情報検索方法
JPH0695868A (ja) ソフトウェア管理方式
Garcia-Molina et al. Services for a workflow management system
JPS62293434A (ja) 分岐先予測制御方式
JP3021697B2 (ja) プログラミング言語における例外処理方法
JP3008483B2 (ja) リンク処理装置
JPH06175862A (ja) 電子計算機装置
JPH05250336A (ja) 負荷分散による処理高速化のためのコンピュータ・プログラミング手法
JPS58205256A (ja) データ処理方法
JPS61279938A (ja) プロログ・プログラム並列処理方式
JPH02204835A (ja) ルール型プログラム実行方法
JPS63118945A (ja) Prologプログラムの高速実行処理方式
JPS5846439A (ja) 計算機のプログラム編集方法
JPS6227822A (ja) バツクトラツク制御方式
JPS61229127A (ja) スタツク制御方式
JPS61139839A (ja) 情報処理装置