JP5818824B2 - デュアル・モード・リーダ・ライタ・ロック - Google Patents

デュアル・モード・リーダ・ライタ・ロック Download PDF

Info

Publication number
JP5818824B2
JP5818824B2 JP2012557462A JP2012557462A JP5818824B2 JP 5818824 B2 JP5818824 B2 JP 5818824B2 JP 2012557462 A JP2012557462 A JP 2012557462A JP 2012557462 A JP2012557462 A JP 2012557462A JP 5818824 B2 JP5818824 B2 JP 5818824B2
Authority
JP
Japan
Prior art keywords
lock
original
extended
data processing
processing system
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.)
Expired - Fee Related
Application number
JP2012557462A
Other languages
English (en)
Other versions
JP2013522740A (ja
Inventor
ムーディ、ジェームス、バーナード
ミーレイ、ブルース
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013522740A publication Critical patent/JP2013522740A/ja
Application granted granted Critical
Publication of JP5818824B2 publication Critical patent/JP5818824B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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

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)

Description

本発明は一般的に改善されたデータ処理システムに関し、特にデュアル・モード・リーダ・ライタ・ロック(dual mode reader writer lock:DML)のためのコンピュータに実装される方法、システム、およびコンピュータ使用可能プログラム・コードに関する。
データ処理システム内で実行するプロセスは、さまざまなリソースに関連するデータを読取ったり書込んだりする。データ・ファイル、メモリ場所およびディスク上のアドレスは、こうしたリソースのいくつかの例である。
データ処理システム内で実行するプロセスがリソースからデータを読取るか、またはリソースにデータを書込む必要があるとき、オペレーティング・システムはその読取り/書込み要求を順番付けて制御する必要がある。この制御は、複数のプロセスによる同じリソースに対する読取りおよび書込み要求がそのリソースのデータの保全性を損なわないことを確実にすることが重要である。たとえば、あるプロセスは、別のプロセスが同じデータを書込んでいるときにそのデータの読取りを許可されるべきではない。複数のプロセスが同じデータを同時に読取ることは許可されてもよいが、そのデータの書込みを試みている1つまたはそれ以上のプロセスと組み合わされてはならない。
データを読取ったり書込んだりするためのこれらの規則およびその他の規則を実装するために、オペレーティング・システムはロックを実装する。読取り書込みロックとは、あるプロセスが関連リソースのデータを読取りまたは書込みできるようになる前に、セットもしくはリセット、またはインクリメントもしくはデクリメントされる必要のあるデータを有するデータ構造のことである。こうしたロックは、リーダ・ライタ・ロック(reader writer lock:RWL)または複合(complex)ロックとしても公知である。
RWLをセットまたはインクリメントすることを、ロックを取得または獲得すると呼ぶ。RWLをリセットまたはデクリメントすることを、ロックを解除または解放すると呼ぶ。リーダ・ロックまたは読取りロックとは、プロセスまたはスレッドがRWLに関連するリソースを読取ることを許可するようなRWLの状態のことである。複数のプロセスまたはスレッドが、共通のリソースに対する読取りロックを同時に取得してもよい。ライタ・ロックまたは書込みロックとは、スレッドがRWLに関連するリソースにデータを書込むことを許可するようなRWLの状態のことである。あらゆる所与の時間に、単一のスレッドだけがリソースに対する単一の書込みロックを取得でき、別のスレッドがそのリソースに対する書込みロックを保持している間は、どのスレッドも読取りロックを保持したり取得したりできない。
典型的に、RWLは単一のデータ・ワードを用いて実装される。データ・ワードとは、オペレーティング・システムのアーキテクチャにおいて一緒に取扱われる特定のビット数のことである。1つの場合には、データ・ワードのサイズは、データ処理システムの特定のプロセッサ内の単一レジスタ中に保持できるビット数であってもよい。別の場合には、データ・ワードのサイズは、所与のメモリから所与のプロセッサに送信できる最小ビット数であってもよい。一般的に利用可能なオペレーティング・システムは、16、32、64および128ビットのデータ・ワード・サイズを実装している。データ・ワードは、特定の実装に対して好適なあらゆるサイズであってもよい。
オペレーティング・システムがRWLを操作するとき、ロックの保全性のためにその操作は中断されてはならない。言換えると、RWLをセットもしくはリセットするか、またはインクリメントもしくはデクリメントするためのすべての命令は、最初から最後まで別のプロセスに中断または阻止されることなく実行される必要がある。この態様で実行される必要のある命令の組を有する動作を原子動作(atomic operation:アトミック操作、不可分操作)と呼ぶ。RWLの操作は原子動作である。ロックの取得およびロックの解除は、原子動作として行なわれるロック操作の例である。
データ処理システムの動作中のあらゆる所与の時間に、いくつかのプロセスまたはスレッドが互いに時間的に非常に近接して共通のリソースに対するロックの取得を望むことがある。同時またはそれに近い時間に、ロックをすでに取得しているいくつかの他のプロセスまたはスレッドがロックの解除を望むことがある。ロックの取得または解除を望むいくつかのプロセスまたはスレッドはリソースに対する読取りロックを扱ってもよく、他のプロセスまたはスレッドは書込みロックを扱ってもよい。
例示的な実施形態は、デュアル・モード・リーダ・ライタ・ロックのための方法、システムおよびコンピュータ使用可能プログラム製品を提供する。
本発明のある実施形態は、オリジナル・ロックの使用におけるコンテンション状態を定める。オリジナル・ロックはデータ処理システムにおいて利用可能なリソースに対応する。オリジナル・ロックは、データ処理システムにおいて実行するいくつかのプロセスによるリソースへの読取りアクセスおよび書込みアクセスを管理する。この実施形態は、オリジナル・ロックとともに用いるための拡張ロックの組を作成する。オリジナル・ロックと拡張ロックの組とがデュアル・モード・リーダ・ライタ・ロックを形成する。デュアル・モード・リーダ・ライタ・ロックは、リソースへの読取りアクセスおよび書込みアクセスを管理するように動作する。この実施形態は、オリジナル・ロック内の索引を用いて拡張ロックの組の各拡張ロックに索引を付けることによって、各拡張ロックを索引によって位置付けできるようにする。この実施形態は、オリジナル・ロックおよび拡張ロックの組にわたって、いくつかのプロセスによるリソースへの読取りアクセスおよび書込みアクセスを取得および解除するための要求を分散させることによって、コンテンション状態を解決する。
別の実施形態において、オリジナル・ロックは既存のリーダ・ライタ・ロックの変更形であることによって、既存のリーダ・ライタ・ロックは拡張ロックの組とともに動作において使用可能な識別子の組を保持できる。この実施形態はさらに、拡張ロックの組の中の拡張ロックをリーダ・ロックとして指定する。このように指定することによって、指定された拡張ロックはリソースに対する読取りロックのみを取得、保持および解除するために使用可能になる。
別の実施形態はさらに、リソースに対する読取りロックを取得または解除するための要求をプロセスから受け取る。この実施形態は、その要求をデュアル・モード・リーダ・ライタ・ロック内の拡張ロックに割り当てる。
別の実施形態において、リソースに対する書込みロックを取得または解除するためのプロセスからの第2の要求は、オリジナル・ロックに割り当てられる。
別の実施形態において、拡張ロックは、プロセスに関連する識別子から索引値を算出することによって、拡張ロックの組から選択される。索引値は拡張ロックを決定する。
別の実施形態において、拡張ロックは、その拡張ロックがデータ処理システムのプロセッサとの親和性を有するように拡張ロックの組から選択される。
別の実施形態はさらに、リソースに対する書込みロックを取得または解除するための要求を受け取る。この実施形態は、その要求をデュアル・モード・リーダ・ライタ・ロック内のオリジナル・ロックに割り当てる。
別の実施形態において、デュアル・モード・リーダ・ライタ・ロックは、コンテンション状態が存在しないときにはオリジナル・ロックのみを用いる第1のモードで動作する。コンテンション状態が存在するときには、デュアル・モード・リーダ・ライタ・ロックはオリジナル・ロックおよび拡張ロックの組を用いる第2のモードで動作する。コンテンション状態が生じたときに、デュアル・モード・リーダ・ライタ・ロックは第1のモードから第2のモードに切り替わる。コンテンション状態が中止されたときに、デュアル・モード・リーダ・ライタ・ロックは第2のモードから第1のモードに切り替わる。
別の実施形態においては、第1のモードから第2のモードに切り替わることによって、リソースに対するロックに対するいくつかの原子動作を、オリジナル・ロックおよび拡張ロックの組の中の拡張ロック、または拡張ロックの組の中の2つの拡張ロックに対して同時に実行させることによって、コンテンション状態が取り除かれる。
別の実施形態はさらに、メモリ内の領域をロックとして用いるために割り当てる。拡張ロックの組の作成は、その領域における拡張ロックの組に対するスペースの組を指定する。
本発明の特徴と考えられる新規の特徴が添付の請求項に示される。しかしながら、本発明自体、ならびにその好ましい使用モード、さらなる目的および利点は、添付の図面とともに読まれるときの例示的実施形態の以下の詳細な説明を参照することによって最もよく理解されるであろう。
例示的実施形態を実装し得るデータ処理システムのネットワークを表す図である。 例示的実施形態を実装し得るデータ処理システムを示すブロック図である。 例示的実施形態を実装し得るデータ処理システムにおけるRWLを用いた動作を示すブロック図である。 例示的実施形態に従うDMLを示すブロック図である。 例示的実施形態に従って拡張ロックを使用するためのDMLの構成を示すブロック図である。 図6Aは、例示的実施形態に従うDMLの代替的実施形態を示すブロック図である。図6Bは、例示的実施形態に従うDMLの別の代替的実施形態を示すブロック図である。 例示的実施形態に従う拡張ロックまたはリーダ・ロック要素の構成の例を示すブロック図である。 例示的実施形態に従うDML内の特定のオリジナル・ロックまたは拡張ロックにプロセスまたはスレッドを割り当てる方法の例を示すブロック図である。 例示的実施形態に従うDMLを用いて読取りおよび書込みロックを管理することを示すブロック図である。 例示的実施形態に従うDMLを作成するプロセスの例を示す流れ図である。 例示的実施形態に従って拡張ロックに対するメモリ・スペースを割り当てるプロセスを示す流れ図である。 例示的実施形態に従って特定の拡張ロックを特殊化するプロセスを示す流れ図である。 例示的実施形態に従ってDML内の特定のオリジナル・ロックまたは拡張ロックにスレッドまたはプロセスを割り当てるプロセスを示す図である。
特定の状況下では、いくつかのプロセスまたはスレッドからのロックを取得または解除するための各要求に対するいくつかの原子動作がデータ処理システム内で保留中になることがある。本発明は、RWLに対するいくつかの原子動作がデータ処理システムに殺到することがデータ処理システムの性能に悪影響をもたらし得ることを認識している。
説明を明確にするために、「プロセス」はプロセスまたはプロセスのスレッドを意味するために用いられる。本発明の範囲内で、プロセスに関する動作はスレッドにも同様に適用可能であり、スレッドに関する動作はプロセスにも同様に適用可能である。
本発明はさらに、特定の他の状況下では、ロックのデータ構造が飽和してそれ以上のロック要求を収容できないことがあることを認識している。たとえば、2ビットの仮想サイズのデータ・ワードは、もし4つのスレッドが関連リソースに対する読取りロックをすでに保持していれば飽和する。なぜなら、2ビットは0から4だけをカウントするために用いられ得るからである。読取りロックを要求する第5のスレッドは、読取りロックを保持する他の4つのプロセスの1つがその読取りロックを解除するまで収容されることができない。本発明は、データ処理システム内のRWLに対する実行を待っている原子動作のバックログもデータ処理システムの性能に悪影響をもたらし得ることを認識している。
これらの状況は、データ処理システムにおいてRWLに対するコンテンションが生じるシナリオの例である。本発明は、RWLを争うプロセスまたはスレッドの数が閾値数よりも増えたときにデータ処理システム内でRWLに対するコンテンションが起こるであろうことを認識している。本発明はさらに、たとえばマルチプロセッサ・データ処理システムまたは論理区画などのように、データ処理システム内のプロセッサの数が増えるにつれてプロセスおよびスレッドの数も増えてRWLコンテンションにつながることを認識している。
本発明を説明するために用いられる例示的実施形態は、一般的にRWLに関する上述の問題およびその他の問題に対処して解決するものである。例示的実施形態は、デュアル・モード・リーダ・ライタ・ロックのための方法、コンピュータ使用可能プログラム製品、およびデータ処理システムを提供する。
本発明の実施形態は、原子動作の数が閾値数に達したときに、データ処理システムが現在構成されるデータ処理システムよりもシステム性能に対する影響を低くしながらRWLに対する原子動作を処理することを可能にしてもよい。たとえば、単一のRWLに対して行なわれる同数の原子動作に対して、本発明の実施形態を実装するデータ処理システムは、この実施形態なしのデータ処理システムよりも良好なシステム性能を示し得る。
本発明の実施形態は、現在構成されるデータ処理システムよりもシステム性能に対する悪影響を減少させながら、より多くのプロセスおよびスレッドがロックを同時に取得および解除することも可能にしてもよい。たとえば、同じシステム性能に対して、本発明の実施形態を用いるデータ処理システムは、この実施形態なしのデータ処理システムよりも多くのプロセスがリソースに対する読取りロックを取得することを可能にしてもよい。
例示的実施形態は、単なる例としてのデータ、データ構造および識別子に関して説明される。こうした説明が本発明を限定することは意図されていない。たとえば、64ビットのデータ・ワードに関して説明される例示的実施形態は、本発明の範囲内で128ビットのデータ・ワードを用いて類似の態様で実装されてもよい。
さらに、例示的実施形態はあらゆるタイプのデータ処理システムに関して実装されてもよい。たとえば、マルチプロセッサ・スタンドアロン・データ処理システムに関して説明される例示的実施形態は、本発明の範囲内でマルチプロセッサ論理区画システムにおいて実装されてもよい。
例示的実施形態はさらに、単なる例としての特定のパラメータ、属性および構成に関して説明される。こうした説明が本発明を限定することは意図されていない。本発明の実施形態は、たとえばあらゆるタイプのクライアント・システム、サーバ・システム、プラットフォーム、またはその組み合わせなど、あらゆるタイプのデータ処理システムに関して実装されてもよい。
実施形態を実装するアプリケーションは、データ・オブジェクト、コード・オブジェクト、カプセル化命令、アプリケーション・フラグメント、サービス、およびデータ処理環境において利用可能な他のタイプのソフトウェア実装の形を取ってもよい。たとえばJava(R)仮想マシン(Virtual Machine)(JVM(R))、Java(R)オブジェクト、エンタープライズJavaビーン(Enterprise Java Bean:EJB(R))、サーブレット、またはアプレットなどは、それに関して、その中で、またはそれを用いて本発明を実装してもよいアプリケーションを表してもよい。(Java、JVM、EJBおよびその他のJava関連の用語は、米国およびその他の国におけるサン・マイクロシステムズ社の登録商標である。)
例示的実施形態は、ハードウェア、ソフトウェアまたはその組み合わせにおいて実装されてもよい。本開示における例は説明を明確にするためにのみ用いられ、例示的実施形態を限定するものではない。本開示から、類似の目的のために付加的な、または異なる情報、データ、動作、アクション、タスク、アクティビティ、および操作が考えられ、それらは例示的実施形態の範囲内で予期される。
例示的実施形態は、単なる例としての特定のコード、データ構造、ファイル・システム、設計、アーキテクチャ、レイアウト、概略図、およびツールを用いて説明され、これらは例示的実施形態を限定するものではない。さらに、例示的実施形態はいくつかの場合に、説明を明確にするための単なる例としての特定のデータ処理環境を用いて説明される。例示的実施形態は、他の同等の、または類似の目的を有する構造、システム、アプリケーション、またはアーキテクチャとともに用いられてもよい。
本明細書において挙げられるあらゆる利点は単なる例であって、例示的実施形態を限定することは意図されていない。特定の例示的実施形態によって付加的な利点または異なる利点が実現されてもよい。さらに、特定の例示的実施形態は上に挙げられた利点のうちのいくつか、またはすべてを有していてもよいし、どれも有さなくてもよい。
図面を参照し、特に図1および図2を参照すると、これらの図面は例示的実施形態を実装し得るデータ処理環境の例を示す図である。図1および図2は単なる例であり、異なる実施形態を実装し得る環境に関するいかなる限定を主張または暗示することも意図されていない。以下の説明に基づいて、特定の実装がここに示される環境に多くの変更を加えてもよい。
図1は、例示的実施形態を実装し得るデータ処理システムのネットワークを表す図である。データ処理環境100は、その中で例示的実施形態を実装し得るコンピュータのネットワークである。データ処理環境100はネットワーク102を含む。ネットワーク102は、データ処理環境100内でともに接続されているさまざまなデバイスおよびコンピュータ間の通信リンクを提供するために用いられる媒体である。ネットワーク102は、たとえばワイヤ、無線通信リンク、または光ファイバ・ケーブルなどの接続を含んでもよい。サーバ104およびサーバ106は、記憶装置108とともにネットワーク102に結合している。データ処理環境100内のあらゆるコンピュータ上でソフトウェア・アプリケーションが実行されてもよい。
加えて、クライアント110、112および114がネットワーク102に結合している。データ処理システム、たとえばサーバ104もしくは106、またはクライアント110、112もしくは114などはデータを含んでもよく、さらにそこで実行されるソフトウェア・アプリケーションまたはソフトウェア・ツールを有してもよい。
サーバ104は複数のプロセッサ105を含んでもよい。図示される他のデータ処理システムも類似の態様で2つ以上のプロセッサを含んでもよい(図示せず)。サーバ104はさらにDML107を含んでもよい。DML107は本発明の実施形態に従うDMLであってもよい。DML107は、限定なしに他のRWLとともにサーバ104内で実装されてもよい。さらに、DML107はサーバ104以外のデータ処理システム、たとえばサーバ106などにおいて構成されてもよく、ネットワーク102上でサーバ104に対してアクセス可能であってもよい。
サーバ104および106、記憶装置108、ならびにクライアント110、112および114は、有線接続、無線通信プロトコル、またはその他の好適なデータ接続性を用いてネットワーク102に結合してもよい。クライアント110、112および114は、たとえばパーソナル・コンピュータまたはネットワーク・コンピュータなどであってもよい。
図示される例において、サーバ104はたとえばブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータをクライアント110、112および114に提供してもよい。この例において、クライアント110、112および114はサーバ104に対するクライアントであってもよい。クライアント110、112、114、またはその何らかの組み合わせは、それら自身のデータ、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションを含んでもよい。データ処理環境100は、図示されない付加的なサーバ、クライアントおよびその他のデバイスを含んでもよい。
図示される例において、データ処理環境100はインターネットであってもよい。ネットワーク102は、伝送制御プロトコル/インターネット・プロトコル(Transmission Control Protocol/Internet Protocol:TCP/IP)およびその他のプロトコルを用いて互いに通信するネットワークおよびゲートウェイの集合体を表してもよい。インターネットの中心部は主要ノードまたはホスト・コンピュータの間のデータ通信リンクのバックボーンであり、そこにはデータおよびメッセージを送る何千もの商業用、政府用、教育用およびその他のコンピュータ・システムが含まれる。もちろんデータ処理環境100は、たとえばイントラネット、ローカル・エリア・ネットワーク(local area network:LAN)、または広域ネットワーク(wide area network:WAN)などのいくつかの異なるタイプのネットワークとして実装されてもよい。図1は例として意図されるものであり、異なる例示的実施形態に対するアーキテクチャの限定として意図されるものではない。
他の使用の中でも特に、データ処理環境100は、例示的実施形態を実装し得るクライアント・サーバ環境を実装するために用いられてもよい。クライアント・サーバ環境は、ソフトウェア・アプリケーションおよびデータがネットワーク全体に分散されることを可能にすることによって、クライアント・データ処理システムとサーバ・データ処理システムとの間の双方向性を用いることによってアプリケーションが機能する。さらにデータ処理環境100はサービス指向アーキテクチャを用いてもよく、ここではネットワーク全体に分散された相互運用可能なソフトウェア構成要素がコヒーレント・ビジネス・アプリケーションとしてともにパッケージ化されてもよい。
図2を参照すると、この図面は例示的実施形態を実装し得るデータ処理システムのブロック図を示す。データ処理システム200は、たとえば図1におけるサーバ104またはクライアント110などのコンピュータの例であり、ここには例示的実施形態のためにプロセスを実装するコンピュータ使用可能プログラム・コードまたは命令が位置付けられていてもよい。
図示される例において、データ処理システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(North Bridge and memory controller hub:NB/MCH)202と、サウス・ブリッジおよび入力/出力(I/O)コントローラ・ハブ(south bridge and input/output(I/O)controller hub:SB/ICH)204とを含むハブ・アーキテクチャを用いる。処理装置206、メイン・メモリ208、およびグラフィックス・プロセッサ210は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202に結合される。処理装置206は1つまたはそれ以上のプロセッサを含んでもよく、1つまたはそれ以上の異種プロセッサ・システムを用いて実装されてもよい。特定の実装において、グラフィックス・プロセッサ210はアクセラレーテッド・グラフィックス・ポート(accelerated graphics port:AGP)を通じてNB/MCHに結合されてもよい。
図示される例において、ローカル・エリア・ネットワーク(LAN)アダプタ212はサウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204に結合される。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読取り専用メモリ(read only memory:ROM)224、ユニバーサル・シリアル・バス(universal serial bus:USB)およびその他のポート232、ならびにPCI/PCIeデバイス234は、バス238を通じてサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合される。ハード・ディスク・ドライブ(Hard disk drive:HDD)226およびCD−ROM230は、バス240を通じてサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合される。PCI/PCIeデバイスは、たとえばイーサネット・アダプタ、アドイン・カード、およびノート型コンピュータ用のPCカードなどを含んでもよい。PCIはカード・バス・コントローラを用いるのに対し、PCIeは用いない。ROM224は、たとえばフラッシュ・バイナリ入力/出力システム(binary input/output system:BIOS)などであってもよい。ハード・ディスク・ドライブ226およびCD−ROM230は、たとえば統合ドライブ・エレクトロニクス(integrated drive electronics:IDE)またはシリアル・アドバンスド・テクノロジ・アタッチメント(serial advanced technology attachment:SATA)インタフェースなどを用いてもよい。スーパーI/O(super I/O:SIO)デバイス236がサウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204に結合されてもよい。
オペレーティング・システムは処理装置206上で実行される。オペレーティング・システムは、図2のデータ処理システム200内のさまざまな構成要素を調整してその制御を提供する。オペレーティング・システムは、たとえばマイクロソフト(R)ウィンドウズ(R)(マイクロソフトおよびウィンドウズは、米国およびその他の国におけるマイクロソフト社の登録商標である)、またはリナックス(R)(リナックスは、米国およびその他の国におけるリーナス・トーバルズの登録商標である)などの商業的に入手可能なオペレーティング・システムであってもよい。Java(R)プログラミング・システムなどのオブジェクト指向プログラミング・システムがオペレーティング・システムとともに実行されてもよく、データ処理システム200において実行中のJava(R)プログラムまたはアプリケーションからオペレーティング・システムへの呼出しを提供する(Javaは、米国およびその他の国におけるサン・マイクロシステムズ社の登録商標である)。
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムに対する命令は、ハード・ディスク・ドライブ226などの記憶装置に位置付けられており、処理装置206による実行のためにメイン・メモリ208にロードされてもよい。例示的実施形態のプロセスは、たとえばメイン・メモリ208、読取り専用メモリ224などのメモリ、または1つもしくはそれ以上の周辺デバイスなどに位置付けられてもよいコンピュータ実装命令を用いて、処理装置206によって行なわれてもよい。
図1〜2におけるハードウェアは、実装によって変動してもよい。図1〜2に示されるハードウェアに加えて、またはその代わりに、たとえばフラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブなど、他の内部ハードウェアまたは周辺デバイスが用いられてもよい。加えて、この例示的実施形態のプロセスがマルチプロセッサ・データ処理システムに適用されてもよい。
いくつかの実例において、データ処理システム200はパーソナル・デジタル・アシスタント(personal digital assistant:PDA)であってもよく、これは一般的にフラッシュ・メモリによって構成されることによって、オペレーティング・システム・ファイルもしくはユーザ生成データまたはその両方を保存するための不揮発性メモリを提供する。バス・システムは、たとえばシステム・バス、I/Oバス、およびPCIバスなどの1つまたはそれ以上のバスを含んでもよい。もちろんバス・システムは、ファブリックまたはアーキテクチャに取付けられた異なる構成要素またはデバイス間のデータ転送を提供するようなあらゆるタイプの通信ファブリックまたはアーキテクチャを用いて実装されてもよい。
通信装置は、データを送信および受信するために用いられる1つまたはそれ以上のデバイス、たとえばモデムまたはネットワーク・アダプタなどを含んでもよい。メモリは、たとえばメイン・メモリ208またはキャッシュ、たとえばノース・ブリッジおよびメモリ・コントローラ・ハブ202内にみられるキャッシュなどであってもよい。処理装置は1つまたはそれ以上のプロセッサまたはCPUを含んでもよい。
図1〜2に示される例および上述の例は、アーキテクチャの限定を暗示することを意味するものではない。たとえばデータ処理システム200は、PDAの形を取ることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話装置であってもよい。
図3を参照すると、この図面は例示的実施形態を実装し得るデータ処理システムにおけるRWLを用いた動作のブロック図を示す。プロセス302、304および306は、データ処理システム内のプロセスまたはスレッド、たとえば図1におけるサーバ104などであってもよい。
プロセス302、304および306は、ロック・ワード308を用いて実装されるRWLを取得または解除するために争っていてもよい。ロック・ワード308のRWLは、プロセス302、304および306が読取りまたは書込みを争い得るリソース310に関連していてもよい。ロック・ワード308のRWLは、現在利用可能なオペレーティング・システムにおいて用いられるようなRWLであってもよい。たとえば、プロセス302はリソース310に対する読取りロックの取得を要求していてもよい。プロセス304はリソース310に対する書込みロックの取得を要求していてもよい。プロセス306はリソース310に対して前に取得した読取りロックの解除を要求していてもよい。
リソース310に対するロックを取得または解除するための各要求によって、ロック・ワード308で原子動作が実行されるか、または実行をスケジュールされる。原子更新(atomic update)312は、ロック・ワード308におけるこうした原子動作の1つまたはそれ以上を表す。
ロック・ワード308を実装して原子更新312を実行するオペレーティング・システムは、プロセス302、304および306と類似のもっと多くのプロセスまたはスレッドがロック・ワード308によって表されるRWLの取得または解除を要求すると、性能が低下すると考えられる。
たとえば、図3に示されるとおりに動作するデータ処理システムの許容できる性能は、性能計量(metric)が閾値以上に残っていることによって定められてもよい。一実施形態において、プロセス302、304および306と類似のプロセスの総数がプロセスの閾値数を超えることは、データ処理システムの性能を許容できないものにすると解釈され得る。たとえば、構成例の1つにおいて、合計5000のスレッドまたはプロセスがさまざまなRWLに対する原子動作を実行するために争うことは、データ処理システムの性能を許容できないものにすると解釈され得る。
別の実施形態において、プロセス302、304および306と類似のプロセスの総数が特定のRWLに対するプロセスの閾値数を超えることは、データ処理システムの性能を許容できないものにすると解釈され得る。たとえば、構成例の1つにおいて、1000以上のスレッドがロック・ワード308を用いるロックを取得または解除するために争うことは、性能低下の原因と考えられ得る。
別の実施形態において、プロセス302、304および306と類似のプロセスの総数がプロセッサ数に対するプロセスの閾値比率を超えることは、データ処理システムの性能を許容できないものにすると解釈され得る。たとえば、構成例の1つにおいて、プロセッサ当り1000以上のスレッドがRWLを取得または解除するために争うことは、性能低下の原因と考えられ得る。
図4を参照すると、この図面は例示的実施形態に従うDMLのブロック図を示す。実施形態に従うDML400は、オリジナル・ロック402を含む。オリジナル・ロック402は、たとえば図3におけるロック・ワード308など、現存するRWLを表すために用いられるものなどのロック・ワードであってもよく、本発明の実施形態に従って修正されて、DML400に拡張可能になっている。オリジナル・ロック402は「含有ロック(containing lock)」またはロックの「含有要素(containing element)」とも呼ばれる。
DML400はさらに、拡張ロック404、406、408および410を含む。オリジナル・ロック402ならびに拡張ロック404、406、408および410は、RWLがDML400に変換される前に現存するRWLによって管理されていたリソースに対して単一のロックとして動作する。言換えると、オリジナル・ロック402と、拡張ロック404、406、408および410の各々とが単一ロックのロック要素を形成する。たとえばオペレーティング・システムの構成要素などのロック管理機構は、同じリソースに対するロックを管理するために、各ロック要素に対して別々に、個々に、かつ同じロックすなわちDML400における他のロック要素に対する動作とは独立に動作できる。
拡張ロック404〜410の各々は、ロック情報を保存するために使用可能なメモリ・スペースであってもよい。たとえば一実施形態においては、起動の際にオペレーティング・システムが、ロック・ワードを作成および保存するため、またはRWLもしくはDMLと組み合わせた他の使用のために確保される好適なサイズの好適なメモリ領域を指定してもよい。拡張ロックは「拡張要素」または「リーダ・ロック要素」とも呼ばれる。
拡張ロック404〜410は、こうして指定されたメモリ領域内の同サイズまたは異なるサイズのメモリ・スペースであってもよい。たとえば一実施形態において、拡張ロック404〜410の各々は単一ワードのサイズであってもよい。別の実施形態において、拡張ロック404〜410のいくつかは1ワードのサイズであってもよく、一方拡張ロック404〜410の他の拡張ロックは特定の実装に好適であるようにもっと大きいかまたは小さいサイズであってもよい。
別の実施形態において、拡張ロック404〜410を保存するためにあらゆるメモリ領域が使用可能であってもよい。たとえば、分散データ処理環境において、拡張ロック404〜410のいくつかの拡張ロックは1つのプロセッサに近いメモリ領域に位置付けられてもよく、他の拡張ロックは異なるプロセッサに近い異なるメモリ領域に位置付けられてもよい。言換えると、拡張ロック404〜410は、プロセッサとの親和性もしくはデバイスとの近さを考慮して、または他の考慮によって、メモリのあらゆる領域に分散されてもよい。
図4においては、説明を明確にするための単なる例として4つの拡張ロックが示される。本発明の範囲内で、あらゆる数の拡張ロックが作成されてもよく、異なるオリジナル・ロックが異なる態様で拡張されてもよい。たとえば1つのRWLを拡張するために、ある実装が例示的実施形態の態様で4つの拡張ロックを作成してもよい。別のRWLを拡張するために、その実装が8個、16個、またはあらゆる他の数の拡張ロックを作成してもよい。
加えて、オリジナル・ロック402および拡張ロック404〜410は論理的ビューとしてのみ隣接して示されており、本発明を図示されるとおりに限定することは意図されていない。オリジナル・ロック402および拡張ロック404〜410の各々は、本発明の範囲内で特定の実装に好適であるように所与のメモリ内のどこに位置付けられてもよい。
例示的実施形態に従うと、オリジナル・ロック402は拡張ロック404〜410を用いて拡張される。オリジナル・ロック402をこの態様で拡張することによって、ロックのデータがメモリ・スペースの2つ以上のロック・ワードにわたって維持および操作されることが可能になる。ここではロックがオリジナル・ロック402および拡張ロック404〜410によって集合的に表される。このように表されたDML400に関する原子動作は、オリジナル・ロック402または拡張ロック404〜410のいずれかのメモリ・スペースに関して別々に進行できる。
たとえば、オリジナル・ロック402および拡張ロック404〜410の各々が1データ・ワードのサイズであると仮定する。特定のプロセスがオリジナル・ロック402のデータ・ワードを用いてDML400を取得または解除してもよい。こうしたロック動作に関連する原子動作は、オリジナル・ロック402を表すデータ・ワードに対して実行される。特定の他のプロセスが拡張ロック406のデータ・ワードを用いて同様にDML400を取得または解除してもよい。こうしたロック動作に関連する原子動作は、一般的に拡張ロック406を表すデータ・ワードに対して実行される。他のプロセスも同様にオリジナル・ロック402または拡張ロック404〜410の1つに割り当てられてもよい。
本開示の他の場所に説明されるとおり、特定の状態によって、1つの拡張ロックに割り当てられたプロセスがオリジナル・ロックまたは異なる拡張ロックに対して動作を実行することがある。さらに、すべての書込みロックはオリジナル・ロック402を用いるあらゆるプロセスによって取得され、保持され、解除される。さまざまなプロセスによって取得され、保持され、解除される読取りロックは、本発明の実施形態の態様でオリジナル・ロック402および拡張ロック404〜410のいずれかにわたって分散されてもよい。
現在、RWLを操作するための2つまたはそれ以上の原子動作が、現在使用されているRWLのメモリ・スペースにおいて順次実行を待つ必要がある。この実施形態に従ってRWLをDML400に拡張することによって、オペレーティング・システムが同じDMLに関連する異なるメモリ・スペースにおいてこうした2つまたはそれ以上の原子動作を実行することが有利に可能になる。
DML400は2つのモードで動作する。リソースに対するロックのコンテンションが閾値よりも低いとき、DML400は拡張ロック404〜410を用いずにオリジナル・ロック402のみを用いて動作してもよい。こうした状況においては、リソースに対するすべての読取りおよび書込みロックがオリジナル・ロック402を用いて取得され、保持され、解除される。ロックに対するコンテンションが閾値に達するか、または閾値を超えるとき、DML400は拡張してあらゆる数の拡張ロック404〜410を用い、実施形態の態様で動作する。
図5を参照すると、この図面は例示的実施形態に従って拡張ロックを使用するためのDMLの構成のブロック図を示す。DML500は図4のDML400と類似であってもよい。含有ロックまたはオリジナル・ロック502は、図4のオリジナル・ロック402と同様に用いられてもよい。拡張ロック504の部分は、図4の拡張ロック404〜410の対応部分と同様に用いられてもよい。
オリジナル・ロック502はロック・カウント506を含む。ロック・カウント506は、あらゆる所与の時間にオリジナル・ロック502に保持されているロックの数を保存するビットの組である。ビットの組は1ビットまたはそれ以上のビットである。
オリジナル・ロック502はインジケータの組をさらに含む。インジケータは特定の状態またはある状態の特定の値を示すビットの組である。インジケータの組は1つまたはそれ以上のインジケータである。ある規則が実行される必要があること、または実行されたことを定めるためにインジケータが用いられてもよい。
インジケータの例は1ビットだけの長さであってもよく、デバイスのオン/オフ状態、データまたはオプションの利用可能性/利用不可能性、およびその他の類似の状態を示すためにセットまたはリセットされてもよい。インジケータの別の例は数ビットの長さであってもよく、たとえば2ビットであることによって特定の状態の0から4のカウントを保存してもよい。ロック・カウント506は、こうしたマルチビット・インジケータの例であってもよい。
オリジナル・ロック502はさらに、「読取りモード」インジケータ508と、「インターロック」インジケータ510と、「アップグレード」インジケータ512と、「拡張」インジケータ514と、「拡張可能」インジケータ516と、拡張ロックの索引518とを含んでもよい。インジケータ508〜516はインジケータの組の例を形成し、本発明の範囲に対する限定なしに例示的実施形態を説明するために選択されたものである。
読取りモード・インジケータ508は、オリジナル・ロック502が読取りロックのみを保持するために用いられているのか、それとも読取りロックおよび書込みロックの両方を保持するために用いられているのかを示すために用いられてもよい。たとえば、読取りモード・インジケータ508が単一ビット・インジケータとして実装されるとき、ビット値0は、オリジナル・ロック502がロック・カウント506に書込みロック・カウントを保持している状態を示してもよい。さらにビット値0は、オリジナル・ロック502がロック・カウント506にまったくどのロックも保持しておらず、あらゆるタイプのロックを保持するために利用可能であることを示してもよい。反対にビット値1は、オリジナル・ロック502がロック・カウント506に少なくとも1つの読取りロック・カウントを保持している状態を示してもよい。
インターロック・インジケータ510は、本開示の他の場所に説明されるとおり、DML500の使用中に起こる特定の状態に対処するために用いられてもよい。たとえば、オリジナル・ロック502の特定の状態をもたらすような原子動作によってオリジナル・ロック502が更新されるとき、その動作の前にインターロック・インジケータ510をセットする必要があることを規則が求めてもよい。
拡張インジケータ514は、DML500が拡張ロック504を使用しているかどうかをプロセスに示してもよい。たとえば、拡張インジケータ514が単一ビット・インジケータとして実装されるとき、ビット値0は、DML500が拡張ロック504を使用していない状態を示してもよい。反対にビット値1は、DML500が拡張されて拡張ロック504の1つまたはそれ以上の拡張ロックを使用する状態を示してもよい。
アップグレード・インジケータ512は、過去にロックに対するコンテンション状態が起こったために単純なRWLがDML500に変形し、ロックがDML500の形で存在することを示すために用いられてもよい。言換えると、アップグレード・インジケータ512は、DML500が2つのモードのうちのどちらで動作しているかをプロセスに知らせるために用いられてもよい。たとえば、アップグレード・インジケータ512が単一ビット・インジケータとして実装されるとき、ビット値0は、DML500がオリジナル・ロック502のみを用いて動作している状態を示してもよい。反対にビット値1は、DML500がオリジナル・ロック502とともに拡張ロック504を使用している状態を示してもよい。
拡張可能インジケータ516は、DML500が拡張可能か、または拡張ロック504を使用できるかどうかを示してもよい。たとえば、拡張可能インジケータ516が単一ビット・インジケータとして実装されるとき、ビット値0は、DML500が拡張ロック504を使用できない状態を示してもよい。反対にビット値1は、DML500が拡張されて拡張ロック504の1つまたはそれ以上の拡張ロックを使用し得る状態を示してもよい。たとえば、特定のRWLは拡張された形よりも拡張されない形の方が好ましいことがあり、その選択を行なうために拡張可能インジケータ516が用いられてもよい。
一実施形態において、拡張可能インジケータ516は任意であってもよい。実施形態において用いられるとき、拡張可能インジケータ516は、実装が何らかの理由ですべてのロックを拡張しないことを選ぶ場合のスイッチとして用いられてもよい。拡張可能インジケータ516をこの態様で用いることによって、実施形態は特定のロックに対する拡張を選択的に禁じることが可能になる。拡張可能インジケータ516を伴わない実施形態において、その実施形態はすべてのロックが拡張可能であるとみなしてもよい。
拡張ロックの索引518は、拡張ロック504内のあらゆる数の拡張ロックの各々に対する参照を保持するように構成されてもよい。索引518を用いて、ロックの取得または解除を要求するプロセスはオリジナル・ロック502から拡張ロック504内のあらゆる拡張ロックを横断し、そこで要求に応じた動作を行なってもよい。
図6Aを参照すると、この図面は例示的実施形態に従うDMLの代替的実施形態のブロック図を示す。DML550は図5のDML500と類似であってもよい。DML550のオリジナル・ロック552は図5のオリジナル・ロック502と類似であってもよい。
この図面の実施形態は、オリジナル・ロック552が書込みロックを保存するために用いられているときに使用可能であってもよい。書込みロックを保存するためにDML550を用い得るスレッドに関連する識別子を保持するために、図5のロック・カウント506が用いられてもよい。こうしたスレッドは書込みロックのオーナとなる。したがって、ロック・カウントまたは書込みロック・オーナ識別子554を保存するために、図5のロック・カウント506の一部またはすべてのビットが用いられてもよい。
図6Bを参照すると、この図面は例示的実施形態に従うDMLの別の代替的実施形態のブロック図を示す。DML570は図5のDML500と類似であってもよい。DML570のオリジナル・ロック572は図5のオリジナル・ロック502と類似であってもよい。
この図面の実施形態は、オリジナル・ロック572が書込みロックを保存するために用いられているときに代替的に使用可能であってもよい。ロック・カウント574は図5のロック・カウント506と類似であってもよい。オリジナル・ロック572は書込みロック・オーナ識別子576をさらに含んでもよい。識別子576は、書込みロックを保存するためにDML570を用い得るスレッドに関連する識別子を保持するために用いられてもよい。ロック・カウント574は、図5のロック・カウント506と類似の値を保持し続けてもよい。
図7を参照すると、この図面は例示的実施形態に従う拡張ロックまたはリーダ・ロック要素の構成の例のブロック図を示す。拡張ロック602は、図5の拡張ロック504内のいずれかの拡張ロックと同様に実装されてもよい。
拡張ロック602はロック・カウント604を含む。ロック・カウント604は、拡張ロック602内に保持されるロックの数を把握している。ロック・カウント604のビットは、図5のロック・カウント506のビットと類似の態様で動作して使用可能である。たとえば図7の拡張ロック602を用いる図5のDML500などのDMLの実装において、あらゆる所与の時間にDMLが保持するロックの総数は、オリジナル・ロックと、その時間に使用中である各拡張ロックとのロック・カウントの値の合計である。
拡張ロック602はインジケータの組をさらに含む。拡張ロック602のインジケータの組は、図5のオリジナル・ロック502におけるインジケータの組と同様に修正されるか、または伸長されてもよい。読取りモード・インジケータ606は、拡張ロック602内のインジケータであってもよい。一実施形態において、読取りモード・インジケータ606は、図5の読取りモード・インジケータ508と類似の態様で動作してもよい。別の実施形態において、読取りモード・インジケータ606は、拡張ロック602が読取りロックのみを保持するために使用されているのか、それとも異なるタイプのロックの組み合わせを保持するのかを示すために用いられてもよい。
拡張ロック602はさらにアップグレード・インジケータ608を含んでもよい。一実施形態において、アップグレード・インジケータ608は図5のオリジナル・ロック502のアップグレード・インジケータ512に対応していてもよく、拡張ロック602が図5のオリジナル・ロック502のアップグレードにおける拡張ロックであることを示してもよい。別の実施形態において、アップグレード・インジケータ608は拡張ロック602自体のアップグレードを示すために用いられてもよい。たとえば、拡張ロック602が拡張ロックの組とともに拡張されることによって、拡張ロック602の使用中に起こり得るあらゆるコンテンションに対処してもよい。拡張ロックの組は1つまたはそれ以上の拡張ロックである。
本開示から明らかになり得る他のインジケータの例として、拡張ロック602の実装はマルチビットのロック番号インジケータ610を任意に含んでもよい。ロック番号インジケータ610は、拡張ロック602を参照するために図5の拡張ロックの索引518の代わりに用いられても、またはそれに加えて用いられてもよい。
図5のオリジナル・ロック502および図7の拡張ロック602は、記載された情報をすべて保存するためにあらゆるビット数を含んでもよい。オリジナル・ロック502または拡張ロック602は、あらゆる特定の情報を保存するためにあらゆるビット数をさらに用いてもよい。たとえば、インジケータのいずれか、たとえば「読取りモード」インジケータまたは「拡張可能」インジケータなどが2ビット以上を用いて保存されてもよい。オリジナル・ロックおよび拡張ロックにおいて類似のインジケータが用いられるとき、類似のインジケータの値を保持するために異なるビット数が用いられてもよい。
さらに、例示的実施形態の範囲内で類似の機能を行なうためにこれらのインジケータが修正、補足、増補、増強されるか、または別様で変更されてもよい。これらのインジケータはインジケータの限定的な組となることは意図されておらず、本明細書において例示的実施形態を明確にするためにのみ選択されて記載されるものである。本開示から付加的なインジケータが明らかとなるだろうし、それらは本発明の範囲内で予期されるものである。
図5および図7に示されるインジケータの組は、本発明の範囲内であらゆる特定のインジケータが占有し得るビット位置を限定することなく例示的なやり方で配置されている。これらのインジケータおよびあらゆる他のインジケータは、本発明の範囲から逸脱することなくあらゆる順序で図5のオリジナル・ロック502または図7の拡張ロック602のメモリ・スペース内であらゆる好適なビットを占有してもよい。
図8を参照すると、この図面は例示的実施形態に従うDML内の特定のオリジナル・ロックまたは拡張ロックにプロセスまたはスレッドを割り当てる方法の例のブロック図を示す。ロック番号702は、DML内のオリジナル・ロックまたは特定の拡張ロックに関連する番号または索引であってもよい。たとえばロック番号702は、図5に示されるDML500の拡張ロック504内の特定の拡張ロックを参照し得る、拡張ロックの索引518におけるエントリであってもよい。
スレッド704は、DMLを用いてロックの取得または解除を要求している実例プロセスのスレッドの例であってもよい。スレッド704は例示的実施形態の説明を明確にするためにのみ用いられるものであって、本発明を限定することは意図されていない。スレッド704はスレッド、プロセス、またはデータ処理環境においてロックを取得および解除できるあらゆるその他の機構であってもよい。
スレッド704は自身に関連付けられた識別子を有してもよく、その識別子はスレッド704が実行され得るデータ処理システムにおいてスレッド704を一意に識別するために使用されてもよい。スレッド識別子706はこうした識別子の1つであってもよい。
実施形態例の1つにおいては、スレッド識別子706からロック番号702が算出708されることによって、スレッド704と、ロック番号702に関連するオリジナル・ロックまたは拡張ロックとの間の結合、親和性、関係または割り当てが形成されてもよい。たとえば、DMLの例は所与の場合に1つのオリジナル・ロックと4つの拡張ロックとを使用していてもよい。スレッド識別子706がハッシュ化されて0から4の間の数が得られてもよい。ハッシュ値が0であれば、スレッド704はオリジナル・ロックに割り当てられてもよく、そのスレッド704が関連リソースとともに行なうロックの取得または解除のすべてがオリジナル・ロックを用いて追跡される。同様に、ハッシュ値が1、2、3または4であれば、スレッド704はそれぞれ拡張ロック1、2、3または4に割り当てられてもよい。
一実施形態において、ハッシュ値は読取りロックを保存するためにどの拡張ロックを用いるかを示してもよく、書込みロックはオリジナル・ロックに保存されていてもよい。言換えると、ロックがアップグレードされていて、読取りロックを保存すべき拡張ロックを識別するためにハッシュ値が用いられているときは、読取りロックはオリジナル・ロックに保存されていない。たとえばハッシュ値0は、拡張ロック0、1、2および3が存在し得るときに、読取りカウントを保存するためにリーダ・ロック0を用いることを示してもよい。
ハッシュ化は計算708の例としてのみ説明される。計算708は、DML内のオリジナル・ロックまたは拡張ロックの索引、番号または識別子にスレッド704を一意に関連付けるために使用可能なあらゆる好適な計算であってもよい。
図9を参照すると、この図面は例示的実施形態に従うDMLを用いて読取りおよび書込みロックを管理することのブロック図を示す。スレッド802は図8のスレッド704と類似であってもよい。オリジナル・ロック804および拡張ロック806は、図8の説明において用いられたDMLの対応する構成要素であってもよい。
拡張ロック806は、図8のロック番号702によって参照、索引付けまたは番号付けされてもよい。図9に示される構成のときに、スレッド802はそのロック番号を用いて拡張ロック806にマップされるか、または別様で関連付けられている。
実施形態に従うと、スレッド802が書込みロック808の取得を要求するとき、書込みロック808に対するその要求はオリジナル・ロック804に向けられる。書込みロック808の解除の要求もオリジナル・ロック804に向けられる。書込みロック808の取得または解除に関するすべての原子動作は、オリジナル・ロック804を用いて行なわれる。
スレッド802が読取りロック810の取得を要求するとき、読取りロック810に対する要求はオリジナル・ロック804または拡張ロック806に向けられ得る。読取りロック810の解除の要求は、オリジナル・ロック804、拡張ロック806、または別の拡張ロック812に向けられ得る。読取りロック810の取得または解除に関するすべての原子動作は、好ましくは拡張ロック806を用いて行なわれる。本開示の別の場所に説明されるとおり、拡張ロック806に関する特定の状態が存在するときは、読取りロック810の取得または解除に関する原子動作がオリジナル・ロック804または別の拡張ロック812を用いて行なわれてもよい。
図10を参照すると、この図面は例示的実施形態に従うDMLを作成するプロセスの例の流れ図を示す。プロセス900は、たとえばオペレーティング・システムまたはその構成要素などのデータ処理システムにおいてロックを管理するアプリケーションにおいて実装されてもよい。
プロセス900は、オリジナル・ロックに対するコンテンション状態を検出することによって始まる(ステップ902)。ステップ902におけるオリジナル・ロックは現在使用されているRWLであってもよいし、実施形態に従うDMLにおいて使用可能であり得るオリジナル・ロックであってもよい。ステップ902のオリジナル・ロックが現在使用されているRWLであれば、プロセス900の付加的なステップ(図示せず)が、現在使用されているRWLを例示的実施形態によって使用可能であり得るオリジナル・ロックに変換してもよい。
プロセス900は、オリジナル・ロックとともに用いるための拡張ロックの好適な数を定める(ステップ904)。プロセス900は、拡張ロックとして使用するためのメモリの1つまたは部分を指定する(ステップ906)。
プロセス900は、オリジナル・ロック内に拡張ロックの索引を作成する(ステップ908)。その後プロセス900は終了する。ステップ908の一実施形態において、プロセス900はオリジナル・ロックの拡張ロックの索引の中に、拡張ロックが作成されたさまざまなメモリ場所のアドレスの順序付けされたリストを保存してもよい。別の実施形態において、プロセス900はステップ908においてあらゆる別のタイプの索引を保存してもよい。たとえば、ステップ908は拡張ロックの1つもしくはそれ以上のこうしたアドレス、または拡張ロックの順序、またはその組み合わせを明らかにするために変換され得る値のリストを作成してもよい。
図11を参照すると、この図面は例示的実施形態に従って拡張ロックに対するメモリ・スペースを割り当てるプロセスの流れ図を示す。プロセス1000は、図10のプロセス900とともに実装されてもよい。
一実施形態において、ロックとして使用するためのメモリ・スペースは、図10のプロセス900の開始より前に、たとえば起動時にオペレーティング・システムによってすでに割り当てられていてもよい。こうした実施形態において、プロセス900は図10のプロセス900のステップ906において、拡張ロックとして使用するための予め割り当てられたメモリの特定の部分を指定するだけでよい。
別の実施形態において、図10のプロセス900はプロセス1000に先行されてもよい。プロセス1000は、ロックとして使用するためのメモリの領域を割り当てることによって始まる(ステップ1002)。次いでプロセス1000は、図10のプロセス900をステップ906で実行してもよく、図10のプロセス900の終了とともに終了してもよい。プロセス900において、図10のステップ906は、ステップ1002において割り当てられたメモリの領域から、拡張ロックとして使用するためのメモリの1つまたはそれ以上の部分を指定するか、または割り当ててもよい。
図12を参照すると、この図面は例示的実施形態に従って特定の拡張ロックを特殊化するプロセスの流れ図を示す。プロセス1100は、図10のプロセス900とともに実装されてもよい。
図10のステップ908の後に、プロセス900はプロセス1100を実行してもよい。プロセス1100は、拡張ロックの1つまたはそれ以上をリーダ・ロックとして指定することによって始まる(ステップ1102)。その後プロセス1100は終了する。たとえば、プロセス1100は1つまたはそれ以上の拡張ロックの中に読取りモード・インジケータ・ビットをセットすることによって、それらの拡張ロックが関連リソースに対する読取りロックのみを保持するために用いられることを示してもよい。
図13を参照すると、この図面は例示的実施形態に従ってDML内の特定のオリジナル・ロックまたは拡張ロックにスレッドまたはプロセスを割り当てるプロセスを示す。プロセス1200は、たとえばオペレーティング・システムまたはその構成要素などのデータ処理システムにおいてロックを管理するアプリケーションにおいて実装されてもよい。
プロセス1200は、DMLを用いてリソースに対するロックを要求しているスレッドまたはプロセスに関連する識別子を検出することによって始まる(ステップ1202)。プロセス1200は、その要求が読取りロックに関係するか、書込みロックに関係するかを定める(ステップ1204)。
もしその要求が読取りロックを取得または解除することであれば(ステップ1204の「読取り」経路)、プロセス1200はそのロック要求に対して用いるためのロック番号またはロック索引を算出する(ステップ1206)。たとえば、プロセス1200はステップ1202からの識別子をハッシュ化して、そのリソースに対するオリジナル・ロックおよび拡張ロックの総数を最大とする番号を得てもよい。
プロセス1200はスレッドの要求を、算出されたロック番号または索引に対応するロックに割り当てる(ステップ1208)。その後プロセス1200は終了する。ステップ1208において割り当てられたロックの特定の状態では、本開示の他の場所に説明されるとおり、プロセス1200は付加的なステップを行なうか、または別のプロセスを実行してもよい。こうした付加的なステップまたは別のプロセスは、割り当てられたロック以外のオリジナル・ロックまたは拡張ロックを用いてロック動作を行なってもよい。
ステップ1204に戻って、もしその要求が書込みロックに関係していれば(ステップ1204の「書込み」経路)、プロセス1200はそのスレッドの要求をオリジナル・ロックに割り当てる(ステップ1210)。その後プロセス1200は終了する。
上述のブロック図の中の構成要素および流れ図の中のステップは、例としてのみ説明されるものである。これらの構成要素およびステップは、説明を明確にするために選択されたものであり、本発明の例示的実施形態を限定するものではない。たとえば、特定の実装は例示的実施形態の範囲から逸脱することなくこれらの構成要素またはステップのいずれかの組み合わせ、省略、さらなる細分、修正、増補、低減、または代替的な実装を行なってもよい。さらに、上述のプロセスのステップは、本発明の範囲内で異なる順序で行なわれてもよい。
すなわち、例示的実施形態において、デュアル・モード・リーダ・ライタ・ロックのためのコンピュータに実装される方法、装置、およびコンピュータ・プログラム製品が提供される。本発明の実施形態を用いて、データ処理システムはロック・コンテンション状態において効率を改善させて動作できる。この実施形態を用いて、データ処理システムはRWLが飽和してそれ以上のロックを保持できないときにも効率を改善させて動作できる。
実施形態に従うDMLは、ロックに対する要求が閾値よりも低いときには、現在使用されるRWLと同様にオリジナル・ロック構成のみを用いて動作できる。ロックに対する要求が閾値に達するかまたは閾値を超えるとき、すなわちロックに対するコンテンション状態が存在するとき、DMLは変形して拡張ロックを用いて動作できる。言換えると、実施形態に従うDMLは、ロックに対する要求によってアップグレードされて拡張モードで動作することも、ダウングレードされてオリジナル・モードで動作することもできる。
一実施形態において、現存するRWLは1データ・ワード未満のスペースを占有してもよい。こうした実施形態においては、例示的実施形態の範囲内でオリジナル・ロックと1つまたはそれ以上の拡張ロックとを1データ・ワード以内に収容できる。本発明の単なるいくつかの実施形態例として、拡張ロックがリーダ・ロックを保持すると説明した。好適な修正の際には、拡張ロックが書込みロックを含むロックのタイプの組み合わせを保持するために用いられ得る。
本発明の実施形態は、現存するロック管理アプリケーションと協働し得る。この実施形態は、現存するアプリケーションおよびプロセスが現在使用されるRWLを使用するためにのみ構成されているときに、それらがDMLを透過的に用いることも可能にできる。さらにDMLモードは使用中に、DMLを使用しているアプリケーションおよびプロセスにこうした遷移を気付かせることなく変化できる。
本発明は、完全にソフトウェアの実施形態、またはハードウェアおよびソフトウェア要素の両方を含む実施形態の形を取り得る。好ましい実施形態において、本発明は、ファームウェア、常駐ソフトウェア、およびマイクロコードを含むがそれに限定されないソフトウェアまたはプログラム・コードにおいて実装される。
さらに本発明は、コンピュータもしくはあらゆる命令実行システムによる使用、またはそれに関連する使用のためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からのアクセスが可能なコンピュータ・プログラム製品の形を取り得る。この説明の目的のために、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置またはデバイスによる使用、またはそれに関連する使用のためのプログラムを含有、保存、通信、伝播、または移送できるあらゆる実体的装置であってもよい。
その媒体は電子、磁気、光学、電磁気、赤外、もしくは半導体のシステム(もしくは装置もしくはデバイス)または伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、取外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(random access memory:RAM)、読取り専用メモリ(read−only memory:ROM)、剛性磁気ディスク、および光ディスクを含む。光ディスクの現行例は、コンパクト・ディスク−読取り専用メモリ(compact disk−read only memory:CD−ROM)、コンパクト・ディスク−読取り/書込み(compact disk−read/write:CD−R/W)およびDVDを含む。
さらに、コンピュータ記憶媒体はコンピュータ可読プログラム・コードを含有または保存することによって、そのコンピュータ可読プログラム・コードがコンピュータ上で実行されるときに、このコンピュータ可読プログラム・コードの実行によってそのコンピュータが通信リンクを通じて別のコンピュータ可読プログラム・コードを送信するようにさせてもよい。この通信リンクは、限定的でなくたとえば物理的または無線などである媒体を用いてもよい。
プログラム・コードを保存もしくは実行またはその両方を行うために好適なデータ処理システムは、システム・バスを通じてメモリ要素に直接的または間接的に結合された少なくとも1つのプロセッサを含むだろう。メモリ要素は、プログラム・コードの実際の実行の際に用いられるローカル・メモリ、大容量記憶媒体、および実行中に大容量記憶媒体からコードを検索しなければならない回数を減らすために少なくともいくつかのプログラム・コードの一時的記憶を提供するキャッシュ・メモリを含んでもよい。
データ処理システムは、サーバ・データ処理システムまたはクライアント・データ処理システムとして動作してもよい。サーバおよびクライアント・データ処理システムは、たとえばコンピュータ可読であるなどコンピュータ使用可能であるデータ記憶媒体を含んでもよい。サーバ・データ処理システムに関連するデータ記憶媒体は、コンピュータ使用可能コードを含んでもよい。クライアント・データ処理システムはそのコンピュータ使用可能コードをダウンロードして、たとえばそのクライアント・データ処理システムに関連するデータ記憶媒体に保存したり、そのクライアント・データ処理システムにおいて使用したりしてもよい。同様にサーバ・データ処理システムは、クライアント・データ処理システムからコンピュータ使用可能コードをアップロードしてもよい。例示的実施形態のコンピュータ使用可能プログラム製品実施形態からもたらされるコンピュータ使用可能コードは、この態様でサーバおよびクライアント・データ処理システムを用いてアップロードまたはダウンロードされてもよい。
入力/出力またはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイスなどを含むがそれに限定されない)は、システムに直接結合されるか、または介在するI/Oコントローラを通じて結合されてもよい。
加えて、データ処理システムが介在する私的または公的ネットワークを通じて他のデータ処理システムまたは遠隔のプリンタもしくは記憶装置に結合されることを可能にするために、システムにネットワーク・アダプタが結合されてもよい。モデム、ケーブル・モデムおよびイーサネット・カードは、現在利用可能なネットワーク・アダプタのタイプのうちのほんのいくつかである。
本発明の説明は例示および説明の目的のために提供されたものであって、網羅的になったり、本発明を開示される形に限定したりすることは意図されていない。通常の当業者には多くの修正および変更が明らかになるだろう。実施形態は、本発明の原理および実際の適用を説明し、他の通常の当業者が予期される特定の使用に好適であるようなさまざまな修正を伴うさまざまな実施形態に対して本発明を理解できるようにするために選択されて説明されたものである。

