JP2001297008A - オブジェクトごとのロック履歴に基づくロック方針選択方法および装置 - Google Patents

オブジェクトごとのロック履歴に基づくロック方針選択方法および装置

Info

Publication number
JP2001297008A
JP2001297008A JP2000352893A JP2000352893A JP2001297008A JP 2001297008 A JP2001297008 A JP 2001297008A JP 2000352893 A JP2000352893 A JP 2000352893A JP 2000352893 A JP2000352893 A JP 2000352893A JP 2001297008 A JP2001297008 A JP 2001297008A
Authority
JP
Japan
Prior art keywords
spin
thread
current thread
computer
determined
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
JP2000352893A
Other languages
English (en)
Inventor
Benedict A Gomes
ベネディクト・エー.・ゴメス
Boris Weissman
ボリス・ワイスマン
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 JP2001297008A publication Critical patent/JP2001297008A/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
    • G06F9/526Mutual exclusion algorithms

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)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Lock And Its Accessories (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 オブジェクトが利用可能になるのを待ってい
る間にスレッドがスピンすべきか、スレッドがブロック
すべきかを効率的に判断する方法を提供する。 【解決手段】 オブジェクトが別のスレッドにより所有
される時を判断する工程と、オブジェクトが別のスレッ
ドにより所有されていないと判断される時にオブジェク
トをロックする工程とを含む。第一のスピンプロセス
は、オブジェクトが別のスレッドにより所有されている
と判断される時に実施され、カレントスレッドおよびオ
ブジェクトに関連づけられた所定のスピンサイクル数ま
でカレントスレッドがスピンするように構成される。所
定のスピンサイクル数は、履歴情報を使用して決定さ
れ、全体的なシステムの仕様には基づかない。第一のス
ピンプロセス中にオブジェクトがカレントスレッドによ
りロックされなかったと判断された時、第一のブロック
プロセスが実施される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はソフトウェアアプリ
ケーションの性能を改善する方法および装置に関し、特
に、オブジェクトのロックを取得することに関連するオ
ーバヘッドを減少させる方法および装置に関する。
【0002】
【従来の技術】オブジェクト系コンピューティングシス
テムにおいて、オブジェクトは一般にスレッドにより操
作される。オブジェクトは通常、一連の動作と、動作の
影響を記憶する状態と、を含む。オブジェクトは何らか
の記憶容量を有するため、オブジェクトは、ほとんど記
憶容量を有しない機能とは異なっている。当業者が理解
するように、スレッドは、ストレージリソースの「スケ
ッチ帳」と考えることが可能で、本質的にはコンピュー
タ内の単一の連続した制御の流れである。一般にスレッ
ドまたは「制御のスレッド」は、独立して実行可能な中
央演算処理装置(CPU)の命令またはプログラミング
言語のステートメントである。各スレッドは、メソッド
活性化部が常駐する固有の実行スタックを有する。
【0003】オブジェクト系プログラムの実行中、複数
のスレッドが単一のオブジェクトに関与する動作を実行
しようと試みる可能性がある。言い換えれば、二つ以上
のスレッドが単一のオブジェクトを操作しようと試みる
可能性がある。しばしば、一つのスレッドのみが、任意
の時間において、特定のオブジェクトに関与する動作
(同期動作)を呼び出すことを認められる。同期動作、
例えば同期メソッドは、メソッドを呼び出すスレッドが
メソッドを呼び出されるオブジェクトと最初に同期化
し、メソッドが戻ったときにそのオブジェクトと非同期
化する点において、ブロック構造である。スレッドのオ
ブジェクトとの同期化には、一般に、メソッドを呼び出
す前に同期構造を使用したオブジェクトへの制御アクセ
スが伴う。
【0004】スレッド、例えば当業者が理解するように
並行スレッドは、いつ制御の解放を強制されるか予測で
きないため、スレッドによる共有リソースの操作を認め
るのが不適切な期間中、ロック、ミューテックス、セマ
フォ、モニタ等の同期構造を使用して共有リソースへの
アクセスを制御できる。例えば、任意の一定の時間に二
つ以上のスレッドがオブジェクトを操作するのを防止す
るために、オブジェクトはロックを有する場合が多い。
このロックは、オブジェクトのロックを所有するスレッ
ドだけが、そのオブジェクトに対してメソッドを実行で
きるように構成される。
【0005】図1は、ロックと、共にオブジェクトにア
クセスする必要がある二つのスレッドを有するオブジェ
クトを示す模式図である。オブジェクト102は、ヘッ
ダフィールド106と、オブジェクト102がロックさ
れているか、またはスレッド114により所有されてい
るかを示すように構成されたワード110とを含む。図
のように、オブジェクト102はスレッド114aによ
りロックされている。したがって、ワード110はスレ
ッド114aがオブジェクト102を所有していること
を示す。別のワード118は、スレッド114aに関連
づけられたスタック126aのスタックフレーム12
2、例えばスタックフレーム122aに格納されてい
る。ワード118は、スレッド114aがオブジェクト
102のロックを所有しており、そのため、オブジェク
ト102の操作が可能であることを示すように構成され
る。
【0006】関連するスタック126bを有するスレッ
ド114bがオブジェクト102にアクセスする必要が
ある時、スレッド114bはワード110を読み込み、
オブジェクト102が利用可能かどうかを判断する。オ
ブジェクト102がスレッド114aによりロックされ
ている時、スレッド114bは、スレッド114aがロ
ックを解放するまで、オブジェクト102のロックを取
得できない。言い換えれば、ワード110が、どのスレ
ッドもオブジェクト102を所有していないことを示す
まで、スレッド114bはオブジェクト102のロック
を取得できない。
【0007】一般に、スレッド114bは、オブジェク
ト102のロックを繰り返し試みるか、または、スレッ
ド114bは、オブジェクト102が利用可能であるこ
とを通知されるまで事実上「スリープ」するか、のいず
れかが可能である。図2を参考に、スレッドによるオブ
ジェクトロックの取得に関連するステップを説明する。
オブジェクトロックを取得するプロセス202はステッ
プ204で始まり、ここでスレッド、例えば図1のスレ
ッド114bは、オブジェクト、例えば図1のオブジェ
クト102をロックしようと試みる。オブジェクトをロ
ックする試み、または、もっと一般的には、オブジェク
トの所有権を取得する試みの際、スレッドはオブジェク
トを調べ、このオブジェクトがロックされているかどう
かを判断できる。例えば、図1に関して前記したよう
に、スレッドはオブジェクトに格納される特定のワード
を読み込み、そのスレッドにとってオブジェクトが利用
可能かどうかを判断できる。オブジェクトが利用可能だ
った時、スレッドは、そのスレッドがオブジェクトをロ
ックしたこと、またはオブジェクトの所有権を取得した
ことを示すために、特定のワードを更新できる。
【0008】ステップ208では、スレッドがオブジェ
クトをロックする試みが成功したかどうかについて判断
がなされる。試みが成功したと判断された場合、そのス
レッドはオブジェクトロックを有し、オブジェクトをロ
ックするプロセスは完了する。または、オブジェクトを
ロックする試みが成功しなかった時は、そのオブジェク
トは別のスレッドによりロックされていることを意味す
る。この場合、スレッドは、そのスレッドがオブジェク
トをロックできるようになる前に、別のスレッドがオブ
ジェクトロックを解放するのを待たなければいけない。
【0009】オブジェクトをロックする試みが成功しな
かった時、プロセスフローはステップ212へ進み、こ
こで、オブジェクトが利用可能になるのを待っていると
きに、スレッドがスピンにコードされているか、ブロッ
クにコードされているかについて判断がなされる。スレ
ッドがスピンにコードされているとき、そのスレッドは
断続的にオブジェクトをチェックし、オブジェクトのロ
ックが利用可能かどうかを判断する。スピン、つまり解
放されるオブジェクト等のリソースに関する占有待ち
は、当業者が理解するように、スレッドコンテキストの
切り替えを回避する。または、スレッドがブロックにコ
ードされているとき、そのスレッドは事実上スリープ状
態に入り、その間、スレッドはオブジェクトへのアクセ
スを試みない。
【0010】ステップ212において、スレッドがスピ
ンにコードされていると判断された場合、そのスレッド
はステップ216において、一定の期間スピンする。こ
の一定の期間は通常、コンピューティングシステム全体
により決定され、一つの「スピンサイクル」とみなされ
る。スレッドが一つのスピンサイクルの間スピンした
後、プロセスフローはステップ204に戻り、ここでス
レッドはもう一度オブジェクトのロックを試みる。
【0011】または、ステップ212において、スレッ
ドがブロックにコードされていると判断された場合、そ
のスレッドはステップ220において、スレッド自体を
ブロックする。当業者が理解するように、コンピューテ
ィングシステムは一般にスピンサイクルの最大数を指定
する。一部のシステムでは、スレッドがオブジェクトの
ロックに成功せずにスピンサイクルの最大数スピンした
時、スレッドはスレッド自体をブロックするようにする
ことができる。つまり、一部のシステムでは、最初にス
ピンし、その後、スピンによりオブジェクトロックの取
得に成功しなかった場合、最終的にブロックするように
スレッドをコードできる。
【0012】スレッドがブロックされている間、そのス
レッドは、通常はオペレーティングシステムから、オブ
ジェクトがロック可能であることを通知されるのを待っ
ている。ステップ224において、スレッドはオブジェ
クトがロック可能であることの通知を受領する。これに
応じて、スレッドはスレッド自体をブロック解除し、プ
ロセスフローはステップ204に戻り、ここでスレッド
は再びオブジェクトのロックを試みる。
【0013】オブジェクトが解放されるのを待つ間、ス
レッドをブロックすること、つまり、スレッドをスリー
プさせ、そのスレッドが事実上実行されないようにする
ことは、オブジェクトが解放されるまでに大量の時間を
要することが予想される場合、スレッドのスピンを可能
にするよりも、コンピュータの負荷が少ない。しかし、
スレッドのブロックは通常、コンテキスト切換を要する
ため、比較的短時間でのオブジェクトの解放が予想され
る場合、スレッドのスピンを可能にすることが性能の観
点から効率的である場合もある。当業者が理解するよう
に、コンテキスト切換には、別のスレッドが利用可能な
場合に、別のスレッドを特定の中央演算処理装置(CP
U)上で実行可能にすることを伴う。一般に、スレッド
をブロックするか、スレッドのスピンを可能にするかの
選択は、システム規模で行われる。つまり、システムの
すべてのスレッドがブロックするか、またはシステムの
すべてのスレッドがスピンするかのいずれかとなる。
【0014】システム内のすべてのスレッドおよびオブ
ジェクトは通常、同じ行動で特徴付けることはされず、
例えば、すべてのスレッドがスピンにより利益を得ると
は限らないため、すべてのスレッドにブロックまたはス
ピンのいずれかをさせることは非効率的になる可能性が
高い。例えば、すべてのスレッドがスピンするシステム
において、特定のスレッドは大量の時間に渡ってスピン
を継続する可能性がある。こうしたスレッドに関して、
継続的なスピンは非効率的であり、こうしたスレッドを
ブロックすることで、システムリソースを他の目的に上
手く割り当てることが可能になる。
【0015】オブジェクトの所有権取得に失敗している
間、スレッドが継続的にスピンするのを防ぐために、一
部のシステムでは、スレッドがスピンの最大数だけスピ
ンするのを可能にし、最大数となった時点でスレッドは
ブロックされる。スレッドがシステム内で指定された最
大の回数スピンすることが可能で、その後ブロックされ
るシステムにおいても、スレッドが結局ブロックを強制
される時、スピンは依然として非効率的になる場合があ
る。つまり、結局はスレッド自体をブロックするスレッ
ドが最初に繰り返しスピンするのを許すことは、事実上
システムリソースの無駄である。スピンのプロセス全体
で繰り返されるオブジェクトをロックする試みは、コス
トが大きくなる場合が多く、他の場所で使用可能なシス
テムリソースを利用することで、プログラムの性能に悪
影響を与える傾向を有する。
【0016】
【発明が解決しようとする課題】従って、オブジェクト
をロックする試みに関連するコストを減らす方法が望ま
れる。即ち、オブジェクトが利用可能になるのを待って
いる間にスレッドがスピンすべきか、スレッドがブロッ
クすべきかを効率的に判断する方法が必要とされてい
る。
【0017】
【課題を解決するための手段】本発明は、スレッドがブ
ロック状態に入るのを可能にする前で、かつ、オブジェ
クトロックの取得を試みている間に、ほぼ最適な期間に
亘りスレッドのスピンを可能にする方法に関する。本発
明の一態様によれば、カレントスレッドを含むオブジェ
クト系環境においてオブジェクトの所有権を取得する方
法は、前記オブジェクトが別のスレッドにより所有され
ている時を判断する工程と、前記オブジェクトが前記別
のスレッドにより所有されていないと判断される時に前
記オブジェクトをロックする工程と、を含む。第一のス
ピンプロセスは、オブジェクトが別のスレッドにより所
有されていると判断された時に実行され、カレントスレ
ッドおよびオブジェクトに関連する所定のスピンサイク
ル数までカレントスレッドがスピンするように構成され
る。所定のスピンサイクル数は、履歴情報を使用して決
定され、システム全体の仕様には基づいていない。第一
のスピンプロセス中にオブジェクトがカレントスレッド
によりロックされていないと判断される時に、第一のブ
ロックプロセスが実行される。スレッドに所定の回数ス
ピンさせ、必要であればその後ブロックさせることで、
ロックに割り当てられたリソースを効率的に使用し、こ
れによりシステム全体の性能を改善する。
【0018】実施形態の一つにおいては、カレントスレ
ッドが情報収集位置にあるかどうかが判断される。第一
のスピンプロセスは、オブジェクトが別のスレッドによ
り所有されており、カレントスレッドが情報収集位置に
ない時に実行される。こうした実施形態において、カレ
ントスレッドが情報収集位置にあると判断された場合、
第二のスピンプロセスが実行される。第二のスピンプロ
セス中、カレントスレッドは、オブジェクト系環境で指
定される最大スピンサイクル数までスピンする。第二の
スピンプロセスの後、第二のスピンプロセスに関連する
履歴情報が格納される。
【0019】本発明の別の態様によれば、オブジェクト
系コンピューティング環境は、少なくとも一つのプロセ
ッサと、オブジェクトに関連づけられたロック機構の所
有権を有する第一のスレッドを含む。このコンピューテ
ィング環境は、カレントスレッドも含む。カレントスレ
ッドは、ロック機構が第一のスレッドにより所有された
時を判断するように構成され、更にロック機構が第一の
スレッドにより所有されていると判断した時に第一のス
ピンプロセスを実行するように構成される。第一のスピ
ンプロセスは、カレントスレッドが、カレントスレッド
およびオブジェクトに関連する履歴情報を使用して決定
された所定のスピンサイクル数までスピンするように構
成され、この所定のスピンサイクル数は履歴情報を使用
して決定される。
【0020】本発明の更に別の態様によれば、オブジェ
クト系システムにおいてオブジェクトの所有権を取得す
る方法は、履歴スピン情報の取得を含む。履歴スピン情
報は、オブジェクトの所有権取得を試みる間に、カレン
トスレッドがこれまでスピンした回数に関するデータを
含む。この方法はさらに、適切なスピンサイクルの回数
を決定するために履歴スピン情報を減らすこと、および
適切なスピンサイクルの回数までカレントスレッドをス
ピンすることを含む。スピンサイクルの合間に、カレン
トスレッドはオブジェクトの所有権の取得を試みる。最
後に、この方法は、カレントスレッドがオブジェクトの
所有権を取得していないと判断された時、カレントスレ
ッドがカレントスレッドをブロックするオブジェクトの
所有権を取得した時を判断することを含む。実施形態の
一つにおいて、適切なスピンサイクルの回数は、カレン
トスレッドがスピン中にオブジェクトの所有権を取得す
る可能性が所定の水準になるまでにカレントスレッドが
スピンする、実質的な最大数を示す。
【0021】本発明の前記その他の利点は、以下の詳細
な説明を読み、図面の様々な図を調べることで明らかに
なる。
【0022】
【発明の実施の形態】マルチスレッド・オブジェクト系
システム等のコンピューティングシステムにおいては、
オブジェクトの争奪が起こる場合が多い。言い換えれ
ば、あるスレッドが、別のスレッドによりロックされて
いるオブジェクトにアクセスしようと試みる可能性が高
い。オブジェクトが所有されている時、例えば、あるス
レッドによりオブジェクトのロックが保持されている
時、そのスレッドは事実上、オブジェクトの操作が可能
な唯一のスレッドである。言い換えれば、オーナースレ
ッド、つまりオブジェクトのロックを保持するスレッド
だけが、オブジェクトを操作できる。したがって、その
オブジェクトのロックを取得しようと試みている別のス
レッドは、オーナースレッドがロックを解放するまでロ
ックを取得できない。
【0023】ロックしたいオブジェクトが利用可能にな
るのを待っている間、スレッドは、スレッド自体のブロ
ック、またはスピンつまり占有待ちのいずれかが可能で
ある。スレッドをブロックするか、スレッドがスピンす
るのを可能にするかの選択は、システム規模でなされる
場合が多く、これによりシステムのすべてのスレッドが
ブロックするか、システムのすべてのスレッドがスピン
するかのいずれかになる。当業者が理解するように、シ
ステム内のすべてのスレッドおよびオブジェクトが同じ
行動により特徴付けられるわけではない。例えば、一部
のオブジェクトは小さなクリティカルセクションを有す
るロックを有しており、この場合はスピンが有利となる
可能性があり、一方、他のオブジェクトはブロックによ
って、より効率的に取得できるようなロックを有する。
そのため、すべてのスレッドにブロックまたはスピンの
いずれかをさせるのは、通常、非効率的である。
【0024】オブジェクトの所有権を取得するのに失敗
している間、スレッドが継続的にスピンするのを防ぐた
めに、一部のシステムでは、システムが指定したスピン
の最大数だけスレッドのスピンを可能にし、その時点で
スレッドをブロックする。こうしたシステムは、スレッ
ドがスピンだけまたはブロックだけを行うシステムより
も効率的になる場合が多いものの、スレッドが結局ブロ
ックを強制される時、スピンは依然として非効率的にな
る可能性がある。言い換えれば、結局スレッド自体をブ
ロックするスレッドが、ブロックの前に繰り返しスピン
する時、貴重なシステムリソースが無駄になる可能性が
あり、これによりシステム全体の性能が損なわれる。
【0025】異なるスレッドが、ブロックの前に異なる
回数スピンするのを可能にすることで、オブジェクトを
ロックすることに関連するオーバヘッド、つまり具体的
には、オブジェクトをロックする試みは減少する。一つ
のスレッドまたは複数のスレッドがオブジェクトをロッ
クする試みに関連する履歴を使用し、オブジェクトのロ
ックを試みる時にその一つのスレッドまたは複数のスレ
ッドに可能なスピンの事実上最適な回数を計算できる。
これにより、ブロックの前にすべてのスレッドにシステ
ム全体で指定された回数スピンさせるのではなく、履歴
データからの判断に応じて、各スレッドが個々のオブジ
ェクトそれぞれに固有な回数だけスピンできる。
【0026】スレッドがスピンできる最適な回数は一般
に、スレッドがオブジェクトロックを取得できることが
一般に予想される時間量と関連する。言い換えれば、ス
レッドがオブジェクトに関して指定された最適な回数ス
ピンすると、そのスレッドは通常、ロックを試みたオブ
ジェクトのロックに成功する。スレッドがスピンする最
適な回数は、ほぼ任意の適切な基準を使用して決定でき
る。例えば、この最適な回数はロックを取得する可能性
に基づくことが可能で、例えば、「スレッドがオブジェ
クトロックを取得する可能性が約90パーセントになる
前にスレッドが通常スピンする回数」にすることができ
る。または、最適な回数は、ブロックに関連するオーバ
ヘッドと、スピンに関連するオーバヘッドとの相殺に基
づいて選択できる。これにより、一部のオブジェクトに
関して、オブジェクトのロックを試みる間にスレッドが
スピンする回数をゼロにできる。
【0027】前記のように、オブジェクトをロックする
プロセス中、スレッドに関連する最適な回数またはスピ
ンを超えると、そのスレッドはスレッド自体をブロック
できる。実施形態の一つにおいて、一定のスレッドは、
最適な回数を上回る前に目的のオブジェクトロックを取
得する場合が多い。したがって、まれなケースを除き、
スレッドがスレッド自体をブロックする必要がない場合
が多い。別の実施形態で、特定のスレッドが繰り返しス
ピンするよりブロックするのが効率的だと判断されるよ
うなものにおいては、最適な回数は低くなる可能性があ
り、これによりスレッドはほぼ常にスレッド自体をブロ
ックするようになる。
【0028】図3を参考に、本発明の実施形態に従っ
て、オブジェクトをロックする方法の一つについて説明
する。オブジェクトをロックするプロセス302は、ス
テップ306で始まり、ここでスレッド、例えば「カレ
ント」スレッドは、オブジェクトのロックを試みる。通
常、オブジェクトをロックする試みは、オブジェクトが
所有されているか所有されていないか、つまりロックさ
れているかロックされていないかを特定するオブジェク
トからのビットを取得することを含む。このビットにお
いてオブジェクトが所有されていることが示される場
合、カレントスレッドはオブジェクトをロックできな
い。このビットにおいてオブジェクトが所有されていな
いことが示される場合、説明する実施形態において、カ
レントスレッドはオブジェクトをロックする。カレント
スレッドは、ほぼ任意の方法を使用してオブジェクトを
ロックできると解するべきである。
【0029】ステップ310において、カレントスレッ
ドによるオブジェクトをロックする試みが成功したかど
うかについて判断がなされる。この試みが成功したと判
断された場合は、カレントスレッドがオブジェクトの所
有権を有することを意味する。したがって、オブジェク
トをロックするプロセスは完了する。または、オブジェ
クトをロックする試みが成功しなかったと判断された場
合、プロセスフローはステップ314に移動し、システ
ム全体が、例えばオブジェクトに関して、履歴収集段階
にあるかどうかについて判断がなされる。つまり、その
オブジェクトおよびカレントスレッドに関係する追加履
歴情報が必要かどうかについて判断がなされる。
【0030】ステップ314において、追加履歴情報が
求められると判断された場合、プロセス制御はステップ
318へ進み、ここでカレントスレッドは、システム全
体により指定された最大の回数またはサイクルまでスピ
ンする。一般に、各システムは、「スレッドがスピンし
ている期間中にスレッドによりオブジェクトが取得され
なかった場合に、ブロックモードに切り替わる前に、各
スレッドがスピンできる好適な回数」を有している。こ
の好適な回数は、通常、あるオブジェクトの所有権取得
を試みるすべてのスレッドに関して同じである。スレッ
ドがスピンするのを可能にするプロセスの一つについて
は、図4aを参考に後で説明する。
【0031】全体的なスピンプロセスが進行している
間、各「スピンサイクル」の後、カレントスレッドはオ
ブジェクトのロックの取得を試みることができる。全体
的なスピンプロセス中にカレントスレッドによりオブジ
ェクトがロックされた場合、このスピンプロセスは通
常、終了すると理解するべきである。つまり、カレント
スレッドがオブジェクトをロックしたなら、このスピン
プロセスは完了したとみなされる。
【0032】カレントスレッドがシステム全体で指定さ
れた最大数までスピンした後、ステップ322におい
て、カレントスレッドがオブジェクトロックを取得した
かどうかについて判断がなされる。カレントスレッドが
オブジェクトロックを取得した場合、ステップ324に
おいて、カレントスレッドがオブジェクトロックを取得
する前に行ったスピンサイクルの回数に関する情報が格
納される。言い換えれば、後で説明するように、その
後、オブジェクトロックが取得される可能性が高い最適
なスピン数を決定するのに使用できるように、スピン履
歴情報が格納される。スピン情報が、例えばオブジェク
ト等に格納されると、オブジェクトをロックするプロセ
スは完了する。
【0033】説明する実施形態において、履歴情報は、
情報収集段階中にオブジェクトをロックする試みがなさ
れる度に、その情報が格納される形で収集される。つま
り、この情報は、特定のスレッドではなく、オブジェク
トに関連づけられて格納される。そのため、情報収集段
階中に収集および格納されるすべての情報は事実上、そ
のオブジェクトのロックを試みる様々なスレッドがスピ
ンした回数を反映する。しかし、これに代わる実施形態
においては、履歴情報をオブジェクトごとにおよびスレ
ッドごとに収集できる。言い換えれば、システム内の各
スレッドがオブジェクトをロックする試みに関連する履
歴情報を、別々に保存できる。
【0034】ステップ322に戻って、カレントスレッ
ドがオブジェクトロックを取得していない場合、このプ
ロセスフローはステップ322からステップ324に進
み、ここでスピン情報が格納される。カレントスレッド
はロックを取得していないため、格納されるスピン情報
は一般に、システム全体で指定されたスピンの最大数を
反映する。スピン情報が格納された後、カレントスレッ
ドはステップ330においてスレッド自体をブロック
し、オブジェクトのロックが可能であるという通知を待
つ。カレントスレッドはステップ334において、オブ
ジェクトが利用できるという通知を受領し、スレッド自
体をブロック解除する。オブジェクトが利用できるとい
う通知を受領すると、カレントスレッドはその後ステッ
プ306において、そのオブジェクトのロックを試み
る。当業者が理解するように、カレントスレッドが通知
を受領した時点とカレントスレッドがオブジェクトをロ
ックする試みを開始した時点との間に、別のスレッドが
オブジェクトのロックを試みた場合には、カレントスレ
ッドは通常、オブジェクトのロックに成功しない。
【0035】ステップ314に戻って、システムがオブ
ジェクトに関して履歴収集段階にないと判断された場
合、ステップ338において、そのオブジェクトからス
ピン情報が読み出される。実施形態の一つにおいて、こ
のスピン情報は、履歴収集プロセス中に取得した履歴ス
ピン情報を含む。スピン情報が読み出されると、カレン
トスレッドはステップ342において、最適なスピン時
間、例えばスピン情報に基づいて決定された最適なスピ
ンサイクル数だけスピンする。最適なスピン時間を決定
できるようにスピン情報を減らすために、ほぼ任意の適
切な方法を使用できると理解すべきである。適切な方法
には、その一部として、様々な確率的および統計的アル
ゴリズム等が含まれる。カレントスレッドを最適なスピ
ン時間スピンする方法の一つについては、図4bを参考
に後で説明する。
【0036】カレントスレッドがスピンしている間、例
えば連続するスピンサイクルの間に、カレントスレッド
はオブジェクトロックの取得を試みる。スピンプロセス
が完了した後、ステップ346において、カレントスレ
ッドがオブジェクトロックを所有しているかどうかにつ
いて判断がなされる。カレントスレッドがオブジェクト
ロックを所有していると判断された時、オブジェクトを
ロックするプロセスは完了する。
【0037】また、ステップ346において、カレント
スレッドがオブジェクトロックを所有していないと判断
された時、プロセスフローはステップ350に進み、こ
こでカレントスレッドはスレッド自体をブロックする
か、そうでなければ「スリープ」する。カレントスレッ
ドは一般に、例えば全体のオペレーティングシステムか
ら、オブジェクトが利用できるという通知を受領するま
でスリープする。ステップ334で、オブジェクトが利
用できるという通知をカレントスレッドが受領すると、
プロセスフローはステップ306に戻り、ここでカレン
トスレッドは再度オブジェクトのロックを試みる。
【0038】前記のように、履歴収集プロセス中、オブ
ジェクトのロックを試みるスレッドは、システム全体で
指定された最大数までスピンする。図4aは、本発明の
実施形態に従って、スレッドを最大数までスピンさせる
プロセス、つまり図3のステップ318を示すプロセス
フロー図である。スレッドをスピンさせるプロセス31
8は、ステップ402で始まり、ここで最大スピン時間
または最大スピン数を上回ったかどうかについて判断が
なされる。最大スピン数を上回っている場合、スピンプ
ロセスは完了する。一方、最大スピン数を上回っていな
い場合、スレッドはステップ403において、一度スピ
ンするか、1スピンサイクルだけ待つ。
【0039】スピンサイクル完了後、ステップ404に
おいて、スレッドがロックしようとしているオブジェク
トのロックが可能かどうかについて判断がなされる。ロ
ックが可能ではない場合、プロセスフローはステップ4
02に戻り、最大スピン数を上回ったかどうかの判断が
なされる。または、オブジェクトのロックが可能である
場合、スレッドはステップ406においてロックを取得
し、スピンプロセスは完了する。
【0040】説明する実施形態において、履歴収集プロ
セス中のスピンに加え、スレッドは履歴収集プロセス完
了後にもスピンする。具体的には、図3を参考に前記し
たように、履歴収集プロセスが終了すると、最適なスピ
ン時間だけスピンする。図4bは、本発明の実施形態に
従って、スレッドを最適な最大数までスピンさせるプロ
セス、つまり図3のステップ342を示すプロセスフロ
ー図である。スレッドをスピンさせるプロセス342
は、ステップ422で始まり、ここで履歴スピン情報を
分析し、最適なスピン数、または通常、オブジェクトの
所有権がスレッドに取得されるスピン時間を決定する。
一般に、最適なスピン数の決定には、任意の適切な数学
的アルゴリズムまたはデータ整理方式が使用できる。
【0041】最適なスピン数が計算されると、ステップ
424において、最適なスピン数を上回ったかどうかに
ついて判断がなされる。最適なスピン数を上回っている
時、スピンプロセスは完了しているとみなされる。また
は、最適なスピン数を上回っていない時、スレッドはス
テップ425において、一度スピンするか、1スピンサ
イクルだけ待つ。当業者が理解するように、最適なスピ
ン数がゼロでない限り、スレッドは少なくとも1度スピ
ンするため、ステップ425は少なくとも1度は実行さ
れる。
【0042】このスピンサイクルが完了すると、ステッ
プ426において、ロックされるオブジェクトのロック
が利用可能かどうかについて判断がなされる。ロックが
利用できない場合、プロセスフローはステップ422に
戻り、ここで最適なスピン数を上回ったかどうかについ
て判断がなされる。または、オブジェクトのロックが利
用できる場合、スレッドはステップ428においてロッ
クを取得し、スピンプロセスが完了する。
【0043】図5は、本発明の実施に適した代表的な汎
用コンピュータシステムを表している。このコンピュー
タシステム1030は、任意の数のプロセッサ1032
(中央演算処理装置またはCPUとも呼ばれる)を含
み、これは主記憶装置1034(通常はランダムアクセ
スメモリまたはRAM)および主記憶装置1036(通
常は読み取り専用メモリまたはROM)を含む記憶装置
と結合する。
【0044】コンピュータシステム1030または具体
的にはCPU1032は、当業者が理解するように、バ
ーチャルマシンをサポートするように構成することがで
きる。コンピュータシステム1030がサポートするバ
ーチャルマシンの一例については、図6を参考に後で説
明する。この技術でよく知られるように、ROMはデー
タおよび命令をROMはデータおよび命令をCPU10
32に対して一方向に転送する働きをし、一方RAMは
通常、データおよび命令を双方向で転送するために使用
される。CPU1032は一般に任意の数のプロセッサ
を含むことができる。両方の主記憶装置1034、10
36は、任意の最適なコンピュータ読み取り可能な媒体
を含むことができる。通常は大容量記憶装置である二次
記憶媒体1038も、同じく双方向でCPU1032と
結合し、追加分のデータ記憶容量を提供する。大容量記
憶装置1038は、コンピュータコード、データ、およ
びその他を含むプログラムを格納するのに使用できるコ
ンピュータ読み取り可能な媒体である。通常、大容量記
憶装置1038は、主記憶装置1034、1036より
も速度の遅い、ハードディスクまたはテープ等の記憶媒
体である。大容量記憶装置1038は、磁気または紙テ
ープ読み取り機、またはその他いくつかの広く知られた
装置の形態をとることが可能である。大容量記憶装置1
038で保持される情報は、適切な場合には、標準的な
方法で、仮想メモリとしてRAM1036の一部に取り
入れることが可能であると理解できる。CD−ROM等
の特定の主記憶装置1034も双方向でCPU1032
にデータを渡す。
【0045】CPU1032は、一つ以上の入出力装置
1040とも結合しており、これにはその一部として、
ビデオモニタ、トラックボール、マウス、キーボード、
マイクロフォン、タッチセンスディスプレイ、トランス
デューサカードリーダ、磁気または紙テープ読み取り
機、タブレット、スタイラス、音声または手書き認識装
置、または当然ながら他のコンピュータ等のその他の広
く知られた入力デバイスといった装置を含めることがで
きる。最後に、CPU1032は、1012において一
般的に表示したネットワーク接続を使用して、コンピュ
ータ、またはローカルエリアネットワーク、インターネ
ットネットワーク、或いはイントラネットネットワーク
等の通信ネットワークと結合できる。こうしたネットワ
ーク接続により、CPU1032は、前記方法のステッ
プを実行する過程で、ネットワークから情報を受領する
こと、またはネットワークの情報を出力することが可能
である。こうした情報は、CPU1032を使用して実
行される一連の命令を表す場合が多く、例えば搬送波に
埋め込まれたコンピュータデータ信号の形態で、ネット
ワークから受領することまたはネットワークへ出力する
ことができる。前記の装置および器具については、コン
ピュータハードウェアおよびソフトウェア技術に関する
業者が精通している。
【0046】前記のように、コンピュータシステム10
30ではバーチャルマシンを実行できる。図6は、図8
のコンピュータシステム1030がサポートし、本発明
の実施に適したバーチャルマシンを表す模式図である。
カリフォルニア州パロアルトのサンマイクロシステムズ
が開発したJava(商標)プログラミング言語で書か
れたコンピュータプログラム等のコンピュータプログラ
ムが実行される時、コンパイルタイム環境1105内
で、ソースコード1110がコンパイラ1120に提供
される。コンパイラ1120はソースコード1110を
バイトコード1130にコンパイルする。一般に、ソー
スコード1110は、ソースコード1110がソフトウ
ェア開発者により開発された時点でバイトコード113
0にコンパイルされる。
【0047】バイトコード1130は一般に、複製、ダ
ウンロード、もしくは図5のネットワーク1012等の
ネットワークを通じた配信、または図5の主記憶装置1
034等の記憶装置上での格納が可能である。説明する
実施形態において、バイトコード1130はプラットフ
ォームに依存しない。つまり、バイトコード1130
は、適切なバーチャルマシン1140を実行しているほ
ぼ任意のコンピュータシステム上で実行できる。例え
ば、Java(商標)環境において、バイトコード11
30は、Java(商標)バーチャルマシンを実行して
いるコンピュータシステム上で実行できる。
【0048】バイトコード1130は、バーチャルマシ
ン1140を含むランタイム環境1135に提供され
る。ランタイム環境1135は一般に、図5のCPU1
032等のプロセッサを使用して実行できる。バーチャ
ルマシン1140は、コンパイラ1142と、インタプ
リタ1144と、ランタイムシステム1146とを含
む。バイトコード1130は一般に、コンパイラ114
2またはインタプリタ1144の一方に提供される。
【0049】バイトコード1130がコンパイラ114
2に提供された時、バイトコード1130に含まれるメ
ソッドは、前記のように、機械語命令にコンパイルされ
る。一方、バイトコード1130がインタプリタ114
4に提供された時、バイトコード1130は1度に1バ
イトコードずつインタプリタ1144に読み込まれる。
インタプリタ144は、その後、各バイトコードがイン
タプリタ1144に読み込まれるのに従って、各バイト
コードで定義されている動作を実行する。一般に、イン
タプリタ144はバイトコード1130を処理し、バイ
トコード1130に関連する動作をほぼ連続的に実行す
る。
【0050】メソッドがオペレーティングシステム11
60から呼び出される時、そのメソッドがインタープリ
ットされたメソッドとして呼び出されると判断される場
合、ランタイムシステム1146は、そのメソッドをイ
ンタプリタ1144から取得できる。一方、そのメソッ
ドがコンパイルされたメソッドとして呼び出されると判
断される場合、ランタイムシステム1146はコンパイ
ラ1142を起動する。コンパイラ1142は次にバイ
トコード1130から機械語命令を生成し、この機械語
命令が実行される。一般に、この機械語命令は、バーチ
ャルマシン1140の終了時に廃棄される。バーチャル
マシンまたは、具体的には、Java(商標)バーチャ
ルマシンの動作については、ティム・リンドンおよびフ
ランク・イエリンによるJava(商標)バーチャルマ
シン仕様書(Java(Trade Mark) Virtual Machine Speci
fication)(ISBN 0-201-63452-X)の中で詳しく説明さ
れており、これは参考としてすべて本願に含めている。
【0051】本発明のいくつかの実施形態のみを説明し
たが、本発明は、本発明の趣旨または範囲から離れるこ
となく、他の多くの具体的な形態において実施できると
理解するべきである。例えば、オブジェクトをロックす
ることについての履歴情報収集に関する方法に関連する
ステップ、または一般的にはオブジェクトロックが利用
可能になるのを待つことに関連するステップは、特定の
システムの要件に応じて、再配置、除去、または追加す
ることができる。例えば、スピン情報は、カレントスレ
ッドがオブジェクトロックを所有する時の決定後ではな
く、こうした決定の前に格納できる。
【0052】オブジェクトロックが同期構造の一例であ
ることは当業者には理解されよう。一般には、同期構造
は、二つ以上のスレッドが任意の一定の時間に、あるオ
ブジェクトを操作するのを防ぐように構成される。本発
明は、オブジェクトのロックを取得することに関連する
ものとして説明されているが、ロックの取得ではなく、
任意の最適な同期構造を代わりに使用して、オブジェク
トの有効な所有権を得ることができる。最適な同期構造
には、その一部として、セマフォ、モニタ、ミューテッ
クス等が含まれる。
【0053】最適なスピン時間は、前記のように、オブ
ジェクトに基づいており、オブジェクトのロックを試み
るすべてのスレッドに適用できる。しかし、実施形態の
一つにおいて、各スレッドがオブジェクトに関して、固
有の最適なスピン時間を有することができる。言い換え
れば、本発明の趣旨または範囲から離れることなく、シ
ステム全体において、それぞれのオブジェクト−スレッ
ドのペアが固有の最適なスピン時間を有するように、オ
ブジェクト当たりおよびスレッド当たりで最適なスピン
時間を決定できる。
【0054】履歴スピン情報を使用して最適なスピン数
を決定することは、スレッドがスピンするのを可能にす
るプロセスの一部として説明した。言い換えれば、最適
なスピン時間は、スレッドがスピンを開始しようとする
時に計算される。しかし、最適なスピン数は、ほぼ任意
の適切な時点で決定できると理解すべきである。例え
ば、最適なスピン数は、スピン情報が格納される度に、
動的に更新し、または、そうでなければ決定することが
できる。最適なスピン数が動的に更新されると、最適な
スピン数がオブジェクト内に格納され、スピン情報が読
み出される時に最適なスピン数が自動的に取得される。
【0055】または、実施形態の一つにおいて、最適な
スピン数を実質的に一度だけ、例えばオブジェクトの履
歴収集プロセスが完了した直後等に計算することができ
る。こうした実施形態において、最適なスピン数は計算
された後で格納され、オブジェクトに関連するスピン情
報を取得するスレッドにより容易にアクセスされるよう
になる。
【0056】図4bに関して前記したとおり、ブロック
の前にスレッドがスピンできる最適な回数はゼロになる
場合がある。最適なスピン数がゼロの場合は、システム
全体で指定された最大スピン数を上回った後でも、スレ
ッドが依然としてロックを希望するオブジェクトをロッ
クしていないことを意味する。したがって、スピンとブ
ロックに関連するコンテキスト切換との相殺において、
スピンせずにスレッドをブロックすることが有利になる
場合、最適なスピン数をゼロにできる。スレッドのブロ
ックのみを行うことの判断には、ロックプロセスの一部
として、スピンまたはブロックのどちらが有効かについ
ての計算が関与する場合がある。
【0057】スピン情報は、例えば他では使用されない
オブジェクトのビットを使用して、オブジェクト内に格
納されるものとして説明したが、スピン情報は一般に、
システム全体の任意の場所に格納できる。例えば、複数
のオブジェクトのスピン情報は、複数のオブジェクトお
よびそのオブジェクトの所有権取得を試みているスレッ
ドがアクセス可能なデータ構造に格納できる。
【0058】ブロック前にスレッドが実行する最適なス
ピンサイクル数を決定するのに使用する履歴スピン情報
は、特定のオブジェクトに関連するものとして説明した
が、実施形態の一つにおいては、その代わりに、最適な
スピンサイクル数がほぼスレッドのみに関連する場合が
あると理解すべきである。つまり、オブジェクトのロッ
クを試みる各スレッドが、そのオブジェクトにより最適
なスピンサイクル数を指定されるように、オブジェクト
別の履歴データを収集するのではなく、あるスレッドが
ロックを試みたすべてのオブジェクトに関する履歴デー
タを使用して、そのスレッドに関する単一の最適なスピ
ンサイクル数を決定できる。したがって、スレッドは、
そのスレッドに関連する実質的に唯一の最適なスピンサ
イクル数を有することができる。
【0059】一般に、履歴スピン情報は最適なスピンサ
イクル数の決定に使用するのに適したものとして説明し
たが、履歴スピン情報は他の用途にも使用できると理解
すべきである。こうした用途には、その一部として、本
発明の趣旨または範囲から離れることなく、以下のもの
が含まれる。すなわち、通常のデフレーション期間中に
デフレートされることでロックが恩恵を受けるかどうか
の判断をすること、ロックを積極的にデフレートする試
みを行うべきかどうかの判断をすること、ガーベジコレ
クションプロセス中に変更されることでロック実装の性
質が恩恵を受けるかどうかの判断をすることが含まれ
る。したがって、本例は例示的なものであり、限定的な
ものではないと考えられ、本発明はここで述べた詳細に
より制限されず、付記した請求項の範囲内で変形し得
る。
【図面の簡単な説明】
本発明は、次の付随する図面と結びつけて以下の説明を
参照することで最も良く理解できる。
【図1】所有権が争われているオブジェクトを示す模式
図である。
【図2】オブジェクトをロックする従来の方法を示すプ
ロセスフロー図である。
【図3】本発明の実施形態に係るオブジェクトをロック
するプロセスを示すプロセスフロー図である。
【図4a】本発明の実施形態に係るスレッドを最大の回
数までスピンさせるプロセス、つまり図3のステップ3
18を示すプロセスフロー図である。
【図4b】本発明の実施形態に係るスレッドを最適な最
大の回数までスピンさせるプロセス、つまり図3のステ
ップ342を示すプロセスフロー図である。
【図5】本発明の実施に適した汎用コンピュータシステ
ムを示す模式図である。
【図6】図5のコンピュータシステムがサポートし、本
発明の実施に適したバーチャルマシンを示す模式図であ
る。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 ベネディクト・エー.・ゴメス アメリカ合衆国 カリフォルニア州95014 クパーチノ, #シー,ローズウッド, 10676 (72)発明者 ボリス・ワイスマン アメリカ合衆国 カリフォルニア州94041 マウンテン・ビュー, #2234,ハイ・ スクール・ウェイ,900 Fターム(参考) 5B098 GA05 GD15 HH04

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 カレントスレッドを使用してオブジェク
    ト系環境においてオブジェクトの所有権を取得するため
    のコンピュータにより実現される方法であって、 前記オブジェクトが別のスレッドにより所有されている
    時を判断する工程と、 前記オブジェクトが前記別のスレッドにより所有されて
    いないと判断される時に前記オブジェクトをロックする
    工程と、 前記オブジェクトが前記別のスレッドにより所有されて
    いると判断される時に第一のスピンプロセスを実行する
    工程であって、前記第一のスピンプロセスは、前記カレ
    ントスレッドおよび前記オブジェクトに関連づけられた
    所定のスピンサイクル数まで、前記カレントスレッドが
    スピンするように構成されており、前記所定のスピンサ
    イクル数は、履歴情報を使用して決定される、工程と、 前記第一のスピンプロセス中に前記カレントスレッドに
    より前記オブジェクトがロックされた時を判断する工程
    と、 前記第一のスピンプロセス中に前記オブジェクトが前記
    カレントスレッドによりロックされなかったと判断され
    る時に第一のブロックプロセスを実行する工程であっ
    て、前記カレントスレッドが、前記第一のブロックプロ
    セス中、前記オブジェクトがロック可能であるという通
    知を待つ工程と、を備える方法。
  2. 【請求項2】 請求項1記載のコンピュータにより実現
    される方法であって、さらに、 前記カレントスレッドが情報収集位置にある時を判断す
    る工程を備え、前記オブジェクトが前記別のスレッドに
    より所有されており、かつ、前記カレントスレッドが前
    記情報収集位置にないと判断されるときには、前記第一
    のスピンプロセスが実行される、コンピュータにより実
    現される方法。
  3. 【請求項3】 請求項2記載のコンピュータにより実現
    される方法であって、 前記カレントスレッドが情報収集位置にあると判断され
    るとき、さらに、 前記オブジェクト系環境により指定される最大スピンサ
    イクル数まで前記カレントスレッドがスピンするように
    構成される第二のスピンプロセスを実行する工程と、 前記第二のスピンプロセスに関連する情報を格納する工
    程と、を備えるコンピュータにより実現される方法。
  4. 【請求項4】 請求項3記載のコンピュータにより実現
    される方法であって、さらに、 前記第二のスピンプロセス中に前記オブジェクトが前記
    カレントスレッドによりロックされた時を判断する工程
    と、 前記第二のスピンプロセス中に前記オブジェクトが前記
    カレントスレッドによりロックされなかったと判断され
    るとき、第二のブロックプロセスを実行する工程と、を
    備えるコンピュータにより実現される方法。
  5. 【請求項5】 請求項3記載のコンピュータにより実現
    される方法であって、 前記情報が履歴情報であり、 前記第二のスピンプロセスに関連する情報を格納する工
    程が、前記第二のスピンプロセス中に発生したスピンサ
    イクル数に関連するデータを格納する工程を含む、コン
    ピュータにより実現される方法。
  6. 【請求項6】 請求項1記載のコンピュータにより実現
    される方法であって、さらに、 前記履歴情報を使用して前記所定のスピンサイクル数を
    決定する工程を備えるコンピュータにより実現される方
    法。
  7. 【請求項7】 関連するロック機構を有するオブジェク
    トを含むオブジェクト系コンピューティング環境であっ
    て、 少なくとも一つのプロセッサと、 前記ロック機構を所有している第一のスレッドと、 カレントスレッドと、を備え、 前記カレントスレッドは、前記第一のスレッドにより前
    記ロック機構が所有されている時を判断するように構成
    されており、 第二のスレッドは、さらに、前記ロック機構が前記第一
    のスレッドに所有されていると判断される時に、第一の
    スピンプロセスを実行するように構成されており、 前記第一のスピンプロセスは、前記カレントスレッドお
    よび前記オブジェクトに関連する所定のスピンサイクル
    数まで前記カレントスレッドがスピンするように構成さ
    れており、 前記所定のスピンサイクル数は、履歴情報を使用して決
    定される、オブジェクト系コンピューティング環境。
  8. 【請求項8】 請求項7記載のオブジェクト系コンピュ
    ーティング環境であって、 前記カレントスレッドは、さらに、 前記第一のスピンプロセス中に前記カレントスレッドが
    前記ロック機構の所有権を取得したかどうかを判断し、 前記第一のスピンプロセス中に前記カレントスレッドが
    前記ロック機構の所有権を取得しなかったと判断される
    とき、第一のブロックプロセスを実行し、前記第一のブ
    ロックプロセス中、前記ロック機構が利用できるという
    通知を待つ間、前記カレントスレッドが実質的にアイド
    ル状態となるように構成される、オブジェクト系コンピ
    ューティング環境。
  9. 【請求項9】 請求項8記載のオブジェクト系コンピュ
    ーティング環境であって、 前記カレントスレッドは、さらに、前記カレントスレッ
    ドが情報収集位置にある時を判断するように構成され、
    前記カレントスレッドが前記情報収集位置にないと判断
    されるときには、前記第一のスピンプロセスが実行され
    るように構成されている、オブジェクト系コンピューテ
    ィング環境。
  10. 【請求項10】 請求項9記載のオブジェクト系コンピ
    ューティング環境であって、 前記カレントスレッドが前記情報収集位置にあると判断
    されるとき、前記カレントスレッドは、さらに、第二の
    スピンプロセスを実行するように構成され、前記第二の
    スピンプロセスは、最大スピンサイクル数まで前記カレ
    ントスレッドがスピンするように構成され、前記最大ス
    ピンサイクル数は、前記オブジェクト系コンピューティ
    ング環境により指定され、 前記カレントスレッドが前記情報収集位置にあると判断
    されるとき、前記カレントスレッドは、さらに、前記第
    二のスピンプロセスに関連する前記履歴情報を格納する
    ように構成され、前記履歴情報は、前記所定のスピンサ
    イクル数を決定するのに使用される、オブジェクト系コ
    ンピューティング環境。
  11. 【請求項11】 カレントスレッドを使用してオブジェ
    クト系環境においてオブジェクトの所有権を取得するた
    めのコンピュータプログラム製品であって、 前記オブジェクトが別のスレッドにより所有されている
    時を判断するコンピュータコードと、 前記オブジェクトが前記別のスレッドにより所有されて
    いないと判断される時に前記オブジェクトをロックする
    コンピュータコードと、 前記オブジェクトが前記別のスレッドにより所有されて
    いると判断される時に第一のスピンプロセスを実行する
    コンピュータコードであって、前記第一のスピンプロセ
    スは、前記カレントスレッドおよび前記オブジェクトに
    関連づけられた所定のスピンサイクル数まで、前記カレ
    ントスレッドがスピンするように構成されており、前記
    所定のスピンサイクル数は、前記履歴情報を使用して決
    定される、コンピュータコードと、 前記第一のスピンプロセス中に前記オブジェクトが前記
    カレントスレッドによりロックされた時を判断するコン
    ピュータコードと、 前記第一のスピンプロセス中に前記オブジェクトが前記
    カレントスレッドによりロックされなかったと判断され
    る時に第一のブロックプロセスを実行するコンピュータ
    コードであって、前記カレントスレッドが、前記第一の
    ブロックプロセス中、前記オブジェクトがロック可能で
    あるという通知を待つコンピュータコードと、 これらのコンピュータコードを格納するコンピュータ読
    み取り可能な媒体と、 を備えるコンピュータプログラム製品。
  12. 【請求項12】 請求項11記載のコンピュータプログ
    ラム製品であって、 さらに、 前記カレントスレッドが情報収集位置にある時を判断す
    るコンピュータコードを含み、前記オブジェクトが前記
    別のスレッドにより所有されており、かつ、前記カレン
    トスレッドが前記情報収集位置にないと判断されるとき
    には、前記第一のスピンプロセスが実施される、コンピ
    ュータプログラム製品。
  13. 【請求項13】 請求項12記載のコンピュータプログ
    ラム製品であって、 さらに、 第二のスピンプロセスを実行するコンピュータコードで
    あって、前記第二のスピンプロセスは、最大スピンサイ
    クル数までカレントスレッドがスピンするように構成さ
    れており、前記最大スピンサイクル数は、前記カレント
    スレッドが前記情報収集位置にあると判断されるとき
    に、前記オブジェクト系環境により指定される、コンピ
    ュータコードと、 前記カレントスレッドが前記情報収集位置にあると判断
    されるときに、前記第二のスピンプロセスに関連する情
    報を格納するコンピュータコードと、 を備えるコンピュータプログラム製品。
  14. 【請求項14】 請求項13記載のコンピュータプログ
    ラム製品であって、さらに、 前記第二のスピンプロセス中に前記オブジェクトが前記
    カレントスレッドによりロックされた時を判断するコン
    ピュータコードと、 前記第二のスピンプロセス中に前記オブジェクトが前記
    カレントスレッドによりロックされなかったと判断され
    るとき、第二のブロックプロセスを実行するコンピュー
    タコードと、 を備えるコンピュータプログラム製品。
  15. 【請求項15】 請求項11記載のコンピュータプログ
    ラム製品であって、さらに、 前記履歴情報を使用して前記所定のスピンサイクル数を
    決定するコンピュータコードを備える、コンピュータプ
    ログラム製品。
  16. 【請求項16】 請求項11記載のコンピュータプログ
    ラム製品であって、 前記コンピュータ読み取り可能な媒体は、コンピュータ
    ディスクと、ハードドライブと、テープドライブと、C
    D−ROMと、コンピュータメモリと、搬送波で具現さ
    れるデータ信号と、からなる群から選択された一つであ
    る、コンピュータプログラム製品。
  17. 【請求項17】 オブジェクト系環境においてオブジェ
    クトの所有権を取得するためのコンピュータにより実現
    される方法であって、 履歴スピン情報を取得する工程であって、前記履歴スピ
    ン情報は、オブジェクトの所有権取得を試みる間にカレ
    ントスレッドがこれまでにスピンした回数に関するデー
    タを含む、工程と、 適切なスピンサイクル数を決定するために前記履歴スピ
    ン情報を減らす工程と、 前記適切なスピンサイクル数まで前記カレントスレッド
    をスピンさせる工程であって、前記スピンサイクルの合
    間に前記カレントスレッドが前記オブジェクトの所有権
    取得を試みる、工程と、 前記カレントスレッドが前記オブジェクトの所有権を取
    得した時を判断する工程と、 前記カレントスレッドが前記オブジェクトの所有権を取
    得しなかったと判断されるとき、前記カレントスレッド
    をブロックする工程と、 を備えるコンピュータにより実現される方法。
  18. 【請求項18】 請求項17記載のコンピュータにより
    実現される方法であって、 前記適切なスピンサイクル数は、実質的に前記カレント
    スレッドのみに関連づけられているコンピュータにより
    実現される方法。
  19. 【請求項19】 請求項17記載のコンピュータにより
    実現される方法であって、 前記適切なスピンサイクル数は、前記カレントスレッド
    がスピン中に前記オブジェクトの所有権を取得する可能
    性が所定の水準になるまでにカレントスレッドがスピン
    する、実質的な最大数を示す、コンピュータにより実現
    される方法。
  20. 【請求項20】 請求項17記載のコンピュータにより
    実現される方法であって、 前記履歴スピン情報は、さらに、前記オブジェクトの所
    有権取得を試みる間に少なくとも一つの追加スレッドが
    スピンする回数に関連するものを含む、コンピュータに
    より実現される方法。
JP2000352893A 1999-11-22 2000-11-20 オブジェクトごとのロック履歴に基づくロック方針選択方法および装置 Pending JP2001297008A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/444,552 US6687904B1 (en) 1999-11-22 1999-11-22 Method and apparatus for selecting a locking policy based on a per-object locking history
US09/444552 1999-11-22

Publications (1)

Publication Number Publication Date
JP2001297008A true JP2001297008A (ja) 2001-10-26

Family

ID=23765389

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000352893A Pending JP2001297008A (ja) 1999-11-22 2000-11-20 オブジェクトごとのロック履歴に基づくロック方針選択方法および装置

Country Status (3)

Country Link
US (1) US6687904B1 (ja)
EP (1) EP1104900B1 (ja)
JP (1) JP2001297008A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007517328A (ja) * 2003-12-31 2007-06-28 インテル・コーポレーション 動作モデルベースマルチスレッドアーキテクチャ
WO2012132017A1 (ja) * 2011-03-31 2012-10-04 富士通株式会社 排他制御方法、および排他制御プログラム
JP2017515234A (ja) * 2014-04-30 2017-06-08 オラクル・インターナショナル・コーポレイション トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法
WO2018042935A1 (ja) * 2016-08-31 2018-03-08 日立オートモティブシステムズ株式会社 電子制御装置、解析システム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2306969A1 (en) * 2000-04-28 2001-10-28 Ibm Canada Limited-Ibm Canada Limitee Dynamic scaling back of latch requests for computer system resources
US7234143B2 (en) * 2002-06-20 2007-06-19 Hewlett-Packard Development Company, L.P. Spin-yielding in multi-threaded systems
US7051026B2 (en) * 2002-07-31 2006-05-23 International Business Machines Corporation System and method for monitoring software locks
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
CA2538503C (en) * 2005-03-14 2014-05-13 Attilla Danko Process scheduler employing adaptive partitioning of process threads
US8387052B2 (en) * 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US9361156B2 (en) 2005-03-14 2016-06-07 2236008 Ontario Inc. Adaptive partitioning for operating system
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
GB0518516D0 (en) 2005-09-10 2005-10-19 Ibm Managing a resource lock
US8584126B2 (en) * 2007-03-23 2013-11-12 Vmware, Inc. Systems and methods for enabling threads to lock a stage prior to processing data
US9223637B1 (en) * 2007-07-31 2015-12-29 Oracle America, Inc. Method and apparatus to advise spin and yield decisions
US8195896B2 (en) * 2008-06-10 2012-06-05 International Business Machines Corporation Resource sharing techniques in a parallel processing computing system utilizing locks by replicating or shadowing execution contexts
US8621464B2 (en) 2011-01-31 2013-12-31 International Business Machines Corporation Adaptive spinning of computer program threads acquiring locks on resource objects by selective sampling of the locks
US8677360B2 (en) * 2011-05-12 2014-03-18 Microsoft Corporation Thread-related actions based on historical thread behaviors

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007517328A (ja) * 2003-12-31 2007-06-28 インテル・コーポレーション 動作モデルベースマルチスレッドアーキテクチャ
WO2012132017A1 (ja) * 2011-03-31 2012-10-04 富士通株式会社 排他制御方法、および排他制御プログラム
JP5725162B2 (ja) * 2011-03-31 2015-05-27 富士通株式会社 排他制御方法、および排他制御プログラム
US9632842B2 (en) 2011-03-31 2017-04-25 Fujitsu Limited Exclusive access control method prohibiting attempt to access a shared resource based on average number of attempts and predetermined threshold
JP2017515234A (ja) * 2014-04-30 2017-06-08 オラクル・インターナショナル・コーポレイション トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法
WO2018042935A1 (ja) * 2016-08-31 2018-03-08 日立オートモティブシステムズ株式会社 電子制御装置、解析システム
JP2018036864A (ja) * 2016-08-31 2018-03-08 日立オートモティブシステムズ株式会社 電子制御装置、解析システム

Also Published As

Publication number Publication date
EP1104900A3 (en) 2006-09-06
US6687904B1 (en) 2004-02-03
EP1104900B1 (en) 2012-09-26
EP1104900A2 (en) 2001-06-06

Similar Documents

Publication Publication Date Title
JP2001297008A (ja) オブジェクトごとのロック履歴に基づくロック方針選択方法および装置
US7086053B2 (en) Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
AU731871B2 (en) Method and apparatus for thread synchronization in object-based systems
US7194495B2 (en) Non-blocking memory management mechanism for supporting dynamic-sized data structures
US9323586B2 (en) Obstruction-free data structures and mechanisms with separable and/or substitutable contention management mechanisms
US6792601B1 (en) Multiple mode object locking method and system
JP3575593B2 (ja) オブジェクトのロック管理方法及び装置
US7653791B2 (en) Realtime-safe read copy update with per-processor read/write locks
US7299242B2 (en) Single-word lock-free reference counting
US7945911B1 (en) Barrier synchronization method and apparatus for work-stealing threads
US20070011415A1 (en) Apparatus and method for deterministic garbage collection of a heap memory
US20100023732A1 (en) Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US20080082532A1 (en) Using Counter-Flip Acknowledge And Memory-Barrier Shoot-Down To Simplify Implementation of Read-Copy Update In Realtime Systems
US20130061071A1 (en) Energy Efficient Implementation Of Read-Copy Update For Light Workloads Running On Systems With Many Processors
JP4620871B2 (ja) マルチスレッドコンピュータシステムにおけるモニタ変換
US20020178208A1 (en) Priority inversion in computer system supporting multiple processes
Dice Implementing Fast {Java™} Monitors with {Relaxed-Locks}
WO2000050992A1 (en) Real time synchronization in multi-threaded computer systems
US6951018B2 (en) Method and apparatus for efficiently tracking monitors
JP2001125800A (ja) 選択したスタックフレームのプログラムカウンタの変更による関連するスレッドグループの終了
Crain et al. A contention-friendly methodology for search structures
Stärk et al. The concurrent extension Java T of Java ε