JPH05257902A - 処理プログラム・モードにおけるロック獲得処理方式 - Google Patents

処理プログラム・モードにおけるロック獲得処理方式

Info

Publication number
JPH05257902A
JPH05257902A JP4051948A JP5194892A JPH05257902A JP H05257902 A JPH05257902 A JP H05257902A JP 4051948 A JP4051948 A JP 4051948A JP 5194892 A JP5194892 A JP 5194892A JP H05257902 A JPH05257902 A JP H05257902A
Authority
JP
Japan
Prior art keywords
lock
processing
lock acquisition
task
upper limit
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.)
Withdrawn
Application number
JP4051948A
Other languages
English (en)
Inventor
Yoshio Kato
喜郎 加藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP4051948A priority Critical patent/JPH05257902A/ja
Publication of JPH05257902A publication Critical patent/JPH05257902A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】 科学技術計算等の処理プログラム・モードに
おけるロック獲得処理において、システム全体の効率を
低下させることなく、また、少ないオーバ・ヘッドでロ
ックを獲得することができるロック獲得処理方式を提供
すること。 【構成】 機械命令により、主記憶装置上の特定領域の
記憶内容を調べ、ロック未獲得なら、ロックを獲得す
る。ロック獲得が失敗した場合には、ロック獲得試行回
数をカウントし、ロック獲得試行回数が予め定められた
上限値を越えたとき、自分とは異なるタスクを実行して
もよいことをOSに通知する。ロック獲得試行回数が上
限値をこえた際、OSに通知するように構成したので、
ロックを保持したままOSにCPUを奪われた場合、ロ
ックが解放されるのを待って他のプログラムが長時間ル
ープし続けることがなく、システム全体の効率の低下を
防ぐことができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は主記憶共用型マルチ・プ
ロセッサ・システムにより科学技術計算を並列処理する
際、ユーザ・プログラム及び実行時ライブラリでシステ
ム資源の排他制御を行うためのロック獲得処理方式に関
する。
【0002】
【従来の技術】科学技術計算等の性能が要求される応用
プログラムにおいては、実効性能を向上させるため、D
Oループやサブルーチンを複数の演算装置により並列に
実行する処理方式が用いられる。図8は上記処理を行う
場合のシステム構成を示す図であり、同図において、1
01は主記憶装置、102ないし105は演算装置であ
る。
【0003】図8に示すシステム構成の計算機システム
においては、複数の演算装置102ないし105からア
クセス可能な主記憶装置101にプログラム及びデータ
をロードし、複数の演算装置102ないし105が各々
担当すべき部分のプログラムを実行する。同図(a) およ
び(b) に示すシステムにおいては、理想的には、1台の
演算装置により元のプログラムを実行したときの1/2
(図8(a) の場合)あるいは1/4(図8(b) の場合)
の処理時間でジョブの実行が終了することとになる。
【0004】しかしながら、実際には、実行効率はプロ
グラムの構造(並列実行が可能なループが少ない場合
等)と並列処理時のオーバ・ヘッドにより大きな影響を
受ける。このため、ユーザ・プログラムを並列実行可能
な構造に書き直したり、あるいは並列処理制御のオーバ
・ヘッドを減らしたりするなど、ユーザ・プログラムの
チューニングあるいはシステムのチューニングを行うこ
とにより実行効率を向上させる必要があり、それによっ
て理想的な性能に近づけることが可能となる。
【0005】上記システムのチューニングの1つの手法
としては、システム資源の排他制御におけるオーバ・ヘ
ッドの低減がある。そこで、つぎに、本発明の前提とな
る並列処理におけるシステム資源の排他制御について説
明する。図9は2つのサブルーチンによる並列処理を示
す図である。例えば下記のようにメインルーチンSAMPLE
よりサブルーチンSUB1,SUB2 を呼び出し、サブルーチン
SUB1,SUB2 により並列処理を行う場合、図9に示すよう
に、まず、図9の*1において並列処理の開始処理のた
めの実行時ライブラリを呼び出す。
【0006】 このとき、サブルーチンSUB1,SUB2 は実行時ライブラリ
によって、タスクにスケジュールされる。そして、サブ
ルーチンSUB1,SUB2 の実行が行われると、図9の*2に
示すように、メインルーチンSAMPLEはサブルーチンSUB
1,SUB2 の実行が完了するまで待ち状態になる。
【0007】ついで、サブルーチンSUB1,SUB2 の実行が
終わると、図9の*3に示すように、並列処理の終了処
理が行われる。この処理が完了すると、メイン・ルーチ
ンSAMPLEの処理が再開する。図10はサブルーチンSUB
1,SUB2 の並列実行開始時の処理手順を示す図である。
同図において、111は主記憶装置、111aはキュ
ー、111bはサブルーチンSUB1の制御ブロック、11
1cはサブルーチンSUB2の制御ブロック、112は第1
のタスク、112aは第1のタスクの実行時ライブラ
リ、113は第2のタスク、113aは第2のタスクの
実行時ライブラリである。
【0008】プログラムが実行を開始する時、初期化処
理の段階で、タスクを生成(ATTACH) し、タスクの初期
化処理を行う。初期化完了直後は、実行すべきプログラ
ム部分がないので、タスクは待ち状態になっている。サ
ブルーチンSUB1とサブルーチンSUB2の並列処理は次の手
順で並列実行が始まる。 (A) 主記憶装置111上にあるサブルーチンSUB1に対応
する制御ブロック111bを初期化する。初期化処理の
一部として、制御ブロックの中に、入口点アドレス、パ
ラメタのアドレス、復帰点アドレス等の情報を格納す
る。 (B) サブルーチンSUB2の制御ブロック111cも同様に
初期化する。 (C) 初期化済の制御ブロック111b、111cを主記
憶装置111上のキュー111aに接続する。 (D) 待ち状態になっているタスクに対して、実行可能な
手続きがキュー111aに存在することを通知する。
【0009】上記(D) において、実行可能な手続きの存
在を通知されたタスクは次の処理を行う。 (E) キュー111aを探索して制御ブロックを取得(キ
ューからはずす)する。 (F) 制御ブロックの中の情報を取り出して、実行すべき
手続きを呼び出す。 ところで、上記(C) のキューに制御ブロックを接続する
とき、および、(E)のキューから制御ブロックをはずす
ときには、下記の問題が発生することがある。
【0010】例えば、上記例の(E)のキューから制御ブ
ロックを外す場合において、タスクはジョブ中に複数あ
り、上記例においては2並列の処理を行うので、2個の
タスクに「実行可能手続きがあることを通知する」こと
となるが、その場合には2個のタスクが同時にキューに
アクセスすることが起こりうる。従って、タイミングに
よつてはサブルーチンSUB1を2個のタスクで同時に処理
してしまい誤動作となる。
【0011】そこで、通常、キューをアクセスする権限
が2以上のタスクに与えられることがないように計算機
資源の排他制御が行われる。特に、今日のOSには、計
算機資源の排他制御を行うための機構が用意されてお
り、その機構を利用することにより、上記計算機資源の
排他制御を簡単に行うことが可能である。一般に、排他
制御を開始することを「ロックを獲得する」という。す
なわち、「ロック」を獲得するとは、ある計算機資源に
対する独占的な権利、例えば、ファイルに対して更新処
理をする権利あるいはキューに対してアクセスする権利
を獲得することを意味し、あるタスクなどがロックを獲
得すると、例えば、他のタスク、他のジョブ、他の手続
きなどの他の処理はロックに対応した計算機資源を利用
することができなくなる。
【0012】また、排他制御を終了することを「ロック
を解放する」という。すなわち、「ロックを解放する」
とは、獲得した権利を放棄するとともに、他の処理また
は自処理自身が再度、ロックを獲得することができる状
態にすることを意味する。ロックの実現方法には種々あ
るが、簡単には、主記憶装置上の特定の領域のビットの
0/1で判定する方法で充分である。ただし、ロックと
計算機資源との対応関係、制御表の相対バイト数などの
ロックの位置、0/1の何れかをロック獲得済にする
か、等の規約はそのロックを獲得しようとする全てのプ
ログラムの間で合意されていなければならない。また、
当然、ロック獲得済の状態であるときには対応する計算
機資源を使用することができない。
【0013】ロックを主記憶装置の1語の領域で実現す
る場合には、その領域を特にロック・ワードという場合
がある。ロックを実現するための主記憶装置の領域は1
ビットで充分であるが、ハードウェアの特性によって
は、バイト単位あるいはワード単位の方が高速にアクセ
スできる場合があるので、1ワードをロックのために使
用する場合がある。
【0014】ところで、科学技術計算において、並列処
理の単位となるDOループ、サブルーチンなどの演算量
は例えばPRINT文などの入出力処理の演算量に比べ
て、1/1000あるいは1/100 という小さな値である。した
がって、効率良く並列処理を行うためには、並列処理の
制御に要するオーバ・ヘッドを、並列処理される演算量
より相対的に充分小さくする必要がある。
【0015】一方、OSのタスク間の同期機構や計算機
資源の排他制御機構を利用すると、その処理時間は並列
処理を行う単位に比べて相対的に大きいため、充分な性
能を引き出すことができない。従来、上記のようなロッ
クを獲得するため、OSおよび一般的なアーキテクチャ
においては次のような処理が行われていた。 システムに用意さているロック獲得のためのシステ
ム・マクロ命令(例:SETLOCK マクロ命令)を利用す
る。 資源の排他制御を行うマクロ命令を発行してOSに
処理を依頼する(例:ENQ/DEQマクロ命令)。 主記憶装置上の特定領域の記憶内容を調べてその領
域の記憶内容を書き換えることが可能な機械命令(T
S,CS,CDS)を組み合わせてロックを獲得する。
すなわち、上記のロック獲得方式は、図11に示すよ
うにロック・ワードを調べ、未獲得ならTS,CS,C
DS命令を使ってロックを獲得し、もしロックを獲得で
きなかったら再び再試行することにより、ロック獲得処
理を行う。
【0016】ところで、上記による処理は、SETLOCK
マクロ命令がスーパ・バイザ・モードでないと発行でき
ないため、前記した問題プログラムの並列処理時に使用
することはできない。上記によるロック獲得処理の場
合には、ソフトウェア割込みであるSVC割込み(OS
に処理を依頼する場合に利用する一般的な処理方法であ
り、割込みコードによって制御を渡すハンドラ・ルーチ
ンが選択され、OSの各機能を実現する処理ルーチンに
制御が渡される)を発生するため、オーバ・ヘッドが大
きい。この方式を用いてロック獲得に成功した場合、上
記の方式の最良のケースと較べると、数十倍から数百
倍程度の大きなオーバ・ヘツドとなる。
【0017】また、OSに新たな機構を用意したとして
も、SVCによる割込み処理のオーバ・ヘッドは逃げる
ことができない。の方式によるロック獲得処理は、ロ
ック獲得に成功した時のオーバ・ヘッドは極めて少ない
が、ロックを獲得した状態で、OSにCPUを奪われる
と(例えば、タイム・スライスにより他のジョブがスケ
ジュールされることがある)、ロックが解放されるのを
待って他のループしているプログラムが長時間ループし
続けることとなり、システム全体の効率を落とす原因と
なることがある。
【0018】なお、OSがシステム・プログラムのなか
でロック獲得処理を行う場合には割込みをマスクしてロ
ック獲得処理を行うことができるので、上記のような問
題は発生しないが、処理プログラム・モードでは割込み
をマスクすることが出来ないので、システム効率の悪化
に対処することができない。以上示したように、従来用
いられていた排他制御機構には上記した種々の問題があ
り、科学技術計算等の処理プログラム・モードにおける
オーバ・ヘッドに適切に対処することができなかった。
【0019】
【発明が解決しようとする課題】本発明は上記した従来
技術の欠点を改善するためになされたものであって、科
学技術計算等の処理プログラム・モードにおけるロック
獲得処理において、システム全体の効率を低下させるこ
となく、また、少ないオーバ・ヘッドでロックを獲得す
ることができるロック獲得処理方式を提供することを目
的とする。
【0020】
【課題を解決するための手段】図1は本発明の原理フロ
ーチャートである。本発明は、上記課題を解決するた
め、図1に示すように、主記憶装置上の特定領域の記憶
内容を調べ、特定領域の記憶内容を書き換えることがで
きる機械命令を組み合わせてロックを獲得する処理プロ
グラム・モードにおけるロック獲得処理方式において、
ロック獲得試行回数をカウントし、ロック獲得試行回数
が予め定められた上限値を越えたとき、自分とは異なる
タスクを実行してもよいことをOSに通知するように構
成したものである また,上記構成に加え、獲得した状態で走行するときの
平均経過時間をT、一回の再試行に要する時間をτとし
たとき、ロック獲得試行回数の上限値nをn=T/τと
なるように選定することができる。
【0021】
【作用】ロック獲得試行回数をカウントし、ロック獲得
試行回数が上限値をこえると、自分とは異なるタスクを
実行してもよいことをOSに通知するように構成したの
で、ロックを保持したままOSにCPUを奪われた場
合、ロックが解放されるのを待って他のプログラムが長
時間ループし続けることがなく、システム全体の効率を
低下させることなく処理を進めることができる。
【0022】また、上記上限値として、ロックを獲得し
た状態で走行するときの平均経過時間をT、一回の再試
行に要する時間をτ、試行回数カウンタのカウント値の
上限値をnとすると、T=τ×n、すなわち、n=T/
τとなるように選定することにより、システム全体の効
率の最適化を図ることができる。
【0023】
【実施例】図2は本発明の1実施例を示すフローチャー
トである。本実施例は機械命令(TS,CS,CDS)
を用いたロック獲得処理(前記した)をベースにした
ものであり、同図に示すように、ステップS10におい
て、ロック獲得の試行回数カウンタを0に初期化したの
ち、ステップS11において、ロック・ワードを調べ、
ロックが未獲得ならTS,CS,CDS命令を使ってロ
ック獲得処理を行う。
【0024】ステップS11において、ロックの獲得に
失敗すると、ステップS12に行きロック獲得の試行回
数カウンタを1増加する。ついで、ステップS13にお
いて、ロック獲得の試行回数カウンタのカウント値が上
限値を越えたか否かを判別し、試行回数カウンタのカウ
ント値が上限値を越えていない場合にはステップS11
に戻り上記処理を繰り返す。
【0025】また、ステップS13において、試行回数
カウンタのカウント値が上限値を越えた場合には、ステ
ップS14に行き、OSにCPUを返す。すなわち、自
分とは異なるタスクが実行可能なら、そのタスクを実行
してもよいことをOSに通知するためソフトウェア割込
み命令であるSVC命令(スーパ・バイザ・コール命
令)を発行する。
【0026】また、ステップS11において、ロック獲
得に成功するとロック獲得処理を終了する。本実施例に
おいては、ロック獲得試行回数をカウンタによりカウン
トし、試行回数が上限値をこえると、SVC命令を発行
し自分と異なるタスクを実行してよいことをOSに通知
するようにしたので、前記したにおける問題点、すな
わち、ロックを保持したままOSにCPUを奪われた場
合、ロックが解放されるのを待って他のプログラムが長
時間ループし続けることがなく、システム全体の効率を
低下させることなく処理を進めることができる。
【0027】なお、試行回数カウンタのカウント値が上
限値を越えるとSVC割込みが発生しオーバ・ヘッドを
生ずるが、上記上限値を適当な値に設定することによ
り、システムの効率の最適化を図ることができる。上記
上限値nとしては、例えば、ロックを獲得した状態で走
行するときの平均経過時間をT、一回の再試行に要する
時間をτ、試行回数カウンタのカウント値の上限値をn
とすると、T=τ×n、すなわち、n=T/τとなるよ
うに選定する。
【0028】上記のように上限値を選定した場合、ロッ
クを獲得できずに試行回数カウンタのカウント値が上限
値nを超過した場合には、ロックを獲得したタスクがロ
ックを解放するまでにCPUを奪われた可能性が高いと
判断することができる。したがって、試行回数が上限値
nを越えた場合に、ロックの解放を待っているタスクが
いったんCPUをOSに返すことにより、そのタスクが
長時間ループし続けることはなく、システム全体の効率
の低下を防ぐことができる。
【0029】また、一方、ロックを獲得してから解放す
るまで連続して処理が行われた場合には、その走行時間
は上記平均経過時間Tより少ない場合が多いから、試行
回数カウンタのカウント値が上限値nを越える前に、待
ち状態は解消されることが期待できる。なお、上記、ロ
ック獲得処理をマクロ化しておくことにより、科学技術
計算等の並列処理のための実行時ライブラリの中でユー
ザ・マクロとして用いることができる。
【0030】以上のように、本実施例の方式はロックを
持ったまま走行する区間が短い場合に適用することによ
り、オーバ・ヘッドを少なくすることができる。図3お
よび図4は上記実施例を図9および図10に示した2つ
のサブルーチンによる並列処理に適用した場合のフロー
チャートであり、図3および図4において、ステップR
4およびステップT2は図2の実施例に示したロック獲
得処理に対応する。
【0031】つぎに、図3、図4および図10により、
上記実施例の適用例について説明する。サブルーチンSU
B1とサブルーチンSUB2の並列処理は、前記したように、
次の手順で並列実行が始まる。実行中のタスクにおいて
は、図3に示すように、ステップR1において、主記憶
装置111(図10)上にあるサブルーチンSUB1に対応
する制御ブロック111b(図10)を初期化する。初
期化処理の一部として、制御ブロックの中に、入口点ア
ドレス、パラメタのアドレス、復帰点アドレス等の情報
を格納する。
【0032】ステップR2において、サブルーチンSUB2
の制御ブロック111c(図10)も同様に初期化す
る。ステップR3において、キューのアクセス権を得る
ためにロックを獲得する。この際、ステップR4に行
き、図2の実施例に示した処理を実行する。すなわち、
ロック獲得処理が不成功であった場合の試行回数をカウ
ントし、その上限値以内にロックが獲得できない場合に
は、ソフトウェア割込み命令であるSVC命令を発行
し、自分とは異なるタスクが実行可能ならそのタスクを
実行してもよいことをOSに通知する。そして、自分と
は異なるタスクの実行が終了すると、再び、ロック獲得
処理を行い、ロックを獲得する。
【0033】また、試行回数の上限値以内にロック獲得
に成功した場合には、ステップR5に行き、初期化済の
制御ブロック111b、111c(図10)を主記憶装
置111上のキュー111a(図10)に接続する。つ
いで、ステップR6において、キューのアクセス権を放
棄するためにロック解放処理を行い、ステップR7にお
いて、待ち状態になっているタスクに対して、実行可能
な手続きがキュー111a(図10)に存在することを
通知する。
【0034】実行可能な手続の存在を通知されたタスク
においては、図4に示すように、ステップT1におい
て、キューのアクセス権を得るためロック獲得処理を行
う。この際、前記したのと同様に、ステップT2に行
き、図2の実施例に示した処理を実行する。すなわち、
ロック獲得処理が不成功であった場合の試行回数をカウ
ントし、その上限値以内にロックが獲得できない場合に
は、ソフトウェア割込み命令であるSVC命令を発行
し、自分とは異なるタスクが実行可能ならそのタスクを
実行してもよいことをOSに通知する。
【0035】また、試行回数の上限値以内にロック獲得
に成功した場合には、ステップT3に行き、キュー11
1a(図10)を探索して制御ブロックを取得する。つ
いで、ステップT4において、キューのアクセス権を放
棄するためにロック解放処理を行い、ステップT5にお
いて、制御ブロックの中の情報を取り出して、実行すべ
き手続きを呼び出す。
【0036】図5、図6および図7は図2に示したロッ
ク獲得処理を下記の並列処理プログラムの実行時ライブ
ラリにおけるキュー管理に適用した場合のフローチャー
トである。図5、図6および図7において、ステップP
5、ステップQ5およびステップU2は図2の実施例に
示したロック獲得処理に対応する。上記キュー管理は、
FORTRANソース・プログラム中に、下記のよう
に、並列実行中の他手続きと同期を取るための命令(こ
の命令を「p-barrier 」とする)を記述したサブルーチ
ン(p-barrier)を設け、そのプログラムを実行した場合
に必要となる。
【0037】 PROGRAM MAIN SUBROUTINE SUB1(A,B,C) SUBROUTINE SUB2(X,Y,Z) ・・・ ・・・ ・・・ !OCL PARCALL DO 1,I=.... CALL p-barrier CALL SUB1(A,B,C) 1 A(I)=.... ・・・ CALL SUB2(X,Y,Z) ・・・ DO 1,I=.... !OCL END PARCALL CALL p-barrier 1 X(I)=.... PRINT*,A,X ・・・ ・・・ ・・・ END END END 上記プログラムにおける「CALL p-barrier」の行は、サ
ブルーチンSUB1とSUB2の並列実行中に待ち合わせを行う
ために設けられたものであり、「CALL p-barrier」によ
る待ち合わせを実現するため、待ち状態の手続きの制御
ブロックを接続しておくためのキューを使用する。この
キューは呼び出し元(上記プログラムの例においては、
PROGRAM MAIN)の制御ブロックの中にある。
【0038】そして、制御ブロックの中には、初期化の
ときに、並列呼び出しの呼び出し元の手続きの制御ブロ
ックのアドレスを格納してあるので、サブルーチンSUB1
及びSUB2からp-barrier のキューを参照することができ
る。また、呼び出し元の制御ブロックには、並列呼び出
しを行った手続きの数(この例では2)と p-barrierを
実行して待ち状態になっている手続きの数(初期値は
0)を格納するフィールドがある。
【0039】つぎに図5、図6および図7により、図2
に示したロック獲得処理の第2の適用例について説明す
る。サブルーチンSUB1とSUB2が並列動作中のとき、サブ
ルーチンSUB2の中で、サブルーチンSUB1よりも先に p-b
arrierが呼び出された場合を想定すると、図5に示すよ
うに、サブルーチンSUB2の p-barrierにおいては、ステ
ップP1において、呼び出し元(MAIN)の制御ブロックを
参照する。
【0040】そして、 p-barrierで待ち状態になってい
る手続きの数が0であることから、p-barrierを実行し
たのはサブルーチンSUB2が最初であることが判明し、ス
テップP2において、 p-barrier待ち状態の手続きの数
を1増加する。ステップP3において、SUB2の制御ブロ
ックに再開アドレスを格納して、SUB2を待ち状態にす
る。
【0041】ついで、ステップP4において、ロックを
獲得する。その際、前記したのと同様に、ステップP5
に行き、図2の実施例に示した処理を実行する。すなわ
ち、ロック獲得処理が不成功であった場合の試行回数を
カウントし、その上限値以内にロックが獲得できない場
合には、ソフトウェア割込み命令であるSVC命令を発
行し、自分とは異なるタスクが実行可能ならそのタスク
を実行してもよいことをOSに通知する。
【0042】また、試行回数の上限値以内にロック獲得
に成功した場合には、ステップP6に行き、 p-barrier
の待ち用のキューにSUB2の制御ブロックを接続し、ステ
ップP7において、ロックを解放する。つぎに、サブル
ーチンSUB1の p-barrierにおいては、ステップQ1にお
いて、呼び出し元(MAIN)の制御ブロックを参照する。そ
して、 p-barrierで待ち状態になっている手続きの数が
1であることから、 p-barrierを実行したのはサブルー
チンSUB1が最後で、既に待ち状態の制御ブロックが1個
p-barrierの待ち用のキューにつながっていることが判
明し、ステップQ2において、 p-barrier待ち状態の手
続きの数を0にリセットする。
【0043】ステップQ3において、 p-barrier待ち用
のキューからサブルーチンSUB2の制御ブロックをはず
す。すなわち、並列処理中に p-barrier待ち用のキュー
をアクセスするのはサブルーチンSUB1、SUB2の2者しか
ないので、サブルーチンSUB1は自分が最後であることを
この時点で知っているから、排他制御をする必要がな
い。
【0044】ついで、ステップQ4において、ロックを
獲得する。その際、前記したのと同様に、ステップQ5
に行き、図2の実施例に示した処理を実行する。すなわ
ち、ロック獲得処理が不成功であった場合の試行回数を
カウントし、その上限値以内にロックが獲得できない場
合には、ソフトウェア割込み命令であるSVC命令を発
行し、自分とは異なるタスクが実行可能ならそのタスク
を実行してもよいことをOSに通知する。そして、自分
とは異なるタスクの実行が終了すると、再び、ロック獲
得処理を行い、ロックを獲得する。
【0045】また、試行回数の上限値以内にロック獲得
に成功した場合には、ステップQ6に行き、並列実行開
始時に接続したキューに接続し、ステップQ7におい
て、ロックを解放する。ステップQ8において、待ち状
態になっているタスクに対して実行可能な手続きがキュ
ーに存在することを通知し、ステップQ9において、 p
-barrierの呼び出し元に復帰してサブルーチンSUB1の実
行を続ける。
【0046】ステップQ8において、実行可能な手続き
がキューに存在することを通知されたタスク(サブルー
チンSUB2の p-barrier)においては、図7のフローチャ
ートに示すように、ステップU1において、ロックを獲
得する。その際、前記したのと同様に、ステップU2に
行き、図2の実施例に示した処理を実行し、ロックを獲
得する。
【0047】ステップU3において、キューを探索し
て、制御ブロックを取得(キューからはずず)し、ステ
ップU4において、ロックを解放する。ついで、ステッ
プU5において、制御ブロックから再開アドレスを取り
出して制御を渡し、サブルーチンSUB2を再開する。ステ
ップU6において、 p-barrierの呼び出し元に復帰し
て、サブルーチンSUB2の実行を続ける。
【0048】以上、図2の実施例の適用例として、2つ
のサブルーチンによる並列処理、および、並列処理プロ
グラムの実行時ライブラリにおけるキュー管理に適用し
た場合を示したが、本発明の適用対象は上記適用例に限
定されるものではなく、本発明は、上記適用対象以外の
処理プログラム・モードにおけるロック獲得処理に適用
することができる。
【0049】
【発明の効果】以上説明したことから明らかなように、
本発明は、機械命令(TS,CS,CDS)を用いてロ
ック獲得処理を行うに際して、ロック獲得試行回数をカ
ウンタによりカウントし、試行回数が上限値をこえる
と、SVC命令を発行し自分と異なるタスクを実行して
よいことをOSに通知するようにしたので、処理プログ
ラム・モードにおけるロック獲得処理において、システ
ム全体の効率を低下させることなく、また、少ないオー
バ・ヘッドでロックを獲得することができる。
【図面の簡単な説明】
【図1】本発明の原理フローチャートである。
【図2】本発明の実施例のフローチャートである。
【図3】本発明の実施例の第1の適用例のフローチャー
トである。
【図4】本発明の実施例の第1の適用例のフローチャー
ト(続き)である。
【図5】本発明の実施例の第2の適用例のフローチャー
トである。
【図6】本発明の実施例の第2の適用例のフローチャー
ト(続き)である。
【図7】本発明の実施例の第2の適用例のフローチャー
ト(続き)である。
【図8】主記憶共用型マルチ・プロセッサ・システムの
構成を示す図である。
【図9】2つのサブルーチンによる並列処理を示す図で
ある。
【図10】2つのサブルーチンによる並列処理実行開始
時の処理手順を示す図である。
【図11】従来のロック獲得処理を示すフローチャート
である。
【符号の説明】
111 主記憶装置 111a キュー 111b サブルーチンSUB1の制御ブロック 111c サブルーチンSUB2の制御ブロック 112 第1のタスク 112a 第1のタスクの実行時ライブラリ 113 第2のタスク 113a 第2のタスクの実行時ライブラリ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 主記憶装置上の特定領域の記憶内容を調
    べてその領域の記憶内容を書き換えることができる機械
    命令を組み合わせてロックを獲得する処理プログラム・
    モードにおけるロック獲得処理方式において、 ロック獲得試行回数をカウントし、 ロック獲得試行回数が予め定められた上限値を越えたと
    き、自分とは異なるタスクを実行してもよいことをオペ
    レーティング・システムに通知することを特徴とする処
    理プログラム・モードにおけるロック獲得処理方式。
  2. 【請求項2】 ロックを獲得した状態で走行するときの
    平均経過時間をT、一回の再試行に要する時間をτとし
    たとき、ロック獲得試行回数の上限値nをn=T/τと
    なるように選定することを特徴とする請求項1の処理プ
    ログラム・モードにおけるロック獲得処理方式。
JP4051948A 1992-03-10 1992-03-10 処理プログラム・モードにおけるロック獲得処理方式 Withdrawn JPH05257902A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4051948A JPH05257902A (ja) 1992-03-10 1992-03-10 処理プログラム・モードにおけるロック獲得処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4051948A JPH05257902A (ja) 1992-03-10 1992-03-10 処理プログラム・モードにおけるロック獲得処理方式

Publications (1)

Publication Number Publication Date
JPH05257902A true JPH05257902A (ja) 1993-10-08

Family

ID=12901103

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4051948A Withdrawn JPH05257902A (ja) 1992-03-10 1992-03-10 処理プログラム・モードにおけるロック獲得処理方式

Country Status (1)

Country Link
JP (1) JPH05257902A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500036B2 (en) 2000-12-28 2009-03-03 International Business Machines Corporation Quad aware locking primitive
JP2010020759A (ja) * 2008-07-09 2010-01-28 Internatl Business Mach Corp <Ibm> ロックをスレッドに割り当てる方法、装置
JP2011170414A (ja) * 2010-02-16 2011-09-01 Nec Corp ロック競合管理装置、ロック競合管理方法およびプログラム
WO2012132017A1 (ja) * 2011-03-31 2012-10-04 富士通株式会社 排他制御方法、および排他制御プログラム
DE102012221037A1 (de) 2011-12-02 2013-06-06 International Business Machines Corporation Einheit und Verfahren zum Realisieren einer Ressourcensperre
WO2018042935A1 (ja) * 2016-08-31 2018-03-08 日立オートモティブシステムズ株式会社 電子制御装置、解析システム

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500036B2 (en) 2000-12-28 2009-03-03 International Business Machines Corporation Quad aware locking primitive
US7979617B2 (en) 2000-12-28 2011-07-12 International Business Machines Corporation Quad aware locking primitive
JP2010020759A (ja) * 2008-07-09 2010-01-28 Internatl Business Mach Corp <Ibm> ロックをスレッドに割り当てる方法、装置
US8701111B2 (en) 2008-07-09 2014-04-15 International Business Machines Corporation Lock windows for reducing contention
JP2011170414A (ja) * 2010-02-16 2011-09-01 Nec Corp ロック競合管理装置、ロック競合管理方法およびプログラム
WO2012132017A1 (ja) * 2011-03-31 2012-10-04 富士通株式会社 排他制御方法、および排他制御プログラム
JP5725162B2 (ja) * 2011-03-31 2015-05-27 富士通株式会社 排他制御方法、および排他制御プログラム
US9632842B2 (en) 2011-03-31 2017-04-25 Fujitsu Limited Exclusive access control method prohibiting attempt to access a shared resource based on average number of attempts and predetermined threshold
DE102012221037A1 (de) 2011-12-02 2013-06-06 International Business Machines Corporation Einheit und Verfahren zum Realisieren einer Ressourcensperre
US8898127B2 (en) 2011-12-02 2014-11-25 International Business Machines Corporation Device and method for acquiring resource lock
US9189512B2 (en) 2011-12-02 2015-11-17 International Business Machines Corporation Device and method for acquiring resource lock
WO2018042935A1 (ja) * 2016-08-31 2018-03-08 日立オートモティブシステムズ株式会社 電子制御装置、解析システム