Claims (14)

  1. デュアル・モード・リーダ・ライタ・ロックのためのデータ処理システムに実装される方法であって、前記方法は、
    オリジナル・ロックの使用におけるコンテンション状態を定めるステップであって、前記オリジナル・ロックは前記データ処理システムにおいて利用可能なリソースに対応し、前記オリジナル・ロックを用いて前記データ処理システムにおいて実行する複数のプロセスによる前記リソースへの読取りアクセスおよび書込みアクセスの要求を順番付けて制御する、ステップと、
    前記オリジナル・ロックとともに使用するための拡張ロックの組を作成するステップであって、前記オリジナル・ロックおよび前記拡張ロックの組は前記デュアル・モード・リーダ・ライタ・ロックを形成し、前記デュアル・モード・リーダ・ライタ・ロックを用いて前記リソースへの前記読取りアクセスおよび書込みアクセスの要求を順番付けて制御するように動作する、ステップと、
    前記オリジナル・ロック内の索引を用いて前記拡張ロックの組の各拡張ロックに索引を付けることによって、前記索引を用いて各拡張ロックを位置付けできるようにするステップと、
    前記複数のプロセスによる前記リソースへの前記読取りアクセスおよび書込みアクセスを取得および解除するための要求を、前記オリジナル・ロックおよび前記拡張ロックの組のいずれかにわたって分散させることによって、前記コンテンション状態を解決するステップと
    を含む、方法。
  2. 前記オリジナル・ロックは既存のリーダ・ライタ・ロックの変更形であることによって、前記既存のリーダ・ライタ・ロックは前記拡張ロックの組とともに動作において使用可能な識別子の組を保持でき、前記方法はさらに、
    前記拡張ロックの組の中の拡張ロックをリーダ・ロックとして指定することによって、前記指定された拡張ロックが前記リソースに対する読取りロックのみを取得、保持および解除するために使用可能になるステップを含む、請求項1に記載の方法。
  3. 前記リソースに対する読取りロックの(i)取得および(ii)解除のうち一方のための要求をプロセスから受け取るステップと、
    前記要求を前記デュアル・モード・リーダ・ライタ・ロック内の拡張ロックに割り当てるステップと
    をさらに含む、請求項1または2に記載の方法。
  4. 前記プロセスからの、前記リソースに対する書込みロックの(i)取得および(ii)解除のうち一方のための第2の要求は前記オリジナル・ロックに割り当てられる、請求項3に記載の方法。
  5. 前記拡張ロックは、前記プロセスに関連する識別子から索引値を算出することによって、前記拡張ロックの組から選択され、前記索引値は前記拡張ロックを決定する、請求項3または4に記載の方法。
  6. 前記データ処理システムが、分散データ処理環境にあり、
    前記拡張ロックは、前記拡張ロックが前記データ処理システムの一つのプロセッサにより近いメモリ領域に位置付けられるように前記拡張ロックの組から選択される、請求項3、4または5に記載の方法。
  7. 前記リソースに対する書込みロックの(i)取得および(ii)解除のうち一方のための要求を受け取るステップと、
    前記要求を前記デュアル・モード・リーダ・ライタ・ロック内の前記オリジナル・ロックに割り当てるステップと
    をさらに含む、請求項1ないし6のいずれかに記載の方法。
  8. 前記デュアル・モード・リーダ・ライタ・ロックは、前記コンテンション状態が存在しないときには前記オリジナル・ロックのみを用いる第1のモードで動作し、
    前記デュアル・モード・リーダ・ライタ・ロックは、前記コンテンション状態が存在するときには前記オリジナル・ロックおよび前記拡張ロックの組を用いる第2のモードで動作し、
    前記デュアル・モード・リーダ・ライタ・ロックは、前記コンテンション状態が生じたときに前記第1のモードから前記第2のモードに切り替わり、
    前記デュアル・モード・リーダ・ライタ・ロックは、前記コンテンション状態が中止されたときに前記第2のモードから前記第1のモードに切り替わる、
    請求項1ないし8のいずれかに記載の方法。
  9. 前記第1のモードから前記第2のモードに前記切り替わるステップによって、前記リソースに対するロックに対する複数の原子動作を、(i)前記オリジナル・ロックおよび前記拡張ロックの組の中の拡張ロック、ならびに(ii)前記拡張ロックの組の中の2つの拡張ロック、のうちの一方に対して同時に実行させることによって、前記コンテンション状態を取り除く、請求項8に記載の方法。
  10. メモリ内の領域をロックとして用いるために割り当てるステップであって、前記拡張ロックの組を前記作成するステップは、前記領域における前記拡張ロックの組に対するスペースの組を指定する、ステップ
    をさらに含む、請求項1ないし9のいずれかに記載の方法。
  11. デュアル・モード・リーダ・ライタ・ロックのためのコンピュータ使用可能コードを含むコンピュータ・プログラムであって、前記コンピュータ使用可能コードは、
    オリジナル・ロックの使用におけるコンテンション状態を定めるためのコンピュータ使用可能コードであって、前記オリジナル・ロックはデータ処理システムにおいて利用可能なリソースに対応し、前記オリジナル・ロックを用いて前記データ処理システムにおいて実行する複数のプロセスによる前記リソースへの読取りアクセスおよび書込みアクセスの要求を順番付けて制御する、コンピュータ使用可能コードと、
    前記オリジナル・ロックとともに使用するための拡張ロックの組を作成するためのコンピュータ使用可能コードであって、前記オリジナル・ロックおよび前記拡張ロックの組は前記デュアル・モード・リーダ・ライタ・ロックを形成し、前記デュアル・モード・リーダ・ライタ・ロックを用いて前記リソースへの前記読取りアクセスおよび書込みアクセスの要求を順番付けて制御するように動作する、コンピュータ使用可能コードと、
    前記オリジナル・ロック内の索引を用いて前記拡張ロックの組の各拡張ロックに索引を付けることによって、前記索引を用いて各拡張ロックを位置付けできるようにするためのコンピュータ使用可能コードと、
    前記複数のプロセスによる前記リソースへの前記読取りアクセスおよび書込みアクセスを取得および解除するための要求を、前記オリジナル・ロックおよび前記拡張ロックの組のいずれかにわたって分散させることによって、前記コンテンション状態を解決するためのコンピュータ使用可能コードと
    を含む、コンピュータ・プログラム。
  12. 前記コンピュータ使用可能コードはデータ処理システム内のコンピュータ可読記憶媒体に保存され、前記コンピュータ使用可能コードは遠隔データ処理システムからネットワーク上を送信される、請求項11に記載のコンピュータ・プログラム。
  13. 前記コンピュータ使用可能コードはサーバ・データ処理システム内のコンピュータ可読記憶媒体に保存され、前記コンピュータ使用可能コードはネットワーク上で遠隔データ処理システムにダウンロードされて、前記遠隔データ処理システムに関連するコンピュータ可読記憶媒体において使用される、請求項11又は12に記載のコンピュータ・プログラム。
  14. デュアル・モード・リーダ・ライタ・ロックのためのデータ処理システムであって、前記データ処理システムは、
    記憶媒体を含む記憶装置であって、前記記憶装置はコンピュータ使用可能プログラム・コードを保存する、記憶装置と、
    プロセッサであって、前記プロセッサは前記コンピュータ使用可能プログラム・コードを実行する、プロセッサと
    を含み、前記コンピュータ使用可能プログラム・コードは、
    オリジナル・ロックの使用におけるコンテンション状態を定めるためのコンピュータ使用可能コードであって、前記オリジナル・ロックを用いてデータ処理システムにおいて利用可能なリソースに対応し、前記オリジナル・ロックは前記データ処理システムにおいて実行する複数のプロセスによる前記リソースへの読取りアクセスおよび書込みアクセスの要求を順番付けて制御する、コンピュータ使用可能コードと、
    前記オリジナル・ロックとともに使用するための拡張ロックの組を作成するためのコンピュータ使用可能コードであって、前記オリジナル・ロックおよび前記拡張ロックの組は前記デュアル・モード・リーダ・ライタ・ロックを形成し、前記デュアル・モード・リーダ・ライタ・ロックを用いて前記リソースへの前記読取りアクセスおよび書込みアクセスの要求を順番付けて制御する、コンピュータ使用可能コードと、
    前記オリジナル・ロック内の索引を用いて前記拡張ロックの組の各拡張ロックに索引を付けることによって、前記索引を用いて各拡張ロックを位置付けできるようにするためのコンピュータ使用可能コードと、
    前記複数のプロセスによる前記リソースへの前記読取りアクセスおよび書込みアクセスを取得および解除するための要求を、前記オリジナル・ロックおよび前記拡張ロックの組のいずれかにわたって分散させることによって、前記コンテンション状態を解決するためのコンピュータ使用可能コードと
    を含む、データ処理システム。
