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

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

Info

Publication number
JPH10254756A
JPH10254756A JP9369824A JP36982497A JPH10254756A JP H10254756 A JPH10254756 A JP H10254756A JP 9369824 A JP9369824 A JP 9369824A JP 36982497 A JP36982497 A JP 36982497A JP H10254756 A JPH10254756 A JP H10254756A
Authority
JP
Japan
Prior art keywords
pointer
smart
referenced
direct
indirect
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9369824A
Other languages
English (en)
Other versions
JP4176857B2 (ja
Inventor
John G Bennett
ジー ベネット ジョン
Ketan Dalal
ダラール ケータン
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

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)

Abstract

(57)【要約】 (修正有) 【課題】 被参照オブジェクトへのアクセスを管理する
ための3状態リファレンスの使用を提供する。 【解決手段】 好ましい実施形態では、ポインタスウィ
ズリング機能は、持続性ポインタをスウィズルするため
にリクエストを受け取り、それに応じて、持続性ポイン
タを間接的なスロットにコピーし、オリジナル持続性ポ
インタを、間接的なスロットへのポインタを包含するス
マートポインタで置換する。本機能がスマートポインタ
をデリファレンスするための試みを引き続いて検出した
とき、スマートポインタによって指し示された間接的な
スロットにストアされた持続性ポインタを使用する被参
照オブジェクトをロードする。更に、間接的なスロット
における持続性ポインタを、ロードされた被参照オブジ
ェクトへのポインタで置換する。最後に、スマートポイ
ンタをデリファレンスするための試みに応じて、ロード
された被参照オブジェクトへのポインタをデリファレン
スする。

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は、C
D−ROMのようなコンピュータ読取可能媒体で提供さ
れる本機能を含むソフトウェア製品をインストールする
のに使用することができるリムーバブルメディアドライ
ブ123を更に含む。メインメモリ130は、オブジェ
クトのセットを持続的に保持するための持続性オブジェ
クトシステム131を包含する。スウィズリング機能1
32は、持続性オブジェクトシステム131に含まれて
おり、CPU110で実行される。メインメモリ130
は、スマートポインタ134を包含する保護されていな
いオブジェクト133を更に含む。保護されていないオ
ブジェクト133はまた、参照側オブジェクトとしてこ
こで議論する。メインメモリ130は、間接的なスロッ
ト136、並びに、他の間接的なスロット(図示せず)
で構成されているスロットテーブル135を更に有す
る。スロットテーブルは、メモリマネージャによって利
用されるハンドルテーブルに対応するのが好ましい。所
定の時間では、メインメモリ130は、被参照オブジェ
クト137並びに他の被参照オブジェクト(図示せず)
を更に含む。
【0015】図1はまた、コンピュータシステム100
にアクセスするオブジェクトのネットワークコネクショ
ン122が、オブジェクトサーバコンピュータシステム
150のネットワークコネクション152に接続されて
いることも示す。オブジェクトサーバコンピュータシス
テム150は、不揮発性の仕方で持続性オブジェクトの
セットをストアすることによって、持続性オブジェクト
のセットを保持するオブジェクトサーバ153を含む。
オブジェクトサーバ153は、持続性オブジェクトをオ
ブジェクトサーバの中及び外に転送するように、持続性
オブジェクトシステムの他のパスからのリクエストに応
答する。オブジェクトサーバコンピュータシステム15
0はまた、オブジェクトサーバ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、34
1、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へのポインタ、並
びに、スマートポインタによって包含されたポインタ4
61が、被参照オブジェクトを直接指し示すのではな
く、スロットを指し示す指示(「1」)462とを含
む。アプリケーションが、保護されていないオブジェク
トを操作するようにするメインメモリポインタの長さを
スマートポインタの長さと同じにさせるために、本機能
は、使用されていないビット位置のビットとしてこの指
示を、間接的なスロットへのポインタにストアするのが
好ましい。メモリバイト整列要求のために、間接的なス
ロットへのポインタの1又はそれ以上の最小有効ビット
は使用されておらず、他のオブジェクトに対するポイン
タの最小有効ビットと同じくらいである。それゆえ、本
機能は、スマートポインタに包含されたメインメモリソ
ータの最小有効ビットのスマートポインタに指示をスト
アするのが好ましい。指示がまた、多くの他の方法で有
利にストアされ得ることは、当業者には明らかであろ
う。ステップ205では、本機能は、次の持続性ポイン
タをロードされたオブジェクトで処理するために、ステ
ップ202に戻ってループする。ステップ205の後、
これらのステップは終了する。本機能が、図2に示した
ようにオブジェクトをロードし且つ保護しない後に、オ
ブジェクトがロードされたアプリケーションはメインメ
モリのオブジェクトにアクセスすることができ、特に、
スマートポインタ434(図4)としてオブジェクトに
発生するスマートポインタをデリファレンスし得る。
【0020】図5は、アプリケーションプログラムによ
ってスマートポインタをデリファレンスすることの試み
に応じて本機能によって実行されるのが好ましいステッ
プを示す流れ図である。これらのステップは好ましく
は、スマートポインタが各々インスタンスであるクラス
に関するデリファレンスオペレータの実施として定義さ
れる。C++プログラミング言語では、テンプレートが、
これらのステップを包含するようにスマートポインタに
関するデリファレンスオペレータを定義するのに使用さ
れ得る。ステップ501では、値「1」をもったスマー
トポインタのビットワイズANDが1に等しいならば
(即ち、スマートポインタが、被参照オブジェクトへの
直接的なポインタではなくスロットへのポインタを含む
ことを示し、スマートポインタの最小有効ビットが
「1」であるならば)、次いで、本機能はステップ50
3に続き、そうでなければ、スマートポインタに包含さ
れたポインタが、被参照オブジェクトへの直接的なポイ
ンタであることを示し、このビットワイズANDの結果
は「0」となり、本機能はステップ502に続く。ステ
ップ502では、本機能は、オペレータをデリファレン
スする標準ポインタを使用してスマートポインタにスト
アされた直接的なポインタをデリファレンスすることに
よって被参照オブジェクトを戻す。ステップ503で
は、本機能はスマートポインタの最小有効ビットを0か
ら1に変更させる。ステップ504では、値「1」が
「1」に等しい間、スロットのポインタのビットワイズ
ANDがスロットポインタによって指し示されているな
らば(即ち、スロットのポインタが、被参照オブジェク
トへの直接的なポインタではなく持続性ポインタである
ことを示し、最小有効ビットが「1」に等しいなら
ば)、次いで、本機能はステップ507に続き、そうで
なければ、スロットのポインタの最小有効ビットは
「0」であり、スロットのポインタは、被参照オブジェ
クトへの直接的なポインタであり、本機能はステップ5
05へ続く。ステップ505では、本機能は、スマート
ポインタによって指し示されたスロットからスマートポ
インタに直接的なポインタをコピーする。ステップ50
6では、本機能は、オペレータをデリファレンスする標
準ポインタを使用してスマートポインタにストアされた
直接的なポインタをデリファレンスすることによって被
参照オブジェクトを戻す。ステップ507では、本機能
は、スマートポインタによって指し示されたスロットの
ポインタの最小有効ビットの「1」を「0」に変更す
る。ステップ508では、本機能は、スマートポインタ
によって指し示されたスロットに包含された持続性ポイ
ンタを使用してオブジェクトサーバから、被参照オブジ
ェクトを得るために持続性オブジェクトシステムをコー
ルする。ステップ508では、本機能は更に、スロット
ポインタによって指し示されたスロットに、ロードされ
た被参照オブジェクトへの直接的なポインタをストアす
る。ステップ508の後、本機能は、スマートポインタ
に対する、被参照オブジェクトへの直接的なポインタを
コピーするため、且つ、被参照オブジェクトを戻すため
にステップ505に続く。
【0021】図6は、図5に示したステップ実行した結
果を示すメモリダイアグラムである。本機能がステップ
508により、被参照オブジェクト637をロードした
図4と、図6を比較することにより見出すことができ
る。ロードされた被参照オブジェクト637は好ましく
は、被参照オブジェクトのスロットをスロットテーブル
に配置するために、持続性ポインタから間接的なスロッ
トにマップするスロットテーブルインデックスと関連し
て使用することができる、持続性ポインタ638自身を
包含する。本機能は、被参照オブジェクト637への直
接的なポインタをスロットポインタ634に、且つ、ス
マートポインタ634によって以前に指し示されたスロ
ット636に更にストアしている。更に、被参照オブジ
ェクト637の配置に関するバイト整列リクエストのた
めに、これらのポインタが、被参照オブジェクトへの直
接的なポインタであることを示し、スマートポインタ6
34とスロット636との両方の最小有効ビットは
「0」である。
【0022】図5に示したデリファレンスオペレーショ
ンがスマートポインタに関して実施された後に、続いて
デリファレンスオペレーションは早く進む。スマートポ
インタの最小有効ビットが「0」であるので、本機能
は、スマートポインタ634の直接的なポインタ661
によって指し示された参照側オブジェクト637を返す
ために、ステップ501及び502を単に実行する。こ
の短くなったプロセスはメインメモリへの単一のアクセ
スのみを含むので、参照側オブジェクトへのポインタが
別のポインタを介して常に間接的である在来の間接的な
ソフトウェアスウィズリング技術よりも2倍速い。ある
場合では、被参照オブジェクトはメモリから必ずアンロ
ードされる。例は、ひょっとしたら、別のコンピュータ
システムの別のアプリケーションが、正しいアクセスで
オブジェクトをロードするのに必要な場合を含む。別の
例は、オブジェクトによって占有されたメモリが別の目
的のために使用され得る場合である。これらの状況で
は、本機能は、アプリケーションによって保留され、且
つ、他のロードされた保護されていないオブジェクトに
ストアされたオブジェクトへのいかなるスマートポイン
タをも無効にしない方法でアンロードするためにオブジ
ェクトを準備することができる。
【0023】図7は、アンロードするためのオブジェク
トを準備するために、本機能によって実施されるのが好
ましいステップを示す。本機能はまた、メインメモリ内
の別のアドレスへの再配置に関するオブジェクトを準備
するために、これらのステップを実行するのが好まし
い。アンローディング又は再配置する前にオブジェクト
を準備することは、オブジェクトの「アイドリング」と
して知られている。これらのステップは好ましくは、オ
ブジェクトに割り当てられた間接的なスロットを識別す
ることによってアンローディングするため準備するよう
に、オブジェクトを識別する。ステップ701乃至70
3では、本機能は、アイドル状態であるオブジェクトへ
の直接的なポインタを包含する各スマートポインタを介
してループし、該スマートポインタは、識別されたスロ
ットにストアされたアイドル状態であるオブジェクトを
介して直接的なポインタと同じ値を有する。好ましい実
施形態では、ステップ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で
は、スマートポインタが、その最小有効ビットによって
指示されているとき、被参照オブジェクトへの直接的な
ポインタを含むならば、次いで、本機能はステップ11
03に進み、そうでなければ、本機能はステップ110
4に進む。ステップ1103では、本機能は、「1」に
変更されたその最小有効ビットを持った被参照オブジェ
クトに割り当てられたスロットのアドレス含む、被参照
オブジェクトへの間接的なポインタを、スマートポイン
タにストアする。ステップ1104では、本機能は、次
のスマートポインタを処理するためにステップ1101
に戻ってループする。スマートポインタが残っていない
とき、これらのステップは終了する。
【0027】あるプログラミング環境は、不要部分の整
理と呼ばれる機構を提供し、それは即ち使用されていな
いデータ構造を識別し且つ割り当て解除するように、定
期的に実行される処理である。多くのかかるプログラミ
ング環境では、不要部分整理機構は、用いられている知
られたオブジェクトに包含されたポインタが、用いられ
ている知られたデータ構造を介して直接的又は間接的に
アクセスされうる各データ構造にアクセスするために、
再帰的にデリファレンスされることに応じて、「到達可
能性アルゴリズム」を使用して実施される。どんな残り
のデータ構造も、現在使用されていないと思われ、割り
当て解除される。この形の不要部分の整理が採用されて
いるプログラミング環境では、図11に示されたステッ
プを実行するのではなく、不要部分整理処理の部分とし
てポインタを再帰的にデリファレンスする間に出会う各
スマートポインタをアイドリングすることによって、大
規模アイドリングプロセスを実行するのが好ましい。こ
のことにより、本機能は、図11に示したステップによ
って利用される存在しているスマートポインタのリスト
を維持するコストを避けることができる。
【0028】アクセスされていないロードされた被参照
オブジェクトによって占有されたメインメモリの部分を
再生するために、本機能は、大規模アイドリングオペレ
ーションを実行した後に、所定の時間にフラッシュオペ
レーションを実行するのが好ましい。フラッシュオペレ
ーションでは、大規模アイドリングがよく考えられて使
用されておらず、且つ、アンロードされているので、あ
る時間の後に依然としてアイドル状態にあるオブジェク
トがパスされる。図12は、フラッシュオペレーション
を実行するために、本機能によって実行されるのが好ま
しいステップを示す流れ図である。ステップ1201乃
至1203では、本機能は、用いられている各スマート
ポインタを介してループする。ステップ1202では、
スロットが割り当てられた被参照オブジェクトへの直接
的なポインタを含むスマートポインタがないことを意味
し、スロットが依然としてアイドル状態であるならば、
次いで、本機能は、スロットが割り当てられたオブジェ
クトをアンロードするためにステップ1204に続く。
ステップ1202が1204にいった後、本機能は、次
ぎに使用されるスロットを処理するためのステップ12
01へ戻るようにループするためにステップ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 スマートポインタ
フロントページの続き (72)発明者 ケータン ダラール アメリカ合衆国 ワシントン州 98102 シアトル イレヴンス アベニュー イー スト 510

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 間接的なスロットを使用し、且つ、該間
    接的なスロットへのポインタ又はロードされた被参照オ
    ブジェクトへのポインタのいずれかを含むようになって
    いるスマートポインタを使用する参照側オブジェクト
    に、被参照オブジェクトへの持続性ポインタをスウィズ
    リングするためのメモリを有するコンピュータシステム
    における方法であって、 参照側オブジェクトをメモリにロードし、 参照側オブジェクトをロードするステップに応じて、 持続性ポインタを参照側オブジェクトから間接的なスロ
    ットにコピーし、 参照側オブジェクトにある持続性ポインタを間接的なス
    ロットへのポインタを包含するスマートポインタで置換
    し、 スマートポインタをデリファレンスするための試みを検
    出し、 この検出ステップに応じて、 間接的なスロットにストアされた持続性ポインタを使用
    して、前記被参照オブジェクトをメモリにロードし、 間接的なスロットにおける持続性ポインタを、ロードさ
    れた被参照オブジェクトへの直接的なポインタで置換
    し、 スマートポインタにおける間接的なスロットへのポイン
    タを、ロードされた被参照オブジェクトへの直接的なポ
    インタで置換し、 ロードされた被参照オブジェクトへのポインタをデリフ
    ァレンスする、ステップを有する方法。
  2. 【請求項2】 スマートポインタをデリファレンスする
    ための第2の試みを検出し、 前記検出ステップに応じて、スマートポインタに包含さ
    れたロードされた被参照オブジェクトへの直接的なポイ
    ンタをデリファレンスする、ステップを更に有する、請
    求項1に記載の方法。
  3. 【請求項3】 ロードされた被参照オブジェクトへの直
    接的なポインタを包含する1又はそれ以上の追加のスマ
    ートポインタが生成されている請求項1の方法であっ
    て、 ロードされた被参照オブジェクトをアイドル状態にする
    ための要求を受信し、 前記受信ステップに応じて、ロードされた被参照オブジ
    ェクトへのポインタを包含する各スマートポインタにつ
    いて、ロードされた被参照オブジェクトへの直接的なポ
    インタを間接的なスロットへのポインタで置換する、ス
    テップを更に有する、請求項1に記載の方法。
  4. 【請求項4】 ロードされた被参照オブジェクトへの直
    接的なポインタを間接的なスロットへのポインタで置換
    するステップの後で、 スマートポインタをデリファレンスするための第2の試
    みを検出し、 スマートポインタをデリファレンスするための第2の試
    みを検出するステップに応じて、 間接的なスロットへのポインタとスマートポインタと
    を、間接的なスロット内にストアしてあるロードされた
    被参照オブジェクトへの直接的なポインタで置換し、そ
    して、 ロードされた被参照オブジェクトへの直接的なポインタ
    をデリファレンスする、ステップを更に有する請求項3
    に記載の方法。
  5. 【請求項5】 追加のスマートポインタを使用して、1
    又はそれ以上の追加の被参照オブジェクトをメモリにロ
    ードするステップを更に有し、ロードされた被参照オブ
    ジェクトへの直接的なポインタを包含する1又はそれ以
    上の追加のスマートポインタが生成されている請求項1
    の方法であって、 識別された複数のロードされた被参照オブジェクトをア
    イドル状態にさせるための要求を受信し、 前記受信ステップに応じて、識別されたロードされた被
    参照オブジェクトのうちの1つへの直接的なポインタを
    包含するスマートポインタの各々について、識別された
    ロードされた被参照オブジェクトへの直接的なポインタ
    を、識別されたロードされた被参照オブジェクトに関す
    る間接的なスロットへのポインタで置換する、ステップ
    を更に含む、請求項1に記載の方法。 【請求項5】 スマートポインタのグループにおける不
    要部分の整理を実行するための請求項1に記載の方法で
    あって、 ロードされたオブジェクトへの直接的なポインタを包含
    するスマートポインタのグループにおけるスマートポイ
    ンタを識別し、 各識別されたスマートポインタに関して、 スマートポインタにおける直接的なポインタが指し示す
    同じロードされたオブジェクトへの直接的なポインタを
    包含する間接的なスロットを識別し、 スマートポインタにおける直接的なポインタを、識別さ
    れた間接的なスロットへのポインタで置換する、ステッ
    プを更に有する、請求項1に記載の方法。
  6. 【請求項6】 スマートポインタのグループで不要部分
    の整理を更に実行し、 ロードされたオブジェクトへの直接的なポインタを包含
    するスマートポインタのグループにおいてスマートポイ
    ンタを識別し、 認識された各スマートポインタに関して、 スマートポインタにおける直接的なポインタが指し示す
    同じロードされたオブジェクトへの直接的なポインタを
    包含する間接的なスロットを識別し、 スマートポインタにおける直接的なポインタを識別され
    た支持へのポインタで置換する、 ステップを更に含む、請求項1に記載の方法。
  7. 【請求項7】 前述のステップが、持続性オブジェクト
    ストアに対するオブジェクトへの変更を完遂するのに応
    じて実行される、請求項6に記載の方法。
  8. 【請求項8】 メモリを再生するための要求に応じて、 いかなるスマートポインタにおけるいかなる直接的なポ
    インタによっても指し示されていないオブジェクトを識
    別し、そして、 各識別されたオブジェクトに関して、 識別されたオブジェクトへの直接的なポインタを包含す
    る間接的なスロットを識別し、 識別されたオブジェクトをアンロードし、 識別された間接的なスロットにおける直接的なポインタ
    を、識別されたオブジェクトをリロードするのに使用す
    ることができるリローディング識別子で置換する、 ステップを更に有する、請求項6に記載の方法。
  9. 【請求項9】 メモリを再生するための要求に応じて、 いかなるスマートポインタにも包含されていないオブジ
    ェクトへの直接的なポインタを包含する間接的なスロッ
    トを識別し、 各識別された間接的なスロットに関して、 間接的なスロットにおける直接的なポインタによって指
    し示されたオブジェクトをアンローディングし、 間接的なスロットにおける直接的なポインタを、アンロ
    ードされたオブジェクトをリロードするのに使用するこ
    とができるリローディング識別子で置換する、ステップ
    を更に含む、請求項6に記載の方法。
  10. 【請求項10】 スマートポインタのグループで不要部
    分の整理を実行し、 ロードされたオブジェクトの選択されたグループのうち
    の1つへの直接的なポインタを包含するスマートポイン
    タのグループにおいてスマートポインタを識別し、 各識別されたスマートポインタに関して、 直接的なポインタ及びスマートポインタが指し示す同じ
    ロードされたオブジェクトへの直接的なポインタを包含
    する間接的なスロットを識別し、 スマートオブジェクトにおける直接的なポインタを、識
    別された間接的なスロットへのポインタで置換する、ス
    テップを更に有する、請求項1に記載の方法。
  11. 【請求項11】 メインメモリにストアされ、且つ、被
    参照オブジェクトへのメインメモリポインタを包含する
    間接的なスロットを使用して1又はそれ以上のスマート
    ポインタによって参照される被参照オブジェクトをアイ
    ドリングするための請求項1に記載の方法であって、 スマートポインタが、被参照オブジェクトへの直接的な
    ポインタを包含しないことを保証することによって、被
    参照オブジェクトをアイドル状態にさせるための要求を
    受信し、 前記受信ステップに応じて、被参照オブジェクトを参照
    する各スマートポインタに関して、間接的なスロットへ
    のポインタをスマートポインタにストアする、 ステップを更に有する、請求項1に記載の方法。
  12. 【請求項12】 スマートポインタをデリファレンスす
    る試みを受信し、 前記受信ステップに応じて、 スマートポインタにおける間接的なスロットへのポイン
    タを、被参照オブジェクトへのポインタで置換し、 ロードされた被参照オブジェクトへのポインタをデリフ
    ァレンスする、 ステップを更に有する、請求項11に記載の方法。
  13. 【請求項13】 ストアする前記ステップの後、メイン
    メモリから、被参照オブジェクトをアンロードするため
    の要求を受信し、 被参照オブジェクトをアンロードする要求を受信するス
    テップに応じて、 間接的なスロットに包含された被参照オブジェクトへの
    メインメモリポインタを、被参照オブジェクトをリロー
    ドするのに使用することができる持続性ポインタで置換
    し、 被参照オブジェクトをアンローディングする、 ステップを更に有する、請求項11に記載の方法。
  14. 【請求項14】 スマートポインタをデリファレンスす
    る試みを受信し、 前記受信ステップに応じて、 間接的なスロットにストアされた持続性ポインタを使用
    して、被参照オブジェクトをメインメモリにロードし、 間接的なスロットにおける持続性ポインタを、ロードさ
    れた被参照オブジェクトへのポインタで置換し、 スマートポインタにおける間接的なスロットへのポイン
    タを、ロードされた被参照オブジェクトへのポインタで
    置換し、 ロードされた被参照オブジェクトへのポインタをデリフ
    ァレンスする、 ステップを更に有する、請求項13に記載の方法。
  15. 【請求項15】 ストアするステップの後、被参照オブ
    ジェクトを新しいメモリ位置に再位置づけする要求を受
    信し、 被参照オブジェクトをアンロードするための要求を受信
    するステップに応じて、 被参照オブジェクトを新しいメモリ位置に移動させるた
    めに間接的なスロットにおけるポインタを使用し、 間接的なスロットに包含された被参照オブジェクトへの
    メインメモリポインタを、新しいメモリ位置へのメイン
    メモリポインタで置換する、ステップを更に有する、請
    求項11に記載の方法。
  16. 【請求項16】 移動及び置換ステップの後、スマート
    ポインタでデリファレンスオペレーションの呼び出しを
    検出し、 前記検出ステップに応じて、 スマートポインタにおける間接的なスロットへのポイン
    タを、間接的なスロットにおける新しいメモリ位置への
    ポインタで置換し、 新しいメモリ位置へのポインタをデリファレンスする、 ステップを更に有する、請求項15に記載の方法。
  17. 【請求項17】 メインメモリにおけるオブジェクトの
    位置の指示を包含する直接的なポインタとしてか、それ
    自身がメインメモリにおけるオブジェクトの位置の指示
    を包含する直接的なポインタの位置の指示を包含する間
    接的なポインタとしてか、のいずれかの被参照オブジェ
    クトへの参照を表わすことができるスウィズルされた参
    照データ構造を含むメインメモリであって、 前記スウィズルされた参照データ構造は、 スウィズルされた参照データ構造が、被参照オブジェク
    トに対する参照を直接的なポインタとして表わしている
    か、又は、間接的なポインタとして表わしているかの指
    示を含み、 スウィズルされた参照データ構造が被参照オブジェクト
    に対する参照を直接的なポインタとして表わしている
    か、又は、間接的なポインタとして表わしているかの前
    記指示が、スウィズルされた参照データ構造が直接的な
    ポインタとして被参照オブジェクトに対する参照を表わ
    していることを指示しているとき、メインメモリのオブ
    ジェクトの位置の指示を包含する直接的なポインタを、 スウィズルされた参照データ構造が被参照オブジェクト
    に対する参照を直接的なポインタとして表わしている
    か、又は、間接的なポインタとして表わしているかの前
    記指示が、スウィズルされた参照データ構造が間接的な
    ポインタとして被参照オブジェクトに対する参照を表わ
    していることを指示しているとき、それ自身にメインメ
    モリのオブジェクトの位置の指示を含む間接的なポイン
    タを、 それぞれ含むメインメモリ。
  18. 【請求項18】 メインメモリ内でのデータの位置の指
    示が所定のサイズを有し、スウィズルされた参照データ
    構造がまた、所定のサイズを有する、請求項17に記載
    のメインメモリ。
  19. 【請求項19】 メインメモリにおけるオブジェクトの
    位置の指示と、それ自身にメインメモリにおけるオブジ
    ェクトの位置の指示を含む直接的なポインタの位置との
    両方のうちの少なくとも1つのビットが使用されておら
    ず、 スウィズルされた参照データ構造が被参照オブジェクト
    に対する参照を直接的なポインタとして表わしている
    か、又は、間接的なポインタとして表わしているかの指
    示が、メインメモリにおけるオブジェクトの位置、若し
    くは、それ自身にメインメモリにおけるオブジェクトの
    位置の指示を含む直接的なポインタの位置の指示の使用
    されていないビットにストアされている、 請求項17に記載のメインメモリ。
  20. 【請求項20】 参照プログラムを実行するためのプロ
    セッサと、 メモリと、を備え、前記メモリが、前記参照プログラム
    の少なくとも一部分と、 スウィズルされた参照データ構造が、被参照オブジェク
    トに対する参照を直接的なポインタとして表わしている
    か、又は、間接的なポインタとして表わしているかどう
    かの指示と、を有し、 スウィズルされた参照データ構造が被参照オブジェクト
    に対する参照を直接的なポインタとして表わしている
    か、又は、間接的なポインタとして表わしているかの指
    示が、スウィズルされた参照データ構造が直接的なポイ
    ンタとして被参照オブジェクトに対する参照を表わして
    いることを指示しているときは、メインメモリにおける
    オブジェクトの位置の指示を包含する直接的なポインタ
    を、 スウィズルされた参照データ構造が被参照オブジェクト
    に対する参照を直接的なポインタとして表わしている
    か、又は、間接的なポインタとして表わしているかの指
    示が、スウィズルされた参照データ構造が間接的なポイ
    ンタとして被参照オブジェクトに対する参照を表わして
    いることを指示しているときは、それ自身にメインメモ
    リにおけるオブジェクトの位置の指示を含む直接的なポ
    インタの位置の指示を包含する間接的なポインタを、 それぞれ有し、ポインタスウィズリングデータ構造を使
    用するオブジェクトサーバによって提供される被参照オ
    ブジェクトへの参照プログラムによるアクセスを容易に
    するためのコンピュータシステム。
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 true JPH10254756A (ja) 1998-09-25
JP4176857B2 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
US6457019B1 (en) 1999-02-11 2002-09-24 Oracle Corp. Memory management within a run-time environment
US6434685B1 (en) 1999-02-11 2002-08-13 Oracle Corp. Paged memory management system 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
US6499095B1 (en) * 1999-02-11 2002-12-24 Oracle Corp. Machine-independent 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
US7280985B2 (en) * 2001-12-06 2007-10-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
US7693299B2 (en) * 2004-01-13 2010-04-06 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
EP0848324B1 (en) 2007-09-05
US5794256A (en) 1998-08-11
US6105041A (en) 2000-08-15
JP4176857B2 (ja) 2008-11-05
EP0848324A2 (en) 1998-06-17
DE69738101T2 (de) 2008-01-03

