JPH04343143A - マルチプロセッサシステムにおける共有資源相互排除方式 - Google Patents
マルチプロセッサシステムにおける共有資源相互排除方式Info
- Publication number
- JPH04343143A JPH04343143A JP14395491A JP14395491A JPH04343143A JP H04343143 A JPH04343143 A JP H04343143A JP 14395491 A JP14395491 A JP 14395491A JP 14395491 A JP14395491 A JP 14395491A JP H04343143 A JPH04343143 A JP H04343143A
- Authority
- JP
- Japan
- Prior art keywords
- mutual exclusion
- execution
- execute
- critical part
- semaphore
- 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
Links
Landscapes
- Multi Processors (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、マルチプロセッサシス
テムにおける共有資源に対する効率的な相互排除方式に
関する。
テムにおける共有資源に対する効率的な相互排除方式に
関する。
【0002】
【従来の技術】一般にマルチプロセッサシステムにおけ
る共有資源の相互排除方式はスピンロック方式と2値セ
マフォ方式に分類され、従来、ューザはいずれかを選択
して使用している。以下にスピンロック方式、2値セマ
フォ方式について説明する。
る共有資源の相互排除方式はスピンロック方式と2値セ
マフォ方式に分類され、従来、ューザはいずれかを選択
して使用している。以下にスピンロック方式、2値セマ
フォ方式について説明する。
【0003】スピンロック方式
図9はスピンロック方式を用いて相互排除を行うシ
ステムの構成例である。図において、プロセッサ1,2
および主記憶装置3は一つのシステムバス4に接続され
ている。各プロセッサ1,2は、主記憶装置3に格納さ
れた任意のデータの読み出し、書き込み、および、任意
のプログラムの実行が可能である。主記憶装置3には、
鍵901、きわどい部分902、lock操作903、
unlock操作904の各情報が格納される。ここで
、きわどい部分902は、一時には一つのプロセスしか
実行することのできないプログラムであり、相互排除の
対象である。 鍵901の値は1または0であり、きわどい部分902
の実行権を所有するプロセスが存在しているか否かを示
す(ここでは、1は存在、0は空とする)。lock操
作903とunlock操作904は、きわどい部分9
02に対する相互排除を行うプログラムである。
ステムの構成例である。図において、プロセッサ1,2
および主記憶装置3は一つのシステムバス4に接続され
ている。各プロセッサ1,2は、主記憶装置3に格納さ
れた任意のデータの読み出し、書き込み、および、任意
のプログラムの実行が可能である。主記憶装置3には、
鍵901、きわどい部分902、lock操作903、
unlock操作904の各情報が格納される。ここで
、きわどい部分902は、一時には一つのプロセスしか
実行することのできないプログラムであり、相互排除の
対象である。 鍵901の値は1または0であり、きわどい部分902
の実行権を所有するプロセスが存在しているか否かを示
す(ここでは、1は存在、0は空とする)。lock操
作903とunlock操作904は、きわどい部分9
02に対する相互排除を行うプログラムである。
【0004】図10は、lock操作903とunlo
ck操作904を用いて相互排除を行う操作手順であり
、あるプロセスがきわどい部分902へアクセスする場
合、まずlock操作903によりきわどい部分902
の実行権を得て、きわどい部分902の使用を開始し、
それが終了すると、unlock操作904により実行
権を解除することを示している。これにより、複数のプ
ロセスが同時にlock操作903を実行した場合には
、ただ一つのプロセスがきわどい部分902を実行でき
る。このプロセスがunlock904操作を行うまで
、他のプロセスはきわどい部分902に入れずに空転し
て待つことになる。
ck操作904を用いて相互排除を行う操作手順であり
、あるプロセスがきわどい部分902へアクセスする場
合、まずlock操作903によりきわどい部分902
の実行権を得て、きわどい部分902の使用を開始し、
それが終了すると、unlock操作904により実行
権を解除することを示している。これにより、複数のプ
ロセスが同時にlock操作903を実行した場合には
、ただ一つのプロセスがきわどい部分902を実行でき
る。このプロセスがunlock904操作を行うまで
、他のプロセスはきわどい部分902に入れずに空転し
て待つことになる。
【0005】図11はlock操作の機能ブロック図で
ある。lock操作機能はロック手段1100で構成さ
れる。 ロック手段1100を実行した結果、「きわどい部分」
の実行権を得たプロセスはlock操作を終了し(ロッ
ク成功)、「きわどい部分」の実行権が得られなかった
プロセスは繰り返しロック手段1100の処理を実行す
る(ロック失敗)。
ある。lock操作機能はロック手段1100で構成さ
れる。 ロック手段1100を実行した結果、「きわどい部分」
の実行権を得たプロセスはlock操作を終了し(ロッ
ク成功)、「きわどい部分」の実行権が得られなかった
プロセスは繰り返しロック手段1100の処理を実行す
る(ロック失敗)。
【0006】図12はlock操作の処理フロー例で、
破線で囲んだ部分がロック手段1100である。loc
k操作は次の手順で行われる。まず、鍵(図9の901
)を読み出し、この読み出した鍵の値をxとする(ステ
ップ1201)。次に、鍵を1、即ち、他のプロセスが
使用できないように「きわどい部分」をロックする(ス
テップ1202)。ここで、鍵に対する読み出し・書き
込みはtest−and−set命令など、メモリの読
み出しと書き込みが細分化されない基本演算により行わ
れる。つまり、ステップ1201と1202は実際には
1命令で実現される。 次に、ステップ1201で読み出した鍵値xを判定する
(ステップ1203)。そして、x=0(きわどい部分
が未使用)であったからば、該lock操作を終了とし
(ロック成功)、x=1であったならば(きわどい部分
が使用中)、ステップ1201に戻ってlock操作を
繰り返す(ロック失敗)。このロック失敗では、鍵に1
が上書きされるだけである。
破線で囲んだ部分がロック手段1100である。loc
k操作は次の手順で行われる。まず、鍵(図9の901
)を読み出し、この読み出した鍵の値をxとする(ステ
ップ1201)。次に、鍵を1、即ち、他のプロセスが
使用できないように「きわどい部分」をロックする(ス
テップ1202)。ここで、鍵に対する読み出し・書き
込みはtest−and−set命令など、メモリの読
み出しと書き込みが細分化されない基本演算により行わ
れる。つまり、ステップ1201と1202は実際には
1命令で実現される。 次に、ステップ1201で読み出した鍵値xを判定する
(ステップ1203)。そして、x=0(きわどい部分
が未使用)であったからば、該lock操作を終了とし
(ロック成功)、x=1であったならば(きわどい部分
が使用中)、ステップ1201に戻ってlock操作を
繰り返す(ロック失敗)。このロック失敗では、鍵に1
が上書きされるだけである。
【0007】図13はunlock操作の処理を示した
ものである。あるプロセスが「きわどい部分」の実行を
終了すると、unlock操作は鍵に0を書き込む。こ
のunlock操作で鍵に0を書き込むと、lock操
作で空転していたプロセスが0を鍵の値として読み出し
、lock操作を終了して「きわどい部分」に入ること
ができるようになる。
ものである。あるプロセスが「きわどい部分」の実行を
終了すると、unlock操作は鍵に0を書き込む。こ
のunlock操作で鍵に0を書き込むと、lock操
作で空転していたプロセスが0を鍵の値として読み出し
、lock操作を終了して「きわどい部分」に入ること
ができるようになる。
【0008】2値セマフォ方式
図14は2値セマフォ方式を用いて相互排除を行う
システムの構成例である。プロセッサ1,2および主記
憶装置3は一つのシステムバス4に接続されている。各
プロセッサ1,2は主記憶装置3に格納された任意のデ
ータの読み出し、書き込み、および、任意のプログラム
の実行が可能である。主記憶装置3には、きわどい部分
1401、セマフォs1402、セマフォsの待ちプロ
セス行列1403、プロセッサ待ちプロセス行列140
4、P操作1405、V操作1406、プロセス切り替
えプログラム1407が格納される。きわどい部分14
01は、一時には一つのプロセスしか実行することので
きないプログラムであり、相互排除の対象である。セマ
フォs1404は0または1をとり、それぞれきわどい
部分1401の使用中である、あるいは、空いているこ
とを表わす。セマフォsの待ちプロセス行列1403は
、きわどい部分1401の使用が終わるのを待っている
プロセスを整列させたOSの制御データである。プロセ
ッサ待ち行列1404は、プロセッサを割り付けると直
ちに実行可能なプロセスを整列させたOSの制御データ
である。P操作1405とV操作1406はきわどい部
分1401に対する相互排除を行うプログラムである。
システムの構成例である。プロセッサ1,2および主記
憶装置3は一つのシステムバス4に接続されている。各
プロセッサ1,2は主記憶装置3に格納された任意のデ
ータの読み出し、書き込み、および、任意のプログラム
の実行が可能である。主記憶装置3には、きわどい部分
1401、セマフォs1402、セマフォsの待ちプロ
セス行列1403、プロセッサ待ちプロセス行列140
4、P操作1405、V操作1406、プロセス切り替
えプログラム1407が格納される。きわどい部分14
01は、一時には一つのプロセスしか実行することので
きないプログラムであり、相互排除の対象である。セマ
フォs1404は0または1をとり、それぞれきわどい
部分1401の使用中である、あるいは、空いているこ
とを表わす。セマフォsの待ちプロセス行列1403は
、きわどい部分1401の使用が終わるのを待っている
プロセスを整列させたOSの制御データである。プロセ
ッサ待ち行列1404は、プロセッサを割り付けると直
ちに実行可能なプロセスを整列させたOSの制御データ
である。P操作1405とV操作1406はきわどい部
分1401に対する相互排除を行うプログラムである。
【0009】図15はP操作1405とV操作1406
を用いて相互排除を行う操作手順であり、あるプロセス
がきわどい1401へアクセスする場合、まず、P操作
1405を実行し、きわどい部分1401が空いていれ
ば、きわどい部分1401へアクセスし、それが終了す
るとV操作1406を実行することを示している。これ
により、複数のプロセスが同時にP操作1405を実行
した場合には、ただ一つのプロセスがきわどい部分14
01を実行できる。そして、このプロセスがV操作14
06を行うまで、他のプロセスはセマフォsの待ちプロ
セス行列1405で待たされることになる。
を用いて相互排除を行う操作手順であり、あるプロセス
がきわどい1401へアクセスする場合、まず、P操作
1405を実行し、きわどい部分1401が空いていれ
ば、きわどい部分1401へアクセスし、それが終了す
るとV操作1406を実行することを示している。これ
により、複数のプロセスが同時にP操作1405を実行
した場合には、ただ一つのプロセスがきわどい部分14
01を実行できる。そして、このプロセスがV操作14
06を行うまで、他のプロセスはセマフォsの待ちプロ
セス行列1405で待たされることになる。
【0010】図16は、P操作の機能ブロック図である
。P操作機能は、ロック手段1601とプロセス実行制
御手段1603で構成される。ロック手段1601を実
行した結果、「きわどい部分」の実行権を得たプロセス
はP操作を終了する。「きわどい部分」の実行権を得ら
れなかったプロセスはプロセス実行制御手段1602の
処理に移り、セマフォ待ち状態(ブロック状態)で待機
し、「きわどい部分」の実行権を所有するプロセスのV
操作によってセマフォ待ち状態から解除された場合、「
きわどい部分」の実行権を得てP操作を終了する。
。P操作機能は、ロック手段1601とプロセス実行制
御手段1603で構成される。ロック手段1601を実
行した結果、「きわどい部分」の実行権を得たプロセス
はP操作を終了する。「きわどい部分」の実行権を得ら
れなかったプロセスはプロセス実行制御手段1602の
処理に移り、セマフォ待ち状態(ブロック状態)で待機
し、「きわどい部分」の実行権を所有するプロセスのV
操作によってセマフォ待ち状態から解除された場合、「
きわどい部分」の実行権を得てP操作を終了する。
【0011】図17はP操作の処理フロー例で、破線で
囲まれた部分が、ロック手段1601およびプロセス実
行制御手段1602の処理である。P操作は、次の手順
で行われる。まず、セマフォs(図14の1402)を
読み出す(ステップ1701)。次に、この読み出した
セマフォsの値を判定し(ステップ1702)、s=1
(きわどい部分が未使用)の場合には、sの値を1減じ
て0(使用中)にして(ステップ1703)、P操作を
終了とする(ロック成功)。ここで、セマフォsに対す
る読み出しと書き込みはプロセスからは細線化されない
基本演算として見えるものである。一方、s=0(きわ
どい部分が使用中)の場合には(ロック失敗)、このP
操作を実行中のプロセスをセマフォ待ちプロセス行列(
図14の1403)の最後尾に加えた後(ステップ17
04)、プロセス切り替えプログラム(図14の140
7)に制御を移し(ステップ1705)、P操作を終了
とする。
囲まれた部分が、ロック手段1601およびプロセス実
行制御手段1602の処理である。P操作は、次の手順
で行われる。まず、セマフォs(図14の1402)を
読み出す(ステップ1701)。次に、この読み出した
セマフォsの値を判定し(ステップ1702)、s=1
(きわどい部分が未使用)の場合には、sの値を1減じ
て0(使用中)にして(ステップ1703)、P操作を
終了とする(ロック成功)。ここで、セマフォsに対す
る読み出しと書き込みはプロセスからは細線化されない
基本演算として見えるものである。一方、s=0(きわ
どい部分が使用中)の場合には(ロック失敗)、このP
操作を実行中のプロセスをセマフォ待ちプロセス行列(
図14の1403)の最後尾に加えた後(ステップ17
04)、プロセス切り替えプログラム(図14の140
7)に制御を移し(ステップ1705)、P操作を終了
とする。
【0012】図18はV操作の処理フロー例である。あ
るプロセスが「きわどい部分」の使用を終了すると、V
操作では、セマフォ待ちプロセス行列1403が空か調
べ(ステップ1801)、空ならば、セマフォs140
2に1を書き込み(ステップ1802)、V操作を終了
とする。また、セマフォ待ちプロセス行列1403が空
でない場合には、このセマフォ待ち行列から先頭のプロ
セスを取り出し、プロセッサ待ちプロセス行列1404
の先頭に入れ(ステップ1803)、V操作を終了する
。適当な時間経過の後、プロセス切り替えプログラム1
407が実行されると、プロセッサ待ちプロセス行列1
404からプロセスが取り出され、P操作のプロセス実
行制御手段1602の終了時点から処理を再開して、「
きわどい部分」を実行する。
るプロセスが「きわどい部分」の使用を終了すると、V
操作では、セマフォ待ちプロセス行列1403が空か調
べ(ステップ1801)、空ならば、セマフォs140
2に1を書き込み(ステップ1802)、V操作を終了
とする。また、セマフォ待ちプロセス行列1403が空
でない場合には、このセマフォ待ち行列から先頭のプロ
セスを取り出し、プロセッサ待ちプロセス行列1404
の先頭に入れ(ステップ1803)、V操作を終了する
。適当な時間経過の後、プロセス切り替えプログラム1
407が実行されると、プロセッサ待ちプロセス行列1
404からプロセスが取り出され、P操作のプロセス実
行制御手段1602の終了時点から処理を再開して、「
きわどい部分」を実行する。
【0013】
【発明が解決しようとする課題】スピンロック方式では
、「きわどい部分」が使用中の場合、プロセスが空転し
て鍵の状態を調べ、鍵が0になるまで待っているので、
「きわどい部分」のプログラムに対して、イ.短いプロ
グラムであること、 ロ.入出力など待ち状態になる操作は行わないこと、ハ
.誤りを起こして例外処理プログラムにプロセッサを取
り上げられないこと、 のような制約が課せられる。これらの制約がのため、ス
ピンロック方式は、OSのカーネルなど限られたプログ
ラムの相互排除に用いられるのが一般的であり、通常の
ユーザプログラムには適しいないという欠点があった。
、「きわどい部分」が使用中の場合、プロセスが空転し
て鍵の状態を調べ、鍵が0になるまで待っているので、
「きわどい部分」のプログラムに対して、イ.短いプロ
グラムであること、 ロ.入出力など待ち状態になる操作は行わないこと、ハ
.誤りを起こして例外処理プログラムにプロセッサを取
り上げられないこと、 のような制約が課せられる。これらの制約がのため、ス
ピンロック方式は、OSのカーネルなど限られたプログ
ラムの相互排除に用いられるのが一般的であり、通常の
ユーザプログラムには適しいないという欠点があった。
【0014】ユーザプログラムでスピンロック方式を用
いた場合には、次のような問題が生じる。 (1)バグのため、「きわどい部分」の実行権を長時間
保持する状態を作り出す可能性がある。 (2)lock操作は「きわどい部分」の実行権を所有
するプロセスの状態変化を検出する機能を備えていない
。このため、「きわどい部分」の実行権を所有するプロ
セスが待ち状態に入った場合、あるいは、プロセッサを
取り上げられた場合に、空転を続けるプロセスを実行す
るプロセッサは、そのまま空転を続けて多大に無駄な時
間を費やす。 (3)lock操作の使い方に関する簡単な誤りをおか
すだけで容易にデッドロックに陥ってしまう。しかし、
lock操作は、「きわどい部分」の実行権をどのプロ
セスが所有しているか調べる機能を備えていないので、
簡単なプログラム誤りが原因となる「きわどい部分」の
実行権を決して得ることができないのに待っている状態
を検出し適切や処理を行わせることができない。
いた場合には、次のような問題が生じる。 (1)バグのため、「きわどい部分」の実行権を長時間
保持する状態を作り出す可能性がある。 (2)lock操作は「きわどい部分」の実行権を所有
するプロセスの状態変化を検出する機能を備えていない
。このため、「きわどい部分」の実行権を所有するプロ
セスが待ち状態に入った場合、あるいは、プロセッサを
取り上げられた場合に、空転を続けるプロセスを実行す
るプロセッサは、そのまま空転を続けて多大に無駄な時
間を費やす。 (3)lock操作の使い方に関する簡単な誤りをおか
すだけで容易にデッドロックに陥ってしまう。しかし、
lock操作は、「きわどい部分」の実行権をどのプロ
セスが所有しているか調べる機能を備えていないので、
簡単なプログラム誤りが原因となる「きわどい部分」の
実行権を決して得ることができないのに待っている状態
を検出し適切や処理を行わせることができない。
【0015】2値セマフォ方式では、複数のプロセスが
同一の「きわどい部分」を実行しようとした場合に、P
操作で1を減じられなかったすべてのプロセスについて
次のような操作が行われるため、相互排除においてプロ
セス切り替えが頻繁に生じるという欠点がある。
同一の「きわどい部分」を実行しようとした場合に、P
操作で1を減じられなかったすべてのプロセスについて
次のような操作が行われるため、相互排除においてプロ
セス切り替えが頻繁に生じるという欠点がある。
【0016】(1)P操作の度にプロセスをセマフォs
の待ちプロセス行列に入れ、プロセス切り替えを行う。 (2)V操作の度にセマフォsの待ちプロセス行列から
プロセッサ割り付け待ちプロセス行列にプロセスを移す
。V操作の後に、プロセス切り替えが発生する。
の待ちプロセス行列に入れ、プロセス切り替えを行う。 (2)V操作の度にセマフォsの待ちプロセス行列から
プロセッサ割り付け待ちプロセス行列にプロセスを移す
。V操作の後に、プロセス切り替えが発生する。
【0017】上記操作に要する処理量は、スピンロック
方式での相互排除に要する処理量に比べ極めて大きく、
かつ、上記操作は「きわどい部分」の実行権を所有する
プロセスが既に存在する場合には必須であるので、プロ
セスの処理で大きなオーバヘッドとして現われるという
欠点がある。特に、2値セマフォ方式は、処理量の小さ
なプロセスが頻繁に「きわどい部分」を実行するシステ
ムでは、プロセス全体の処理において相互排除のための
オーバーヘッドが占める割合が著しく大きくなるという
欠点がある。また、P操作は、「きわどい部分」の実行
権を所有するプロセスの状態を読み出す機能を備えてい
ないので、該実行権の所有関係により生じるデッドロッ
クなどの誤りを検出し適切な処理が行われないという欠
点がある。
方式での相互排除に要する処理量に比べ極めて大きく、
かつ、上記操作は「きわどい部分」の実行権を所有する
プロセスが既に存在する場合には必須であるので、プロ
セスの処理で大きなオーバヘッドとして現われるという
欠点がある。特に、2値セマフォ方式は、処理量の小さ
なプロセスが頻繁に「きわどい部分」を実行するシステ
ムでは、プロセス全体の処理において相互排除のための
オーバーヘッドが占める割合が著しく大きくなるという
欠点がある。また、P操作は、「きわどい部分」の実行
権を所有するプロセスの状態を読み出す機能を備えてい
ないので、該実行権の所有関係により生じるデッドロッ
クなどの誤りを検出し適切な処理が行われないという欠
点がある。
【0018】相互排除を行うユーザプログラムを実行す
る場合、スピンロック方式と2値セマフォ方式のいずれ
かをユーザは選択して使用する。この時、ユーザはそれ
ぞれの方式の欠点を理解し、かつ、「きわどい部分」を
実行するプロセスの動作を考察した上で決定する必要が
ある。また、ユーザが十分考察して相互排除の方式を選
択した場合でも、スピンロック方式では「きわどい部分
」を実行するプロセスがOSによってプロセッサを取り
上げられるのを防ぐことはできない。そのため「きわど
い部分」の実行権を得るために空転して待つプロセスが
空転しプロセッサを消費し続ける欠点を回避することは
できない。また、2値セマフォ方式では相互排除を頻繁
に行うユーザプログラムの実行において、プロセス切り
替えのオーバーヘッドが大きくなる欠点を回避すること
はできない。
る場合、スピンロック方式と2値セマフォ方式のいずれ
かをユーザは選択して使用する。この時、ユーザはそれ
ぞれの方式の欠点を理解し、かつ、「きわどい部分」を
実行するプロセスの動作を考察した上で決定する必要が
ある。また、ユーザが十分考察して相互排除の方式を選
択した場合でも、スピンロック方式では「きわどい部分
」を実行するプロセスがOSによってプロセッサを取り
上げられるのを防ぐことはできない。そのため「きわど
い部分」の実行権を得るために空転して待つプロセスが
空転しプロセッサを消費し続ける欠点を回避することは
できない。また、2値セマフォ方式では相互排除を頻繁
に行うユーザプログラムの実行において、プロセス切り
替えのオーバーヘッドが大きくなる欠点を回避すること
はできない。
【0019】本発明の目的は、ユーザプログラムでの相
互排除にスピンロック方式を用いた場合、「きわどい部
分」を実行するプロセスがプロセッサを取り上げられる
ために、空転して「きわどい部分」の実行権を得るのを
待つプロセスを実行するプロセッサが無駄な空転を費や
す点、および、2値セマフォ方式を用いた場合、頻繁に
相互排除が発生するとプロセス全体の処理においてプロ
セス切り替えに要するオーバーヘッドが占める割合が大
きくなる点、および、両方式の使い分けをユーザが考慮
しなくてはならない点、あるいは、相互排除における誤
り発生を検出して例外処理することができない点を解決
し、ユーザプロセスが頻繁に「きわどい部分」を実行す
るシステムにおいて効率的な共有資源相互排除方式を提
供することにある。
互排除にスピンロック方式を用いた場合、「きわどい部
分」を実行するプロセスがプロセッサを取り上げられる
ために、空転して「きわどい部分」の実行権を得るのを
待つプロセスを実行するプロセッサが無駄な空転を費や
す点、および、2値セマフォ方式を用いた場合、頻繁に
相互排除が発生するとプロセス全体の処理においてプロ
セス切り替えに要するオーバーヘッドが占める割合が大
きくなる点、および、両方式の使い分けをユーザが考慮
しなくてはならない点、あるいは、相互排除における誤
り発生を検出して例外処理することができない点を解決
し、ユーザプロセスが頻繁に「きわどい部分」を実行す
るシステムにおいて効率的な共有資源相互排除方式を提
供することにある。
【0020】
【課題を解決するための手段】本発明は、異なるプロセ
ッサ上で同時に動作可能な複数プロセスからなる並列プ
ログラムを実行させる機能と、各プロセスが主記憶に置
かれた共有資源へアクセスする機能と、一時にただ一つ
のプロセスしか使用できない部分(きわどい部分と呼ぶ
)の実行を開始する権利(実行権と呼ぶ)を相互に排除
する機能を有するマルチプロセッサシステムにおいて、
以下の機能を有するロック手段、ロック切り替え手段、
プロセス実行状態監視手段及びプロセス実行制御手段を
設ける。
ッサ上で同時に動作可能な複数プロセスからなる並列プ
ログラムを実行させる機能と、各プロセスが主記憶に置
かれた共有資源へアクセスする機能と、一時にただ一つ
のプロセスしか使用できない部分(きわどい部分と呼ぶ
)の実行を開始する権利(実行権と呼ぶ)を相互に排除
する機能を有するマルチプロセッサシステムにおいて、
以下の機能を有するロック手段、ロック切り替え手段、
プロセス実行状態監視手段及びプロセス実行制御手段を
設ける。
【0021】ロック手段は、「きわどい部分」の実行権
を持つプロセスが存在しているか否かを示すロック変数
に対して不可分な読み出し・書き込みを行う機能と、「
きわどい部分」の実行権を有するプロセス識別子を記録
する機能を有し、同時に1つ以上のプロセスが「きわど
い部分」の実行権を得ようとした場合に、ただ1つのプ
ロセスだけが「きわどい部分」の実行権を得ることを保
証し、「きわどい部分」の実行権を得たプロセスの識別
子を記録する。
を持つプロセスが存在しているか否かを示すロック変数
に対して不可分な読み出し・書き込みを行う機能と、「
きわどい部分」の実行権を有するプロセス識別子を記録
する機能を有し、同時に1つ以上のプロセスが「きわど
い部分」の実行権を得ようとした場合に、ただ1つのプ
ロセスだけが「きわどい部分」の実行権を得ることを保
証し、「きわどい部分」の実行権を得たプロセスの識別
子を記録する。
【0022】ロック切り替え手段は、現在の相互排除の
方式がスピンロック方式が2値セマフォ方式かを調べる
機能と、相互排除を行うプロセスのプログラムの誤りを
検出する機能を有し、現在の相互排除の方式によって「
きわどい部分」の実行権を得るために待つプロセスの待
機方法を変化させ、あるいは、誤りを起こしたプロセス
に例外処理を行わせる。
方式がスピンロック方式が2値セマフォ方式かを調べる
機能と、相互排除を行うプロセスのプログラムの誤りを
検出する機能を有し、現在の相互排除の方式によって「
きわどい部分」の実行権を得るために待つプロセスの待
機方法を変化させ、あるいは、誤りを起こしたプロセス
に例外処理を行わせる。
【0023】プロセス実行状態監視手段は、OSの制御
データであるプロセス制御ブロック(PCBと呼ぶ)を
プロセスのアドレス空間内にマッピングする機能と、マ
ッピングしたPCBのプロセス状態フィールドを読み出
す機能と、現在の相互排除の方式をスピンロック方式か
2値セマフォ方式かに変化させる機能を有し、「きわど
い部分」の実行権を得るために待つプロセスに「きわど
い部分」の実行権を有するプロセスの実行状態を監視さ
せ、その結果に従って待機方法を変化させる。
データであるプロセス制御ブロック(PCBと呼ぶ)を
プロセスのアドレス空間内にマッピングする機能と、マ
ッピングしたPCBのプロセス状態フィールドを読み出
す機能と、現在の相互排除の方式をスピンロック方式か
2値セマフォ方式かに変化させる機能を有し、「きわど
い部分」の実行権を得るために待つプロセスに「きわど
い部分」の実行権を有するプロセスの実行状態を監視さ
せ、その結果に従って待機方法を変化させる。
【0024】プロセス実行制御手段は、「きわどい部分
」の実行権を得るために待つプロセスをプロセッサ待ち
状態にすると、セマフォ待ち状態にする機能と、プロセ
ス切り替えプログラムを実行する機能を有し、プロセス
状態監視手段の結果により、「きわどい部分」の実行権
を得るために待つプロセスの実行状態をプロセッサ待ち
状態、あるいは、セマフォ待ち状態に変化させる。
」の実行権を得るために待つプロセスをプロセッサ待ち
状態にすると、セマフォ待ち状態にする機能と、プロセ
ス切り替えプログラムを実行する機能を有し、プロセス
状態監視手段の結果により、「きわどい部分」の実行権
を得るために待つプロセスの実行状態をプロセッサ待ち
状態、あるいは、セマフォ待ち状態に変化させる。
【0025】
【作用】本発明では、「きわどい部分」の実行権を有す
るプロセスの実行状態に従って、相互排除の方式をスピ
ンロック方式あるいは2値セマフォ方式に選択的に変化
して、「きわどい部分」の実行権を得るのを待つプロセ
スの実行を制御する。また、相互排除を行うプロセスの
プログラムの誤りを検出して例外処理を行わせる。これ
により、ユーザプロセスなどが頻繁に「きわどい部分」
をアクセスするような場合、相互排除を効率的に行うこ
とができるようになる。
るプロセスの実行状態に従って、相互排除の方式をスピ
ンロック方式あるいは2値セマフォ方式に選択的に変化
して、「きわどい部分」の実行権を得るのを待つプロセ
スの実行を制御する。また、相互排除を行うプロセスの
プログラムの誤りを検出して例外処理を行わせる。これ
により、ユーザプロセスなどが頻繁に「きわどい部分」
をアクセスするような場合、相互排除を効率的に行うこ
とができるようになる。
【0026】
【実施例】図1は本発明の一実施例のシステム構成図で
ある。図において、プロセッサ1,2および主記憶装置
3は一つのシステムバス4に接続されている。各プロセ
ッサ1,2は、主記憶装置3に格納された任意のデータ
の読み出し、書き込み、および任意のプログラムの実行
が可能である。主記憶装置3には、プロセス制御ブロッ
ク101、プロセッサ待ちプロセス行列102、セマフ
ォ待ちプロセス行列103、鍵104、きわどい部分1
05、入口操作106、出口操作107、例外処理プロ
グラム108、プロセス切り替えプログラム109が格
納されている。
ある。図において、プロセッサ1,2および主記憶装置
3は一つのシステムバス4に接続されている。各プロセ
ッサ1,2は、主記憶装置3に格納された任意のデータ
の読み出し、書き込み、および任意のプログラムの実行
が可能である。主記憶装置3には、プロセス制御ブロッ
ク101、プロセッサ待ちプロセス行列102、セマフ
ォ待ちプロセス行列103、鍵104、きわどい部分1
05、入口操作106、出口操作107、例外処理プロ
グラム108、プロセス切り替えプログラム109が格
納されている。
【0027】プロセス制御ブロック(以下、PCBと呼
ぶ)101は、OSによりプロセスごとに作られる制御
データであり、プロセスの実行状態やプロセスへの資源
の割り付け状況などが書き込まれ、ユーザプロセスから
は直接書き込み・読み出しができないよう保護されてい
る。PCB内にはプロセスの状態フィールドがあり、プ
ロセスが実行である、あるいは、プロセッサ待ち状態で
ある、あるいは、イベント待ちなどのブロック状態であ
ることを示す。図1では、一例としてプロセスA、Bの
PCBを示し、プロセスA、Bはそれぞれプロセッサ1
,2に割り付けられて実行中であることを示している。
ぶ)101は、OSによりプロセスごとに作られる制御
データであり、プロセスの実行状態やプロセスへの資源
の割り付け状況などが書き込まれ、ユーザプロセスから
は直接書き込み・読み出しができないよう保護されてい
る。PCB内にはプロセスの状態フィールドがあり、プ
ロセスが実行である、あるいは、プロセッサ待ち状態で
ある、あるいは、イベント待ちなどのブロック状態であ
ることを示す。図1では、一例としてプロセスA、Bの
PCBを示し、プロセスA、Bはそれぞれプロセッサ1
,2に割り付けられて実行中であることを示している。
【0028】プロセッサ待ちプロセス行列102は、プ
ロセッサを割り付けると直ちに実行可能なプロセスのP
CBを整列させたOSの制御データである。セマフォ待
ちプロセス行列103は、きわどい部分105の使用が
終わるのを待っているプロセスを整列させたOSの制御
データである。
ロセッサを割り付けると直ちに実行可能なプロセスのP
CBを整列させたOSの制御データである。セマフォ待
ちプロセス行列103は、きわどい部分105の使用が
終わるのを待っているプロセスを整列させたOSの制御
データである。
【0029】鍵104は、PCBアドレスとロック変数
とロック型変数からなる。PCBアドレスには、きわど
い部分105の実行権を所有しているプロセスのPCB
の先頭アドレス、または、0が格納されている。ロック
変数は、きわどい部分105の実行権を所有するプロセ
スが存在するか否かを示す(1は存在、0は存在しない
とする)。ロック型変数は現在の相互排除方式がスピン
ロック方式かセマフォ方式かを示す。
とロック型変数からなる。PCBアドレスには、きわど
い部分105の実行権を所有しているプロセスのPCB
の先頭アドレス、または、0が格納されている。ロック
変数は、きわどい部分105の実行権を所有するプロセ
スが存在するか否かを示す(1は存在、0は存在しない
とする)。ロック型変数は現在の相互排除方式がスピン
ロック方式かセマフォ方式かを示す。
【0030】きわどい部分105は、一時には一つのプ
ロセスしか実行することのできないプログラムであり、
相互排除の対象である。入口操作106と出口操作10
7は、きわどい部分105に対する相互排除を行なうプ
ログラムである。例外処理プログラム108は、相互排
除に関する誤りを処理するプログラムであり、プロセス
切り替えプログラム109はプロセッサ1,2をプロセ
スに割り付けるプログラムである。
ロセスしか実行することのできないプログラムであり、
相互排除の対象である。入口操作106と出口操作10
7は、きわどい部分105に対する相互排除を行なうプ
ログラムである。例外処理プログラム108は、相互排
除に関する誤りを処理するプログラムであり、プロセス
切り替えプログラム109はプロセッサ1,2をプロセ
スに割り付けるプログラムである。
【0031】図2は入口操作106と出口操作107を
用いて、プロセスがきわどい部分105の相互排除を行
う操作手順を示したものである。即ち、あるプロセスが
「きわどい部分」をアクセスする場合、まず、入口操作
を実行し、「きわどい部分」が他のプロセスで使用中で
なければ、「きわどい部分」の実行権を得て「きわどい
部分」へアクセスし、それが終了すると、出口操作を実
行する。これにより、複数のプロセスが同時に入口操作
を実行した場合には、ただ一つのプロセスが「きわどい
部分」を実行できる。そして、このプロセスが出口操作
を行なうまで他のプロセスは「きわどい部分」に入るこ
とができない。
用いて、プロセスがきわどい部分105の相互排除を行
う操作手順を示したものである。即ち、あるプロセスが
「きわどい部分」をアクセスする場合、まず、入口操作
を実行し、「きわどい部分」が他のプロセスで使用中で
なければ、「きわどい部分」の実行権を得て「きわどい
部分」へアクセスし、それが終了すると、出口操作を実
行する。これにより、複数のプロセスが同時に入口操作
を実行した場合には、ただ一つのプロセスが「きわどい
部分」を実行できる。そして、このプロセスが出口操作
を行なうまで他のプロセスは「きわどい部分」に入るこ
とができない。
【0032】図3は、入口操作の機能ブロック図である
。入口操作機能はロック手段301、ロック切り替え手
段302、プロセス実行状態監視手段303およびプロ
セス実行制御手段304で構成される。図3に示すよう
に、入口操作では、図11のスピンロック方式、図15
の2値セマフォ方式と比べ、ロック切り替え手段302
およびプロセス実行状態監視手段303が付加される。 また、後述するように、ロック手段301およびプロセ
ス実行制御手段304も機能拡張されている。
。入口操作機能はロック手段301、ロック切り替え手
段302、プロセス実行状態監視手段303およびプロ
セス実行制御手段304で構成される。図3に示すよう
に、入口操作では、図11のスピンロック方式、図15
の2値セマフォ方式と比べ、ロック切り替え手段302
およびプロセス実行状態監視手段303が付加される。 また、後述するように、ロック手段301およびプロセ
ス実行制御手段304も機能拡張されている。
【0033】次に、図4から図7を用いて入口操作の各
手段での処理を詳述するが、図1に示すように、鍵10
5のPCBアドレスとロック変数の初期値を0とし、ロ
ック型変数の初期値をスピンロック方式とし、入口操作
を実行するプロセスはプロセスAとする。
手段での処理を詳述するが、図1に示すように、鍵10
5のPCBアドレスとロック変数の初期値を0とし、ロ
ック型変数の初期値をスピンロック方式とし、入口操作
を実行するプロセスはプロセスAとする。
【0034】図4は、ロック手段301の処理フロー例
である。太線で囲った部分が、従来のスピンロック方式
および2値セマフォ方式に対して、本発明で新たに付加
した操作手順である。 (1)プロセスAは鍵のPCBアドレスを読み出す(ス
テップ401)。読み出した値をaとする。次に、この
aの値を判定する(ステップ402)。aが0(初期値
)の場合には、「きわどい部分」の実行権を所有するプ
ロセスが存在しない可能性があるため、(2)に行く。 その他の場合には、「きわどい部分」の実行権を所有す
るプロセスが存在することを意味するので、処理はロッ
ク切り替え手段302へ移る。 (2)aが0の場合、鍵のロック変数を読み出す(ステ
ップ403)。読み出した値をxとする。次に鍵のロッ
ク変数を1にする(ステップ404)。ここで、ロック
変数に対する読み出し・書き込みはtest−and−
set命令などによって不可分演算によりなされるもの
である。次に、読み出したロック変数の値xを判定する
(ステップ405)。xが0の場合には、プロセスAが
「きわどい部分」の実行権を得たことを意味するので、
(3)へ行く。xが0でない場合には、(1)に行く。 これらの操作はスピンロック方式および2値セマフォ方
式での手順と同一である。 (3)読み出した鍵のロック変数の値xが0の場合、プ
ロセスA(自プロセス)のPCBの先頭アドレスを鍵の
PCBアドレスに書き込み、入口操作を終了する(ステ
ップ406)。
である。太線で囲った部分が、従来のスピンロック方式
および2値セマフォ方式に対して、本発明で新たに付加
した操作手順である。 (1)プロセスAは鍵のPCBアドレスを読み出す(ス
テップ401)。読み出した値をaとする。次に、この
aの値を判定する(ステップ402)。aが0(初期値
)の場合には、「きわどい部分」の実行権を所有するプ
ロセスが存在しない可能性があるため、(2)に行く。 その他の場合には、「きわどい部分」の実行権を所有す
るプロセスが存在することを意味するので、処理はロッ
ク切り替え手段302へ移る。 (2)aが0の場合、鍵のロック変数を読み出す(ステ
ップ403)。読み出した値をxとする。次に鍵のロッ
ク変数を1にする(ステップ404)。ここで、ロック
変数に対する読み出し・書き込みはtest−and−
set命令などによって不可分演算によりなされるもの
である。次に、読み出したロック変数の値xを判定する
(ステップ405)。xが0の場合には、プロセスAが
「きわどい部分」の実行権を得たことを意味するので、
(3)へ行く。xが0でない場合には、(1)に行く。 これらの操作はスピンロック方式および2値セマフォ方
式での手順と同一である。 (3)読み出した鍵のロック変数の値xが0の場合、プ
ロセスA(自プロセス)のPCBの先頭アドレスを鍵の
PCBアドレスに書き込み、入口操作を終了する(ステ
ップ406)。
【0035】図5は、ロック切り替え手段302の処理
フロー例である。ロック切り替え手段302は、従来の
スピンロック方式および2値セマフォ方式にはない手段
であり、本発明により付加されたものである。ロック切
り替え手段302の入口は、図4のステップ402(n
0側)から制御が移された場合、すなわち、プロセスA
がロック手段301において「きわどい部分」の実行権
を得られなかった場合である。 (1)ロック手段301において読み出した鍵のPCB
アドレスの値aがプロセスA(自プロセス)のPCBの
先頭アドレスか否か判定する(ステップ501)。先頭
アドレスの場合、プロセスAのプログラムに誤りがあり
、「きわどい部分」の実行権を新たに得ることができな
いことを意味するので、例外処理を行うために、後述の
プロセス実行制御手段304の処理へ移る。その他の場
合には、次の(2)へ行く。 (2)鍵のロック型変数の値を読み出す(ステップ50
2)。読み出した値をcとする。次にこのロック型変数
の値cを判定する(ステップ503)。そして、現在の
相互排除の方式が2値セマフォ方式であることをcが示
している場合、プロセスAは、セマフォ待ちプロセスの
状態で、「きわどい部分」の実行権が解放されるのを待
つことを意味するので、プロセス実行制御手段304へ
行く。それ以外の場合には、プロセス実行状態監視手段
303へ行く。
フロー例である。ロック切り替え手段302は、従来の
スピンロック方式および2値セマフォ方式にはない手段
であり、本発明により付加されたものである。ロック切
り替え手段302の入口は、図4のステップ402(n
0側)から制御が移された場合、すなわち、プロセスA
がロック手段301において「きわどい部分」の実行権
を得られなかった場合である。 (1)ロック手段301において読み出した鍵のPCB
アドレスの値aがプロセスA(自プロセス)のPCBの
先頭アドレスか否か判定する(ステップ501)。先頭
アドレスの場合、プロセスAのプログラムに誤りがあり
、「きわどい部分」の実行権を新たに得ることができな
いことを意味するので、例外処理を行うために、後述の
プロセス実行制御手段304の処理へ移る。その他の場
合には、次の(2)へ行く。 (2)鍵のロック型変数の値を読み出す(ステップ50
2)。読み出した値をcとする。次にこのロック型変数
の値cを判定する(ステップ503)。そして、現在の
相互排除の方式が2値セマフォ方式であることをcが示
している場合、プロセスAは、セマフォ待ちプロセスの
状態で、「きわどい部分」の実行権が解放されるのを待
つことを意味するので、プロセス実行制御手段304へ
行く。それ以外の場合には、プロセス実行状態監視手段
303へ行く。
【0036】図6は、プロセス実行状態監視手段303
の処理フロー例である。プロセス実行状態監視手段30
3も従来のスピンロック方式および2値セマフォ方式に
はない手段であり、本発明により付加されるものである
。プロセス実行状態監視手段303の入口は、図5のス
テップ503(no側)から制御が移された場合、すな
わち、プロセスAが「きわどい部分」の実行権を得られ
ず、かつ、相互排除の方式がスピンロック方式の場合で
ある。 (1)ロック手段301で読み出した鍵のPCBアドレ
スの値aを先頭アドレスとするPCBがプロセスA(自
プロセス)のアドレス空間内にマッピングされているか
判定し(ステップ601)、既に、マッピングしてある
場合には(2)へ行く。マッピングしていない場合には
、aを先頭アドレスとするPCBを、プロセスAのアド
レス空間内にマッピングした後(ステップ602)、(
2)へ行く。ここでマッピングとは、アクセス可能なフ
ァイルをプロセスのアドレス空間の一部として使用する
ことであり、UNIXのmmapなど汎用OSのマッピ
ング機能を用いることにより実現される。UNIXの場
合、PCBを含むカーネルのデータ領域がファイルの形
で提供されているため、これをマッピングすることによ
り、PCBへのアクセスが可能となる。 (2)プロセスAのアドレス空間内にマッピングされた
値aを先頭アドレスとするPCBからプロセスの状態フ
ィールドを読み出す(ステップ603)。読み出した値
をsとする。次に、このsの状態を判定する(ステップ
604、605)。「きわどい部分」の実行権を有する
プロセスが実行中であることをsの値が示している場合
には(ステップ604のyes側)、プロセス実行制御
手段304の処理へ行く。「きわどい部分」の実行権を
有するプロセスが実行中でなく、プロセッサ待ちプロセ
ス行列に入っていることをsの値が示している場合には
(ステップ605のyes側)、やはりプロセス実行制
御手段304の処理へ行く。それ以外の場合、即ち、「
きわどい部分」の実行権を有するプロセスがイベント待
ちなど、ブロック状態であることをsの値が示している
場合には(ステップ605のno側)、鍵のロック型変
数をセマフォ方式にした後(ステップ606)、プロセ
ス実行制御手段304の処理へ行く。
の処理フロー例である。プロセス実行状態監視手段30
3も従来のスピンロック方式および2値セマフォ方式に
はない手段であり、本発明により付加されるものである
。プロセス実行状態監視手段303の入口は、図5のス
テップ503(no側)から制御が移された場合、すな
わち、プロセスAが「きわどい部分」の実行権を得られ
ず、かつ、相互排除の方式がスピンロック方式の場合で
ある。 (1)ロック手段301で読み出した鍵のPCBアドレ
スの値aを先頭アドレスとするPCBがプロセスA(自
プロセス)のアドレス空間内にマッピングされているか
判定し(ステップ601)、既に、マッピングしてある
場合には(2)へ行く。マッピングしていない場合には
、aを先頭アドレスとするPCBを、プロセスAのアド
レス空間内にマッピングした後(ステップ602)、(
2)へ行く。ここでマッピングとは、アクセス可能なフ
ァイルをプロセスのアドレス空間の一部として使用する
ことであり、UNIXのmmapなど汎用OSのマッピ
ング機能を用いることにより実現される。UNIXの場
合、PCBを含むカーネルのデータ領域がファイルの形
で提供されているため、これをマッピングすることによ
り、PCBへのアクセスが可能となる。 (2)プロセスAのアドレス空間内にマッピングされた
値aを先頭アドレスとするPCBからプロセスの状態フ
ィールドを読み出す(ステップ603)。読み出した値
をsとする。次に、このsの状態を判定する(ステップ
604、605)。「きわどい部分」の実行権を有する
プロセスが実行中であることをsの値が示している場合
には(ステップ604のyes側)、プロセス実行制御
手段304の処理へ行く。「きわどい部分」の実行権を
有するプロセスが実行中でなく、プロセッサ待ちプロセ
ス行列に入っていることをsの値が示している場合には
(ステップ605のyes側)、やはりプロセス実行制
御手段304の処理へ行く。それ以外の場合、即ち、「
きわどい部分」の実行権を有するプロセスがイベント待
ちなど、ブロック状態であることをsの値が示している
場合には(ステップ605のno側)、鍵のロック型変
数をセマフォ方式にした後(ステップ606)、プロセ
ス実行制御手段304の処理へ行く。
【0037】図7はプロセス実行制御手段304の処理
フロー例である。プロセス実行制御手段304の入口は
、ロック切り替え手段302において、相互排除におけ
る誤りを検出した場合(図5のステップ501のyes
側)、相互排除の方式が2値セマフォ方式を検出した場
合(図5のステップ503のyes側)、及び、プロセ
ス実行状態監視手段303において、「きわどい部分」
の実行権を有するプロセスがブロック状態であることを
検出してロック変数をスピンロック方式から2値セマフ
ォ方式に変更した場合(図6のステップ606)、「き
わどい部分」の実行権を有するプロセスがプロセッサ待
ち状態であることを検出した場合(図6のステップ60
5のyes側)、「きわどい部分」の実行権を有するプ
ロセスが実行中であることを検出した場合(図6のステ
ップ604のyes側)の計5つである。図7において
、太線で囲った部分が、従来の2値セマフォ方式に対し
て、本発明で新たに付加した操作である。 (1)図5のステップ501(yes側)から制御が移
された場合、すなわち、ロック切り替え手段302にお
いて、相互排除における誤りを検出した場合には、例外
処理プログラムに制御を移し(ステップ701)、入口
操作を終了する。 (2)図5のステップ503(yes側)から制御が移
された場合、すなわち、ロック切り替え手段302にお
いて、相互排除の方式が2値セマフォ方式であった場合
、および、図6のステップ606から制御を移された場
合、すなわち、プロセス実行状態監視手段303におい
て、「きわどい部分」の実行権を有するプロセスがブロ
ック状態であることを検出してセマフォ方式に変更した
場合には、従来の2値セマフォ方式と同様の待機方法で
、「きわどい部分」の実行権が解放されるのを待つため
に、汎用OSが持つ2値セマフォの機能を用いて、プロ
セスA(自プロセス)のPCBをセマフォ待ちプロセス
行列の最後尾に加える(ステップ702)。そして、(
4)へ行く。 (3)図6のステップ605(yes側)から制御が移
された場合、すなわち、プロセス実行状態監視手段30
3において、「きわどい部分」の実行権を有するプロセ
スがプロセッサ待ち状態であることを検出した場合には
、「きわどい部分」の実行権を有するプロセスがプロセ
ッサを取り上げられて、停止しており、「きわどい部分
」の実行権を得るために待つプロセスに割り付けられた
プロセッサは無駄な時間を費やすことを意味するので、
自プロセスに割り付けられたプロセッサを解放するため
に、汎用OSのプロセス制御機能を使用して、プロセッ
サ待ちプロセス行列の最後尾にプロセスAのPCBを入
れ(ステップ703)、(4)へ行く。 (4)プロセス切り替えプログラムを実行し、自プロセ
スに割り付けられたプロセッサを他のプロセスに渡す(
ステップ704)。しばらく後に、再び、このプロセス
(プロセスA)にプロセッサが割り付けられた時には、
入口操作を行うために、再びロック手段301へ行く(
図4のステップ401へ制御を移す)。この操作は、従
来の2値セマフォ方式と同一の操作である。 (5)図6のステップ604(yes側)から制御を移
された場合、すなわち、プロセス実行状態監視手段30
3において、「きわどい部分」の実行権を有するプロセ
スが実行中であることを検出した場合には、「きわどい
部分」の実行権が比較的短時間のうちに解放される可能
性があるため、「きわどい部分」の実行権を獲得するた
めに、再びロック手段301へ行く(図4のステップ4
01へ制御を移す)。
フロー例である。プロセス実行制御手段304の入口は
、ロック切り替え手段302において、相互排除におけ
る誤りを検出した場合(図5のステップ501のyes
側)、相互排除の方式が2値セマフォ方式を検出した場
合(図5のステップ503のyes側)、及び、プロセ
ス実行状態監視手段303において、「きわどい部分」
の実行権を有するプロセスがブロック状態であることを
検出してロック変数をスピンロック方式から2値セマフ
ォ方式に変更した場合(図6のステップ606)、「き
わどい部分」の実行権を有するプロセスがプロセッサ待
ち状態であることを検出した場合(図6のステップ60
5のyes側)、「きわどい部分」の実行権を有するプ
ロセスが実行中であることを検出した場合(図6のステ
ップ604のyes側)の計5つである。図7において
、太線で囲った部分が、従来の2値セマフォ方式に対し
て、本発明で新たに付加した操作である。 (1)図5のステップ501(yes側)から制御が移
された場合、すなわち、ロック切り替え手段302にお
いて、相互排除における誤りを検出した場合には、例外
処理プログラムに制御を移し(ステップ701)、入口
操作を終了する。 (2)図5のステップ503(yes側)から制御が移
された場合、すなわち、ロック切り替え手段302にお
いて、相互排除の方式が2値セマフォ方式であった場合
、および、図6のステップ606から制御を移された場
合、すなわち、プロセス実行状態監視手段303におい
て、「きわどい部分」の実行権を有するプロセスがブロ
ック状態であることを検出してセマフォ方式に変更した
場合には、従来の2値セマフォ方式と同様の待機方法で
、「きわどい部分」の実行権が解放されるのを待つため
に、汎用OSが持つ2値セマフォの機能を用いて、プロ
セスA(自プロセス)のPCBをセマフォ待ちプロセス
行列の最後尾に加える(ステップ702)。そして、(
4)へ行く。 (3)図6のステップ605(yes側)から制御が移
された場合、すなわち、プロセス実行状態監視手段30
3において、「きわどい部分」の実行権を有するプロセ
スがプロセッサ待ち状態であることを検出した場合には
、「きわどい部分」の実行権を有するプロセスがプロセ
ッサを取り上げられて、停止しており、「きわどい部分
」の実行権を得るために待つプロセスに割り付けられた
プロセッサは無駄な時間を費やすことを意味するので、
自プロセスに割り付けられたプロセッサを解放するため
に、汎用OSのプロセス制御機能を使用して、プロセッ
サ待ちプロセス行列の最後尾にプロセスAのPCBを入
れ(ステップ703)、(4)へ行く。 (4)プロセス切り替えプログラムを実行し、自プロセ
スに割り付けられたプロセッサを他のプロセスに渡す(
ステップ704)。しばらく後に、再び、このプロセス
(プロセスA)にプロセッサが割り付けられた時には、
入口操作を行うために、再びロック手段301へ行く(
図4のステップ401へ制御を移す)。この操作は、従
来の2値セマフォ方式と同一の操作である。 (5)図6のステップ604(yes側)から制御を移
された場合、すなわち、プロセス実行状態監視手段30
3において、「きわどい部分」の実行権を有するプロセ
スが実行中であることを検出した場合には、「きわどい
部分」の実行権が比較的短時間のうちに解放される可能
性があるため、「きわどい部分」の実行権を獲得するた
めに、再びロック手段301へ行く(図4のステップ4
01へ制御を移す)。
【0038】図8は出口操作の処理フロー例である。太
線が囲った部分が従来のスピンロック方および2値セマ
フォ方式に対して本発明で新たに付加した操作である。 (1)鍵のロック型変数を読み出す(ステップ801)
。読み出した値をcとする。鍵のロック型変数をビジー
ウエイト方式にし(ステップ802)、鍵のPCBアド
レスを0にする(ステップ803)。次に、読み出した
鍵のロック型変数の値cを判定し(ステップ804)、
cの値がビジーウエイ方式の場合には(2)へ行く。c
の値がセマフォ方式を示している場合には、汎用OSが
持つ2値セマフォの機能を用いて以下の動作を行う。セ
マフォ待ちプロセス行列が空であるか調べ(ステップ8
05)、空ならば(2)へ行く。空でないならばセマフ
ォ方式待ち行列内の全プロセスを取り出し、プロセッサ
待ちプロセス行列に入れ(ステップ806)、(2)へ
行く。 (2)鍵のロック変数を0にし、出口操作を終了する。
線が囲った部分が従来のスピンロック方および2値セマ
フォ方式に対して本発明で新たに付加した操作である。 (1)鍵のロック型変数を読み出す(ステップ801)
。読み出した値をcとする。鍵のロック型変数をビジー
ウエイト方式にし(ステップ802)、鍵のPCBアド
レスを0にする(ステップ803)。次に、読み出した
鍵のロック型変数の値cを判定し(ステップ804)、
cの値がビジーウエイ方式の場合には(2)へ行く。c
の値がセマフォ方式を示している場合には、汎用OSが
持つ2値セマフォの機能を用いて以下の動作を行う。セ
マフォ待ちプロセス行列が空であるか調べ(ステップ8
05)、空ならば(2)へ行く。空でないならばセマフ
ォ方式待ち行列内の全プロセスを取り出し、プロセッサ
待ちプロセス行列に入れ(ステップ806)、(2)へ
行く。 (2)鍵のロック変数を0にし、出口操作を終了する。
【0039】
【発明の効果】本発明では、「きわどい部分」の実行権
を所有するプロセスがプロセッサを取り上げられたこと
を検出し、「きわどい部分」の実行権を得るために空転
して待つプロセスからもプロセッサを取り上げることに
より、無駄な空転によるプロセッサの浪費を抑えること
が可能となり、あるいは、「きわどい部分」の実行権を
有するプロセス実行状態に従って、相互排除の方式をス
ピンロック方式か2値セマフォ方式かを切り替えること
により、「きわどい部分」の実行権を得るために待つプ
ロセスがセマフォ待ちプロセスの状態になる回数を減少
させ、プロセス切り替えの発生回数を減少させ、プロセ
ス切り換えのオーバーヘッドを小さく抑えることが可能
となり、または、ユーザが相互排除の方式を選択する必
要がなくなり、あるいは、相互排除における誤り発生を
検出することにより例外処理を行うことが可能となり、
ユーザプロセスが頻繁に「きわどい部分」を実行するシ
ステムにおいて効率的な相互排除方式を提供することが
できるという利点がある。
を所有するプロセスがプロセッサを取り上げられたこと
を検出し、「きわどい部分」の実行権を得るために空転
して待つプロセスからもプロセッサを取り上げることに
より、無駄な空転によるプロセッサの浪費を抑えること
が可能となり、あるいは、「きわどい部分」の実行権を
有するプロセス実行状態に従って、相互排除の方式をス
ピンロック方式か2値セマフォ方式かを切り替えること
により、「きわどい部分」の実行権を得るために待つプ
ロセスがセマフォ待ちプロセスの状態になる回数を減少
させ、プロセス切り替えの発生回数を減少させ、プロセ
ス切り換えのオーバーヘッドを小さく抑えることが可能
となり、または、ユーザが相互排除の方式を選択する必
要がなくなり、あるいは、相互排除における誤り発生を
検出することにより例外処理を行うことが可能となり、
ユーザプロセスが頻繁に「きわどい部分」を実行するシ
ステムにおいて効率的な相互排除方式を提供することが
できるという利点がある。
【0040】さらに、「きわどい部分」の実行権を得る
ために待つプロセスが、「きわどい部分」の実行権を所
有するプロセスのプロセス制御ブロック(PCB)を、
自アドレス空間内にマッピングしてから、その実行状態
を調べることにより、高速に値を読み出すことができる
という利点がある。
ために待つプロセスが、「きわどい部分」の実行権を所
有するプロセスのプロセス制御ブロック(PCB)を、
自アドレス空間内にマッピングしてから、その実行状態
を調べることにより、高速に値を読み出すことができる
という利点がある。
【0041】さらに、「きわどい部分」の実行権を所有
するプロセスが実行状態にあるとき、他のプロセスが空
転して待つ操作手順の中にメモリへの書き込み命令が存
在しないという利点がある。キヤッシュを備えたメモリ
共有型マルチプロセッサの場合には、このことは、キヤ
ッシュメモリ内のデータを参照するだけであり、主記憶
装置へのアクセスあるいは他のプロセッサのキヤッシュ
へのデータ転送が生じないことを意味し、空転のために
他のプロセッサの性能を劣化させないという利点がある
。
するプロセスが実行状態にあるとき、他のプロセスが空
転して待つ操作手順の中にメモリへの書き込み命令が存
在しないという利点がある。キヤッシュを備えたメモリ
共有型マルチプロセッサの場合には、このことは、キヤ
ッシュメモリ内のデータを参照するだけであり、主記憶
装置へのアクセスあるいは他のプロセッサのキヤッシュ
へのデータ転送が生じないことを意味し、空転のために
他のプロセッサの性能を劣化させないという利点がある
。
【図1】本発明の一実施例のシステム構成図である。
【図2】本発明方式で入口操作と出口操作を用いて相互
排除去する操作手順を示した図である。
排除去する操作手順を示した図である。
【図3】入口操作の機能ブロック図である。
【図4】図3のロック手段の処理フロー図である。
【図5】図3のロック切り替え手段の処理フロー図であ
る。
る。
【図6】図3のプロセス実行状態監視手段の処理フロー
図である。
図である。
【図7】図3のプロセス実行制御手段の処理フロー図で
ある。
ある。
【図8】出口操作の処理フロー図である。
【図9】従来のスピンロック方式を説明するためのシス
テム構成図である。
テム構成図である。
【図10】スピンロック方式でlock操作とunlo
ck操作を用いて相互排除する操作手順を示した図であ
る。
ck操作を用いて相互排除する操作手順を示した図であ
る。
【図11】lock操作の機能ブロック図である。
【図12】図11のロック手段の処理フロー図である。
【図13】unlock操作の処理フロー図である。
【図14】従来の2値セマフォ方式を説明するためのシ
ステム構成図である。
ステム構成図である。
【図15】2値セマフォ方式でP操作とV操作を用いて
相互排除する操作手順を示した図である。
相互排除する操作手順を示した図である。
【図16】P操作の機能ブロック図である。
【図17】図16のロック手段、プロセス実行制御手段
の処理フロー図である。
の処理フロー図である。
【図18】V操作の処理フロー図である。
1,2 プロセッサ
3 主記憶装置
101 プロセス制御ブロック(PCB)102
プロセス待ちプロセス行列 103 セマフォ待ちプロセス行列 104 鍵 105 きわどい部分 106 入口操作 107 出口操作 108 例外処理プログラム 109 プロセス切り替えプログラム301 ロッ
ク手段 302 ロック切り替え手段 303 プロセス実行状態監視手段 304 プロセス実行制御手段
プロセス待ちプロセス行列 103 セマフォ待ちプロセス行列 104 鍵 105 きわどい部分 106 入口操作 107 出口操作 108 例外処理プログラム 109 プロセス切り替えプログラム301 ロッ
ク手段 302 ロック切り替え手段 303 プロセス実行状態監視手段 304 プロセス実行制御手段
Claims (3)
- 【請求項1】 複数のプロセッサと主記憶装置がシス
テムバスで接続され、異なるプロセッサ上で同時に動作
可能な複数プロセスからなる並列プログラムが走行する
マルチプロセッサシステムにおいて、各プロセスが主記
憶装置の共有資源へアクセスする際、一時にただ一つの
プロセスしか使用できない部分(以下、きわどい部分と
呼ぶ)の実行を開始する権利(以下、実行権と呼ぶ)を
相互に排除する方式として、「きわどい部分」の実行権
を得ることに失敗したプロセスがプロセッサの使用権を
放棄して待機するスピンロック型とプロセッサの使用権
を確保したまま繰り返して実行権の獲得を試みるセマフ
ォ型とを併用し、「きわどい部分」の実行権を得るため
に待機するプロセスを、「きわどい部分」の実行権を有
するプロセスの実行状態に応じてスピンロック型あるい
はセマフォ型に切り替えることを特徴とする共有資源相
互排除方式。 - 【請求項2】 「きわどい部分」の実行権を得るため
に待機するプロセスが、「きわどい部分」の実行権を有
するプロセスのプロセス制御ブロックを自アドレス空間
内にマッピングして、その実行状態を調べることを特徴
とする請求項1記載の共有資源相互排除方式。 - 【請求項3】 相互排除を行うプロセスのプログラム
の誤りを検出し、誤りを起こしたプロセスに例外処理を
実行せしめることを特徴とする請求項1もしくは2記載
の共有資源相互排除方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP14395491A JPH04343143A (ja) | 1991-05-20 | 1991-05-20 | マルチプロセッサシステムにおける共有資源相互排除方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP14395491A JPH04343143A (ja) | 1991-05-20 | 1991-05-20 | マルチプロセッサシステムにおける共有資源相互排除方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04343143A true JPH04343143A (ja) | 1992-11-30 |
Family
ID=15350916
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP14395491A Pending JPH04343143A (ja) | 1991-05-20 | 1991-05-20 | マルチプロセッサシステムにおける共有資源相互排除方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04343143A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003536118A (ja) * | 1999-02-25 | 2003-12-02 | サン・マイクロシステムズ・インコーポレイテッド | マルチスレッドコンピュータシステムにおけるモニタ変換 |
-
1991
- 1991-05-20 JP JP14395491A patent/JPH04343143A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003536118A (ja) * | 1999-02-25 | 2003-12-02 | サン・マイクロシステムズ・インコーポレイテッド | マルチスレッドコンピュータシステムにおけるモニタ変換 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4042945B2 (ja) | 共用資源を非同期的に更新するためのインターフェース・システムおよび方法 | |
| JP2514299B2 (ja) | プロセスレベルプログラミングのための割込み処理の直列化方法 | |
| US5579505A (en) | Memory access system and method for granting or preventing atomic or nonatomic memory access requests to shared memory regions | |
| KR100976280B1 (ko) | 하드웨어 지원을 갖는 다중 프로세서 및 다중 스레드 안전 메시지 큐 | |
| US7962923B2 (en) | System and method for generating a lock-free dual queue | |
| US5966543A (en) | Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system | |
| US6792497B1 (en) | System and method for hardware assisted spinlock | |
| US5321825A (en) | Processing system with lock spaces for providing critical section access | |
| US5893157A (en) | Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests | |
| GB2121218A (en) | Shared resource locking apparatus | |
| JPH04308961A (ja) | 占有されたプロセスの同期ロックの状態を通知するための手段及び装置 | |
| US20030149820A1 (en) | Hardware semaphore intended for a multi-processor system | |
| JP3598282B2 (ja) | コンピュータ、その制御方法及びその制御方法を記録した記録媒体 | |
| JPH04343143A (ja) | マルチプロセッサシステムにおける共有資源相互排除方式 | |
| JPH01297760A (ja) | タスク制御方式及びオンライン・トランザクション・システム | |
| EP0297895B1 (en) | Apparatus and method using lockout for synchronization of access to main memory signal groups in a multiprocessor data processing system | |
| Atwood | Concurrency in operating systems | |
| US20040243751A1 (en) | Method for resource access co-ordination in a data processing system, data processing system and computer program | |
| JP3603671B2 (ja) | データ共有管理装置およびデータ共有管理方法 | |
| JPH0115899B2 (ja) | ||
| JP2001256065A (ja) | 排他制御方法及び計算機システム | |
| JPH036654A (ja) | 相互排除方式 | |
| JPH02116949A (ja) | 情報処理システム | |
| JPH02116952A (ja) | 情報処理システム | |
| JPH02100755A (ja) | 情報処理装置 |