JPH07319716A - 計算機システムの資源の排他制御方式 - Google Patents

計算機システムの資源の排他制御方式

Info

Publication number
JPH07319716A
JPH07319716A JP10812894A JP10812894A JPH07319716A JP H07319716 A JPH07319716 A JP H07319716A JP 10812894 A JP10812894 A JP 10812894A JP 10812894 A JP10812894 A JP 10812894A JP H07319716 A JPH07319716 A JP H07319716A
Authority
JP
Japan
Prior art keywords
lock
resource
processes
acquire
waiting
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
JP10812894A
Other languages
English (en)
Inventor
Yutaka Enko
豊 円光
Shigeo Takasaki
繁夫 高崎
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 JP10812894A priority Critical patent/JPH07319716A/ja
Publication of JPH07319716A publication Critical patent/JPH07319716A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】マルチプロセッサシステムにおけるプロセスの
資源確保要求に伴うオーバーヘッドを軽減する。 【構成】ロックの解放を待つプロセスは、ロックを保持
しているプロセスの実行状態あるいは他の待ちプロセス
数により、スピンウェイト又はスリープを選択する。 【効果】各プロセスのロック待ちによるオーバーヘッド
が軽減され、システムのスループットを向上することが
できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は複数のプロセッサによっ
て複数のプロセスを並列に実行するマルチプロセス方式
の計算機システムおよびそれにおけるプロセス間の共有
資源の相互排他制御方法に関するものである。
【0002】
【従来の技術】複数のプロセスを、複数のプロセッサに
よって並行または並列に扱うことのできる(マルチプロ
セス方式)のマルチプロセッサ計算機システムにおい
て、システム中の資源を複数のプロセス間で共有する場
合、その一貫性(コンシステンシ)を保証するためにプロ
セス間で資源の相互排他制御をおこなう必要がある。
【0003】プロセス間の資源の排他制御については、
“モダーン オペレーティング システムズ、アンドリ
ュー エス タネンバウム(“Modern Operating Syste
ms”,Andrew S.Tanenbaum著,Prentice-Hall刊)におい
て記述がある。例えば、システムに大域的なデータ構造
体Dがあり、Dはシステム中のプロセスが共有する資源
でその一貫性が保証されなければならないとする。プロ
セスP1が実行するプログラムの中で、実行中における
データDの一貫性が保証されないプログラム区間をC
1、別のプロセスP2についての同様の区間をC2とす
ると、P1,P2のいずれかがC1,C2内を実行して
いる途中、他方のプロセスがC1またはC2内を実行す
ることは、禁止されなければならない。
【0004】一般に、区間はクリティカル・リージョン
(際どい区間)と呼ばれ、シングルプロセッサでは、ク
リティカル・リージョン内でのプロセススイッチを禁止
する等の方法により一貫性を保証している。また、シン
メトリックな(システム中のプログラムがいずれのプロ
セッサでも区別なく実行される)マルチプロセッサシス
テムでは、各プロセスがクリティカルリージョンを実行
する前/後に、各資源に対応したロック(システム内に
唯一存在する)を取得/解放することにより、同時に複
数のプロセスが同一資源についてのクリティカル・リー
ジョンを実行しないようにする等の方法により資源の一
貫性を保証している。
【0005】マルチプロセッサシステムが、ロックによ
る資源の排他制御方式を用いた場合を考える。あるプロ
セスが資源を操作するために、資源に対応するロックを
取得すると、ロックはビジー(すでにプロセスにより取
得されている状態)となり、同一のロックを取得しよう
とする他のプロセスは実行を続けることができない。こ
のため、プロセスは、先にロックを取得したプロセスが
ロックを解放するまでビジーウェイトもしくはスリープ
する。ビジーウェイトとは、プロセスがプロセッサを保
持したまま、ロックが解放されるのを短いループ中を実
行しながら待つことをいい、スリープとは、プロセスが
プロセッサを解放し、プロセッサに他の実行可能なプロ
セスの実行を再開(コンテクストスイッチ)させる(プ
ロセッサを明け渡す)ことをいう。
【0006】システム全体のスループットを向上させる
には、ロックが解放されるまでの時間がコンテクストス
イッチのオーバーヘッドよりも長ければ、プロセスはス
リープしプロセッサを他のプロセスに割り当てたほうが
有利である。しかし逆に、ロックが解放されるまでの時
間がコンテクストスイッチのオーバーヘッドよりも短け
れば、プロセスはスリープせずビジーウェイトによって
そのままロックの解放を待った方が有利である。
【0007】従来の技術では、システムプログラマ(オ
ペレーティングシステムの作成者)が、ロックがビジー
のときビジーウェイトあるいはスリープのいずれかの動
作を行うロックプリミティブ関数をあらかじめ用意し、
保護の対象となる資源により、コーディングの際これら
をプログラム中で使い分ける(いいかえれば、ロックが
確保されなかった場合のプロセスの動作は、ロックの対
象である資源によって固定する)という方法により両者
を使い分けていた。
【0008】
【発明が解決しようとする課題】しかし上記従来技術の
方法では、つぎのような課題が存在する。第一の課題
は、各資源に対するロック待ち方式をシステム・プログ
ラマが選択しなければならないことである。シンメトリ
ックなマルチプロセッサシステムでは、プロセッサ台数
を増加するに従い、プログラムの並列度を高めるため
に、排他制御を行う必要のある各資源に対してきめ細か
なロック操作をおこなう必要がある。ロックを細かくす
るということは、ロックを取る箇所が増え、またロック
対象の資源数も増える。したがってより多くのロック操
作が必要となる。システム・プログラマは各資源に対し
てそれがロックされる時間を考慮しつつ最適なロック待
ち方法を選択する必要があり、プログラマの負担が増加
する。
【0009】第二の課題は、実際にロックが解放される
までの時間は実行時に決まるということである。従来の
方式によれば、プロセスがビジーウェイトすべきかある
いはスリープすべきかの判断はコーディングの時点で行
わなければならず、実際に実行時にロックが要求されて
からそれが解放されるまでの間に、プロセスのコンテク
ストスイッチが可能であるか否かが判断できるとは限ら
ない。むしろ、プロセスがロックを解放するまでの時間
は、そのプロセスの実行状態に大きく関わっており、一
般に、実行状態にあるプロセスが保持するロックは、実
行状態にないプロセスが保持するロックよりも早く解放
される。また、プロセスがロックを解放するまでの時間
は、そのロックを待つ他のプロセス数にも関係する。ロ
ックを取得しようとするプロセスよりも先に多数のプロ
セスが既にそのロックの解放を待っていれば、ロックが
プロセスに割り当てられるまでの時間は長くなる。
【0010】本発明の目的は、システムプログラマの資
源保持時間を意識したロック操作プログラミングの負担
を軽減し、代わってシステムが実行時に、ロックを保持
するプロセスの実行状態をもとに最適なロック待ち動作
を選択することにより、ロック待ちに係るプロセッサの
オーバーヘッドを軽減しシステムのスループットを向上
することにある。
【0011】
【課題を解決するための手段】本発明の方式を用いた計
算機システムは、上記目的を達成するために、第1に排
他制御のシステム中の資源と同数のロック・オブジェク
トを備え、第2にロックを保持しているプロセスの実行
状態を判別する手段を備え、第3に前記判別結果をもと
にビジーウェイトもしくはスリープのいずれかの動作を
行うことを決定する手段を備え、第4に前記決定した動
作を実行する手段を備える。
【0012】また、本発明の方式を用いた別の計算機シ
ステムは、上記第1,第3,第4の手段と共に、上記第
2の手段に代えて、同一のロックを取得しようとしてい
る他のプロセス数を判別する手段を備える。
【0013】
【作用】本発明の方式を用いた計算機システムにおい
て、実行中のプロセスは、システム中の資源を操作しよ
うとするとき、まず資源に対応するロックの取得を試み
る。
【0014】プロセスがロックの取得に成功した場合、
プロセスはロックを保持したまま資源に対する操作を行
い、操作後、ロックを解放する。ロックを保持している
間、他のプロセスは資源に対してアクセスできないの
で、資源の一貫性が保たれる。
【0015】上記プロセスがロックの取得に失敗した場
合、プロセスはロックを既に取得しているプロセスを見
つけ、そのプロセスの実行状態を調べる。状態が実行中
であれば、スピンロックによってロックが解放されるの
を待つ。ロックを取得しているプロセスが実行状態でな
い場合、ロックが解放されるまでの時間がコンテクスト
スイッチの時間よりも長いとみなし、プロセスはスリー
プし、プロセッサを他のプロセスに譲り渡す。
【0016】さらに、本発明の方式を用いた別の計算機
システムでは、プロセスがロックの取得に失敗した場
合、プロセスはロックを取得しようとして先に待ち状態
にあるプロセスの数を調べる。この数をもとにスピンロ
ックもしくはスリープによってロックの解放待ちを行
う。
【0017】
【実施例】本発明を用いた計算機システムの構成例を図
1に示す。本システムはn個のプロセッサ101,10
2,103,...,104を備え、現在m個のプロセ
ス106,107,...,120が生成されている。
また、資源127,資源128,資源129がプロセス
間で共有され、各資源にはそれぞれ三つのロックが対応
付けられており、ロックはロックオブジェクト130,
131,132により管理されている。資源を操作する
プロセスは、操作の前/後に各資源に対応したロックを
取得/解放しなければならない。ロックの取得/解放
は、図中のロック取得ルーチン121およびロック解放
ルーチン122により行う。(各プロセスが資源を獲得
する際に、デッドロックを回避するために資源獲得の順
序づけ等が必要となるかも知れないが、ここでは触れな
い。) 現在、プロセッサ101,102,103には、各々プ
ロセス106,107,108が割り当てられており、
実行中である。
【0018】プロセス109,110,111,112
は実行可能な状態だが、空いているプロセッサがないの
で、プロセッサ待ち行列126につなげられた状態で、
プロセッサが割り当てられるのを待っている。
【0019】資源127のロックは現在プロセス108
に保持されており(図中ロックのロックオブジェクト1
30にはロックを保持しているプロセスが108である
ことを示すデータが格納されている。図中の他のロック
のロックオブジェクト131,132についても同
様)、ロックを待つプロセス113,114,115,
116は図中のロック待ち行列133につながれた状態
でスリープして待っている。
【0020】さらに、資源131のロックは現在プロセ
ス110に保持されており、ロック2を待つプロセス1
17,118,119は図中のロック待ち行列134に
つながれた状態でスリープして待っている。
【0021】資源129のロックは現在プロセス106
によって保持されており、ロック待ち行列135は空で
ある。
【0022】ここでは、各ロック待ち行列には、ロック
を待つスリープ状態のプロセスがつなげれられ、スピン
ロックしているプロセスは待ち行列にないものとする。
【0023】次に、本発明におけるロック取得/解放手
段の第1の実施例を図2,図3に示す。図2は本実施例
におけるロック取得ルーチンのフローチャート、図3は
本実施例におけるロック解放ルーチンのフローチャート
である。
【0024】システム中の資源を操作しようとするプロ
セスは、資源の操作に先立ち、資源に対応するロックを
取得するためにこのロック取得ルーチンを必ずコールし
なければならない。また、システム中の資源の操作を終
えたプロセスは、ロック解放ルーチンを必ずコールしな
ければならない。
【0025】ロック取得ルーチンはまず、ロックの取得
を試みる(201)。
【0026】ロックの取得に失敗した場合、ロック取得
ルーチンはロックを既に取得しているプロセスを見つけ
る。次にロックを取得しているプロセスの実行状態を調
べ(202)、実行状態であれば、ビジーウェイトによ
って、ロックが解放されるのを待つ(203)。ロック
を取得しているプロセスが実行状態でない場合、ロック
が解放されるまでの時間がコンテクストスイッチの時間
よりも長いとみなし、プロセスはスリープする(20
4)。スリープしたプロセスは他のプロセスから再び起
動されるまでプロセッサを他のプロセスに解放する。ス
リープしたプロセスが再び起動されると、ロックの取得
を再び試みる(201)。
【0027】ロックの取得に成功した場合、プロセスは
ロックを保持したままロック取得ルーチンからリターン
し、資源に対する操作を行う。資源の操作後、プロセス
は図3のロック解放ルーチンによりロックを解放する
(301)。スリープによりロックの解放を待つプロセ
スがあれば、これを起こす(302)。ロックを保持し
ている間、他のプロセスは資源に対してアクセスできな
いので、資源の一貫性が保たれる。
【0028】上記のシステム構成において、例えばプロ
セス107がロックを取得しようとした場合、ロックを
保持するプロセス108はプロセッサ103上で実行中
なので、プロセス107はスピンロックして待つ。ま
た、プロセス107がロックを取得しようとした場合、
ロックを保持するプロセス110は実行中でないのでプ
ロセス107はプロセッサを解放し、ロック待ち行列に
加わることになる。
【0029】さらに、本発明による第2の実施例を図
4,図5に示す。図4は本実施例におけるロック取得ル
ーチンのフローチャート、図5は本実施例におけるロッ
ク解放ルーチンのフローチャートである。
【0030】第1の実施例と同様、システム中の資源を
操作しようとするプロセスは、資源の操作に先立ち、資
源に対応するロックを取得するためにこのロック取得ル
ーチンを必ずコールしなければならない。また、システ
ム中の資源の操作を終えたプロセスは、ロック解放ルー
チンを必ずコールしなければならない。
【0031】本実施例におけるロック取得ルーチンはま
ず、ロックの取得を試みる(401)。
【0032】ロックの取得に失敗した場合、ロック取得
ルーチンはロックの解放を待っている他スリーププロセ
スの数を調べ(402)、これが0であれば、ビジーウ
ェイトによってロックが解放されるのを待つ(40
3)。逆に、1以上であれば、ロックが解放されるまで
の時間がコンテクストスイッチの時間よりも長いとみな
し、プロセスはスリープする(404)。スリープした
プロセスは他のプロセスから再び起動されるまでプロセ
ッサを他のプロセスに解放する。スリープしたプロセス
が再び起動されると、ロックの取得を再び試みる(40
1)。
【0033】ロックの取得に成功した場合、プロセスは
ロックを保持したままロック取得ルーチンからリターン
し、資源に対する操作を行う。資源の操作後、プロセス
は図4のロック解放ルーチンによりロックを解放する
(501)。スリープによりロックの解放を待つプロセ
スがあれば、これを起こす(502)。ロックを保持し
ている間、他のプロセスは資源に対してアクセスできな
いので、資源の一貫性が保たれる。
【0034】上記のシステム構成において、例えば、プ
ロセス107がロックの取得に失敗した場合、ロック待
ち行列上のプロセスを数え、これが0なので、プロセス
107はスピンロックして待つ。また、プロセス107が
ロックを取得に失敗した場合、ロック待ち行列上のプロ
セスを数え、これが1以上なのでプロセス107はプロ
セッサを解放し、ロック待ち行列に加わることになる。
【0035】図6,図7,図8,図9は、従来技術によ
るロックの取得/解放ルーチンを示したフローチャート
である。図6は、ロックが取得できなかった場合にスリ
ープする従来技術によるロックの取得ルーチン。図7
は、図6により取得したロックを解放するルーチン。図
8は、ロックが取得できなかった場合にスピンロックす
る従来技術によるロックの取得ルーチン。図9は、図8
により取得したロックを解放するルーチンである。
【0036】
【発明の効果】本発明を用いることにより、システムプ
ログラマがスピンロックもしくはスリープするロック取
得関数を使い分ける必要がなく、資源保持時間を意識し
たロック操作プログラミングの負担が軽減される。さら
に、ロック待ちに係るプロセッサのオーバーヘッドが軽
減しシステムのスループットが向上する。
【図面の簡単な説明】
【図1】本発明の一実施例の計算機システムのブロック
図。
【図2】本発明の第1の実施例におけるロック取得ルー
チンのフローチャート。
【図3】本発明の第1の実施例におけるロック解放ルー
チンのフローチャート。
【図4】本発明の第2の実施例におけるロック取得ルー
チンのフローチャート。
【図5】本発明の第2の実施例におけるロック解放ルー
チンのフローチャート。
【図6】ロックが取得できなかった場合にスリープする
従来技術によるロックの取得ルーチンのフローチャー
ト。
【図7】図6により取得したロックを解放するルーチン
のフローチャート。
【図8】ロックが取得できなかった場合にスピンロック
する従来技術によるロックの取得ルーチンのフローチャ
ート。
【図9】図8により取得したロックを解放するルーチン
のフローチャート。
【符号の説明】
101,102,103,104…プロセッサ、105
…プロセッサテーブル、106〜120…プロセス,1
21…ロック取得ルーチン、122…ロック解放ルーチ
ン、126…プロセッサ待ち行列、127,128,1
29…資源、130,131,132…ロックオブジェク
ト、133…ロック待ち行列、134…ロック待ち行
列、135…ロック待ち行列。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】排他制御に係るシステム中の資源と同数の
    ロック・オブジェクトを備え、ロックを保持しているプ
    ロセスの実行状態を判別する手段を備え、前記実行状態
    をもとにビジーウェイトもしくはスリープのいずれかの
    動作を行うことを決定する手段を備え、前記決定した動
    作を実行する手段を備えたことを特徴とするマルチプロ
    セッサ計算機システム。
  2. 【請求項2】排他制御に係るシステム中の資源と同数の
    ロック・オブジェクトを備え、同一のロックを取得しよ
    うとしている他のプロセス数を判別する手段を備え、前
    記プロセス数をもとにビジーウェイトもしくはスリープ
    のいずれかの動作を行うことを決定する手段を備え、前
    記決定した動作を実行する手段を備えたことを特徴とし
    たマルチプロセッサ計算機システム。
  3. 【請求項3】請求項1において、プロセスがロックを取
    得できなかった場合に、前記ロックを保持しているプロ
    セスの実行状態を取得し、これにもとづいてビジーウェ
    イトもしくはスリープのいずれかによりロックの解放を
    待つ資源の排他制御方法。
  4. 【請求項4】請求項2において、プロセスがロックを取
    得できなかった場合に、前記ロック待ち状態にあるプロ
    セス数を取得し、これにもとづいてビジーウェイトもし
    くはスリープのいずれかによりロックの解放を待つ資源
    の排他制御方法。
