JP2005234634A - データ管理方法 - Google Patents
データ管理方法 Download PDFInfo
- Publication number
- JP2005234634A JP2005234634A JP2004039485A JP2004039485A JP2005234634A JP 2005234634 A JP2005234634 A JP 2005234634A JP 2004039485 A JP2004039485 A JP 2004039485A JP 2004039485 A JP2004039485 A JP 2004039485A JP 2005234634 A JP2005234634 A JP 2005234634A
- Authority
- JP
- Japan
- Prior art keywords
- data
- information processing
- processor
- sub
- program
- 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.)
- Pending
Links
Images
Abstract
【課題】 ガーベジコレクション機能を持った記憶管理システムにおいて、指示したデータを容易に、かつ、確実に破棄することができるようにする。
【解決手段】 データA、Bと、このデータA、Bとのリンク構造が動的に変化するリンク元var1〜var5とを管理し、ガーベジコレクション機能を有する記憶管理システムを対象とする。リンク元var1〜var5により間接参照テーブルを参照する。この参照結果によりリンク元var1〜var5により参照されるべきデータA、Bを参照する。
【選択図】 図3
【解決手段】 データA、Bと、このデータA、Bとのリンク構造が動的に変化するリンク元var1〜var5とを管理し、ガーベジコレクション機能を有する記憶管理システムを対象とする。リンク元var1〜var5により間接参照テーブルを参照する。この参照結果によりリンク元var1〜var5により参照されるべきデータA、Bを参照する。
【選択図】 図3
Description
この発明は、データ管理方法に関する。
データを管理する場合に、データとデータとをリンク付けすることによりデータ構造を表現することが行われている。また、リンクが動的に変化する管理も行われている。
さらに、どこからもリンクされていないデータを記憶している記憶領域を見つけ出し、その記憶領域を新たなデータの記憶領域として再利用する機能、すなわち、「ガーベジコレクション」と呼ばれる機能を持つシステムもあり、プログラマの記憶領域の管理の負担を軽減するために広く利用されている。例えば、Java(R)言語システムにはガーベジコレクションの機能がある。
このような記憶管理システムにおいては、他のデータからのリンクによる参照がまったくされなくなったデータは、その記憶領域がガーベジコレクションにより自動的に解放され、新たなデータのための記憶領域として再利用される。
なお、先行技術文献として例えば以下のものがある。
特開平8−286969号公報
ところが、上記のような記憶管理システムにおいて、データAをデータBに入れ換える場合、一般には、データAを参照しているポインタ(ポインタ変数)が複数存在する可能性がある。このため、データAを参照している複数のポインタをすべて把握しておき、そのすべてのポインタがデータBを参照するようにポインタを更新するなどの処理が必要である。
例えば、図5Aに示すように、データAを3つのポインタ変数var1、var2、var3が参照し、データBを2つのポインタ変数var4、var5が参照している場合に、データAが不要となり、データBだけを利用するようになったする。すると、図5Bに示すように、使用しているすべてのポインタ変数のリストを、1つ1つたどってデータAを参照しているポインタ変数をすべて探し出し、そのポインタ変数をデータBを参照するように更新する必要があり、そのためのルーチンが必要である。
しかし、プログラムの規模が大きくなった場合、あるいは元来はそのようにポインタ変数が管理されていないプログラムを流用する場合、上記のようなポインタ変数の管理は、一般に困難であり、現実的ではない。
また、Smalltalk(R)言語システムには、become:と呼ばれるプリミティブメソッドが提供されているが、このメソッドは2つのデータへの参照を交換する。そして、上記ようにデータを参照している変数は一般には複数ある。したがって、2つのデータのうちの一方のデータがまったく不要な場合でも、その2つのデータをそれぞれ参照している変数をすべて把握して再設定する必要があり、再設定をしないと、システムにそのデータへの参照が残ってしまい、ガーベジコレクションでそのデータの記憶領域が再利用されない可能性がある。
この発明は、以上のような問題点を解決しようとするものである。
この発明においては、
データと、このデータとのリンク構造が動的に変化するリンク元とを管理し、ガーベジコレクション機能を有する記憶管理システムにおいて、
上記リンク元により間接参照テーブルを参照し、
この参照結果により上記リンク元により参照されるべきデータを参照する
ようにしたデータ管理方法
とするものである。
データと、このデータとのリンク構造が動的に変化するリンク元とを管理し、ガーベジコレクション機能を有する記憶管理システムにおいて、
上記リンク元により間接参照テーブルを参照し、
この参照結果により上記リンク元により参照されるべきデータを参照する
ようにしたデータ管理方法
とするものである。
この発明によれば、ガーベジコレクション機能を持った記憶管理システムにおいて、把握や管理が困難な複数の複雑な参照を持つデータが存在している場合でも、指示したデータを容易に、かつ、確実に破棄することができる。また、指示したデータのみを参照させて存続させることができ、データのユニーク性を持たせて管理することも容易に、かつ、確実に行うことができる。
〔1〕 構成
図1は、この発明による記憶管理システムを適用できるコンピュータの一例を示す。そして、符号11はCPUを示し、このCPU11には、システムバス19を通じて半導体メモリなどの記憶装置12が接続されるとともに、2次記憶装置13が接続される。この場合、2次記憶装置13は、CD±RW、DVD±RW、ブルーレイなどの光ディスク、ハードディスクなどの磁気ディスク、MOなどの光磁気ディスクのドライブなどである。
図1は、この発明による記憶管理システムを適用できるコンピュータの一例を示す。そして、符号11はCPUを示し、このCPU11には、システムバス19を通じて半導体メモリなどの記憶装置12が接続されるとともに、2次記憶装置13が接続される。この場合、2次記憶装置13は、CD±RW、DVD±RW、ブルーレイなどの光ディスク、ハードディスクなどの磁気ディスク、MOなどの光磁気ディスクのドライブなどである。
さらに、CPU11には、システムバス19を通じて、キーボードやマウスなどの入力装置14と、ディスプレイやプリンタなどの出力装置15が接続される。また、システムバス19は、イーサネット(登録商標)などのネットワーク16にも接続される。
そして、記憶装置12には、この発明による記憶管理システムで管理されるデータ、この発明による記憶管理システムのプログラムおよびガーベジコレクションのプログラムなどが置かれる。この場合、記憶管理システムのプログラムおよびガーベジコレクションのプログラムは、CPU11により実行されるものであるが、その記憶管理システムのプログラムの一部の一例を図2に示す。
さらに、記憶装置12には、例えば図3Aに示すように、記憶装置データ領域およびポインタ変数が配置される。この場合、記憶装置データ領域には、この記憶管理システムが管理するデータが用意される。また、ポインタ変数は、データを参照しているポインタ変数である。
なお、このポインタ変数は、記憶装置データ領域に置かれているデータ内部に置かれたデータであってもよい。また、この例においては、本来は、図5Aに示すように、ポインタ変数var1、var2、var3がデータAを参照し、ポインタ変数var4、var5を参照するものとする。
さらに、記憶装置12には、間接参照テーブルが配置される。この間接参照テーブルは、ポインタ変数が参照するべきデータを間接的に指示するものである。すなわち、今の場合、データAを参照するポインタ変数var1、var2、var3は、間接参照テーブルのエントリアドレス[A]を参照するものとされ、エントリアドレス[A]には、記憶装置データ領域のデータAのエントリアドレスがセットされる。同様に、データBを参照するポインタ変数var4、var5は、間接参照テーブルのエントリアドレス[B]を参照するものとされ、エントリアドレス[B]には、記憶装置データ領域のデータBのエントリアドレスがセットされる。
なお、図3において、矢印はデータの参照関係を示す。このとき、間接参照テーブルは、この記憶管理システムが記憶することができるデータの数だけエントリアドレスを保持できる必要がある。
〔2〕 処理ないし動作
上述のような構成において、データAが不要なので、そのデータAをデータBに置き換える指示があったとする。図4は、その指示の形式の一例を示し、図3Aにおいて、ポインタ変数var1の参照しているデータAを、ポインタ変数var4が参照しているデータBに置き換えることを指示した場合である。
上述のような構成において、データAが不要なので、そのデータAをデータBに置き換える指示があったとする。図4は、その指示の形式の一例を示し、図3Aにおいて、ポインタ変数var1の参照しているデータAを、ポインタ変数var4が参照しているデータBに置き換えることを指示した場合である。
ただし、今の場合、ポインタ変数var1が参照しているデータと、ポインタ変数var2、var3が参照しているデータとは、ともにデータAで同じなので、ポインタ変数var1の代わりにポインタ変数var2またはポインタ変数var3を指示しても、あるいは同様の理由により、ポインタ変数var4の代わりにポインタ変数var5を指示しても、結果は同じになる。
そして、データAをデータBに置き換える指示、すなわち、図4の指示を受け付けると、図3Bに示すように、間接参照テーブルのエントリアドレス[A]をエントリアドレス[B]に変更し、データAの参照先をデータBに変更する。
したがって、この記憶管理システムに存在するデータAを参照するポインタ変数var1、var2、var3の参照が、すべてデータBを参照するように変更されたことになる。また、データBは、それまでデータAを参照していたすべてのポインタ変数から参照されるようになるので、データBだけがユニークな存在となるように変化をさせたことになる。この結果、データAはこの記憶管理システムのどこからの参照もなくなるので、ガーベジコレクションによってデータAの記憶領域の回収を行うことができる。
こうして、上述の記憶管理システムによれば、データAを参照するポインタ変数の参照をすべてデータBを参照するように変更することができるが、ガーベジコレクション機能を持った記憶管理システムにおいて、把握や管理が困難な複数の複雑な参照を持つデータが存在している場合においても、指示したデータを容易に、かつ、確実に破棄することができる。
また、指示したデータのみを参照させて存続させることができるので、データのユニーク性を持たせて管理することも容易に、かつ、確実に行うことができる。特に、永続性を持った大規模なデータを管理しなければならないようなデータベースシステムに、この発明を適用すれば、すべてのデータをスクラッチから再構築するような最悪の手段に陥ることなく、データの有効性やユニーク性を保ちつつ、データを管理して維持し続けることができる。
〔3〕 データの分散処理
〔3−1〕 システム構成
データを管理するシステムの代表的なものとしてデータベースシステムがあるが、ここでは、データベースシステムにおいて、複数の情報処理装置によりデータの分散処理を行う場合の一例について、図6により説明する。
〔3−1〕 システム構成
データを管理するシステムの代表的なものとしてデータベースシステムがあるが、ここでは、データベースシステムにおいて、複数の情報処理装置によりデータの分散処理を行う場合の一例について、図6により説明する。
図6に示す例においては、3台の情報処理装置100〜300がネットワーク400を通じて互いに接続され、これらの間で分散処理を行う場合である。情報処理装置100は、1つのメインプロセッサ101と、1つあるいは複数のサブプロセッサ、この例においては、3つのサブプロセッサ111〜113と、DMAコントローラ121と、ディスクコントローラ122とを有し、単一の集積回路に構成されている。
また、メインプロセッサ101およびサブプロセッサ111〜113は、それぞれローカルストレージ131を有している。そして、メインプロセッサ101は、サブプロセッサ111〜113によるプログラムあるいはデータの処理のスケジュール管理と、全般的な管理とを行う。サブプロセッサ111〜113は、メインプロセッサ101の制御にしたがって並列に、かつ、独立にプログラムあるいはデータの処理を実行する。
なお、メインプロセッサ101内でプログラムが動作する場合もある。また、メインプロセッサ101のプログラムが、サブプロセッサ111のプログラムと連携して動作する場合もある。
さらに、情報処理装置100〜300は、ネットワーク全体を通して当該情報処理装置を一意的に識別できる識別子が情報処理装置IDとして割り当てられている。メインプロセッサ101およびサブプロセッサ111〜113も、同様に識別可能な識別子がメインプロセッサIDおよびサブプロセッサIDとして割り当てられている。
DMAコントローラ121は、メインメモリ141に格納されているプログラムあるいはデータへのアクセスを行う。なお、メインメモリ141は、情報処理装置100の外部に接続されているもので、例えばDRAMとされている。
また、ディスクコントローラ122は、情報処理装置100と接続されている外部記憶装置142へのアクセスを行う。外部記憶装置142には、固定ディスク(ハードディスク)、リムーバブルディスク、MO、CD±RW、DVD±RWなどの光ディスク、メモリディスクなどが想定され、SRAM、ROMなども含まれる。
そして、メインプロセッサ101、サブプロセッサ111〜113、DMAコントローラ121、ディスクコントローラ122はバス102によって接続されている。さらに、他の情報処理装置200、300も情報処理装置100と同様に構成されているものであり、詳細は省略する。
〔3−2〕 データの不整合の回避
上述のように、サブプロセッサ111〜113は、独立にプログラムあるいはデータの処理を実行するが、もしも異なるサブプロセッサが同一メインメモリ141の同一領域に対して、同時に読み出しあるいは書き込みを行った場合には、データの不整合を生じる可能性がある。したがって、メインメモリ141にアクセスする場合には、ある手順が必要となるが、その手順について、図7により説明する。
上述のように、サブプロセッサ111〜113は、独立にプログラムあるいはデータの処理を実行するが、もしも異なるサブプロセッサが同一メインメモリ141の同一領域に対して、同時に読み出しあるいは書き込みを行った場合には、データの不整合を生じる可能性がある。したがって、メインメモリ141にアクセスする場合には、ある手順が必要となるが、その手順について、図7により説明する。
図7Aにおいて、メインメモリ141は、複数のアドレス指定可能な「メモリロケーション」から構成される。各メモリロケーションに対して、データの状態情報を格納するための「追加セグメント」が割り振られる。追加セグメントは、「F/Eビット」、「サブプロセッサID」、「ローカルストレージアドレス」(LSアドレス)を含む。各メモリロケーションには「アクセスキー」も割り振られるが、これについては後述する。
そして、F/Eビットは、以下のように定義される。
・F/Eビット=“0”のとき
サブプロセッサ(111〜113)により読み出され、処理中あるいは空き状態であるため、最新データではない無効データである。読み出し不可だが、予約は可能であり、“1”になったときにあらかじめ読み出し予約情報として追加セグメントに書き込まれたサブプロセッサID、ローカルストレージアドレスへ読み出される。
すなわち、複数のサブプロセッサによりデータを多段階に処理する必要がある場合、上記のように構成することにより、前段階の処理を行うサブプロセッサが、処理済みのデータをメインメモリ141の所定のアドレスへ書き込んだ直後に、ただちにそのデータが後段階の処理を行うサブプロセッサへ読み出されることになり、非常に好適である。また、書き込み可能であり、書き込み後、“1”になる。
・F/Eビット=“0”のとき
サブプロセッサ(111〜113)により読み出され、処理中あるいは空き状態であるため、最新データではない無効データである。読み出し不可だが、予約は可能であり、“1”になったときにあらかじめ読み出し予約情報として追加セグメントに書き込まれたサブプロセッサID、ローカルストレージアドレスへ読み出される。
すなわち、複数のサブプロセッサによりデータを多段階に処理する必要がある場合、上記のように構成することにより、前段階の処理を行うサブプロセッサが、処理済みのデータをメインメモリ141の所定のアドレスへ書き込んだ直後に、ただちにそのデータが後段階の処理を行うサブプロセッサへ読み出されることになり、非常に好適である。また、書き込み可能であり、書き込み後、“1”になる。
・F/Eビット=“1”のとき
サブプロセッサ(111〜113のどれか)により読み出されておらず、したがって、処理中ではない最新データである。読み出し可能であり、読み出し後、“0”になる。書き込み不可である。
F/Eビットは、以上のように定義される。
サブプロセッサ(111〜113のどれか)により読み出されておらず、したがって、処理中ではない最新データである。読み出し可能であり、読み出し後、“0”になる。書き込み不可である。
F/Eビットは、以上のように定義される。
図7Bに示すサブプロセッサ111のローカルストレージ131も、複数のアドレス指定可能なメモリロケーションから構成される。各メモリロケーションに対してはやはり、追加セグメントが割り振られる。追加セグメントは、メインメモリ141の追加セグメントの内容に加えてビジービットを含む。
メインメモリ141のデータをローカルストレージ131のメモリロケーションへ読み出すときには、対応するビジービットを“1”に設定し、予約する。ビジービットが“1”のメモリロケーションには他のデータは格納不可である。ローカルストレージ131のメモリロケーションへ読み出した後、ビジービットは“0”になり、任意の目的に使用可能になる。
さらに、図7Aに示すように、情報処理装置100のメインメモリ141には複数の「サンドボックス」が用意される。これらサンドボックスはメインメモリ141の領域を画定するものであり、各サンドボックスはサブプロセッサ111〜113に割り当てられ、排他的に使用可能とされる。すなわち、サブプロセッサ111〜113のそれぞれは、自身に割り当てられたサンドボックスを使用可能だが、前述の領域を超えてデータのアクセスを行えない。また、図7Aに示すように、メインメモリ141は複数のメモリロケーションから構成されるが、サンドボックスはこれらのメモリロケーションの集合である。
さらに、メインメモリ141の排他制御を実現するために、図8に示すようなキー管理テーブルが用意される。このキー管理テーブルは、SRAMのような比較的高速のメモリに用意され、DMAコントローラ121と関連付けられる。キー管理テーブルの各エントリには、サブプロセッサ111〜113を識別する「サブプロセッサID」、「サブプロセッサキー」および「キーマスク」が含まれる。なお、サブプロセッサ111〜113の場合には、N=2である。
ここで、サブプロセッサ111〜113のうちの任意のサブプロセッサがメインメモリ141を使用するときのプロセスを図7および図8を用いて説明する。サブプロセッサはDMAコントローラ121へ、読み出しあるいは書き込みコマンドを出力する。このコマンドには、そのサブプロセッサ自身のサブプロセッサIDと、使用要求対象先であるメインメモリ141のアドレスとが含まれる。DMAコントローラ121は、このコマンドを実行する前にキー管理テーブルを参照し、使用要求元であるサブプロセッサのサブプロセッサキーを調べる。
次いで、DMAコントローラ121は、調べたサブプロセッサキーと、サブプロセッサ111の使用要求先である図7に示されるメインメモリ141のメモリロケーションに割り振られたアクセスキーとを比較する。2つのキーが一致した場合のみ、前述のコマンドを実行する。
また、図8に示すキーマスクの使用方法として、キーマスクの任意のビットが“1”になることにより、関連付けられたサブプロセッサキーの対応するビットが“0”あるいは“1”になることができる。
例えば、サブプロセッサキーが“1010”であるとする。通常このサブプロセッサキーによって“1010”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“0001”に設定されている場合、このサブプロセッサキーを用いて“1010”あるいは“1011”のいずれかのアクセスキーを持つサンドボックスへのアクセスが可能となる。以上のようにしてサンドボックスの排他性を実現する。
すなわち、前述の複数のサブプロセッサ111〜113によりデータを多段階に処理する必要がある場合、上述のように構成することにより、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサだけがメインメモリ141の所定のアドレスへアクセスでき、したがって、データの保護が可能となる。
例えば、以下のように使用することが考えられる。まず、情報処理装置100の起動直後は、キーマスクの値はすべてゼロである。メインプロセッサ101のプログラムが実行され、サブプロセッサ111〜113のプログラムと連携動作するものとする。
第1のサブプロセッサ111により出力された処理結果データをいったんメインメモリ141に格納し、第2のサブプロセッサ112に入力する場合には、メインメモリ141の該当する領域は、どちらのサブプロセッサからもアクセスできる必要がある。
そのような場合、メインプロセッサ101のプログラムは、キーマスクの値を適切に変更し、メインメモリ141に複数のサブプロセッサからアクセスできる領域を設けて、サブプロセッサ111、112による多段階的な処理を可能にする。
より具体的には、例えば情報処理装置200からのデータ→情報処理装置100の第1のサブプロセッサ111による処理→第1のメインメモリ領域→第2のサブプロセッサ112による処理→第2のメインメモリ領域、という手順で多段階処理が行われる場合、
第1のサブプロセッサ111のサブプロセッサキー=“0100”
第1のメインメモリ領域のアクセスキー=“0100”
第2のサブプロセッサ112のサブプロセッサキー=“0101”
第2のメインメモリ領域のアクセスキー=“0101”
のような設定のままだと、第2のサブプロセッサ112は第1のメインメモリ領域にアクセスすることができない。
第1のサブプロセッサ111のサブプロセッサキー=“0100”
第1のメインメモリ領域のアクセスキー=“0100”
第2のサブプロセッサ112のサブプロセッサキー=“0101”
第2のメインメモリ領域のアクセスキー=“0101”
のような設定のままだと、第2のサブプロセッサ112は第1のメインメモリ領域にアクセスすることができない。
そこで、第2のサブプロセッサ112のキーマスクを“0001”にすることにより、第2のサブプロセッサ112による第1のメインメモリ領域へのアクセスを可能にすることができる。
〔3−3〕 分散処理の手順
ここでは、図6のシステムにより分散処理を行う手順について説明する。ネットワーク上の情報処理装置100〜300の間では、ソフトウェアセルが伝送される。ある情報処理装置は、コマンド、プログラムおよびデータを含むソフトウェアセルを生成し、ネットワーク400を通じて他の情報処理装置に送信することにより処理を分散できる。
ここでは、図6のシステムにより分散処理を行う手順について説明する。ネットワーク上の情報処理装置100〜300の間では、ソフトウェアセルが伝送される。ある情報処理装置は、コマンド、プログラムおよびデータを含むソフトウェアセルを生成し、ネットワーク400を通じて他の情報処理装置に送信することにより処理を分散できる。
ソフトウェアセルは、例えば図9に示すように構成される。すなわち、「送信元ID」には、ソフトウェアセルの送信元である情報処理装置のネットワークアドレスや情報処理装置ID、メインプロセッサID、サブプロセッサIDが含まれる。「送信先ID」および「応答先ID」には、ソフトウェアセルの送信先である情報処理装置およびソフトウェアセルの実行結果の応答先である情報処理装置について同じ情報が含まれる。
「セルインターフェイス」には、ソフトウェアセルの利用に必要な情報が含まれ、「グローバルID」、「必要なサブプロセッサ」、「サンドボックスサイズ」、「前回のソフトウェアセルID」から構成される。グローバルIDは、ネットワーク全体を通してソフトウェアセルを一意的に識別できるものであり、送信元IDおよびソフトウェアセルの作成あるいは送信の日付と時刻に基づいて作成される。また、必要なサブプロセッサによって、ソフトウェアセルの実行に必要な最低数のサブプロセッサが与えられる。
さらに、サンドボックスサイズによって、ソフトウェアセルの実行に必要なメインメモリ141内およびサブプロセッサ111〜113のローカルストレージ131のメモリ量が与えられる。前回のソフトウェアセルIDによって、ストリーミングデータなどのシーケンシャルな実行を要求する1グループのソフトウェアセルの前回のソフトウェアセルの識別子が提供される。
また、ソフトウェアセルにおいて、「実行セクション」が、「DMAコマンド」、「プログラム」、「データ」から構成される。DMAコマンドには、プログラムの起動に必要な一連のDMAコマンドが含まれ、プログラムには、サブプロセッサによって実行されるサブプロセッサプログラムが含まれる。また、データとは、これらのサブプロセッサプログラムを含むプログラムによって処理されるデータである。
さらに、DMAコマンドには、「ロードコマンド」、「キックコマンド」、「ステータスコマンド」、「ステータス返信コマンド」、「機能プログラム実行コマンド」がある。
ロードコマンドは、メインメモリ141の情報を、サブプロセッサのローカルストレージへロードするコマンドである。このため、ロードコマンドは、ロードコマンド本体の他に、「メインメモリアドレス」、「サブプロセッサID」、「ローカルストレージアドレス」(LSアドレス)を含む。
なお、メインアドレスは、情報のロード元であるメインメモリ141の所定領域のアドレスを示す。サブプロセッサIDおよびローカルストレージアドレスは、情報のロード先であるサブプロセッサの識別子およびローカルストレージ131のアドレスを示す。
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンド本体の他に「サブプロセッサID」と、「プログラムカウンタ」とを有する。なお、サブプロセッサIDは、キックする対象サブプロセッサを識別し、プログラムカウンタは、プログラムの実行用プログラムカウンタのためのアドレスを与える。
ステータスコマンドは、送信先IDに示される情報処理装置の現在の状態(装置情報)を要求するコマンドであり、ステータス返信コマンドは、後述するとおりである。
また、機能プログラム実行コマンドは、マスタがスレーブに対して機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信したスレーブは、後述する「機能プログラムID」によって、起動すべき機能プログラムを識別する。なお、機能プログラムについては後述するが、例えば図6および図12に示す情報処理装置100(および200、300)のメインメモリ141が記憶するソフトウェアの構成図において、機能プログラムのカテゴリに属するプログラムである。機能プログラムはメインメモリ141にロードされ、メインプロセッサ101により実行される。
そして、ステータス返信コマンドは、ステータスコマンドを受信した情報処理装置が、自身の装置情報を当該ステータスコマンドに含まれる応答先IDに示される情報処理装置へ応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納するが、そのときのデータ領域の構造の一例を図10に示す。
この図10を用いて、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造について説明する。
「情報処理装置ID」は、自身の装置情報を応答する情報処理装置を識別するための識別子であり、電源投入時にメインプロセッサ101によって、電源投入時の日付、時刻、情報処理装置のネットワークアドレス、サブプロセッサの数などに基づいて生成される。「情報処理装置種別ID」には、情報処理装置の特徴を表す値が含まれる。この情報処理装置の特徴としては、例えば、ハードディスクレコーダー、PDA、テレビなどといった商品を表す場合もあれば、画像処理、映像記録再生などといった機能を表す場合もある。
「MSステータス」は、情報処理装置が、マスタあるいはスレーブのどちらで動作しているかを表し、“0”のときにはマスタとして動作し、“1”のときにはスレーブとして動作していることを表す。
「メインプロセッサ動作周波数」はメインプロセッサ101の動作周波数を表す。「メインプロセッサ使用率」はメインプロセッサ101で現在動作しているすべてのプログラムが、メインプロセッサ101を使用している割合を表す。「サブプロセッサ数」は、情報処理装置が有するサブプロセッサの数を表す。「サブプロセッサID」は、情報処理装置におけるサブプロセッサを識別するための識別子である。
「サブプロセッサステータス」はサブプロセッサの状態を表すものであり、unused、reserved、busyなどの状態がある。unusedは、当該サブプロセッサが未使用の場合であり。reservedは、現在は未使用であるが、予約されている場合、busyは使用中であることを示す。
「サブプロセッサ使用率」は、当該サブプロセッサで動作しているプログラムが、そのサブプロセッサを使用している割合を表す。ステータスがbusyの場合には、サブプロセッサ使用率は現在の使用率を示し、reservedの場合には、後に使用されるときの使用率を示す。そして、サブプロセッサID、サブプロセッサステータス、サブプロセッサ使用率は、これらを1組とし、サブプロセッサ数だけ存在する。
「メインメモリ総容量」および「メインメモリ使用量」は、情報処理装置に接続されているメインメモリ141の総容量および現在使用中の容量を表す。
「外部記憶装置数」は、情報処理装置に接続されている外部記憶装置142の数を表し、「外部記憶装置ID」は、情報処理装置に接続されている外部記憶装置142を一意的に識別する情報を表す。「外部記憶装置種別ID」には、対応する外部記憶装置142の種類を表す情報が含まれる。この外部記憶装置142の種類としては、前述のものが想定される。「外部記憶装置総容量」および「外部記憶装置使用量」は、外部記憶装置IDにより識別される外部記憶装置142の総容量および現在使用中の容量を表す。
外部記憶装置ID、外部記憶装置種別ID、外部記憶装置総容量、外部記憶装置使用量は、これらを1組とし、外部記憶装置142の数だけ存在する。すなわち、1つの情報処理装置に複数の外部記憶装置が接続されている場合であっても、それぞれの外部記憶装置には異なる外部記憶装置IDが割り当てられ、また、外部記憶装置種別ID、外部記憶装置総容量、外部記憶装置使用量も個別に管理されることになる。
〔3−4〕 ソフトウェアセルの生成および実行
ここでは、ソフトウェアセルを生成し、実行するまでのプロセスについて説明する。情報処理装置100〜300のうちのある情報処理装置のメインプロセッサ101はソフトウェアセルを生成し、ネットワーク400を通じて他の情報処理装置へ送信する。送信元である情報処理装置、送信先である情報処理装置および応答先である情報処理装置は、前述の送信元ID、送信先IDおよび応答先IDにより識別される。
ここでは、ソフトウェアセルを生成し、実行するまでのプロセスについて説明する。情報処理装置100〜300のうちのある情報処理装置のメインプロセッサ101はソフトウェアセルを生成し、ネットワーク400を通じて他の情報処理装置へ送信する。送信元である情報処理装置、送信先である情報処理装置および応答先である情報処理装置は、前述の送信元ID、送信先IDおよび応答先IDにより識別される。
ソフトウェアセルを受信した他の情報処理装置のメインプロセッサ101は、メインメモリ141にそのソフトウェアセルを格納する。メインプロセッサ101はソフトウェアセルを評価し、それに含まれるDMAコマンドを処理する。
具体的には、メインプロセッサ101は、まず、ロードコマンドを実行する。すると、ロードコマンドに含まれるメインメモリ141のメインメモリアドレスから、同様にロードコマンドに含まれるサブプロセッサIDと、ローカルストレージアドレスに対応するサブプロセッサのローカルストレージ131の所定領域へ情報がロードされる。ここで言う情報として、受信したソフトウェアセルに含まれるサブプロセッサプログラムあるいはデータがあるが、その他のデータなどであってもよい。
次に、メインプロセッサ101は、キックコマンドを、このキックコマンドに含まれるサブプロセッサIDに対応するサブプロセッサ111へ、同様にキックコマンドに含まれるプログラムカウンタとともに出力する。サブプロセッサ111はキックコマンドおよびプログラムカウンタにしたがってサブプロセッサプログラムを実行する。そして、その実行結果をメインメモリ141に格納し、その後、実行完了したことをメインプロセッサ101へ通知する。
また、メインメモリ141において実行される機能プログラムなどのメインメモリ用プログラムを、ソフトウェアセルを用いて他の情報処理装置へ送信することも考えられる。その場合には、サブプロセッサ111プログラムの代わりにメインメモリ141用プログラムを含むロードコマンドを送信することになる。
他の情報処理装置のメインメモリ141へ送信したメインメモリ用プログラムを実行するときには、例えば、メインプロセッサID、メインメモリアドレス、メインメモリ用プログラムを識別するための識別子、プログラムカウンタを含み、DMAコマンドが機能プログラム実行コマンドであるソフトウェアセルを同様に他の情報処理装置へ送信する。
このようにしてソフトウェアセルを使用することにより、ソフトウェアセルの送信元である情報処理装置は、送信先である他の情報処理装置をユーザが操作する必要なく、サブプロセッサプログラムあるいはメインメモリ用プログラムを他の情報処理装置へ送信し、そのサブプロセッサプログラムを他の情報処理装置のサブプロセッサへロードさせ、そのサブプロセッサプログラムあるいはメインメモリ用プログラムを、他の情報処理装置により実行させることができる。
以上のように、情報処理装置は、自身が機能プログラムまたはサブプロセッサプログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらのプログラムを取得できる。さらに、各サブプロセッサ間においては、DMA方式によりデータ転送を行うとともに、サンドボックスを採用することにより、1つの情報処理装置内でデータを多段階に処理する必要がある場合でも、高速、かつ、高セキュリティに処理を実行することができる。
〔3−5〕 処理例
ここでは、ネットワーク400に接続されている複数の情報処理装置、例えば図11に示すように、3台の情報処理装置100〜300が仮想的な1台の情報処理装置として動作するための前提処理として、情報処理装置の電源投入後の処理を説明する。
ここでは、ネットワーク400に接続されている複数の情報処理装置、例えば図11に示すように、3台の情報処理装置100〜300が仮想的な1台の情報処理装置として動作するための前提処理として、情報処理装置の電源投入後の処理を説明する。
図12は、情報処理装置100〜300のうちの任意の情報処理装置、例えば情報処理装置100のメインメモリ141が記憶するソフトウェアの構成を示すものである。各プログラムは機能あるいは特徴によってカテゴライズされている。また、これらのプログラムは情報処理装置100の電源投入前には、情報処理装置100に接続されている外部記憶装置142に格納されている。
電源を投入すると、メインプロセッサ101は、デバイスドライバのカテゴリに属する各プログラムおよび制御プログラムのカテゴリに属する各プログラムをメインメモリ141にロードする。各プログラムをメインメモリ141にロードする手順は、以下のとおりである。
まず、メインプロセッサ101は、ディスクコントローラ122に対して読み出し命令を実行することにより外部記憶装置142からプログラムを読み出す。そして、DMAコントローラ121への書き込み命令を実行することにより、その読み出したプログラムをメインメモリ141にロードする。なお、機能プログラムのカテゴリに属する各プログラムについては、必要なときに必要なものだけをロードしてもよく、他のカテゴリに属する各プログラムと同様に、電源投入後にロードしてもよい。
ここで、機能プログラムは、ネットワークに接続されたすべての情報処理装置の外部記録装置に記録されている必要はなく、どれか1つの情報処理装置の外部記録装置に記録されていれば、上述の方法により他の情報処理装置から機能プログラムをロードすることができるので、結果的に図11の仮想的な1台の情報処理装置として機能プログラムを実行できる。
さらに機能プログラムには、機能プログラムごとに一意な識別子が機能プログラムIDとして割り当てられている。機能プログラムIDは、日付や時刻、情報処理装置IDなどから機能プログラムの作成の段階で決定される。
メインプロセッサ101は、自身が動作する情報処理装置に関する装置情報を格納するための領域をメインメモリ141に確保し、その装置情報を自装置の装置情報テーブルとして記録する。ここでの装置情報とは、図10に示される情報処理装置ID以下の情報である。
そして、メインプロセッサ101は、メインメモリ141にロードされたマスタ/スレーブマネージャを実行する。マスタ/スレーブマネージャは処理が終了すると、終了通知をメインプロセッサ101へ送る。メインプロセッサ101はマスタ/スレーブマネージャから終了通知を受け取ると、次に、能力交換プログラムを実行する。マスタ/スレーブマネージャおよび能力交換プログラムは、情報処理装置100の電源が切断されるまで動作する常駐プログラムである。
マスタ/スレーブマネージャは、自身が動作する情報処理装置100がネットワーク400に接続されていることを検知すると、同一ネットワークに接続されている他の情報処理装置200、300の存在を確認する。マスタ/スレーブマネージャは、もしもネットワーク400に他の情報処理装置が存在しないことを確認したときには、前述の自装置の装置情報テーブルにおけるMSステータスを“0”に設定する。ネットワークに他の情報処理装置が存在することを確認したときには、MSステータスを“0”以外、例えば“1”に設定する。
また、マスタ/スレーブマネージャは、常にネットワーク400の状況を確認し、ネットワーク400に新たに情報処理装置が接続されたことや、ネットワーク400に接続されている情報処理装置の電源が切断されたこと、あるいはネットワーク400から情報処理装置が切り離されたことを監視し、ネットワークの接続状態に変化があると、その情報を能力交換プログラムに通知する。
マスタ/スレーブマネージャが同一ネットワークに接続されている他の情報処理装置の存在を確認するには、例えば次のようにすればよい。すなわち、各情報処理装置内のマスタ/スレーブマネージャは、送信先IDとしてネットワークに接続された他のすべての情報処理装置に対して定期的に存在確認要求を送信する。存在確認要求を受信した各情報処理装置は、存在確認要求の送信元に対して自身の存在することを通知するための返信を行う。ネットワークから切り離された情報処理装置からは当然のことながら、返信が行われないことになる。このようにしてネットワークに接続されているすべての情報処理装置の存在を、互いに把握することができる。
能力交換プログラムは、自身が動作する情報処理装置がマスタである場合、ネットワーク400に接続されている他の情報処理装置に関する装置情報を取得する。装置情報の取得は、前述したように、DMAコマンドがステータスコマンドであるソフトウェアセルを生成・送信し、その後DMAコマンドがステータス返信コマンドであり、データとして他の情報処理装置に関する装置情報を含むソフトウェアセルを受信することで可能である。
能力交換プログラムは、前述の自装置の装置情報テーブルと同様に、取得した他のすべての情報処理装置に関する装置情報を格納するための領域をメインメモリ141に確保し、当該情報を他装置の装置情報テーブルとして記録する。すなわち、マスタのメインメモリ141には、ネットワーク400に接続されている自身を含むすべての情報処理装置の装置情報テーブルが記録される。
一方、能力交換プログラムが動作する情報処理装置がスレーブである場合、ネットワーク400に接続されているマスタの情報処理装置および自身以外のすべてのスレーブの情報処理装置に関する装置情報を取得する。そして装置情報に含まれる情報処理装置IDおよびMSステータスをメインメモリ141に記録する。すなわち、スレーブには、自装置に関するすべての装置情報が装置情報テーブルとして記録されるとともに、ネットワーク400に接続された自身以外のすべての情報処理装置について、その情報処理装置IDおよびMSステータスが装置情報テーブルとして記録されることになる。
また、能力交換プログラムは、ネットワーク400に新たに情報処理装置が接続されたことを示すネットワーク状態の変化通知をマスタ/スレーブマネージャから受信すると、その情報処理装置に関する装置情報を取得する。同様にネットワーク400から情報処理装置が切り離された、あるいは電源が切断されたというネットワーク状態の変化通知を受信すると、当該装置の装置情報テーブルをメインメモリ141から削除する。
〔3−6〕 マスタおよびスレーブの制御フロー
ネットワーク400に接続されている複数の情報処理装置を仮想的な1台の情報処理装置として動作させるために、マスタの情報処理装置(以下「マスタ」と呼ぶ)が、ユーザの操作およびスレーブとなる情報処理装置(以下「スレーブ」と呼ぶ)の動作状況を把握する必要がある。
ネットワーク400に接続されている複数の情報処理装置を仮想的な1台の情報処理装置として動作させるために、マスタの情報処理装置(以下「マスタ」と呼ぶ)が、ユーザの操作およびスレーブとなる情報処理装置(以下「スレーブ」と呼ぶ)の動作状況を把握する必要がある。
図13は、ネットワーク400に接続されている3台の情報処理装置100〜300が、仮想的な1台の情報処理装置として動作する様子を示すものである。この例においては、情報処理装置100がマスタとして動作し、情報処理装置200および情報処理装置300がスレーブとして動作し、ユーザが情報処理装置200を操作すると、この操作に応じた処理を情報処理装置300が実行する場合である。また、図14は、その場合のフローチャートを示す。
ユーザが情報処理装置200を操作すると、その操作された情報処理装置がマスタあるいはスレーブに関わらず、その操作情報は常にマスタに送信される。マスタにおけるメインプロセッサ101は、当該操作情報に従い、実行する機能プログラムを選択する。このとき、必要ならば、前述の方法にしたがい外部記憶装置142からメインメモリ141へ機能プログラムをロードする。実行時に機能プログラムは、自身が実行されるときに必要なメインプロセッサ101、サブプロセッサ111、メインメモリ141、外部記憶装置142に関する情報をメインプロセッサ101に通知する。ここでの情報とは、図10に示される情報処理装置ID以下の情報である。
機能プログラムがこれらの情報をメインプロセッサへ通知する方法としては、機能プログラムは自身が実行される実行要求の他に、情報通知要求にも対応している。メインプロセッサは機能プログラムへ当該情報通知要求を発行することにより、図10に示される情報処理装置ID以下の情報を取得することができる。
メインプロセッサ101は、メインメモリ141に記録されている前述の自装置あるいは他装置の装置情報テーブルに基づき、当該機能プログラムを実行可能なスレーブを選択する。マスタは、選択されたスレーブへ機能プログラムの実行を要求する。このとき、マスタは、前述の機能プログラムの実行に必要な情報等に基づき、自身のメインメモリ141に記録された選択されたスレーブに関する装置情報テーブルを更新する。
機能プログラムの実行を要求されたスレーブのメインプロセッサ101は、機能プログラムを実行する。その場合にも、必要ならばスレーブのメインプロセッサ101は、前述の方法にしたがい外部記憶装置142からメインメモリ141へ機能プログラムをロードする。
ここで、機能プログラムの実行を要求されたスレーブと接続された外部記憶装置142に必要な機能プログラムが記録されていない場合には、他の情報処理装置100が前述のメインメモリ用プログラムとして当該機能プログラムを機能プログラムの実行を要求されたスレーブへ送信してもよい。さらにメインメモリ用プログラムと同様に、サブプロセッサプログラムも必要ならば、ソフトウェアセルを用いることにより他の情報処理装置100へ送信して、この情報処理装置100のサブプロセッサ111へロードさせ、サブプロセッサプログラムを他の情報処理装置100により実行させることができる。
そして、機能プログラムの処理終了後、終了通知をマスタに送信する。マスタは終了通知を受信することにより、機能プログラムを実行したスレーブに関する装置情報テーブルを更新する。
また、マスタのメインプロセッサ101は、自装置あるいは他装置の装置情報テーブルに基づき、当該機能プログラムを実行可能な情報処理装置100として自身を選択する場合もあり得る。その場合には、マスタが機能プログラムを実行する。その際にはスレーブのメインメモリ141に記録されたマスタに関する装置情報テーブルが、マスタの動作状況に応じて更新されることになる。
このようにして、ユーザは、複数の情報処理装置のうちの1台の情報処理装置だけを操作することにより、他の情報処理装置を操作しなくても、複数の情報処理装置を仮想的な1台の情報処理装置として動作させることができる。
〔4〕 まとめ
上述の記憶管理システムによれば、ガーベジコレクション機能を持った記憶管理システムにおいて、把握や管理が困難な複数の複雑な参照を持つデータが存在している場合でも、指示したデータを容易に、かつ、確実に破棄することができる。
上述の記憶管理システムによれば、ガーベジコレクション機能を持った記憶管理システムにおいて、把握や管理が困難な複数の複雑な参照を持つデータが存在している場合でも、指示したデータを容易に、かつ、確実に破棄することができる。
また、指示したデータのみを参照させて存続させることができるので、データのユニーク性を持たせて管理することも容易に、かつ、確実に行うことができる。特に、永続性を持った大規模なデータを管理しなければならないようなデータベースシステムにおいて、すべてのデータをスクラッチから再構築するような最悪の手段に陥ることなく、データの有効性やユニーク性を保ちつつ、データを管理して維持し続けることができる。
なお、上述において、図4の指示は、記憶管理システムに対する指示として実行されるが、システムのアプリケーションプログラムから呼び出されるような記憶管理システムの関数機能として利用可能であってもよい。
また、上述においては、記憶装置データ領域、ポインタ変数および間接参照テーブルが、図1の記憶装置12に置かれているとしたが、2次記憶装置13に置かれていてもよい。その場合には、データ参照の方法として、セクタ番号、シリンダ番号、セクタ内オフセットなどをエントリアドレスとすればよい。
〔略語の一覧〕
CD :Compact Disc
CD±RW :CD +ReWritable, CD ReWritable
CPU :Central Processing Unit
DMA :Direct Memory Access
DRAM :Dynamic RAM
DVD±RW:DVD +ReWritable, DVD ReWritable
ID :IDentification
MO :Magneto-Optical disk
RAM :Random Access Memory
ROM :Read Only Memory
SRAM :Static RAM
CD :Compact Disc
CD±RW :CD +ReWritable, CD ReWritable
CPU :Central Processing Unit
DMA :Direct Memory Access
DRAM :Dynamic RAM
DVD±RW:DVD +ReWritable, DVD ReWritable
ID :IDentification
MO :Magneto-Optical disk
RAM :Random Access Memory
ROM :Read Only Memory
SRAM :Static RAM
11…CPU、12…記憶装置、13…2次記憶装置、14…入力装置、15…出力装置、16…ネットワーク
Claims (4)
- データと、このデータとのリンク構造が動的に変化するリンク元とを管理し、ガーベジコレクション機能を有する記憶管理システムにおいて、
上記リンク元により間接参照テーブルを参照し、
この参照結果により上記リンク元により参照されるべきデータを参照する
ようにしたデータ管理方法。 - 請求項1に記載のデータ管理方法において、
上記間接参照テーブルの内容を変更して上記リンク元により参照されるべきデータを変更する
ようにしたデータ管理方法。 - 請求項1あるいは請求項2に記載のデータ管理方法において、
上記データを管理する領域のうち、上記間接参照テーブルにより参照されていないデータの領域をガーベジコレクションにおける回収の対象とする
ようにしたデータ管理方法。 - データと、このデータとのリンク構造が動的に変化するリンク元とを管理し、ガーベジコレクション機能を有する記憶管理システムにおいて、
上記データのうちの必要なデータと、不必要なデータとを指定することにより、上記不必要なデータに対するすべての参照を、上記必要なデータに対する参照に変更する
ようにしたデータ管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004039485A JP2005234634A (ja) | 2004-02-17 | 2004-02-17 | データ管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004039485A JP2005234634A (ja) | 2004-02-17 | 2004-02-17 | データ管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005234634A true JP2005234634A (ja) | 2005-09-02 |
Family
ID=35017559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004039485A Pending JP2005234634A (ja) | 2004-02-17 | 2004-02-17 | データ管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005234634A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014534488A (ja) * | 2011-09-12 | 2014-12-18 | マイクロソフト コーポレーション | 同じタイプの複数のメタデーター表現の効率的な提供 |
-
2004
- 2004-02-17 JP JP2004039485A patent/JP2005234634A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014534488A (ja) * | 2011-09-12 | 2014-12-18 | マイクロソフト コーポレーション | 同じタイプの複数のメタデーター表現の効率的な提供 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8103771B2 (en) | Distributing processing apparatus, method, and system | |
TWI239450B (en) | Apparatus, computer readable recording medium, and method for yielding to a processor within a logically partitioned data processing system | |
US8086880B2 (en) | Information processing apparatus, information processing method, and computer program | |
CN100485676C (zh) | 文件系统串行化重新初始化装置、方法和系统 | |
US8131969B2 (en) | Updating system configuration information | |
CN102541619B (zh) | 虚拟机管理装置和方法 | |
JP2008090741A (ja) | 計算機システム、データ移行監視方法及びデータ移行監視プログラム | |
JP2005235019A (ja) | ネットワークシステム、分散処理方法、情報処理装置 | |
TW201502781A (zh) | 解決記憶體存取錯誤時重播記憶體交易 | |
CN104636181A (zh) | 用于迁移虚拟机的方法和系统 | |
CN103699496A (zh) | 分级存储器管理 | |
JP2007249674A (ja) | サーバシステム | |
JP5385458B2 (ja) | 計算機システムおよびその更改方法 | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
WO2012124017A1 (ja) | コマンド制御方法およびコマンド制御プログラム | |
JP2006031525A (ja) | 情報処理装置および情報処理方法、並びに、プログラム | |
JP2010140403A (ja) | 情報処理装置及び情報処理方法及びプログラム | |
TWI276969B (en) | Information processing apparatus, method, system and information processing program of accessible media | |
JP2005234634A (ja) | データ管理方法 | |
US20060085673A1 (en) | Computer system, storage apparatus and storage management method | |
JP2005234617A (ja) | マルチプロセッサデバッガおよびデバッグ方法 | |
JP2003288243A (ja) | 記憶装置システムの制御方法および記憶装置、管理装置、およびプログラム | |
JP4349189B2 (ja) | ネットワークシステム、番組録画予約方法および情報処理装置 | |
JP2005235246A (ja) | サーバ装置 | |
JPH0519179B2 (ja) |