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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage 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
ための3状態リファレンスの使用を提供する。 【解決手段】 好ましい実施形態では、ポインタスウィ
ズリング機能は、持続性ポインタをスウィズルするため
にリクエストを受け取り、それに応じて、持続性ポイン
タを間接的なスロットにコピーし、オリジナル持続性ポ
インタを、間接的なスロットへのポインタを包含するス
マートポインタで置換する。本機能がスマートポインタ
をデリファレンスするための試みを引き続いて検出した
とき、スマートポインタによって指し示された間接的な
スロットにストアされた持続性ポインタを使用する被参
照オブジェクトをロードする。更に、間接的なスロット
における持続性ポインタを、ロードされた被参照オブジ
ェクトへのポインタで置換する。最後に、スマートポイ
ンタをデリファレンスするための試みに応じて、ロード
された被参照オブジェクトへのポインタをデリファレン
スする。
Description
の分野に関し、特に、最適化オブジェクト参照の分野に
関する。
な、幾つかのコンピュータアプリケーションは典型的に
は、単一のコンピュータシステムを使用して、若しく
は、多数の接続されたコンピュータシステムを使用し
て、大幅な時間にわたってデータオブジェクトの大きな
セット(「objects 」)を構築し、維持し、アクセス
し、修正する。かかるオブジェクトにとってオブジェク
トセットの他のオブジェクトを参照することは一般的で
ある。かかるアプリケーションは、これらのオブジェク
トを維持するために持続的なオブジェクトシステムをし
ばしば使用し、それらをどんな接続されたコンピュータ
システムにもアクセスできるようにさせ且つ修正するこ
とができるようにする。持続性オブジェクトシステム
は、データベース又はファイルシステムのようなオブジ
ェクトサーバに不揮発性の仕方で持続性オブジェクトを
ストアすることによって、持続性オブジェクトの継続的
な使用可能性を保証しながら、コンピュータシステムに
おけるプログラムの実行によりアクセスされ且つ操作さ
れるべきコンピュータシステムのメインメモリに持続性
オブジェクトを移動させることができる。
ログラムが、そのメインメモリにおけるオブジェクトに
対するアクセス及び修正を終えるとき、持続性オブジェ
クトシステムは、オブジェクトをオブジェクトサーバに
転送し、該オブジェクトを不揮発性の仕方でストアす
る。転送されたオブジェクトは、オブジェクトセット内
の他のオブジェクトに対する参照を含むことができる。
転送の時点においては、これらの参照は、一般的に、被
参照オブジェクトがロードされている同じコンピュータ
システムのメインメモリ内のアドレスについてのポイン
タを各々有する。かかる参照は、ポインタによって反映
されていないコンピュータシステムの識別と、コンピュ
ータシステムのメインメモリの特定のコンテンツとに依
存するものであり、これらは、プログラムが転送された
オブジェクトを次回にオブジェクトサーバから転送する
ときには完全に異なったものとなり得る。オブジェクト
サーバが、別のコンピュータシステムのプログラムに対
してメインメモリポインタを含む形態のオブジェクトを
後で提供するならば、オブジェクトのメインメモリポイ
ンタは無効となる。それゆえ、オブジェクトをオブジェ
クトサーバに転送するプロセスの部分として、持続性オ
ブジェクトシステムは、「パッシベーション」と呼ばれ
るプロセスを実施する。パッシベーションは、該当する
コンピュータシステムのメインメモリ内の、被参照オブ
ジェクトを探索するのに使用されるパッシベーションさ
れたオブジェクトでのメインメモリポインタの参照を、
オブジェクトサーバ内の被参照オブジェクトを探索する
ための持続性オブジェクトシステムが使用する持続性ポ
インタによって置き換えることを含む。(持続性ポイン
タはまた、「オブジェクト識別子」(OIDs)と呼ば
れ、汎用一意性識別子(GUID)データ構造を使用し
て表わし得る。)こういう方法で、持続性ポインタを有
するメインメモリポインタを置き換えることは、メイン
メモリポインタを「アンスウィズリング(unswizzling
)」すると呼ばれる。
ムを後で使用して、オブジェクトサーバに転送されたオ
ブジェクトにアクセスしたり、該オブジェクトを修正し
たりするときには、持続性オブジェクトシステムは、オ
ブジェクトをオブジェクトサーバから、プログラムが
「デパッシベーション」プロセスを実行し、完遂してい
るコンピュータシステムのメインメモリに転送する。デ
パッシベーションは、プログラムが、持続性ポインタに
よって参照された被参照オブジェクトにアクセスし、該
オブジェクトを修正するためにプログラムによって一般
的に使用することができない転送されたオブジェクトに
おける持続性ポインタを、被参照オブジェクトにアクセ
スし、該オブジェクトを修正するために使用することが
できるメインメモリポインタによって、置換することを
含む。このようにメインメモリポインタを備えた持続性
ポインタを置換することは、持続性ポインタを「スウィ
ズリング」すると呼ばれる。
い不利益を有する3つの範疇に分類分けされる。ハード
ウェアスウィズリングは、被参照オブジェクトに対する
メインメモリポインタが保護されていないオブジェクト
を使用するプログラムによって解かれるとき、被参照オ
ブジェクトをロードするために、存在する仮想メモリ管
理システムのページングシステムを使用する。仮想メモ
リマネージャは、実際のメインメモリより大きいメイン
メモリアドレス空間を固定長のページに分ける。メイン
メモリ空間におけるいくらかのページはメインメモリに
実際に表わされているが、他は「ページアウト」であ
る。プログラムが、ポインタをページアウトされたペー
ジにデリファレンスするのを試みるとき、その試みは
「ページフォルト」と呼ばれるハードウェア割り込みを
生成する。ページフォルトは、(殆どの場合、別のペー
ジをページアウトすることにより)メインメモリにおけ
るフォルトページのためのメモリ空間を見つけ、フォル
トページをディスクからメインメモリにロードし、フォ
ルトページをページ・インとマークし、デリファレンス
オペレーションを続けさせることによって、フォルトペ
ージを「ページ・イン」する割り込みサービスルーチン
によって処理される。
ば、保護されていないオブジェクトがロードされたと
き、各持続性ポインタは、ページアウトとマークされた
「ゴーストページ」へのメインメモリポインタにより置
換される。プログラムがメインメモリポインタをゴース
トページに対してデリファレンスするように試みたと
き、ページフォルトが生成され、修正されたページフォ
ルト割り込み処理ルーチンは、被参照オブジェクトをそ
の持続性ポインタを使用してオブジェクトサーバからロ
ードし、ページ・インされたものとしてゴーストページ
をマークし、デリファレンスオペレーションを続けさせ
る。次いで、メインメモリポインタをデリファレンスす
る試みが更なる遅延なしに続けられる。ハードウェアス
ウィズリングは、被参照オブジェクトが実際にアクセス
されるまでロードされないという利点を有する。ハード
ウェアスウィズリングはまた、2つの重要な欠点を有し
ている。即ち、(1) ページフォルト及びページングはあ
るプロセッサにおいておおよそ2000命令を実行する
のと同じだけ要する高価な処理である。(2) 仮想メモリ
管理システムによって使用される固定されたページサイ
ズは可変サイズオブジェクトをストアするのに不適切で
あり、それにより、ロードされたオブジェクトより大き
なメインメモリのセクションをロードされたオブジェク
トに充てられるようにし、割り当てられたページのサイ
ズを超えるように時間をかけてそのサイズに成長するオ
ブジェクトを収容することができない。
護されていないオブジェクトにおけるポインタと被参照
オブジェクトとの間に間接のレベルを提供するための
「常駐オブジェクト記述子」と呼ばれる記憶場所を使用
する。保護されていないオブジェクトがロードされた
後、保護されていないオブジェクトにおける各持続性ポ
インタは、常駐オブジェクト記述子に移動され、常駐オ
ブジェクト記述子に対するポインタと置き換えられる。
最初に常駐オブジェクト記述子に対するポインタにデリ
ファレンスすることにより、被参照オブジェクトをロー
ドすることができ、メインメモリポインタをオブジェク
ト記述子におけるロードされた被参照オブジェクトにス
トアする。次いで、常駐オブジェクト記述子におけるロ
ードされた被参照オブジェクトに対するメインメモリポ
インタは、被参照オブジェクトへのアクセスを提供する
ようにデリファレンスされる。常駐オブジェクト記述子
に対するポインタが続いてデリファレンスされたとき、
常駐オブジェクト記述子におけるロードされた被参照オ
ブジェクトに対するメインメモリポインタは、被参照オ
ブジェクトにアクセスするのに使用される。ハードウェ
アスウィズリングと同様に、間接的ソフトウェアスウィ
ズリングは、被参照オブジェクトが実際にアクセスされ
るまで、ロードされないという利点を有する。更に、被
参照オブジェクトは、保護されていないオブジェクトに
ストアされた常駐オブジェクト記述子に対するポインタ
を無効にすることなくアンロードされ得るか若しくは再
配置され得る。しかし、間接的ソフトウェアスウィズリ
ングはまた、著しい欠点を有する。即ち、プログラム
が、被参照オブジェクトにアクセスする度に要求される
2つのメインメモリポインタ(初めに保護されていない
オブジェクト、2番目に常駐オブジェクト記述子)への
デリファレンスは、単一のメインメインメモリポインタ
をデリファレンスするコストの2倍かかり、若しくは、
あるプロセッサにおける90命令を実行するのと同じだ
けの時間を必要とする。
持続性ポインタを被参照オブジェクトに対して直接にメ
インメモリポインタと置換する。このアプローチは間接
的なソフトウェアスウィズリングによって受ける2重間
接の余分な時間コストを克服するが、それは、保護され
ていないオブジェクトにストアされた直接的なメインメ
モリポインタを無効にする被参照オブジェクトをアンロ
ードするか若しくは再配置するという欠点を有する。こ
のことにより、保護されていないオブジェクトによって
リファレンスされているオブジェクトからメモリを再配
置又は再生するための努力をすることが困難若しくは不
可能である。在来のスウィズリング技術の欠点であった
としても、スウィズリング技術が被参照オブジェクトを
アンロード及び再配置することを容易にする低い時間コ
ストを有しているならば、著しく有用であろう。
ェクトへのアクセスを管理するために3状態リファレン
スを使用する。本発明による好ましい実施形態では、持
続性ポインタスウィズリング機能(「本機能」)は、被
参照オブジェクトをオブジェクトサーバから得るのに使
用できる持続性ポインタを、スマートポインタで置換す
る。スマートポインタは、被参照オブジェクトがロード
されているメインメモリの位置を直接指し示し得るか、
若しくは、間接的なスロットを介して、被参照オブジェ
クトを直接指し示し得る。スマートポインタが初めにデ
リファレンスされたとき、スマートポインタは間接的な
スロットへのポインタを包含する。この点で、間接的な
スロットの持続性ポインタは、被参照オブジェクトをオ
ブジェクトサーバからメインメモリ内へロードするのに
使用される。被参照オブジェクトがロードされた後、ロ
ードされたオブジェクトへのポインタは、間接的なスロ
ットとスマートポインタとの両方にストアされる。スマ
ートポインタが続いてデリファレンスされたとき、それ
は、間接的なスロットを使用しないで被参照オブジェク
トへ直接アクセスするように直接デリファレンスされ
た、ロードされたオブジェクトへの直接的なポインタを
含む。
ドル状態」にするために、本機能は、スマートポインタ
における直接的なポインタを間接的なスロットへのポイ
ンタで置換する。ロードされた被参照オブジェクトがア
イドル状態にあるとき、本機能は、間接的なスロットに
おけるポインタを単に適応することによって、スマート
ポインタを無効にすることなくメインメモリにそれを再
配置し得る。被参照オブジェクトがアイドル状態にある
とき、本機能はまた、被参照オブジェクトをメインメモ
リから除去し得る。本機能が、被参照オブジェクトをメ
インメモリから除去するとき、それは間接的なスロット
における被参照オブジェクトに関する持続性ポインタを
ストアするので、スマートポインタの引き続きのデリフ
ァレンスによって、被参照オブジェクトをリロードさせ
る。本機能のこれらの特徴は、使用されていないメモリ
を再生するための不要部分の整理スキームで用いられる
のが好ましく、被参照オブジェクトは、最近使用されて
いないときアイドル状態にされ、メインメモリから除去
できる状態になる。
のアクセスを管理するための3状態リファレンスを使用
する。本発明によれば、持続性ポインタスウィズリング
機能(「本機能」)は、参照側オブジェクトにおいて、
アンロードされた被参照オブジェクトに対する持続性ポ
インタを被参照オブジェクトに対するスマートポインタ
と置換する。好ましい実施形態では、参照側オブジェク
トがロードされたとき、本機能は、持続性ポインタを参
照側オブジェクトから間接的なスロットのテーブルにお
ける間接的なスロットに最初に移動させ、これが持続性
ポインタであることを示す指示と一緒にストアする。本
機能はまた、この点で、参照側オブジェクトにおける持
続性ポインタを、間接的なスロットに対するポインタを
含み且つ被参照オブジェクトに対する直接的なポインタ
を含まないことを指示するスマートポインタと置換す
る。間接的なスロットに対するポインタを包含するスマ
ートポインタは、被参照オブジェクトのための「間接的
なリファレンス」と言われる。
後でデリファレンスされるとき、デリファレンスオペレ
ーションは、スマートポインタに包含されるポインタが
被参照オブジェクトに対する直接的なポインタでないと
いうことを判断し、中央データ構造の持続性ポインタに
アクセスするために該ポインタを使用する。次いで、本
機能は、被参照オブジェクトを都合の良いアドレスでメ
インメモリにロードするために持続性ポインタを使用す
る。本機能は、被参照オブジェクトに対する直接的なポ
インタであることを指示して、参照側オブジェクトにお
ける参照と間接的なスロットとの両方に、このアドレス
をストアする。被参照オブジェクトへの次のアクセス
は、被参照オブジェクトをリロードすること無く又はス
ロットテーブルにアクセスすること無く、参照側オブジ
ェクトにストアされた直接的なポインタを直接使用する
ことによって迅速に進む。別の参照側オブジェクトが同
じ被参照オブジェクトに対するリファレンスを含む場
合、これらの参照は、第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並びに他の被参照オブジェクト(図示せず)
を更に含む。
にアクセスするオブジェクトのネットワークコネクショ
ン122が、オブジェクトサーバコンピュータシステム
150のネットワークコネクション152に接続されて
いることも示す。オブジェクトサーバコンピュータシス
テム150は、不揮発性の仕方で持続性オブジェクトの
セットをストアすることによって、持続性オブジェクト
のセットを保持するオブジェクトサーバ153を含む。
オブジェクトサーバ153は、持続性オブジェクトをオ
ブジェクトサーバの中及び外に転送するように、持続性
オブジェクトシステムの他のパスからのリクエストに応
答する。オブジェクトサーバコンピュータシステム15
0はまた、オブジェクトサーバ153によって使用され
ているプロセッサ151を含む。本機能が好ましくは、
上述したように構成されたコンピュータシステムで実行
されるけれども、当業者は、異なる構成を有するコンピ
ュータシステムで実行され得ることも認識するであろ
う。例えば、コンピュータシステムは図1に示した機能
の全てを包含していなくても良く、或いは、図1に示さ
れていない機能を包含しても良い。更に、オブジェクト
サーバ153は、オブジェクトサーバコンピュータシス
テム150の代わりにコンピュータシステム100にア
クセスするオブジェクトに配置され得る。
つ保護しないように、好ましくは本機能によって行われ
るステップを示す。本機能は、アプリケーションからの
直接的なリクエストに応じて持続性オブジェクトをロー
ドし且つ保護しないようにしうる。以下で議論するよう
に、本機能はまた、持続性オブジェクトへのスマートポ
インタをデリファレンスするように、アプリケーション
による試みに応じて持続性オブジェクトをロードし且つ
保護しないようにし得る。ステップ201では、本機能
は、オブジェクトサーバ153(図1)からオブジェク
トを得、オブジェクトをメインメモリ130にストアす
るために、持続性オブジェクトに関する持続性ポインタ
を使用する。ステップ201でロードされたオブジェク
トは、他の持続性オブジェクトへの1又はそれ以上のポ
インタを含み得る。他のオブジェクトへのかかるポイン
タは一般的には、ステップ201でロードされたオブジ
ェクトの早期パッシベーションの結果、持続性ポインタ
によって被参照オブジェクトをオブジェクトサーバから
得るのに使用され得る持続性ポインタである。ステップ
203はまた、間接的なスロットのポインタが、被参照
オブジェクトへの持続性ポインタであり、デ被参照オブ
ジェクトに直接的なメインメモリポインタではない、間
接的なスロットに指示をストアするのが好ましい。
示すメモリダイアグラムである。図3は、メインメモリ
330並びにメインメモリのコンテンツの部分を示す。
メインメモリには、ステップ201でロードされた参照
側オブジェクト333とスロットテーブル335が示さ
れている。スロットテーブルは、スロット336、34
1、342、、343及び344を含む多数のスロット
を含む。ステップ201でロードされたとき、参照側オ
ブジェクト333は1つの持続性ポインタ371を含
む。図2に戻ると、ステップ202乃至205では、本
機能はロードされたオブジェクトを保護しない。本機能
は、ロードされたオブジェクトに包含される各持続性ポ
インタに関してステップ202乃至205をループす
る。ステップ203では、本機能は、持続性ポインタを
スロットテーブルの空の間接的なスロットにコピーする
ことにより持続性ポインタによって被参照オブジェクト
にスロットテーブル135(図1)の間接的スロットを
割り当てる。
した結果を示すメモリダイアグラムである。持続性ポイ
ンタ371(図3)が参照側オブジェクト333から、
ステップ202によってスロットテーブル435の空の
スロット436にコピーされていることが図4から分か
る。しかしながら、スロットテーブルの間接的なスロッ
トが被参照オブジェクトに既に割り当てられているなら
ば、本機能は203において別の間接的なスロットを被
参照オブジェクトに割り当てないのが好ましい。本機能
は好ましくは、スロットテーブルのスロットが、被参照
オブジェクトの持続性ポインタからそれらの被参照オブ
ジェクトに割り当てられたスロットテーブルのスロット
にマップするスロットテーブルにインデックスを保持す
ることによって被参照オブジェクトに既に割り当てられ
ているかどうかを判断する。このインデックスは、スロ
ットテーブルと別であってよく、またはスロットテーブ
ルに直接統合され得る。インデックスが、スロットテー
ブルの間接的なスロットが被参照オブジェクトに既に割
り当てられていることを指示し、且つ、本機能がスロッ
トテーブルのスロットを被参照オブジェクトに割り当て
るとき、本機能はまた、被参照オブジェクトの持続性ポ
インタから割り当てられたスロットにマッピングするこ
とを含むようにこのインデックスを更新するのが好まし
い。
ブジェクトに関する間接的なスロットへのポインタを含
むスマートポインタで、ロードされたオブジェクトの持
続性ポインタを置換する。ステップ204の一部では、
本機能は、持続性ポインタをスマートポインタで置換
し、スマートポインタによって包含されたポインタが、
被参照オブジェクトを直接指し示すのではなく、間接的
なスロットを指し示すスマートポインタに指示をストア
する。ステップ204では、本機能が参照側オブジェク
ト333(図3)の持続性ポインタ371をスマートポ
インタ434で置換することが図4から分かる。スマー
トポインタ434は、スロット436へのポインタ、並
びに、スマートポインタによって包含されたポインタ4
61が、被参照オブジェクトを直接指し示すのではな
く、スロットを指し示す指示(「1」)462とを含
む。アプリケーションが、保護されていないオブジェク
トを操作するようにするメインメモリポインタの長さを
スマートポインタの長さと同じにさせるために、本機能
は、使用されていないビット位置のビットとしてこの指
示を、間接的なスロットへのポインタにストアするのが
好ましい。メモリバイト整列要求のために、間接的なス
ロットへのポインタの1又はそれ以上の最小有効ビット
は使用されておらず、他のオブジェクトに対するポイン
タの最小有効ビットと同じくらいである。それゆえ、本
機能は、スマートポインタに包含されたメインメモリソ
ータの最小有効ビットのスマートポインタに指示をスト
アするのが好ましい。指示がまた、多くの他の方法で有
利にストアされ得ることは、当業者には明らかであろ
う。ステップ205では、本機能は、次の持続性ポイン
タをロードされたオブジェクトで処理するために、ステ
ップ202に戻ってループする。ステップ205の後、
これらのステップは終了する。本機能が、図2に示した
ようにオブジェクトをロードし且つ保護しない後に、オ
ブジェクトがロードされたアプリケーションはメインメ
モリのオブジェクトにアクセスすることができ、特に、
スマートポインタ434(図4)としてオブジェクトに
発生するスマートポインタをデリファレンスし得る。
ってスマートポインタをデリファレンスすることの試み
に応じて本機能によって実行されるのが好ましいステッ
プを示す流れ図である。これらのステップは好ましく
は、スマートポインタが各々インスタンスであるクラス
に関するデリファレンスオペレータの実施として定義さ
れる。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に続く。
果を示すメモリダイアグラムである。本機能がステップ
508により、被参照オブジェクト637をロードした
図4と、図6を比較することにより見出すことができ
る。ロードされた被参照オブジェクト637は好ましく
は、被参照オブジェクトのスロットをスロットテーブル
に配置するために、持続性ポインタから間接的なスロッ
トにマップするスロットテーブルインデックスと関連し
て使用することができる、持続性ポインタ638自身を
包含する。本機能は、被参照オブジェクト637への直
接的なポインタをスロットポインタ634に、且つ、ス
マートポインタ634によって以前に指し示されたスロ
ット636に更にストアしている。更に、被参照オブジ
ェクト637の配置に関するバイト整列リクエストのた
めに、これらのポインタが、被参照オブジェクトへの直
接的なポインタであることを示し、スマートポインタ6
34とスロット636との両方の最小有効ビットは
「0」である。
ンがスマートポインタに関して実施された後に、続いて
デリファレンスオペレーションは早く進む。スマートポ
インタの最小有効ビットが「0」であるので、本機能
は、スマートポインタ634の直接的なポインタ661
によって指し示された参照側オブジェクト637を返す
ために、ステップ501及び502を単に実行する。こ
の短くなったプロセスはメインメモリへの単一のアクセ
スのみを含むので、参照側オブジェクトへのポインタが
別のポインタを介して常に間接的である在来の間接的な
ソフトウェアスウィズリング技術よりも2倍速い。ある
場合では、被参照オブジェクトはメモリから必ずアンロ
ードされる。例は、ひょっとしたら、別のコンピュータ
システムの別のアプリケーションが、正しいアクセスで
オブジェクトをロードするのに必要な場合を含む。別の
例は、オブジェクトによって占有されたメモリが別の目
的のために使用され得る場合である。これらの状況で
は、本機能は、アプリケーションによって保留され、且
つ、他のロードされた保護されていないオブジェクトに
ストアされたオブジェクトへのいかなるスマートポイン
タをも無効にしない方法でアンロードするためにオブジ
ェクトを準備することができる。
トを準備するために、本機能によって実施されるのが好
ましいステップを示す。本機能はまた、メインメモリ内
の別のアドレスへの再配置に関するオブジェクトを準備
するために、これらのステップを実行するのが好まし
い。アンローディング又は再配置する前にオブジェクト
を準備することは、オブジェクトの「アイドリング」と
して知られている。これらのステップは好ましくは、オ
ブジェクトに割り当てられた間接的なスロットを識別す
ることによってアンローディングするため準備するよう
に、オブジェクトを識別する。ステップ701乃至70
3では、本機能は、アイドル状態であるオブジェクトへ
の直接的なポインタを包含する各スマートポインタを介
してループし、該スマートポインタは、識別されたスロ
ットにストアされたアイドル状態であるオブジェクトを
介して直接的なポインタと同じ値を有する。好ましい実
施形態では、ステップ701は、アイドル状態であるオ
ブジェクトに割り当てられた間接的なスロットに関連し
たスマートポインタのリストをトラバースすることを含
む。この実施形態は比較的低い時間コストを有するが、
各間接的なスロットに関連したスマートポインタのリス
トを維持することを要求する。変形実施形態では、ステ
ップ701は、メインメモリに作られている全てのスマ
ートポインタのリストをトラバースすることを含む。か
かる変形実施形態は、比較的大きな時間コストを有する
という欠点を有するけれども、ストレージと、各間接的
なスロットに関するスマートポインタのリストを保持す
ることの処理要求とを回避するという利点を有する。ス
テップ702では、アイドル状態であるオブジェクトへ
の直接的なポインタを包含する各スマートポインタに関
して、本機能は、スマートポインタの識別されたスロッ
トへのポインタを直接的なポインタの適所にストアす
る。ステップ702の部分として、本機能はまた、スマ
ートポインタがいま、被参照オブジェクトへの直接的な
ポインタではなく間接的なスロットへのポインタを含む
ことを指示するように、スマートポインタの最小有効ビ
ットを「1」に変更する。ステップ703では、本機能
は、アイドル状態であるオブジェクトへの直接的なポイ
ンタを包含する次のスマートポインタを処理するために
ステップ701へ戻してループする。かかる各スマート
ポインタが処理された後、これらのステップは終了す
る。これらのステップの終了で、アイドル状態にされた
オブジェクトへの直接的なポインタを包含するメインメ
モリにスマートポインタはない。むしろ、アイドル状態
にされたオブジェクトを参照する各スマートポインタ
は、間接的なスロットを介する。
結果を示すメモリダイアグラムである。本機能が、スマ
ートポインタ634(図6)の直接的なポインタ661
を、被参照オブジェクトに関するスロット836へのポ
インタで置換する図6と図8を比較することによって見
出すことができる。本機能は更に、スマートポインタの
最小有効ビットを「1」に変更し、スマートポインタ
が、被参照オブジェクトへの直接的なポインタではな
く、間接的なスロットへのポインタを包含することを含
む。図9は、オブジェクトをアンロードするために本機
能によって実施されるのが好ましいステップを示す流れ
図である。ステップ901では、本機能は、図7に示し
たようにアンロードされているオブジェクトに対して設
計された間接的なスロットをアイドル状態にさせる。ス
テップ902では、本機能は、アンロードされているオ
ブジェクトによって占有されたメインメモリの部分を割
り当て解除させる。ステップ903では、本機能は、ア
ンロードされているオブジェクトに対して割り当てられ
た間接的なスロットにおける直接的なポインタを、アン
ロードされているオブジェクトへの持続性ポインタで置
換する。次いで、これらのステップは終了する。アンロ
ードされたオブジェクトへのスマートポインタが後でデ
リファレンスされるならば、本機能は、アンロードされ
たオブジェクトをオブジェクトサーバから再検索するた
めに、間接的なスロットにストアされた持続性ポインタ
を使用する。
ために図9に示したステップを実行した後、メインメモ
リは図4に示された状態に戻される。すなわち、スマー
トポインタ434は、アンロードされたオブジェクトに
割り当てあられた間接的なスロット436へのポインタ
461を含む。間接的なスロット436は、本機能が被
参照オブジェクトをリロードするのに使用することがで
きる、被参照オブジェクトへの持続性ポインタを包含す
るスマートポインタ461は後でデリファレンスされ
る。本機能はまた、メインメモリにロードされテいる
間、被参照オブジェクトの再配置を行う。図10は、オ
ブジェクトをメインメモリに再配置するために本機能に
よって実行されるのが好ましいステップを示す流れ図で
ある。ステップ1001では、本機能は、図7に示した
ように再配置されているオブジェクトに割り当てられた
スロットをアイドル状態にさせる。ステップ1002で
は、本機能は、被参照オブジェクトをメインメモリの別
の場所にコピーすることにより、且つ、被参照オブジェ
クトをフリープールに元々包含しているメモリを戻すこ
とにより、被参照オブジェクトをメインメモリに再配置
させる。ステップ1003では、本機能は、被参照オブ
ジェクトがステップ1002で移動された新しい位置へ
の直接的なポインタを、再配置されたオブジェクトに割
り当てられたスロットにストアさせる。次いで、これら
のステップは終了する。
ァレンスされた全てのオブジェクトをアイドル状態にさ
せる処理を、何回も実行するのが好ましい。この処理は
「大規模アイドリング」と呼ばれ、大規模なアイドリン
グから長い時間が過ぎた後に依然としてアイドル状態に
あるスロットは、大規模アイドリング処理が実行されて
からの間にデリファレンスされなかったスマートポイン
タに対応するものであるから、この処理は、本機能が頻
繁にデリファレンスされていないスマートポインタを追
跡するのを可能にする。図11は、大規模アイドリング
処理を実行するために本機能によって実行されるのが好
ましいステップを示す流れ図である。ステップ1101
乃至1104では、本機能は、存在している各スマート
ポインタを介してループする。このループは好ましく
は、スマートポインタが作り出されたとき又は壊れたと
き、更新されている存在しているスマートポインタのリ
ストをトラバースすることを含む。ステップ1102で
は、スマートポインタが、その最小有効ビットによって
指示されているとき、被参照オブジェクトへの直接的な
ポインタを含むならば、次いで、本機能はステップ11
03に進み、そうでなければ、本機能はステップ110
4に進む。ステップ1103では、本機能は、「1」に
変更されたその最小有効ビットを持った被参照オブジェ
クトに割り当てられたスロットのアドレス含む、被参照
オブジェクトへの間接的なポインタを、スマートポイン
タにストアする。ステップ1104では、本機能は、次
のスマートポインタを処理するためにステップ1101
に戻ってループする。スマートポインタが残っていない
とき、これらのステップは終了する。
理と呼ばれる機構を提供し、それは即ち使用されていな
いデータ構造を識別し且つ割り当て解除するように、定
期的に実行される処理である。多くのかかるプログラミ
ング環境では、不要部分整理機構は、用いられている知
られたオブジェクトに包含されたポインタが、用いられ
ている知られたデータ構造を介して直接的又は間接的に
アクセスされうる各データ構造にアクセスするために、
再帰的にデリファレンスされることに応じて、「到達可
能性アルゴリズム」を使用して実施される。どんな残り
のデータ構造も、現在使用されていないと思われ、割り
当て解除される。この形の不要部分の整理が採用されて
いるプログラミング環境では、図11に示されたステッ
プを実行するのではなく、不要部分整理処理の部分とし
てポインタを再帰的にデリファレンスする間に出会う各
スマートポインタをアイドリングすることによって、大
規模アイドリングプロセスを実行するのが好ましい。こ
のことにより、本機能は、図11に示したステップによ
って利用される存在しているスマートポインタのリスト
を維持するコストを避けることができる。
オブジェクトによって占有されたメインメモリの部分を
再生するために、本機能は、大規模アイドリングオペレ
ーションを実行した後に、所定の時間にフラッシュオペ
レーションを実行するのが好ましい。フラッシュオペレ
ーションでは、大規模アイドリングがよく考えられて使
用されておらず、且つ、アンロードされているので、あ
る時間の後に依然としてアイドル状態にあるオブジェク
トがパスされる。図12は、フラッシュオペレーション
を実行するために、本機能によって実行されるのが好ま
しいステップを示す流れ図である。ステップ1201乃
至1203では、本機能は、用いられている各スマート
ポインタを介してループする。ステップ1202では、
スロットが割り当てられた被参照オブジェクトへの直接
的なポインタを含むスマートポインタがないことを意味
し、スロットが依然としてアイドル状態であるならば、
次いで、本機能は、スロットが割り当てられたオブジェ
クトをアンロードするためにステップ1204に続く。
ステップ1202が1204にいった後、本機能は、次
ぎに使用されるスロットを処理するためのステップ12
01へ戻るようにループするためにステップ1203へ
続く。使用されているスロットが残っていないとき、こ
れらのステップは終了する。
れ且つ説明されているけれども、正式及び詳細な種々の
変更又は修正が本発明の範囲から逸脱することなしにな
されることは当業者には理解されるであろう。例えば、
不要部分の整理及びフラッシュオペレーションは、使用
されていない被参照オブジェクトのアンローディングに
おいて各々生じる種々の異なる仕方で実行され得る。例
えば、本機能は、それらの最後のアイドリングの時間に
よってストアされたオブジェクトのリストを保持するこ
とができ、最も早く最後のアイドル状態になったオブジ
ェクトを定期的にアンロードする。また、スマートポイ
ンタ及び間接的なスロットは、それらが、ポインタの最
小有効ビットに「0」としてストアされているより、被
参照オブジェクトへの直接的なポインタを含んでいるか
どうかという他の指示を使用し得る。例えば、本機能
は、ポインタから分離したフラグとしてこれらの指示を
ストアし得る。
ステムのハイレベルブロック図である。
ーションするための本機能によって実施されるのが好ま
しいステップを示す流れ図である。
グラムである。
モリダイアグラムである。
アプリケーションプログラムによる試みに応じた使用率
によって実行されるのが好ましいステップを示す流れ図
である。
ダイアグラムである。
めに本機能によって実行されるのが好ましいステップを
示す。
ダイアグラムである。
よって実行されるのが好ましいステップを示す流れ図で
ある。
するために本機能によって実行されるのが好ましいステ
ップを示す流れ図である。
に本機能によって実行されるのが好ましいステップを示
す流れ図である。
って実行されるのが好ましいステップを示す流れ図であ
る。
Claims (20)
- 【請求項1】 間接的なスロットを使用し、且つ、該間
接的なスロットへのポインタ又はロードされた被参照オ
ブジェクトへのポインタのいずれかを含むようになって
いるスマートポインタを使用する参照側オブジェクト
に、被参照オブジェクトへの持続性ポインタをスウィズ
リングするためのメモリを有するコンピュータシステム
における方法であって、 参照側オブジェクトをメモリにロードし、 参照側オブジェクトをロードするステップに応じて、 持続性ポインタを参照側オブジェクトから間接的なスロ
ットにコピーし、 参照側オブジェクトにある持続性ポインタを間接的なス
ロットへのポインタを包含するスマートポインタで置換
し、 スマートポインタをデリファレンスするための試みを検
出し、 この検出ステップに応じて、 間接的なスロットにストアされた持続性ポインタを使用
して、前記被参照オブジェクトをメモリにロードし、 間接的なスロットにおける持続性ポインタを、ロードさ
れた被参照オブジェクトへの直接的なポインタで置換
し、 スマートポインタにおける間接的なスロットへのポイン
タを、ロードされた被参照オブジェクトへの直接的なポ
インタで置換し、 ロードされた被参照オブジェクトへのポインタをデリフ
ァレンスする、ステップを有する方法。 - 【請求項2】 スマートポインタをデリファレンスする
ための第2の試みを検出し、 前記検出ステップに応じて、スマートポインタに包含さ
れたロードされた被参照オブジェクトへの直接的なポイ
ンタをデリファレンスする、ステップを更に有する、請
求項1に記載の方法。 - 【請求項3】 ロードされた被参照オブジェクトへの直
接的なポインタを包含する1又はそれ以上の追加のスマ
ートポインタが生成されている請求項1の方法であっ
て、 ロードされた被参照オブジェクトをアイドル状態にする
ための要求を受信し、 前記受信ステップに応じて、ロードされた被参照オブジ
ェクトへのポインタを包含する各スマートポインタにつ
いて、ロードされた被参照オブジェクトへの直接的なポ
インタを間接的なスロットへのポインタで置換する、ス
テップを更に有する、請求項1に記載の方法。 - 【請求項4】 ロードされた被参照オブジェクトへの直
接的なポインタを間接的なスロットへのポインタで置換
するステップの後で、 スマートポインタをデリファレンスするための第2の試
みを検出し、 スマートポインタをデリファレンスするための第2の試
みを検出するステップに応じて、 間接的なスロットへのポインタとスマートポインタと
を、間接的なスロット内にストアしてあるロードされた
被参照オブジェクトへの直接的なポインタで置換し、そ
して、 ロードされた被参照オブジェクトへの直接的なポインタ
をデリファレンスする、ステップを更に有する請求項3
に記載の方法。 - 【請求項5】 追加のスマートポインタを使用して、1
又はそれ以上の追加の被参照オブジェクトをメモリにロ
ードするステップを更に有し、ロードされた被参照オブ
ジェクトへの直接的なポインタを包含する1又はそれ以
上の追加のスマートポインタが生成されている請求項1
の方法であって、 識別された複数のロードされた被参照オブジェクトをア
イドル状態にさせるための要求を受信し、 前記受信ステップに応じて、識別されたロードされた被
参照オブジェクトのうちの1つへの直接的なポインタを
包含するスマートポインタの各々について、識別された
ロードされた被参照オブジェクトへの直接的なポインタ
を、識別されたロードされた被参照オブジェクトに関す
る間接的なスロットへのポインタで置換する、ステップ
を更に含む、請求項1に記載の方法。 【請求項5】 スマートポインタのグループにおける不
要部分の整理を実行するための請求項1に記載の方法で
あって、 ロードされたオブジェクトへの直接的なポインタを包含
するスマートポインタのグループにおけるスマートポイ
ンタを識別し、 各識別されたスマートポインタに関して、 スマートポインタにおける直接的なポインタが指し示す
同じロードされたオブジェクトへの直接的なポインタを
包含する間接的なスロットを識別し、 スマートポインタにおける直接的なポインタを、識別さ
れた間接的なスロットへのポインタで置換する、ステッ
プを更に有する、請求項1に記載の方法。 - 【請求項6】 スマートポインタのグループで不要部分
の整理を更に実行し、 ロードされたオブジェクトへの直接的なポインタを包含
するスマートポインタのグループにおいてスマートポイ
ンタを識別し、 認識された各スマートポインタに関して、 スマートポインタにおける直接的なポインタが指し示す
同じロードされたオブジェクトへの直接的なポインタを
包含する間接的なスロットを識別し、 スマートポインタにおける直接的なポインタを識別され
た支持へのポインタで置換する、 ステップを更に含む、請求項1に記載の方法。 - 【請求項7】 前述のステップが、持続性オブジェクト
ストアに対するオブジェクトへの変更を完遂するのに応
じて実行される、請求項6に記載の方法。 - 【請求項8】 メモリを再生するための要求に応じて、 いかなるスマートポインタにおけるいかなる直接的なポ
インタによっても指し示されていないオブジェクトを識
別し、そして、 各識別されたオブジェクトに関して、 識別されたオブジェクトへの直接的なポインタを包含す
る間接的なスロットを識別し、 識別されたオブジェクトをアンロードし、 識別された間接的なスロットにおける直接的なポインタ
を、識別されたオブジェクトをリロードするのに使用す
ることができるリローディング識別子で置換する、 ステップを更に有する、請求項6に記載の方法。 - 【請求項9】 メモリを再生するための要求に応じて、 いかなるスマートポインタにも包含されていないオブジ
ェクトへの直接的なポインタを包含する間接的なスロッ
トを識別し、 各識別された間接的なスロットに関して、 間接的なスロットにおける直接的なポインタによって指
し示されたオブジェクトをアンローディングし、 間接的なスロットにおける直接的なポインタを、アンロ
ードされたオブジェクトをリロードするのに使用するこ
とができるリローディング識別子で置換する、ステップ
を更に含む、請求項6に記載の方法。 - 【請求項10】 スマートポインタのグループで不要部
分の整理を実行し、 ロードされたオブジェクトの選択されたグループのうち
の1つへの直接的なポインタを包含するスマートポイン
タのグループにおいてスマートポインタを識別し、 各識別されたスマートポインタに関して、 直接的なポインタ及びスマートポインタが指し示す同じ
ロードされたオブジェクトへの直接的なポインタを包含
する間接的なスロットを識別し、 スマートオブジェクトにおける直接的なポインタを、識
別された間接的なスロットへのポインタで置換する、ス
テップを更に有する、請求項1に記載の方法。 - 【請求項11】 メインメモリにストアされ、且つ、被
参照オブジェクトへのメインメモリポインタを包含する
間接的なスロットを使用して1又はそれ以上のスマート
ポインタによって参照される被参照オブジェクトをアイ
ドリングするための請求項1に記載の方法であって、 スマートポインタが、被参照オブジェクトへの直接的な
ポインタを包含しないことを保証することによって、被
参照オブジェクトをアイドル状態にさせるための要求を
受信し、 前記受信ステップに応じて、被参照オブジェクトを参照
する各スマートポインタに関して、間接的なスロットへ
のポインタをスマートポインタにストアする、 ステップを更に有する、請求項1に記載の方法。 - 【請求項12】 スマートポインタをデリファレンスす
る試みを受信し、 前記受信ステップに応じて、 スマートポインタにおける間接的なスロットへのポイン
タを、被参照オブジェクトへのポインタで置換し、 ロードされた被参照オブジェクトへのポインタをデリフ
ァレンスする、 ステップを更に有する、請求項11に記載の方法。 - 【請求項13】 ストアする前記ステップの後、メイン
メモリから、被参照オブジェクトをアンロードするため
の要求を受信し、 被参照オブジェクトをアンロードする要求を受信するス
テップに応じて、 間接的なスロットに包含された被参照オブジェクトへの
メインメモリポインタを、被参照オブジェクトをリロー
ドするのに使用することができる持続性ポインタで置換
し、 被参照オブジェクトをアンローディングする、 ステップを更に有する、請求項11に記載の方法。 - 【請求項14】 スマートポインタをデリファレンスす
る試みを受信し、 前記受信ステップに応じて、 間接的なスロットにストアされた持続性ポインタを使用
して、被参照オブジェクトをメインメモリにロードし、 間接的なスロットにおける持続性ポインタを、ロードさ
れた被参照オブジェクトへのポインタで置換し、 スマートポインタにおける間接的なスロットへのポイン
タを、ロードされた被参照オブジェクトへのポインタで
置換し、 ロードされた被参照オブジェクトへのポインタをデリフ
ァレンスする、 ステップを更に有する、請求項13に記載の方法。 - 【請求項15】 ストアするステップの後、被参照オブ
ジェクトを新しいメモリ位置に再位置づけする要求を受
信し、 被参照オブジェクトをアンロードするための要求を受信
するステップに応じて、 被参照オブジェクトを新しいメモリ位置に移動させるた
めに間接的なスロットにおけるポインタを使用し、 間接的なスロットに包含された被参照オブジェクトへの
メインメモリポインタを、新しいメモリ位置へのメイン
メモリポインタで置換する、ステップを更に有する、請
求項11に記載の方法。 - 【請求項16】 移動及び置換ステップの後、スマート
ポインタでデリファレンスオペレーションの呼び出しを
検出し、 前記検出ステップに応じて、 スマートポインタにおける間接的なスロットへのポイン
タを、間接的なスロットにおける新しいメモリ位置への
ポインタで置換し、 新しいメモリ位置へのポインタをデリファレンスする、 ステップを更に有する、請求項15に記載の方法。 - 【請求項17】 メインメモリにおけるオブジェクトの
位置の指示を包含する直接的なポインタとしてか、それ
自身がメインメモリにおけるオブジェクトの位置の指示
を包含する直接的なポインタの位置の指示を包含する間
接的なポインタとしてか、のいずれかの被参照オブジェ
クトへの参照を表わすことができるスウィズルされた参
照データ構造を含むメインメモリであって、 前記スウィズルされた参照データ構造は、 スウィズルされた参照データ構造が、被参照オブジェク
トに対する参照を直接的なポインタとして表わしている
か、又は、間接的なポインタとして表わしているかの指
示を含み、 スウィズルされた参照データ構造が被参照オブジェクト
に対する参照を直接的なポインタとして表わしている
か、又は、間接的なポインタとして表わしているかの前
記指示が、スウィズルされた参照データ構造が直接的な
ポインタとして被参照オブジェクトに対する参照を表わ
していることを指示しているとき、メインメモリのオブ
ジェクトの位置の指示を包含する直接的なポインタを、 スウィズルされた参照データ構造が被参照オブジェクト
に対する参照を直接的なポインタとして表わしている
か、又は、間接的なポインタとして表わしているかの前
記指示が、スウィズルされた参照データ構造が間接的な
ポインタとして被参照オブジェクトに対する参照を表わ
していることを指示しているとき、それ自身にメインメ
モリのオブジェクトの位置の指示を含む間接的なポイン
タを、 それぞれ含むメインメモリ。 - 【請求項18】 メインメモリ内でのデータの位置の指
示が所定のサイズを有し、スウィズルされた参照データ
構造がまた、所定のサイズを有する、請求項17に記載
のメインメモリ。 - 【請求項19】 メインメモリにおけるオブジェクトの
位置の指示と、それ自身にメインメモリにおけるオブジ
ェクトの位置の指示を含む直接的なポインタの位置との
両方のうちの少なくとも1つのビットが使用されておら
ず、 スウィズルされた参照データ構造が被参照オブジェクト
に対する参照を直接的なポインタとして表わしている
か、又は、間接的なポインタとして表わしているかの指
示が、メインメモリにおけるオブジェクトの位置、若し
くは、それ自身にメインメモリにおけるオブジェクトの
位置の指示を含む直接的なポインタの位置の指示の使用
されていないビットにストアされている、 請求項17に記載のメインメモリ。 - 【請求項20】 参照プログラムを実行するためのプロ
セッサと、 メモリと、を備え、前記メモリが、前記参照プログラム
の少なくとも一部分と、 スウィズルされた参照データ構造が、被参照オブジェク
トに対する参照を直接的なポインタとして表わしている
か、又は、間接的なポインタとして表わしているかどう
かの指示と、を有し、 スウィズルされた参照データ構造が被参照オブジェクト
に対する参照を直接的なポインタとして表わしている
か、又は、間接的なポインタとして表わしているかの指
示が、スウィズルされた参照データ構造が直接的なポイ
ンタとして被参照オブジェクトに対する参照を表わして
いることを指示しているときは、メインメモリにおける
オブジェクトの位置の指示を包含する直接的なポインタ
を、 スウィズルされた参照データ構造が被参照オブジェクト
に対する参照を直接的なポインタとして表わしている
か、又は、間接的なポインタとして表わしているかの指
示が、スウィズルされた参照データ構造が間接的なポイ
ンタとして被参照オブジェクトに対する参照を表わして
いることを指示しているときは、それ自身にメインメモ
リにおけるオブジェクトの位置の指示を含む直接的なポ
インタの位置の指示を包含する間接的なポインタを、 それぞれ有し、ポインタスウィズリングデータ構造を使
用するオブジェクトサーバによって提供される被参照オ
ブジェクトへの参照プログラムによるアクセスを容易に
するためのコンピュータシステム。
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)
| 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)
| 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 |
-
1996
- 1996-12-12 US US08/764,557 patent/US5794256A/en not_active Expired - Lifetime
-
1997
- 1997-11-14 DE DE69738101T patent/DE69738101T2/de not_active Expired - Lifetime
- 1997-11-14 EP EP97120020A patent/EP0848324B1/en not_active Expired - Lifetime
- 1997-12-12 JP JP36982497A patent/JP4176857B2/ja not_active Expired - Fee Related
-
1998
- 1998-05-21 US US09/082,509 patent/US6105041A/en not_active Expired - Lifetime
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 |