JPH0696025A - データ記憶を制御するシステム及び方法 - Google Patents

データ記憶を制御するシステム及び方法

Info

Publication number
JPH0696025A
JPH0696025A JP5132090A JP13209093A JPH0696025A JP H0696025 A JPH0696025 A JP H0696025A JP 5132090 A JP5132090 A JP 5132090A JP 13209093 A JP13209093 A JP 13209093A JP H0696025 A JPH0696025 A JP H0696025A
Authority
JP
Japan
Prior art keywords
program
surrogate
slot
interface
memory
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
JP5132090A
Other languages
English (en)
Other versions
JP2859512B2 (ja
Inventor
Stephen J P Todd
ステヘン・ジェームス・ポール・トッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0696025A publication Critical patent/JPH0696025A/ja
Application granted granted Critical
Publication of JP2859512B2 publication Critical patent/JP2859512B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【目的】データ記憶を制御するシステム及び方法を提供
すること。 【構成】このシステムは第2のプログラム(20)内にオブ
ジェクトを生成する手段(80)と、該オブジェクトを記憶
するメモリ(60)と、第1のプログラム(10)に割当てられ
た少なくとも1つのスロットを該オブジェクトと関連づ
ける手段とを含む。第1及び第2のプログラムの間にイ
ンタフェース(30)が生成され、所与のオブジェクトの識
別子を含むオブジェクト代理がインタフェース(30)内に
包含される。少なくとも1つのスロットを特定のオブジ
ェクト代理と関連づけるために、該オブジェクト代理を
識別する代理参照が第1のプログラムによりこれらのス
ロット内に記憶される。第1のプログラムの動作中に、
古い代理参照を消去しそれらを別の代理参照に置き換え
ることによりスロットを再定義できる。オブジェクト代
理が代理参照のどれかにより前記スロットのどれとも関
連づけられないとき、H.L.L.不要情報コレクタはそれを
第2のプログラム(20)に通知する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ記憶を制御するシ
ステム及び方法、詳しくは第1のプログラムが第2の下
位レベル言語プログラムと対話し第2のプログラムが第
1のプログラムによる要求に基づいてデータを生成する
システム及び方法に関する。
【0002】
【従来の技術】今日ではデータ処理システムのユーザは
一般に上位レベル言語(H.L.L.)で入力されたコマンドに
より前記システムに命令する。次にこれらのH.L.L.コマ
ンドは前記データ処理システムにより下位レベル言語
(L.L.L.)の命令セットに変換される。データ処理システ
ムはこの命令セットを直接理解しそれに基づいて作動す
る。例えば、特定のH.L.L.コマンドは、データ処理シス
テムに対し、次のH.L.L.コマンドによる参照(referenc
e) のためのデータのセット (以下、オブジェクトと呼
ぶ) を生成するようにL.L.L.サブルーチンを実行する命
令を出すことができる。各オブジェクト(^object^)はメ
モリの領域内の、L.L.L.サブルーチンに割当てられてい
るメモリ・ロケーションに記憶される (以下、オブジェ
クトメモリと呼ぶ)。 次にこれらのオブジェクトは適切
なH.L.L.コマンドにより、直接又は間接に、検索するこ
とができる。ユーザーフレンドリーなH.L.L.で記述され
たプログラムの制御の下に特定の図形オブジェクトを生
成するためにL.L.L.図形が用いられるコンピュータ図形
の領域では、この手順が特に有用である。
【0003】H.L.L.ユーザプログラムを生成するために
ユーザはひと続きのH.L.L.コマンドをつなぎ合わせるこ
とができる。そしてユーザプログラム及び走行時間(run
-time)環境の双方を含む第1のプログラムを開始でき
る。第1のプログラムの走行中、L.L.L.サブルーチン、
オブジェクトメモリ及びオブジェクトマネジャを含む第
2のプログラムとの対話が必要なことがある。第2のプ
ログラム内のL.L.L.サブルーチンに対し多くのオブジェ
クトを生成するように命令することができる。オブジェ
クトが生成されオブジェクトメモリに記憶されると、そ
れらは第1のプログラムにある特定の ^スロット^ によ
り参照される。用語 ^スロット^ は本明細書では第1の
プログラムに割当てられた記憶の任意のロケーションを
指すのに用いられ、例えば変数又はレコード内のフィー
ルドを提供することができる。
【0004】第1のプログラム動作中、スロットの参照
がユーザプログラムにより再定義されると、これらのオ
ブジェクトの幾つかが実際に冗長になることがある。一
例として、ユーザプログラムの部分を形成することがあ
る下記の命令のシーケンスについて考えてみる。 命令1 a:= 球(1); 命令2 a:= 立方体(2);
【0005】変数 ^a^ は第1のプログラムに割当てら
れたスロットで提供される。命令1が第2のプログラム
に半径1単位を記述するオブジェクトを生成させる。こ
の時点で、この ^球^ オブジェクトと変数 ^a^ を含む
スロットとの間の参照が行われる。命令2が同じプログ
ラムに辺長2単位の立方体を記述するオブジェクトを生
成させる。この時点で、変数 ^a’を含むスロットの参
照は当該スロットが ^立方体^ オブジェクトを参照する
ように変更される。変数 ^a^ は立方体オブジェクトを
参照するように再定義されているから、球オブジェクト
はもはやユーザプログラムにより参照されず、第2のプ
ログラムにより消去できる。
【0006】しかしながら、下記の例が示すように、ユ
ーザプログラムでスロットが再定義されるとき、L.L.L.
オブジェクトが常に消去されるとは限らない。 命令1 a:= 球(1); 命令2 b:= a; 命令3 a:= 立方体(2);
【0007】ここで、変数 ^a^ が最初の例におけるよ
うに再定義されているので、オブジェクトメモリ内の空
間を空けるように第2のプログラムが球オブジェクトを
消去することは合理的なように思われる。しかしなが
ら、ユーザプログラム変数 ^b^ が変数 ^a^ に等しく
セットされた後に ^a^ が再定義されるので、 ^b^ は
なお球オブジェクトを参照する。従って、球オブジェク
トはこの時点で消去されるべきではない。
【0008】よって、特定のオブジェクトが第1のプロ
グラムにとってそれ以上使用されないことを第2のプロ
グラムに確実に知らせる方法に問題があることは明白で
あるので、次のオブジェクトを記憶するオブジェクトメ
モリ内の貴重なメモリ空間を空けるために、第2のプロ
グラムは問題のオブジェクトを消去すべきかどうかを決
定することができる。
【0009】一般に、第1のプログラムは ^不要情報(g
arbage) コレクタ^ として技術的に既知の手段を、H.L.
L.メモリ内に存在するデータを監視し前記データを、そ
れがもはや第1のプログラムにより参照されないとき、
消去するために提供する。第2の (下位レベル言語) プ
ログラムにあるオブジェクトマネジャは不要情報コレク
タを持つ見込みは少ないが、一定の状況ではありうる。
例えば、もし第2のプログラムがL.L.L.オブジェクトに
対する第1のプログラムからの参照以外に該オブジェク
ト間の内部参照を含むならば、オブジェクトマネジャは
それ自体に不要情報コレクタを含む。この場合、オブジ
ェクトマネジャは、第1のプログラムがオブジェクトを
それ以上使用しないことが通知された直後に、当該オブ
ジェクトを消去しない。代わりに、該オブジェクトは、
第1のプログラムが該オブジェクトに関心をを失い且つ
第2のプログラムが該オブジェクトに対する内部参照を
持たないことを、L.L.L.不要情報コレクタが知ったとき
にのみ消去される。本発明の目的のために、L.L.L.オブ
ジェクトマネジャが不要情報コレクタを有するかどうか
は問題ではない。
【0010】従来技術のシステムでは、H.L.L.不要情報
コレクタはそれが意図したように走行し、スロットを第
1のプログラムがそれ以上使用しないとき消去する。し
かしながら、L.L.L.では、第2のプログラムは第1のプ
ログラムの制御の下で走行するので、L.L.L.オブジェク
トマネジャは、それがL.L.L.オブジェクトを確実に消去
しうる前に、第1のプログラム内の重要な状況を通知さ
れなければならない。なぜなら、L.L.L.オブジェクトマ
ネジャはオブジェクトがいつ冗長になっているかを独自
に知る手段を持たないからである。前記従来技術のシス
テムでは、生成された全てのL.L.L.オブジェクトの使用
をH.L.L.ユーザが追跡し、それらがもはや必要ではない
とき明白にそれらを消去することが役立っている。これ
はシステム内に設けられたL.L.L.オブジェクトマネジャ
に対するユーザからの特定の命令により行われており、
このコマンドは第1のプログラムが該オブジェクトに関
心がなくなっていることを示す。
【0011】前記簡単な例では明らかに前述のように、
ユーザがオブジェクトを追跡し、オブジェクトがもはや
必要ではないとき、直接コマンドによりメモリを完全に
空にすることは容易である。しかしながら、例えば多く
の今日の図形システムの場合のように、第1のプログラ
ム内でL.L.L.オブジェクトの複雑な共有が起きる場合、
システムユーザに相当な負担が生じ、実際にユーザが該
オブジェクトの全ての使用を監視することを実行するこ
とはできない。L.L.L.オブジェクトを管理するために、
ユーザは明白な使用カウントのプログラムのような下位
レベルプログラム手法の使用を強制されるが、これはか
なりの労力を要することが分かる。
【0012】
【発明が解決しようとする課題】本発明の目的は、第1
のプログラムが特定のL.L.L.オブジェクトをこれ以上使
用しなくなる時点を第1のプログラムがL.L.L.オブジェ
クトマネジャに自動的に通知するように第1のプログラ
ムによるL.L.L.オブジェクトに対する参照の管理を実行
するシステムを提供することにある。
【0013】
【課題を解決するための手段】本発明は第1のプログラ
ムが第2の下位レベル言語プログラムと対話するタイプ
のデータ処理システムを提供する。このシステムは第2
のプログラム内にオブジェクトを生成する手段と、該オ
ブジェクトを記憶するメモリと、第1のプログラムに割
当てられた少なくとも1つのスロットを該オブジェクト
と関連づける手段とを含み、第1のプログラムと第2の
プログラムの間に第1のプログラムにより生成されたイ
ンタフェースと、第1のプログラム内に存在するインタ
フェースと、該インタフェース内に含まれた、所与のオ
ブジェクトの識別子が記憶されるオブジェクト代理(sur
rogate)と、第1のプログラムにより少なくとも1つの
前記スロットに記憶され、前記スロットを該オブジェク
ト代理と関連づける代理参照(surrogate reference)
と、任意の代理参照により該オブジェクト代理がもはや
前記スロットのどれとも関連づけられない時点を第2の
プログラムに通知する手段とを含む。
【0014】本発明は、データ処理システムが同等の従
来技術のシステムで (所与のプログラミング作業量に)
要求されたよりも小さいメモリにより動作しうる技術的
な効果を有する。
【0015】スロットは第1のプログラムに割当てられ
た任意の記憶領域とすることができるが、良好な実施例
では、スロットは、変数により直接に、又は変数を提供
する他のスロットを介して間接にアクセスできる、第1
のプログラムに割当てられた記憶領域である。一般にス
ロットは第1のプログラムの変数を提供するが、第1の
プログラムのデータレコード、アレイ、リンクされたリ
スト、ハッシュテーブル又は他のデータ構造内のフィー
ルドも提供する。
【0016】第2のプログラムは第1のプログラムの制
御の下に走行する任意のプログラムを含むことができる
が、良好な実施例では、第2のプログラムは図形プログ
ラムを含む。
【0017】オブジェクト代理に含まれた識別子は、任
意の固有の識別情報であり、この情報から第2のプログ
ラムがオブジェクトを識別することができる。良好な実
施例では、識別子はオブジェクトのメモリアドレスであ
る。
【0018】該通知する手段が、オブジェクト代理はも
はやどの代理参照によっても前記スロットのどれとも関
連づけられない時点を、第2のプログラムに通知できる
幾つかの可能な方法があるが、良好な実施例では、該通
知する手段は、オブジェクト代理内の識別子を第2のプ
ログラム内に存在するオブジェクトマネジャに送ること
により、第2のプログラムに通知する。そして一般に該
通知する手段は該関連づけられないオブジェクト代理を
消去する。
【0019】前述のように、オブジェクトマネジャはそ
れ自身の不要情報コレクタを実現することもあり実現し
ないこともある。良好な実施例では、オブジェクトマネ
ジャは不要情報コレクタを実現し、当該オブジェクトが
L.L.L.メモリ内の他のオブジェクトによりもはや参照さ
れないときにのみ、関連づけられないオブジェクト代理
に対応するオブジェクトを消去する。
【0020】第2の状況から考察すると、本発明は第1
のプログラムが第2の下位レベル言語プログラムと対話
するタイプのデータ処理システムにおいてデータ記憶を
制御する方法を提供する。この方法は、第2のプログラ
ム内のオブジェクトを生成するステップと、該オブジェ
クトをメモリに記憶するステップと、第1のプログラム
に割当てられた少なくとも1つのスロットに当該オブジ
ェクトを関連づけるステップとを含み、第1のプログラ
ムと第2のプログラムの間のインタフェースを生成する
ステップと、オブジェクトの識別子を含むインタフェー
ス内にオブジェクト代理を生成するステップと、前記ス
ロットの各々について、スロットをオブジェクト代理と
関連づける代理参照を第1のプログラムに生成するステ
ップと、1つの前記スロットを再定義し、それが当該ス
ロットを新たなオブジェクト代理と関連づけるように対
応する代理参照を変更するステップと、オブジェクト代
理が任意の代理参照により前記スロットの1つともはや
関連づけられない時点を第2のプログラムに通知するス
テップとにより特徴づけられる。
【0021】
【実施例】本発明は不要情報収集ルーチンを有する上位
レベル言語を提供できるデータ処理システムに適用でき
る。前記上位レベル言語のなかにはProlog(プロログ),
Smalltalk(スモールトーク), Oryx(オリックス) 及びES
MEがある。これらの言語はプログラマにより記憶管理が
明白に処理される ^C^ 又は ^Fortran(フォートラン)^
のような下位レベル言語と対照的である。簡略化のた
め、良好な実施例では、記述されている手法は概して適
用できるけれども、上位レベル言語はESMEであると仮定
する。ESMEから呼出しできる幾つかのL.L.L.サブルーチ
ンのパッケージが使用可能である。典型的な例は ^Phig
s(フィグス)^, ^Xwindows(エックスウィンドウス)^, ^I
mage Assistant(イメージアシスタント)^ 及び ^Winsom
90^ である。良好な実施例では、L.L.L.サブルーチンの
パッケージは ^Winsom90^ であると仮定する。
【0022】図1は本発明の良好な実施例が組込まれて
いるデータ処理システムの部分を示す。ユーザプログラ
ム70は、動作中、それが第1のプログラム10に割振られ
たH.L.L.メモリ40に保持された特定のメモリ割振り (以
下、 ^スロット^ 150 と呼ぶ) で提供する変数を生成す
る。一定の点で、ユーザプログラム70はインタフェース
30を介して第2のプログラム20を呼出し、第2のプログ
ラム20に対し特定のオブジェクト200 を生成し記憶する
ように要求する。そして第2のプログラム20内のL.L.L.
サブルーチン80は要求されたオブジェクト200 を生成
し、当該オブジェクトをオブジェクトメモリ60に記憶
し、該オブジェクトの識別子をインタフェース30に返送
する。そして、インタフェースメモリ50として割振られ
たメモリの領域内にインタフェース30により特別な種類
のスロット (以下、オブジェクト代理250 と呼ばれる)
が生成される。そしてオブジェクト代理250 に該識別子
が記憶される。この識別子は一般にオブジェクト200 を
含むオブジェクトメモリ60内のメモリロケーションのア
ドレス情報である。
【0023】関連スロット150 からオブジェクト代理25
0 を参照するために、代理参照300が生成され、当該ス
ロット内のフィールドに記憶される。代理参照300 はオ
ブジェクト代理250 の識別子、一般にオブジェクト代理
250 を含むインタフェースメモリ50内のメモリロケーシ
ョンのアドレス情報である。そして、もし異なる変数が
同じオブジェクト200 と関連づけられるならば、全ての
必要なことは、既に関連オブジェクト代理250 を参照し
ている代理参照300 をコピーすることである。このよう
に、代理参照300 の多くのコピーは異なるスロット150
を1つの特定のオブジェクト代理250 に参照して生成す
ることができる。しかしながら、インタフェース30内に
は、常に、オブジェクトメモリ60内の任意の特定のオブ
ジェクト200 を参照する1つのオブジェクトだけがあ
る。
【0024】ここで、図2に示すような典型的な従来技
術でスロット及びオブジェクトを参照する方法について
考える。L.L.L.サブルーチン80が ^オブジェクト1^ と
呼ばれるオブジェクト200 を生成することを第1のプロ
グラム10が要求する (これは^スロット1^に記憶された
特定の変数からの参照を希望する) 状況を考えてみよ
う。L.L.L.サブルーチン80は ^オブジェクト1^ を生成
し、それをオブジェクトメモリ60に記憶する。そしてサ
ブルーチン80はオブジェクト参照350 を第1のプログラ
ム10に返送し、第1のプログラム10はそれを ^スロット
1^ 内のフィールドに記憶する。もし ^スロット2^ 内
の変数も ^オブジェクト1^ に関連づけられることにな
っていれば、同じオブジェクト参照350 が ^スロット2
^ 内に記憶される。これは図2でスロット1及びスロッ
ト2を ^オブジェクト1^ と結ぶ2本の矢印で示されて
いる。
【0025】同様のプロセスにより、図2に示すように
^オブジェクト2^ が ^スロット3^ 及び ^スロット4
^ を参照し、更に他の多くのオブジェクトが他のスロッ
トを参照できる。任意の特定のオブジェクトを参照しう
るスロットの数は制限されない。ユーザプログラム70の
動作中、幾つかの変数を再定義することを必要とするこ
とがある。例えば、 ^スロット1^ にある変数を ^オブ
ジェクト2^ と関連づけるように再定義する必要がある
場合を考えてみよう。第1のプログラム10は ^スロット
1^ にある最初のオブジェクト参照を消去し、それをス
ロット3及びスロット4にあるものと同じオブジェクト
参照と置き換える。H.L.L.不要情報コレクタ90はこの変
更を知り、このような事象が生じたことを第2のプログ
ラムのオブジェクトマネジャ100 に通知できる。しかし
ながら、それは第1のプログラムが ^オブジェクト1^
に全く関心を失っていることを示すことができない。実
際、 ^スロット2^ 内の変数はなお ^オブジェクト1^
を参照しているので、オブジェクトマネジャ100 がこの
時点でオブジェクトメモリ60から ^オブジェクト1^ を
消去することは誤りである。
【0026】よって、従来の技術には重大な問題がある
ことが分かる。それは第1のプログラム10が特定のL.L.
L.オブジェクト200 に関心を失っているかどうかについ
て、第1のプログラム10のH.L.L.不要情報コレクタ90が
第2のプログラム20に確実に通知できないことである。
オブジェクト200 を追跡するために、ユーザはオブジェ
クトの使用回数をカウントするような下位レベル言語手
法の使用を強制される。更に、オブジェクト200 が冗長
になると、ユーザはオブジェクトメモリ60から当該オブ
ジェクト200 を消去する明確な要求を行う必要がある。
【0027】良好な実施例のシステムは、図3に基づい
た下記の説明から明らかなように、これらの問題点を克
服する。従来技術の場合のように、L.L.L.サブルーチン
80は^オブジェクト1^ を生成し、それをオブジェクト
メモリ60に記憶する。しかしながら、L.L.L.サブルーチ
ン80がオブジェクト参照を返送すると、それは従来技術
の場合のようには ^スロット1^ のフィールド内に記憶
されない。代わりに、インタフェース30が特別な種類の
スロット (以下、オブジェクト代理250 と呼ばれる) を
生成し、そこにオブジェクト参照が記憶される。そして
インタフェース30はオブジェクト代理250 の識別情報
(以下、代理参照300 と呼ばれる) を第1のプログラム1
0に返送する。この代理参照300 は、第1のプログラム1
0により事前に形成されている ^スロット1^ 内のフィ
ールドに記憶される。一般に、代理参照300 はオブジェ
クト代理250 のアドレス情報である。
【0028】もし^スロット2^で提供された変数が ^オ
ブジェクト1^ にも関連づけられることになっていれ
ば、^スロット1^にある代理参照300 のコピーが^スロ
ット2^にあるフィールド内に記憶される。同様に、 ^
オブジェクト2^ は異なるオブジェクト代理250 を介し
てスロット3及びスロット4を参照できる。これは ^オ
ブジェクト2^ のオブジェクト参照を含む。このような
アプローチにより、特定のオブジェクト200 はインタフ
ェースメモリ50に記憶された1つのオブジェクト代理25
0 を介して任意の数のスロット150 を参照できる。
【0029】インタフェース30は第1のプログラム10に
よりアクセスできるから、H.L.L.不要情報コレクタ90は
H.L.L.メモリ40の外にインタフェースメモリ50を監視で
きる。よって、変数が冗長になると、H.L.L.不要情報コ
レクタ90は適切なスロット150 を消去でき、更に、スロ
ットと同等であるオブジェクト代理250 を、それらがも
はやどのスロット150 によっても参照されないとき、消
去できる。これは不要情報コレクタの普通の仕事の部分
である。
【0030】しかしながら、ずっと重要なことは、H.L.
L.不要情報コレクタ90はここで第1のプログラム10が任
意の特定のオブジェクト200 に関心を失っている時点を
決定できることである。なぜなら、このような事象はオ
ブジェクト代理250 が参照されないままであれば必ず起
きるからである。参照されないオブジェクト代理250が
H.L.L.不要情報コレクタ90により発見されると、オブジ
ェクト参照をオブジェクトマネジャ100 に返送し、該オ
ブジェクト代理をH.L.L.不要情報コレクタ90により消去
できる。オブジェクトマネジャ100 は、第1のプログラ
ム10が関心を持たないオブジェクト200 を識別するため
にオブジェクト参照を使用し、それに応じて活動でき
る。もし第2のプログラム20においてL.L.L.オブジェク
ト間の内部参照がなく、かつそれによってオブジェクト
マネジャ100 が不要情報コレクタ90を用いていなけれ
ば、問題のオブジェクト200 をこの時点で消去し、オブ
ジェクトメモリ60を完全に空にすることができる。しか
しながら、もし内部参照がありかつ不要情報収集ルーチ
ンが動作中であるならば、オブジェクトマネジャ100 は
それが他のL.L.L.オブジェクトから当該オブジェクトに
対する内部参照がないことを知ると同時に問題のオブジ
ェクトだけを消去する。
【0031】次に、良好な実施例でインタフェースが構
築される方法を図4により説明する。最初に、インタフ
ェースを構築する主体、一般にその人又は上位レベルの
プログラムが下記の例を用いてインタフェースを定義す
る。 type user = W_ref, esme = wref, garbage = w9ndecr
e; W_ref w9msphere(float radius);
【0032】第1、即ち ^type(タイプ)^ は特別のESME
インタフェース定義形式である。項^user = W_ref^はサ
ブルーチンのパッケージ(この場合はWinsom90)により用
いられるタイプW_refがインタフェースに使用可能にな
るべきであることを示す。W_refはCプログラムで理解
されるタイプであるので、 ^Cタイプ^ と呼ばれる。項
^esme = wref^はCタイプ^W_ref^の Winsom90 オブジェ
クトがESMEタイプ ^wref^のESMEオブジェクトと見なさ
れるべきであることを意味する。最後に、項 ^garbage
= w9ndecre^ は ^w9ndecre^ たるべきタイプ ^W_ref^の
オブジェクトの Winsom90 オブジェクトマネジャの名前
を定義する。これは、不要情報収集中にESMEが、ある ^
W_ref^オブジェクトに対する全ての参照を喪失している
ことを検出するとき要求されることになっている。
【0033】ESMEにより理解されるべきであるWinsom90
におけるCタイプ毎に1つのタイプのライン定義が必要
である。
【0034】もう1つのタイプの例は機能定義ラインで
あり、普通のCプロトタイプの定義である。それは、機
能 ^w9msphere^が ^radius(半径)^ と呼ばれる浮動小数
点数をパラメータとして選択し、タイプ ^W_ref^の結果
を返送することを意味する。ESMEによりアクセスされる
べきサブルーチンのパッケージ(Winsom90)において機能
毎に1つの機能定義ラインが要求される。
【0035】そしてインタフェース生成機能 (プログラ
ム) に前述のインタフェースの定義が提示され、インタ
フェース生成機能は該定義を用いて該インタフェースを
表わすCコードの3つの部分を生成する。次にそれらは
編集され、ESME解釈機能 (H.L.L.の走行時間環境) 及び
L.L.L.サブルーチン80のパッケージと連結される。Cコ
ードの3つの部分は下記のように用いられる。
【0036】1. ^wref_surrogate^に対するタイプポ
インタの1つのフィールド ^x^(すなわち ^x^は ^wref_
surrogate^ロケーションを指す値を含む) により ESME
タイプ^wref^を定義する、ESME記述子オブジェクト400
を生成するために第1の部分が用いられる。この記述子
オブジェクト400 の ^garbage^フィールドは ^NULL^(空
文字) にセットされ、タイプ ^wref^ のESMEオブジェク
トが不要情報収集されるとき特別の動作が起きないこと
を示す。この記述子生成コードはシステム初期化で一度
呼出される。
【0037】2. Cタイプ ^W_ref^の1つのフィールド
^x^によりESMEタイプ ^wref_surrogate^ を定義する、
ESME記述子オブジェクト420 を生成するためにコードの
第2の部分が用いられる。このESME記述子オブジェクト
420 の ^garbage^フィールドが機能 ^w9ndecre^ を指す
ようにセットされ、タイプ ^wref_surrogate^ のEAMEオ
ブジェクトが不要情報収集されるとき、機能 ^w9ndecre
^ が ^wref_surrogate^ オブジェクトの ^x^フィールド
に保持されたタイプ ^W_ref^のパラメータにより呼出さ
れることを示す。この記述子生成コードはシステム初期
化で一度呼出される。
【0038】3. コードの第3の部分はインタフェース
機能コード ^w9msphere_interface^である。これは: a. 半径をESME形式で受け入れる。 b. 半径をC形式に変換する。 c. 変換された半径を有するWinsom90機能 ^w9msphere^
をパラメータとして呼出し、Cタイプ ^W_ref^の返送値
を受け入れる。 d. タイプ ^wref_surrogate^ のESMEオブジェクト代理
250 を生成し、その ^x^ フィールドを ^w9msphere^ か
ら返送された ^W_ref^で満たす。 (このESMEオブジェク
ト代理250 の ^descriptor^ フィールドがEAMEによりセ
ットされ、^wref_surrogate^ オブジェクトを定義するE
SME記述子オブジェクト420 を指す)。 e. タイプ ^wref^ のESMEオブジェクト430 の ^x^フィ
ールドに ^wref_surrogate^ オブジェクト代理250 の識
別子を挿入する。この ^wref^ オブジェクト430 はスロ
ット150 に記憶するために第1のプログラム10により事
前に生成される。 (このESMEオブジェクト430 の ^desc
riptor^ フィールドはESMEによりセットされ、^wref^オ
ブジェクトを定義するESME記述子オブジェクト400 を指
す)。
【0039】このインタフェースコードは、ユーザのES
MEプログラム70がESME機能 ^w9msphere^を呼出す毎に呼
出される。類似のインタフェースコードは、ESMEにより
アクセスされることになっているサブルーチンパッケー
ジ内の他の機能毎に生成され、よって機能定義ラインで
定義されている。
【0040】この時点で、^wref^記述子オブジェクト40
0 はH.L.L.メモリ40に記憶されるがインタフェース30に
より生成され、そして ^wref^ ESMEオブジェクト430 は
第1のプログラム10により生成されるがインタフェース
30により ^x^フィールドをセットされるのに対し、逆に
^wref_surrogate^ 記述子オブジェクト420 及び任意の
^wref_surrogate^ ESMEオブジェクト440 はインタフェ
ースメモリ50に記憶されるがH.L.L.不要情報コレクタ90
により制御されることは注目に値する。
【0041】これらのインタフェース生成機能の特徴に
加えて、ESMEシステム (第1のプログラム) が遠隔不要
情報収集機能を組込むことを可能にする2つの変更が必
要である。これらの変更はESMEに組込まれた新たなタイ
プ又は機能毎に一度だけ行われ、それ以上の動作は必要
ではない。これらの変更は次のとおりである。
【0042】1. ESME記述子オブジェクトはCタイプポ
インタの^不要情報^を付加された特別のフィールドを機
能させる。このフィールドは新たなタイプが定義される
ときNULLに初期化される。
【0043】2. ESME(J.L.L.)不要情報コレクタ90はこ
の^不要情報^値を監視するように変更される必要があ
る。任意のESMEオブジェクトが不要情報収集されると
き、不要情報コレクタ90は、不要情報収集中のESMEオブ
ジェクトのタイプを定義するESME記述子オブジェクトを
配置するためにあらゆるESMEオブジェクトのヘッドに含
まれる^記述子^フィールドに追随する。もし、^wref^オ
ブジェクト430 か又は実際にストリング即ち浮動小数点
数のような任意の内部ESMEオブジェクトの場合のよう
に、記述子オブジェクトの^不要情報^フィールドがNULL
であれば、該オブジェクトは処理されるが他の動作は行
われない。他方、^wref_surrogate^のようなオブジェク
ト代理250 の場合のように、もし^不要情報^フィールド
が非NULL値を有するならば、不要情報フィールド (^wre
f_surrogate^の場合には、機能 ^w9ndecre^)により参照
されるような適切なオブジェクトマネジャ100 が呼出さ
れ、その後にオブジェクト代理250 自体が処理される。
【0044】これらの変更を行うためにESME(H.L.L.)不
要情報コレクタ90に付加されるコードの特別のラインは
下記のとおりである。 /* 不要情報はポインタeが指すESMEオブジェクトを収
集する */ gfun()を無効にする; gfun = e->記述子->不要情報; if (gfun != NULL) efun(e->x);
【0045】
【発明の効果】これらの手法を用いることにより、本発
明の良好な実施例のシステムはL.L.L.オブジェクトを自
動的に追跡し、ユーザをユーザ自身のL.L.L.検査ルーチ
ンをセットアップを必要とする負担から解放し、更にこ
のシステムが使用可能なメモリをずっと効率的に使用す
ることを可能にする。
【図面の簡単な説明】
【図1】本発明の良好な実施例によるシステムのブロッ
ク図である。
【図2】典型的な従来技術のシステムにおいてスロット
及びオブジェクトが参照される方法を示す図である。
【図3】本発明の良好な実施例においてスロット、オブ
ジェクト代理及びオブジェクトが参照される方法を示す
図である。
【図4】良好な実施例でインタフェースが構築される方
法を示す図である。
【符号の説明】
10 第1のプログラム 20 第2のプログラム 30 インタフェース 40 H.L.L.メモリ 50 インタフェースメモリ 60 オブジェクトメモリ 70 ユーザプログラム/ユーザのESMEプログラム 80 L.L.L.サブルーチン 90 H.L.L.不要情報コレクタ 100 オブジェクトマネジャ 150 スロット 200 オブジェクト 250 オブジェクト代理 300 代理参照 350 オブジェクト参照 400 ESME記述子オブジェクト/ ^wref^ 記述子オブジ
ェクト 420 ESME記述子オブジェクト 430 ESMEオブジェクト

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】第1のプログラムが第2の下位レベル言語
    プログラムと対話するタイプのデータ処理システムであ
    って、該システムは第2のプログラム内にオブジェクト
    を生成する手段と、該オブジェクトを記憶するメモリ
    と、該オブジェクトを第1のプログラムに割振られた少
    なくとも1つのスロットと関連づける手段とを備え、 第1のプログラムにより第1のプログラムと第2のプロ
    グラムの間に生成され、第1のプログラム内に存在する
    インタフェースと、 該インタフェース内に含まれ、所与のオブジェクトの識
    別子が記憶されるオブジェクト代理と、 第1のプログラムにより少なくとも1つの前記スロット
    に記憶され、前記スロットを該オブジェクト代理と関連
    づける代理参照と、 任意の代理参照により該オブジェクト代理が前記スロッ
    トのどれとももはや関連づけられない時点を第2のプロ
    グラムに通知する手段とを含むデータ処理システム。
  2. 【請求項2】該通知する手段が該オブジェクト代理内の
    該識別子を第2のプログラム内に存在するオブジェクト
    マネジャに送ることにより第2のプログラムに通知する
    請求項1のシステム。
  3. 【請求項3】該オブジェクトマネジャが不要情報を実現
    し、該関連づけられたオブジェクト代理に対応するオブ
    ジェクトを、該メモリ内の他のオブジェクトが当該オブ
    ジェクトをもはや参照しないときのみ消去する請求項2
    のシステム。
  4. 【請求項4】第1のプログラムが第2の下位レベル言語
    プログラムと対話するタイプのデータ処理システムにお
    いてデータ記憶を制御する方法であって、該方法は第2
    のプログラム内にオブジェクトを生成するステップと、
    該オブジェクトをメモリに記憶するステップと、該オブ
    ジェクトを第1のプログラムに割振られた少なくとも1
    つのスロットと関連づけるステップとを含み、 第1のプログラムと第2のプログラムの間にインタフェ
    ースを生成する、第1のプログラム内に存在するステッ
    プと、 該インタフェース内にオブジェクト代理を生成し、その
    なかに所与のオブジェクトの識別子を記憶するステップ
    と、 少なくとも1つの前記スロット内に生成され、前記スロ
    ットを該オブジェクト代理と関連づける代理参照を生成
    するステップと、 該代理参照を消去することにより少なくとも1つの前記
    スロットを再定義し、その場所に新たな代理参照を記憶
    し、それにより前記スロットが新たなオブジェクト代理
    と関連づけられるステップと、 該オブジェクト代理が任意の代理参照により前記スロッ
    トの1つともはや関連づけられない時点を第2のプログ
    ラムに通知するステップとを含むデータ記憶制御方法。
JP5132090A 1992-07-22 1993-06-02 データ記憶を制御するシステム及び方法 Expired - Lifetime JP2859512B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9215597A GB2269033A (en) 1992-07-22 1992-07-22 Controlling data storage to enable garbage collection
GB9215597.7 1992-07-22

Publications (2)

Publication Number Publication Date
JPH0696025A true JPH0696025A (ja) 1994-04-08
JP2859512B2 JP2859512B2 (ja) 1999-02-17

Family

ID=10719124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5132090A Expired - Lifetime JP2859512B2 (ja) 1992-07-22 1993-06-02 データ記憶を制御するシステム及び方法

Country Status (4)

Country Link
US (1) US5463770A (ja)
EP (1) EP0582378A1 (ja)
JP (1) JP2859512B2 (ja)
GB (1) GB2269033A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999049724A1 (en) 1998-03-31 1999-10-07 Her Majesty In Right Of Canada, Represented By The Minister Of Agriculture And Agri-Food Canada Stevia rebaudiana with altered steviol glycoside composition

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571262B2 (en) 2000-02-14 2003-05-27 Apple Computer, Inc. Transparent local and distributed memory management system
US5687370A (en) 1995-01-31 1997-11-11 Next Software, Inc. Transparent local and distributed memory management system
JP2924705B2 (ja) * 1995-04-10 1999-07-26 富士ゼロックス株式会社 メモリ管理方法およびオブジェクト管理方法
US5794256A (en) * 1996-12-12 1998-08-11 Microsoft Corporation Pointer swizzling facility using three-state references to manage access to referenced objects
US5918235A (en) * 1997-04-04 1999-06-29 Hewlett-Packard Company Object surrogate with active computation and probablistic counter
US6678744B2 (en) * 1997-10-09 2004-01-13 Ericsson Inc. Application wrapper methods and systems
US6253219B1 (en) 1997-12-23 2001-06-26 Pitney Bowes Inc. Method for utilizing the postal service address as an object in an object oriented environment
US20020065951A1 (en) 1997-12-23 2002-05-30 Victor Girardi Ole automation server for manipulation of mail piece data
US20020052979A1 (en) * 2000-03-31 2002-05-02 Jochen Kappel Object to object communication system and method
US7272752B2 (en) * 2001-09-05 2007-09-18 International Business Machines Corporation Method and system for integrating test coverage measurements with model based test generation
US7055065B2 (en) * 2001-09-05 2006-05-30 International Business Machines Corporation Method, system, and computer program product for automated test generation for non-deterministic software using state transition rules
US7231638B2 (en) 2002-12-03 2007-06-12 International Business Machines Corporation Memory sharing in a distributed data processing system using modified address space to create extended address space for copying data

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4714992A (en) * 1985-11-26 1987-12-22 International Business Machines Corporation Communication for version management in a distributed information service
US4714996A (en) * 1985-11-26 1987-12-22 International Business Machines Corporation Impact calculation for version management in a distributed information service
US5202971A (en) * 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US4907151A (en) * 1988-09-30 1990-03-06 Digital Equipment Corporation System and method for garbage collection with ambiguous roots
US5189733A (en) * 1989-08-22 1993-02-23 Borland International, Inc. Application program memory management system
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
US5315709A (en) * 1990-12-03 1994-05-24 Bachman Information Systems, Inc. Method and apparatus for transforming objects in data models
US5392432A (en) * 1991-08-27 1995-02-21 At&T Corp. Method for automatic system resource reclamation for object-oriented systems with real-time constraints
US5274804A (en) * 1991-11-20 1993-12-28 Parcplace Systems Automatic storage-reclamation postmortem finalization process
US5398334A (en) * 1992-04-06 1995-03-14 General Electric Company System for automatic garbage collection using strong and weak encapsulated pointers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999049724A1 (en) 1998-03-31 1999-10-07 Her Majesty In Right Of Canada, Represented By The Minister Of Agriculture And Agri-Food Canada Stevia rebaudiana with altered steviol glycoside composition
US6255557B1 (en) 1998-03-31 2001-07-03 Her Majesty The Queen In Right Of Canada As Represented By The Ministerof Agriculture And Agri-Food Canada Stevia rebaudiana with altered steviol glycoside composition

Also Published As

Publication number Publication date
JP2859512B2 (ja) 1999-02-17
GB2269033A (en) 1994-01-26
GB9215597D0 (en) 1992-09-02
EP0582378A1 (en) 1994-02-09
US5463770A (en) 1995-10-31

Similar Documents

Publication Publication Date Title
US7111294B2 (en) Thread-specific heaps
US5437029A (en) Path name resolution method providing fixed speed of file accessing in computer network
Woe et al. Multimedia information management in an object-oriented database system
DE69636688T2 (de) Verfahren und Gerät zur automatischen Verwaltung von gleichzeitigem Zugriff auf gemeinsame Betriebsmittel in einer Multifaden-Programmierbetriebsumgebung
US7308466B2 (en) Memory reclamation method
US6275916B1 (en) Object oriented program memory management system and method using fixed sized memory pools
US5799185A (en) Method and system for managing system memory reclamation
US6938245B1 (en) Interactive debugging system with debug data base system
JP3027845B2 (ja) プログラム制御装置および方法
JPH0696025A (ja) データ記憶を制御するシステム及び方法
US9116798B2 (en) Optimized memory management for class metadata
JPH03137730A (ja) オブジエクト指向コンピユータ・システム
JP4039800B2 (ja) データ管理方法、オブジェクト統合管理システム
EP0631229A2 (en) Method and system of storing and restoring object persistent attribute data
US20090228537A1 (en) Object Allocation System and Method
EP1215590B1 (en) Method and system for scalable, high performance hierarchical storage management
Kienzle et al. Framework based on design patterns for providing persistence in object-oriented programming languages
EP0650126A1 (en) Annotation data processing system with hypermedia processable and active annotations
JP2000099351A (ja) プログラム制御装置とメモリ割当装置および方法
JP3582756B2 (ja) メモリ管理方法
Xu et al. Representing monitored systems: A critical process in data collection
Porter et al. A distributed object server
KR20010003383A (ko) 멀티미디어 파일 시스템 및 이를 이용한 멀티미디어 데이터 처리 방법
JPH06110668A (ja) 世代付きロードモジュールライブラリの更新処理システム
Heck et al. An Implementation of an Applicative File System? Technical Report 354??

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071204

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20081204

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20091204

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20091204

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20101204

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20101204

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20111204

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20111204

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20121204

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20121204

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20131204

Year of fee payment: 15

EXPY Cancellation because of completion of term