JP10812894A 1994-05-23 1994-05-23 計算機システムの資源の排他制御方式 Pending JPH07319716A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10812894A JPH07319716A (ja) 1994-05-23 1994-05-23 計算機システムの資源の排他制御方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10812894A JPH07319716A (ja) 1994-05-23 1994-05-23 計算機システムの資源の排他制御方式

Publications (1)

Publication Number Publication Date
JPH07319716A true JPH07319716A (ja) 1995-12-08

Family

ID=14476651

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10812894A Pending JPH07319716A (ja) 1994-05-23 1994-05-23 計算機システムの資源の排他制御方式

Country Status (1)

Country Link
JP (1) JPH07319716A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285718A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp プロセッサおよびディスパッチ制御方法
CN100407136C (zh) * 2004-06-30 2008-07-30 英特尔公司 使用睡眠-唤醒机制来执行指令的方法和装置
JP2010191575A (ja) * 2009-02-17 2010-09-02 Panasonic Corp 資源排他制御方法および資源排他制御装置
JP2011129024A (ja) * 2009-12-21 2011-06-30 Renesas Electronics Corp データ処理システム及びデータ処理方法
WO2011096163A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 情報処理システム、排他制御方法および排他制御用プログラム
JP2016062388A (ja) * 2014-09-19 2016-04-25 日本電気株式会社 情報処理装置、情報処理方法及びそのプログラム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100407136C (zh) * 2004-06-30 2008-07-30 英特尔公司 使用睡眠-唤醒机制来执行指令的方法和装置
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
JP2006285718A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp プロセッサおよびディスパッチ制御方法
JP2010191575A (ja) * 2009-02-17 2010-09-02 Panasonic Corp 資源排他制御方法および資源排他制御装置
US8463911B2 (en) 2009-02-17 2013-06-11 Panasonic Corporation Exclusive control method of resource and exclusive controller of resource
US9135085B2 (en) 2009-02-17 2015-09-15 Socionext Inc. Exclusive control method of resource and exclusive controller of resource
JP2011129024A (ja) * 2009-12-21 2011-06-30 Renesas Electronics Corp データ処理システム及びデータ処理方法
WO2011096163A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 情報処理システム、排他制御方法および排他制御用プログラム
JP2016062388A (ja) * 2014-09-19 2016-04-25 日本電気株式会社 情報処理装置、情報処理方法及びそのプログラム

Similar Documents

Publication Publication Date Title
KR100976280B1 (ko) 하드웨어 지원을 갖는 다중 프로세서 및 다중 스레드 안전 메시지 큐
CN1327347C (zh) 在多处理环境中执行进程
JP2514299B2 (ja) プロセスレベルプログラミングのための割込み処理の直列化方法
US5377352A (en) Method of scheduling tasks with priority to interrupted task locking shared resource
US20080209422A1 (en) Deadlock avoidance mechanism in multi-threaded applications
US20040199927A1 (en) Enhanced runtime hosting
KR20090005921A (ko) 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치
US8413163B2 (en) Program control device including per-timeslot switching of thread execution
JPH07191944A (ja) 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
JPH10283243A (ja) データベース管理システム
WO2009113381A1 (ja) マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
EP0715732B1 (en) Method and system for protecting shared code and data in a multitasking operating system
JPH07319716A (ja) 計算機システムの資源の排他制御方式
JP2019144627A (ja) プログラム実行制御方法および車両制御装置
JP6468053B2 (ja) 情報処理装置、並列処理プログラム、及び、共有メモリアクセス方法
JP5300005B2 (ja) スレッド実行制御方法、およびシステム
JP2684993B2 (ja) プロセッサシステムとその制御方法
US11526496B2 (en) Distributed database architecture based on shared memory and multi-process and implementation method thereof
JPH05250188A (ja) プロセスのプライオリティ制御方式
JPH05257902A (ja) 処理プログラム・モードにおけるロック獲得処理方式
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
JP2001256065A (ja) 排他制御方法及び計算機システム
US11809219B2 (en) System implementing multi-threaded applications
JPH064323A (ja) マルチプロセッサシステム
JPH06223047A (ja) 排他制御方式