JPH0769843B2 - How to efficiently perform mutual exclusion - Google Patents
How to efficiently perform mutual exclusionInfo
- Publication number
- JPH0769843B2 JPH0769843B2 JP1184882A JP18488289A JPH0769843B2 JP H0769843 B2 JPH0769843 B2 JP H0769843B2 JP 1184882 A JP1184882 A JP 1184882A JP 18488289 A JP18488289 A JP 18488289A JP H0769843 B2 JPH0769843 B2 JP H0769843B2
- Authority
- JP
- Japan
- Prior art keywords
- count
- wait
- task
- limit
- block
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program 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)
- Multi Processors (AREA)
Description
【発明の詳細な説明】 A.産業上の利用分野 本発明はデータ処理分野に係るもので、特に高度なセマ
フォによるマルチ・プロセスの相互排他制御システムに
関し、更に多重コンピュータシステムにおける複数タス
ク間の相互排除の効率化を図った、フルフォ(fullphor
e)と呼ばれる強化されたセマフォアーキテクチャに関
する。DETAILED DESCRIPTION OF THE INVENTION A. Field of Industrial Application The present invention relates to the field of data processing, and more particularly to a multi-process mutual exclusion control system using a high-level semaphore, and moreover, mutual processing between multiple tasks in a multi-computer system. For efficient removal, fullphor (fullphor
e) for an enhanced semaphore architecture called.
B.従来技術及びその問題点 一般的な多重コンピュータシステムは複数タスクを並行
処理する能力を有している。しかし、このようなシステ
ムにおいては不要な結果や競合状態を避けるためこれら
の並行プロセスを同期させる機構が必要となる。従来、
この同期を行うためにセマフォが使用されてきた。当業
者には周知であるように従来のセマフォはカウント、リ
ミット、そしてタスクの待ち行列から構成されていた。
通常処理のため2つのセマフォ命令が必要とされる。
“V"タイプのセマフォ命令は生産(producer)プロセス
が消費(consumer)プロセスに用いるための情報を生産
した時に生産プロセスによって使用される。“P"タイプ
のセマフォ命令は消費プロセスが生産プロセスによって
生産された情報を要求するときに消費プロセスによって
使用される。“P"処理は相互排除に入りこむときに使用
され、“V"処理は相互排除から出るときに使用される。
従来のセマフォについては“Structured Computer Orga
nization"セクション5.33に詳細に述べられている。米
国特許第4,320,451号にも同様の記載がある。B. Prior Art and Its Problems A general multi-computer system has the ability to process multiple tasks in parallel. However, such systems require a mechanism to synchronize these concurrent processes to avoid unnecessary results and race conditions. Conventionally,
Semaphores have been used to do this synchronization. As is well known to those skilled in the art, conventional semaphores consisted of a count, a limit, and a queue of tasks.
Two semaphore instructions are required for normal processing.
The "V" type semaphore instructions are used by the producer process when the producer process produces information for use by the consumer process. A "P" type semaphore instruction is used by a consuming process when the consuming process requires information produced by the producing process. The "P" process is used to enter mutual exclusion and the "V" process is used to exit mutual exclusion.
For traditional semaphores, see “Structured Computer Orga
nization "section 5.33. Similar remarks are made in US Pat. No. 4,320,451.
セマフォ処理はこれに類するたとえ話を使用して説明す
ると理解しやすい。Semaphore processing is easy to understand if explained using a parable like this.
「あるハロウィンの夕暮れのこと、家の主であるハリー
はキャンディ皿に3つのキャンディを入れました。キャ
ンディ皿は3つのキャンディで丁度満杯です。ハリーは
一晩中、子供達(ハロウィンの夜、各家をまわってキャ
ンディを集めてまわる。)に悩まされたくなかったので
キャンディ皿をポーチに置くとともにその脇に次のよう
に書きました。“このキャンディ皿から1つキャンディ
を、おとりなさい。キャンディが全て無くなったら、皿
にキャンディが追加されるまで、あなたはポーチにすわ
って待っていてもかまいません。”」 最初、3つのキャンディは全て消費(カウント=3)さ
れ得る状態で、かつキャンディ皿(リミット=3)にス
トアされている。どの子供(プロセス)もキャンディ皿
からキャンディをとることが出来る(消費プロセス)。
これは他の子供の動きには無関係(多重システム)であ
る。ハリーは新たにキャンディを追加すること(生産プ
ロセス)ができる。"One Halloween twilight, Harry, the owner of the house, put three candies in a candy dish. The candy dish was just full of three candies. Harry spent all night with children (Halloween night, I didn't want to be bothered by traveling around each house to collect candy.) I put a candy dish on the pouch and wrote next to it: “Take one candy from this candy dish. When all the candy is gone, you can sit in the pouch and wait until the candy is added to the plate. “” First, all three candies are stored in a candy plate (limit = 3) in a state where they can all be consumed (count = 3). Any child (process) can take candy from the candy plate (consumption process).
This is irrelevant to the movements of other children (multi-system). Harry can add new candy (production process).
最初の子供がキャンディ1つをキャンディ皿から取っ
た。(消費プロセス)。今、キャンディの残りは2つ
(カウント=2)である。さらに、2人の子供がキャン
ディを1つづつ皿から取った。今、キャンディの残りは
ない。(カウント=0)。もし、4番目の子供がキャン
ディを欲しがっても、彼はハリーがキャンディ皿に新た
にキャンディを追加する(カウントを1へ増加)までキ
ャンディを手に入れることはできない(カウント=
0)。もし、この4番目の子供が待つことができるな
ら、彼はポーチにすわってハリーがキャンディ皿を満杯
にしてくれるのを持つ(1人の子供が1つのキャンディ
を待っていることを示すカウント=−1)。ハリーがキ
ャンディ皿に新たにキャンディを追加すれば、待ってい
る子供はそれを取る(カウントは0に増加)。もし、こ
の4番目の子供が待つことができなかったら、彼はがっ
かりして隣の家へ移動する(消費要求失敗)。The first child took a candy from the candy dish. (Consumption process). There are now two remaining candy (count = 2). In addition, two children took the candies one by one from the plate. There is no candy left now. (Count = 0). If the fourth child wants a candy, he cannot get one until Harry adds a new candy to the candy plate (increases the count to 1).
0). If this fourth child can wait, he will sit on the pouch and have Harry fill the candy plate (count indicating one child waiting for one candy = -1). If Harry adds a new candy to the candy dish, the waiting child takes it (count increases to 0). If this fourth child cannot wait, he is disappointed and moves to the next house (consumer demand failure).
「ハリーはキャンディ皿をポーチへ出しておけば、静か
な平和なハロウィンの夜を過ごせると考えたのですが、
結局、彼は数分ごとにキャンディ皿にキャンディを追加
するためにポーチへ駆け出さなければならないことに気
がついたのです。そこでハリーはキャンディ皿の隣にさ
らに余分のキャンディを、待つ子供のために置いておけ
ば、もっと効率的であると考えました(1つのキャンデ
ィが1人の子供を待っていることを示すカウント=
4)。ハリーはハロウィン協会からそれは規則が許さな
いから出来ないと言われました。」 この話は従来のセマフォ構造の問題の1つを提供してい
る。なぜなら、“V"タイプのセマフォ命令はカウントが
リミットと一致すると失敗(フェイル)するからであ
る。すなわち、“生産”プロセスはカウントがリミット
と一致すると“消費”プロセスを待つことは出来ない。
この失敗(フェイル)は、消費プロセスが生産プロセス
を待つことを許可する“P"タイプ命令とは非対称的であ
る。このP及びV命令の非対称的性格は通常の多重処理
環境において、両者とも必要とされるものである。この
要求がセマフォと多重処理システムプロセッサ間の処理
インタフェースを複雑にしている。“Harry thought he could spend a quiet and peaceful Halloween night with a candy dish on his pouch.
Eventually, he realized he had to run to the pouch every few minutes to add candy to the candy tray. So Harry thought it would be more efficient to have an extra candy next to the candy plate for the waiting child (a count indicating that one candy is waiting for one child). =
4). Harry was told by the Halloween Society that it couldn't be done because the rules didn't allow it. This story offers one of the problems with traditional semaphore structures. This is because the "V" type semaphore instruction fails (fails) when the count matches the limit. That is, the "production" process cannot wait for the "consumption" process when the count matches the limit.
This failure is asymmetric with the "P" type instruction that allows the consuming process to wait for the production process. This asymmetrical nature of the P and V instructions is both required in a normal multiprocessing environment. This requirement complicates the processing interface between the semaphore and the multiprocessing system processor.
C.発明の目的 本発明の第1の目的は、生産プロセス、消費プロセス両
方を扱うのに1つの命令しか必要としない高度なマルチ
・プロセスの相互排他制御システムを提供することであ
る。C. Objects of the Invention A first object of the present invention is to provide an advanced multi-process mutual exclusion control system that requires only one instruction to handle both production and consumption processes.
本発明のもう1つの目的は、カウントがリミッタ以上の
ときでも、生産プロセスが消費プロセスを待つことがで
きるマルチ・プロセスの相互排他制御システムを提供す
ることである。Another object of the present invention is to provide a multi-process mutual exclusion control system in which a production process can wait for a consumption process even when the count is above a limiter.
D.発明の概要 これらの目的は本発明で示される強化されたセマフォで
達成される。D. Summary of the Invention These objectives are achieved with the enhanced semaphores presented in this invention.
先づ従来のセマフォ処理について説明する。The conventional semaphore processing will be described first.
第2図は消費プロセス(または消費タスク)において使
用される従来のセマフォP処理を示すブロック図であ
る。P処理構造はP(S.WAIT_PERMITTED)で表され、こ
こでSは実行されるべきセマフォを表し、WAIT_PERMITT
ED(待機許可)はプロセスが完了していない場合、該プ
ロセスが待つか否かを表すフラグである。セマフォによ
ってP処理が受け取られたとき、ブロック11においてカ
ウントCが0以下かチェックする。もしこの条件に該当
しなければ、ブロック12においてカウントが減少され、
ブロック13において要求が達成する。もしこの条件に該
当すれば、ブロック14においてWAIT_PERMITTED(待機許
可)フラグがYESかNOかの確認がなされる。フラグがNO
であればブロック15において要求は失敗する。フラグが
NOであれば、ブロック16においてカウントが減少され、
生産プロセスによって指名されるまで処理が待ち行列に
おいて待つことになる。FIG. 2 is a block diagram showing a conventional semaphore P process used in a consuming process (or consuming task). The P processing structure is represented by P (S.WAIT_PERMITTED), where S represents the semaphore to be executed, and WAIT_PERMITT
ED (wait permission) is a flag indicating whether or not the process waits when the process is not completed. When a P process is received by the semaphore, block 11 checks if the count C is less than or equal to zero. If this condition is not met, the count is decremented in block 12,
At block 13, the request is fulfilled. If this condition is met, block 14 asks if the WAIT_PERMITTED flag is YES or NO. Flag is NO
If so, then at block 15 the request fails. Flag is
If NO, the count is decremented in block 16,
The process will wait in a queue until it is appointed by the production process.
第3図は生産プロセス(または生産タスク)において使
用される従来のセマフォV処理を示すブロック図であ
る。V処理構造はV(S)で表され、ここでSは実行さ
れるべきセマフォを表す。セマフォによってV処理が受
け取られたとき、ブロック21においてカウントCがリミ
ットLに等しいかをチェックする。もしこの条件に該当
すれば、要求はブロック22において失敗となる。このプ
ロセスはカウントがリミットLより小になるのを待つこ
とを許されず、自動要求失敗しかとり得ない。FIG. 3 is a block diagram showing a conventional semaphore V process used in a production process (or production task). The V processing structure is represented by V (S), where S represents the semaphore to be executed. When V processing is received by the semaphore, block 21 checks if the count C is equal to the limit L. If this condition is met, the request fails at block 22. This process is not allowed to wait for the count to go below the limit L and can only result in automatic request failure.
カウントがLに等しくなければ、ブロック22においてカ
ウントが0より小であるかの確認がなされる。もしそう
でなければ、ブロック24においてカウントが減少され、
要求はブロック25において達成される。カウントが0よ
り小であれば消費プロセスは待ち行列において待機し
(第2図のブロック16参照)、ブロック26において消費
プロセスを指名しブロック13において達成される。カウ
ントはブロック24において1だけ増加され、生産プロセ
スはブロック25において達成される。If the count is not equal to L, then at block 22 a check is made to see if the count is less than zero. If not, the count is decremented in block 24,
The request is fulfilled at block 25. If the count is less than 0, the consuming process waits in the queue (see block 16 in FIG. 2) and at block 26 the consuming process is designated and accomplished at block 13. The count is incremented by 1 in block 24 and the production process is accomplished in block 25.
次に本発明のフルフォについて説明する。Next, the full pho of the present invention will be described.
ここで”フルフォ”と呼ぶ強化されたセマフォは、セマ
フォの“P"及び“V"処理を結合して、消費プロセスと生
産プロセス両者を扱うことの出きる単一の“S"処理にす
る。フルフォはカウント、リミット、待機プロセスのた
めの待ち行列、待機許可フラグ、そして処理フラグを有
する。処理フラグによってカウントが1つ増加したか、
減少したかを判断する。フルフォの“S"処理の構造はs
(F,OP,WAIT_PERMITTED)であり、ここでFは実行され
るべきフルフォを示し、OPは+1の時生産プロセスを示
し、−1の時消費プロセスを示し、WAIT_PERMITTED(待
機許可)は必要時に処理が待つ場合はYES、そうでない
場合はNOとなる。The enhanced semaphore, referred to here as "full-pho", combines the "P" and "V" operations of the semaphore into a single "S" operation that can handle both consumption and production processes. Fullfo has a count, a limit, a queue for waiting processes, a wait grant flag, and a processing flag. Whether the count is incremented by 1 by the processing flag,
Determine if it has decreased. The structure of the "S" processing of fulfo is s
(F, OP, WAIT_PERMITTED), where F indicates a full process to be executed, OP indicates a production process at +1 and a consumption process at -1, and WAIT_PERMITTED (wait permission) is processed when necessary. YES if is waiting, NO otherwise.
フルフォが消費処理要求(OP=−1で示される)を受け
ると、まず最初にカウントが0以下かチェックされる。
もし、そうである場合、要求はWAIT_PERMITTED(待機許
可)がYESでなければ失敗(フェイル)となる。もし。W
AIT_PERMITTED(待機許可)がYESであれば、OP(−1)
がカウントに加えられカウントは減少する。プロセスは
生産プロセスによって指名されるまで待ち行列で待つこ
ととなる。もし、カウントが0以下でなく、かつカウン
トがリミットを越えていないときは、OP(−1)がカウ
ントに加えられカウントが減少し、要求は成功する。も
し、カウントがリミットより大であり、待ち生産プロセ
スがあるときは待ち生産プロセスが指定され、OP(−
1)がカウントに加えられ、両プロセスの要求が成功し
て終了する。When Fulfo receives a consumption processing request (indicated by OP = -1), it is first checked whether the count is 0 or less.
If so, the request fails unless WAIT_PERMITTED (wait permission) is YES. if. W
If AIT_PERMITTED (wait permission) is YES, OP (-1)
Is added to the count and the count is decremented. The process will wait in a queue until it is appointed by the production process. If the count is not less than 0 and the count does not exceed the limit, OP (-1) is added to the count, the count is decremented, and the request succeeds. If the count is greater than the limit and there is a waiting production process, the waiting production process is specified and OP (-
1) is added to the count and the requests of both processes succeed and end.
フルフォが生産処理要求(OP=+1で示される)を受け
ると、まず最初にカウントがリミットより以上かチェッ
クされる。もし、そうである場合、要求はWAIT_PERMITT
ED(待機許可)がYESでなければ失敗となる。もし、WAI
T_PERMITTEDがYESであれば、OP(+1)がカウントに加
えられカウントは増加する。プロセスは消費プロセスに
よって指名されるまで待ち行列に待つこととなる。も
し、カウントがリミットより大でも等しくないときで、
かつカウントが0より小でないときは、OP(+1)がカ
ウントに加えられカウントが増加し、要求は成功する。
もし、カウントが0より小であり、待ち消費プロセスが
あるときは待ち消費プロセスが指名され、OP(+1)が
カウントに加えられ、どちらのプロセス要求も成功して
終了する。When Fulfo receives a production processing request (indicated by OP = + 1), it is first checked whether the count is above the limit. If so, the request is WAIT_PERMITT
If ED (waiting permission) is not YES, it will fail. If WAI
If T_PERMITTED is YES, OP (+1) is added to the count and the count is incremented. The process will wait in the queue until it is named by the consuming process. If the counts are greater than the limit but not equal,
And if the count is not less than 0, OP (+1) is added to the count and the count is incremented and the request succeeds.
If the count is less than 0 and there are waiting consuming processes, the waiting consuming process is nominated, OP (+1) is added to the count, and both process requests succeed and terminate.
E.実施例 第1図に本発明におけるフルフォ“S"処理のブロック図
を示す。前述の如く、フルフォは、セマフォの“P"及び
“V"処理を結合して、消費プロセスと生産プロセスの両
者を扱うことのできる単一の“S"処理にする。フルフォ
はカウント、リミット、処理待ち行列、WAIT_PERMITTED
フラグ、そしてOP(処理)フラグを持つ。E. Embodiment FIG. 1 shows a block diagram of the full-for "S" processing in the present invention. As mentioned above, Fullfo combines the "P" and "V" operations of a semaphore into a single "S" operation that can handle both consumption and production processes. FULLFO count, limit, process queue, WAIT_PERMITTED
It has a flag and an OP (processing) flag.
フルフオが消費プロセス要素(OP=−1)を受けると、
まずブロック31においてカウントが0以下かチェックが
なされる。もしこの条件が満たされれば、ブロック32に
おいて、WAIT_PERMITTEDフラグがYESかNOかチェックさ
れる。フラグがNOであればブロック33において、要求失
敗となる。WAIT_PERMITTEDフラグがYESであれば、ブロ
ック34においてカウントにOP=(−1)が加えられカウ
ントが減少する。プロセスは生産プロセスによる指名が
あるまで待ち行列で待機する。When Hulhu receives the consumption process factor (OP = -1),
First, in block 31, it is checked whether the count is 0 or less. If this condition is met, block 32 checks to see if the WAIT_PERMITTED flag is YES or NO. If the flag is NO, at block 33 the request fails. If the WAIT_PERMITTED flag is YES, block 34 is incremented by OP = (-1) and the count is decremented. The process waits in a queue until it is nominated by the production process.
カウントが0以下の場合はブロック35においてカウント
がリミットを越えているかチェックされる。カウントが
リミットを越えていなければ、ブロック36においてOP
(−1)がカウントに加えられる。これによりカウント
が減少しブロック37において要求は達成される。カウン
トがリミットを越えており、待機生産プロセスが示され
ていれば、ブロック38において待機生産プロセスが指名
され実行が成功する。OP(−1)がブロック36において
カウントに加えられ、ブロック37において消費要求は達
成される。従来のセマフォ構造では生産プロセスが消費
プロセスを待つことは出来ないことに留意されたい。上
述したごとく、これはフルフォ構造においてのみ実現で
きる。If the count is less than or equal to 0, block 35 checks if the count exceeds the limit. If the count has not exceeded the limit, OP at block 36
(-1) is added to the count. This decrements the count and at block 37 the request is fulfilled. If the count exceeds the limit and a standby production process is indicated, then in block 38 the standby production process is nominated and execution is successful. OP (-1) is added to the count at block 36 and the consumption requirement is met at block 37. Note that the production process cannot wait for the consumption process in the conventional semaphore structure. As mentioned above, this can only be achieved in the full-pho structure.
フルフォが生産プロセス要求(OP=+1)を受けると、
まずブロック31においてカウントがリミット以上かチェ
ックされる。もしこの条件が満たされれば、ブロック32
において、WAIT_PERMITTEDフラグがYESかNOかチェック
される。フラグがNOであればブロック33において、要求
失敗となる。WAIT_PERMITTEDフラグがYESであれば、ブ
ロック34においてカウントにOP=(+1)が加えられカ
ウントが増加する。プロセスは消費プロセスによる指名
があるまで待ち行列で待機する。When Hulfo receives a production process request (OP = + 1),
First, in block 31, it is checked whether the count is above the limit. If this condition is met, block 32
At, the WAIT_PERMITTED flag is checked for YES or NO. If the flag is NO, at block 33 the request fails. If the WAIT_PERMITTED flag is YES, at block 34 OP = (+ 1) is added to the count and the count is incremented. The process waits in a queue until it is named by the consuming process.
カウントがリミット以上の場合はブロック35においてカ
ウントが0より小かチェックされる。もしそうでなけれ
ば、ブロック36においてOP(+1)がカウントに加えら
れる。これによりカウントが増加しブロック37において
要求は達成される。カウントが0より小であり、待機消
費プロセスが示されていれば、ブロック38において待機
消費プロセスが指名され実行が成功する。OP(+1)が
ブロック36においてカウントに加えられ、ブロック37に
おいて消費要求は達成される。If the count is above the limit, block 35 checks if the count is less than zero. If not, OP (+1) is added to the count at block 36. This increments the count and the request is fulfilled at block 37. If the count is less than 0 and a standby consuming process is indicated, then in block 38 the standby consuming process is nominated and execution is successful. OP (+1) is added to the count at block 36 and the consumption requirement is met at block 37.
フルフォ構造はフルフォ及び多重処理システムプロセッ
サ間の操作インターフェースを著しく簡略化する。フル
フォはセマフォの使用されるいかなる場所でも使用可能
である。また、フルフォは単一のセマフォでは不十分な
所でも使用できる。フルフォの最も使用例として、環状
バッファに対するアクセス同期させることである。環状
バッファは例えば情報が情報生産側から情報消費側へ受
渡しされる場合に情報を収納するのに使用される。消費
側が生産側の供給よりも早く情報を処理出来る時には消
費側は待たなければならない。同様に生産側が消費側の
処理より早く情報を送出したときは、生産側が待たなけ
ればならない。これは環状バッファが満杯となり、さら
に未処理の情報を保持できないからである。The full-pho structure significantly simplifies the operational interface between full-pho and multiprocessor processors. Full phos can be used wherever semaphores are used. Full phos can also be used where a single semaphore is not enough. The most typical use of full-pho is to synchronize access to a circular buffer. The circular buffer is used to store information, for example, when the information is passed from the information producer to the information consumer. Consumers must wait when consumers can process information faster than producers can supply it. Similarly, when the producer sends information earlier than the consumer processes, the producer must wait. This is because the circular buffer is full and cannot hold any unprocessed information.
環状バッファに保持可能な個数情報と同数にセットされ
たリミットを有し、初期カウントが0である単一フルフ
ォにより、要求された同期が提供される。カウントは環
状バッファ中の情報の個数を表す。生産側はカウントを
増加させ、バッファが満杯のときは待機する。消費側は
カウントを減少させ、バッファが空のときは待機する。
この同期をセマフォによってのみ達成しようとすると3
つのセマフォが必要となる。1つはモニタとして、2つ
はバッファが満杯あるいは空のときの待機メカニズムを
支援するのに使用される。モニタは2つのセマフォに対
する交換を同期させるのに必要とされる。というのはこ
れらの交換は非常に微妙なタイミングで行なわれなけれ
ばならないからである。フルフォはモニタを必要としな
い、1つの同期対象がすべてを処理するからである。The required synchronization is provided by a single full-pho with an initial count of 0, with a limit set equal to the number of information that can be held in the circular buffer. The count represents the number of pieces of information in the circular buffer. The producer increments the count and waits when the buffer is full. The consumer decrements the count and waits when the buffer is empty.
3 if you try to achieve this synchronization only with semaphores
You need two semaphores. One is used as a monitor and two are used to assist the waiting mechanism when the buffer is full or empty. The monitor is needed to synchronize the exchanges for the two semaphores. These exchanges must be done at very delicate timing. This is because Fulfo does not need a monitor and one synchronization target handles all.
フルフォのもう1つの応用として、パラメータ無しADA
ランデブー装置がある。ADAランデブーは、単一の実行
道筋が2つに分岐し、分岐した2つの道筋が終了したと
きにこれらが集まり単一路となるようなシステムであ
る。まず最初、フルフォは0のリミットを持ち、カウン
トは0である。そして道筋1はフルフォカウントの増
加、道筋2はフルフォカウントの減少を要求し、ランデ
ブーは両道筋が終了したときに起こる。どちらか道筋が
先に完了した方が待機することとなる。何故ならカウン
ト=リミット=0だからである。2番目に終了した道筋
のみが待機せず、1番目の待機の終了を指示する。ADA
ランデブーはランデブー時のパラメータの受渡しを支援
する。この支援はフルフォによって、より一層効率的に
できる。Another application of fulfo is ADA without parameters
There is a rendezvous device. The ADA rendezvous is a system in which a single execution path branches into two, and when the two branched paths end, they come together into a single path. First, Hulfo has a limit of 0 and the count is 0. Path 1 demands an increase in full forocount and path 2 demands a decrease in full forocount, and rendezvous occurs when both paths are terminated. Whichever path is completed first will wait. This is because count = limit = 0. Only the route that ended second does not wait, but instructs the end of the first wait. ADA
The rendezvous supports the passing of parameters during rendezvous. This support can be made even more efficient with Fullfo.
フルフオを使用しないランデブー装置は、どちらの道筋
が先に終了するかを確認するモニタセマフォ、そして2
番目に終了した道筋が1番目に終了した道筋の指名を許
可するもうひとつのセマフォを必要とする。A rendezvous device that does not use full-huo is a monitor semaphore to see which path ends first, and 2
The second finished path requires another semaphore that allows the nomination of the first finished path.
F.発明の効果 本発明によれば、従来のカウント型のP処理及びV処理
が1つの処理に結合されるので、従来プロセスを同期さ
せるのに2つのセマフォ命令を必要としていたのを、1
つのセマフォ命令で行うことができ、高度なマルチ・プ
ロセスの相互排他制御システムを提供される。F. Effect of the Invention According to the present invention, since the conventional count type P processing and V processing are combined into one processing, two semaphore instructions are required to synchronize the conventional processing.
It can be executed with one semaphore instruction, and provides an advanced multi-process mutual exclusion control system.
第1図は本発明のフルフォ構造におけるS処理を示すブ
ロック図、第2図は従来のセマフォ構造におけるP処理
を示すブロック図、第3図は従来のセマフォ構造におけ
るV処理を示すブロック図である。FIG. 1 is a block diagram showing S processing in the full-pho structure of the present invention, FIG. 2 is a block diagram showing P processing in the conventional semaphore structure, and FIG. 3 is a block diagram showing V processing in the conventional semaphore structure. .
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 池田、オペレーティング・システム、5 版、昭和58年6月15日、日本コンピュータ 協会、P.291−295 ─────────────────────────────────────────────────── ─── Continued Front Page (56) References Ikeda, Operating System, 5th Edition, June 15, 1983, Computer Society of Japan, P. 291-295
Claims (1)
フラグ及び処理フラグを含むフルフォ処理を有するコン
ピュータシステムで生産タスクと消費タスクの間で相互
排他を効率的に行う方法であって、 生産タスクに対しては; 処理フラグを増数状態にセットし、 上記カウントが上記リミット以上でかつ上記待機許可フ
ラグがオフ(待機不許可)の時上記生産タスクを失敗さ
せ、 上記カウントが上記リミット以上でかつ上記待機許可フ
ラグがオン(待機許可)の時上記カウンタを増数し上記
生産タスクが上記待ち行列で待機するのを許可し、上記
待ち行列は消費タスクに対する指名ステップで指名され
るまで待機し、 上記カウントが上記リミット以下の時上記カウントを増
数し上記生産タスクを完了させ、 上記カウントが上記リミットより大きい時待機中の消費
タスクを指名し、上記カウントを増数し、上記生産タス
クを完了させ、 上記消費タスクに対しては; 上記処理フラグを減数状態にセットし、 上記カウントがゼロ以下でかつ上記待機許可フラグがオ
フの時上記消費タスクを失敗させ、 上記カウントがゼロ以下で上記待機許可フラグがオンの
時上記カウントを減数し上記消費タスクが「上記待ち行
列で待機するのを許可し、上記消費タスクは上記生産タ
スクに対する上記指名ステップにより指名されるまで待
機し、 上記カウントがゼロ以上の時上記カウントを減数し上記
消費タスクを完了させ, 上記カウントがゼロより小さい時待機中の生産タスクを
指名し、上記カウントを減数し、上記消費タスクを完了
させる、 ステップよりなる相互排他を効率的に行う方法。1. A method for efficiently performing mutual exclusion between a production task and a consumption task in a computer system having a full-pho process including a count, a limit, a queue, a wait permission flag, and a processing flag. On the other hand, if the processing flag is set to the increment state, the count is equal to or more than the limit, and the wait permission flag is off (wait not permitted), the production task fails, and the count is equal to or more than the limit. When the wait permission flag is on (wait permission), the counter is incremented to allow the production task to wait in the queue, and the queue waits until it is named in the nomination step for the consuming task, When the count is less than or equal to the limit, the count is incremented to complete the production task, and the count is above the limit. Nominate a consumption task that is waiting at a large time, increment the count, complete the production task, for the consumption task; set the processing flag to a decremented state, and the count is less than or equal to zero and Fails the consuming task when the wait enable flag is off, decrements the count when the count is less than zero and the wait enable flag is on, and allows the consuming task to "wait in the queue, The consumption task waits until it is named by the nomination step for the production task, decrements the count when the count is greater than or equal to zero and completes the consumption task, and waits when the count is less than zero. , Decrementing the count, and completing the consuming task, an efficient method of mutual exclusion consisting of steps.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US265088 | 1988-10-31 | ||
US07/265,088 US4928222A (en) | 1988-10-31 | 1988-10-31 | Enhanced semaphore architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH02129726A JPH02129726A (en) | 1990-05-17 |
JPH0769843B2 true JPH0769843B2 (en) | 1995-07-31 |
Family
ID=23008927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1184882A Expired - Lifetime JPH0769843B2 (en) | 1988-10-31 | 1989-07-19 | How to efficiently perform mutual exclusion |
Country Status (4)
Country | Link |
---|---|
US (1) | US4928222A (en) |
EP (1) | EP0367701B1 (en) |
JP (1) | JPH0769843B2 (en) |
DE (1) | DE68925462T2 (en) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179708A (en) * | 1989-04-07 | 1993-01-12 | At&T Bell Laboratories | System inhibiting message delivery to destination process until priority of process excuting on distination processor is no higher than priority of sending process |
US5057996A (en) * | 1989-06-29 | 1991-10-15 | Digital Equipment Corporation | Waitable object creation system and method in an object based computer operating system |
US5255387A (en) * | 1990-04-27 | 1993-10-19 | International Business Machines Corporation | Method and apparatus for concurrency control of shared data updates and queries |
US5307487A (en) * | 1991-10-03 | 1994-04-26 | The United States Of America As Represented By The Secretary Of The Navy | Method of database synchronization with consistency determined by entry and exit counters used on both update and retrieval |
US5261106A (en) * | 1991-12-13 | 1993-11-09 | S-Mos Systems, Inc. | Semaphore bypass |
US5440746A (en) * | 1992-11-06 | 1995-08-08 | Seiko Epson Corporation | System and method for synchronizing processors in a parallel processing environment |
JPH08137799A (en) * | 1994-11-08 | 1996-05-31 | Sony Corp | Cyber-space system |
US6532487B1 (en) | 1995-12-04 | 2003-03-11 | International Business Machines Corporation | Method and system for managing semaphores in an object-oriented multi-tasking computer system |
US5872980A (en) * | 1996-01-25 | 1999-02-16 | International Business Machines Corporation | Semaphore access control buffer and method for accelerated semaphore operations |
JP2000090057A (en) * | 1998-09-11 | 2000-03-31 | Omron Corp | Group object and control system |
EP1033654A1 (en) * | 1999-03-01 | 2000-09-06 | Sony International (Europe) GmbH | Buffered communication between entities operating at different data rates |
FR2829848A1 (en) * | 2001-09-20 | 2003-03-21 | Cp8 | Method for controlling access to shared resources in an embedded system, especially a chip card, whereby a counter, stack and control routines are used to control resource access |
US20040260890A1 (en) * | 2001-11-13 | 2004-12-23 | Jan Hoogerbrugge | P-and v-semaphore operation |
US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US7421681B2 (en) * | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
US7895382B2 (en) | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
US9553951B1 (en) | 2013-04-24 | 2017-01-24 | Amazon Technologies, Inc. | Semaphores in distributed computing environments |
CN103761155A (en) * | 2014-01-29 | 2014-04-30 | 赛凡信息科技(厦门)有限公司 | Semaphore with quota |
US9760529B1 (en) | 2014-09-17 | 2017-09-12 | Amazon Technologies, Inc. | Distributed state manager bootstrapping |
US9852221B1 (en) | 2015-03-26 | 2017-12-26 | Amazon Technologies, Inc. | Distributed state manager jury selection |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2253425A5 (en) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
FR2253420A5 (en) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
FR2253418A5 (en) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
FR2253423A5 (en) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4320451A (en) * | 1974-04-19 | 1982-03-16 | Honeywell Information Systems Inc. | Extended semaphore architecture |
US4369494A (en) * | 1974-12-09 | 1983-01-18 | Compagnie Honeywell Bull | Apparatus and method for providing synchronization between processes and events occurring at different times in a data processing system |
US4380798A (en) * | 1980-09-15 | 1983-04-19 | Motorola, Inc. | Semaphore register including ownership bits |
US4412285A (en) * | 1981-04-01 | 1983-10-25 | Teradata Corporation | Multiprocessor intercommunication system and method |
US4594657A (en) * | 1983-04-22 | 1986-06-10 | Motorola, Inc. | Semaphore for memory shared by two asynchronous microcomputers |
CA1239227A (en) * | 1984-10-17 | 1988-07-12 | Randy D. Pfeifer | Method of and arrangement for ordering of multiprocessor operations in a multiprocessor system |
US4722048A (en) * | 1985-04-03 | 1988-01-26 | Honeywell Bull Inc. | Microcomputer system with independent operating systems |
US4725946A (en) * | 1985-06-27 | 1988-02-16 | Honeywell Information Systems Inc. | P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment |
US4754398A (en) * | 1985-06-28 | 1988-06-28 | Cray Research, Inc. | System for multiprocessor communication using local and common semaphore and information registers |
US4780822A (en) * | 1986-09-17 | 1988-10-25 | Integrated Device Technology, Inc. | Semaphore circuit for shared memory cells |
-
1988
- 1988-10-31 US US07/265,088 patent/US4928222A/en not_active Expired - Fee Related
-
1989
- 1989-07-19 JP JP1184882A patent/JPH0769843B2/en not_active Expired - Lifetime
- 1989-09-12 DE DE68925462T patent/DE68925462T2/en not_active Expired - Fee Related
- 1989-09-12 EP EP89480140A patent/EP0367701B1/en not_active Expired - Lifetime
Non-Patent Citations (1)
Title |
---|
池田、オペレーティング・システム、5版、昭和58年6月15日、日本コンピュータ協会、P.291−295 |
Also Published As
Publication number | Publication date |
---|---|
JPH02129726A (en) | 1990-05-17 |
EP0367701A3 (en) | 1992-05-20 |
EP0367701A2 (en) | 1990-05-09 |
DE68925462D1 (en) | 1996-02-29 |
US4928222A (en) | 1990-05-22 |
DE68925462T2 (en) | 1996-09-05 |
EP0367701B1 (en) | 1996-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0769843B2 (en) | How to efficiently perform mutual exclusion | |
Arenstorf et al. | Comparing barrier algorithms | |
Hoare | Monitors: An operating system structuring concept | |
US5257372A (en) | Methods for efficient distribution of parallel tasks to slave processes in a multiprocessing system | |
JP2561801B2 (en) | Method and system for managing process scheduling | |
JPH0640324B2 (en) | Multiprocessor system and process synchronization method thereof | |
Fisher | Concurrent metatem—A language for modelling reactive systems | |
JP2003263331A (en) | Multiprocessor system | |
Michael et al. | Relative performance of preemption-safe locking and non-blocking synchronization on multiprogrammed shared memory multiprocessors | |
JPS6132697B2 (en) | ||
De Doncker et al. | Parallel systems and adaptive integration | |
Lo et al. | Architectural considerations in the design of real-time kernels | |
JPH061464B2 (en) | Multi Microprocessor Module | |
JP2553526B2 (en) | Multitasking processor | |
US20240211460A1 (en) | Stream-based transaction processing | |
Reinhardt | A data-flow approach to multitasking on CRAY X-MP computers | |
Balch et al. | Dynamic scheduling for mobile robots | |
Evans et al. | Kernel-scheduled entities for FreeBSD | |
JPS629460A (en) | Instruction control system for multi-processor system | |
JPH0340169A (en) | Multiple processor system and method of controlling plurality of processor | |
JPH0329049A (en) | Multiprocessor system | |
JPH04102158A (en) | Close coupling multiprocessor | |
JPH0789320B2 (en) | Processor | |
Cai et al. | 290 Transputer Research and Applications 6 S. Atkins and AS Wagner, Eds. IOS Press, 1993 | |
JP2659410B2 (en) | Execution suspension method of data flow computer |