JPH11224205A - プロセス制御システム - Google Patents

プロセス制御システム

Info

Publication number
JPH11224205A
JPH11224205A JP10330639A JP33063998A JPH11224205A JP H11224205 A JPH11224205 A JP H11224205A JP 10330639 A JP10330639 A JP 10330639A JP 33063998 A JP33063998 A JP 33063998A JP H11224205 A JPH11224205 A JP H11224205A
Authority
JP
Japan
Prior art keywords
thread
semaphore
signal
waiting
value
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
JP10330639A
Other languages
English (en)
Other versions
JP3707273B2 (ja
Inventor
Kazunori Nishihara
一紀 西原
Takaaki Hiramatsu
孝章 平松
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox 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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Publication of JPH11224205A publication Critical patent/JPH11224205A/ja
Application granted granted Critical
Publication of JP3707273B2 publication Critical patent/JP3707273B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 スレッド間の同期制御において、待機スレッ
ドがタイムアウトにより再始動すると、セマフォー(共
有変数)の値が不適正になる。 【解決手段】 待機スレッドは、他のスレッドからのシ
グナル又はタイムアウトによって再始動する。タイムア
ウトの場合、セマフォーの値が不適正になる可能性があ
るが、その場合には、新しく設けたシグナルカウンタの
値を利用してセマフォーの値を訂正できる。具体的に
は、ダミー待機スレッドが生成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、マルチタスクコ
ンピュータシステムにおける共用資源(リソース)に対
する排他的なアクセス制御に関する。特に、この発明
は、処理スレッド間の高度な通信同期を取るための条件
変数に関わるものである。
【0002】
【従来の技術及びその課題】現在のコンピュータシステ
ムでは、複数のプロセスが1又は複数のプロセッサ上で
並行して実行されることがある。それらのプロセス間に
おいては、しばしば記憶装置、入出力装置及びメモリ等
の資源が共用される。複数のプロセスが同じデータ及び
メモリまたは同じ資源を利用して動作しなければならな
い場合には、何等かの機構を用意し、資源に対する相互
排他的なアクセスを実現することが必要になる。そのよ
うな機構は、プロセスのプリエンプト方式(優先実行方
式)に従うマルチタスクをサポートしている単一プロセ
ッサシステムでも必要である。つまり、ある時点では、
特定の資源に対しただ1つのプロセスだけにアクセス権
を与える機構が必要である。さらに、1つのコンピュー
タシステムで複数のプロセッサが動作を実行していて、
動作を正常に完了させるためにそれらプロセッサ間で相
互調整が必要である場合、プロセッサ間の処理の同期を
取るためには何等かの工夫が必要がある。
【0003】セマフォーは、共用資源に対するアクセス
を調整する同期機構である。セマフォーはその内部にカ
ウンタを有しており、そのカウンタには、非負整数をと
る値が管理される。そのカウンタの初期値は、通常、セ
マフォーが管理する資源の個数に設定される。バイナリ
セマフォーの初期値は1である。また、セマフォーの初
期化後は、通常、獲得処理(wait)と開放処理(signa
l)の2つの場合のみアクセスが許容される。あるプロ
セスがバイナリセマフォーを獲得すると、そのプロセス
がセマフォーを解放するまでは、他のプロセスは同じセ
マフォーを獲得することはできない。1より大きな値を
もっているセマフォーは、カウントセマフォーと呼ばれ
る。カウントセマフォーは、複数のプロセスにより獲得
できる。カウントセマフォーの値は、獲得される度に1
ずつ減算される。値がゼロになると、いずれかのプロセ
スがセマフォーを解放するまでは、新たにセマフォーを
獲得しようとしてもブロックされる。このように、セマ
フォーは共用資源を相互排他的に使用できるようにする
ものである。
【0004】条件変数は、セマフォーと同じような同期
機構である。第1のプロセス群(1つまたは複数のプロ
セスで構成される)が条件変数の下で待ち状態の場合、
第2のプロセスが再始動するための「シグナル」または
「ブロードキャスト」を送信しない限り、第1のプロセ
ス群はブロックされたままである。第2のプロセスが条
件変数に対し「シグナル」を送信すると、当該条件変数
の下でブロックされている第1のプロセス群のいずれか
のプロセスが再始動される。第2のプロセスが条件変数
に対し「ブロードキャスト」を送信すると、第1のプロ
セス群に属するすべてのプロセスが再始動される。条件
変数の下でブロックされているプロセスがない場合は、
条件変数に対しシグナルまたはブロードキャストを送信
しても、当然何も実行されない。
【0005】条件変数方式では構造化アクセス機能が利
用できるため、お互いにロックしているプロセスを簡単
に訂正できる。一方、実際のシステムでは構成要素に関
するタイムアウト機能が必要であるため、プロセス同期
化機構でもタイムアウト機能を実現する必要がある。
【0006】
【課題を解決するための手段】本発明は、プロセッサの
動作上の遅れが最小になるように、自己管理型分散シス
テムにおいて非同期対話プロセスの排他機能を可能にす
る装置及び方法を提供するものである。また、本発明
は、時間が重要な意味をもつアプリケーションにおける
システム信頼性を向上させるためのプロトコルも提供す
る。また、本発明は、遊休状態の分散プロセッサによる
計算時間の無駄を省く通信プロトコルも提供する。さら
に、本発明は、プリミティブな同期装置しか備わってい
ないオペレーティングシステムに、強力な同期機構を提
供するものである。このように、この発明の装置及び方
法は、条件変数が備わっていないオペレーティングシス
テムでも条件変数を使用できるようにするものである。
【0007】条件変数は、自己管理型分散システムにお
いて、非同期に対話するプロセッサが相互排他機能を利
用できるようにするものである。また、条件変数は通信
プロトコルとしても利用でき、これにより時間が重要な
意味を持つアプリケーションでシステムを使用できるよ
うにし、プロセッサの遊休状態により引き起こされる無
駄な計算時間を最小限に抑えることができる。この発明
の装置には、マルチプロセッシングコンピューティング
環境における共用資源へのアクセスを制御するシステム
も含まれる。この発明の方法にれば、タイムアウトが発
生した時に対処できる条件変数が提供される。条件変数
はセマフォーに似ているが、条件変数はmutexロック機
能を利用してスレッドを待ち状態にすることができる
点、およびシグナルをブロードキャストできる点でセマ
フォーとは異なっている。条件変数は、1つのセマフォ
ーと2つのカウンタとで実現されている。一方のカウン
タは待ち状態のスレッドをカウントし、他方のカウンタ
はセマフォーに対しシグナルを送信するスレッド数をカ
ウントしている。
【0008】本発明は、望ましくは、セマフォー値を仲
立ちとして複数のスレッド間において同期制御を行う方
法であって、前記セマフォー値がゼロの場合にそれを獲
得しようとしたスレッドが待機状態におかれる待機処理
工程と、他のスレッドから再始動シグナルが発行された
場合に待機スレッドがあればそれを再始動させるシグナ
ル処理工程と、待機状態が一定時間継続した場合に待機
スレッドを再始動させかつ前記セマフォー値を減少させ
るタイムアウト処理工程と、前記タイムアウト工程と相
前後して、他のスレッドから再始動シグナルが発行され
て前記セマフォー値が増加することによりそれが不適正
の値になった場合に、それを判定する不適正判定工程
と、前記不適正が判定された場合にダミー待機処理を行
って前記セマフォー値を適正にするダミー待機処理工程
と、を含むことを特徴とする。
【0009】
【発明の実施の形態】以下に、図面を参照しながら、こ
の発明に係る実施形態を詳細に説明する。なお、同じ数
字は対応する構成要素を示している。
【0010】図1は、分散マルチプロセッシングシステ
ム10を示したもので、複数のプロセッサ12と資源1
4が相互接続システム16を介して接続されている。マ
ルチプロセッシングシステム10は、リアルタイムシス
テム、広域ネットワーク、またはローカルエリアネット
ワークであってもよい。また、1次プロセッサと複数の
2次プロセッサとで構成されるネットワークでもよい。
ただし、この場合、2次プロセッサ同士はピアツーピア
(対等)ネットワークで実行され、1次プロセッサの監
視は受けないものとする。さらに、マルチプロセッシン
グシステム10は単一のコンピュータでもよい。この場
合、図1に示されている各プロセッサは独立した処理ス
レッドになるため、別々の処理スレッド間で同期を取る
必要がある。プロセッサ12は、分散コンピューティン
グ環境における個別スレッドでもよい。基本的には、本
発明においては、資源が競合関係にあるオブジェクト、
又は別のオブジェクトとの同期が必要なオブジェクトで
あれば、効果を期待できる。
【0011】図2は、図1の相互接続システム16を中
心としたブロック図である。図2に示されるように、相
互接続システム16にはメモリ40が含まれ、インター
フェース42を介してスレッド44と通信している。イ
ンターフェース42には、記憶装置46及び入出力(I/
O)装置48も接続されている。メモリ装置40には、
実行可能プログラムを記憶するための記憶領域41、デ
ータを記憶するためのデータ記憶領域43、及び条件変
数モジュール45が含まれている。
【0012】マルチプロセッシングシステム10の操作
時には、複数のプロセスP1〜Pnを実行するために、
各プロセスPiは複数のスレッド44のいずれかに割り
当てられる。これらのプロセスの実行可能コードは、記
憶領域43に記憶されている。記憶領域43には、プロ
セスの処理対象になるデータも含まれている。記憶領域
43は、図2に示されるように、別々の記憶領域43i
〜43nに論理的に分割され、データ構造体を記憶でき
るようになっている。プロセスP1〜PNの実行時に
は、データ記憶領域43、データ記憶装置46、及び入
出力装置48等の各種システム資源に対するアクセスの
同期をとることが望まれる。このようにすることで任意
の時点では、ただ1つのスレッドまたは限られた数のス
レッドにだけ、これらの資源に対するアクセス権を与え
ることができる。
【0013】図3は、条件変数モジュール45を論理的
に図示したものである。条件変数モジュール45には、
要素としてレコードRiが含まれている。各レコードR
iには、1つの条件変数が含まれる。各条件変数は、任
意のスレッド44からアクセス可能である。
【0014】図4は、条件変数モジュール45の各要素
Riの内容を示すブロック図である。条件変数モジュー
ル45の各要素Riは、セマフォー50、シグナルカウ
ンタ51、及び、待ち状態カウンタ52で構成されてい
る。待ち状態カウンタ52は待ち状態にあるスレッド4
4の数を示していて、そのようなスレッド数に応じて増
減するものである。セマフォー50は、スレッドにより
待ち状態におかれたりスレッド44からのシグナルを受
け取ったりして、各スレッド間の処理の同期を取るため
に使用される。シグナルカウンタ51は、スレッドによ
り出されたシグナル数を示している。
【0015】条件変数は、幾つかの点でセマフォーと同
様である。ただし、セマフォーがデータに対するアクセ
スを制御することでプロセス(つまりスレッド)の同期
をとっているのに対し、条件変数はデータの値を基にス
レッドの同期をとっている。複数のスレッドが連携処理
を実行する場合、データが特定の状態になるか又は特定
の事象が発生するまで、待ち状態におかれる。このよう
に、条件変数は同期をとるためのオブジェクトとして使
用され、特定の事象が発生してロックが解除されるまで
スレッドがロック状態のままにしておかれる。ロック
は、同時に解除されることもあり、また、タイムアウト
が発生するかあるいは他のスレッドが条件変数に対しシ
グナルを発行することで解除されることもある。条件変
数は、使用時には、常に、mutexロックに関連付けられ
ている。
【0016】ここで、mutexロックは、特殊なバイナリ
セマフォーであり、所有者スレッド情報を有し、そのセ
マフォーを獲得したスレッドのみが開放処理を行うこと
ができるというものである。本実施形態では、通常のバ
イナリセマフォーの他、metexセマフォーを利用でき
る。
【0017】スレッドとは、あるプロセスにおいて制御
が順次に実行される場合の1つの単位である。スレッド
は、現在、処理実行中のこともあり、待ち状態(つま
り、処理が中断されている)のこともある。上記mutex
は同期を取るためのオブジェクトで、複数のスレッドが
共用データに対するアクセスの逐次化を図るために使用
される。mutexは相互排他機能を実現するためのもので
ある。この相互排他機能は、あるスレッドがmutexに対
しロックをかけると、同じスレッドがmutexのロックを
解除するまではそのスレッドがオーナーの状態を継続す
ることで実現されている。
【0018】スレッドは待ち状態になると、特定の事象
が発生するまで(signalセマフォーが特定のスレッドに
対し送られるかまたはbroadcastセマフォーがすべての
スレッドに対し送られるまで)待ち状態を継続する。特
定の事象が発生しない場合は、無限待ち状態になる。あ
るいは、セマフォー(signalまたはbroadcast)を受け
取るかタイムアウトが発生するまで、待ち状態を継続す
る。タイムアウトが発生して待ち状態のスレッドが再始
動されてからセマフォーが受け取られると、セマフォー
カウンタ50にはカウント1が残ったままになる。つま
り、次のスレッドの待ち状態処理は正しく行われない。
これに関しては図5及び図6を用いて後に詳述する。
【0019】条件変数をインプリメントするために、図
2に示されているメモリ装置40は幾つかの条件変数を
受け取り及び発行する。プロシージャー“Initialize”
は、条件変数を初期設定し及び獲得する。プロシージャ
ー“CondWait”はmutexを解放し、条件変数にシグナル
が送られてくるのを待つ。このシーケンスは、並行プロ
シージャー処理が他のスレッドによりこのシーケンスに
関連付けられずに行われる。言い換えると、条件変数
“CondWait”は、アトミックに処理される。条件変数に
対しシグナルまたはブロードキャストが送られると、そ
の条件変数に属する待ち状態のスレッドのいずれか又は
すべてが再始動され、mutexが獲得される。プロシージ
ャー“CondWaitTimed”と“CondWait”とは同じである
が、前者にタイムアウト値の引数が用意されている点が
異なっている。タイムアウトで指定する時間内で処理が
行われないと、スレッドは待ち状態から元の状態に自動
的に戻る。条件変数“CondSignal”は、条件変数にシグ
ナルを送る。条件変数“CondBroadcast”は、条件変数
にブロードキャストを送る。条件変数“CondTerminat
e”は、条件変数を終了させる。これらの条件変数の使
用方法については、後で説明する。
【0020】図5は、シグナルカウンタが備わっていな
い従来のコンピュータシステムにおけるwait及びbroadc
astシグナルの通常のインプリメンテーションを示した
タイミングチャートである。説明のため、セマフォー
(カウンタ)の値(分子)及びセマフォーで待つスレッ
ド数(分母)を表す分数として、セマフォー50の状態
が便宜上表現されている。実際には、セマフォーの値だ
けが管理されている。
【0021】いま、スレッド1(CondBroadcast)及び
スレッド2(CondWaitTimed)が処理を行っている。時
間T1では、待ち状態カウンタ52(condcount)及び
セマフォー50(condsem)の状態に示されているよう
に、初期状態では待ち状態のスレッドはなく、カウント
はゼロである。時間T2では、スレッド2は待ち状態に
なり、セマフォー50で待つスレッド数は1だけ増加す
る。スレッド2は待ち条件変数を獲得し、signalセマフ
ォーが送られてくるかタイムアウトが発生することで再
始動されるまで待つ。待ち状態カウンタ52は1に設定
される。時間T3では、スレッド1はsignalセマフォー
を送信してスレッド2を再始動した後、スレッド1は待
ち状態になる。セマフォー50で待つスレッド数はゼロ
になる。セマフォーの値(分子)も0である。時間T4
では、スレッド2は待ち状態カウンタ52を1だけ減少
させる。このタイミングチャートで示されているよう
に、スレッド2はスレッド1からのsignalセマフォーに
より再始動される。
【0022】図6は図5と同じ事象を示しているが、タ
イムアウトが発生する点が異なっている。時間T1で
は、スレッド1及びスレッド2が処理を行っており、待
ち状態のスレッドはない。したがって、待ち状態カウン
タ52はゼロに設定され、セマフォー50の値はゼロに
設定されている。時間T2では、スレッド2は待ち状態
になり、待ち状態カウンタ52を1だけ増加させる。ス
レッド2は、waitセマフォーシグナルが送られてくるか
またはタイムアウトが発生するまで待ち状態になる。時
間T3では、スレッド2はタイムアウトが発生すること
で再始動される。時間T4では、スレッド1はsignalを
セマフォー50へ送信し、セマフォー50の値は1にな
る。しかし、スレッド2はタイムアウトによりすでに再
始動されているため、スレッド1からのsignalはスレッ
ド2の再始動でなく、セマフォー50の値は不正な値に
なる。時間T5では、スレッド2は待ち状態カウンタ5
2を1だけ減少させる。したがって、次の“CondWait”
条件変数処理は正しい処理を行うことができない。
【0023】これに対し、図7は、スレッド1と2の処
理を示したタイミングチャートであるが、シグナルカウ
ンタ51(sigcount)が追加されている。図7では、ス
レッド2がスレッド1からのsignalセマフォーにより再
始動される点では、通常のルーチンに従った処理が行わ
れている。まず時間T1では、システムは条件が初期設
定された状態で設定される。つまり、待ち状態カウンタ
52及びセマフォー50の値は両方共ゼロに設定され
る。さらに、シグナルカウンタ51もゼロに設定され
る。時間T2では、スレッド2が待ち状態になり、セマ
フォー50で待つスレッド数は1だけ増加する。スレッ
ド2はsignalセマフォーが送られてくることにより、wa
it条件変数を獲得するか、またはタイムアウトが発生し
て再始動されるまで、待ち状態になる。待ち状態カウン
タ50は1に設定される。図5で示した場合と同様に、
待ち状態のスレッド2は、タイムアウトが引き起こされ
る前に、時間T3でスレッド1からのsignalセマフォー
により再始動される。また、時間T3では、スレッド1
はSignalの数をSigcountに設定する。時間T4では、待
ち状態カウンタが1だけ減少される。時間T5では、シ
グナルカウンタは1だけ減少される。このように、シグ
ナルカウンタ51を追加しても、通常の処理の実行には
影響を与えない。
【0024】図8は、タイムアウトが発生してスレッド
2を再始動させるとき、本発明によるスレッド1及び2
の処理を示したものである。このケースは図6に示した
ケースと同じであるが、シグナルカウンタ51が追加さ
れている点が異なっている。時間T1でシステムは初期
設定され、この時、待ち状態、シグナル、及びセマフォ
ー50〜52はゼロに設定される。時間T2で、スレッ
ド2は処理を待つかまたは中断しなければならない条件
を検出する。したがって、スレッド2は“ConWaitTime
d”を実行し、signalセマフォーが送られてくるかタイ
ムアウトが発生することで再始動されるまで待つ。この
ため、時間T2では、待ち状態カウンタ52は1に設定
され、セマフォー50で1つのスレッドが待ち状態であ
ることを示す。
【0025】時間T3で、スレッド2はタイムアウトが
発生したことで再始動され、セマフォー50には待ち状
態のスレッドは存在しなくなる。時間T4では、signal
セマフォーがブロードキャストされる。スレッド2はす
でに再始動されているにもかかわらず、signalセマフォ
ーはスレッド2の再始動を試みる。シグナルカウンタ5
1はスレッド1により1に設定され、セマフォー50の
値は1だけ増加される。このように、セマフォー50は
待ち状態スレッドの数を正しく表すことができない。
【0026】時間T5では、待ち状態カウンタ52は時
間T3で発生したタイムアウトに応答して1だけ減少さ
れる。待ち状態カウンタ52はゼロになり、シグナルカ
ウンタ51(1に設定されたまま)はシグナルの超過数
を表す。このように、セマフォー50の状態は、シグナ
ルカウンタの値を使用して訂正することができる。
【0027】時間T6では、ダミー処理が開始される。
つまり、スレッド2はシグナルカウンタ51の値によ
り、「シグナル」を受けた回数だけ待ち処理を実行す
る。この処理により、セマフォー50の値は、ゼロに設
定される。このように、シグナルカウンタ51を追加す
ることで、セマフォー状態を訂正できる。つまり、1ま
たは複数のスレッドがタイムアウトにより再始動されて
も、シグナルカウンタ51はすべてのスレッドが再始動
された時点でセマフォーカウンタ50をゼロにリセット
できる。
【0028】図9〜図11は、この発明の方式及び方法
を使用しない従来のシステムを示している。図9は、シ
グナルカウンタ51を使用しないコンピュータシステム
10の従来の初期値設定方法を示している。コンピュー
タシステム10を初期設定するために、待機スレッドカ
ウンタ(condcount)52が0に設定され、セマフォー
(condsem)が0に設定される。
【0029】図10は、“CondSignal”条件変数処理の
サブルーチンを示したものである。ステップS10で
は、条件変数によりアクセスを制御される共用資源の排
他ロックを取得できるまで待ち、ロックが取得できたな
らば、次の処理ステップに進む。
【0030】ステップS12では、メモリ装置40の待
機スレッド数カウンタ(condcount)52を検査する。
待機スレッド数カウンタ(condcount)52の値が0よ
り大きい場合は、処理はステップS13に進む。0以下
の場合は、処理はステップS14にジャンプする。ステ
ップS13では、セマフォー(condsem)50で待機し
ているスレッドを再始動するため、signalをセマフォー
(condsem)50に発行する。次に、ステップS15に
移る。ステップ14では、S10で獲得したロックを開
放する。次に処理はステップS15に進み、制御は主ル
ーチンへ戻る。
【0031】図11は、シグナルカウンタが備わってい
ないシステムにおける“CondWait”条件変数処理のサブ
ルーチンを示したものである。ステップS16では、条
件変数によりアクセスを制御される共用資源の排他ロッ
クを獲得できるまで待ち、ロックが獲得できたならば、
次の処理ステップS17へ進む。ステップS17では、
待機スレッド数カウンタ(condcount)52に1を加算
し、S16で獲得したロックを開放し、セマフォー(co
ndsem)50にsignalが発行されるまで待機する。セマ
フォー(condsem)50にSignalが発行されることによ
り、再始動したら、待機スレッド数カウンタ(condcoun
t)52から1を減算し、制御は主ルーチンに戻る。
【0032】図12〜14は、この発明に係る方法を示
したものである。図12は、システム初期設定を示した
ものであるが、シグナルカウンタ(sigcount)51及び
待機スレッド数カウンタ(condcount)52、シグナル
カウンタ(sigcount)51へのアクセスを排他制御する
ロックが追加されている。ステップS20では、セマフ
ォー(condsem)50は初期値0に、待機スレッド数カ
ウンタ(condcount)52及びシグナルカウンタ(sigco
unt)51は0に設定される。
【0033】図13は、“CondSignal”条件変数処理の
サブルーチンを示したものである。ステップS21で、
条件変数によりアクセスを制御される共用資源の排他ロ
ック及び条件変数を構成するカウンタにアクセスするた
めのロックを獲得できるまで待ち、ロックが獲得できた
ならば次の処理ステップS22へ進む。ステップ22
で、メモリ装置40の待機スレッド数カウンタ(condco
unt)52を検査する。待機スレッド数カウンタ(condc
ount)52の値が0より大きな値に設定されている場
合、処理はステップS24に進む。0以下の場合は処理
はステップS26へ直接ジャンプする。
【0034】ステップS24では、シグナルカウンタ
(sigcount)51に1を加算し、セマフォー(condse
m)50で待機しているスレッドを再始動するためsigna
lをセマフォー(condsem)50に対して発行する。ステ
ップS26では、獲得していたロックを開放し、制御は
主ルーチンへ戻る。
【0035】図14は、“CondWait”条件変数処理のサ
ブルーチンを示したものである。ステップS30では、
条件変数によりアクセスを制御される共用資源の排他ロ
ックを獲得できるまで待ち、ロックが獲得できたなら
ば、次のステップS34へ進む。
【0036】ステップS34では、待機スレッド数カウ
ンタ(condcount)52、シグナル数カウンタ(sigcoun
t)51にアクセスするためのロックを獲得するまで待
ち、獲得できたならば、待機スレッド数カウンタ(cond
count)52に1を加算し、ロックを開放する。次にス
テップS36へ進む。
【0037】ステップS36では、条件変数によりアク
セスを制御される共有資源の排他ロックを開放し、セマ
フォー(condsem)50でsignal又はタイムアウトの発
生を待つ。セマフォー50に対しsignalが発行される
か、タイムアウトが発生したことにより、再始動される
と、次のステップS38へ進む。ステップS38では、
待機スレッド数カウンタ(condcount)52、シグナル
数カウンタ(sigcount)51にアクセスするためのロッ
クを獲得するまで待ち、獲得できたならば、待機スレッ
ド数カウンタ(condcount)52から1を減算し、次の
ステップS40へ進む。
【0038】ステップ40では、スレッドがセマフォー
(coundsem)50へのsignalが発行されたために再始動
したのか、タイムアウトしたのかを検査する。signalに
より再始動した場合は、処理はステップS42へ進む。
そうでない場合、処理はステップS44へ直接ジャンプ
する。
【0039】ステップS42では、シグナルカウンタ
(sigcount)51から1を減算する。次に、処理はステ
ップS44へ進む。ステップS44で、待機スレッド数
カウンタ(condcount)52が0に設定されていて、し
かもシグナルカウンタ(sigcount)51が0より大きい
かどうか判断する。両方の条件が満たされている場合、
処理はステップS46へ進む。満たされていない場合、
処理はステップS50へジャンプする。
【0040】ステップS46では、ダミー wait処理が
実行され、シグナルカウンタ(sigcount)51から1を
減算する。次に、処理はステップS48へ進む。ステッ
プS48で、シグナルカウンタ(sigcount)51が0に
設定されたかどうかを判別する。シグナルカウンタ(si
gcount)51が0に設定された場合、処理はステップS
50へ進む。設定されていない場合、処理はステップS
46へ戻る。
【0041】ステップS50では、待機スレッド数カウ
ンタ(condcount)52、シグナルカウンタ(sigcoun
t)51にアクセスするためのロックを開放する。次
に、条件変数にアクセスするためのロックを獲得するま
で待ち、獲得できたならば、制御は主ルーチンへ戻る。
【0042】上記実施形態によれば、タイムアウト機能
付きの条件変数を実現できる。セマフォーによる条件変
数自体は従来から知られているが、上記実施形態によれ
ば、タイムアウト機能が付加された条件変数を実現でき
る。
【0043】ここで、タイムアウト処理は、セマフォー
の機能を利用して実行され、タイムアウト発生タイミン
グは制御できない。よって、開放処理(signal処理)と
タイムアウト処理とがほとんど同時に起こった場合、開
放処理で読み出されるセマフォーの値が、タイムアウト
前の値であるかタイムアウト後の値であるか判別できな
くなる。具体的に説明すると、シグナル処理とタイムア
ウト処理とが相前後して発生した場合、シグナル処理を
行うスレッドは、待機スレッド数カウンタから、タイム
アウトしたスレッドを含んだ待機スレッド数を読み出す
可能性がある。この場合、必要な数より多い数のシグナ
ルが発生してしまう。その状態では、最終的にセマフォ
ーの値が0より大きな値(正の値)となり、次にウエイ
ト処理を行うスレッドが期待通りにウエイトせず、セマ
フォーを獲得して処理を終了してしまうという問題が生
じる。これに対し、上記実施形態によれば、シグナルカ
ウンタが設けられ、その値に基づいてダミー処理を実行
することにより、セマフォーの値を強制的に修正でき
る。ダミー処理では、待機状態から起きてきたスレッド
が待機スレッド数から1を減算してその値が0になり、
シグナルカウンタが正の値をもっている時に実行され
る。具体的には、シグナルカウンタの値だけ待機処理を
呼び、シグナルカウンタの値を0に戻す処理が実行され
るる。ちなみに、タイムアウトしたスレッドだけでな
く、正常にシグナルにより再起動したスレッドでもダミ
ー処理が必要となる場合がある。その理由は、タイムア
ウト処理とシグナル処理がほとんど同時に発生した場合
に、機構の実現方法如何によっては、一連の処理の結
果、最後に処理されるスレッドがタイムアウトしたスレ
ッドである保証はなく、問題を検知するスレットが正常
にシグナル処理により再起動されたスレッドになる可能
性があるからである。
【0044】上記で説明した実施例では、適切にプログ
ラムされた汎用コンピュータがデータ処理を制御してい
る。しかし、これらの処理機能は、システムレベル全体
の制御を実行する中央処理装置部とその中央処理装置部
の制御下で特定の計算、機能等の処理を実行する独立専
用回路とを備えた、単一目的集積回路(ASIC等)を使用
して実現することもできる。また、この処理は、独立し
た専用またはプログラマブル集積電子回路あるいは装置
(PAL、PLA、FPGA、及びPLD等のハードワイヤード電子
または論理装置等)を使用して実現することもできる。
通常、図10〜12のフローチャートを実行できる有限
状態マシンに接続されている装置または装置の集合を使
用し、データ処理を制御できる。
【0045】好ましい実施態様を参照しながらこの発明
を説明したが、この実施態様は説明上のもので、制約的
なものではない。特許請求の範囲で定義しているこの発
明の精神と範囲に反することなしに、各種変更が可能で
ある。
【図面の簡単な説明】
【図1】 この発明の特徴を実現している分散プロセッ
サシステムを示すブロック図である。
【図2】 図1の分散プロセッサシステムの相互接続シ
ステムを示すブロック図である。
【図3】 図1の分散プロセッサシステムの条件変数モ
ジュールを論理的に示す図である。
【図4】 図3の条件変数モジュールの各要素を示すブ
ロック図である。
【図5】 コンピュータシステムのタイミング図であ
る。
【図6】 タイムアウトが発生したときのコンピュータ
システムのタイミング図である。
【図7】 シグナルカウンタを使用するコンピュータシ
ステムのタイミング図である。
【図8】 タイムアウトが発生したときにシグナルカウ
ンタを備えているコンピュータシステムのタイミング図
である。
【図9】 シグナルカウンタを備えていないコンピュー
タシステムにおけるセマフォーの使用方法を示したフロ
ーチャートである。
【図10】 シグナルカウンタを備えていないコンピュ
ータシステムにおけるセマフォーの使用方法を示したフ
ローチャートである。
【図11】 シグナルカウンタを備えていないコンピュ
ータシステムにおけるセマフォーの使用方法を示したフ
ローチャートである。
【図12】 シグナルカウンタを備えたコンピュータシ
ステムにおける条件変数の使用方法を示しているフロー
チャートである。
【図13】 シグナルカウンタを備えたコンピュータシ
ステムにおける条件変数の使用方法を示しているフロー
チャートである。
【図14】 シグナルカウンタを備えたコンピュータシ
ステムにおける条件変数の使用方法を示しているフロー
チャートである。
【符号の説明】
44 スレッド、50 セマフォー、52 待ち状態カ
ウンタ、51 シグナルカウンタ。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 他のスレッドからのシグナルの発行又は
    タイムアウト状態の発生まで待機状態におかれるスレッ
    ドについて、その処理をブロックしておくセマフォー
    と、 待機スレッド数をカウントする待機カウンタと、 待機スレッドのタイムアウト状態に基づいて当該待機ス
    レッドを再始動させ、前記待機カウンタを減少させる手
    段と、 再始動シグナルに応答して再始動させる待機スレッドに
    ついて出された再始動シグナルの個数をカウントするシ
    グナルカウンタと、 前記再始動シグナルの個数分の待機スレッドを再始動
    し、前記待機カウンタと前記シグナルカウンタを減少さ
    せる手段と、 前記スレッドが前記待機カウンタ及び前記シグナルカウ
    ンタへアクセスできないように排他的にロックする手段
    と、 前記再始動シグナルの個数がゼロを越えかつ前記待機ス
    レッドの個数がゼロであるか否かを判定する手段と、 前記再始動シグナルの個数がゼロを越えかつ前記待機ス
    レッドの個数がゼロの場合に、前記再始動シグナルの個
    数に等しい個数のダミー待機処理を実行する手段と、 を含むことを特徴とするシステム。
  2. 【請求項2】 セマフォー値を仲立ちとして複数のスレ
    ッド間において同期制御を行う方法であって、 前記セマフォー値がゼロの場合にそれを獲得しようとし
    たスレッドが待機状態におかれる待機処理工程と、 他のスレッドから再始動シグナルが発行された場合に、
    待機スレッドがあればそれを再始動させるシグナル処理
    工程と、 待機状態が一定時間継続した場合に待機スレッドを再始
    動させるタイムアウト処理工程と、 前記タイムアウト処理工程と相前後して他のスレッドか
    ら再始動シグナルが発行され、これにより前記セマフォ
    ー値が増加して不適正の値になった場合にそれを判定す
    る不適正判定工程と、 前記不適正が判定された場合にダミー待機処理を行って
    前記セマフォー値を適正にするダミー待機処理工程と、 を含むことを特徴とする同期制御方法。
  3. 【請求項3】 請求項2記載の方法において、更に、 前記再始動シグナルが発行された場合にシグナルカウン
    タの値を増加させるシグナルカウンタ増加工程と、 再始動シグナルの発行により待機スレッドが再始動した
    場合に前記シグナルカウンタの値を減少させるシグナル
    カウンタ減少工程と、 を含み、 前記ダミー待機処理工程では、前記シグナルカウンタの
    値に相当する個数のダミー待機処理が実行され、シグナ
    ルカウンタの値がゼロに初期化されることを特徴とする
    同期制御方法。
JP33063998A 1997-11-21 1998-11-20 プロセス制御システム Expired - Fee Related JP3707273B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/976,178 US6026427A (en) 1997-11-21 1997-11-21 Condition variable to synchronize high level communication between processing threads
US08/976,178 1997-11-21

Publications (2)

Publication Number Publication Date
JPH11224205A true JPH11224205A (ja) 1999-08-17
JP3707273B2 JP3707273B2 (ja) 2005-10-19

Family

ID=25523821

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33063998A Expired - Fee Related JP3707273B2 (ja) 1997-11-21 1998-11-20 プロセス制御システム

Country Status (2)

Country Link
US (1) US6026427A (ja)
JP (1) JP3707273B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1311333C (zh) * 2002-11-12 2007-04-18 英特尔公司 用于串行互斥体的方法与装置
US8555291B2 (en) 2008-01-17 2013-10-08 Nec Corporation Synchronization control method and information processing device
JP2016511489A (ja) * 2013-03-14 2016-04-14 クアルコム,インコーポレイテッド ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
CN112162845A (zh) * 2020-10-30 2021-01-01 北京北信源软件股份有限公司 一种业务进程同步的方法及装置

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6920634B1 (en) * 1998-08-03 2005-07-19 International Business Machines Corporation Detecting and causing unsafe latent accesses to a resource in multi-threaded programs
US6173442B1 (en) * 1999-02-05 2001-01-09 Sun Microsystems, Inc. Busy-wait-free synchronization
ATE365944T1 (de) * 1999-10-26 2007-07-15 Iontas Ltd Überwachung von rechnerbenutzung
US6662364B1 (en) * 1999-11-05 2003-12-09 Hewlett-Packard Company, L.P. System and method for reducing synchronization overhead in multithreaded code
US6823511B1 (en) * 2000-01-10 2004-11-23 International Business Machines Corporation Reader-writer lock for multiprocessor systems
US7143410B1 (en) * 2000-03-31 2006-11-28 Intel Corporation Synchronization mechanism and method for synchronizing multiple threads with a single thread
US6735760B1 (en) 2000-11-08 2004-05-11 Sun Microsystems, Inc. Relaxed lock protocol
EP1217517A1 (en) * 2000-12-22 2002-06-26 Sun Microsystems, Inc. Synchronizing calls in a server and client system
US6785887B2 (en) * 2000-12-27 2004-08-31 International Business Machines Corporation Technique for using shared resources on a multi-threaded processor
JP3755415B2 (ja) * 2001-04-04 2006-03-15 株式会社デンソー 処理実行装置、当該処理実行装置に搭載される処理プログラム、及び記録媒体
US7089555B2 (en) 2001-06-27 2006-08-08 International Business Machines Corporation Ordered semaphore management subsystem
US7454753B2 (en) * 2001-06-27 2008-11-18 International Business Machines Corporation Semaphore management subsystem for use with multi-thread processor systems
US7080376B2 (en) * 2001-09-21 2006-07-18 Intel Corporation High performance synchronization of accesses by threads to shared resources
US7406690B2 (en) * 2001-09-26 2008-07-29 International Business Machines Corporation Flow lookahead in an ordered semaphore management subsystem
US7143414B2 (en) 2001-09-26 2006-11-28 International Business Machines Corporation Method and apparatus for locking multiple semaphores
WO2003083614A2 (en) * 2002-03-25 2003-10-09 Eternal Systems, Inc. Transparent consistent active replication of multithreaded application programs
FI116166B (fi) * 2002-06-20 2005-09-30 Nokia Corp Menetelmä ja järjestelmä sovellusistuntojen suorittamiseksi elektroniikkalaitteessa, ja elektroniikkalaite
US7036125B2 (en) * 2002-08-13 2006-04-25 International Business Machines Corporation Eliminating memory corruption when performing tree functions on multiple threads
US7512950B1 (en) * 2003-08-14 2009-03-31 Sun Microsystems, Inc. Barrier synchronization object for multi-threaded applications
US20050081204A1 (en) * 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
US7383368B2 (en) * 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US8578380B1 (en) 2003-12-17 2013-11-05 Vmware, Inc. Program concurrency control using condition variables
US7904907B2 (en) * 2003-12-31 2011-03-08 Intel Corporation Processing architecture having passive threads and active semaphores
US7689992B2 (en) * 2004-06-25 2010-03-30 International Business Machines Corporation Sharing lock mechanism between protocol layers
US7770172B2 (en) * 2004-09-01 2010-08-03 Microsoft Corporation Conditional variables without spinlocks
US20060085698A1 (en) * 2004-10-15 2006-04-20 Microsoft Corporation Synchronization mechanism for tools that drive UI-based applications
US7526634B1 (en) * 2005-12-19 2009-04-28 Nvidia Corporation Counter-based delay of dependent thread group execution
KR100763200B1 (ko) * 2006-02-24 2007-10-04 삼성전자주식회사 인터럽트 가능한 스레드 동기화 방법 및 장치
US8136113B2 (en) * 2006-12-20 2012-03-13 International Business Machines Corporation Method and apparatus for adjusting sleep time of fixed high-priority threads
US20090063881A1 (en) * 2007-08-31 2009-03-05 Mips Technologies, Inc. Low-overhead/power-saving processor synchronization mechanism, and applications thereof
US20090094614A1 (en) * 2007-10-05 2009-04-09 Microsoft Corporation Direct synchronous input
CN102103523A (zh) * 2009-12-22 2011-06-22 国际商业机器公司 锁分配控制的方法和装置
US20120254552A1 (en) * 2011-03-30 2012-10-04 Arm Limited Memory access remapping
US9542236B2 (en) 2011-12-29 2017-01-10 Oracle International Corporation Efficiency sequencer for multiple concurrently-executing threads of execution
US10095548B2 (en) * 2012-05-21 2018-10-09 Nvidia Corporation Mechanism for waking common resource requests within a resource management subsystem
US9465655B2 (en) * 2012-11-28 2016-10-11 Htc Corporation Method for managing threads using executing time scheduling technique and electronic device using the same method
US10025642B2 (en) 2014-11-25 2018-07-17 Red Hat, Inc. Wake-up ordering of processing streams using sequential identifiers
US11144368B2 (en) * 2019-06-18 2021-10-12 Qualcomm Incorproated Providing self-resetting multi-producer multi-consumer semaphores in distributed processor-based systems

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253423A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
JP2866241B2 (ja) * 1992-01-30 1999-03-08 株式会社東芝 コンピュータシステムおよびスケジューリング方法
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5586318A (en) * 1993-12-23 1996-12-17 Microsoft Corporation Method and system for managing ownership of a released synchronization mechanism
US5656274A (en) * 1995-02-24 1997-08-12 National Science Council Of Taiwan Thromboxane A2 receptor antagonism and antioxidant action of cinnamophilin and its derivatives
US5771382A (en) * 1995-06-05 1998-06-23 International Business Machines Corporation System and method for synchronizing static variable initialization and reference under a multi-threaded computer environment
US5630136A (en) * 1995-06-09 1997-05-13 Sun Microsystems, Inc. Method and apparatus for serializing access to multithreading unsafe resources
US5822588A (en) * 1995-06-09 1998-10-13 Sun Microsystem, Inc. System and method for checking the use of synchronization locks in a multi-threaded target program
US5706515A (en) * 1996-03-25 1998-01-06 Sun Microsystems, Inc. System and method for implementing an atomic wait for notification operation

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1311333C (zh) * 2002-11-12 2007-04-18 英特尔公司 用于串行互斥体的方法与装置
US8555291B2 (en) 2008-01-17 2013-10-08 Nec Corporation Synchronization control method and information processing device
JP2016511489A (ja) * 2013-03-14 2016-04-14 クアルコム,インコーポレイテッド ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
US10133598B2 (en) 2013-03-14 2018-11-20 Qualcomm Incorporated Systems and methods of using a hypervisor to assign virtual processor priority based on task priority and to schedule virtual processors for guest operating systems
CN112162845A (zh) * 2020-10-30 2021-01-01 北京北信源软件股份有限公司 一种业务进程同步的方法及装置
CN112162845B (zh) * 2020-10-30 2023-10-13 北京北信源软件股份有限公司 一种业务进程同步的方法及装置

Also Published As

Publication number Publication date
JP3707273B2 (ja) 2005-10-19
US6026427A (en) 2000-02-15

Similar Documents

Publication Publication Date Title
JP3707273B2 (ja) プロセス制御システム
US5524247A (en) System for scheduling programming units to a resource based on status variables indicating a lock or lock-wait state thereof
CN106790694B (zh) 分布式系统及分布式系统中目标对象的调度方法
EP0475282B1 (en) Synchronous method and apparatus for processors
US8495266B2 (en) Distributed lock
US7506339B2 (en) High performance synchronization of accesses by threads to shared resources
US7536582B1 (en) Fault-tolerant match-and-set locking mechanism for multiprocessor systems
US7065765B2 (en) Serializing event handling in a threaded system with no wait states
US20050125789A1 (en) Executing processes in a multiprocessing environment
JPH05197604A (ja) マルチプロセッサ・コンピュータ及びその動作方法
US6021457A (en) Method and an apparatus for minimizing perturbation while monitoring parallel applications
US5875320A (en) System and method for synchronizing plural processor clocks in a multiprocessor system
US7493618B2 (en) Fault tolerant mutual exclusion locks for shared memory systems
US8225320B2 (en) Processing data using continuous processing task and binary routine
US6029219A (en) Arbitration circuit for arbitrating requests from multiple processors
Liu et al. Lock-free scheduling of logical processes in parallel simulation
Le Lann Chapter 11 Synchronization
Wang et al. Solving the group priority inversion problem in a timed asynchronous system
CN115934287B (zh) 应用系统多服务集群下定时任务调度方法
JP2001022720A (ja) マルチプロセッサシステム
JPS6336545B2 (ja)
Georgiev et al. Some Analysis of the Timing Parameters in Real-time Embedded Systems
JPH0877039A (ja) テスト方法
JPH07200486A (ja) 情報処理装置
JP2514671B2 (ja) デ―タアクセス制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050712

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050725

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090812

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100812

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110812

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees