(57)【要約】【課題】新しいソフトウェア実行方法とソフトウェア実行システムを提供する。【解決手段】当該ソフトウェア実行システムは、クライアント側（Ｃ側）の実行モジュールと、サーバ側（Ｓ側）の制御・データ分配モジュールとを含む。前者は、ソフトウェアパッケージの定義ファイルを取得、ロードすると共に、Ｃ側でアプリケーションの実行に必要な環境を構築し、実行したいアプリケーションに対応するプロセスを生成するようにＯＳを制御するプロセスロードサブモジュールと、アプリケーションからのＩ／Ｏリクエストを監視、捕捉するＩ／Ｏ監視・処理サブモジュールと、Ｓ側とネットワーク通信を行うネットワーク通信サブモジュールとを含む。後者は、Ｓ側の他のサブモジュールとＣ側の間の動作を調整する制御サブモジュールと、Ｃ側にソフトウェアパッケージ内の具体的なデータを提供するデータ分配サブモジュールを含む。【選択図】図２
2010129080.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア実行システムであって、クライアント側にあるクライアント側の実行モジュールと、サーバ側にあるサーバ側の制御・データ分配モジュールを含み、
クライアント側の実行モジュールはさらに、
ソフトウェアパッケージの定義ファイルを取得、ロードするとともに、クライアント側でアプリケーションの実行に必要な環境を構築し、実行したいアプリケーションに対応するプロセスを生成するようOSを制御するプロセスロードサブモジュールと、
アプリケーションからのＩ／Ｏリクエストを監視、捕捉するＩ／Ｏ監視・処理サブモジュールと、
リクエストに応じて、サーバ側とネットワーク通信を行い、ローカルコンピュータに関連データをダウンロードするネットワーク通信サブモジュールと
を含み、
サーバ側の制御・データ分配モジュールはさらに、
サーバ側の他のサブモジュールとクライアント側との間の動作を調整する制御サブモジュールと、クライアント側にソフトウェアパッケージの中の具体的なデータを提供するデータ分配サブモジュールとを含むことを特徴とする、ソフトウェア実行システム。
【請求項２】
クライアント側実行モジュールはさらに、キャッシュメモリ管理サブモジュールを含み、その主な役目は、サーバ側からダウンロードされたデータをローカルのキャッシュメモリに一時記憶することによって、その後の操作リクエストを加速することであることを特徴とする、請求項１に記載のソフトウェア実行システム。
【請求項３】
請求項１に記載のソフトウェア実行システムのソフトウェア実行方法であって、
（１）サーバにサーバ側の制御・データ分配モジュールを、クライアント側のコンピュータにクライアント側の実行モジュールを実装する、実行したいソフトウェアのソフトウェアソースをサーバに実装する、
（２）プロセスロードサブモジュールは、指定するソフトウェアソースのソフトウェアパッケージ定義ファイルがすでにクライアント側のキャッシュメモリに入ったか、を確認する、入っていない場合、サーバ側に接続してそれをダウンロードする、プロセスロードサブモジュールは、当該ソフトウェアパッケージと対応したワークディレクトリがあるか、を確認する、ない場合、当該ソフトウェアパッケージと対応したワークディレクトリを作成する、
（３）プロセスロードサブモジュールは、上記のワークディレクトリの位置とユーザーの指定した実行可能なファイルのファイル名によって、当該実行可能なファイルの完全なパスを得ると共に、当該パスをパラメーターとしてＯＳのＡＰＩ関数を呼び出し、新しいプロセスを生成するようＯＳを制御する、
（４）ＯＳが新しいプロセスを生成する時には、ＡＰＩ関数によって上記の完全なパスが表す上記の実行可能ファイルを開いて、「メモリ-ファイルマッピングメカニズム」に基づいて上述の実行可能ファイルの内容をプロセスのアドレス空間にマッピングする、この実行可能ファイルがその他のプログラムモジュールファイルに依存した場合、ＯＳはこのプロセスを繰り返し、当該プログラムモジュールファイルをも開いてアドレス空間にマッピングする、この過程は、全ての依存ファイルが開けられ、アドレス空間にマップされるまで繰り返す、
（５）次にＯＳは上記の実行可能ファイルで定義されたエントリ関数を実行し始める、当該関数はさらに、自分の論理によって本ファイルまたはその他のファイルの中のその他の関数を引き続き呼び出す、ＣＰＵは各関数を実行する時にすべての関数のアドレスを読み取り、それによってコマンドの内容を得て解読と実行を行う、アクセスしたアドレスに対応するファイルデータが物理メモリにない場合、ページエラーが出る、この場合、基本的な実行の流れが一時停止し、ページエラー処理サブプログラムからＩ／Ｏ読み取りリクエストを出し、対応するファイルの中の対応領域を物理メモリに読み込んだ上、元の実行の流れを実行し続けるようリクエストする、Ｉ／Ｏ監視・処理サブモジュールは全てのＩ／Ｏ読み取りリクエストを捕捉ことができる、それは、まず読み取りしたいデータがメモリにあるか、を確認する、ある場合、メモリから読み取って、上位の呼び出し者に戻して、当該読み取り作業を完了させる、メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該部分のデータをメモリにダウンロードし、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストする
というプロセスを含むことを特徴とするソフトウェア実行方法。
【請求項４】
さらに、（６）アプリケーションがデータファイルの一部の内容を読み取りたい場合、Ｉ／Ｏ監視・処理サブモジュールは当該Ｉ／Ｏ読み取りリクエストを捕捉して、読み取りしたいデータがメモリに存在しているか、を確認する、存在している場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる、メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該データをメモリにダウンロードし、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストすることを含むことを特徴とする、請求項３に記載のソフトウェア実行方法。
【請求項５】
さらに、（７）アプリケーションが終了した時、クライアント側実行モジュールがこの動作を捕捉し、それに応じたソース整理を実行することを含むことを特徴とする、請求項４又は５に記載のソフトウェア実行方法。
【請求項６】
請求項２に記載のソフトウェア実行システムのソフトウェア実行方法であって、
（１）サーバにサーバ側制御・データ分配モジュールを、クライアント側のコンピュータにクライアント側実行モジュールを実装する、実行したいソフトウェアのソフトウェアソースをサーバに実装する、
（２）プロセスロードサブモジュールは、指定したソフトウェアソースのソフトウェアパッケージ定義ファイルがすでにクライアント側のキャッシュメモリに入ったか、を確認する、入っていない場合、サーバ側に接続してダウンロードする、プロセスロードサブモジュールはあらかじめ設定した位置で当該ソフトウェアパッケージと対応するワークディレクトリが存在しているか、を確認する、存在していない場合、それを作成する、
（３）プロセスロードサブモジュールは、ワークディレクトリの位置とユーザーの指定した実行可能ファイルのファイル名によって、当該実行可能ファイルの完全なパスを取得するとともに、このパスをパラメーターとしてＯＳのＡＰＩ関数を呼び出し、新しいプロセスを生成するようOSを制御する、
（４）ＯＳが新しいプロセスを生成する時、ＡＰＩ関数を使って上述の完全なパスの表す前記実行可能ファイルを開けるとともに、「メモリ-ファイルマッピングメカニズム」に基づいて前記実行可能ファイルの内容をプロセスのアドレス空間にマッピングする、当該実行可能ファイルが他の実行可能モジュールファイルに依存する場合、ＯＳはこのプロセスを繰り返してこの依存されたプログラムモジュールファイルをも開けてアドレス空間にマッピングする、このプロセスは、全ての依存ファイルが開けられ、アドレス空間にマップされるまで繰り返す、
（５）Ｉ／Ｏ監視・処理サブモジュールは、ＯＳからのファイルを開けるというＩ／Ｏリクエストを捕捉し、ＯＳのファイルを開ける標準的なプロセスによってこのリクエストを完了すると同時に、クライアント側のローカルコンピュータに対応するキャッシュファイルがあるか、を確認する、ない場合、キャッシュメモリ管理サブモジュールは空の初期キャッシュファイルを作成する
（６）それからＯＳは前記のＷＰＳファイルにおいて定義されたエントリ関数を実行し始める、この関数はさらに自分の論理によって本ファイルまたは他のファイルの中のその他の関数を引き続き呼び出す、ＣＰＵは各関数を実行する時にそのアドレスに対して読み取り作業を実行することによって、コマンドの内容を取得し、解読と実行を行う、ＯＳがすでにこれらのアドレスと実行可能モジュールファイルについて、「メモリ-ファイルマッピングメカニズム」を通じてマッピング関係を構築しているため、ＣＰＵのアクセスしたアドレスに対応するファイルデータが物理メモリにない場合、ページエラーが出る、この場合、基本的な実行の流れが一時停止する、ページエラーの処理サブプログラムはＩ／Ｏ読み取りリクエストを出し、対応するファイルの中の対応領域を物理メモリに読み込んだ上、元の実行の流れを続けるようリクエストする、Ｉ／Ｏ監視・処理サブモジュールは、全てのＩ／Ｏ読み取りリクエストを捕捉できる、それはまず読み取りしたいデータがメモリにすでに存在しているか、を確認する、存在している場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる、メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該データをメモリにダウンロードし、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストする、
というプロセスを含むことを特徴とする、ソフトウェア実行方法。
【請求項７】
さらに、（７）アプリケーションがデータファイルの一部の内容を読み取りたい場合、Ｉ／Ｏ監視・処理サブモジュールは当該Ｉ／Ｏ読み取りリクエストを捕捉し、読み取りしたいデータがメモリに存在しているか、を確認する、存在している場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる、メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該データをメモリにダウンロードし、これらのデータをキャッシュファイルに書き込んだ上、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストすることを含むことを特徴とする、請求項７に記載のソフトウェア実行方法。
【請求項８】
（８）アプリケーションが終了した時、クライアント実行モジュールがこの動作を捕捉し、それに応じたソース整理を実行することを含むことを特徴とする請求項６又は７に記載のソフトウェア実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は新しい実行ソフトウェアの方法とソフトウェア実行システムに関する。
【背景技術】
【０００２】
まず、出願過程において用いる技術用語について説明をする。
【０００３】
メモリ−ファイルマッピングメカニズムとは、ＯＳのＩ／Ｏメカニズムの一つであって、ファイルの内容をプロセスのアドレス空間にマップし、その後これらのメモリアドレスにアクセスすると、ファイルの内容を読み取ることができる。そのボトムレイヤの実現において、ファイルの内容が通常すべて物理メモリに読み込まれず、ＯＳのページエラー処理メカニズムにより実際に必要な部分が読み込まれる。
【０００４】
プログラムモジュールファイルとは、アプリケーションの実行に必要なコマンドを保存しているファイルをいう。ＯＳがメモリ-ファイルマッピングメカニズムを通じてその中のデータを読み取る。例えばよくある拡張子が．ＥＸＥ／．ＤＬＬのファイルがこういうファイルに属する。
【０００５】
データファイルとは、アプリケーションの実行時に自動的にＯＳの提供したＩ／ＯＡＰＩ関数を呼び出してアクセスするファイルをいう。通常、構成データ、画像または音楽などのソースデータなどを保存する。
【０００６】
ソフトウェアパッケージとは、１つまたは１セットのプログラムを実行する時に使われるデータの集合をいい、１つまたは複数のソフトウェアの必要となるファイルを含む。たとえば、１つのＷＰＳソフトウェアパッケージには、ＷＰＳ文字、ＷＰＳデモおよびＷＰＳ表という３つのソフトウェアの必要となるファイルを含む。
【０００７】
ソフトウェアパッケージ定義ファイルとは、ソフトウェアパッケージに含まれたデータ項目、およびこれらのデータ項目へのアクセスアドレスなどのデータを記載するファイルをいう。
【０００８】
ソフトウェアソースとは、ソフトウェアパッケージとそのソフトウェアパッケージの定義ファイルからなるものをいい、フローモードで実行できるソフトウェアパッケージを表す。
【０００９】
プログラムが実現できる論理や機能はＣＰＵが認識、実行できる一連のコマンドで実現される。これらのコマンドは通常一つ一つのサブプログラム（またはサブ関数ともいう）に分割され、一つまたは複数のファイルに保存されている。これらのファイルをプログラムモジュールファイルという。プログラムは、その設計によって、その機能の実現に必要なデータ、例えばプログラム構成、画像、音声などを単独なファイルに保存し、使用時にＯＳのＩ／ＯＡＰＩ関数を利用して読み書きを行うこともできる。これらのファイルをデータファイルという。
【００１０】
サブプログラムを構成したコマンドは実行前に必ずメモリに読み込まれなければならない。あるプログラムの実行中に、一連のサブプログラム（サブ関数）が順次に実行されるが、これらのサブプログラムは通常同一ファイルに順次に保存されているわけではなく、異なったプログラムモジュールファイルに保存されているかもしれない。例えば、Ａｐｐというプログラムがある。それはａｐｐp．ＥＸＥ、ｆｏｏ．ＤＬＬとｂａｒ．ＤＬＬという３つの実行可能なモジュールファイルから構成されている。ａｐｐ．ＥＸＥには、のＡ、Ｂ、Ｃのサブプログラムを、ｆｏｏ．ＤＬＬにはＤのサブプログラムを、ｂａｒ．ＤＬＬにはＥのサブプログラムを含んでいる。仮にＡｐｐプログラムが起動する時にＡ−）Ｄ−）Ｂという順番でサブプログラムを呼び出す一方、画面にあるメニューをクリックすると、Eを読み取るとする。すると、起動をするために、ａｐｐ．ＥＸＥとｆｏｏ．ＤＬＬファイルの中の対応する位置の内容は必要に応じてメモリに読み込まれる必要がある。メニューをクリックすると、ｂａｒ．ＤＬＬの中のEに対応する領域もメモリに読み込まれる必要がある。
【００１１】
一方、上述した実行プロセスにおいて、いかなる時にも３つのファイルの中の全ての内容を使っていない。起動中にｂａｒ．ＤＬＬファイルが使われるわけがない。ａｐｐ．ＥＸＥは必要であるが、Cのサブプログラムを保存した部分が使われなかった。そのため、プログラムモジュールファイルにとって、ファイルとファイル内のデータブロックという２つのレベルにおいて一部しか使われていない。
【００１２】
データファイルはそれと同様である。プログラムはある時に全てのデータファイル、またはあるファイルの全ての領域を読み取らない可能性がある。そのため、プログラムモジュールファイルもファイルとファイル内のデータブロックという２つのレベルにおいて一部しか使われていない。
【００１３】
こういったことがあるにもかかわらず、プログラム実行フローが必要となるデータが満たされなければ、プログラムを引き続き実行することができないのである。プログラムはユーザーの操作方法、入力するデータによって、その内部の実行フローが異なり、予想することもできないため、従来のモードでは、ソフトウエアパッケージの中の一部のファイルとデータがまったく使われなくても、その全てのファイルをインストールプログラムによってインストールしなければ、プログラムを起動することができない。こうして、コンピュータの記憶空間とこれらのデータの用意にかかる時間を増やすに違いない。
【００１４】
上述したように、従来のソフトウェアの実行方法には二つの欠点がある。第一、コンピュータの中のファイルとファイル内のデータの使用が不十分で（一部のみ使用）、コンピュータの記憶空間を無駄にしている。第二、従来のソフトウェアを実行するに、ローカルコンピュータにインストールしなければならないため、コンピュータは大きい記憶空間を必要とし、インストールに時間と手間がかかる。
【００１５】
そこで、アプリケーションの実行においてデータに対する使用リクエストを捕捉し、それぞれのリクエストを満たすメカニズムを実現できれば、インストールを実行せずにプログラムを実行することができ、更にローカルコンピュータの記憶空間を節約することができるので、同時に上述した二つの欠点を解消するようになる。
【発明の概要】
【発明が解決しようとする課題】
【００１６】
本発明は従来の技術の欠点を解消するもので、その第一の目的は、ローカルコンピュータにソフトウェアをインストールする必要はなく、更にローカルコンピュータにソフトウェアソース全体を記憶する必要はなく、データフローでアプリケーションを実行することができるソフトウェア実行システムを提供することである。
【００１７】
本発明の第二の目的は、上記のシステムを利用してソフトウェアを実行する方法を提供することである。
【課題を解決するための手段】
【００１８】
上記の第一の目的を達成するために、本発明は以下の手段を提供する。
【００１９】
ソフトウェア実行システムであって、クライアント側にあるクライアント側の実行モジュールと、サーバ側にあるサーバ側の制御・データ分配モジュールを含み、
クライアント側の実行モジュールはさらに、
ソフトウェアパッケージの定義ファイルを取得、ロードするとともに、クライアント側でアプリケーションの実行に必要な環境を構築し、実行したいアプリケーションに対応するプロセスを生成するようOSを制御するプロセスロードサブモジュールと、
アプリケーションからのＩ／Ｏリクエストを監視、捕捉するＩ／Ｏ監視・処理サブモジュールと、
リクエストに応じて、サーバ側とネットワーク通信を行い、ローカルコンピュータに関連データをダウンロードするネットワーク通信サブモジュールと
を含み、
サーバ側の制御・データ分配モジュールはさらに、
サーバ側の他のサブモジュールとクライアント側との間の動作を調整する制御サブモジュールと、
クライアント側にソフトウェアパッケージの中の具体的なデータを提供するデータ分配サブモジュールと
を含む。
【００２０】
上記の第二の目的を達成するために、本発明は以下の手段を提供する。
【００２１】
上記のソフトウェア実行システムを利用してソフトウェアを実行する方法は、
（１）サーバにサーバ側の制御・データ分配モジュールを、クライアント側のコンピュータにクライアント側の実行モジュールを実装する。実行したいソフトウェアのソフトウェアソースをサーバに実装する。
（２）プロセスロードサブモジュールは、指定するソフトウェアソースのソフトウェアパッケージ定義ファイルがすでにクライアント側のキャッシュメモリに入ったか、を確認する。入っていない場合、サーバ側に接続してそれをダウンロードする。プロセスロードサブモジュールは、当該ソフトウェアパッケージと対応したワークディレクトリがあるか、を確認する。ない場合、当該ソフトウェアパッケージと対応したワークディレクトリを作成する。
（３）プロセスロードサブモジュールは、上記のワークディレクトリの位置とユーザーの指定した実行可能なファイルのファイル名によって、当該実行可能なファイルの完全なパスを得ると共に、当該パスをパラメーターとしてＯＳのＡＰＩ関数を呼び出し、新しいプロセスを生成するようＯＳを制御する。
（４）ＯＳが新しいプロセスを生成する時には、ＡＰＩ関数によって上記の完全なパスが表す上記の実行可能ファイルを開いて、「メモリ-ファイルマッピングメカニズム」に基づいて上述の実行可能ファイルの内容をプロセスのアドレス空間にマッピングする。この実行可能ファイルがその他のプログラムモジュールファイルに依存した場合、ＯＳはこのプロセスを繰り返し、当該プログラムモジュールファイルをも開いてアドレス空間にマッピングする。この過程は、全ての依存ファイルが開けられ、アドレス空間にマップされるまで繰り返す。
（５）次にＯＳは上記の実行可能ファイルで定義されたエントリ関数を実行し始める。当該関数はさらに、自分の論理によって本ファイルまたはその他のファイルの中のその他の関数を引き続き呼び出す。ＣＰＵは各関数を実行する時にすべての関数のアドレスを読み取り、それによってコマンドの内容を得て解読と実行を行う。アクセスしたアドレスに対応するファイルデータが物理メモリにない場合、ページエラーが出る。この場合、基本的な実行の流れが一時停止し、ページエラー処理サブプログラムからＩ／Ｏ読み取りリクエストを出し、対応するファイルの中の対応領域を物理メモリに読み込んだ上、元の実行の流れを実行し続けるようリクエストする。Ｉ／Ｏ監視・処理サブモジュールは全てのＩ／Ｏ読み取りリクエストを捕捉ことができる。それは、まず読み取りしたいデータがメモリにあるか、を確認する。ある場合、メモリから読み取って、上位の呼び出し者に戻して、当該読み取り作業を完了させる。メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該部分のデータをメモリにダウンロードし、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストする。
【００２２】
上記のソフトウェアの実行方法は、データフローという新しいソフトウェア実行モードである。すなわち、クライアント側のコンピュータに実行したいソフトウェア全体をインストールする必要はなく、クライアント側のコンピュータに小さいクライアント側実行環境、即ち上記のクライアント側実行モジュールを実装するだけである。ソフトウェアの実行に必要なサブプログラムは、データフローの方式でサーバ側からダウンロードする。無用なファイルまたはサブプログラムをダウンロードする必要はない。こうして、クライアント側のコンピュータに対する記憶空間の要求を低減できるだけでなく、クライアント側でソフトウェア全体のインストールが省かれた。上記のソフトウェアの実行方法にはさらに、ソフトウェアのセキュリティを強化したというメリットがある。クライアント側のコンピュータでインストールされるソフトウェアは、解読されて海賊版のものが作られることが発生しやすい。この方法によるソフトウェアは、クライアント側にソフトウェアソースがないため、解読される可能性がないのである。
【００２３】
更なる手段として、上記の方法はさらに、（６）アプリケーションがデータファイルの一部の内容を読み取りたい場合、Ｉ／Ｏ監視・処理サブモジュールは当該Ｉ／Ｏ読み取りリクエストを捕捉して、読み取りしたいデータがメモリに存在しているか、を確認する。存在している場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる。メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該データをメモリにダウンロードし、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストすることを含む。
【００２４】
通常のソフトウェア実行には、データファイルを読み取る必要があるが、上記の手順はデータファイルに対する読み取りメカニズムである。
【図面の簡単な説明】
【００２５】
【図１】サーバ側にあるＷＰＳソフトウェアパッケージの中のファイル集合を示す図である。
【図２】第２の実施の形態を示す、ソフトウェア実行システムの構造の枠図である。
【発明を実施するための形態】
【００２６】
続いて本発明に係る実施の形態について、具体的な説明をする。
【００２７】
［第１の実施の形態］
ソフトウェア実行システムは、クライアント側にあるクライアント側実行モジュールと、サーバ側にあるサーバ側制御・データ分配モジュールを含む。
【００２８】
クライアント側実行モジュールは更に、
ソフトウェアパッケージ定義ファイルを取得、ロードし、クライアント側でアプリケーションの実行に必要な環境を構築する一方、実行したいアプリケーションに対応するプロセスを生成するようOSを制御するプロセスロードサブモジュールと、
アプリケーションからのＩ／Ｏリクエストを監視、捕捉し、本発明の下記の特別な処理の流れ（ここで述べた処理の流れとは、例えば下記の第１の実施の形態の中の手順５に述べられた「Ｉ／Ｏ監視・処理サブモジュールは、全てのＩ／Ｏ読み取りリクエストを捕捉し、まず読み取りしたいデータがメモリに存在しているか、を確認する。存在している場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる。メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該データをメモリにダウンロードし、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストする」、また、例えば第２の実施の形態の手順５に述べられる「Ｉ／Ｏ監視・処理サブモジュールは、ＯＳからのファイルを開けるというＩ／Ｏリクエストを捕捉し、ＯＳのファイルを開ける標準的なプロセスによってこのリクエストを完了すると同時に、クライアント側のローカルコンピュータに対応するキャッシュファイルがあるか、を確認する。ない場合、キャッシュメモリ管理サブモジュールは空の初期キャッシュファイルを作成する」を指す）で処理するＩ／Ｏ監視・処理サブモジュールと、
他のサブモジュールからのリクエストに応じて、サーバ側とネットワーク通信を行い、関連データをローカルコンピュータにダウンロードするネットワーク通信サブモジュール
とを含む。
【００２９】
サーバ側の制御・データ分配モジュールは更に、
サーバ側の他のサブモジュールとクライアント側との間の動作を調整する制御サブモジュールと、
クライアントにソフトウェアパッケージの中の具体的なデータを提供するデータ分配サブモジュールと
を含む。
【００３０】
次にＷＰＳソフトウェアを例として、上記のソフトウェア実行システムを利用してソフトウェアを実行する方法を説明する。この方法は、下記の過程を含む。
【００３１】
１．環境の用意。サーバにサーバ側の関連モジュールを実装する。クライアントのコンピュータにクライアント側の関連モジュールを実装する。補助ツールを利用してＷＰＳアプリケーションのためにソフトウェアソース（もちろん、事前に作成したソフトウェアソースを使用してもよい。このソフトウェアソースは、図１に示したＷＰＳソフトウェアパッケージとソフトウェアパッケージの定義ファイルを含む。当該ソフトウェアパッケージにはＷＰＳ文字、ＷＰＳデモとＷＰＳ表という３つのアプリケーションの必要となるファイルを含む。次にユーザーがＷＰＳ文字のアプリケーションを使うことを例にして説明をする）を作成する。ソフトウェアソースをサーバに実装する。次に、エンドユーザーはクライアント側のコンピュータでクライアント側実行モジュールを実行し、サーバのネットワークアドレス、ソフトウェアソース名、実行可能プログラムのファイル名などの情報を提供して実行の流れを起動する。 
【００３２】
２．プロセスロードサブモジュールは、上記のソフトウェアソースのソフトウェアパッケージ定義ファイルがすでにクライアント側のキャッシュメモリに入ったか、を確認する。入っていない場合、サーバ側に接続してダウンロードする。プロセスロードサブモジュールはあらかじめ設定した位置で当該ソフトウェアパッケージと対応するワークディレクトリが存在しているか、を確認する。存在していない場合、それを作成する。あらかじめ設定した位置は、ローカルのディスクの任意の位置、例えばC:ProgramFiles＼Kingsoftの中の「ＷＰＳ文字」フォルダ、でよい。
【００３３】
３．プロセスロードサブモジュールは、ワークディレクトリの位置（C:＼ProgramFiles＼Kingsoft＼ＷＰＳ文字）とユーザーの指定した実行可能ファイルのファイル名（図１の中のＷＰＳファイル）によって、当該ＷＰＳファイルの完全なパスを取得することができる。プロセスロードサブモジュールはこのパスをパラメーターとしてＯＳのＡＰＩ関数を呼び出し、新しいプロセスを生成するようＯＳを制御する。
【００３４】
４．ＯＳが上記の新しいプロセスを生成する時、ＡＰＩ関数を使って上述の完全なパスの表す実行可能ファイルＷＰＳを開ける。しかし、このファイルＷＰＳがローカルコンピュータに存在していない。ローカルコンピュータに存在しているのは、「ＷＰＳ文字」フォルダにあるＷＰＳという空のファイル（上記のＷＰＳファイルと混同しないように、このＷＰＳ空ファイルを「ＷＰＳ空」と称する）であって、「メモリ-ファイルマッピングメカニズム」に基づいてＷＰＳファイルの内容をプロセスのアドレス空間にマッピングする。ＷＰＳファイルが他の実行可能モジュールファイルに依存する（他のモジュールの関数を使っている。たとえばＷＰＳｃｏｒｅ．ＤＬＬ）場合、ＯＳはこのプロセスを繰り返してこの依存されたＷＰＳｃｏｒｅ．ＤＬＬファイルをも開けてアドレス空間にマッピングする。このプロセスは、全ての依存ファイルが開けられ、アドレス空間にマップされるまで繰り返す。
【００３５】
５．それからＯＳは前記のＷＰＳファイルにおいて定義されたエントリ関数を実行し始める。この関数はさらに自分の論理によって本ファイルまたは他のファイルの中のその他の関数を引き続き呼び出す。ＣＰＵは各関数を実行する時にそのアドレスに対して読み取り作業を実行することによって、コマンドの内容を取得し、解読と実行を行う。ＯＳがすでにこれらのアドレスと実行可能モジュールファイルについて、「メモリ-ファイルマッピングメカニズム」を通じてマッピング関係を構築しているため、ＣＰＵのアクセスしたアドレスに対応するファイルデータが物理メモリにない場合、ページエラーが出る。この場合、基本的な実行の流れが一時停止する。ページエラーの処理サブプログラムはＩ／Ｏ読み取りリクエストを出し、対応するファイルの中の対応領域を物理メモリに読み込んだ上、元の実行の流れを続けるようリクエストする。Ｉ／Ｏ監視・処理サブモジュールは、全てのＩ／Ｏ読み取りリクエストを捕捉できる。それはまず読み取りしたいデータがメモリにすでに存在しているか、を確認する。存在している場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる。メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該データをメモリにダウンロードし、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストする。
【００３６】
６．同様に、アプリケーションがデータファイル（例えば、フォルダｄａｔａの中のあるファイル）のある部分の内容を読み取りたい場合、Ｉ／Ｏ監視・処理サブモジュールは、このＩ／Ｏ読み取りリクエストを捕捉し、読み取りしたいデータがメモリにすでに存在しているか、を確認する。存在している場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる。メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該データをメモリにダウンロードした上、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストする。
【００３７】
最後に、アプリケーションが終了した時、クライアント側実行モジュールはこの動作を捕捉して、それに応じたソース整理を実行する。
【００３８】
［第２の実施の形態］
この実施の形態と第１の実施の形態との違いは、第１の実施の形態に示したソフトウェア実行システムに、キャッシュメモリ管理サブモジュール（図２を参照）を加えたことにある。当該キャッシュメモリ管理サブモジュールはクライアント側実行モジュールの一部であって、その主な役目は、サーバ側からダウンロードされたデータをローカルのキャッシュメモリに一時記憶することによって、その後の操作リクエストを加速することである。上記の第１の実施の形態に示したソフトウェアの実行方法の手順５と手順６で明らかなように、読み取りしたいデータがサーバ側からダウンロードされた後、メモリに格納されるが、メモリの中のデータが随時に更新されているため、この部分のデータは次回に使う必要がある場合、サーバ側から再びダウンロードしなければならない。こうして、実行速度が少し遅くなるし、面倒くさいである。前記キャッシュメモリ管理サブモジュールは、この部分のダウンロードしたデータを一時的にローカルの空間に記憶することができ、次回にこの部分のデータを使う必要がある場合、まずこのローカルの空間から検索する。ローカルの空間にこの部分のデータがあるとき、再度ダウンロードする必要はない。
【００３９】
それに関連して、この実施の形態におけるソフトウェアの実行方法も第１の実施の形態のソフトウェアの実行方法と異なっている。ただし、最初の手順１〜４は第１の実施の形態と同様であるので、再度の説明は省略する。その次の手順は下記の通りである。
【００４０】
５．Ｉ／Ｏ監視・処理サブモジュールは、ＯＳの出した、ファイルを開けるＩ／Ｏリクエストを捕捉し、ＯＳのファイルを開ける標準的なプロセスによって当該リクエストを完了すると同時に、クライアント側のローカルコンピュータにすでに対応するキャッシュファイルがあるか、を確認する。ない場合、キャッシュメモリ管理サブモジュールは空の初期キャッシュファイルを生成する。
【００４１】
６．次にＯＳは前記実行可能ファイルに定義されたエントリ関数を実行し始める。当該エントリ関数はさらに、自分の論理によって本ファイルまたは他のファイルの中のその他の関数を引き続き読み呼び出す。ＣＰＵは各関数を実行する時にすべての関数のアドレスを読み取ることによって、コマンドの内容を取得し、解読と実行を行う。アクセスしたアドレスに対応するファイルデータが物理メモリにない場合、ページエラーが出る。この場合、基本的な実行の流れが一時停止する。ページエラーの処理サブプログラムは、Ｉ／Ｏ読み取りリクエストを出し、対応するファイルの対応領域を物理メモリに読み込んだ上、元の実行の流れを実行し続けるようリクエストする。Ｉ／Ｏ監視・処理サブモジュールは、全てのＩ／Ｏ読み取りリクエストを捕捉ことができる。まず読み取りしたいデータがメモリにあるか、を確認する。ある場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる。メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該部分のデータをメモリにダウンロードし、これらのデータをキャッシュファイルに書き込んだ上、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストする。
【００４２】
ｆ
７．アプリケーションがデータファイルの一部の内容を読み取りたい場合、Ｉ／Ｏ監視・処理サブモジュールは当該Ｉ／Ｏ読み取りリクエストを捕捉し、読み取りしたいデータがメモリに存在しているか、を確認する。存在している場合、メモリから読み取り、上位の呼び出し者に戻して当該読み取り作業を完了させる。メモリにない場合、Ｉ／Ｏ監視・処理サブモジュールはネットワーク通信サブモジュールに対して、サーバ側から当該データをメモリにダウンロードし、これらのデータをキャッシュファイルに書き込んだ上、上位の呼び出し者に戻して当該読み取り作業を完了させるようリクエストする。
【００４３】
最後に、アプリケーションが終了した時、クライアント実行モジュールはこの動作を捕捉し、それに応じたソース整理を実行する。例えば、キャッシュファイル、ワークディレクトリの中の「ＷＰＳ空」ファイルなどを削除する。
【００４４】
以上の実施の形態は本発明の手段を説明するためのものであるが、本発明を制限するものではない。本発明の目的と範囲を逸脱していないすべての変更と部分的書き換えは、本発明の請求の範囲に含まれるものである。
【図２】
2010129080.tif 000003
【図１】
2010129080.tif 000004
【外国語明細書】
2010129080000001.pdf