(57)【要約】      （修正有）【課題】ＯＳ、ミドルウェア等、他社製品のパッチ等の変更により、再配置処理が無効化されるのを自動的に回復することが可能な情報処理装置およびプログラム再配置処理方法を提供する。【解決手段】アプリケーション１が起動すると、再配置処理必要性検知手段３が再配置処理の必要性を検知すると、再配置処理開始手段４がアプリケーションを終了するとともに更新用プログラム７を起動させ、再配置処理手段５がアプリケーション内の再配置処理を実施する。再配置処理手段５が再配置処理を実施している最中に、アプリケーションが起動命令を受け付けても、アプリケーション起動抑制手段６がアプリケーションの起動を抑制する。そして、再配置処理が終了すると、アプリケーションを再起動させる。【選択図】図１
2007114859.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションおよび該アプリケーションに依存する依存プログラムの再配置処理を行う情報処理装置において、
前記アプリケーションおよび前記依存プログラムの変更の有無を検出し、該アプリケーションおよび該依存プログラムの再配置処理の必要性を検知する再配置処理必要性検知手段と、
前記再配置処理必要性検知手段で再配置処理の必要性を検知した場合、前記再配置処理を開始するための処理を行う再配置処理開始手段と、
前記アプリケーションおよび前記依存プログラムに対する再配置処理を実施する再配置処理手段と
を具備することを特徴とする情報処理装置。
【請求項２】
前記再配置処理手段が前記再配置処理を実施している間の前記アプリケーションの起動を抑制するアプリケーション起動抑制手段
を更に具備し、
前記アプリケーションは、
前記再配置処理必要性検知手段および前記再配置処理開始手段を内包し、
前記再配置処理必要性検知手段は、
前記アプリケーションが起動された際に、該アプリケーションおよび前記依存プログラムの再配置処理の必要性を検知する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記再配置処理必要性検知手段は、
基本ソフトウェアが起動された際に、前記アプリケーションおよび前記依存プログラムの再配置処理の必要性を検知する
ことを特徴とする請求項１記載の情報処理装置。
【請求項４】
第１のプログラムが前記再配置処理必要性検知手段および前記再配置処理開始手段を内包し、第２のプログラムが前記再配置処理手段を内包する場合、
前記基本ソフトウェアが起動された際に、前記第１のプログラムのみが起動し、
前記再配置処理必要性検知手段で再配置処理の必要性を検知した場合、前記再配置処理開始手段が前記基本ソフトウェアの次回起動時に前記第２のプログラムが起動されるような設定を該基本ソフトウェアに対して行い
前記基本ソフトウェアの次回起動時に、前記第２のプログラムのみが起動し、
前記再配置処理手段が前記アプリケーションおよび前記依存プログラムに対する再配置処理を実施する
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
アプリケーションおよび該アプリケーションに依存する依存プログラムの再配置処理を行うプログラム再配置処理方法において、
再配置処理必要性検知手段が前記アプリケーションおよび前記依存プログラムの変更の有無を検出し、該アプリケーションおよび該依存プログラムの再配置処理の必要性を検知し、
前記再配置処理の必要性を検知した場合、再配置処理開始手段が前記再配置処理を開始するための処理を行い、
再配置処理手段が前記アプリケーションおよび前記依存プログラムに対する再配置処理を実施する
ことを特徴とするプログラム再配置処理方法。
【請求項６】
前記アプリケーションが前記再配置処理必要性検知手段および前記再配置処理開始手段を内包する場合、
前記アプリケーションが起動された際に、前記再配置処理必要性検知手段が該アプリケーションおよび前記依存プログラムの再配置処理の必要性を検知し、
アプリケーション起動制御手段が前記再配置処理を実施している間の前記アプリケーションの起動を抑制する
ことを特徴とする請求項５記載のプログラム再配置処理方法。
【請求項７】
前記再配置処理必要性検知手段は、
基本ソフトウェアが起動された際に、前記アプリケーションおよび前記依存プログラムの再配置処理の必要性を検知する
ことを特徴とする請求項５記載のプログラム再配置処理方法。
【請求項８】
第１のプログラムが前記再配置処理必要性検知手段および前記再配置処理開始手段を内包し、第２のプログラムが前記再配置処理手段を内包する場合、
前記基本ソフトウェアが起動された際に、前記第１のプログラムのみが起動し、
前記再配置処理必要性検知手段で再配置処理の必要性を検知した場合、前記再配置処理開始手段が前記基本ソフトウェアの次回起動時に前記第２のプログラムが起動されるような設定を該基本ソフトウェアに対して行い、
前記基本ソフトウェアの次回起動時に、前記第２のプログラムのみが起動し、
前記再配置処理手段が前記アプリケーションおよび前記依存プログラムに対する再配置処理を実施する
ことを特徴とする請求項７記載のプログラム再配置処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびプログラム再配置処理方法に関し、特に、予めアプリケーションの再配置処理を静的に行っておく情報処理装置およびプログラム再配置処理方法に関する。
【背景技術】
【０００２】
再配置処理には大きく、
１．プログラム（ＥＸＥファイル、ＤＬＬファイル）のロードアドレスの変更。プログラム内でのアドレス参照の解決
２．依存（リンク）する他プログラムへのアドレス参照の解決
がある。
【０００３】
ＯＳ［Operating System］は、これらの再配置処理をプログラム実行時に自動的に行う。
【０００４】
例えば、予め静的にアドレス解決された依存プログラム（ＤＬＬ相当）を動的にロードすることで、再配置を行わずにプログラムロードを実現する動的リンクによるプログラムロード方式がある（例えば、特許文献１参照。）。
【０００５】
また、このような手法により、ＯＳによる動的な再配置処理が発生しないため、プログラムロード処理を最適化することができ、また、複数のアプリケーションが同じ依存プログラム（ＤＬＬ）に依存する際に、再配置処理によるコードページの書き換えが発生しないため、依存プログラムの（メモリ上の）全てのコードイメージを共有できることから、メモリの有効利用に繋がり、また、コードページの書き換えが発生しないため、ページアウト時にスワップファイルへの書き込み処理が発生しないことから、スワップファイルの有効利用に繋がる。
【特許文献１】特開平３−１５７７２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上述した１．プログラム（ＥＸＥファイル、ＤＬＬファイル）のロードアドレスの変更、プログラム内でのアドレス参照の解決は、それぞれのプログラム内での論理アドレスの変換であり、ソフトウェアの配布元で予め最適化が可能であるが、上述した２．依存（リンク）する他プログラムへのアドレス参照の解決は、各依存するプログラムで１の処理が予め行われていることが前提であり、且つ、依存するプログラムにはＯＳ等から提供されるものが存在するため、インストール先の環境毎に最適化処理が必要となってしまう。
【０００７】
ただし、２の処理に関しては、配布されるプログラムおよびＯＳ等の他のプログラムがパッチ等により修正が入ると、公開アドレス値が変更されるため、２の処理の効果はなくなり、最適化を維持するためには、パッチ修正後に再度２の処理が必要となる。
【０００８】
そこで、本発明は、ＯＳ、ミドルウェア等、他社製品のパッチ等の変更により、再配置処理が無効化されるのを自動的に回復することが可能な情報処理装置およびプログラム再配置処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、請求項１の発明は、アプリケーションおよび該アプリケーションに依存する依存プログラムの再配置処理を行う情報処理装置において、前記アプリケーションおよび前記依存プログラムの変更の有無を検出し、該アプリケーションおよび該依存プログラムの再配置処理の必要性を検知する再配置処理必要性検知手段と、前記再配置処理必要性検知手段で再配置処理の必要性を検知した場合、前記再配置処理を開始するための処理を行う再配置処理開始手段と、前記アプリケーションおよび前記依存プログラムに対する再配置処理を実施する再配置処理手段とを具備することを特徴とする。
【００１０】
また、請求項２の発明は、請求項１の発明において、前記再配置処理手段が前記再配置処理を実施している間の前記アプリケーションの起動を抑制するアプリケーション起動抑制手段を更に具備し、前記アプリケーションは、前記再配置処理必要性検知手段および前記再配置処理開始手段を内包し、前記再配置処理必要性検知手段は、前記アプリケーションが起動された際に、該アプリケーションおよび前記依存プログラムの再配置処理の必要性を検知することを特徴とする。
【００１１】
また、請求項３の発明は、請求項１の発明において、前記再配置処理必要性検知手段は、基本ソフトウェアが起動された際に、前記アプリケーションおよび前記依存プログラムの再配置処理の必要性を検知することを特徴とする。
【００１２】
また、請求項４の発明は、請求項３の発明において、第１のプログラムが前記再配置処理必要性検知手段および前記再配置処理開始手段を内包し、第２のプログラムが前記再配置処理手段を内包する場合、前記基本ソフトウェアが起動された際に、前記第１のプログラムのみが起動し、前記再配置処理必要性検知手段で再配置処理の必要性を検知した場合、前記再配置処理開始手段が前記基本ソフトウェアの次回起動時に前記第２のプログラムが起動されるような設定を該基本ソフトウェアに対して行い前記基本ソフトウェアの次回起動時に、前記第２のプログラムのみが起動し、前記再配置処理手段が前記アプリケーションおよび前記依存プログラムに対する再配置処理を実施することを特徴とする。
【００１３】
また、請求項５の発明は、アプリケーションおよび該アプリケーションに依存する依存プログラムの再配置処理を行うプログラム再配置処理方法において、再配置処理必要性検知手段が前記アプリケーションおよび前記依存プログラムの変更の有無を検出し、該アプリケーションおよび該依存プログラムの再配置処理の必要性を検知し、前記再配置処理の必要性を検知した場合、再配置処理開始手段が前記再配置処理を開始するための処理を行い、再配置処理手段が前記アプリケーションおよび前記依存プログラムに対する再配置処理を実施することを特徴とする。
【００１４】
また、請求項６の発明は、請求項５の発明において、前記アプリケーションが前記再配置処理必要性検知手段および前記再配置処理開始手段を内包する場合、前記アプリケーションが起動された際に、前記再配置処理必要性検知手段が該アプリケーションおよび前記依存プログラムの再配置処理の必要性を検知し、アプリケーション起動制御手段が前記再配置処理を実施している間の前記アプリケーションの起動を抑制することを特徴とする。
【００１５】
また、請求項７の発明は、請求項５の発明において、前記再配置処理必要性検知手段は、基本ソフトウェアが起動された際に、前記アプリケーションおよび前記依存プログラムの再配置処理の必要性を検知することを特徴とする。
【００１６】
また、請求項８の発明は、請求項７の発明において、第１のプログラムが前記再配置処理必要性検知手段および前記再配置処理開始手段を内包し、第２のプログラムが前記再配置処理手段を内包する場合、前記基本ソフトウェアが起動された際に、前記第１のプログラムのみが起動し、前記再配置処理必要性検知手段で再配置処理の必要性を検知した場合、前記再配置処理開始手段が前記基本ソフトウェアの次回起動時に前記第２のプログラムが起動されるような設定を該基本ソフトウェアに対して行い、前記基本ソフトウェアの次回起動時に、前記第２のプログラムのみが起動し、前記再配置処理手段が前記アプリケーションおよび前記依存プログラムに対する再配置処理を実施することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、ＯＳ、ミドルウェア等、アプリケーションが依存する他のプログラムのパッチの有無を検知し、リンク先プログラムへのアドレス参照の解決を自動で施すことで、プログラム起動の最適化、メモリの有効利用、スワップファイルの有効利用を維持することが可能になるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下、本発明に係る情報処理装置およびプログラム再配置処理方法の実施の形態について添付図面を参照して詳細に説明する。
【実施例１】
【００１９】
図１は、本発明の構成要件の各手段の実現方法の可能な組み合わせの実施例１を示す図である。
【００２０】
なお、実施例１では、アプリケーション起動時に再配置処理の必要性を検知する構成について説明する。
【００２１】
本発明の構成要件は、アプリケーション１の依存する各依存プログラム２（即ち、依存ＤＬＬ［Dynamic Link Library］）がパッチ等により変更されていないか検出する再配置処理必要性検知手段３と、再配置処理必要性検知手段３で再配置処理の必要性が検出された際に再配置処理を開始する再配置処理開始手段４と、再配置処理開始手段４での開始により再配置処理を実施する再配置処理手段５と、再配置処理手段５が再配置処理実施中にアプリケーション１の起動を抑制するアプリケーション起動抑制手段６とから成る。
【００２２】
図１に示すように、依存プログラム２（依存ＤＬＬ１、依存ＤＬＬ２、…、依存ＤＬＬＮ）を有するアプリケーション１は再配置処理必要性検知手段３と再配置処理開始手段４とを具備し、再配置処理の必要性がありと検知された際に起動される更新用プログラム７は再配置処理手段５とアプリケーション起動抑制手段６とを具備している。
【００２３】
これらの各手段の機能的な動作について説明する。
【００２４】
アプリケーション１が起動されると、アプリケーション１内の再配置処理必要性検知手段３が再配置処理の必要性の検知を行う。
【００２５】
なお、検知方法として、ロードされたプログラムの各コードページ領域（仮想アドレス上のプログラムコードが配置されるページ）がＯＳにより動的な再配置処理が行われたことを示すＤｉｒｔｙ（ページアウト時にスワップファイルへの書き出しが必要）であるか、Ｒｅａｄ  Ｏｎｌｙ（Ｄｉｒｔｙではない）であるか判別する。Ｒｅａｄ  Ｏｎｌｙであれば、再配置処理の必要性がないと判断し、Ｄｉｒｔｙであれば、再配置処理の必要性はありと判断する（即ち、ＯＳにより動的な再配置処理が行われた→適切な静的は配置処理が行われた→再配置処理が必要）。
【００２６】
また、Ｄｉｒｔｙの判別の他に、
（ａ）依存プログラムのリスト、および各依存プログラム毎に参照アドレスとその論理名の対のリストである図５に示す参照先リスト（なお、参照先リストは全てのプログラム（例えば、ＥＸＥ、ＤＬＬ等）が本発明とは無関係に元来有している）から依存プログラムを抽出する処理
（ｂ）（ａ）の処理で抽出した各プログラム毎に論理名をキーに参照アドレスを抽出し、参照先プログラムの自身の論理名とアドレスの対のリストであるシンボル情報と比較し、該当アドレスの変更の有無を調べる処理
を合わせて行うことで、再配置処理の必要性を検知しても良い。なお、これらの処理の完了時に、調査結果を予め再配置処理候補リストとして作成しておき、その後起動する更新用プログラム７に当該再配置処理候補リストを渡す。
【００２７】
再配置処理必要性検知手段３で再配置処理の必要性を検知した場合、アプリケーション１内の再配置処理開始手段４が再配置処理を開始する。なお、再配置処理の開始タイミングとして、更新のためにアプリケーション１は終了され、同時に更新用プログラム７を起動する。
【００２８】
更新用プログラム７が起動すると、更新用プログラム７内の再配置処理手段５が再配置処理を実施する。
【００２９】
なお、再配置処理必要性検知手段３がＤｉｒｔｙの判別のみを行った場合、再配置処理手段５は、アプリケーション１および依存プログラム２に対し、上述した（ａ）の処理および（ｂ）の処理を行い、変更が検知された参照先のアドレスに対し、参照先リストを更新する。
【００３０】
また、再配置処理必要性検知手段３がＤｉｒｔｙの判別と合わせて（ａ）の処理および（ｂ）の処理を行った場合、再配置処理必要性検知手段３が作成した再配置処理候補リストを受け取り、再配置処理候補リストに基づいて変更が検知された参照先のアドレスに対し、参照先リストを更新する。
【００３１】
更新用プログラム７内のアプリケーション起動抑制手段６が再配置処理手段５が再配置処理実施中にアプリケーション１の起動を抑制する。
【００３２】
なお、抑制方法として、アプリケーション１のプログラム（ＥＸＥ）の実行権限を一時的に剥奪する方法、または、アプリケーション１を起動する起動用プログラムを用意し、ユーザが直接参照できるのは当該起動用プログラムだけとし、当該起動用プログラムは更新用プログラムが起動していないことをチェックし、アプリケーション１の起動の可否を判断する方法等がある。
【００３３】
そして、再配置処理手段５が再配置処理を終了すると、更新用プログラム７はアプリケーション起動抑制を解除し、アプリケーション１を再起動する。
【００３４】
次に、アプリケーションおよび更新用プログラムで行われる処理の流れについて図２に示すフローチャートを参照して説明する。
【００３５】
アプリケーションが起動すると（ステップＳ２０１）、アプリケーション内の再配置処理の必要性を検知する（ステップＳ２０２）。
【００３６】
再配置処理の必要性がなしと検知した場合（ステップＳ２０３でＮＯ）、処理を終了し、また、再配置処理の必要性がありと検知した場合（ステップＳ２０３でＹＥＳ）、アプリケーションを終了し（ステップＳ２０４）、更新用プログラムを起動し（ステップＳ２０５）、更新用プログラムがアプリケーション内の再配置処理を実施し（ステップＳ２０６）、アプリケーションが起動命令を受け付けていない場合（ステップＳ２０７でＮＯ）、ステップＳ２０９に進み、また、アプリケーションが起動命令を受け付けた場合（ステップＳ２０７でＹＥＳ）、アプリケーションの起動を抑制する（ステップＳ２０８）。
【００３７】
そして、再配置処理が終了すると（ステップＳ２０９でＹＥＳ）、アプリケーションを再起動させ（ステップＳ２１０）、処理を終了する。
【００３８】
なお、実施例１では、再配置処理必要性検知手段および再配置処理開始手段をアプリケーションが有する構成について説明したが、アプリケーションおよび更新用プログラムとは別のプログラムがこれらの手段を有し、別のプログラムによりアプリケーション内の再配置処理の必要性を検知する構成でも適用可能である。
【００３９】
また、実施例１では、アプリケーション起動時に再配置処理の必要性の有無を検出する構成について説明したが、アプリケーション終了時に再配置処理の必要性の有無を検出する構成でも適用可能である。
【実施例２】
【００４０】
図３は、本発明の構成要件の各手段の実現方法の可能な組み合わせの実施例２を示す図である。
【００４１】
なお、実施例２では、ＯＳ起動時に再配置処理の必要性を検知する構成について説明する。
【００４２】
本発明の構成要件は、アプリケーション１の依存する各依存プログラム２（即ち、依存ＤＬＬ）がパッチ等により変更されていないか検出する再配置処理必要性検知手段３と、再配置処理必要性検知手段３で再配置処理の必要性が検出された際に再配置処理を開始する再配置処理開始手段４と、再配置処理開始手段４での開始により再配置処理を実施する再配置処理手段５とから成る。
【００４３】
図３に示すように、アプリケーション１は依存プログラム２（依存ＤＬＬ１、依存ＤＬＬ２、…、依存ＤＬＬＮ）を有し、ＯＳ８の起動時に起動される再配置処理必要性検知プログラム９は再配置処理必要性検知手段３と再配置処理開始手段４とを具備し、再配置処理の必要性がありと検知され、次のＯＳ８の起動時に起動される更新用プログラム７は再配置処理手段５を具備している。
【００４４】
これらの各手段の機能的な動作について説明する。
【００４５】
ＯＳ８が起動されると、ＯＳ８の起動時にバックグラウンドで再配置処理必要性検知プログラム９が起動され、再配置処理必要性検知プログラム９の再配置処理必要性検知手段３がアプリケーション１の再配置処理の必要性の検知を行う。
【００４６】
なお、検知方法として、アプリケーション１および依存プログラム２に対し、再帰的に以下の処理が行われる。
【００４７】
（ａ）依存プログラムのリスト、および各依存プログラム毎に参照アドレスとその論理名の対のリストである図５に示す参照先リストから依存プログラムを抽出する処理
（ｂ）（ａ）の処理で抽出した各プログラム毎に論理名をキーに参照アドレスを抽出し、参照先プログラムの自身の論理名とアドレスの対のリストであるシンボル情報と比較し、該当アドレスの変更の有無を調べる処理
ここで、該当アドレスの変更があれば、再配置処理の必要性がありと判断し、該当アドレスの変更がなければ、再配置処理の必要性はなしと判断する。なお、これらの処理の完了時に、調査結果を予め再配置処理候補リストとして作成しておき、その後起動する更新用プログラムに当該再配置処理候補リストを渡す。
【００４８】
再配置処理必要性検知手段３で再配置処理の必要性を検知した場合、再配置処理必要性検知プログラム９内の再配置処理開始手段５が、ＯＳ８に対し、ＯＳ８の次回起動時に更新用プログラム７が起動されるような設定を行う。これは、通常のソフトウェアインストール／アンインストールにおける、ＯＳ８の再起動に伴う後処理と同じ機構で行われる。
【００４９】
この場合、再配置処理が完了するまで、ＯＳ８の起動が完了しないため、実施例２では発明の構成要件のアプリケーション起動抑制手段６は不要となる。
【００５０】
そして、ＯＳ８の次回起動時に更新用プログラム７が起動すると、更新用プログラム７内の再配置処理手段５が再配置処理を実施する。
【００５１】
なお、再配置処理手段５は、再配置処理必要性検知手段３が作成した再配置処理候補リストを受け取り、再配置処理候補リストに基づいて変更が検知された参照先のアドレスに対し、参照先リストを更新する。
【００５２】
そして、再配置処理手段５が再配置処理を終了すると、ＯＳ８の起動が完了する。
【００５３】
次に、再配置処理必要性検知プログラムおよび更新用プログラムで行われる処理の流れについて図４に示すフローチャートを参照して説明する。
【００５４】
ＯＳが起動すると（ステップＳ４０１）、再配置処理必要性検知プログラムが起動し（ステップＳ４０２）、アプリケーション内の再配置処理の必要性を検知する（ステップＳ４０３）。
【００５５】
再配置処理の必要性がなしと検知した場合（ステップＳ４０４でＮＯ）、処理を終了し、また、再配置処理の必要性がありと検知した場合（ステップＳ４０４でＹＥＳ）、ＯＳの次回起動時に更新用プログラムを起動するようにＯＳに対して設定する（ステップＳ４０５）。
【００５６】
そして、ＯＳが起動すると（ステップＳ４０６でＹＥＳ）、更新用プログラムを起動し（ステップＳ４０７）、更新用プログラムがアプリケーション内の再配置処理を実施する（ステップＳ４０８）。
【００５７】
そして、再配置処理が終了すると（ステップＳ４０９でＹＥＳ）、ＯＳの起動が完了すると（ステップＳ４１０でＹＥＳ）、処理を終了する。
【００５８】
本発明は、上記し、且つ図面に示し実施例に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【図面の簡単な説明】
【００５９】
【図１】本発明の構成要件の各手段の実現方法の可能な組み合わせの実施例１を示す図である。
【図２】アプリケーションおよび更新用プログラムで行われる処理の流れを示すフローチャートである。
【図３】本発明の構成要件の各手段の実現方法の可能な組み合わせの実施例２を示す図である。
【図４】再配置処理必要性検知プログラムおよび更新用プログラムで行われる処理の流れを示すフローチャートである。
【図５】参照先リストについて説明する図である。
【符号の説明】
【００６０】
１    アプリケーション
２    依存プログラム
３    再配置処理必要性検知手段
４    再配置処理開始手段
５    再配置処理手段
６    アプリケーション起動抑制手段
７    更新用プログラム
８    ＯＳ
９    再配置処理必要性検知プログラム
【図１】
2007114859.tif 000003
【図２】
2007114859.tif 000004
【図３】
2007114859.tif 000005
【図４】
2007114859.tif 000006
【図５】
2007114859.tif 000007