JP2003536118A - マルチスレッドコンピュータシステムにおけるモニタ変換 - Google Patents

マルチスレッドコンピュータシステムにおけるモニタ変換

Info

Publication number
JP2003536118A
JP2003536118A JP2000601526A JP2000601526A JP2003536118A JP 2003536118 A JP2003536118 A JP 2003536118A JP 2000601526 A JP2000601526 A JP 2000601526A JP 2000601526 A JP2000601526 A JP 2000601526A JP 2003536118 A JP2003536118 A JP 2003536118A
Authority
JP
Japan
Prior art keywords
monitor
thread
heavyweight
lightweight
heavy weight
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.)
Granted
Application number
JP2000601526A
Other languages
English (en)
Other versions
JP4620871B2 (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.)
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 JP2003536118A publication Critical patent/JP2003536118A/ja
Application granted granted Critical
Publication of JP4620871B2 publication Critical patent/JP4620871B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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

Abstract

(57)【要約】 【課題】 【解決手段】 ライトウェイトモニタをヘビーウェイトモニタに変換するための方法および装置が開示されている。本発明の一側面によれば、第2のスレッドによって所有されるオブジェクトが第1のスレッドに対して利用不能であるときに、ライトウェイトモニタをヘビーウェイトモニタへ変換するためのコンピュータで実行される方法は、新たにヘビーウェイトモニタを生成する工程と、新たなヘビーウェイトモニタの所有権を第2のスレッドに設定する工程とを含む。そして、第1のスレッドは、オブジェクトが第2のオブジェクトによって開放されるまで強制的にスピンロックされることなく、新たに生成されたヘビーウェイトモニタにエンターする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
概して、本発明は、オブジェクトベースのコンピュータシステムにおいてライ
トウェイトモニタからヘビーウェイトモニタへ変換するための方法および装置に
関するものである。より詳細には、本発明は、オブジェクトベースのコンピュー
タシステムにおいて、競合オブジェクトと関連付けられたライトウェイトモニタ
を、対応するヘビーウェイトモニタへアトム的(atomically)に変換する方法と装
置に関するものである。
【0002】
【従来の技術】
オブジェクトベースの環境において、スレッドはしばしばサービスの要求を満
たすために使用される。スレッドは資源の記憶領域の「スケッチパッド」のよう
なものと考えてもよく、本質的には、コンピュータシステム内における制御の1
つの連続した流れである。一般に、1スレッド、即ち1つの制御のスレッドは、
中央処理装置(CPU)の一連の指示、または、独立して実行され得るプログラ
ム言語の命令文である。各スレッドは、メソッドの起動が存在する固有の実行ス
タックを有する。当業者には周知のように、メソッドがスレッドに対して起動さ
れる場合、起動はスレッドの実行スタック上に「プッシュ」される。そのメソッ
ドが戻ってきた時、または起動されなかった時、起動は実行スタックから「ポッ
プ」される。1メソッドの起動が他のメソッドを起動し得るため、実行スタック
は先入れ後出し方式で動作する。
【0003】 オブジェクトベースのプログラムの実行中において、1スレッドは複数のオブ
ジェクトを含む処理を実行しようとするかもしれない。一方、複数のスレッドが
1つのオブジェクトを含む処理を実行しようとするかもしれない。特定のオブジ
ェクトをいずれかの時間に含む複数の処理、即ち同期処理のうちの一つを起動す
ることができるのは、一つのスレッドだけであることがしばしばある。つまり、
唯一のスレッドがある時間に特定のオブジェクトに関する同期処理を実行するこ
とが許可される。同期処理、即ち同期メソッドは以下のことを要求する点でブロ
ック構造である。それは、メソッドを呼び出したスレッドが、メソッドが呼び出
されたオブジェクトと共に、最初の同期を行い、メソッドが戻ってきた場合オブ
ジェクトに対して非同期となる。1スレッドを1オブジェクトと同期する場合、
一般にオブジェクトに対するアクセスの制御を、メソッドを呼び出す前に同期構
造を使用して行うことが要求される。
【0004】 ロック、ミューテック、セマフォ、及びモニタといった同期構造は、共有資源
に関する処理をスレッドに許可することが不適切である期間中において、共有資
源へのアクセスを制御するために使用される。実例として、1以上のスレッドが
任意の特定の時間に1オブジェクトを処理することを防ぐために、オブジェクト
はしばしばロックされる。ロックは、オブジェクトのロックの所有権を有してい
る唯一のスレッドに対して、そのオブジェクトにメソッドを実行することを許可
するように行われる。
【0005】 典型的に、スレッドが首尾よくオブジェクトのロックを取得することができた
場合、スレッドはオブジェクトの同期処理を実行することを許可される。1スレ
ッドが1オブジェクトのロックを有している間、他のスレッドはオブジェクトに
対して付加的な同期処理を実行しようとすることが許可されるかもしれない。ま
た、オブジェクトに対して、非同期処理を実行するかもしれない。スレッド同期
はスレッドによる1プロセスであり、それは、オブジェクトのロックを有してい
る唯一のスレッドがロックされたオブジェクト上で同期処理を実行している間、
オブジェクトがロックされているか否か、オブジェクトの状態をチェックするた
めに相互に影響している。スレッド同期はまたスレッドにオブジェクトロックを
取得させたり取り外したりすることを可能とする。
【0006】 スレッドが同期している場合、オブジェクトロックを所有する唯一のスレッド
が、ロックされたオブジェクトに対し処理を許可されたことを確認するために、
同期構造が一般的に提供される。従来の技術においてこのような同期構造の1つ
がモニタとして知られている。典型的に、モニタは、ミューテックのような低レ
ベルの原始的な同期を使用することにより実行される。たとえプログラムがどん
なオブジェクトに対してもモニタ処理を実行できるとしても、一般に全てのオブ
ジェクトに対するモニタの実装を含めることは多くの空間を必要とし非能率的で
ある。このような同期構造がモニタといわれている。一般に、モニタは、1つの
オブジェクトと関連付けられたモニタを有するスレッドだけがそのオブジェクト
に対し同期処理を実行可能とするように構成されている。モニタはライトウェイ
トかヘビーウェイトかのいずれかである。典型的に、ライトウェイトモニタは競
合を条件としないオブジェクトに対して適している。一方、ヘビーウェイトモニ
タは競合モニタ処理を取り扱うために使用されるのが望ましい。
【0007】 ライトウェイトモニタの1つの特定の実施例が「軽いロック:Java用軽量
同期」デビッドF.ベーコン他著(1998年)("Thin Locks: Featherweight
Synchronization for Java" by David F. Bacon et al)の258−268ペー
ジで説明されており、これ全体を援用する。説明のように、ライトウェイトモニ
タは、ビットで形成され、それはスレッドIDの形式でどのスレッドがライトウ
ェイトモニタを所有し、関連するオブジェクトをロックしているかを識別するた
めのオブジェクトヘッダを確保する。典型的に、ライトウェイトモニタは競合を
条件としないオブジェクトに使用される。例えば、wait、notify、notifyALLと
いう処理はこれらのオブジェクト上では実行されない。図1Aは、オブジェクト
ヘッダ100及び関連するライトウェイトモニタ102を示す。ライトウェイト
モニタ102はスレッドの識別フィールド104を含み(所有者フィールドとも
いう)、ライトウェイトモニタ102を所有するスレッドのスレッドIDを含ん
でいる。ライトウェイトモニタ102は、再帰カウンタ106も含み、これは、
現在のスレッドがライトウェイトモニタに再エンターした回数を示している。ラ
イトウェイトモニタ102は、ヘビーウェイトモニタフラグが0にセットされた
時に、ライトウェイトモニタ102をライトウェイトモニタとして認識するため
に使用されるヘビーウェイトモニタフラグ108を含む。
【0008】 所有者フィールド104がゼロの状態において、ライトウェイトモニタ102
は所有されず、アンロックされる。しかしながら、所有者フィールド104が、
ライトウェイトモニタ102を所有する現在のスレッドを表すスレッドIDを含
む場合にはそうではない。
【0009】 ライトウェイトモニタにエンターするために、スレッド110は、ライトウェ
イトモニタ102を含むオブジェクトヘッダ100に対して典型的な比較及びス
ワップ処理を実行する。比較及びスワップ処理において、比較及びスワップオペ
レータの新たな値は、スレッド110と関連付けられたスレッドIDであり、比
較及びスワップオペレータのコンペランド(comperand)はゼロである。この構成
により、仮に比較及びスワップ処理が成功した場合、ライトウェイトモニタ10
2のスレッドID、再帰カウンタ及び全てのフラグ(ヘビーウェイトモニタフラ
グ108など)は、初めから全てゼロであり、それは、ライトウェイトモニタ1
02が所有されておらず、よってアンロックされているということを示す。比較
及びスワップ処理が首尾よく完了した後、所有者フィールド104は、スレッド
110と関連付けられたスレッドIDを含んでいる。このことは、このスレッド
110が、ライトウェイトモニタ102を所有し、ライトウェイトモニタ102
がロックされているということを示すものである。
【0010】 スレッドがすでに所有しているモニタ(例えば、スレッドがリエントラントで
ある場合)に、再エンターするような場合には、再エンターしているスレッドは
、オーバフローの状態を引き起こすことなく、再帰カウンタ106をまず増分さ
せなければならない。再エンターしているスレッドがオーバフロー状態を引き起
こす場合、この再エンターしているスレッドはライトウェイトモニタ102を、
システムモニタ116上に生成されているヘビーウェイトモニタ114に変換さ
せなければならない。設計により、システムモニタ116の現在の所有者のみが
、ライトウェイトモニタ102をヘビーウェイトモニタ114に変換することが
できることを留意されたい。典型的に、この変換はオブジェクトヘッダ100に
対して、新たに生成されたヘビーウェイトモニタ114に対応するヘビーウェイ
トモニタポインタが比較及びスワップオペレータの新たな値となり、それと共に
比較とスワップ処理が実行されることによって遂行される。このように、比較及
びスワップ処理の成功後、オブジェクトヘッダ100はヘビーウェイトモニタポ
インタを含む。
【0011】 ヘビーウェイトモニタ114は、特定のスレッドがシステムモニタ116に再
エンターするたびに毎回更新される再帰カウンタフィールド118を含む。ヘビ
ーウェイトモニタ114はさらに、ヘビーウェイトモニタ所有者フィールド12
0も含む。システムモニタ116は、システムモニタ116の現在の所有者を表
すシステムモニタ所有者フィールド122を含む。システムモニタ116はさら
に、enter、exit、wait、及びnotifyといった特定のスレッドの処理を実行する
ように構成されている。ライトウェイトモニタ102の現在の所有者(即ち、ス
レッド110)は、ライトウェイトモニタ102からヘビーウェイトモニタ11
4へ変換することが可能な唯一のスレッドであり、ヘビーウェイトモニタ114
及び埋め込まれたシステムモニタ116の所有者は同一、即ちスレッド110で
なければならない。
【0012】 ここで、図1Bを参照し、第2のスレッド124が、スレッド110の現在所
有するライトウェイトモニタ102にエンターしようとしていると仮定する。前
述の通り、スレッド124は比較及びスワップ処理を実行することによりライト
ウェイトモニタ102にエンターしようとする。しかしこの場合、比較及びスワ
ップ処理は失敗となる。その理由は、所有者フィールド104がスレッド110
に対応するスレッドIDを含んでおり、スレッド110がライトウェイトモニタ
102を所有していることを示しているからである。この時点において、スレッ
ド124とスレッド110の間において、ライトウェイトモニタ102の所有権
に対しての競合が生じる。システムモニタ116の所有者としてのスレッド11
0のみが、ライトウェイトモニタ102からヘビーウェイトモニタ114へ変換
することが可能なので、スレッド124はライトウェイトモニタ102がスレッ
ド110により開放されるまでの間、スピンロックループにエンターする。スピ
ンロックループによって、スレッド110がライトウェイトモニタ102をアン
ロックするまでの間、スレッド124は待ち行列にエンターすることを意味する
。従来の技術では公知のように、一般にスピンロックは、システム資源の非能率
的な使用となる部分において望ましくない結果である。スピンロックは、ライト
ウェイトモニタ102が長時間ロックされることにより、ライトウェイトモニタ
102がスピンロックされるまで他のスレッドをwaitさせることを引き起こすと
いう場合において、とりわけ非能率的である。さらに、優先度の高いスレッドと
低いスレッドが共にライトウェイトモニタ102に関してスピンロックされるよ
うな状況において、優先度の低いスレッドが「待ちわびた(starving)」状態とな
る可能性がある。
【0013】 従って、求められているものは、オブジェクトベースシステムにおけるモニタ
の競合を解決するための効果的な方法および装置である。
【0014】
【発明の概要】
概して、本発明は、競合オブジェクトに関連付けられたライトウェイトモニタ
を効率的にヘビーウェイトモニタへ変換するための改良された方法、装置、およ
びコンピュータシステムに関する。発明の一側面によると、第2のスレッドによ
って所有されるオブジェクトに関して同期処理を実行するための第1のスレッド
に対して、第1のスレッドは新たなヘビーウェイトモニタを生成し、第2のスレ
ッドを新たに生成されたヘビーウェイトモニタの所有者に設定する。そして、第
1のスレッドはヘビーウェイトモニタにエンターする。こうすれば、第2のスレ
ッドがオブジェクトをアンロックするまで、第1のスレッドがスピンロックを行
う必要がない。
【0015】 本発明は、方法、コンピュータシステム、および装置を含む種々の形態にて実
施され得る。本発明のいくつかの実施の形態が以下に説明される。方法および装
置が開示されている。本発明の一側面によれば、第2のスレッドによって所有さ
れるオブジェクトが第1のスレッドに対して利用不能であるときに、ライトウェ
イトモニタをヘビーウェイトモニタへ変換するためのコンピュータで実行される
方法は、ライトウェイトモニタに関連付けられたオブジェクトの所有権を決定す
る工程を含む。仮に第2のスレッドが該当オブジェクトを所有することが判断さ
れた場合、第1のスレッドは新たにヘビーウェイトモニタを生成する。そして、
第1のスレッドは、第2のスレッドを新たに生成されたヘビーウェイトモニタの
所有者として設定する。次に、第1のスレッドは新たなヘビーウェイトモニタに
エンターする。
【0016】 本発明の更に別の側面によれば、コンピュータシステムは、メモリおよび複数
のスレッドを含む。また、コンピュータシステムは、メモリに結合されたプロセ
ッサ、およびオブジェクトヘッダを含むオブジェクトを含み、同オブジェクトヘ
ッダはオブジェクトの所有権に関連する情報を含むライトウェイトモニタを含む
ように構成される。第1のスレッドIDによって指示されたようにオブジェクト
をロックしていた、複数のスレッドから選択された第1のスレッドは、ライトウ
ェイトモニタに含まれ、複数のスレッドから選択された第2のスレッドは、オブ
ジェクトが第2のスレッドに対して利用可能である場合、ライトウェイトモニタ
を対応する第1のスレッドによって所有されたヘビーウェイトモニタに変換する
ように構成されている。
【0017】 発明の更に別の側面によれば、ライトウェイトモニタを含むオブジェクトヘッ
ダを有するオブジェクトに関する同期処理の実行を第1のスレッドが試行する場
合、ライトウェイトモニタをヘビーウェイトモニタに変換するコンピュータプロ
グラム製品が開示されている。
【0018】 コンピュータプログラム製品は、オブジェクトの所有権を決定するとともに、
第2のスレッドによってオブジェクトが所有されていると判断される場合にヘビ
ーウェイトモニタを生成し、ヘビーウェイトモニタを第2のスレッドに設定する
とともに、第1のスレッドをヘビーウェイトモニタにエンターさせるコンピュー
タコードと、同コンピュータコードを格納するためのコンピュータ読み取り可能
な記録媒体とを含む。
【0019】 本発明のこれら及び他の利点は、以下の詳細な説明を読み、種々の図面を調べ
ることにより明らかになるであろう。
【0020】
【発明の実施の形態】
マルチスレッドのオブジェクトベースコンピュータシステムにおいて、一般に
、2以上のスレッドが任意の特定時間に1つのオブジェクトに関する処理を行う
ことを防止することができるように、オブジェクトは同期構造を備える。
【0021】 本発明で示される一実施の形態においては、広くライトウェイトモニタを用い
るシステムが意図されている。第2のスレッドによって既に所有されているライ
トウェイトモニタへ第1のスレッドがエンターしようとする場合、第1のスレッ
ドはヘビーウェイトモニタを生成し、第2のスレッドをその新たに生成されたヘ
ビーウェイトモニタの所有者として設定する。その後、第1のスレッドは新たに
生成されたヘビーウェイトモニタにエンターする。このように、第1のスレッド
は、第2のスレッドがライトウェイトモニタを開放するまでwaitすることはない
【0022】 図2は、本発明の実施の形態に従って、第1のスレッドがオブジェクトの所有
権を得るプロセス200を詳しく図示したフローチャートである。プロセス20
0は、オブジェクトが現在所有されているか否かの判断によって202から開始
する。実施例において、オブジェクトヘッダは、所有者フィールドを有するライ
トウェイトモニタおよびヘビーウェイトモニタフラグを含む。所有者フィールド
がゼロであれば、該オブジェクトは非所有であり、それ以外ではオブジェクトは
、スレッドによって所有される。そのスレッドのスレッドIDは、所有者フィー
ルドに格納されている。仮に、オブジェクトが所有されていないと判断された場
合、204において、要求しているスレッドは、当該オブジェクトに関連付けら
れたライトウェイトモニタの所有者フィールドに自身のスレッドIDを入力する
ことによりオブジェクトの所有権を得る。
【0023】 しかしながら、202において、オブジェクトが所有されていると判断された
場合、オブジェクトヘッダの内容が206において評価される。オブジェクトヘ
ッダが、第1のスレッドのスレッドIDを所有者フィールドに格納するライトウ
ェイトモニタを含む場合には、第1のスレッドが当該オブジェクトに関連付けら
れたライトウェイトモニタを現在所有している。この場合、第1のスレッドはリ
エントラントとして参照される。リエントラントであることによるオブジェクト
の現在の所有者としての意味は、第1のスレッドがオブジェクトに関連付けられ
たライトウェイトモニタに再エンターを試行することである。そのような状況は
、例えば、スレッドがオブジェクトを開放し、いくらか時間が経過した後に、関
連するライトウェイトモニタに再エンターすることによりオブジェクトを再取得
する際に生じる。一旦、第1のスレッドが現在のスレッドであると判断されれば
、208において、第1のスレッドはライトウェイトモニタに含まれる再帰カウ
ンタを増分することによりライトウェイトモニタに再エンターする。
【0024】 しかしながら、206において、オブジェクトヘッダがヘビーウェイトモニタ
に対応するヘビーウェイトモニタポインタを含む場合、210において第1のス
レッドは対応するヘビーウェイトモニタにエンターする。
【0025】 しかしながら、206において、オブジェクトヘッダが第1のスレッドとは異
なる第2のスレッドに対応するスレッドIDを含む場合、ライトウェイトモニタ
は第2のスレッドによって所有されている。この状況では、当該オブジェクトの
所有権に関して、第1のスレッドと第2のスレッドとの間には競合が存在する。
本発明の実施の形態では、上記2つのスレッド間の競合を解決するために、第1
のスレッドは新たなヘビーウェイトモニタを生成し、212において、新たに生
成されたヘビーウェイトモニタの所有者を第2のスレッドに設定する。このよう
に、210において、第2のスレッドが当該オブジェクトに関連付けられたライ
トウェイトモニタを開放するまでwaitすることなく、第1のスレッドは新たに生
成されたヘビーウェイトモニタにエンターすることができる。この方法では、オ
ブジェクトの所有権に関する第1のスレッドおよび第2のスレッド間の競合は、
例えば、ライトウェイトモニタが開放されるまで第1のスレッドをスピンロック
する必要なく解決される。
【0026】 しかしながら、第1のスレッドがヘビーウェイトモニタを生成するためには、
第1のスレッドは新たに生成されたヘビーウェイトモニタに埋め込まれたシステ
ムモニタをまず所有しなければならないことに留意されたい。しかしながら、ラ
イトウェイトモニタからヘビーウェイトモニタへの変換を行うスレッドは、ライ
トウェイトモニタの所有者である必要がないため、新たに生成されたヘビーウェ
イトモニタの所有権を第2のスレッドに設定することによって、衝突が起こる可
能性が生じる。例として、仮に第1のスレッドがライトウェイトモニタを第2の
スレッドによって所有されるヘビーウェイトモニタに変換する場合、システムモ
ニタは第1のスレッドによって所有され、ヘビーウェイトモニタは第2のスレッ
ドによって所有される。この衝突は、212において新たに生成されるヘビーウ
ェイトモニタに含まれるリーエンホルダ(lienholder)フィールドおよびリーエン
ホルダ再帰フィールドの導入によって解決される。実施例において、リーエンフ
ィールドは、ヘビーウェイトモニタへと変換されたライトウェイトモニタの所有
者として第2のスレッドを認識する。
【0027】 図3Aは、本発明の一実施の形態に従うヘビーウェイトモニタ300を図示す
る。ヘビーウェイトモニタ300は、システムモニタ所有者フィールド304を
含むシステムモニタ302上に構築される。ヘビーウェイトモニタは、所有者フ
ィールド306および再帰カウンタフィールド308を含む。実施例において、
ヘビーウェイトモニタ200は、またリーエンフィルダ310およびリーエンフ
ィルダ再帰フィールド312を含む。リーエンフィルダフィールド310および
はリーエンフィルダ再帰フィールド312は、ヘビーウェイトモニタから変換さ
れたライトウェイトモニタの所有者および再帰カウントを一時的に保持するため
に使用される。
【0028】 例として、図3Bは、図2のブロック212において、第1のスレッドによっ
て生成された場合のヘビーウェイトモニタ300を図示する。第1のスレッドが
システムモニタ302を所有するため、システムモニタ所有者フィールド304
は、第1のスレッドのスレッドIDを含む。一方、第2のスレッドのスレッドI
Dは、ヘビーウェイトモニタ所有者フィールド306に格納される。第2のスレ
ッドがヘビーウェイトモニタ300から生成されたライトウェイトモニタを所有
していたため、ヘビーウェイトモニタ300の真の所有者は第2のスレッドであ
り、第1のスレッドではない。好ましい実施の形態では、リーエンフィールド3
10は、第2のスレッドのスレッドIDを含み、それによりヘビーウェイトモニ
タ300の真の所有者の識別情報を保存する。
【0029】 図4は、本発明の一実施の形態に従って、第1のスレッドがオブジェクトの所
有権を得るプロセス400である。プロセス400は、プロセス200のとり得
る実施の形態のほんの一例にすぎず、402において、オブジェクトが所有され
ているかを第1のスレッドによって判断することによって開始することに留意さ
れたい。実施例において、オブジェクトの所有権は、オブジェクトヘッダに含ま
れるライトウェイトモニタに対してアトム的比較およびスワップ処理を実行する
ことによって判断される。上述したように、アトム的比較およびスワップ処理は
、コンペランド(comperand)値が「0」を示すため、成功した比較およびスワッ
プ処理ではオブジェクトが非所有であり、ライトウェイトモニタ内の全てのデー
タフィールドが「0」を示す。
【0030】 404において、仮に、アトム的比較およびスワップ処理が成功であると判断
された場合、オブジェクトは非所有であったことになり、現在は第1のスレッド
によって所有されていることになる。しかしながら、アトム的比較およびスワッ
プ処理が成功しなかったと判断された場合、ライトウェイトモニタの少なくとも
1つのフィールドはゼロではなかったことになる。この場合、406において、
比較およびスワップ処理が失敗した理由を判断するためにオブジェクトヘッダの
評価が行われる。
【0031】 406において、オブジェクトヘッダが第1のスレッドのスレッドIDを含む
ライトウェイトモニタを含む場合、第1のスレッドがライトウェイトモニタの現
在の所有者であり、それにより第1のスレッドはリエントラントであると考慮さ
れる。この場合、408における判断は、ライトウェイトモニタに含まれる再帰
カウンタの増分がオーバーフロー状態を招く結果となるか否かによってなされる
。再帰カウンタの増分がオーバーフロー状態を招く結果とならない場合、410
において、ライトウェイトモニタの再帰カウンタは適切に増分される。一旦、増
分カウンタが適切に増分された場合、一実施の形態において、412において、
第1のスレッドは、増分された再帰カウンタのアトム的比較およびスワップをオ
ブジェクトヘッダに対して実行することによってライトウェイトモニタに再エン
ターする。
【0032】 408に戻り、再帰カウンタの増分がオーバーフロー状態を招く結果となる場
合、414において、第1のスレッドは新たなヘビーウェイトモニタを生成する
【0033】 406に戻り、オブジェクトヘッダが、現在第1のスレッドとは異なる第2の
スレッドによって所有されているライトウェイトモニタを含む場合、414にお
いて、第1のスレッドは新たなヘビーウェイトモニタを生成する。416におい
て、リーエンホルダは、現在のライトウェイトモニタの所有者(例えば、第2の
スレッド)に設定され、リーエンホルダ再帰カウンタは現在の再帰カウンタに設
定される。そして、418において、アトム的比較およびスワップ処理が実行さ
れる。この方法によれば、新たに生成されたヘビーウェイトモニタに対応するヘ
ビーウェイトモニタポインタはオブジェクトヘッダに挿入される。仮に、420
において、アトム的比較およびスワップ処理が成功ではないと判断された場合、
新たに生成されたヘビーウェイトモニタは422において削除され、新たなヘビ
ーウェイトモニタが414において生成される。アトム的比較およびスワップ処
理は、例えば、アトム的比較およびスワップ処理が行われる前に、第3のスレッ
ドがヘビーウェイトモニタの所有権を取得した場合に失敗することがある。
【0034】 しかしながら、アトム的比較およびスワップ処理が成功した場合、424にお
いて、第1のスレッドは、オブジェクトヘッダ内に含まれるヘビーウェイトモニ
タポインタに対応するヘビーウェイトモニタに埋め込まれたシステムモニタにエ
ンターする。この時点で、第1のスレッドは、オブジェクトヘッダ内に含まれた
ヘビーウェイトモニタポインタに対応するヘビーウェイトモニタに埋め込まれた
システムモニタへのエンターを果たす。しかしながら、今、システムモニタ所有
者およびヘビーウェイトモニタ所有者が1つで、かつ同一であることを確かにす
る必要がある。
【0035】 図5は、本発明の一実施の形態に従って、第1のスレッドがヘビーウェイトモ
ニタにエンターするプロセス500を詳しく図示したフローチャートである。プ
ロセス500は、プロセス400の424へエンターする一実施の形態であるこ
とに留意されたい。より詳しくは、プロセス500は、リーエンホルダが存在す
るか否かの判断がなされる502において開始する。一実施の形態において、リ
ーエンホルダが存在するか否かの判断は、リーエンホルダフィールドが非ゼロの
値を含むかどうかの判断によって遂行される。リーエンホルダフィールドが「0
」である場合、リーエンホルダは存在せず、それ以外の場合にはリーエンホルダ
は、リーエンホルダフィールドに含まれるスレッドIDによって示されるスレッ
ドである。リーエンホルダが存在しない場合(例えば、リーエンホルダフィール
ドがゼロである)、ヘビーウェイトモニタの所有者フィールドは現在のスレッド
IDに設定され、ヘビーウェイト再帰カウンタは、504において1だけ増分さ
れた現在の再帰カウンタに設定される。再帰カウンタは、システムモニタへのエ
ンターを補償するために増分される。
【0036】 しかしながら、502において、リーエンホルダが存在すると判断された場合
、506において、リーエンホルダが現在のスレッドであるか否かの判断がなさ
れる。一実施の形態において、リーエンホルダの識別は、リーエンホルダフィー
ルドの内容を読むこと、および同フィールドに含まれるスレッドIDを判断する
ことによて遂行される。仮に、現在のスレッドがリーエンホルダスレッドではな
い場合、508において、システムwaitを呼び出すことにより、リーエンホルダ
スレッドに対してモニタ所有者を譲らなければならない。リーエンホルダスレッ
ドがモニタ所有者を取り戻した後、現在のスレッドはリーエンホルダスレッドに
よって立ち上げられることになる。
【0037】 506において、現在のスレッドがリーエンホルダであると判断された場合、
510において、ヘビーウェイトモニタが更新される。一実施の形態において、
ヘビーウェイトモニタは現在のリーエンホルダフィールドを「0」に再設定する
ことによって更新される。また、ヘビーウェイトモニタの更新は、ヘビーウェイ
トモニタの所有者フィールドを現在のスレッドに対応するスレッドIDに設定す
ることを含む。実施例において、リーエンホルダ再帰フィールドは、現在のモニ
タエンター処理を考慮して1だけ増分される。そして、増分されたリーエンホル
ダ再帰フィールドがゼロにリセットされた後に、ヘビーウェイトモニタ再帰フィ
ールドは、リーエンホルダフィールドの増分された値に設定される。ヘビーウェ
イトモニタが更新された後、512において、システムモニタはnotifyALLを広
める。notifyALLは、508において、待ち行列に含まれるスレッドを立ち上げ
る。そして、それらスレッドは、502へ戻ることによって更なる処理のために
行列にwaitする。
【0038】 図6は、本発明の一実施の形態に従う、エンターモニタ機能500および種々
の他のモニタ機能の関係600を図示する。実施例において、所有者確認機能6
02は、現在のスレッドがヘビーウェイトモニタを所有することを確実とする。
仮に、所有者確認機能602が、現在のスレッドがヘビーウェイトモニタを所有
していないと判断した場合、エラーメッセージが呼び出され、それ以外の場合に
は、所有者確認機能は成功し、制御が選択されたモニタ機能へ渡される。そのよ
うなモニタ機能は、604におけるwait、606におけるexit、そして608に
おけるnotify(または、notifyALL)を含む。
【0039】 図7は、本発明の一実施の形態に従って、所有者確認機能700を詳しく図示
したフローチャートである。所有者確認機能700は、所有者確認機能602の
とり得る実施の形態の一例にすぎないことに留意されたい。より詳しくは、所有
者確認機能700は、現在のスレッドがヘビーウェイトモニタを所有するかを判
断することによって702から開始する。現在のスレッドがヘビーウェイトモニ
タを所有している場合、ヘビーウェイトモニタ所有者が確かめられる。しかしな
がら、現在のスレッドがヘビーウェイトモニタを所有していない場合、704に
おいて、現在のスレッドがリーエンホルダであるかが判断される。仮に、現在の
スレッドがリーエンホルダではない場合、エラーメッセージが渡され、それ以外
の場合には、706においてスレッドがヘビーウェイトモニタにエンターする。
一実施の形態において、706へのエンターは、424へのエンターとして実施
されていることに留意されたい。一旦、現在のスレッドが首尾よくヘビーウェイ
トモニタにエンターした場合、再帰カウンタが706へのエンターを考慮して減
少される。この時点において、ヘビーウェイトモニタの所有権は確かめられる。
【0040】 図8は、本発明の一実施の形態に従うモニタwait処理800を詳しく図示した
フローチャートである。モニタwait処理800は、モニタwait処理604のとり
得る実施の形態の一例である。モニタwait処理800は、602における所有者
確認機能が成功した後にのみ開始することに留意されたい。より詳しくは、モニ
タwait処理800は、現在の所有者および再帰カウントを保存することによって
802から開始する。一旦、保存されると、804において、所有者および再帰
カウントはゼロに設定され、モニタを非所有に設定する。一旦、モニタが非所有
となると、806において、ヘビーウェイトモニタを開放するシステムモニタwa
itが呼ばれる。一旦、システムモニタwaitが、notifyまたはnotifyALLの発行に
よって完了すると、例えば、808において、現在のヘビーウェイトモニタの所
有者の認識情報が再設定される。一実施の形態において、認識情報は、802に
おいて保存された現在の所有者および現在の再帰を検索し、ヘビーウェイトモニ
タの現在の所有者フィールドおよび現在の再帰フィールドのそれぞれに入力する
ことによって再設定される。
【0041】 図9は、本発明の一実施の形態に従うexit機能900を詳しく図示したフロー
チャートである。exit機能900は、exit機能606のとり得る実施の形態の一
例であることに留意されたい。より詳しくは、exit機能900は、現在のスレッ
ドがヘビーウェイトモニタの所有者であるかを判断することによって902から
開始する。仮に、現在のスレッドがヘビーウェイトモニタの所有者である場合、
904において、再帰レベルが1であると判断される。仮に、再帰レベルが1で
ある場合、所有者フィールドは「0」に設定され、再帰カウントは「0」に設定
され、そして906において、システムモニタはexitする。しかしながら、仮に
、904において、再帰カウントが「1」ではなかったと判断された場合、90
8において、再帰カウンタは減少され、システムモニタはexitする。何れの場合
においても、exit機能は首尾よく行われる。
【0042】 902に戻り、仮に、現在のスレッドがヘビーウェイトモニタの所有者ではな
い場合、910において、現在のヘビーウェイトモニタ所有者がリーエンホルダ
であるかの判断が行われる。そうではない場合、エラーメッセージが呼ばれる。
一実施の形態において、容認し難いが対応するエンター処理がないままにexitが
呼ばれる。しかしながら、仮に、現在のヘビーウェイトモニタ所有者がリーエン
ホルダである場合、912において、リーエンホルダスレッドはヘビーウェイト
モニタにエンターする。実施例において、912におけるエンターは、414に
おけるエンターとして実施されている。一旦、リーエンホルダスレッドが首尾よ
くヘビーウェイトモニタにエンターすると、再帰カウンタは、912におけるエ
ンターを補償するために減少される。この時点において、exit機能は首尾よく行
われる。
【0043】 図10は、本発明の一実施の形態に従うnotify(または、notifyALL)機能1
000を詳しく図示したフローチャートである。notify(または、notifyALL)
機能1000は、notify(または、notifyALL)機能608のとり得る実施の形
態の一例である。notify(または、notifyALL)機能1000は、602におけ
る所有者確認機能が首尾よく行われた後のみに開始する。より詳しくは、notify
(または、notifyALL)機能1000は、システムモニタ上のnotify(または、n
otifyALL)を呼び出して1002から開始する。
【0044】 図11は、本発明を実施するのに好適な、一般的な汎用コンピュータシステム
1100を図示する。コンピュータシステム1100は、主記憶装置1104(
一般に、読み出し専用メモリ、即ちROM)、または主記憶装置1106(一般
に、ランダムアクセスメモリ、即ちRAM)を含む記憶装置に結合された任意の
数のプロセッサ1102(また中央処理装置として参照される、即ちCPU)を
含む。
【0045】 コンピュータシステム1100、即ちより詳しくはCPU1102は、当業者
によって認識されるように、仮想マシンをサポートするように構成されてもよい
。コンピュータシステム1100でサポートされる仮想マシンの一例を、図7を
参照して以下に説明する。当業者に公知のように、ROMは一般にデータおよび
命令を単方向にてCPU1102へ転送するように動作するのに対して、RAM
は一般にデータおよび命令を双方向にて転送するために使用される。主記憶装置
1104,1106の双方は、任意の好適なコンピュータ読み出し可能な記録媒
体を含んでもよい。一般に、大容量の装置である補助記憶媒体1108もまたC
PU1102と双方向で結合され、付加的なデータ記憶容量を提供する。大容量
記憶装置1108は、コンピュータコード、データなどを含むプログラムを格納
するために使用されてもよい。一般に、大容量記憶装置1108は、主記憶装置
1104,1106よりも一般に低速なハードディスク、またはテープのような
記憶媒体である。大容量記憶装置1108は、磁気または紙テープリーダあるい
は何らかの公知の装置の形態をとってもよい。大容量記憶装置1108に格納さ
れる情報は、適切な場合において、仮想メモリとしてRAM1106の一部とす
るような標準的な方法にて組み込まれてもよい。CD−ROMのような具体的な
主記憶装置1104もまた、単方向にてCPU1102へデータを渡す。 また、CPU1102は、限定されるわけではないが、ビデオモニタ、トラッ
クボール、マウス、キーボード、マイクロホン、タッチディスプレイ、変換カー
ド読取装置、磁気または紙テープ読取装置、タブレット、スタイラス、音声また
は手書き文字認識装置、あるいはコンピュータのような他の公知の入力装置など
の装置を含む1つ以上の入出力装置1110に結合されてもよい。最後に、CP
U1102は、コンピュータまたは遠距離通信ネットワーク、例えば、インター
ネットネットワークまたはイントラネットネットワークに1112に一般的に図
示されるネットワーク接続を用いて選択的に結合されてもよい。そのようなネッ
トワーク接続により、上述した方法の工程を実行する過程で、CPU1102は
ネットワークから情報を受信したり、あるいはネットワークへ情報を送信するよ
うに意図されている。CPU1102を用いて実行される連続した命令としてし
ばしば表されるそのような情報は、例えば、搬送波に埋め込まれるコンピュータ
データ信号の形態で、ネットワークから受信したり、ネットワークへ送信される
。上述した装置および用具は、コンピュータハードウェアおよびソフトウェア分
野の当業者にとって周知であろう。
【0046】 本発明のほんのわずかな実施の形態しか説明していないが、本発明の精神およ
び範囲を逸脱することなく、本発明は他の多くの具体的な形態に実施され得るこ
とを理解されたい。例として、オブジェクトのロックおよびアンロックに関する
工程が再整理されてもよい。また、本発明の精神および範囲を逸脱することなく
、工程が削除または追加されてもよい。
【0047】 本発明に従うライトウェイトモニタからヘビーウェイトモニタへ変換する方法
は、Java(登録商標)をベースとする環境に関して実施することが特に好適であ
るが、本方法は、一般にオブジェクトをベースとする任意の環境に適用されても
よい。特に、本方法はプラットフォームに依存しないオブジェクトベースの環境
において使用することが好適である。また、本方法は、なんらかの分散型オブジ
ェクト指向システムにおいて実施されてもよいことを認識されたい。
【0048】 モニタは、オブジェクトがロック状態、非ロック状態、あるいは動作状態であ
るかを識別するビットとして説明された。一般に、モニタに関するビット数は広
範に変更されることを留意されたい。加えて、オブジェクトの状態はモニタ以外
の機構を用いて識別されてもよいことを認識されたい。例として、オブジェクト
は、オブジェクトの状態を識別するリストへのポインターを含んでもよい。
【0049】 本発明は、仮想マシンに関連するコンピュータシステムで使用されるものとし
て説明されたが、一般に、本発明は任意の好適なオブジェクト指向コンピュータ
システムに実施されてもよいことを認識されたい。具体的には、本発明に従うオ
ブジェクトのロック、非ロックの方法は、一般に、本発明の精神および範囲を逸
脱することなく、任意のマルチスレッドのオブジェクト指向システムに実施され
てもよい。従って、これらの例は、限定的ではなく例示的なものとして考慮され
るものであり、本発明はここで説明した詳細に限定されるものではなく、添付の
請求の範囲の均等物の全範囲内において改変されてもよい。
【図面の簡単な説明】
【図1A】 ライトウェイトモニタからヘビーウェイトモニタへの従来の変換を示した図で
ある。
【図1B】 競合ライトウェイトモニタを示した図である。
【図2】 本発明の実施の形態に従い、スレッドがオブジェクトの所有権を取得するプロ
セスを詳述したフローチャートである。
【図3A】 本発明の実施の形態に従い実施されたヘビーウェイトモニタを示した図である
【図3B】 ライトウェイトモニタの変換により形成された図3Aに示すヘビーウェイトモ
ニタを示した図である。
【図4】 図2のプロセスの一実施例について詳述したフローチャートである。
【図5】 本発明の実施の形態に従い、処理がエンタされたモニタを詳述したフローチャ
ートである。
【図6】 本発明の実施の形態に従いファンクションにエンタされたモニタと他の様々な
モニタ機能との関係を示した図である。
【図7】 本発明の実施の形態に従い、処理の所有者のチェックについて詳述したフロー
チャートである。
【図8】 本発明の実施の形態に従い、wait処理800のモニタについて詳述したフロー
チャートである。
【図9】 本発明の実施の形態に従い、exit機能について詳述したフローチャートである
【図10】 本発明の実施の形態に従いnotifyまたはnotifyALL機能について詳述したフロ
ーチャートである。
【図11】 本発明を実施するのに適当な典型的で一般的な目的のコンピュータシステムを
示した図である。
【符号の説明】
100…オブジェクトヘッダ 102…ライトウェイトモニタ 104…所有者フィールド 106…再帰カウンタ 108…ヘビーウェイトフラグ 110…スレッド 114…ヘビーウェイトモニタ 116…システムモニタ 118…再帰カウンタ 300…ヘビーウェイトモニタ 302…システムモニタ 304…システムモニタ所有者フィールド 306…所有者フィールド 308…再帰カウンタフィールド 310…リーエンフィルダフィールド 312…リーエンフィルダ再帰フィールド 1100…コンピュータシステム 1104,1106…主記憶装置 1108…補助記憶媒体 1110…入出力装置
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MA ,MD,MG,MK,MN,MW,MX,NO,NZ, PL,PT,RO,RU,SD,SE,SG,SI,S K,SL,TJ,TM,TR,TT,TZ,UA,UG ,US,UZ,VN,YU,ZA,ZW (72)発明者 リアン・シェン アメリカ合衆国 カリフォルニア州95014 クパチーノ,オークビル・アベニュー, 10440 (72)発明者 バク・ラルス アメリカ合衆国 カリフォルニア州94303 パロ・アルト,コリナ・ウェイ,3782 Fターム(参考) 5B098 FF01 GA05 GD02 GD16

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 マルチスレッドコンピュータにおいて、コンピュータが実行
    するライトウェイトモニタからヘビーウェイトモニタへの変換方法であって、 第2のスレッドによって所有されるライトウェイトモニタの所有権に対し第1
    のスレッドが競合するとき、前記第1のスレッドがヘビーウェイトモニタを生成
    する工程と、 前記ヘビーウェイトモニタの所有者として前記第2のスレッドを指名する工程
    と、 前記第1のスレッドが前記ヘビーウェイトモニタにエンターする工程とを備え
    る方法。
  2. 【請求項2】 請求項1に記載の方法であって、所有権を決定する工程は、 前記第1のスレッドおよびオブジェクトヘッダ間のアトム的比較およびスワッ
    プ処理を実行する工程と、 前記比較およびスワップ処理が成功したかを判断する工程とを更に含む方法。
  3. 【請求項3】 請求項2に記載の方法であって、前記処理が成功しなかった
    と判断されたとき、その後に前記オブジェクトヘッダの内容を判断する方法。
  4. 【請求項4】 請求項3に記載の方法であって、前記オブジェクトヘッダが
    前記第2のスレッドに対応する第2のスレッドIDを含むと判断されるとき、そ
    の後に新たなヘビーウェイトモニタを生成し、前記第2のスレッドを該新たなヘ
    ビーウェイトモニタの所有者に設定する方法。
  5. 【請求項5】 請求項4に記載の方法であって、前記新たなヘビーウェイト
    モニタを設定する工程は、 前記オブジェクトヘッダと、前記新たに生成されたヘビーウェイトモニタに関
    連付けられたヘビーウェイトモニタポインタとの間のアトム的比較およびスワッ
    プ処理を実行する工程を更に含む。
  6. 【請求項6】 請求項3に記載の方法であって、前記オブジェクトヘッダが
    ヘビーウェイトモニタポインタを含むと判断されるとき、 前記第1のスレッドが、前記オブジェクトヘッダに含まれるヘビーウェイトポ
    インタに対応するヘビーウェイトモニタにエンターする方法。
  7. 【請求項7】 請求項3に記載の方法であって、前記オブジェクトヘッダが
    前記第1のスレッドに対応する第1のスレッドIDを含むと判断されるとき、 前記ライトウェイトモニタに含まれる再帰カウンタの増分がオーバーフロー状
    態を招くかを判断する方法。
  8. 【請求項8】 請求項7に記載の方法であって、前記再帰カウンタの増分が
    オーバーフロー状態を招かないと判断されるとき、 m)第1のスレッドが前記ライトウェイトモニタに再エンターする方法。
  9. 【請求項9】 請求項7に記載の方法であって、前記再帰カウンタの増分が
    オーバーフロー状態を招くと判断されるとき、 n)ライトウェイトモニタを、対応するヘビーウェイトモニタへ変換させる方
    法。
  10. 【請求項10】 第1のスレッドがライトウェイトモニタに関連付けられた
    オブジェクトであって、前記ライトウェイトモニタを含むオブジェクトヘッダを
    有するオブジェクトに関する同期処理を実行しようとするときに、ライトウェイ
    トモニタをヘビーウェイトモニタへ変換するためのコンピュータプログラム製品
    において、 前記オブジェクトの所有権を決定するコンピュータコードと、 前記オブジェクトが第2のスレッドによって所有されていることが判断される
    とき、ヘビーウェイトモニタを生成するコンピュータコードと、 前記ヘビーウェイトモニタの所有権を前記第2のスレッドに設定するコンピュ
    ータコードと、 前記第1のスレッドを前記ヘビーウェイトモニタへエンターさせるコンピュー
    タコードと、 前記コンピュータコードを格納するコンピュータ読み取り可能な媒体とを備え
    るコンピュータプログラム製品。
  11. 【請求項11】 請求項10に記載のコンピュータプログラム製品であって
    、コンピュータ読み取り可能な媒体は、搬送波に埋め込まれたデータ信号である
    コンピュータプログラム製品。
  12. 【請求項12】 請求項10に記載のコンピュータプログラム製品は、前記
    第1のスレッドおよびオブジェクトヘッダ間のアトム的比較およびスワップ処理
    を実行するとともに、前記比較およびスワップ処理が成功したかを判断するコン
    ピュータコードを更に含む。
  13. 【請求項13】 請求項12に記載のコンピュータプログラム製品であって
    、前記比較およびスワップ処理が成功した場合、コンピュータコードは前記オブ
    ジェクトヘッダの内容を判断するコンピュータプログラム製品。
  14. 【請求項14】 請求項13に記載のコンピュータプログラム製品であって
    、前記オブジェクトヘッダが、前記第2のスレッドに対応する第2のスレッドI
    Dを含むと判断されるとき、 コンピュータコードは、 新たにヘビーウェイトモニタを生成し、 前記第2のスレッドを該新たなヘビーウェイトモニタの所有者に設定し、 前記オブジェクトヘッダと、前記新たなヘビーウェイトモニタに関連付けられ
    たヘビーウェイトモニタポインタとの間のアトム的比較およびスワップ処理を実
    行するコンピュータプログラム製品。
  15. 【請求項15】 複数のスレッドを含むメモリを有するコンピュータシステ
    ムであって、複数のスレッドの各々、前記コンピュータシステムは、 前記メモリに接続されたプロセッサを備え、 オブジェクトヘッダを含むオブジェクトを備え、該オブジェクトヘッダは、オ
    ブジェクトの所有権に関する情報を含むライトウェイトモニタを含むように構成
    され、 複数のスレッドから選択された第1のスレッドを備え、該第1のスレッドは、
    前記ライトウェイトモニタに含まれる第1のスレッドIDによって示されるオブ
    ジェクトをロックし、 複数のスレッドから選択された第2のスレッドとを備え、前記オブジェクトが
    前記第2のスレッドに対して利用不能であるとき、前記第2のスレッドは、前記
    ライトウェイトモニタを前記第1のスレッドによって所有される対応するヘビー
    ウェイトモニタへ変換するコンピュータシステム。
  16. 【請求項16】 請求項15に記載のコンピュータシステムであって、前記
    ライトウェイトモニタは、前記オブジェクトが再エンターした回数を表す再帰カ
    ウンタを含むコンピュータシステム。
  17. 【請求項17】 請求項16に記載のコンピュータシステムであって、オブ
    ジェクトヘッダは、前記オブジェクトに関連付けられたヘビーウェイトモニタを
    示すヘビーウェイトモニタポインタを含むコンピュータシステム。
JP2000601526A 1999-02-25 2000-02-24 マルチスレッドコンピュータシステムにおけるモニタ変換 Expired - Lifetime JP4620871B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12195799P 1999-02-25 1999-02-25
US60/121,957 1999-02-25
US09/511,644 US6691304B1 (en) 1999-02-25 2000-02-22 Monitor conversion in a multi-threaded computer system
US09/511,644 2000-02-22
PCT/US2000/004882 WO2000050993A2 (en) 1999-02-25 2000-02-24 Monitor conversion in a multi-threaded computer system

Publications (2)

Publication Number Publication Date
JP2003536118A true JP2003536118A (ja) 2003-12-02
JP4620871B2 JP4620871B2 (ja) 2011-01-26

Family

ID=26820007

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000601526A Expired - Lifetime JP4620871B2 (ja) 1999-02-25 2000-02-24 マルチスレッドコンピュータシステムにおけるモニタ変換

Country Status (6)

Country Link
US (1) US6691304B1 (ja)
EP (1) EP1163581B1 (ja)
JP (1) JP4620871B2 (ja)
AU (1) AU3606900A (ja)
DE (1) DE60000925T2 (ja)
WO (1) WO2000050993A2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159220B2 (en) * 2001-09-28 2007-01-02 Intel Corporation Flexible acceleration of java thread synchronization on multiprocessor computers
US6892200B2 (en) * 2001-11-13 2005-05-10 America Online, Incorporated Javascript engine
US20030145035A1 (en) * 2002-01-15 2003-07-31 De Bonet Jeremy S. Method and system of protecting shared resources across multiple threads
US20040006583A1 (en) * 2002-06-26 2004-01-08 Nicholas Shaylor Method and apparatus for converting a synchronized method into a non-synchronized method
US6988099B2 (en) * 2002-06-27 2006-01-17 Bea Systems, Inc. Systems and methods for maintaining transactional persistence
US7051026B2 (en) * 2002-07-31 2006-05-23 International Business Machines Corporation System and method for monitoring software locks
JP3864250B2 (ja) 2002-10-31 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 排他制御装置、排他制御方法、プログラム、及び記録媒体
US7509429B2 (en) * 2004-05-28 2009-03-24 Sap Ag Message endpoint activation
US20050289212A1 (en) * 2004-06-01 2005-12-29 Tankov Nikolal D Non-transactional resource reference
US7594237B2 (en) * 2004-06-01 2009-09-22 Sap Ag Program object to support connection generation
US9582313B2 (en) * 2004-06-03 2017-02-28 Sap Se Connection resource system
US7676810B2 (en) * 2004-06-03 2010-03-09 Sap Ag Identification of execution context
US7657658B2 (en) * 2004-06-07 2010-02-02 Sap Ag Resource adapter deployment
US7617497B1 (en) * 2004-08-30 2009-11-10 Sun Microsystems, Inc. Method and system for creating and using storage threads
US8095921B2 (en) 2005-10-12 2012-01-10 International Business Machines Corporation Identifying code that wastes time switching tasks
US7886300B1 (en) 2006-09-26 2011-02-08 Oracle America, Inc. Formerly Known As Sun Microsystems, Inc. Mechanism for implementing thread synchronization in a priority-correct, low-memory safe manner
US8627292B2 (en) * 2009-02-13 2014-01-07 Microsoft Corporation STM with global version overflow handling
US9280444B2 (en) 2010-10-11 2016-03-08 Sap Se System and method for identifying contention of shared resources in a runtime system
US9141439B2 (en) * 2010-10-11 2015-09-22 Sap Se System and method for reporting a synchronization event in a runtime system of a computer system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04343143A (ja) * 1991-05-20 1992-11-30 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサシステムにおける共有資源相互排除方式
JPH05225149A (ja) * 1992-02-13 1993-09-03 Toshiba Corp ロック方式
JPH09223032A (ja) * 1996-02-19 1997-08-26 Fujitsu Ltd 資源ロック制御機構

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761670A (en) * 1995-12-08 1998-06-02 Sun Microsystems, Inc. System and method for space efficient object locking using global and local locks
EP0863462B8 (en) * 1997-03-04 2010-07-28 Panasonic Corporation Processor capable of efficiently executing many asynchronous event tasks
US6247025B1 (en) * 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
CA2222389A1 (en) * 1997-11-27 1999-05-27 Ibm Canada Limited-Ibm Canada Limitee A mechanism for managing the locking and unlocking of objects in java
US6173442B1 (en) * 1999-02-05 2001-01-09 Sun Microsystems, Inc. Busy-wait-free synchronization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04343143A (ja) * 1991-05-20 1992-11-30 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサシステムにおける共有資源相互排除方式
JPH05225149A (ja) * 1992-02-13 1993-09-03 Toshiba Corp ロック方式
JPH09223032A (ja) * 1996-02-19 1997-08-26 Fujitsu Ltd 資源ロック制御機構

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6009041424, David F. Bacon et al., "Thin Locks: Featherweight Synchronization for Java", Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, 1998, pp.258−268 *

Also Published As

Publication number Publication date
WO2000050993A3 (en) 2000-12-21
DE60000925T2 (de) 2003-05-28
WO2000050993A2 (en) 2000-08-31
EP1163581A2 (en) 2001-12-19
AU3606900A (en) 2000-09-14
DE60000925D1 (de) 2003-01-16
JP4620871B2 (ja) 2011-01-26
US6691304B1 (en) 2004-02-10
EP1163581B1 (en) 2002-12-04

Similar Documents

Publication Publication Date Title
JP2003536118A (ja) マルチスレッドコンピュータシステムにおけるモニタ変換
US10353749B2 (en) Lock-free dual queue with condition synchronization and time-outs
US7194495B2 (en) Non-blocking memory management mechanism for supporting dynamic-sized data structures
EP0946913B1 (en) Thread-local synchronization construct cache
JP3953130B2 (ja) スペース効率の良いオブジェクト・ロッキング・システム及び方法
EP1751659B1 (en) Thread synchronization methods and apparatus for managed run-time environments
US5450592A (en) Shared resource control using a deferred operations list
US6546443B1 (en) Concurrency-safe reader-writer lock with time out support
US5968157A (en) Locking of computer resources
WO1998044401A2 (en) Thread-local synchronization construct cache
JPH1131081A (ja) オブジェクトベースシステムにおけるスレッド同期を行う方法およびコンピュータシステム、並びに、そのためのコンピュータプログラム製品
US20030140085A1 (en) Single-word lock-free reference counting
JPH11327931A (ja) セマフォ操作を実行する方法及び装置
US6345313B1 (en) Recovery of synchronization constructs
US6473820B1 (en) Method and apparatus for user level monitor implementation
US6587955B1 (en) Real time synchronization in multi-threaded computer systems
EP1435572A2 (en) Method and apparatus for providing dynamic locks for resources
WO2004066148A1 (en) Method and apparatus for managing resource contention in a multisystem cluster
WO2000033195A9 (en) Elimination of traps and atomicity in thread synchronization
EP1104900A2 (en) Method and apparatus for selecting a locking policy based on a per-object locking history
US6754898B2 (en) Method and apparatus for converting a lightweight monitor to a heavyweight monitor
EP0954780B1 (en) Locking of computer resources
Züpke Deterministic fast user space synchronization
JPH03257568A (ja) 共有資源排他制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090818

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100614

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100909

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: 20101005

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101029

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4620871

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100216

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term