(57)【特許請求の範囲】
【請求項１】
各々プログラムを実行するための実行環境を備えかつ通信回線を介して相互に接続される複数の計算機を含み、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムであって、第１の参照オブジェクトの参照情報を管理する参照管理手段と、前記第１の参照オブジェクトが参照する第１の被参照オブジェクトを有する実行環境以外の他の実行環境に、前記第１の参照オブジェクトを参照するための情報を送信する際に前記第１の参照オブジェクトを前記他の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する被参照管理手段と、前記他の実行環境から前記第２の被参照オブジェクトに対して第１のアクセス要求メッセージを受信した際に、前記第２の被参照オブジェクトに関して参照管理手段の管理する参照情報を基にして、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行手段の処理が必要であるか否かを選択し、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行手段の処理が必要である場合には、前記第１の被参照オブジェクトを有する実行環境に対して第２のアクセス要求メッセージを送信するアクセス中継手段と、別の実行環境から前記第２のアクセス要求メッセージを受信した際に所定の処理を実行して所定の情報を格納しかつ所定の実行環境に返信するプログラム実行手段とを前記複数の計算機各々に有することを特徴とする分散システム。
【請求項２】
前記第１の参照オブジェクトを有する実行環境において前記第１の参照オブジェクトの参照先情報を前記他の実行環境に伝搬する際に前記第１の被参照オブジェクトを有する実行環境に対して参照要求メッセージを送信する第１のアクセス制御手段と、前記第１の被参照オブジェクトを有する実行環境において前記参照要求メッセージを受信した際に所定のセキュリティポリシーに合致する場合にのみ前記他の実行環境から前記第２の被参照オブジェクトへの参照許可を与える第２のアクセス制御手段とを前記複数の計算機各々に含むことを特徴とする請求項１記載の分散システム。
【請求項３】
複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムであって、
第１の参照オブジェクトを有する第１の実行環境は、前記第１の参照オブジェクトの有する参照情報を管理する第１の参照管理手段と、前記第１の実行環境及び前記第１の被参照オブジェクトを有する第２の実行環境以外の第３の実行環境に、前記第１の参照オブジェクトを参照するための情報を送信する際に前記第１の参照オブジェクトを前記第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する第１の被参照管理手段と、前記第３の実行環境から前記第２の被参照オブジェクトに対して第１のアクセス要求メッセージを受信した際に、前記第１の参照管理手段の管理する参照情報を基にして、所定のプログラムに応じて順次実行する第１のプログラム実行手段での処理が必要か、前記第１の被参照オブジェクトを有する実行環境における第２のプログラム実行手段の処理が必要であるか否かを選択し、前記第２の実行環境における第２のプログラム実行手段の処理が必要である場合には、前記第２の実行環境に対して第２のアクセス要求メッセージを送信する第１のアクセス中継手段とを有し、前記第２の実行環境は、前記第１の被参照オブジェクトを他の実行環境から参照可能なように管理する第２の被参照管理手段と、前記第１の被参照オブジェクトに対する前記第２のアクセス要求メッセージを受信した際に所定の処理を実行して所定の情報を格納しかつ所定の実行環境に返信する前記第２のプログラム実行手段とを有し、
前記第３の実行環境は、前記第１の実行環境から前記第１の参照オブジェクトの参照情報を受信した際に前記第１の参照オブジェクトを参照する第２の参照オブジェクトを生成する第２の参照管理手段と、所定のプログラムに応じて順次実行する第３のプログラム実行手段と、前記第３のプログラム実行手段が前記第２の参照オブジェクトにアクセスする際に、前記第２の参照管理手段の管理する参照情報を基にして、所定のプログラムに応じて順次実行する第３のプログラム実行手段での処理が必要か、前記第１の実行環境における第１のプログラム実行手段の処理が必要であるかを選択し、前記第１の実行環境における第１のプログラム実行手段の処理が必要である場合には、前記第１の実行環境に対して第１のアクセス要求メッセージを送信する第２のアクセス中継手段とを有することを特徴とする分散システム。
【請求項４】
複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムであって、
第１の参照オブジェクトを有する第１の実行環境は、前記第１の参照オブジェクトに対してアクセスを受けた際に、前記第１の参照オブジェクトの参照情報を基にして、前記第１の実行環境での処理が必要か、前記第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境における第２のプログラム実行手段での処理が必要であるかを選択し、必要ならば前記第２の実行環境に対してアクセス要求メッセージを送信するアクセス中継手段を有し、
第１の参照オブジェクトを有する第１の実行環境は、前記第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境に対してアクセス要求メッセージを送信するアクセス中継手段を有し、
前記第２の実行環境は、前記アクセス要求メッセージに応じた所定の処理を実行して所定の情報を格納しかつ要求元の実行環境に返信するプログラム実行手段と、前記第１の参照オブジェクトの有する参照先情報を前記第１の実行環境及び前記第２の実行環境以外の第３の実行環境に伝搬する際に前記第１の参照オブジェクトを前記第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する被参照管理手段とを有し、
前記第３の実行環境は、受信した前記第１の参照オブジェクトの参照先情報を基に前記第２の被参照オブジェクトへリモート参照する第２の参照オブジェクトを生成する参照管理手段とを有することを特徴とする分散システム。
【請求項５】
前記第１の実行環境は、前記第１の参照オブジェクトの参照先情報を前記第３の実行環境に伝搬する際に前記第２の実行環境に対して参照要求メッセージを送信する第１のアクセス制御手段を含み、
前記第２の実行環境は、前記参照要求メッセージを受信した際に所定のセキュリティポリシーに合致する場合にのみ前記第３の実行環境から前記第２の被参照オブジェクトへの参照許可を与える第２のアクセス制御手段を含むことを特徴とする請求項４記載の分散システム。
【請求項６】
各々プログラムを実行するための実行環境を備えかつ通信回線を介して相互に接続される複数の計算機を含み、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムのメモリ管理方法であって、第１の参照オブジェクトの参照情報を管理するステップと、前記第１の参照オブジェクトが参照する第１の被参照オブジェクトを有する実行環境以外の他の実行環境に、前記第１の参照オブジェクトを参照するための情報を送信する際に前記第１の参照オブジェクトを前記他の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理するステップと、前記他の実行環境から前記第２の被参照オブジェクトに対して第１のアクセス要求メッセージを受信した際に、前記第２の被参照オブジェクトに関して参照管理手段の管理する参照情報を基にして、前記実行環境での処理が必要か、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行処理が必要であるかを選択し、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行処理が必要である場合には、前記第１の被参照オブジェクトを有する実行環境に対して第２のアクセス要求メッセージを送信するアクセス中継ステップと、別の実行環境から前記第２のアクセス要求メッセージを受信した際に所定の処理を実行して所定の情報を格納しかつ所定の実行環境に返信するステップとを前記複数の計算機各々に有することを特徴とするメモリ管理方法。
【請求項７】
前記第１の参照オブジェクトを有する実行環境において前記第１の参照オブジェクトの参照先情報を前記他の実行環境に伝搬する際に前記第１の被参照オブジェクトを有する実行環境に対して参照要求メッセージを送信するステップと、前記第１の被参照オブジェクトを有する実行環境において前記参照要求メッセージを受信した際に所定のセキュリティポリシーに合致する場合にのみ前記他の実行環境から前記第２の被参照オブジェクトへの参照許可を与えるステップとを前記複数の計算機各々に含むことを特徴とする請求項６記載のメモリ管理方法。
【請求項８】
複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムのメモリ管理方法であって、
第１の参照オブジェクトを有する第１の実行環境は、前記第１の参照オブジェクトの参照情報を基にして、前記第１の実行環境での処理が必要か、前記第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境での処理が必要であるかを選択し、必要ならば前記第２の実行環境に対してアクセス要求メッセージを送信するアクセス中継ステップを有し、
前記第２の実行環境は、前記アクセス要求メッセージに応じた所定の処理を実行して所定の情報を格納しかつ前記要求元の実行環境に返信するプログラム実行ステップと、前記第１の参照オブジェクトの有する参照先情報を前記第１の実行環境及び前記第２の実行環境以外の第３の実行環境に伝搬する際に前記第１の参照オブジェクトを前記第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する被参照管理ステップとを有し、
前記第３の実行環境は、受信した前記第１の参照オブジェクトの参照先情報を基に前記第２の被参照オブジェクトへリモート参照する第２の参照オブジェクトを生成する参照管理ステップを有することを特徴とするメモリ管理方法。
【請求項９】
前記第１の実行環境は、前記第１の参照オブジェクトの参照先情報を前記第３の実行環境に伝搬する際に前記第２の実行環境に対して参照要求メッセージを送信する第１のアクセス制御ステップを含み、
前記第２の実行環境は、前記参照要求メッセージを受信した時に所定のセキュリティポリシーに合致する場合にのみ前記第３の実行環境から前記第２の被参照オブジェクトへの参照許可を与える第２のアクセス制御ステップを含むことを特徴とする請求項８記載のメモリ管理方法。
【請求項１０】
各々プログラムを実行するための実行環境を備えかつ通信回線を介して相互に接続される複数の計算機を含み、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムのメモリ管理制御プログラムを記録した記録媒体であって、前記メモリ管理制御プログラムは前記複数の計算機各々に、第１の参照オブジェクトの参照情報を管理させ、前記第１の参照オブジェクトが参照する第１の被参照オブジェクトを有する実行環境以外の他の実行環境に、前記第１の参照オブジェクトを参照するための情報を送信する際に前記第１の参照オブジェクトを前記他の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理させ、前記他の実行環境から前記第２の被参照オブジェクトに対して第１のアクセス要求メッセージを受信した際に、前記第２の被参照オブジェクトに関して参照管理手段の管理する参照情報を基にして、前記実行環境での処理が必要か、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行処理が必要であるかを選択し、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行処理が必要である場合には、前記第１の被参照オブジェクトを有する実行環境に対して第２のアクセス要求メッセージを送信させ、別の実行環境から前記第２のアクセス要求メッセージを受信した際に所定の処理を実行して所定の情報を格納させかつ所定の実行環境に返信させることを特徴とするメモリ管理制御プログラムを記録した記録媒体。
【請求項１１】
前記メモリ管理制御プログラムは前記複数の計算機各々に、前記第１の参照オブジェクトを有する実行環境において前記第１の参照オブジェクトの参照先情報を前記他の実行環境に伝搬する際に前記第１の被参照オブジェクトを有する実行環境に対して参照要求メッセージを送信させ、前記第１の被参照オブジェクトを有する実行環境において前記参照要求メッセージを受信した際に所定のセキュリティポリシーに合致する場合にのみ前記他の実行環境から前記第２の被参照オブジェクトへの参照許可を与えさせることを特徴とする請求項１０記載のメモリ管理制御プログラムを記録した記録媒体。
【請求項１２】
複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムのメモリ管理制御プログラムを記録した記録媒体であって、
前記メモリ管理制御プログラムは第１の参照オブジェクトを有する第１の実行環境に、前記第１の参照オブジェクトの参照情報を基にして、前記第１の実行環境での処理が必要か、前記第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境での処理が必要であるかを選択し、必要ならば前記第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境に対してアクセス要求メッセージを送信させ、
前記メモリ管理制御プログラムは前記第２の実行環境に、前記アクセス要求メッセージに応じた所定の処理を実行して所定の情報を格納しかつ前記要求元の実行環境に返信させ、前記第１の参照オブジェクトの有する参照先情報を前記第１の実行環境及び前記第２の実行環境以外の第３の実行環境に伝搬する際に前記第１の参照オブジェクトを前記第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理させ、
前記メモリ管理制御プログラムは前記第３の実行環境に、受信した前記第１の参照オブジェクトの参照先情報を基に前記第２の被参照オブジェクトへリモート参照する第２の参照オブジェクトを生成させることを特徴とするメモリ管理制御プログラムを記録した記録媒体。
【請求項１３】
前記メモリ管理制御プログラムは前記第１の実行環境に、前記第１の参照オブジェクトの参照先情報を前記第３の実行環境に伝搬する際に前記第２の実行環境に対して参照要求メッセージを送信させ、
前記メモリ管理制御プログラムは前記第２の実行環境に、前記参照要求メッセージを受信した時に所定のセキュリティポリシーに合致する場合にのみ前記第３の実行環境から前記第２の被参照オブジェクトへの参照許可を与えさせることを特徴とする請求項１２記載のメモリ管理制御プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は分散システム及びそれに用いるメモリ管理方法並びにそのメモリ管理制御プログラムを記録した記録媒体に関し、特にネットワークを経由して複数のコンピュータが相互に接続された分散システムにおけるメモリ管理方法に関する。
【０００２】
【従来の技術】
近年、インタネットに代表されるネットワーク基盤の整備によって、個々のコンピュータはネットワークに接続され、相互に通信を行ったり、ネットワークを介してリモートコンピュータの計算機資源を利用することが容易になってきている。それに伴い、ネットワーク接続された複数のコンピュータを１つのシステムとする分散システムが普及してきている。
【０００３】
この種の分散システムにおいては、重要となる技術の１つに分散メモリ管理がある。これは分散システム上の複数のメモリ空間において、正しくメモリ管理を行い、自動的に不要なメモリ空間を開放するというものである。
【０００４】
例えば、“Ｄｉｓｔｒｉｂｕｔｅｄ  Ｇａｒｂａｇｅ  ＣｏｌｌｅｃｔｉｏｎＵｓｉｎｇ  Ｒｅｆｅｒｅｎｃｅ  Ｃｏｕｎｔｉｎｇ”（Ｂｅｖａｎ，Ｄ．Ｉ．，Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ．ＬＮＣＳ２５９，１９８７年６月，ｐｐ．１７６〜１８７）に記載されたように、重み付き参照カウント法を用いた自動メモリ管理装置において、異なるメモリ空間のオブジェクトの参照、すなわちリモート参照するオブジェクトに「参照重み」なる数値を付加させることによってメモリ管理を正しく実現している（以下、従来技術１とする）。
【０００５】
オブジェクトへのリモート参照を持ったオブジェクトが生成される場合には、リモート参照を受けるオブジェクトが総参照重みというオブジェクトに所定の数値の初期値を設定し、リモート参照する参照オブジェクトに部分参照重みとして先の総参照重みと同じ数値を設定する。これによって、リモート参照が「生成」される。
【０００６】
例えば、図１９に示すように、総参照重みの初期値を「６４」とすると、被参照オブジェクトＡ２は総参照重み「６４」を所有し、被参照オブジェクトＡ２をリモート参照する参照オブジェクトＡ１は被参照オブジェクトＡ２に対する部分参照重み「６４」を所有する。オブジェクトへのリモート参照を持つ参照オブジェクトが第３のオブジェクトに被参照オブジェクトの情報を与える場合、参照オブジェクトの部分参照重みを半減し、残り半分の参照重みを第３のオブジェクトへ「分配」する。
【０００７】
図１９に示す状態から参照オブジェクトＡ１が被参照オブジェクトＡ２の情報を分配する場合、図２０に示すように、参照オブジェクトＡ１は所有する部分参照重み「６４」を半減し、「３２」とする。また、残り半分の「３２」は通信メッセージで送信され、オブジェクトＡ３は、図２１に示すように、送信された参照重み「３２」を部分参照重みとする参照オブジェクトとなる。
【０００８】
参照オブジェクトが存在するメモリ空間上で不要となった場合には、所有する部分参照重みの値を含めた参照削除メッセージが被参照オブジェクトに対して送信される。これがリモート参照の「削除」である。被参照オブジェクトは存在するメモリ空間上の他のオブジェクトからも何一つとして参照されなければ、そのメモリ領域を回収し、再利用することができる。
【０００９】
例えば、図２２において、部分参照重み「３２」を所有している参照オブジェクトＡ１が不要と判断されると、その参照先である被参照オブジェクトＡ２に対して、参照重み「３２」を含めた参照削除メッセージが送信される。その参照削除メッセージを受信した被参照オブジェクトＡ２は、図２３に示すように、受け取った参照重み「３２」を総参照重みから減じて更新する。
【００１０】
部分参照重みが「１」となった参照オブジェクトはリモート参照をこれ以上「分配」することができない。この場合、当該参照オブジェクトは新たに間接リモート参照する間接オブジェクトを生成し、生成した間接オブジェクトに間接的にリモート参照をさせる。
【００１１】
例えば、図２４において、部分参照重みが「１」となった参照オブジェクトＢ１がリモート参照を分配する場合、参照オブジェクトＢ１は、図２５に示すように、間接オブジェクトＢ４を新たに生成する。間接オブジェクトＢ４は参照オブジェクトＢ１の部分参照重み「１」を継承する（図２６参照）。間接オブジェクトＢ４は被参照オブジェクトＢ２への参照を保持し、総参照重み「６４」を格納する。参照オブジェクトＢ１は、被参照オブジェクトＢ２から間接オブジェクトＢ４に対してのリモート参照に更新し、部分参照重みを「６４」とする。
【００１２】
このように、ある被参照オブジェクトの総参照重みは分散システム上の前記被参照オブジェクトをリモート参照するオブジェクトの部分参照重みの和と、分散システム上に流れる全ての通信メッセージに含まれるオブジェクトに関する参照重みの和とに常に等しくなるように管理されている。
【００１３】
また、“Ｄｉｓｔｒｉｂｕｔｅｄ  Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ  ｆｏｒ  Ｎｅｔｗｏｒｋ  Ｏｂｊｅｃｔｓ”（Ａ．Ｂｉｒｒｅｌｌ，Ｔｅｃｈ．Ｒｅｐｏｒｔ．１１６、Ｄｉｇｉｔａｌ  ＳＲＣ  Ｒｅｓｅａｒｃｈ  Ｒｅｐｏｒｔ，１９９３年１２月）に記載された分散メモリ管理アルゴリズムおいては、従来技術１と異なり、参照重みでは管理せず、被参照オブジェクトがリモート参照する参照オブジェクトの情報をリストで保持して管理している（以下、従来技術２とする）。
【００１４】
この場合、参照オブジェクトの情報をリストで保持して管理しているため、参照を分配することができず、被参照オブジェクト側に参照の生成要求を行い、その要求に対する承認を意味するメッセージを受信し、初めてリモート参照が生成される。以下、従来技術２に関して、図を用いて具体的に説明する。
【００１５】
図２７において、参照オブジェクトＣ１が被参照オブジェクトＣ２をリモート参照している。ここで、被参照オブジェクトをリモート参照しているオブジェクトに関する情報（ここでは、オブジェクトＣ１）がリストで管理されている。
【００１６】
図２８において、図２７の状態から、オブジェクトＣ１が他の計算機環境に対して参照先のオブジェクトＣ２の情報を伝搬しようとする場合、従来技術１のように参照の分配ができないので、まず、被参照オブジェクトＣ２に対して、参照要求のメッセージを送信する。
【００１７】
参照要求メッセージを受信した被参照オブジェクトを有する計算機環境は被参照オブジェクトＣ２の参照リストを更新し、参照オブジェクトＣ３がリモート参照できるようにしてから、認証メッセージを返信する（図２９参照）。この認証メッセージを受信して初めて、参照オブジェクトＣ３は被参照オブジェクトＣ２をリモート参照することができる（図３０参照）。
【００１８】
これによって、参照オブジェクトＣ３からのリモート参照が生成される以前に、被参照オブジェクトが回収されてしまう矛盾が発生しないようにしている。従来技術２は参照の分配において、必ず、参照の要求メッセージと、それに対する認証メッセージとの送受信を伴うという点で、従来技術１とは異なっている。
【００１９】
さらに、特開平１１−２４９９５６号公報には、オブジェクトが移動する場合においても、参照重みを用いたオブジェクト管理を実現し、また参照が多段階になることによるオブジェクトへのアクセス効率が悪化を軽減する参照の最適化方法が記載されている（以下、従来技術３とする）。以下、従来技術３における参照先の最適化手法に関して、図を用いて具体的に説明する。
【００２０】
図３１において、オブジェクトＤ１（オブジェクトＤ２への部分参照重みは「３２」）はオブジェクトＤ２（総参照重みは「６４」）をリモート参照しており、さらに、オブジェクトＤ２は部分参照重み「２０」で、オブジェクトＤ３（総参照重みは「１００」）をリモート参照している。
【００２１】
この場合、オブジェクトＤ１からのオブジェクトＤ３へのアクセスは直接的に行うことができず、オブジェクトＤ２を経由することになる。まず、オブジェクトＤ１からオブジェクトＤ２へアクセス要求メッセージが送信される（図３１参照）。
【００２２】
要求メッセージを受信したオブジェクトＤ２を有する実行環境はオブジェクトＤ２がオブジェクトＤ３への参照オブジェクトであることから、オブジェクトＤ３に対してさらなるアクセス要求メッセージを作成して送信する（図３２参照）。ここで、アクセス要求を中継する場合にはメッセージに、要求重みなる所定の値（図３２では値「３２」）を格納して送信する。
【００２３】
さらに、図３３において、アクセス要求メッセージを受信したオブジェクトＤ３を有する実行環境は受信した要求重みを総参照重みに加え、さらに要求重み分と実行環境の位置情報とを返信メッセージに格納して返信する。
【００２４】
返信メッセージを受信したオブジェクトＤ２を有する実行環境は参照先（オブジェクトＤ３を有する実行環境）が不変であることから、参照先を変えずに、参照重みをそのまま格納し、参照オブジェクトＤ１を有する実行環境へ返信する（図３４参照）。
【００２５】
返信メッセージを受信した参照オブジェクトＤ１を有する実行環境は実際にアクセスしたオブジェクトがオブジェクトＤ２ではなく、オブジェクトＤ３であることを確認し、参照先をオブジェクトＤ２からオブジェクトＤ３へと、直接的にアクセスできるように更新する（図３５参照）。その際、受信した重みを部分参照重みとするオブジェクトＤ３へのリモート参照を新たに生成し、以前のオブジェクトＤ２へのリモート参照を削除する。
【００２６】
上記のようにして、従来技術３では参照を最適化し、効率的にアクセスする手法を提示している。しかしながら、従来技術１と同様に、参照重みによる管理であるため、参照重みが「１」となり、リモート参照を分配することができない場合が発生する。そのような場合、従来技術３では、従来技術２と同様にして、参照オブジェクトから被参照オブジェクトへ参照重みの要求メッセージを送信し、補充する方式を採用している。
【００２７】
【発明が解決しようとする課題】
上述した従来の分散システムでは、従来技術１の場合、参照重みが枯渇すると間接オブジェクトを生成するため、被参照オブジェクトへのアクセスが多段階となり、この中継回数を削減する方法がないので、分散システム上の通信量が増大し、分散システムの処理効率が低下するという問題がある。
【００２８】
また、従来技術２の場合、通信メッセージ作成時に参照の分配が発生する度に必ず、リモート参照生成要求メッセージの送受信が発生するので、上記の従来技術１の場合と同様に、分散システム上の通信量が増大し、分散システムの処理効率が低下するという問題がある。
【００２９】
さらに、従来技術３の場合、参照重み要求のための通信メッセージの送受信が発生するので、上記の従来技術１，２の場合と同様に、分散システム上の通信量が増大し、分散システムの処理効率が低下するという問題がある。
【００３０】
これらの場合、参照の分配によって新しく生成された参照オブジェクトが、結果として何らアクセスされることもない場合においても、間接オブジェクトの生成や、リモート参照生成要求メッセージの送受信、参照重み要求メッセージの送受信という遅延が発生し、プログラム実行速度の低下を招くことになる。
【００３１】
例えば、ある通信メッセージにおいて、複数の参照オブジェクト情報が格納される場合、全ての参照オブジェクトに関して参照の分配が発生する。メッセージを受信した実行環境は参照オブジェクト情報を基に参照オブジェクトを生成するが、後のプログラム実行中にこれら全ての参照オブジェクトに対してアクセスがあるとは限らず、参照の分配に要する遅延がプログラムの高速実行を妨げる可能性がある。
【００３２】
上記の問題の他に、これら従来技術ではセキュリティ上、不正アクセスされる危険があるという問題もある。リモート参照を分配された環境は新たに得たリモート参照を使って、実際のオブジェクトに対してアクセスしようとすることが可能となる。これは実際のオブジェクトを保有している環境が自ら保持するオブジェクトに対する参照において、第３者の環境に対して「分配」されることになり、信頼のおけない環境からのアクセスを受ける可能性があるからである。従来技術１〜３はいずれもこれらの可能性に対して何ら考慮されておらず、自らのセキュリティポリシーに基づいて参照の分配を制御する方法がないのである。
【００３３】
さらにまた、従来技術１では間接オブジェクトが参照重みが枯渇する度に新たに生成されるが、間接オブジェクトが他のオブジェクトからリモート参照される限り回収することはできないので、分散システムの消費メモリが増大するという問題がある。
【００３４】
従来技術２では被参照オブジェクトが自らをリモート参照するオブジェクトの情報を全て管理する必要があるので、分散システムの消費メモリが増大するという問題がある。従来技術３では参照重み要求メッセージの送受信にメモリを消費するので、分散システムの消費メモリが増大するという問題がある。
【００３５】
そこで、本発明の目的は上記の問題点を解消し、消費メモリを削減することができ、リモート参照するオブジェクトへ効率的にアクセスすることができるとともに、通信量を削減することができる分散システム及びそれに用いるメモリ管理方法並びにそのメモリ管理制御プログラムを記録した記録媒体を提供することにある。
【００３６】
本発明の他の目的は、セキュリティ上、不正アクセスされる危険を防ぐことができ、安全な分散システム及びそれに用いるメモリ管理方法並びにそのメモリ管理制御プログラムを記録した記録媒体を提供することにある。
【００３７】
【課題を解決するための手段】
本発明による分散システムは、各々プログラムを実行するための実行環境を備えかつ通信回線を介して相互に接続される複数の計算機を含み、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムであって、第１の参照オブジェクトの参照情報を管理する参照管理手段と、前記第１の参照オブジェクトが参照する第１の被参照オブジェクトを有する実行環境以外の他の実行環境に、前記第１の参照オブジェクトを参照するための情報を送信する際に前記第１の参照オブジェクトを前記他の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する被参照管理手段と、前記他の実行環境から前記第２の被参照オブジェクトに対して第１のアクセス要求メッセージを受信した際に、前記第２の被参照オブジェクトに関して参照管理手段の管理する参照情報を基にして、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行手段の処理が必要であるか否かを選択し、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行手段の処理が必要である場合には、前記第１の被参照オブジェクトを有する実行環境に対して第２のアクセス要求メッセージを送信するアクセス中継手段と、別の実行環境から前記第２のアクセス要求メッセージを受信した際に所定の処理を実行して所定の情報を格納しかつ所定の実行環境に返信するプログラム実行手段とを前記複数の計算機各々に備えている。
【００３８】
本発明による他の分散システムは、複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムであって、第１の参照オブジェクトを有する第１の実行環境は、前記第１の参照オブジェクトの有する参照情報を管理する第１の参照管理手段と、前記第１の実行環境及び前記第１の被参照オブジェクトを有する第２の実行環境以外の第３の実行環境に、前記第１の参照オブジェクトを参照するための情報を送信する際に前記第１の参照オブジェクトを前記第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する第１の被参照管理手段と、前記第３の実行環境から前記第２の被参照オブジェクトに対して第１のアクセス要求メッセージを受信した際に、前記第１の参照管理手段の管理する参照情報を基にして、所定のプログラムに応じて順次実行する第１のプログラム実行手段での処理が必要か、前記第１の被参照オブジェクトを有する実行環境における第２のプログラム実行手段の処理が必要であるか否かを選択し、前記第２の実行環境における第２のプログラム実行手段の処理が必要である場合には、前記第２の実行環境に対して第２のアクセス要求メッセージを送信する第１のアクセス中継手段とを有し、前記第２の実行環境は、前記第１の被参照オブジェクトを他の実行環境から参照可能なように管理する第２の被参照管理手段と、前記第１の被参照オブジェクトに対する前記第２のアクセス要求メッセージを受信した際に所定の処理を実行して所定の情報を格納しかつ所定の実行環境に返信する前記第２のプログラム実行手段とを有し、前記第３の実行環境は、前記第１の実行環境から前記第１の参照オブジェクトの参照情報を受信した際に前記第１の参照オブジェクトを参照する第２の参照オブジェクトを生成する第２の参照管理手段と、所定のプログラムに応じて順次実行する第３のプログラム実行手段と、前記第３のプログラム実行手段が前記第２の参照オブジェクトにアクセスする際に、前記第２の参照管理手段の管理する参照情報を基にして、所定のプログラムに応じて順次実行する第３のプログラム実行手段での処理が必要か、前記第１の実行環境における第１のプログラム実行手段の処理が必要であるかを選択し、前記第１の実行環境における第１のプログラム実行手段の処理が必要である場合には、前記第１の実行環境に対して第１のアクセス要求メッセージを送信する第２のアクセス中継手段とを有するを備えている。
【００３９】
本発明による別の分散システムは、複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムであって、
第１の参照オブジェクトを有する第１の実行環境は、前記第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境に対してアクセス要求メッセージを送信するアクセス中継手段を備え、
前記第２の実行環境は、前記アクセス要求メッセージに応じた所定の処理を実行して所定の情報を格納しかつ要求元の実行環境に返信するプログラム実行手段と、前記第１の参照オブジェクトの有する参照先情報を前記第１の実行環境及び前記第２の実行環境以外の第３の実行環境に伝搬する際に前記第１の参照オブジェクトを前記第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する被参照管理手段とを備え、
前記第３の実行環境は、受信した前記第１の参照オブジェクトの参照先情報を基に前記第２の被参照オブジェクトへリモート参照する第２の参照オブジェクトを生成する参照管理手段とを備えている。
【００４０】
本発明によるさらに別の分散システムは、上記の構成のほかに、前記第１の実行環境は、前記第１の参照オブジェクトの参照先情報を前記第３の実行環境に伝搬する際に前記第２の実行環境に対して参照要求メッセージを送信する第１のアクセス制御手段を具備し、
前記第２の実行環境は、前記参照要求メッセージを受信した際に所定のセキュリティポリシーに合致する場合にのみ前記第３の実行環境から前記第２の被参照オブジェクトへの参照許可を与える第２のアクセス制御手段を具備している。
【００４１】
本発明によるメモリ管理方法は、各々プログラムを実行するための実行環境を備えかつ通信回線を介して相互に接続される複数の計算機を含み、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムのメモリ管理方法であって、第１の参照オブジェクトの参照情報を管理するステップと、前記第１の参照オブジェクトが参照する第１の被参照オブジェクトを有する実行環境以外の他の実行環境に、前記第１の参照オブジェクトを参照するための情報を送信する際に前記第１の参照オブジェクトを前記他の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理するステップと、前記他の実行環境から前記第２の被参照オブジェクトに対して第１のアクセス要求メッセージを受信した際に、前記第２の被参照オブジェクトに関して参照管理手段の管理する参照情報を基にして、前記実行環境での処理が必要か、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行処理が必要であるかを選択し、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行処理が必要である場合には、前記第１の被参照オブジェクトを有する実行環境に対して第２のアクセス要求メッセージを送信するアクセス中継ステップと、別の実行環境から前記第２のアクセス要求メッセージを受信した際に所定の処理を実行して所定の情報を格納しかつ所定の実行環境に返信するステップとを前記複数の計算機各々に備えている。
【００４２】
本発明による他のメモリ管理方法は、上記のステップのほかに、前記第１の参照オブジェクトを有する実行環境において前記第１の参照オブジェクトの参照先情報を前記他の実行環境に伝搬する際に前記第１の被参照オブジェクトを有する実行環境に対して参照要求メッセージを送信するステップと、前記第１の被参照オブジェクトを有する実行環境において前記参照要求メッセージを受信した際に所定のセキュリティポリシーに合致する場合にのみ前記他の実行環境から前記第２の被参照オブジェクトへの参照許可を与えるステップとを前記複数の計算機各々に具備している。
【００４３】
本発明による別のメモリ管理方法は、複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムのメモリ管理方法であって、
第１の参照オブジェクトを有する第１の実行環境は、前記第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境に対してアクセス要求メッセージを送信するアクセス中継ステップを備え、
前記第２の実行環境は、前記アクセス要求メッセージに応じた所定の処理を実行して所定の情報を格納しかつ前記要求元の実行環境に返信するプログラム実行ステップと、前記第１の参照オブジェクトの有する参照先情報を前記第１の実行環境及び前記第２の実行環境以外の第３の実行環境に伝搬する際に前記第１の参照オブジェクトを前記第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する被参照管理ステップとを備え、
前記第３の実行環境は、受信した前記第１の参照オブジェクトの参照先情報を基に前記第２の被参照オブジェクトへリモート参照する第２の参照オブジェクトを生成する参照管理ステップを備えている。
【００４４】
本発明によるさらに別のメモリ管理方法は、上記のステップのほかに、前記第１の実行環境は、前記第１の参照オブジェクトの参照先情報を前記第３の実行環境に伝搬する際に前記第２の実行環境に対して参照要求メッセージを送信する第１のアクセス制御ステップを具備し、
前記第２の実行環境は、前記参照要求メッセージを受信した時に所定のセキュリティポリシーに合致する場合にのみ前記第３の実行環境から前記第２の被参照オブジェクトへの参照許可を与える第２のアクセス制御ステップを具備している。
【００４５】
本発明によるメモリ管理制御プログラムを記録した記録媒体は、各々プログラムを実行するための実行環境を備えかつ通信回線を介して相互に接続される複数の計算機を含み、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムのメモリ管理制御プログラムを記録した記録媒体であって、前記メモリ管理制御プログラムは前記複数の計算機各々に、第１の参照オブジェクトの参照情報を管理させ、前記第１の参照オブジェクトが参照する第１の被参照オブジェクトを有する実行環境以外の他の実行環境に、前記第１の参照オブジェクトを参照するための情報を送信する際に前記第１の参照オブジェクトを前記他の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理させ、前記他の実行環境から前記第２の被参照オブジェクトに対して第１のアクセス要求メッセージを受信した際に、前記第２の被参照オブジェクトに関して参照管理手段の管理する参照情報を基にして、前記実行環境での処理が必要か、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行処理が必要であるかを選択し、前記第１の被参照オブジェクトを有する実行環境におけるプログラム実行処理が必要である場合には、前記第１の被参照オブジェクトを有する実行環境に対して第２のアクセス要求メッセージを送信させ、別の実行環境から前記第２のアクセス要求メッセージを受信した際に所定の処理を実行して所定の情報を格納させかつ所定の実行環境に返信させている。
【００４６】
本発明による他のメモリ管理制御プログラムを記録した記録媒体は、上記の処理動作のほかに、前記メモリ管理制御プログラムは前記複数の計算機各々に、前記第１の参照オブジェクトを有する実行環境において前記第１の参照オブジェクトの参照先情報を前記他の実行環境に伝搬する際に前記第１の被参照オブジェクトを有する実行環境に対して参照要求メッセージを送信させ、前記第１の被参照オブジェクトを有する実行環境において前記参照要求メッセージを受信した際に所定のセキュリティポリシーに合致する場合にのみ前記他の実行環境から前記第２の被参照オブジェクトへの参照許可を与えさせている。
【００４７】
本発明による別のメモリ管理制御プログラムを記録した記録媒体は、複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムのメモリ管理制御プログラムを記録した記録媒体であって、
前記メモリ管理制御プログラムは第１の参照オブジェクトを有する第１の実行環境に、前記第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境に対してアクセス要求メッセージを送信させ、
前記メモリ管理制御プログラムは前記第２の実行環境に、前記アクセス要求メッセージに応じた所定の処理を実行して所定の情報を格納しかつ前記要求元の実行環境に返信させ、前記第１の参照オブジェクトの有する参照先情報を前記第１の実行環境及び前記第２の実行環境以外の第３の実行環境に伝搬する際に前記第１の参照オブジェクトを前記第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理させ、
前記メモリ管理制御プログラムは前記第３の実行環境に、受信した前記第１の参照オブジェクトの参照先情報を基に前記第２の被参照オブジェクトへリモート参照する第２の参照オブジェクトを生成させている。
【００４８】
本発明によるさらに別のメモリ管理制御プログラムを記録した記録媒体は、上記の処理動作のほかに、前記メモリ管理制御プログラムは前記第１の実行環境に、前記第１の参照オブジェクトの参照先情報を前記第３の実行環境に伝搬する際に前記第２の実行環境に対して参照要求メッセージを送信させ、
前記メモリ管理制御プログラムは前記第２の実行環境に、前記参照要求メッセージを受信した時に所定のセキュリティポリシーに合致する場合にのみ前記第３の実行環境から前記第２の被参照オブジェクトへの参照許可を与えさせている。
【００４９】
すなわち、本発明の分散システムは、複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトとその参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムにおいて、第１の参照オブジェクトを有する実行環境が、被参照オブジェクトを有する第２の実行環境に対してアクセス要求メッセージを送信するアクセス中継手段を有し、第２の実行環境が、アクセス要求メッセージに応じた所定の処理を実行して所定の情報を格納するとともに、それを要求元実行環境に返信するプログラム実行手段と、第１の参照オブジェクトの有する参照先情報を第３の実行環境に伝搬する際に第１の参照オブジェクトを第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理する被参照管理手段とを有し、第３の実行環境が、受信した第１の参照オブジェクトの参照先情報を基に第２の被参照オブジェクトへリモート参照する第２の参照オブジェクトを生成する参照管理手段を有している。
【００５０】
また、本発明のメモリ管理装置は、上記の構成のほかに、第１の実行環境の有する第１の参照オブジェクトの参照先情報を第３の実行環境に伝搬する際に、第１の参照オブジェクトの参照先である被参照オブジェクトを有する第２の実行環境に対して参照要求メッセージを送信するアクセス制御手段と、参照要求メッセージを受信した第２の実行環境において所定のセキュリティポリシーに合致する場合にのみ、第３の実行環境から被参照オブジェクトへの参照許可を与える第２のアクセス制御手段とを有している。
【００５１】
上記のように構成することで、セキュリティレベルが同一の際の参照の分配で参照要求に要するメッセージ通信が不要であり、間接オブジェクトを参照オブジェクトと実オブジェクトとの間に作成せず、既に実オブジェクトへリモート参照している参照オブジェクトの実オブジェクトへのアクセスが多段階になることがないので、分散システム上において発生する通信量を削減することが可能となる。
【００５２】
また、リモート参照の分配時に分配が不可能である場合、参照オブジェクトと実オブジェクトとの間に間接オブジェクトを作成するのではなく、参照オブジェクトを不変とし、参照オブジェクトに対しての新たな参照オブジェクトを生成し、その際に参照管理のためのメッセージ通信を伴わず、参照オブジェクトに対して実際にアクセスがなければ参照管理のためのメッセージ通信を発生しないので、プログラムの実行を高速に行うことが可能となり、分散システムの処理を効率的に行うことが可能となる。
【００５３】
さらに、リモート参照の分配時にセキュリティポリシーに基づいたチェックを行うので、無断でリモート参照が分配されることがないため、実オブジェクトを有する実行環境がオブジェクトに対するリモート参照の分配を実行環境のセキュリティポリシーに基づいて制御することが可能となる。
【００５４】
さらにまた、間接オブジェクトを参照オブジェクトと実オブジェクトとの間に作成しないので、分散システム上の消費メモリを削減することが可能となる。
【００５５】
【発明の実施の形態】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例による分散システムの構成を示すブロック図である。図１において、分散システム１は分散環境下に存在する計算機２−１〜２−４が通信回線１００を経由してネットワークで結合されて構成されている。
【００５６】
図２は図１の計算機２−１〜２−４の機能構成を示す機能ブロック図である。図２において、計算機２−１〜２−４には実際にプログラムが実行するための実行環境２０が存在する。実行環境２０はプログラム実行手段２１と、アクセス中継手段２２と、被参照管理手段２３と、参照管理手段２４と、局所メモリ管理手段２５と、アクセス制御手段２６と、メモリ２７とから構成されている。
【００５７】
プログラム実行手段２１は分散システム１において動作するプログラムの各命令を順次実行する手段である。アクセス中継手段２２はプログラム実行手段２１がプログラム実行中にアクセスすべきオブジェクトがリモートであった場合、参照管理手段２４が管理しているオブジェクトのリモート参照情報に基づいて参照先へアクセス要求を転送する手段である。
【００５８】
局所メモリ管理手段２５はプログラムを実行している計算機２の実行環境２０内でプログラム中で不要となったメモリ領域を特定して開放し、再利用する手段である。
【００５９】
被参照管理手段２３は実行環境２０において、図示せぬ第２の実行環境からリモート参照されるオブジェクトを管理する手段である。オブジェクトの情報はメモリ２７の被参照テーブル２９に登録される。第２の実行環境からのオブジェクトへのアクセス要求通信を受信した場合、受信メッセージ中のオブジェクトの情報に基づいてオブジェクトの存在するメモリアドレスを特定し、実行環境２０のプログラム実行手段２１に処理を受け渡す。
【００６０】
実行環境２０中のオブジェクトは他の実行環境からリモート参照されている限り、実行環境２０から削除されることはなく、また一方、図示せぬ他の実行環境から何一つとして参照されなくなれば、局所メモリ管理手段２５によるメモリ回収可能オブジェクトの候補となるように管理する。言い替えると、局所メモリ管理手段２５は被参照管理手段２３によって管理されるオブジェクトが他の実行環境からのリモート参照を何１つ受けなくなり、かつ実行環境２０において不要と判別したならばオブジェクトのメモリ領域を削除して再利用する。
【００６１】
参照管理手段２４は他の実行環境に対するリモート参照を管理する。ここで、リモート参照情報としては参照先の実行環境のネットワーク上を一意に特定することができるアドレス、また分散システム１上で一意に識別するためのオブジェクト情報を意味する。参照管理手段２４によって管理されるリモートオブジェクトが局所メモリ管理手段２５によって不要と判別されれば、オブジェクトのリモート参照を開放するために参照先へ参照削除要求メッセージを送信し、実行環境２０内のメモリ領域２７中のオブジェクト２８の領域を開放する。
【００６２】
参照削除要求メッセージを受信した第２の実行環境は被参照管理手段２３によって対象となるオブジェクトを特定し、管理を行う。すなわち、被参照管理手段２３は参照削除メッセージによって、他の実行環境から何一つリモート参照されることがなくなれば、管理の対象からオブジェクトを除外する。
【００６３】
図３は図１の分散システム１上で動作する分散プログラムを実行する際の計算機２−１の動作を示すフローチャートであり、図４はメソッド実行のオブジェクトがローカルである場合の処理を示すフローチャートであり、図５はメソッド実行の対象となっているオブジェクトがリモートである場合の処理を示すフローチャートであり、図６は本発明の一実施例における参照分配時の動作を示すフローチャートである。
【００６４】
図７は図２の実行環境２０内の局所メモリ管理手段２５の処理を示すフローチャートであり、図８〜図１１は図２の実行環境２０が第２の実行環境からの通信メッセージを受信した際にそのメッセージの種類に依存した処理を行う場合の処理を示すフローチャートである。これら図１〜図１１を参照して、本実施例における計算機２−１の動作について説明する。尚、本実施例では計算機２−２〜２−４も計算機２−１と同様の動作を行う。
【００６５】
計算機２−１のプログラム実行手段２１は分散プログラムの各メソッドを順次実行する。メソッドの実行を開始する際に、全てのメソッドを実行したか否かを調べ、全てのメソッドの実行を終了していれば（図３ステップＳ１）、プログラムの実行を終了する。
【００６６】
一方、まだ実行されていないメソッドが存在すれば（図３ステップＳ１）、そのメソッドを所有する、すなわちアクセスの対象となっているオブジェクトがローカルであるか否かを調べる（図３ステップＳ２）。
【００６７】
オブジェクトがローカル（オブジェクトが計算機２−１のメモリ空間上に存在する場合）であれば（図３ステップＳ２）、図４のステップＳ３の処理に移行する。一方、オブジェクトがリモート（オブジェクトが計算機２−１以外の計算機上に存在しているオブジェクトをリモート参照している場合）であれば、図５のステップＳ１１の処理に移行する。これらの処理はまだ実行されていないメソッドがなくなるまで、つまり全てのメソッドの実行が完了するまで、各メソッドの実行を繰り返して行う。
【００６８】
オブジェクトのメソッド実行を開始すると（図４ステップＳ３）、メソッド実行に必要とされる全ての情報を取り出す。メソッド実行に必要な全てのオブジェクト情報を得たか否かを調べ、全てのオブジェクト情報の入手が完了すれば（図４ステップＳ４）、メソッドを実行する（図４ステップＳ１０）。
【００６９】
一方、メソッド実行に必要なオブジェクト情報が全て入手できていなければ（図４ステップＳ４）、以下、オブジェクトの情報の入手する処理を実行する。オブジェクトがローカルであるか否かを調べ（図４ステップＳ５）、ローカルであれば現在の計算機２−１のメモリ空間２７上からオブジェクトの情報を取り出す（図４ステップＳ６）。
【００７０】
また、オブジェクトがリモートである場合（図４ステップＳ５）、オブジェクトの参照先の計算機に対して参照要求メッセージの作成を開始する（図４ステップＳ７）。参照要求メッセージにはオブジェクトに関する管理情報が格納され、メッセージが送信される（図４ステップＳ８）。
【００７１】
参照要求メッセージに対する返信メッセージを待機して受信する（図４ステップＳ９）ことによって、参照先の計算機からオブジェクトのデータを得る。以上の処理が終了すれば、ステップＳ４に移行し、メソッドに要する全ての情報が得られるまで、上記と同様の処理を繰り返す。
【００７２】
メソッド実行の対象となっているオブジェクトがリモートである場合、オブジェクトは他の計算機上のオブジェクトをリモート参照しているので、参照先のオブジェクトが存在する計算機に対して参照先のオブジェクトへのアクセス要求メッセージが作成されることになる（図５ステップＳ１１）。
【００７３】
続いて、メソッドの引数として与えるべき情報等を格納する処理へ移行する。アクセス要求に要する情報が参照しているオブジェクトのフィールド情報である場合、オブジェクトを通じて引数情報を得ることになる。この時、アクセス要求に必要となる全てのオブジェクトから情報を得たか否かを調べる（図５ステップＳ１２）。
【００７４】
全てのオブジェクトを調べていたならば、プログラム実行手段２１はアクセス要求メッセージの作成を完了し、そのメッセージをメソッドの実行対象オブジェクトの存在する実行環境に対して送信する（図５ステップＳ１５）。さらに、プログラム実行手段２１はそのメッセージに対する返信を待機して受信する（図５ステップＳ１６）。
【００７５】
一方、アクセス要求メッセージ作成中に、引数情報として格納されていないオブジェクト情報があれば、オブジェクトがローカルであるか否かを調べる（図５ステップＳ１３）。オブジェクトがローカルであれば、現在の実行環境２０上のメモリ領域２７に存在し、直ちにオブジェクトのフィールド情報をアクセス要求メッセージに格納する（図５ステップＳ１４）。
【００７６】
また、オブジェクトがリモートである場合、オブジェクトはリモート参照を有しており、以下の処理で参照の分配を行う。すなわち、ステップＳ１７において、現在プログラム実行をしている実行環境２０と、参照を分配すべき第２の実行環境とにおいてセキュリティレベルが同等か否かを調べる。ここで、セキュリティレベルとは、例えば上記の２つの実行環境が同一ドメインに属しているならば、セキュリティレベルが同等とする等、実行環境のセキュリティポリシーに基づいたアクセス制御上の階層を意味する。
【００７７】
セキュリティレベルが同等であれば、リモート参照の分配が可能か否かを調べる（図６ステップＳ１８）。ここで、例えば分散オブジェクト管理アルゴリズムが上記の従来技術１の参照リスト法に類似する方法や、従来技術２の重み付き参照カウント法であるならば、対象となるリモート参照の参照重みの値が「１」以下となり、分配できる参照重みがなくなった場合にリモート参照の分配が不可能であることを意味する。
【００７８】
リモート参照の分配が可能であれば、直ちに、参照管理手段２４によってリモート参照を分配する（図６ステップＳ２５）。一方、リモート参照の分配が不可能であれば、被参照管理手段２３はオブジェクトを被参照オブジェクトとして登録し（図６ステップＳ１９）、オブジェクトを現在の実行環境２０とは異なる実行環境からリモート参照できるように、オブジェクトのリモート参照情報をアクセス要求メッセージに格納する（図６ステップＳ２０）。
【００７９】
ステップＳ１７において、実行環境２０と、参照を分配すべき第２の実行環境のセキュリティレベルとが異なれば、第２の実行環境へ分配すべきリモート参照の参照要求メッセージの作成を開始する（図６ステップＳ２１）。この参照要求メッセージにはオブジェクトの識別子、第２の実行環境の情報が格納される。
【００８０】
その後に、この参照要求メッセージはオブジェクトの参照先の実行環境２０に対して送信される（図６ステップＳ２２）。この参照要求メッセージに対する返信メッセージを待機して受信し（図６ステップＳ２３）、参照要求が受け入れられたか否かを調べる（図６ステップＳ２４）。
【００８１】
参照要求が許可されなければ、参照先の実行環境２０から第２の実行環境に対してリモート参照を生成し、アクセスすることを許可されなかったことを意味し、プログラム実行手段２１は例外を発生させる（図６ステップＳ２６）。一方、参照要求が許可されれば、返信メッセージに参照先オブジェクトへの参照が含まれており、それに基づいて参照管理手段２４はリモート参照を分配する（図６ステップＳ２５）。
【００８２】
局所メモリ管理手段２５はプログラム実行手段２１がプログラム実行中に動作するが、図３に示す一連のメソッド実行の処理と同期、あるいは非同期で実行しても構わない。
【００８３】
局所メモリ管理手段２５は実行環境２０のメモリ領域中の不要なオブジェクト群を特定し（図７ステップＳ３１）、不要オブジェクトがローカルであるか否かを調べる（図７ステップＳ３２）。局所メモリ管理手段２５は不要オブジェクトがローカルであれば、直ちに、オブジェクトの占有していたメモリ領域を開放し（図７ステップＳ３５）、再利用が可能になるようにする。
【００８４】
一方、局所メモリ管理手段２５は不要オブジェクトがリモートであれば、不要オブジェクトの参照先の実行環境に対してリモート参照が不要となったことを知らせるため、リモート参照削除メッセージを作成する（図７ステップＳ３３）。このリモート参照削除メッセージにはオブジェクトの識別子や管理情報が格納される。その後に、局所メモリ管理手段２５はリモート参照削除メッセージを参照先の実行環境に送信し（図７ステップＳ３４）、次にそのオブジェクトの占めていたメモリ領域を開放する（図７ステップＳ３５）。
【００８５】
実行環境２０は第２の実行環境から通信メッセージを受信すると（図８ステップＳ４１）、受信メッセージのタイプを調べ（図８ステップＳ４２）、そのタイプが参照削除メッセージであれば図９のステップＳ４３へ、そのタイプがアクセス要求メッセージであれば図１０のステップＳ４５へ、そのタイプが参照要求メッセージであれば図１１のステップＳ４７へと移行する。
【００８６】
実行環境２０が第２の実行環境から参照削除メッセージを受信すると、その受信メッセージに含まれるオブジェクト識別子、管理情報を基に、被参照管理手段２３は対象となるオブジェクトを特定し（図９ステップＳ４３）、被参照テーブル２９の対応するオブジェクト管理情報を更新する（図９ステップＳ４４）。これによって、オブジェクトが他の実行環境から何１つリモート参照されなくなり、その後、局所メモリ管理手段２５が不要オブジェクトであると判別すれば、オブジェクトに対応するメモリ領域が回収されて再利用されることになる。
【００８７】
実行環境２０が第２の実行環境からアクセス要求メッセージを受信すると、その受信メッセージに含まれるオブジェクトの識別子を基に、被参照管理手段２３は被参照テーブル２９を調べ、対象となるオブジェクトを特定する（図１０ステップＳ４５）。
【００８８】
次に、オブジェクトがローカルか否かを調べ（図１０ステップＳ４６）、オブジェクトがローカルであれば、図４に示す処理が実行され、実行環境２０上でプログラム実行手段２１によってメソッドが実行され、実行結果が返信される。
【００８９】
一方、オブジェクトがリモートであれば、実行環境２０のアクセス中継手段２２が図５に示す処理が実行され、さらなるアクセス要求メッセージを作成してオブジェクトのリモート参照先の実行環境に対して送信し、その実行結果を得る。
【００９０】
実行環境１１７が第２の実行環境から参照要求メッセージを受信すると、受信メッセージに含まれるオブジェクトの識別子を基に、被参照管理手段２３は対象となるオブジェクトを特定する（図１１ステップＳ４７）。
【００９１】
次に、受信メッセージに格納された参照を分配するべき実行環境に関する情報を読取り（図１１ステップＳ４８）、アクセス制御手段２６は参照分配する実行環境との通信の送受信するアクセス権限を調べ（図１１ステップＳ４９）、アクセス権限がなければ参照の分配を許さず、アクセス不認可の返信メッセージを作成して返信する（図１１ステップＳ５４，Ｓ５３）。
【００９２】
一方、アクセス権限があれば、被参照管理手段２３は被参照テーブル２９上のオブジェクトの管理情報を更新し（図１１ステップＳ５０）、返信メッセージを作成し（図１１ステップＳ５１）、オブジェクトのリモート参照情報を格納し（図１１ステップＳ５２）、その返信メッセージを返信する（図１１ステップＳ５３）。
【００９３】
図１２〜図１７は本発明の一実施例による分散システムの動作を示す図である。これら図１２〜図１７を参照して、本発明の一実施例による分散システム１における動作について説明する。
【００９４】
図１２において、実行環境３１上では、参照オブジェクト４１が実行環境３２上のオブジェクト４３をリモート参照している。ここで、オブジェクト４４は他の実行環境からリモート参照されているので、被参照テーブル５１に登録されており、他の実行環境からのアクセスが可能になっている。同様にして、参照オブジェクト４２は実行環境３３上のオブジェクト４４をリモート参照しており、実行環境３３上の被参照テーブル５２にはオブジェクト４４が登録されている。
【００９５】
図１２の状態から実行環境３１のプログラム実行手段がオブジェクト４４の関数ｆｕｎｃを実行する場合を考える。ここで、関数ｆｕｎｃの引数にはオブジェクト４３が格納されるものとする。すなわち、オブジェクト４４、オブジェクト４３をそれぞれＯｂｊ４４，Ｏｂｊ４３と表記すれば、関数ｆｕｎｃの実行はプログラム上で、Ｏｂｊ４４．ｆｕｎｃ（Ｏｂｊ４３）等として表記される。ここで、実行環境３１において、参照オブジェクト４２はリモートのオブジェクトであり、参照管理手段２４によってオブジェクト４４へのリモート参照が保持されている。
【００９６】
実行環境３１上のアクセス中継手段２２によってオブジェクト４４へのアクセスが中継され、実行環境３３において関数が実行されることになる。また、関数ｆｕｎｃに、オブジェクト４３の情報を格納する際に、参照オブジェクト４１が参照オブジェクトであることから、リモート参照の分配が発生する。
【００９７】
実行環境３１，３２，３３のセキュリティレベルが同等で、リモート参照分配が可能な場合、参照オブジェクト４１に格納されるオブジェクト４３へのリモート参照は参照管理手段２４によって直ちに分配され、オブジェクト４３へのリモート参照情報がオブジェクト４４へのアクセス要求メッセージに格納され、実行環境３３へ送信される。
【００９８】
アクセス要求メッセージを受信した実行環境３３は参照オブジェクト４５を生成し、オブジェクト４３へのリモート参照を生成後、関数ｆｕｎｃが実行されることになる（図１３参照）。
【００９９】
実行環境３１，３２，３３のセキュリティレベルが同等でない場合、参照オブジェクト４１に格納されるリモート参照先情報（この場合、実行環境３２、オブジェクト４３）を基に、参照要求メッセージを実行環境３２に送信し、新たなリモート参照の作成要求を行う（図１４参照）。
【０１００】
参照要求メッセージを受信した実行環境３２はそのセキュリティポリシーに基づいて参照を与えるか否かを決定する。もし、参照要求を許可するならば、被参照テーブル５１の情報を更新して新たなリモート参照を可能にし、参照要求に対する許可を意味する返信メッセージを送信する。
【０１０１】
返信メッセージを受信した実行環境３１はオブジェクト４３へのリモート参照情報を格納したアクセス要求メッセージを送信する（図１５参照）。アクセス要求メッセージを受信した実行環境３３はオブジェクト４３へのリモート参照を作成し、図１３に示す状況と同様になる。
【０１０２】
実行環境３１，３２，３３のセキュリティレベルが同等で、リモート参照分配が不可能な場合、参照オブジェクト４１のリモート参照分配が不可能である時、図１２に示す状態から、最初に参照オブジェクト４１がリモート参照されるように、実行環境３１上の被参照テーブル５３に参照オブジェクト４１を登録する。
【０１０３】
次に、参照オブジェクト４１の情報を格納して、実行環境３３へアクセス要求メッセージを送信する（図１６参照）。アクセス要求メッセージを受信した実行環境３３は参照オブジェクト４１に対する参照オブジェクト４６を生成する（図１７参照）。
【０１０４】
これによって、実行環境３３上で、オブジェクト４４の関数ｆｕｎｃはオブジェクト４３に対する参照要求が、実行環境３１を経由して行われた後に、実行されることになる。
【０１０５】
尚、本参照管理方式によって、参照オブジェクト４６はオブジェクト４３へのアクセスが参照オブジェクト４１を経由するため、２段階になるが、この場合には従来技術３の参照最適化手法を用いることによって、一度アクセスした後、参照先をオブジェクト４１からオブジェクト４３へと更新することができる。
【０１０６】
図１８は本発明の他の実施例による計算機の構成を示すブロック図である。図１８において、本発明の他の実施例による計算機はメモリ管理プログラムを記録した記録媒体３を備えた以外は図１及び図２に示す本発明の一実施例による分散システム１の計算機２と同様の構成となっており、同一構成要素には同一符号を付してある。尚、実行環境２０の構成は本発明の一実施例と同様なので、その構成要素については図示を省略する。
【０１０７】
上記の記録媒体３としては磁気ディスクや半導体メモリ、その他の記録媒体が使用可能であり、また通信媒体を介してアクセスされる他のサーバ等の記録媒体でも使用可能である。
【０１０８】
メモリ管理プログラムは記録媒体３から実行環境２０に読込まれ、実行環境２０の動作を制御する。実行環境２０はメモリ管理プログラムの制御によって、上述した本発明の一実施例の処理と同一の処理を実行する。
【０１０９】
尚、本発明において、分散システムを構成する計算機は、図１に示すような構成（４台の計算機２−１〜２−４）に限定されるものではなく、分散システム１が有する計算機の数に制限はなく、また通信回線１００は有線でも無線でもよい。
【０１１０】
このように、セキュリティレベルが同一の際の参照の分配では参照要求に要するメッセージ通信が不要であり、間接オブジェクトを参照オブジェクトと実オブジェクトとの間に作成しないので、既に実オブジェクトへリモート参照している参照オブジェクトの実オブジェクトへのアクセスが多段階になることがないため、分散システム１上において発生する通信量を削減することができる。
【０１１１】
また、リモート参照の分配時に分配が不可能である場合、参照オブジェクトと実オブジェクトとの間に間接オブジェクトを作成するのではなく、参照オブジェクトを不変とし、参照オブジェクトに対しての新たな参照オブジェクトを生成し、その際に参照管理のためのメッセージ通信を伴わず、参照オブジェクトに対して実際にアクセスがなければ、参照管理のためのメッセージ通信が発生しないので、プログラムの実行を高速に行うことができ、分散システム１の処理を効率的に行うことができる。
【０１１２】
さらに、リモート参照の分配時にセキュリティポリシーに基づいたチェックを行っているので、無断でリモート参照が分配されることがなく、実オブジェクトを有する実行環境がオブジェクトに対するリモート参照の分配を実行環境のセキュリティポリシーに基づいて制御することができる。
【０１１３】
さらにまた、参照オブジェクトと実オブジェクトとの間に間接オブジェクトを作成することがないので、分散システム１上の消費メモリを削減することができる。
【０１１４】
【発明の効果】
以上説明したように本発明の分散システムによれば、複数の実行環境を備え、他の実行環境に存在するオブジェクトを参照する参照オブジェクトと前記参照オブジェクトから参照される被参照オブジェクトとを管理する分散システムにおいて、第１の参照オブジェクトを有する第１の実行環境は、第１の参照オブジェクトの参照先である第１の被参照オブジェクトを有する第２の実行環境に対してアクセス要求メッセージを送信し、第２の実行環境は、アクセス要求メッセージに応じた所定の処理を実行して所定の情報を格納しかつ要求元の実行環境に返信するとともに、第１の参照オブジェクトの有する参照先情報を第１の実行環境及び第２の実行環境以外の第３の実行環境に伝搬する際に第１の参照オブジェクトを第３の実行環境から参照可能なように第２の被参照オブジェクトとして登録して管理し、第３の実行環境は、受信した第１の参照オブジェクトの参照先情報を基に第２の被参照オブジェクトへリモート参照する第２の参照オブジェクトを生成することによって、消費メモリを削減することができ、リモート参照するオブジェクトへ効率的にアクセスすることができるとともに、通信量を削減することができるという効果がある。
【０１１５】
また、本発明の他の分散システムによれば、第１の実行環境は、第１の参照オブジェクトの参照先情報を第３の実行環境に伝搬する際に第２の実行環境に対して参照要求メッセージを送信し、第２の実行環境は、参照要求メッセージを受信した際に所定のセキュリティポリシーに合致する場合にのみ第３の実行環境から被参照オブジェクトへの参照許可を与えることによって、セキュリティ上、不正アクセスされる危険を防ぐことができ、安全な装置を提供することができるという効果がある。
【図面の簡単な説明】
【図１】本発明の一実施例による分散システムの構成を示すブロック図である。
【図２】図１の計算機の機能構成を示す機能ブロック図である。
【図３】図１の分散システム上で動作する分散プログラムを実行する際の計算機の動作を示すフローチャートである。
【図４】本発明の一実施例においてメソッド実行のオブジェクトがローカルである場合の処理を示すフローチャートである。
【図５】本発明の一実施例においてメソッド実行の対象となっているオブジェクトがリモートである場合の処理を示すフローチャートである。
【図６】本発明の一実施例における参照分配時の動作を示すフローチャートである。
【図７】図２の実行環境内の局所メモリ管理手段の処理を示すフローチャートである。
【図８】図２の実行環境が第２の実行環境からの通信メッセージを受信した際にそのメッセージの種類に依存した処理を行う場合の処理を示すフローチャートである。
【図９】図２の実行環境が第２の実行環境からの通信メッセージを受信した際にそのメッセージの種類に依存した処理を行う場合の処理を示すフローチャートである。
【図１０】図２の実行環境が第２の実行環境からの通信メッセージを受信した際にそのメッセージの種類に依存した処理を行う場合の処理を示すフローチャートである。
【図１１】図２の実行環境が第２の実行環境からの通信メッセージを受信した際にそのメッセージの種類に依存した処理を行う場合の処理を示すフローチャートである。
【図１２】本発明の一実施例による分散システムの動作を示す図である。
【図１３】本発明の一実施例による分散システムの動作を示す図である。
【図１４】本発明の一実施例による分散システムの動作を示す図である。
【図１５】本発明の一実施例による分散システムの動作を示す図である。
【図１６】本発明の一実施例による分散システムの動作を示す図である。
【図１７】本発明の一実施例による分散システムの動作を示す図である。
【図１８】本発明の他の実施例による計算機の構成を示すブロック図である。
【図１９】従来例によるメモリ管理の一例を示す図である。
【図２０】従来例によるメモリ管理の一例を示す図である。
【図２１】従来例によるメモリ管理の一例を示す図である。
【図２２】従来例によるメモリ管理の一例を示す図である。
【図２３】従来例によるメモリ管理の一例を示す図である。
【図２４】従来例によるメモリ管理の一例を示す図である。
【図２５】従来例によるメモリ管理の一例を示す図である。
【図２６】従来例によるメモリ管理の一例を示す図である。
【図２７】従来例によるメモリ管理の他の例を示す図である。
【図２８】従来例によるメモリ管理の他の例を示す図である。
【図２９】従来例によるメモリ管理の他の例を示す図である。
【図３０】従来例によるメモリ管理の他の例を示す図である。
【図３１】従来例によるメモリ管理の別の例を示す図である。
【図３２】従来例によるメモリ管理の別の例を示す図である。
【図３３】従来例によるメモリ管理の別の例を示す図である。
【図３４】従来例によるメモリ管理の別の例を示す図である。
【図３５】従来例によるメモリ管理の別の例を示す図である。
【符号の説明】
１  分散システム
２，２−１〜２−４  計算機
２０，３１〜３３  実行環境
２１  プログラム実行手段
２２  アクセス中継手段
２３  被参照管理手段
２４  参照管理手段
２５  局所メモリ管理手段
２６  アクセス制御手段
２７  メモリ
２８，４３，４４  オブジェクト
２９  被参照テーブル
４１，４２，４５，４６  参照オブジェクト
５１〜５３  被参照テーブル
１００  通信回線
【図１】
0003770037.tif 000002
【図２】
0003770037.tif 000003
【図３】
0003770037.tif 000004
【図４】
0003770037.tif 000005
【図５】
0003770037.tif 000006
【図６】
0003770037.tif 000007
【図７】
0003770037.tif 000008
【図８】
0003770037.tif 000009
【図９】
0003770037.tif 000010
【図１０】
0003770037.tif 000011
【図１１】
0003770037.tif 000012
【図１２】
0003770037.tif 000013
【図１３】
0003770037.tif 000014
【図１４】
0003770037.tif 000015
【図１５】
0003770037.tif 000016
【図１６】
0003770037.tif 000017
【図１７】
0003770037.tif 000018
【図１８】
0003770037.tif 000019
【図１９】
0003770037.tif 000020
【図２０】
0003770037.tif 000021
【図２１】
0003770037.tif 000022
【図２２】
0003770037.tif 000023
【図２３】
0003770037.tif 000024
【図２４】
0003770037.tif 000025
【図２５】
0003770037.tif 000026
【図２６】
0003770037.tif 000027
【図２７】
0003770037.tif 000028
【図２８】
0003770037.tif 000029
【図２９】
0003770037.tif 000030
【図３０】
0003770037.tif 000031
【図３１】
0003770037.tif 000032
【図３２】
0003770037.tif 000033
【図３３】
0003770037.tif 000034
【図３４】
0003770037.tif 000035
【図３５】
0003770037.tif 000036