(57)【要約】【課題】動的ローディングシステムにおけるプログラムの起動の高速化、及びメモリ消費量の削減を実現することができるプログラム起動装置を提供する。【解決手段】リンク関係解析部１１２は、システム全体のアプリケーションと共有ライブラリとのリンク関係を解析し、共通リンク関係抽出部１１３は、アプリケーション間で可能な限り共通にロード状態の管理構造を利用できる組み合わせを特定し、その管理構造をシステム全体で参照する対象にすることにより、起動時間の高速化とともにメモリ消費量の削減を実現する。【選択図】図２
2007334869.tif 000002
【特許請求の範囲】
【請求項１】
共通に利用される共有プログラムを用いて実行されるプログラムを起動するプログラム起動装置であって、
各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、
プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部とを備えることを特徴とするプログラム起動装置。
【請求項２】
前記ロード状態管理情報割り当て部は、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、各プログラムが前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を参照するように、各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てることを特徴とする請求項１記載のプログラム起動装置。
【請求項３】
プログラムと共有プログラムとのリンク関係を解析してプログラム間のリンク関係の構造を作成するリンク関係解析部と、
前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報を抽出する共通リンク関係抽出部と、
プログラムと共有プログラムとを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を記憶するロード状態管理情報記憶部と、
前記共通リンク関係抽出部から取得したリンク関係の情報に基づいて、前記ロード状態管理情報記憶部のロード状態管理情報から前記共通利用ロード状態管理情報と前記個別利用ロード状態管理情報とを区分して前記共通ロード状態管理情報記憶部に記憶させる共通ロード状態管理情報作成部とをさらに備えることを特徴とする請求項１又は２記載のプログラム起動装置。
【請求項４】
前記共通ロード状態管理情報作成部は、前記共通リンク関係抽出部から取得したリンク関係の情報に基づいて、プログラムの実行に必要な共有プログラムへのリンク関係を表す共有プログラムリンク関係情報を作成して前記共有プログラムリンク関係情報を前記共通ロード状態管理情報記憶部に記憶させ、
プログラムの起動が開始されたことを検出する起動検出部と、
前記共通ロード状態管理情報記憶部に記憶されている共有プログラムリンク関係情報を参照して、前記起動検出部により検出されたプログラムの実行に必要な全ての共有プログラムを特定し、当該プログラムが共通に利用する共通利用ロード状態管理情報と個別に利用する個別利用ロード状態管理情報とを前記共通ロード状態管理情報記憶部から前記ロード状態管理情報割り当て部へ出力するリンク情報検索部とをさらに備えることを特徴とする請求項３記載のプログラム起動装置。
【請求項５】
前記共通リンク関係抽出部は、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、リンク関係を最も共通化できる共有プログラム群を抽出し、
前記共通ロード状態管理情報作成部は、前記共通リンク関係抽出部により抽出された共有プログラム群のロード状態管理情報を前記ロード状態管理情報記憶部から読み出して前記共通利用ロード状態管理情報として纏めて前記共通ロード状態管理情報記憶部に記憶させることを特徴とする請求項４記載のプログラム起動装置。
【請求項６】
前記共通リンク関係抽出部は、各共有プログラムに対するプログラムからのリンク数と、各共有プログラムに対する配下の共有プログラムのリンク総数との少なくとも一方に基づいて、前記共有プログラム群を抽出することを特徴とする請求項５記載のプログラム起動装置。
【請求項７】
前記共通リンク関係抽出部は、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、共有プログラムに対するプログラムからのリンク数と、共有プログラムに対する配下の共有プログラムのリンク総数に１を加算した配下リンク数とを算出し、両者を乗算した値が最も大きい共有プログラムを最大共有プログラムとして特定し、前記最大共有プログラムと、当該最大共有プログラムの配下の共有プログラムとを前記共有プログラム群として抽出することを特徴とする請求項６記載のプログラム起動装置。
【請求項８】
前記共通ロード状態管理情報作成部は、前記共有プログラム群が特定可能な識別情報を付加して前記共有プログラムリンク関係情報を前記共通ロード状態管理情報記憶部に記憶させ、
前記リンク情報検索部は、前記識別情報を参照して、前記起動検出部により検出されたプログラムが共通に利用する共通利用ロード状態管理情報を前記共通ロード状態管理情報記憶部から前記ロード状態管理情報割り当て部へ出力することを特徴とする請求項５記載のプログラム起動装置。
【請求項９】
前記共通ロード状態管理情報記憶部は、不揮発性メモリを含み、
前記不揮発性メモリは、前記共通利用ロード状態管理情報を記憶することを特徴とする請求項１〜８のいずれかに記載のプログラム起動装置。
【請求項１０】
前記不揮発性メモリは、書き換え可能なリードオンリーメモリを含むことを特徴とする請求項９記載のプログラム起動装置。
【請求項１１】
前記共通ロード状態管理情報記憶部は、揮発性メモリを含み、
前記揮発性メモリは、前記個別利用ロード状態管理情報を記憶することを特徴とする請求項１〜１０のいずれかにプログラム起動装置。
【請求項１２】
前記揮発性メモリは、ランダムアクセスメモリを含むことを特徴とする請求項１１記載のプログラム起動装置。
【請求項１３】
プログラム及び共有プログラムを記憶するプログラム記憶部と、
前記プログラム記憶部に記憶されているプログラム及び共有プログラムを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を作成して前記ロード状態管理情報記憶部に記憶させるロード実行部とをさらに備えることを特徴とする請求項３記載のプログラム起動装置。
【請求項１４】
前記プログラム記憶部に記憶されているプログラム及び共有プログラムのうち少なくとも一方を更新するプログラム更新部をさらに備え、
前記プログラム更新部によりプログラム及び共有プログラムのうち少なくとも一方が更新されたとき、前記ロード実行部は、更新されたプログラム又は共有プログラムのロード状態管理情報を作成して前記ロード状態管理情報記憶部に記憶されているロード状態管理情報を更新し、前記リンク関係解析部は、更新されたプログラム又は共有プログラムのリンク関係を解析してプログラム間のリンク関係の構造を更新し、前記共通リンク関係抽出部は、更新されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報を更新し、前記共通ロード状態管理情報作成部は、更新されたリンク関係の情報に基づいて、更新されたロード状態管理情報を用いて前記共通利用ロード状態管理情報及び前記個別利用ロード状態管理情報を更新することを特徴とする請求項１３記載のプログラム起動装置。
【請求項１５】
共通に利用される共有プログラムを用いて実行されるプログラムを起動するプログラム起動方法であって、
各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶ステップと、
プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶ステップにおいて記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶ステップにおいて記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当てステップとを含むことを特徴とするプログラム起動方法。
【請求項１６】
共通に利用される共有プログラムを用いて実行されるプログラムを起動するための起動処理プログラムであって、
各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、
プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部としてコンピュータを機能させることを特徴とする起動処理プログラム。
【請求項１７】
共通に利用される共有プログラムを用いて実行されるプログラムを起動する集積回路であって、
各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、
プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部とを備える集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で実行される種々のプログラムの起動処理技術に関し、特にプログラムの起動処理を高速化し、起動処理を行う際にプログラムが使用するメモリの消費量を削減する技術に関するものである。
【背景技術】
【０００２】
ＬｉｎｕｘやＷｉｎｄｏｗｓ（登録商標）などに代表されるマルチタスク型のオペレーティングシステム（ＯＳ）が搭載されている機器やコンピュータでは、多くの場合、プログラムの動的ローディングシステムを採用している。これは、プログラムの起動時に初めて、動的ローダが、そのプログラム本体や共有ライブラリを実行空間にロードし、実行アドレスを決定するシステムである。
【０００３】
一般的に、共有ライブラリとは、複数のプログラムから共通に利用されるプログラムであり、動的ローダは、プログラムが起動されると、そのプログラムに必要な共有ライブラリを検索し、ロードするために必要な情報を各共有ライブラリから読み込み又は計算して設定し、各共有ライブラリを実行空間にロードして実行可能な状態にする。
【０００４】
上記の動的ローディングシステムは、プログラムの起動時に初めて、そのプログラムに必要なロード処理を行うので、同一の共有ライブラリを複数のプログラムで共通に使用することを可能にし、また、プログラムや共有ライブラリの汎用性や移植性を高めている。一方、プログラムの起動時に、毎回、プログラム及び共有ライブラリのロード処理を実行するため、プログラムの起動時間を長くする一因になっていた。
【０００５】
上記背景のもとで、動的ローディングシステムによるプログラム起動処理において、プログラムの起動時間を高速化するために、指定のプログラムと関連ライブラリプログラムとを動的にリンクして実行可能なプログラムイメージを得る方法が開示されている（例えば、特許文献１参照）。
【０００６】
具体的には、リンカー（動的ローダ）は、プログラムの起動時にイメージキャッシュをチェックし、新しいプログラムとその関連ライブラリプログラムとが以前に実行済みのために、既にリンクされてキャッシュ化されているかどうかを調べる。イメージキャッシュ内にプログラムがなければ、動的ローダは、次に、関連ライブラリプログラムが部分リンク済みの形式でキャッシュ化されているかどうかを調べ、探し出せる限り多数の関連ライブラリプログラムを利用する。これにより、メモリやキャッシュに退避させていた実行可能な状態のプログラムや共有ライブラリである関連ライブラリプログラムを、次回のプログラムの起動時に再利用し、ロード処理を短くする方法が知られている。
【特許文献１】特開平７−１６０４８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、前記従来の技術では、すぐにロード処理を可能にするために、既にシンボル参照のアドレス解決が実施済み（再配置済み）のプログラム及び共有ライブラリを、別のキャッシュに保存しているため、プログラムそのもののコード及びデータをキャッシュするためのメモリ容量が別途必要になる。
【０００８】
また、前記従来の技術では、プログラム本体や共有ライブラリ自身の実行コードをすぐに実行可能な状態にしてキャッシュしているが、動的ローダが管理すべき共有ライブラリのロードに関わるロード状態管理情報について触れられていない。
【０００９】
このロード状態管理情報は、例えば、今起動しようとしているプログラムに必要な共有ライブラリのうち何をロードしたのか、各共有ライブラリはどのアドレスに配置したのか、各共有ライブラリの特定領域はどこに配置したのか等を把握して利用するための情報であり、起動するプログラムごとに異なるため、起動処理の中で管理が必要である。
【００１０】
このため、共有ライブラリ自身をすぐにロード可能な実行コードとしてキャッシュしても、上記のロード状態管理情報を作成及び管理するための処理を、動的ローダは実施しなければいけないため、その処理時間を要するという問題が残る。
【００１１】
また、プログラムによって使用する共有ライブラリは、それぞれ異なるため、このロード状態管理情報は、プログラムごとに必要になり、プログラムごとにメモリを消費するという問題も残る。
【００１２】
本発明は、前記従来の課題を解決するもので、動的ローディングシステムにおけるプログラムの起動の高速化、及びメモリ消費量の削減を実現することができるプログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るプログラム起動装置は、共通に利用される共有プログラムを用いて実行されるプログラムを起動するプログラム起動装置であって、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部とを備える。
【００１４】
本発明に係るプログラム起動方法は、共通に利用される共有プログラムを用いて実行されるプログラムを起動するプログラム起動方法であって、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶ステップと、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶ステップにおいて記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶ステップにおいて記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当てステップとを含む。
【００１５】
本発明に係る起動処理プログラムは、共通に利用される共有プログラムを用いて実行されるプログラムを起動するための起動処理プログラムであって、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部としてコンピュータを機能させる。
【００１６】
本発明に係る集積回路は、共通に利用される共有プログラムを用いて実行されるプログラムを起動する集積回路であって、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部とを備える。
【００１７】
上記の各構成により、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とが区分されて記憶され、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられ、記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられるので、プログラム起動時に、実行空間に割り当てられた情報に基づいてプログラムを起動することにより、プログラムの起動時間を高速化しつつ、メモリ消費量を削減することができる。
【００１８】
前記ロード状態管理情報割り当て部は、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、各プログラムが前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を参照するように、各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てることが好ましい。
【００１９】
この場合、記憶されている共通利用ロード状態管理情報を参照するように、各プログラムが共通に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられるので、プログラムの起動時間をより高速化しつつ、実行空間として使用されるメモリの消費量を削減することができる。
【００２０】
上記プログラム起動装置は、プログラムと共有プログラムとのリンク関係を解析してプログラム間のリンク関係の構造を作成するリンク関係解析部と、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報を抽出する共通リンク関係抽出部と、プログラムと共有プログラムとを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を記憶するロード状態管理情報記憶部と、前記共通リンク関係抽出部から取得したリンク関係の情報に基づいて、前記ロード状態管理情報記憶部のロード状態管理情報から前記共通利用ロード状態管理情報と前記個別利用ロード状態管理情報とを区分して前記共通ロード状態管理情報記憶部に記憶させる共通ロード状態管理情報作成部とをさらに備えることが好ましい。
【００２１】
この場合、プログラムと共有プログラムとのリンク関係を解析してプログラム間のリンク関係の構造が作成され、作成されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報が抽出され、また、プログラムと共有プログラムとを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報が記憶され、複数のプログラムが共通に利用可能なリンク関係の情報に基づいて、記憶されているロード状態管理情報から共通利用ロード状態管理情報及び前記個別利用ロード状態管理情報が区分されて共通ロード状態管理情報記憶部に記憶されるので、各プログラムに対して可能な限り共通にロード状態の管理を行うことができ、可能な限り共通化された共通利用ロード状態管理情報を参照することによって、メモリ消費量をより削減することができる。
【００２２】
前記共通ロード状態管理情報作成部は、前記共通リンク関係抽出部から取得したリンク関係の情報に基づいて、プログラムの実行に必要な共有プログラムへのリンク関係を表す共有プログラムリンク関係情報を作成して前記共有プログラムリンク関係情報を前記共通ロード状態管理情報記憶部に記憶させ、上記プログラム起動装置は、プログラムの起動が開始されたことを検出する起動検出部と、前記共通ロード状態管理情報記憶部に記憶されている共有プログラムリンク関係情報を参照して、前記起動検出部により検出されたプログラムの実行に必要な全ての共有プログラムを特定し、当該プログラムが共通に利用する共通利用ロード状態管理情報と個別に利用する個別利用ロード状態管理情報とを前記共通ロード状態管理情報記憶部から前記ロード状態管理情報割り当て部へ出力するリンク情報検索部とをさらに備えることが好ましい。
【００２３】
この場合、共通リンク関係抽出部から取得したリンク関係の情報に基づいて、プログラムの実行に必要な共有プログラムへのリンク関係を表す共有プログラムリンク関係情報が作成されて共通ロード状態管理情報記憶部に記憶され、共通ロード状態管理情報記憶部に記憶されている共有プログラムリンク関係情報を参照して、起動が開始されたプログラムの実行に必要な全ての共有プログラムが特定され、当該プログラムが共通に利用する共通利用ロード状態管理情報と個別に利用する個別利用ロード状態管理情報とが共通ロード状態管理情報記憶部からロード状態管理情報割り当て部へ出力されるので、プログラムの起動が開始されたときに、当該プログラムが共通に利用する共通利用ロード状態管理情報と個別に利用する個別利用ロード状態管理情報とを容易に区分して取得することができ、各プログラムが共通に利用する共有プログラムのロード状態の管理構造と、各プログラムが個別に利用する共有プログラムのロード状態の管理構造とを高速に実行空間に割り当てることができる。
【００２４】
前記共通リンク関係抽出部は、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、リンク関係を最も共通化できる共有プログラム群を抽出し、前記共通ロード状態管理情報作成部は、前記共通リンク関係抽出部により抽出された共有プログラム群のロード状態管理情報を前記ロード状態管理情報記憶部から読み出して前記共通利用ロード状態管理情報として纏めて前記共通ロード状態管理情報記憶部に記憶させることが好ましい。
【００２５】
この場合、リンク関係の構造に基づいて、リンク関係を最も共通化できる共有プログラム群が抽出され、抽出された共有プログラム群のロード状態管理情報が共通利用ロード状態管理情報として纏めて共通ロード状態管理情報記憶部に記憶されるので、各プログラムに対してロード状態管理情報を可能な限り最も共通化した状態でロード状態の管理を行うことができ、メモリ消費量をより削減することができる。
【００２６】
前記共通リンク関係抽出部は、各共有プログラムに対するプログラムからのリンク数と、各共有プログラムに対する配下の共有プログラムのリンク総数との少なくとも一方に基づいて、前記共有プログラム群を抽出することが好ましい。
【００２７】
この場合、各共有プログラムに対するプログラムからのリンク数と、各共有プログラムに対する配下の共有プログラムのリンク総数との少なくとも一方に基づいて共有プログラム群が抽出されるので、リンク関係を最も共通化できる共有プログラム群を簡略な処理で抽出することができる。
【００２８】
前記共通リンク関係抽出部は、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、共有プログラムに対するプログラムからのリンク数と、共有プログラムに対する配下の共有プログラムのリンク総数に１を加算した配下リンク数とを算出し、両者を乗算した値が最も大きい共有プログラムを最大共有プログラムとして特定し、前記最大共有プログラムと、当該最大共有プログラムの配下の共有プログラムとを前記共有プログラム群として抽出することが好ましい。
【００２９】
この場合、各共有プログラムに対するプログラムからのリンク数と、共有プログラムに対する配下の共有プログラムのリンク総数に１を加算した配下リンク数とを乗算した値が最も大きい共有プログラムを最大共有プログラムとして特定し、この最大共有プログラムと、当該最大共有プログラムの配下の共有プログラムとが共有プログラム群として抽出されるので、リンク関係を最も共通化できる共有プログラム群を正確に抽出することができる。
【００３０】
前記共通ロード状態管理情報作成部は、前記共有プログラム群が特定可能な識別情報を付加して前記共有プログラムリンク関係情報を前記共通ロード状態管理情報記憶部に記憶させ、前記リンク情報検索部は、前記識別情報を参照して、前記起動検出部により検出されたプログラムが共通に利用する共通利用ロード状態管理情報を前記共通ロード状態管理情報記憶部から前記ロード状態管理情報割り当て部へ出力することが好ましい。
【００３１】
この場合、共有プログラム群が特定可能な識別情報を付加して共有プログラムリンク関係情報が記憶され、この識別情報を参照して共通利用ロード状態管理情報が共通ロード状態管理情報記憶部からロード状態管理情報割り当て部へ出力されるので、共有プログラム群を容易に特定してロード状態管理情報割り当て部へ出力することができる。
【００３２】
前記共通ロード状態管理情報記憶部は、不揮発性メモリを含み、前記不揮発性メモリは、前記共通利用ロード状態管理情報を記憶することが好ましい。
【００３３】
この場合、装置の電源をオフしても、共通利用ロード状態管理情報が不揮発性メモリに保持されているので、装置の電源をオンしたときに即座に共通利用ロード状態管理情報を利用することができる。
【００３４】
前記不揮発性メモリは、書き換え可能なリードオンリーメモリを含むことが好ましい。
【００３５】
この場合、装置の電源をオフしても、共通利用ロード状態管理情報が書き換え可能なリードオンリーメモリに保持されているので、装置の電源をオンしたときに即座に共通利用ロード状態管理情報を利用することができる。
【００３６】
前記共通ロード状態管理情報記憶部は、揮発性メモリを含み、前記揮発性メモリは、前記個別利用ロード状態管理情報を記憶することが好ましい。
【００３７】
この場合、個別利用ロード状態管理情報が揮発性メモリに記憶されるので、起動されるプログラムに応じて更新すべき個別利用ロード状態管理情報を適宜高速に更新することができる。
【００３８】
前記揮発性メモリは、ランダムアクセスメモリを含むことが好ましい。
【００３９】
この場合、個別利用ロード状態管理情報がランダムアクセスメモリに記憶されるので、起動されるプログラムに応じて更新すべき個別利用ロード状態管理情報を適宜高速に更新することができる。
【００４０】
上記プログラム起動装置は、プログラム及び共有プログラムを記憶するプログラム記憶部と、前記プログラム記憶部に記憶されているプログラム及び共有プログラムを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を作成して前記ロード状態管理情報記憶部に記憶させるロード実行部とをさらに備えることが好ましい。
【００４１】
この場合、プログラム記憶部に記憶されているプログラム及び共有プログラムを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を作成してロード状態管理情報記憶部に記憶させているので、このロード状態管理情報を用いて共通利用ロード状態管理情報及び個別利用ロード状態管理情報を高速に且つ容易に作成することができる。
【００４２】
上記プログラム起動装置は、前記プログラム記憶部に記憶されているプログラム及び共有プログラムのうち少なくとも一方を更新するプログラム更新部をさらに備え、前記プログラム更新部によりプログラム及び共有プログラムのうち少なくとも一方が更新されたとき、前記ロード実行部は、更新されたプログラム又は共有プログラムのロード状態管理情報を作成して前記ロード状態管理情報記憶部に記憶されているロード状態管理情報を更新し、前記リンク関係解析部は、更新されたプログラム又は共有プログラムのリンク関係を解析してプログラム間のリンク関係の構造を更新し、前記共通リンク関係抽出部は、更新されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報を更新し、前記共通ロード状態管理情報作成部は、更新されたリンク関係の情報に基づいて、更新されたロード状態管理情報を用いて前記共通利用ロード状態管理情報及び前記個別利用ロード状態管理情報を更新することが好ましい。
【００４３】
この場合、プログラム及び共有プログラムのうち少なくとも一方が更新されたときに、共通利用ロード状態管理情報及び個別利用ロード状態管理情報を自動的に更新することができるので、プログラム又は共有プログラムが更新された場合でも、プログラムの起動時間を高速化しつつ、メモリ消費量を削減することができる。
【発明の効果】
【００４４】
本発明によれば、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とが区分されて記憶され、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられ、記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられるので、プログラム起動時に、実行空間に割り当てられた情報に基づいてプログラムを起動することにより、プログラムの起動時間を高速化しつつ、メモリ消費量を削減することができる。
【発明を実施するための最良の形態】
【００４５】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００４６】
（実施の形態１）
図１は、本発明の実施の形態１によるプログラム起動装置を含む情報処理装置の構成を示すブロック図である。この情報処理装置１００は、それ自体としてユーザの使用に供することもできるが、様々な電気機器に組み込まれてもよい。情報処理装置１００の一例は、代表的にはＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）又は携帯電話機等の携帯通信端末である。携帯通信端末では、アプリケーションの起動や応答の性能向上が特に要求されるので、後述するプログラム起動装置による向上した起動高速化効果がもたらす利益が甚大である。
【００４７】
情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理部）１、メモリ装置２、通信装置３４、入力装置４０、表示装置４５、タイマー回路５１及び割込コントローラ５５を備えている。これらの装置は、バスライン５０を通じて互いに接続されている。また、必要に応じて、バスライン５０には、ハードディスク装置２５及び読取装置３２を接続することが可能となっている。ハードディスク装置２５、読取装置３２、入力装置４０及び表示装置４５は、それぞれ、インタフェース２６、３５、４１及び４６を通じてバスライン５０に接続される。
【００４８】
ＣＰＵ１は、単一のＣＰＵで構成されてもよく、複数のＣＰＵで構成されてもよい。一例として、情報処理装置１００は、複数のＣＰＵ１１、１２、１３、…を有するものとする。メモリ装置２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２１及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２を備えている。ＲＯＭ２１は、ＣＰＵ１の動作を規定する、起動処理プログラム等を含むコンピュータプログラムを記憶している。コンピュータプログラムは、ハードディスク装置２５に記憶させることもできる。
【００４９】
ＣＰＵ１は、ＲＯＭ２１又はハードディスク装置２５が格納するコンピュータプログラムを、必要に応じてＲＡＭ２２に書き込みつつ、コンピュータプログラムが規定する処理を実行する。ＲＡＭ２２は、ＣＰＵ１が処理を実行するのに伴って発生するデータを一時的に記憶する記憶媒体としても機能する。ＲＯＭ２１には、フラッシュＲＯＭのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリや記憶媒体も含まれる。ＲＡＭ２２には、電源を切ると記憶内容が保持されない揮発性のメモリや記憶媒体が含まれる。
【００５０】
ハードディスク装置２５は、内蔵する不図示のハードディスクに対して、コンピュータプログラム、或いはデータを書き込み及び読み出す装置である。読取装置３２は、記録媒体３１（例えばＣＤやＤＶＤやメモリカードなど）に記録されたコンピュータプログラム、又はデータを読み取る装置である。通信装置３４は、電話回線、ネットワーク線、無線通信、赤外線通信等の通信回線３３を通じて、外部と自身との間で、コンピュータプログラム、或いはデータを交換する装置である。
【００５１】
入力装置４０は、ユーザの操作によりデータ等を入力する装置であり、例えば、ＰＤＡに配列されたキーボード、携帯電話機に配列された入力ボタン、又は着脱自在のマウス若しくはキーボードである。表示装置４５は、データ、画像等を画面に表示したり、データ等を音声で表示したりする装置であり、例えばＬＣＤ（Ｌｉｇｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ；液晶表示器）である。
【００５２】
タイマー回路５１は、一定の周期でタイマー割込信号を出力する装置である。割込コントローラ５５は、タイマー回路５１、入力装置４０、ＣＰＵ１のうちの処理実行中のＣＰ
Ｕ以外のＣＰＵ、ネットワークデバイスとしての通信装置３４、ハードディスク装置２５、読取装置３２等から送られる割込要求信号を、ＣＰＵ１へ中継する装置である。各装置からの割込要求には優先度が付けられている。割り込みコントローラ５５は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。
【００５３】
以上のように、情報処理装置１００は、コンピュータとして構成されている。上記コンピュータプログラムは、ＲＯＭ２１、不図示のフレキシブルディスク、ＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体３１を通じて供給することも、通信回線３３等の伝送媒体を通じて供給することも可能である。例えば、記録媒体３１としてＣＤ−ＲＯＭに記録されたコンピュータプログラムは、読取装置３２を情報処理装置１００に接続することにより、読み出すことができ、さらにＲＡＭ２２又はハードディスク装置２５に格納することができる。
【００５４】
ＲＯＭ２１によってコンピュータプログラムが供給される場合には、当該ＲＯＭ２１を情報処理装置１００に搭載することにより、ＣＰＵ１は、上記コンピュータプログラムに従った処理を実行可能となる。通信回線３３等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置３４を通じて受信され、例えば、ＲＡＭ２２又はハードディスク装置２５に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であってもよい。また、伝送媒体は、通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
【００５５】
プログラム起動装置１０は、ＣＰＵ１、及び起動処理プログラム（起動高速化プログラム）を格納するメモリ装置２を備え、それ自身コンピュータとして構成され、情報処理装置１００に組み込まれる。プログラム起動装置１０は、好ましくは、ＣＰＵ１及びメモリ装置２を単一の半導体基板に作り込んだＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）等の集積回路として構成される。
【００５６】
図２は、プログラム起動装置１０の各機能を説明するための機能ブロック図である。メモリ装置２には、一つ以上のアプリケーション１０１や一つ以上の共有ライブラリ１０２と、プログラム起動装置１０を実現する主要なプログラム（例えば、起動処理プログラム）やデータが格納されている。これらのプログラムやデータは、ＣＰＵ１と協働してプログラム起動装置１０を実現する。すなわち、ＣＰＵ１がメモリ装置２に記憶されている起動処理プログラムを実行することにより、プログラム起動装置１０は、プログラム記憶部１１１、リンク関係解析部１１２、共通リンク関係抽出部１１３、共通ロード状態管理情報作成部１１４、共通ロード状態管理情報記憶部１１５、アプリケーションロード実行部１２１、ロード状態管理情報記憶部１２２、アプリケーション起動開始検出部１３１、共有ライブラリリンク情報検索部１３２、ロード状態管理情報割り当て部１３３、共有ライブラリロード実行部１３４、及びアプリケーション動作実行部１３５として機能する。
【００５７】
プログラム記憶部１１１は、メモリ装置２のＲＯＭ２１等から構成され、一つ以上のアプリケーション１０１と、一つ以上の共有ライブラリ１０２とが記憶されている。ここで、アプリケーション１０１は、実行プログラムの総称であり、種々のミドルウェア、ファイルシステム、デバイスドライバであってもよい。また、共有ライブラリ１０２は、アプリケーション１０１の複数から共通に利用されるものの総称であり、共通に利用される性質のものであればよい。
【００５８】
また、アプリケーション１０１と共有ライブラリ１０２とは、ともに情報処理装置１００で実行可能なプログラムである。アプリケーション１０１は、共有ライブラリ１０２のうちどの共有ライブラリが必要であるかを示すリンク情報１０３を備える。また、アプリケーション１０１だけではなく、共有ライブラリ１０２自身も別の共有ライブラリを必要とする場合がある。その場合、共有ライブラリ１０２は、別の共有ライブラリへのリンク情報１０４を保持する。一般的には、これらのリンク情報１０３、１０４は、アプリケーション１０１及び共有ライブラリ１０２の各々をある記述言語で記述したソースファイルから実行可能な状態にコンパイル及びリンクする際に付加される。
【００５９】
アプリケーションロード実行部１２１は、プログラム記憶部１１１に記憶されているアプリケーション１０１及び共有ライブラリ１０２を読み出して各アプリケーション１０１のロード処理を実行し、複数のアプリケーションから共通に利用される共有ライブラリ１０２を実行空間にロードした際のロード状態の管理構造を表すロード状態管理情報１２３をロード状態管理情報記憶部１２２に記憶させる。
【００６０】
リンク関係解析部１１２は、プログラム記憶部１１１に記憶されているリンク情報１０３、１０４を参照して、複数のアプリケーション１０１と複数のアプリケーションから共通に利用される共有ライブラリ１０２とのリンク関係を解析し、アプリケーションと共有ライブラリとの間のリンク関係の構造を表す情報（以下、単に「リンク関係の構造」と称す）を共通リンク関係抽出部１１３及び共通ロード状態管理情報作成部１１４へ出力する。
【００６１】
共通リンク関係抽出部１１３は、リンク関係解析部１１２のリンク関係の構造に基づいて、複数のアプリケーションで共通に利用可能なリンク関係の構造を抽出し、複数のアプリケーションで共通に利用可能なリンク関係の情報を共通ロード状態管理情報作成部１１４へ出力する。
【００６２】
共通ロード状態管理情報作成部１１４は、リンク関係解析部１１２から取得したリンク関係の構造と、共通リンク関係抽出部１１３から取得した複数のアプリケーションで共通に利用可能なリンク関係の情報とに基づいて、アプリケーションに対して必要な共有ライブラリへのリンク関係を表す共有ライブラリリンク関係情報１５１を作成し、共通ロード状態管理情報として共通ロード状態管理情報記憶部１１５に記憶させる。
【００６３】
また、共通ロード状態管理情報作成部１１４は、リンク関係解析部１１２から取得したリンク関係の構造と、共通リンク関係抽出部１１３から取得した複数のアプリケーションで共通に利用可能なリンク関係の情報に基づいて、ロード状態管理情報記憶部１２２のロード状態管理情報１２３から、各アプリケーションが共通に利用するロード状態管理情報である共通利用ロード状態管理情報１５２と、各アプリケーションが個別に利用するロード状態管理情報である個別利用ロード状態管理情報１５３とを区分して作成し、共通ロード状態管理情報として共通ロード状態管理情報記憶部１１５に記憶させる。
【００６４】
アプリケーション起動開始検出部１３１は、アプリケーション起動部１３０からアプリケーションの起動を通知されることにより、アプリケーションの起動が開始されたことを検出し、複数のアプリケーション１０１のうちどのアプリケーションが起動を開始したのかを示す情報を共有ライブラリリンク情報検索部１３２に通知する。なお、アプリケーション起動部１３０は、ＣＰＵ１で動作しているＯＳ（オペレーティング・システム）のカーネルから構成されるので、図１に示すプログラム起動装置１０の構成要素として必須ではない。
【００６５】
共有ライブラリリンク情報検索部１３２は、共通ロード状態管理情報記憶部１１５に問い合わせ、共有ライブラリリンク関係情報１５１を参照して起動を開始したアプリケーションに必要な全ての共有ライブラリを把握し、起動を開始したアプリケーションが共通に利用する共通利用ロード状態管理情報１５２と、起動を開始したアプリケーションが個別に利用する個別利用ロード状態管理情報１５３とをロード状態管理情報割り当て部１３３へ渡す。
【００６６】
ロード状態管理情報割り当て部１３３は、アプリケーションの起動が開始され、アプリケーション起動開始検出部１３１がアプリケーションの起動を検出すると、必要な共有ライブラリを実行空間にロードするにあたって、共通ロード状態管理情報記憶部１１５に記憶されている共通利用ロード状態管理情報１５２を参照するために、起動を開始したアプリケーションが共通に利用する共有ライブラリのロード状態の管理構造をＲＯＭ２１又は二次記憶装置であるハードディスク装置２５等に割り当て、個別利用ロード状態管理情報１５３を用いて各アプリケーションで個別に参照するために、起動を開始したアプリケーションが個別に利用する共有ライブラリのロード状態の管理構造を主記憶装置であるＲＡＭ２２に割り当てる。
【００６７】
共有ライブラリロード実行部１３４は、ロード状態管理情報割り当て部１３３が共有ライブラリのロード状態の管理構造を割り当てた後、実行空間に共有ライブラリ本体を割り当てて実行可能な状態にロードし、アプリケーション動作実行部１３５は、動作可能になったアプリケーションを実行する。
【００６８】
なお、アプリケーションロード実行部１２１によるロード状態管理情報１２３の作成処理や、リンク関係解析部１１２、共通リンク関係抽出部１１３及び共通ロード状態管理情報作成部１１４による共有ライブラリリンク関係情報１５１、共通利用ロード状態管理情報１５２及び個別利用ロード状態管理情報１５３の作成処理は、少なくともアプリケーションの起動が開始される前に実行されていればよく、任意のタイミングで実行することができる。
【００６９】
また、共有ライブラリリンク関係情報１５１、共通利用ロード状態管理情報１５２及び個別利用ロード状態管理情報１５３が、共通ロード状態管理情報記憶部１１５に製造時等に予め記憶されている場合、プログラム記憶部１１１、リンク関係解析部１１２、共通リンク関係抽出部１１３、共通ロード状態管理情報作成部１１４、共通ロード状態管理情報記憶部１１５、アプリケーションロード実行部１２１及びロード状態管理情報記憶部１２２を省略してもよい。
【００７０】
次に、アプリケーション１０１と共有ライブラリ１０２とのリンク関係の一例を図３に挙げて、リンク関係について説明する。図３では、アプリケーション１０１の例として、二つのアプリケーション１（２０１）とアプリケーション２（２０２）を取りあげる。アプリケーション１（２０１）には、リンク情報（２１１）に、共有ライブラリＡ（２０３）をリンクするという情報を備えている。また、アプリケーション２（２０２）は、リンク情報（２１２，２１３）に共有ライブラリＸ（２０５）と共有ライブラリＢ（２０４）をリンクするという情報を備えている。
【００７１】
ここで、共有ライブラリＡ（２０３）のリンク情報（２１４）には、共有ライブラリＸ（２０５）をリンクする情報が存在する。共有ライブラリＸ（２０５）は、リンク情報（２１５）から共有ライブラリＹ（２０６）をリンクしている。すなわち、図３の例では、アプリケーション１（２０１）及びアプリケーション２（２０２）は、アプリケーション自体のリンク情報２１１〜２１３には記述されていないが、ともに共有ライブラリＸ（２０５）と共有ライブラリＹ（２０６）とをリンクすることになる。一般的には、アプリケーション１０１、共有ライブラリ１０２は多数存在し、これらのリンク関係は図３の例に比べて複雑になる。
【００７２】
従来の起動処理では、一般的に、アプリケーションを起動する場合、動的ローダがアプリケーションに必要な共有ライブラリを検索し、共有ライブラリのコードやデータなどをそのアプリケーションの実行空間にロードする。図３の例では、動的ローダが、アプリケーション１（２０１）に必要な共有ライブラリＡ（２０３）、Ｘ（２０５）、Ｙ（２０６）を実行空間にロードし、ロード状態を管理するために共有ライブラリＡ（２０３）、Ｘ（２０５）、Ｙ（２０６）のロード状態管理情報を作成する。また、動的ローダが、アプリケーション２（２０２）に必要な共有ライブラリＢ（２０４）、Ｘ（２０５）、Ｙ（２０６）を実行空間にロードし、ロード状態を管理するために共有ライブラリＢ（２０４）、Ｘ（２０５）、Ｙ（２０６）のロード状態管理情報を作成する。
【００７３】
このように、従来の起動処理では、アプリケーションによってリンクする共有ライブラリが異なるため、ロード状態管理情報は、動的ローダによってアプリケーションごとに検索され作成されていた。図４に、ロード状態管理情報の一例を示す。
【００７４】
図４の例では、ロード状態管理情報２５２は、下記のような情報を含む。まず、ロード状態管理情報２５２に、どの共有ライブラリのロード状態であるかを示す共有ライブラリ名２６１が存在し、共有ライブラリごとにロード状態管理情報が作成されている。
【００７５】
また、ロード状態管理情報２５２には、前のロード状態管理情報２５１を指すポインタ２６４や次のロード状態管理情報２５３を指すポインタ２６５が存在し、アプリケーションの実行空間にロードされた共有ライブラリのロード状態がリストになって管理されている。さらに、ロード状態管理情報２５２には、共有ライブラリの実体をアプリケーションの実行空間のどのアドレスにロードしたかを示すロードアドレス２６２があり、ロードした共有ライブラリがアプリケーションの実行空間のどのくらいのサイズの領域を占めるかを示すロードサイズ２６３がある。
【００７６】
また、ロード状態管理情報２５２には、共有ライブラリがリンクしている他の共有ライブラリのリストや、動的ローダが実行空間にロード済みの共有ライブラリを検索するためのリストを表すリンク検索用リスト２６６がある。さらに、各種情報のカウント数２６７には、ロードした共有ライブラリの参照カウントや共有ライブラリのプログラム本体の構成に関わるカウント数、例えば、プログラムヘッダの数やダイナミックセクションのエントリ数などが含まれる。
【００７７】
また、共有ライブラリ本体の各種情報への参照ポインタ２６８は、ロードした共有ライブラリのプログラム本体に含まれる情報へのポインタであり、例えば、プログラムヘッダへのポインタ、ダイナミックセクションへのポインタ、シンボルハッシュテーブルへのポインタなどが挙げられる。さらに、動的ローダが共有ライブラリを実行空間にロードする際にすでに実行コードの再配置処理を実施したことを示す情報や、共有ライブラリの初期化処理を実施したことを示す情報などが、各種ロード処理実施の有無２６９の情報として管理される。
【００７８】
なお、図４に挙げたロード状態管理情報２５２の内容は、例示に過ぎず、アプリケーション及び共有ライブラリを実行空間にロードする際にロード状態を管理するために必要となる情報であればよく、ロード状態管理情報の内容を限定するものではない。
【００７９】
上記のように、従来の起動処理では、アプリケーションが起動される時に初めて、動的ローダがアプリケーションにとって必要な共有ライブラリを検索し、各共有ライブラリの情報を読み込んで実行空間にロードし、ロード管理情報を作成していた。これに対して、図２に示すアプリケーションロード実行部１２１は、アプリケーションが起動される前にアプリケーション及び共有ライブラリのロード状態管理情報１２３を作成し、ロード状態管理情報記憶部１２２に記憶させる。したがって、本実施の形態では、実際にアプリケーションを起動する際に、このロード状態管理情報１２３を再利用することにより、アプリケーション起動処理の高速化を実現できる。
【００８０】
すなわち、アプリケーションロード実行部１２１は、アプリケーションの起動時に動的ローダが実行する共有ライブラリのロード処理と同等の処理を行い、ロード状態の管理構造を表すロード状態管理情報１２３を取得して共通ロード状態管理情報記憶部１１５に記憶させる。このロード状態管理情報１２３（ロード状態の管理構造）とは、図４に例示したロード状態管理情報２５１〜２５３の情報を含むものであり、アプリケーションの起動時に共有ライブラリのロード状態を管理するために必要なものである。
【００８１】
なお、アプリケーションロード実行部１２１は、典型的には、アプリケーション１０１のうち全てのアプリケーションのロード処理を行い、全てのアプリケーションと全ての共有ライブラリのロード状態の管理構造を入手できるのが好ましいが、一部のアプリケーションと共有ライブラリとのロード状態の管理構造を取得してもかまわない。また、アプリケーションロード実行部１２１は、実際に使用される動的ローダそのものにより実現してもよく、実際に使用される動的ローダの動作を模擬するプログラムにより実現してもかまわない。
【００８２】
ロード状態管理情報記憶部１２２は、アプリケーションロード実行部１２１によってロード処理が行われたアプリケーション及び共有ライブラリの全てのロード状態の管理構造を、アプリケーション及び共有ライブラリのロード状態管理情報１２３として、アプリケーション起動時に使用する構造と同一の構造で記憶する。なお、ロード状態管理情報１２３の記憶先は、一時的に記憶できるところであればよく、ロード状態管理情報記憶部１２２は、メモリ装置２内のＲＯＭ２１又はＲＡＭ２２、二次記憶装置であるハードディスク装置２５や読取装置３２を通じて読み書きできる記録媒体３１でもよく、特に限定されない。
【００８３】
ここで、アプリケーションを起動する際に、アプリケーション及び共有ライブラリのロード状態管理情報１２３をそのまま再利用することにより、起動の高速化を実現できるが、アプリケーションごとに異なる共有ライブラリのロード状態管理情報の集合をメモリや各種記憶媒体に記憶すると、アプリケーション間で同一の共有ライブラリのロード状態管理情報を重複して保持することになり、メモリ容量を大きく消費する。
【００８４】
このため、本実施の形態では、図２に示すリンク関係解析部１１２は、プログラム記憶部１１１に記憶されているリンク情報１０３、１０４を参照して、アプリケーション１０１と共有ライブラリ１０２との間のリンク関係の構造を抽出し、共通リンク関係抽出部１１３は、このリンク関係の構造に基づいて、複数のアプリケーションで共通に利用可能なリンク関係の情報を抽出し、共通ロード状態管理情報作成部１１４は、各ロード状態管理情報をシステム全体で共通に使用できるように、複数のアプリケーションで共通に利用可能なリンク関係の情報と、アプリケーション及び共有ライブラリのロード状態管理情報１２３とから共通ロード状態管理情報１５１〜１５３を作成して共通ロード状態管理情報記憶部１１５に記憶させる。
【００８５】
ここで、共通ロード状態管理情報１５１〜１５３を揮発性のメモリであるＲＡＭ２２のみに記憶していると、情報処理装置１００に電源を入れ直すたびに、再度、共通ロード状態管理情報１５１〜１５３を作成し直す必要性が生じる。このため、電源のＯＮ／ＯＦＦにかかわらず、共通ロード状態管理情報１５１〜１５３を保持できるように、共通ロード状態管理情報記憶部１１５は、不揮発性のメモリ、例えばＲＯＭ２１から構成されることが好ましい。また、共通ロード状態管理情報１５１〜１５３のうち、共通利用ロード状態管理情報１５２のみをＲＯＭ２１に記憶するようにしてもよい。この場合、最も利用される頻度の高い共通利用ロード状態管理情報１５２を作成し直す必要がなくなるので、ＲＯＭ２１の容量をできるだけ低減しながら、電源オン時の起動処理を高速化することができる。なお、電源を入れ直すたびに、共通ロード状態管理情報１５１〜１５３を作成し直すという前提であれば、共通ロード状態管理情報記憶部１１５を揮発性のメモリであるＲＡＭ２２から構成するようにしてもよい。
【００８６】
一般的には、動的ローダがロード状態管理情報を作成する場合、一時的な記憶領域として揮発性のメモリであるＲＡＭにロード状態管理情報のための領域を確保して、アプリケーションそれぞれの実行空間からアクセスできるようにメモリ管理上の割り当てを行う。一方、プログラム起動装置１０では、共通ロード状態管理情報１５１〜１５３を不揮発性のメモリであるＲＯＭ２１に保持しているので、揮発性のメモリであるＲＡＭ２２を消費しないようにすることができる。
【００８７】
しかし、一般的なメモリ管理方式では、ＲＯＭやＲＡＭの領域を、一定単位の領域サイズ（例えばページサイズ）ごとに、アプリケーションそれぞれの実行空間に割り当てる。したがって、共有ライブラリのロード状態管理情報を個別に、メモリ管理の割り当てを行うと無駄が多い。
【００８８】
また、通常、アプリケーション間で共通の共有ライブラリをロードする場合でも、ロード状態を管理する順序は異なる。例えば、図３の例では、アプリケーション１（２０１）とアプリケーション２（２０２）は、ともに共有ライブラリＸ（２０５）と共有ライブラリＹ（２０６）とをリンクするが、リンクしている順序の関係上、アプリケーション１（２０１）では共有ライブラリＡ（２０３）、共有ライブラリＸ（２０５）、共有ライブラリＹ（２０６）の順序でロード状態管理情報を作成し、アプリケーション２（２０２）では共有ライブラリＸ（２０５）、共有ライブラリＢ（２０４）、共有ライブラリＹ（２０６）の順序でロード状態管理情報を作成する可能性がある。
【００８９】
これに対して、ＲＯＭ上の共通ロード状態管理情報全体を、メモリ管理によって各アプリケーションの実行空間に割り当て、どのアプリケーションからも参照できるように設定し、ロード状態管理情報の参照ポインタのみを共通ロード状態管理情報の中の該当ロード状態管理情報を指すように設定することもできる。
【００９０】
しかしながら、上記の方式では、アプリケーションにとって必要のない多数の共有ライブラリのロード状態管理情報が実行空間に割り当てられ、不要なアクセスを可能にしてしまう。例えば、図３の例では、アプリケーション１（２０１）にとって不要な共有ライブラリＢ（２０４）のロード状態管理情報まで実行空間に割り当てられ、アクセス可能になってしまう。不要なアクセスが可能になると、安全性の低下や不要なバグを引き起こすことにつながり問題となる。
【００９１】
そこで、プログラム起動装置１０では、リンク関係解析部１１２が図２のアプリケーション１０１及び共有ライブラリ１０２のリンク情報１０３，１０４を解析して、アプリケーションと共有ライブラリとのリンク関係の構造を出力し、このリンク関係の構造にしたがって、共通リンク関係抽出部１１３が可能な限りアプリケーション間で共通にロード状態管理情報を利用できるように、共通のリンク関係を抽出する。
【００９２】
図３の例で示したように、通常、リンク情報１０３、１０４には、アプリケーション１０１及び共有ライブラリ１０２にそれぞれ必要なリンク関係のみを示している。そのため、個別のアプリケーションや個別の共有ライブラリの情報のみでは、アプリケーションに必要な全てのリンク関係が得られない。そこで、リンク関係解析部１１２は、リンク関係を解析してリンク関係の構造を出力する。リンク関係の構造の一例を図５に示す。
【００９３】
図５では、３つのアプリケーションとリンクされる合計１０個の共有ライブラリとのリンク関係の構造を示す。この例では、共有ライブラリＢ（３０１）や共有ライブラリＥ（３０２）や共有ライブラリＦ（３０３）が、アプリケーション間で共有して使用されていることがわかる。なお、図５のリンク関係の構造は、あくまでも一例であり、リンク関係の構造は、アプリケーション１０１や共有ライブラリ１０２の作りによって変化する。
【００９４】
共通リンク関係抽出部１１３は、リンク関係解析部１１２の処理が終わり、リンク関係の構造が出力されると、可能な限りアプリケーション間で共通にロード状態管理情報を利用できるように、共通のリンク関係の情報を抽出し、共通ロード状態管理情報作成部１１４に抽出結果を通知する。
【００９５】
ここで、共通リンク関係抽出部１１３は、アプリケーション間でどの程度ロード状態管理情報が共通化できるかを把握する必要がある。例えば、共有ライブラリごとにアプリケーションからどの程度リンクされているのか、又はその共有ライブラリの配下にどの程度共有ライブラリのリンク関係が展開されているのかによって、どの共有ライブラリ群を抽出すれば、システム全体でリンク関係を最も共通化できるのかを知ることができる。
【００９６】
リンク関係の構造が与えられた時に、共通リンク関係抽出部１１３が共有ライブラリごとにアプリケーションからどの程度リンクされているかを検査する処理の流れの一例を図６に示す。
【００９７】
まず、共通リンク関係抽出部１１３は、リンク関係解析部１１２から受け取ったリンク関係の構造から、まだ検査を終えていないアプリケーションを取得する（Ｓ４０１）。次に、共通リンク関係抽出部１１３は、リンク関係の構造に基づいて、取得したアプリケーションのリンク先からたどれる共有ライブラリの中から、まだ検査を終えていない共有ライブラリを取得する（Ｓ４０２）。ここで、共通リンク関係抽出部１１３は、共有ライブラリの項目ごとにリンク数を管理している。
【００９８】
次に、共通リンク関係抽出部１１３は、ステップＳ４０２で取得した共有ライブラリに対応する項目が存在するか確認する（Ｓ４０３）。次に、共通リンク関係抽出部１１３は、ステップＳ４０３で共有ライブラリの項目が、管理している共有ライブラリの項目に既に存在すると判定すれば（Ｓ４０３でＹｅｓ）、該当する共有ライブラリの項目に対してアプリケーションからのリンク数を１つ加算する（Ｓ４０５）。
【００９９】
一方、共通リンク関係抽出部１１３は、ステップＳ４０３で共有ライブラリの項目が存在しないと判定すれば（Ｓ４０３でＮｏ）、その共有ライブラリの項目を作成して（Ｓ４０４）、該当する共有ライブラリの項目に対してアプリケーションからのリンク数を１つ加算する（Ｓ４０５）。
【０１００】
次に、共通リンク関係抽出部１１３は、リンクしている共有ライブラリの中でまだ未検査の共有ライブラリが残っているかを判定する（Ｓ４０６）。共通リンク関係抽出部１１３は、ステップＳ４０６で、未検査の共有ライブラリが残っていると判定すれば（Ｓ４０６でＹｅｓ）、ステップＳ４０２の処理に戻る。
【０１０１】
一方、共通リンク関係抽出部１１３は、ステップＳ４０６で、未検査の共有ライブラリが残っていないと判定すれば（Ｓ４０６でＮｏ）、リンク関係の構造から取得できるアプリケーションの中で未検査のアプリケーションが残っているかを判定する（Ｓ４０７）。共通リンク関係抽出部１１３は、ステップＳ４０７で未検査のアプリケーションが残っていると判定すれば（Ｓ４０７でＹｅｓ）、ステップＳ４０１の処理に戻る。一方、共通リンク関係抽出部１１３は、ステップＳ４０７で、未検査のアプリケーションが残っていないと判定すれば（Ｓ４０７でＮｏ）、処理を終了する。
【０１０２】
次に、共通リンク関係抽出部１１３が共有ライブラリの配下にどの程度共有ライブラリのリンク関係が展開されるかを検査する処理の流れの一例を図７に示す。
【０１０３】
まず、共通リンク関係抽出部１１３は、リンク関係解析部１１２から受け取ったリンク関係の構造に含まれる共有ライブラリの中から、未検査の共有ライブラリを取得する（Ｓ４５１）。共通リンク関係抽出部１１３は、未検査の共有ライブラリを取得できなければ（Ｓ４５２でＮｏ）、処理を終了し、未検査の共有ライブラリを取得できれば（Ｓ４５２でＹｅｓ）、取得した共有ライブラリから未検査の共有ライブラリへのリンク先が残っているかを判定する（Ｓ４５３）。
【０１０４】
共通リンク関係抽出部１１３は、未検査のリンク先が残っていれば（Ｓ４５３でＹｅｓ）、リンク先の共有ライブラリの中から未検査の共有ライブラリを取得し（Ｓ４５７）、ステップＳ４５３以降の処理を実行する。一方、共通リンク関係抽出部１１３は、ステップＳ４５３で未検査のリンク先が残っていないと判定すれば（Ｓ４５３でＮｏ）、その共有ライブラリを検査済みにし、該当する共有ライブラリの項目に対して配下の共有ライブラリリンク総数を１つ加算する（Ｓ４５４）。
【０１０５】
次に、共通リンク関係抽出部１１３は、リンク元の共有ライブラリが存在するかを判定する（Ｓ４５５）。共通リンク関係抽出部１１３は、リンク元の共有ライブラリが存在しないと判定すれば（Ｓ４５５でＮｏ）、ステップＳ４５１以降の処理を実行する。一方、共通リンク関係抽出部１１３は、ステップＳ４５５でリンク元の共有ライブラリが存在すると判定すれば（Ｓ４５５でＹｅｓ）、その共有ライブラリに対する全てのリンク元の共有ライブラリの項目に対して、配下の共有ライブラリリンク総数を１つ加算し、リンク元の共有ライブラリの一つを取得し（Ｓ４５６）、ステップＳ４５３以降の処理を実行する。
【０１０６】
このように、本実施の形態では、図６及び図７に示す共通リンク関係抽出部１１３の処理によって、どの共有ライブラリ群を抽出すればシステム全体でリンク関係を最も共通化できるのか把握するための情報を算出することができる。なお、図６及び図７に示した処理の流れは、共通リンク関係抽出部１１３の処理の例示に過ぎず、同様の内容の処理が他の流れで実施されてもよい。
【０１０７】
上記の図６及び図７の処理を、例えば、図５に例示したリンク関係の構造に適用すると、図８に示す情報が得られる。図８は、共有ライブラリＡ〜Ｊの各項目に対して、アプリケーションからのリンク数及び配下の共有ライブラリリンク総数を示している。図８を見ると、図５の例では、アプリケーションからのリンク数が最も多いのは共有ライブラリＥ（３０２）で、アプリケーション１（３１１）、アプリケーション２（３１２）、アプリケーション３（３１３）の三つのアプリケーション全てからリンクされていることがわかる。したがって、アプリケーションからどの程度利用されるかという観点では、共通リンク関係抽出部１１３は、共有ライブラリＥ（３０２）が最も利用されやすいと判断することができる。
【０１０８】
また、図８によると、図５の例では、共有ライブラリ自身も含めて配下の共有ライブラリのリンク数が最も多いのは、共有ライブラリＢ（３０１）と共有ライブラリＣ（３０４）との二つであり、どちらも自分自身を含めて合計六つの共有ライブラリを最終的にはリンクしている。すなわち、共有ライブラリＢ（３０１）及び共有ライブラリＣ（３０４）は、アプリケーションの実行空間にロードする際、それら自身も含めて合計六つの共有ライブラリを実行空間にロードすることになる。共有ライブラリがどの程度利用されるかという観点では、共通リンク関係抽出部１１３は、共有ライブラリＢ（３０１）と共有ライブラリＣ（３０４）が最も多く共有ライブラリをロードすることになると判断することができる。
【０１０９】
このように、共通リンク関係抽出部１１３は、図８の情報に基づいて、システム全体でリンク関係を最も共通化できる共有ライブラリ群を抽出することができる。典型的には、多くのアプリケーションから利用され、多くの共有ライブラリをロードするために、図８に示すアプリケーションからのリンク数と配下の共有ライブラリリンク総数との積を求め、この積の値が最も大きい共有ライブラリを選択するという方式を取ることができる。
【０１１０】
この方式を取る場合、図８の例では、三つのアプリケーション全てからリンクされている共有ライブラリＥ（図５の３０２）の配下の共有ライブラリリンク総数は１であり、積は３となる。また、共有ライブラリＢ（図５の３０１）及び共有ライブラリＣ（図５の３０４）は、ともに合計六つの共有ライブラリを実行空間にロードするが、共有ライブラリ
Ｃ（図５の３０４）は一つのアプリケーションからのみリンクされているため、積は６となり、共有ライブラリＢ（図５の３０１）は二つのアプリケーションからリンクされていて、積は１２となる。
【０１１１】
したがって、共通リンク関係抽出部１１３は、他の共有ライブラリの情報に対しても同様の選択基準を適用して、図８の例では共有ライブラリＢを最大共有ライブラリとして選択することができる。共通リンク関係抽出部１１３は、最大共有ライブラリを選択すると、リンク関係の構造に基づいて、選択した最大共有ライブラリからリンクされている全ての共有ライブラリをたどることにより、システム全体でリンク関係を最も共通化できる共有ライブラリ群を抽出できる。
【０１１２】
図５の例では、共通リンク関係抽出部１１３は、共有ライブラリＢ（３０１）と、共有ライブラリＥ（３０２）、共有ライブラリＦ（３０３）、共有ライブラリＨ（３０８）、共有ライブラリＩ（３０９）、共有ライブラリＪ（３１０）の六つの共有ライブラリとを、最も共通化できる共有ライブラリ群として抽出することができる。
【０１１３】
なお、図５及び図８は、共通リンク関係抽出部１１３の処理を説明するための例示に過ぎず、図５及び図８に示す情報は、アプリケーション１０１や共有ライブラリ１０２の構成に応じて変化する。また、抽出の指標として、アプリケーションからのリンク数と配下の共有ライブラリリンク総数とを利用したが、その他の指標を使用してもかまわない。また、前述の二つの指標の積によって抽出する方式を示したが、指標の一方のみを用いたり、指標の一方に又は両方に所定の係数を重み付けするなどの他の方式も考えられる。
【０１１４】
上記の処理が終了した後、図２に示す通り、共通リンク関係抽出部１１３は、最も共通化できるライブラリ群を抽出し、共通ロード状態管理情報作成部１１４に通知する。共通ロード状態管理情報作成部１１４は、共通リンク関係抽出部１１３から渡されたライブラリ群と、リンク関係解析部１１２から渡されたリンク関係の構造と、ロード状態管理情報記憶部１２２が記憶しているアプリケーション及び共有ライブラリのロード状態管理情報１２３に基づいて、共通ロード状態管理情報１５１〜１５３を作成して共通ロード状態管理情報記憶部１１５に格納する。
【０１１５】
この共通ロード状態管理情報１５１〜１５３は、アプリケーションに対して必要な共有ライブラリへのリンク関係を表す共有ライブラリリンク関係情報１５１と、アプリケーション共通に利用するロード状態管理情報である共通利用ロード状態管理情報１５２と、アプリケーション個別に利用するロード状態管理情報ある個別利用ロード状態管理情報１５３によって構成される。
【０１１６】
共有ライブラリリンク関係情報１５１は、リンク関係の構造に基づいて作成される。すなわち、共通ロード状態管理情報作成部１１４は、リンク関係の構造に含まれるアプリケーションからリンク先の共有ライブラリを全てたどることにより、アプリケーションを起動する際に実行空間にロードしてロード状態を最終的に管理しなければいけない全ての共有ライブラリの情報を、アプリケーションごとに示すことができる。
【０１１７】
また、その際、共通ロード状態管理情報作成部１１４は、共通リンク関係抽出部１１３から渡されたライブラリ群の情報に基づいて、そのライブラリ群をリンクするアプリケーションの項目には、そのことがわかるライブラリ群識別情報を付加する。ライブラリ群識別情報としては、各アプリケーションに対して、当該アプリケーションが使用する共有ライブラリの中からライブラリ群が特定可能なように、ライブラリ群を所定の識別記号で囲ったり、複数のライブラリ群が存在する場合、各ライブラリ群を特定可能な識別情報を付加する等の種々の識別情報を用いることができる。
【０１１８】
図９に、共通ロード状態管理情報記憶部１１５に記憶される共通ロード状態管理情報１５１〜１５３の一例を示す。図９のアプリケーション１〜３に対して必要な共有ライブラリへのリンク関係を表す共有ライブラリリンク関係情報１５１には、アプリケーション１が必要とする全ての共有ライブラリが共有ライブラリＡ、共有ライブラリＤ、共有ライブラリＥであることを示す情報が含まれる（５０１）。また、アプリケーション２が必要とする全ての共有ライブラリは、ライブラリ群Ｂ、Ｅ、Ｆ、Ｈ、Ｉ、Ｊであり、且つこれらの共有ライブラリのロード状態管理情報は、システム全体で共通に利用することを識別できるようになっており、例えば、ライブラリ群識別情報として、括弧書き｛｝が付加されてライブラリ群Ｂ、Ｅ、Ｆ、Ｈ、Ｉ、Ｊが識別可能にされている（５０２）。
【０１１９】
アプリケーション共通に利用するロード状態管理情報である共通利用ロード状態管理情報１５２は、共通リンク関係抽出部１１３によって抽出されたライブラリ群のロード状態管理情報を、アプリケーション及び共有ライブラリのロード状態管理情報１２３から選出して一つに纏めて作成される。図９の例では、共通リンク関係抽出部１１３からライブラリ群として共有ライブラリＢ、Ｅ、Ｆ、Ｈ、Ｉ、Ｊが渡され、アプリケーション及び共有ライブラリのロード状態管理情報１２３から共有ライブラリＢ、Ｅ、Ｆ、Ｈ、Ｉ、Ｊのロード状態管理情報が選出されて纏められている（５０４）。
【０１２０】
アプリケーション個別に利用するロード状態管理情報である個別利用ロード状態管理情報１５３としては、アプリケーションが共通に利用する共通利用ロード状態管理情報１５２を作成する際に、アプリケーション及び共有ライブラリのロード状態管理情報１２３から選出されたロード状態管理情報以外のロード状態管理情報が保持される。図９の例では、共有ライブラリＢ、Ｅ、Ｆ、Ｈ、Ｉ、Ｊ以外の共有ライブラリＡ、Ｄ、Ｅ、Ｃ、Ｇ等のロード状態管理情報５１０〜５１４、…が記憶されている。
【０１２１】
従来の起動処理では、一般的に、アプリケーションが起動されると動的ローダが共有ライブラリをロードする処理を行う。一方、本実施の形態のプログラム起動装置１０では、図２で示す通り、アプリケーション起動部１３０がアプリケーションを起動し、アプリケーションの起動が開始されると、アプリケーション起動開始検出部１３１がアプリケーションの起動開始を検出し、どのアプリケーションが起動を開始したのかを示す情報を共有ライブラリリンク情報検索部１３２に通知する。共有ライブラリリンク情報検索部１３２は、共通ロード状態管理情報記憶部１１５に問い合わせて、アプリケーションに対して必要な共有ライブラリへのリンク関係を表す共有ライブラリリンク関係情報１５１を参照することにより、リンク関係を検索することなしに、起動を開始したアプリケーションに必要な全ての共有ライブラリを把握することができる。
【０１２２】
また、起動開始したアプリケーションが必要な共有ライブラリのうちロード状態管理情報をアプリケーションで共通に利用する共有ライブラリ群を表すライブラリ群識別情報が共有ライブラリリンク関係情報１５１にあれば、共有ライブラリリンク情報検索部１３２は、アプリケーションが共通に利用するロード状態管理情報を共通利用ロード状態管理情報１５２から読み出してロード状態管理情報割り当て部１３３に渡す。また、共有ライブラリリンク情報検索部１３２は、残りのロード状態管理情報として、共有ライブラリごとにアプリケーションが個別に利用するロード状態管理情報を個別利用ロード状態管理情報１５３から読み出してロード状態管理情報割り当て部１３３に渡す。
【０１２３】
ロード状態管理情報割り当て部１３３は、共有ライブラリリンク情報検索部１３２からアプリケーションが共通に利用するロード状態管理情報を渡されると、不揮発性のメモリ（例えばＲＯＭ２１）にあるロード状態管理情報を、メモリ管理上で直接参照できるように、実行空間のロード状態管理構造に割り当てる。また、ロード状態管理情報割り当て部１３３は、共有ライブラリリンク情報検索部１３２から共有ライブラリごとに個別のロード状態管理情報を渡されると、揮発性のメモリ（例えばＲＡＭ２２）に各々のロード状態管理情報をコピーし、コピー先を実行空間の個別のロード状態管理構造に割り当てる。
【０１２４】
共有ライブラリロード実行部１３４は、ロード状態管理情報割り当て部１３３が共有ライブラリのロード状態管理構造を構築すると、そのロード状態管理情報に基づいて、実行空間に共有ライブラリ本体を割り当てて実行可能な状態にロードし、アプリケーション動作実行部１３５は、動作可能になったアプリケーションを実行していく。
【０１２５】
上記の処理により、本実施の形態では、各アプリケーションが共通に利用する共有ライブラリのロード状態を管理するための共通利用ロード状態管理情報１５２と、各アプリケーションが個別に利用する共有ライブラリのロード状態を管理するための個別利用ロード状態管理情報１５３とが区分されて共通ロード状態管理情報記憶部１１５に記憶され、アプリケーションの起動が開始され、アプリケーションが使用する共有ライブラリを実行空間にロードするときに、記憶されている共通利用ロード状態管理情報１５２を参照するように、各アプリケーションが共通に利用する共有ライブラリのロード状態の管理構造が実行空間に割り当てられるので、アプリケーション起動時に実行空間に割り当てられた情報に基づいてアプリケーションを起動することにより、アプリケーションの起動時間を高速化しつつ、実行空間として使用されるメモリ消費量を削減することができる。
【０１２６】
（実施の形態２）
上記の情報処理装置１００のアプリケーションや共有ライブラリが追加されると、追加されたアプリケーションの起動時のロード状態の管理を新たに行う必要性が生じ、追加された共有ライブラリをロードする際のロード状態の管理を追加する必要性が生じる。また、情報処理装置１００のアプリケーションや共有ライブラリが修正されると、修正されたアプリケーションの起動時のロード状態の管理を修正する必要性が生じ、修正された共有ライブラリをロードする際のロード状態を修正する必要性が生じる。さらに、情報処理装置１００のアプリケーションや共有ライブラリが削除されると、不要になったアプリケーションの起動時のロード状態の管理を削除する必要性が生じ、不要になった共有ライブラリをロードする際のロード状態を削除する必要性が生じる。
【０１２７】
上記のような修正に対処すべく、本発明の実施の形態２によるプログラム起動装置は、情報処理装置１００が備えるアプリケーションや共有ライブラリなどのプログラムが追加、修正又は削除されるなどの更新が生じた場合にも、そのプログラムの更新に対応して共通ロード状態管理情報を更新し、アプリケーションの起動を高速化しつつ、メモリ消費量の削減を実現するものである。
【０１２８】
具体的には、本発明の実施の形態２のプログラム起動装置は、ハードウエアの構成として図１に示すプログラム起動装置１０と同様の構成を有し、例えば、図１に示す情報処理装置１００が、外部のネットワークや無線などの通信回線３３から通信装置３４を通じて、プログラムの更新情報や更新するプログラム又はその一部を受信した場合にも、アプリケーションの起動を高速化しつつ、メモリ消費量の削減を実現することができる。
【０１２９】
本発明の実施の形態２によるプログラム起動装置の構成を図１０に示す。図１０に示すプログラム起動装置は、図２に示した本発明の実施の形態１におけるプログラム起動装置の構成に、プログラム更新検出部６０１と、プログラム更新部６０２と、共通ロード状態管理情報更新部６０３とを追加しており、同一部分には同一符号を付して詳細な説明を省略する。
【０１３０】
図１０に示すプログラム起動装置は、図１に示すＣＰＵ１がメモリ装置２に記憶されている実施の形態２の起動処理プログラムを実行することにより、プログラム記憶部１１１、リンク関係解析部１１２、共通リンク関係抽出部１１３、共通ロード状態管理情報作成部１１４、共通ロード状態管理情報記憶部１１５、アプリケーションロード実行部１２１、ロード状態管理情報記憶部１２２、アプリケーション起動開始検出部１３１、共有ライブラリリンク情報検索部１３２、ロード状態管理情報割り当て部１３３、共有ライブラリロード実行部１３４、アプリケーション動作実行部１３５、プログラム更新検出部６０１、プログラム更新部６０２及び共通ロード状態管理情報更新部６０３として機能する。
【０１３１】
プログラム更新検出部６０１は、図１に示す通信回線３３から通信装置３４を通じて、情報処理装置１００のプログラム（アプリケーション又は共有ライブラリ）が更新されることを検出し、プログラムの更新情報や更新するプログラム又はその一部を受け取る。プログラム更新検出部６０１は、プログラムの更新がある旨をプログラム更新部６０２に通知し、プログラムの更新情報や更新プログラム又はその一部をプログラム更新部６０２に渡す。
【０１３２】
プログラム更新部６０２は、プログラム更新検出部６０１から受け取ったプログラムの更新情報にしたがって、情報処理装置１００のメモリ装置２から構成されているプログラム記憶部１１１に記憶されているアプリケーション１０１や共有ライブラリ１０２を更新する。プログラムの更新が完了すると、プログラム更新部６０２は、プログラムの更新が完了したことを共通ロード状態管理情報更新部６０３に通知する。
【０１３３】
共通ロード状態管理情報更新部６０３は、プログラムの更新が完了したことを通知されると、リンク関係解析部１１２とアプリケーションロード実行部１２１とに、再度、第１の実施の形態と同様に起動処理を実施するように通知する。
【０１３４】
共通ロード状態管理情報更新部６０３から通知を受けたアプリケーションロード実行部１２１は、更新されたアプリケーション１０１及び共有ライブラリ１０２を使用して、アプリケーションのロード処理を実行し、更新されたアプリケーション及び共有ライブラリのロード状態管理情報１２３を作成してロード状態管理情報記憶部１２２に記憶させる。
【０１３５】
また、共通ロード状態管理情報更新部６０３から通知を受けたリンク関係解析部１１２は、更新されたアプリケーション１０１及び共有ライブラリ１０２のリンク情報からリンク関係を解析し、更新された各プログラム間のリンク関係の構造を共通リンク関係抽出部１１３及び共通ロード状態管理情報作成部１１４へ出力する。
【０１３６】
共通リンク関係抽出部１１３は、情報処理装置１００全体で可能な限りアプリケーション間で共通にロード状態管理情報を利用できるように、共通のリンク関係を抽出して共通ロード状態管理情報作成部１１４に渡し、共通ロード状態管理情報作成部１１４は、更新された共通のリンク関係と更新されたアプリケーション及び共有ライブラリのロード状態管理情報１２３とによって、更新された共通ロード状態管理情報１５１〜１５３を作成して共通ロード状態管理情報記憶部１１５に記憶させる。これらの詳細な動作は、実施の形態１において説明している内容と同様である。
【０１３７】
以上のように、本発明の実施の形態２のプログラム起動装置は、情報処理装置１００に対して外部から通信回線３３や記録媒体３１を通じてプログラムの更新が実施されても、更新されたことを契機にして、情報処理装置１００を搭載する情報機器やＡＶ機器や通信機器、家電機器などのコンピュータを搭載する機器内で、共通ロード状態管理情報１５１〜１５３を更新することが可能になり、プログラムの起動を高速化しつつ、メモリ消費量を削減することが可能になる。
【０１３８】
なお、本発明の実施の形態１を示す図２及び実施の形態２を示す図１０の各機能ブロックは、典型的にはプログラムで実現されるが、集積回路であるＬＳＩとしてもよい。これらは個別に１チップ化されてもよいし、一部又は全てを含むように１チップ化されてもよい。ここでは、集積回路をＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１３９】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。また、ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  ＰｒｏｇｒａｍｍａｂｌｅＧａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用してもよい。
【０１４０】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。例えば、バイオ技術の適応等が可能性としてありえる。
【０１４１】
以上、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【０１４２】
本発明にかかるプログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路は、コンピュータ上でプログラムを実行する種々の機器において、プログラムの起動時間を高速化しつつメモリ消費量を削減することができるので、情報機器やＡＶ機器や通信機器、家電機器などのコンピュータを搭載する機器において有用である。
【図面の簡単な説明】
【０１４３】
【図１】本発明の実施の形態１によるプログラム起動装置を含む情報処理装置の構成を示すブロック図である。
【図２】図１に示すプログラム起動装置の各機能を説明するための機能ブロック図である。
【図３】図２に示すアプリケーションと共有ライブラリとのリンク関係の一例を模式的に描いた説明図である。
【図４】図２に示すアプリケーション及び共有ライブラリのロード状態管理情報の一例を示す図である。
【図５】図２に示すアプリケーションと共有ライブラリとのリンク関係の構造の一例を模式的に描いた説明図である。
【図６】図２に示す共通リンク関係抽出部の動作手順の一例を示すフローチャートである。
【図７】図２に示す共通リンク関係抽出部の動作手順の一例を示すフローチャートである。
【図８】図２に示す共通リンク関係抽出部が図６及び図７に示す手順で得た情報を表形式で示す説明図である。
【図９】図２に示す共通ロード状態管理情報の一例を模式的に描いた説明図である。
【図１０】本発明の実施の形態２によるプログラム起動装置の各機能を説明するための機能ブロック図である。
【符号の説明】
【０１４４】
２  メモリ装置
１０  プログラム起動装置
２１  ＲＯＭ
２２  ＲＡＭ
１１１  プログラム記憶部
１１２  リンク関係解析部
１１３  共通リンク関係抽出部
１１４  共通ロード状態管理情報作成部
１１５  共通ロード状態管理情報記憶部
１２１  アプリケーションロード実行部
１２２  ロード状態管理情報記憶部
１３１  アプリケーション起動開始検出部
１３２  共有ライブラリリンク情報検索部
１３３  ロード状態管理情報割り当て部
１３４  共有ライブラリロード実行部
１３５  アプリケーション動作実行部
６０１  プログラム更新検出部
６０２  プログラム更新部
６０３  共通ロード状態管理情報更新部
【図１】
2007334869.tif 000003
【図２】
2007334869.tif 000004
【図３】
2007334869.tif 000005
【図４】
2007334869.tif 000006
【図５】
2007334869.tif 000007
【図６】
2007334869.tif 000008
【図７】
2007334869.tif 000009
【図８】
2007334869.tif 000010
【図９】
2007334869.tif 000011
【図１０】
2007334869.tif 000012