JP2012557462A 2010-03-15 2011-02-15 デュアル・モード・リーダ・ライタ・ロック Expired - Fee Related JP5818824B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/723,717 2010-03-15
US12/723,717 US9021491B2 (en) 2010-03-15 2010-03-15 Dual mode reader writer lock
PCT/EP2011/052189 WO2011113654A1 (en) 2010-03-15 2011-02-15 Dual mode reader writer lock

Publications (2)

Publication Number Publication Date
JP2013522740A JP2013522740A (ja) 2013-06-13
JP5818824B2 true JP5818824B2 (ja) 2015-11-18

Family

ID=43920783

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012557462A Expired - Fee Related JP5818824B2 (ja) 2010-03-15 2011-02-15 デュアル・モード・リーダ・ライタ・ロック

Country Status (10)

Country Link
US (2) US9021491B2 (ja)
EP (1) EP2548118A1 (ja)
JP (1) JP5818824B2 (ja)
KR (1) KR101442369B1 (ja)
CN (1) CN102792273B (ja)
AU (1) AU2011229395B2 (ja)
CA (1) CA2783449A1 (ja)
IL (1) IL220456A (ja)
SG (1) SG183093A1 (ja)
WO (1) WO2011113654A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012124077A1 (ja) * 2011-03-16 2012-09-20 富士通株式会社 マルチコアプロセッサシステムおよびスケジューリング方法
US8561067B2 (en) * 2011-05-31 2013-10-15 Red Hat, Inc. Test suites for virtualized computing environments
US20160110283A1 (en) * 2014-10-20 2016-04-21 Microsoft Corporation On-demand expansion of synchronization primitives
CN105893137B (zh) * 2014-10-21 2019-11-08 伊姆西公司 用于为对象分配锁资源的方法和装置
CN108809363A (zh) * 2018-08-27 2018-11-13 优视科技新加坡有限公司 近场数据传输方法及其装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522077A (en) * 1994-05-19 1996-05-28 Ontos, Inc. Object oriented network system for allocating ranges of globally unique object identifiers from a server process to client processes which release unused identifiers
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US6546443B1 (en) 1999-12-15 2003-04-08 Microsoft Corporation Concurrency-safe reader-writer lock with time out support
US6823511B1 (en) 2000-01-10 2004-11-23 International Business Machines Corporation Reader-writer lock for multiprocessor systems
US6792601B1 (en) 2000-05-18 2004-09-14 International Business Machines Corporation Multiple mode object locking method and system
US7430627B2 (en) 2000-12-19 2008-09-30 International Business Machines Corporation Adaptive reader-writer lock
US6678772B2 (en) * 2000-12-19 2004-01-13 International Businesss Machines Corporation Adaptive reader-writer lock
GB2381092B (en) * 2001-10-19 2005-10-19 Ibm Object locking in a shared VM environment
US7159221B1 (en) * 2002-08-30 2007-01-02 Unisys Corporation Computer OS dispatcher operation with user controllable dedication
AU2004284235A1 (en) * 2003-10-23 2005-05-06 Ciba Specialty Chemicals Holding Inc. Heat-stable diketopyrrolopyrrole pigment mixtures
US7603502B2 (en) 2005-04-12 2009-10-13 Microsoft Corporation Resource accessing with locking
GB0518516D0 (en) 2005-09-10 2005-10-19 Ibm Managing a resource lock
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US8145817B2 (en) * 2009-04-28 2012-03-27 Microsoft Corporation Reader/writer lock with reduced cache contention

