JP3953130B2 - スペース効率の良いオブジェクト・ロッキング・システム及び方法 - Google Patents

スペース効率の良いオブジェクト・ロッキング・システム及び方法 Download PDF

Info

Publication number
JP3953130B2
JP3953130B2 JP32889896A JP32889896A JP3953130B2 JP 3953130 B2 JP3953130 B2 JP 3953130B2 JP 32889896 A JP32889896 A JP 32889896A JP 32889896 A JP32889896 A JP 32889896A JP 3953130 B2 JP3953130 B2 JP 3953130B2
Authority
JP
Japan
Prior art keywords
lock
procedure
local
pointer
locking procedure
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 - Lifetime
Application number
JP32889896A
Other languages
English (en)
Other versions
JPH1049380A (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
Priority claimed from US08/569,753 external-priority patent/US5701470A/en
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH1049380A publication Critical patent/JPH1049380A/ja
Application granted granted Critical
Publication of JP3953130B2 publication Critical patent/JP3953130B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • 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

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)
  • Lock And Its Accessories (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、一般に、2つ以上の実行スレッドをオブジェクトに対して同期することのできるオブジェクト指向のコンピュータシステムに係り、より詳細には、ほとんど又は全てのオブジェクトがロック可能であるが、実際には比較的僅かなオブジェクトが常にロックされるシステムにおいてロックデータ構造を効率的に割り当てるためのシステム及び方法に係る。
【0002】
【従来の技術】
マイクロプロセッサコンピュータシステムにおいては、そのマイクロプロセッサコンピュータシステムを形成するプロセッサ上で並列に実行されるスレッドによりソフトウェアプログラムを実行することができる。従って、同時に実行されるスレッドがプログラムを同時に実行できるので、異なるプロセッサ上でプログラムを並列に実行することができる。更に、プログラムを構成プロセスに分割できる場合には、このようなコンピュータシステムは、プログラムを非常に迅速に実行することができる。というのは、同時に実行されるスレッドが構成プロセスを並列に実行できるからである。単一プロセッサのマルチタスクコンピュータシステムも、マルチタスクオペレーティングシステム設計の当業者に良く知られた種々のリソーススケジュールメカニズムを使用することにより多数の実行スレッドを実質上同時に実行することができる。
【0003】
このようなコンピュータシステムで実行されるプログラムは、オブジェクト指向のものであることが多い。換言すれば、プログラムを実行するスレッドは、特定のファンクションを実行するためのオブジェクトの方法を呼び出す。しかしながら、あるオブジェクトのある方法は、コンピュータシステムにおけるハードウェア又はソフトウェアの制約により一度に1つしか実行できない。例えば、あるオブジェクトは、一度に1つのスレッドによる1つのアクセスしか処理できないI/O装置のような共用コンピュータリソースへのアクセスを必要とする。従って、同時に実行されるスレッドがこのようなオブジェクトを同時にシークすることがあるので、オブジェクトを一度に1つのスレッドのみと同期させ、そのスレッドのみがオブジェクトを専用に使用する(即ち、一度に1つのスレッドのみがオブジェクトのロックを所有できる)ようにしなければならない。
【0004】
【発明が解決しようとする課題】
これまで、オブジェクトをスレッドと同期するために種々の解決策が使用されている。これらは、ミューテックス、条件変数、及びモニタのような同期構造の使用を含む。モニタを使用するときには、各モニタは、現在オブジェクト所有するスレッドと、オブジェクトの所有を待機しているスレッドとを識別する。しかしながら、これらモニタを使用するコンピュータシステムでは、各同期可能なオブジェクトごとにモニタが存在することが多い。その結果、この解決策は、多量のメモリを必要とするという大きな欠点を有する。
これらモニタにより必要とされるメモリを減少するための簡単な解決策は、モニタのキャッシュを割り当てそして各モニタ動作の際にこのキャッシュにおいてハッシュテーブルルックアップを実行することである。このような解決策は、モニタ動作のオーバーヘッドを実質的に増加し、そしてこの解決策が低速度であることから、本発明をするに至った。
【0005】
本発明の目的は、ロック可能であるが実際には決してロックされていないオブジェクトのロックデータ構造に対するメモリリソースの割当を回避するように必要時ベースでロックデータにスペースを割り当てるオブジェクトロッキングシステムを提供することである。
本発明の別の目的は、計算効率が良く、頻繁に使用されるオブジェクトに対し計算上のオーバーヘッドを本質的に課することがなく、且つロックされるオブジェクトの個数に比例する記憶リソースを使用するロックデータ割当システム及び方法を提供することである。
本発明の付加的な目的及び特徴は、添付図面を参照した以下の詳細な説明及び特許請求の範囲から容易に明らかとなろう。
【0006】
【課題を解決するための手段】
本発明の上記目的は、複数のオブジェクト及び複数の手順を記憶するためのメモリを備え、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、データ構造に対するデータポインタを含み;更に、指定の非ロックオブジェクトのロック状態をロックへと切り換えるための命令を含み、指定の非ロックオブジェクトに対するローカルなオブジェクトロッキング手順を形成するためのグローバルなオブジェクトロッキング手順を備え、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定の非ロックオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するためのロックデータクリーンアップ手順を備えたコンピュータシステムにおいて、システムは、グローバルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもたないオブジェクトに対するロック要求にサービスし、ローカルオブジェクトロッキング手順を使用して、ロックデータサブアレーをもつオブジェクトに対するロック要求にサービスし、かつロックデータクリーンアップ手順を使用して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するコンピュータシステムによって達成される。
【0007】
本発明のコンピュータシステムでは、最近ロックのロック状態をもたない各々の記憶されたオブジェクトは、グローバルなオブジェクトロッキング手順を含む手順のサブセットに対するメソドポインタを含み、最近ロックのロック状態をもつ各々の記憶されたオブジェクトは、ローカルなオブジェクトロッキング手順を含む手順のサブセットに対するメソドポインタを含み、かつグローバルなオブジェクトロッキング手順は、ローカルなオブジェクトロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを更新する命令を含むように構成してもよい。
本発明のコンピュータシステムでは、ロックのロック状態を決してもっていない各々の記憶されたオブジェクトは、グローバルなオブジェクトロッキング手順を含む手順のサブセットに対するメソドポインタを含み、ロックのロック状態をもつ各々の記憶されたオブジェクトは、ローカルなオブジェクトロッキング手順を含む手順のサブセットに対するメソドポインタを含み、グローバルなオブジェクトロッキング手順は、ローカルなオブジェクトロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを更新する命令を含み、かつロックデータクリーンアップ手順は、グローバルなオブジェクトロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを変更する命令を含むように構成してもよい。
【0008】
本発明のコンピュータシステムでは、メモリは、更に、1組のオブジェクトクラスを記憶し、各オブジェクトクラスは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含む一次仮想ファンクションテーブル(VFT)を含み、最近ロックのロック状態をもたない記憶されたオブジェクトの各々は、オブジェクトクラスの対応する1つについて一次VFTをレファレンスするメソドポインタを含み、ロックのロック状態をもつ記憶されたオブジェクトの各々に対し、ローカルなオブジェクトロッキング手順をレファレンスするポインタを含むローカルな仮想ファンクションテーブル(VFT)があり、グローバルなオブジェクトロッキング手順は、指定のオブジェクトに対しローカルVFTをレファレンスするように指定のオブジェクトのメソドポインタを更新する命令を含むように構成してもよい。
【0009】
本発明のコンピュータシステムでは、メモリは、更に、1組のオブジェクトクラスを記憶し、各オブジェクトクラスは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含む一次仮想ファンクションテーブル(VFT)を含み、ロックのロック状態を決してもっていない記憶されたオブジェクトの各々は、オブジェクトクラスの対応する1つについて一次VFTをレファレンスするメソドポインタを含み、ロックのロック状態をもつ記憶されたオブジェクトの各々に対し、ローカルなオブジェクトロッキング手順をレファレンスするポインタを含むローカルな仮想ファンクションテーブル(VFT)があり、グローバルなオブジェクトロッキング手順は、指定のオブジェクトに対しローカルVFTをレファレンスするように指定のオブジェクトのメソドポインタを更新する命令を含み、かつロックデータクリーンアップ手順は、指定のオブジェクトに対応するオブジェクトクラスに対し一次VFTをレファレンスするように指定のオブジェクトのメソドポインタを変更する命令を含むように構成してもよい。
【0010】
また本発明の上記目的は、複数のオブジェクト及び複数の手順をコンピュータメモリに記憶し、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、データ構造に対するデータポインタを含み;決してロックされていない指定のオブジェクトに対するロック要求にサービスするときに、指定のオブジェクトのロック状態をロックへと切り換える命令を含むグローバルなオブジェクトロッキング手順を実行して、指定のオブジェクトに対するローカルなオブジェクトロッキング手順を形成し、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定のオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、ロックデータクリーンアップ手順を実行して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除する段階を具備するコンピュータシステムを操作する方法によって達成される。
【0011】
本発明の方法では、ロックのロック状態を最近もたない各々の記憶されたオブジェクトに、グローバルなオブジェクトのロッキング手順を含む手順のサブセットに対するメソドポインタを組み合わせ、ロックのロック状態を最近もつ各々の記憶されたオブジェクトに、ローカルなオブジェクトのロッキング手順を含む手順のサブセットに対するメソドポインタを組み合わせ、グローバルなオブジェクトのロッキング手順を実行して、非ロックオブジェクトに対するロック要求にサービスするときに、ローカルなオブジェクトのロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを更新するようにしてもよい。
本発明の方法では、ロックのロック状態を決してもっていない各々の記憶されたオブジェクトに、グローバルなオブジェクトロッキング手順を含む手順のサブセットに対するメソドポインタを組み合わせ、ロックのロック状態をもつ各々の記憶されたオブジェクトに、ローカルなオブジェクトロッキング手順を含む手順のサブセットに対するメソドポインタを組み合わせ、グローバルなオブジェクトロッキング手順を実行して、非ロックオブジェクトに対するロック要求にサービスするときに、ローカルなオブジェクトロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを更新し、かつロックデータクリーンアップ手順を実行するときに、グローバルなオブジェクトロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを変更するようにしてもよい。
【0012】
本発明の方法では、コンピュータメモリに1組のオブジェクトクラスを記憶し、各々のオブジェクトクラスは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含む一次仮想ファンクションテーブル(VFT)を含み、ロックのロック状態を最近もたない記憶されたオブジェクトの各々に、オブジェクトクラスの対応する1つについて一次VFTをレファレンスするメソドポインタを組み合わせ、ロックのロック状態をもつ記憶されたオブジェクトの各々に対して、ローカルなオブジェクトロッキング手順をレファレンスするポインタを含むローカルな仮想ファンクションテーブル(VFT)をコンピュータメモリに記憶し、グローバルなオブジェクトロッキング手順を実行するときに、指定のオブジェクトに対しローカルVFTをレファレンスするように指定のオブジェクトのメソドポインタを更新するようにしてもよい。
【0013】
本発明の方法では、コンピュータメモリに1組のオブジェクトクラスを記憶し、各々のオブジェクトクラスは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含んだ一次仮想ファンクションテーブル(VFT)を含み、ロックのロック状態を決してもっていない記憶されたオブジェクトの各々に、オブジェクトクラスの対応する1つについて一次VFTをレファレンスするメソドポインタを組み合わせ、ロックのロック状態をもつ記憶されたオブジェクトの各々に対して、ローカルなオブジェクトロッキング手順をレファレンスするポインタを含むローカルな仮想ファンクションテーブル(VFT)をコンピュータメモリに記憶し、グローバルなオブジェクトロッキング手順を実行するときに、指定のオブジェクトに対しローカルVFTをレファレンスするように指定のオブジェクトのメソドポインタを更新し、かつロックデータクリーンアップ手順を実行するときに、指定のオブジェクトに対応するオブジェクトクラスに対し一次VFTをレファレンスするように指定のオブジェクトのメソドポインタを変更するようにしてもよい。
【0014】
更に、本発明の上記目的は、データ処理システムで実行されるプログラムによりアクセスするためのデータを記憶するコンピュータ読み取り可能な記憶媒体において、メモリに記憶された複数のオブジェクト及び複数の手順を備え、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、媒体に記憶されたデータ構造に対するデータポインタを含み;更に、指定の非ロックオブジェクトのロック状態をロックへと切り換えるための命令を含み、指定の非ロックオブジェクトに対するローカルなオブジェクトロッキング手順を形成するためのグローバルなオブジェクトロッキング手順を備え、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定のオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するためのロックデータクリーンアップ手順を備え、システムは、グローバルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもたないオブジェクトに対するロック要求にサービスし、ローカルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもつオブジェクトに対するロック要求にサービスし、かつロックデータクリーンアップ手順を使用して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するコンピュータ読み取り可能な記憶媒体によって達成される。
【0015】
本発明の記憶媒体では、最近ロックのロック状態をもたない各々の記憶されたオブジェクトは、グローバルなオブジェクトロッキング手順を含む手順のサブセットに対するメソドポインタを含み、最近ロックのロック状態をもつ各々の記憶されたオブジェクトは、ローカルなオブジェクトロッキング手順を含む手順のサブセットに対するメソドポインタを含み、かつグローバルなオブジェクトロッキング手順は、ローカルなオブジェクトロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを更新する命令を含むように構成してもよい。
本発明の上記目的は、データ処理システムにおいて、通信リンクを経て他のデータ処理システムへ送信するのに適した1組のコンピュータ読み取り可能なモジュールを備え、各々の他のデータ処理システムは、複数のオブジェクト及び複数の手順を記憶し、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、データ構造に対するデータポインタを含み、1組のモジュールは、指定の非ロックオブジェクトのロック状態をロックへと切り換えるための命令を含み、指定の非ロックオブジェクトに対するローカルなオブジェクトロッキング手順を形成するためのグローバルなオブジェクトロッキング手順を備え、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定のオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するためのロックデータクリーンアップ手順を備え、他のデータ処理システムの各々は、グローバルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもたないオブジェクトに対するロック要求にサービスし、ローカルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもつオブジェクトに対するロック要求にサービスし、かつロックデータクリーンアップ手順を使用して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除する1組のコンピュータ読み取り可能なモジュールによって達成される。
【0016】
本発明のモジュールでは、グローバルなオブジェクトロッキング手順は、ローカルなオブジェクトロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを更新する命令を含み、かつロックデータクリーンアップ手順は、グローバルなオブジェクトロッキング手順を含む手順のサブセットを指すように指定のオブジェクトのメソドポインタを更新する命令を含むように構成してもよい。
【0017】
【作用】
要約すれば、本発明は、複数のオブジェクト及び複数の手順を記憶するメモリを有したマルチスレッド型コンピュータシステムを提供する。各々のオブジェクトは、ロック又は非ロック(アンロック)のロック状態を有する。オブジェクトを表す方法は2つあり、即ちデータ構造に対するデータポインタ及びメソドアレーに対するメソドポインタより成るハンドルとして表すか、或いはオブジェクトデータ構造に対する直接ポインタであって、その第1のエレメントがメソドアレーに対するメソドポインタである直接ポインタとして表すことである。本発明の目的についてはこのような表示の相違は重要ではない。
いずれにせよ、メソドアレーは、オブジェクトに対するロック及び非ロック手順を含む。各オブジェクトは、更に、あるクラスのインスタンスであり、そしてそのクラスに関連したクラスデータ構造に対しそのメソドアレーと共に記憶されるデータレファレンスを有している。従って、同じクラスのインスタンスである2つのオブジェクトは、このクラスデータ構造を共用し、それに対して同じレファレンスを有する。このクラスデータ構造は、そのクラスに関連した永久的に割り当てられたクラスロックデータ構造を含み、これは、関連するロックデータ構造をもたないオブジェクトに対する変更を同期するのに使用することができる。
【0018】
このシステムは、ロックデータサブアレーが割り当てられていないオブジェクト(即ち、決してロックされていないオブジェクト及び最近ロックされないオブジェクト)に対するロック要求にサービスするためのロック手順として単一グローバルオブジェクトロッキング手順を使用し、そしてロックデータサブアレーが割り当てられたオブジェクト(即ち、ロックされたオブジェクト及び最近ロックされたオブジェクト)に対するロック要求にサービスするためのロック手順としてローカルなオブジェクト特有のロッキング手順を使用する。
グローバルなオブジェクトロッキング手順は、特にロックされるべきオブジェクトに対するローカルなオブジェクトロッキング手順を形成するための命令を有する。ローカルなオブジェクト特有のロッキング手順は、ロックデータを記憶するためのロックデータサブアレーをプライベートデータとして含んでいる。ローカルなオブジェクト特有のロッキング手順は、そのオブジェクトの記憶されたロックデータを更新するための命令を有する。システムのガーベージ整理手順が実行されるときに実行されるロックデータクリーンアップ手順は、オブジェクトが最近ロックされていない場合にローカルなオブジェクト特有のロッキング手順に使用されるメモリを解放する。
【0019】
好ましい実施形態においては、ロックデータサブアレーが割り当てられていない各オブジェクトは、グローバルなオブジェクトロッキング手順を含む1組の手順をレファレンスするメソドポインタを有し、このようなオブジェクトは必ずしもロック状態にない。ローカルなオブジェクト特有のロッキング手順が割り当てられた各オブジェクトは、そのローカルなオブジェクト特有のロッキング手順を含む1組の手順をレファレンスするメソドポインタを有する。更に、グローバルなオブジェクトロッキング手順は、ローカルなオブジェクト特有のロッキング手順を含む1組の手順を指すように特定のオブジェクトのメソドポインタを更新するための命令を含む。
ロックデータクリーンアップ手順は、指定のオブジェクトが最近ロックされないことを指定のオブジェクトの更新されたロックデータが指示するときに作用されて、グローバルなオブジェクトのロッキング手順を含む1組の手順を指すように指定のオブジェクトのメソドポインタを変更するための命令を含む。
【0020】
より詳細には、好ましい実施形態において、コンピュータシステムは、1組のオブジェクトクラスを含み、そして各オブジェクトクラスは、オブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含む仮想ファンクションテーブル(VFT)を備えている。最近ロックされない各オブジェクトは、対応するオブジェクトクラスに対しVFTをレファレンスするメソドポインタを有する。
最近ロックされた各オブジェクトに対し、システムは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、オブジェクトのローカルオブジェクトロッキング手順をレファレンスするポインタとを含むオブジェクト特有の仮想ファンクションテーブル(VFT)を記憶する。グローバルなオブジェクトロッキング手順は、オブジェクト特有のVFTを形成しそしてそのオブジェクト特有のVFTをレファレンスするように指定のオブジェクトメソドポインタを更新するための命令を含む。
【0021】
【実施例】
図1には、多数のクライエントコンピュータ102及び多数のサーバコンピュータ104を有する分散型コンピュータシステム100が示されている。好ましい実施形態において、各クライエントコンピュータ102は、インターネット103を経てサーバ104に接続されるが、他の形式の通信接続を使用することもできる。ほとんどのクライエントコンピュータは、サン・ワークステーション、IBM対応のコンピュータ及びマッキントッシュコンピュータのようなデスクトップコンピュータであるが、実質上いかなる形式のコンピュータがクライエントコンピュータであってもよい。好ましい実施形態においては、各クライエントコンピュータは、CPU105、通信インターフェイス106、ユーザインターフェイス107、及びメモリ108を備えている。メモリ108は、次のものを記憶する。
【0022】
・オペレーティングシステム109;
・インターネット通信マネージャープログラム110;
・指定のプログラムがある予め定められた完全性基準を満足するか否かを照合するためのバイトコードプログラムベリファイヤ112;
・アプリケーションプログラムを実行するためのバイトコードプログラムインタープリター114;
・ユーザのアドレススペースにオブジェクトクラスをロードし、そしてバイトコードプログラムベリファイヤを用いて、各ロードされたオブジェクトクラスに関連したメソドの完全性を照合するためのクラスローダ116;
・使用中のオブジェクトクラス122をローカルに記憶し及び/又はコンピュータ102のユーザにより使用できるようにする少なくとも1つのクラス保存容器120;
・クラス保存容器120に記憶されるオブジェクトクラスのオブジェクトのインスタンスであるオブジェクト126を記憶するための少なくとも1つのオブジェクト保存容器124。
【0023】
好ましい実施形態において、オペレーティングシステム109は、各定められたアドレススペース内で多数の実行スレッドをサポートするオブジェクト指向のマルチタスクオペレーティングシステムである。オペレーティングシステムは、更に、解放されたデータ構造に関連した記憶を回復するためのガーベージ整理手順を使用する。このガーベージ整理手順は、周期的なベースで自動的に実行されるのに加えて、割当に使用できるメモリの量がスレッシュホールドレベルより下がったときにも自動的に呼び出される。この説明の目的上、オペレーティングシステム109の全てのオブジェクトはロック可能なオブジェクトであるが、実際には比較的僅かなオブジェクトだけが常にロックされると仮定する。
クラスローダ116は、一般に、適当なオブジェクトクラスのオブジェクトを発生することを必要とする手順の実行をユーザが最初に開始するときに呼び出される。クラスローダ116は、適当なオブジェクトクラスをロードし、そしてそのロードされたオブジェクトクラスにおける全てのバイトコードプログラムの完全性を照合するためにバイトコードプログラムベリファイヤ112を呼び出す。全てのメソドが首尾良く照合された場合には、オブジェクトクラスのオブジェクトインスタンスが発生され、そしてバイトコードインタープリター114が呼び出されて、ユーザが要求した手順、一般にメソドと称する、を実行する。ユーザが要求した手順がバイトコードプログラムではなくそして非バイトコードプログラム実行が許された(これは本発明の範囲外である)場合には、コンパイルされたプログラムエグズキュータ(図示せず)によりプログラムが実行される。
【0024】
又、クラスローダは、実行中のバイトコードプログラムが、ユーザのアドレススペースへまだロードされていないオブジェクトクラスに対するクライエントメソドへの呼び出しに遭遇したときにも呼び出される。再び、クラスローダ116は、適当なオブジェクトクラスをロードし、そしてそのロードされたオブジェクトクラスにおける全てのバイトコードプログラムの完全性を照合するためにバイトコードプログラムベリファイヤ112を呼び出す。多くの状態において、オブジェクトクラスは、図1に示すサーバ104の1つのような遠隔配置されたコンピュータからロードされる。ロードされたオブジェクトクラスの全てのメソドが首尾良く照合された場合には、オブジェクトクラスのオブジェクトインスタンスが発生され、そして呼び出されたオブジェクトメソドを実行するためにバイトコードインタープリター114が呼び出される。
【0025】
同期型のメソドは、ここでは、システムリソースを同時に使用することのできる実行スレッドの数(以下、「スレッド」)を制限するためにロッキング方法を使用することを含むメソドであると定義する。最も一般的な同期ツールは、ミューテックス(mutex) であり、これは、一度に1つのスレッドのみが特定のシステムリソースを使用できるようにし、そしてリソースの使用を待機する実行スレッドを追跡するメカニズムを含む。ここに述べる同期メカニズムは、ミューテックス形式のロッキングメカニズムであるが、本発明の方法は、セマフォや、時間ベースのロックエクスピレーション等を含む(これらに限定されないが)他の同期メカニズムを有するコンピュータシステムにも等しく適用することができる。
好ましい実施形態において、同期型メソドは、常に、1つの特定のオブジェクトに対して同期される。例えば、多数のスレッドが、特定のオブジェクトにより表されたシステムリソースの専用の使用を必要とする同期型メソドを実行することができる。いずれかのスレッドがオブジェクトに対するロックの「所有権」を有するときには、そのオブジェクトにロックの所有権を要求する他の全てのメソドは、全ての早期スレッドがオブジェクトに対するロックを得て解除するまで、強制的に待機させられる。
【0026】
非ロック及びロックオブジェクトに対するデータ構造
図2は、最近ロックされていないオブジェクトに対する本発明の好ましい実施形態におけるデータ構造200を示している。以下に述べるように、このようなオブジェクトは全て当然非ロックであり、そして更に、ロックデータサブアレーが割り当てられていない。1つの好ましい実施形態において、「オブジェクトXは最近ロックされていない」という句は、オペレーティングシステムによる最後のガーベージ整理以来オブジェクトXがロックされていないことを意味するものと定義される。他の好ましい実施形態において、「最近」という語は、予め定められた時間量、例えば、ある秒数、又はガーベージ整理手順の実行以外のコンピュータシステムにおける確実な周期的事象以来の時間周期として定義される。
【0027】
オブジェクトクラスAのオブジェクトは、オブジェクトのメソドに対するポインタ204と、オブジェクトのデータアレー208に対するポインタ206とを含むオブジェクトハンドル202を有している。
オブジェクトのメソドに対するポインタ204は、実際には、関連するオブジェクトクラスのメソドに対する間接的ポインタである。より詳細には、メソドポインタ204は、オブジェクトのオブジェクトクラスに対する仮想ファンクションテーブル(VFT)210を指す。各オブジェクトクラスが有するVFT210は、(A)オブジェクトクラスのメソド214の各々に対するポインタ212と、(B)オブジェクトをスレッドに同期するためのグローバルなロックメソド(グローバルロック1)216に対するポインタ215と、(C)特殊クラスオブジェクト218に対するポインタ217と、(D)ロックモニタを解放するための非ロックメソド221に対するポインタ220とを含んでいる。各定められたオブジェクトクラスごとに1つのクラスオブジェクト218があり、そしてクラスオブジェクトは、クラスのための永久的に割り当てられたロックデータサブアレー(ロックモニタとも称する)219を含む。好ましい実施形態において、クラスオブジェクト218は、対応するオブジェクトクラスのインスタンスである全てのオブジェクトのロックデータサブアレーにアクセスを同期するために用いられる。
【0028】
図2に示すように、オブジェクトクラスAのオブジェクトがいかに多く存在しても、全オブジェクトクラスAに対しVFT210及びオブジェクトメソド214のコピーは1つだけである。更に、グローバルなロックメソド(グローバルロック1)216及び非ロックメソド221は、好ましい実施形態においてはオブジェクトクラスハイアラーキの最上部にあるオブジェクトクラスであるオブジェクトクラス「オブジェクト」のメソドである。
グローバルロック1のメソド210は、ロックデータサブアレーがまだ割り当てられていないオブジェクトと同期するようにスレッドによる要求を処理するのに用いられる。非ロックメソド221は、オブジェクトとの同期を解除するようにスレッドによる要求を処理するのに用いられる。非ロックメソド221は、従来通りに動作し、指定のオブジェクトのモニタの現在の所有者を除去し、指定のオブジェクトのモニタを待機しているスレッドがない場合にはロック状態を非ロックに設定し、そしてその他については、ロック状態をロックとしたまま、最上部の待機中スレッドを指定のオブジェクトのモニタの所有者とする。
【0029】
又、図2に示されたように、オブジェクトクラス「オブジェクト」は、オブジェクトからロックデータサブアレーを矯正するための「ロックデータクリーンアップ」メソドと称する第2のロックメソド222も含んでいる。3つのロックメソド216、221及び222は、本発明の方法を用いる全てのシステムに使用できることが知られているオブジェクトクラスのメソドとして実施することができ、オブジェクトクラス「オブジェクト」の一部である必要はないことを指摘しておく。
図3は、本発明の好ましい実施形態におけるロックされたオブジェクトのデータ構造240を示している。これは、最近ロックされた、従って、ロックデータサブアレーが割り当てられたオブジェクトのデータ構造でもある。オブジェクトクラスAのロックされたオブジェクトは、オブジェクトのメソドに対するポインタ244と、オブジェクトのデータアレー208に対するポインタ246とを含むオブジェクトハンドル242を有する。
【0030】
最近ロックされたオブジェクトのメソドポインタ244は、仮想ファンクションテーブル250(VFT、A−01)のオブジェクト特有のバージョンを指す。割り当てられたロックデータサブアレーを有する各オブジェクトは、特定のVFT(VFT、A−01)250を有し、これは、(A)オブジェクトクラスのメソド214の各々に対するポインタ212と、(B)オブジェクトをスレッドに同期するのに用いられるローカルのオブジェクト特有のロッキング手順(ローカルロック2)260に対するポインタ256と、(C)特殊クラスオブジェクト218に対するポインタ217と、(D)ロックモニタ解除するための非ロックメソドに対するポインタ220とを含む。各々の定められたオブジェクトクラスごとに1つのクラスオブジェクト218があり、クラスオブジェクトは、永久的に割り当てられたロックデータサブアレー(ロックモニタとも称する)219を含む。
【0031】
ローカルなオブジェクト特有のロッキング手順260は、ロックされたオブジェクト及び最近ロックされたオブジェクトに対するロック要求にサービスするのに使用される。ローカルなオブジェクト特有のロッキング手順260は、ロックデータを記憶するためのロックデータサブアレー249をプライベートデータとして含んでいる。ローカルなオブジェクト特有のロッキング手順は、そのオブジェクトの記憶されたロックデータを更新する命令を有する。より詳細には、ローカルなオブジェクト特有のロッキング手順260は、対応するオブジェクトをスレッドに同期すると共に、対応するロック情報をオブジェクトのロックデータサブアレー249に記憶するためのオブジェクト特有のロッキングメソド(ローカルロック2)を有する。
【0032】
ロックデータサブアレー249は、オブジェクトロック状態インジケータと、ロック所有者値と、待機者(即ち、オブジェクトとの同期を待機しているスレッド)のリストヘッダ及びリストテイルとを含む。好ましい実施形態において、ロック状態インジケータは、オブジェクトがロックされたか非ロックであるかを示す第1フラグ値(ロックフラグ)と、オブジェクトが最近ロックされたかどうかを示す第2フラグ値(「最近ロックされない(NotRecentlyLocked) 」フラグ)とを含む。「最近ロックされない」フラグは、オブジェクトが最近ロックされない場合にセットされる(真に)。好ましい実施形態において、「最近ロックされない」フラグは、「ロックデータクリーンアップ」メソドによりセットされ、グローバルロック1及びローカルロック2メソドによりクリアされる。
【0033】
オブジェクトロッキング方法
クライエントコンピュータ102のような各コンピュータシステムは、関連するオブジェクトクラスを各々有する多数のオブジェクトを有している。各オブジェクトは、その関連するオブジェクトクラスのインスタンスであると言える。各オブジェクトクラスは、そのスーパークラスから特性を引き継ぎ、そして各オブジェクトクラスは、オブジェクトクラス「オブジェクト」と称するトップレベルのオブジェクトクラスのサブクラスである。
特定のアドレススペースに存在する各オブジェクトクラスに対し、そのオブジェクトクラスに関連した全てのメソド(即ち、実行可能な手順)のリストと、これらメソドの各々に対するポインタとを含む仮想ファンクションテーブル(VFT)が存在する。図2に示すように、各オブジェクトクラスのVFTは、グローバルロック1メソドに対するレファレンスも含み、これは、好ましい実施形態においては、オブジェクトクラス「オブジェクト」に関連したメソドである。オブジェクトにロックデータサブアレーが割り当てられないときは、そのメソドポインタがオブジェクトのオブジェクトクラスに対するデフォールトVFTを指す。
【0034】
本発明の第1の好ましい実施形態によれば、各オブジェクトクラスは、第1のVFTとして上記されそしてここで「一次VFT」とも称される関連仮想ファンクションテーブルを有する。更に、最近ロックされた各オブジェクトに対し、システムは、オブジェクト特有の仮想ファンクションテーブル(VFT)を形成する。オブジェクト特有のVFTは、一次VFTによりレファレンスされるグローバルなロックメソド「グローバルロック1」216とは異なるローカルなロックメソド「ローカルロック2」260をレファレンスする。
以下のテーブル1、2、3及び4は、本発明に関連したグローバルロック1、ローカルロック2、及びロックデータクリーンアップソフトウェアルーチンの擬似コード表示を含む。ここで使用する擬似コードは、普遍的なコンピュータ言語の規定を使用する。ここに使用される擬似コードは、説明の目的でのみ形成されたものであるが、コンピュータプログラムの当業者により容易に理解できるように構成されている。
【0035】
図4及びテーブル1に示す「グローバルロック1」メソド216の擬似コードを参照すれば、ロックデータサブアレーが割り当てられていないオブジェクトが同期メソド呼び出しの主題であるときに、オブジェクトに関連したグローバルなロックメソド(グローバルロック1)が呼び出される。グローバルロック1メソドが始まると、ロックされるべきオブジェクトに関連したクラスオブジェクトに対するロックを要求しそしてそれを待機する(ステップ270)。グローバルロック1メソドの残りの部分は、グローバルロック1メソドの呼び出しを行うスレッドがクラスオブジェクトに対するロックを得るまで実行されない。
グローバルロック1及びロックデータクリーンアップメソドは、同時性による崩壊に対して保護するために、クラスオブジェクトに対するロックを得ることにより同期される必要がある。例えば、マルチプロセッサシステムにおいては、グローバルロック1手順は、同時に同じオブジェクトに対する2つのプロセッサにより同時に呼び出されることがある。これは、予防策を講じない限り、オブジェクト特有のVFTと、2つのオブジェクト特有のローカルロック2手順とを生じてしまう。この問題を解消するために、グローバルロック1及びロックデータクリーンアップ手順においては、指定のオブジェクトの内部データ構造を再構成しながらも指定のオブジェクトの形式に対してクラスオブジェクトをロックすることが必要となる。
【0036】
クラスオブジェクトに対するロックを得た後に、オブジェクトがロックされた(又は最近ロックされた)か或いは非ロックにされた(又は最近非ロックにされた)かのチェックが行われる。オブジェクトがロックされたか否かは、オブジェクト特有のロッキング手順及びオブジェクト特有のVFTの存在をチェックすることにより確かめることができる(ステップ271)。オブジェクト特有のロッキング手順及びオブジェクト特有のVFTが存在する状態では、メソドがステップ276へ進む。さもなくば、グローバルロック1メソドは、ローカルロックデータサブアレーをプライベートデータとして含むローカルなオブジェクト特有のロッキング手順を形成する(ステップ272)。又、グローバルロック1は、ローカル所有者スレッドの識別を表すデータをロックデータサブアレーに記憶しそして「最近ロックされない(NotRecentlyLocked) 」フラグをクリアすることによりローカルロックデータサブアレーを初期化する。更に、グローバルローカル1メソドは、このオブジェクトに対して、オブジェクト特有のロッキング手順をレファレンスするオブジェクト特有のVFTを形成する(ステップ272)。次いで、オブジェクトに対するメソドポインタが、オブジェクト特有のVFTを指すように変更される。更に、クラスオブジェクトに対するロックが解除される(ステップ276)。最後に、ローカルロッキングメソド「ローカルロック2」が呼び出される(ステップ278)。オブジェクトメソドポインタの変更及びオブジェクト特有のVFTの形成により、ローカルロック2メソドは、このオブジェクトに対するその後の同期要求を取り扱うために自動的に呼び出される。
【0037】
図5及びテーブル2に示されたローカルロック2メソド260の擬似コードを参照すれば、ローカルロック2メソドは、受け取った同期要求の通常のサービスを単に実行するもので、これは、ロックデータの通常の更新を含む(ステップ290)。更に、ローカルロック2メソドのいかなる呼び出しも、指定のオブジェクトの「最近ロックされない」フラグをクリアさせる(ステップ300)。別の実施形態においては、指定のオブジェクトの「最近ロックされない」フラグは、同期要求が処理された後にオブジェクトのロック状態がロックである場合にのみクリアされる。ローカルロック2メソドは、このメソドが呼び出されたときに、指定のオブジェクト(即ち、ロック処理の主題)がロックデータサブアレーを既に有することが分かるので、簡単である。
【0038】
通常のミューテックス動作については、ロック取扱要求(即ち、ローカルロック2メソドにより取り扱われる要求)がスレッドにより関連オブジェクトと同期することである場合に、オブジェクトが既にロックされていれば、スレッドは、そのオブジェクトに対する待機中スレッドリストに加えられる。さもなくば、オブジェクトが非ロックであれば、要求を発するスレッドがロック所有者となり、ロック状態は、ロックへと変更される。
非ロック(アンロック)メソド221は、スレッドにより保持されたロックを解除する要求を処理する。待機中スレッドリストの最も上の待機中スレッドは、ロック所有者とされ、実行を再開することが許される。待機中のスレッドがない場合には、ロック状態が「非ロック」へと更新され、これは、ある実施形態においては、ロック所有者のデータをナル値へ変更しそしてロック状態フラグを偽へリセットするだけで指示することができる。
【0039】
ローカルロック2は、オブジェクトが非ロックになった後も、オブジェクトのロックデータサブアレーがロッククリーンアップ(LockCleanUp) 」メソドにより割当解除されるまで、オブジェクトに対する全ての同期要求を取り扱う。
図6は、オブジェクト特有のVFT及びオブジェクト特有のロッキング手順の記憶を解除するロックデータクリーンアップメソドの第1の好ましい実施形態を示す。この実施形態は、ロックデータクリーンアップメソドが他の同時スレッド動作との同期を必要としない環境において使用される。図6及びテーブル3に示すロックデータクリーンアップメソド222の擬似コードを参照すれば、好ましい実施形態において、ロックデータクリーンアップメソドは、ガーベージ整理手順の実行が開始されるたびにロックデータサブアレーが割り当てられた全てのオブジェクトをチェックするためにガーベージ整理手順により呼び出される。或いは又、ロックデータクリーンアップメソドは、ガーベージ整理手順の実行が開始されるたびに全てのオブジェクトをチェックするためにガーベージ整理手順により呼び出される。
【0040】
本発明の好ましい実施形態において、オブジェクトのロックデータサブアレーが2つのガーベージ整理サイクル間の時間周期中に未使用のままである場合に、そのオブジェクトは、最近ロックされないとみなす。より詳細には、オブジェクトの「最近ロックされない」フラグが1つのガーベージ整理サイクル間にロックデータクリーンアップ手順によって真にセットされずそして次のガーベージ整理サイクルに真のままとされる場合には、そのオブジェクトに対するロックデータサブアレー(実際には、オブジェクト特有のVFT及びオブジェクト特有のローカルロック手順)が解除される。
ロックデータクリーンアップ手順が開始すると、呼び出し側の手順(例えば、ガーベージ整理手順)により指定されたオブジェクトがローカルのオブジェクト特有のロッキング手順を有するかどうか決定される(ステップ302)。ローカルのオブジェクト特有のロッキング手順の存在は、矯正される必要のある記憶が存在することを指示し、さもなくば、手順は復帰となる。次いで、手順は、指定のオブジェクトがロックされたかどうか、又はオブジェクトが少なくとも1つの待機中スレッドを有するかどうかを決定する(ステップ304)。これらの状態は、オブジェクト特有のロッキング手順に割り当てられた記憶及びVFTがこのとき矯正されなくてよいことを指示する。というのは、それらを使用する必要がまだあるからである。この場合(ステップ304−Y)、メソドは復帰となる。
【0041】
さもなくば、オブジェクトが最近ロックされたかどうかを決定するための更に別のチェックが行われる(ステップ306)。好ましい実施形態においては、オブジェクトは、そのロックデータサブアレーの「最近ロックされない」フラグが真にセットされた場合は、最近ロックされないとみなす。オブジェクトは、ロックデータサブアレーを有し且つ「最近ロックされない」フラグが偽にセットされた(即ち、フラグがセットされない)場合は、最近ロックされたとみなす。
オブジェクトが最近ロックされた場合には、そのオブジェクトに対する「最近ロックされない」フラグが真にセットされ(ステップ308)、手順は復帰となる。ステップ308は、ロックデータサブアレーが次のガーベージ整理サイクル中に未使用のままである場合にはその時間中解除するようにオブジェクトのロックデータサブアレーを準備する。
【0042】
オブジェクトが最近ロックされない場合には、ローカルなオブジェクト特有のロッキング手順及びオブジェクト特有のVFTに割り当てられた記憶が解除される(ステップ310)。最後に、オブジェクトのメソドポインタがオブジェクトのクラスオブジェクトに対し一次VFTにセットされる(ステップ312)。
図7は、ロックデータクリーンアップ手順の別の実施形態を示す。この別の実施形態において、ロックデータクリーンアップ手順は、他のスレッドロッキング動作と同時に実行され、これにより、ロックデータクリーンアップ手順をこれらの同時プロセスと同期させることが必要となる。図7及びテーブル4に示すロックデータクリーンアップメソド222の擬似コードを参照すれば、ロックデータクリーンアップメソドは、ガーベージ整理手順の実行が開始されるたびにロックデータサブアレーが割り当てられた全てのオブジェクトをチェックするためにガーベージ整理手順により呼び出される。或いは又、ロックデータクリーンアップメソドは、ガーベージ整理手順の実行が開始されるたびに全てのオブジェクトをチェックするためにガーベージ整理手順により呼び出される。
【0043】
ロックデータクリーンアップ手順が開始されると、呼び出し側手順(例えば、ガーベージ整理手順)により指定されたオブジェクトがローカルのオブジェクト特有のロッキング手順を有するかどうかが決定される(ステップ402)。ローカルのオブジェクト特有のロッキング手順の存在は、矯正を必要とする記憶が既に割り当てられていることを指示する。それが存在しない場合には(ステップ402−N)、この手順が復帰となる。次いで、この手順は、指定のオブジェクトがロックされたかどうか又はオブジェクトが少なくとも1つの待機中スレッドを有するかどうかを決定する(ステップ404)。これらの状態は、オブジェクト特有のロッキング手順及びVFTに割り当てられた記憶がこのとき矯正される必要がないことを指示する。というのは、それらを使用する必要がまだあるからである。この状態において(ステップ404−Y)、手順は復帰となる。オブジェクトが最近ロックされたかどうかを決定する更に別のチェックが行われる(ステップ406)。好ましい実施形態においては、オブジェクトは、そのロックデータサブアレーの「最近ロックされない」フラグが真にセットされた場合には、最近ロックされないとみなされる。オブジェクトは、ロックデータサブアレーを有し且つ「最近ロックされない」フラグが偽にセットされた(即ち、フラグがセットされない)場合には、最近ロックされたとみなされる。
【0044】
オブジェクトが最近ロックされた場合には、そのオブジェクトに対する「最近ロックされない」フラグが真にセットされ(ステップ408)、そして手順が復帰となる。ステップ408は、次のガーベージ整理サイクル中にロックデータサブアレーが未使用のままである場合にはその時間中に解除するようにオブジェクトのロックデータサブアレーを準備する。
次いで、ロックデータクリーンアップメソドは、ロッキング動作を用いた他の同時実行スレッドとの同期を必要とする。この同期は、ロックされるべきオブジェクトに関連したクラスオブジェクトに対するロックを要求しそしてそれを待機しているメソドにより達成される(ステップ412)。ロックデータクリーンアップメソドの残りの部分は、このメソドの呼び出しを行うスレッドがクラスオブジェクトに対するロックを得るまで実行されない。
【0045】
クラスオブジェクトに対するロックが得られると、ロックデータクリーンアップメソドは、「最近ロックされない」フラグがセットされたかどうかを検査することにより(ステップ414)オブジェクトが最近ロックされたかどうかを再びチェックする。呼び出し側のスレッドがクラスオブジェクトのロックを待機している間に別のスレッドが指定のオブジェクトをロックすることがある点に注意されたい。この場合には、指定のオブジェクトのロックデータサブアレーを割当解除することが不適当である。というのは、指定のオブジェクトの「最近ロックされない」フラグについての第2のチェック(414)が必要になるからである。「最近ロックされない」フラグがセットされない場合には(414−N)、ロックデータクリーンアップメソドは、クラスオブジェクトのロックを解除し(ステップ420)、そして復帰となる。「最近ロックされない」フラグがまだセットされている場合には(414−Y)、ロックデータクリーンアップメソドは、オブジェクト特有のVFT及びオブジェクト特有のロッキング手順に既に割り当てられている記憶を解除する(ステップ416)。次いで、オブジェクトに対するメソドポインタが、オブジェクトのクラスオブジェクトに対し一次VFTにセットされる(ステップ418)。最後に、オブジェクトのクラスオブジェクトに対するロックが解除される(ステップ420)。
【0046】
上記の方法を使用すると、非ロック状態のオブジェクトが、オブジェクトロッキングをサポートするためのメモリオーバーヘッドを招くことはない。ロックされたオブジェクトのみに、ロックデータを記憶するためのメモリスペースが割り当てられる。
本発明は、幾つかの特定の実施形態を参照して説明したが、これは、本発明を単に示すものに過ぎず、本発明をこれに限定するものではない。特許請求の範囲に規定された本発明の精神及び範囲から逸脱せずに種々の変更がなされ得ることが当業者に明らかであろう。
例えば、「最近ロックされない」フラグ以外の他のメカニズムを用いて、オブジェクトが最近ロックされたかどうかを決定することができる。例えば、オブジェクトが非ロックであるときにその非ロックのオブジェクトのロックデータサブアレーにタイムスタンプを記憶することができ、このタイムスタンプをロックデータクリーンアップ手順によりチェックすることができる。このタイムスタンプが過去のスレッシュホールド時間量より大きい時間を表す場合に、オブジェクトは、最近ロックされないと決定される。
【0047】
上記のロックデータサブアレーは、ミューテックスを実施するのに適しているが、同じロックデータサブアレーの割当及び解除方法並びにメカニズムを使用して、更に複雑なロックデータ構造、例えば、セマフォや、通知事象に関する待機を取り扱うモニタに対する構造を割り当て及び解除することができる。
更に、上記の方法及びシステムは、ランダムアクセスメモリのようなメモリデバイス以外の種々の形式の実行可能な媒体において実行するように変更することができる。他の形式の実行可能な媒体、例えば、メモリデバイス、コンパクトディスク又はフロッピーディスクのようなコンピュータ読み取り可能な記憶媒体を使用することができるが、これに限定されるものではない。
【0048】
【表1】
Figure 0003953130
【0049】
【表2】
Figure 0003953130
【0050】
【表3】
Figure 0003953130
【0051】
【表4】
Figure 0003953130
Figure 0003953130
【0052】
【発明の効果】
本発明のコンピュータシステムは、複数のオブジェクト及び複数の手順を記憶するためのメモリを備え、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、データ構造に対するデータポインタを含み;更に、指定の非ロックオブジェクトのロック状態をロックへと切り換えるための命令を含み、指定の非ロックオブジェクトに対するローカルなオブジェクトロッキング手順を形成するためのグローバルなオブジェクトロッキング手順を備え、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定の非ロックオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するためのロックデータクリーンアップ手順を備えたコンピュータシステムにおいて、システムは、グローバルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもたないオブジェクトに対するロック要求にサービスし、ローカルオブジェクトロッキング手順を使用して、ロックデータサブアレーをもつオブジェクトに対するロック要求にサービスし、そしてロックデータクリーンアップ手順を使用して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するので、ロック可能であるが実際には決してロックされていないオブジェクトのロックデータ構造に対するメモリリソースの割当を回避するように必要時ベースでロックデータにスペースを割り当てることができ、かつ計算効率が良く、頻繁に使用されるオブジェクトに対し計算上のオーバーヘッドを本質的に課することがなく、且つロックされるオブジェクトの個数に比例する記憶リソースを使用することができる。
【0053】
本発明のコンピュータシステムを操作する方法は、複数のオブジェクト及び複数の手順をコンピュータメモリに記憶し、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、データ構造に対するデータポインタを含み;決してロックされていない指定のオブジェクトに対するロック要求にサービスするときに、指定のオブジェクトのロック状態をロックへと切り換える命令を含むグローバルなオブジェクトロッキング手順を実行して、指定のオブジェクトに対するローカルなオブジェクトロッキング手順を形成し、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定のオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、ロックデータクリーンアップ手順を実行して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除する段階を具備するので、ロック可能であるが実際には決してロックされていないオブジェクトのロックデータ構造に対するメモリリソースの割当を回避するように必要時ベースでロックデータにスペースを割り当てることができ、かつ計算効率が良く、頻繁に使用されるオブジェクトに対し計算上のオーバーヘッドを本質的に課することがなく、且つロックされるオブジェクトの個数に比例する記憶リソースを使用することができる。
【0054】
本発明のコンピュータ読み取り可能な記憶媒体は、データ処理システムで実行されるプログラムによりアクセスするためのデータを記憶するコンピュータ読み取り可能な記憶媒体において、メモリに記憶された複数のオブジェクト及び複数の手順を備え、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、媒体に記憶されたデータ構造に対するデータポインタを含み;更に、指定の非ロックオブジェクトのロック状態をロックへと切り換えるための命令を含み、指定の非ロックオブジェクトに対するローカルなオブジェクトロッキング手順を形成するためのグローバルなオブジェクトロッキング手順を備え、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定のオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するためのロックデータクリーンアップ手順を備え、システムは、グローバルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもたないオブジェクトに対するロック要求にサービスし、ローカルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもつオブジェクトに対するロック要求にサービスし、そしてロックデータクリーンアップ手順を使用して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するので、ロック可能であるが実際には決してロックされていないオブジェクトのロックデータ構造に対するメモリリソースの割当を回避するように必要時ベースでロックデータにスペースを割り当てることができ、かつ計算効率が良く、頻繁に使用されるオブジェクトに対し計算上のオーバーヘッドを本質的に課することがなく、且つロックされるオブジェクトの個数に比例する記憶リソースを使用することができる。
【0055】
本発明のコンピュータ読み取り可能なモジュールは、データ処理システムにおいて、通信リンクを経て他のデータ処理システムへ送信するのに適した1組のコンピュータ読み取り可能なモジュールを備え、各々の他のデータ処理システムは、複数のオブジェクト及び複数の手順を記憶し、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、データ構造に対するデータポインタを含み、1組のモジュールは、指定の非ロックオブジェクトのロック状態をロックへと切り換えるための命令を含み、指定の非ロックオブジェクトに対するローカルなオブジェクトロッキング手順を形成するためのグローバルなオブジェクトロッキング手順を備え、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定のオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するためのロックデータクリーンアップ手順を備え、他のデータ処理システムの各々は、グローバルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもたないオブジェクトに対するロック要求にサービスし、ローカルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもつオブジェクトに対するロック要求にサービスし、そしてロックデータクリーンアップ手順を使用して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するので、ロック可能であるが実際には決してロックされていないオブジェクトのロックデータ構造に対するメモリリソースの割当を回避するように必要時ベースでロックデータにスペースを割り当てることができ、かつ計算効率が良く、頻繁に使用されるオブジェクトに対し計算上のオーバーヘッドを本質的に課することがなく、且つロックされるオブジェクトの個数に比例する記憶リソースを使用することができる。
【図面の簡単な説明】
【図1】本発明の好ましい実施形態によるコンピュータシステムのブロック図である。
【図2】本発明の好ましい実施形態においてロックデータサブアレーがまだ割り当てられていないオブジェクトに対するデータ構造を示すブロック図である。
【図3】本発明の好ましい実施形態においてロックデータサブアレーが割り当てられたオブジェクトに対するデータ構造を示すブロック図である。
【図4】本発明の好ましい実施形態においてオブジェクトをロックするための手順のフローチャートである。
【図5】本発明の好ましい実施形態においてオブジェクトをロックするための手順のフローチャートである。
【図6】ロックデータクリーンアップメソドの好ましい実施形態を示すフローチャートである。
【図7】ロックデータクリーンアップメソドの別の実施形態を示すフローチャートである。
【符号の説明】
100 分散型コンピュータシステム
102 クライエントコンピュータ
103 インターネット
104 サーバコンピュータ
105 CPU
106 通信インターフェイス
107 ユーザインターフェイス
108 メモリ
109 オペレーティングシステム
110 インターネット通信マネージャープログラム
112 バイトコードプログラムベリファイヤ
114 バイトコードプログラムインタープリター
116 クラスローダ
120 クラス保存容器
122 オブジェクトクラス
124 オブジェクト保存容器
126 オブジェクト

Claims (10)

  1. 複数のオブジェクト及び複数の手順を記憶するためのメモリを備え、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、データ構造に対するデータポインタを含み;更に、指定の非ロックオブジェクトのロック状態をロックへと切り換えるための命令を含み、前記指定の非ロックオブジェクトに対するローカルなオブジェクトロッキング手順を形成するためのグローバルなオブジェクトロッキング手順を備え、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、指定の非ロックオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、指定のオブジェクトのローカルオブジェクトロッキング手順を解除するためのロックデータクリーンアップ手順を備えたコンピュータシステムにおいて、前記システムは、前記グローバルなオブジェクトロッキング手順を使用して、ロックデータサブアレーをもたないオブジェクトに対するロック要求にサービスし、前記ローカルオブジェクトロッキング手順を使用して、ロックデータサブアレーをもつオブジェクトに対するロック要求にサービスし、かつ前記ロックデータクリーンアップ手順を使用して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除することを特徴とするコンピュータシステム。
  2. 最近ロックのロック状態をもたない各々の記憶されたオブジェクトは、前記グローバルなオブジェクトロッキング手順を含む前記手順のサブセットに対するメソドポインタを含み、最近ロックのロック状態をもつ各々の記憶されたオブジェクトは、前記ローカルなオブジェクトロッキング手順を含む前記手順のサブセットに対するメソドポインタを含み、前記グローバルなオブジェクトロッキング手順は、前記ローカルなオブジェクトロッキング手順を含む前記手順の前記サブセットを指すように前記指定のオブジェクトのメソドポインタを更新する命令を含む請求項1に記載のコンピュータシステム。
  3. ロックのロック状態を決してもっていない各々の記憶されたオブジェクトは、前記グローバルなオブジェクトロッキング手順を含む前記手順のサブセットに対するメソドポインタを含み、ロックのロック状態をもつ各々の記憶されたオブジェクトは、前記ローカルなオブジェクトロッキング手順を含む前記手順のサブセットに対するメソドポインタを含み、前記グローバルなオブジェクトロッキング手順は、前記ローカルなオブジェクトロッキング手順を含む前記手順の前記サブセットを指すように前記指定のオブジェクトのメソドポインタを更新する命令を含み、前記ロックデータクリーンアップ手順は、前記グローバルなオブジェクトロッキング手順を含む前記手順の前記サブセットを指すように前記指定のオブジェクトのメソドポインタを変更する命令を含む請求項1に記載のコンピュータシステム。
  4. 前記メモリは、更に、1組のオブジェクトクラスを記憶し、各オブジェクトクラスは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、前記グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含む一次仮想ファンクションテーブル(VFT)を含み、最近ロックのロック状態をもたない前記記憶されたオブジェクトの各々は、前記オブジェクトクラスの対応する1つについて前記一次VFTをレファレンスするメソドポインタを含み、ロックのロック状態をもつ前記記憶されたオブジェクトの各々に対し、前記ローカルなオブジェクトロッキング手順をレファレンスするポインタを含むローカルな仮想ファンクションテーブル(VFT)があり、前記グローバルなオブジェクトロッキング手順は、指定のオブジェクトに対し前記ローカルVFTをレファレンスするように前記指定のオブジェクトのメソドポインタを更新する命令を含む請求項1に記載のコンピュータシステム。
  5. 前記メモリは、更に、1組のオブジェクトクラスを記憶し、各オブジェクトクラスは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、前記グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含む一次仮想ファンクションテーブル(VFT)を含み、ロックのロック状態を決してもっていない前記記憶されたオブジェクトの各々は、前記オブジェクトクラスの対応する1つについて前記一次VFTをレファレンスするメソドポインタを含み、ロックのロック状態をもつ前記記憶されたオブジェクトの各々に対し、前記ローカルなオブジェクトロッキング手順をレファレンスするポインタを含むローカルな仮想ファンクションテーブル(VFT)があり、前記グローバルなオブジェクトロッキング手順は、指定のオブジェクトに対し前記ローカルVFTをレファレンスするように前記指定のオブジェクトのメソドポインタを更新する命令を含み、前記ロックデータクリーンアップ手順は、前記指定のオブジェクトに対応するオブジェクトクラスに対し前記一次VFTをレファレンスするように前記指定のオブジェクトのメソドポインタを変更する命令を含む請求項1に記載のコンピュータシステム。
  6. 複数のオブジェクト及び複数の手順をコンピュータメモリに記憶し、各々の記憶されたオブジェクトは、ロック及び非ロックより成る組から選択されたロック状態を有し、各々の記憶されたオブジェクトは、データ構造に対するデータポインタを含み;してロックされていない指定のオブジェクトに対するロック要求にサービスするときに、指定のオブジェクトのロック状態をロックへと切り換える命令を含むグローバルなオブジェクトロッキング手順を実行して、前記指定のオブジェクトに対するローカルなオブジェクトロッキング手順を形成し、各々のローカルなオブジェクトロッキング手順は、ロックデータを記憶するためのロックデータサブアレーと、前記指定のオブジェクトの記憶されたロックデータを更新するための命令とを含み;更に、予め定められた解除基準を満足するときに、ロックデータクリーンアップ手順を実行して、指定のオブジェクトのローカルオブジェクトロッキング手順を解除する、という段階を備えたことを特徴とするコンピュータシステムを操作する方法。
  7. ロックのロック状態を最近もたない各々の記憶されたオブジェクトに、前記グローバルなオブジェクトのロッキング手順を含む前記手順のサブセットに対するメソドポインタを組み合わせ、ロックのロック状態を最近もつ各々の記憶されたオブジェクトに、前記ローカルなオブジェクトのロッキング手順を含む前記手順のサブセットに対するメソドポインタを組み合わせ、グローバルなオブジェクトのロッキング手順を実行して、非ロックオブジェクトに対するロック要求にサービスするときに、前記ローカルなオブジェクトのロッキング手順を含む前記手順の前記サブセットを指すように前記指定のオブジェクトのメソドポインタを更新する請求項6に記載の方法。
  8. ロックのロック状態を決してもっていない各々の記憶されたオブジェクトに、前記グローバルなオブジェクトロッキング手順を含む前記手順のサブセットに対するメソドポインタを組み合わせ、ロックのロック状態をもつ各々の記憶されたオブジェクトに、前記ローカルなオブジェクトロッキング手順を含む前記手順のサブセットに対するメソドポインタを組み合わせ、グローバルなオブジェクトロッキング手順を実行して、非ロックオブジェクトに対するロック要求にサービスするときに、前記ローカルなオブジェクトロッキング手順を含む前記手順の前記サブセットを指すように前記指定のオブジェクトのメソドポインタを更新し、前記ロックデータクリーンアップ手順を実行するときに、前記グローバルなオブジェクトロッキング手順を含む前記手順の前記サブセットを指すように前記指定のオブジェクトのメソドポインタを変更する請求項6に記載の方法。
  9. 前記コンピュータメモリに1組のオブジェクトクラスを記憶し、各々のオブジェクトクラスは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、前記グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含む一次仮想ファンクションテーブル(VFT)を含み、ロックのロック状態を最近もたない前記記憶されたオブジェクトの各々に、前記オブジェクトクラスの対応する1つについて前記一次VFTをレファレンスするメソドポインタを組み合わせ、ロックのロック状態をもつ前記記憶されたオブジェクトの各々に対して、前記ローカルなオブジェクトロッキング手順をレファレンスするポインタを含むローカルな仮想ファンクションテーブル(VFT)を前記コンピュータメモリに記憶し、前記グローバルなオブジェクトロッキング手順を実行するときに、指定のオブジェクトに対し前記ローカルVFTをレファレンスするように前記指定のオブジェクトのメソドポインタを更新する請求項6に記載の方法。
  10. 前記コンピュータメモリに1組のオブジェクトクラスを記憶し、各々のオブジェクトクラスは、そのオブジェクトクラスに関連した1組のメソドをレファレンスするポインタと、前記グローバルなオブジェクトロッキング手順をレファレンスするポインタとを含んだ一次仮想ファンクションテーブル(VFT)を含み、ロックのロック状態を決してもっていない前記記憶されたオブジェクトの各々に、前記オブジェクトクラスの対応する1つについて前記一次VFTをレファレンスするメソドポインタを組み合わせ、ロックのロック状態をもつ前記記憶されたオブジェクトの各々に対して、前記ローカルなオブジェクトロッキング手順をレファレンスするポインタを含むローカルな仮想ファンクションテーブル(VFT)を前記コンピュータメモリに記憶し、前記グローバルなオブジェクトロッキング手順を実行するときに、指定のオブジェクトに対し前記ローカルVFTをレファレンスするように前記指定のオブジェクトのメソドポインタを更新し、前記ロックデータクリーンアップ手順を実行するときに、指定のオブジェクトに対応するオブジェクトクラスに対し前記一次VFTをレファレンスするように前記指定のオブジェクトのメソドポインタを変更する請求項6に記載の方法。
JP32889896A 1995-12-08 1996-12-09 スペース効率の良いオブジェクト・ロッキング・システム及び方法 Expired - Lifetime JP3953130B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/569753 1995-12-08
US08/569,753 US5701470A (en) 1995-12-08 1995-12-08 System and method for space efficient object locking using a data subarray and pointers
US08/640,244 US5761670A (en) 1995-12-08 1996-04-30 System and method for space efficient object locking using global and local locks
US08/640244 1996-04-30

Publications (2)

Publication Number Publication Date
JPH1049380A JPH1049380A (ja) 1998-02-20
JP3953130B2 true JP3953130B2 (ja) 2007-08-08

Family

ID=27075139

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32889896A Expired - Lifetime JP3953130B2 (ja) 1995-12-08 1996-12-09 スペース効率の良いオブジェクト・ロッキング・システム及び方法

Country Status (10)

Country Link
US (1) US5761670A (ja)
EP (1) EP0783150B1 (ja)
JP (1) JP3953130B2 (ja)
KR (1) KR100437704B1 (ja)
CN (1) CN1096642C (ja)
AU (1) AU707393B2 (ja)
CA (1) CA2191824C (ja)
DE (1) DE69626377T2 (ja)
HK (1) HK1002084A1 (ja)
SG (1) SG75107A1 (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862376A (en) * 1996-06-24 1999-01-19 Sun Microsystems, Inc. System and method for space and time efficient object locking
US6718550B1 (en) 1996-06-26 2004-04-06 Sun Microsystems, Inc. Method and apparatus for improving the performance of object invocation
US6289410B1 (en) * 1996-07-18 2001-09-11 Electronic Data Systems Corporation Method and system for maintaining consistency of shared objects based upon instance variable locking
US5974421A (en) * 1996-12-23 1999-10-26 Microsoft Corporation Cache-efficient object loader
US5930807A (en) * 1997-04-23 1999-07-27 Sun Microsystems Apparatus and method for fast filtering read and write barrier operations in garbage collection system
US6078994A (en) * 1997-05-30 2000-06-20 Oracle Corporation System for maintaining a shared cache in a multi-threaded computer environment
US6574720B1 (en) 1997-05-30 2003-06-03 Oracle International Corporation System for maintaining a buffer pool
US6324623B1 (en) 1997-05-30 2001-11-27 Oracle Corporation Computing system for implementing a shared cache
US5946711A (en) * 1997-05-30 1999-08-31 Oracle Corporation System for locking data in a shared cache
GB2327134B (en) * 1997-07-08 2002-04-03 Ibm Apparatus,method and computer program for providing arbitrary locking requesters for controlling concurrent access to server resources
GB9717715D0 (en) * 1997-08-22 1997-10-29 Philips Electronics Nv Data processor with localised memory reclamation
US6438616B1 (en) 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US6249803B1 (en) 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6510460B1 (en) * 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6105057A (en) * 1998-01-28 2000-08-15 Ericsson Inc. Method and apparatus for manipulating mutexes on network assets
US7159222B1 (en) * 1998-09-09 2007-01-02 Microsoft Corporation Highly componentized system architecture with object mutation
US8434099B2 (en) 1998-09-09 2013-04-30 Microsoft Corporation Efficient linking and loading for late binding and platform retargeting
US6289360B1 (en) * 1998-10-07 2001-09-11 International Business Machines Corporation Method and system for eliminating synchronization between sweep and allocate in a concurrent garbage collector
US6754898B2 (en) * 1998-12-08 2004-06-22 Sun Microsystems, Inc. Method and apparatus for converting a lightweight monitor to a heavyweight monitor
GB2345160B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
GB2345159B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
US6957436B1 (en) * 1999-01-29 2005-10-18 Iona Technologies, Plc Method and system for multi-threaded object loading and unloading
US6330714B1 (en) * 1999-02-08 2001-12-11 International Business Machines Corporation Method and computer program product for implementing redundant lock avoidance
US6691304B1 (en) * 1999-02-25 2004-02-10 Sun Microsystems, Inc. Monitor conversion in a multi-threaded computer system
JP3756352B2 (ja) * 1999-06-29 2006-03-15 富士通株式会社 コンパイラ装置およびコンパイラを記録したコンピュータ読み取り可能な記録媒体
US6401103B1 (en) 1999-08-06 2002-06-04 International Business Machines Corporation Apparatus, method, and article of manufacture for client-side optimistic locking in a stateless environment
GB9921719D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Thread locking
US7188344B1 (en) * 1999-12-21 2007-03-06 Unisys Corporation Architecture for a read/write thread lock
JP3611295B2 (ja) * 2000-03-09 2005-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステム、メモリ管理方法及び記憶媒体
TW469452B (en) * 2000-04-27 2001-12-21 Darfon Electronics Corp Transformer
US6792601B1 (en) 2000-05-18 2004-09-14 International Business Machines Corporation Multiple mode object locking method and system
US7086053B2 (en) * 2000-06-12 2006-08-01 Sun Microsystems, Inc. Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
FR2810755B1 (fr) * 2000-06-27 2003-01-17 Cit Alcatel Procede de gestion d'informations en java
EP1202172A1 (en) * 2000-10-31 2002-05-02 Universiteit Gent Topological, on-the-fly classification of objects into a global set and local sets
US7360205B2 (en) * 2001-02-09 2008-04-15 International Business Machines Corporation Minimizing interaction costs among components of computer programs
GB0104764D0 (en) * 2001-02-24 2001-04-18 Ibm Method apparatus and computer program product for controlling access to a res urce
US6892200B2 (en) * 2001-11-13 2005-05-10 America Online, Incorporated Javascript engine
US7571439B1 (en) * 2002-05-31 2009-08-04 Teradata Us, Inc. Synchronizing access to global resources
US6915392B2 (en) * 2002-07-12 2005-07-05 Intel Corporation Optimizing memory usage by vtable cloning
US7036125B2 (en) * 2002-08-13 2006-04-25 International Business Machines Corporation Eliminating memory corruption when performing tree functions on multiple threads
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
US20060212474A1 (en) * 2005-03-16 2006-09-21 Muzzy Lane Software Incorporated Specifying application content using data-driven systems
US7752620B2 (en) * 2005-06-06 2010-07-06 International Business Machines Corporation Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
US20070162475A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
US7756911B2 (en) * 2006-06-09 2010-07-13 International Business Machines Corporation Method and system for executing a task and medium storing a program therefor
US7913236B2 (en) * 2006-09-29 2011-03-22 Intel Corporation Method and apparatus for performing dynamic optimization for software transactional memory
US8595202B2 (en) * 2007-10-03 2013-11-26 Siemens Aktiengesellschaft Method and system for intra-document object locking in collaborative authoring
US20100057741A1 (en) * 2008-08-29 2010-03-04 International Business Management Productions Software resource access utilizing multiple lock tables
US8458146B2 (en) * 2008-09-11 2013-06-04 International Business Machines Corporation Accessing data remotely
US8683583B2 (en) * 2010-12-02 2014-03-25 Microsoft Corporation Using virtual table protections to prevent the exploitation of object corruption vulnerabilities
JP2013097623A (ja) * 2011-11-01 2013-05-20 Fujitsu Ltd 排他制御プログラム、排他制御装置および排他制御方法
US9250976B2 (en) * 2012-10-19 2016-02-02 International Business Machines Corporation Tiered locking of resources
WO2016098142A1 (ja) * 2014-12-18 2016-06-23 三菱電機株式会社 産業コントローラおよび産業コントローラシステム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
US4941083A (en) * 1987-05-01 1990-07-10 Digital Equipment Corporation Method and apparatus for initiating interlock read transactions on a multiprocessor computer system
US5274809A (en) * 1988-05-26 1993-12-28 Hitachi, Ltd. Task execution control method for a multiprocessor system with enhanced post/wait procedure
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5175837A (en) * 1989-02-03 1992-12-29 Digital Equipment Corporation Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits
US5129083A (en) * 1989-06-29 1992-07-07 Digital Equipment Corporation Conditional object creating system having different object pointers for accessing a set of data structure objects
JP2699600B2 (ja) * 1990-01-30 1998-01-19 日本電気株式会社 資源の排他制御方式
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
JPH05120040A (ja) * 1991-10-28 1993-05-18 Yokogawa Electric Corp コンピユータシステム
US5596754A (en) * 1992-10-29 1997-01-21 Digital Equipment Corporation Method for performing private lock management
US5603030A (en) * 1993-01-07 1997-02-11 Microsoft Corporation Method and system for destruction of objects using multiple destructor functions in an object-oriented computer system
JP2711216B2 (ja) * 1993-01-26 1998-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション オブジェクトを管理するためのシステム及び方法
US5701470A (en) * 1995-12-08 1997-12-23 Sun Microsystems, Inc. System and method for space efficient object locking using a data subarray and pointers

Also Published As

Publication number Publication date
HK1002084A1 (en) 1998-07-31
JPH1049380A (ja) 1998-02-20
KR970049519A (ko) 1997-07-29
CN1160247A (zh) 1997-09-24
EP0783150A3 (en) 1998-04-15
AU707393B2 (en) 1999-07-08
KR100437704B1 (ko) 2004-08-02
CA2191824C (en) 2003-01-21
EP0783150B1 (en) 2003-02-26
CN1096642C (zh) 2002-12-18
DE69626377D1 (de) 2003-04-03
US5761670A (en) 1998-06-02
CA2191824A1 (en) 1997-06-09
EP0783150A2 (en) 1997-07-09
SG75107A1 (en) 2000-09-19
DE69626377T2 (de) 2003-12-04
AU7402096A (en) 1997-06-12

Similar Documents

Publication Publication Date Title
JP3953130B2 (ja) スペース効率の良いオブジェクト・ロッキング・システム及び方法
US5701470A (en) System and method for space efficient object locking using a data subarray and pointers
US5862376A (en) System and method for space and time efficient object locking
US5875461A (en) Method of synchronizing one of the objects with one of the threads at a time
US6546443B1 (en) Concurrency-safe reader-writer lock with time out support
US6622155B1 (en) Distributed monitor concurrency control
US6247025B1 (en) Locking and unlocking mechanism for controlling concurrent access to objects
US7908441B2 (en) Value recycling facility for multithreaded computations
US5321841A (en) System for determining the rights of object access for a server process by combining them with the rights of the client process
US7788314B2 (en) Multi-computer distributed processing with replicated local memory exclusive read and write and network value update propagation
US6510437B1 (en) Method and apparatus for concurrent thread synchronization
US8112751B2 (en) Executing tasks through multiple processors that process different portions of a replicable task
US7299242B2 (en) Single-word lock-free reference counting
US5797004A (en) System and method for caching and allocating thread synchronization constructs
US6161147A (en) Methods and apparatus for managing objects and processes in a distributed object operating environment
US7945911B1 (en) Barrier synchronization method and apparatus for work-stealing threads
KR20060004919A (ko) 공유형 리소스의 액세스 방법과 그 장치 및 프로그램 제품
JPH07191944A (ja) 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
IL178527A (en) Modified computer architecture with coordinated objects
JP4620871B2 (ja) マルチスレッドコンピュータシステムにおけるモニタ変換
US20010034753A1 (en) Priority resource allocation in programming environments
US6487652B1 (en) Method and apparatus for speculatively locking objects in an object-based system
US6662364B1 (en) System and method for reducing synchronization overhead in multithreaded code
US6349322B1 (en) Fast synchronization for programs written in the JAVA programming language
Ellis et al. Algorithms for parallel memory allocation

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060601

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070110

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070424

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110511

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110511

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120511

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130511

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130511

Year of fee payment: 6

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