JPH10187527A - アクセス競合を防ぐ装置および方法 - Google Patents

アクセス競合を防ぐ装置および方法

Info

Publication number
JPH10187527A
JPH10187527A JP9187269A JP18726997A JPH10187527A JP H10187527 A JPH10187527 A JP H10187527A JP 9187269 A JP9187269 A JP 9187269A JP 18726997 A JP18726997 A JP 18726997A JP H10187527 A JPH10187527 A JP H10187527A
Authority
JP
Japan
Prior art keywords
lock
dynamic
stored data
thread
identification
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
JP9187269A
Other languages
English (en)
Inventor
Erik E Hagersten
エリック・イー・ハガーステン
Mark Donald Hill
マーク・ドナルド・ヒル
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10187527A publication Critical patent/JPH10187527A/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/955Object-oriented
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Abstract

(57)【要約】 (修正有) 【課題】 複数の記憶データ・オブジェクトを有し、複
数のスレッドを同時に動作させることができるコンピュ
ータ・システム内でアクセス競合を防ぐ。 【解決手段】 複数の動的ロック構造要素を有する動的
ロック構造を備え、また、第1の複数の記憶データ・オ
ブジェクトのうちの第2の複数の記憶データ・オブジェ
クトをマッピング関数に従って複数の動的ロック構造要
素のうちの第1の動的ロック構造要素にマップする。第
1の動的ロック構造要素は、第3の複数の記憶データ・
オブジェクトの識別表示を記憶するように構成される。
第3の複数の記憶データ・オブジェクトは、アクセスさ
れている第2の複数の記憶データ・オブジェクトのサブ
セットを表し、したがって記憶データ・オブジェクトに
現在アクセスしているスレッド以外のスレッドは、動的
ロック構造内に記憶されているその識別表示を有する記
憶データ・オブジェクトにアクセスすることができな
い。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ・シ
ステム内の記憶データ・オブジェクトを共用する方法お
よび装置に関し、さらに詳細には、本発明は、複数のプ
ロセスまたはスレッドが複数の記憶されたデータ・オブ
ジェクトに効率的かつ正確にアクセスすることができる
方法および装置に関する。
【0002】
【従来の技術】現代のコンピュータ・システムでは、複
数のプロセスまたはスレッドが書込みまたは読取りを行
うために同じ記憶データ・オブジェクトにアクセスした
いことがある。ここで使用するソフトウェア・プロセス
またはスレッドなる語は、同じ意味であり、一般に論理
上別個の実行ストリームをさす。例として、同時に動作
している複数の機能は、異なるプロセスまたはスレッド
内で実行されていると言える。
【0003】一般に、単一のプロセッサ、複数のプロセ
ッサ、またはコンピュータ・ネットワーク内の複数のコ
ンピュータを介して複数のスレッドを実行することがで
きる。説明のために、図1に、複数のスレッドがプロセ
ッサ102を介して多重方式で実行される多重プログラ
ミング状況の一例を示す。スレッドから見ると、スレッ
ドは、1つの多重プロセッサ内ではなく異なるプロセッ
サ内で実行されるように見える。
【0004】図1には、図1のコンピュータ・システム
に関連し、データを記憶する記憶スペースを示す記憶機
能110が示されている。記憶機能(SF, storage fa
cility)110は、例えば、半導体メモリ、フラッシュ
・メモリ、仮想メモリ、磁気記憶装置または光記憶装置
など、データを記憶することができる任意の装置または
複数の装置の組合せを表す。
【0005】記憶機能110内には、複数の記憶された
データ・オブジェクト112、114および116が示
されている。これらの記憶データ・オブジェクト11
2、114および116のそれぞれは、スレッド10
4、106または108の1つが書込みまたは読取りを
行いたいデータ記憶装置のユニットを表す。各記憶デー
タ・オブジェクトは、スレッドによって実施される特定
のタスクに適合するように幾通りもの形で構成され、配
置される。例として、スレッド104、106および1
08がデータベース内のデータを操作するプロセスを表
す場合、記憶データ・オブジェクト112は、例えば、
スレッド104〜108のいずれかが書込みまたは読取
りを行うことができるデータベースを表す。もちろん、
任意の数の記憶データ・オブジェクトを記憶機能110
内に準備することができる。データベース内には、例え
ば、スレッドがアクセスすることができるレコードを表
す何百万個以上もの記憶データ・オブジェクトがある。
【0006】また、スレッドによって操作すべきデータ
を記憶するユニットを表すのに「オブジェクト」なる語
を使用しているが、現代の文献においてソフトウェアに
おいて「オブジェクト指向」手法と通常呼ばれるものに
本発明を限定する意図はないことを念頭に置かれたい。
実際、本発明は、これに限定されないが、上述のオブジ
ェクト指向手法を含む従来のプログラミング手法を使用
して実施されるものである。
【0007】上述のように、複数のスレッドは、複数の
プロセッサを介して実施できる。図2および図3に、複
数のスレッドが複数のプロセッサ(図2)上で実行され
る2つの異なる多重処理状況、および複数のコンピュー
タ・システム(図3)上で実行される2つの異なる多重
処理状況を示す。図2には、それぞれ記憶データ・オブ
ジェクト112、114および116にアクセスするス
レッド130、132および134の別の1つを実行し
ている複数のプロセッサ122、124および126を
有するコンピュータ・システム120が示されている。
図3には、スレッド150、152および154が異な
るコンピュータ・システム160、162および164
上で実行される別形態が示されている。各スレッド15
0、152および154は、記憶機能110の任意の記
憶データ・オブジェクト112、114および116に
アクセスする。
【0008】2つ以上のスレッドが同じ記憶データ・オ
ブジェクトに対してアクセスを試みることがなければ、
アクセス競合は起こらない。複数のスレッドが同じ記憶
データ・オブジェクト、例えば図2の記憶データ・オブ
ジェクト112に同時にアクセスしたい場合、記憶デー
タ・オブジェクト112の同時アクセスは、誤った結果
をもたらす。説明のために、スレッド130が記憶デー
タ・オブジェクト112内のデータを更新したい状況に
ついて考える。スレッド130が記憶データ・オブジェ
クト112の内容を更新している間、他のスレッド13
2がそれを読み取るために記憶データ・オブジェクト1
12にアクセスすることを許可された場合、アクセス競
合が起こる。これは、スレッド132が記憶データ・オ
ブジェクト112の一部更新されたコピーしか得ること
ができないためである。したがって、アクセス競合のた
めに、スレッド132は誤ったデータを受け取ることに
なる。
【0009】従来技術において、上述のアクセス競合問
題を回避するいくつかの技法が提案されている。図4
に、複数のスレッドが単一の記憶データ・オブジェクト
に同時にアクセスすることを許可された場合に起こるア
クセス競合を回避する従来技術の技法を示す。次に図4
を参照すると、記憶機能110内の記憶データ・オブジ
ェクト180、182、184、186、188および
189にアクセスすることができるスレッドを表す複数
のスレッド202、204および206が示されてい
る。アクセス競合を回避するために、各記憶データ・オ
ブジェクト180〜189にはロッキング・フラグが関
連付けをされている。例えば、それぞれの記憶データ・
オブジェクト180、182、184、186、188
および189に対応するロッキング・フラグ190、1
92、194、196、198および199が示されて
いる。
【0010】スレッド、例えばスレッド202は、記憶
データ・オブジェクト、例えば記憶データ・オブジェク
ト180にアクセスした場合、アクセスした記憶データ
・オブジェクトに対応するロッキング・フラグをセット
する。記憶データ・オブジェクト180の場合、スレッ
ド202より記憶データ・オブジェクト180がアクセ
スされたとき、対応するロッキング・フラグ190がセ
ットされる。ロッキング・フラグ190がセットされて
いる間、他のスレッド、例えばスレッド204または2
06は、記憶データ・オブジェクト180にアクセスす
ることができない。スレッド202は、そのアクセスを
終了すると、ロッキング・フラグ190をリセットし、
それにより他のスレッドが記憶データ・オブジェクト1
80にアクセスすることができるようにする。
【0011】アクセス競合を回避する従来技術の技法
は、比較的少数の記憶データ・オブジェクトに対しては
十分に役立つ。しかしながら、多数の記憶データ・オブ
ジェクト、例えば何百万もの記憶データ・オブジェクト
を有するシステムにおいては、すべての記憶データ・オ
ブジェクトに対するフラグの要求は、多数の記憶データ
・オブジェクトに対して何百万個以上ものフラグが必要
となるので、記憶機能資源の極めて非能率的な使用を呈
する。各フラグが、例えば、フラグの読取りまたは書込
みの速度を高めるために通常行われるように、1バイト
(すなわち8ビット)または1ワード(すなわち32ビ
ット)を必要とする場合、すべての従来技術のフラグを
実施するのに必要なビットの数は法外に多くなる。各フ
ラグが1ビットしか必要としない場合でも、そのような
多数のフラグは、システムによっては、アクセス競合を
防ぐためだけに容認できないほど大きい記憶機能オーバ
ヘッドとなる。
【0012】さらに、記憶データ・オブジェクト当たり
のビットの数は、システムによってはあまり多くないこ
ともある。この場合、実際のデータ記憶に使用されるビ
ットの数に対するフラグを実施するのに必要なビットの
数の比率は、容認できないほど大きくなる。このオーバ
ヘッド率はまた、理解できるように、記憶データ・オブ
ジェクトのサイズが縮小するにつれて増大する傾向があ
る。
【0013】
【発明が解決しようとする課題】以上のことから、複数
のスレッドが同じ記憶データ・オブジェクトにアクセス
しようと試みた場合に起こるアクセス競合を回避する改
善された方法および装置が必要である。
【0014】
【課題を解決するための手段】本発明は、一実施形態で
は、第1の複数の記憶データ・オブジェクトを有し、複
数のスレッドを同時に動作させることができるコンピュ
ータ・システム内でアクセス競合を防ぐ装置に関する。
アクセス競合は、複数のスレッドのうちの2つ以上のス
レッドが第1の複数の記憶データ・オブジェクトの1つ
に同時にアクセスすることを許可された場合に起こる。
【0015】本装置は、複数の動的ロック構造要素を有
する動的ロック構造を含んでいる。複数の動的ロック構
造要素は、第1の複数の記憶データ・オブジェクトの数
よりも数が少ない。第1の複数の記憶データ・オブジェ
クトのうちの第2の複数の記憶データ・オブジェクト
は、マッピング関数に従って複数の動的ロック構造要素
のうちの第1の動的ロック構造要素にマップする。マッ
ピング関数では、第1の動的ロック構造要素にマップす
る第2の複数の記憶データ・オブジェクトのうちのただ
1つの記憶データ・オブジェクトが、複数のスレッドの
うちの1つのスレッドによって所与の時点においてアク
セスされるようになっている。
【0016】また、第3の複数の記憶データ・オブジェ
クトの識別表示(アイデンティティ)を記憶する第1の
動的ロック構造要素に関連付けをされた記憶機能が含ま
れている。第3の複数の記憶データ・オブジェクトは、
現在アクセスされている第2の複数の記憶データ・オブ
ジェクトのサブセットを表し、したがって記憶データ・
オブジェクトに現在アクセスしているスレッド以外のス
レッドは、動的ロック構造内に記憶されているその識別
表示を有する記憶データ・オブジェクトにアクセスする
ことができない。
【0017】他の実施形態では、第1の複数の記憶デー
タ・オブジェクトを有し、複数のスレッドを同時に動作
させることができるコンピュータ・システム内でアクセ
ス競合を防ぐ方法に関する。この方法は、複数の動的ロ
ック構造要素を有する動的ロック構造を与えるステップ
を含む。また、第1の複数の記憶データ・オブジェクト
のうちの第2の複数の記憶データ・オブジェクトをマッ
ピング関数に従って複数の動的ロック構造要素のうちの
第1の動的ロック構造要素にマップするステップがあ
る。マッピング関数のために、複数の動的ロック構造要
素は、第1の複数の記憶データ・オブジェクトの数より
も数が少なくなる。第1の動的ロック構造要素は、第3
の複数の記憶データ・オブジェクトの識別表示を記憶す
るように構成される。第3の複数の記憶データ・オブジ
ェクトは、アクセスされている第2の複数の記憶データ
・オブジェクトのサブセットを表し、したがって記憶デ
ータ・オブジェクトに現在アクセスしているスレッド以
外のスレッドは、動的ロック構造内に記憶されているそ
の識別表示を有する記憶データ・オブジェクトにアクセ
スすることができない。
【0018】本発明の上記その他の利点は、以下の詳細
な説明を読み、各図面を検討すれば明らかになろう。
【0019】
【発明の実施の形態】特に、複数のプロセスまたはスレ
ッドが複数のデータ・オブジェクトに効率的かつ正確に
アクセスすることができる本発明について説明する。以
下の説明は、本発明を完全に理解することができるよう
に、多数の特定の詳細を示す。しかしながら、本発明
は、これらの特定の詳細の一部またはすべてを用いなく
とも実施できることが当業者には明らかであろう。他の
場合には、本発明を不必要に曖昧にしないために、周知
の構造およびプロセス・ステップについては詳細に説明
していない。
【0020】本発明の一態様によれば、従来必要とされ
た全ての記憶データ・オブジェクトに対してのロッキン
グ・フラグの要求をなくすせるので有利である。所与の
時点においてアクセスされている記憶データ・オブジェ
クトの実際の数は、所与の記憶機能内の記憶データ・オ
ブジェクトの総数よりも少ないことを理解されたい。こ
の理解があれば、所与の時点において、どのスレッドか
らもアクセスされない記憶データ・オブジェクトが多数
ある(したがって、アクセス競合の危険がない)ので、
すべての記憶データ・オブジェクトに対して記憶機能内
にロックを物理的に準備する必要はないということであ
る。しかしながら、課題は、アクセス競合を防ぐために
物理的に実施されるロックの数を減らす(それにより、
この目的に充てられた記憶機能オーバヘッドを減らす)
と同時に、スレッドから記憶データ・オブジェクトにア
クセスすることができ、他のスレッドを迅速かつ効率的
にロック・アウトすることである。
【0021】本発明の一態様によれば、スレッドにより
現在アクセスされている記憶データ・オブジェクトをロ
ック・アウトする複数の物理ロックが提供される。本願
で使用している物理ロックなる語は、一般にメモリ内で
実際に実行されるデバイスをさし、その実行には、いく
らかの記憶機能資源が必要である。本発明に従って提供
される物理ロックの数は、図4の従来技術の手法と異な
り、使用できる記憶データ・オブジェクトの数よりも数
が少ないことが有利である。例えば、あるシステムで
は、1000個の物理ロックを使用して、何百万個の記
憶データ・オブジェクトへのアクセスを追跡する何百万
個の概念ロックを実施することもある。
【0022】概念的に言えば、すべての記憶データ・オ
ブジェクトには論理ロックすなわち概念ロックが関連付
けられている。所与のシステムに対しての本発明の概念
ロックの数は、従来技術の実際の物理ロックと同数であ
るが、本発明による概念ロックは、実行にあたり実際の
記憶機能資源を必要としないことが有利である。この明
細書でのそれらの説明は、本発明を当業者に周知の用語
で示すものである。概念ロックは、実世界のコンピュー
タ・システム内で実行する必要はないことを常に念頭に
置かれたい。
【0023】本発明の特徴および利点の詳細な説明のた
めに図5を参照する。図5には、複数の記憶データ・オ
ブジェクト310、312、314、320、322お
よび324を記憶する記憶機能110が示されている。
特定の記憶データ・オブジェクトがスレッドによって現
在アクセスされているかどうか(したがって、他のスレ
ッドによって試みられたアクセスをロック・アウトすべ
きかどうか)を概念的に示すために、それぞれの記憶デ
ータ・オブジェクト310、312、314、320、
322および324に関連付けをされた複数の概念ロッ
クCL_310、CL_312、CL_314、CL_
320、CL_322およびCL_324が示されてい
る。例えば、概念ロックCL_310は、ロック状態に
あり、スレッド、例えばスレッド202が記憶データ・
オブジェクト310に現在アクセスしており、他のスレ
ッド、例えばスレッド204または206によって試み
られる記憶データ・オブジェクト310へのアクセスを
拒否すべきことを示すものとして示されている。同様
に、概念ロックCL_314は、ロック状態にあり、そ
れにより現在その対応する記憶データ・オブジェクト3
14にアクセスしているスレッドを除いて、他のスレッ
ドによってその関連付けをされた記憶データ・オブジェ
クト314へのアクセスを防ぐものとして示されてい
る。一方、概念ロックCL_312、CL_320、C
L_322およびCL_324は、非ロック状態にあ
り、スレッド202、204および206のいずれかが
それらに関連付けをされた記憶データ・オブジェクトへ
のアクセスを要求することができ、それらの要求は直ち
に許可できることを示すものとして示されている。
【0024】所与の時点においてロックされた概念ロッ
クを追跡するために、本発明の一態様によれば、動的ロ
ック構造350が提供される。動的ロック構造350の
役目は、アクセス競合を防ぐために記憶データ・オブジ
ェクトへのアクセスを管理することである。概念ロック
と異なり、動的ロック構造350およびその構成部分
は、実際には組み込まれたメモリである。すなわち、動
的ロック構造350を実行する場合、実際には実際の物
理記憶機能資源が使用される。動的ロック構造350
は、スレッドによって現在アクセスされている概念ロッ
クの識別表示(これは一実施形態において記憶データ・
オブジェクトの識別表示を表す)のみを追跡することが
必要であるので、その実施に充てられた記憶機能資源の
総量は、従来技術において必要とされる量、例えば、従
来技術図4のロック・フラグを実施するのに必要なメモ
リの量と比較して少ないことが有利である。
【0025】図5に示すように、動的ロック構造350
は複数の構造要素を含んでおり、そのうちの3つの要素
M1、M2およびM3が示されている。本発明の一態様
によれば、動的ロック構造350内の動的ロック構造要
素の数は、概念ロックの数よりも少ないことが有利であ
る。動的ロック構造要素の数を少なくするために、複数
の概念ロックが、何らかのマッピング関数に従って各動
的ロック構造要素にマップされる。適切なマッピング関
数により、同時に使用されている概念ロックが異なる動
的ロック構造要素にマップされるようになり、同時に迅
速に実行されることが好ましい。システムは、例えば、
記憶データ・オブジェクトのアドレスの中央部から(例
えば、適切なビット・マスクおよびシフト命令を使用し
て)ビット群を選択するか、あるいは従来のハッシュ関
数を使用することができる。図5の例では、CL_31
0からCL_319までのすべての概念ロックは動的ロ
ック構造要素M1にマップし、CL_320からCL_
329までのすべての概念ロックは動的ロック構造要素
M2にマップする、などとなる。
【0026】図6および図7に、動的ロック構造要素M
1、M2およびM3を含む動的ロック構造350の一部
を本発明の一実施形態に従って詳細に示す。各動的ロッ
ク構造要素、例えば動的ロック構造要素M1内には、物
理ロック部分、リストロック・フラグ部分および動的リ
スト部分が示されている。一実施形態では、物理ロック
部分は、対応する動的構造要素にマップする1つの概念
ロックの識別表示か、またはこの動的ロック構造要素に
関連付けをされた動的リストが空かどうかを示すフラグ
を記憶するメモリ構造を含んでいる。概念ロックは概念
としてのみ存在するので、概念ロックの識別表示は、一
実施形態では、その対応する記憶データ・オブジェクト
の識別表示によって表されることを理解されたい。記憶
データ・オブジェクトは、例えば、メモリ内に記憶され
ている場合、その開始アドレスによって識別される。物
理ロック部分内に記憶されるフラグEMPTY及びNO
T_EMPTYは、一実施形態では、単一ビット、例え
ば、単一ビットの0と1の値によって実行される。或い
は、他の従来のロック実施形態を使用することもでき
る。
【0027】図7の動的ロック構造要素M1を参照する
と、例えば、物理ロック410は、動的ロック構造要素
M1に関連付けをされた動的リスト412が空でないこ
とを示すフラグNOT_EMPTYを記憶するものとし
て示されている。一方、動的ロック構造要素M3の物理
ロック430は、動的ロック構造要素M3の対応する動
的リスト432が現在空であることを示すフラグEMP
TYを記憶するものとして示されている。
【0028】動的ロック構造要素にマップされる概念ロ
ックは、その動的ロック構造要素にマップするすべての
概念ロックの中でスレッドによって現在アクセスされて
いる唯一の概念ロックであるならば、その概念ロック識
別表示が、その動的ロック構造要素の物理ロック部分内
に記憶される。例として、動的ロック構造要素M2にマ
ップするすべての概念ロックの中で概念ロックCL_3
22のみが現在アクセスされている場合、概念ロックC
L_322の識別表示は、動的ロック構造要素M2の物
理ロック部分、すなわち物理ロック部分420内に記憶
されることが好ましい。後で詳細に説明するように、概
念ロック識別表示が動的ロック構造要素の物理ロック部
分内に記憶できる場合は常に、スレッドが記憶データ・
オブジェクトにアクセスでき、本発明ではこのことを利
用して速度を高め、概念ロックを獲得したり、解放する
ことができる。
【0029】動的ロック構造350の各動的ロック構造
要素はさらにリストロック・フラグを含んでいる。リス
トロック・フラグは、それに関連付をされた動的リス
ト、すなわち同じ動的ロック構造要素に属する動的リス
トが所与の時点においてアクセス可能であるかどうかを
示すために使用される。図7の実施形態では、リストロ
ック・フラグは、LOCK_LISTおよびUNLOC
K_LISTの2つの状態を有し、一実施形態では、単
一ビット、例えば、ある単一ビットの0と1の値によっ
て実行される。例として、動的ロック構造要素M1は、
「LOCK_LIST」状態を現在記憶しており、対応
する動的リスト412へのアクセスが現在許可されてい
ないことを示すリストロック・フラグ414を有するも
のとして示されている。
【0030】本発明の一態様によれば、各動的ロック構
造要素の動的リスト部分は、概念ロック識別表示の動的
に生成されたリストを含んでいる。動的リスト内に記憶
されている概念ロック識別表示は、その動的リストに対
応する動的ロック構造要素にマップし、それらに関連付
けをされた記憶データ・オブジェクトがアクセスされて
いるので現在「ロック」されている概念ロックの識別表
示を表す。本発明の一態様によれば、動的に生成された
リスト、例えば、リンクされたリスト・データ構造を使
用して概念ロック識別表示を記憶することにより、記憶
機能の使用がフレキシブルかつ有利に最小限に抑えられ
る。
【0031】動的リストは、例えば、それぞれ動的ロッ
ク構造要素M2およびM3の動的リスト422および4
32の場合に示されるように、空であり得る。動的ロッ
ク構造要素内の空の動的リストに関連付けられた物理ロ
ック部分は、(動的ロック構造要素に現在1つの概念ロ
ック識別表示しか記憶されていない場合)その関連付け
られた動的ロック構造要素にマップされて現在ロックさ
れている1つの概念ロックの識別表示を記憶するか、ま
たは、(動的リスト部分にも動的ロック構造要素の物理
ロック部分にも概念ロック識別表示が記憶されていない
場合)フラグEMPTYを記憶する。概念ロック識別表
示を記憶している物理ロックおよびEMPTYフラグを
記憶している物理ロックは、動的ロック構造要素M2の
物理ロック420および動的ロック構造要素M3の物理
ロック430に示されている。
【0032】或いは、動的リストは、複数の概念ロック
識別表示を含んでいることもある。上述のように、動的
ロック構造要素が1つの概念ロック識別表示しか記憶し
ていない場合、その概念ロック識別表示は、アクセス速
度を高めるために、動的ロック構造要素の物理ロック部
分内に記憶されることが好ましい。一方、動的ロック構
造要素が複数の概念ロック識別表示、すなわちこの動的
ロック構造要素に何れもマップされてあるスレッドによ
ってアクセスされている複数の概念ロックの識別表示を
記憶している場合、これら複数の概念ロック識別表示は
すべて動的リスト部分内に記憶されることが好ましい。
したがって、動的リスト部分は、2つ以上の概念ロック
識別表示を含んでいるか、または概念ロックの識別表示
を1つも含んでいないかのどちらかである。動的ロック
構造要素の動的リスト部分が空でない場合、その動的ロ
ック構造要素に関連付けられた物理ロック部分は、NO
T_EMPTYフラグを記憶していることが好ましい。
図7を参照すると、NOT_EMPTYフラグは、ある
スレッドによってアクセスされ、動的ロック構造要素M
1にマップしている2つの記憶データ・オブジェクトに
対応する2つの概念ロック識別表示を記憶するために動
的リスト412が使用される場合は、動的ロック構造要
素M1の物理ロック410部分内に記憶されるものとし
て示されている。
【0033】動的ロック構造要素の物理部分内にフラグ
NOT_EMPTYが存在する場合は、スレッドには、
概念ロックを獲得したり解放をしようとする場合に、動
的リストを調べるべき指示が与えられると有利である。
一方、動的ロック構造要素の物理部分内にフラグEMP
TYが存在する場合、スレッドには、この動的ロック構
造要素にマップする概念ロックのいずれも現在アクセス
されていないこと、すなわちそれらのいずれでも獲得で
きることが指示されると有利である。動的ロック構造要
素の物理部分内にある概念ロック識別表示が存在する場
合、この動的ロック構造要素にマップするすべての概念
ロックのうち、この概念ロック識別表示のみが現在保持
されていること、そして、もし概念ロック識別表示が重
要でなければ、動的リストが空となるだろう(したがっ
て、この動的ロック構造にマップする他のすべての概念
ロックが必要ならば獲得できる)から動的リストを調べ
る必要はないことを、スレッドに指示すると有利であ
る。したがって(同時に保持されている概念ロックが異
なる動的ロック構造要素にマップする限り、すなわち適
切に選択したハッシュ関数によってもたらされ得る状況
における限り)物理ロック部分のみを使用して、概念ロ
ックを容易に獲得したり、解放することができる。
【0034】本発明の動的ロック構造の動作および本発
明のアクセス競合回避技法におけるその役割は、図8、
図9、図10および図11を参照すればよりよく理解で
きよう。図8および図10は、本発明の一態様によれ
ば、スレッド、例えば図5のスレッド202が記憶デー
タ・オブジェクトにアクセスしたい場合にアクセス競合
が起こらないようにするためにとられるステップを示
す。図9および図11は、それぞれ図8および図10の
ステップの説明をさらに助ける例を示す。
【0035】図8は、本発明の一態様によれば、所与の
スレッドが記憶データ・オブジェクトに関連付けられた
概念ロックを獲得したい場合に、その概念ロックが保持
されている間、他のスレッドがその記憶データ・オブジ
ェクトにアクセスするのを防ぐために行うステップを示
す。ステップ510において、概念ロックXが保持され
ている間、他のスレッドが概念ロックXに関連付けられ
た記憶データ・オブジェクトにアクセスするのを防ぐた
めに、所与のスレッド、例えばスレッドAは、所与の概
念ロック、例えば概念ロックXを獲得することを望む。
【0036】概念ロックXがマップされる動的ロック構
造要素の動的リストが空であり、かつ関連付けられた物
理ロックが他の概念ロック識別表示を記憶するのに使用
されていない場合、概念ロックXの識別表示をこの動的
ロック構造要素の物理ロック部分内に記憶する(ステッ
プ512)。概念ロックXの識別表示の物理ロック部分
内への記憶が成功した場合には、ステップ514に進
み、そこで概念ロックXが獲得され、スレッドAが概念
ロックXを保持している間、他のスレッドが概念ロック
Xに関連付けられた記憶データ・オブジェクトにアクセ
スできないことを示すメッセージを、概念ロックXを獲
得したいスレッド、例えばスレッドAに戻す。
【0037】一方、関連付けられた動的リストが空でな
い(したがって、関連付けられた物理ロックがNOT_
EMPTYフラグを記憶している)場合、または関連付
けられた物理ロックが他の概念ロックの識別表示を記憶
するのに使用されている場合には、ステップ516に進
み、そこで関連付けられた動的リストをロック・アウト
し、スレッドAが関連付けられた動的リストの操作を開
始できるようにする。概念ロックXがマップされる動的
ロック構造要素が1つまたは複数の概念ロック識別表示
を現在保持している場合にのみ、ステップ516に進む
ことに留意されたい。他のスレッドが関連付けられた動
的リストを現在ロック・アウトしている場合は、ステッ
プ516において、関連付けられた動的リストを得ら
れ、それをロック・アウトするまで待ち、その後図8の
後続のステップに進むことが好ましい。
【0038】ステップ517において、物理ロック内に
保持されている概念ロック識別表示があればそれを一次
記憶変数TEMP内に保存する。さらに、物理ロックの
内容を、この動的ロック構造に関連付けられた動的リス
トが図8のステップの終了時に空でないことを示すフラ
グNOT_EMPTYにセットする。ステップ517で
は、スレッドAが概念ロックXを獲得できる場合、物理
ロック部分内に保持された概念ロック識別表示の動的リ
スト内への後続の記憶を容易にすると有利である。図5
において後で理解できるように、概念ロックXがすでに
他のスレッドによって保持されており、スレッドAがア
クセスすることができない場合は、後続のステップにお
いてステップ517を逆転させ、物理ロック内に記憶さ
れた値をも元に戻し、その後ロックXを獲得する試みが
失敗したことをスレッドAに知らせる。
【0039】動的リストの検査に進む前に、ステップ5
40において、フラグEMPTYを含んでいるかどうか
を確認するために位置TEMPを検査する。例えば、ス
レッドAがステップ512を終了した後でスレッドAが
ステップ516を実行する前に、他のスレッドが動的ロ
ック構造要素の物理ロック部分内に記憶されている最後
の概念ロックをロック解除している場合、プロセス中の
この点においては、TEMP位置には、フラグEMPT
Yが含まれている。
【0040】位置TEMPがフラグEMPTYを含んで
いる(とステップ540において確認された)場合は、
ステップ542に進み、概念ロックXの識別表示を物理
ロック部分内に記憶する。その後で、ステップ544に
進み、そこでステップ516のアンドゥ(解除)を行
う、すなわち他のスレッドがこの動的リストにアクセス
できるように関連付けられた動的リストをロック解除す
る。ステップ514において、概念ロックXを得ること
ができ、スレッドAが概念ロックXを保持している間、
他のスレッドが概念ロックXに関連付けられた記憶デー
タ・オブジェクトにアクセスできないことを示すメッセ
ージを、概念ロックXを獲得したいスレッド、例えばス
レッドAに戻す。理解できるように、ステップ540、
542、544および514を通るパスは、スレッドA
が概念ロックXを獲得できるようにするための関連付け
られた動的リストの操作や検査が不要なので最適化され
ている。
【0041】位置TEMPがフラグEMPTYを含んで
いない(とステップ540において確認された)場合、
ステップ518に進み、概念ロックXが使用できるかど
うかを確認するために、動的リストならびにこの動的ロ
ック構造要素に関連付けられた位置TEMPを検査す
る。概念ロックXは、他のスレッドによって現在アクセ
スされており、したがってその識別表示がすでに関連付
けられた動的リスト内または(スワップ・ステップ51
7において物理ロックからその値を得る)TEMP位置
に記憶されている場合には、使用できない。使用できな
い場合、ステップ519に進み、そこで前に物理ロック
部分内に記憶された値をも物理ロック部分に戻すことに
よって前のステップ517をアンドゥ(解除)する。次
いで、ステップ520に進み、他のスレッドが関連付け
られた動的リストにアクセスできるよう、関連付けられ
た動的リストをロック解除する。その後、ステップ52
2において、概念ロックXを獲得する試みが失敗したこ
とを知らせるメッセージをスレッドAに戻す。
【0042】一方、ステップ518において、概念ロッ
クXが使用できる(概念ロックXの識別表示が関連付け
られた動的リスト内にもTEMP位置にも記憶されてい
ない)ことが確認された場合、ステップ524に進み、
そこで概念ロックXの識別表示を含めて、この動的ロッ
ク構造にマップし、スレッドによって現在保持されてい
るすべての概念ロックIDを、関連付けられた動的リス
ト内に記憶する。これで、ステップ524を実行した
後、概念ロックXに関連付けられた動的ロック構造にマ
ップし、現在保持されている複数の概念ロック識別表示
が関連付けられた動的リスト内に記憶されていることに
なる。
【0043】次いで、ステップ528において、他のス
レッドが関連付けられた動的リストにアクセスできるよ
う、この関連付けられた動的リストをロック解除する。
次いで、ステップ530において、概念ロックXを獲得
する試みが成功したことを知らせるメッセージをスレッ
ドAに戻し、これで概念ロックが保持され、したがって
他のスレッドはそれにアクセスすることができない。
【0044】図9は、一例において、スレッド202が
図7の概念ロックCL_322を獲得したいときの図8
のステップを示す(ステップ550)。概念ロックCL
_322は動的ロック構造要素M2にマップするので、
ステップ522において、物理ロック420の値を(一
実施形態では値0によって表される)フラグEMPTY
と比較し、物理ロック420の内容がEMPTYに等し
ければ、概念ロックCL_322の識別表示を物理ロッ
ク420の内容とスワップする。
【0045】概念ロックCL_322がマップする動的
ロック構造要素、すなわち動的ロック構造要素M2が、
その関連付けられた概念ロック、例えば図5の概念ロッ
クCL_320、CL_322およびCL_324の識
別表示を記憶していない場合は、物理ロック420の内
容は、EMPTYに等しくなる。物理ロック420がE
MPTYフラグを記憶していることがステップ522に
おいて確認された場合は、比較およびスワップ操作は成
功であり、ステップ553に進み、そこで概念ロックC
L_322の獲得の試みが成功したことをスレッド20
2に知らせる。ステップ533の後、概念ロックCL_
322の識別表示を物理ロック420内に記憶する。
【0046】一方、ステップ522において、物理ロッ
ク420の内容がフラグEMPTYに等しくない(物理
ロック420が動的ロック構造要素M2に関連付けられ
た動的リスト、すなわち動的リスト422が空でないこ
とを示すフラグ状態NOT_EMPTYを記憶している
か、または物理ロック420が概念ロックの識別表示を
現在記憶している)ことが確認された場合、ステップ5
54に進み、そこでリストロック・フラグ424を状態
LOCK_LISTにセットする。ステップ554にお
いて、動的リスト422にアクセスしようと試みる他の
スレッドをロック・アウトすることによって、スレッド
202のために動的リスト422を獲得する。一実施形
態では、LOCK_LISTは、単一ビットの値1だけ
で表される。
【0047】リストロック・フラグ424をLOCK_
LISTにセットすることにより、他のスレッドからの
妨害なしにスレッド202のために動的ロック構造M2
に関連付けられた動的リストを操作することができる。
ステップ556において、一次記憶位置TEMPをフラ
グNOT_EMPTYにセットし、この一時記憶位置T
EMPを物理ロック420にスワップする。
【0048】ステップ558において、概念ロックCL
_322の識別表示がすでに動的リスト422内かまた
は一次位置TEMP内に記憶されているかを確認する。
概念ロックCL_322の識別表示がすでに動的リスト
422内かまたは一次位置TEMP内に記憶されている
場合、他のスレッドがすでに概念ロックCL_322を
獲得している。この場、概念ロックCL_322を獲得
するスレッド202による試みは失敗であり、ステップ
560に進み、一次位置TEMPの識別表示を物理ロッ
ク420内に戻す、即ち前のスワップ・ステップ556
を解除する。
【0049】ステップ562において、リストロック・
フラグ424をUNLOCK_LISTにセットする、
すなわち他のスレッドが動的リスト422にアクセスす
ることができるよう、前のロッキング・ステップ554
を解除する。ステップ564において、概念ロックCL
_322を獲得する試みが失敗したことを知らせるメッ
セージをスレッド202に戻す。
【0050】一方、ステップ558において、所望の概
念ロック、すなわち概念ロックCL_322の識別表示
が動的リスト422内かまたは一次記憶位置TEMP内
に記憶されていないことが確認された場合、概念ロック
CL_322は、他のスレッドによって獲得されておら
ず、したがってスレッド202が獲得することができ
る。この場合は、ステップ566に進み、動的リスト4
22に概念ロックCL_322の識別表示を追加する。
【0051】ステップ570において、以前のロッキン
グ・ステップ554を解除するために、リストロック・
フラグ424を状態UNLOCK_LISTにセット
し、それにより他のスレッドが動的リスト422にアク
セスすることができるようにする。ステップ572にお
いて、概念ロックCL_322を獲得するスレッド20
2の試みが成功したことを知らせるメッセージをスレッ
ド202に戻す。
【0052】ステップ580において、位置TEMPが
EMPTYに等しいことかどうかを検査する。位置TE
MPがEMPTYに等しければ、ステップ582、58
4および553を含む高速パスを介して概念ロックCL
_322の獲得を開始する。ステップ582〜584
は、前に図8に関して説明したステップ542〜544
に類似している。その後、ステップ553に進み、概念
ロックCL_322を獲得する試みが成功したことをス
レッド202に知らせる。
【0053】図9において、スレッド202は、異なる
3つのパスを介して概念ロックCL_322を獲得でき
ることに留意されたい。動的ロック構造要素M2が前に
概念ロック識別表示を記憶しておらず、かつ概念ロック
CL_322がこの動的ロック構造要素M2によって記
憶された第1の概念ロックを表す場合、ステップ55
0、552および553に進み、スレッド202が概念
ロック322に迅速にアクセスすることができるように
する。これらのステップは、数が少ないだけでなく、ス
テップ552におけるスワップ操作が一般にプロセッサ
によって実行されうる高速操作の1つであるので比較的
迅速である。この場合、本発明のアクセス競合回避シス
テムの性能は、すべての単一記憶データ・オブジェクト
のロック・フラグを記憶するために相当量の記憶機能オ
ーバヘッドを必要とする従来技術の方法とほとんど同じ
くらい効率的である。
【0054】一方、ステップ552とステップ554の
間で競合状態が起こっている場合、関連付けられた動的
リストの操作または検索を必要とせずに、比較的速いパ
ス(550/552/554/556/580/382
/584/443)を介して概念ロックの獲得を達成す
ることができる。
【0055】一方、動的ロック構造要素M2が既に1つ
または複数の概念ロック識別表示、例えば概念ロックC
L_320、CL_322およびCL_324の1つを
保持している場合、ステップ550、552、554、
556、558、566、568、570および572
を含むパスに進み、スレッド202が概念ロックXを獲
得することができるようにし、またこれら複数の概念ロ
ック識別表示を動的ロック構造要素M2の動的リスト内
に記憶することができるようにする。
【0056】図10に、本発明の一態様に従って、スレ
ッド、例えばスレッドAが、前に獲得した概念ロック、
例えば概念ロックXを解放したい場合に行うステップ
(ステップ602)を示す。ステップ604において、
関連付けられた物理ロックの内容が概念ロックXの識別
表示を含んでいる場合、EMPTYフラグを関連付けら
れた物理ロックの内容内に記憶する。関連付けられた物
理ロックの内容が概念ロックXの識別表示である場合、
他の概念ロックIDは、概念ロックXがそれにマップす
る動的ロック構造要素によって記憶される。この場合
は、ステップ604において、解放を迅速に行い、ステ
ップ606において、概念ロックXは解放され、他のス
レッドが獲得のために使用できると考えられる。
【0057】一方、関連付けられた物理ロックの内容が
概念ロックXの識別表示ではない場合、概念ロックXが
マップする動的ロック構造要素は、複数の概念ロック識
別表示を現在記憶している。この場合、ステップ608
に進み、そこで、他のスレッドが現れて関連付けられた
動的リストの修正をするのを防ぐために、この関連付け
られた動的リストをロック・アウトすると同時に、スレ
ッドAのために、概念ロックXを、関連付けられた動的
リストからの除去によって解放する。
【0058】ステップ610において再び、前のステッ
プ604の検査およびスワップ操作を実施する。ステッ
プ610の検査およびスワップ操作は、ステップ608
において動的リストをロック・アウトしようとしている
間、スレッドAと現在同時に動作している他のスレッド
は、概念ロックXの識別表示を関連する物理ロック内に
入れてしまっているので、(ステップ608において)
関連付けられた動的リストをロック・アウトした後で行
うことが望ましい。他のスレッドが概念ロックXの識別
表示を関連付けられた物理ロック内に入れる理由は、最
適化と関係があり、図10の残りの説明から明らかにな
ろう。
【0059】ステップ610において、関連付けられた
物理ロックの内容が概念ロックXの識別表示であり、検
査およびスワップ操作が成功したことが確認された場
合、ステップ612に進み、そこで他のスレッドが関連
付けられた動的リストにアクセスすることができるよう
に、関連付けられた動的リストをロック解除する、すな
わちロック・アウト・ステップ608の逆を行う。ステ
ップ612の実行をした後、概念ロックXはスレッドA
によって解放されたと考えられ、他のスレッドが獲得す
ることができる。
【0060】一方、ステップ610において、関連付け
られた物理ロックの内容がまだ概念ロックXの識別表示
でないこと、すなわち検査およびスワップ操作が再び失
敗したことが確認された場合、ステップ614に進み、
そこで概念ロックXの識別表示を関連付けられた動的リ
ストから除去する。概念ロックXの識別表示は関連付け
られた動的リスト内にはなく、また関連付けられた物理
ロックの内容内になかった(とステップ610において
判定された)ので、概念ロックXがマップする動的ロッ
ク構造要素は、ステップ614を実行した後、概念ロッ
クXの識別表示を追跡しない。したがって、後続のスレ
ッドが現れ、図10のステップが終了した後、概念ロッ
クXを獲得することができる。
【0061】ステップ616、618、620、622
および624において、可能なら、概念ロックXがマッ
プする動的ロック構造要素がただ1つの概念ロック識別
表示を記憶している場合、その概念ロック識別表示が好
ましくは関連付けられた物理ロックの内容内に移動され
るよう動的ロック構造要素を最適化する。従って、残り
の1つの概念ロックXを保持するスレッドは、それを解
放したい場合、ステップ602、604および606を
含むパスを介して迅速にその解放をすることができる。
この最適化を行わなければ、フラグNOT_EMPTY
にセットされた物理ロックは、フラグNOT_EMPT
Yにセットされない。EMPTY状態に戻れば、概念ロ
ックをパス602/604/606を介して迅速に解放
することができるので有利である。
【0062】ステップ616において、概念ロックXの
識別表示が(ステップ164において)関連付けられた
動的リストから削除された後に、関連付けられた動的リ
ストにただ1つの概念ロック識別表示が残されているか
どうかを確認する。関連付けられた動的ロック構造要素
が追跡すべき複数の概念ロックIDが残っている場合
は、ステップ624に進み、そこでスレッドAが概念ロ
ックXを解放するステップを終了する。
【0063】一方、概念ロックXがマップする動的ロッ
ク構造要素が、その関連付けられた動的リスト内にただ
1つの概念ロック識別表示を追跡する場合は、ステップ
616からステップ618へ進み、そこで関連付けられ
た物理ロックの内容を残りの1つの概念ロックの識別表
示にセットする。ステップ620において、関連付けら
れた動的ロック構造要素がその物理ロック内ならびにそ
の動的リスト内でこの残りの1つの概念ロックを追跡し
ないように、この残りの1つの概念ロックの識別表示を
関連付けられた動的リストから削除する。ステップ62
2において、後続のスレッドが関連付けられた動的リス
トにアクセスすることができるように、関連付けられた
動的リストをロック解除する、すなわちロッキング・ス
テップ608を逆転させる。ステップ624において、
概念ロックXを解放する場合に行うステップを終了す
る。
【0064】図10のステップは、(図7に鑑みて)図
11によって示される例を参照すればより完全に理解す
ることができる。図11において、スレッド202は、
前に獲得した概念ロックCL_322を解放することを
望む(ステップ652)。ステップ654において、物
理ロック420の内容が概念ロックCL_322の識別
表示を含んでいる場合、EMPTYフラグを(図7の)
関連付けられた物理ロック420の内容内に記憶する。
関連付けられた物理ロック420の内容が概念ロックC
L_322の識別表示である場合、他の概念ロックID
は、概念ロックCL_322がマップする動的ロック構
造要素、すなわち動的ロック構造要素M2によっては記
憶されない。この場合、ステップ654において、解放
を迅速に実施し、概念ロックCL_322が解放され、
ステップ656において、他のスレッドが獲得のために
使用できると考えられる。
【0065】一方、関連付けられた物理ロック420の
内容が概念ロックCL_322の識別表示を含んでいる
場合、動的ロック構造要素M2は現在、複数の概念ロッ
ク識別表示(現在保持されている概念ロックCL_32
2の他に少なくとも2つ以上)を記憶していることが理
解される。この場合、ステップ658に進み、そこで他
のスレッドが現れて関連付けられた動的リスト422の
修正をするのを防ぐために、この関連付けられた動的リ
スト422をロック・アウトすると同時に、スレッド2
02のために、概念ロックCL_322を、関連付けら
れた動的リスト422からの除去によって解放する。
【0066】ステップ660において、は再び、前のス
テップ654の検査およびスワップ操作を実施する。ス
テップ660の検査およびスワップ操作は、ステップ6
58において関連付けられた動的リスト422をロック
・アウトしようとしている間に、スレッド202と現在
同時に動作している他のスレッドは、概念ロックCL_
322の識別表示を関連付けられた物理ロック420内
に入れてしまっているので、(ステップ658におい
て)関連付けられた動的リスト422をロック・アウト
した後で行うことが望ましい。他のスレッドが概念ロッ
クCL_322の識別表示を関連付けられた物理ロック
420内に入れる理由は、図10のステップ616、6
18、620、622および624に関して前に論じ
た。
【0067】図11のステップ660において、関連付
けられた物理ロック420の内容が概念ロックCL_3
22の識別表示であり、検査およびスワップ操作が成功
したことが確認された場合、ステップ662に進み、そ
こで他のスレッドが関連付けられた動的リスト422に
アクセスすることができるように、関連付けられた動的
リスト422をロック解除する、すなわちロック・アウ
ト・ステップ658を逆転させる。ステップ662を実
行した後、概念ロックCL_322はスレッド202に
よって解放されたと考えられ、他のスレッドが獲得する
ことができる。
【0068】一方、図11のステップ660において、
関連付けられた物理ロック420の内容がまだ概念ロッ
クCL_322の識別表示でないこと、すなわち検査お
よびスワップ操作が再び失敗したことが確認された場
合、ステップ664に進み、そこで概念ロックCL_3
22の識別表示を関連付けられた動的リスト422から
除去する。概念ロックCL_322の識別表示は関連付
けられた動的リスト422内になく、また関連付けられ
た物理ロック420の内容内になかった(とステップ6
60において判定された)ので、動的ロック構造要素M
2は、ステップ664を実施した後、概念ロックCL_
322の識別表示を追跡しない。したがって、後続のス
レッドが現れ、図11のステップが終了した後、概念ロ
ックCL_322を獲得することができる。
【0069】ステップ666、668、670、672
および674において、可能なら、動的ロック構造要素
M2がただ1つの概念ロック識別表示を記憶している場
合、概念ロック識別表示が好ましくは関連付けられた物
理ロック420の内容内に移動されるよう、動的ロック
構造要素M2を最適化する。したがって、残りの1つの
概念ロックを保持するスレッドは、その概念ロックを解
放したい場合、ステップ652、654および656を
含むパスを介して迅速にそれを解放することができる。
【0070】ステップ666において、関連付けられた
動的リスト422が、概念ロックCL_322の識別表
示が(ステップ664において)関連付けられた動的リ
スト422から削除された後に残っているただ1つの概
念ロック識別表示を有しているかどうかを確認する。関
連付けられた動的ロック構造要素M2により追跡される
べき複数の概念ロックIDが残っている場合、ステップ
674に進み、そこでスレッド202が概念ロックCL
_322を解放するステップを終了する。
【0071】一方、動的ロック構造要素M2がその関連
付けられた動的リスト422内にただ1つの概念ロック
識別表示を追跡する場合、ステップ666からステップ
668へ進み、そこで関連付けられた物理ロック420
の内容を残りの1つの概念ロックの識別表示にセットす
る。ステップ670において、関連付けられた動的ロッ
ク構造要素M2がその物理ロック420内ならびにその
動的リスト422内でこの残りの1つの概念ロックを追
跡しないように、この残りの1つの概念ロックの識別表
示を関連付けられた動的リストから削除する。
【0072】ステップ672において、後続のスレッド
が関連付けられた動的リスト422にアクセスすること
ができるように、関連付けられた動的リスト422をロ
ック解除する、すなわちロックリスト・フラグ424を
フラグ状態UNLOCK_LISTにセットすることに
よってロッキング・ステップ668を逆転させる。
【0073】本発明では、複数の動的リストを使用し
て、概念ロック識別表示を追跡することに留意された
い。さらに、その動的リストに関連付けられた動的ロッ
ク構造要素によって保持されている概念ロックが複数存
在する場合、動的リストを使用する。代わりに単一の動
的リストを使用して、保持されているすべての概念ロッ
クを追跡した場合、スレッドは、所与のロックが現在保
持されているかどうかを判定するために、またはそのリ
ストから現在保持されているロックを削除するために、
リスト全体を探査しなければならない。多数の概念ロッ
クが保持されている場合、この探査には不当に時間がか
かり、またその実施が実行不可能になる。
【0074】本発明では、比較的少数の概念ロック(例
えば、一実施形態では3つまたは4つ)を所与の動的ロ
ック構造要素にマップする。したがって、動的リストに
よって保持される概念ロックの最大数は比較的小さくな
り、したがって概念ロックの獲得または解放の速度が高
くなる。さらに動的リストは、その動的リストに関連す
る動的ロック構造要素によって保持されている概念ロッ
クが複数存在する場合にのみ使用される。動的ロック構
造要素がただ1つの概念ロック識別表示を追跡する場
合、物理ロック部分を使用して追跡を行うことが好まし
く、それにより、本発明は、すべての記憶データ・オブ
ジェクトについてロックを物理的に必要とする従来技術
とほとんと同じ速さで概念ロックの獲得または解放を行
うことができるようになる。
【0075】さらに、各動的ロック構造要素が平均して
わずか数個または1つの概念ロックを保持するように動
的ロック構造要素の最適数を選択することによって、コ
ンピュータ・システムの性能を調整することができる。
各動的ロック構造要素が平均してわずか1つの概念ロッ
ク識別表示を保持できるようにする(したがって物理ロ
ッを最大限に使用する)ことによって性能を最適化する
実施形態では、コンピュータ設計者は、所与の時点にお
いてアクセスすべき記憶データ・オブジェクトの平均数
にほぼ比例するように、動的ロック構造要素の数を選択
することができる。この所与の時点においてアクセスす
べき記憶データ・オブジェクトの平均数は、例えば、統
計的方法または他の従来の方法によって試行錯誤して決
定することができる。例えば、ある所与の時点において
使用できる概念ロックの10分の1しか保持されていな
いことが確認された場合、動的構造は、(N/10)個
の動的ロック構造要素またはその整数倍を有しており
(ただしNは、概念ロックの総数を表す)、したがって
動的ロック構造要素内、すなわちその物理ロック部分内
に平均してただ1つの概念ロック識別表示が記憶される
ことになる。したがって、アクセス速度が有利に最大に
なる。一実施形態では、設計者は、動的ロック構造要素
の数を減らすことによって、速度とメモリ・オーバヘッ
ドとの兼ね合いをはかることができる。動的ロック構造
要素が平均して複数の概念ロック識別表示を保持してい
る場合でもなお、従来技術のメモリ・オーバヘッドを減
らす目的は有利に達成される。
【0076】さらに、本発明は、本願に記載のロック以
外のタイプのロックを使用するシステムにも十分同様に
適用できる。あるシステムでは、例えば、スレッドが読
取りまたは書込みのために記憶データ・オブジェクトに
アクセスする場合、その記憶データ・オブジェクト上の
ロックが獲得される。他のシステムでは、複数のスレッ
ドが記憶データ・オブジェクトを同時に読み取ることは
できるが、その記憶データ・オブジェクトに書込みを行
いたいスレッドがロックを獲得することはできないロッ
クが存在する。本願に記載の発明を異なるタイプのロッ
クに適合させることは、この開示を得た当業者の力量で
できることである。
【0077】以上、本発明についていくつかの好ましい
実施形態に関して説明したが、本発明の範囲内に入る改
変例、置換例および同等物もある。また、本発明の方法
および装置を実施する他の方法も多数ある。したがっ
て、首記の請求の範囲は、本発明の真の精神および範囲
内に入るすべての改変例、置換例および同等物を含むも
のと解釈すべきものである。
【図面の簡単な説明】
【図1】複数のスレッドがプロセッサを介して多重方式
で実行される多重プログラミング状況を示す図である。
【図2】複数のスレッドが複数のプロセッサ上で実行さ
れる2つの異なる多重処理状況を示す図である。
【図3】複数のスレッドが複数のコンピュータ上で実行
される2つの異なる多重処理状況を示す図である。
【図4】複数のスレッドが単一の記憶データ・オブジェ
クトへのアクセスを許される場合に生じることあるアク
セス競合を回避する従来の技術を示す図である。
【図5】本発明の一態様に従ってアクセス競合を回避す
るために使用される構造を示す図である。
【図6】本発明の一態様に従って図5の動的ロック構造
を詳細に示す図である。
【図7】一例において図5の動的ロック構造の各要素中
に存在する各種パラメータを示す図である。
【図8】一実施形態において記憶データ・オブジェクト
にアクセスするために概念ロックを獲得したい場合に行
うステップを示す流れ図である。
【図9】一実施形態において記憶データ・オブジェクト
にアクセスするために概念ロックを獲得したい場合に行
うステップを示す流れ図である。
【図10】一実施形態において概念ロックを解放したい
場合に行うステップを示す流れ図である。
【図11】一実施形態において概念ロックを解放したい
場合に行うステップを示す流れ図である。
【符号の説明】
202、204、206 スレッド 310、312、314、320、322、324 記
憶データ・オブジェクト 350 動的ロック構造
フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 マーク・ドナルド・ヒル アメリカ合衆国・53705・ウィスコンシン 州・マディソン・チャンバーレイン アヴ ェニュ・2124

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 第1の複数の記憶データ・オブジェクト
    を有し、複数のスレッドを同時に動作させることができ
    るコンピュータ・システム内で、前記複数のスレッドの
    うちの2つ以上のスレッドが前記第1の複数の記憶デー
    タ・オブジェクトの1つに同時にアクセスすることを許
    可された場合に起こるアクセス競合を防ぐ装置におい
    て、 前記第1の複数の記憶データ・オブジェクトの数よりも
    数が少ない複数の動的ロック構造要素であって、前記第
    1の複数の記憶データ・オブジェクトのうちの第2の複
    数の記憶データ・オブジェクトが、マッピング関数に従
    って前記複数の動的ロック構造要素のうちの第1の動的
    ロック構造要素にマップし、前記マッピング関数が、前
    記第1の動的ロック構造要素にマップする前記第2の複
    数の記憶データ・オブジェクトのうちのただ1つの記憶
    データ・オブジェクトが前記複数のスレッドのうちの1
    つのスレッドによって所与の時点においてアクセスされ
    るようにする、複数の動的ロック構造と、 現在アクセスされている前記第2の複数の記憶データ・
    オブジェクトのサブセットを表す第3の複数の記憶デー
    タ・オブジェクトの識別表示を記憶し、それにより現在
    前記記憶データ・オブジェクトにアクセスしているスレ
    ッド以外のスレッドが、前記動的ロック構造内に記憶さ
    れているその識別表示を有する記憶データ・オブジェク
    トにアクセスすることができない、前記第1の動的ロッ
    ク構造要素に関連する記憶機能とを含んでいるアクセス
    競合を防ぐ装置。
  2. 【請求項2】 第1の複数の記憶データ・オブジェクト
    を有し、複数のスレッドを同時に動作させることができ
    るコンピュータ・システム内で、前記複数のスレッドの
    うちの2つ以上のスレッドが前記第1の複数の記憶デー
    タ・オブジェクトの1つに同時にアクセスすることを許
    可された場合に起こるアクセス競合を防ぐ方法におい
    て、 複数の動的ロック構造要素を有する動的ロック構造を与
    えるステップと、 前記第1の複数の記憶データ・オブジェクトのうちの第
    2の複数の記憶データ・オブジェクトをマッピング関数
    に従って前記複数の動的ロック構造要素の第1の動的ロ
    ック構造要素にマップし、それにより前記複数の動的ロ
    ック構造要素が前記第1の複数の記憶データ・オブジェ
    クトの数よりも数が少なくなる、マッピングするステッ
    プとを含み、前記第1の動的ロック構造要素が、アクセ
    スされている前記第2の複数の記憶データ・オブジェク
    トのサブセットを表す第3の複数の記憶データ・オブジ
    ェクトの識別表示を記憶するように構成され、それによ
    り現在前記記憶データ・オブジェクトにアクセスしてい
    るスレッド以外のスレッドが、前記動的ロック構造内に
    記憶されているその識別表示を有する記憶データ・オブ
    ジェクトにアクセスできないようにすることを特徴とす
    る、アクセス競合を防ぐ方法。
  3. 【請求項3】 第1の複数の記憶データ・オブジェクト
    を有し、第1のスレッドと第2のスレッドを同時に動作
    させることができるコンピュータ・システム内で、前記
    第1のスレッドおよび第2のスレッドが前記第1の複数
    の記憶データ・オブジェクトのうちの第1の記憶データ
    ・オブジェクトに同時にアクセスすることを許可された
    場合に起こるアクセス競合を防ぐ方法において、 前記第1のスレッドによって試みられた前記第1の記憶
    データ・オブジェクトへのアクセスを容易にするステッ
    プを含み、このアクセスを容易にするステップには、 前記動的ロック構造要素が記憶データ・オブジェクトの
    識別表示を記憶していない場合に、前記第1の記憶デー
    タ・オブジェクトの識別表示を前記動的ロック構造の物
    理ロック部分内に記憶するステップと、 前記動的ロック構造要素が前記第1の記憶データ・オブ
    ジェクトと異なる第2の記憶データ・オブジェクトのた
    だ1つの識別表示を前記物理ロック部分内に記憶してい
    る場合に、前記第1の記憶データ・オブジェクトの前記
    識別表示ならびに前記第2の記憶データ・オブジェクト
    の前記識別表示を前記動的ロック構造の動的リスト部分
    内に記憶するステップ、および前記動的リストが現在空
    でないことを示す第1のフラグを前記動的ロック構造の
    前記物理ロック部分内に記憶するステップと、 前記動的ロック構造要素が前記第1の記憶データ・オブ
    ジェクトと同じ第2の記憶データ・オブジェクトのただ
    1つの識別表示を記憶している場合に、前記第1のスレ
    ッドによって試みられた前記第1の記憶データ・オブジ
    ェクトへの前記アクセスを失敗したものとして拒否する
    ステップと、 前記物理ロックが、前記動的リストが現在空でないこと
    を示す前記第1のフラグを記憶している場合に、前記第
    1の記憶データ・オブジェクトの前記識別表示がすでに
    前記動的リスト内に記憶されているかどうかを確認する
    ために前記動的リストを調べるステップとを含んでお
    り、この動的リストを調べる前記ステップが、 前記動的リストが既に前記第1の記憶データ・オブジェ
    クトの前記識別表示記憶している場合に、前記第1のス
    レッドによって試みられた前記第1の記憶データ・オブ
    ジェクトへの前記アクセスを失敗したものとして拒否す
    るステップと、 前記動的リストがまだ前記第1の記憶データ・オブジェ
    クトの前記識別表示記憶していない場合に、前記第1の
    スレッドによって試みられた前記第1の記憶データ・オ
    ブジェクトへの前記アクセスを許可し、前記第1の記憶
    データ・オブジェクトの前記識別表示を前記動的リスト
    内に記憶するステップとを含んでいることを特徴とする
    方法。
JP9187269A 1996-07-01 1997-06-30 アクセス競合を防ぐ装置および方法 Pending JPH10187527A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/673130 1996-07-01
US08/673,130 US5835906A (en) 1996-07-01 1996-07-01 Methods and apparatus for sharing stored data objects in a computer system

Publications (1)

Publication Number Publication Date
JPH10187527A true JPH10187527A (ja) 1998-07-21

Family

ID=24701432

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9187269A Pending JPH10187527A (ja) 1996-07-01 1997-06-30 アクセス競合を防ぐ装置および方法

Country Status (3)

Country Link
US (1) US5835906A (ja)
EP (1) EP0817040A3 (ja)
JP (1) JPH10187527A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000050B2 (en) 2002-11-15 2006-02-14 Matsushita Electric Industrial Co., Ltd Apparatus, method and program for contention arbitration
JP2008293368A (ja) * 2007-05-25 2008-12-04 Toyota Motor Corp マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット
JPWO2013021441A1 (ja) * 2011-08-05 2015-03-05 富士通株式会社 データ処理システム、およびデータ処理方法

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718550B1 (en) 1996-06-26 2004-04-06 Sun Microsystems, Inc. Method and apparatus for improving the performance of object invocation
JP3733695B2 (ja) * 1997-02-05 2006-01-11 富士ゼロックス株式会社 データベース管理システム
US6016489A (en) * 1997-12-18 2000-01-18 Sun Microsystems, Inc. Method and apparatus for constructing stable iterators in a shared data collection
US6405264B1 (en) 1997-12-18 2002-06-11 Sun Microsystems, Inc. Marshaling and unmarshaling framework for supporting filters in a distributed object system
US6510460B1 (en) 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6438616B1 (en) 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US6249803B1 (en) 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6268850B1 (en) * 1997-12-22 2001-07-31 Sun Microsystems, Inc. User interface for the specification of lock groups
US7013305B2 (en) 2001-10-01 2006-03-14 International Business Machines Corporation Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange
US6546414B1 (en) * 1999-08-23 2003-04-08 International Business Machines Corporation Method, system and program products for copying coupling facility lock structures
US6609214B1 (en) 1999-08-23 2003-08-19 International Business Machines Corporation Method, system and program products for copying coupling facility structures
US6546466B1 (en) 1999-08-23 2003-04-08 International Business Machines Corporation Method, system and program products for copying coupling facility cache structures
US6542970B1 (en) 1999-08-23 2003-04-01 International Business Machines Corporation Method, system and program products for copying coupling facility list structures
US6681225B1 (en) 2000-05-31 2004-01-20 International Business Machines Corporation Method, system and program products for concurrent write access to a global data repository
US7487152B1 (en) * 2000-05-31 2009-02-03 International Business Machines Corporation Method for efficiently locking resources of a global data repository
US6591275B1 (en) 2000-06-02 2003-07-08 Sun Microsystems, Inc. Object-relational mapping for tables without primary keys
US7028300B2 (en) * 2001-11-13 2006-04-11 Microsoft Corporation Method and system for managing resources in a distributed environment that has an associated object
US20030105871A1 (en) * 2001-11-13 2003-06-05 Microsoft Corporation, Method and system for modifying lock properties in a distributed environment
US6748470B2 (en) * 2001-11-13 2004-06-08 Microsoft Corporation Method and system for locking multiple resources in a distributed environment
US7406519B2 (en) 2001-11-13 2008-07-29 Microsoft Corporation Method and system for locking resources in a distributed environment
WO2004025479A2 (en) * 2002-09-09 2004-03-25 Sap Aktiengesellschaft Methods and systems for moving data objects using locks
US7693881B2 (en) * 2002-09-09 2010-04-06 Sap Ag Methods and systems for moving data using locks
US7653667B2 (en) * 2002-09-09 2010-01-26 Sap Ag Methods and systems for data moving using locks
US20060149696A1 (en) * 2002-09-09 2006-07-06 Thorsten Pferdekaemper Method and systems for controlling access to a data object by means of locks
US7457933B2 (en) * 2002-09-09 2008-11-25 Sap Ag Methods and systems for archiving data
US7756813B2 (en) * 2002-09-09 2010-07-13 Sap Ag Electronic data structure for controlling access to data objects using locks
US7444634B2 (en) * 2002-10-31 2008-10-28 Sun Microsystems, Inc. Method and apparatus for providing dynamic locks for global resources
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7747634B2 (en) * 2007-03-08 2010-06-29 Microsoft Corporation Rich data tunneling
EP2195724B1 (en) 2007-08-28 2019-10-09 Commvault Systems, Inc. Power management of data processing resources, such as power adaptive management of data storage operations
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US20100333116A1 (en) 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
CA2716544C (en) 2010-10-08 2014-05-20 Traffix Communication Systems Ltd. Method and system for providing network services
US9461881B2 (en) 2011-09-30 2016-10-04 Commvault Systems, Inc. Migration of existing computing systems to cloud computing sites or virtual machines
US9262496B2 (en) 2012-03-30 2016-02-16 Commvault Systems, Inc. Unified access to personal data
US8950009B2 (en) 2012-03-30 2015-02-03 Commvault Systems, Inc. Information management of data associated with multiple cloud services
US20140181044A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Systems and methods to identify uncharacterized and unprotected virtual machines
US9223597B2 (en) 2012-12-21 2015-12-29 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US9378035B2 (en) 2012-12-28 2016-06-28 Commvault Systems, Inc. Systems and methods for repurposing virtual machines
US10346259B2 (en) 2012-12-28 2019-07-09 Commvault Systems, Inc. Data recovery using a cloud-based remote data recovery center
US9703584B2 (en) 2013-01-08 2017-07-11 Commvault Systems, Inc. Virtual server agent load balancing
US20140201151A1 (en) 2013-01-11 2014-07-17 Commvault Systems, Inc. Systems and methods to select files for restoration from block-level backup for virtual machines
US9286110B2 (en) 2013-01-14 2016-03-15 Commvault Systems, Inc. Seamless virtual machine recall in a data storage system
US9939981B2 (en) 2013-09-12 2018-04-10 Commvault Systems, Inc. File manager integration with virtualization in an information management system with an enhanced storage manager, including user control and storage management of virtual machines
US9811427B2 (en) 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US9417968B2 (en) 2014-09-22 2016-08-16 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9436555B2 (en) 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
US9710465B2 (en) 2014-09-22 2017-07-18 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US10776209B2 (en) 2014-11-10 2020-09-15 Commvault Systems, Inc. Cross-platform virtual machine backup and replication
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10592350B2 (en) 2016-03-09 2020-03-17 Commvault Systems, Inc. Virtual server cloud file system for virtual machine restore to cloud operations
US10474548B2 (en) 2016-09-30 2019-11-12 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, using ping monitoring of target virtual machines
US10152251B2 (en) 2016-10-25 2018-12-11 Commvault Systems, Inc. Targeted backup of virtual machine
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US10949308B2 (en) 2017-03-15 2021-03-16 Commvault Systems, Inc. Application aware backup of virtual machines
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US20180276022A1 (en) 2017-03-24 2018-09-27 Commvault Systems, Inc. Consistent virtual machine replication
US11074138B2 (en) 2017-03-29 2021-07-27 Commvault Systems, Inc. Multi-streaming backup operations for mailboxes
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US11221939B2 (en) 2017-03-31 2022-01-11 Commvault Systems, Inc. Managing data from internet of things devices in a vehicle
US11294786B2 (en) 2017-03-31 2022-04-05 Commvault Systems, Inc. Management of internet of things devices
US10552294B2 (en) 2017-03-31 2020-02-04 Commvault Systems, Inc. Management of internet of things devices
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US10877928B2 (en) 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
US10891198B2 (en) 2018-07-30 2021-01-12 Commvault Systems, Inc. Storing data to cloud libraries in cloud native formats
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10996974B2 (en) 2019-01-30 2021-05-04 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US11366723B2 (en) 2019-04-30 2022-06-21 Commvault Systems, Inc. Data storage management system for holistic protection and migration of serverless applications across multi-cloud computing environments
US11269734B2 (en) 2019-06-17 2022-03-08 Commvault Systems, Inc. Data storage management system for multi-cloud protection, recovery, and migration of databases-as-a-service and/or serverless database management systems
US11561866B2 (en) 2019-07-10 2023-01-24 Commvault Systems, Inc. Preparing containerized applications for backup using a backup services container and a backup services container-orchestration pod
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
US11422900B2 (en) 2020-03-02 2022-08-23 Commvault Systems, Inc. Platform-agnostic containerized application data protection
US11321188B2 (en) 2020-03-02 2022-05-03 Commvault Systems, Inc. Platform-agnostic containerized application data protection
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11500669B2 (en) 2020-05-15 2022-11-15 Commvault Systems, Inc. Live recovery of virtual machines in a public cloud computing environment
US11314687B2 (en) 2020-09-24 2022-04-26 Commvault Systems, Inc. Container data mover for migrating data between distributed data storage systems integrated with application orchestrators
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection
US11604706B2 (en) 2021-02-02 2023-03-14 Commvault Systems, Inc. Back up and restore related data on different cloud storage tiers

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2216306A (en) * 1988-02-29 1989-10-04 Ardent Computer Corp Load and synchronize computer architecture and process
US5175837A (en) * 1989-02-03 1992-12-29 Digital Equipment Corporation Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits
US5483641A (en) * 1991-12-17 1996-01-09 Dell Usa, L.P. System for scheduling readahead operations if new request is within a proximity of N last read requests wherein N is dependent on independent activities
US5442758A (en) * 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
US5568639A (en) * 1993-11-24 1996-10-22 Menai Corporation Method and apparatus for providing an object-oriented file structuring system on a computer
US5454108A (en) * 1994-01-26 1995-09-26 International Business Machines Corporation Distributed lock manager using a passive, state-full control-server
US5566349A (en) * 1994-05-16 1996-10-15 Trout; Ray C. Complementary concurrent cooperative multi-processing multi-tasking processing system using shared memories with a minimum of four complementary processors

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000050B2 (en) 2002-11-15 2006-02-14 Matsushita Electric Industrial Co., Ltd Apparatus, method and program for contention arbitration
JP2008293368A (ja) * 2007-05-25 2008-12-04 Toyota Motor Corp マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット
JPWO2013021441A1 (ja) * 2011-08-05 2015-03-05 富士通株式会社 データ処理システム、およびデータ処理方法

