JP2004240802A - データ処理システム及びデータ処理方法、並びにコンピュータ・プログラム - Google Patents
データ処理システム及びデータ処理方法、並びにコンピュータ・プログラム Download PDFInfo
- Publication number
- JP2004240802A JP2004240802A JP2003030414A JP2003030414A JP2004240802A JP 2004240802 A JP2004240802 A JP 2004240802A JP 2003030414 A JP2003030414 A JP 2003030414A JP 2003030414 A JP2003030414 A JP 2003030414A JP 2004240802 A JP2004240802 A JP 2004240802A
- Authority
- JP
- Japan
- Prior art keywords
- program
- file
- data
- data group
- information
- 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
【課題】プログラム実行までのユーザ操作を簡単にし、データ転送量やデータ転送回数を最適にし、ファイルの一部にアクセスすることを可能にする。
【解決手段】プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成し、ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群並びにファイルの各データ群への参照に関するデータ群情報を作成する。クライアント側では、受信したデータ群情報及びデータ群に基づいてファイルを作成して、プログラム実行の各段階で参照することができる。
【選択図】 図3
【解決手段】プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成し、ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群並びにファイルの各データ群への参照に関するデータ群情報を作成する。クライアント側では、受信したデータ群情報及びデータ群に基づいてファイルを作成して、プログラム実行の各段階で参照することができる。
【選択図】 図3
Description
【0001】
【発明の属する技術分野】
本発明は、ネットワーク上でプログラムやデータをダウンロードしてインストールを行なうデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに係り、特に、プログラムによって参照されるファイルをプログラムとともにダウンロードしてプログラムを実行するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに関する。
【0002】
さらに詳しくは、本発明は、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに係り、特に、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに関する。
【0003】
【従来の技術】
いわゆるコンピュータ処理は、プロセッサ上で所定のプログラムを実行するという形式で実現される。通常、プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。昨今のネットワーク接続環境下では、サーバのプログラムを、ネットワークを通してクライアントで実行することがある。このようなプログラム実行形態として、以下に示す幾つかの方法が挙げられる。
【0004】
インストール方式:
プログラム並びにプログラムが必要とするデータ・ファイルなどをインストールするための「インストール・プログラム」を、クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行する。
【0005】
しかしながら、インストール方式による場合、ユーザがプログラムを実行するまでに行なう操作数が多くなり複雑である。また、実行までにかかる時間もその分長くなる。
【0006】
JARファイル方式:
JARファイルは、プログラムとプログラムに必要とされるデータ・ファイルを1つにまとめて圧縮がされているファイルである(JARファイルは、複数のJavaクラス・ファイル(Javaは登録商標)又はそれらを1つにまとめた、JavaAppletを構成するファイルである)。サーバ上のJARファイルをクライアント側にダウンロードし、JARファイルを展開し、プログラムを実行させる。JARファイルのダウンロードと、JARファイルの展開と、プログラムの実行に必要なユーザのステップ数は1つである。例えば、プログラムが起動までに使用するファイルを適切に選んで、それらのみをJARファイルに含めることにより起動時間の高速化を行なうことができる(例えば、特許文献1を参照のこと)。
【0007】
しかしながら、JARファイルにはプログラムが必要としないデータ・ファイルを含んでいたり、あるいは、必要なデータ・ファイルであっても、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していない。このため、データ・ファイル全体をJARファイルに含めることなり、ダウンロードの際には不必要なデータをダウンロードする分だけ余計に時間を要する。
【0008】
この問題を防ぐために、JARファイルの作成者/プログラム作成者は、JARファイルに必要とされないデータ・ファイルをJARファイルに含めないようにする必要がある。また、JARファイル作成時に実行までに必要なデータ・ファイルの選択する処理を行なったとしても(例えば、特許文献1を参照のこと)、必要なデータ・ファイルであっても、プログラムが必要とするデータはそのデータ・ファイルの一部であることがあり、ダウンロード量の最適化という面では問題があった。
【0009】
NFS( Network File System )方式:
NFSは、分散ファイル・システムの一種であり、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う仕組みを作成し、プログラムを実行する。これにより、ユーザは、リモート・コンピュータ上のファイルやディレクトリにアクセスし、それらのファイルやディレクトリをローカル・ファイルやローカル・ディレクトリと同様に扱うことができる。例えば、オペレーティング・システムのコマンドを使用して、リモート・ファイルやリモート・ディレクトリの作成、除去、読み取り、書き込み、ファイル属性の設定を行なうことができる。
【0010】
NFS方式の場合、ユーザがプログラムを実行するまでに行なうステップは1つで、プログラムが必要とするデータ・ファイル中の必要なデータのみを参照することができる。しかしながら、データ・ファイルを参照する度にNFSサーバに要求をするため、NFSサーバの応答速度が遅い場合にはプログラムの実行が遅くなる。また、この方式は、サーバへのアクセス数が多いため、LAN環境に比べてクライアント数が多いWAN環境には向いていない。
【0011】
また、上述した以外にも、ダウンロード処理の完了を待ってからインストールする必要があり、システムの処理速度が低下することから、データをその構成要素に分割して、データの利用に応じて適宜構成要素を単位として移動を行なうという方法がある。
【0012】
例えば、特定の利用環境を前提としないようにプログラム分割を行なうことにより、プログラムの移動に際しデータ転送量とデータ転送回数を最適化するという提案がなされている(例えば、非特許文献1を参照のこと)。
【0013】
この方法によれば、まず基本構成要素の集合として構成されるプログラムに関して基本構成要素毎の参照情報を得る。次に、1つ又は複数の参照情報と1つのデータを入力とし、参照情報を利用して関連する複数の基本構成要素を1つの新規構成要素として構成し、プログラムを新規構成要素の集合として再構成を行なう。参照情報は、データ毎に累積され一般化した情報であり、例えば、プログラム実行時において基本構成要素が最初に利用される時刻情報、プログラム実行時に基本構成要素が利用される頻度情報、基本構成要素が利用された装置に関する情報などである。そして、参照情報を基にして、プログラム実行の観点から参照が近接している基本構成要素の集合として新規構成要素を構成する。
【0014】
例えば、プログラムをサーバからクライアントへダウンロードして利用する際には、新規構成要素を単位としてダウンロードを行なう。したがって、たとえ同じクラス内のメソッドやデータであっても、互いの参照関係が近接していない場合には異なる新規構成要素として分割されるので、データ転送量を最適化することができる。また、たとえ異なるクラスに属するメソッドであっても、互いに近接して参照されているメソッドやデータは1つの新規構成要素として構成されるので、1回の転送で移動が行なえ、移動回数を最適化することができる。
【0015】
また、プログラムの実行と並行して、新規構成要素を単位としてダウンロードを行なうことができる。クライアント側では、幾つかの新規構成要素のみを移動すればデータの利用が可能となるので、データ移動の最適化が可能となる。
【0016】
しかしながら、この方法ではプログラムが実行中に参照するファイルについての記述がないので、この点に関してはプログラム起動までのデータ転送量とデータ転送回数の最適化が実現できているとは言い難い。
【0017】
【特許文献1】
特表2002−528791号
【非特許文献1】
特願2001−331509号
【0018】
【発明が解決しようとする課題】
本発明の目的は、プログラムによって参照されるファイルをプログラムとともにダウンロードしてプログラムを好適に実行することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【0019】
本発明のさらなる目的は、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【0020】
本発明のさらなる目的は、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【0021】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、プログラムによって参照される1以上のファイルを処理するデータ処理システムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成手段と、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成手段と、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成手段と、
を具備することを特徴とするデータ処理システムである。
【0022】
但し、ここで言う「システム」とは、複数の装置(又は特定の機能を実現する機能モジュール)が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【0023】
プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行するという方式では、ユーザがプログラムを実行するまでに行なう操作数が多く、実行までの所要時間も長い。また、プログラムとプログラムに必要とされるデータ・ファイルを1つにまとめて圧縮がされているファイルをダウンロードする方式では、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していないため、不必要なデータをダウンロードする分だけ非効率的である。また、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う方式は、クライアント数が多いネットワーク環境には向いていない。
【0024】
これに対し、本発明によれば、ファイル参照情報に基づいてファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するので、プログラムの起動後からプログラム実行の各段階毎に参照されるデータ群の順でクライアントに転送することができる。例えば、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送するようにすることで、クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、実行することができる。
【0025】
したがって、本発明によれば、ユーザがプログラムを実行するまでに行なう操作を簡単にし、ダウンロードするファイルのサイズを最適にし、サーバにアクセスする回数を最適にし、データ・ファイルの一部にアクセスすることを可能にすることができる。また、本発明によれば、プログラムによるファイル操作が行なわれても、データ転送量とデータ転送回数の最適化が実現できる方法を提供することができる。
【0026】
ここで、データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すための情報を含むものとする。
【0027】
また、ファイル参照情報は、参照されたファイルの属性情報/内部データに関する情報を含むものとする。ここで言う属性情報は、ファイル名、ファイル・サイズ、ファイルに関する時間(最終アクセス時間、内部データ更新時間、属性情報更新時間など)、グループ、オーナー、アクセス許可に関する属性のうち少なくとも1つを含むものである。また、内部データは、ファイル内部データの参照時間、参照位置、参照サイズ、参照方法(参照関数名)のうち少なくとも1つを含んでいる。
【0028】
また、ファイル参照情報は、非参照のファイルの属性情報についての記録も含んでいてもよいし、プログラムが使用するすべてのファイルの属性情報の記録を持っていてもよい。また、データ群情報のファイルの参照部分に関する情報は、ファイルの属性情報/内部データに関する情報を持っていてもよい。
【0029】
クライアント側では、受信したデータ群情報及びデータ群に基づいてファイルを作成して、プログラム実行の各段階で参照することができる。例えば、データ群情報を使用して、プログラム実行中に参照されるデータがクライアントにあるかどうかを判断することができる。そして、クライアントにないデータへの参照が発生した場合には、サーバにあるかどうかをさらに判断し、サーバにある場合にはデータ群情報に基づいて必要なデータ群をサーバへ要求するようにすればよい。
【0030】
また、本発明の第1の側面に係るデータ処理システムは、プログラムを構成要素毎に分割するプログラム分割手段を備え、プログラムの起動後実行される順にプログラムの構成要素及び該構成要素によって参照が開始されるデータ群を転送するようにすればよい。
【0031】
また、プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についての参照情報を生成し、該参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成することができる。
【0032】
このような場合、プログラムの起動後、実行される順に従って、各プログラム新規構成要素によって参照が開始されるデータ群並びにデータ群情報を再構成する必要がある。そして、サーバは、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送するようにすることで、データ転送量を最適化することができる。また、クライアント側では、プログラムの実行と並行して、プログラム新規構成要素と参照されるデータ群をダウンロードすることによって、ダウンロードを最適化することができる。
【0033】
また、本発明の第2の側面は、プログラムによって参照される1以上のファイルの処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成ステップと、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成ステップと、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成ステップと、
を具備することを特徴とするコンピュータ・プログラムである。
【0034】
本発明の第2の側面に係るコンピュータ・プログラムは、コンピュータ・システム上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本発明の第2の側面に係るコンピュータ・プログラムをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の第1の側面に係るデータ処理システムと同様の作用効果を得ることができる。
【0035】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【0036】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について詳解する。
【0037】
A.システム構成
図1には、本発明に係るデータ処理方法を適用することができるシステム全体の構成を模式的に示している。このシステムは、サーバ(Server)1と、クライアント(Client)2,3…が、ネットワーク(Network)4によって相互接続されることによって構成されている。
【0038】
サーバ1やクライアント2,3…は、例えば、ワークステーション(WS)やパーソナル・コンピュータ(PC)などの一般的なコンピュータ・システム上でそれぞれサーバ・ソフトウェアやクライアント・ソフトウェアを起動するという形態で実現される。この種のコンピュータは、中央コントローラとしてのCPU(Central Processing Unit)と、RAMやROMなどのメモリ装置、ハード・ディスクなどの外部記憶装置、ディスプレイやキーボード/マウスなどのユーザ・インターフェースを備え、オペレーティング・システムの制御下でプログラムの実行が行なわれる(後述)。
【0039】
サーバ1は、プログラム1や、プログラムが参照する1以上のデータ・ファイル1−1、1−2…などの複数のコンピュータ・ファイルを持つ。サーバ1とクライアント2、クライアント3は、LAN(Local Area Network)やインターネットなどのネットワーク4によって接続されている。クライアント2とクライアント3は、プログラム1−1又はプログラム1−2を実行する際には、サーバ1よりプログラムのダウンロードを行なうとともに、プログラムの実行するものとする。
【0040】
本実施形態では、ネットワーク4を介してサーバ1と各クライアント2,3が接続されているが、それ以外の媒体を利用した接続又は構成でもあってもよい。例えば、プログラム1−1,1−2がハード・ディスクやDVD(Digital Versatile Disc)などの2次記憶装置に格納され、クライアント2,3…と接続されているとしてもよい。そして、各クライアント2,3…はプログラムの実行に際して、それら2次記憶装置からプログラムを読み出してメモリ上にロードし実行をするものとしてもよい。
【0041】
図2には、図1に示したネットワーク・システムにおいて、サーバあるいはクライアントとして動作するホスト装置のハードウェア構成を模式的に示している。
【0042】
メイン・コントローラであるCPU(Central Processing Unit)101は、オペレーティング・システム(OS)の制御下で、各種のアプリケーションを実行する。本実施形態では、ホストが、サーバとして動作する場合には、CPU101は、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションを実行する。また、ホストがクライアント端末であれば、CPU101は、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションを実行する。
【0043】
図示の通り、CPU101は、バス108によって他の機器類(後述)と相互接続されている。
【0044】
主メモリ102は、CPU101において実行されるプログラム・コードをロードしたり、実行プログラムの作業データを一時保管したりするために使用される記憶装置であり、例えばDRAM(Dynamic RAM)のような半導体メモリが使用される。ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションが実行プログラムとして主メモリ102にロードされる。また、ホストがクライアント端末であれば、CPU101は、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションが実行プログラムとして主メモリ102にロードされる。
【0045】
また、ROM(Read Only Memory)103は、データを恒久的に格納する半導体メモリであり、例えば、起動時の自己診断テスト(POST:Power On Self Test)や、ハードウェア入出力用のプログラム・コード(BIOS:Basic Input/Output System)などが書き込まれている。
【0046】
ディスプレイ・コントローラ104は、CPU101が発行する描画命令を実際に処理するための専用コントローラである。ディスプレイ・コントローラ103において処理された描画データは、例えばフレーム・バッファ(図示しない)に一旦書き込まれた後、ディスプレイ111によって画面出力される。ディスプレイ111の表示画面は、一般に、操作可能ファイル形式に変換されたファイルの操作画面やファイル実行の処理結果、あるいはエラーその他のシステム・メッセージをユーザに視覚的にフィードバックする役割を持つ。
【0047】
入力機器インターフェース105は、キーボード112やマウス113、あるいはその他のユーザ入力機器を対話装置100に接続するための装置である。例えば、クライアント端末上で、ユーザは、キーボード112やマウス113を用いて、プログラムのダウンロード要求やその実行などの指示を行なうことができる。
【0048】
ネットワーク・インターフェース106は、Ethernet(登録商標)などの所定の通信プロトコルに従って、システム100をLAN(Local Area Network)などの局所的ネットワーク、さらにはインターネットのような広域ネットワークに接続することができる。
【0049】
ネットワーク上では、ファイルを要求するクライアントやファイルを提供するサーバなど、複数のホスト端末がトランスペアレントな状態で接続され、分散コンピューティング環境が構築されている。ネットワーク上では、ソフトウェア・プログラムやデータ・コンテンツなどの配信サービスを行なうことができる。
【0050】
例えば、ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションをネットワーク経由でダウンロードできる他、プログラムが参照する各ファイルについてのファイル参照情報やデータ群情報をネットワーク経由で移動することができる。また、ホストがクライアント端末であれば、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションをダウンロードすることができる。
【0051】
外部機器インターフェース107は、ハード・ディスク・ドライブ(HDD)114やメディア・ドライブ115などの外部装置をホスト100に接続するための装置である。
【0052】
HDD114は、記憶担体としての磁気ディスクを固定的に搭載した外部記憶装置であり(周知)、記憶容量やデータ転送速度などの点で他の外部記憶装置よりも優れている。ソフトウェア・プログラムを実行可能な状態でHDD114上に置くことを、プログラムのシステムへの「インストール」と呼ぶ。通常、HDD114には、CPU101が実行すべきオペレーティング・システムのプログラム・コードや、アプリケーション・プログラム、デバイス・ドライバなどが不揮発的に格納されている。
【0053】
例えば、ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションをHDD114上にインストールすることができる。また、サーバは、プログラムを再構成して得られるプログラム新規構成要素、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどをHDD14上に蓄積することができる。また、ホストがクライアントとして動作する場合には、サーバからのプログラムや参照ファイルのダウンロード、プログラム構成要素のサーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションなどを、HDD114上にインストールすることができる。また、クライアントは、サーバから受信したプログラム新規構成要素や、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどをHDD14上に蓄積することができる。
【0054】
メディア・ドライブ115は、CD(Compact Disc)やMO(Magneto−Opticaldisc)、DVD(Digital Versatile Disc)などの可搬型メディアを装填して、そのデータ記録面にアクセスするための装置である。
【0055】
可搬型メディアは、主として、ソフトウェア・プログラムやデータ・ファイルなどをコンピュータ可読形式のデータとしてバックアップすることや、これらをシステム間で移動(すなわち販売・流通・配布を含む)する目的で使用される。例えば、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションや、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションなどを、これら可搬型メディアを利用して複数の機器間で物理的に流通・配布することができる。勿論、関連性のある複数のプログラム基本構成要素から生成されるプログラム新規構成要素や、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどを、可搬型メディアを介してホスト装置間で移動することもできる。
【0056】
B.第1の実施形態
本発明に係るネットワーク・システムでは、サーバのプログラムを、ネットワークを通してクライアントで実行する。
【0057】
プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行するという方式では、ユーザがプログラムを実行するまでに行なう操作数が多く、実行までの所要時間も長い。また、プログラムとプログラムに必要とされるデータ・ファイルを1つにまとめて圧縮がされているファイルをダウンロードする方式では、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していないため、不必要なデータをダウンロードする分だけ非効率的である。また、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う方式は、クライアント数が多いネットワーク環境には向いていない。
【0058】
これに対し、本発明によれば、プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成し、このファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するとともに、ファイルの各データ群への参照に関するデータ群情報を作成する。そして、プログラムの起動後、ファイル参照情報並びにデータ群情報に基づいて、プログラム実行の各段階毎に参照されるデータ群の順でクライアントに転送することができる。
【0059】
例えば、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送するようにすることで、クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、実行することができる。この結果、実行中のプログラムによってファイル操作が行なわれても、データ転送量とデータ転送回数の最適化を実現することができる。
【0060】
図3には、本実施形態に係るネットワーク・システムにおいて、プログラムとプログラムによって参照される1以上のファイルを、サーバからクライアントに転送する仕組みを図解している。また、図4には、プログラムが参照するデータ・ファイルからデータ転送の単位となるデータ群を作成するための仕組みを図解している。
【0061】
同図に示す例では、クライアントから要求されるプログラムは、その実行中にデータ・ファイル1、データ・ファイル2、並びに、データ・ファイル3という3つのファイルを参照する。但し、データ・ファイル1はサイズが5120バイト、データ・ファイル2はサイズが1024バイト、データ・ファイル3はサイズが2048バイトであるとする。プログラムが参照するファイルは、プログラムの設計者やそのインストーラの作成者が、プログラムが必要とするデータ・ファイルの属性情報としてあらかじめ記述されているものとする。
【0062】
サーバ側では、まず、このプログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成する。ファイル参照情報は、参照されたファイルの属性情報/内部データに関する情報を含んでいる。ここで言う属性情報は、ファイル名、ファイル・サイズ、ファイルに関する時間(最終アクセス時間、内部データ更新時間、属性情報更新時間など)、グループ、オーナー、アクセス許可に関する属性のうち少なくとも1つを含んでいる。また、内部データは、ファイル内部データの参照時間、参照位置、参照サイズ、参照方法(参照関数名)のうち少なくとも1つを含んでいる。
【0063】
ファイル参照情報は、非参照のファイルの属性情報についての記録も含んでいてもよい。また、ファイル参照情報は、プログラムが使用するすべてのファイルの属性情報についての記録を持っていてもよい。
【0064】
図3に示す例では、ファイル参照情報は、各ファイルについてのプログラムによる参照位置と参照サイズ(すなわち参照範囲)を記述している。例えば、データ・ファイル1に関しては、参照位置と参照サイズが(0,1024)、(2048,512)、…がプログラムからの参照範囲である。同様に、データ・ファイル2に関しては、参照位置と参照サイズが(512,256)、…がプログラムからの参照範囲である。
【0065】
このようなファイル参照情報は、プログラム作成者やインストーラ作成者が任意に作成してもよいが、自動で生成するツールを使用してもよい。例えば、プログラムの実行時に関数や変数がどのような頻度でアクセスされるか、あるいは、どのような時刻又は時間間隔でアクセスされるかなどの、プログラム実行時の特性に関する情報を得る「トレース処理」を行なうことによって、ファイル参照情報を生成することができる。
【0066】
例えば、プログラム開発プラットフォームとして当業界で周知のオペレーティング・システム“linux”などでは、システム・コールをトレースする機能である“strace”コマンドが用意されている。このコマンドを使用することにより、open,close,read,write,lseekなどの各ファイル操作に関するトレース情報を作成することができる。例えば、プロンプト画面で、
【0067】
#strace −tt −e open,close,read,write,lseek ./a.out
【0068】
と入力することによって(但し、“−tt”は時間をトレース情報に含めるオプションであり、“−e”は指定システム・コールをトレース情報に含めるオプションであり、“. /a.out”はプログラムである)、以下に示すようなトレース情報を取り出すことができる。
【0069】
12:39:00.548284 open(”data1”, O_RDONLY) = 3
12:39:00.548384 lseek(3, 10, SEEK_SET) = 10
12:39:00.548435 read(3, ”abcdefghijklmnopqrstu”..., 256) = 256
12:39:00.548519 close(3) = 0
【0070】
次いで、サーバは、このファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成する。1つのデータ群は、プログラムの同じ実行段階で参照される各ファイルの参照データ部分で構成される。
【0071】
また、サーバは、ファイルの各データ群への参照に関するデータ群情報を作成する。データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すための情報を含んでいる。また、データ群情報のファイルの参照部分に関する情報は、ファイルの属性情報/内部データに関する情報を持っていてもよい。
【0072】
図5には、データ群、並びにデータ群情報の一例を示している。データ群は、プログラムが参照ファイルから参照される範囲を取り出したデータである。また、データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すことのできる情報で構成される。ファイルの参照部分に関する情報は、該当するファイル名と、ファイル内での参照位置の、参照されるデータのサイズで構成される。
【0073】
図3に示す例では、プログラム起動後、最初の段階で参照されるデータ群をデータ群1とし、次の段階で参照されるデータ群をデータ群2としている。図示の例では、データ・ファイル1〜3中でプログラムから参照されるデータは、これら2つのデータ群1〜2に集められる。勿論、参照されるデータの総量並びに単位当たりのデータ転送量などに応じて、3以上のデータ群を作成するようにしてもよい。
【0074】
1つのデータ群は、プログラムの同じ実行段階で参照される各ファイルの参照データで構成される。データ群情報は、データ群内で参照データ位置(データ群内データ位置)毎に、ファイルの参照部分に関する情報とその情報からデータ群内のデータを取り出すための情報を記述したレコードを用意する。
【0075】
図3に示す例では、データ群情報の各レコードは、該当するデータ位置を含んでいるファイルのファイル名、ファイル・サイズ、データ群内データ位置、参照位置、参照サイズなどを書き込むフィールドを備えている。データ群1は、3箇所のデータ群内データ位置1〜3を含んでいるので、そのデータ群情報1は3つのレコードで構成される。例えば、最初のレコードは、データ群内データ位置1が、データ・ファイル1、そのファイル・サイズが5120、参照位置が0、参照サイズが1024であることを記述している。同様に、データ群2は5箇所のデータ群内データ位置1〜5を含んでいるので、そのデータ群情報2は5つのレコードで構成される。
【0076】
図3に示す実施形態では、プログラムの起動後、ファイル参照情報並びにデータ群情報に基づいて、プログラム実行の各段階毎に参照されるデータ群の順で、サーバからクライアントへプログラムの参照データが転送される。
【0077】
図示の例では、サーバは、プログラム・ダウンロードの最初の段階で、プログラム本体と、プログラム起動時に参照が開始されるデータ群1とすべてのデータ群情報(すなわち、データ群情報1及びデータ群情報2)を、クライアントへ転送する。
【0078】
そして、プログラム・ダウンロードの次の段階として、サーバは、プログラム実行の次の段階で参照が開始されるデータ群すなわちデータ群2をクライアントへ転送する。
【0079】
クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、データ群情報に基づいてデータ・ファイルを作成し、これを参照(すなわちファイル操作)しながらプログラムを実行することができる。図6には、データ群1及びデータ群2から作成されたデータを示している。
【0080】
最初に転送されるプログラム本体、データ群情報、及びデータ群1の総サイズと、次段階で転送されるデータ群2のサイズは、データ転送量とデータ転送回数を考慮して最適化される。
【0081】
C.第2の実施形態
上述した本発明の第1の実施形態では、プログラムの起動後から各実行段階において、各データ・ファイルがプログラムによって参照される位置及びサイズに応じて、ファイルを分割して転送することにより、データ・ファイルの転送におけるデータ転送量とデータ転送回数を最適化するものである。
【0082】
これに対し、プログラムを再構成して、分割転送するという手法もある。すなわち、プログラムを構成要素毎に分割し、プログラムの起動後実行される順にプログラムの構成要素を順次転送していくことによって、データ転送量とデータ転送回数を最適化することができる。
【0083】
このようなプログラム構成要素毎の分割転送を、上述したプログラム参照ファイルの分割転送と組み合わせることによって、データ転送量とデータ転送回数をさらに最適化することができる。
【0084】
サーバは、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送するようにすることで、データ転送量を最適化することができる。
【0085】
また、クライアント側では、プログラムの実行と並行して、プログラム新規構成要素と参照されるデータ群をダウンロードすることによって、ダウンロードを最適化することができる。
【0086】
図7には、本実施形態において、サーバ上のプログラムをネットワークを通してクライアント側で実行するための全体フローを示している。
【0087】
まず、ステップS1では、プログラムの再構成を行なう。プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、このプログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムをプログラム新規構成要素の集合として再構成することができる(後述)。
【0088】
このようなプログラム構成要素毎の分割転送を、上述したプログラム参照ファイルの分割転送と組み合わせることによって、データ転送量とデータ転送回数をさらに最適化することができる。但し、この場合、プログラム新規構成要素の編成に伴い、データ群並びに各データ群への参照に関するデータ群情報を再構成する必要がある(ステップS2)。
【0089】
データ群並びにデータ群情報を作成するために、まず、ファイル参照情報を作成する(ステップS2−1)。
【0090】
ファイル参照情報は、参照されたファイルの属性情報/内部データに関する情報であり、図3に示した例では、各ファイルについてのプログラムによる参照位置と参照サイズで構成される。本実施形態では、ファイル参照情報は各ファイルについてのファイル操作情報を記述したテーブルとして構成されるものとする(後述)。
【0091】
次いで、ファイル参照情報から、各ファイルに対して各プログラム新規構成要素が行なうファイル操作情報を記述した「新規構成要素ファイル操作情報」を作成する(ステップS2−2)。
【0092】
次いで、プログラムから参照される各ファイルをブロックに分割し、各ブロックに対して各プログラム新規構成要素によって有効なファイル操作が行なわれたかどうかを記述した参照データ確認テーブルを作成する(ステップS2−3)。
【0093】
次いで、この参照データ確認テーブルを利用して、プログラム新規構成要素から有効な操作が行なわれたブロックのデータを該当するファイルのブロックからコピーして、各プログラム新規構成要素についての参照データ・ファイルを作成する(ステップS2−4)。この参照データ・ファイルは、プログラム新規構成要素についてのデータ群に相当する。
【0094】
次いで、参照データ・ファイルへ参照するための参照データ・ファイル・リストを各新規構成要素毎に作成する(ステップS2−5)。
【0095】
次いで、プログラムとその参照ファイルのクライアントへの転送が行なわれる(ステップS3)。
【0096】
本実施形態では、それぞれのプログラム新規構成要素に対し、関連する1以上の参照データ・ファイルを含める(アーカイブする)(ステップS3−1)。最初にダウンロードされるプログラム新規構成要素を含むアーカイブ・ファイルには、すべてのプログラム新規構成要素に関する参照データ・ファイル・リストが付加される。2回目以降にダウンロードされるプログラム新規構成要素のアーカイブ・ファイルには、関連する参照データ・ファイルのみが付加される。
【0097】
次いで、起動からの新規構成要素必要時間に従って、各プログラム新規構成要素のアーカイブ・ファイルを順次クライアントへ転送する(ステップS3−2)。
【0098】
そして、クライアント側では、受信したアーカイブ・ファイルを展開し、参照データ・ファイル・リストを利用してデータ・ファイルを作成する。そして、プログラムを起動して実行するとともに、その実行の各段階において、オープンやリード、ライト、クローズなどのデータ・ファイルの操作を行なう(ステップS3)。
【0099】
C−1.プログラムの再構成
プログラムの再構成を行なう。プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、このプログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムをプログラム新規構成要素の集合として再構成することができる。
【0100】
図8には、本実施形態において再構成の対象となるプログラムの内部構成例を模式的に示している。ここでは、プログラムの例として、マインスイーパー・ゲーム・プログラムである”kmines”プログラム(kmines:the KDE minesweeper;Copyright(C)1996−97−98−99 Nicolas HADACEK)を用いている。但し、図示のkminesプログラムは、米インテル社の80386アーキテクチャのELFフォーマットで作成されるものとする。
【0101】
同図に示すように、プログラムの構成はテキスト(text)、データ(data)、ヘッダ(header)の3つに大きく分類できる。このうちテキストはプログラムの命令列であり、図8に示す例ではテキスト5−3で示されている。プログラムの命令列は、関数を単位として、テキストを構成している。本実施形態では、関数を、テキストを構成する基本構成要素として扱う。図8には、kminesを構成する関数を1部示している。
【0102】
データは、プログラムにより参照される変数や定数のことであり、図8ではデータ5−4で示されている。ここでは、変数や定数は実際のダウンロードが必要なものに限定される。つまり、プログラムの実行時にスタック上やヒープ領域に動的に配置される変数や定数はプログラムより参照はされるが、ダウンロードを行なう必要はないので、データ5−4から除外される。また、静的に配置される変数や定数であっても、その初期値が0などの特定値である場合には、プログラム実行開始前に実行環境によって配置と初期化を行うことが可能であるので、ダウンロードを行なう必要がない。したがって、このような変数や定数もデータ5−4から除外される。データ5−4は、以上を除く変数や定数に分割することができる。本実施形態では、これら変数と定数を、データを構成する基本構成要素として扱う。図8では、例としてkminesを構成する関数を1部示している。以降、本明細書中では、関数と変数、定数を総称して「シンボル」と呼ぶ。
【0103】
ヘッダは、プログラム管理データであり、図8ではヘッダ5−5として示されている。ここで、プログラム管理データとは、プログラムの実行によって直接参照されることはないが、その実行を実現するために実行環境によって参照されるデータ構造のことである。
【0104】
図示のように、プログラム管理データは、さらに複数の管理データにより構成される。ELFフォーマットの場合多くの管理データを持つが、本明細書では簡便のため、再配置テーブルであるrelocation5−6と動的シンボル・テーブルであるdynsym5−7の2つより構成されるものとする。
【0105】
再配置テーブル5−6は、命令列やデータのどの部分が実行環境で決定されるアドレスを参照するかとその参照の解決方法を示しており、実行環境はこれを利用して決定したアドレスをプログラム・コードやデータに適用する。また、動的シンボル・テーブルはシンボル参照のアドレス解決を行なうために利用される。これら2つの管理データは、テーブル形式で構成されるため、複数のエントリから構成されている。再配置テーブルは複数の再配置エントリから構成され、動的シンボル・テーブルはシンボル・エントリにより構成される。
【0106】
本実施形態では、再配置エントリとシンボル・エントリをそれぞれ再配置テーブル5−6と動的シンボル・テーブル5−7の基本構成要素として扱っている。プログラム管理領域中の管理領域の種類によっては、その大きさが十分に小さいものである場合や、基本構成要素への分割が困難である場合がある。そのような場合には、それらを1つの基本構成要素として扱う。
【0107】
図8に示す例では、再配置テーブルRelocation5−6の最初のエントリrel_Kmines::Kmines(Qwidget*,char const*)が、関数Kmines::Kmines(Qwidget*,char const*)への参照を行なう命令列又はデータの位置と参照の解決方法が記述されているエントリであることを示している。また、動的シンボル・テーブルdynsym5−7の最初のエントリsym_mainは、関数mainのアドレスを決める情報が記述されているエントリであることを示している。実際のkminesとは異なるが、図8ではプログラムの実行がmainから始まるものとし、mainを直接参照する命令列又はデータがkminesプログラム内にないものとし、このためrel_mainが存在しないようになっている。
【0108】
次いで、プログラムの再構成手順について説明する。
【0109】
まず、プログラムの再構成に必要となる参照情報について説明する。以下の表1には本実施形態で使用する参照情報を示している。
【0110】
【表1】
【0111】
上表に示す参照情報は、kminesプログラムを米インテル社のプロセッサCeleron466MHz上で実行したときの値を示している。なお、説明の簡素化のため、kminesが使用する動的ライブラリやkmines内部の定数については省略している。
【0112】
表1に示した参照情報の各エントリは、IndexとSymbolとTimestampで構成される。Indexは、各エントリを区別するために説明の便宜上あるもので、実際には必要ではない。
【0113】
Symbolはシンボルを識別するために使用される。表1では分かり易さのため文字列で示しているが、実際にはシンボルを識別するIDや動的ライブラリを区別するIDが使用される。このため、表1では同じシンボル名のエントリが存在するが、それらはファイル・スコープの異なる変数であり実際にはIDによって区別することができる。
【0114】
また、Timestampはシンボルがプログラムの実行時に最初に参照された時刻を示している。プログラムの実行時に1度も参照されなかったシンボルは参照情報に現れない。Timestampを最初にそのシンボルが参照された時刻とするのは、最初の参照でそのシンボルのダウンロードが必要となるためである。それ以後の参照では、既にダウンロードは完了しているため、それらの参照情報は必要としない。表1では、kminesが起動するまでのエントリをその参照順、つまりTimestamp順で示している。
【0115】
このような参照情報は、プログラムの実行時に関数や変数がどのような頻度でアクセスされるか、あるいは、どのような時刻又は時間間隔でアクセスされるかなどの、プログラム実行時の特性に関する情報を得る「トレース処理」を行なうことによって生成することができる。トレースを実現する手法としては、プログラムの実行情報を得るためにプログラム・コードに情報取得を行なうコードの追加を行うCode Insertion方式や、プログラムの実行からは透過的に実行環境によって定期的にプログラムの実行を中断してその時点のプログラムのコンテキスト情報からプログラムの実行情報の収集を行なうSampling方式を挙げることができる。
【0116】
次いで、プログラムの再構成手順について、図9に示すフローチャートを参照しながら説明する。但し、再構成の前提として、参照情報生成手段により、再構成対象のプログラムを構成するモジュールについての上記の表1に示すような参照情報が与えられているものとする。
【0117】
まず、Timestampをキーとして参照情報のエントリを参照時刻順にソートする(ステップS11)。
【0118】
次いで、1つ前のエントリのTimestampとの差分をとることで各シンボル間の参照時間間隔を計算する(ステップS12)。
【0119】
次いで、得られた参照時間間隔を入力としてシステムが管理する参照時間間隔分布データを更新する(ステップS13)。
【0120】
ここで、参照時間間隔分布データとは、ある参照時間間隔が発生した回数をその参照時間間隔毎に累計したものである。この累計はプログラム毎に累計を行なう方法や、プログラムを区別せずにすべてのプログラムに対して累計を行なう方法がある。本実施形態では、プログラムを区別せずにすべてのプログラムに対して累計を行なうものとする。また、本実施形態においての参照時間間隔分布データの更新では、参照時間間隔の回数が加算された後に、参照時間間隔の期待値と標準偏差の値が再計算される。参照時間間隔が短い基本構成要素はプログラム実行時に連続的に呼び出される可能性が高く、逆に、参照時間間隔が長い基本構成要素の間には、プログラム実行時に、ユーザ入力待ちやディスク・アクセスなどが含まれているなど関連性が低いと思料される。
【0121】
次いで、更新された期待値と標準偏差の値を加算して閾値とする(ステップS14)。
【0122】
次いで、参照時刻順にソートされた参照情報を、前のステップで計算した閾値を用いて分割し、プログラムの新規構成要素すなわちワーキング・セット(working set)を定義する。分割には、1つ前のエントリとの差分である参照時間間隔が閾値以上である部分で分割を行なう方法と、ワーキング・セット定義を開始したエントリの参照時刻からの差分が閾値以上である部分で分割を行なう方法がある。どちらの方法も、閾値未満の参照間隔である複数のシンボルを1つのワーキング・セットとして定義とする(ステップS15)。
【0123】
参照が発生しないシンボルはプログラムの構造解析により幾つかのワーキング・セットとして定義することが可能であるが、本実施形態では簡便のためにまとめて1つのワーキング・セットを定義とする(ステップS16)。
【0124】
このようにして得られたワーキング・セットの定義に従いプログラムのテキストとデータをワーキング・セットとして分割する(ステップS17)。このとき、参照が発生しなかったシンボルから構成されるワーキング・セットには、プログラムの起動前にダウンロードを行なう必要があることを示すpreloadのマークを付ける。
【0125】
そして、再配置テーブルを構成する再配置エントリと動的シンボル・テーブルを構成するシンボル・エントリのうちワーキング・セット定義に含まれるシンボルに対応するエントリを該当するワーキング・セットに追加していく(ステップS18)。
【0126】
より具体的には、再配置エントリは命令列データのどの部分が実行環境で決定されるアドレスを参照するかを示しているため、シンボルと対応付けが可能である。また、一般的なトレーサは、ヘッダに対して参照時刻をとることができないので、ヘッダをワーキング・セット定義に従って分割することはできない。そこで、対応するシンボルが属するワーキング・セットに再配置エントリを入れることで再配置テーブルを分割するようにする。
【0127】
同様に、シンボル・エントリも対応するシンボルが存在するため、対応するシンボルが属するワーキング・セットにシンボル・エントリを入れることで動的シンボル・テーブルを分割するようにする。
【0128】
ここで、図8及び表1に示したプログラムを例にとって、上述のプログラム再構成の手順について説明する。表1は、最初の参照時刻順すなわちTimestampの順序に従って既に並べ替えられている。
【0129】
システムが管理する参照時間間隔分布データにより、過去参照数25,212回のデータの参照時間間隔の期待値が0.00611950077371、そのときの標準偏差が0.17955970122955であったとすると、閾値は0.18567920200326が得られる。この閾値を利用して参照時間間隔が閾値以上である部分で分割を行なうと、表1のIndex0−6,Index7−32,Index33−54,Index55−57,Index58の5つに分割することができる。ここでは、これらをそれぞれワーキング・セットとして定義する。
【0130】
表1に示した参照情報の例では、KMinesの起動までの部分しかないために、プログラム全体を分割することはできないが、参照情報をプログラムのさまざまな実行に対して得ることで、実際にはプログラム全体の分割が可能となる。
【0131】
次いで、得られたワーキング・セットに対応する再配置テーブルのエントリと動的シンボル・テーブルのエントリを対応する各ワーキング・セット定義に追加を行う。例えば、関数mainがQArrayT〈char〉virtual tableとQString virtual tableを参照するのであれば、rel_QArrayT〈char〉virtual tableとrel_ QString virtual tableがmainの属するワーキング・セット定義に追加される。また、sym_mainもmainの属するワーキング・セット定義に追加される。
【0132】
以上の手順により、図8に示したKMinesの1部は、図8に示すような複数のワーキング・セットすなわちプログラム新規構成要素に再構成される。それぞれのワーキング・セット内ではプログラム実行時に連続的に参照される可能性が高く、これに対し、ワーキング・セット間ではユーザ入力待ちやディスク・アクセスが存在するなどの原因で参照時刻に隔たりがある、ということを充分理解されたい。
【0133】
図9に示したような手順でプログラムの再構成を行なうことにより、短時間内に参照が発生したシンボルのみを集めて各ワーキング・セットを構成することができる。また、再配置エントリやシンボル・エントリなどのプログラム管理データもシンボルに対応して分割することにより、実行環境がワーキング・セットをプログラムに対して利用可能にするために必要となる部分のみをダウンロードすることができる。
【0134】
C−2.新規構成要素ファイル操作情報の作成
この項では、プログラムの再構成処理により、ある参照時間間隔閾値を用いて4つのプログラム新規構成要素に分割されているプログラムを例にとって、ファイル参照情報の最構成について説明する。但し、これらプログラム新規構成要素の起動からの参照時間はそれぞれ以下に示す通りであるとする。
【0135】
プログラム新規構成要素1:0〜5
プログラム新規構成要素2:10〜15
プログラム新規構成要素3:20〜25
プログラム新規構成要素4:参照情報に登録なし
【0136】
これは、プログラムの起動からの各プログラム新規構成要素が必要となるまでの経過時間である「新規構成要素必要時間」を指しており、上記の例では、それぞれのプログラム新規構成要素についての必要時間が以下であることを表わしている。
【0137】
プログラム新規構成要素1:起動から0秒までに必要
プログラム新規構成要素2:起動から10秒までに必要
プログラム新規構成要素3:起動から20秒までに必要
プログラム新規構成要素4:起動から25秒以降に必要
【0138】
プログラムによるファイル中の各データへの参照を記録したファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群が作成される。
【0139】
本実施形態では、ファイル参照情報から、各ファイルに対して各プログラム新規構成要素が行なうファイル操作情報を記述した「新規構成要素ファイル操作情報」を作成する。ファイル参照情報は、以下の表2に示す通り、各ファイルについてのファイル操作情報を記述したテーブルとして構成される。
【0140】
【表2】
【0141】
但し、ここで言うファイル操作情報は、呼び出し時間、シーク位置、アクセス・サイズ、呼び出し種別の組み合わせで構成される。呼び出し時間はプログラム開始からの時間のことを指す。シーク位置は、リード/ライトの操作のとき意味を持ち、リード/ライトを呼び出した時点の値を指す。アクセス・サイズは、リード/ライトの操作のとき意味を持ち、リードであれば、実際に読み込んだサイズを、ライトであれば実際に書き込んだサイズを指す。呼び出し種別は、例えばオープン/クローズ/リード/ライトのいずれかである。
【0142】
本実施形態では、以下に示す処理手順に従って、ファイル参照情報から新規構成要素ファイル操作情報を作成する。
【0143】
(1)ファイル参照情報のファイル名に対し、複数のファイル操作情報を呼び出し時間でソートする。
【0144】
(2)ファイル操作情報の呼び出し時間とそれぞれのプログラム新規構成要素の起動からの必要時間とを比較する。そして、ファイル操作情報の呼び出し時間よりも起動からの新規構成要素必要時間が短いものの中で最も該必要時間が最も長いものを、このファイル操作情報に対応するプログラム新規構成要素として選択する。この結果、1つの新規構成要素に対し1以上のファイル参照情報が選ばれる。
【0145】
(3)すべてのファイル操作情報に対して、上記の処理(2)を実行する。
【0146】
(4)すべてのファイル参照情報のすべてのファイル名に対し、上記の処理(1)及び(3)を実行し、新規構成要素ファイル操作情報を作成する。
【0147】
以下の表3には、新規構成要素ファイル操作情報の構成例を示している。同表に示す例では、各ファイル名についてのファイル操作情報がプログラム新規構成要素毎に仕分けされている。すなわち、新規構成要素ファイル操作情報を参照することにより、各プログラム新規構成要素が書くファイル名に対して行なったファイル操作を早見することができる。
【0148】
【表3】
【0149】
また、図10には、ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順をフローチャートの形式で示している。
【0150】
まず、ファイル参照情報を参照し、1つのファイル名についてのレコードを取り出し(ステップS21)、すべてのファイル名に対して以下の処理を繰り返し実行する(ステップS22)。
【0151】
取り出したレコードに含まれるファイル操作情報を呼び出し時間でソートする(ステップS23)。
【0152】
次いで、ファイル操作情報の呼び出し時間とそれぞれのプログラム新規構成要素の起動からの必要時間とを比較して、該当するプログラム新規構成要素を選択する(ステップS24)。
【0153】
そして、レコードに含まれるすべてのファイル操作情報についてプログラム新規構成要素の選択処理を繰り返し実行する(ステップS25)。
【0154】
すべてのファイル操作情報について処理を終えると、ステップS21に戻り、次のファイル名のレコードを取り出し、同様の処理を繰り返し実行する。
【0155】
C−3.参照データ確認テーブルの作成
新規構成要素ファイル操作情報が作成されると、これを利用して、プログラムから参照される各ファイルをブロックに分割し、各ブロックに対して各プログラム新規構成要素によって有効なファイル操作が行なわれたかどうかを記述した参照データ確認テーブルを作成する。
【0156】
本実施形態では、以下に示す処理手順に従って、参照データ確認テーブルを作成する。
【0157】
(1)新規構成要素ファイル操作情報にある各ファイル名に対する新規構成要素の参照データ確認テーブルを作成する。このテーブルはファイルのサイズを数バイトのブロックに区切り、有効、無効の印を付けることのできるテーブルである。参照データ確認テーブルの初期値は無効である。
【0158】
(2)作成されたテーブルに有効の印を付ける。ブロック有効、無効の判断は、ファイルのサイズを超えるかどうかで判断される。ファイルのサイズは、プログラムが初めて動作する時に参照するファイル・サイズである。
【0159】
ファイル操作情報の呼び出し種別がリードの場合、シーク位置とアクセス・サイズからブロックを得る。ファイル・サイズを超えるような場所へのアクセスはブロック無効である。ブロックが無効でなければ、ブロックに有効を付ける。
【0160】
また、ファイル操作情報の呼び出し種別がライトの場合、シーク位置とアクセス・サイズからブロックを得る。ファイル・サイズを超えるような場所へのアクセスはブロック無効である。ブロックが無効でなければ、ブロックに有効を付ける。
【0161】
(3)上述した処理(2)をすべてのファイル操作情報について実行する。
【0162】
(4)上述した処理(1)及び(3)をファイル名に対するすべてのプログラム新規構成要素に対して実行する。
【0163】
(5)上述した処理(4)を新規構成要素ファイル操作情報に登録されているすべてのファイル名に対して実行する。
【0164】
図11には、参照データ確認テーブルの作成例を示している。同図に示す例では、処理対象となるデータ・ファイルは、所定サイズのブロック(ア)〜(オ)の5ブロックに分割されているので、5つのカラムを持つ参照データ確認テーブルが用意される。各カラムの初期値は無効である。そして、ファイル操作情報を解析することにより、有効なアクセスが行なわれていることが判明したブロック(ア)、(イ)、並びに(エ)に有効の印が付けられている。
【0165】
また、図12には、ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順をフローチャートの形式で示している。
【0166】
新規構成要素ファイル操作情報を参照して、未処理のファイル名があれば(ステップS31)、以下の処理を実行する。
【0167】
まず、新規構成要素ファイル操作情報のファイル名と新規構成要素から、参照データ確認テーブルを作成する(ステップS32)。そして、新規構成要素ファイル操作情報にあるすべてのファイル名に対して、同様の処理を繰り返し行なう(ステップS33)。
【0168】
次いで、ファイル操作情報を得る(ステップS34)。ファイル操作情報の呼び出し種別がリードの場合には(ステップS35)、アクセスするブロック位置を得て(ステップS36)、ブロックが無効でないかどうかを判断する(ステップS37)。そして、無効でない場合には、参照データ確認テーブルの該当ブロック位置に有効を記す(ステップS38)。その後、ステップS34に戻り、次のファイル操作情報について同様の処理を実行する。
【0169】
また、ファイル操作情報の呼び出し種別がリードの場合には(ステップS39)、アクセスするブロック位置を得て(ステップS40)、ブロックが無効でないかどうかを判断する(ステップS41)。そして、無効でない場合には、参照データ確認テーブルの該当ブロック位置に有効を記す(ステップS42)。その後、ステップS34に戻り、次のファイル操作情報について同様の処理を実行する。
【0170】
参照データ確認テーブルは、各ファイル名について、ファイル操作を行なうプログラム新規構成要素毎に作成される。以下の表4には、参照データ確認テーブルと関連するファイル名並びに関連するプログラム新規構成要素の早見表を示している。
【0171】
【表4】
【0172】
C−4.参照データ・ファイルの作成
次いで、この参照データ確認テーブルを利用して、プログラム新規構成要素から有効な操作が行なわれたブロックのデータを該当するファイルのブロックからコピーして、各プログラム新規構成要素についての参照データ・ファイルを作成する。この参照データ・ファイルは、プログラム新規構成要素についてのデータ群に相当する。
【0173】
また、参照データ・ファイルへ参照するための参照データ・ファイル・リストを各プログラム新規構成要素毎に作成する。参照データ・ファイル・リストは、プログラム新規構成要素についてのデータ群情報に相当する。
【0174】
本実施形態では、以下に示す処理手順に従って、参照データ・ファイル並びに参照データ・ファイル・リストを作成する。
【0175】
(1)参照データ確認テーブルにおいて有効なブロックのデータを、参照データ確認テーブルに関連するデータ・ファイルの該当ブロックから参照データ・ファイルにコピーする。参照データ・ファイルの名前はユニークな名前で作成する。
【0176】
図11に示した例では、参照データ確認テーブルのブロック(ア)、(イ)、並びに(エ)に有効の印が付けられているので、参照データ確認テーブルに関連するデータ・ファイルの該当ブロックからデータがコピーされて、参照データ・ファイルが作成される(図13を参照のこと)。
【0177】
(2)プログラム新規構成要素毎に、参照データ・ファイルを参照するための参照データ・ファイル・リストのファイルを作成する。この参照データ・ファイル・リストは、参照データ・ファイル名、データ・ファイル名、データ・ファイル・サイズ、並びに有効ブロック位置(番号)を記録する。データ・ファイル・サイズから全ブロックが幾つかは分る。
【0178】
図14には、参照データ・ファイル・リストの構成例を示している。参照データ・ファイルは、プログラム新規構成要素が参照する各データ・ファイル毎に作成される。参照データ・ファイル・リストは、データ群としての参照データ・ファイルについての参照データ・ファイル名、元のデータ・ファイル名、データ・ファイル・サイズ、並びに有効ブロック番号をファイル形式で保持している。プログラムがファイルを参照するときには、参照データ・ファイル・リストを利用して、該当する参照データ・ファイルを探索することができる。
【0179】
(3)上述した(1)及び(2)の処理をすべての参照データ確認テーブルに対して実行する。
【0180】
なお、ファイルの参照はあるが無効なブロックを含むファイルと、参照がないファイルは、いつ参照されるか分らない新規構成要素に対して行なわれる。本実施形態では、新規構成要素4がこれに該当する。
【0181】
(1)ファイルの参照はあるが無効なブロックを含むファイル
すべての参照データ確認テーブルを確認し、無効のブロックがあるファイルは、無効ブロックを参照データ・ファイルにコピーする。参照データ・ファイル・リストファイルに、参照データ・ファイル名、ファイル名、データ・ファイル・サイズ、無効ブロック位置(コピーされたブロック位置の意味)を記録する。
【0182】
(2)参照がないファイル
参照がないファイルはすべてのブロックが無効であると考え、上述した(1)の操作を行なう。参照がないファイルは、ファイル参照情報にファイル名がなく、プログラムが必要とするデータ・ファイルの属性情報にファイル名があるファイルとして得ることができる。
【0183】
C−5.アーカイブ・ファイルの作成
本実施形態では、ファイル内のデータの一部をプログラム新規構成要素に含めるという手法が採られる。すなわち、プログラム構成要素、データ群としての複数の参照データ・ファイル、データ群情報としての参照データ・ファイル・リスト・ファイルをアーカイブすることにより、1つにまとめる。
【0184】
最初にダウンロードされるプログラム新規構成要素を含むアーカイブ・ファイルには、すべてのプログラム新規構成要素に関する参照データ・ファイル・リストが付加される。図15には、最初にダウンロードされるアーカイブ・ファイルを作成する様子を示している。同図に示すように、プログラムの起動直後に実行されるプログラム新規構成要素と、このプログラム新規構成要素によって参照される参照データ・ファイルと、すべての参照データ・ファイルについての参照データ・ファイル・リスト・ファイルがアーカイブされ、単一のファイルが作成される。
【0185】
また、2回目以降にダウンロードされるプログラム新規構成要素のアーカイブ・ファイルには、関連する参照データ・ファイルのみが付加される。図16には、2回目以降にダウンロードされるアーカイブ・ファイルを作成する様子を示している。同図に示すように、プログラムの起動後の各段階に実行されるプログラム新規構成要素と、このプログラム新規構成要素によって参照される参照データ・ファイルがアーカイブされ、単一のファイルが作成される。
【0186】
C−6.アーカイブ・ファイルの移動
本実施形態では、サーバからクライアントへのプログラム及びその参照ファイルの移動処理は、アーカイブ・ファイル毎に行なわれる。
【0187】
アーカイブ・ファイルの移動処理は、クライアント側に配置されたアーカイブ処理装置により以下に示す処理手順に従って実行される。図17には、アーカイブ・ファイルを移動するための処理手順をフローチャートの形式で示している。
【0188】
(1)アーカイブ処理装置は、プログラム新規構成要素を要求する(ステップS51)。プログラム新規構成要素はアーカイブ・ファイルと透過的に扱われ、実際にロードされるファイルはアーカイブ・ファイルである。
【0189】
(2)アーカイブ処理装置は、アーカイブ・ファイルを受信し、これを展開処理する(ステップS52)。アーカイブ・ファイルには、プログラム新規構成要素と、参照データ・ファイルが含まれている。最初にダウンロードされたアーカイブ・ファイルの場合には、複数の参照データ・ファイル・リスト・ファイルが含まれている(図15を参照のこと)。
【0190】
(3)アーカイブ処理装置は、初回にダウンロードしたプログラム新規構成要素に対する参照データ・ファイル・リスト・ファイルと、参照データ・ファイルを使用して、データ・ファイルをクライアント上に作成する(ステップS53)。
【0191】
▲1▼参照データ・ファイル・リスト・ファイルに記述されているデータ・ファイルを、記述されているデータ・ファイル・サイズで作成する。データ・ファイルが既に存在している場合には、作成しない。
▲2▼参照データ・ファイルから、関連する参照データ・ファイル・リスト・ファイルで作成されたデータ・ファイルに、有効ブロックをコピーする。但し、コピーしようとしたブロックが既に有効であった場合はコピーを行なわない(この現象は、プログラム起動までの動作が起動毎に異なる場合でないと起きない)。
▲3▼クライアントのファイルシステムに、有効なブロックのリストを渡す。
▲4▼上述した▲1▼〜▲3▼の処理を、参照データ・ファイル・リスト上のすべてのファイルに対して実行する。
【0192】
(4)プログラム新規構成要素をクライアントに渡す(ステップS54)。
【0193】
C−7.ファイル操作
クライアント側では、プログラムを起動し、データ群情報に基づいてデータ・ファイルを作成しこれを参照しながらプログラムを実行することができる。この項では、プログラム実行時に行なわれるファイル操作について説明する。
【0194】
ファイル・オープン:
ファイルのオープン(open)操作は、以下に示す処理手順に従って行なわれる。図18には、ファイルのオープン操作の処理手順をフローチャートの形式で示している。
【0195】
(1)プログラムは、ファイルのオープンを呼び出す。
【0196】
(2)ファイル・オープン要求に応答して、ファイルシステムは、まず、クライアント・ローカルでファイルの存在を調べる(ステップS61)。
【0197】
ここで、該当するファイルが既にローカル・ファイルとして存在する場合には、通常通りのオープン操作を実行し、指定ファイル(ディスクリプタ)をプログラムに返して(ステップS62)、本処理ルーチン全体を終了する。
【0198】
一方、要求されたファイルがローカル・ファイルとして存在しない場合には、ファイルシステムは、アーカイブ処理装置(前述)に対して、指定ファイルを要求する(ステップS63)。
【0199】
アーカイブ処理装置は、参照データ・ファイル・リスト(図14を参照のこと)を参照して、指定ファイルが存在するかどうかを調べる(ステップS64)。
【0200】
指定ファイルが存在する場合には、アーカイブ処理装置は、サーバに対して、指定ファイルを含んだアーカイブ・ファイルを要求する(ステップS65)。
【0201】
そして、サーバ側からアーカイブ・ファイルを受信したならば(ステップS66)、指定ファイルを作成し、これをファイルシステムに通知する(ステップS67)。ファイルシステムは、通常通りのオープン操作を実行し、ディスクリプタをプログラムに返して(ステップS62)、本処理ルーチン全体を終了する。
【0202】
一方、指定ファイルが存在しない場合には、アーカイブ処理装置はファイルシステムにその旨を通知し(ステップS68)、本処理ルーチン全体を終了する。
【0203】
ファイル・リード:
ファイルのリード(read)操作は、以下に示す処理手順に従って行なわれる。図19には、ファイルのリード操作の処理手順をフローチャートの形式で示している。
【0204】
(1)プログラムは、ファイルのリードを呼び出す。
【0205】
(2)ファイルのリード要求に応答して、ファイルシステムは、まず、指定ファイルが無効ブロックを含むかどうかを調べる(ステップS71)。
【0206】
ここで、指定ファイル(ディスクリプタ)が無効ブロックを含んでいる場合には、リード要求されたブロック位置が有効かどうかをさらに調べる(ステップS72)。
【0207】
そして、リード要求されたブロック位置が有効ブロックである場合には、ファイルシステムは、通常のリード処理を行なって(ステップS73)、本処理ルーチン全体を終了する。
【0208】
一方、リード要求されたブロック位置が無効ブロックである場合には、ファイルシステムは、指定ファイルのリード位置が有効であるブロックを含むアーカイブ・ファイルをアーカイブ処理装置に要求する(ステップS74)。
【0209】
アーカイブ処理装置は、サーバに対してアーカイブ・ファイルを要求し、サーバ側からアーカイブ・ファイルを受信したならば(ステップS75)、指定ファイルを作成し、これをファイルシステムに通知する(ステップS76)。ファイルシステムは、通常のリード処理を行なって(ステップS73)、本処理ルーチン全体を終了する。
【0210】
また、指定ファイルが無効ブロックを含んでいない場合には(ステップS71)、ファイルシステムは、通常のリード処理を行なって(ステップS73)、本処理ルーチン全体を終了する。
【0211】
ファイル・ライト:
ファイルのライト(write)操作は、以下に示す処理手順に従って行なわれる。図20には、ファイルのライト操作の処理手順をフローチャートの形式で示している。
【0212】
(1)プログラムは、ファイルのライトを呼び出す。
【0213】
(2)ファイルのライト要求に応答して、ファイルシステムは、まず、指定ファイルが無効ブロックを含むかどうかを調べる(ステップS81)。
【0214】
ここで、指定ファイル(ディスクリプタ)が無効ブロックを含んでいる場合には、ライト要求されたブロック位置が有効かどうか、並びにファイル・サイズを超えるような処理であるかどうかをさらに調べる(ステップS82)。
【0215】
ライト要求がファイル・サイズを超えるような処理である場合には、ファイルシステムは通常のライト処理を行なって(ステップS83)、本処理ルーチン全体を終了する。
【0216】
また、ライト要求されているブロック位置が有効ブロックである場合には、ファイルシステムは通常のライト処理を行なって(ステップS83)、本処理ルーチン全体を終了する。
【0217】
一方、ライト要求されているブロック位置が無効ブロックである場合には、ファイルシステムは、指定ファイルのライト位置が有効であるブロックを含むアーカイブ・ファイルをアーカイブ処理装置に要求する(ステップS84)。
【0218】
アーカイブ処理装置は、サーバに対してアーカイブ・ファイルを要求し、サーバ側からアーカイブ・ファイルを受信したならば(ステップS85)、指定ファイルを作成し、これをファイルシステムに通知する(ステップS86)。ファイルシステムは、通常のライト処理を行なって(ステップS83)、本処理ルーチン全体を終了する。
【0219】
また、指定ファイルが無効ブロックを含んでいない場合には(ステップS81)、ファイルシステムは、通常のライト処理を行なって(ステップS83)、本処理ルーチン全体を終了する。
【0220】
なお、ファイルのクローズ(close)処理は、プログラムからのファイルのクローズ呼び出しに応答して、ファイルシステムが通常のクローズ処理を行なう。
【0221】
[追補]
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0222】
【発明の効果】
以上詳記したように、本発明によれば、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することができる。
【0223】
また、本発明によれば、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することができる。
【0224】
本発明によれば、ユーザがプログラムを実行するまでに行なう操作を簡単にし、ダウンロードするファイルのサイズを最適にし、サーバにアクセスする回数を最適にし、データ・ファイルの一部にアクセスすることを可能にすることができる。また、本発明によれば、プログラムによるファイル操作が行なわれても、データ転送量とデータ転送回数の最適化が実現できる方法を提供することができる。
【図面の簡単な説明】
【図1】本発明に係るデータ処理方法を適用することができるシステム全体の構成を模式的に示した図である。
【図2】サーバあるいはクライアントとして動作するホスト装置のハードウェア構成を模式的に示した図である。
【図3】プログラムとプログラムによって参照される1以上のファイルを、サーバからクライアントに転送する仕組みを説明するための図である。
【図4】プログラムが参照するデータ・ファイルからデータ転送の単位となるデータ群を作成するための仕組みを示した図である。
【図5】データ群、並びにデータ群情報の一例を示した図である。
【図6】データ群1及びデータ群2から作成されたデータを示した図である。
【図7】サーバ上のプログラムをネットワークを通してクライアント側で実行するための全体フローを示した図である。
【図8】再構成の対象となるプログラムの内部構成例を模式的に示した図である。
【図9】プログラムの再構成手順を示したフローチャートである。
【図10】ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順を示したフローチャートである。
【図11】参照データ確認テーブルの作成例を示した図である。
【図12】ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順を示したフローチャートである。
【図13】参照データ確認テーブルを利用して参照データ・ファイルを作成する様子を示した図である。
【図14】参照データ・ファイル・リストの構成例を示した図である。
【図15】最初にダウンロードされるアーカイブ・ファイルを作成する仕組みを説明するための図である。
【図16】2回目以降にダウンロードされるアーカイブ・ファイルを作成する仕組みを説明するための図である。
【図17】アーカイブ・ファイルを移動するための処理手順を示したフローチャートである。
【図18】ファイルのオープン操作の処理手順を示したフローチャートである。
【図19】ファイルのリード操作の処理手順を示したフローチャートである。
【図20】ファイルのライト操作の処理手順を示したフローチャートである。
【符号の説明】
100…ホスト
101…CPU,
102…主メモリ,103…ROM
104…ディスプレイ・コントローラ
105…入力機器インターフェース
106…ネットワーク・インターフェース
107…外部機器インターフェース
108…バス
111…ディスプレイ
112…キーボード,113…マウス
114…ハード・ディスク装置
115…メディア・ドライブ
【発明の属する技術分野】
本発明は、ネットワーク上でプログラムやデータをダウンロードしてインストールを行なうデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに係り、特に、プログラムによって参照されるファイルをプログラムとともにダウンロードしてプログラムを実行するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに関する。
【0002】
さらに詳しくは、本発明は、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに係り、特に、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化するデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムに関する。
【0003】
【従来の技術】
いわゆるコンピュータ処理は、プロセッサ上で所定のプログラムを実行するという形式で実現される。通常、プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。昨今のネットワーク接続環境下では、サーバのプログラムを、ネットワークを通してクライアントで実行することがある。このようなプログラム実行形態として、以下に示す幾つかの方法が挙げられる。
【0004】
インストール方式:
プログラム並びにプログラムが必要とするデータ・ファイルなどをインストールするための「インストール・プログラム」を、クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行する。
【0005】
しかしながら、インストール方式による場合、ユーザがプログラムを実行するまでに行なう操作数が多くなり複雑である。また、実行までにかかる時間もその分長くなる。
【0006】
JARファイル方式:
JARファイルは、プログラムとプログラムに必要とされるデータ・ファイルを1つにまとめて圧縮がされているファイルである(JARファイルは、複数のJavaクラス・ファイル(Javaは登録商標)又はそれらを1つにまとめた、JavaAppletを構成するファイルである)。サーバ上のJARファイルをクライアント側にダウンロードし、JARファイルを展開し、プログラムを実行させる。JARファイルのダウンロードと、JARファイルの展開と、プログラムの実行に必要なユーザのステップ数は1つである。例えば、プログラムが起動までに使用するファイルを適切に選んで、それらのみをJARファイルに含めることにより起動時間の高速化を行なうことができる(例えば、特許文献1を参照のこと)。
【0007】
しかしながら、JARファイルにはプログラムが必要としないデータ・ファイルを含んでいたり、あるいは、必要なデータ・ファイルであっても、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していない。このため、データ・ファイル全体をJARファイルに含めることなり、ダウンロードの際には不必要なデータをダウンロードする分だけ余計に時間を要する。
【0008】
この問題を防ぐために、JARファイルの作成者/プログラム作成者は、JARファイルに必要とされないデータ・ファイルをJARファイルに含めないようにする必要がある。また、JARファイル作成時に実行までに必要なデータ・ファイルの選択する処理を行なったとしても(例えば、特許文献1を参照のこと)、必要なデータ・ファイルであっても、プログラムが必要とするデータはそのデータ・ファイルの一部であることがあり、ダウンロード量の最適化という面では問題があった。
【0009】
NFS( Network File System )方式:
NFSは、分散ファイル・システムの一種であり、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う仕組みを作成し、プログラムを実行する。これにより、ユーザは、リモート・コンピュータ上のファイルやディレクトリにアクセスし、それらのファイルやディレクトリをローカル・ファイルやローカル・ディレクトリと同様に扱うことができる。例えば、オペレーティング・システムのコマンドを使用して、リモート・ファイルやリモート・ディレクトリの作成、除去、読み取り、書き込み、ファイル属性の設定を行なうことができる。
【0010】
NFS方式の場合、ユーザがプログラムを実行するまでに行なうステップは1つで、プログラムが必要とするデータ・ファイル中の必要なデータのみを参照することができる。しかしながら、データ・ファイルを参照する度にNFSサーバに要求をするため、NFSサーバの応答速度が遅い場合にはプログラムの実行が遅くなる。また、この方式は、サーバへのアクセス数が多いため、LAN環境に比べてクライアント数が多いWAN環境には向いていない。
【0011】
また、上述した以外にも、ダウンロード処理の完了を待ってからインストールする必要があり、システムの処理速度が低下することから、データをその構成要素に分割して、データの利用に応じて適宜構成要素を単位として移動を行なうという方法がある。
【0012】
例えば、特定の利用環境を前提としないようにプログラム分割を行なうことにより、プログラムの移動に際しデータ転送量とデータ転送回数を最適化するという提案がなされている(例えば、非特許文献1を参照のこと)。
【0013】
この方法によれば、まず基本構成要素の集合として構成されるプログラムに関して基本構成要素毎の参照情報を得る。次に、1つ又は複数の参照情報と1つのデータを入力とし、参照情報を利用して関連する複数の基本構成要素を1つの新規構成要素として構成し、プログラムを新規構成要素の集合として再構成を行なう。参照情報は、データ毎に累積され一般化した情報であり、例えば、プログラム実行時において基本構成要素が最初に利用される時刻情報、プログラム実行時に基本構成要素が利用される頻度情報、基本構成要素が利用された装置に関する情報などである。そして、参照情報を基にして、プログラム実行の観点から参照が近接している基本構成要素の集合として新規構成要素を構成する。
【0014】
例えば、プログラムをサーバからクライアントへダウンロードして利用する際には、新規構成要素を単位としてダウンロードを行なう。したがって、たとえ同じクラス内のメソッドやデータであっても、互いの参照関係が近接していない場合には異なる新規構成要素として分割されるので、データ転送量を最適化することができる。また、たとえ異なるクラスに属するメソッドであっても、互いに近接して参照されているメソッドやデータは1つの新規構成要素として構成されるので、1回の転送で移動が行なえ、移動回数を最適化することができる。
【0015】
また、プログラムの実行と並行して、新規構成要素を単位としてダウンロードを行なうことができる。クライアント側では、幾つかの新規構成要素のみを移動すればデータの利用が可能となるので、データ移動の最適化が可能となる。
【0016】
しかしながら、この方法ではプログラムが実行中に参照するファイルについての記述がないので、この点に関してはプログラム起動までのデータ転送量とデータ転送回数の最適化が実現できているとは言い難い。
【0017】
【特許文献1】
特表2002−528791号
【非特許文献1】
特願2001−331509号
【0018】
【発明が解決しようとする課題】
本発明の目的は、プログラムによって参照されるファイルをプログラムとともにダウンロードしてプログラムを好適に実行することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【0019】
本発明のさらなる目的は、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【0020】
本発明のさらなる目的は、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することにある。
【0021】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、プログラムによって参照される1以上のファイルを処理するデータ処理システムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成手段と、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成手段と、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成手段と、
を具備することを特徴とするデータ処理システムである。
【0022】
但し、ここで言う「システム」とは、複数の装置(又は特定の機能を実現する機能モジュール)が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【0023】
プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行するという方式では、ユーザがプログラムを実行するまでに行なう操作数が多く、実行までの所要時間も長い。また、プログラムとプログラムに必要とされるデータ・ファイルを1つにまとめて圧縮がされているファイルをダウンロードする方式では、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していないため、不必要なデータをダウンロードする分だけ非効率的である。また、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う方式は、クライアント数が多いネットワーク環境には向いていない。
【0024】
これに対し、本発明によれば、ファイル参照情報に基づいてファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するので、プログラムの起動後からプログラム実行の各段階毎に参照されるデータ群の順でクライアントに転送することができる。例えば、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送するようにすることで、クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、実行することができる。
【0025】
したがって、本発明によれば、ユーザがプログラムを実行するまでに行なう操作を簡単にし、ダウンロードするファイルのサイズを最適にし、サーバにアクセスする回数を最適にし、データ・ファイルの一部にアクセスすることを可能にすることができる。また、本発明によれば、プログラムによるファイル操作が行なわれても、データ転送量とデータ転送回数の最適化が実現できる方法を提供することができる。
【0026】
ここで、データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すための情報を含むものとする。
【0027】
また、ファイル参照情報は、参照されたファイルの属性情報/内部データに関する情報を含むものとする。ここで言う属性情報は、ファイル名、ファイル・サイズ、ファイルに関する時間(最終アクセス時間、内部データ更新時間、属性情報更新時間など)、グループ、オーナー、アクセス許可に関する属性のうち少なくとも1つを含むものである。また、内部データは、ファイル内部データの参照時間、参照位置、参照サイズ、参照方法(参照関数名)のうち少なくとも1つを含んでいる。
【0028】
また、ファイル参照情報は、非参照のファイルの属性情報についての記録も含んでいてもよいし、プログラムが使用するすべてのファイルの属性情報の記録を持っていてもよい。また、データ群情報のファイルの参照部分に関する情報は、ファイルの属性情報/内部データに関する情報を持っていてもよい。
【0029】
クライアント側では、受信したデータ群情報及びデータ群に基づいてファイルを作成して、プログラム実行の各段階で参照することができる。例えば、データ群情報を使用して、プログラム実行中に参照されるデータがクライアントにあるかどうかを判断することができる。そして、クライアントにないデータへの参照が発生した場合には、サーバにあるかどうかをさらに判断し、サーバにある場合にはデータ群情報に基づいて必要なデータ群をサーバへ要求するようにすればよい。
【0030】
また、本発明の第1の側面に係るデータ処理システムは、プログラムを構成要素毎に分割するプログラム分割手段を備え、プログラムの起動後実行される順にプログラムの構成要素及び該構成要素によって参照が開始されるデータ群を転送するようにすればよい。
【0031】
また、プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についての参照情報を生成し、該参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成することができる。
【0032】
このような場合、プログラムの起動後、実行される順に従って、各プログラム新規構成要素によって参照が開始されるデータ群並びにデータ群情報を再構成する必要がある。そして、サーバは、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送するようにすることで、データ転送量を最適化することができる。また、クライアント側では、プログラムの実行と並行して、プログラム新規構成要素と参照されるデータ群をダウンロードすることによって、ダウンロードを最適化することができる。
【0033】
また、本発明の第2の側面は、プログラムによって参照される1以上のファイルの処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成ステップと、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成ステップと、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成ステップと、
を具備することを特徴とするコンピュータ・プログラムである。
【0034】
本発明の第2の側面に係るコンピュータ・プログラムは、コンピュータ・システム上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本発明の第2の側面に係るコンピュータ・プログラムをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の第1の側面に係るデータ処理システムと同様の作用効果を得ることができる。
【0035】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【0036】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について詳解する。
【0037】
A.システム構成
図1には、本発明に係るデータ処理方法を適用することができるシステム全体の構成を模式的に示している。このシステムは、サーバ(Server)1と、クライアント(Client)2,3…が、ネットワーク(Network)4によって相互接続されることによって構成されている。
【0038】
サーバ1やクライアント2,3…は、例えば、ワークステーション(WS)やパーソナル・コンピュータ(PC)などの一般的なコンピュータ・システム上でそれぞれサーバ・ソフトウェアやクライアント・ソフトウェアを起動するという形態で実現される。この種のコンピュータは、中央コントローラとしてのCPU(Central Processing Unit)と、RAMやROMなどのメモリ装置、ハード・ディスクなどの外部記憶装置、ディスプレイやキーボード/マウスなどのユーザ・インターフェースを備え、オペレーティング・システムの制御下でプログラムの実行が行なわれる(後述)。
【0039】
サーバ1は、プログラム1や、プログラムが参照する1以上のデータ・ファイル1−1、1−2…などの複数のコンピュータ・ファイルを持つ。サーバ1とクライアント2、クライアント3は、LAN(Local Area Network)やインターネットなどのネットワーク4によって接続されている。クライアント2とクライアント3は、プログラム1−1又はプログラム1−2を実行する際には、サーバ1よりプログラムのダウンロードを行なうとともに、プログラムの実行するものとする。
【0040】
本実施形態では、ネットワーク4を介してサーバ1と各クライアント2,3が接続されているが、それ以外の媒体を利用した接続又は構成でもあってもよい。例えば、プログラム1−1,1−2がハード・ディスクやDVD(Digital Versatile Disc)などの2次記憶装置に格納され、クライアント2,3…と接続されているとしてもよい。そして、各クライアント2,3…はプログラムの実行に際して、それら2次記憶装置からプログラムを読み出してメモリ上にロードし実行をするものとしてもよい。
【0041】
図2には、図1に示したネットワーク・システムにおいて、サーバあるいはクライアントとして動作するホスト装置のハードウェア構成を模式的に示している。
【0042】
メイン・コントローラであるCPU(Central Processing Unit)101は、オペレーティング・システム(OS)の制御下で、各種のアプリケーションを実行する。本実施形態では、ホストが、サーバとして動作する場合には、CPU101は、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションを実行する。また、ホストがクライアント端末であれば、CPU101は、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションを実行する。
【0043】
図示の通り、CPU101は、バス108によって他の機器類(後述)と相互接続されている。
【0044】
主メモリ102は、CPU101において実行されるプログラム・コードをロードしたり、実行プログラムの作業データを一時保管したりするために使用される記憶装置であり、例えばDRAM(Dynamic RAM)のような半導体メモリが使用される。ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションが実行プログラムとして主メモリ102にロードされる。また、ホストがクライアント端末であれば、CPU101は、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションが実行プログラムとして主メモリ102にロードされる。
【0045】
また、ROM(Read Only Memory)103は、データを恒久的に格納する半導体メモリであり、例えば、起動時の自己診断テスト(POST:Power On Self Test)や、ハードウェア入出力用のプログラム・コード(BIOS:Basic Input/Output System)などが書き込まれている。
【0046】
ディスプレイ・コントローラ104は、CPU101が発行する描画命令を実際に処理するための専用コントローラである。ディスプレイ・コントローラ103において処理された描画データは、例えばフレーム・バッファ(図示しない)に一旦書き込まれた後、ディスプレイ111によって画面出力される。ディスプレイ111の表示画面は、一般に、操作可能ファイル形式に変換されたファイルの操作画面やファイル実行の処理結果、あるいはエラーその他のシステム・メッセージをユーザに視覚的にフィードバックする役割を持つ。
【0047】
入力機器インターフェース105は、キーボード112やマウス113、あるいはその他のユーザ入力機器を対話装置100に接続するための装置である。例えば、クライアント端末上で、ユーザは、キーボード112やマウス113を用いて、プログラムのダウンロード要求やその実行などの指示を行なうことができる。
【0048】
ネットワーク・インターフェース106は、Ethernet(登録商標)などの所定の通信プロトコルに従って、システム100をLAN(Local Area Network)などの局所的ネットワーク、さらにはインターネットのような広域ネットワークに接続することができる。
【0049】
ネットワーク上では、ファイルを要求するクライアントやファイルを提供するサーバなど、複数のホスト端末がトランスペアレントな状態で接続され、分散コンピューティング環境が構築されている。ネットワーク上では、ソフトウェア・プログラムやデータ・コンテンツなどの配信サービスを行なうことができる。
【0050】
例えば、ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションをネットワーク経由でダウンロードできる他、プログラムが参照する各ファイルについてのファイル参照情報やデータ群情報をネットワーク経由で移動することができる。また、ホストがクライアント端末であれば、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションをダウンロードすることができる。
【0051】
外部機器インターフェース107は、ハード・ディスク・ドライブ(HDD)114やメディア・ドライブ115などの外部装置をホスト100に接続するための装置である。
【0052】
HDD114は、記憶担体としての磁気ディスクを固定的に搭載した外部記憶装置であり(周知)、記憶容量やデータ転送速度などの点で他の外部記憶装置よりも優れている。ソフトウェア・プログラムを実行可能な状態でHDD114上に置くことを、プログラムのシステムへの「インストール」と呼ぶ。通常、HDD114には、CPU101が実行すべきオペレーティング・システムのプログラム・コードや、アプリケーション・プログラム、デバイス・ドライバなどが不揮発的に格納されている。
【0053】
例えば、ホストがサーバとして動作する場合には、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションをHDD114上にインストールすることができる。また、サーバは、プログラムを再構成して得られるプログラム新規構成要素、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどをHDD14上に蓄積することができる。また、ホストがクライアントとして動作する場合には、サーバからのプログラムや参照ファイルのダウンロード、プログラム構成要素のサーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションなどを、HDD114上にインストールすることができる。また、クライアントは、サーバから受信したプログラム新規構成要素や、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどをHDD14上に蓄積することができる。
【0054】
メディア・ドライブ115は、CD(Compact Disc)やMO(Magneto−Opticaldisc)、DVD(Digital Versatile Disc)などの可搬型メディアを装填して、そのデータ記録面にアクセスするための装置である。
【0055】
可搬型メディアは、主として、ソフトウェア・プログラムやデータ・ファイルなどをコンピュータ可読形式のデータとしてバックアップすることや、これらをシステム間で移動(すなわち販売・流通・配布を含む)する目的で使用される。例えば、プログラム構成要素の再構成、プログラムが参照する各ファイルについてのファイル参照情報、データ群、データ群情報の作成、又はこれらを1つにまとめたアーカイブ・ファイルの作成、プログラムや参照ファイル、又はアーカイブ・ファイルのクライアントへのダウンロード処理などを行なうサーバ・アプリケーションや、サーバからのプログラムや参照ファイル、又はアーカイブ・ファイルのダウンロード、プログラム構成要素のダウンロード実行、アーカイブ・ファイルの展開データ群から元のファイルの作成、並びにプログラム実行時のファイル参照などの処理を行なうクライアント・アプリケーションなどを、これら可搬型メディアを利用して複数の機器間で物理的に流通・配布することができる。勿論、関連性のある複数のプログラム基本構成要素から生成されるプログラム新規構成要素や、プログラムが参照する各ファイルについてのファイル参照情報や、データ群、データ群情報、アーカイブ・ファイルなどを、可搬型メディアを介してホスト装置間で移動することもできる。
【0056】
B.第1の実施形態
本発明に係るネットワーク・システムでは、サーバのプログラムを、ネットワークを通してクライアントで実行する。
【0057】
プログラムの実行時には、プログラムは幾つかのデータ・ファイルを参照する必要がある。クライアントにダウンロードし、インストーラを実行させ、インストール終了後プログラムを実行するという方式では、ユーザがプログラムを実行するまでに行なう操作数が多く、実行までの所要時間も長い。また、プログラムとプログラムに必要とされるデータ・ファイルを1つにまとめて圧縮がされているファイルをダウンロードする方式では、プログラムが必要とするデータがデータ・ファイルのどの部分かを検討していないため、不必要なデータをダウンロードする分だけ非効率的である。また、サーバ上のプログラムの存在する場所をローカル・ストレージのように扱う方式は、クライアント数が多いネットワーク環境には向いていない。
【0058】
これに対し、本発明によれば、プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成し、このファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するとともに、ファイルの各データ群への参照に関するデータ群情報を作成する。そして、プログラムの起動後、ファイル参照情報並びにデータ群情報に基づいて、プログラム実行の各段階毎に参照されるデータ群の順でクライアントに転送することができる。
【0059】
例えば、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送するようにすることで、クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、実行することができる。この結果、実行中のプログラムによってファイル操作が行なわれても、データ転送量とデータ転送回数の最適化を実現することができる。
【0060】
図3には、本実施形態に係るネットワーク・システムにおいて、プログラムとプログラムによって参照される1以上のファイルを、サーバからクライアントに転送する仕組みを図解している。また、図4には、プログラムが参照するデータ・ファイルからデータ転送の単位となるデータ群を作成するための仕組みを図解している。
【0061】
同図に示す例では、クライアントから要求されるプログラムは、その実行中にデータ・ファイル1、データ・ファイル2、並びに、データ・ファイル3という3つのファイルを参照する。但し、データ・ファイル1はサイズが5120バイト、データ・ファイル2はサイズが1024バイト、データ・ファイル3はサイズが2048バイトであるとする。プログラムが参照するファイルは、プログラムの設計者やそのインストーラの作成者が、プログラムが必要とするデータ・ファイルの属性情報としてあらかじめ記述されているものとする。
【0062】
サーバ側では、まず、このプログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成する。ファイル参照情報は、参照されたファイルの属性情報/内部データに関する情報を含んでいる。ここで言う属性情報は、ファイル名、ファイル・サイズ、ファイルに関する時間(最終アクセス時間、内部データ更新時間、属性情報更新時間など)、グループ、オーナー、アクセス許可に関する属性のうち少なくとも1つを含んでいる。また、内部データは、ファイル内部データの参照時間、参照位置、参照サイズ、参照方法(参照関数名)のうち少なくとも1つを含んでいる。
【0063】
ファイル参照情報は、非参照のファイルの属性情報についての記録も含んでいてもよい。また、ファイル参照情報は、プログラムが使用するすべてのファイルの属性情報についての記録を持っていてもよい。
【0064】
図3に示す例では、ファイル参照情報は、各ファイルについてのプログラムによる参照位置と参照サイズ(すなわち参照範囲)を記述している。例えば、データ・ファイル1に関しては、参照位置と参照サイズが(0,1024)、(2048,512)、…がプログラムからの参照範囲である。同様に、データ・ファイル2に関しては、参照位置と参照サイズが(512,256)、…がプログラムからの参照範囲である。
【0065】
このようなファイル参照情報は、プログラム作成者やインストーラ作成者が任意に作成してもよいが、自動で生成するツールを使用してもよい。例えば、プログラムの実行時に関数や変数がどのような頻度でアクセスされるか、あるいは、どのような時刻又は時間間隔でアクセスされるかなどの、プログラム実行時の特性に関する情報を得る「トレース処理」を行なうことによって、ファイル参照情報を生成することができる。
【0066】
例えば、プログラム開発プラットフォームとして当業界で周知のオペレーティング・システム“linux”などでは、システム・コールをトレースする機能である“strace”コマンドが用意されている。このコマンドを使用することにより、open,close,read,write,lseekなどの各ファイル操作に関するトレース情報を作成することができる。例えば、プロンプト画面で、
【0067】
#strace −tt −e open,close,read,write,lseek ./a.out
【0068】
と入力することによって(但し、“−tt”は時間をトレース情報に含めるオプションであり、“−e”は指定システム・コールをトレース情報に含めるオプションであり、“. /a.out”はプログラムである)、以下に示すようなトレース情報を取り出すことができる。
【0069】
12:39:00.548284 open(”data1”, O_RDONLY) = 3
12:39:00.548384 lseek(3, 10, SEEK_SET) = 10
12:39:00.548435 read(3, ”abcdefghijklmnopqrstu”..., 256) = 256
12:39:00.548519 close(3) = 0
【0070】
次いで、サーバは、このファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成する。1つのデータ群は、プログラムの同じ実行段階で参照される各ファイルの参照データ部分で構成される。
【0071】
また、サーバは、ファイルの各データ群への参照に関するデータ群情報を作成する。データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すための情報を含んでいる。また、データ群情報のファイルの参照部分に関する情報は、ファイルの属性情報/内部データに関する情報を持っていてもよい。
【0072】
図5には、データ群、並びにデータ群情報の一例を示している。データ群は、プログラムが参照ファイルから参照される範囲を取り出したデータである。また、データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すことのできる情報で構成される。ファイルの参照部分に関する情報は、該当するファイル名と、ファイル内での参照位置の、参照されるデータのサイズで構成される。
【0073】
図3に示す例では、プログラム起動後、最初の段階で参照されるデータ群をデータ群1とし、次の段階で参照されるデータ群をデータ群2としている。図示の例では、データ・ファイル1〜3中でプログラムから参照されるデータは、これら2つのデータ群1〜2に集められる。勿論、参照されるデータの総量並びに単位当たりのデータ転送量などに応じて、3以上のデータ群を作成するようにしてもよい。
【0074】
1つのデータ群は、プログラムの同じ実行段階で参照される各ファイルの参照データで構成される。データ群情報は、データ群内で参照データ位置(データ群内データ位置)毎に、ファイルの参照部分に関する情報とその情報からデータ群内のデータを取り出すための情報を記述したレコードを用意する。
【0075】
図3に示す例では、データ群情報の各レコードは、該当するデータ位置を含んでいるファイルのファイル名、ファイル・サイズ、データ群内データ位置、参照位置、参照サイズなどを書き込むフィールドを備えている。データ群1は、3箇所のデータ群内データ位置1〜3を含んでいるので、そのデータ群情報1は3つのレコードで構成される。例えば、最初のレコードは、データ群内データ位置1が、データ・ファイル1、そのファイル・サイズが5120、参照位置が0、参照サイズが1024であることを記述している。同様に、データ群2は5箇所のデータ群内データ位置1〜5を含んでいるので、そのデータ群情報2は5つのレコードで構成される。
【0076】
図3に示す実施形態では、プログラムの起動後、ファイル参照情報並びにデータ群情報に基づいて、プログラム実行の各段階毎に参照されるデータ群の順で、サーバからクライアントへプログラムの参照データが転送される。
【0077】
図示の例では、サーバは、プログラム・ダウンロードの最初の段階で、プログラム本体と、プログラム起動時に参照が開始されるデータ群1とすべてのデータ群情報(すなわち、データ群情報1及びデータ群情報2)を、クライアントへ転送する。
【0078】
そして、プログラム・ダウンロードの次の段階として、サーバは、プログラム実行の次の段階で参照が開始されるデータ群すなわちデータ群2をクライアントへ転送する。
【0079】
クライアント側では、プログラムと最初のデータ群が届いた段階で、プログラムを起動し、データ群情報に基づいてデータ・ファイルを作成し、これを参照(すなわちファイル操作)しながらプログラムを実行することができる。図6には、データ群1及びデータ群2から作成されたデータを示している。
【0080】
最初に転送されるプログラム本体、データ群情報、及びデータ群1の総サイズと、次段階で転送されるデータ群2のサイズは、データ転送量とデータ転送回数を考慮して最適化される。
【0081】
C.第2の実施形態
上述した本発明の第1の実施形態では、プログラムの起動後から各実行段階において、各データ・ファイルがプログラムによって参照される位置及びサイズに応じて、ファイルを分割して転送することにより、データ・ファイルの転送におけるデータ転送量とデータ転送回数を最適化するものである。
【0082】
これに対し、プログラムを再構成して、分割転送するという手法もある。すなわち、プログラムを構成要素毎に分割し、プログラムの起動後実行される順にプログラムの構成要素を順次転送していくことによって、データ転送量とデータ転送回数を最適化することができる。
【0083】
このようなプログラム構成要素毎の分割転送を、上述したプログラム参照ファイルの分割転送と組み合わせることによって、データ転送量とデータ転送回数をさらに最適化することができる。
【0084】
サーバは、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送するようにすることで、データ転送量を最適化することができる。
【0085】
また、クライアント側では、プログラムの実行と並行して、プログラム新規構成要素と参照されるデータ群をダウンロードすることによって、ダウンロードを最適化することができる。
【0086】
図7には、本実施形態において、サーバ上のプログラムをネットワークを通してクライアント側で実行するための全体フローを示している。
【0087】
まず、ステップS1では、プログラムの再構成を行なう。プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、このプログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムをプログラム新規構成要素の集合として再構成することができる(後述)。
【0088】
このようなプログラム構成要素毎の分割転送を、上述したプログラム参照ファイルの分割転送と組み合わせることによって、データ転送量とデータ転送回数をさらに最適化することができる。但し、この場合、プログラム新規構成要素の編成に伴い、データ群並びに各データ群への参照に関するデータ群情報を再構成する必要がある(ステップS2)。
【0089】
データ群並びにデータ群情報を作成するために、まず、ファイル参照情報を作成する(ステップS2−1)。
【0090】
ファイル参照情報は、参照されたファイルの属性情報/内部データに関する情報であり、図3に示した例では、各ファイルについてのプログラムによる参照位置と参照サイズで構成される。本実施形態では、ファイル参照情報は各ファイルについてのファイル操作情報を記述したテーブルとして構成されるものとする(後述)。
【0091】
次いで、ファイル参照情報から、各ファイルに対して各プログラム新規構成要素が行なうファイル操作情報を記述した「新規構成要素ファイル操作情報」を作成する(ステップS2−2)。
【0092】
次いで、プログラムから参照される各ファイルをブロックに分割し、各ブロックに対して各プログラム新規構成要素によって有効なファイル操作が行なわれたかどうかを記述した参照データ確認テーブルを作成する(ステップS2−3)。
【0093】
次いで、この参照データ確認テーブルを利用して、プログラム新規構成要素から有効な操作が行なわれたブロックのデータを該当するファイルのブロックからコピーして、各プログラム新規構成要素についての参照データ・ファイルを作成する(ステップS2−4)。この参照データ・ファイルは、プログラム新規構成要素についてのデータ群に相当する。
【0094】
次いで、参照データ・ファイルへ参照するための参照データ・ファイル・リストを各新規構成要素毎に作成する(ステップS2−5)。
【0095】
次いで、プログラムとその参照ファイルのクライアントへの転送が行なわれる(ステップS3)。
【0096】
本実施形態では、それぞれのプログラム新規構成要素に対し、関連する1以上の参照データ・ファイルを含める(アーカイブする)(ステップS3−1)。最初にダウンロードされるプログラム新規構成要素を含むアーカイブ・ファイルには、すべてのプログラム新規構成要素に関する参照データ・ファイル・リストが付加される。2回目以降にダウンロードされるプログラム新規構成要素のアーカイブ・ファイルには、関連する参照データ・ファイルのみが付加される。
【0097】
次いで、起動からの新規構成要素必要時間に従って、各プログラム新規構成要素のアーカイブ・ファイルを順次クライアントへ転送する(ステップS3−2)。
【0098】
そして、クライアント側では、受信したアーカイブ・ファイルを展開し、参照データ・ファイル・リストを利用してデータ・ファイルを作成する。そして、プログラムを起動して実行するとともに、その実行の各段階において、オープンやリード、ライト、クローズなどのデータ・ファイルの操作を行なう(ステップS3)。
【0099】
C−1.プログラムの再構成
プログラムの再構成を行なう。プログラムは複数の基本構成要素によって構成されているものとして扱うことができる。したがって、プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、このプログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムをプログラム新規構成要素の集合として再構成することができる。
【0100】
図8には、本実施形態において再構成の対象となるプログラムの内部構成例を模式的に示している。ここでは、プログラムの例として、マインスイーパー・ゲーム・プログラムである”kmines”プログラム(kmines:the KDE minesweeper;Copyright(C)1996−97−98−99 Nicolas HADACEK)を用いている。但し、図示のkminesプログラムは、米インテル社の80386アーキテクチャのELFフォーマットで作成されるものとする。
【0101】
同図に示すように、プログラムの構成はテキスト(text)、データ(data)、ヘッダ(header)の3つに大きく分類できる。このうちテキストはプログラムの命令列であり、図8に示す例ではテキスト5−3で示されている。プログラムの命令列は、関数を単位として、テキストを構成している。本実施形態では、関数を、テキストを構成する基本構成要素として扱う。図8には、kminesを構成する関数を1部示している。
【0102】
データは、プログラムにより参照される変数や定数のことであり、図8ではデータ5−4で示されている。ここでは、変数や定数は実際のダウンロードが必要なものに限定される。つまり、プログラムの実行時にスタック上やヒープ領域に動的に配置される変数や定数はプログラムより参照はされるが、ダウンロードを行なう必要はないので、データ5−4から除外される。また、静的に配置される変数や定数であっても、その初期値が0などの特定値である場合には、プログラム実行開始前に実行環境によって配置と初期化を行うことが可能であるので、ダウンロードを行なう必要がない。したがって、このような変数や定数もデータ5−4から除外される。データ5−4は、以上を除く変数や定数に分割することができる。本実施形態では、これら変数と定数を、データを構成する基本構成要素として扱う。図8では、例としてkminesを構成する関数を1部示している。以降、本明細書中では、関数と変数、定数を総称して「シンボル」と呼ぶ。
【0103】
ヘッダは、プログラム管理データであり、図8ではヘッダ5−5として示されている。ここで、プログラム管理データとは、プログラムの実行によって直接参照されることはないが、その実行を実現するために実行環境によって参照されるデータ構造のことである。
【0104】
図示のように、プログラム管理データは、さらに複数の管理データにより構成される。ELFフォーマットの場合多くの管理データを持つが、本明細書では簡便のため、再配置テーブルであるrelocation5−6と動的シンボル・テーブルであるdynsym5−7の2つより構成されるものとする。
【0105】
再配置テーブル5−6は、命令列やデータのどの部分が実行環境で決定されるアドレスを参照するかとその参照の解決方法を示しており、実行環境はこれを利用して決定したアドレスをプログラム・コードやデータに適用する。また、動的シンボル・テーブルはシンボル参照のアドレス解決を行なうために利用される。これら2つの管理データは、テーブル形式で構成されるため、複数のエントリから構成されている。再配置テーブルは複数の再配置エントリから構成され、動的シンボル・テーブルはシンボル・エントリにより構成される。
【0106】
本実施形態では、再配置エントリとシンボル・エントリをそれぞれ再配置テーブル5−6と動的シンボル・テーブル5−7の基本構成要素として扱っている。プログラム管理領域中の管理領域の種類によっては、その大きさが十分に小さいものである場合や、基本構成要素への分割が困難である場合がある。そのような場合には、それらを1つの基本構成要素として扱う。
【0107】
図8に示す例では、再配置テーブルRelocation5−6の最初のエントリrel_Kmines::Kmines(Qwidget*,char const*)が、関数Kmines::Kmines(Qwidget*,char const*)への参照を行なう命令列又はデータの位置と参照の解決方法が記述されているエントリであることを示している。また、動的シンボル・テーブルdynsym5−7の最初のエントリsym_mainは、関数mainのアドレスを決める情報が記述されているエントリであることを示している。実際のkminesとは異なるが、図8ではプログラムの実行がmainから始まるものとし、mainを直接参照する命令列又はデータがkminesプログラム内にないものとし、このためrel_mainが存在しないようになっている。
【0108】
次いで、プログラムの再構成手順について説明する。
【0109】
まず、プログラムの再構成に必要となる参照情報について説明する。以下の表1には本実施形態で使用する参照情報を示している。
【0110】
【表1】
【0111】
上表に示す参照情報は、kminesプログラムを米インテル社のプロセッサCeleron466MHz上で実行したときの値を示している。なお、説明の簡素化のため、kminesが使用する動的ライブラリやkmines内部の定数については省略している。
【0112】
表1に示した参照情報の各エントリは、IndexとSymbolとTimestampで構成される。Indexは、各エントリを区別するために説明の便宜上あるもので、実際には必要ではない。
【0113】
Symbolはシンボルを識別するために使用される。表1では分かり易さのため文字列で示しているが、実際にはシンボルを識別するIDや動的ライブラリを区別するIDが使用される。このため、表1では同じシンボル名のエントリが存在するが、それらはファイル・スコープの異なる変数であり実際にはIDによって区別することができる。
【0114】
また、Timestampはシンボルがプログラムの実行時に最初に参照された時刻を示している。プログラムの実行時に1度も参照されなかったシンボルは参照情報に現れない。Timestampを最初にそのシンボルが参照された時刻とするのは、最初の参照でそのシンボルのダウンロードが必要となるためである。それ以後の参照では、既にダウンロードは完了しているため、それらの参照情報は必要としない。表1では、kminesが起動するまでのエントリをその参照順、つまりTimestamp順で示している。
【0115】
このような参照情報は、プログラムの実行時に関数や変数がどのような頻度でアクセスされるか、あるいは、どのような時刻又は時間間隔でアクセスされるかなどの、プログラム実行時の特性に関する情報を得る「トレース処理」を行なうことによって生成することができる。トレースを実現する手法としては、プログラムの実行情報を得るためにプログラム・コードに情報取得を行なうコードの追加を行うCode Insertion方式や、プログラムの実行からは透過的に実行環境によって定期的にプログラムの実行を中断してその時点のプログラムのコンテキスト情報からプログラムの実行情報の収集を行なうSampling方式を挙げることができる。
【0116】
次いで、プログラムの再構成手順について、図9に示すフローチャートを参照しながら説明する。但し、再構成の前提として、参照情報生成手段により、再構成対象のプログラムを構成するモジュールについての上記の表1に示すような参照情報が与えられているものとする。
【0117】
まず、Timestampをキーとして参照情報のエントリを参照時刻順にソートする(ステップS11)。
【0118】
次いで、1つ前のエントリのTimestampとの差分をとることで各シンボル間の参照時間間隔を計算する(ステップS12)。
【0119】
次いで、得られた参照時間間隔を入力としてシステムが管理する参照時間間隔分布データを更新する(ステップS13)。
【0120】
ここで、参照時間間隔分布データとは、ある参照時間間隔が発生した回数をその参照時間間隔毎に累計したものである。この累計はプログラム毎に累計を行なう方法や、プログラムを区別せずにすべてのプログラムに対して累計を行なう方法がある。本実施形態では、プログラムを区別せずにすべてのプログラムに対して累計を行なうものとする。また、本実施形態においての参照時間間隔分布データの更新では、参照時間間隔の回数が加算された後に、参照時間間隔の期待値と標準偏差の値が再計算される。参照時間間隔が短い基本構成要素はプログラム実行時に連続的に呼び出される可能性が高く、逆に、参照時間間隔が長い基本構成要素の間には、プログラム実行時に、ユーザ入力待ちやディスク・アクセスなどが含まれているなど関連性が低いと思料される。
【0121】
次いで、更新された期待値と標準偏差の値を加算して閾値とする(ステップS14)。
【0122】
次いで、参照時刻順にソートされた参照情報を、前のステップで計算した閾値を用いて分割し、プログラムの新規構成要素すなわちワーキング・セット(working set)を定義する。分割には、1つ前のエントリとの差分である参照時間間隔が閾値以上である部分で分割を行なう方法と、ワーキング・セット定義を開始したエントリの参照時刻からの差分が閾値以上である部分で分割を行なう方法がある。どちらの方法も、閾値未満の参照間隔である複数のシンボルを1つのワーキング・セットとして定義とする(ステップS15)。
【0123】
参照が発生しないシンボルはプログラムの構造解析により幾つかのワーキング・セットとして定義することが可能であるが、本実施形態では簡便のためにまとめて1つのワーキング・セットを定義とする(ステップS16)。
【0124】
このようにして得られたワーキング・セットの定義に従いプログラムのテキストとデータをワーキング・セットとして分割する(ステップS17)。このとき、参照が発生しなかったシンボルから構成されるワーキング・セットには、プログラムの起動前にダウンロードを行なう必要があることを示すpreloadのマークを付ける。
【0125】
そして、再配置テーブルを構成する再配置エントリと動的シンボル・テーブルを構成するシンボル・エントリのうちワーキング・セット定義に含まれるシンボルに対応するエントリを該当するワーキング・セットに追加していく(ステップS18)。
【0126】
より具体的には、再配置エントリは命令列データのどの部分が実行環境で決定されるアドレスを参照するかを示しているため、シンボルと対応付けが可能である。また、一般的なトレーサは、ヘッダに対して参照時刻をとることができないので、ヘッダをワーキング・セット定義に従って分割することはできない。そこで、対応するシンボルが属するワーキング・セットに再配置エントリを入れることで再配置テーブルを分割するようにする。
【0127】
同様に、シンボル・エントリも対応するシンボルが存在するため、対応するシンボルが属するワーキング・セットにシンボル・エントリを入れることで動的シンボル・テーブルを分割するようにする。
【0128】
ここで、図8及び表1に示したプログラムを例にとって、上述のプログラム再構成の手順について説明する。表1は、最初の参照時刻順すなわちTimestampの順序に従って既に並べ替えられている。
【0129】
システムが管理する参照時間間隔分布データにより、過去参照数25,212回のデータの参照時間間隔の期待値が0.00611950077371、そのときの標準偏差が0.17955970122955であったとすると、閾値は0.18567920200326が得られる。この閾値を利用して参照時間間隔が閾値以上である部分で分割を行なうと、表1のIndex0−6,Index7−32,Index33−54,Index55−57,Index58の5つに分割することができる。ここでは、これらをそれぞれワーキング・セットとして定義する。
【0130】
表1に示した参照情報の例では、KMinesの起動までの部分しかないために、プログラム全体を分割することはできないが、参照情報をプログラムのさまざまな実行に対して得ることで、実際にはプログラム全体の分割が可能となる。
【0131】
次いで、得られたワーキング・セットに対応する再配置テーブルのエントリと動的シンボル・テーブルのエントリを対応する各ワーキング・セット定義に追加を行う。例えば、関数mainがQArrayT〈char〉virtual tableとQString virtual tableを参照するのであれば、rel_QArrayT〈char〉virtual tableとrel_ QString virtual tableがmainの属するワーキング・セット定義に追加される。また、sym_mainもmainの属するワーキング・セット定義に追加される。
【0132】
以上の手順により、図8に示したKMinesの1部は、図8に示すような複数のワーキング・セットすなわちプログラム新規構成要素に再構成される。それぞれのワーキング・セット内ではプログラム実行時に連続的に参照される可能性が高く、これに対し、ワーキング・セット間ではユーザ入力待ちやディスク・アクセスが存在するなどの原因で参照時刻に隔たりがある、ということを充分理解されたい。
【0133】
図9に示したような手順でプログラムの再構成を行なうことにより、短時間内に参照が発生したシンボルのみを集めて各ワーキング・セットを構成することができる。また、再配置エントリやシンボル・エントリなどのプログラム管理データもシンボルに対応して分割することにより、実行環境がワーキング・セットをプログラムに対して利用可能にするために必要となる部分のみをダウンロードすることができる。
【0134】
C−2.新規構成要素ファイル操作情報の作成
この項では、プログラムの再構成処理により、ある参照時間間隔閾値を用いて4つのプログラム新規構成要素に分割されているプログラムを例にとって、ファイル参照情報の最構成について説明する。但し、これらプログラム新規構成要素の起動からの参照時間はそれぞれ以下に示す通りであるとする。
【0135】
プログラム新規構成要素1:0〜5
プログラム新規構成要素2:10〜15
プログラム新規構成要素3:20〜25
プログラム新規構成要素4:参照情報に登録なし
【0136】
これは、プログラムの起動からの各プログラム新規構成要素が必要となるまでの経過時間である「新規構成要素必要時間」を指しており、上記の例では、それぞれのプログラム新規構成要素についての必要時間が以下であることを表わしている。
【0137】
プログラム新規構成要素1:起動から0秒までに必要
プログラム新規構成要素2:起動から10秒までに必要
プログラム新規構成要素3:起動から20秒までに必要
プログラム新規構成要素4:起動から25秒以降に必要
【0138】
プログラムによるファイル中の各データへの参照を記録したファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群が作成される。
【0139】
本実施形態では、ファイル参照情報から、各ファイルに対して各プログラム新規構成要素が行なうファイル操作情報を記述した「新規構成要素ファイル操作情報」を作成する。ファイル参照情報は、以下の表2に示す通り、各ファイルについてのファイル操作情報を記述したテーブルとして構成される。
【0140】
【表2】
【0141】
但し、ここで言うファイル操作情報は、呼び出し時間、シーク位置、アクセス・サイズ、呼び出し種別の組み合わせで構成される。呼び出し時間はプログラム開始からの時間のことを指す。シーク位置は、リード/ライトの操作のとき意味を持ち、リード/ライトを呼び出した時点の値を指す。アクセス・サイズは、リード/ライトの操作のとき意味を持ち、リードであれば、実際に読み込んだサイズを、ライトであれば実際に書き込んだサイズを指す。呼び出し種別は、例えばオープン/クローズ/リード/ライトのいずれかである。
【0142】
本実施形態では、以下に示す処理手順に従って、ファイル参照情報から新規構成要素ファイル操作情報を作成する。
【0143】
(1)ファイル参照情報のファイル名に対し、複数のファイル操作情報を呼び出し時間でソートする。
【0144】
(2)ファイル操作情報の呼び出し時間とそれぞれのプログラム新規構成要素の起動からの必要時間とを比較する。そして、ファイル操作情報の呼び出し時間よりも起動からの新規構成要素必要時間が短いものの中で最も該必要時間が最も長いものを、このファイル操作情報に対応するプログラム新規構成要素として選択する。この結果、1つの新規構成要素に対し1以上のファイル参照情報が選ばれる。
【0145】
(3)すべてのファイル操作情報に対して、上記の処理(2)を実行する。
【0146】
(4)すべてのファイル参照情報のすべてのファイル名に対し、上記の処理(1)及び(3)を実行し、新規構成要素ファイル操作情報を作成する。
【0147】
以下の表3には、新規構成要素ファイル操作情報の構成例を示している。同表に示す例では、各ファイル名についてのファイル操作情報がプログラム新規構成要素毎に仕分けされている。すなわち、新規構成要素ファイル操作情報を参照することにより、各プログラム新規構成要素が書くファイル名に対して行なったファイル操作を早見することができる。
【0148】
【表3】
【0149】
また、図10には、ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順をフローチャートの形式で示している。
【0150】
まず、ファイル参照情報を参照し、1つのファイル名についてのレコードを取り出し(ステップS21)、すべてのファイル名に対して以下の処理を繰り返し実行する(ステップS22)。
【0151】
取り出したレコードに含まれるファイル操作情報を呼び出し時間でソートする(ステップS23)。
【0152】
次いで、ファイル操作情報の呼び出し時間とそれぞれのプログラム新規構成要素の起動からの必要時間とを比較して、該当するプログラム新規構成要素を選択する(ステップS24)。
【0153】
そして、レコードに含まれるすべてのファイル操作情報についてプログラム新規構成要素の選択処理を繰り返し実行する(ステップS25)。
【0154】
すべてのファイル操作情報について処理を終えると、ステップS21に戻り、次のファイル名のレコードを取り出し、同様の処理を繰り返し実行する。
【0155】
C−3.参照データ確認テーブルの作成
新規構成要素ファイル操作情報が作成されると、これを利用して、プログラムから参照される各ファイルをブロックに分割し、各ブロックに対して各プログラム新規構成要素によって有効なファイル操作が行なわれたかどうかを記述した参照データ確認テーブルを作成する。
【0156】
本実施形態では、以下に示す処理手順に従って、参照データ確認テーブルを作成する。
【0157】
(1)新規構成要素ファイル操作情報にある各ファイル名に対する新規構成要素の参照データ確認テーブルを作成する。このテーブルはファイルのサイズを数バイトのブロックに区切り、有効、無効の印を付けることのできるテーブルである。参照データ確認テーブルの初期値は無効である。
【0158】
(2)作成されたテーブルに有効の印を付ける。ブロック有効、無効の判断は、ファイルのサイズを超えるかどうかで判断される。ファイルのサイズは、プログラムが初めて動作する時に参照するファイル・サイズである。
【0159】
ファイル操作情報の呼び出し種別がリードの場合、シーク位置とアクセス・サイズからブロックを得る。ファイル・サイズを超えるような場所へのアクセスはブロック無効である。ブロックが無効でなければ、ブロックに有効を付ける。
【0160】
また、ファイル操作情報の呼び出し種別がライトの場合、シーク位置とアクセス・サイズからブロックを得る。ファイル・サイズを超えるような場所へのアクセスはブロック無効である。ブロックが無効でなければ、ブロックに有効を付ける。
【0161】
(3)上述した処理(2)をすべてのファイル操作情報について実行する。
【0162】
(4)上述した処理(1)及び(3)をファイル名に対するすべてのプログラム新規構成要素に対して実行する。
【0163】
(5)上述した処理(4)を新規構成要素ファイル操作情報に登録されているすべてのファイル名に対して実行する。
【0164】
図11には、参照データ確認テーブルの作成例を示している。同図に示す例では、処理対象となるデータ・ファイルは、所定サイズのブロック(ア)〜(オ)の5ブロックに分割されているので、5つのカラムを持つ参照データ確認テーブルが用意される。各カラムの初期値は無効である。そして、ファイル操作情報を解析することにより、有効なアクセスが行なわれていることが判明したブロック(ア)、(イ)、並びに(エ)に有効の印が付けられている。
【0165】
また、図12には、ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順をフローチャートの形式で示している。
【0166】
新規構成要素ファイル操作情報を参照して、未処理のファイル名があれば(ステップS31)、以下の処理を実行する。
【0167】
まず、新規構成要素ファイル操作情報のファイル名と新規構成要素から、参照データ確認テーブルを作成する(ステップS32)。そして、新規構成要素ファイル操作情報にあるすべてのファイル名に対して、同様の処理を繰り返し行なう(ステップS33)。
【0168】
次いで、ファイル操作情報を得る(ステップS34)。ファイル操作情報の呼び出し種別がリードの場合には(ステップS35)、アクセスするブロック位置を得て(ステップS36)、ブロックが無効でないかどうかを判断する(ステップS37)。そして、無効でない場合には、参照データ確認テーブルの該当ブロック位置に有効を記す(ステップS38)。その後、ステップS34に戻り、次のファイル操作情報について同様の処理を実行する。
【0169】
また、ファイル操作情報の呼び出し種別がリードの場合には(ステップS39)、アクセスするブロック位置を得て(ステップS40)、ブロックが無効でないかどうかを判断する(ステップS41)。そして、無効でない場合には、参照データ確認テーブルの該当ブロック位置に有効を記す(ステップS42)。その後、ステップS34に戻り、次のファイル操作情報について同様の処理を実行する。
【0170】
参照データ確認テーブルは、各ファイル名について、ファイル操作を行なうプログラム新規構成要素毎に作成される。以下の表4には、参照データ確認テーブルと関連するファイル名並びに関連するプログラム新規構成要素の早見表を示している。
【0171】
【表4】
【0172】
C−4.参照データ・ファイルの作成
次いで、この参照データ確認テーブルを利用して、プログラム新規構成要素から有効な操作が行なわれたブロックのデータを該当するファイルのブロックからコピーして、各プログラム新規構成要素についての参照データ・ファイルを作成する。この参照データ・ファイルは、プログラム新規構成要素についてのデータ群に相当する。
【0173】
また、参照データ・ファイルへ参照するための参照データ・ファイル・リストを各プログラム新規構成要素毎に作成する。参照データ・ファイル・リストは、プログラム新規構成要素についてのデータ群情報に相当する。
【0174】
本実施形態では、以下に示す処理手順に従って、参照データ・ファイル並びに参照データ・ファイル・リストを作成する。
【0175】
(1)参照データ確認テーブルにおいて有効なブロックのデータを、参照データ確認テーブルに関連するデータ・ファイルの該当ブロックから参照データ・ファイルにコピーする。参照データ・ファイルの名前はユニークな名前で作成する。
【0176】
図11に示した例では、参照データ確認テーブルのブロック(ア)、(イ)、並びに(エ)に有効の印が付けられているので、参照データ確認テーブルに関連するデータ・ファイルの該当ブロックからデータがコピーされて、参照データ・ファイルが作成される(図13を参照のこと)。
【0177】
(2)プログラム新規構成要素毎に、参照データ・ファイルを参照するための参照データ・ファイル・リストのファイルを作成する。この参照データ・ファイル・リストは、参照データ・ファイル名、データ・ファイル名、データ・ファイル・サイズ、並びに有効ブロック位置(番号)を記録する。データ・ファイル・サイズから全ブロックが幾つかは分る。
【0178】
図14には、参照データ・ファイル・リストの構成例を示している。参照データ・ファイルは、プログラム新規構成要素が参照する各データ・ファイル毎に作成される。参照データ・ファイル・リストは、データ群としての参照データ・ファイルについての参照データ・ファイル名、元のデータ・ファイル名、データ・ファイル・サイズ、並びに有効ブロック番号をファイル形式で保持している。プログラムがファイルを参照するときには、参照データ・ファイル・リストを利用して、該当する参照データ・ファイルを探索することができる。
【0179】
(3)上述した(1)及び(2)の処理をすべての参照データ確認テーブルに対して実行する。
【0180】
なお、ファイルの参照はあるが無効なブロックを含むファイルと、参照がないファイルは、いつ参照されるか分らない新規構成要素に対して行なわれる。本実施形態では、新規構成要素4がこれに該当する。
【0181】
(1)ファイルの参照はあるが無効なブロックを含むファイル
すべての参照データ確認テーブルを確認し、無効のブロックがあるファイルは、無効ブロックを参照データ・ファイルにコピーする。参照データ・ファイル・リストファイルに、参照データ・ファイル名、ファイル名、データ・ファイル・サイズ、無効ブロック位置(コピーされたブロック位置の意味)を記録する。
【0182】
(2)参照がないファイル
参照がないファイルはすべてのブロックが無効であると考え、上述した(1)の操作を行なう。参照がないファイルは、ファイル参照情報にファイル名がなく、プログラムが必要とするデータ・ファイルの属性情報にファイル名があるファイルとして得ることができる。
【0183】
C−5.アーカイブ・ファイルの作成
本実施形態では、ファイル内のデータの一部をプログラム新規構成要素に含めるという手法が採られる。すなわち、プログラム構成要素、データ群としての複数の参照データ・ファイル、データ群情報としての参照データ・ファイル・リスト・ファイルをアーカイブすることにより、1つにまとめる。
【0184】
最初にダウンロードされるプログラム新規構成要素を含むアーカイブ・ファイルには、すべてのプログラム新規構成要素に関する参照データ・ファイル・リストが付加される。図15には、最初にダウンロードされるアーカイブ・ファイルを作成する様子を示している。同図に示すように、プログラムの起動直後に実行されるプログラム新規構成要素と、このプログラム新規構成要素によって参照される参照データ・ファイルと、すべての参照データ・ファイルについての参照データ・ファイル・リスト・ファイルがアーカイブされ、単一のファイルが作成される。
【0185】
また、2回目以降にダウンロードされるプログラム新規構成要素のアーカイブ・ファイルには、関連する参照データ・ファイルのみが付加される。図16には、2回目以降にダウンロードされるアーカイブ・ファイルを作成する様子を示している。同図に示すように、プログラムの起動後の各段階に実行されるプログラム新規構成要素と、このプログラム新規構成要素によって参照される参照データ・ファイルがアーカイブされ、単一のファイルが作成される。
【0186】
C−6.アーカイブ・ファイルの移動
本実施形態では、サーバからクライアントへのプログラム及びその参照ファイルの移動処理は、アーカイブ・ファイル毎に行なわれる。
【0187】
アーカイブ・ファイルの移動処理は、クライアント側に配置されたアーカイブ処理装置により以下に示す処理手順に従って実行される。図17には、アーカイブ・ファイルを移動するための処理手順をフローチャートの形式で示している。
【0188】
(1)アーカイブ処理装置は、プログラム新規構成要素を要求する(ステップS51)。プログラム新規構成要素はアーカイブ・ファイルと透過的に扱われ、実際にロードされるファイルはアーカイブ・ファイルである。
【0189】
(2)アーカイブ処理装置は、アーカイブ・ファイルを受信し、これを展開処理する(ステップS52)。アーカイブ・ファイルには、プログラム新規構成要素と、参照データ・ファイルが含まれている。最初にダウンロードされたアーカイブ・ファイルの場合には、複数の参照データ・ファイル・リスト・ファイルが含まれている(図15を参照のこと)。
【0190】
(3)アーカイブ処理装置は、初回にダウンロードしたプログラム新規構成要素に対する参照データ・ファイル・リスト・ファイルと、参照データ・ファイルを使用して、データ・ファイルをクライアント上に作成する(ステップS53)。
【0191】
▲1▼参照データ・ファイル・リスト・ファイルに記述されているデータ・ファイルを、記述されているデータ・ファイル・サイズで作成する。データ・ファイルが既に存在している場合には、作成しない。
▲2▼参照データ・ファイルから、関連する参照データ・ファイル・リスト・ファイルで作成されたデータ・ファイルに、有効ブロックをコピーする。但し、コピーしようとしたブロックが既に有効であった場合はコピーを行なわない(この現象は、プログラム起動までの動作が起動毎に異なる場合でないと起きない)。
▲3▼クライアントのファイルシステムに、有効なブロックのリストを渡す。
▲4▼上述した▲1▼〜▲3▼の処理を、参照データ・ファイル・リスト上のすべてのファイルに対して実行する。
【0192】
(4)プログラム新規構成要素をクライアントに渡す(ステップS54)。
【0193】
C−7.ファイル操作
クライアント側では、プログラムを起動し、データ群情報に基づいてデータ・ファイルを作成しこれを参照しながらプログラムを実行することができる。この項では、プログラム実行時に行なわれるファイル操作について説明する。
【0194】
ファイル・オープン:
ファイルのオープン(open)操作は、以下に示す処理手順に従って行なわれる。図18には、ファイルのオープン操作の処理手順をフローチャートの形式で示している。
【0195】
(1)プログラムは、ファイルのオープンを呼び出す。
【0196】
(2)ファイル・オープン要求に応答して、ファイルシステムは、まず、クライアント・ローカルでファイルの存在を調べる(ステップS61)。
【0197】
ここで、該当するファイルが既にローカル・ファイルとして存在する場合には、通常通りのオープン操作を実行し、指定ファイル(ディスクリプタ)をプログラムに返して(ステップS62)、本処理ルーチン全体を終了する。
【0198】
一方、要求されたファイルがローカル・ファイルとして存在しない場合には、ファイルシステムは、アーカイブ処理装置(前述)に対して、指定ファイルを要求する(ステップS63)。
【0199】
アーカイブ処理装置は、参照データ・ファイル・リスト(図14を参照のこと)を参照して、指定ファイルが存在するかどうかを調べる(ステップS64)。
【0200】
指定ファイルが存在する場合には、アーカイブ処理装置は、サーバに対して、指定ファイルを含んだアーカイブ・ファイルを要求する(ステップS65)。
【0201】
そして、サーバ側からアーカイブ・ファイルを受信したならば(ステップS66)、指定ファイルを作成し、これをファイルシステムに通知する(ステップS67)。ファイルシステムは、通常通りのオープン操作を実行し、ディスクリプタをプログラムに返して(ステップS62)、本処理ルーチン全体を終了する。
【0202】
一方、指定ファイルが存在しない場合には、アーカイブ処理装置はファイルシステムにその旨を通知し(ステップS68)、本処理ルーチン全体を終了する。
【0203】
ファイル・リード:
ファイルのリード(read)操作は、以下に示す処理手順に従って行なわれる。図19には、ファイルのリード操作の処理手順をフローチャートの形式で示している。
【0204】
(1)プログラムは、ファイルのリードを呼び出す。
【0205】
(2)ファイルのリード要求に応答して、ファイルシステムは、まず、指定ファイルが無効ブロックを含むかどうかを調べる(ステップS71)。
【0206】
ここで、指定ファイル(ディスクリプタ)が無効ブロックを含んでいる場合には、リード要求されたブロック位置が有効かどうかをさらに調べる(ステップS72)。
【0207】
そして、リード要求されたブロック位置が有効ブロックである場合には、ファイルシステムは、通常のリード処理を行なって(ステップS73)、本処理ルーチン全体を終了する。
【0208】
一方、リード要求されたブロック位置が無効ブロックである場合には、ファイルシステムは、指定ファイルのリード位置が有効であるブロックを含むアーカイブ・ファイルをアーカイブ処理装置に要求する(ステップS74)。
【0209】
アーカイブ処理装置は、サーバに対してアーカイブ・ファイルを要求し、サーバ側からアーカイブ・ファイルを受信したならば(ステップS75)、指定ファイルを作成し、これをファイルシステムに通知する(ステップS76)。ファイルシステムは、通常のリード処理を行なって(ステップS73)、本処理ルーチン全体を終了する。
【0210】
また、指定ファイルが無効ブロックを含んでいない場合には(ステップS71)、ファイルシステムは、通常のリード処理を行なって(ステップS73)、本処理ルーチン全体を終了する。
【0211】
ファイル・ライト:
ファイルのライト(write)操作は、以下に示す処理手順に従って行なわれる。図20には、ファイルのライト操作の処理手順をフローチャートの形式で示している。
【0212】
(1)プログラムは、ファイルのライトを呼び出す。
【0213】
(2)ファイルのライト要求に応答して、ファイルシステムは、まず、指定ファイルが無効ブロックを含むかどうかを調べる(ステップS81)。
【0214】
ここで、指定ファイル(ディスクリプタ)が無効ブロックを含んでいる場合には、ライト要求されたブロック位置が有効かどうか、並びにファイル・サイズを超えるような処理であるかどうかをさらに調べる(ステップS82)。
【0215】
ライト要求がファイル・サイズを超えるような処理である場合には、ファイルシステムは通常のライト処理を行なって(ステップS83)、本処理ルーチン全体を終了する。
【0216】
また、ライト要求されているブロック位置が有効ブロックである場合には、ファイルシステムは通常のライト処理を行なって(ステップS83)、本処理ルーチン全体を終了する。
【0217】
一方、ライト要求されているブロック位置が無効ブロックである場合には、ファイルシステムは、指定ファイルのライト位置が有効であるブロックを含むアーカイブ・ファイルをアーカイブ処理装置に要求する(ステップS84)。
【0218】
アーカイブ処理装置は、サーバに対してアーカイブ・ファイルを要求し、サーバ側からアーカイブ・ファイルを受信したならば(ステップS85)、指定ファイルを作成し、これをファイルシステムに通知する(ステップS86)。ファイルシステムは、通常のライト処理を行なって(ステップS83)、本処理ルーチン全体を終了する。
【0219】
また、指定ファイルが無効ブロックを含んでいない場合には(ステップS81)、ファイルシステムは、通常のライト処理を行なって(ステップS83)、本処理ルーチン全体を終了する。
【0220】
なお、ファイルのクローズ(close)処理は、プログラムからのファイルのクローズ呼び出しに応答して、ファイルシステムが通常のクローズ処理を行なう。
【0221】
[追補]
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0222】
【発明の効果】
以上詳記したように、本発明によれば、ダウンロード及びプログラム実行のためにプログラムが参照するファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することができる。
【0223】
また、本発明によれば、プログラム起動とともに即座にデータを参照することができるようにファイルの構造を最適化することができる、優れたデータ処理システム及びデータ処理方法、並びにコンピュータ・プログラムを提供することができる。
【0224】
本発明によれば、ユーザがプログラムを実行するまでに行なう操作を簡単にし、ダウンロードするファイルのサイズを最適にし、サーバにアクセスする回数を最適にし、データ・ファイルの一部にアクセスすることを可能にすることができる。また、本発明によれば、プログラムによるファイル操作が行なわれても、データ転送量とデータ転送回数の最適化が実現できる方法を提供することができる。
【図面の簡単な説明】
【図1】本発明に係るデータ処理方法を適用することができるシステム全体の構成を模式的に示した図である。
【図2】サーバあるいはクライアントとして動作するホスト装置のハードウェア構成を模式的に示した図である。
【図3】プログラムとプログラムによって参照される1以上のファイルを、サーバからクライアントに転送する仕組みを説明するための図である。
【図4】プログラムが参照するデータ・ファイルからデータ転送の単位となるデータ群を作成するための仕組みを示した図である。
【図5】データ群、並びにデータ群情報の一例を示した図である。
【図6】データ群1及びデータ群2から作成されたデータを示した図である。
【図7】サーバ上のプログラムをネットワークを通してクライアント側で実行するための全体フローを示した図である。
【図8】再構成の対象となるプログラムの内部構成例を模式的に示した図である。
【図9】プログラムの再構成手順を示したフローチャートである。
【図10】ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順を示したフローチャートである。
【図11】参照データ確認テーブルの作成例を示した図である。
【図12】ファイル参照情報から新規構成要素ファイル操作情報を作成するための処理手順を示したフローチャートである。
【図13】参照データ確認テーブルを利用して参照データ・ファイルを作成する様子を示した図である。
【図14】参照データ・ファイル・リストの構成例を示した図である。
【図15】最初にダウンロードされるアーカイブ・ファイルを作成する仕組みを説明するための図である。
【図16】2回目以降にダウンロードされるアーカイブ・ファイルを作成する仕組みを説明するための図である。
【図17】アーカイブ・ファイルを移動するための処理手順を示したフローチャートである。
【図18】ファイルのオープン操作の処理手順を示したフローチャートである。
【図19】ファイルのリード操作の処理手順を示したフローチャートである。
【図20】ファイルのライト操作の処理手順を示したフローチャートである。
【符号の説明】
100…ホスト
101…CPU,
102…主メモリ,103…ROM
104…ディスプレイ・コントローラ
105…入力機器インターフェース
106…ネットワーク・インターフェース
107…外部機器インターフェース
108…バス
111…ディスプレイ
112…キーボード,113…マウス
114…ハード・ディスク装置
115…メディア・ドライブ
Claims (27)
- プログラムによって参照される1以上のファイルを処理するデータ処理システムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成手段と、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成手段と、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成手段と、
を具備することを特徴とするデータ処理システム。 - データ群情報は、ファイルの参照部分に関する情報と、その情報からデータ群内のデータを取り出すための情報を含む、
ことを特徴とする請求項1に記載のデータ処理システム。 - 前記ファイル参照情報は、参照されたファイルの属性情報/内部データに関する情報を含む、
ことを特徴とする請求項1に記載のデータ処理システム。 - 前記属性情報は、ファイル名、ファイル・サイズ、ファイルに関する時間(最終アクセス時間、内部データ更新時間、属性情報更新時間など)、グループ、オーナー、アクセス許可に関する属性のうち少なくとも1つを含む、
ことを特徴とする請求項3に記載のデータ処理システム。 - 前記内部データは、ファイル内部データの参照時間、参照位置、参照サイズ、参照方法(参照関数名)のうち少なくとも1つを含む、
ことを特徴とする請求項3に記載のデータ処理システム。 - 前記ファイル参照情報は、非参照のファイルの属性情報についての記録も含む、
ことを特徴とする請求項3に記載のデータ処理システム。 - 前記ファイル参照情報は、プログラムが使用するすべてのファイルの属性情報についての記録を持つ、
ことを特徴とする請求項3に記載のデータ処理システム。 - 前記データ群情報のファイルの参照部分に関する情報は、ファイルの属性情報/内部データに関する情報を持つ、
ことを特徴とする請求項2に記載のデータ処理システム。 - プログラム及びプログラムが参照する1以上のファイルを提供するサーバと、
プログラム及びプログラムが参照する1以上のファイルを要求するクライアントと、
クライアントへプログラム、データ群、データ群情報を転送する転送手段をさらに備える、
ことを特徴とする請求項1に記載のデータ処理システム。 - 前記転送手段は、プログラムの起動後、プログラム実行の各段階毎に参照されるデータ群の順でファイルをクライアントに転送する、
ことを特徴とする請求項9に記載のデータ処理システム。 - 前記転送手段は、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送する、
ことを特徴とする請求項9に記載のデータ処理システム。 - クライアントにおいてプログラム実行中にファイル中のデータを参照する参照手段を備える、
ことを特徴とする請求項11に記載のデータ処理システム。 - 前記参照手段は、受信したデータ群情報及びデータ群に基づいてファイルを作成して参照する、
ことを特徴とする請求項12に記載のデータ処理システム。 - 前記参照手段は、データ群情報を使用して、プログラム実行中に参照されるデータがクライアントにあるかどうかを判断し、クライアントにないデータへの参照が発生した場合にはサーバにあるかどうかをさらに判断し、サーバにある場合にはデータ群情報に基づいて必要なデータ群をサーバへ要求する、
ことを特徴とする請求項12に記載のデータ処理システム。 - プログラムを構成要素毎に分割するプログラム分割手段を備え、
前記転送手段は、プログラムの起動後実行される順にプログラムの構成要素及び該構成要素によって参照が開始されるデータ群を転送する、
ことを特徴とする請求項9に記載のデータ処理システム。 - プログラムは複数の基本構成要素によって構成されており、
プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、該プログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成するプログラム再構成手段と、
プログラムの起動後実行される順に各プログラム新規構成要素によって参照が開始されるデータ群及びデータ群情報を再構成するデータ群再構成手段をさらに備える、
ことを特徴とする請求項9に記載のデータ処理システム。 - 前記転送手段は、プログラムの起動後実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群を転送する、ことを特徴とする請求項16に記載のデータ処理システム。
- 前記転送手段は、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送する、
ことを特徴とする請求項16に記載のデータ処理システム。 - プログラムによって参照される1以上のファイルを処理するデータ処理方法であって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成ステップと、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成ステップと、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成ステップと、
を具備することを特徴とするデータ処理方法。 - クライアントへプログラム、データ群、データ群情報を転送する転送ステップをさらに備える、
ことを特徴とする請求項19に記載のデータ処理方法。 - 前記転送ステップでは、プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずクライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でクライアントへ転送する、
ことを特徴とする請求項20に記載のデータ処理方法。 - 受信したデータ群情報及びデータ群に基づいてファイルを作成し、データ群情報を使用して、プログラム実行中に参照されるデータがクライアントにあるかどうかを判断し、クライアントにないデータへの参照が発生した場合にはサーバにあるかどうかをさらに判断し、サーバにある場合にはデータ群情報に基づいて必要なデータ群をサーバへ要求する参照ステップをさらに備える、
ことを特徴とする請求項21に記載のデータ処理方法。 - プログラムは複数の基本構成要素によって構成されており、
プログラム実行時においてプログラムに含まれる各基本構成要素についてのプログラム参照情報を生成し、該プログラム参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成するプログラム再構成ステップと、
プログラムの起動後実行される順に各プログラム新規構成要素によって参照が開始されるデータ群及びデータ群情報を再構成するデータ群再構成ステップをさらに備える、
ことを特徴とする請求項20に記載のデータ処理方法。 - 前記転送ステップでは、プログラムの起動直後に実行されるプログラム新規構成要素、該プログラム新規構成要素によって参照が開始されるデータ群、及び再構成されたデータ群情報をまずクライアントへ転送し、以降、実行される順にプログラム新規構成要素及び該プログラム新規構成要素によって参照が開始されるデータ群をクライアントへ転送する、
ことを特徴とする請求項23に記載のデータ処理方法。 - プログラムによって参照される1以上のファイルの処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、
プログラムによるファイル中の各データへの参照を記録したファイル参照情報を生成するファイル参照情報生成ステップと、
前記ファイル参照情報に基づいて、ファイルの中からプログラム実行の各段階毎に参照が開始されるデータを集めてデータ群を作成するデータ群作成ステップと、
ファイルの各データ群への参照に関するデータ群情報を作成するデータ群情報作成ステップと、
を具備することを特徴とするコンピュータ・プログラム。 - プログラムとプログラム起動時に参照が開始されるデータ群とデータ群情報をまずプログラム及びファイルの要求元クライアントへ転送し、以降、プログラム実行の各段階毎に参照が開始されるデータ群の順でプログラム及びファイルの要求元クライアントへ転送する転送ステップをさらに備える、
ことを特徴とする請求項25に記載のコンピュータ・プログラム - プログラムは複数の基本構成要素によって構成されており、
プログラム実行時においてプログラムに含まれる各基本構成要素についての参照情報を生成し、該参照情報を基に各基本構成要素間の関連性を考慮して、関連性のある複数の基本構成要素を1つのプログラム新規構成要素として生成して、プログラムを新規構成要素の集合として再構成するプログラム再構成ステップと、
プログラムの起動後実行される順に各プログラム新規構成要素によって参照が開始されるデータ群及びデータ群情報を再構成するデータ群再構成ステップをさらに備える、
ことを特徴とする請求項25に記載のコンピュータ・プログラム
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003030414A JP2004240802A (ja) | 2003-02-07 | 2003-02-07 | データ処理システム及びデータ処理方法、並びにコンピュータ・プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003030414A JP2004240802A (ja) | 2003-02-07 | 2003-02-07 | データ処理システム及びデータ処理方法、並びにコンピュータ・プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004240802A true JP2004240802A (ja) | 2004-08-26 |
JP2004240802A5 JP2004240802A5 (ja) | 2006-01-12 |
Family
ID=32957310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003030414A Pending JP2004240802A (ja) | 2003-02-07 | 2003-02-07 | データ処理システム及びデータ処理方法、並びにコンピュータ・プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004240802A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101258990B1 (ko) * | 2010-04-23 | 2013-04-26 | 에이치티씨 코퍼레이션 | 장치관리 클라이언트로부터 객체 회수방법 및 이와 관련된 장치관리 시스템 |
JP2013517578A (ja) * | 2010-01-22 | 2013-05-16 | ベイジン キングソフト ソフトウエア コーポレーテッド | アプリケーションの稼働方法、装置及びシステム |
-
2003
- 2003-02-07 JP JP2003030414A patent/JP2004240802A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013517578A (ja) * | 2010-01-22 | 2013-05-16 | ベイジン キングソフト ソフトウエア コーポレーテッド | アプリケーションの稼働方法、装置及びシステム |
KR101258990B1 (ko) * | 2010-04-23 | 2013-04-26 | 에이치티씨 코퍼레이션 | 장치관리 클라이언트로부터 객체 회수방법 및 이와 관련된 장치관리 시스템 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9104673B2 (en) | Method for supporting multiple filesystem implementations | |
US7730099B2 (en) | Storage and retrieval of richly typed hierarchical network models | |
JPH07104808B2 (ja) | 設置可能なファイルシステムにおいてダイナミックボリュームトラッキングを行う方法及び装置 | |
US20070061540A1 (en) | Data storage system using segmentable virtual volumes | |
JPH07105064A (ja) | ファイル名検出方式 | |
WO2005078603A1 (en) | Method of converting a filesystem while the filesystem remains in an active state | |
US7356493B2 (en) | Apparatus and method for passing information between catalogs in a computer operating system | |
Coleman et al. | Mass storage system reference model: Version 4 | |
JP5241298B2 (ja) | 履歴上のファイル名およびロケーションをインデックス付きにすることによりファイル・サーチおよびファイル操作を支援するためのシステムおよび方法 | |
JP4755244B2 (ja) | 情報生成方法、情報生成プログラム及び情報生成装置 | |
CN106155832A (zh) | 一种数据恢复的方法、装置及Android设备 | |
US6606631B1 (en) | IMS on-line reorganization utility | |
JP2006251990A (ja) | データベース再編成プログラムおよびデータベース再編成方法 | |
JPH0358249A (ja) | フアイルのアクセス方法 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
US20230006814A1 (en) | Method and apparatus for implementing changes to a file system that is emulated with an object storage system | |
US5745749A (en) | Method and system of file version clustering of object blocks using a compiler and database and having a predetermined value | |
JP2004240802A (ja) | データ処理システム及びデータ処理方法、並びにコンピュータ・プログラム | |
CN102341791B (zh) | 信息处理系统和方法 | |
El Kafrawy et al. | HDFSx: an enhanced model to handle small files in Hadoop with a simulating toolkit | |
JP2006146907A (ja) | 電子ファイルシステムにおけるリストおよびその他の項目の管理 | |
CN109918355A (zh) | 实现基于对象存储服务的nas的虚拟元数据映射系统和方法 | |
JPH1027116A (ja) | 不要ファイル削除装置 | |
Appuswamy | Building a File-Based Storage Stack: Modularity and Flexibility in Loris | |
CN117931608A (zh) | 一种在vmcore中统计文件缓存占用的方法及装置、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051118 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051118 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090331 |