JPH1165863A - 共有資源管理方法 - Google Patents

共有資源管理方法

Info

Publication number
JPH1165863A
JPH1165863A JP9229127A JP22912797A JPH1165863A JP H1165863 A JPH1165863 A JP H1165863A JP 9229127 A JP9229127 A JP 9229127A JP 22912797 A JP22912797 A JP 22912797A JP H1165863 A JPH1165863 A JP H1165863A
Authority
JP
Japan
Prior art keywords
shared resource
resource
command
lock
shared
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9229127A
Other languages
English (en)
Inventor
Kenta Futase
健太 二瀬
Akira Otsuji
彰 大辻
Yuzuru Maya
譲 真矢
Hirofumi Nagasuga
弘文 長須賀
Tatsutoshi Sakuraba
健年 櫻庭
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP9229127A priority Critical patent/JPH1165863A/ja
Priority to US09/139,565 priority patent/US6105098A/en
Publication of JPH1165863A publication Critical patent/JPH1165863A/ja
Pending 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/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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】本発明の課題は、結合機構を用いた並列コンピ
ュータシステムにおいて、計算機間で共有する資源の排
他制御方法を改善し、システム性能を向上させることで
ある。 【解決手段】結合機構内に新たにエンキュー構造体を設
け、プログラムが共有する共有資源の使用状態と要求待
ち行列を記録する。共有資源を用いるすべてのプログラ
ムは共有資源を用いる前に、結合機構に共有資源の確保
要求を出す。結合機構は資源の使用が可能なら、資源の
使用許可をプログラムに与え、資源の使用が不可能な
ら、プログラムを資源の要求待ち行列に追加する。結合
機構は共有資源を使用しているプログラムが未使用に戻
したとき、要求待ち行列の先頭からプログラムを取り出
し、共有資源の使用が許可されたことを通知する。通知
を受けたプログラムは、改めて結合機構に共有資源の使
用許可を要求することなく共有資源を使用する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、共有資源管理方法
に関し、特に、複数の計算機やプログラムが共有する資
源の共有資源管理方法に関する。
【0002】
【従来の技術】特開平6−4490「データ処理システ
ム」および特開平6−44195「結合式データ処理シ
ステム用の方法と装置」に記載の技術を用いると、結合
機構(構造化外部記憶(SES)機構)を用いた汎用並
列コンピュータシステムにおいて、計算機(中央処理複
合体(CPC))間で共有する資源を管理する方法を提
供できる。
【0003】特開平6−44195「結合式データ処理
システム用の方法と装置」によれば、計算機は、各々シ
ステム間チャネルにより結合機構に接続され、結合機構
内に保持される構造あるいは構造体と呼ばれる共用デー
タ・オブジェクト(特開平6−44195「結合式デー
タ処理システム用の方法と装置」にはキャッシュ構造と
リスト構造と呼ばれる2種類のオブジェクトが記載され
ている)と、構造体や、構造体に含まれるオブジェクト
を操作するメッセージ操作と呼ばれる処理ルーチン群を
用いて共有資源の管理を行なう。メッセージ操作はしば
しばメッセージ・コマンドあるいは単にコマンドと呼ば
れる。結合機構は、複数の構造体を保持することがで
き、それらは構造識別子(SID)と呼ばれる識別子に
より識別される。
【0004】特開平6−4490「データ処理システ
ム」には、計算機が結合機構を用いてメッセージ操作を
行なう仕組みが開示されている。それによれば、計算機
は、メッセージ送信命令(SMSG命令)と呼ばれる命
令を用いてメモリ内に準備したメッセージ・コマンド・
ブロック(MCB)と呼ばれる決まった大きさのメモリ
ブロックを結合機構に送ることでメッセージ操作を開始
する。
【0005】特開平6−44195「結合式データ処理
システム用の方法と装置」によれば、構造体の種類に応
じて、それを操作する複数のコマンドがあらかじめ結合
機構に定義されており、計算機はコマンドを指定したM
CBをSMSG命令を用いてシステム間チャネルを通じ
て結合機構に送ることによりメッセージ操作を起動す
る。起動されたメッセージ操作は、メッセージ応答ブロ
ック(MRB)と呼ばれる決まった大きさのメモリブロ
ックに実行結果を要約し、コマンドを送った計算機にM
RBを送り返すことで終了する。MCBには、起動され
るメッセージ操作の対象となる構造体を指定するため
に、SIDを含めることができる。
【0006】また、特開平6−44195「結合式デー
タ処理システム用の方法と装置」に記載された2種類の
構造体のうちリスト構造体は、いくつかのロック・テー
ブル項目から成るロック・テーブルを含むことができ、
ロックテーブルには、それを操作するロック専用コマン
ドがいくつか定義されている。ロックテーブルの構造お
よびロック専用コマンドの詳細は、特開平6−4419
5「結合式データ処理システム用の方法と装置」に開示
されている。
【0007】以下、特開平6−4490「データ処理シ
ステム」および特開平6−44195「結合式データ処
理システム用の方法と装置」に記載の技術を用いて、結
合機構を用いた汎用並列コンピュータシステムにおい
て、計算機間で共有する資源を管理する方法の概要を述
べる。
【0008】適切なロック専用コマンドを用いると、一
つのロック・テーブル項目を、条件に合致したときのみ
書き換えることができ、書換えの成功・失敗をそのコマ
ンドのMRBにより知ることができる。ロック専用コマ
ンドによるロック・テーブル項目の書き換え成功・失敗
の詳細な条件は、特開平6−44195「結合式データ
処理システム用の方法と装置」に開示されている。この
コマンドにより、ロック・テーブル項目を共有資源の状
態表示として用いることができる。一般に、ロック・テ
ーブル項目のように共有資源の状態表示として用いられ
るオブジェクトを「ロック」と呼ぶ。
【0009】共有資源を用いる計算機上のプログラム
は、共有資源を使用中である旨を示す値をあらかじめ決
めておく。また、共有資源がどのプログラムからも使用
されていない(未使用状態と呼ぶ)旨を示す値も決めて
おく。
【0010】プログラムが共有資源の使用を開始すると
きには、共有資源に対応するロック・テーブル項目が共
有資源の未使用状態を示しているときのみ、共有資源が
使用中である旨を示す値をロック・テーブル項目に書込
むような、ロック専用コマンドを用いる。このようなコ
マンドを結合機構に送ることを「ロックの確保要求」と
呼ぶ。このコマンドによるロック・テーブル項目の書き
換え、すなわちロックの確保が成功すれば、共有資源は
そのロック専用コマンドを送ったプログラムが使用可能
であり、プログラムは共有資源を用いた処理を開始でき
る。
【0011】ロックの確保が失敗したときは(すなわち
前述したロック専用コマンドによるロック・テーブル項
目の書換えが失敗したときは)、共有資源は他のプログ
ラムから使用されている。このとき共有資源の使用を開
始しようとしたプログラムは、ロックの確保が成功する
まで同じコマンドを繰り返し結合機構に送ることによ
り、他のプログラムによるロックの解放(ひいては資源
の解放)を待つ。
【0012】共有資源の使用を終えたプログラムは、対
応するロック・テーブル項目に共有資源の未使用状態を
示す値を書込むようなロック専用コマンドを送る。この
ようなコマンドを結合機構に送ることを「ロックを解放
する」と呼ぶ。ロックを確保していたプログラムがロッ
クを解放すると、そのロックの解放を待っているプログ
ラムにより繰り返し出されていたロックの確保要求が成
功するので、ロックを確保したプログラムが共有資源を
用いた処理を開始することができる。
【0013】これにより、計算機間で共有する資源を管
理する方法を提供できる。
【0014】あるプロセスが共有資源へのアクセスを必
要とするときに、共有資源がそのプロセスで使用可能と
なるまでループして待つことにより、複数のプロセス間
で共有資源の排他制御管理を行なうことを、一般にスピ
ン型排他制御といい、複数プロセスが並列に動作するコ
ンピュータシステムにおける排他制御の基本となってい
る。また、そこで用いられる排他制御処理のことをスピ
ン型ロックと呼ぶ。ここでプロセスとは、計算機システ
ムにおいて処理を行なうもの全般を指す。
【0015】スピン型ロックを実現するには、例えば
「Modern OperatingSystems
(Andrew S. Tanenbaum著)」の
p.38−39に記載のTEST AND SET L
OCK命令(TSL命令)あるいはそれに類似の命令を
用いる方法が知られている。これは主に、一つの主記憶
を複数の命令処理装置が共有する密結合マルチプロセッ
サ構成の計算機における、命令処理装置間のスピン型ロ
ックを実現するために使われる。この場合のプロセス
は、命令処理装置である。
【0016】また、前掲した特開平6−44195「結
合式データ処理システム用の方法と装置」に記載の結合
機構のロック・テーブルとロック専用コマンドを用いれ
ば、結合機構を用いた汎用並列コンピュータシステムに
おいて、計算機上のプログラム間のスピン型ロックを実
現できる。この場合のプロセスは、計算機上のプログラ
ムである。
【0017】スピン型ロックでは、共有資源を使うプロ
セスは、共有資源に対応した「ロック」が「確保」でき
るまで待ってから、共有資源を用いた処理を行ない、処
理が終ればロックを「解放」することにより、そのこと
を他のプロセスに知らせる。
【0018】スピン型ロックにおける「ロック」とは、
例えば、前述のTSL命令を用いた実現では、メモリ上
の1ワードであり、ロック・テーブルとロック専用コマ
ンドを用いた実現ならロック・テーブル項目の一つであ
る。これらロックを共有資源に対応づけることにより、
共有資源の確保をロックの確保に置き換える。
【0019】ロックには値を設定することができ、その
値は、共有資源がプロセスにより使用中である旨を示す
値か、共有資源がどのプロセスからも使用されていない
(未使用状態と呼ぶ)旨を示す値のいずれかである。こ
れらの値はあらかじめ決めておく。
【0020】スピン型ロックにおいて「ロックの確保を
要求する」とは、プロセスが共有資源を使用中である旨
を示す値をロックに設定しようと試みることである。た
だし、ロックに資源の未使用状態を示す値が設定されて
いる場合のみ、使用中を示す値に書き換えることがで
き、未使用状態の検査と使用中を示す値の設定を不可分
に行なうことが必要である。前述のTSL命令や、ロッ
ク専用コマンドが、旧い値の検査と新しい値の設定が不
可分に行なわれることを保証している。使用中を示す値
のロックへの設定が成功することを、プロセスが「ロッ
クを確保する」と呼ぶ。
【0021】ロックへの値の設定が失敗したとき、プロ
セスはそれが成功するまで同じ操作を繰り返す。この繰
り返しのことを特に「ロック待ちスピン」と呼ぶ。この
ように、ロックの確保待ちを単純なループ処理により行
なうことがスピン型ロックの本質である。
【0022】スピン型ロックにおいて「ロックを解放す
る」とは、ロックに共有資源が未使用状態である旨を示
す値を設定することである。これにより、そのロックの
解放を待つプロセスにより繰り返されていたロック確保
要求が成功するので、ロックを確保したプログラムが共
有資源を用いた処理を開始することができる。
【0023】図12はスピン型ロックを用いて資源の排
他制御を行なう場合の資源管理テーブルの例である。
【0024】資源管理テーブル1200は各行1210
−1〜1210−jを持ち、各行1210−1〜121
0−jは資源ポインタ1240により各共有資源122
0−1〜1220−jに対応づけられている。それぞれ
の行1210にはロック1230が含まれる。
【0025】共有資源1220をアクセスする場合、プ
ロセスは、それに対応するロック1230の確保要求を
出し、ロック1230を確保してから共有資源1220
へアクセスする。
【0026】また、ロック1230の確保には、共有資
源1220へのアクセスの種類により、共有と排他の2
種類の属性がある。
【0027】排他属性のロック1230の確保とは、一
つのプロセスのみにロック1230の確保を許すことで
ある。排他属性でのロック1230の確保要求は、ロッ
ク1230を確保している他のプロセスが一つもない場
合にのみ受け付けられる。
【0028】一方、共有属性のロック1230の確保と
は、共有属性同士なら複数のプロセスにロック1230
の確保を許すことである。共有属性でのロック1230
の確保要求は、他のプロセスがロック1230を排他で
確保していない限り受け付けられる。
【0029】端的に言えば、共有資源1220に改変を
加えず、読出しのみ行なうプロセスは、それに対応する
ロック1230を共有で確保し、共有資源1220に改
変を加えるプロセスは、それに対応するロック1230
を排他で確保する。これにより、読出しのみ行なうプロ
セス群は、同時に共有資源1220をアクセスできる。
【0030】図13はスピン型ロックを用いた資源排他
処理の流れ図である。プロセスA、B、CがA→B→C
の順番で一つの共有資源1220を共有、排他、共有で
要求した時のロック確保状態を示す流れ図ある。
【0031】プロセスAは共有資源1220に共有アク
セスするために、まず対応するロック1230を共有で
確保要求する(ステップ1300)。ロック1230は
この時点ではどのプロセスからも確保されていないの
で、すぐにプロセスAに共有で確保される(ステップ1
301)。この後プロセスAは共有資源1220を共有
でアクセスし、必要な処理を行なう(ステップ130
2)。
【0032】さて、プロセスAがステップ1302を実
行中に、プロセスBにおいて共有資源1220への排他
アクセスが必要になったとする。そのためにプロセスB
は対応するロック1230を排他で確保要求する(ステ
ップ1304)。しかし、プロセスAがステップ130
2を実行中であるので、ロック1230はプロセスAに
共有で確保されており、プロセスBはロック1230を
排他で確保できない。プロセスBはロック1230が解
放されるまでスピンし続ける(ステップ1305)。
【0033】このとき(すなわちプロセスBがステップ
1305を実行している時)、プロセスCにおいて共有
資源1220への共有アクセスが必要になったとする。
そのためにプロセスCは対応するロック1230を共有
で確保要求する(ステップ1307)。
【0034】プロセスBはまだロック1230を排他で
確保していないので、このときロック1230は、プロ
セスAに共有で確保されているのみである。同じ共有確
保同士のため、プロセスCはロック待ちスピンをともな
うことなくロック1230を確保でき、共有資源122
0を共有でアクセスする処理をすぐに行なうことが出来
る(ステップ1309)。プロセスBは依然としてステ
ップ1305でロック解放を待っている。
【0035】続いて、プロセスAにおいてステップ13
02が終り、ロック1230を解放したとする(ステッ
プ1303。図13中の時刻t11)。しかしこの段階
では、ロック1230の解放を待ってスピンしていたプ
ロセスBは、まだこれを排他で確保出来ない。なぜな
ら、このときロック1230はすでにプロセスCに共有
で確保されているからである。
【0036】プロセスBがロック1230を確保できる
のは、図13においては時刻t12においてプロセスC
のステップ1309が終り、ステップ1310でロック
1230を解放したのちである。この時点で初めてプロ
セスBはロック1230を排他で確保でき(ステップ1
306)、共有資源1220を用いた処理を始めること
が出来る。
【0037】この説明では便宜上共有資源にアクセスす
るプロセスは3つとしたが、一般にもっと多数のプロセ
スが存在し得る。仮に、プロセスCがステップ1309
を実行中に、別のプロセスが共有資源1220の共有ア
クセスを行なおうとすれば、プロセスCの場合と全く同
様にロック1230を共有で確保できる。すると、プロ
セスBのロック1230の排他確保(ステップ130
6)は、さらにあとに延ばされることになる。
【0038】この一連の流れはいくらでも繰り返すこと
が出来る。すると、ロック1230を共有で確保する個
々の後着プロセスはそれぞれ有限の時間後にロック12
30を解放するにもかかわらず、プロセスBが半永久的
にロック1230を確保できない状況が生まれる。これ
を後着共有確保要求の追い越しによる先着排他確保要求
の沈み込みと呼ぶ。
【0039】
【発明が解決しようとする課題】従来技術を用いると、
計算機間で共有する資源の排他制御を行なう事は可能で
ある。しかしながら、以下の問題点が存在する。
【0040】共有資源へのアクセスが必要になった計算
機上のプログラムは、ロック・テーブル項目を設定する
ため、ロック専用コマンドを結合機構に対して発行す
る。しかし、確保が失敗に終った場合、同じコマンドを
繰り返し送るため、次の2点でシステムの性能低下をも
たらす。
【0041】第一に、計算機上のプログラムは必要な共
有資源が確保できるまで何度もロック専用コマンドを送
らねばならないが、これでは計算機の負荷は増大する。
特にこの負荷は、ユーザプログラムの処理でなく、ただ
の待ちに浪費される負荷なので、なおさら問題である。
これを防ぐためには、別途計算機間の通信処理が必要で
あるが、特に資源の使用終了を待っている計算機の数が
多くなると、今度は通信処理そのもののオーバーヘッド
が大きくなり、システム内の計算機の処理能力を有効に
利用できない。
【0042】第二に、従来の技術を用いると、結合機構
に繰り返しロック専用コマンドが送られてくるが、結合
機構は、ロック・テーブル項目設定の成功・失敗にかか
わらず、ロック専用コマンドの処理を行なわねばならな
いので、結合機構の負荷が高くなる。一般に並列コンピ
ュータシステムにおいて、結合機構はシステム性能上の
ボトルネックとなりやすい構成要素であり、その負荷を
出来るだけ抑えることが可能なシステムアーキテクチャ
が望まれる。
【0043】本発明の目的は、汎用並列コンピュータシ
ステムにおいて、共有資源の排他制御に必要な各計算機
および結合機構の処理を抑える事が可能な共有資源管理
方法を提供する事である。
【0044】前述の通り、従来の共有と排他の属性を持
つスピン型ロックを用いた共有資源管理方法では、ロッ
クの排他確保要求において沈み込みという問題が存在す
る。
【0045】本発明の他の目的は、共有と排他の属性を
持つスピン型ロックを用いた共有資源の排他制御におい
て、排他確保要求の沈み込みを防ぐ方法を提供すること
である。
【0046】
【課題を解決するための手段】結合機構に、共有資源の
使用状況を保持する表と資源要求待ち行列と、共有資源
を使用するプログラムを登録する表を保持する。
【0047】システム内にあるすべての計算機に、あら
かじめシステム内でユニークな識別子を割当てる。
【0048】共有資源を使用するプログラムには、あら
かじめシステム内でユニークな識別子を割当て、結合機
構にプログラムの識別子と、その識別子を用いるプログ
ラムが実行される計算機の識別子を登録する。
【0049】共用資源を使用するためには、プログラム
は結合機構に共用資源の使用許可をプログラムの識別子
とともに依頼する。結合機構は共有資源の使用状況を参
照し、共有資源使用の許可・不許可を判断する。
【0050】プログラムが共有資源を使用することが可
能であれば、結合機構は共有資源の使用許可をプログラ
ムに与え、共有資源の使用状況を保持する表に、使用許
可を依頼したプログラムが資源を使用している旨を表示
するため、プログラムの識別子を設定する。
【0051】プログラムが共有資源を使用することが不
可能であれば、結合機構は共有資源の資源要求待ち行列
の末尾に共有資源の使用許可を依頼したプログラムの識
別子を記録したエントリを加える。
【0052】共有資源の使用許可が許可・不許可いずれ
の場合も、その結果をプログラムへ返送する。
【0053】共有資源の使用許可を依頼したプログラム
は、結合機構から返された共有資源使用許可の結果を元
に、共有資源を用いた処理を行なうかどうかを判断す
る。
【0054】共有資源の使用が許可されれば、共有資源
の使用許可を依頼したプログラムは、その資源を用いた
処理を開始することができる。
【0055】共有資源の使用が不許可の場合は、共有資
源の使用許可を依頼したプログラムは、その資源を用い
た処理を即座に開始せず、資源使用許可の通知が結合機
構からあるまで共有資源を使用する処理を保留する。
【0056】プログラムが使用を許可されている共有資
源の使用を終るときは、結合機構にその資源の使用を終
えることを伝える。
【0057】結合機構は、プログラムから共有資源の使
用終了を受け取ると、資源の使用状況を保持する表を、
プログラムが資源を使用していない状態にする、続いて
資源要求待ち行列が空でなければ先頭のエントリから順
に取り出し、エントリに設定されているプログラムの識
別子を資源使用状況に設定し、プログラムの識別子から
プログラムが実行されている計算機を求め、資源の使用
許可通知を送る。
【0058】共有資源の使用許可通知を受け取ったプロ
グラムは、保留していた処理を続行し、共有資源を使っ
て処理を行なう。共有資源の使用が終れば、結合機構に
その資源の使用を終えることを伝える。
【0059】このようにして、汎用並列コンピュータシ
ステムにおける共有資源の排他制御に必要な各計算機お
よび結合機構の処理を抑える事が可能な共有資源管理方
法を提供できる。
【0060】従来1共有資源あたり1個だったロックを
2個設ける(それぞれ第1のロック、第2のロックと呼
ぶ)。
【0061】共有資源を排他アクセスするプロセスは、
資源に対応する1個のロックを排他で確保していた従来
の処理に替えて、以下の処理を行なう:(1)共有資源
に対応する第1のロックを排他で確保し、(2)第2の
ロックを排他で確保し、(3)第1のロックを解放す
る。
【0062】共有資源を共有アクセスするプロセスは、
資源に対応する1個のロックを共有で確保していた従来
の処理に替えて、以下の処理を行なう:(1)共有資源
に対応する第1のロックを共有で確保し、(2)第2の
ロックを共有で確保し、(3)第1のロックを解放す
る。
【0063】このようにすると、共有と排他の属性を持
つスピン型ロックを用いた共有資源の排他制御におい
て、排他確保要求の沈み込みを防ぐことができる。
【0064】
【発明の実施の形態】以下本発明の実施の形態を、図を
用いて詳細に説明する。
【0065】最初に、図と本文で用いる表記法について
説明する。図の中の‘A.B’という表記は、‘テーブ
ルAに含まれる要素B’の意味である。同様に、‘A.
B[i]’は‘テーブルAに含まれるi番目の要素B’
の意味である。また、特にフローチャートにおいて、
‘A=B’はAにBを代入する事を、‘A==B’はA
とBを比較し等しいかどうか確かめる事を表している。
この表記法はすべての図および本文において共通であ
る。
【0066】本明細書では、結合機構を用いた並列コン
ピュータシステムで、計算機間で共有する資源を管理す
るために、結合機構に新たな種類の共用データオブジェ
クトを定義する。この共用データオブジェクトを本明細
書ではエンキュー構造体(ENQ構造体)と呼ぶ。EN
Q構造体は、特開平6−44195「結合式データ処理
システム用の方法と装置」に記載のあるリスト構造体や
キャッシュ構造体などと同様に、本明細書で新たに定義
するメッセージ・コマンドによって結合機構に作成さ
れ、それに含まれるオブジェクトを操作され、削除され
る。ENQ構造体に含まれるオブジェクトと、ENQ構
造体に含まれるオブジェクトを操作するメッセージ・コ
マンドの詳細な定義を与えることが、本明細書の目的で
ある。
【0067】図1は本発明が実施される並列計算機シス
テムの全体図である。各計算機120−1〜120−n
は、結合機構100に各システム間チャネル110−1
〜110−nを介してつながっている。
【0068】各計算機120−1〜120−nは、命令
処理装置(IP)121、メモリ122、入出力プロセ
ッサ(IOP)123、チャネル124から構成され、
結合機構100も各計算機120−1〜120−nと同
一のハードウェア構成であり、IP101、メモリ10
2、IOP103、チャネル104から構成されてい
る。IOPとは、チャネルを管理する専用プロセッサで
ある。
【0069】結合機構100は、各計算機120−1〜
120−nから各システム間チャネル110−1〜11
0−nを通じて送られてくるMCB130を受信し、そ
の内容に従ってあらかじめ決められたコマンドを実行す
る。MCB130はいくつかのオペランドから構成され
る。コマンドはMCB130に含まれるオペランドによ
り指定される。
【0070】MCB130を受信した結合機構100
は、受信したMCB130により指定されるコマンドを
実行し、その結果に応じてMRB140を作成し、MC
B130を送ってきた計算機120に送り返す。MRB
140もMCB130と同様にいくつかのオペランドか
ら構成される。
【0071】結合機構100がコマンドを実行すると
き、その結果起こる結合機構100の状態変化(例えば
保留されていた資源の確保要求が受け付けられたなど)
を特定の計算機120に伝える必要が生じることがあ
る。これも、特定のメモリブロックをシステム間チャネ
ル110を経由して、目的とする計算機120へ送るこ
とにより実現される。これをエンキュー通知(ENQ通
知)150と呼ぶ。ENQ通知150もMCB130な
どと同様に、いくつかのオペランドから構成される。
【0072】ENQ通知150を受け取った計算機12
0は、ENQ通知150のオペランドから結合機構10
0でどのような変化があったかを知ることが出来る。
【0073】図2と図3はENQ構造体200のオブジ
ェクト構成を説明する図である。
【0074】図2は一つのENQ構造体200に含まれ
るオブジェクトを示している。ENQ構造体200に
は、ユーザ管理テーブル210とエンキューセット(E
NQセット)220がそれぞれ一つずつ含まれる。この
他に、いくつかのエンキューエントリ(ENQE)30
0も含まれる。これらのオブジェクトは、すべてENQ
構造体200の作成時に、ENQ構造体200内に定義
される。
【0075】ユーザ管理テーブル210は、各行230
−1〜230−kから成り、i番目の行230は、ユー
ザ識別子(UID)iの示すプログラムに関する情報を
保持する。ただし、iは1からユーザ管理テーブル21
0の行数lの間である。行230は、資源通知トークン
240と計算機識別子250から成る。ここで資源通知
トークンとは、各計算機120−1〜120−n内で各
々定義されるENQ構造体200に固有の識別子であ
り、計算機識別子とは、結合機構100が各計算機12
0−1〜120−nを一意に指定するための識別子であ
る。ユーザ管理テーブル210の行数lは、ENQ構造
体200の作成時に指定される。
【0076】ENQセット220は、各資源260−1
〜260−lから成り、資源260は、資源状態(RS
T)270とエンキューリスト(ENQリスト)280
から成る。ENQセット220の行数kは、ENQ構造
体200の作成時に指定される。RST270は資源2
60がどのプログラムで使用されているか示すオブジェ
クトであり、ENQリスト280は資源260の解放を
待つプログラムの待ち行列を示している。ENQ構造体
200が作成された直後は、すべてのENQリスト28
0は空である。
【0077】一つのENQ構造体200に含まれるEN
QE300の個数は、ENQ構造体200にユーザ管理
テーブル210とENQセット220を定義した後に残
ったすべての記憶領域を用いて定義可能な範囲内で定義
される。
【0078】すべてのENQE300は、ENQ構造体
200が作成された直後は、どのENQリスト280に
も接続されていない。このようなENQE300のこと
をフリーENQE290と呼ぶ。
【0079】図3はENQE300に含まれるオブジェ
クトを示している。ENQE300はエンキューエント
リ識別子(ENQE.EEID)310とENQE.U
ID320と要求指示子(ENQE.REQ)330と
エンキュー通知番号(ENQE.ENEN)340から
成る。
【0080】ENQE.EEID310はENQE30
0が含まれるENQ構造体200内で一意に決まるEN
QE300の識別子である。これはREGEコマンド4
20によりENQE300が任意のENQリスト280
に接続されるときに、結合機構100により決められ
る。REGEコマンド420の詳細は後述する。
【0081】ENQE.UID320にはENQE30
0がENQリスト280に接続されるときに、REGE
コマンド420のMCB130に含まれるオペランドM
CB.UID530の値が代入される。
【0082】ENQE.REQ330にはENQE30
0がENQリスト280に接続されるときに、REGE
コマンド420のMCB130に含まれるオペランドM
CB.REQ560の値が代入される。
【0083】ENQE.ENEN340にはENQE3
00がENQリスト280に接続されるときに、REG
Eコマンド420のMCB130に含まれるオペランド
MCB.ENEN570の値が代入される。
【0084】図4は、本発明を実施した場合の結合機構
100による共有資源管理の概要を示している。
【0085】結合機構100にはENQ構造体200が
作成されている。
【0086】ENQ構造体200を操作するコマンドと
して、ENQ構造体割当てコマンド(AENQコマン
ド)400、ENQ構造体割当て解除コマンド(DEN
Qコマンド)440、ユーザ登録コマンド{REGUコ
マンド)410、資源確保コマンド(REGEコマン
ド)420、資源解放コマンド(FREEコマンド)4
30が定義される。これらのコマンドのうち、REGE
コマンド420とFREEコマンド430の処理の詳細
は後述する。
【0087】結合機構100内には複数のENQ構造体
200を定義出来る。ENQ構造体200を操作するコ
マンドは、MCB130に含まれるSIDオペランド
に、目的とするENQ構造体200のSIDを指定する
ことで、操作するENQ構造体200を指定する。
【0088】共有資源管理を開始するには、共有資源を
管理するENQ構造体200を結合機構100内に作成
するために、AENQコマンド400を指定したMCB
130を結合機構100に送る(これ以降、コマンドを
指定したMCB130を結合機構100に送ることを、
単にコマンドを送るという)。
【0089】結合機構100のメモリ102に、AEN
Qコマンド400で要求されたENQ構造体200を作
成するために充分な空き領域があり、AENQコマンド
400のMCB130に指定されたSIDが他の構造体
により使用されていなければ、結合機構100はENQ
構造体200をメモリ102に作成し、作成成功を示す
MRB140をAENQコマンド400を送ってきた計
算機120に送り返す。
【0090】結合機構100のメモリ102に、AEN
Qコマンド400で要求されたENQ構造体200を作
成するに足る空き領域がない場合、あるいは、AENQ
コマンド400のMCB130に指定されたSIDが他
の構造体によりすでに使用されている場合は、AENQ
コマンド400によるENQ構造体200の作成は失敗
し、作成失敗を示すMRB140をAENQコマンド4
00を送ってきた計算機120に送り返す。
【0091】AENQコマンドが成功すると、以降計算
機120上のプログラムは、AENQコマンドのMCB
130に指定されたSIDを指定して、ENQ構造体2
00を操作するコマンドが利用可能となる。
【0092】各計算機120−1〜120−nで実行さ
れる共有資源を用いるプログラムは、最初にENQ構造
体200にREGUコマンド410を用いてUIDの登
録を行なう。
【0093】共有資源を用いる計算機120上のプログ
ラムは、あらかじめそれぞれユニークなUIDを決めて
おき、REGUコマンド410により、共有資源を管理
しているENQ構造体200のユーザ管理テーブル21
0に、自分の使うUIDと、計算機120内でENQ構
造体200を識別するために定義される資源通知トーク
ン240を登録する。REGUコマンド410を受けた
結合機構100は、REGUコマンド410のMCB1
30に含まれるUIDからユーザ管理テーブル210の
行230を求め、REGUコマンド410を送ってきた
計算機120の計算機識別子を行230の計算機識別子
250に、REGUコマンド410のMCB130に含
まれる資源通知トークンを資源通知トークン240にそ
れぞれ保持する。これらの情報は、登録されたUIDに
対応するプログラムにENQ通知150を送るために使
われる。
【0094】REGUコマンド410コマンドが成功す
ると、REGUコマンド410によって指定されたUI
Dはそのプログラムに対応づけられ、以降ENQ構造体
200内でプログラムを管理するためにUIDが使われ
る。
【0095】各計算機120−1〜120−n上のプロ
グラムが共有資源を使用するときは、あらかじめ共有資
源に対応づけられたENQ構造体200の資源260に
含まれるRST270を、そのプログラムが資源260
を使用中である旨を示すように設定するために、REG
Eコマンド420を結合機構100に送る、プログラム
は、結合機構100から資源260の使用が許可された
のち、資源260に対応する共有資源を用いた処理を行
なうことができる。共有資源を用いた処理が終れば、プ
ログラムはFREEコマンド430により、共有資源に
対応する資源260の使用を終る旨を結合機構100に
伝える。REGEコマンド420とFREEコマンド4
30の処理、および、これらのコマンドを用いた資源の
排他管理手順については、後に詳細な説明を行なう。
【0096】資源260に含まれるRST270を、値
がaであるUIDに対応づけられたプログラムが使用中
である旨を示すように設定することを「aが資源260
を確保する」と呼ぶ。同様に、資源260に含まれるR
ST270を、値がaであるUIDに対応づけられたプ
ログラムが使用中でない旨を示すように設定することを
「aが資源260を解放する」と呼ぶ。
【0097】共有資源を管理する必要がなくなったら、
共有資源を管理していたENQ構造体200を結合機構
100内から削除するために、結合機構100にDEN
Qコマンド440を送る。
【0098】結合機構100はDENQコマンド440
を受け取ると、DENQコマンド440のMCB130
に指定されたSIDを持つENQ構造体200をメモリ
102から削除し、ENQ構造体200が使っていた記
憶領域を空き領域に戻す。
【0099】図4では、すべてのコマンドはそれぞれ一
つしか記していないが、AENQコマンド400、DE
NQコマンド440は共有資源管理の開始・終了毎に、
REGUコマンド410はENQ構造体200の管理す
る共有資源を用いるプログラムが起動される毎に、RE
GEコマンド420、FREEコマンド430はプログ
ラムが資源を用いた処理を行なう毎に発行されるコマン
ドであることを理解されたい。
【0100】図5、図6、図7を用いてREGEコマン
ド420の説明を行なう。
【0101】図5はREGEコマンド420で用いられ
るMCB130のフォーマットである。
【0102】命令コード(MCB.CC)510はコマ
ンドを示すコードであり、このMCB130により起動
されるコマンドがREGEコマンド420であることを
示す。
【0103】MCB.SID520はREGEコマンド
420で操作するENQ構造体200のSIDを指定す
る。
【0104】MCB.UID530はREGEコマンド
420を発行したプログラムのUIDである。
【0105】エンキューカウント(MCB.ENQC)
540はMCB500に含まれるMCB.ENQN55
0、MCB.REQ560、MCB.ENEN570の
組の数である。
【0106】エンキュー番号(MCB.ENQN)55
0はENQセット220の資源260を指定するオペラ
ンドである。
【0107】リクエストタイプ(MCB.REQ)56
0は共有資源を排他アクセスするか、共有アクセスする
かを指定するオペランドである。
【0108】エンキュー通知エントリ番号(MCB.E
NEN)570は資源の解放を知らせるENQ通知15
0を送るときに使われるENENを指定するためのオペ
ランドである。
【0109】図6はREGEコマンド420で用いられ
るMRB140のフォーマットである。
【0110】応答コード(MRB.RC)610はRE
GEコマンド420の実行結果を示すコードである。
【0111】MRB.ENQC620はMRB600に
含まれる有効なMRB.EEID630の個数である。
【0112】MRB.EEID630はREGEコマン
ド420において作成されたENQE300のEEID
である。資源確保に失敗したときのみENQE300が
作成され、有効なENQE.EEID310が代入され
る。資源確保に成功し、ENQE300が作成されなか
った場合は0が代入される。
【0113】図5に記載のMCB.ENQN550、M
CB.REQ560、MCB.ENEN570、図6に
記載のMRB.EEID630は、添字iでそれぞれ対
応づけられていることを理解されたい。
【0114】図7はREGEコマンド420のフローチ
ャートである。
【0115】REGEコマンド420を受けた結合機構
100は、まずMCB500に含まれる各パラメタの妥
当性をチェックする(ステップ700)。これには、例
えばAENQコマンド400によって作成されていない
ENQ構造体200のSIDをMCB.SID520を
指定した場合や、REGUコマンド410によって登録
されていないUIDをMCB.UID530に指定した
場合などが含まれる。
【0116】MCB500に含まれるパラメタに、一つ
でも妥当性を欠くものがあれば(ステップ701が失
敗)、パラメタエラーのMRB140を作成し(ステッ
プ702)、ステップ703へ飛ぶ。
【0117】ステップ701が成功すれば、内部変数i
とMRB.ENQC620をそれぞれ0に初期化する
(ステップ704)。
【0118】次に、MCB.ENQN[i]550−i
の示す資源260のRST270を調べ、MCB.UI
D530が示すプログラムがMCB.REQ[i]56
0−iに示される共有・排他いずれかの属性で資源26
0を使用できるかどうか調べる(ステップ705)。
【0119】MCB.ENQN[i]550−iの示す
資源260をMCB.UID530が確保できれば(ス
テップ706が成功)、資源260のRST270にM
CB.UID530が使用中である旨を示す値を設定
し、MRB.EEID[i]630−iに0を代入し
(ステップ707)、MRB.ENQC620に1を加
え(ステップ708)、ステップ709へ飛ぶ。
【0120】ステップ706が失敗すれば、ENQ構造
体200にあるフリーENQE290を一つ確保する
(ステップ710)。もし、フリーENQE290を確
保できなければ(ステップ711で失敗)、REGEコ
マンド420の処理中にENQリスト280につないだ
すべてのENQE300を外し、外したENQE300
を再びフリーENQE290に戻し(ステップ71
2)、MRB.RC610に8を代入し(ステップ71
3)、ステップ703へ飛ぶ。
【0121】フリーENQE290を確保できれば(ス
テップ711で成功)、MCB.ENQN[i]550
−iの示す資源260のENQリスト280の末尾に確
保したENQE300を接続し(ステップ714)、E
NQE300のENQE.UID320にMCB.UI
D530を、ENQE.REQ330にMCB.REQ
[i]560−iを、ENQE.ENEN340にMC
B.ENEN[i]570−iをそれぞれ代入する(ス
テップ715)。また、MRB.EEID[i]630
−iにENQE.EEID310を代入する(ステップ
716)。
【0122】ステップ709では、次のMCB.ENQ
N550、MCB.REQ560、MCB.ENEN5
70の組に対して処理を行なうために、内部変数iに1
を加える。
【0123】ステップ717で内部変数iとMCB.E
NQC540とを比較し、MCB.ENQC540の方
が大あるいは等しければ(ステップ717で比較成
功)、ステップ705へ戻る。内部変数iの方が大きけ
れば(ステップ717で比較失敗)、ステップ718へ
進む。
【0124】ステップ718でMCB.ENQC540
とMRB.ENQC620を比較する。これらが等しけ
れば(ステップ718で比較成功)、MRB.RC61
0に0を代入(ステップ719)。さもなくば(ステッ
プ718で比較失敗)、MRB.RC610に2を代入
(ステップ720)。
【0125】ステップ703で、REGEコマンド42
0を発行した計算機120にMRB140を返送する。
【0126】図8、図9、図10を用いてFREEコマ
ンド430の説明を行なう。
【0127】図8はFREEコマンド430で用いられ
るMCB130のフォーマットである。
【0128】MCB.CC510はコマンドを示すコー
ドであり、このMCB130により起動されるコマンド
がFREEコマンド430であることを示す。
【0129】MCB.SID820はFREEコマンド
430で操作するENQ構造体200のSIDを指定す
る。
【0130】MCB.UID830はFREEコマンド
430を発行したプログラムのUIDである。
【0131】MCB.ENQN840はENQセット2
20の資源260を指定するオペランドである。
【0132】図9はFREEコマンド430で用いられ
るMRB140のフォーマットである。
【0133】MRB.RC910はFREEコマンド4
30の実行結果を示すコードである。
【0134】MRB.RST920はFREEコマンド
430のMCB.ENQN840が示す資源260に含
まれるRST270である。
【0135】図10はFREEコマンド430のフロー
チャートである。
【0136】FREEコマンド430を受けた結合機構
100は、まずMCB800に含まれる各パラメタの妥
当性をチェックする(ステップ1000)。これには、
例えばAENQコマンド400によって作成されていな
いENQ構造体200のSIDをMCB.SID820
を指定した場合や、REGUコマンド410によって登
録されていないUIDをMCB.UID830に指定し
た場合などが含まれる。
【0137】MCB800に含まれるパラメタに、一つ
でも妥当性を欠くものがあれば(ステップ1001が失
敗)、パラメタエラーのMRB140を作成し(ステッ
プ1002)、FREEコマンド430を発行した計算
機120にMRB140を返送し(ステップ100
3)、処理を終える。
【0138】ステップ1001が成功すれば、MCB.
ENQN840の示す資源260をMCB.UID83
0の示すプログラムが確保しているかチェックする(ス
テップ1004)。資源260をMCB.UID830
の示すプログラムが確保していなければ(ステップ10
04で失敗)、MRB.RC910に2を、MRB.R
ST920に資源260に含まれるRST270を代入
し(ステップ1005)、ステップ1003へ飛ぶ。
【0139】資源260をMCB.UID830の示す
プログラムが確保していれば(ステップ1004で成
功)、資源260を解放し(ステップ1006)、MR
B.RC910に0を代入し(ステップ1007)、F
REEコマンド430を発行した計算機120にMRB
140を返送する(ステップ1008)。
【0140】次に、資源260に含まれるENQリスト
280にENQE300が接続されているかどうかチェ
ックする(ステップ1009)。ENQリスト280が
空ならば(ステップ1009でチェック失敗)、何もせ
ず処理を終える。
【0141】ENQリスト280にENQE300が接
続されていれば(ステップ1009でチェック成功)、
ENQリスト280の先頭にあるENQE300のEN
QE.UID320が示すプログラムのために資源26
0をENQE.REQ330に示される共有・排他いず
れかの属性で確保出来るか試みる(ステップ101
0)。
【0142】ENQE.UID320が資源260を確
保できなければ(ステップ1011が失敗)、何もせず
処理を終える。
【0143】ENQE.UID320が資源260を確
保できれば(ステップ1011が成功)、ENQE.U
ID320からユーザ管理テーブル210の行230を
求め、行230に含まれる計算機識別子250を持つ計
算機120に対して、行230に登録されている資源通
知トークン240とENQE.ENEN340を含んだ
ENQ通知150を送る(ステップ1012)。ENQ
通知150を受けたプログラムは、ENQ通知150に
含まれる資源通知トークンとENENから、どのENQ
構造体200に含まれる資源260を確保できたかを知
る事ができ、資源260に対応する共有資源を用いた処
理を開始する事が出来る。
【0144】ステップ1013で先頭のENQE300
をENQリスト280から外し、フリーENQE290
とし(ステップ1013、ステップ1009に戻る。
【0145】図11に、これまで述べてきたコマンドや
オブジェクトを用いて、各計算機120−1〜120−
n上のプログラム間で共有する資源を管理する方法を示
す。計算機A上のプログラム(以下プログラムA115
0とする)と計算機B上のプログラム(以下プログラム
B1160とする)が同じ資源をA→Bの順序で要求し
た場合の流れ図である。なお、図4において、ENQ構
造体200の作成やUIDの登録などはすでに示してあ
るので、図11ではその部分は割愛してある。また、説
明を簡単にするため、両プログラムとも共有資源を排他
属性で確保する元のとする。
【0146】まず、プログラムA1150が共有資源を
使用するために、あらかじめ共有資源に対応づけられた
資源260の確保を試みる。
【0147】プログラムA1150はあらかじめ登録し
たプログラムA1150のUIDをMCB.UID53
0に、資源260のENQNをMCB.ENQN550
に、資源260の含まれるENQ構造体200のSID
をMCB.SID520に指定し、結合機構100に対
してREGEコマンド420を発行する(ステップ11
00)。
【0148】この時点では資源は未使用なので、結合機
構100はMCB.ENQN550で指定された資源2
60のRST270にMCB.UID530が使用中で
ある旨設定し、(ステップ1101)、MRB.RC6
10に0を代入したMRB140を返送する(ステップ
1102)。これによりプログラムA1150は資源2
60の使用が許可されたことを知り、対応する共有資源
を用いた処理を開始する。
【0149】続いてプログラムB1160が同じ共有資
源を使用するために、プログラムA1150と同じSI
DとENQNをMCB.SID520とMCB.ENQ
N550に指定し、MCB.UID530にはあらかじ
め登録したプログラムB1160のUIDを指定し、R
EGEコマンド420を結合機構100に対して発行す
る(ステップ1103)。しかし、資源260はプログ
ラムA1150が使用しているので、結合機構100は
資源260のENQリスト280(この例では空であ
る)の末尾にENQE300を接続し(ステップ110
4)、ENQE300のENQE.UID320にMC
B.UID530を、ENQE.REQ330にMC
B.REQ560を、ENQE.ENEN340にMC
B.ENEN570をそれぞれ代入し、MRB.RC6
10に2を代入したMRB140を返送する(ステップ
1105)。これによりプログラムB1160は資源は
他のプログラムで使用中であることを知り、資源を用い
た処理を一時保留する。
【0150】プログラムA1150は資源を用いた処理
を終えた後、その旨を伝えるため結合機構100に対し
てFREEコマンド430を発行する(ステップ110
6)。FREEコマンド430を受けた結合機構100
は、FREEコマンド430のMCB130に指定され
た資源260を解放し(ステップ1107)、MRB.
RC910に0を代入したMRB140を返送する(ス
テップ1108)。
【0151】更に結合機構100は、資源260に含ま
れるENQリスト280の先頭のENQE300を取り
出し(ステップ1109)、ENQE300にあるEN
QE.UID320、ENQE.REQ330を用いて
資源260のRST270にENQE.UID320が
使用中である旨設定する(ステップ1110)。また、
その旨をプログラムB1160に通知するため、ENQ
E.UID320の示すユーザ管理テーブル210の行
230から計算機識別子250と資源通知トークン24
0を取得し、計算機識別子250を持つ計算機(この例
では計算機B)に対して、資源通知トークン240とE
NQE.ENEN340にあるENENを含んだENQ
通知150を送出する(ステップ1111)。プログラ
ムB1160はENQ通知150に含まれる資源通知ト
ークンとENENから、どの資源260の使用が許可さ
れたかを知り、共有資源を用いた処理を開始することが
出来る。
【0152】最後にプログラムB1160は共有資源を
用いた処理を終えた後、その旨を伝えるため結合機構1
00に対してFREEコマンド430を発行する(ステ
ップ1112)。FREEコマンド430を受けた結合
機構100は、FREEコマンド430のMCB130
に指定された資源260を未使用状態に戻し(ステップ
1113)、MRB.RC910に0を代入したMRB
140を返送する(ステップ1114)。
【0153】REGEコマンド420を発行したときに
所望の資源の確保が成功しても、失敗しても、各計算機
120−1〜120−n上のプログラムはそれ以上のコ
マンドを結合機構100に対して送る必要がないこと、
また、結合機構100がFREEコマンド430を契機
にして、能動的にENQ通知150を送ることにより、
各計算機120−1〜120−nはREGEコマンド4
20で資源確保が失敗した場合にも資源260の解放を
監視することなく他の処理を進めることが出来ること、
および、FREEコマンド430ではENQE300を
登録した計算機120のみにENQ通知150を送るこ
とにより、結合機構100で行なう処理が最小限に抑え
られていることが理解されよう。計算機120の数、お
よび計算機120上のプログラムの数が増えても同様の
手順で処理可能である。
【0154】図14は本発明における資源管理テーブル
の例である。
【0155】資源管理テーブル1400は各行1410
−1〜1410−iを持ち、各行1410−1〜141
0−iは資源ポインタ1450により各共有資源142
0−1〜1420−iに対応づけられている。それぞれ
の行1410には、第1のロック1430、第2のロッ
ク1440が含まれる。この第1のロック1430、第
2のロック1440は、図12にあるロック1230
と、各々は全く同一のものである。
【0156】図15は本発明を実施した場合の資源排他
処理の流れ図である。プロセスA、B、CがA→B→C
の順番で一つの共有資源1420を共有、排他、共有で
要求した時のロック確保状態を示す流れ図ある。
【0157】プロセスAは共有資源1420に共有アク
セスするために、まず対応する第1のロック1430を
共有で確保要求する(ステップ1500)。第1のロッ
ク1430はこの時点ではどのプロセスからも確保され
ていないので、すぐにプロセスAに共有で確保される
(ステップ1501)。
【0158】次にプロセスAは第2のロック1440を
同じく共有で確保要求する(ステップ1502)。第2
のロック1440はやはりこの時点ではどのプロセスか
らも確保されていないので、すぐにプロセスAに共有で
確保される(ステップ1503)。
【0159】次にプロセスAは第1のロック1430を
解放する(ステップ1504)。この後プロセスAは共
有資源1420を共有でアクセスし、必要な処理を行な
う(ステップ1505)。
【0160】さて、プロセスAがステップ1505を実
行中に、プロセスBにおいて共有資源1420への排他
アクセスが必要になったとする。そのためにプロセスB
は対応する第1のロック1430を排他で確保要求する
(ステップ1507)。第1のロック1430はこの時
点ではどのプロセスからも確保されていないので、すぐ
にプロセスBに排他で確保される(ステップ150
8)。
【0161】次にプロセスBは第2のロック1440を
同じく排他で確保要求する(ステップ1509)。しか
し、プロセスAがステップ1505を実行中であるの
で、第2のロック1440はプロセスAに共有で確保さ
れており、プロセスBの排他確保要求は受け付けられな
い。プロセスBは第2のロック1440が解放されるま
でスピンし続ける(ステップ1510)。
【0162】このとき(すなわちプロセスBがステップ
1510を実行している時)、プロセスCにおいて共有
資源1420への共有アクセスが必要になったとする。
そのためにプロセスCは対応する第1のロック1430
を共有で確保要求する(ステップ1515)。しかし、
プロセスBがステップ1510を実行中であるので、第
1のロック1430はプロセスBに排他で確保されてお
り、プロセスCの共有確保要求は受け付けられない。プ
ロセスCは第1のロック1430が解放されるまでスピ
ンし続ける(ステップ1516)。
【0163】続いて、プロセスAにおいてステップ15
05が終り、第2のロック1440を解放したとする
(ステップ1506。図15中の時刻t21)。する
と、第2のロック1440の解放を待ってスピンしてい
たプロセスBはこれを排他で確保できる(ステップ15
11)。なぜなら、この時第2のロック1440の解放
を待っているのはプロセスBのみだからである。
【0164】このように、プロセスA、B、CがA→B
→Cの順番で一つの共有資源を共有、排他、共有で要求
したときに、本発明の方法によれば、後着であるプロセ
スCの共有要求の追い越しによる先着であるプロセスB
の排他要求の沈み込みが起こらない。
【0165】その後、プロセスBは第1のロック143
0を解放する(ステップ1512。図15中の時刻t2
2)。この時点でプロセスCは第1のロック1430を
共有で確保できる(ステップステップ1517)。続い
てプロセスCは第2のロック1440をやはり共有で確
保要求するが(ステップ1520)、この時第2のロッ
ク1440はすでにプロセスBに排他で確保されてお
り、プロセスCの共有確保要求は受け付けられない。プ
ロセスCは第2のロック1440が解放されるまでスピ
ンし続ける(ステップ1519)。
【0166】プロセスBはステップ1512の直後か
ら、共有資源1420を排他でアクセスし、必要な処理
を行なう(ステップ1513)。
【0167】その後、プロセスBにおいてステップ15
13が終り、第2のロック1440を解放したとする
(ステップ1514。図15中の時刻t23)。する
と、第2のロック1440の解放を待ってスピンしてい
たプロセスCはこれを共有で確保できる(ステップ15
20)。そしてプロセスCは第1のロック1430を解
放し(ステップ1521)共有資源1420を用いた処
理を行なう。
【0168】この説明では便宜上共有資源にアクセスす
るプロセスは3つとしたが、本発明の方法は別にプロセ
スを3つに限定しているわけではない。いくつあっても
同様な処理手順で、後から出された共有要求に排他要求
が追い越されることによる沈み込みを回避することが可
能である。
【0169】
【発明の効果】結合機構を用いた並列コンピュータシス
テムで、計算機間で共有する資源の管理方法において、
資源確保が失敗したときには資源の待ち行列に計算機を
登録し、かつ、資源の待ち行列を用いて他者の資源解放
通知を結合機構が能動的に必要数分だけ行なうことによ
り、計算機、結合機構の両者の共有資源管理にともなう
負荷を軽減し、システム全体の性能を向上させる。
【0170】共有と排他の属性を持つスピン型ロックを
用いる共有資源の排他制御において、1共有資源あたり
2個のロックを用いることにより、排他要求の沈み込を
抑え、公平な資源管理を可能とする。
【図面の簡単な説明】
【図1】本発明の実施されるシステムの全体図である。
【図2】ENQ構造体の説明図である。
【図3】ENQEの説明図である。
【図4】ENQ構造体を用いた共有資源管理の概要の説
明図である。
【図5】REGEコマンドのMCBの説明図である。
【図6】REGEコマンドのMRBの説明図である。
【図7】REGEコマンドの流れ図である。
【図8】FREEコマンドのMCBの説明図である。
【図9】FREEコマンドのMRBの説明図である。
【図10】FREEコマンドの流れ図である。
【図11】本発明を適用した場合の資源排他方法の流れ
図である。
【図12】従来の方法による資源管理用テーブルの一例
である。
【図13】従来の方法による資源管理方法の流れ図であ
る。
【図14】本発明を適用した場合の資源管理用テーブル
の一例である。
【図15】本発明を適用した場合の資源管理方法の流れ
図である。
【符号の説明】
100:結合機構、101:結合機構の命令処理装置、
102:結合機構のメモリ、120−n:計算機、12
1−n:計算機の命令処理装置、122−n:計算機の
メモリ、200:エンキュー構造体、210:ユーザ管
理テーブル、220:エンキューセット、300:エン
キューエントリ、420:資源確保コマンド、430:
資源解放コマンド、150:エンキュー通知。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 長須賀 弘文 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 (72)発明者 櫻庭 健年 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】複数の計算機が結合機構に接続されている
    並列計算機システムにおける共有資源管理方法であっ
    て、結合機構内に前記計算機が共有する共有資源が使用
    中か未使用かを示す使用状態と使用待ち行列を有し、前
    記計算機上で動作している共有資源をアクセスするプロ
    グラムは共有資源を使用する前に結合機構に当該共有資
    源の状態を問い合わせ、前記共有資源が未使用ならば当
    該共有資源の使用権を前記プログラムに設定し、前記共
    有資源が使用中ならば当該共有資源の使用待ち行列の末
    尾に当該プログラムを加え、前記共有資源の使用者が当
    該共有資源を解放したら、当該共有資源の使用待ち行列
    の先頭のプログラムに当該共有資源の使用権を移し、そ
    の旨を当該プログラムに通知する事を特徴とする共有資
    源管理方法。
  2. 【請求項2】前記請求項1の共有資源管理方法におい
    て、結合機構に共有資源が使用中か未使用かを示す使用
    状態と使用待ち行列を含むオブジェクトを設け、共有資
    源を用いるプログラムを登録するオブジェクトを設け、
    共有資源の使用状況と使用要求順序を、これらのオブジ
    ェクトを用いて管理することを特徴とする共有資源管理
    方法。
  3. 【請求項3】前記請求項1の共有資源管理方法におい
    て、結合機構に共有資源確保コマンドを設け、プログラ
    ムが共有資源を確保する場合にこのコマンドを結合機構
    に発行し、結合機構はこのコマンドを受信すると、共有
    資源が未使用ならば当該共有資源の使用権を設定し、共
    有資源が使用中ならば当該共有資源の使用待ち行列の末
    尾に当該プログラムを加えることを特徴とする共有資源
    管理方法。
  4. 【請求項4】前記請求項1の共有資源管理方法におい
    て、結合機構に共有資源解放コマンドを設け、プログラ
    ムが確保している共有資源を解放する場合にこのコマン
    ドを結合機構に発行し、結合機構はこのコマンドを受信
    すると、共有資源を未使用状態に戻し、さらに、当該資
    源の使用待ち行列の先頭のプログラムに当該共有資源の
    使用権を移し、その旨を当該プログラムにのみ通知する
    ことを特徴とする共有資源管理方法。
  5. 【請求項5】前記請求項1の共有資源管理方法におい
    て、結合機構に共有資源のユーザ登録コマンドを設け、
    プログラムは共有資源を使用する前にこのコマンドを結
    合機構に発行し、結合機構はこのコマンドを受信する
    と、当該プログラムを共有資源のユーザとして登録する
    ことを特徴とする共有資源管理方法。
  6. 【請求項6】前記請求項1の共有資源管理方法におい
    て、結合機構に共有資源が使用中か未使用かを示す使用
    状態と使用待ち行列を含むオブジェクトを作成するコマ
    ンドと、削除するコマンドを設けることを特徴とする共
    有資源管理方法。
  7. 【請求項7】複数のプロセスが並列に動作する計算機環
    境において資源排他処理に用いられるスピン型ロックに
    おいて、資源管理のためのロックを共有資源一つにつき
    二つ用意し、資源を排他で確保するプロセスは当該資源
    に対応する第1のロックを排他で確保し、当該資源に対
    応する第2のロックを排他で確保し、前記第1のロック
    を解放し、資源を共有で確保するプロセスは当該資源に
    対応する第1のロックを共有で確保し、当該資源に対応
    する第2のロックを共有で確保し、前記第1のロックを
    解放し、第2のロックを確保したのち当該資源に対して
    それぞれ排他、共有のいずれかでアクセスし、資源への
    アクセスが必要なくなれば、排他、共有いずれの場合も
    第2のロックを解放することを特徴とする共有資源管理
    方法。
JP9229127A 1997-08-26 1997-08-26 共有資源管理方法 Pending JPH1165863A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP9229127A JPH1165863A (ja) 1997-08-26 1997-08-26 共有資源管理方法
US09/139,565 US6105098A (en) 1997-08-26 1998-08-25 Method for managing shared resources

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9229127A JPH1165863A (ja) 1997-08-26 1997-08-26 共有資源管理方法

Publications (1)

Publication Number Publication Date
JPH1165863A true JPH1165863A (ja) 1999-03-09

Family

ID=16887182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9229127A Pending JPH1165863A (ja) 1997-08-26 1997-08-26 共有資源管理方法

Country Status (2)

Country Link
US (1) US6105098A (ja)
JP (1) JPH1165863A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG97863A1 (en) * 1999-03-25 2003-08-20 Ibm Interface system and method for asynchronously updating a shared resource
JP2013513162A (ja) * 2009-12-04 2013-04-18 マイクロソフト コーポレーション 分散された永続性インスタンスに対するロックの解決
JP2015022626A (ja) * 2013-07-22 2015-02-02 富士通株式会社 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760746B1 (en) 1999-09-01 2004-07-06 Eric Schneider Method, product, and apparatus for processing a data request
US6944658B1 (en) * 1997-07-25 2005-09-13 Eric Schneider Content notification method, product, and apparatus
US6738974B1 (en) * 1998-09-10 2004-05-18 International Business Machines Corporation Apparatus and method for system resource object deallocation in a multi-threaded environment
US6910210B1 (en) * 1998-11-24 2005-06-21 Microsoft Corp. System and method for terminating applications
US6675175B2 (en) * 1999-02-19 2004-01-06 International Business Machines Corporation Method and system for sharing catalogs in a multiprocessing system utilizing a shared processor
US9141717B2 (en) 1999-03-22 2015-09-22 Esdr Network Solutions Llc Methods, systems, products, and devices for processing DNS friendly identifiers
USRE43690E1 (en) 1999-03-22 2012-09-25 Esdr Network Solutions Llc Search engine request method, product, and apparatus
US8037168B2 (en) 1999-07-15 2011-10-11 Esdr Network Solutions Llc Method, product, and apparatus for enhancing resolution services, registration services, and search services
US6338082B1 (en) 1999-03-22 2002-01-08 Eric Schneider Method, product, and apparatus for requesting a network resource
US7188138B1 (en) 1999-03-22 2007-03-06 Eric Schneider Method, product, and apparatus for resource identifier registration and aftermarket services
US6490689B1 (en) * 1999-06-21 2002-12-03 International Business Machines Corporation Managing instruction execution in order to accommodate a physical clock value in a clock representation
USRE44207E1 (en) 1999-09-01 2013-05-07 Esdr Network Solutions Llc Network resource access method, product, and apparatus
US6658558B1 (en) 2000-03-30 2003-12-02 International Business Machines Corporation Branch prediction circuit selector with instruction context related condition type determining
US6766442B1 (en) 2000-03-30 2004-07-20 International Business Machines Corporation Processor and method that predict condition register-dependent conditional branch instructions utilizing a potentially stale condition register value
US6678820B1 (en) * 2000-03-30 2004-01-13 International Business Machines Corporation Processor and method for separately predicting conditional branches dependent on lock acquisition
US7284244B1 (en) * 2000-05-02 2007-10-16 Microsoft Corporation Resource manager architecture with dynamic resource allocation among multiple configurations
US7058947B1 (en) 2000-05-02 2006-06-06 Microsoft Corporation Resource manager architecture utilizing a policy manager
US6799208B1 (en) 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US7137119B1 (en) * 2000-05-02 2006-11-14 Microsoft Corporation Resource manager architecture with resource allocation utilizing priority-based preemption
US7111297B1 (en) 2000-05-02 2006-09-19 Microsoft Corporation Methods and architectures for resource management
US7024668B2 (en) * 2000-05-15 2006-04-04 Matsushita Electric Industrial Co., Ltd. Application execution apparatus and method
US8458754B2 (en) 2001-01-22 2013-06-04 Sony Computer Entertainment Inc. Method and system for providing instant start multimedia content
US6988145B2 (en) * 2001-01-24 2006-01-17 International Business Machines Corporation Method, system, and program for managing client access to a shared resource
US20020133530A1 (en) * 2001-03-15 2002-09-19 Maarten Koning Method for resource control including resource stealing
US8495131B2 (en) * 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7139855B2 (en) * 2003-04-24 2006-11-21 International Business Machines Corporation High performance synchronization of resource allocation in a logically-partitioned system
US7289992B2 (en) * 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US20040250259A1 (en) * 2003-06-04 2004-12-09 Johannes Lauterbach System and method for incremental object generation
US20040249940A1 (en) * 2003-06-04 2004-12-09 Sohn Matthias Eberhard System and method for asynchronous resource management
US20040250257A1 (en) * 2003-06-04 2004-12-09 Oleg Koutyrine System and method for generator state object validation
US20040250258A1 (en) * 2003-06-04 2004-12-09 Raghuvir Yuvaraj Athur System and method for rule based object navigation
US7383368B2 (en) * 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US20050081204A1 (en) * 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
US20050108684A1 (en) * 2003-11-14 2005-05-19 Sohn Matthias E. Method and system for generating an application object repository from application framework metadata
WO2005103897A1 (en) * 2004-04-23 2005-11-03 Matsushita Electric Industrial Co., Ltd. Network resource management device
US6987961B1 (en) * 2004-06-28 2006-01-17 Neomagic Corp. Ethernet emulation using a shared mailbox between two processors in a feature phone
US8837528B2 (en) 2005-02-25 2014-09-16 Sony Computer Entertainment America Llc Data distribution by proxy
US7346767B2 (en) * 2005-05-02 2008-03-18 Microsoft Corporation Method and apparatus for managing resource access in configuring a plurality of computers
US20070094669A1 (en) * 2005-10-25 2007-04-26 Microsoft Corporation Shared resource acquisition
US7752367B2 (en) * 2005-12-22 2010-07-06 International Business Machines Corporation File-based access control for shared hardware devices
JP2007264794A (ja) * 2006-03-27 2007-10-11 Fujitsu Ltd 並列分散処理プログラム及び並列分散処理システム
FR2919084A1 (fr) * 2007-07-17 2009-01-23 Open Plug Sa Procede de gestion de ressources partagees d'un systeme informatique et module superviseur de mise en oeuvre,ainsi que le systeme informatique muni d'un tel module
US9483405B2 (en) 2007-09-20 2016-11-01 Sony Interactive Entertainment Inc. Simplified run-time program translation for emulating complex processor pipelines
US20090193108A1 (en) * 2008-01-29 2009-07-30 George Shin Critical Resource Management
US9128883B2 (en) 2008-06-19 2015-09-08 Commvault Systems, Inc Data storage resource allocation by performing abbreviated resource checks based on relative chances of failure of the data storage resources to determine whether data storage requests would fail
US8352954B2 (en) 2008-06-19 2013-01-08 Commvault Systems, Inc. Data storage resource allocation by employing dynamic methods and blacklisting resource request pools
US8424010B2 (en) * 2010-01-21 2013-04-16 Mckesson Financial Holdings Shared resource management
US8341643B2 (en) * 2010-03-29 2012-12-25 International Business Machines Corporation Protecting shared resources using shared memory and sockets
US8433759B2 (en) 2010-05-24 2013-04-30 Sony Computer Entertainment America Llc Direction-conscious information sharing
US9256600B2 (en) * 2012-04-13 2016-02-09 D2L Corporation Method and system for electronic content locking
US9083658B2 (en) 2012-09-24 2015-07-14 Steelseries Aps Method and apparatus for delegating resources between devices
US8920234B2 (en) 2012-12-06 2014-12-30 Steelseries Aps Method and apparatus for presenting information associated with a game
US11216315B2 (en) * 2018-02-21 2022-01-04 Rubrik, Inc. Distributed semaphore with a different keys to reduce contention for dynamic reservation of disk space
CN111597034B (zh) * 2019-02-21 2023-04-28 阿里巴巴集团控股有限公司 处理器资源调度方法、装置、终端设备及计算机存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0357768B1 (en) * 1988-03-14 1994-03-09 Unisys Corporation Record lock processor for multiprocessing data system
US5317739A (en) * 1992-03-30 1994-05-31 International Business Machines Corp. Method and apparatus for coupling data processing systems
CA2086691C (en) * 1992-03-30 1997-04-08 David A. Elko Communicating messages between processors and a coupling facility
US5423044A (en) * 1992-06-16 1995-06-06 International Business Machines Corporation Shared, distributed lock manager for loosely coupled processing systems
US5392433A (en) * 1992-09-25 1995-02-21 International Business Machines Corporation Method and apparatus for intraprocess locking of a shared resource in a computer system
US5832484A (en) * 1996-07-02 1998-11-03 Sybase, Inc. Database system with methods for parallel lock management
US5842015A (en) * 1996-07-26 1998-11-24 Hewlett-Packard Company System and method for real-time control of hardware in a multiprocessing environment

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG97863A1 (en) * 1999-03-25 2003-08-20 Ibm Interface system and method for asynchronously updating a shared resource
JP2013513162A (ja) * 2009-12-04 2013-04-18 マイクロソフト コーポレーション 分散された永続性インスタンスに対するロックの解決
US9348659B2 (en) 2009-12-04 2016-05-24 Microsoft Technology Licensing, Llc Lock resolution for distributed durable instances
JP2015022626A (ja) * 2013-07-22 2015-02-02 富士通株式会社 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム

Also Published As

Publication number Publication date
US6105098A (en) 2000-08-15

Similar Documents

Publication Publication Date Title
JPH1165863A (ja) 共有資源管理方法
US5161227A (en) Multilevel locking system and method
US6412034B1 (en) Transaction-based locking approach
US6182108B1 (en) Method and system for multi-threaded processing
US6622155B1 (en) Distributed monitor concurrency control
US4399504A (en) Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
US4480304A (en) Method and means for the retention of locks across system, subsystem, and communication failures in a multiprocessing, multiprogramming, shared data environment
US6205466B1 (en) Infrastructure for an open digital services marketplace
US6105049A (en) Resource lock/unlock capability in multithreaded computer environment
US6687709B2 (en) Apparatus for database record locking and method therefor
US6105085A (en) Lock mechanism for shared resources having associated data structure stored in common memory include a lock portion and a reserve portion
JP2566717B2 (ja) 条件付きオペレーション提供装置及び方法
EP0747832A2 (en) Customer information control system and method in a loosely coupled parallel processing environment
JPH05134915A (ja) 共用データシステムにおけるデータ資源のロツキング方法及びシステム間のデータロツク管理方法
US7770177B2 (en) System for memory reclamation based on thread entry and release request times
JPH07191944A (ja) 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
US20030074483A1 (en) Method and apparatus for coordination of client/server processes
US6865741B1 (en) Determining completion of transactions processing in a dynamically changing network
JPH1115793A (ja) 資源の保全性を保護する方法
US8495642B2 (en) Mechanism for priority inheritance for read/write locks
US6105050A (en) System for resource lock/unlock capability in multithreaded computer environment
CA2176996A1 (en) Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment
US5630133A (en) Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment
US9274819B2 (en) Performing garbage collection using a virtual thread in operating system without kernel thread support
CN112685142A (zh) 分布式数据处理***