JP2003140912A - データ処理システム及びデータ処理方法、並びに記憶媒体 - Google Patents

データ処理システム及びデータ処理方法、並びに記憶媒体

Info

Publication number
JP2003140912A
JP2003140912A JP2001331509A JP2001331509A JP2003140912A JP 2003140912 A JP2003140912 A JP 2003140912A JP 2001331509 A JP2001331509 A JP 2001331509A JP 2001331509 A JP2001331509 A JP 2001331509A JP 2003140912 A JP2003140912 A JP 2003140912A
Authority
JP
Japan
Prior art keywords
data
reference information
data processing
processing system
processing method
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
Application number
JP2001331509A
Other languages
English (en)
Other versions
JP2003140912A5 (ja
Inventor
Tsutomu Gamo
勉 蒲生
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2001331509A priority Critical patent/JP2003140912A/ja
Publication of JP2003140912A publication Critical patent/JP2003140912A/ja
Publication of JP2003140912A5 publication Critical patent/JP2003140912A5/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 特定の利用環境を前提としないようにデータ
分割を行うことにより、データの移動に際しデータ転送
量とデータ転送回数を最適化する。 【解決手段】 まずデータ利用時においてデータに含ま
れる各基本構成要素についての参照情報を生成し、次い
で、参照情報を基にして、データの利用の観点から参照
が近接している基本構成要素の集合として新規構成要素
を構成する。たとえ同じクラス内のメソッドやデータで
あっても、互いの参照関係が近接していない場合には異
なる新規構成要素として分割されるので、データ転送量
を最適化することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、命令や関数呼出し
などのシンボル、変数などの複数の基本構成要素からな
るプログラムを処理するデータ処理システム及びデータ
処理方法、並びに記憶媒体に係り、特に、プログラムの
構造を最適化するデータ処理システム及びデータ処理方
法、並びに記憶媒体に関する。
【0002】更に詳しくは、本発明は、ダウンロードな
ど所定の媒体を介してシステム間を移動するプログラム
を処理するデータ処理システム及びデータ処理方法、並
びに記憶媒体に係り、特に、システム間の移動のために
プログラムの構造を最適化するとともに移動先のシステ
ムにおけるメモリの使用量の最適化を行うデータ処理シ
ステム及びデータ処理方法、並びに記憶媒体に関する。
【0003】
【従来の技術】昨今、情報処理や情報通信などのコンピ
ューティング技術が飛躍的に向上し、コンピュータ・シ
ステムが広汎に普及してきている。さらに、コンピュー
タどうしを相互接続するネットワーク・コンピューティ
ング技術に対する要望も高まってきている。ネットワー
ク接続環境下では、コンピュータ資源の共有や、情報の
共有・流通・配布・交換などの協働的作業を円滑に行うこ
とができる。
【0004】現在、多くのコンピュータ同士は、LAN
(Local Area Network)やインターネットなどのネット
ワークにより相互接続されている。コンテンツやプログ
ラムなどのデータをシステム間で移動させたい場合、従
来はフロッピー(登録商標)・ディスクやCD(Compac
t Disc)などの可搬型の記憶媒体を利用していたが、最
近ではネットワーク経由で行われることが多くなってき
ている。
【0005】本明細書中では、データ移動のうち、プロ
グラムを保管するデータ管理装置(サーバなど)からプ
ログラムを利用するデータ利用装置(クライアントな
ど)に移動して利用することを「ダウンロード」と呼ぶ
ことにする。ダウンロードの方法として、一括転送方
法、クラス単位の転送方法、ページ単位の転送方法等が
ある。
【0006】一括転送方法 プログラムの一括転送を提供しているものの例として、
SunMicrosystems,Incにより開発さ
れた"JavaApplet"が挙げられる。
【0007】通常はHTML(Hyper Text Markup Lang
uage)で記述されるWebページにJavaApple
tを組み合わせることで、その機能を拡張することがで
きる。JavaAppletは、複数のJavaクラス
・ファイル、又は、それらを1つにまとめたJARファ
イルによって構成される。これらは、サーバで保存、管
理される。一括転送方法の場合は、JARファイルを利
用する場合に相当する。JARファイルには、通常、J
avaAppletの実行に必要なすべてのクラス・フ
ァイルが格納されている。
【0008】JavaAppletの実行は、通常、W
ebブラウザが備えているJavaVM(仮想マシン)
によって行われる。但し、JavaVMは、HTMLに
記述されたJavaAppletを実行する際に参照し
たJavaクラスがJavaVM上に存在しないと、参
照したJavaクラスを含むJARファイルをサーバか
らダウンロードする。そして、ダウンロードが完了する
と、JavaVMはJavaAppletの実行を開始
する。
【0009】しかし、この方法では、JavaAppl
etの実行に先立ってJARファイルのダウンロードを
すべて完了する必要がある。このため、プログラムのダ
ウンロード実行には非常に時間がかかるという問題があ
る。
【0010】クラス単位の転送方法 また、JavaApplet は、クラスのダウンロー
ド単位として、Javaクラス・ファイルを用いること
もできる。この場合、Javaクラス・ファイルのダウ
ンロードとJavaAppletの実行は交互に行われ
ることになる。すなわち、HTMLに記述されたJav
aAppletを実行する際に参照したJavaクラス
がJavaVM上に存在しないと、JavaVMは、J
avaAppletの実行を一時停止し、参照したJa
vaクラスに対応するJavaクラス・ファイルのダウ
ンロードを行う。そして、ダウンロードが完了すると、
JavaVMは、JavaAppletの実行を再開す
る。このような動作は、JavaApplet実行中に
JavaVMに存在しないJavaクラスが検出される
毎に行われる。
【0011】このようなクラス単位の転送方法は、プロ
グラムの一括ダウンロードと比較して転送量を削減でき
るという利点はあるものの、クラス内には使用されない
メソッドやデータが含まれるため効率的ではないという
問題がある。また、ダウンロード回数が増えるという問
題がある。
【0012】ダウンロード要求の処理は、ダウンロード
に利用するネットワークの遅延とサーバの負荷に依存す
る。この遅延のことを、以下では「リクエスト・レイテ
ンシ」と呼ぶことにする。クラス単位の転送手法は、ダ
ウンロード回数が増加するため、リクエスト・レイテン
シが大きくなり、結果としてダウンロード実行に時間が
かかってしまうという問題がある。さらに、クラス単位
の転送方法は特定の言語を前提としているため、異なる
言語で記述されたプログラムに対して適用できないとい
う問題もある。
【0013】また、JavaAppletの転送方法に
対しては、幾つかの研究や開発がなされている。
【0014】このうち1つの手法として、プログラムの
振る舞いを示すプロファイル・データやプログラムの構
造を解析した結果を用いて、Javaクラスを高い頻度
で利用される部分と低い頻度で利用される2つのクラス
に分割を行い、Javaクラスのダウンロード要求がJ
avaVMによりなされた場合には、高い頻度で利用さ
れるクラスのみをダウンロードすることで、転送量を削
減し起動時間の短縮を行っている。
【0015】この改良手法は、クラス内の不要なメソッ
ドやデータをある程度削減できるという効果はあるもの
の、2分割であるため、プログラムの終了時に必要であ
るメソッドやデータであっても使用頻度が高いと判断さ
れれば、そのクラスが参照された際には初期動作時であ
ってもダウンロードされるため、データ削減が不十分で
あるという問題がある。また、ダウンロード回数の増加
と特定の言語を前提とする点に関しては改善されていな
い。
【0016】また、別の手法として、プロファイル・デ
ータやプログラムの構造解析の結果を用いて、Java
クラス内のメソッドを予測される使用順序に並べ替え
る。Javaクラスは、あらかじめ決められたタイミン
グでサーバ側からのダウンロードが開始される。そし
て、JavaVMは、Javaクラスが完全にダウンロ
ードするのを待たずに、必要とされるメソッドやデータ
のダウンロードが終了した時点で実行を開始すること
で、ダウンロードとプログラム実行を並列化し、ダウン
ロード実行遅延の改善を行う。
【0017】この改良手法によれば、クラス内の不要な
メソッドやデータを削減できるという効果がある。ま
た、この改良手法によれば、サーバからデータを一方的
に送りつける方法をとることにより、リクエスト・レイ
テンシは小さくなる。しかしながら、ダウンロード回数
がメソッドの個数になるため、非常に大きくなってしま
うという問題がある。また、特定の言語を前提とする点
に関しては改善されていない。
【0018】ページ単位の転送方法 ページ単位のダウンロード機能を提供しているものの例
として、UNIX(登録商標)系オペレーティング・シ
ステム(OS)などが持つ仮想記憶機構がある。ここ
で、「ページ」とは、仮想記憶機構が利用するメモリ管
理装置や仮想記憶機構自身の構成によって決定する固定
長のメモリ単位のことであり、例えば4Kバイトの大き
さがページとして利用される。
【0019】仮想記憶機構では、プログラムが配置され
るメモリをページ単位で区切り、各ページに仮想アドレ
スと実際の物理アドレスを割り当てる。プログラムの実
行によりある仮想アドレスを参照する。参照は、メモリ
管理装置によってチェックが行われる。参照されたペー
ジが既にメモリにロードされている場合には、参照はそ
のまま継続される。また、参照されたページが未だメモ
リにロードされていない場合には、参照の実行を一時停
止させて、対応する物理アドレスを使い参照されたペー
ジをハード・ディスクなどの2次記憶装置からロードを
行う。そして、メモリへのロード完了後にプログラムの
ページに対する参照を継続実行させることで、プログラ
ムの起動時にすべてのプログラムを2次記憶装置からロ
ードする必要性をなくしている。
【0020】このページ単位の転送方法の主目的は、拡
張可能なメモリ空間の提供とその保護機能の提供にあ
り、ダウンロードの最適化は副次的な効果である。
【0021】ダウンロードの最適化という観点でみる
と、ページ単位の転送方法は、Java言語など特定の
言語を前提としないという点で汎用的ではある。しかし
ながら、規則的にページ単位でプログラムの分割を行う
ことになるため、1つのページ内には現在のプログラム
の実行には不要なプログラム・コードやデータが含まれ
るため、効率的ではないという問題がある。また、プロ
グラムの起動時に複数の異なるページへのアクセスが発
生する傾向があり、プログラム起動時のダウンロード回
数が増加するという問題がある。
【0022】
【発明が解決しようとする課題】プログラムなどのデー
タをサーバなどのデータ管理装置からクライアントなど
のデータ利用装置に移動して利用する(すなわちプログ
ラムを実行する)にはデータ移動の完了を待つ必要があ
る。このため、システムの処理速度が低下するという問
題がある。この解決方法として、データをその構成要素
に分割して、データの利用に応じて適宜構成要素を単位
として移動を行うという方法がある。
【0023】しかしながら、従来の手法は、データの分
割が効率的ではなく、その時点では不要な要素が含まれ
ているという問題がある。また、分割が最適に行われな
いことにより、データの移動回数が増加し過ぎて、リク
エスト・レイテンシを増加させるという問題がある。さ
らに、特定の利用環境を前提としているため、一般に適
用することが困難であるという問題がある。
【0024】本発明は、このような技術的課題を勘案し
たものであり、命令や関数呼出しなどのシンボル、変数
などの複数の基本構成要素からなるプログラムの構造を
最適化することができる、優れたデータ処理システム及
びデータ処理方法、並びに記憶媒体を提供することを目
的とする。
【0025】本発明の更なる目的は、ダウンロードなど
所定の媒体を介してシステム間を移動させるためにプロ
グラムの構造を最適化するとともに移動先のシステムに
おけるメモリの使用量の最適化を行うことができる、優
れたデータ処理システム及びデータ処理方法、並びに記
憶媒体を提供することにある。
【0026】本発明の更なる目的は、特定の利用環境を
前提としないようにデータ分割を行うことにより、デー
タの移動に際しデータ転送量とデータ転送回数の最適化
を実現するようにプログラムを再構成することができ
る、優れたデータ処理システム及びデータ処理方法、並
びに記憶媒体を提供することにある。
【0027】
【課題を解決するための手段及び作用】本発明は、上記
課題を参酌してなされたものであり、その第1の側面
は、複数の基本構成要素によって構成されるデータを処
理するデータ処理システム又はデータ処理方法であっ
て、データ利用時においてデータに含まれる各基本構成
要素についての参照情報を生成する参照情報生成手段又
はステップと、該参照情報を基に各基本構成要素間の関
連性を考慮して、関連性のある複数の基本構成要素を1
つの新規構成要素としてデータを新規構成要素の集合と
して再構成するデータ再構成手段又はステップと、を具
備することを特徴とするデータ処理システム又はデータ
処理方法である。
【0028】但し、ここで言う「システム」とは、複数
の装置(又は特定の機能を実現する機能モジュール)が
論理的に集合した物のことを言い、各装置や機能モジュ
ールが単一の筐体内にあるか否かは特に問わない。
【0029】ここで言うデータとは、例えばコンピュー
タ可読形式で記述された命令列からなるプログラムのこ
とである。また、基本構成要素は、関数と変数などのシ
ンボルであってもよいし、ベーシック・ブロックであっ
てもよいし、シンボル・テーブルやリロケーション・エ
ントリなどのプログラムの管理情報要素を含んでいても
よい。
【0030】また、参照情報は、データ毎に累積され一
般化した情報である。例えば、データ利用時において基
本構成要素が最初に利用される時刻情報、データ利用時
に基本構成要素が利用される頻度情報、基本構成要素が
利用された装置に関する情報などを参照情報として用い
ることができる。このような参照情報は、プログラムの
実行時に、関数や変数などの基本構成要素がどのような
頻度でアクセスされるか、あるいは、どのような時刻又
は時間間隔でアクセスされるかなどという、プログラム
実行時の特性に関する情報を得る「トレース処理」を行
うことによって生成することができる。
【0031】また、本発明の第1の側面に係るデータ処
理システム又はデータ処理方法は、新規構成要素を単位
として装置間でデータの移動を行うデータ移動手段又は
ステップをさらに備えていてもよい。データの「移動」
とは、ネットワークを利用したダウンロードであっても
よいし、あるシステムに接続されているデバイスからの
移動であってもよいし、あるシステム内の同一メモリか
らの移動であってもよい。
【0032】また、本発明の第1の側面に係るデータ処
理システム又はデータ処理方法は、新規構成要素単位で
プログラムの動的リンクを行う動的リンク手段又はステ
ップをさらに備えていてもよい。
【0033】本発明の第1の側面に係るデータ処理シス
テム又はデータ処理方法によれば、まず基本構成要素の
集合として構成されるデータに関して参照情報生成手段
又はステップにより基本構成要素毎の参照情報を得る。
次に、データ再構成手段又はステップは、1つ又は複数
の参照情報と1つのデータを入力とし、参照情報を利用
して関連する複数の基本構成要素を1つの新規構成要素
として構成し、データを新規構成要素の集合として再構
成を行う。再構成が行われたデータはデータを保管する
データ管理装置に置かれる。
【0034】参照情報は、データ毎に累積され一般化し
た情報であり、例えば、データ利用時において基本構成
要素が最初に利用される時刻情報、データ利用時に基本
構成要素が利用される頻度情報、基本構成要素が利用さ
れた装置に関する情報などである。例えば、基本構成要
素が最初に利用される時刻情報を参照情報として用いた
場合、参照時刻が近い基本構成要素はプログラム実行時
に連続的に呼び出される可能性が高く、逆に、参照時刻
が隔たった基本構成要素の間には、プログラム実行時
に、ユーザ入力待ちやディスク・アクセスなどが含まれ
ているなど関連性が低いと思料される。
【0035】したがって、データ再構成手段又はステッ
プは、参照情報を基にして、データの利用の観点から参
照が近接している基本構成要素の集合として新規構成要
素を構成することができる。例えばデータがプログラム
の場合であれば、新規構成要素はデータの参照情報を基
に決定されるので、たとえ同じクラス内のメソッドやデ
ータであっても、互いの参照関係が近接していない場合
には異なる新規構成要素として分割される。また、たと
え異なるクラスに属するメソッドであっても、互いに近
接して参照されているメソッドやデータは1つの新規構
成要素として構成される。
【0036】本発明の第1の側面に係るデータ処理シス
テム又はデータ処理方法によれば、データをサーバなど
のデータ管理装置からクライアントなどのデータ利用装
置に移動(例えば、ダウンロード)して利用する際に
は、新規構成要素を単位としてダウンロードを行う。し
たがって、たとえ同じクラス内のメソッドやデータであ
っても、互いの参照関係が近接していない場合には異な
る新規構成要素として分割されるので、データ転送量を
最適化することができる。また、たとえ異なるクラスに
属するメソッドであっても、互いに近接して参照されて
いるメソッドやデータは1つの新規構成要素として構成
されるので、1回の転送で移動が行え、移動回数を最適
化することができる。
【0037】また、データ利用装置にあるデータ移動手
段は、データの利用(すなわちプログラムの実行)と並
行して、新規構成要素を単位としてデータの移動(すな
わちダウンロード)を行うことができる。データ利用装
置側では、幾つかの新規構成要素のみを移動すればデー
タの利用が可能となるので、データ移動の最適化が可能
となる。
【0038】また、本発明は、データが基本構成要素の
集合として構成されること、基本構成要素に対して参照
情報を得ることが可能であること、及び、データ移動手
段を仲介としてデータ利用装置上でデータが利用できる
こと、という条件を満たすすべてのデータに対して適用
できるため広範な適用範囲とすることができる。データ
が特定の言語で記述されているなどの制約がない。
【0039】なお、前記参照情報生成手段又はステップ
は、再構成されたデータを利用するデータ利用装置内に
配置されていてもよい。このような場合、前記データ利
用装置において参照情報の取得の指示が行われたことに
応答して参照情報の取得を行うようにしてもよいし、自
動的に参照情報の取得を行うようにしてもよいし、常に
参照情報の取得を行うようにしてもよい。
【0040】あるいは、前記参照情報生成手段又はステ
ップは、再構成されたデータを利用するデータ利用装置
以外に配置されていてもよい。このような場合、前記デ
ータ利用装置におけるデータ利用を模擬して参照情報の
取得を行うようにしてもよいし、データを解析して参照
情報の取得を行うようにしてもよい。
【0041】また、データ再構成手段又はステップは、
データの移動に先立ってデータの再構成を行うようにし
てもよいし、あるいは、データの移動が完了した後にデ
ータの再構成を行うようにしてもよい。
【0042】データ再構成手段又はステップは、参照情
報を基に基本構成要素間の利用関係を定義して、該定義
を基にして新規構成要素を生成するが、基本構成要素が
利用される参照時刻から計算される参照間隔を利用関係
として定義するようにしてもよい。
【0043】例えば、利用関係が特定の参照間隔閾値と
なる基本構成要素をまとめて1つの新規構成要素を生成
するようにしてもよい。この場合、すべての又は特定の
複数のデータの複数の利用関係から参照間隔閾値を決定
するようにしてもよい。例えば、複数の参照情報から得
られる参照間隔の平均値に標準偏差を加算した値を参照
情報閾値として決定するようにしてもよい。
【0044】また、本発明の第2の側面は、複数の基本
構成要素によって構成されるデータの処理をコンピュー
タ・システム上で実行するように記述されたコンピュー
タ・ソフトウェアをコンピュータ可読形式で物理的に格
納した記憶媒体であって、前記コンピュータ・ソフトウ
ェアは、データ利用時においてデータに含まれる各基本
構成要素についての参照情報を生成する参照情報生成ス
テップと、該参照情報を基に各基本構成要素間の関連性
を考慮して、関連性のある複数の基本構成要素を1つの
新規構成要素として生成して、データを新規構成要素の
集合として再構成するデータ再構成ステップと、を具備
することを特徴とする記憶媒体である。
【0045】本発明の第2の側面に係る記憶媒体は、例
えば、さまざまなプログラム・コードを実行可能な汎用
コンピュータ・システムに対して、コンピュータ・ソフ
トウェアをコンピュータ可読な形式で提供する媒体であ
る。このような媒体は、例えば、CD(Compact Disc)
やFD(Floppy Disk)、MO(Magneto-Optical dis
c)などの着脱自在で可搬性の記憶媒体である。あるい
は、ネットワーク(ネットワークは無線、有線の区別を
問わない)などの伝送媒体などを経由してコンピュータ
・ソフトウェアを特定のコンピュータ・システムに提供
することも技術的に可能である。
【0046】本発明の第2の側面に係る記憶媒体は、コ
ンピュータ・システム上で所定のコンピュータ・ソフト
ウェアの機能を実現するための、コンピュータ・ソフト
ウェアと記憶媒体との構造上又は機能上の協働的関係を
定義したものである。換言すれば、本発明の第2の側面
に係る記憶媒体を介して所定のコンピュータ・ソフトウ
ェアをコンピュータ・システムにインストールすること
によって、コンピュータ・システム上では協働的作用が
発揮され、本発明の第1の側面に係るデータ処理システ
ム又はデータ処理方法と同様の作用効果を得ることがで
きる。
【0047】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施形態や添付する図面に基づくより
詳細な説明によって明らかになるであろう。
【0048】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施形態について詳解する。
【0049】図1には、本発明に係るデータ処理方法を
適用することができるシステム全体の構成を模式的に示
している。このシステムは、サーバ(Server)1
と、クライアント(Client)2,3…が、ネット
ワーク(Network)4によって相互接続されるこ
とによって構成されている。
【0050】サーバ1やクライアント2,3…は、例え
ば、ワークステーション(WS)やパーソナル・コンピ
ュータ(PC)などの一般的なコンピュータ・システム
上でそれぞれサーバ・ソフトウェアやクライアント・ソ
フトウェアを起動するという形態で実現される。この種
のコンピュータは、中央コントローラとしてのCPU
(Central Processing Unit)と、RAMやROMなど
のメモリ装置、ハード・ディスクなどの外部記憶装置、
ディスプレイやキーボード/マウスなどのユーザ・イン
ターフェースを備え、オペレーティング・システムの制
御下でプログラムの実行が行われる。
【0051】サーバ1は、プログラム1−1、プログラ
ム1−2などの複数のプログラムを持つ。サーバ1とク
ライアント2、クライアント3は、LAN(Local Area
Network)やインターネットなどのネットワーク4によ
って接続されている。クライアント2とクライアント3
は、プログラム1−1又はプログラム1−2を実行する
際には、サーバ1よりプログラムのダウンロードを行う
とともに、プログラムの実行するものとする。
【0052】本実施形態では、ネットワーク4を介して
サーバ1と各クライアント2,3が接続されているが、
それ以外の媒体を利用した接続又は構成でもあってもよ
い。例えば、プログラム1−1,1−2がハード・ディ
スクやDVD(Digital Versatile Disc)などの2次記
憶装置に格納され、クライアント2,3…と接続されて
いるとしてもよい。そして、各クライアント2,3…は
プログラムの実行に際して、それら2次記憶装置からプ
ログラムを読み出してメモリ上にロードし実行をするも
のとしてもよい。
【0053】図2には、図1で示したプログラムの内部
構成例を模式的に示している。ここでは、プログラムの
例として、マインスイーパー・ゲーム・プログラムであ
る"kmines"プログラム(kmines:the
KDE minesweeper;Copyright
(C)1996−97−98−99 NicolasH
ADACEK)を用いている。但し、図示のkmine
sプログラムは、米インテル社の80386アーキテク
チャのELFフォーマットで作成されるものとする。
【0054】同図に示すように、プログラムの構成はテ
キスト(text)、データ(data)、ヘッダ(h
eader)の3つに大きく分類できる。このうちテキ
ストはプログラムの命令列であり、図2に示す例ではテ
キスト5−3で示されている。プログラムの命令列は、
関数を単位として、テキストを構成している。本実施形
態では、関数をテキストを構成する基本構成要素として
扱う。図2には、kminesを構成する関数を1部示
している。
【0055】データは、プログラムにより参照される変
数や定数のことであり、図2ではデータ5−4で示され
ている。ここでは、変数や定数は実際のダウンロードが
必要なものに限定される。つまり、プログラムの実行時
にスタック上やヒープ領域に動的に配置される変数や定
数はプログラムより参照はされるが、ダウンロードを行
う必要はないので、データ5−4から除外される。ま
た、静的に配置される変数や定数であっても、その初期
値が0などの特定値である場合には、プログラム実行開
始前に実行環境によって配置と初期化を行うことが可能
であるので、ダウンロードを行う必要がない。したがっ
て、このような変数や定数もデータ5−4から除外され
る。データ5−4は、以上を除く変数や定数に分割する
ことができる。
【0056】本実施形態では、これら変数と定数をデー
タを構成する基本構成要素として扱う。図2では、例と
してkminesを構成する関数を1部示している。以
降、本明細書中では、関数と変数、定数を総称して「シ
ンボル」と呼ぶ。
【0057】ヘッダは、プログラム管理データであり、
図2ではヘッダ5−5として示されている。ここで、プ
ログラム管理データとは、プログラムの実行によって直
接参照されることはないが、その実行を実現するために
実行環境によって参照されるデータ構造のことである。
【0058】図示のように、プログラム管理データは、
さらに複数の管理データにより構成される。ELFフォ
ーマットの場合多くの管理データを持つが、本明細書で
は簡便のため、再配置テーブルであるrelocati
on5−6と動的シンボル・テーブルであるdynsy
m5−7の2つより構成されるものとする。
【0059】再配置テーブルは、命令列やデータのどの
部分が実行環境で決定されるアドレスを参照するかとそ
の参照の解決方法を示しており、実行環境はこれを利用
して決定したアドレスをプログラム・コードやデータに
適用する。また、動的シンボル・テーブルはシンボル参
照のアドレス解決を行うために利用される。これら2つ
の管理データは、テーブル形式で構成されるため、複数
のエントリから構成されている。再配置テーブルは複数
の再配置エントリから構成され、動的シンボル・テーブ
ルはシンボル・エントリにより構成される。
【0060】本実施形態では、再配置エントリとシンボ
ル・エントリをそれぞれ再配置テーブルと動的シンボル
・テーブルの基本構成要素として扱っている。プログラ
ム管理領域中の管理領域の種類によっては、その大きさ
が十分に小さいものである場合や、基本構成要素への分
割が困難である場合がある。そのような場合には、それ
らを1つの基本構成要素として扱う。
【0061】図2には、例としてkminesのヘッダ
の1部分を示している。再配置テーブルRelocat
ion5−6の最初のエントリrel_Kmine
s::Kmines(Qwidget*,char c
onst*)は、関数Kmines::Kmines
(Qwidget*,char const*)への参
照を行う命令列又はデータの位置と参照の解決方法が記
述されているエントリであることを示している。また、
動的シンボル・テーブルdynsym5−7の最初のエ
ントリsym_mainは、関数mainのアドレスを
決める情報が記述されているエントリであることを示し
ている。実際のkminesとは異なるが、図2ではプ
ログラムの実行がmainから始まるものとし、mai
nを直接参照する命令列又はデータがkminesプロ
グラム内にないものとし、このためrel_mainが
存在しないようになっている。
【0062】次いで、本発明の手法に基づくプログラム
の再構成手順について説明する。
【0063】まず、プログラムの再構成に必要となる参
照情報について説明する。以下の表1には本実施形態で
使用する参照情報を示している。
【0064】
【表1】
【0065】上表に示す参照情報は、kminesプロ
グラムを米インテル社のプロセッサCeleron46
6MHz上で実行したときの値を示している。なお、説
明の簡素化のため、kminesが使用する動的ライブ
ラリやkmines内部の定数については省略してい
る。
【0066】表1に示した参照情報の各エントリは、I
ndexとSymbolとTimestampで構成さ
れる。Indexは、各エントリを区別するために説明
の便宜上あるもので、実際には必要ではない。
【0067】Symbolはシンボルを識別するために
使用される。表1では分かり易さのため文字列で示して
いるが、実際にはシンボルを識別するIDや動的ライブ
ラリを区別するIDが使用される。このため、表1では
同じシンボル名のエントリが存在するが、それらはファ
イル・スコープの異なる変数であり実際にはIDによっ
て区別することができる。
【0068】また、Timestampはシンボルがプ
ログラムの実行時に最初に参照された時刻を示してい
る。プログラムの実行時に1度も参照されなかったシン
ボルは参照情報に現れない。Timestampを最初
にそのシンボルが参照された時刻とするのは、最初の参
照でそのシンボルのダウンロードが必要となるためであ
る。それ以後の参照では、既にダウンロードは完了して
いるため、それらの参照情報は必要としない。表1で
は、kminesが起動するまでのエントリをその参照
順、つまりTimestamp順で示している。
【0069】このような参照情報は、プログラムの実行
時に関数や変数がどのような頻度でアクセスされるか、
あるいは、どのような時刻又は時間間隔でアクセスされ
るかなどの、プログラム実行時の特性に関する情報を得
る「トレース処理」を行うことによって生成することが
できる。トレースを実現する手法としては、プログラム
の実行情報を得るためにプログラム・コードに情報取得
を行うコードの追加を行うCode Insertio
n方式や、プログラムの実行からは透過的に実行環境に
よって定期的にプログラムの実行を中断してその時点の
プログラムのコンテキスト情報からプログラムの実行情
報の収集を行うSampling方式を挙げることがで
きる。
【0070】次いで、本発明の手法に基づくプログラム
の再構成手順について、図3に示すフローチャートを参
照しながら説明する。
【0071】再構成の前提として、参照情報生成手段に
より、再構成対象のプログラムを構成するモジュールに
ついての上記の表1に示すような参照情報が与えられて
いるものとする。
【0072】まず、Timestampをキーとして参
照情報のエントリを参照時刻順にソートする(ステップ
S1)。
【0073】次いで、1つ前のエントリのTimest
ampとの差分をとることで各シンボル間の参照時間間
隔を計算する(ステップS2)。
【0074】次いで、得られた参照時間間隔を入力とし
てシステムが管理する参照時間間隔分布データを更新す
る(ステップS3)。
【0075】ここで、参照時間間隔分布データとは、あ
る参照時間間隔が発生した回数をその参照時間間隔毎に
累計したものである。この累計はプログラム毎に累計を
行う方法や、プログラムを区別せずにすべてのプログラ
ムに対して累計を行う方法がある。本実施形態では、プ
ログラムを区別せずにすべてのプログラムに対して累計
を行うものとする。また、本実施形態においての参照時
間間隔分布データの更新では、参照時間間隔の回数が加
算された後に、参照時間間隔の期待値と標準偏差の値が
再計算される。
【0076】参照時間間隔が短い基本構成要素はプログ
ラム実行時に連続的に呼び出される可能性が高く、逆
に、参照時間間隔が長い基本構成要素の間には、プログ
ラム実行時に、ユーザ入力待ちやディスク・アクセスな
どが含まれているなど関連性が低いと思料される。
【0077】次いで、更新された期待値と標準偏差の値
を加算して閾値とする(ステップS4)。
【0078】次いで、参照時刻順にソートされた参照情
報を、前のステップで計算した閾値を用いて分割し、ワ
ーキング・セット(working set)を定義す
る。分割には、1つ前のエントリとの差分である参照時
間間隔が閾値以上である部分で分割を行う方法と、ワー
キング・セット定義を開始したエントリの参照時刻から
の差分が閾値以上である部分で分割を行う方法がある。
どちらの方法も、閾値未満の参照間隔である複数のシン
ボルを1つのワーキング・セットとして定義とする(ス
テップS5)。
【0079】参照が発生しないシンボルはプログラムの
構造解析により幾つかのワーキング・セットとして定義
することが可能であるが、本実施形態では簡便のために
まとめて1つのワーキング・セットを定義とする(ステ
ップS6)。
【0080】このようにして得られたワーキング・セッ
トの定義に従いプログラムのテキストとデータをワーキ
ング・セットとして分割する(ステップS7)。このと
き、参照が発生しなかったシンボルから構成されるワー
キング・セットには、プログラムの起動前にダウンロー
ドを行う必要があることを示すpreloadのマーク
を付ける。
【0081】そして、再配置テーブルを構成する再配置
エントリと動的シンボル・テーブルを構成するシンボル
・エントリのうちワーキング・セット定義に含まれるシ
ンボルに対応するエントリを該当するワーキング・セッ
トに追加していく(ステップS8)。
【0082】より具体的には、再配置エントリは命令列
データのどの部分が実行環境で決定されるアドレスを参
照するかを示しているため、シンボルと対応付けが可能
である。また、一般的なトレーサは、ヘッダに対して参
照時刻をとることができないので、ヘッダをワーキング
・セット定義に従って分割することはできない。そこ
で、対応するシンボルが属するワーキング・セットに再
配置エントリを入れることで再配置テーブルを分割する
ようにする。
【0083】同様に、シンボル・エントリも対応するシ
ンボルが存在するため、対応するシンボルが属するワー
キング・セットにシンボル・エントリを入れることで動
的シンボル・テーブルを分割するようにする。
【0084】ここで、図2及び表1に示したプログラム
を例にとって、上述のプログラム再構成の手順について
説明する。表1は、最初の参照時刻順すなわちTime
stampの順序に従って既に並べ替えられている。
【0085】システムが管理する参照時間間隔分布デー
タにより、過去参照数25,212回のデータの参照時
間間隔の期待値が0.00611950077371、
そのときの標準偏差が0.1795597012295
5であったとすると、閾値は0.1856792020
0326が得られる。この閾値を利用して参照時間間隔
が閾値以上である部分で分割を行うと、表1のInde
x0−6,Index7−32,Index33−5
4,Index55−57,Index58の5つに分
割することができる。ここでは、これらをそれぞれワー
キング・セットとして定義する。
【0086】表1に示した参照情報の例では、KMin
esの起動までの部分しかないために、プログラム全体
を分割することはできないが、参照情報をプログラムの
さまざまな実行に対して得ることで、実際にはプログラ
ム全体の分割が可能となる。
【0087】次いで、得られたワーキング・セットに対
応する再配置テーブルのエントリと動的シンボル・テー
ブルのエントリを対応する各ワーキング・セット定義に
追加を行う。例えば、関数mainがQArrayT
〈char〉virtualtableとQStrin
g virtual tableを参照するのであれば、
rel_QArrayT〈char〉virtual t
ableとrel_QString virtual t
ableがmainの属するワーキング・セット定義に
追加される。また、sym_mainもmainの属す
るワーキング・セット定義に追加される。
【0088】以上の手順により、図2に示したKMin
esの1部は、図4に示すような複数のワーキング・セ
ットに再構成される。それぞれのワーキング・セット内
ではプログラム実行時に連続的に参照される可能性が高
く、これに対し、ワーキング・セット間ではユーザ入力
待ちやディスク・アクセスが存在するなどの原因で参照
時刻に隔たりがある、ということを充分理解されたい。
【0089】図3に示したような手順でプログラムの再
構成を行うことにより、短時間内に参照が発生したシン
ボルのみで各ワーキング・セットを構成することができ
る。また、再配置エントリやシンボル・エントリなどの
プログラム管理データもシンボルに対応して分割するこ
とにより、実行環境がワーキング・セットをプログラム
に対して利用可能にするために必要となる部分のみをダ
ウンロードすることができる。
【0090】この結果、ダウンロードするプログラム量
の最適化が可能となる。また、プログラムを構成するシ
ンボルや各管理データを構成するエントリで分割再構成
を行い、クラスなどの特定の言語に依存した分類を行わ
ないので、異なる言語で記述されたモジュールであって
も、上述したプログラム再構成の処理を適用することが
できる。
【0091】また、本実施形態に係るプログラムの再構
成によれば。仮にC++などのクラスをサポートする言
語でプログラムが記述された場合であっても、短時間の
参照間隔のメソッドであれば、異なるクラスに属してい
ても1つのワーキング・セットとしてまとめることがで
きるので、データ転送量を最適化することができる。ま
た、その逆に、同じクラスに属していても、参照間隔が
開いている場合には、異なるワーキング・セットとして
分割されるので、ダウンロード回数を最適化することが
できる。
【0092】なお、本実施形態では実装していないが、
ワーキング・セット間の参照順序関係を新たな管理情報
として各ワーキング・セットに追加を行い、ダウンロー
ド時にそれを参照してプリフェッチを行うことも可能で
ある。
【0093】図5には、図1で示したクライアント2
(又は3)の構成を詳細に示している。クライアント2
は、所定の通信プロトコルに従ってサーバ1とメッセー
ジをやり取りすることでプログラムのダウンロード実行
を行うことができる。
【0094】図5に示す構成例では、クライアント2は
複数の並行オブジェクトによって構成される。ここで、
オブジェクトとは、データとそのデータに対する処理手
続き(メソッド)とを一体化させたモジュール単位のこ
とである。また、並行オブジェクトは、外部に公開され
た複数のメソッドとオブジェクトの状態やメソッド本体
を保持するメモリとメソッドを実行するための単一のコ
ンテキストと未処理のメッセージを管理するメッセージ
・キューより構成される。並行オブジェクトは公開され
たメソッドに対するメッセージを受信して、1度に1つ
のメッセージを処理する。メッセージ処理中に受けたメ
ッセージはメッセージ・キューに保管される。
【0095】図5に示すように、クライアント2は、E
xecSpace2−1と、Downloader2−
2と、Timer2−3という各オブジェクトで構成さ
れている。
【0096】ExecSpace2−1は、プログラム
の実行環境を提供する。具体的にはJavaVMやオペ
レーティング・システムなどがこれに相当する。Exe
cSpace2−1は並行オブジェクトではないが、以
下では擬似的に並行オブジェクトとして説明をする。ま
た、サーバ1についても、同様に擬似的に並行オブジェ
クトとして説明をする。
【0097】ExecSpace2−1は、プログラム
の実行に際して、まだダウンロードが行われていないプ
ログラム部分に実行や参照が発生すると、Downlo
ader2−2にダウンロード要求を発生するようにな
っている。Downloader2−2は、プログラム
の参照情報の生成と、サーバ1へのダウンロードの要求
を行う。Timer2−3は時刻情報の提供を行う。各
オブジェクトについて以下に詳細に説明をする。
【0098】ExecSpace ExecSpace2−1は、プログラムの実行やさま
ざまなサービスを提供するオブジェクトである。実際に
はさまざまなオブジェクトやモジュールで構成される
が、ここでは説明の便宜上まとめて1つのオブジェクト
として扱う。
【0099】ExecSpace2−1は、ダウンロー
ド実行機能に関して、1つのメソッド"Resume"を
持つ。Resumeは、以下の動作を持つメソッドであ
る。
【0100】(1)引数で指定されたプログラム部分
を、プログラムが利用可能に設定する。より具体的に
は、プログラムのメモリ空間への割り付けや登録などの
作業を行う。 (2)引数でIDが指定された場合には、対応するプロ
グラムの実行を再開する。IDの意味付けはExecS
pace2−1によって行われる。Resumeに指定
するIDは、ExecSpace2−1がReferを
発行したときに指定したIDがそのまま指定される。本
実施形態では、ExecSpace2−1はRefer
発行時にThreadIDを指定する。このためRes
umeメソッドの実行ではThreadIDに対応する
threadの実行再開を行う。
【0101】なお、ExecSpace2−1は実際に
はResume以外の多くのメソッド又はサービスを持
つが、ダウンロード実行には直接関連しないので本明細
書では説明を省略する。
【0102】Downloader Downloader2−2は、ExecSpace2
−1からの実行要求や参照を解決し、また、サーバ1に
対してダウンロード要求や参照情報の提供を行うことで
ダウンロード実行の実現を行う。Downloader
2−2には、Restructuring modeと
Download modeという2つの実行モードが
ある。
【0103】Downloader2−2は、その内部
にReferenceInfoを持つ。Referen
ceInfoは、シンボルの参照情報を保持する。本実
施形態では、シンボルの参照情報としてシンボルの参照
時刻のみを使う。ReferenceInfoは、シン
ボルを特定するための、ModuleID、Symbo
lIDの組と参照時刻で1つのエントリが構成される。
このエントリが参照されたすべてのシンボルに対して作
成される。
【0104】また、Downloader2−2は、ダ
ウンロードの実行に関して、Invoke、Refe
r、Finishというメソッドを持つ。各メソッドの
動作を以下にまとめておく。
【0105】Invoke (1)引数で指定されたProgramIDを指定し
て、サーバ1にLoadメッセージを送り、プログラム
を構成するすべてのモジュールをダウンロードする。 (2)ProgramIDに対してReference
Infoを初期化する。 (3)ExecSpace2−1にResumeを送り
<実行を再開させる。
【0106】Refer (1)Restructuring modeの場合に
は (1−1)Timer2−3オブジェクトにGetTi
meメッセージを送り現在の時刻を得る。 (1−2)時刻情報と引数で指定されたSymbolI
DをReferenceInfoにエントリとして追加
する。 (2)Download modeの場合には、サーバ
1にLoadメッセージを送り、シンボルを含むワーキ
ング・セットをダウンロードする。 (3)ExecSpace2−1にResumeを送
り、実行を再開させる。
【0107】Finish Restructuring modeの場合には、 (1)ReferenceInfoを引数としてサーバ
1にConfigureメッセージを送る。 (2)現在実行中のプログラムに関するReferen
ceInfoの資源を削除する。
【0108】Timer Timer2−3は、システムの動作とは独立に動作し
時刻を得るオブジェクトである。時刻は特に外部時計と
同期している必要はないが、十分に精度のある時刻情報
を提供することができるものとする。CPUに内蔵され
ているfreerun counterなどをこの目的
に利用することが可能である。
【0109】Timer2−3は、GetTimeメソ
ッドを持つ。このGetTimeは現在の時刻を返す。
【0110】図6には、図1に示したサーバ1の構成を
詳細に示している。サーバ1は、所定の通信プロトコル
に従ってクライアント2又は3とメッセージのやり取り
をすることによって、プログラムのダウンロード実行を
行う。
【0111】図6に示す構成例では、サーバは、Res
tructuror1−3と、WorkingSetM
gr1−4という各オブジェクトにより構成される。R
estructuror1−3は、図3に示した処理手
順に従い、プログラムの再構成を行う。また、Work
ingSetMgr1−4は、Restructuro
r1−3により生成されたワーキング・セットの管理を
行い、クライアント2又は3からの要求に応じてワーキ
ング・セット単位で要求されたプログラムのダウンロー
ドを実行する。各オブジェクトについて以下に説明す
る。
【0112】Restructuror Restructuror1−3は、Referenc
eInfoを利用してプログラムを再構成するオブジェ
クトである。Restructuror1−3は、その
内部に、過去の計算で得られた参照時間間隔を統計情報
として保持している。Restructuror1−3
は、Configureメソッドを持つ。Config
ureメソッドは以下の動作を行う。
【0113】(1)引数で指定されたProgramI
Dに対応するプログラムを構成するモジュールを得る。 (2)プログラムを再構成する(図3を参照のこと)。 (3)プログラムを分割して得られたワーキング・セッ
トをWorkingSetMgrにRegisterメ
ッセージを送ることで登録を行う。
【0114】WorkingSetMgr WorkingSetMgr1−4は、プログラムを再
構成して得られたワーキング・セットを管理し、クライ
アント2又は3からの要求に応じてダウンロードを行
う。WorkingSetMgr1−4は、ダウンロー
ド実行のために、Register及びLoadという
メソッドを持つ。
【0115】Registerは、引数で指定されたワ
ーキング・セットを内部に登録する動作を行う。
【0116】また、Loadは、引数で指定されたPr
ogramID,ModuleID, SymbolI
Dに対応するワーキング・セットをクライアントに対し
て返す。また、ProgramIDが指定されていた場
合は、preloadのマークの付いたワーキング・セ
ットをクライアントに返す。
【0117】次いで、図1に示したシステム構成におい
て、プログラムを再構成するためのシナリオについて説
明する。
【0118】図7には、ExecSpace2−1がプ
ログラムの起動要求を発行したときの処理の流れを示し
ている。
【0119】クライアント2側では、ユーザからのプロ
グラム起動要求を受け取ると、ExecSpace2−
1は、ProgramIDとそれを実行するThrea
dIDを指定して、InvokeメッセージをDown
loader2−2に送る。
【0120】Downloader2−2は、Prog
ramIDを指定して、サーバ1のWorkingSe
tMgr1−4にLoadメッセージを送る。
【0121】WorkingSetMgr1−4は、引
数で指定されたProgramIDに対応するプログラ
ムを構成するすべてのモジュールをクライアント2のD
ownloader2−2に返す。
【0122】Downloader2−2は、Prog
ramIDに対してReferenceInfoを初期
化し、ThreadIDを指定して、Resumeメッ
セージをExecSpace2−1に送る。
【0123】ExecSpace2−1は、プログラム
の実行を開始し、各シンボルが参照されると、Symb
olIDとThreadIDを指定して、Referメ
ッセージをDownloader2−2に送る。
【0124】Downloader2−2は、このシナ
リオではRestructuring modeで動作
しているため、TimerにGetTimeメッセージ
を送って時刻情報を得た後、Referで指定されたS
ymbolIDに対して得られた時刻情報とともにRe
ferenceInfoのエントリを作成する。
【0125】本実施形態では、ExecSpace2−
1は、最初に参照されたシンボルに対してのみRefe
rメッセージを発行するようになっているので、Dow
nloader2−2側ではSymbolIDへのRe
ferが複数回発生していないかどうかのチェックは行
わない。
【0126】Downloader2−2は、Refe
renceInfoのエントリ作成後に、ExecSp
ace2−1にResumeメッセージを送り実行を再
開させる。以降、シンボルが参照される度にExecS
pace2−1はReferを発行し、Downloa
der2−2はReferenceInfoのエントリ
を作成してResumeを発行することを繰り返す。
【0127】プログラムの実行が終了すると、Exec
Space2−1は、Downloader2−2にF
inishメッセージを送る。
【0128】Downloader2−2は、Fini
shメッセージを受け取ると、作成されたRefere
nceInfoを、サーバ1のRestuructur
or1−3にConfigureメッセージとして送
る。
【0129】Restructuror1−3は、Re
ferenceInfoを用いてプログラムの再構成を
行う(図3を参照のこと)。そして、得られた複数のワ
ーキング・セットを、Registerメッセージを使
ってWorkingSetMgr1−4に送る
【0130】WorkingSetMgr1−4は、こ
れらのワーキング・セットを登録し管理を行う。
【0131】以上のような手続により、次回のプログラ
ムのダウンロードからはプログラムをワーキング・セッ
ト単位でダウンロードすることが可能となる。
【0132】次いで、上述したようなシナリオで再構成
されたプログラムをサーバ1からクライアント2又は3
にダウンロードするためのシナリオについて説明する。
【0133】図8には、ExecSpace2−1がプ
ログラムの起動要求を発行したときの処理の流れを示し
ている。
【0134】クライアント2側で、ユーザからのプログ
ラム起動要求を受け取ると、ExecSpace2−1
は、ProgramIDとそれを実行するThread
IDを指定して、Downloader2−2にInv
okeメッセージを送る。
【0135】Downloader2−2は、Prog
ramIDを指定して、サーバ1側のWorkingS
etMgr1−4にLoadメッセージを送る。
【0136】WorkingSetMgr1−4は、引
数で指定されたProgramIDに対応するワーキン
グ・セットのうちpreloadのマークが付いたワー
キング・セットをクライアント2側のDownload
er2−2に返す。
【0137】Downloader2−2は、Thre
adIDを指定して、ExecSpace2−1にRe
sumeメッセージを送る。
【0138】ExecSpace2−1は、プログラム
の実行を開始し、各シンボルが参照され且つそのシンボ
ルがダウンロードされていないと、SymbolIDと
ThreadIDを指定してReferメッセージをD
ownloader2−2に送る。シンボルがダウンロ
ードされているかどうかは、各ワーキング・セットに含
まれるシンボル・エントリを使うことで、ExecSp
ace2−1が判断を行うことが可能である。
【0139】Downloader2−2は、このシナ
リオではDownload modeで動作しているた
め、サーバ1のWorkingSetMgr1−4にL
oadメッセージを送る。
【0140】これに対し、WorkingSetMgr
1−4は、引数で指定されたSymbolIDに対応す
るワーキング・セットをクライアント2のDownlo
ader2−2に返す。
【0141】Downloader2−2は、Thre
adIDを指定して、ResumeメッセージをExe
cSpace2−1に送る。以降、シンボルが参照され
且つそのシンボルがダウンロードされていない毎に、E
xecSpace2−1はReferメッセージを発行
し、また、DownloaderはLoadメッセージ
を使ってワーキング・セットをダウンロードした後Re
sumeを発行するという一連の動作を繰り返す。
【0142】プログラムの実行が終了すると、Exec
Space2−1は、Downloader2−2にF
inishメッセージを送る。
【0143】以上のような手順により、クライアント2
は、すべてのプログラムをダウンロードすることなく、
短時間内に参照が発生する複数のシンボルとそれに関連
するプログラム管理領域のエントリをダウンロードする
ことで、プログラムの実行が可能になり、ダウンロード
量とダウンロード回数の最適化が可能となる。また、デ
ータのダウンロードとプログラムの実行を並列化させる
ことができる。
【0144】上述した本発明の実施形態では、プログラ
ムを構成する基本構成要素に対応する参照情報を作成
し、ダウンロードに先立って参照情報を元に参照が近接
している複数の構成要素とそれらに対応するプログラム
管理情報のエントリを1つの新規構成要素としてまとめ
る再構成をプログラムに対して適用するようにした。こ
の結果、プログラムをその記述言語やクラス構成に依存
することなく分割することを可能とし、また、プログラ
ムを分割ダウンロードして実行を行うシステムにおい
て、ダウンロードするプログラム量とダウンロード回数
の最適化を実現することができる。
【0145】[追補]以上、特定の実施形態を参照しな
がら、本発明について詳解してきた。しかしながら、本
発明の要旨を逸脱しない範囲で当業者が該実施形態の修
正や代用を成し得ることは自明である。すなわち、例示
という形態で本発明を開示してきたのであり、本明細書
の記載内容を限定的に解釈するべきではない。本発明の
要旨を判断するためには、冒頭に記載した特許請求の範
囲の欄を参酌すべきである。
【0146】
【発明の効果】以上詳記したように、本発明によれば、
命令や関数呼出しなどのシンボル、変数などの複数の基
本構成要素からなるプログラムの構造を最適化すること
ができる、優れたデータ処理システム及びデータ処理方
法、並びに記憶媒体を提供することができる。
【0147】また、本発明によれば、ダウンロードなど
所定の媒体を介してシステム間を移動するためにプログ
ラムの構造を最適化するとともに移動先のシステムにお
けるメモリの使用量の最適化を行うことができる、優れ
たデータ処理システム及びデータ処理方法、並びに記憶
媒体を提供することができる。
【0148】また、本発明によれば、特定の利用環境を
前提としないようにデータ分割を行うことにより、デー
タの移動に際しデータ転送量とデータ転送回数の最適化
を実現するようにプログラムを再構成することができ
る、優れたデータ処理システム及びデータ処理方法、並
びに記憶媒体を提供することができる。
【0149】本発明によれば、プログラムの各基本構成
要素毎の参照情報を基に新規構成要素を再構成させるこ
とで、プログラムの実行に必要な部分のみで新規構成要
素を作成することができ、この結果、ダウンロードする
プログラム量の最適化とダウンロード回数の最適化が可
能となりダウンロードの高速化を行うことが可能とな
る。
【0150】また、新規構成要素をプログラムの記述言
語やクラスに依存しない基本構成要素を使い構成するこ
とで、プログラムを分割ダウンロードして実行する、す
なわちデータのダウンロードとプログラムの実行の並列
化を好適に実現することができる。
【図面の簡単な説明】
【図1】本発明に係るデータ処理方法を適用することが
できるシステム全体の構成を模式的に示した図である。
【図2】プログラムの内部構成例を模式的に示した図で
ある。
【図3】本実施形態に係るプログラムの再構成手順を示
したフローチャートである。
【図4】再構成後のプログラムの構成を模式的に示した
図である。
【図5】クライアントの構成を示した図である。
【図6】サーバの構成を示した図である。
【図7】プログラム再構成のシナリオを示したシーケン
ス図である。
【図8】ダウンロード実行時のシナリオを示した図であ
る。
【符号の説明】
1…サーバ 1−3…Restructuror 1−4…WorkingSetMgr 2,3…クライアント 2−1…ExecSpace 2−2…DownLoader 4…ネットワーク

Claims (51)

    【特許請求の範囲】
  1. 【請求項1】複数の基本構成要素によって構成されるデ
    ータを処理するデータ処理システムであって、 データ利用時においてデータに含まれる各基本構成要素
    についての参照情報を生成する参照情報生成手段と、 該参照情報を基に各基本構成要素間の関連性を考慮し
    て、関連性のある複数の基本構成要素を1つの新規構成
    要素として生成して、データを新規構成要素の集合とし
    て再構成するデータ再構成手段と、を具備することを特
    徴とするデータ処理システム。
  2. 【請求項2】データはコンピュータ可読形式で記述され
    た命令列からなるプログラムである、ことを特徴とする
    請求項1に記載のデータ処理システム。
  3. 【請求項3】データは関数と変数などのシンボルであ
    る、ことを特徴とする請求項1に記載のデータ処理シス
    テム。
  4. 【請求項4】データはベーシック・ブロックである、こ
    とを特徴とする請求項1に記載のデータ処理システム。
  5. 【請求項5】データはプログラムの管理情報要素であ
    る。ことを特徴とする請求項1に記載のデータ処理シス
    テム。
  6. 【請求項6】参照情報はデータ毎に累積され一般化した
    情報である、ことを特徴とする請求項1に記載のデータ
    処理システム。
  7. 【請求項7】参照情報はデータ利用時において基本構成
    要素が最初に利用される時刻情報である、ことを特徴と
    する請求項1に記載のデータ処理システム。
  8. 【請求項8】参照情報はデータ利用時に基本構成要素が
    利用される頻度情報である、ことを特徴とする請求項1
    に記載のデータ処理システム。
  9. 【請求項9】参照情報は、基本構成要素が利用された装
    置に関する情報などを参照情報である、ことを特徴とす
    る請求項1に記載のデータ処理システム。
  10. 【請求項10】新規構成要素を単位として装置間でデー
    タの移動を行うデータ移動手段をさらに備える、ことを
    特徴とする請求項1に記載のデータ処理システム。
  11. 【請求項11】新規構成要素を単位として動的リンクを
    行う動的リンク手段をさらに備える、ことを特徴とする
    請求項1に記載のデータ処理システム。
  12. 【請求項12】前記参照情報生成手段は再構成されたデ
    ータを利用するデータ利用装置内に配置される、ことを
    特徴とする請求項1に記載のデータ処理システム。
  13. 【請求項13】前記参照情報生成手段は前記データ利用
    装置において参照情報の取得の指示が行われたことに応
    答して参照情報の取得を行う、ことを特徴とする請求項
    12に記載のデータ処理システム。
  14. 【請求項14】前記参照情報生成手段は自動的に参照情
    報の取得を行う、ことを特徴とする請求項12に記載の
    データ処理システム。
  15. 【請求項15】前記参照情報生成手段は常に参照情報の
    取得を行う、ことを特徴とする請求項12に記載のデー
    タ処理システム。
  16. 【請求項16】前記参照情報生成手段は再構成されたデ
    ータを利用するデータ利用装置以外に配置される、こと
    を特徴とする請求項1に記載のデータ処理システム。
  17. 【請求項17】前記参照情報生成手段は前記データ利用
    装置におけるデータ利用を模擬して参照情報の取得を行
    う、ことを特徴とする請求項16に記載のデータ処理シ
    ステム。
  18. 【請求項18】前記参照情報生成手段はデータを解析し
    て参照情報の取得を行う、ことを特徴とする請求項16
    に記載のデータ処理システム。
  19. 【請求項19】前記データ再構成手段はデータの移動に
    先立ってデータの再構成を行う、ことを特徴とする請求
    項1に記載のデータ処理システム。
  20. 【請求項20】前記データ再構成手段はデータの移動が
    完了した後にデータの再構成を行う、ことを特徴とする
    請求項1に記載のデータ処理システム。
  21. 【請求項21】前記データ再構成手段は参照情報を基に
    基本構成要素間の利用関係を定義して該定義を基に新規
    構成要素を生成する、ことを特徴とする請求項1に記載
    のデータ処理システム。
  22. 【請求項22】前記データ再構成手段は基本構成要素が
    利用される参照時刻から計算される参照間隔を利用関係
    として定義する、ことを特徴とする請求項21に記載の
    データ処理システム。
  23. 【請求項23】前記データ再構成手段は利用関係が特定
    の参照間隔閾値となる基本構成要素をまとめて1つの新
    規構成要素を生成する、ことを特徴とする請求項21に
    記載のデータ処理システム。
  24. 【請求項24】前記データ再構成手段はすべての又は特
    定の複数のデータの複数の利用関係から参照間隔閾値を
    決定する、ことを特徴とする請求項23に記載のデータ
    処理システム。
  25. 【請求項25】前記データ再構成手段は複数の参照情報
    から得られる参照間隔の平均値に標準偏差を加算した値
    を参照情報閾値として決定する、ことを特徴とする請求
    項25に記載のデータ処理システム。
  26. 【請求項26】複数の基本構成要素によって構成される
    データを処理するデータ処理方法であって、 データ利用時においてデータに含まれる各基本構成要素
    についての参照情報を生成する参照情報生成ステップ
    と、 該参照情報を基に各基本構成要素間の関連性を考慮し
    て、関連性のある複数の基本構成要素を1つの新規構成
    要素として生成して、データを新規構成要素の集合とし
    て再構成するデータ再構成ステップと、を具備すること
    を特徴とするデータ処理方法。
  27. 【請求項27】データはコンピュータ可読形式で記述さ
    れた命令列からなるプログラムである、ことを特徴とす
    る請求項26に記載のデータ処理方法。
  28. 【請求項28】データは関数と変数などのシンボルであ
    る、ことを特徴とする請求項26に記載のデータ処理方
    法。
  29. 【請求項29】データはベーシック・ブロックである、
    ことを特徴とする請求項26に記載のデータ処理方法。
  30. 【請求項30】データはプログラムの管理情報要素であ
    る。ことを特徴とする請求項26に記載のデータ処理方
    法。
  31. 【請求項31】参照情報はデータ毎に累積され一般化し
    た情報である、ことを特徴とする請求項26に記載のデ
    ータ処理方法。
  32. 【請求項32】参照情報はデータ利用時において基本構
    成要素が最初に利用される時刻情報である、ことを特徴
    とする請求項26に記載のデータ処理方法。
  33. 【請求項33】参照情報はデータ利用時に基本構成要素
    が利用される頻度情報である、ことを特徴とする請求項
    26に記載のデータ処理方法。
  34. 【請求項34】参照情報は、基本構成要素が利用された
    装置に関する情報などを参照情報である、ことを特徴と
    する請求項26に記載のデータ処理方法。
  35. 【請求項35】新規構成要素を単位として装置間でデー
    タの移動を行うデータ移動ステップをさらに備える、こ
    とを特徴とする請求項26に記載のデータ処理方法。
  36. 【請求項36】新規構成要素を単位として動的リンクを
    行う動的リンクステップをさらに備える、ことを特徴と
    する請求項26に記載のデータ処理方法。
  37. 【請求項37】前記参照情報生成ステップは再構成され
    たデータを利用するデータ利用装置内で実行される、こ
    とを特徴とする請求項26に記載のデータ処理方法。
  38. 【請求項38】前記参照情報生成ステップは前記データ
    利用装置において参照情報の取得の指示が行われたこと
    に応答して参照情報の取得を行う、ことを特徴とする請
    求項37に記載のデータ処理方法。
  39. 【請求項39】前記参照情報生成ステップは自動的に参
    照情報の取得を行う、ことを特徴とする請求項37に記
    載のデータ処理方法。
  40. 【請求項40】前記参照情報生成ステップは常に参照情
    報の取得を行う、ことを特徴とする請求項37に記載の
    データ処理方法。
  41. 【請求項41】前記参照情報生成ステップは再構成され
    たデータを利用するデータ利用装置以外で実行される、
    ことを特徴とする請求項26に記載のデータ処理方法。
  42. 【請求項42】前記参照情報生成ステップでは前記デー
    タ利用装置におけるデータ利用を模擬して参照情報の取
    得を行う、ことを特徴とする請求項41に記載のデータ
    処理方法。
  43. 【請求項43】前記参照情報生成ステップではデータを
    解析して参照情報の取得を行う、ことを特徴とする請求
    項41に記載のデータ処理方法。
  44. 【請求項44】前記データ再構成ステップはデータの移
    動に先立ってデータの再構成を行う、ことを特徴とする
    請求項26に記載のデータ処理方法。
  45. 【請求項45】前記データ再構成ステップはデータの移
    動が完了した後にデータの再構成を行う、ことを特徴と
    する請求項26に記載のデータ処理方法。
  46. 【請求項46】前記データ再構成ステップでは参照情報
    を基に基本構成要素間の利用関係を定義して該定義を基
    に新規構成要素を生成する、ことを特徴とする請求項2
    6に記載のデータ処理方法。
  47. 【請求項47】前記データ再構成ステップでは基本構成
    要素が利用される参照時刻から計算される参照間隔を利
    用関係として定義する、ことを特徴とする請求項46に
    記載のデータ処理方法。
  48. 【請求項48】前記データ再構成ステップでは利用関係
    が特定の参照間隔閾値となる基本構成要素をまとめて1
    つの新規構成要素を生成する、ことを特徴とする請求項
    46に記載のデータ処理方法。
  49. 【請求項49】前記データ再構成ステップではすべての
    又は特定の複数のデータの複数の利用関係から参照間隔
    閾値を決定する、ことを特徴とする請求項48に記載の
    データ処理方法。
  50. 【請求項50】前記データ再構成ステップでは複数の参
    照情報から得られる参照間隔の平均値に標準偏差を加算
    した値を参照情報閾値として決定する、ことを特徴とす
    る請求項26に記載のデータ処理方法。
  51. 【請求項51】複数の基本構成要素によって構成される
    データの処理をコンピュータ・システム上で実行するよ
    うに記述されたコンピュータ・ソフトウェアをコンピュ
    ータ可読形式で物理的に格納した記憶媒体であって、前
    記コンピュータ・ソフトウェアは、 データ利用時においてデータに含まれる各基本構成要素
    についての参照情報を生成する参照情報生成ステップ
    と、 該参照情報を基に各基本構成要素間の関連性を考慮し
    て、関連性のある複数の基本構成要素を1つの新規構成
    要素として生成して、データを新規構成要素の集合とし
    て再構成するデータ再構成ステップと、を具備すること
    を特徴とする記憶媒体。
JP2001331509A 2001-10-29 2001-10-29 データ処理システム及びデータ処理方法、並びに記憶媒体 Pending JP2003140912A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001331509A JP2003140912A (ja) 2001-10-29 2001-10-29 データ処理システム及びデータ処理方法、並びに記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001331509A JP2003140912A (ja) 2001-10-29 2001-10-29 データ処理システム及びデータ処理方法、並びに記憶媒体

Publications (2)

Publication Number Publication Date
JP2003140912A true JP2003140912A (ja) 2003-05-16
JP2003140912A5 JP2003140912A5 (ja) 2005-06-02

Family

ID=19147075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001331509A Pending JP2003140912A (ja) 2001-10-29 2001-10-29 データ処理システム及びデータ処理方法、並びに記憶媒体

Country Status (1)

Country Link
JP (1) JP2003140912A (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236998B2 (en) 2003-09-25 2007-06-26 International Business Machines Corporation System and method for solving a large system of dense linear equations
US7318218B2 (en) 2003-09-25 2008-01-08 International Business Machines Corporation System and method for processor thread for software debugging
US7389508B2 (en) 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7392511B2 (en) 2001-03-22 2008-06-24 International Business Machines Corporation Dynamically partitioning processing across plurality of heterogeneous processors
US7415703B2 (en) 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7444632B2 (en) 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7496917B2 (en) 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7549145B2 (en) 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7921151B2 (en) 2003-09-25 2011-04-05 International Business Machines Corporation Managing a plurality of processors as devices
JP2015158809A (ja) * 2014-02-24 2015-09-03 富士通株式会社 配信方法、配信装置、端末装置、及び配信システム
CN105308564A (zh) * 2013-06-20 2016-02-03 博世尼克资讯股份有限公司 下载程序的方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392511B2 (en) 2001-03-22 2008-06-24 International Business Machines Corporation Dynamically partitioning processing across plurality of heterogeneous processors
US8091078B2 (en) 2001-03-22 2012-01-03 International Business Machines Corporation Dynamically partitioning processing across a plurality of heterogeneous processors
US7694306B2 (en) 2003-09-25 2010-04-06 International Business Machines Corporation Balancing computational load across a plurality of processors
US7748006B2 (en) 2003-09-25 2010-06-29 International Business Machines Corporation Loading software on a plurality of processors
US7415703B2 (en) 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7444632B2 (en) 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7496917B2 (en) 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7549145B2 (en) 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7236998B2 (en) 2003-09-25 2007-06-26 International Business Machines Corporation System and method for solving a large system of dense linear equations
US7389508B2 (en) 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7921151B2 (en) 2003-09-25 2011-04-05 International Business Machines Corporation Managing a plurality of processors as devices
US7318218B2 (en) 2003-09-25 2008-01-08 International Business Machines Corporation System and method for processor thread for software debugging
US8219981B2 (en) 2003-09-25 2012-07-10 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US8549521B2 (en) 2003-09-25 2013-10-01 International Business Machines Corporation Virtual devices using a plurality of processors
CN105308564A (zh) * 2013-06-20 2016-02-03 博世尼克资讯股份有限公司 下载程序的方法
JP2016527607A (ja) * 2013-06-20 2016-09-08 博世尼克資訊股▲ふん▼有限公司 プログラムをダウンロードする方法
JP2015158809A (ja) * 2014-02-24 2015-09-03 富士通株式会社 配信方法、配信装置、端末装置、及び配信システム

Similar Documents

Publication Publication Date Title
Cheung et al. Automatic partitioning of database applications
Koshy et al. VMSTAR: synthesizing scalable runtime environments for sensor networks
Zhang et al. Refactoring android java code for on-demand computation offloading
Appavoo et al. Enabling autonomic behavior in systems software with hot swapping
Gay et al. Software design patterns for TinyOS
US6535903B2 (en) Method and apparatus for maintaining translated routine stack in a binary translation environment
Balani et al. Multi-level software reconfiguration for sensor networks
Radhakrishnan et al. An object-oriented time warp simulation kernel
JP2000029714A (ja) 分散システム中における実行用プログラムコンポ―ネントのパッケ―ジ方法、実行用プログラムコンポ―ネントのパッケ―ジプログラムを記憶したコンピュ―タ読み書き可能な記憶媒体及びコンピュ―タシステム
US10747638B2 (en) Computing memory health metrics
JP2003140912A (ja) データ処理システム及びデータ処理方法、並びに記憶媒体
Nozal et al. Load balancing in a heterogeneous world: CPU-Xeon Phi co-execution of data-parallel kernels
Zhang et al. Parallelizing the execution of sequential scripts
Breg et al. Java virtual machine support for object serialization
Ensink et al. Program control language: a programming language for adaptive distributed applications
Bartzas et al. Software metadata: Systematic characterization of the memory behaviour of dynamic applications
Livshits et al. Doloto: Code splitting for network-bound Web 2.0 applications
Aversa et al. Performance prediction through simulation of a hybrid MPI/OpenMP application
US10802836B2 (en) Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
Cabri et al. Enabling Java mobile computing on the IBM Jikes research virtual machine
Santos et al. Transaction policies for mobile networks
Quitadamo et al. Mobile JikesRVM: A framework to support transparent Java thread migration
Wirjawan et al. Balancing computation and code distribution costs: The case for hybrid execution in sensor networks
EP4083785B1 (en) Profiling and optimization of compiler-generated code
Gray et al. FPGA-based hardware acceleration for real-time big data systems

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040818

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071016

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080306

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080430