Similar Documents

Publication Publication Date Title
US5524247A (en) System for scheduling programming units to a resource based on status variables indicating a lock or lock-wait state thereof
US5369770A (en) Standardized protected-mode interrupt manager
JP2514299B2 (ja) プロセスレベルプログラミングのための割込み処理の直列化方法
US5966543A (en) Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
US5666523A (en) Method and system for distributing asynchronous input from a system input queue to reduce context switches
JPH0324696B2 (ja)
JPS60128537A (ja) 多重プログラミング・システム
EP2353087B1 (en) Real-time signal handling in guest and host operating systems
JPH10283243A (ja) データベース管理システム
US6148325A (en) Method and system for protecting shared code and data in a multitasking operating system
JPH05257902A (ja) 処理プログラム・モードにおけるロック獲得処理方式
McGee The information management system IMS/VS, Part V: Transaction processing facilities
US5586320A (en) High speed synchronous processing system for executing parallel processing of programs having loops
JPH0855092A (ja) プロセッサシステムとその制御方法
JPH05250188A (ja) プロセスのプライオリティ制御方式
JPH07319716A (ja) 計算機システムの資源の排他制御方式
JP2856681B2 (ja) 外部事象を処理する方法およびシステム
JPH0877039A (ja) テスト方法
JP2580072B2 (ja) 割込み処理装置
CN114327828B (zh) 一种共享数据的无锁并发访问方法、装置、设备及介质
JPH06318191A (ja) マルチスレッド処理方式
US5287509A (en) Multitasking system for in-procedure loops
JP3107433B2 (ja) 電子計算機システムにおけるタスク状態管理方式
JPH064323A (ja) マルチプロセッサシステム
US20030225817A1 (en) Concurrent execution of kernel work and non-kernel work in operating systems with single-threaded kernel

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990518