JP2007334869A - プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路 - Google Patents

プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路 Download PDF

Info

Publication number
JP2007334869A
JP2007334869A JP2007125347A JP2007125347A JP2007334869A JP 2007334869 A JP2007334869 A JP 2007334869A JP 2007125347 A JP2007125347 A JP 2007125347A JP 2007125347 A JP2007125347 A JP 2007125347A JP 2007334869 A JP2007334869 A JP 2007334869A
Authority
JP
Japan
Prior art keywords
program
management information
load state
state management
shared
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.)
Granted
Application number
JP2007125347A
Other languages
English (en)
Other versions
JP5014871B2 (ja
Inventor
Kazutomi Kato
一臣 加藤
Masashi Sugiyama
真史 杉山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2007125347A priority Critical patent/JP5014871B2/ja
Publication of JP2007334869A publication Critical patent/JP2007334869A/ja
Application granted granted Critical
Publication of JP5014871B2 publication Critical patent/JP5014871B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】動的ローディングシステムにおけるプログラムの起動の高速化、及びメモリ消費量の削減を実現することができるプログラム起動装置を提供する。
【解決手段】リンク関係解析部112は、システム全体のアプリケーションと共有ライブラリとのリンク関係を解析し、共通リンク関係抽出部113は、アプリケーション間で可能な限り共通にロード状態の管理構造を利用できる組み合わせを特定し、その管理構造をシステム全体で参照する対象にすることにより、起動時間の高速化とともにメモリ消費量の削減を実現する。
【選択図】図2

Description

本発明は、コンピュータ上で実行される種々のプログラムの起動処理技術に関し、特にプログラムの起動処理を高速化し、起動処理を行う際にプログラムが使用するメモリの消費量を削減する技術に関するものである。
LinuxやWindows(登録商標)などに代表されるマルチタスク型のオペレーティングシステム(OS)が搭載されている機器やコンピュータでは、多くの場合、プログラムの動的ローディングシステムを採用している。これは、プログラムの起動時に初めて、動的ローダが、そのプログラム本体や共有ライブラリを実行空間にロードし、実行アドレスを決定するシステムである。
一般的に、共有ライブラリとは、複数のプログラムから共通に利用されるプログラムであり、動的ローダは、プログラムが起動されると、そのプログラムに必要な共有ライブラリを検索し、ロードするために必要な情報を各共有ライブラリから読み込み又は計算して設定し、各共有ライブラリを実行空間にロードして実行可能な状態にする。
上記の動的ローディングシステムは、プログラムの起動時に初めて、そのプログラムに必要なロード処理を行うので、同一の共有ライブラリを複数のプログラムで共通に使用することを可能にし、また、プログラムや共有ライブラリの汎用性や移植性を高めている。一方、プログラムの起動時に、毎回、プログラム及び共有ライブラリのロード処理を実行するため、プログラムの起動時間を長くする一因になっていた。
上記背景のもとで、動的ローディングシステムによるプログラム起動処理において、プログラムの起動時間を高速化するために、指定のプログラムと関連ライブラリプログラムとを動的にリンクして実行可能なプログラムイメージを得る方法が開示されている(例えば、特許文献1参照)。
具体的には、リンカー(動的ローダ)は、プログラムの起動時にイメージキャッシュをチェックし、新しいプログラムとその関連ライブラリプログラムとが以前に実行済みのために、既にリンクされてキャッシュ化されているかどうかを調べる。イメージキャッシュ内にプログラムがなければ、動的ローダは、次に、関連ライブラリプログラムが部分リンク済みの形式でキャッシュ化されているかどうかを調べ、探し出せる限り多数の関連ライブラリプログラムを利用する。これにより、メモリやキャッシュに退避させていた実行可能な状態のプログラムや共有ライブラリである関連ライブラリプログラムを、次回のプログラムの起動時に再利用し、ロード処理を短くする方法が知られている。
特開平7−160483号公報
しかしながら、前記従来の技術では、すぐにロード処理を可能にするために、既にシンボル参照のアドレス解決が実施済み(再配置済み)のプログラム及び共有ライブラリを、別のキャッシュに保存しているため、プログラムそのもののコード及びデータをキャッシュするためのメモリ容量が別途必要になる。
また、前記従来の技術では、プログラム本体や共有ライブラリ自身の実行コードをすぐに実行可能な状態にしてキャッシュしているが、動的ローダが管理すべき共有ライブラリのロードに関わるロード状態管理情報について触れられていない。
このロード状態管理情報は、例えば、今起動しようとしているプログラムに必要な共有ライブラリのうち何をロードしたのか、各共有ライブラリはどのアドレスに配置したのか、各共有ライブラリの特定領域はどこに配置したのか等を把握して利用するための情報であり、起動するプログラムごとに異なるため、起動処理の中で管理が必要である。
このため、共有ライブラリ自身をすぐにロード可能な実行コードとしてキャッシュしても、上記のロード状態管理情報を作成及び管理するための処理を、動的ローダは実施しなければいけないため、その処理時間を要するという問題が残る。
また、プログラムによって使用する共有ライブラリは、それぞれ異なるため、このロード状態管理情報は、プログラムごとに必要になり、プログラムごとにメモリを消費するという問題も残る。
本発明は、前記従来の課題を解決するもので、動的ローディングシステムにおけるプログラムの起動の高速化、及びメモリ消費量の削減を実現することができるプログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路を提供することを目的とする。
本発明に係るプログラム起動装置は、共通に利用される共有プログラムを用いて実行されるプログラムを起動するプログラム起動装置であって、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部とを備える。
本発明に係るプログラム起動方法は、共通に利用される共有プログラムを用いて実行されるプログラムを起動するプログラム起動方法であって、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶ステップと、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶ステップにおいて記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶ステップにおいて記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当てステップとを含む。
本発明に係る起動処理プログラムは、共通に利用される共有プログラムを用いて実行されるプログラムを起動するための起動処理プログラムであって、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部としてコンピュータを機能させる。
本発明に係る集積回路は、共通に利用される共有プログラムを用いて実行されるプログラムを起動する集積回路であって、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部とを備える。
上記の各構成により、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とが区分されて記憶され、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられ、記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられるので、プログラム起動時に、実行空間に割り当てられた情報に基づいてプログラムを起動することにより、プログラムの起動時間を高速化しつつ、メモリ消費量を削減することができる。
前記ロード状態管理情報割り当て部は、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、各プログラムが前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を参照するように、各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てることが好ましい。
この場合、記憶されている共通利用ロード状態管理情報を参照するように、各プログラムが共通に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられるので、プログラムの起動時間をより高速化しつつ、実行空間として使用されるメモリの消費量を削減することができる。
上記プログラム起動装置は、プログラムと共有プログラムとのリンク関係を解析してプログラム間のリンク関係の構造を作成するリンク関係解析部と、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報を抽出する共通リンク関係抽出部と、プログラムと共有プログラムとを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を記憶するロード状態管理情報記憶部と、前記共通リンク関係抽出部から取得したリンク関係の情報に基づいて、前記ロード状態管理情報記憶部のロード状態管理情報から前記共通利用ロード状態管理情報と前記個別利用ロード状態管理情報とを区分して前記共通ロード状態管理情報記憶部に記憶させる共通ロード状態管理情報作成部とをさらに備えることが好ましい。
この場合、プログラムと共有プログラムとのリンク関係を解析してプログラム間のリンク関係の構造が作成され、作成されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報が抽出され、また、プログラムと共有プログラムとを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報が記憶され、複数のプログラムが共通に利用可能なリンク関係の情報に基づいて、記憶されているロード状態管理情報から共通利用ロード状態管理情報及び前記個別利用ロード状態管理情報が区分されて共通ロード状態管理情報記憶部に記憶されるので、各プログラムに対して可能な限り共通にロード状態の管理を行うことができ、可能な限り共通化された共通利用ロード状態管理情報を参照することによって、メモリ消費量をより削減することができる。
前記共通ロード状態管理情報作成部は、前記共通リンク関係抽出部から取得したリンク関係の情報に基づいて、プログラムの実行に必要な共有プログラムへのリンク関係を表す共有プログラムリンク関係情報を作成して前記共有プログラムリンク関係情報を前記共通ロード状態管理情報記憶部に記憶させ、上記プログラム起動装置は、プログラムの起動が開始されたことを検出する起動検出部と、前記共通ロード状態管理情報記憶部に記憶されている共有プログラムリンク関係情報を参照して、前記起動検出部により検出されたプログラムの実行に必要な全ての共有プログラムを特定し、当該プログラムが共通に利用する共通利用ロード状態管理情報と個別に利用する個別利用ロード状態管理情報とを前記共通ロード状態管理情報記憶部から前記ロード状態管理情報割り当て部へ出力するリンク情報検索部とをさらに備えることが好ましい。
この場合、共通リンク関係抽出部から取得したリンク関係の情報に基づいて、プログラムの実行に必要な共有プログラムへのリンク関係を表す共有プログラムリンク関係情報が作成されて共通ロード状態管理情報記憶部に記憶され、共通ロード状態管理情報記憶部に記憶されている共有プログラムリンク関係情報を参照して、起動が開始されたプログラムの実行に必要な全ての共有プログラムが特定され、当該プログラムが共通に利用する共通利用ロード状態管理情報と個別に利用する個別利用ロード状態管理情報とが共通ロード状態管理情報記憶部からロード状態管理情報割り当て部へ出力されるので、プログラムの起動が開始されたときに、当該プログラムが共通に利用する共通利用ロード状態管理情報と個別に利用する個別利用ロード状態管理情報とを容易に区分して取得することができ、各プログラムが共通に利用する共有プログラムのロード状態の管理構造と、各プログラムが個別に利用する共有プログラムのロード状態の管理構造とを高速に実行空間に割り当てることができる。
前記共通リンク関係抽出部は、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、リンク関係を最も共通化できる共有プログラム群を抽出し、前記共通ロード状態管理情報作成部は、前記共通リンク関係抽出部により抽出された共有プログラム群のロード状態管理情報を前記ロード状態管理情報記憶部から読み出して前記共通利用ロード状態管理情報として纏めて前記共通ロード状態管理情報記憶部に記憶させることが好ましい。
この場合、リンク関係の構造に基づいて、リンク関係を最も共通化できる共有プログラム群が抽出され、抽出された共有プログラム群のロード状態管理情報が共通利用ロード状態管理情報として纏めて共通ロード状態管理情報記憶部に記憶されるので、各プログラムに対してロード状態管理情報を可能な限り最も共通化した状態でロード状態の管理を行うことができ、メモリ消費量をより削減することができる。
前記共通リンク関係抽出部は、各共有プログラムに対するプログラムからのリンク数と、各共有プログラムに対する配下の共有プログラムのリンク総数との少なくとも一方に基づいて、前記共有プログラム群を抽出することが好ましい。
この場合、各共有プログラムに対するプログラムからのリンク数と、各共有プログラムに対する配下の共有プログラムのリンク総数との少なくとも一方に基づいて共有プログラム群が抽出されるので、リンク関係を最も共通化できる共有プログラム群を簡略な処理で抽出することができる。
前記共通リンク関係抽出部は、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、共有プログラムに対するプログラムからのリンク数と、共有プログラムに対する配下の共有プログラムのリンク総数に1を加算した配下リンク数とを算出し、両者を乗算した値が最も大きい共有プログラムを最大共有プログラムとして特定し、前記最大共有プログラムと、当該最大共有プログラムの配下の共有プログラムとを前記共有プログラム群として抽出することが好ましい。
この場合、各共有プログラムに対するプログラムからのリンク数と、共有プログラムに対する配下の共有プログラムのリンク総数に1を加算した配下リンク数とを乗算した値が最も大きい共有プログラムを最大共有プログラムとして特定し、この最大共有プログラムと、当該最大共有プログラムの配下の共有プログラムとが共有プログラム群として抽出されるので、リンク関係を最も共通化できる共有プログラム群を正確に抽出することができる。
前記共通ロード状態管理情報作成部は、前記共有プログラム群が特定可能な識別情報を付加して前記共有プログラムリンク関係情報を前記共通ロード状態管理情報記憶部に記憶させ、前記リンク情報検索部は、前記識別情報を参照して、前記起動検出部により検出されたプログラムが共通に利用する共通利用ロード状態管理情報を前記共通ロード状態管理情報記憶部から前記ロード状態管理情報割り当て部へ出力することが好ましい。
この場合、共有プログラム群が特定可能な識別情報を付加して共有プログラムリンク関係情報が記憶され、この識別情報を参照して共通利用ロード状態管理情報が共通ロード状態管理情報記憶部からロード状態管理情報割り当て部へ出力されるので、共有プログラム群を容易に特定してロード状態管理情報割り当て部へ出力することができる。
前記共通ロード状態管理情報記憶部は、不揮発性メモリを含み、前記不揮発性メモリは、前記共通利用ロード状態管理情報を記憶することが好ましい。
この場合、装置の電源をオフしても、共通利用ロード状態管理情報が不揮発性メモリに保持されているので、装置の電源をオンしたときに即座に共通利用ロード状態管理情報を利用することができる。
前記不揮発性メモリは、書き換え可能なリードオンリーメモリを含むことが好ましい。
この場合、装置の電源をオフしても、共通利用ロード状態管理情報が書き換え可能なリードオンリーメモリに保持されているので、装置の電源をオンしたときに即座に共通利用ロード状態管理情報を利用することができる。
前記共通ロード状態管理情報記憶部は、揮発性メモリを含み、前記揮発性メモリは、前記個別利用ロード状態管理情報を記憶することが好ましい。
この場合、個別利用ロード状態管理情報が揮発性メモリに記憶されるので、起動されるプログラムに応じて更新すべき個別利用ロード状態管理情報を適宜高速に更新することができる。
前記揮発性メモリは、ランダムアクセスメモリを含むことが好ましい。
この場合、個別利用ロード状態管理情報がランダムアクセスメモリに記憶されるので、起動されるプログラムに応じて更新すべき個別利用ロード状態管理情報を適宜高速に更新することができる。
上記プログラム起動装置は、プログラム及び共有プログラムを記憶するプログラム記憶部と、前記プログラム記憶部に記憶されているプログラム及び共有プログラムを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を作成して前記ロード状態管理情報記憶部に記憶させるロード実行部とをさらに備えることが好ましい。
この場合、プログラム記憶部に記憶されているプログラム及び共有プログラムを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を作成してロード状態管理情報記憶部に記憶させているので、このロード状態管理情報を用いて共通利用ロード状態管理情報及び個別利用ロード状態管理情報を高速に且つ容易に作成することができる。
上記プログラム起動装置は、前記プログラム記憶部に記憶されているプログラム及び共有プログラムのうち少なくとも一方を更新するプログラム更新部をさらに備え、前記プログラム更新部によりプログラム及び共有プログラムのうち少なくとも一方が更新されたとき、前記ロード実行部は、更新されたプログラム又は共有プログラムのロード状態管理情報を作成して前記ロード状態管理情報記憶部に記憶されているロード状態管理情報を更新し、前記リンク関係解析部は、更新されたプログラム又は共有プログラムのリンク関係を解析してプログラム間のリンク関係の構造を更新し、前記共通リンク関係抽出部は、更新されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報を更新し、前記共通ロード状態管理情報作成部は、更新されたリンク関係の情報に基づいて、更新されたロード状態管理情報を用いて前記共通利用ロード状態管理情報及び前記個別利用ロード状態管理情報を更新することが好ましい。
この場合、プログラム及び共有プログラムのうち少なくとも一方が更新されたときに、共通利用ロード状態管理情報及び個別利用ロード状態管理情報を自動的に更新することができるので、プログラム又は共有プログラムが更新された場合でも、プログラムの起動時間を高速化しつつ、メモリ消費量を削減することができる。
本発明によれば、各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とが区分されて記憶され、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられ、記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造が実行空間に割り当てられるので、プログラム起動時に、実行空間に割り当てられた情報に基づいてプログラムを起動することにより、プログラムの起動時間を高速化しつつ、メモリ消費量を削減することができる。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態1によるプログラム起動装置を含む情報処理装置の構成を示すブロック図である。この情報処理装置100は、それ自体としてユーザの使用に供することもできるが、様々な電気機器に組み込まれてもよい。情報処理装置100の一例は、代表的にはPDA(Personal Digital Assistance)又は携帯電話機等の携帯通信端末である。携帯通信端末では、アプリケーションの起動や応答の性能向上が特に要求されるので、後述するプログラム起動装置による向上した起動高速化効果がもたらす利益が甚大である。
情報処理装置100は、CPU(Central Processing Unit;中央演算処理部)1、メモリ装置2、通信装置34、入力装置40、表示装置45、タイマー回路51及び割込コントローラ55を備えている。これらの装置は、バスライン50を通じて互いに接続されている。また、必要に応じて、バスライン50には、ハードディスク装置25及び読取装置32を接続することが可能となっている。ハードディスク装置25、読取装置32、入力装置40及び表示装置45は、それぞれ、インタフェース26、35、41及び46を通じてバスライン50に接続される。
CPU1は、単一のCPUで構成されてもよく、複数のCPUで構成されてもよい。一例として、情報処理装置100は、複数のCPU11、12、13、…を有するものとする。メモリ装置2は、ROM(Read Only Memory)21及びRAM(Random Access Memory)22を備えている。ROM21は、CPU1の動作を規定する、起動処理プログラム等を含むコンピュータプログラムを記憶している。コンピュータプログラムは、ハードディスク装置25に記憶させることもできる。
CPU1は、ROM21又はハードディスク装置25が格納するコンピュータプログラムを、必要に応じてRAM22に書き込みつつ、コンピュータプログラムが規定する処理を実行する。RAM22は、CPU1が処理を実行するのに伴って発生するデータを一時的に記憶する記憶媒体としても機能する。ROM21には、フラッシュROMのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリや記憶媒体も含まれる。RAM22には、電源を切ると記憶内容が保持されない揮発性のメモリや記憶媒体が含まれる。
ハードディスク装置25は、内蔵する不図示のハードディスクに対して、コンピュータプログラム、或いはデータを書き込み及び読み出す装置である。読取装置32は、記録媒体31(例えばCDやDVDやメモリカードなど)に記録されたコンピュータプログラム、又はデータを読み取る装置である。通信装置34は、電話回線、ネットワーク線、無線通信、赤外線通信等の通信回線33を通じて、外部と自身との間で、コンピュータプログラム、或いはデータを交換する装置である。
入力装置40は、ユーザの操作によりデータ等を入力する装置であり、例えば、PDAに配列されたキーボード、携帯電話機に配列された入力ボタン、又は着脱自在のマウス若しくはキーボードである。表示装置45は、データ、画像等を画面に表示したり、データ等を音声で表示したりする装置であり、例えばLCD(Liguid Crystal Display;液晶表示器)である。
タイマー回路51は、一定の周期でタイマー割込信号を出力する装置である。割込コントローラ55は、タイマー回路51、入力装置40、CPU1のうちの処理実行中のCP
U以外のCPU、ネットワークデバイスとしての通信装置34、ハードディスク装置25、読取装置32等から送られる割込要求信号を、CPU1へ中継する装置である。各装置からの割込要求には優先度が付けられている。割り込みコントローラ55は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。
以上のように、情報処理装置100は、コンピュータとして構成されている。上記コンピュータプログラムは、ROM21、不図示のフレキシブルディスク、CD−ROM等のコンピュータ読み取り可能な記録媒体31を通じて供給することも、通信回線33等の伝送媒体を通じて供給することも可能である。例えば、記録媒体31としてCD−ROMに記録されたコンピュータプログラムは、読取装置32を情報処理装置100に接続することにより、読み出すことができ、さらにRAM22又はハードディスク装置25に格納することができる。
ROM21によってコンピュータプログラムが供給される場合には、当該ROM21を情報処理装置100に搭載することにより、CPU1は、上記コンピュータプログラムに従った処理を実行可能となる。通信回線33等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置34を通じて受信され、例えば、RAM22又はハードディスク装置25に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であってもよい。また、伝送媒体は、通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
プログラム起動装置10は、CPU1、及び起動処理プログラム(起動高速化プログラム)を格納するメモリ装置2を備え、それ自身コンピュータとして構成され、情報処理装置100に組み込まれる。プログラム起動装置10は、好ましくは、CPU1及びメモリ装置2を単一の半導体基板に作り込んだLSI(Large Scale Integrated circuit)等の集積回路として構成される。
図2は、プログラム起動装置10の各機能を説明するための機能ブロック図である。メモリ装置2には、一つ以上のアプリケーション101や一つ以上の共有ライブラリ102と、プログラム起動装置10を実現する主要なプログラム(例えば、起動処理プログラム)やデータが格納されている。これらのプログラムやデータは、CPU1と協働してプログラム起動装置10を実現する。すなわち、CPU1がメモリ装置2に記憶されている起動処理プログラムを実行することにより、プログラム起動装置10は、プログラム記憶部111、リンク関係解析部112、共通リンク関係抽出部113、共通ロード状態管理情報作成部114、共通ロード状態管理情報記憶部115、アプリケーションロード実行部121、ロード状態管理情報記憶部122、アプリケーション起動開始検出部131、共有ライブラリリンク情報検索部132、ロード状態管理情報割り当て部133、共有ライブラリロード実行部134、及びアプリケーション動作実行部135として機能する。
プログラム記憶部111は、メモリ装置2のROM21等から構成され、一つ以上のアプリケーション101と、一つ以上の共有ライブラリ102とが記憶されている。ここで、アプリケーション101は、実行プログラムの総称であり、種々のミドルウェア、ファイルシステム、デバイスドライバであってもよい。また、共有ライブラリ102は、アプリケーション101の複数から共通に利用されるものの総称であり、共通に利用される性質のものであればよい。
また、アプリケーション101と共有ライブラリ102とは、ともに情報処理装置100で実行可能なプログラムである。アプリケーション101は、共有ライブラリ102のうちどの共有ライブラリが必要であるかを示すリンク情報103を備える。また、アプリケーション101だけではなく、共有ライブラリ102自身も別の共有ライブラリを必要とする場合がある。その場合、共有ライブラリ102は、別の共有ライブラリへのリンク情報104を保持する。一般的には、これらのリンク情報103、104は、アプリケーション101及び共有ライブラリ102の各々をある記述言語で記述したソースファイルから実行可能な状態にコンパイル及びリンクする際に付加される。
アプリケーションロード実行部121は、プログラム記憶部111に記憶されているアプリケーション101及び共有ライブラリ102を読み出して各アプリケーション101のロード処理を実行し、複数のアプリケーションから共通に利用される共有ライブラリ102を実行空間にロードした際のロード状態の管理構造を表すロード状態管理情報123をロード状態管理情報記憶部122に記憶させる。
リンク関係解析部112は、プログラム記憶部111に記憶されているリンク情報103、104を参照して、複数のアプリケーション101と複数のアプリケーションから共通に利用される共有ライブラリ102とのリンク関係を解析し、アプリケーションと共有ライブラリとの間のリンク関係の構造を表す情報(以下、単に「リンク関係の構造」と称す)を共通リンク関係抽出部113及び共通ロード状態管理情報作成部114へ出力する。
共通リンク関係抽出部113は、リンク関係解析部112のリンク関係の構造に基づいて、複数のアプリケーションで共通に利用可能なリンク関係の構造を抽出し、複数のアプリケーションで共通に利用可能なリンク関係の情報を共通ロード状態管理情報作成部114へ出力する。
共通ロード状態管理情報作成部114は、リンク関係解析部112から取得したリンク関係の構造と、共通リンク関係抽出部113から取得した複数のアプリケーションで共通に利用可能なリンク関係の情報とに基づいて、アプリケーションに対して必要な共有ライブラリへのリンク関係を表す共有ライブラリリンク関係情報151を作成し、共通ロード状態管理情報として共通ロード状態管理情報記憶部115に記憶させる。
また、共通ロード状態管理情報作成部114は、リンク関係解析部112から取得したリンク関係の構造と、共通リンク関係抽出部113から取得した複数のアプリケーションで共通に利用可能なリンク関係の情報に基づいて、ロード状態管理情報記憶部122のロード状態管理情報123から、各アプリケーションが共通に利用するロード状態管理情報である共通利用ロード状態管理情報152と、各アプリケーションが個別に利用するロード状態管理情報である個別利用ロード状態管理情報153とを区分して作成し、共通ロード状態管理情報として共通ロード状態管理情報記憶部115に記憶させる。
アプリケーション起動開始検出部131は、アプリケーション起動部130からアプリケーションの起動を通知されることにより、アプリケーションの起動が開始されたことを検出し、複数のアプリケーション101のうちどのアプリケーションが起動を開始したのかを示す情報を共有ライブラリリンク情報検索部132に通知する。なお、アプリケーション起動部130は、CPU1で動作しているOS(オペレーティング・システム)のカーネルから構成されるので、図1に示すプログラム起動装置10の構成要素として必須ではない。
共有ライブラリリンク情報検索部132は、共通ロード状態管理情報記憶部115に問い合わせ、共有ライブラリリンク関係情報151を参照して起動を開始したアプリケーションに必要な全ての共有ライブラリを把握し、起動を開始したアプリケーションが共通に利用する共通利用ロード状態管理情報152と、起動を開始したアプリケーションが個別に利用する個別利用ロード状態管理情報153とをロード状態管理情報割り当て部133へ渡す。
ロード状態管理情報割り当て部133は、アプリケーションの起動が開始され、アプリケーション起動開始検出部131がアプリケーションの起動を検出すると、必要な共有ライブラリを実行空間にロードするにあたって、共通ロード状態管理情報記憶部115に記憶されている共通利用ロード状態管理情報152を参照するために、起動を開始したアプリケーションが共通に利用する共有ライブラリのロード状態の管理構造をROM21又は二次記憶装置であるハードディスク装置25等に割り当て、個別利用ロード状態管理情報153を用いて各アプリケーションで個別に参照するために、起動を開始したアプリケーションが個別に利用する共有ライブラリのロード状態の管理構造を主記憶装置であるRAM22に割り当てる。
共有ライブラリロード実行部134は、ロード状態管理情報割り当て部133が共有ライブラリのロード状態の管理構造を割り当てた後、実行空間に共有ライブラリ本体を割り当てて実行可能な状態にロードし、アプリケーション動作実行部135は、動作可能になったアプリケーションを実行する。
なお、アプリケーションロード実行部121によるロード状態管理情報123の作成処理や、リンク関係解析部112、共通リンク関係抽出部113及び共通ロード状態管理情報作成部114による共有ライブラリリンク関係情報151、共通利用ロード状態管理情報152及び個別利用ロード状態管理情報153の作成処理は、少なくともアプリケーションの起動が開始される前に実行されていればよく、任意のタイミングで実行することができる。
また、共有ライブラリリンク関係情報151、共通利用ロード状態管理情報152及び個別利用ロード状態管理情報153が、共通ロード状態管理情報記憶部115に製造時等に予め記憶されている場合、プログラム記憶部111、リンク関係解析部112、共通リンク関係抽出部113、共通ロード状態管理情報作成部114、共通ロード状態管理情報記憶部115、アプリケーションロード実行部121及びロード状態管理情報記憶部122を省略してもよい。
次に、アプリケーション101と共有ライブラリ102とのリンク関係の一例を図3に挙げて、リンク関係について説明する。図3では、アプリケーション101の例として、二つのアプリケーション1(201)とアプリケーション2(202)を取りあげる。アプリケーション1(201)には、リンク情報(211)に、共有ライブラリA(203)をリンクするという情報を備えている。また、アプリケーション2(202)は、リンク情報(212,213)に共有ライブラリX(205)と共有ライブラリB(204)をリンクするという情報を備えている。
ここで、共有ライブラリA(203)のリンク情報(214)には、共有ライブラリX(205)をリンクする情報が存在する。共有ライブラリX(205)は、リンク情報(215)から共有ライブラリY(206)をリンクしている。すなわち、図3の例では、アプリケーション1(201)及びアプリケーション2(202)は、アプリケーション自体のリンク情報211〜213には記述されていないが、ともに共有ライブラリX(205)と共有ライブラリY(206)とをリンクすることになる。一般的には、アプリケーション101、共有ライブラリ102は多数存在し、これらのリンク関係は図3の例に比べて複雑になる。
従来の起動処理では、一般的に、アプリケーションを起動する場合、動的ローダがアプリケーションに必要な共有ライブラリを検索し、共有ライブラリのコードやデータなどをそのアプリケーションの実行空間にロードする。図3の例では、動的ローダが、アプリケーション1(201)に必要な共有ライブラリA(203)、X(205)、Y(206)を実行空間にロードし、ロード状態を管理するために共有ライブラリA(203)、X(205)、Y(206)のロード状態管理情報を作成する。また、動的ローダが、アプリケーション2(202)に必要な共有ライブラリB(204)、X(205)、Y(206)を実行空間にロードし、ロード状態を管理するために共有ライブラリB(204)、X(205)、Y(206)のロード状態管理情報を作成する。
このように、従来の起動処理では、アプリケーションによってリンクする共有ライブラリが異なるため、ロード状態管理情報は、動的ローダによってアプリケーションごとに検索され作成されていた。図4に、ロード状態管理情報の一例を示す。
図4の例では、ロード状態管理情報252は、下記のような情報を含む。まず、ロード状態管理情報252に、どの共有ライブラリのロード状態であるかを示す共有ライブラリ名261が存在し、共有ライブラリごとにロード状態管理情報が作成されている。
また、ロード状態管理情報252には、前のロード状態管理情報251を指すポインタ264や次のロード状態管理情報253を指すポインタ265が存在し、アプリケーションの実行空間にロードされた共有ライブラリのロード状態がリストになって管理されている。さらに、ロード状態管理情報252には、共有ライブラリの実体をアプリケーションの実行空間のどのアドレスにロードしたかを示すロードアドレス262があり、ロードした共有ライブラリがアプリケーションの実行空間のどのくらいのサイズの領域を占めるかを示すロードサイズ263がある。
また、ロード状態管理情報252には、共有ライブラリがリンクしている他の共有ライブラリのリストや、動的ローダが実行空間にロード済みの共有ライブラリを検索するためのリストを表すリンク検索用リスト266がある。さらに、各種情報のカウント数267には、ロードした共有ライブラリの参照カウントや共有ライブラリのプログラム本体の構成に関わるカウント数、例えば、プログラムヘッダの数やダイナミックセクションのエントリ数などが含まれる。
また、共有ライブラリ本体の各種情報への参照ポインタ268は、ロードした共有ライブラリのプログラム本体に含まれる情報へのポインタであり、例えば、プログラムヘッダへのポインタ、ダイナミックセクションへのポインタ、シンボルハッシュテーブルへのポインタなどが挙げられる。さらに、動的ローダが共有ライブラリを実行空間にロードする際にすでに実行コードの再配置処理を実施したことを示す情報や、共有ライブラリの初期化処理を実施したことを示す情報などが、各種ロード処理実施の有無269の情報として管理される。
なお、図4に挙げたロード状態管理情報252の内容は、例示に過ぎず、アプリケーション及び共有ライブラリを実行空間にロードする際にロード状態を管理するために必要となる情報であればよく、ロード状態管理情報の内容を限定するものではない。
上記のように、従来の起動処理では、アプリケーションが起動される時に初めて、動的ローダがアプリケーションにとって必要な共有ライブラリを検索し、各共有ライブラリの情報を読み込んで実行空間にロードし、ロード管理情報を作成していた。これに対して、図2に示すアプリケーションロード実行部121は、アプリケーションが起動される前にアプリケーション及び共有ライブラリのロード状態管理情報123を作成し、ロード状態管理情報記憶部122に記憶させる。したがって、本実施の形態では、実際にアプリケーションを起動する際に、このロード状態管理情報123を再利用することにより、アプリケーション起動処理の高速化を実現できる。
すなわち、アプリケーションロード実行部121は、アプリケーションの起動時に動的ローダが実行する共有ライブラリのロード処理と同等の処理を行い、ロード状態の管理構造を表すロード状態管理情報123を取得して共通ロード状態管理情報記憶部115に記憶させる。このロード状態管理情報123(ロード状態の管理構造)とは、図4に例示したロード状態管理情報251〜253の情報を含むものであり、アプリケーションの起動時に共有ライブラリのロード状態を管理するために必要なものである。
なお、アプリケーションロード実行部121は、典型的には、アプリケーション101のうち全てのアプリケーションのロード処理を行い、全てのアプリケーションと全ての共有ライブラリのロード状態の管理構造を入手できるのが好ましいが、一部のアプリケーションと共有ライブラリとのロード状態の管理構造を取得してもかまわない。また、アプリケーションロード実行部121は、実際に使用される動的ローダそのものにより実現してもよく、実際に使用される動的ローダの動作を模擬するプログラムにより実現してもかまわない。
ロード状態管理情報記憶部122は、アプリケーションロード実行部121によってロード処理が行われたアプリケーション及び共有ライブラリの全てのロード状態の管理構造を、アプリケーション及び共有ライブラリのロード状態管理情報123として、アプリケーション起動時に使用する構造と同一の構造で記憶する。なお、ロード状態管理情報123の記憶先は、一時的に記憶できるところであればよく、ロード状態管理情報記憶部122は、メモリ装置2内のROM21又はRAM22、二次記憶装置であるハードディスク装置25や読取装置32を通じて読み書きできる記録媒体31でもよく、特に限定されない。
ここで、アプリケーションを起動する際に、アプリケーション及び共有ライブラリのロード状態管理情報123をそのまま再利用することにより、起動の高速化を実現できるが、アプリケーションごとに異なる共有ライブラリのロード状態管理情報の集合をメモリや各種記憶媒体に記憶すると、アプリケーション間で同一の共有ライブラリのロード状態管理情報を重複して保持することになり、メモリ容量を大きく消費する。
このため、本実施の形態では、図2に示すリンク関係解析部112は、プログラム記憶部111に記憶されているリンク情報103、104を参照して、アプリケーション101と共有ライブラリ102との間のリンク関係の構造を抽出し、共通リンク関係抽出部113は、このリンク関係の構造に基づいて、複数のアプリケーションで共通に利用可能なリンク関係の情報を抽出し、共通ロード状態管理情報作成部114は、各ロード状態管理情報をシステム全体で共通に使用できるように、複数のアプリケーションで共通に利用可能なリンク関係の情報と、アプリケーション及び共有ライブラリのロード状態管理情報123とから共通ロード状態管理情報151〜153を作成して共通ロード状態管理情報記憶部115に記憶させる。
ここで、共通ロード状態管理情報151〜153を揮発性のメモリであるRAM22のみに記憶していると、情報処理装置100に電源を入れ直すたびに、再度、共通ロード状態管理情報151〜153を作成し直す必要性が生じる。このため、電源のON/OFFにかかわらず、共通ロード状態管理情報151〜153を保持できるように、共通ロード状態管理情報記憶部115は、不揮発性のメモリ、例えばROM21から構成されることが好ましい。また、共通ロード状態管理情報151〜153のうち、共通利用ロード状態管理情報152のみをROM21に記憶するようにしてもよい。この場合、最も利用される頻度の高い共通利用ロード状態管理情報152を作成し直す必要がなくなるので、ROM21の容量をできるだけ低減しながら、電源オン時の起動処理を高速化することができる。なお、電源を入れ直すたびに、共通ロード状態管理情報151〜153を作成し直すという前提であれば、共通ロード状態管理情報記憶部115を揮発性のメモリであるRAM22から構成するようにしてもよい。
一般的には、動的ローダがロード状態管理情報を作成する場合、一時的な記憶領域として揮発性のメモリであるRAMにロード状態管理情報のための領域を確保して、アプリケーションそれぞれの実行空間からアクセスできるようにメモリ管理上の割り当てを行う。一方、プログラム起動装置10では、共通ロード状態管理情報151〜153を不揮発性のメモリであるROM21に保持しているので、揮発性のメモリであるRAM22を消費しないようにすることができる。
しかし、一般的なメモリ管理方式では、ROMやRAMの領域を、一定単位の領域サイズ(例えばページサイズ)ごとに、アプリケーションそれぞれの実行空間に割り当てる。したがって、共有ライブラリのロード状態管理情報を個別に、メモリ管理の割り当てを行うと無駄が多い。
また、通常、アプリケーション間で共通の共有ライブラリをロードする場合でも、ロード状態を管理する順序は異なる。例えば、図3の例では、アプリケーション1(201)とアプリケーション2(202)は、ともに共有ライブラリX(205)と共有ライブラリY(206)とをリンクするが、リンクしている順序の関係上、アプリケーション1(201)では共有ライブラリA(203)、共有ライブラリX(205)、共有ライブラリY(206)の順序でロード状態管理情報を作成し、アプリケーション2(202)では共有ライブラリX(205)、共有ライブラリB(204)、共有ライブラリY(206)の順序でロード状態管理情報を作成する可能性がある。
これに対して、ROM上の共通ロード状態管理情報全体を、メモリ管理によって各アプリケーションの実行空間に割り当て、どのアプリケーションからも参照できるように設定し、ロード状態管理情報の参照ポインタのみを共通ロード状態管理情報の中の該当ロード状態管理情報を指すように設定することもできる。
しかしながら、上記の方式では、アプリケーションにとって必要のない多数の共有ライブラリのロード状態管理情報が実行空間に割り当てられ、不要なアクセスを可能にしてしまう。例えば、図3の例では、アプリケーション1(201)にとって不要な共有ライブラリB(204)のロード状態管理情報まで実行空間に割り当てられ、アクセス可能になってしまう。不要なアクセスが可能になると、安全性の低下や不要なバグを引き起こすことにつながり問題となる。
そこで、プログラム起動装置10では、リンク関係解析部112が図2のアプリケーション101及び共有ライブラリ102のリンク情報103,104を解析して、アプリケーションと共有ライブラリとのリンク関係の構造を出力し、このリンク関係の構造にしたがって、共通リンク関係抽出部113が可能な限りアプリケーション間で共通にロード状態管理情報を利用できるように、共通のリンク関係を抽出する。
図3の例で示したように、通常、リンク情報103、104には、アプリケーション101及び共有ライブラリ102にそれぞれ必要なリンク関係のみを示している。そのため、個別のアプリケーションや個別の共有ライブラリの情報のみでは、アプリケーションに必要な全てのリンク関係が得られない。そこで、リンク関係解析部112は、リンク関係を解析してリンク関係の構造を出力する。リンク関係の構造の一例を図5に示す。
図5では、3つのアプリケーションとリンクされる合計10個の共有ライブラリとのリンク関係の構造を示す。この例では、共有ライブラリB(301)や共有ライブラリE(302)や共有ライブラリF(303)が、アプリケーション間で共有して使用されていることがわかる。なお、図5のリンク関係の構造は、あくまでも一例であり、リンク関係の構造は、アプリケーション101や共有ライブラリ102の作りによって変化する。
共通リンク関係抽出部113は、リンク関係解析部112の処理が終わり、リンク関係の構造が出力されると、可能な限りアプリケーション間で共通にロード状態管理情報を利用できるように、共通のリンク関係の情報を抽出し、共通ロード状態管理情報作成部114に抽出結果を通知する。
ここで、共通リンク関係抽出部113は、アプリケーション間でどの程度ロード状態管理情報が共通化できるかを把握する必要がある。例えば、共有ライブラリごとにアプリケーションからどの程度リンクされているのか、又はその共有ライブラリの配下にどの程度共有ライブラリのリンク関係が展開されているのかによって、どの共有ライブラリ群を抽出すれば、システム全体でリンク関係を最も共通化できるのかを知ることができる。
リンク関係の構造が与えられた時に、共通リンク関係抽出部113が共有ライブラリごとにアプリケーションからどの程度リンクされているかを検査する処理の流れの一例を図6に示す。
まず、共通リンク関係抽出部113は、リンク関係解析部112から受け取ったリンク関係の構造から、まだ検査を終えていないアプリケーションを取得する(S401)。次に、共通リンク関係抽出部113は、リンク関係の構造に基づいて、取得したアプリケーションのリンク先からたどれる共有ライブラリの中から、まだ検査を終えていない共有ライブラリを取得する(S402)。ここで、共通リンク関係抽出部113は、共有ライブラリの項目ごとにリンク数を管理している。
次に、共通リンク関係抽出部113は、ステップS402で取得した共有ライブラリに対応する項目が存在するか確認する(S403)。次に、共通リンク関係抽出部113は、ステップS403で共有ライブラリの項目が、管理している共有ライブラリの項目に既に存在すると判定すれば(S403でYes)、該当する共有ライブラリの項目に対してアプリケーションからのリンク数を1つ加算する(S405)。
一方、共通リンク関係抽出部113は、ステップS403で共有ライブラリの項目が存在しないと判定すれば(S403でNo)、その共有ライブラリの項目を作成して(S404)、該当する共有ライブラリの項目に対してアプリケーションからのリンク数を1つ加算する(S405)。
次に、共通リンク関係抽出部113は、リンクしている共有ライブラリの中でまだ未検査の共有ライブラリが残っているかを判定する(S406)。共通リンク関係抽出部113は、ステップS406で、未検査の共有ライブラリが残っていると判定すれば(S406でYes)、ステップS402の処理に戻る。
一方、共通リンク関係抽出部113は、ステップS406で、未検査の共有ライブラリが残っていないと判定すれば(S406でNo)、リンク関係の構造から取得できるアプリケーションの中で未検査のアプリケーションが残っているかを判定する(S407)。共通リンク関係抽出部113は、ステップS407で未検査のアプリケーションが残っていると判定すれば(S407でYes)、ステップS401の処理に戻る。一方、共通リンク関係抽出部113は、ステップS407で、未検査のアプリケーションが残っていないと判定すれば(S407でNo)、処理を終了する。
次に、共通リンク関係抽出部113が共有ライブラリの配下にどの程度共有ライブラリのリンク関係が展開されるかを検査する処理の流れの一例を図7に示す。
まず、共通リンク関係抽出部113は、リンク関係解析部112から受け取ったリンク関係の構造に含まれる共有ライブラリの中から、未検査の共有ライブラリを取得する(S451)。共通リンク関係抽出部113は、未検査の共有ライブラリを取得できなければ(S452でNo)、処理を終了し、未検査の共有ライブラリを取得できれば(S452でYes)、取得した共有ライブラリから未検査の共有ライブラリへのリンク先が残っているかを判定する(S453)。
共通リンク関係抽出部113は、未検査のリンク先が残っていれば(S453でYes)、リンク先の共有ライブラリの中から未検査の共有ライブラリを取得し(S457)、ステップS453以降の処理を実行する。一方、共通リンク関係抽出部113は、ステップS453で未検査のリンク先が残っていないと判定すれば(S453でNo)、その共有ライブラリを検査済みにし、該当する共有ライブラリの項目に対して配下の共有ライブラリリンク総数を1つ加算する(S454)。
次に、共通リンク関係抽出部113は、リンク元の共有ライブラリが存在するかを判定する(S455)。共通リンク関係抽出部113は、リンク元の共有ライブラリが存在しないと判定すれば(S455でNo)、ステップS451以降の処理を実行する。一方、共通リンク関係抽出部113は、ステップS455でリンク元の共有ライブラリが存在すると判定すれば(S455でYes)、その共有ライブラリに対する全てのリンク元の共有ライブラリの項目に対して、配下の共有ライブラリリンク総数を1つ加算し、リンク元の共有ライブラリの一つを取得し(S456)、ステップS453以降の処理を実行する。
このように、本実施の形態では、図6及び図7に示す共通リンク関係抽出部113の処理によって、どの共有ライブラリ群を抽出すればシステム全体でリンク関係を最も共通化できるのか把握するための情報を算出することができる。なお、図6及び図7に示した処理の流れは、共通リンク関係抽出部113の処理の例示に過ぎず、同様の内容の処理が他の流れで実施されてもよい。
上記の図6及び図7の処理を、例えば、図5に例示したリンク関係の構造に適用すると、図8に示す情報が得られる。図8は、共有ライブラリA〜Jの各項目に対して、アプリケーションからのリンク数及び配下の共有ライブラリリンク総数を示している。図8を見ると、図5の例では、アプリケーションからのリンク数が最も多いのは共有ライブラリE(302)で、アプリケーション1(311)、アプリケーション2(312)、アプリケーション3(313)の三つのアプリケーション全てからリンクされていることがわかる。したがって、アプリケーションからどの程度利用されるかという観点では、共通リンク関係抽出部113は、共有ライブラリE(302)が最も利用されやすいと判断することができる。
また、図8によると、図5の例では、共有ライブラリ自身も含めて配下の共有ライブラリのリンク数が最も多いのは、共有ライブラリB(301)と共有ライブラリC(304)との二つであり、どちらも自分自身を含めて合計六つの共有ライブラリを最終的にはリンクしている。すなわち、共有ライブラリB(301)及び共有ライブラリC(304)は、アプリケーションの実行空間にロードする際、それら自身も含めて合計六つの共有ライブラリを実行空間にロードすることになる。共有ライブラリがどの程度利用されるかという観点では、共通リンク関係抽出部113は、共有ライブラリB(301)と共有ライブラリC(304)が最も多く共有ライブラリをロードすることになると判断することができる。
このように、共通リンク関係抽出部113は、図8の情報に基づいて、システム全体でリンク関係を最も共通化できる共有ライブラリ群を抽出することができる。典型的には、多くのアプリケーションから利用され、多くの共有ライブラリをロードするために、図8に示すアプリケーションからのリンク数と配下の共有ライブラリリンク総数との積を求め、この積の値が最も大きい共有ライブラリを選択するという方式を取ることができる。
この方式を取る場合、図8の例では、三つのアプリケーション全てからリンクされている共有ライブラリE(図5の302)の配下の共有ライブラリリンク総数は1であり、積は3となる。また、共有ライブラリB(図5の301)及び共有ライブラリC(図5の304)は、ともに合計六つの共有ライブラリを実行空間にロードするが、共有ライブラリ
C(図5の304)は一つのアプリケーションからのみリンクされているため、積は6となり、共有ライブラリB(図5の301)は二つのアプリケーションからリンクされていて、積は12となる。
したがって、共通リンク関係抽出部113は、他の共有ライブラリの情報に対しても同様の選択基準を適用して、図8の例では共有ライブラリBを最大共有ライブラリとして選択することができる。共通リンク関係抽出部113は、最大共有ライブラリを選択すると、リンク関係の構造に基づいて、選択した最大共有ライブラリからリンクされている全ての共有ライブラリをたどることにより、システム全体でリンク関係を最も共通化できる共有ライブラリ群を抽出できる。
図5の例では、共通リンク関係抽出部113は、共有ライブラリB(301)と、共有ライブラリE(302)、共有ライブラリF(303)、共有ライブラリH(308)、共有ライブラリI(309)、共有ライブラリJ(310)の六つの共有ライブラリとを、最も共通化できる共有ライブラリ群として抽出することができる。
なお、図5及び図8は、共通リンク関係抽出部113の処理を説明するための例示に過ぎず、図5及び図8に示す情報は、アプリケーション101や共有ライブラリ102の構成に応じて変化する。また、抽出の指標として、アプリケーションからのリンク数と配下の共有ライブラリリンク総数とを利用したが、その他の指標を使用してもかまわない。また、前述の二つの指標の積によって抽出する方式を示したが、指標の一方のみを用いたり、指標の一方に又は両方に所定の係数を重み付けするなどの他の方式も考えられる。
上記の処理が終了した後、図2に示す通り、共通リンク関係抽出部113は、最も共通化できるライブラリ群を抽出し、共通ロード状態管理情報作成部114に通知する。共通ロード状態管理情報作成部114は、共通リンク関係抽出部113から渡されたライブラリ群と、リンク関係解析部112から渡されたリンク関係の構造と、ロード状態管理情報記憶部122が記憶しているアプリケーション及び共有ライブラリのロード状態管理情報123に基づいて、共通ロード状態管理情報151〜153を作成して共通ロード状態管理情報記憶部115に格納する。
この共通ロード状態管理情報151〜153は、アプリケーションに対して必要な共有ライブラリへのリンク関係を表す共有ライブラリリンク関係情報151と、アプリケーション共通に利用するロード状態管理情報である共通利用ロード状態管理情報152と、アプリケーション個別に利用するロード状態管理情報ある個別利用ロード状態管理情報153によって構成される。
共有ライブラリリンク関係情報151は、リンク関係の構造に基づいて作成される。すなわち、共通ロード状態管理情報作成部114は、リンク関係の構造に含まれるアプリケーションからリンク先の共有ライブラリを全てたどることにより、アプリケーションを起動する際に実行空間にロードしてロード状態を最終的に管理しなければいけない全ての共有ライブラリの情報を、アプリケーションごとに示すことができる。
また、その際、共通ロード状態管理情報作成部114は、共通リンク関係抽出部113から渡されたライブラリ群の情報に基づいて、そのライブラリ群をリンクするアプリケーションの項目には、そのことがわかるライブラリ群識別情報を付加する。ライブラリ群識別情報としては、各アプリケーションに対して、当該アプリケーションが使用する共有ライブラリの中からライブラリ群が特定可能なように、ライブラリ群を所定の識別記号で囲ったり、複数のライブラリ群が存在する場合、各ライブラリ群を特定可能な識別情報を付加する等の種々の識別情報を用いることができる。
図9に、共通ロード状態管理情報記憶部115に記憶される共通ロード状態管理情報151〜153の一例を示す。図9のアプリケーション1〜3に対して必要な共有ライブラリへのリンク関係を表す共有ライブラリリンク関係情報151には、アプリケーション1が必要とする全ての共有ライブラリが共有ライブラリA、共有ライブラリD、共有ライブラリEであることを示す情報が含まれる(501)。また、アプリケーション2が必要とする全ての共有ライブラリは、ライブラリ群B、E、F、H、I、Jであり、且つこれらの共有ライブラリのロード状態管理情報は、システム全体で共通に利用することを識別できるようになっており、例えば、ライブラリ群識別情報として、括弧書き{}が付加されてライブラリ群B、E、F、H、I、Jが識別可能にされている(502)。
アプリケーション共通に利用するロード状態管理情報である共通利用ロード状態管理情報152は、共通リンク関係抽出部113によって抽出されたライブラリ群のロード状態管理情報を、アプリケーション及び共有ライブラリのロード状態管理情報123から選出して一つに纏めて作成される。図9の例では、共通リンク関係抽出部113からライブラリ群として共有ライブラリB、E、F、H、I、Jが渡され、アプリケーション及び共有ライブラリのロード状態管理情報123から共有ライブラリB、E、F、H、I、Jのロード状態管理情報が選出されて纏められている(504)。
アプリケーション個別に利用するロード状態管理情報である個別利用ロード状態管理情報153としては、アプリケーションが共通に利用する共通利用ロード状態管理情報152を作成する際に、アプリケーション及び共有ライブラリのロード状態管理情報123から選出されたロード状態管理情報以外のロード状態管理情報が保持される。図9の例では、共有ライブラリB、E、F、H、I、J以外の共有ライブラリA、D、E、C、G等のロード状態管理情報510〜514、…が記憶されている。
従来の起動処理では、一般的に、アプリケーションが起動されると動的ローダが共有ライブラリをロードする処理を行う。一方、本実施の形態のプログラム起動装置10では、図2で示す通り、アプリケーション起動部130がアプリケーションを起動し、アプリケーションの起動が開始されると、アプリケーション起動開始検出部131がアプリケーションの起動開始を検出し、どのアプリケーションが起動を開始したのかを示す情報を共有ライブラリリンク情報検索部132に通知する。共有ライブラリリンク情報検索部132は、共通ロード状態管理情報記憶部115に問い合わせて、アプリケーションに対して必要な共有ライブラリへのリンク関係を表す共有ライブラリリンク関係情報151を参照することにより、リンク関係を検索することなしに、起動を開始したアプリケーションに必要な全ての共有ライブラリを把握することができる。
また、起動開始したアプリケーションが必要な共有ライブラリのうちロード状態管理情報をアプリケーションで共通に利用する共有ライブラリ群を表すライブラリ群識別情報が共有ライブラリリンク関係情報151にあれば、共有ライブラリリンク情報検索部132は、アプリケーションが共通に利用するロード状態管理情報を共通利用ロード状態管理情報152から読み出してロード状態管理情報割り当て部133に渡す。また、共有ライブラリリンク情報検索部132は、残りのロード状態管理情報として、共有ライブラリごとにアプリケーションが個別に利用するロード状態管理情報を個別利用ロード状態管理情報153から読み出してロード状態管理情報割り当て部133に渡す。
ロード状態管理情報割り当て部133は、共有ライブラリリンク情報検索部132からアプリケーションが共通に利用するロード状態管理情報を渡されると、不揮発性のメモリ(例えばROM21)にあるロード状態管理情報を、メモリ管理上で直接参照できるように、実行空間のロード状態管理構造に割り当てる。また、ロード状態管理情報割り当て部133は、共有ライブラリリンク情報検索部132から共有ライブラリごとに個別のロード状態管理情報を渡されると、揮発性のメモリ(例えばRAM22)に各々のロード状態管理情報をコピーし、コピー先を実行空間の個別のロード状態管理構造に割り当てる。
共有ライブラリロード実行部134は、ロード状態管理情報割り当て部133が共有ライブラリのロード状態管理構造を構築すると、そのロード状態管理情報に基づいて、実行空間に共有ライブラリ本体を割り当てて実行可能な状態にロードし、アプリケーション動作実行部135は、動作可能になったアプリケーションを実行していく。
上記の処理により、本実施の形態では、各アプリケーションが共通に利用する共有ライブラリのロード状態を管理するための共通利用ロード状態管理情報152と、各アプリケーションが個別に利用する共有ライブラリのロード状態を管理するための個別利用ロード状態管理情報153とが区分されて共通ロード状態管理情報記憶部115に記憶され、アプリケーションの起動が開始され、アプリケーションが使用する共有ライブラリを実行空間にロードするときに、記憶されている共通利用ロード状態管理情報152を参照するように、各アプリケーションが共通に利用する共有ライブラリのロード状態の管理構造が実行空間に割り当てられるので、アプリケーション起動時に実行空間に割り当てられた情報に基づいてアプリケーションを起動することにより、アプリケーションの起動時間を高速化しつつ、実行空間として使用されるメモリ消費量を削減することができる。
(実施の形態2)
上記の情報処理装置100のアプリケーションや共有ライブラリが追加されると、追加されたアプリケーションの起動時のロード状態の管理を新たに行う必要性が生じ、追加された共有ライブラリをロードする際のロード状態の管理を追加する必要性が生じる。また、情報処理装置100のアプリケーションや共有ライブラリが修正されると、修正されたアプリケーションの起動時のロード状態の管理を修正する必要性が生じ、修正された共有ライブラリをロードする際のロード状態を修正する必要性が生じる。さらに、情報処理装置100のアプリケーションや共有ライブラリが削除されると、不要になったアプリケーションの起動時のロード状態の管理を削除する必要性が生じ、不要になった共有ライブラリをロードする際のロード状態を削除する必要性が生じる。
上記のような修正に対処すべく、本発明の実施の形態2によるプログラム起動装置は、情報処理装置100が備えるアプリケーションや共有ライブラリなどのプログラムが追加、修正又は削除されるなどの更新が生じた場合にも、そのプログラムの更新に対応して共通ロード状態管理情報を更新し、アプリケーションの起動を高速化しつつ、メモリ消費量の削減を実現するものである。
具体的には、本発明の実施の形態2のプログラム起動装置は、ハードウエアの構成として図1に示すプログラム起動装置10と同様の構成を有し、例えば、図1に示す情報処理装置100が、外部のネットワークや無線などの通信回線33から通信装置34を通じて、プログラムの更新情報や更新するプログラム又はその一部を受信した場合にも、アプリケーションの起動を高速化しつつ、メモリ消費量の削減を実現することができる。
本発明の実施の形態2によるプログラム起動装置の構成を図10に示す。図10に示すプログラム起動装置は、図2に示した本発明の実施の形態1におけるプログラム起動装置の構成に、プログラム更新検出部601と、プログラム更新部602と、共通ロード状態管理情報更新部603とを追加しており、同一部分には同一符号を付して詳細な説明を省略する。
図10に示すプログラム起動装置は、図1に示すCPU1がメモリ装置2に記憶されている実施の形態2の起動処理プログラムを実行することにより、プログラム記憶部111、リンク関係解析部112、共通リンク関係抽出部113、共通ロード状態管理情報作成部114、共通ロード状態管理情報記憶部115、アプリケーションロード実行部121、ロード状態管理情報記憶部122、アプリケーション起動開始検出部131、共有ライブラリリンク情報検索部132、ロード状態管理情報割り当て部133、共有ライブラリロード実行部134、アプリケーション動作実行部135、プログラム更新検出部601、プログラム更新部602及び共通ロード状態管理情報更新部603として機能する。
プログラム更新検出部601は、図1に示す通信回線33から通信装置34を通じて、情報処理装置100のプログラム(アプリケーション又は共有ライブラリ)が更新されることを検出し、プログラムの更新情報や更新するプログラム又はその一部を受け取る。プログラム更新検出部601は、プログラムの更新がある旨をプログラム更新部602に通知し、プログラムの更新情報や更新プログラム又はその一部をプログラム更新部602に渡す。
プログラム更新部602は、プログラム更新検出部601から受け取ったプログラムの更新情報にしたがって、情報処理装置100のメモリ装置2から構成されているプログラム記憶部111に記憶されているアプリケーション101や共有ライブラリ102を更新する。プログラムの更新が完了すると、プログラム更新部602は、プログラムの更新が完了したことを共通ロード状態管理情報更新部603に通知する。
共通ロード状態管理情報更新部603は、プログラムの更新が完了したことを通知されると、リンク関係解析部112とアプリケーションロード実行部121とに、再度、第1の実施の形態と同様に起動処理を実施するように通知する。
共通ロード状態管理情報更新部603から通知を受けたアプリケーションロード実行部121は、更新されたアプリケーション101及び共有ライブラリ102を使用して、アプリケーションのロード処理を実行し、更新されたアプリケーション及び共有ライブラリのロード状態管理情報123を作成してロード状態管理情報記憶部122に記憶させる。
また、共通ロード状態管理情報更新部603から通知を受けたリンク関係解析部112は、更新されたアプリケーション101及び共有ライブラリ102のリンク情報からリンク関係を解析し、更新された各プログラム間のリンク関係の構造を共通リンク関係抽出部113及び共通ロード状態管理情報作成部114へ出力する。
共通リンク関係抽出部113は、情報処理装置100全体で可能な限りアプリケーション間で共通にロード状態管理情報を利用できるように、共通のリンク関係を抽出して共通ロード状態管理情報作成部114に渡し、共通ロード状態管理情報作成部114は、更新された共通のリンク関係と更新されたアプリケーション及び共有ライブラリのロード状態管理情報123とによって、更新された共通ロード状態管理情報151〜153を作成して共通ロード状態管理情報記憶部115に記憶させる。これらの詳細な動作は、実施の形態1において説明している内容と同様である。
以上のように、本発明の実施の形態2のプログラム起動装置は、情報処理装置100に対して外部から通信回線33や記録媒体31を通じてプログラムの更新が実施されても、更新されたことを契機にして、情報処理装置100を搭載する情報機器やAV機器や通信機器、家電機器などのコンピュータを搭載する機器内で、共通ロード状態管理情報151〜153を更新することが可能になり、プログラムの起動を高速化しつつ、メモリ消費量を削減することが可能になる。
なお、本発明の実施の形態1を示す図2及び実施の形態2を示す図10の各機能ブロックは、典型的にはプログラムで実現されるが、集積回路であるLSIとしてもよい。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。ここでは、集積回路をLSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。また、LSI製造後に、プログラムすることが可能なFPGA(Field ProgrammableGate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用してもよい。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。例えば、バイオ技術の適応等が可能性としてありえる。
以上、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
本発明にかかるプログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路は、コンピュータ上でプログラムを実行する種々の機器において、プログラムの起動時間を高速化しつつメモリ消費量を削減することができるので、情報機器やAV機器や通信機器、家電機器などのコンピュータを搭載する機器において有用である。
本発明の実施の形態1によるプログラム起動装置を含む情報処理装置の構成を示すブロック図である。 図1に示すプログラム起動装置の各機能を説明するための機能ブロック図である。 図2に示すアプリケーションと共有ライブラリとのリンク関係の一例を模式的に描いた説明図である。 図2に示すアプリケーション及び共有ライブラリのロード状態管理情報の一例を示す図である。 図2に示すアプリケーションと共有ライブラリとのリンク関係の構造の一例を模式的に描いた説明図である。 図2に示す共通リンク関係抽出部の動作手順の一例を示すフローチャートである。 図2に示す共通リンク関係抽出部の動作手順の一例を示すフローチャートである。 図2に示す共通リンク関係抽出部が図6及び図7に示す手順で得た情報を表形式で示す説明図である。 図2に示す共通ロード状態管理情報の一例を模式的に描いた説明図である。 本発明の実施の形態2によるプログラム起動装置の各機能を説明するための機能ブロック図である。
符号の説明
2 メモリ装置
10 プログラム起動装置
21 ROM
22 RAM
111 プログラム記憶部
112 リンク関係解析部
113 共通リンク関係抽出部
114 共通ロード状態管理情報作成部
115 共通ロード状態管理情報記憶部
121 アプリケーションロード実行部
122 ロード状態管理情報記憶部
131 アプリケーション起動開始検出部
132 共有ライブラリリンク情報検索部
133 ロード状態管理情報割り当て部
134 共有ライブラリロード実行部
135 アプリケーション動作実行部
601 プログラム更新検出部
602 プログラム更新部
603 共通ロード状態管理情報更新部

Claims (17)

  1. 共通に利用される共有プログラムを用いて実行されるプログラムを起動するプログラム起動装置であって、
    各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、
    プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部とを備えることを特徴とするプログラム起動装置。
  2. 前記ロード状態管理情報割り当て部は、プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、各プログラムが前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を参照するように、各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てることを特徴とする請求項1記載のプログラム起動装置。
  3. プログラムと共有プログラムとのリンク関係を解析してプログラム間のリンク関係の構造を作成するリンク関係解析部と、
    前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報を抽出する共通リンク関係抽出部と、
    プログラムと共有プログラムとを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を記憶するロード状態管理情報記憶部と、
    前記共通リンク関係抽出部から取得したリンク関係の情報に基づいて、前記ロード状態管理情報記憶部のロード状態管理情報から前記共通利用ロード状態管理情報と前記個別利用ロード状態管理情報とを区分して前記共通ロード状態管理情報記憶部に記憶させる共通ロード状態管理情報作成部とをさらに備えることを特徴とする請求項1又は2記載のプログラム起動装置。
  4. 前記共通ロード状態管理情報作成部は、前記共通リンク関係抽出部から取得したリンク関係の情報に基づいて、プログラムの実行に必要な共有プログラムへのリンク関係を表す共有プログラムリンク関係情報を作成して前記共有プログラムリンク関係情報を前記共通ロード状態管理情報記憶部に記憶させ、
    プログラムの起動が開始されたことを検出する起動検出部と、
    前記共通ロード状態管理情報記憶部に記憶されている共有プログラムリンク関係情報を参照して、前記起動検出部により検出されたプログラムの実行に必要な全ての共有プログラムを特定し、当該プログラムが共通に利用する共通利用ロード状態管理情報と個別に利用する個別利用ロード状態管理情報とを前記共通ロード状態管理情報記憶部から前記ロード状態管理情報割り当て部へ出力するリンク情報検索部とをさらに備えることを特徴とする請求項3記載のプログラム起動装置。
  5. 前記共通リンク関係抽出部は、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、リンク関係を最も共通化できる共有プログラム群を抽出し、
    前記共通ロード状態管理情報作成部は、前記共通リンク関係抽出部により抽出された共有プログラム群のロード状態管理情報を前記ロード状態管理情報記憶部から読み出して前記共通利用ロード状態管理情報として纏めて前記共通ロード状態管理情報記憶部に記憶させることを特徴とする請求項4記載のプログラム起動装置。
  6. 前記共通リンク関係抽出部は、各共有プログラムに対するプログラムからのリンク数と、各共有プログラムに対する配下の共有プログラムのリンク総数との少なくとも一方に基づいて、前記共有プログラム群を抽出することを特徴とする請求項5記載のプログラム起動装置。
  7. 前記共通リンク関係抽出部は、前記リンク関係解析部によって作成されたリンク関係の構造に基づいて、共有プログラムに対するプログラムからのリンク数と、共有プログラムに対する配下の共有プログラムのリンク総数に1を加算した配下リンク数とを算出し、両者を乗算した値が最も大きい共有プログラムを最大共有プログラムとして特定し、前記最大共有プログラムと、当該最大共有プログラムの配下の共有プログラムとを前記共有プログラム群として抽出することを特徴とする請求項6記載のプログラム起動装置。
  8. 前記共通ロード状態管理情報作成部は、前記共有プログラム群が特定可能な識別情報を付加して前記共有プログラムリンク関係情報を前記共通ロード状態管理情報記憶部に記憶させ、
    前記リンク情報検索部は、前記識別情報を参照して、前記起動検出部により検出されたプログラムが共通に利用する共通利用ロード状態管理情報を前記共通ロード状態管理情報記憶部から前記ロード状態管理情報割り当て部へ出力することを特徴とする請求項5記載のプログラム起動装置。
  9. 前記共通ロード状態管理情報記憶部は、不揮発性メモリを含み、
    前記不揮発性メモリは、前記共通利用ロード状態管理情報を記憶することを特徴とする請求項1〜8のいずれかに記載のプログラム起動装置。
  10. 前記不揮発性メモリは、書き換え可能なリードオンリーメモリを含むことを特徴とする請求項9記載のプログラム起動装置。
  11. 前記共通ロード状態管理情報記憶部は、揮発性メモリを含み、
    前記揮発性メモリは、前記個別利用ロード状態管理情報を記憶することを特徴とする請求項1〜10のいずれかにプログラム起動装置。
  12. 前記揮発性メモリは、ランダムアクセスメモリを含むことを特徴とする請求項11記載のプログラム起動装置。
  13. プログラム及び共有プログラムを記憶するプログラム記憶部と、
    前記プログラム記憶部に記憶されているプログラム及び共有プログラムを実行空間にロードしたときのロード状態の管理構造を表すロード状態管理情報を作成して前記ロード状態管理情報記憶部に記憶させるロード実行部とをさらに備えることを特徴とする請求項3記載のプログラム起動装置。
  14. 前記プログラム記憶部に記憶されているプログラム及び共有プログラムのうち少なくとも一方を更新するプログラム更新部をさらに備え、
    前記プログラム更新部によりプログラム及び共有プログラムのうち少なくとも一方が更新されたとき、前記ロード実行部は、更新されたプログラム又は共有プログラムのロード状態管理情報を作成して前記ロード状態管理情報記憶部に記憶されているロード状態管理情報を更新し、前記リンク関係解析部は、更新されたプログラム又は共有プログラムのリンク関係を解析してプログラム間のリンク関係の構造を更新し、前記共通リンク関係抽出部は、更新されたリンク関係の構造に基づいて、複数のプログラムが共通に利用可能なリンク関係の情報を更新し、前記共通ロード状態管理情報作成部は、更新されたリンク関係の情報に基づいて、更新されたロード状態管理情報を用いて前記共通利用ロード状態管理情報及び前記個別利用ロード状態管理情報を更新することを特徴とする請求項13記載のプログラム起動装置。
  15. 共通に利用される共有プログラムを用いて実行されるプログラムを起動するプログラム起動方法であって、
    各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶ステップと、
    プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶ステップにおいて記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶ステップにおいて記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当てステップとを含むことを特徴とするプログラム起動方法。
  16. 共通に利用される共有プログラムを用いて実行されるプログラムを起動するための起動処理プログラムであって、
    各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、
    プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部としてコンピュータを機能させることを特徴とする起動処理プログラム。
  17. 共通に利用される共有プログラムを用いて実行されるプログラムを起動する集積回路であって、
    各プログラムが共通に利用する共有プログラムのロード状態を管理するための共通利用ロード状態管理情報と、各プログラムが個別に利用する共有プログラムのロード状態を管理するための個別利用ロード状態管理情報とを区分して記憶する共通ロード状態管理情報記憶部と、
    プログラムの起動が開始されて共有プログラムを実行空間にロードするときに、前記共通ロード状態管理情報記憶部に記憶されている共通利用ロード状態管理情報を用いて、各プログラムが共通に参照するように各プログラムが共通に利用する共有プログラムのロード状態の管理構造を実行空間に割り当て、前記共通ロード状態管理情報記憶部に記憶されている個別利用ロード状態管理情報を用いて、各プログラムが個別に参照するように各プログラムが個別に利用する共有プログラムのロード状態の管理構造を実行空間に割り当てるロード状態管理情報割り当て部とを備える集積回路。
JP2007125347A 2006-05-16 2007-05-10 プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路 Active JP5014871B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007125347A JP5014871B2 (ja) 2006-05-16 2007-05-10 プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006136045 2006-05-16
JP2006136045 2006-05-16
JP2007125347A JP5014871B2 (ja) 2006-05-16 2007-05-10 プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路

Publications (2)

Publication Number Publication Date
JP2007334869A true JP2007334869A (ja) 2007-12-27
JP5014871B2 JP5014871B2 (ja) 2012-08-29

Family

ID=38934248

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007125347A Active JP5014871B2 (ja) 2006-05-16 2007-05-10 プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路

Country Status (1)

Country Link
JP (1) JP5014871B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010225099A (ja) * 2009-03-25 2010-10-07 Canon Inc 情報処理装置及びその制御方法、並びにプログラム
JP2011198363A (ja) * 2010-03-23 2011-10-06 Samsung Electronics Co Ltd プログラムコンパイラ、プログラム設置装置、及びプログラム設置方法
JP2012014700A (ja) * 2010-07-01 2012-01-19 Nhn Corp 開発者インタフェース提供方法およびシステム
JP2015509638A (ja) * 2012-04-18 2015-03-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アプリケーションをランタイム・インスタンスにインストールするための方法、システム、およびコンピュータ・プログラム製品、ならびにコンピュータ・プログラム(アプリケーション・インストール)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0512029A (ja) * 1991-07-08 1993-01-22 Nec Corp 管理テーブル使用によるプログラムのロードシステム
JPH0675757A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd 仮想空間常駐プログラムのリンク方式
JPH11232103A (ja) * 1998-02-12 1999-08-27 Matsushita Electric Ind Co Ltd プログラムリンク方式及びメソッドサーチ方式
JP2007094497A (ja) * 2005-09-27 2007-04-12 Matsushita Electric Ind Co Ltd 情報処理装置及び情報処理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0512029A (ja) * 1991-07-08 1993-01-22 Nec Corp 管理テーブル使用によるプログラムのロードシステム
JPH0675757A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd 仮想空間常駐プログラムのリンク方式
JPH11232103A (ja) * 1998-02-12 1999-08-27 Matsushita Electric Ind Co Ltd プログラムリンク方式及びメソッドサーチ方式
JP2007094497A (ja) * 2005-09-27 2007-04-12 Matsushita Electric Ind Co Ltd 情報処理装置及び情報処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010225099A (ja) * 2009-03-25 2010-10-07 Canon Inc 情報処理装置及びその制御方法、並びにプログラム
JP2011198363A (ja) * 2010-03-23 2011-10-06 Samsung Electronics Co Ltd プログラムコンパイラ、プログラム設置装置、及びプログラム設置方法
JP2012014700A (ja) * 2010-07-01 2012-01-19 Nhn Corp 開発者インタフェース提供方法およびシステム
JP2015509638A (ja) * 2012-04-18 2015-03-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アプリケーションをランタイム・インスタンスにインストールするための方法、システム、およびコンピュータ・プログラム製品、ならびにコンピュータ・プログラム(アプリケーション・インストール)
US9038059B2 (en) 2012-04-18 2015-05-19 International Business Machines Corporation Automatically targeting application modules to individual machines and application framework runtimes instances

Also Published As

Publication number Publication date
JP5014871B2 (ja) 2012-08-29

Similar Documents

Publication Publication Date Title
US10169092B2 (en) System, method, program, and code generation unit
US9530499B2 (en) Semiconductor memory device and information processing device
US9582623B2 (en) Dynamically loaded system-level simulation
CN110275722A (zh) 用于升级应用的方法、装置、设备和存储介质
US9361122B2 (en) Method and electronic device of file system prefetching and boot-up method
CN105183592B (zh) 用于支持性能分析的方法和装置
CN110515641A (zh) 服务器固件的更新方法、装置及系统
WO2018040270A1 (zh) 在Windows系统中加载Linux系统ELF文件的方法及装置
JP2012079130A (ja) デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
JP5014871B2 (ja) プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路
CN104885063A (zh) 针对转译后备缓冲器(tlb)的重叠检查
US8656133B2 (en) Managing storage extents and the obtaining of storage blocks within the extents
US8990741B2 (en) Circuit design support device, circuit design support method and program
US7568185B1 (en) Mechanism for program-assisted tracing actions
JP2013228845A (ja) コードを投機的に最適化するための方法、並びにそのコンピュータ及びコンピュータ・プログラム
CN112069189A (zh) 多层级映射表格的更新方法、系统、终端设备及存储介质
CN109558319B (zh) Web页面控件的测试方法、设备和存储介质
WO2023071158A1 (zh) 内存优化方法、装置、终端、存储介质
US7930710B2 (en) Program start-up unit, program start-up method, recording medium with start-up processing program recorded, and integrated circuit
US10310871B2 (en) Non-transitory computer-readable recording medium storing control program, control device and control method
US7539832B2 (en) Option ROM code acquisition
JP2009157441A (ja) 情報処理装置、ファイル再配置方法およびプログラム
KR101352512B1 (ko) 효율적인 메모리 사용을 위한 스택 관리 장치 및 방법
JP6091471B2 (ja) ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120606

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5014871

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313133

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250