JP3611295B2 - コンピュータシステム、メモリ管理方法及び記憶媒体 - Google Patents

コンピュータシステム、メモリ管理方法及び記憶媒体 Download PDF

Info

Publication number
JP3611295B2
JP3611295B2 JP2000064718A JP2000064718A JP3611295B2 JP 3611295 B2 JP3611295 B2 JP 3611295B2 JP 2000064718 A JP2000064718 A JP 2000064718A JP 2000064718 A JP2000064718 A JP 2000064718A JP 3611295 B2 JP3611295 B2 JP 3611295B2
Authority
JP
Japan
Prior art keywords
locality
thread
execution subject
data
flag data
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
JP2000064718A
Other languages
English (en)
Other versions
JP2001265611A (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
Priority to JP2000064718A priority Critical patent/JP3611295B2/ja
Priority to US09/803,168 priority patent/US6971102B2/en
Publication of JP2001265611A publication Critical patent/JP2001265611A/ja
Application granted granted Critical
Publication of JP3611295B2 publication Critical patent/JP3611295B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、プログラムを複数の実行主体(スレッド)に分けて実行すると共に、当該複数の実行主体がそれぞれ共有されたデータにアクセスするようなデータ処理環境を有するコンピュータシステムに関する。
【0002】
【従来の技術】
コンピュータシステムにおいて、プログラムを複数の実行主体(スレッド)に分けて実行すると共に、当該複数の実行主体がそれぞれ共有されたデータにアクセスするようなデータ処理環境を考える。この種の処理環境では、所定の実行主体が所定のデータにアクセスする場合、当該データを他の実行主体が使用しないようにするロック(同期)処理を行う。このため、反対に、アクセスしようとするデータが他の実行主体によりアクセスされ、ロック(同期)されている場合は、アンロック(解放)されるまで待つこととなる。
【0003】
このような処理環境では、特定の単一の実行主体以外からはアクセスされないデータが存在する場合がある。しかし、そのようなデータへのアクセスにおいても、当該実行主体がアクセスする場合にはロック(同期)処理が行われていた。すなわち、他の実行主体からアクセス要求される可能性のない場合にまで、ロック(同期)処理を行うという無駄な動作が行われていた。
【0004】
また、この種の処理環境では、データを格納したメモリ装置の記憶領域において、いずれの実行主体からもアクセスされなくなったデータが残ってしまい、記憶領域が不必要に減少してしまう場合がある。そこで、必要に応じて、メモリ装置の記憶領域からそのような使用されなくなったデータをまとめて除去し、使用可能な記憶領域を増やすガーベジ・コレクションを行っている。
従来、ガーベジ・コレクションの手法としては、実行主体によるプログラムの実行を一度全て停止させ、記憶領域にある全てのデータの中からいずれの実行主体からもアクセスされなくなったデータを検索し除去する方法や、実行主体によるプログラムの実行と並行して少しずつ各データへのアクセスの有無を調べ、いずれの実行主体からもアクセスされなくなったデータを検索し除去する方法が採られている。
【0005】
この種のデータ処理環境の例として、Java言語で記述されたプログラムの動作環境(以下、Javaの動作環境と称す)がある。Java言語では、プログラムの実行主体であるスレッドが、メモリ装置の記憶領域に設定されたオブジェクトプール上に生成されるオブジェクトにアクセスすることにより、全ての処理が実行される。したがって、Javaの動作環境では、ロック(同期)処理やガーベジ・コレクションが頻繁に発生する。
そのため、ロック(同期)処理を高速化する技術や、ガーベジ・コレクションに要する時間を短縮する技術の開発が望まれている。
【0006】
【発明が解決しようとする課題】
上述したように、複数の実行主体(スレッド)が共有されたデータ(オブジェクト)にアクセスするようなデータ処理環境では、特定の単一の実行主体からのみアクセスが行われ、他の実行主体からアクセス要求される可能性のないデータに対しても、アクセスする際にロック(同期)処理を行うという無駄な動作が行われていたため、システムの全体性能を低下させていた。
【0007】
また、ガーベジ・コレクションにおいては、実行主体によるプログラムの実行を一度全て停止させて不要なデータを除去する場合は、当該処理を行う際にシステム上の他の一切の処理を中断しなくてはならないため、ユーザにとって動作が煩雑となっていた。
【0008】
一方、実行主体によるプログラムの実行と並行して不要なデータを除去する処理を実行する場合は、通常の処理を実行しながら、合間にデータの検索及び除去を実行するため、システムの全体性能を低下させてしまう。
【0009】
そこで本発明は、単一の実行主体からのみアクセスが行われ、他の実行主体からアクセス要求される可能性のないデータに対しては、アクセスする際にロック(同期)処理を省略することにより、システムの負荷を軽減し、全体的な性能を向上させることを目的とする。
【0010】
また本発明は、通常の処理と並行して行うガーベジ・コレクションの効率化を図ることにより、システムの全体性能の低下を軽減することを他の目的とする。
【0011】
【課題を解決するための手段】
かかる目的のもと、本発明は、プログラムを複数の実行主体に分けて実行すると共に、この複数の実行主体がメモリ装置に格納されているデータを共有してそれぞれアクセスするようなデータ処理環境を有するコンピュータシステムにおいて、メモリ装置に格納されているデータは、単一の実行主体のみから直接アクセスされる状態である局所性を有するか否かを示すフラグデータを有し、実行主体は、アクセスしようとするデータにおけるこのフラグデータが、この実行主体に対して局所性を有することを示す場合は、他の実行主体からのアクセスを拒否するロック処理を行わずにこのデータにアクセスし、このフラグデータが、この実行主体に対して局所性を有さないことを示す場合は、ロック処理を行った後にこのデータにアクセスすることを特徴としている。
自実行主体に対して局所性を有するデータにアクセスする際に、ロック処理を省略することにより、実行主体の負荷を軽減し、システム全体の性能を向上させることが可能となる。
【0012】
ここで、この実行主体は、メモリ装置に格納されているデータの中から、フラグデータがこの実行主体に対して局所性を有することを示しているデータであって、この実行主体が参照ポインタを持たないデータを検出し、自由に使用できる記憶領域として解放することを特徴としている。
このような構成とすれば、実行主体から参照されないデータを消去して記憶領域を解放するための処理を、所定の実行主体においてローカルに実行できるため、他の実行主体による通常の処理を停止することなく、並行して行うことができる点で好ましい。
【0013】
また、本発明は、複数のスレッドがオブジェクトを共有してそれぞれアクセスするようなデータ処理環境を有するコンピュータシステムにおいて、オブジェクトは、単一のスレッドのみから直接アクセスされる状態である局所性を有するか否かを示すフラグデータを有し、スレッドは、アクセスしようとするオブジェクトにおけるフラグデータが、このスレッドに対して局所性を有することを示す場合は、他のスレッドまたはオブジェクトからのアクセスを拒否するロック処理を行わずにこのオブジェクトにアクセスし、このフラグデータが、このスレッドに対して局所性を有さないことを示す場合は、ロック処理を行った後にこのオブジェクトにアクセスすることを特徴としている。
【0014】
ここで、このオブジェクトは、生成された際に、このオブジェクトを生成したスレッドに対して局所性を有することを示すようにフラグデータをセットし、他のスレッドまたはオブジェクトからアクセス可能な状態に変化させられる際に、その状態変化に先立って前記フラグデータにて示される局所性を解除することを特徴としている。すなわち、全てのオブジェクトは初期的にはいずれかのスレッドに対して局所性を有し、所定の状況が発生した場合に、当該スレッドによるアクセスに関する状態変化に応じてこの局所性を解除する。なお、オブジェクトの状態を変化させるべき状況が発生したことをスレッドが検出する方法としては、例えばこのオブジェクトが他のオブジェクトもしくはグローバルなデータに代入された場合とすることができる。さらにこのとき、代入先のオブジェクトが局所的かどうかまで総括的にチェックして解除するようにしても良い。
【0015】
さらにこのスレッドは、フラグデータがこのスレッドに対して局所性を有することを示しているオブジェクトであって、このスレッドが参照ポインタを持たないオブジェクトを検出し、メモリ装置上における自由に使用できる記憶領域として解放することを特徴としている。
【0016】
また、本発明は、プログラムを複数の実行主体に分けて実行すると共に、この複数の実行主体がオブジェクトを共有してそれぞれアクセスするようなデータ処理環境におけるメモリ管理方法であって、オブジェクトを生成する際に、このオブジェクトを生成した実行主体のみからアクセスされる状態である局所性を有することを示すフラグデータをセットするステップと、所定の前記実行主体に対して局所性を有する前記オブジェクトが、当該実行主体によって他の実行主体からアクセス可能な状態に変化させられる際に、その状態変化に先立って前記フラグデータにて示される局所性を解除するステップと、実行主体が所定のオブジェクトにアクセスしようとする際に、このオブジェクトのフラグデータが、この実行主体に対して局所性を有することを示す場合は、他の実行主体またはオブジェクトからのアクセスを拒否するロック処理を行わずにこのオブジェクトにアクセスし、このフラグデータが、この実行主体に対して局所性を有さないことを示す場合は、このロック処理を行った後に当該オブジェクトにアクセスするステップとを含むことを特徴としている。
自実行主体に対して局所性を有するオブジェクトにアクセスする際に、ロック処理を省略することにより、システム全体の処理速度を高速化させることが可能となる。
【0017】
ここで、このオブジェクトのフラグデータにて示される局所性を解除するステップは、このオブジェクトが所定の実行主体に対して局所性を有していた際にこの実行主体からのアクセスにおいて省略されたロック処理を実行するステップを含むことを特徴とする。
このような構成とすれば、所定のオブジェクトにおいて局所性が解除された場合に、ロック処理を省略したことによって処理の整合性が崩れることを回避することができる点でより優れている。
省略されたロック処理を実行するためには、このロック処理が省略されたことを認識することが必要であるが、これは、実行主体の実行スタックを参照したり、ロック処理を省略するたびに省略した回数をカウントしておくことにより可能である。
【0018】
さらにまた、本発明は、プログラムを複数の実行主体に分けて実行すると共に、この複数の実行主体がオブジェクトを共有してそれぞれアクセスするようなデータ処理環境におけるメモリ管理方法であって、オブジェクトを生成する際に、このオブジェクトを生成した実行主体のみからアクセスされる状態である局所性を有することを示すフラグデータをセットするステップと、実行主体が、このフラグデータがこの実行主体に対して局所性を有することを示しているオブジェクトであって、この実行主体が参照ポインタを持たないオブジェクトを検出するステップと、検出されたオブジェクトをメモリ装置上における自由に使用できる記憶領域として解放するステップとを含むことを特徴としている。
このような構成とすれば、ガーベジ・コレクションを、所定の実行主体においてローカルに実行できるため、他の実行主体による通常の処理を停止することなく、並行して行うことができる点で好ましい。
【0019】
また、本発明は、コンピュータに実行させるプログラムをこのコンピュータの入力手段が読取可能に記憶した記憶媒体において、このプログラムは、オブジェクトを生成する際に、このオブジェクトを生成した実行主体のみからアクセスされる状態である局所性を有することを示すフラグデータをセットする処理と、所定の前記実行主体に対して局所性を有する前記オブジェクトが、当該実行主体によって他の実行主体からアクセス可能な状態に変化させられる際に、その状態変化に先立って前記フラグデータにて示される局所性を解除する処理と、実行主体が所定のオブジェクトにアクセスしようとする際に、このオブジェクトのフラグデータが、この実行主体に対して局所性を有することを示す場合は、他の実行主体またはオブジェクトからのアクセスを拒否するロック処理を行わずにこのオブジェクトにアクセスし、このフラグデータが、このスレッドに対して局所性を有さないことを示す場合は、ロック処理を行った後にこのオブジェクトにアクセスする処理とをこのコンピュータに実行させることを特徴としている。
このような構成とすれば、このプログラムをインストールした全てのコンピュータにおいて、自実行主体に対して局所性を有するオブジェクトにアクセスする際に、ロック処理を省略することにより、システム全体の処理速度を高速化させることが可能となる。
【0020】
コンピュータに実行させるプログラムをこのコンピュータの入力手段が読取可能に記憶した記憶媒体において、このプログラムは、オブジェクトを生成する際に、このオブジェクトを生成した実行主体のみからアクセスされる状態である局所性を有することを示すフラグデータをセットする処理と、実行主体が、このフラグデータがこの実行主体に対して局所性を有することを示しているオブジェクトであって、この実行主体が参照ポインタを持たないオブジェクトを検出する処理と、検出されたオブジェクトをメモリ装置上における自由に使用できる記憶領域として解放する処理とを前記コンピュータに実行させることを特徴している。
このような構成とすれば、このプログラムをインストールした全てのコンピュータにおいて、ガーベジ・コレクションを、所定の実行主体においてローカルに実行できるため、他の実行主体による通常の処理を停止することなく、並行して行うことが可能となる。
【0021】
さらに、本発明は、コンピュータに、オブジェクトを生成する際に、このオブジェクトを生成した実行主体のみからアクセスされる状態である局所性を有することを示すフラグデータをセットする処理と、所定の前記実行主体に対して局所性を有する前記オブジェクトが、当該実行主体によって他の実行主体からアクセス可能な状態に変化させられる際に、その状態変化に先立って前記フラグデータにて示される局所性を解除する処理と、実行主体が所定のオブジェクトにアクセスしようとする際に、このオブジェクトのフラグデータが、この実行主体に対して局所性を有することを示す場合は、他の実行主体またはオブジェクトからのアクセスを拒否するロック処理を行わずにこのオブジェクトにアクセスし、このフラグデータが、このスレッドに対して局所性を有さないことを示す場合は、ロック処理を行った後にこのオブジェクトにアクセスする処理とを実行させるプログラムを記憶する記憶手段と、この記憶手段からこのプログラムを読み出してこのプログラムを送信する送信手段とを備えたことを特徴としている。
このような構成とすれば、このプログラムをダウンロードして実行する全てのコンピュータにおいて、自実行主体に対して局所性を有するオブジェクトにアクセスする際に、ロック処理を省略することにより、システム全体の処理速度を高速化させることが可能となる。
【0022】
さらにまた、本発明は、コンピュータに、オブジェクトを生成する際に、このオブジェクトを生成した実行主体のみからアクセスされる状態である局所性を有することを示すフラグデータをセットする処理と、実行主体が、このフラグデータがこの実行主体に対して局所性を有することを示しているオブジェクトであって、この実行主体が参照ポインタを持たないオブジェクトを検出する処理と、検出されたオブジェクトをメモリ装置上における自由に使用できる記憶領域として解放する処理とを実行させるプログラムを記憶する記憶手段と、この記憶手段からこのプログラムを読み出してこのプログラムを送信する送信手段とを備えたことを特徴としている。
このような構成とすれば、このプログラムをダウンロードして実行する全てのコンピュータにおいて、ガーベジ・コレクションを、所定の実行主体においてローカルに実行できるため、他の実行主体による通常の処理を停止することなく、並行して行うことが可能となる。
【0023】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいてこの発明を詳細に説明する。
図1は、本実施の形態におけるメモリ管理を実現するコンピュータシステムの全体構成を説明する図である。本実施の形態のコンピュータシステムは、プログラムを複数の実行主体であるスレッドに分けて実行すると共に、複数の当該スレッドがメモリ装置に格納されているオブジェクトを共有してそれぞれアクセスするようなデータ処理環境を有する。以下の説明では、特に、そのようなデータ処理環境として、Java言語で記述されたプログラムの動作環境(Javaの動作環境)を有するコンピュータシステムを例として説明する。
【0024】
図1において、符号110はオブジェクトプールであり、メモリ装置上においてオブジェクトを格納する記憶領域である。符号121〜124はオブジェクトである。符号131〜133はスレッドである。符号141はスレッド131からオブジェクト121への参照ポインタ、符号142はスレッド132からオブジェクト122への参照ポインタ、符号143はスレッド133からオブジェクト123への参照ポインタである。また、符号144はオブジェクト121からオブジェクト122への参照ポインタ、符号145はオブジェクト121からオブジェクト124への参照ポインタである。符号151〜154はスレッド局所フラグである。
【0025】
通常の動作において、スレッド131〜133は、各々の処理の必要に応じて、オブジェクトプール110にオブジェクトを生成し、使用する。図1を参照すると、スレッド131はオブジェクト121を参照すると共に、オブジェクト121を介してオブジェクト122及びオブジェクト124を参照する。同様に、スレッド132はオブジェクト122を参照し、スレッド133はオブジェクト123を参照する。
この状態をオブジェクト側から見ると、オブジェクト121はスレッド131のみから直接参照される。またオブジェクト122は、スレッド132から直接参照されると共に、オブジェクト121を介してスレッド131からも参照される。オブジェクト123はスレッド133のみから直接参照される。オブジェクト124は、オブジェクト121を介してスレッド131のみから参照される。
【0026】
ここで、オブジェクトが単一のスレッドのみから直接参照されている状態を、以下の説明では、スレッド局所性を有すると呼ぶ。
すなわち、図1の例では、スレッド131のみから直接参照されているオブジェクト121と、スレッド133のみから直接参照されているオブジェクト123とがスレッド局所性を有する。なお、オブジェクト124は、スレッド131のみから参照されているのであるが、オブジェクト121を介して参照されているので、スレッド局所性を有さない。オブジェクト124のように、他のオブジェクトから参照されているオブジェクトを、スレッド局所性を有さないこととするのは、このようなオブジェクトが実際に単一のスレッドのみから参照されているのか、当該他のオブジェクトを介して複数のスレッドから参照されているのかを判別する作業が繁雑となるからである。
【0027】
各オブジェクト121、122、123、124は、自オブジェクトがスレッド局所性を有するかどうかを示すスレッド局所フラグ151、152、153、154を持つ。本実施の形態では、オブジェクト121、122、123、124がスレッド局所性を有する場合にスレッド局所性フラグ151、152、153、154を立て(オン)、スレッド局所性を有さない場合にスレッド局所性フラグ151、152、153、154を倒す(オフ)こととする。
【0028】
スレッド131、132、133は、オブジェクトを生成する際に、当該オブジェクトのスレッド局所フラグをオンにセットする。生成されたオブジェクトは、当該オブジェクトを生成したスレッド131、132、133によって他のスレッドまたは他のオブジェクトから参照可能な状態に変化させられる際に、その状態変化に先立って自オブジェクトのスレッド局所フラグをオフにする。スレッド131、132、133が、自スレッドに対してスレッド局所性を有するオブジェクトを、他のスレッドまたは他のオブジェクトから参照可能な状態に変化させるべき状況が発生したことを検出する方法としては種々の方法が考えられる。例えば、当該オブジェクトが他のオブジェクトもしくはグローバルなデータに代入された場合に、状態を変化させることとすることができる。さらにこのとき、代入先のオブジェクトが局所的かどうかまで総括的にチェックして解除するようにしても良い。
なお、一度オフにしたスレッド局所フラグを再びオンにすることはない。実際には、所定のスレッドに対してスレッド局所性を有していたオブジェクトが、一時的に他のスレッドから参照された後、当該参照ポインタが消去されて再びスレッド局所性を回復する場合がある。しかし、このような場合分けを行うと、スレッド局所性を判断するための処理が複雑となるので、スレッド局所フラグはオフにしたままとする。
【0029】
図2は、スレッド131、132、133がオブジェクト121、122、123を生成する動作を説明するフローチャートである。
図2を参照すると、スレッド131、132、133は、まず、オブジェクトプール110の所定の領域をオブジェクト領域として確保し、初期化する(ステップ201)。次に、当該オブジェクト領域にスレッド局所フラグ151、152、153を設定し、オンにセットする(ステップ202)。そして、生成されたオブジェクト121、122、123への参照ポインタをスレッド131、132、133内に格納する(ステップ203)。
【0030】
このようにして、オブジェクト121、122、123は、生成された時点では全てスレッド局所フラグ151、152、153がオンとなっている。図1は、この後、オブジェクト122がスレッド局所性を失い、スレッド局所フラグ152がオフとなった状態を示している。なお、図1の例では、オブジェクト122はオブジェクト121から参照可能となっている。
また、図1に示すオブジェクト124は、いずれかのスレッド131、132、133により生成された後、スレッド局所性を失ってスレッド局所フラグ154がオフとなり、さらにその後、オブジェクト121から参照可能な状態となり、他の参照ポインタが消去されてオブジェクト121からの参照のみが残った状態である。
【0031】
Javaのように複数のスレッドがオブジェクトを共有してそれぞれアクセスするようなデータ処理環境では、所定のスレッドが所定のオブジェクトを参照している間は、他のスレッドが当該オブジェクトを参照できないようにする必要がある。そこで、各スレッドは、オブジェクトを参照する際にロック(同期)処理を行って、他のスレッドが当該オブジェクトにアクセスすることを拒絶するようにする。他のスレッドのロック(同期)処理によってオブジェクトへのアクセスを拒絶されたスレッドは、当該オブジェクトがアンロック(解放)されるまで当該オブジェクトの参照を待ち合わせることとなる。
【0032】
しかしながら、本実施の形態におけるスレッド局所性を有するオブジェクトは、当該オブジェクトを参照する主体が単一のスレッドに限定されている。したがって、スレッドが自スレッドに対してスレッド局所性を有するオブジェクトを参照する場合に関しては、ロック(同期)処理を省略することができる。
【0033】
図3は、スレッド131、132、133がオブジェクト121、122、123、124を参照する際のロック(同期)処理に関わる動作を説明するフローチャートである。
図3を参照すると、スレッド131、132、133は、まず、参照しようとするオブジェクト121、122、123、124のスレッド局所フラグ151、152、153、154がオンにセットされているかどうかを調べる(ステップ301)。そして、スレッド局所フラグ151、152、153、154がオンであれば、その後の処理を省略して当該オブジェクト121、122、123、124を参照する。ただし、このとき、必要に応じてロック(同期)処理の省略に伴う処理を実行する(ステップ305)。スレッド131がオブジェクト121を参照する場合、及びスレッド133がオブジェクト123を参照する場合がこれに該当する。ロック(同期)処理の省略に伴う処理の内容については後述する。
【0034】
これに対し、スレッド局所フラグ151、152、153、154がオフである場合は、通常通り、ロック(同期)処理を行う。すなわち、オブジェクト121、122、123、124を参照しようとするスレッド131、132、133は、まず、当該オブジェクト121、122、123、124が他のスレッド131、132、133によりロックされているかどうかを調べる(ステップ302)。そして、ロックされている場合は、アンロックされるまで待つ(ステップ304)。一方、当該オブジェクト121、122、123、124が他のスレッド131、132、133によりロックされていない場合(アンロックされた場合を含む)は、当該オブジェクト121、122、123、124に対してロック(同期)処理を行い(ステップ303)、参照する。スレッド132がオブジェクト122を参照する場合、及びスレッド131がオブジェクト121を介してオブジェクト122またはオブジェクト124を参照する場合がこれに該当する。
【0035】
本実施の形態において、スレッドがオブジェクトを参照する際のロック(同期)処理を省略した場合は、当該オブジェクトを参照した後に行うアンロック(解放)処理も省略できる。
図4は、スレッド131、132、133がオブジェクト121、122、123、124を参照した後のアンロック(解放)処理に関わる動作を説明するフローチャートである。
図4を参照すると、スレッド131、132、133は、まず、参照したオブジェクト121、122、123、124のスレッド局所フラグ151、152、153、154がオンにセットされているかどうかを調べる(ステップ401)。そして、スレッド局所フラグ151、152、153、154がオンであれば、その後の処理を省略して当該オブジェクト121、122、123、124の参照を終了する。ただし、このとき、必要に応じてアンロック(解放)処理の省略に伴う処理を実行する(ステップ403)。ロック(同期)処理の省略の場合と同様に、スレッド131がオブジェクト121を参照した場合、及びスレッド133がオブジェクト123を参照した場合がこれに該当する。
一方、スレッド局所フラグ151、152、153、154がオフである場合は、通常通り、アンロック(解放)処理を行う(ステップ402)。
【0036】
次に、オブジェクト121、123のように、スレッド局所フラグがオンにセットされており、特定のスレッドに対してスレッド局所性を有するオブジェクトが、当該スレッド局所性の対象ではない他のスレッドまたはオブジェクトに参照可能な状態に変更される際の動作を説明する。図5は、この際の動作を説明するフローチャートである。
【0037】
スレッド131、132、133が、自スレッドに対してスレッド局所性を有するオブジェクト121、122、123、124に関して、他のスレッドまたは他のオブジェクトから参照可能な状態に変化させるべき状況が発生したことを検出したものとする。上述したように、このような状況を検出する方法としては種々の方法を採ることができるが、ここでは、当該オブジェクトが他のオブジェクトもしくはグローバルなデータに代入された場合に、状態を変化させるべき状況が発生したと認識することとする。
【0038】
この場合、まず、スレッド131、132、133は、まず、アクセスしようとするオブジェクト121、122、123、124のスレッド局所フラグ151、152、153、154がオンにセットされているかどうかを調べる(ステップ501)。そして、スレッド局所フラグ151、152、153、154がオフであれば、何ら特別の処理を行うことなく、オブジェクト121、122、123、124への参照ポインタを当該オブジェクトを代入しようとした他のオブジェクトやデータに代入する(ステップ504)。オブジェクト122、124が他のオブジェクトまたはグローバルなデータに代入された場合がこれに該当する。
【0039】
これに対し、スレッド局所フラグ151、152、153、154がオンである場合、スレッド131、132、133は、まず、当該オブジェクト121、122、123、124に対して、当該スレッド局所フラグ151、152、153、154をオフにするように指示する。これに応じて、オブジェクト121、122、123、124が当該スレッド局所フラグ151、152、153、154をオフにすると(ステップ502)、当該オブジェクト121、122、123、124のスレッド局所性が失われることとなるが、これに伴って、以下の処理を行うことが必要となる。
【0040】
例として、スレッド133に対してスレッド局所性を有するオブジェクト123がスレッド局所性を解除される場合について考える。すなわち、オブジェクト123のスレッド局所性が解除された後、他のスレッドまたは他のオブジェクトがオブジェクト123をロックしようとする場合、当該オブジェクト123がスレッド局所性の対象であったスレッド133によりロックされていたならば、スレッド132はオブジェクト123がアンロック(解放)されるまで参照を待たなければならない。しかし、スレッド132が参照しようとするまで、オブジェクト123はスレッド133に対してスレッド局所性を有していたため、スレッド133による参照の際にはロック(同期)処理及びアンロック(解放)処理が省略されている。したがって、スレッド132による参照に先立って、省略されていたロック(同期)処理及びアンロック(解放)処理を実行して、処理における整合性を取る必要がある。
【0041】
したがって、スレッド局所フラグ151、152、153、154をオフにした後、当該オブジェクト121、122、123、124におけるスレッド局所性の対象であったスレッド131、132、133は、省略されていた当該オブジェクト121、122、123、124におけるロック(同期)処理及びアンロック(解放)処理を実行する(ステップ503)。そして、整合性がとれた後に、オブジェクト121、122、123、124への参照ポインタを当該オブジェクトを代入しようとした他のオブジェクトやデータに代入する(ステップ504)。
なお、この整合性確保のための処理は、オブジェクト121、122、123、124がスレッド局所性を失う直前に、当該オブジェクト121、122、123、124におけるスレッド局所性の対象であったスレッド131、132、133により実行されるため、Racing等の問題は発生しない。
【0042】
ステップ503で省略されていたロック(同期)処理及びアンロック(解放)処理を実行する場合、新規にアクセスしようとする要求が発生した時点で省略されているロック(同期)処理及びアンロック(解放)処理を認識することが必要となる。この認識を行う手法は任意であるが、ここでは次の二つの方法を例示する。
【0043】
第1の手法は、スレッド局所性の対象であったスレッドの実行スタックをスキャンして、省略されているロック(同期)処理及びアンロック(解放)処理を認識する方法である。この場合、オブジェクトが参照されるたびに、スレッドの実行スタックには参照履歴が自動的に格納されるので、図3のフローチャートにおけるロック(同期)処理の省略に伴う処理(ステップ305)及び図4のフローチャートにおけるアンロック(解放)処理の省略に伴う処理(ステップ403)は実体的な処理が存在しないこととなる。しかし、オブジェクトにおけるスレッド局所性が失われる際に、スレッドの実行スタックをスキャンすることによるオーバーヘッドが生じる。
【0044】
第2の手法は、ロック(同期)処理及びアンロック(解放)処理が省略された際に、省略された回数をカウントしておき、オブジェクトのスレッド局所性が失われる際に、当該カウント値に基づいて省略された処理を実行する方法である。この場合、図3のフローチャートにおけるロック(同期)処理の省略に伴う処理(ステップ305)及び図4のフローチャートにおけるアンロック(解放)処理の省略に伴う処理(ステップ403)の内容が、省略された回数をカウントする処理となる。この手法によれば、オブジェクトにおけるスレッド局所性が失われる際に、スレッドの実行スタックをスキャンすることによるオーバーヘッドは生じない。また、ステップ305、403で実行されるカウント処理は、省略されたロック(同期)処理及びアンロック(解放)処理よりもはるかに軽いため、システムに対する負担を大幅に軽減することができる。
【0045】
上述したように、複数のスレッドがオブジェクトを共有してそれぞれアクセスするようなデータ処理環境では、オブジェクトプールに、いずれのスレッドからも参照されないオブジェクトが生じる場合がある。すなわち、スレッドは、種々の処理を実行するためにオブジェクトを生成するが、その後、当該オブジェクトを参照する必要が無くなり、参照ポインタが消去されると、当該オブジェクトは全く処理の実行に関与しない状態でオブジェクトプールに放置される。したがって、このような放置されたオブジェクトを効率的に回収し、空き領域として使用するガーベジ・コレクションを行うことが重要となる。
【0046】
このような放置されたオブジェクトを回収するには、オブジェクトがいずれのスレッドからも参照されていないことを確認しなければならない。したがって、一般に、全てのスレッドの参照ポインタ群をたどって、参照の有無を調べることが必要となる。
しかし、本実施の形態は、特定のスレッドに対してスレッド局所性を有するかどうかを示すスレッド局所フラグをオブジェクトに付加しているため、スレッド局所フラグがオンにセットされているオブジェクトでは、当該スレッド局所性の対象であるスレッドだけが当該オブジェクトを参照することが保証されている。したがって、当該スレッド内に当該オブジェクトへの参照ポインタが残っているかどうかを調べるだけで、当該オブジェクトを回収できるかどうかを判断することができる。
【0047】
図6は、スレッド局所フラグを用いたガーベジ・コレクションの手順の一例を説明するフローチャートである。
図6を参照すると、ガーベジ・コレクションを実行しようとするスレッドは、自スレッドに対してスレッド局所性を有するオブジェクトを一つ選択する(ステップ601)。そして、当該オブジェクトへの参照ポインタが自スレッド内にあるかどうかを調べ(ステップ603)、参照ポインタがない場合には当該オブジェクトを回収する(ステップ604)。
以上の動作を繰り返して行い、自スレッドに対して局所性を有する全てのオブジェクトについて調べたならば、処理を終了する(ステップ602)。
【0048】
以上のようにして、所定のスレッドとの関係においてスレッド局所フラグをオンにセットしていたオブジェクトのうちで、当該スレッドから参照されない(すなわち、いずれのスレッドからも参照されない)オブジェクトを回収することができる。この処理は、スレッド自身のスタックを1段スキャンするだけで所定のオブジェクトを回収できるかどうかを判断でき、オブジェクト内部の参照ポインタのトレースを必要としないため、極めて高速に実行することができる。また、この処理は、所定のスレッドがローカルに実行するため、他のスレッドによる通常の処理を停止させることなく、並行して実行することができる。
【0049】
なお、本実施の形態によるスレッド局所フラグを用いたガーベジ・コレクションを、各スレッドにおいて順次実行したとしても、スレッド局所フラグがオフであっていずれのスレッドからも参照されないようなオブジェクトは回収することができない。そのようなオブジェクトは、全てのスレッドによる処理を一度停止させ、オブジェクトプール中の全てのオブジェクトの中からいずれのスレッドからも参照されないオブジェクトを検索するといった、従来の方法により、ガーベジ・コレクションを実行すれば良い。すなわち、本実施の形態によるスレッド局所フラグを用いたガーベジ・コレクションは、従来の技術によるガーベジ・コレクションと併用することが可能である。
【0050】
【発明の効果】
以上説明したように、本発明によれば、単一の実行主体からのみアクセスが行われ、他の実行主体からアクセス要求される可能性のないデータに対しては、アクセスする際にロック(同期)処理を省略することにより、システムの負荷を軽減し、全体的な性能を向上させることができる。
【0051】
また、通常の処理と並行して行うガーベジ・コレクションの効率化を図ることにより、システムの全体性能の低下を軽減することができる。
【図面の簡単な説明】
【図1】本実施の形態におけるメモリ管理を実現するコンピュータシステムの全体構成を説明する図である。
【図2】本実施の形態におけるスレッドがオブジェクトを生成する動作を説明するフローチャートである。
【図3】本実施の形態におけるスレッドがオブジェクトを参照する際のロック(同期)処理に関わる動作を説明するフローチャートである。
【図4】本実施の形態におけるスレッドがオブジェクトを参照した後のアンロック(解放)処理に関わる動作を説明するフローチャートである。
【図5】本実施の形態における特定のスレッドに対してスレッド局所性を有するオブジェクトがスレッド局所性を解除される際の動作を説明するフローチャートである。
【図6】本実施の形態におけるスレッド局所フラグを用いたガーベジ・コレクションの手順の一例を説明するフローチャートである。
【符号の説明】
110…オブジェクトプール、121、122、123、124…オブジェクト、131、132、133…スレッド、141、142、143、144、145…参照ポインタ、151、152、153、154…スレッド局所フラグ

Claims (9)

  1. プログラムを複数の実行主体に分けて実行すると共に、複数の当該実行主体がメモリ装置に格納されているデータを共有してそれぞれアクセスするようなデータ処理環境を有するコンピュータシステムにおいて、
    前記メモリ装置に格納されている前記データは、特定の単一の実行主体のみから直接アクセスされる状態である局所性を有するか否かを示すフラグデータを有し、かつ当該データ自身が生成された際に、当該データを生成した実行主体に対して前記局所性を有することを示すように前記フラグデータをセットし、他の実行主体からアクセス可能な状態に変化させられる際に、その状態変化に先立って前記局所性を解除するように前記フラグデータを変更し、
    前記実行主体は、アクセスしようとする前記データの前記フラグデータを調べ、当該データが自実行主体を対象とする前記局所性を有することが当該フラグデータにより示されている場合は、他の実行主体からのアクセスを拒否するロック処理を行わずに当該データにアクセスし、当該データが自実行主体を対象とする前記局所性を有さないことが当該フラグデータにより示されている場合は、当該ロック処理を行った後に当該データにアクセスすることを特徴とするコンピュータシステム。
  2. 前記実行主体は、前記メモリ装置に格納されている前記データの中から、自実行主体を対象とする前記局所性を有することが前記フラグデータにより示されているデータであって、自実行主体が参照ポインタを持たないデータを検出し、自由に使用できる記憶領域として解放することを特徴とする請求項1に記載のコンピュータシステム。
  3. 複数のスレッドがオブジェクトを共有してそれぞれアクセスするようなデータ処理環境を有するコンピュータシステムにおいて、
    前記オブジェクトは、当該オブジェクトを生成した特定のスレッドのみから直接アクセスされる状態である局所性を有するか否かを示すフラグデータを有し、かつ当該オブジェクト自身が生成された際に、当該オブジェクトを生成したスレッドに対して前記局所性を有することを示すように前記フラグデータをセットし、他のスレッドまたはオブジェクトからアクセス可能な状態に変化させられる際に、その状態変化に先立って前記局所性を解除するように前記フラグデータを変更し、
    前記スレッドは、アクセスしようとする前記オブジェクトにおける前記フラグデータを調べ、当該オブジェクトが自スレッドを対象とする前記局所性を有することが当該フラグデータにより示されている場合は、他のスレッドまたは前記オブジェクトからのアクセスを拒否するロック処理を行わずに当該オブジェクトにアクセスし、当該オブジェクトが自スレッドを対象とする前記局所性を有さないことが当該フラグデータにより示されている場合は、当該ロック処理を行った後に当該オブジェクトにアクセスすることを特徴とするコンピュータシステム。
  4. 前記スレッドは、自スレッドを対象とする前記局所性を有することが当該フラグデータにより示されているオブジェクトであって、自スレッドが参照ポインタを持たないオブジェクトを検出し、メモリ装置上における自由に使用できる記憶領域として解放することを特徴とする請求項3に記載のコンピュータシステム。
  5. プログラムを複数の実行主体に分けて実行すると共に、複数の当該実行主体がオブジェクトを共有してそれぞれアクセスするようなデータ処理環境におけるメモリ管理方法であって、
    前記オブジェクトを生成する際に、当該オブジェクトを生成した特定の実行主体のみからアクセスされる状態である局所性を有することを示すフラグデータをセットするステップと、
    前記特定の実行主体に対して前記局所性を有する前記オブジェクトが、当該特定の実行主体によって他の実行主体からアクセス可能な状態に変化させられる際に、その状態変化に先立って前記局所性を解除するように前記フラグデータを変更するステップと、
    所定の前記実行主体が所定の前記オブジェクトにアクセスしようとする際に、当該オブジェクトの前記フラグデータを調べ、当該オブジェクトが自実行主体を対象とする前記局所性を有することが当該フラグデータにより示されている場合は、他の実行主体またはオブジェクトからのアクセスを拒否するロック処理を行わずに当該オブジェクトにアクセスし、当該オブジェクトが自実行主体を対象とする前記局所性を有さないことが当該フラグデータにより示されている場合は、当該ロック処理を行った後に当該オブジェクトにアクセスするステップとを含むことを特徴とするメモリ管理方法。
  6. 前記オブジェクトの前記局所性を解除する前記フラグデータを変更するステップは、
    前記オブジェクトが前記局所性を有していた際に当該局所性の対象である前記特定の実行主体からのアクセスにおいて省略されたロック処理を実行するステップを含むことを特徴とする請求項5に記載のメモリ管理方法。
  7. 所定の実行主体が、所定のオブジェクトの前記フラグデータを調べ、自実行主体を対象とする前記局所性を有することが当該フラグデータにより示されているオブジェクトであって、自実行主体が参照ポインタを持たないオブジェクトを検出するステップと、
    検出されたオブジェクトをメモリ装置上における自由に使用できる記憶領域として解放するステップとをさらに含むことを特徴とする請求項5に記載のメモリ管理方法。
  8. コンピュータに実行させるプログラムを当該コンピュータの入力手段が読取可能に記憶した記憶媒体において、
    前記プログラムは、
    オブジェクトを生成する際に、当該オブジェクトを生成した特定の実行主体のみからアクセスされる状態である局所性を有することを示すフラグデータをセットする処理と、
    前記特定の実行主体に対して前記局所性を有する前記オブジェクトが、当該特定の実行主体によって他の実行主体からアクセス可能な状態に変化させられる際に、その状態変化に先立って前記局所性を解除するように前記フラグデータを変更する処理と、
    所定の前記実行主体が所定の前記オブジェクトにアクセスしようとする際に、当該オブジェクトの前記フラグデータを調べ、当該オブジェクトが自実行主体を対象とする前記局所性を有することが当該フラグデータにより示されている場合は、他の実行主体またはオブジェクトからのアクセスを拒否するロック処理を行わずに当該オブジェクトにアクセスし、当該オブジェクトが自実行主体を対象とする前記局所性を有さないことが当該フラグデータにより示されている場合は、当該ロック処理を行った後に当該オブジェクトにアクセスする処理とを前記コンピュータに実行させることを特徴とする記憶媒体。
  9. 所定の実行主体が、所定のオブジェクトの前記フラグデータを調べ、自実行主体を対象とする前記局所性を有することが当該フラグデータにより示されているオブジェクトであって、自実行主体が参照ポインタを持たないオブジェクトを検出する処理と、
    検出されたオブジェクトをメモリ装置上における自由に使用できる記憶領域として解放する処理とを前記コンピュータにさらに実行させることを特徴とする請求項8に記載の記憶媒体。
JP2000064718A 2000-03-09 2000-03-09 コンピュータシステム、メモリ管理方法及び記憶媒体 Expired - Fee Related JP3611295B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000064718A JP3611295B2 (ja) 2000-03-09 2000-03-09 コンピュータシステム、メモリ管理方法及び記憶媒体
US09/803,168 US6971102B2 (en) 2000-03-09 2001-03-09 Computer system, memory management method, storage medium and program transmission apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000064718A JP3611295B2 (ja) 2000-03-09 2000-03-09 コンピュータシステム、メモリ管理方法及び記憶媒体

Publications (2)

Publication Number Publication Date
JP2001265611A JP2001265611A (ja) 2001-09-28
JP3611295B2 true JP3611295B2 (ja) 2005-01-19

Family

ID=18584376

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000064718A Expired - Fee Related JP3611295B2 (ja) 2000-03-09 2000-03-09 コンピュータシステム、メモリ管理方法及び記憶媒体

Country Status (2)

Country Link
US (1) US6971102B2 (ja)
JP (1) JP3611295B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159215B2 (en) * 2001-06-27 2007-01-02 Sun Microsystems, Inc. Termination detection for shared-memory parallel programs
JP2003196553A (ja) * 2001-12-27 2003-07-11 Seiko Epson Corp 会員管理サーバシステム、そのプログラム及び会員管理方法
US7117498B2 (en) * 2002-06-14 2006-10-03 Intel Corporation Thread optimization for lock and unlock operations in a multi-thread environment
US7328438B2 (en) 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7447829B2 (en) 2003-10-15 2008-11-04 International Business Machines Corporation Heap and stack layout for multithreaded processes in a processing system
US7707194B2 (en) * 2004-06-08 2010-04-27 Sap Ag Interface to lock a database row through a logical locking interface
US20070061805A1 (en) * 2005-09-15 2007-03-15 Brenner Larry B Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system
US7599908B2 (en) * 2005-11-18 2009-10-06 Sap Ag Logical locking for Java Data Objects
US20070162475A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US8312062B1 (en) * 2006-03-29 2012-11-13 Emc Corporation Automatic resource leak detection
US20080140737A1 (en) * 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US8200947B1 (en) * 2008-03-24 2012-06-12 Nvidia Corporation Systems and methods for voting among parallel threads
US20100287216A1 (en) * 2009-05-07 2010-11-11 Tatu Ylonen Oy Ltd Grouped space allocation for copied objects
US8564616B1 (en) 2009-07-17 2013-10-22 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8542247B1 (en) 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
US8384736B1 (en) 2009-10-14 2013-02-26 Nvidia Corporation Generating clip state for a batch of vertices
CN108376070A (zh) 2016-10-28 2018-08-07 华为技术有限公司 一种编译源代码对象的方法、装置及计算机

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62221749A (ja) 1986-03-20 1987-09-29 Fujitsu Ltd 参照回数更新装置
JPH04205638A (ja) 1990-11-30 1992-07-27 Toshiba Corp プログラム配信装置
DE69332696T2 (de) * 1992-06-15 2003-08-21 Microsoft Corp Rechnerverfahren und System zur Speicherverwaltung
JPH086805A (ja) 1994-06-15 1996-01-12 Toshiba Corp マルチプロセッサシステム
JP2792454B2 (ja) 1995-02-09 1998-09-03 日本電気株式会社 動画検索システム
US5761670A (en) * 1995-12-08 1998-06-02 Sun Microsystems, Inc. System and method for space efficient object locking using global and local locks
US5845129A (en) * 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
US5862376A (en) * 1996-06-24 1999-01-19 Sun Microsystems, Inc. System and method for space and time efficient object locking
GB9717715D0 (en) * 1997-08-22 1997-10-29 Philips Electronics Nv Data processor with localised memory reclamation
JP3027845B2 (ja) 1997-11-21 2000-04-04 オムロン株式会社 プログラム制御装置および方法
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US6487652B1 (en) * 1998-12-08 2002-11-26 Sun Microsystems, Inc. Method and apparatus for speculatively locking objects in an object-based system
US6772153B1 (en) * 2000-08-11 2004-08-03 International Business Machines Corporation Method and apparatus to provide concurrency control over objects without atomic operations on non-shared objects

Also Published As

Publication number Publication date
US6971102B2 (en) 2005-11-29
US20010025295A1 (en) 2001-09-27
JP2001265611A (ja) 2001-09-28

Similar Documents

Publication Publication Date Title
JP3611295B2 (ja) コンピュータシステム、メモリ管理方法及び記憶媒体
US5251318A (en) Multiprocessing system comparing information copied from extended storage before and after processing for serializing access to shared resource
US8473969B2 (en) Method and system for speeding up mutual exclusion
KR101367450B1 (ko) 멀티 스레드 어플리케이션을 위한 해시 테이블의 동시 리해싱의 수행
US9513959B2 (en) Contention management for a hardware transactional memory
KR101013266B1 (ko) 순간 캐시 저장소
US6463532B1 (en) System and method for effectuating distributed consensus among members of a processor set in a multiprocessor computing system through the use of shared storage resources
JPH10187527A (ja) アクセス競合を防ぐ装置および方法
Herlihy et al. A provably correct scalable concurrent skip list
JPH07191944A (ja) 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
JPH1165863A (ja) 共有資源管理方法
JP7340326B2 (ja) メンテナンス動作の実行
Nguyen et al. Lock-free cuckoo hashing
JP2001527242A (ja) ロックグループを用いた楽観的並行処理制御のためのきめ細やかな整合性をもたらす仕組み
KR20120103715A (ko) 버퍼링된 저장을 이용하여 트랜잭션들을 가속화하기 위한 메커니즘들
US10423467B2 (en) Data processing apparatus and method for performing lock-protected processing operations for multiple threads
US20110289288A1 (en) Using type stability to facilitate contention management
JPH05128072A (ja) システム間排他制御方式
KR101885030B1 (ko) 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
JP2685530B2 (ja) 共用データの管理方法
CN110546609A (zh) 硬件事务内存(htm)辅助数据库事务
JP4139613B2 (ja) データ処理方法
CN117056363B (zh) 数据缓存方法、系统、设备以及存储介质
KR100611739B1 (ko) 다중 프로세서 환경의 저널링 파일 시스템에서 병렬 자원할당 및 반납 방법
JP4199746B2 (ja) 計算機システム、排他制御方法、およびプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040526

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040916

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040922

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20041006

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041018

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees