(57)【要約】【課題】既存のプログラムだけでなく、新規追加プログラムに対しても高速に起動することができる情報処理装置を提供する。【解決手段】プログラムが共有ライブラリを動的にリンクして実行される情報処理装置１０は、以下の手段を備える。即ち、情報処理装置１０は、アドレス解決未処理状態のプログラムを検出し、補助記憶装置１０３に記憶された解決済みアドレス情報を元に共有ライブラリのアドレスを解決するアドレス解決手段５１０を備える。また、情報処理装置１０は、アドレス解決手段５１０により解決されたアドレスでプログラムを変更するプログラム変更手段５１１を備える。【選択図】図５
2010225099.tif 000002
【特許請求の範囲】
【請求項１】
プログラムが共有ライブラリを動的にリンクして実行される情報処理装置において、
アドレス解決未処理状態のプログラムを検出し、補助記憶装置に記憶された解決済みアドレス情報を元に前記共有ライブラリのアドレスを解決するアドレス解決手段と、
前記アドレス解決手段により解決されたアドレスで前記プログラムを変更するプログラム変更手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記アドレス解決手段は、前記プログラムが使用する前記共有ライブラリを検出し、そのアドレスが未解決状態であった場合に前記解決済みアドレス情報を検索し、該当ライブラリのエントリアドレスを取得することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記プログラム変更手段は、前記アドレス解決手段により得られた前記エントリアドレスで該当プログラムのアドレス未解決状態と置き換えプログラムを変更することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記プログラム及び共有ライブラリが更新された場合に補助記憶装置の解決済みアドレス情報を更新する解決済みアドレス更新手段を更に備え、
前記アドレス解決手段は、前記解決済みアドレス更新手段により更新された前記解決済みアドレス情報を元に新規に追加されたプログラムのアドレスを解決し、
前記プログラム変更手段は、新規プログラムのロードアドレス情報を、前記解決済みアドレス更新手段により更新された共有ライブラリのエントリアドレスに書き換えることを特徴とする請求項１記載の情報処理装置。
【請求項５】
プログラムが共有ライブラリを動的にリンクして実行される情報処理装置の制御方法において、
アドレス解決未処理状態のプログラムを検出し、補助記憶装置に記憶された解決済みアドレス情報を元に前記共有ライブラリのアドレスを解決するアドレス解決ステップと、
前記アドレス解決ステップにより解決されたアドレスで前記プログラムを変更するプログラム変更ステップと、
を備えることを特徴とする情報処理装置の制御方法。
【請求項６】
プログラムが共有ライブラリを動的にリンクして実行される情報処理装置の制御方法をコンピュータに実行させるプログラムにおいて、
前記情報処理装置の制御方法は、
アドレス解決未処理状態のプログラムを検出し、補助記憶装置に記憶された解決済みアドレス情報を元に前記共有ライブラリのアドレスを解決するアドレス解決ステップと、
前記アドレス解決ステップにより解決されたアドレスで前記プログラムを変更するプログラム変更ステップと、
を備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有ライブラリをリンクして実行するプログラムが動作する情報処理装置及びその制御方法（プログラム起動高速化方法）、並びにプログラムに関する。
【背景技術】
【０００２】
従来、ライブラリを使用するプログラムが動作する情報処理装置としては、動的リンク方式がある。動的リンク方式は、静的リンク方式に比べ、共有ライブラリの更新が容易である、プロセス間でライブラリを共有しているので物理メモリの使用量を削減できる等の利点がある。
【０００３】
一方で、動的リンク方式は、プログラム実行時にリンク処理の大部分を毎回やり直すために、プログラム起動時のオーバーヘッドが大きいという欠点がある。
【０００４】
この欠点を補う技術としては、共有ライブラリのアドレス解決を予め行っておくプレリンク技術や、共有ライブラリの関数アドレス一覧テーブルと呼び出し方法を持ったプログラムコードを生成する仕組みをリンカが備えている技術（特許文献１）等がある。これによって、プログラム実行時のオーバーヘッド削減を図っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−２５４７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記プレリンクされたシステムで動作する情報処理装置に新たにプログラムをインストールした場合、上記プログラムについては共有ライブラリのアドレス解決処理が施されていないため、以下の不具合がある。
【０００７】
即ち、共有ライブラリのアドレス解決処理が未処理のまま、従来通り、プログラム実行時にリンカにより共有ライブラリのアドレス解決を行ってから起動するか、または上記プログラムも含めてプレリンク再処理を施す必要がある。従って、一般的には、再処理に時間がかかる。
【０００８】
また、上記特許文献１に提案された技術では、初回実行時にリンカがライブラリアドレステーブルを参照できるようなプログラムコードを生成する処理が必要となり、初回起動時には時間がかかる。
【０００９】
本発明の目的は、既存のプログラムだけでなく、新規追加プログラムに対しても高速に起動することができる情報処理装置及びその制御方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、請求項１記載の情報処理装置は、プログラムが共有ライブラリを動的にリンクして実行される情報処理装置において、アドレス解決未処理状態のプログラムを検出し、補助記憶装置に記憶された解決済みアドレス情報を元に前記共有ライブラリのアドレスを解決するアドレス解決手段と、前記アドレス解決手段により解決されたアドレスで前記プログラムを変更するプログラム変更手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明の情報処理装置によれば、既存のプログラムだけでなく、新規追加プログラムに対しても高速に起動することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係る情報処理装置の構成図である。
【図２】図１の情報処理装置のソフトウェア構成図である。
【図３】図２におけるプログラムとライブラリの関係を示す図である。
【図４】図１の情報処理装置のネットワークシステムを示す図である。
【図５】図４におけるアプリケーションサーバから付加機能を持ったプログラムＣをダウンロードし、インストールする場合の図１の情報処理装置の構成図である。
【図６】図５の情報処理装置によって実行されるプログラム起動高速化処理の手順を示すフローチャートである。
【図７】既存のプログラムが更新される場合の図１の情報処理装置の構成図である。
【図８】既存のプログラムが更新される場合の図１の情報処理装置の構成図である。
【図９】図７、図８の情報処理装置によって実行されるプログラム起動高速化処理の手順を示すフローチャートである。
【図１０】図４におけるアプリケーションサーバから付加機能を持ったプログラムＤ、Ｅをダウンロードし、インストールする場合の図１の情報処理装置の構成図である。
【図１１】図１０の情報処理装置によって実行されるプログラム起動高速化処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を図面を参照しながら詳細に説明する。
【００１４】
図１は、本発明の実施の形態に係る情報処理装置の構成図、図２は、図１の情報処理装置のソフトウェア構成図、図３は、図２におけるプログラムとライブラリの関係を示す図である。
【００１５】
図１において、ＣＰＵ１０１は、プログラムが共有ライブラリを動的にリンクして実行される情報処理装置１００全体を制御し、図２のオペレーティングシステム（ＯＳ）２２０やプログラムＡ２２１ａ、プログラムＢ２２１ｂがＣＰＵ１０１で動作している。
【００１６】
主記憶装置１０２（ＲＡＭ）は、プログラムやデータを一時記憶する。補助記憶装置１０３は、データやプログラムを永続的に記録しておくことができる記憶媒体を備えたＨＤＤのような装置である。
【００１７】
デバイス１０４は、ネットワーク機器やシリアル通信機器等のＣＰＵ１０１に接続された周辺機器である。本実施の形態では、デバイス１０４も情報処理装置（情報処理システム）１００の構成要素として示す。バス１０５は各ユニットを通信可能に接続するシステムバスである。
【００１８】
図２において、プログラムＡ２１１ａ、プログラムＢ２１１ｂは、ＯＳ２２０によって管理され、仮想記憶装置２１０がそれぞれ割り当てられ、ユーザは仮想記憶装置２１０を操作することになる。
【００１９】
各プログラムの実データは、ＭＭＵ２２１によって仮想記憶装置２１０から主記憶装置１０２のアドレスに変換される。ＭＭＵ２２１の機能は、ＯＳ２２０によって実現されることもあるし、ＣＰＵ１０１が有していることもある。また、ＯＳ２２０は、主記憶装置１０２を管理しており、主記憶装置１０２上のデータを補助記憶装置２１０に退避・復帰する機能を有している。
【００２０】
これらの機能により、ユーザプログラムは、不連続な物理メモリ断片を連続した仮想メモリとして利用できることや、実際の主記憶量よりも多くのアドレスを利用できる等の利点を得ることができる。本実施の形態は、上記のような構成でユーザプログラムが実行される場合について説明する。
【００２１】
共有ライブラリをリンクして実行するプログラムＡ２１１ａやプログラムＢ２１１ｂは、一般的には使用する共有ライブラリのアドレス解決は行われておらず、各プログラム起動時に、図３のローダ３８０が各プログラムにロードすべきアドレスを解決する。
【００２２】
しかし、ローダ３８０による逐次的アドレス解決法では、プログラム実行ごとにアドレス時間を要し、プログラム起動時間に遅れが生じる。
【００２３】
そこで、本実施の形態では、情報処理装置１００上で動作する基本プログラム及びそれによって使用されるライブラリのアドレスを予め解決しておくことで、プログラム実行時のローダ３８０の負荷を低減し、プログラム起動時間を高速化する。
【００２４】
つまり、図３を例に取ると、プログラムＡ２１１ａがライブラリＡ３５０とライブラリＢ３６０を使用しており、プログラムＢ２１１ｂがライブラリＢ３６０とライブラリＣ３７０を使用しているとき、以下の対応付けがなされる。
【００２５】
即ち、プログラムＡ２１１ａにおけるライブラリＡのロードアドレス３１０とライブラリＡ３５０のエントリアドレス３５１が対応付けされている。
【００２６】
また、プログラムＡ２１１ａにおけるライブラリＢのロードアドレス３２０及びプログラムＢ２１１ｂにおけるライブラリＢのロードアドレス３３０とライブラリＢ３６０のエントリアドレス３６１が対応付けされている。
【００２７】
また、プログラムＢ２１１ｂにおけるライブラリＣのロードアドレス３４０とライブラリＣ３７０のエントリアドレス３７１が対応付けされている。
【００２８】
一意な解決済みアドレスが記述されており、プログラム実行時にローダ３８０によるアドレス解決の負荷無しに起動することができる。
【００２９】
情報処理装置１００に備わる基本プログラムは上記アドレス解決がなされているものとして以降の実施の形態について述べる。
【００３０】
＜第１の実施の形態＞
図４は、図１の情報処理装置のネットワークシステムを示す図、図５は、図４におけるアプリケーションサーバから付加機能を持ったプログラムＣをダウンロードし、インストールする場合の図１の情報処理装置の構成図である。
【００３１】
本実施の形態では、図４の情報処理装置１００がデバイス（ネットワークデバイス）１０４を有しており、ネットワーク４１０と通信が可能である場合を考える。
【００３２】
例えば、ユーザが独自にネットワーク４１０上のアプリケーションサーバ４２０から、図５に示す付加機能を持ったプログラムＣ５００をダウンロードし、情報処理装置１００にインストールする場合を考える。
【００３３】
図５において、情報処理装置１００は、アドレス解決未処理状態のプログラムを検出し、補助記憶装置１０３に記憶された解決済みアドレス情報を元に共有ライブラリのアドレスを解決するアドレス解決手段５１０を備える。また、情報処理装置１００は、アドレス解決手段５１０により解決されたアドレスでプログラムを変更するプログラム変更手段５１１を備える。
【００３４】
そして、アドレス解決手段５１０は、プログラムが使用する共有ライブラリを検出し、そのアドレスが未解決状態であった場合に解決済みアドレス情報を検索し、該当ライブラリのエントリアドレスを取得する。
【００３５】
また、プログラム変更手段５１１は、アドレス解決手段５１０により得られたエントリアドレスで該当プログラムのアドレス未解決状態と置き換えプログラムを変更する。
【００３６】
プログラムＣ５００は、ライブラリＡとライブラリＤを使用しているものとする。情報処理装置１００に元来備わっているプログラムＡ２１１ａやプログラムＢ２１１ｂは使用するライブラリのアドレス解決がなされているため起動が高速化されているが、ユーザが独自に取得したプログラムＣ５００に関しては、アドレス解決がなされていない。そのため、プログラムＣ５００の実行時は毎回アドレス解決処理がなされ、起動高速化の効果は得られない。
【００３７】
そこで、プログラムＣ５００のインストール時にプログラムＣ５００がどのライブラリを使用しているか検出し、補助記憶装置１０３に記憶された解決済みアドレス情報５２０から対応するライブラリのエントリアドレスを引き出す。そして、プログラム変更手段５１１により、プログラムＣ５００のライブラリＡアドレス未解決部分５０１及びライブラリＤアドレス未解決部分５０２を解決済みアドレスに書き換える。
【００３８】
図６は、図５の情報処理装置によって実行されるプログラム起動高速化処理の手順を示すフローチャートである。
【００３９】
本処理は、図１におけるＣＰＵ１０１の制御の下に実行される。
【００４０】
まず、ステップＳ６０１において、ＣＰＵ１０１は、情報処理装置１００に新規プログラムがインストールされたかどうかを検出する。新規プログラムがインストールされたことが検出されたら、ステップＳ６０２において、ＣＰＵ１０１は、該プログラムが使用しているライブラリをアドレス解決手段５１０によって検出する。
【００４１】
次に、ステップＳ６０３において、ＣＰＵ１０１は、補助記憶装置１０３に記憶された解決済みアドレス情報５２０から、該当ライブラリの解決済みアドレス情報を抽出する。解決済みアドレス情報５２０は、ライブラリのシンボル、エントリアドレス、アドレス範囲を有しており、シンボルより該当ライブラリを検索可能であるとする。
【００４２】
最後に、ステップＳ６１０４において、新規プログラムのライブラリアドレスが未解決部分に対して、ＣＰＵ１０１の指示により、プログラム変更手段５１１がアドレス解決済み状態に変更する。
【００４３】
以上により、新規プログラムのインストール後に、共有ライブラリアドレスは解決状態になっており、プログラム実行時にローダ３８０がライブラリのロードアドレスを解決する負荷が軽減されるため、初回から高速に起動することができる。
【００４４】
尚、本実施の形態では、プログラムの取得には情報処理装置１００がネットワークデバイス１０４を用いている場合を述べたが、プログラムの取得方法はどのようなものであってもよい。
【００４５】
例えば、情報処理装置１００が可搬不揮発メモリを読み込むことのできるデバイスを有し、可搬不揮発メモリ上に新規プログラムが格納されており、これを認識して情報処理装置１００にインストールする形態であってもよい。
【００４６】
＜第２の実施の形態＞
図７は、既存のプログラムが更新される場合の図１の情報処理装置の構成図（１）、図８は、既存のプログラムが更新される場合の図１の情報処理装置の構成図（２）である。
【００４７】
次に、既存のプログラムが更新された場合について図７、図８を用いて説明する。
【００４８】
図７において、更新プログラム群とは、更新プログラム７００、更新ライブラリ７０１、更新解決済みアドレス情報７０２の集合を指す。更新プログラム７００と更新ライブラリ７０１は、既にアドレス解決の処理が済んでおり、その結果が更新解決済みアドレス情報７０２に記述されている。
【００４９】
更新手段７１０は、補助記憶装置１０３上のプログラム及びライブラリを書き換え、更新処理を行う。解決済みアドレス更新手段７１１は、プログラムとライブラリのアドレス解決を行った結果を補助記憶装置１０３上の既存のものと置き換え、更新処理を行う。
【００５０】
尚、図８のプログラムＣ５００は、情報処理装置１００に独自に組み込まれたプログラムであるため、本更新処理の対象外となる。よって、プログラムＣ５００に記述されているロードアドレスと更新後の解決済みアドレス情報８３０のライブラリエントリアドレスとでは、更新されたライブラリの機能拡張等でそのアドレスが異なっている可能性がある。
【００５１】
そこで、プログラムとライブラリの更新処理後、独自に組み込まれたプログラムＣ５００に対してアドレス解決手段５１０は、プログラムＣ５００内のライブラリロードアドレスと更新後解決済みアドレス情報８３０を比較する。
【００５２】
そして、ライブラリのエントリアドレスに差異を検出する。差異があれば更新後解決済みアドレス情報８３０を元に、プログラム変更手段５１１がプログラムＣ５００に対しライブラリのロードアドレス情報を変更する。
【００５３】
図９は、図７、図８の情報処理装置によって実行されるプログラム起動高速化処理の手順を示すフローチャートである。
【００５４】
本処理は、図１におけるＣＰＵ１０１の制御の下に実行される。
【００５５】
まず、ステップＳ９０１で、ＣＰＵ１０１は、プログラム群の更新があるかどうかを確認する。更新がなければ何も行わず終了する。更新があれば、ステップＳ９０２に進み、ＣＰＵ１０１は、補助記憶装置１０３に格納（記憶）されている更新前のプログラム群と置き換える処理を行う。
【００５６】
次に、ステップＳ９０３で、ＣＰＵ１０１は、解決済みアドレス更新手段７１１により、補助記憶装置１０３に格納された更新前の解決済みアドレス情報５２０を更新し、更新後解決済みアドレス情報８３０と置き換える。
【００５７】
上記更新処理が終了した後、ＣＰＵ１０１の指示により、アドレス解決手段５１０は、ステップＳ９０４で、以下の処理を行う。
【００５８】
即ち、更新対象外である独自プログラム、プログラムＣ５００と更新後解決済みアドレス情報から、更新後解決済みアドレス情報８３０に記述されており、かつプログラムＣ５００が使用するライブラリを更新後解決済みアドレス情報８３０より検索する。
【００５９】
ステップＳ９０５で、ＣＰＵ１０１は、検索に該当した更新後解決済みアドレス情報記載のライブラリのエントリアドレスと、プログラムＣ５００の各ライブラリのロードアドレスとを比較し、全て一致すれば変更の必要はないため処理を終了する。
【００６０】
一方、一致しなかった場合は、プログラムＣ５００のライブラリロードアドレスを変更する必要があるため、ステップＳ９０６に進む。
【００６１】
ステップＳ９０６で、プログラム変更手段５１１によって、プログラムＣ５００のロードアドレスを更新後解決済みアドレス情報８３０のライブラリエントリアドレスと一致させる処理を行う。
【００６２】
上記検索結果により、プログラムＣ５００が使用するライブラリが判明しているので、該当ライブラリのアドレス解決情報を更新後解決済みアドレス情報８３０から取得し、プログラムＣ５００の既存のロードアドレスと置き換える。
【００６３】
以上により、既存プログラムが更新されたことによるライブラリアドレス解決情報が変更された場合でも独自に組み込んだプログラムＣ５００のロードアドレスを解決することができる。
【００６４】
<第３実施の形態>
第３の実施の形態は、第１の実施の形態と同様に、図４の構成で独自にプログラムをインストールする場合である。そして、そのプログラムが情報処理装置１００に備わっている以外のライブラリを必要とし、該ライブラリもプログラムと同時にインストールされる場合である。
【００６５】
図１０は、図４におけるアプリケーションサーバから付加機能を持ったプログラムＤ、Ｅをダウンロードし、インストールする場合の図１の情報処理装置の構成図である。
【００６６】
プログラムＤ１０００がインストールされ、プログラムＤ１０００は、ライブラリＡ３５０及びライブラリＥ１０１０を必要とする。
【００６７】
しかし、情報処理装置１００にはライブラリＥ１０１０を備えておらず、プログラムＤ１０００のインストール時に同時にインストールされるものとする。尚、プログラムＤ１００００のアドレス解決は未処理であるものとする。
【００６８】
まず、プログラムＤ１０００のインストール時におけるライブラリＡ３５０のアドレス未解決状態１００１を、アドレス解決手段５１０、プログラム変更手段５１１によって解決済みアドレス情報５２０から解決する処理は第１の実施の形態と同様である。
【００６９】
図１１は、図１０の情報処理装置によって実行されるプログラム起動高速化処理の手順を示すフローチャートである。
【００７０】
本処理は、図１におけるＣＰＵ１０１の制御の下に実行される。
【００７１】
次に、ライブラリＥ１０１０のアドレス未解決状態１００２の処理について図１０及び図１１のフローチャートを用いて説明する。尚、ライブラリＡ３５０のアドレス解決処理については前述と同様のため、説明は省略する。
【００７２】
ライブラリＥ１０１０のアドレス解決を行う場合、ステップＳ１１０１において、ＣＰＵ１０１は、補助記憶１０３に記憶された解決済みアドレス情報５２０からライブラリＥ１０１０の情報を検索する。情報があれば、通常通り、ステップＳ１１０２の処理により、プログラムＤ１０００の未解決アドレスを解決済みに処理することができる。
【００７３】
しかし、本実施の形態では、新たにライブラリＥ１０１０をインストールしているため、この時点では、解決済みアドレス情報５２０からはライブラリＥ１０１０に関する情報は検出されない。よってステップＳ１１０３に進む。
【００７４】
ステップＳ１１０３では、ＣＰＵ１０１は、解決済みアドレス情報５２０にライブラリＥ１０１０の情報を追加登録するための空きアドレスを算出する。空きアドレスとは、プログラムＤ１０００中でアドレスが衝突しないように解決済みアドレス情報５２０から各ライブラリのエントリアドレス及びアドレス範囲より算出されるアドレスを指す。
【００７５】
次に、ステップＳ１１０４にて、ＣＰＵ１０１の指示により、解決済みアドレス情報更新手段７１１が、上記算出された空きアドレスをライブラリＥ１０１０のエントリアドレスとして解決済みアドレス情報５２０に新規追加登録を行う。
【００７６】
また、新規インスールされたライブラリＥ１０１０は、それ自体もアドレスの解決が必要である。
【００７７】
そのため、ステップＳ１１０５において、プログラム変更手段５１１により、ライブラリＥ１０１０のエントリアドレス及び関数アドレス等を、ステップＳ１１０３にて算出されたエントリアドレスを元に変更する。
【００７８】
以上により、ライブラリＥ１０１０においても解決済みアドレス情報が補助記憶装置１０３に登録される。従って、第１の実施の形態と同様に、アドレス解決手段５１０及びプログラム変更手段５１１によってプログラムＤ１０００内のライブラリＥのアドレス未解決状態を解決済みとすることができる。
【００７９】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体から、コンピュータ（またはＣＰＵやＭＰＵ等）がそのプログラムコードを読み出して実行することによっても達成される。
【００８０】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８１】
また、プログラムコードを供給するための記憶媒体としては、種々のものを用いることができる。また、プログラムコードをネットワークを介してダウンロードしてもよい。
【００８２】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行うことで前述した実施の形態の機能が実現される場合も含まれる。
【符号の説明】
【００８３】
１０３  補助記憶装置
５００  新規プログラムＣ
５１０  アドレス解決手段
５１１  プログラム変更手段
５２０  解決済みアドレス情報
【図１】
2010225099.tif 000003
【図２】
2010225099.tif 000004
【図３】
2010225099.tif 000005
【図４】
2010225099.tif 000006
【図５】
2010225099.tif 000007
【図６】
2010225099.tif 000008
【図７】
2010225099.tif 000009
【図８】
2010225099.tif 000010
【図９】
2010225099.tif 000011
【図１０】
2010225099.tif 000012
【図１１】
2010225099.tif 000013