JPH03191434A - 複数プロセス間における同期方法 - Google Patents

複数プロセス間における同期方法

Info

Publication number
JPH03191434A
JPH03191434A JP32949689A JP32949689A JPH03191434A JP H03191434 A JPH03191434 A JP H03191434A JP 32949689 A JP32949689 A JP 32949689A JP 32949689 A JP32949689 A JP 32949689A JP H03191434 A JPH03191434 A JP H03191434A
Authority
JP
Japan
Prior art keywords
processing
processes
file
processing group
group
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
JP32949689A
Other languages
English (en)
Inventor
Shigeru Suzuki
茂 鈴木
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP32949689A priority Critical patent/JPH03191434A/ja
Publication of JPH03191434A publication Critical patent/JPH03191434A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 [産業上の利用分野コ 本発明は、区分された処理群毎に、各処理群に属する複
数のプロセスを処理するために使用する複数プロセス間
における同期方法に関するものである。
[従来の技術] 例えば、マルチタスク処理においてタスクを実行するプ
ロセスが複数存在している場合などに、それらの複数の
プロセスを同一の処理群として、互いに同期させた上で
処理を実行することが要求される場合がある。
従来より、このような場合において複数のプロセスを同
期させる方法として、予め一つのプロセスをマスタープ
ロセスに選定するとともに、それ以外の他のプロセスは
全てスレーブプロセスとし、全てのスレーブプロセスは
マスタープロセスからの通知を待って処理を開始するこ
ととし、マスタープロセスが必要な処理を終了すると、
マスタープロセスから待機している全てのスレーブプロ
セスに対して通知を出す方法が知られている。
そして、この従来方法を使う場合に、マスタープロセス
からスレーブプロセスへの通知方法としては、バイブや
シグナルを用いる方法が知られている。
[発明が解決しようとする課題] しかし、マスタープロセスからの通知によって複数のプ
ロセスを同期させる前述の従来方法では、次のような点
が問題点とされ、改善が望まれていた。
一つは、予め同一の処理群となるプロセス相互間で、マ
スタープロセスになるものとスレーブプロセスになるも
のとを明確に区別しておかなければならず、同期させる
べき複数のプロセスが同一のプログラムを同一の方法で
実行するような場合には使えないという点である。
また、他の一つは、マスタープロセスからの通知方法と
してシグナルを用いる場合には、マスタープロセスが、
全てのスレーブプロセスのプロセス番号を知っていなけ
ればならないため、同期させ得るプロセス同士の関係に
制限ができるという点である。
本発明は、以上の事情に鑑みてなされたもので、同期さ
せるべき複数のプロセスが同一のプログラムを同一の方
法で実行するような場合にも使用することができ、また
、同期させ得るプロセス間の関係が制限されるようなこ
ともない新規の複数プロセス間における同期方法を提供
することを目的とする。
[課題を解決するための手段] 本発明に係る複数プロセス間における同期方法は、区分
された処理群毎に、各処理群に属する複数のプロセスを
処理するために使用するものであり、具体的に説明する
と、一つの処理群内で処理を終了したプロセス数を顕在
化させるために、予め、処理を終了したプロセスを順次
登録するファイルを用意しておく。
そして、各プロセスが処理を終了する毎に、同一の処理
群において同期させるべきプロセス数がn個である場合
に前記ファイルに既に登録されているプロセス数が(n
−1)に達しているか否かを判断する。
そして、同一の処理群で処理を終了したプロセス数が未
だ(n−1)に達していない場合には、処理を終了した
プロセスは、前記ファイルの該当する処理群に対する登
録箇所に登録した後に、スリープさせる。
一方、同一の処理群で処理を終了したプロセス数が既に
(n−1)に達している場合には、ファイル中に既に登
録されている全てのプロセスに対してスリープを解くシ
グナルを出すこととし、このシグナルによって各処理群
毎にn個のプロセスの同期をとることを特徴とする。
[作用] 本発明に係る複数プロセス間における同期方法において
は、各プロセスが処理を終了する毎に、同一の処理群に
おいて同期させるべきプロセス数がn個である場合に前
記ファイルに既に登録されているプロセス数が(n−1
)に達しているか否かを判断するが、この判断は、処理
を終了したそのプロセスが同一の処理群において一番最
後に処理を終了したものであるか否かを検出することを
意味している。
従って、本発明に係る複数プロセス間における同期方法
は、単に同一の処理群中で一番最後に処理を終了したプ
ロセスを検出し、その一番最後のプロセスの処理の終了
を期にして、同期のタイミングを取るものであり、同一
の処理群に属したいずれのプロセスが一番最後に処理を
終了するプロセスとなっても不都合は生じナイ。
そのため、同期させるべき複数のプロセス間には、マス
ター、スレーブといった区別を付ける必要がな(、全て
のプロセスを対等な関係で扱うことができ、同期させる
べき複数のプロセスが同一のプログラムを同じ方法で実
行するような場合でも、確実に同期をとることができる
また、前述したように、同期させるべき各プロセスがす
べて対等な関係にあることから、マスターとスレーブと
の主従関係によって管理する従来の方法の場合とは全く
異なり、特定のプロセスにその他のプロセスについての
情報(プロセス番号等)を認識させておくような必要が
なく、主従関係の管理のために同期させ得るプロセス間
の関係が制限されるといった問題も生じない。
[実施例] 第1図は、本発明の一実施例となる複数プロセス間にお
ける同期方法の手順を示した流れ図である。
この一実施例の同期方法は、マルチタスク処理において
タスクを実行するプロセスが複数存在していて、しかも
、これらの複数のプロセスに対する処理が複数の処理群
に区分されていて、一つの処理群における各プロセスの
処理を全て終えてから、次の処理群の各プロセスの処理
を開始する必要があり、一つの処理群における全処理を
終了して次の処理群へ移行する際に各プロセス間で同期
をとることが要求される場合に使われる。
この一実施例の同期方法では、予め、第1のファイルと
第2のファイルとを用意しておく。
ここに、第1のファイルは、一つの処理群における処理
が開始されて処理を終了したフロセスが出ると、そのプ
ロセスを順次登録して、一つの処理群内で処理を終了し
たプロセス数を顕在化させるもので、同期信号となるシ
グナルを各プロセスに通知するために利用される。
なお、処理を終了したプロセスの第1のファイルへの登
録は、そのプロセスのプロセス番号等の識別情報を登録
することによって行うものとする。
また、第1のファイルにおいて、処理を終了したプロセ
スを登録する場合に使用することのできる1プロセス当
たりのデータ長は、固定長で、任意のプロセスのプロセ
ス番号等の識別情報を登録することのできるだけの十分
な長さを確保しているものとする。
前記第2のファイルは、第1のファイルへの書き込みに
対する排他制御を実現するためのものである。従って、
使用する処理システムのオペレーティングシステムが第
1のファイルに対するロック機能をサポートしているよ
うな場合なら、前記第2のファイルは必要ない。しかし
、この実施例の場合は、前記オペレーティングシステム
が第1のファイルに対するロック機能をサポートしてい
ない場合を想定して、第2のファイルを備えたものとし
て、以下、説明を進める。
この一実施例の同期方法では、同期をとるべきプロセス
の数nを予め明らかにし、あらかじめ全てのプロセスに
与えておく(ステップ101)。
そして、まず、第2のファイルをオーブンさせる(ステ
ップ102)。
このときに用いるオーブンシステムコールに対しては、
第2のファイルが既に存在すればエラーを返し、第2の
ファイルが存在しなければ第2のファイルをクリエイト
(作成)するように、引数を指定しておき、次のステッ
プ103において第2のファイルがクリエイトされたか
否かを判断する。
そして、第2のファイルが既に存在するためにエラーが
返った場合には、1秒間スリープし、その後で、第2の
ファイルのオーブンを試みる(ステップ104)。
また、第2のファイルが存在せずにクリエイトできた場
合には、これによって第1のファイルに対するロックを
とれたものと判断し、次には第1のファイルをオーブン
する。
ナオ、この実施例では、オペレーティングシステムが第
1のファイルのロック機能をサポートしていないとして
説明しているが、もし、第1のファイルのロック機能を
サポートしているならば、以上の処理の代わりに、その
システムコールを使って第1のファイルをオーブンさせ
ても良い。
第1のファイルをオーブンにした場合には、まず、その
第1のファイルに既に登録されているデータ量を認識さ
せ、そのデータ量に基づいて、全処理を終えたプロセス
が同一の処理群に属する複数個のプロセスの内で、最後
に処理を終了したものであるか否かを判断する(ステッ
プ105)。
この判断の具体的な手法は、同一の処理群に属して同期
させるべきプロセス数がnで、処理を終了したプロセス
の登録に使用する1プロセス当たりのデータ長を“単位
レコード長パとしたとき、第1のファイルの大きさ(即
ち、第1のファイルに既に登録されているデータの大き
さ)が、単位レコード長x(n−1)と等しいかどうか
を調べるものである。
第1のファイルの大きさが、単位レコード長×(n−1
)と等しくないとき、即ち、そのプロセスが一番最後に
処理を終了したものではない場合であるが、第1のファ
イルの最後に自己のプロセスのプロセス番号を示すレコ
ードを書き込む(ステップ106)。
そして、次のステップ107において、第1のファイル
をクローズにして第2のファイルを消去する(なお、オ
ペレーティングシステムが第1のファイルに対するロッ
クをサポートしている場合には、第2のファイルを消去
する代わりに、口。
りを解除するシステムコールを呼へば良い)。
そして、まだ他のプロセスからシグナルが送られた形跡
がなければ、シグナルを受けるまでスリープする(ステ
ップ108)。同一の処理群としてn個のプロセスが存
在する場合、各プロセスは先に処理が終了したものから
順にスリープに入って、最終的には、(n−1)個のプ
ロセスがシグナルを待ってスリープしている状況が生成
される。
一方、ステップ105で第1のファイルの大きさを判断
した場合に、第1のファイルの大きさが単位レコード長
x(n−1)に等しい場合(即ち、そのプロセスが一番
最後に処理を終了したものであるとき)は、第1のファ
イルから(n−1)個のレコードを読み取り、各レコー
ドの示すプロセス番号のプロセスに対してシグナルを送
る(ステップ109)。
このシグナルが、ステップ108でスリープ中であった
プロセスを起こして、新たにn個のプロセスに対して次
の処理群Bを実行させる同期信号となる。
そして、ステップ109で/グナルを送出後に、第1の
ファイルおよび第2のファイルを消去して(ステップ1
1.0)、処理を終了する。
なお、この実施例では、一つの処理群における全てのプ
ロセスが終了するたびに、ステップ110によって第1
および第2のファイルを消去することとしているが、こ
れらのファイルが、予め各処理群毎に個別に用意される
場合であれば、このファイルの消去処理を省くことも考
えられる。ただし、同様の処理が、近い将来に繰り返さ
れるような場合であれば、ファイルの消去処理が必要に
なる。
第2図(a)〜第2図(d)は、前記一実施例の同期方
法を、具体例を使って説明するものである。
この具体例は、3つのプロセスPL、P2.P3に対す
る処理が、処理群Aと処理群Bに区分されていて、処理
群Bにおける処理は、処理群Aの処理を全て終えてから
実行する必要があり、処理群Aから処理群Bへ移行する
際に、各プロセス間で同期をとることが要求される場合
を設定している。
この具体例の場合は、第2図(a)→第2図(b)→第
2図(C)→第2図(d)の順に、処理が進められてゆ
(。
第2図(a)〜第2図(C)は、いずれも処理群Aの処
理の進行状況を示している。
第2図(a)は、処理群Aにおける3つのプロセスPI
、P2.P3の内で、最初にプロセスPlが処理を終了
した状況を示している。
このプロセスPLの場合は、処理群Aにおいて最初に処
理を終了したプロセスで、まだ処理を終了していないプ
ロセスが残っているため、第1図のステップ105にお
ける判断によってステップ106に進み、第1のファイ
ルIにその識別情報たるプロセス番号PIDが登録する
。そして、次のステ・/ブ107によって第2のファイ
ルを消去した後、スリープに入る。
第2図(b)は、処理群Aにおいて残っている2つのプ
ロセスP2.P3の内で、プロセスP3が先に処理を終
了した状況を示している。
このプロセスP3の場合は、処理群Aにおいて2番目に
処理を終了したプロセスで、まだ処理を終了していない
プロセスが残っているため、第1図のステップ105に
おける判断によってステ、。
ブ106に進み、第1のファイル1のレコードの末尾に
その識別情報たるプロセス番号proが登録する。そし
て、次のステップ107によって第2のファイルを消去
した後、スリープに入る。
第2図(C)は、処理群Aにおいて残っていた最後のプ
ロセスP2が処理を終了した状況を示している。
このプロセスP2の場合は、処理群Aにおいて一番最後
に処理を終了したプロセスあるため、第1図のステップ
105における判断によってステ・ツブ109に進み、
第1のファイル1のレコードを読み取って、先に登録さ
れた二つのプロセスP1゜P3に対してスリープを解く
シグナルSを送る。
そして、その後、第1図のステップ110によって第1
および第2のファイルの消去がなされて、処理群Aにお
ける処理を終了する。
このように、同一の処理群において一番最後に処理を終
了したプロセスP2の処理終了を期にして、先に処理を
終了してスリープに入っていたプロセスを起こすことに
よって、処理群Aの処理を全て終えた後に、初めて処理
群Bの実行に移行することが保証される。
第2図(d)は、新たに、処理群Bに対する処理が開始
された状態を示している。
この第2図(d)では、どのプロセスも処理を終了して
いないため、図示のように、第1のファイル1には何も
書き込まれていない。
以上の説明から明らかなように、前記一実施例の複数プ
ロセス間における同期方法は、単に同一の処理群中で一
番最後に処理を終了したプロセスを検出し、その一番最
後のプロセスの処理の終了を期にして、同期のタイミン
グを取るものであり、同一の処理群に属したいずれのフ
ロセスが一番最後に処理を終了するプロセスとなっても
不都合は生じない。
従って、同期させるべき複数のプロセス間には、マスタ
ー スレーブといった区別を付ける必要がなく、全ての
プロセスを対等な関係で扱うことができ、同期させるべ
き複数のプロセスが同一のプログラムを同じ方法で実行
するような場合でも、確実に同期をとることができる。
また、前述したように、同期させるべき各プロセスがす
べて対等な関係にあることから、マスターとスレーブと
の主従関係によって管理する従来の方法の場合とは全く
異なり、特定のプロセスにその他のプロセスについての
情報(プロセス番号等)を認識させておくような必要が
なく、主従関係の管理のために同期させ得るプロセス間
の関係が制限されるといった問題も生じない。
なお、前記実施例において、マルチタスク処理を実行す
るシステムとしては、ブロモ・ノサが単一のものを想定
しているが、プロセッサを複数持つシステムでも本発明
を利用することが考えられる。
[発明の効果] 以上の説明から明らかなように、本発明に係る複数プロ
セス間における同期方法においては、各プロセスが処理
を終了する毎に、同一の処理群において同期させるべき
プロセス数がn個である場合に前記ファイルに既に登録
されているプロセス数が(n −1)に達しているが否
かを判断するが、この判断は、処理を終了したそのプロ
セスが同一の処理群において一番最後に処理を終了した
ものであるか否かを検出することを意味している。
従って、本発明に係る複数プロセス間における同期方法
は、単に同一の処理群中で一番最後に処理を終了したプ
ロセスを検出し、その一番最後のプロセスの処理の終了
を期にして、同期のタイミングを取るものであり、同一
の処理群に属したいずれのプロセスが一番最後に処理を
終了するプロセスとなっても不都合は生じない。
そのため、同期させるべき複数のプロセス間には、マス
ター スレーブといった区別を付ける必要がなく、全て
のプロセスを対等な関係で扱うことができ、同期させる
べき複数のプロセスが同一のプログラムを同じ方法で実
行するような場合でも、確実に同期をとることができる
また、前述したように、同期させるべき各プロセスがす
べて対等な関係にあることから、マスターとスレーブと
の主従関係によって管理する従来の方法の場合とは全く
異なり、特定のプロセスにその他のプロセスについての
情報(プロセス番号等)を認識させておくような必要が
なく、主従関係の管理のために同期させ得るプロセス間
の関係が制限されるといった問題も生じない。
【図面の簡単な説明】
第1図は本発明の一実施例の処理手順を示す流れ図、第
2図(a)ないし第2図(d)は具体例を使って前記一
実施例の処理を説明する説明図である。 A、B・・・・・・処理群、PI、P2.P3・・・・
・・プロセス 1・・・・・・ファイル。 第1図 (a) (−竺C (b P’+、P2.円 一、7’Ot人 ファイル1 (d) 具体例による一実施例の処理の説明図 第2図

Claims (1)

  1. 【特許請求の範囲】 区分された処理群毎に、各処理群に属する複数のプロセ
    スを処理するために使用する複数プロセス間における同
    期方法であつて、 一つの処理群内で処理を終了したプロセス数を顕在化さ
    せるために、処理を終了したプロセスを順次登録するフ
    ァイルを用意しておき、 各プロセスが処理を終了する毎に、同一の処理群におい
    て同期させるべきプロセス数がn個である場合に前記フ
    ァイルに既に登録されているプロセス数が(n−1)に
    達しているか否かを判断し、同一の処理群で処理を終了
    したプロセス数が未だ(n−1)に達していない場合に
    は、処理を終了したプロセスは、前記ファイルの該当す
    る処理群に対する登録箇所に登録した後に、スリープさ
    せ、 一方、同一の処理群で処理を終了したプロセス数が既に
    (n−1)に達している場合には、ファイル中に既に登
    録されている全てのプロセスに対してスリープを解くシ
    グナルを出すこととし、前記シグナルによって各処理群
    毎にn個のプロセスの同期をとることを特徴とする複数
    プロセス間における同期方法。
JP32949689A 1989-12-21 1989-12-21 複数プロセス間における同期方法 Pending JPH03191434A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP32949689A JPH03191434A (ja) 1989-12-21 1989-12-21 複数プロセス間における同期方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32949689A JPH03191434A (ja) 1989-12-21 1989-12-21 複数プロセス間における同期方法

Publications (1)

Publication Number Publication Date
JPH03191434A true JPH03191434A (ja) 1991-08-21

Family

ID=18222019

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32949689A Pending JPH03191434A (ja) 1989-12-21 1989-12-21 複数プロセス間における同期方法

Country Status (1)

Country Link
JP (1) JPH03191434A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120107167A1 (en) * 2009-08-19 2012-05-03 Aida Chemical Industries Co., Ltd. Method for producing sintered copper article for craft or decorative use, and plastic copper containing clay compound

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120107167A1 (en) * 2009-08-19 2012-05-03 Aida Chemical Industries Co., Ltd. Method for producing sintered copper article for craft or decorative use, and plastic copper containing clay compound

Similar Documents

Publication Publication Date Title
US5241675A (en) Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers
JP3779263B2 (ja) 共同作業システムのためのコンフリクトの解決
US6463532B1 (en) System and method for effectuating distributed consensus among members of a processor set in a multiprocessor computing system through the use of shared storage resources
JP5816572B2 (ja) 車両用制御装置
JPH02238553A (ja) マルチプロセツサ・システム
JPH0465414B2 (ja)
JPH0713813B2 (ja) データアクセス方法及びデータ処理システム
JP3113841B2 (ja) 並列トランザクション処理システム
US7219348B2 (en) Detecting and causing latent deadlocks in multi-threaded programs
US20020138706A1 (en) Reader-writer lock method and system
CN111651426A (zh) 数据迁移方法、装置及计算机可读存储介质
CN112800060B (zh) 数据处理方法、装置、计算机可读存储介质及电子设备
CN111858626B (zh) 一种基于并行执行的数据同步的方法和装置
JPS6073746A (ja) 情報処理システムおよびプロセス実行制御方式
JPH03191434A (ja) 複数プロセス間における同期方法
CN117667869B (zh) 一种全局事务并发控制方法、装置及设备
Hsu et al. Concurrent operations in linear hashing
JPS6326907B2 (ja)
Bukhari et al. Two fully distributed concurrency control algorithms
CN112667148A (zh) 一种集群存储数据在线迁移的方法及系统
JPH09319643A (ja) データベース手続き共有手段
JPH02176829A (ja) ライブラリ内メンバ同時更新方式
JPH03196341A (ja) オンライン・システムにおけるデータ同期管理方式
JPH0433127A (ja) チェックポイント制御方式
JPH0448321A (ja) 外部記憶装置の多重化制御方式