Similar Documents

Publication Publication Date Title
JP4176857B2 (ja) リファレンスされたオブジェクトを管理するための3状態リファレンスの使用
US5333315A (en) System of device independent file directories using a tag between the directories and file descriptors that migrate with the files
US5649139A (en) Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US6970990B2 (en) Virtual mode virtual memory manager method and apparatus
JP4511653B2 (ja) マルチスレッド仮想マシン内におけるメモリ・アロケーションの方法及び装置
US5761680A (en) Coherent film system access during defragmentation operations on a storage medium
US6725241B1 (en) Method and apparatus for freeing memory in a data processing system
US6460126B1 (en) Computer resource management system
US5539899A (en) System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage
US5555392A (en) Method and apparatus for a line based non-blocking data cache
US7587566B2 (en) Realtime memory management via locking realtime threads and related data structures
US6401181B1 (en) Dynamic allocation of physical memory space
US8478931B1 (en) Using non-volatile memory resources to enable a virtual buffer pool for a database application
US5555399A (en) Dynamic idle list size processing in a virtual memory management operating system
US6629111B1 (en) Memory allocation system
US9069477B1 (en) Reuse of dynamically allocated memory
US7493464B2 (en) Sparse matrix
US5414826A (en) System and method for memory management in microcomputer
KR20010082032A (ko) 영구적이고 확실한 저장 할당을 위한 시스템 및 방법
US6961840B2 (en) Method and apparatus for managing a dynamic alias page table
US20170139840A1 (en) Memory mapping for object-based storage devices
US11347698B2 (en) Garbage collection for hash-based data structures
JPH0279141A (ja) 仮想索引機構
US12019629B2 (en) Hash-based data structure
US7991976B2 (en) Permanent pool memory management method and system

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