Also Published As

Publication number Publication date
EP0817040A2 (en) 1998-01-07
EP0817040A3 (en) 2003-01-29
US5835906A (en) 1998-11-10

Similar Documents

Publication Publication Date Title
JPH10187527A (ja) アクセス競合を防ぐ装置および方法
US8250047B2 (en) Hybrid multi-threaded access to data structures using hazard pointers for reads and locks for updates
US4480304A (en) Method and means for the retention of locks across system, subsystem, and communication failures in a multiprocessing, multiprogramming, shared data environment
CN109407979B (zh) 多线程持久性b+树数据结构设计与实现方法
US7975271B2 (en) System and method for dynamically determining a portion of a resource for which a thread is to obtain a lock
US4399504A (en) Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
US5946711A (en) System for locking data in a shared cache
US6560627B1 (en) Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US7797704B2 (en) System and method for performing work by one of plural threads using a lockable resource
JP4042945B2 (ja) 共用資源を非同期的に更新するためのインターフェース・システムおよび方法
US5414839A (en) Hybrid lock escalation and de-escalation protocols
US5742785A (en) Posting multiple reservations with a conditional store atomic operations in a multiprocessing environment
US5197148A (en) Method for maintaining data availability after component failure included denying access to others while completing by one of the microprocessor systems an atomic transaction changing a portion of the multiple copies of data
US5251318A (en) Multiprocessing system comparing information copied from extended storage before and after processing for serializing access to shared resource
EP0145889A2 (en) Non-spinning task locking using compare and swap
US20020133530A1 (en) Method for resource control including resource stealing
JP3611295B2 (ja) コンピュータシステム、メモリ管理方法及び記憶媒体
JPH1165863A (ja) 共有資源管理方法
US7689788B2 (en) System and method for executing transactions
JPH10312299A (ja) データベース情報をアクセスする方法
US7444349B1 (en) Control of concurrent access to a partitioned data file
US8095731B2 (en) Mutable object caching
US7334229B1 (en) Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US6823337B2 (en) One writer, multiple readers, shared data table concurrent access
US20020016900A1 (en) Enhanced shared memory unit