Also Published As

Publication number Publication date
US9021491B2 (en) 2015-04-28
CA2783449A1 (en) 2011-09-22
IL220456A (en) 2017-01-31
US20110225587A1 (en) 2011-09-15
SG183093A1 (en) 2012-10-30
KR20130010467A (ko) 2013-01-28
KR101442369B1 (ko) 2014-09-17
US9021492B2 (en) 2015-04-28
CN102792273A (zh) 2012-11-21
IL220456A0 (en) 2012-08-30
US20120210074A1 (en) 2012-08-16
AU2011229395B2 (en) 2014-04-03
JP2013522740A (ja) 2013-06-13
EP2548118A1 (en) 2013-01-23
WO2011113654A1 (en) 2011-09-22
AU2011229395A1 (en) 2012-07-05
CN102792273B (zh) 2016-08-03

Similar Documents

Publication Publication Date Title
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
WO2012066640A1 (ja) 計算機システム、マイグレーション方法及び管理サーバ
JP2007026094A (ja) 実行装置およびアプリケーションプログラム
JP5818824B2 (ja) デュアル・モード・リーダ・ライタ・ロック
WO2011148553A1 (ja) 情報処理装置および情報処理方法
US9104501B2 (en) Preparing parallel tasks to use a synchronization register
US20150254113A1 (en) Lock Spin Wait Operation for Multi-Threaded Applications in a Multi-Core Computing Environment
JP7050957B2 (ja) タスクスケジューリング
WO2006035727A1 (ja) 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム
US8274521B2 (en) System available cache color map
US8347045B2 (en) Using a dual mode reader writer lock
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
CN115951845B (zh) 一种磁盘管理方法、装置、设备及存储介质
CN114365109A (zh) 启用rdma的键-值存储库
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
JP5553685B2 (ja) 情報処理装置および情報処理方法
JP2008276322A (ja) 情報処理装置、情報処理システムおよび情報処理方法
JP6333370B2 (ja) キャッシュ線中で動的配列データ構造を実装するための方法
JP2011248469A (ja) 情報処理装置および情報処理方法
US20230236906A1 (en) Information processing device, information processing method, and program
JP6519180B2 (ja) 管理システム、制御方法、および制御プログラム
JP2020101919A (ja) ファイルシステム、ファイルサーバ、およびメタデータ管理方法
AU2011211360B2 (en) Skip list generation
JP2008276321A (ja) 情報処理システムおよび情報処理方法
JP2010286931A (ja) ジョブ管理システム、ジョブ管理装置及びそのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150127

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150427

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150527

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150626

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150908

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150929

R150 Certificate of patent or registration of utility model

Ref document number: 5818824

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees