JP4176857B2 - リファレンスされたオブジェクトを管理するための3状態リファレンスの使用 - Google Patents

リファレンスされたオブジェクトを管理するための3状態リファレンスの使用 Download PDF

Info

Publication number
JP4176857B2
JP4176857B2 JP36982497A JP36982497A JP4176857B2 JP 4176857 B2 JP4176857 B2 JP 4176857B2 JP 36982497 A JP36982497 A JP 36982497A JP 36982497 A JP36982497 A JP 36982497A JP 4176857 B2 JP4176857 B2 JP 4176857B2
Authority
JP
Japan
Prior art keywords
pointer
smart
referenced
direct
loaded
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
JP36982497A
Other languages
English (en)
Other versions
JPH10254756A (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JPH10254756A publication Critical patent/JPH10254756A/ja
Application granted granted Critical
Publication of JP4176857B2 publication Critical patent/JP4176857B2/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
    • 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
    • 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/4493Object persistence
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、オブジェクト参照の分野に関し、特に、最適化オブジェクト参照の分野に関する。
【0002】
【従来の技術】
CAD/CAMアプリケーションのような、幾つかのコンピュータアプリケーションは典型的には、単一のコンピュータシステムを使用して、若しくは、多数の接続されたコンピュータシステムを使用して、大幅な時間にわたってデータオブジェクトの大きなセット(「objects 」)を構築し、維持し、アクセスし、修正する。かかるオブジェクトにとってオブジェクトセットの他のオブジェクトを参照することは一般的である。かかるアプリケーションは、これらのオブジェクトを維持するために持続的なオブジェクトシステムをしばしば使用し、それらをどんな接続されたコンピュータシステムにもアクセスできるようにさせ且つ修正することができるようにする。持続性オブジェクトシステムは、データベース又はファイルシステムのようなオブジェクトサーバに不揮発性の仕方で持続性オブジェクトをストアすることによって、持続性オブジェクトの継続的な使用可能性を保証しながら、コンピュータシステムにおけるプログラムの実行によりアクセスされ且つ操作されるべきコンピュータシステムのメインメモリに持続性オブジェクトを移動させることができる。
【0003】
コンピュータシステムにおいて実行中のプログラムが、そのメインメモリにおけるオブジェクトに対するアクセス及び修正を終えるとき、持続性オブジェクトシステムは、オブジェクトをオブジェクトサーバに転送し、該オブジェクトを不揮発性の仕方でストアする。転送されたオブジェクトは、オブジェクトセット内の他のオブジェクトに対する参照を含むことができる。転送の時点においては、これらの参照は、一般的に、被参照オブジェクトがロードされている同じコンピュータシステムのメインメモリ内のアドレスについてのポインタを各々有する。かかる参照は、ポインタによって反映されていないコンピュータシステムの識別と、コンピュータシステムのメインメモリの特定のコンテンツとに依存するものであり、これらは、プログラムが転送されたオブジェクトを次回にオブジェクトサーバから転送するときには完全に異なったものとなり得る。オブジェクトサーバが、別のコンピュータシステムのプログラムに対してメインメモリポインタを含む形態のオブジェクトを後で提供するならば、オブジェクトのメインメモリポインタは無効となる。それゆえ、オブジェクトをオブジェクトサーバに転送するプロセスの部分として、持続性オブジェクトシステムは、「パッシベーション」と呼ばれるプロセスを実施する。パッシベーションは、該当するコンピュータシステムのメインメモリ内の、被参照オブジェクトを探索するのに使用されるパッシベーションされたオブジェクトでのメインメモリポインタの参照を、オブジェクトサーバ内の被参照オブジェクトを探索するための持続性オブジェクトシステムが使用する持続性ポインタによって置き換えることを含む。(持続性ポインタはまた、「オブジェクト識別子」(OIDs)と呼ばれ、汎用一意性識別子(GUID)データ構造を使用して表わし得る。)こういう方法で、持続性ポインタを有するメインメモリポインタを置き換えることは、メインメモリポインタを「アンスウィズリング(unswizzling )」すると呼ばれる。
【0004】
プログラムが、持続性オブジェクトシステムを後で使用して、オブジェクトサーバに転送されたオブジェクトにアクセスしたり、該オブジェクトを修正したりするときには、持続性オブジェクトシステムは、オブジェクトをオブジェクトサーバから、プログラムが「デパッシベーション」プロセスを実行し、完遂しているコンピュータシステムのメインメモリに転送する。デパッシベーションは、プログラムが、持続性ポインタによって参照された被参照オブジェクトにアクセスし、該オブジェクトを修正するためにプログラムによって一般的に使用することができない転送されたオブジェクトにおける持続性ポインタを、被参照オブジェクトにアクセスし、該オブジェクトを修正するために使用することができるメインメモリポインタによって、置換することを含む。このようにメインメモリポインタを備えた持続性ポインタを置換することは、持続性ポインタを「スウィズリング」すると呼ばれる。
【0005】
在来のスウィズリング技術は、各々が著しい不利益を有する3つの範疇に分類分けされる。ハードウェアスウィズリングは、被参照オブジェクトに対するメインメモリポインタが保護されていないオブジェクトを使用するプログラムによって解かれるとき、被参照オブジェクトをロードするために、存在する仮想メモリ管理システムのページングシステムを使用する。仮想メモリマネージャは、実際のメインメモリより大きいメインメモリアドレス空間を固定長のページに分ける。メインメモリ空間におけるいくらかのページはメインメモリに実際に表わされているが、他は「ページアウト」である。プログラムが、ポインタをページアウトされたページにデリファレンスするのを試みるとき、その試みは「ページフォルト」と呼ばれるハードウェア割り込みを生成する。ページフォルトは、(殆どの場合、別のページをページアウトすることにより)メインメモリにおけるフォルトページのためのメモリ空間を見つけ、フォルトページをディスクからメインメモリにロードし、フォルトページをページ・インとマークし、デリファレンスオペレーションを続けさせることによって、フォルトページを「ページ・イン」する割り込みサービスルーチンによって処理される。
【0006】
ハードウェアスウィズリング技術によれば、保護されていないオブジェクトがロードされたとき、各持続性ポインタは、ページアウトとマークされた「ゴーストページ」へのメインメモリポインタにより置換される。プログラムがメインメモリポインタをゴーストページに対してデリファレンスするように試みたとき、ページフォルトが生成され、修正されたページフォルト割り込み処理ルーチンは、被参照オブジェクトをその持続性ポインタを使用してオブジェクトサーバからロードし、ページ・インされたものとしてゴーストページをマークし、デリファレンスオペレーションを続けさせる。次いで、メインメモリポインタをデリファレンスする試みが更なる遅延なしに続けられる。ハードウェアスウィズリングは、被参照オブジェクトが実際にアクセスされるまでロードされないという利点を有する。ハードウェアスウィズリングはまた、2つの重要な欠点を有している。即ち、(1) ページフォルト及びページングはあるプロセッサにおいておおよそ2000命令を実行するのと同じだけ要する高価な処理である。(2) 仮想メモリ管理システムによって使用される固定されたページサイズは可変サイズオブジェクトをストアするのに不適切であり、それにより、ロードされたオブジェクトより大きなメインメモリのセクションをロードされたオブジェクトに充てられるようにし、割り当てられたページのサイズを超えるように時間をかけてそのサイズに成長するオブジェクトを収容することができない。
【0007】
間接的ソフトウェアスウィズリングは、保護されていないオブジェクトにおけるポインタと被参照オブジェクトとの間に間接のレベルを提供するための「常駐オブジェクト記述子」と呼ばれる記憶場所を使用する。保護されていないオブジェクトがロードされた後、保護されていないオブジェクトにおける各持続性ポインタは、常駐オブジェクト記述子に移動され、常駐オブジェクト記述子に対するポインタと置き換えられる。最初に常駐オブジェクト記述子に対するポインタにデリファレンスすることにより、被参照オブジェクトをロードすることができ、メインメモリポインタをオブジェクト記述子におけるロードされた被参照オブジェクトにストアする。次いで、常駐オブジェクト記述子におけるロードされた被参照オブジェクトに対するメインメモリポインタは、被参照オブジェクトへのアクセスを提供するようにデリファレンスされる。常駐オブジェクト記述子に対するポインタが続いてデリファレンスされたとき、常駐オブジェクト記述子におけるロードされた被参照オブジェクトに対するメインメモリポインタは、被参照オブジェクトにアクセスするのに使用される。ハードウェアスウィズリングと同様に、間接的ソフトウェアスウィズリングは、被参照オブジェクトが実際にアクセスされるまで、ロードされないという利点を有する。更に、被参照オブジェクトは、保護されていないオブジェクトにストアされた常駐オブジェクト記述子に対するポインタを無効にすることなくアンロードされ得るか若しくは再配置され得る。しかし、間接的ソフトウェアスウィズリングはまた、著しい欠点を有する。即ち、プログラムが、被参照オブジェクトにアクセスする度に要求される2つのメインメモリポインタ(初めに保護されていないオブジェクト、2番目に常駐オブジェクト記述子)へのデリファレンスは、単一のメインメインメモリポインタをデリファレンスするコストの2倍かかり、若しくは、あるプロセッサにおける90命令を実行するのと同じだけの時間を必要とする。
【0008】
直接的ソフトウェアスウィズリングは、各持続性ポインタを被参照オブジェクトに対して直接にメインメモリポインタと置換する。このアプローチは間接的なソフトウェアスウィズリングによって受ける2重間接の余分な時間コストを克服するが、それは、保護されていないオブジェクトにストアされた直接的なメインメモリポインタを無効にする被参照オブジェクトをアンロードするか若しくは再配置するという欠点を有する。このことにより、保護されていないオブジェクトによってリファレンスされているオブジェクトからメモリを再配置又は再生するための努力をすることが困難若しくは不可能である。
在来のスウィズリング技術の欠点であったとしても、スウィズリング技術が被参照オブジェクトをアンロード及び再配置することを容易にする低い時間コストを有しているならば、著しく有用であろう。
【0009】
【課題を解決するための手段】
本発明は、被参照オブジェクトへのアクセスを管理するために3状態リファレンスを使用する。本発明による好ましい実施形態では、持続性ポインタスウィズリング機能(「本機能」)は、被参照オブジェクトをオブジェクトサーバから得るのに使用できる持続性ポインタを、スマートポインタで置換する。スマートポインタは、被参照オブジェクトがロードされているメインメモリの位置を直接指し示し得るか、若しくは、間接的なスロットを介して、被参照オブジェクトを直接指し示し得る。スマートポインタが初めにデリファレンスされたとき、スマートポインタは間接的なスロットへのポインタを包含する。この点で、間接的なスロットの持続性ポインタは、被参照オブジェクトをオブジェクトサーバからメインメモリ内へロードするのに使用される。被参照オブジェクトがロードされた後、ロードされたオブジェクトへのポインタは、間接的なスロットとスマートポインタとの両方にストアされる。スマートポインタが続いてデリファレンスされたとき、それは、間接的なスロットを使用しないで被参照オブジェクトへ直接アクセスするように直接デリファレンスされた、ロードされたオブジェクトへの直接的なポインタを含む。
【0010】
ロードされた被参照オブジェクトを「アイドル状態」にするために、本機能は、スマートポインタにおける直接的なポインタを間接的なスロットへのポインタで置換する。ロードされた被参照オブジェクトがアイドル状態にあるとき、本機能は、間接的なスロットにおけるポインタを単に適応することによって、スマートポインタを無効にすることなくメインメモリにそれを再配置し得る。被参照オブジェクトがアイドル状態にあるとき、本機能はまた、被参照オブジェクトをメインメモリから除去し得る。本機能が、被参照オブジェクトをメインメモリから除去するとき、それは間接的なスロットにおける被参照オブジェクトに関する持続性ポインタをストアするので、スマートポインタの引き続きのデリファレンスによって、被参照オブジェクトをリロードさせる。本機能のこれらの特徴は、使用されていないメモリを再生するための不要部分の整理スキームで用いられるのが好ましく、被参照オブジェクトは、最近使用されていないときアイドル状態にされ、メインメモリから除去できる状態になる。
【0011】
【発明の実施の形態】
本発明は、被参照オブジェクトへのアクセスを管理するための3状態リファレンスを使用する。本発明によれば、持続性ポインタスウィズリング機能(「本機能」)は、参照側オブジェクトにおいて、アンロードされた被参照オブジェクトに対する持続性ポインタを被参照オブジェクトに対するスマートポインタと置換する。
好ましい実施形態では、参照側オブジェクトがロードされたとき、本機能は、持続性ポインタを参照側オブジェクトから間接的なスロットのテーブルにおける間接的なスロットに最初に移動させ、これが持続性ポインタであることを示す指示と一緒にストアする。本機能はまた、この点で、参照側オブジェクトにおける持続性ポインタを、間接的なスロットに対するポインタを含み且つ被参照オブジェクトに対する直接的なポインタを含まないことを指示するスマートポインタと置換する。間接的なスロットに対するポインタを包含するスマートポインタは、被参照オブジェクトのための「間接的なリファレンス」と言われる。
【0012】
参照側オブジェクトのスマートポインタが後でデリファレンスされるとき、デリファレンスオペレーションは、スマートポインタに包含されるポインタが被参照オブジェクトに対する直接的なポインタでないということを判断し、中央データ構造の持続性ポインタにアクセスするために該ポインタを使用する。次いで、本機能は、被参照オブジェクトを都合の良いアドレスでメインメモリにロードするために持続性ポインタを使用する。本機能は、被参照オブジェクトに対する直接的なポインタであることを指示して、参照側オブジェクトにおける参照と間接的なスロットとの両方に、このアドレスをストアする。被参照オブジェクトへの次のアクセスは、被参照オブジェクトをリロードすること無く又はスロットテーブルにアクセスすること無く、参照側オブジェクトにストアされた直接的なポインタを直接使用することによって迅速に進む。別の参照側オブジェクトが同じ被参照オブジェクトに対するリファレンスを含む場合、これらの参照は、第1の参照側オブジェクトの被参照オブジェクトに対するリファレンスと同様に、同じ間接的なスロットへのポインタと置換される。間接的なスロットに対するこれら他のポインタがデリファレンスされるとき、本機能は、ロードされた被参照オブジェクトへの直接的なポインタを包含する間接的なスロットを求め、被参照オブジェクトをリロードすること無くロードされた被参照オブジェクトに直接アクセスするように、直接的なポインタを他の参照側オブジェクトにコピーする。
【0013】
被参照オブジェクトの使用が終わるとき、本発明は好ましくは、被参照オブジェクトに対してオブジェクトをリファレンスするときにいかなる直接的なポインタを中央データ構造スロットへのポインタで置換することによって、被参照オブジェクトを直接参照するように被参照オブジェクトを直接参照するいかなるスマートポインタを変換する。このことにより被参照オブジェクトを、参照側オブジェクトにおけるいかなるスマートポインタを更新する必要なしに、中央データ構造スロットにおけるポインタを単に更新することによって必要なときにプライマリメモリに後で再配置することができる。また、被参照オブジェクトは、それらに対するリファレンスのどれもが直接的でないときに、安全に自由になりうる。被参照オブジェクトは、被参照オブジェクトの別のユーザによるリクエストに応じてその被参照オブジェクトを排他的に使用するように自由にされることができ、若しくは、イニシアティブに応じて使用されていないオブジェクトによって占有されたメモリの部分を再生するように自由にされ得る。
【0014】
図1は、本機能が好ましく作動する汎用コンピュータシステムのハイレベルブロック図である。この図はコンピュータシステム100にアクセスするオブジェクトを示す。コンピュータシステム100にアクセスするオブジェクトは、中央演算装置(CPU)110と、入力/出力デバイス120と、メインメモリ130とを有する。入力/出力デバイス120の間には、ハードディスクドライブのような記憶装置121がある。入力/出力デバイス120はまた、コンピュータシステムにアクセスするオブジェクトが他のコンピュータシステムとデータを交換することができるネットワークコネクション122を含む。入力/出力デバイス120は、CD−ROMのようなコンピュータ読取可能媒体で提供される本機能を含むソフトウェア製品をインストールするのに使用することができるリムーバブルメディアドライブ123を更に含む。メインメモリ130は、オブジェクトのセットを持続的に保持するための持続性オブジェクトシステム131を包含する。スウィズリング機能132は、持続性オブジェクトシステム131に含まれており、CPU110で実行される。メインメモリ130は、スマートポインタ134を包含する保護されていないオブジェクト133を更に含む。保護されていないオブジェクト133はまた、参照側オブジェクトとしてここで議論する。メインメモリ130は、間接的なスロット136、並びに、他の間接的なスロット(図示せず)で構成されているスロットテーブル135を更に有する。スロットテーブルは、メモリマネージャによって利用されるハンドルテーブルに対応するのが好ましい。所定の時間では、メインメモリ130は、被参照オブジェクト137並びに他の被参照オブジェクト(図示せず)を更に含む。
【0015】
図1はまた、コンピュータシステム100にアクセスするオブジェクトのネットワークコネクション122が、オブジェクトサーバコンピュータシステム150のネットワークコネクション152に接続されていることも示す。オブジェクトサーバコンピュータシステム150は、不揮発性の仕方で持続性オブジェクトのセットをストアすることによって、持続性オブジェクトのセットを保持するオブジェクトサーバ153を含む。オブジェクトサーバ153は、持続性オブジェクトをオブジェクトサーバの中及び外に転送するように、持続性オブジェクトシステムの他のパスからのリクエストに応答する。オブジェクトサーバコンピュータシステム150はまた、オブジェクトサーバ153によって使用されているプロセッサ151を含む。本機能が好ましくは、上述したように構成されたコンピュータシステムで実行されるけれども、当業者は、異なる構成を有するコンピュータシステムで実行され得ることも認識するであろう。例えば、コンピュータシステムは図1に示した機能の全てを包含していなくても良く、或いは、図1に示されていない機能を包含しても良い。更に、オブジェクトサーバ153は、オブジェクトサーバコンピュータシステム150の代わりにコンピュータシステム100にアクセスするオブジェクトに配置され得る。
【0016】
図2は、持続性オブジェクトをロードし且つ保護しないように、好ましくは本機能によって行われるステップを示す。本機能は、アプリケーションからの直接的なリクエストに応じて持続性オブジェクトをロードし且つ保護しないようにしうる。以下で議論するように、本機能はまた、持続性オブジェクトへのスマートポインタをデリファレンスするように、アプリケーションによる試みに応じて持続性オブジェクトをロードし且つ保護しないようにし得る。ステップ201では、本機能は、オブジェクトサーバ153(図1)からオブジェクトを得、オブジェクトをメインメモリ130にストアするために、持続性オブジェクトに関する持続性ポインタを使用する。ステップ201でロードされたオブジェクトは、他の持続性オブジェクトへの1又はそれ以上のポインタを含み得る。他のオブジェクトへのかかるポインタは一般的には、ステップ201でロードされたオブジェクトの早期パッシベーションの結果、持続性ポインタによって被参照オブジェクトをオブジェクトサーバから得るのに使用され得る持続性ポインタである。ステップ203はまた、間接的なスロットのポインタが、被参照オブジェクトへの持続性ポインタであり、デ被参照オブジェクトに直接的なメインメモリポインタではない、間接的なスロットに指示をストアするのが好ましい。
【0017】
図3は、ステップ201を実行した結果を示すメモリダイアグラムである。図3は、メインメモリ330並びにメインメモリのコンテンツの部分を示す。メインメモリには、ステップ201でロードされた参照側オブジェクト333とスロットテーブル335が示されている。スロットテーブルは、スロット336、341、342、、343及び344を含む多数のスロットを含む。ステップ201でロードされたとき、参照側オブジェクト333は1つの持続性ポインタ371を含む。
図2に戻ると、ステップ202乃至205では、本機能はロードされたオブジェクトを保護しない。本機能は、ロードされたオブジェクトに包含される各持続性ポインタに関してステップ202乃至205をループする。ステップ203では、本機能は、持続性ポインタをスロットテーブルの空の間接的なスロットにコピーすることにより持続性ポインタによって被参照オブジェクトにスロットテーブル135(図1)の間接的スロットを割り当てる。
【0018】
図4は、ステップ203及び204を実行した結果を示すメモリダイアグラムである。持続性ポインタ371(図3)が参照側オブジェクト333から、ステップ202によってスロットテーブル435の空のスロット436にコピーされていることが図4から分かる。しかしながら、スロットテーブルの間接的なスロットが被参照オブジェクトに既に割り当てられているならば、本機能は203において別の間接的なスロットを被参照オブジェクトに割り当てないのが好ましい。本機能は好ましくは、スロットテーブルのスロットが、被参照オブジェクトの持続性ポインタからそれらの被参照オブジェクトに割り当てられたスロットテーブルのスロットにマップするスロットテーブルにインデックスを保持することによって被参照オブジェクトに既に割り当てられているかどうかを判断する。このインデックスは、スロットテーブルと別であってよく、またはスロットテーブルに直接統合され得る。インデックスが、スロットテーブルの間接的なスロットが被参照オブジェクトに既に割り当てられていることを指示し、且つ、本機能がスロットテーブルのスロットを被参照オブジェクトに割り当てるとき、本機能はまた、被参照オブジェクトの持続性ポインタから割り当てられたスロットにマッピングすることを含むようにこのインデックスを更新するのが好ましい。
【0019】
ステップ204では、本機能は、被参照オブジェクトに関する間接的なスロットへのポインタを含むスマートポインタで、ロードされたオブジェクトの持続性ポインタを置換する。ステップ204の一部では、本機能は、持続性ポインタをスマートポインタで置換し、スマートポインタによって包含されたポインタが、被参照オブジェクトを直接指し示すのではなく、間接的なスロットを指し示すスマートポインタに指示をストアする。ステップ204では、本機能が参照側オブジェクト333(図3)の持続性ポインタ371をスマートポインタ434で置換することが図4から分かる。スマートポインタ434は、スロット436へのポインタ、並びに、スマートポインタによって包含されたポインタ461が、被参照オブジェクトを直接指し示すのではなく、スロットを指し示す指示(「1」)462とを含む。アプリケーションが、保護されていないオブジェクトを操作するようにするメインメモリポインタの長さをスマートポインタの長さと同じにさせるために、本機能は、使用されていないビット位置のビットとしてこの指示を、間接的なスロットへのポインタにストアするのが好ましい。メモリバイト整列要求のために、間接的なスロットへのポインタの1又はそれ以上の最小有効ビットは使用されておらず、他のオブジェクトに対するポインタの最小有効ビットと同じくらいである。それゆえ、本機能は、スマートポインタに包含されたメインメモリソータの最小有効ビットのスマートポインタに指示をストアするのが好ましい。指示がまた、多くの他の方法で有利にストアされ得ることは、当業者には明らかであろう。ステップ205では、本機能は、次の持続性ポインタをロードされたオブジェクトで処理するために、ステップ202に戻ってループする。ステップ205の後、これらのステップは終了する。本機能が、図2に示したようにオブジェクトをロードし且つ保護しない後に、オブジェクトがロードされたアプリケーションはメインメモリのオブジェクトにアクセスすることができ、特に、スマートポインタ434(図4)としてオブジェクトに発生するスマートポインタをデリファレンスし得る。
【0020】
図5は、アプリケーションプログラムによってスマートポインタをデリファレンスすることの試みに応じて本機能によって実行されるのが好ましいステップを示す流れ図である。これらのステップは好ましくは、スマートポインタが各々インスタンスであるクラスに関するデリファレンスオペレータの実施として定義される。C++プログラミング言語では、テンプレートが、これらのステップを包含するようにスマートポインタに関するデリファレンスオペレータを定義するのに使用され得る。
ステップ501では、値「1」をもったスマートポインタのビットワイズANDが1に等しいならば(即ち、スマートポインタが、被参照オブジェクトへの直接的なポインタではなくスロットへのポインタを含むことを示し、スマートポインタの最小有効ビットが「1」であるならば)、次いで、本機能はステップ503に続き、そうでなければ、スマートポインタに包含されたポインタが、被参照オブジェクトへの直接的なポインタであることを示し、このビットワイズANDの結果は「0」となり、本機能はステップ502に続く。ステップ502では、本機能は、オペレータをデリファレンスする標準ポインタを使用してスマートポインタにストアされた直接的なポインタをデリファレンスすることによって被参照オブジェクトを戻す。ステップ503では、本機能はスマートポインタの最小有効ビットを0から1に変更させる。ステップ504では、値「1」が「1」に等しい間、スロットのポインタのビットワイズANDがスロットポインタによって指し示されているならば(即ち、スロットのポインタが、被参照オブジェクトへの直接的なポインタではなく持続性ポインタであることを示し、最小有効ビットが「1」に等しいならば)、次いで、本機能はステップ507に続き、そうでなければ、スロットのポインタの最小有効ビットは「0」であり、スロットのポインタは、被参照オブジェクトへの直接的なポインタであり、本機能はステップ505へ続く。ステップ505では、本機能は、スマートポインタによって指し示されたスロットからスマートポインタに直接的なポインタをコピーする。ステップ506では、本機能は、オペレータをデリファレンスする標準ポインタを使用してスマートポインタにストアされた直接的なポインタをデリファレンスすることによって被参照オブジェクトを戻す。ステップ507では、本機能は、スマートポインタによって指し示されたスロットのポインタの最小有効ビットの「1」を「0」に変更する。ステップ508では、本機能は、スマートポインタによって指し示されたスロットに包含された持続性ポインタを使用してオブジェクトサーバから、被参照オブジェクトを得るために持続性オブジェクトシステムをコールする。ステップ508では、本機能は更に、スロットポインタによって指し示されたスロットに、ロードされた被参照オブジェクトへの直接的なポインタをストアする。ステップ508の後、本機能は、スマートポインタに対する、被参照オブジェクトへの直接的なポインタをコピーするため、且つ、被参照オブジェクトを戻すためにステップ505に続く。
【0021】
図6は、図5に示したステップ実行した結果を示すメモリダイアグラムである。本機能がステップ508により、被参照オブジェクト637をロードした図4と、図6を比較することにより見出すことができる。ロードされた被参照オブジェクト637は好ましくは、被参照オブジェクトのスロットをスロットテーブルに配置するために、持続性ポインタから間接的なスロットにマップするスロットテーブルインデックスと関連して使用することができる、持続性ポインタ638自身を包含する。本機能は、被参照オブジェクト637への直接的なポインタをスロットポインタ634に、且つ、スマートポインタ634によって以前に指し示されたスロット636に更にストアしている。更に、被参照オブジェクト637の配置に関するバイト整列リクエストのために、これらのポインタが、被参照オブジェクトへの直接的なポインタであることを示し、スマートポインタ634とスロット636との両方の最小有効ビットは「0」である。
【0022】
図5に示したデリファレンスオペレーションがスマートポインタに関して実施された後に、続いてデリファレンスオペレーションは早く進む。スマートポインタの最小有効ビットが「0」であるので、本機能は、スマートポインタ634の直接的なポインタ661によって指し示された参照側オブジェクト637を返すために、ステップ501及び502を単に実行する。この短くなったプロセスはメインメモリへの単一のアクセスのみを含むので、参照側オブジェクトへのポインタが別のポインタを介して常に間接的である在来の間接的なソフトウェアスウィズリング技術よりも2倍速い。
ある場合では、被参照オブジェクトはメモリから必ずアンロードされる。例は、ひょっとしたら、別のコンピュータシステムの別のアプリケーションが、正しいアクセスでオブジェクトをロードするのに必要な場合を含む。別の例は、オブジェクトによって占有されたメモリが別の目的のために使用され得る場合である。これらの状況では、本機能は、アプリケーションによって保留され、且つ、他のロードされた保護されていないオブジェクトにストアされたオブジェクトへのいかなるスマートポインタをも無効にしない方法でアンロードするためにオブジェクトを準備することができる。
【0023】
図7は、アンロードするためのオブジェクトを準備するために、本機能によって実施されるのが好ましいステップを示す。本機能はまた、メインメモリ内の別のアドレスへの再配置に関するオブジェクトを準備するために、これらのステップを実行するのが好ましい。アンローディング又は再配置する前にオブジェクトを準備することは、オブジェクトの「アイドリング」として知られている。これらのステップは好ましくは、オブジェクトに割り当てられた間接的なスロットを識別することによってアンローディングするため準備するように、オブジェクトを識別する。ステップ701乃至703では、本機能は、アイドル状態であるオブジェクトへの直接的なポインタを包含する各スマートポインタを介してループし、該スマートポインタは、識別されたスロットにストアされたアイドル状態であるオブジェクトを介して直接的なポインタと同じ値を有する。好ましい実施形態では、ステップ701は、アイドル状態であるオブジェクトに割り当てられた間接的なスロットに関連したスマートポインタのリストをトラバースすることを含む。この実施形態は比較的低い時間コストを有するが、各間接的なスロットに関連したスマートポインタのリストを維持することを要求する。変形実施形態では、ステップ701は、メインメモリに作られている全てのスマートポインタのリストをトラバースすることを含む。かかる変形実施形態は、比較的大きな時間コストを有するという欠点を有するけれども、ストレージと、各間接的なスロットに関するスマートポインタのリストを保持することの処理要求とを回避するという利点を有する。ステップ702では、アイドル状態であるオブジェクトへの直接的なポインタを包含する各スマートポインタに関して、本機能は、スマートポインタの識別されたスロットへのポインタを直接的なポインタの適所にストアする。ステップ702の部分として、本機能はまた、スマートポインタがいま、被参照オブジェクトへの直接的なポインタではなく間接的なスロットへのポインタを含むことを指示するように、スマートポインタの最小有効ビットを「1」に変更する。ステップ703では、本機能は、アイドル状態であるオブジェクトへの直接的なポインタを包含する次のスマートポインタを処理するためにステップ701へ戻してループする。かかる各スマートポインタが処理された後、これらのステップは終了する。これらのステップの終了で、アイドル状態にされたオブジェクトへの直接的なポインタを包含するメインメモリにスマートポインタはない。むしろ、アイドル状態にされたオブジェクトを参照する各スマートポインタは、間接的なスロットを介する。
【0024】
図8は、図7に示したステップを実行した結果を示すメモリダイアグラムである。本機能が、スマートポインタ634(図6)の直接的なポインタ661を、被参照オブジェクトに関するスロット836へのポインタで置換する図6と図8を比較することによって見出すことができる。本機能は更に、スマートポインタの最小有効ビットを「1」に変更し、スマートポインタが、被参照オブジェクトへの直接的なポインタではなく、間接的なスロットへのポインタを包含することを含む。
図9は、オブジェクトをアンロードするために本機能によって実施されるのが好ましいステップを示す流れ図である。ステップ901では、本機能は、図7に示したようにアンロードされているオブジェクトに対して設計された間接的なスロットをアイドル状態にさせる。ステップ902では、本機能は、アンロードされているオブジェクトによって占有されたメインメモリの部分を割り当て解除させる。ステップ903では、本機能は、アンロードされているオブジェクトに対して割り当てられた間接的なスロットにおける直接的なポインタを、アンロードされているオブジェクトへの持続性ポインタで置換する。次いで、これらのステップは終了する。アンロードされたオブジェクトへのスマートポインタが後でデリファレンスされるならば、本機能は、アンロードされたオブジェクトをオブジェクトサーバから再検索するために、間接的なスロットにストアされた持続性ポインタを使用する。
【0025】
本機能が、オブジェクトをアンロードするために図9に示したステップを実行した後、メインメモリは図4に示された状態に戻される。すなわち、スマートポインタ434は、アンロードされたオブジェクトに割り当てあられた間接的なスロット436へのポインタ461を含む。間接的なスロット436は、本機能が被参照オブジェクトをリロードするのに使用することができる、被参照オブジェクトへの持続性ポインタを包含するスマートポインタ461は後でデリファレンスされる。
本機能はまた、メインメモリにロードされテいる間、被参照オブジェクトの再配置を行う。図10は、オブジェクトをメインメモリに再配置するために本機能によって実行されるのが好ましいステップを示す流れ図である。ステップ1001では、本機能は、図7に示したように再配置されているオブジェクトに割り当てられたスロットをアイドル状態にさせる。ステップ1002では、本機能は、被参照オブジェクトをメインメモリの別の場所にコピーすることにより、且つ、被参照オブジェクトをフリープールに元々包含しているメモリを戻すことにより、被参照オブジェクトをメインメモリに再配置させる。ステップ1003では、本機能は、被参照オブジェクトがステップ1002で移動された新しい位置への直接的なポインタを、再配置されたオブジェクトに割り当てられたスロットにストアさせる。次いで、これらのステップは終了する。
【0026】
本機能は、スロットポインタによってリファレンスされた全てのオブジェクトをアイドル状態にさせる処理を、何回も実行するのが好ましい。この処理は「大規模アイドリング」と呼ばれ、大規模なアイドリングから長い時間が過ぎた後に依然としてアイドル状態にあるスロットは、大規模アイドリング処理が実行されてからの間にデリファレンスされなかったスマートポインタに対応するものであるから、この処理は、本機能が頻繁にデリファレンスされていないスマートポインタを追跡するのを可能にする。
図11は、大規模アイドリング処理を実行するために本機能によって実行されるのが好ましいステップを示す流れ図である。ステップ1101乃至1104では、本機能は、存在している各スマートポインタを介してループする。このループは好ましくは、スマートポインタが作り出されたとき又は壊れたとき、更新されている存在しているスマートポインタのリストをトラバースすることを含む。ステップ1102では、スマートポインタが、その最小有効ビットによって指示されているとき、被参照オブジェクトへの直接的なポインタを含むならば、次いで、本機能はステップ1103に進み、そうでなければ、本機能はステップ1104に進む。ステップ1103では、本機能は、「1」に変更されたその最小有効ビットを持った被参照オブジェクトに割り当てられたスロットのアドレス含む、被参照オブジェクトへの間接的なポインタを、スマートポインタにストアする。ステップ1104では、本機能は、次のスマートポインタを処理するためにステップ1101に戻ってループする。スマートポインタが残っていないとき、これらのステップは終了する。
【0027】
あるプログラミング環境は、不要部分の整理と呼ばれる機構を提供し、それは即ち使用されていないデータ構造を識別し且つ割り当て解除するように、定期的に実行される処理である。多くのかかるプログラミング環境では、不要部分整理機構は、用いられている知られたオブジェクトに包含されたポインタが、用いられている知られたデータ構造を介して直接的又は間接的にアクセスされうる各データ構造にアクセスするために、再帰的にデリファレンスされることに応じて、「到達可能性アルゴリズム」を使用して実施される。どんな残りのデータ構造も、現在使用されていないと思われ、割り当て解除される。この形の不要部分の整理が採用されているプログラミング環境では、図11に示されたステップを実行するのではなく、不要部分整理処理の部分としてポインタを再帰的にデリファレンスする間に出会う各スマートポインタをアイドリングすることによって、大規模アイドリングプロセスを実行するのが好ましい。このことにより、本機能は、図11に示したステップによって利用される存在しているスマートポインタのリストを維持するコストを避けることができる。
【0028】
アクセスされていないロードされた被参照オブジェクトによって占有されたメインメモリの部分を再生するために、本機能は、大規模アイドリングオペレーションを実行した後に、所定の時間にフラッシュオペレーションを実行するのが好ましい。フラッシュオペレーションでは、大規模アイドリングがよく考えられて使用されておらず、且つ、アンロードされているので、ある時間の後に依然としてアイドル状態にあるオブジェクトがパスされる。図12は、フラッシュオペレーションを実行するために、本機能によって実行されるのが好ましいステップを示す流れ図である。ステップ1201乃至1203では、本機能は、用いられている各スマートポインタを介してループする。ステップ1202では、スロットが割り当てられた被参照オブジェクトへの直接的なポインタを含むスマートポインタがないことを意味し、スロットが依然としてアイドル状態であるならば、次いで、本機能は、スロットが割り当てられたオブジェクトをアンロードするためにステップ1204に続く。ステップ1202が1204にいった後、本機能は、次ぎに使用されるスロットを処理するためのステップ1201へ戻るようにループするためにステップ1203へ続く。使用されているスロットが残っていないとき、これらのステップは終了する。
【0029】
本発明が好ましい実施形態を参照して示され且つ説明されているけれども、正式及び詳細な種々の変更又は修正が本発明の範囲から逸脱することなしになされることは当業者には理解されるであろう。例えば、不要部分の整理及びフラッシュオペレーションは、使用されていない被参照オブジェクトのアンローディングにおいて各々生じる種々の異なる仕方で実行され得る。例えば、本機能は、それらの最後のアイドリングの時間によってストアされたオブジェクトのリストを保持することができ、最も早く最後のアイドル状態になったオブジェクトを定期的にアンロードする。また、スマートポインタ及び間接的なスロットは、それらが、ポインタの最小有効ビットに「0」としてストアされているより、被参照オブジェクトへの直接的なポインタを含んでいるかどうかという他の指示を使用し得る。例えば、本機能は、ポインタから分離したフラグとしてこれらの指示をストアし得る。
【図面の簡単な説明】
【図1】本機能が好ましく作動する汎用コンピュータシステムのハイレベルブロック図である。
【図2】持続性オブジェクトをロードし且つデパッシベーションするための本機能によって実施されるのが好ましいステップを示す流れ図である。
【図3】ステップ201の実行結果を示すメモリダイアグラムである。
【図4】ステップ203及び204の実行結果を示すメモリダイアグラムである。
【図5】スマートポインタをデリファレンスするためのアプリケーションプログラムによる試みに応じた使用率によって実行されるのが好ましいステップを示す流れ図である。
【図6】図5に示したステップの実行結果を示すメモリダイアグラムである。
【図7】アンロードに関するオブジェクトを準備するために本機能によって実行されるのが好ましいステップを示す。
【図8】図7に示したステップの実行結果を示すメモリダイアグラムである。
【図9】オブジェクトをアンロードするために本機能によって実行されるのが好ましいステップを示す流れ図である。
【図10】メインメモリにおけるオブジェクトを再配置するために本機能によって実行されるのが好ましいステップを示す流れ図である。
【図11】大規模アイドリングプロセスを実行するために本機能によって実行されるのが好ましいステップを示す流れ図である。
【図12】フラッシュ操作を実行するために本機能によって実行されるのが好ましいステップを示す流れ図である。
【符号の説明】
100 オブジェクトアクセスコンピュータシステム
110 CPU(中央処理装置)
120 入力/出力デバイス
121 記憶装置
122 ネットワーク接続
123 リムーバブル媒体ドライブ
130 メインメモリ
131 持続性オブジェクトシステム
132 スウィズリング機能
133 保護されていないオブジェクト
134 スマートポインタ
135 スロットテーブル
136 間接的なスロット
137 被参照オブジェクト
150 オブジェクトサーバコンピュータシステム
151 プロセッサ
152 ネットワーク接続
153 オブジェクトサーバ
330 メインメモリ
333 参照側オブジェクト
335 スロットテーブル
371 持続性ポインタ
430 メインメモリ
435 スロットテーブル
461 スマートポインタ
630 メインメモリ
633 参照側オブジェクト
635 スロットテーブル
637 被参照オブジェクト
638 持続性ポインタ
661 スマートポインタ
830 メインメモリ
833 参照側オブジェクト
835 スロットテーブル
837 被参照オブジェクト
838 持続性ポインタ
861 スマートポインタ

Claims (15)

  1. 間接的なスロットを使用し、且つ、該間接的なスロットへのポインタ又はロードされた被参照オブジェクトへのポインタのいずれかを含むようになっているスマートポインタを使用する参照側オブジェクトに、被参照オブジェクトへの持続性ポインタをスウィズリングするためのメモリを有するコンピュータシステムにおける方法であって、
    参照側オブジェクトをメモリにロードし、
    参照側オブジェクトをロードするステップに応じて、
    持続性ポインタを参照側オブジェクトから間接的なスロットにコピーし、
    参照側オブジェクトにある持続性ポインタを間接的なスロットへのポインタを包含するスマートポインタで置換し、
    スマートポインタをデリファレンスするための試みを検出し、
    この検出ステップに応じて、
    間接的なスロットにストアされた持続性ポインタを使用して、前記被参照オブジェクトをメモリにロードし、
    間接的なスロットにおける持続性ポインタを、ロードされた被参照オブジェクトへの直接的なポインタで置換し、
    スマートポインタにおける間接的なスロットへのポインタを、ロードされた被参照オブジェクトへの直接的なポインタで置換し、
    ロードされた被参照オブジェクトへのポインタをデリファレンスする、
    ステップを有する方法。
  2. スマートポインタをデリファレンスするための第2の試みを検出し、
    前記検出ステップに応じて、スマートポインタに包含されたロードされた被参照オブジェクトへの直接的なポインタをデリファレンスする、
    ステップを更に有する、請求項1に記載の方法。
  3. ロードされた被参照オブジェクトへの直接的なポインタを包含する1又はそれ以上の追加のスマートポインタが生成されている請求項1の方法であって、
    ロードされた被参照オブジェクトをアイドル状態にするための要求を受信し、
    前記受信ステップに応じて、ロードされた被参照オブジェクトへのポインタを包含する各スマートポインタについて、ロードされた被参照オブジェクトへの直接的なポインタを間接的なスロットへのポインタで置換する、
    ステップを更に有する、請求項1に記載の方法。
  4. ロードされた被参照オブジェクトへの直接的なポインタを間接的なスロットへのポインタで置換するステップの後で、
    スマートポインタをデリファレンスするための第2の試みを検出し、
    スマートポインタをデリファレンスするための第2の試みを検出するステップに応じて、
    間接的なスロットへのポインタとスマートポインタとを、間接的なスロット内にストアしてあるロードされた被参照オブジェクトへの直接的なポインタで置換し、そして、
    ロードされた被参照オブジェクトへの直接的なポインタをデリファレンスする、
    ステップを更に有する請求項3に記載の方法。
  5. 追加のスマートポインタを使用して、1又はそれ以上の追加の被参照オブジェクトをメモリにロードするステップを更に有し、ロードされた被参照オブジェクトへの直接的なポインタを包含する1又はそれ以上の追加のスマートポインタが生成されている請求項1の方法であって、
    識別された複数のロードされた被参照オブジェクトをアイドル状態にさせるための要求を受信し、
    前記受信ステップに応じて、識別されたロードされた被参照オブジェクトのうちの1つへの直接的なポインタを包含するスマートポインタの各々について、識別されたロードされた被参照オブジェクトへの直接的なポインタを、識別されたロードされた被参照オブジェクトに関する間接的なスロットへのポインタで置換する、
    ステップを更に含む、請求項1に記載の方法。
  6. スマートポインタのグループにおける不要部分の整理を実行するための請求項1に記載の方法であって、
    ロードされたオブジェクトへの直接的なポインタを包含するスマートポインタのグループにおけるスマートポインタを識別し、
    各識別されたスマートポインタに関して、
    スマートポインタにおける直接的なポインタが指し示す同じロードされたオブジェクトへの直接的なポインタを包含する間接的なスロットを識別し、
    スマートポインタにおける直接的なポインタを、識別された間接的なスロットへのポインタで置換する、ステップを更に有する、
    請求項1に記載の方法。
  7. メモリを再生するための要求に応じて、
    いかなるスマートポインタにおけるいかなる直接的なポインタによっても指し示されていないオブジェクトを識別し、そして、
    各識別されたオブジェクトに関して、
    識別されたオブジェクトへの直接的なポインタを包含する間接的なスロットを識別し、
    識別されたオブジェクトをアンロードし、
    識別された間接的なスロットにおける直接的なポインタを、識別されたオブジェクトをリロードするのに使用することができるリローディング識別子で置換する、
    ステップを更に有する、請求項に記載の方法。
  8. メモリを再生するための要求に応じて、
    いかなるスマートポインタにも包含されていないオブジェクトへの直接的なポインタを包含する間接的なスロットを識別し、
    各識別された間接的なスロットに関して、
    間接的なスロットにおける直接的なポインタによって指し示されたオブジェクトをアンローディングし、
    間接的なスロットにおける直接的なポインタを、アンロードされたオブジェクトをリロードするのに使用することができるリローディング識別子で置換する、ステップを更に含む、請求項に記載の方法。
  9. スマートポインタのグループで不要部分の整理を実行し、
    ロードされたオブジェクトの選択されたグループのうちの1つへの直接的なポインタを包含するスマートポインタのグループにおいてスマートポインタを識別し、
    各識別されたスマートポインタに関して、
    直接的なポインタ及びスマートポインタが指し示す同じロードされたオブジェクトへの直接的なポインタを包含する間接的なスロットを識別し、
    スマートオブジェクトにおける直接的なポインタを、識別された間接的なスロットへのポインタで置換する、
    ステップを更に有する、請求項1に記載の方法。
  10. メインメモリにストアされ、且つ、被参照オブジェクトへのメインメモリポインタを包含する間接的なスロットを使用して1又はそれ以上のスマートポインタによって参照される被参照オブジェクトをアイドリングするための請求項1に記載の方法であって、
    スマートポインタが、被参照オブジェクトへの直接的なポインタを包含しないことを保証することによって、被参照オブジェクトをアイドル状態にさせるための要求を受信し、
    前記受信ステップに応じて、被参照オブジェクトを参照する各スマートポインタに関して、間接的なスロットへのポインタをスマートポインタにストアする、
    ステップを更に有する、請求項1に記載の方法。
  11. スマートポインタをデリファレンスする試みを受信し、
    前記受信ステップに応じて、
    スマートポインタにおける間接的なスロットへのポインタを、被参照オブジェクトへのポインタで置換し、
    ロードされた被参照オブジェクトへのポインタをデリファレンスする、
    ステップを更に有する、請求項10に記載の方法。
  12. ストアする前記ステップの後、メインメモリから、被参照オブジェクトをアンロードするための要求を受信し、
    被参照オブジェクトをアンロードする要求を受信するステップに応じて、
    間接的なスロットに包含された被参照オブジェクトへのメインメモリポインタを、被参照オブジェクトをリロードするのに使用することができる持続性ポインタで置換し、
    被参照オブジェクトをアンローディングする、
    ステップを更に有する、請求項10に記載の方法。
  13. スマートポインタをデリファレンスする試みを受信し、
    前記受信ステップに応じて、
    間接的なスロットにストアされた持続性ポインタを使用して、被参照オブジェクトをメインメモリにロードし、
    間接的なスロットにおける持続性ポインタを、ロードされた被参照オブジェクトへのポインタで置換し、
    スマートポインタにおける間接的なスロットへのポインタを、ロードされた被参照オブジェクトへのポインタで置換し、
    ロードされた被参照オブジェクトへのポインタをデリファレンスする、
    ステップを更に有する、請求項12に記載の方法。
  14. ストアするステップの後、被参照オブジェクトを新しいメモリ位置に再位置づけする要求を受信し、
    被参照オブジェクトをアンロードするための要求を受信するステップに応じて、
    被参照オブジェクトを新しいメモリ位置に移動させるために間接的なスロットにおけるポインタを使用し、
    間接的なスロットに包含された被参照オブジェクトへのメインメモリポインタを、新しいメモリ位置へのメインメモリポインタで置換する、
    ステップを更に有する、請求項10に記載の方法。
  15. 移動及び置換ステップの後、スマートポインタでデリファレンスオペレーションの呼び出しを検出し、
    前記検出ステップに応じて、
    スマートポインタにおける間接的なスロットへのポインタを、間接的なスロットにおける新しいメモリ位置へのポインタで置換し、
    新しいメモリ位置へのポインタをデリファレンスする、
    ステップを更に有する、請求項14に記載の方法。
JP36982497A 1996-12-12 1997-12-12 リファレンスされたオブジェクトを管理するための3状態リファレンスの使用 Expired - Fee Related JP4176857B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/764557 1996-12-12
US08/764,557 US5794256A (en) 1996-12-12 1996-12-12 Pointer swizzling facility using three-state references to manage access to referenced objects

Publications (2)

Publication Number Publication Date
JPH10254756A JPH10254756A (ja) 1998-09-25
JP4176857B2 true JP4176857B2 (ja) 2008-11-05

Family

ID=25071057

Family Applications (1)

Application Number Title Priority Date Filing Date
JP36982497A Expired - Fee Related JP4176857B2 (ja) 1996-12-12 1997-12-12 リファレンスされたオブジェクトを管理するための3状態リファレンスの使用

Country Status (4)

Country Link
US (2) US5794256A (ja)
EP (1) EP0848324B1 (ja)
JP (1) JP4176857B2 (ja)
DE (1) DE69738101T2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5794256A (en) * 1996-12-12 1998-08-11 Microsoft Corporation Pointer swizzling facility using three-state references to manage access to referenced objects
US6145121A (en) * 1997-04-17 2000-11-07 University Of Washington Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications
US6460071B1 (en) * 1997-11-21 2002-10-01 International Business Machines Corporation System and method for managing client application state in a stateless web browser environment
US6345276B1 (en) * 1998-09-18 2002-02-05 Microsoft Corporation Representing base pointers in a shared memory heap
US6499095B1 (en) * 1999-02-11 2002-12-24 Oracle Corp. Machine-independent memory management system within a run-time environment
US6457019B1 (en) 1999-02-11 2002-09-24 Oracle Corp. Memory management within a run-time environment
US6877161B1 (en) 1999-02-11 2005-04-05 Oracle International Corp. Address calculation of invariant references within a run-time environment
US6434685B1 (en) 1999-02-11 2002-08-13 Oracle Corp. Paged memory management system within a run-time environment
US6366932B1 (en) * 1999-06-24 2002-04-02 International Business Machines Corporation Apparatus and method for accessing an object oriented object using a smart passive reference
US6408305B1 (en) * 1999-08-13 2002-06-18 International Business Machines Corporation Access frontier for demand loading pages in object-oriented databases
US6704743B1 (en) 1999-09-13 2004-03-09 Copernus, Inc. Selective inheritance of object parameters in object-oriented computer environment
US6978272B1 (en) * 1999-11-29 2005-12-20 Ncr Corporation Method and apparatus for displaying instrumentation parameters in a database system
US7031976B1 (en) 2000-05-26 2006-04-18 Sprint Communications Company L.P. Computer framework and method for isolating a business component from specific implementations of a datastore
WO2002067124A1 (en) * 2001-02-16 2002-08-29 Nthco. Type-safe homogeneous linkage for heterogeneous smart pointers
US6598141B1 (en) 2001-03-08 2003-07-22 Microsoft Corporation Manipulating interior pointers on a stack during garbage collection
US20040015876A1 (en) * 2001-05-24 2004-01-22 Applin John R. Method and structure of implementing a safe pointer
US7069540B1 (en) * 2001-07-02 2006-06-27 Unisys Corporation COM persistence model
AU2002357108A1 (en) * 2001-12-06 2003-07-09 New York University Logic arrangement, data structure, system and method for multilinear representation of multimodal data ensembles for synthesis, recognition and compression
US7379925B2 (en) * 2003-07-25 2008-05-27 New York University Logic arrangement, data structure, system and method for multilinear representation of multimodal data ensembles for synthesis, rotation and compression
WO2005067572A2 (en) * 2004-01-13 2005-07-28 New York University Method, system, storage medium, and data structure for image recognition using multilinear independent component analysis
US7506003B2 (en) * 2005-07-14 2009-03-17 Microsoft Corporation Moving data from file on storage volume to alternate location to free space
US7558804B1 (en) * 2005-08-26 2009-07-07 American Megatrends, Inc. Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory
US7873943B2 (en) * 2005-12-28 2011-01-18 Intel Corporation Inserting stack clearing code in conservative garbage collection
US20070179959A1 (en) * 2006-01-30 2007-08-02 Microsoft Corporation Automatic discovery of data relationships
US7716530B2 (en) * 2006-02-28 2010-05-11 Microsoft Corporation Thread interception and analysis
US9785549B2 (en) * 2007-04-27 2017-10-10 Microsoft Technology Licensing, Llc Managing object lifetime for native/managed peers
US8429633B2 (en) * 2008-11-21 2013-04-23 International Business Machines Corporation Managing memory to support large-scale interprocedural static analysis for security problems
US20100287216A1 (en) * 2009-05-07 2010-11-11 Tatu Ylonen Oy Ltd Grouped space allocation for copied objects
JP4959781B2 (ja) * 2009-12-22 2012-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクト生成地点記録方法およびプログラム
US8756193B2 (en) 2011-10-31 2014-06-17 Apple Inc. System and method for persisting object pointers
CN103345416A (zh) * 2013-07-26 2013-10-09 深圳市融创天下科技股份有限公司 一种获取数组长度的方法及系统
KR102464801B1 (ko) * 2015-04-14 2022-11-07 삼성전자주식회사 반도체 장치의 동작 방법 및 반도체 시스템
US10725908B2 (en) * 2018-08-10 2020-07-28 Microsoft Technology Licensing, Llc. Fast initialization of complex in-memory data structures

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398334A (en) * 1992-04-06 1995-03-14 General Electric Company System for automatic garbage collection using strong and weak encapsulated pointers
GB2269033A (en) * 1992-07-22 1994-01-26 Ibm Controlling data storage to enable garbage collection
EP0620520A1 (en) * 1993-03-30 1994-10-19 AT&T Corp. Method for making persistent data objects having hidden pointers
US5517645A (en) * 1993-11-05 1996-05-14 Microsoft Corporation Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager
US5692183A (en) * 1995-03-31 1997-11-25 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment
US5794256A (en) * 1996-12-12 1998-08-11 Microsoft Corporation Pointer swizzling facility using three-state references to manage access to referenced objects

Also Published As

Publication number Publication date
EP0848324A3 (en) 2004-04-28
DE69738101D1 (de) 2007-10-18
DE69738101T2 (de) 2008-01-03
US6105041A (en) 2000-08-15
EP0848324A2 (en) 1998-06-17
EP0848324B1 (en) 2007-09-05
JPH10254756A (ja) 1998-09-25
US5794256A (en) 1998-08-11

Similar Documents

Publication Publication Date Title
JP4176857B2 (ja) リファレンスされたオブジェクトを管理するための3状態リファレンスの使用
US6725241B1 (en) Method and apparatus for freeing memory in a data processing system
US6249793B1 (en) Mostly concurrent compaction in a garbage collection system
US5649139A (en) Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US5761680A (en) Coherent film system access during defragmentation operations on a storage medium
EP0757816B1 (en) Method and system for allocation of address space in a virtual memory system
EP0112442B1 (en) Data storage hierarchy and its use for data storage space management
US6401181B1 (en) Dynamic allocation of physical memory space
US6460126B1 (en) Computer resource management system
US5333315A (en) System of device independent file directories using a tag between the directories and file descriptors that migrate with the files
US5555399A (en) Dynamic idle list size processing in a virtual memory management operating system
US8478931B1 (en) Using non-volatile memory resources to enable a virtual buffer pool for a database application
US7587566B2 (en) Realtime memory management via locking realtime threads and related data structures
US7962684B2 (en) Overlay management in a flash memory storage device
US20050198464A1 (en) Lazy stack memory allocation in systems with virtual memory
US7493464B2 (en) Sparse matrix
JPH0578857B2 (ja)
EP0441508A2 (en) Data storage using a cache and method therefor
JP2000222281A (ja) マルチスレッド仮想マシン内におけるメモリ・アロケ―ションの方法及び装置
WO2001088699A2 (en) Method for using atomic compare-and-swap operations during forwarding-pointer installation
JPH09204357A (ja) マルチスレッド環境を有する計算システム用の最大並行参照キャッシュ
US6629111B1 (en) Memory allocation system
JPH0279141A (ja) 仮想索引機構
US20050193169A1 (en) Memory management
US6961840B2 (en) Method and apparatus for managing a dynamic alias page table

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041213

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20061121

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20061121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080305

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080605

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080703

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

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

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

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130829

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

LAPS Cancellation because of no payment of annual fees