OSイメージ縮小方法、OSイメージ縮小プログラムおよびOSイメージ縮小プログラムを記録した記録媒体
【課題】OSサイズを適切に縮小するOSイメージ縮小方法を提供する。
【解決手段】
コンピュータに所定のアプリケーションプログラムを所定時間動作させるとともに前記アプリケーションプログラムの動作中に実行された関数をモニターして関数の実行履歴を管理する実行履歴管理工程と、実行履歴管理工程にて管理された実行履歴を参照してOSイメージに含まれる関数のうち前記実行履歴にある関数を保存関数として管理する保存関数管理工程と、OSイメージに含まれる関数のうち保存関数管理工程で管理されない関数を不使用関数としてOSイメージから削除処理する不使用関数処理工程と、を備える。関数単位で処理を行うことにより適切にOSを縮小することができる。
【解決手段】
コンピュータに所定のアプリケーションプログラムを所定時間動作させるとともに前記アプリケーションプログラムの動作中に実行された関数をモニターして関数の実行履歴を管理する実行履歴管理工程と、実行履歴管理工程にて管理された実行履歴を参照してOSイメージに含まれる関数のうち前記実行履歴にある関数を保存関数として管理する保存関数管理工程と、OSイメージに含まれる関数のうち保存関数管理工程で管理されない関数を不使用関数としてOSイメージから削除処理する不使用関数処理工程と、を備える。関数単位で処理を行うことにより適切にOSを縮小することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、OSイメージ縮小方法、OSイメージ縮小プログラムおよびOSイメージ縮小プログラムを記録した記録媒体に関する。
【背景技術】
【0002】
コンピュータ上でアプリケーションソフトを起動して実行するためにはオペレーティングシステム(OS)が必要となる。OSは、入出力機能やメモリ管理機能など多くのアプリケーションソフトから共通して利用される基本的な機能を提供し、ハードウェアを抽象化したインターフェースをアプリケーションソフトに提供する基本ソフトウェアとして広く用いられているシステムである。そして、ユーザーが使用するハードウェアやアプリケーションに汎用性を持たせるため、複数の機能を盛り込んだフルセットのOSファイル(オペレーティングシステムファイル)が構成されている。特に、近年では、コンピュータ機能の発達に応じて拡張性の高いGUI機能や高度で複雑な管理機能が求められるようになってきている。このようにOSに求められる機能が多くなったためOSファイルが非常に大きくなってきている。そして、一般にOSファイルはコンピュータに内蔵されるメインメモリ(主記憶装置)あるいはハードディスク(補助記憶装置)に保存されて使用されるものであるが、OSサイズが大きくなってきているためコンピュータに求められる容量も非常に大きくなっている。
【0003】
そこで、コンピュータに常時記憶保存するOSファイルの容量を縮小するための構成が提案されている(例えば特許文献1、特許文献2)。
特許文献1には、情報処理システムが記載されている。この情報処理システムは、OSのフルセットを構成する複数のOSファイルのうち、一部のOSファイルはコンピュータに保存し、その他のOSファイルを外部の記録媒体に記録しておく構成を採用する。たとえば、システム環境に影響を受けないOSファイル群として、カーネル、デバイスマネージャー(キーボード処理、ディスプレイ処理、マウス処理、IDE/ネットワーク処理)、ファイルマネージャー、メモリマネージャー、タスクマネージャーがコンピュータに保存される。その一方、基本的にシステム環境に影響を受けないOSファイル群として、GUIマネージャー(Graphical User Interface)、かな漢字変換マネージャー、プリンタマネージャー、フォントファイル、ライブラリファイル等はコンピュータではなく記録媒体に記録される。
【0004】
そして、アプリケーション実行時には、そのアプリケーション動作に必要なOSファイルをすべてコンピュータに有しているか判断し、必要なファイルがコンピュータ側に保存されていなければ、記録媒体から必要なファイルをコンピュータにロードする。たとえば、プリンタが必要なアプリケーションであればプリンタマネージャーのロードを行う。
このような構成によれば、コンピュータ側では必要最小限のOSファイルのみしか保持していないため、コンピュータにおけるOSサイズを小さくできる。
【0005】
また、特許文献2には、プログラム処理高速化方式が記載されている。
このプログラム処理高速化方式では、まず、ソースプログラムに使用回数を計測する測定手段を組み込んで測定手段組み込み済みソースプログラムを生成する。そして、この測定手段組み込み済みソースプログラムをコンパイルして実行プログラムを作成する。実行プログラムに特定のデータを与えて実行させ、プログラム中の個々の分岐命令が実行されたか否か測定して測定値を収集する。実行されなかった分岐命令を削除し、不要な分岐命令が削除されたソースプログラムを得る。このような方式により、特定データに対して最適化されたソースプログラムを得る。
すなわち、汎用的に作られたプログラムを特定のユーザーや使用目的に合うようにカスタマイズして処理の高速化を図ることができ、同時に、不必要な部分(分岐命令)を削除するのでプログラムを縮小することができる。
【0006】
【特許文献1】特開平10−143356号公報(第14頁、図11)
【特許文献2】特開平7−44397号公報(第4頁、図1)
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1の構成ではOSサイズを縮小することにほとんど寄与せず、現実的にはコンピュータの容量にかける負荷は従前のものと変わらないという問題がある。
たとえば、特許文献1おいて、ライブラリファイルは記録媒体に記録しておいてアプリケーション実行時に必要があればコンピュータ側にロードするとされている。一アプリケーションがライブラリファイルに含まれる総ての機能もしくは関数を使用することは極稀であるのでライブラリファイルを記録媒体に記録するという構成をとっていると考えられるが、その使用量の多寡に違いはあってもライブラリファイル自体は一般的にすべてのアプリケーションが利用するものである。したがって、アプリケーションの実行時にはほぼ必ずライブラリファイルをコンピュータ側にロードさせる必要がある。その他のOSファイルであるGUIマネージャー(Graphical User Interface)、かな漢字変換マネージャー、プリンタマネージャー、フォントファイルにあっても同じ事情が当てはまる。
すると、結局、ファイル単位で読み出しの要否を判断する特許文献1の構成では、不必要な部分も含めて記録媒体からOSファイル全体をコンピュータ側に読み込む必要がある。
【0008】
また、コンピュータに保存しているデバイスマネージャーや、ファイルマネージャーや、メモリマネージャーについてみれば、一のアプリケーションがこれらの総ての機能を必要とするわけではないが、常にコンピュータメモリの大きな部分を占めていることになる。
結局、アプリケーション実行時には不必要な部分も含めてすべてのOSファイルをコンピュータに保存する必要があり、現実的にはコンピュータ容量に要求される性能は変わらないことになる。
【0009】
また、特許文献2の構成はOSに適用できないという問題がある。
特許文献2では、特定データをプログラム(例えばOS)に与えてプログラム(例えばOS)中の分岐命令の要不要を判断させるものであるが、特定データの付与では割り込み処理といった判断させにくい部分もOSには多数存在している。
その結果、特許文献2の構成をOSに採用した場合、本来は必要である部分まで削除してしまう危険性が非常に高い。
さらに、タスクのスケジューリングやメモリ管理機能は特定のデータに依存するものではないので、これらの機能は削除されてしまう可能性が高い。
【0010】
このような問題のため、OSサイズを適切に縮小してコンピュータ容量にかける負担を小さくする構成が切望されていた。
【0011】
本発明の目的は、OSサイズを適切に縮小するOSイメージ縮小方法、OSイメージ縮小プログラムおよびOSイメージ縮小プログラムを記録した記録媒体を提供することにある。
【課題を解決するための手段】
【0012】
本発明のOSイメージ縮小方法は、コンピュータに格納された少なくとも一つのOSイメージのサイズを縮小するOSイメージ縮小方法であって、前記コンピュータに所定のアプリケーションプログラムを所定時間動作させるとともに前記アプリケーションプログラムの動作中に実行された関数をモニターして関数の実行履歴を管理する実行履歴管理工程と、前記実行履歴管理工程にて管理された実行履歴を参照して前記OSイメージに含まれる関数のうち前記実行履歴にある関数を保存関数として管理する保存関数管理工程と、前記OSイメージに含まれる関数のうち前記保存関数管理工程で管理されない関数を不使用関数として前記OSイメージから削除処理する不使用関数処理工程と、を備えることを特徴とする。
【発明の効果】
【0013】
本発明によれば、OSイメージから不要な部分を関数単位で削除するため、効果的にOSイメージを縮小することができる。
【発明を実施するための最良の形態】
【0014】
本発明の実施の形態を図示するとともに図中の各要素に付した符号を参照して説明する。
図1は、本発明のOSイメージ縮小プログラム400を実行させるコンピュータ100の構成を示す図である。
コンピュータ100は、中央演算装置(CPU)110と、メインメモリ120と、ハードディスク130と、インターフェース(I/F)140と、を備える。
コンピュータ100にはインターフェース140を介して入出力手段150が接続されている。
入出力手段150としては、キーボード、マウス、プリンタ、モニター、モデムなどが例として挙げられる。
【0015】
ハードディクス130には、必要なプログラムが記憶保存されている。
本例では、縮小対象となるOSイメージファイル200と、特定のアプリケーション300と、本実施形態に係るOSイメージ縮小プログラム400が保存されている。
ここで、OSイメージファイル200としては例えばLinux(登録商標)が例として挙げられ、アプリケーション300としてはWEBサーバが例として挙げられるが、本発明の趣旨よりOSやアプリケーションの種類は特に限定されるものではないことはもちろんである。
【0016】
次に、本実施形態に係るOSイメージ縮小プログラム400の構成について説明する。
図2は、OSイメージ縮小プログラム400の構成を示す図である。
OSイメージ縮小プログラム400は、プログラムの動作中に実行された関数をモニターして実行履歴を管理する実行履歴管理部410と、実行履歴管理部410にて管理された実行履歴を参照してOSイメージの関数のうち実行された関数を保存関数として管理する保存関数管理部420と、OSイメージの関数のうち保存関数管理部420に管理されない関数を不使用関数として削除処理する不使用関数処理部430と、を備える。
【0017】
実行履歴管理部410は、OSイメージおよびアプリケーション300に動作測定のためのプローブ412を組み込むプローブ挿入部411と、プローブ412によって得られる情報から実行履歴を作成する実行履歴作成部413と、作成された実行履歴を記憶する実行履歴記憶部414と、を備える。
【0018】
プローブ412は、OSカーネル210内の任意の命令の実行に割り込んで命令の実行情報を取得する探査機能を有する。
例えばKprobe(登録商標)が例として挙げられる。
プローブ挿入部411は、このプローブ412をOSイメージおよびアプリケーション300に組み込む機能を有する。
【0019】
実行履歴作成部413は、プローブ412にて取得される情報に基づいてアプリケーション300および各関数の実行履歴を作成する。
アプリケーション300の実行履歴は、図3に示されるように、動作しているアプリケーション名と、その実行開始時間と、実行終了時間が記録されたテーブル415として作成される。
関数実行履歴416は、図4に示されるように、実行された関数の情報を表すテーブルとして作成される。
関数実行履歴416のテーブルには、スレッド名、関数群、実行要求者、実行開始時刻、データアドレスが記録される。
このように作成されたアプリケーション実行履歴テーブル415および関数実行履歴テーブル416は実行履歴記憶部414に記憶される。
【0020】
保存関数管理部420は、関数実行履歴テーブル416に記録された実行関数を保存関数として抽出した保存関数リストを作成する保存関数リスト作成部421と、作成された保存関数リストを記憶する保存関数リスト記憶部422と、を備える。
【0021】
保存関数リスト作成部421は、アプリケーション300の動作に関連して実行されたOS関数群を関数実行履歴テーブル416からピックアップして保存関数リストとし、このように作成した保存関数リストを保存関数リスト記憶部422に記憶させる。
【0022】
不使用関数処理部430は、OSイメージの関数のうち保存関数リストにエントリされていない関数を不使用関数として抽出した不使用関数リスト433を作成する不使用関数リスト作成部431と、作成された不使用関数リスト433を記憶する不使用関数リスト記憶部432と、不使用関数リスト433にある関数をOSイメージファイル200から削除する不使用関数削除部434と、を備える。
【0023】
不使用関数リスト作成部431は、保存関数リストとOSイメージファイル200とを参照して、OSイメージファイル中の関数で保存関数リストに挙がっていない関数を抽出したリストを作成する。
このように抽出した関数とその対応アドレスをテーブルにしてリスト化する。
図5は、不使用関数リスト433の構成例を示す図であり、不使用関数リスト433には、関数名、開始アドレス、終了アドレスが記録される。
不使用関数削除部434は、不使用関数リスト433にある不使用関数のアドレスを取得し、対応する関数をOSイメージファイル200から削除する。さらに、削除された関数のみが参照するデータ(変数)が存在する場合にはそのデータ(変数)を削除する。そして、削除した関数のサイズ分だけ残った関数が参照するアドレスから値を引く。
これにより、不使用の余計な関数が削除されてサイズが縮小されたOSイメージファイル200が得られる。
【0024】
次に、OSイメージ縮小プログラム400の動作について説明する。
図6は、OSイメージ縮小プログラム400の動作手順を示すフローチャートである。
OSイメージ縮小プログラム400の実行にあたっては、まずST100において、OSイメージ縮小プログラム400を実行するために必要なファイルがハードディスク130からメインメモリ120にロードされる。
そして、ST210において、プローブ挿入部411によりアプリケーション300およびOSカーネル210にプローブ412が挿入される。
【0025】
図7は、ハードディスク130中の必要ファイルがメインメモリ120にロードされた状態を示す図である。
アプリケーション300(例えばWEBサーバ)およびOSカーネル210がメインメモリ120にロードされ、さらに、アプリケーション300およびOSカーネル210にはプローブ挿入部411によりプローブ412が組み込まれている(なお、図7中では説明のためにプローブ412を明示的に示している)。
そして、実行履歴作成部413、保存関数リスト作成部421、不使用関数リスト作成部431および不使用関数削除部434がメインメモリ120にロードされる。
【0026】
このように必要ファイルのロードが完了したところで、ST220のアプリケーション実行工程によりアプリケーション300が所定時間実行される。
アプリケーション300の実行中にアプリケーション300および関数の実行履歴が作成される(実行履歴作成工程、ST230)。
これにより、図3および図4に示されるアプリケーション300の実行履歴と関数の実行履歴が作成される。
このように作成された実行履歴は実行履歴記憶工程(ST240)により、実行履歴記憶部414に記憶される。
【0027】
ここに、ST210からST240により実行履歴管理工程が構成されている。
【0028】
実行履歴が作成されたところで、実行履歴を参照して保存関数のリストが作成される(保存関数リスト作成工程、ST310)。
保存関数リストは、関数実行履歴416に記録されている関数とその対応するアドレスを記録して保存関数リストとする。
ここで、図8に、保存関数リスト作成工程(ST310)の手順の一例を示す。
【0029】
保存関数リストの作成にあたって、まず、関数実行履歴416からエントリを取得する(ST510)。次に当該エントリの実行要求者が監視対象のアプリケーション300と一致するかを確認する(ST511)。一致すれば(ST511:YES)、当該エントリの実行関数を保存関数リストに追加し(ST513)、さらに、当該エントリのデータアドレスを記録する(ST514)。一致しなければ(ST512:NO)、次に、当該エントリの実行開始時刻が監視対象アプリケーション300の実行時間内かどうかを確認する(ST515)。
この確認方法としては、監視対象アプリケーション300の実行開始時刻以上、実行終了時刻以内に当該エントリの実行開始時刻が含まれているかを確認する。
実行時間内でなければ(ST516:YES)、当該エントリの実行関数を保存関数リストに追加し(ST513)、当該エントリのデータアドレスを記録しておく(ST514)。
一致しなければ(ST516:NO)、ST514にてすでに記録されているデータアドレスと一致するかどうかを確認する(ST517)。
一致すれば(ST518:YES)、当該エントリの実行関数を保存関数リストに追加し(ST513)、当該エントリのデータアドレスを一時的に記録しておく(ST514)。
一致しなければ(ST518:NO)、関数実行履歴416にエントリが残っているか確認する(ST519)。
残っていれば(ST520:YES)、ST510から処理を繰り返す。
残っていなければ(ST520:NO)、保存関数リスト作成工程を終了する。
【0030】
作成された保存関数リストは、保存関数リスト記憶部422に記憶される(保存関数リスト記憶工程、ST320)。
【0031】
次に、ST410において不使用関数リスト作成工程が行われ、不使用関数リスト作成部431にて不使用関数リスト433が作成される。
これは、保存関数リストとOSイメージファイル200とが参照されて、OSイメージファイル中の関数で保存関数リストに挙がっていない関数を抽出したリストが不使用関数リスト433として作成される。
このとき、不使用関数リスト作成部431は、OSイメージファイル200からOS関数群に含まれる総ての関数の関数名、当該関数の開始アドレスおよび終了アドレスを取得し、一時保存する。
そして、保存関数リストを参照して、保存関数リストに挙がっている関数を前記一時保存ファイルから削除することにより、不使用関数リスト433を作成する。
【0032】
作成された不使用関数リスト433は、不使用関数リスト記憶部432に記憶される(不使用関数リスト記憶工程、ST420)。
【0033】
不使用関数リスト433が作成された後、ST430において、不使用関数削除工程(ST430)が行われ、不使用関数削除部434によりOSイメージファイル200から不使用関数が削除される。
図9に、不使用関数削除工程(ST430)の手順を示す。
不使用関数を削除するにあたって、まず、不使用関数リスト433にエントリされている削除対象となる不使用関数のアドレスを取得する(ST610)。
このとき、不使用関数削除部434は、不使用関数リスト433にエントリされている関数のうち、開始アドレスの大きいものから順に削除対象として取得する。
そして、当該不使用関数をOSイメージファイル200から削除する(ST611)。
次に、この削除した不使用関数のみが参照するデータを削除する(ST612)。
すなわち、この不使用関数しかアクセスしない変数が存在すればその変数を削除する。
次に、OSファイルに残っている関数が利用している参照アドレスから、先ほど削除した不使用関数のサイズ分だけ値を引く(ST613)。
そして、不使用関数リスト433にエントリされた不使用関数が総てOSイメージファイル200から削除されるまでST610からST613を繰り返す(ST614)。
【0034】
以上により、OSイメージから不使用の関数を削除し、OSイメージの適切な縮小が完了する。
【0035】
このような本実施形態によれば、次の効果を奏することができる。
(1)実行履歴管理工程(ST210−ST240)は、アプリケーション300の動作中に実行されたOSを関数単位でモニターして記録し、不使用関数処理工程(ST410−ST430)における不使用関数の削除にあたっても関数単位で不使用関数をOSイメージから削除する。
これにより、OSイメージのうち不使用の部分を削除して効果的にOSイメージのサイズを縮小することができる。
従来は、OSのファイルごとに使用頻度や重要性を区別し、使用頻度や重要性の低いファイルは外部メディアに保存させることでコンピュータに保持するOSサイズを縮小させるとしていたが、使用量の多寡の差はあってもファイル単位でみれば一アプリケーション300の動作中に総てのファイルが使用されるので、現実的にはすべてのOSファイルをコンピュータにロードすることになり、実質的にコンピュータ容量に与える負荷に対してはほとんど効果を奏していなかった。
この点、本実施形態では、関数単位で要不要を判断し、不使用の関数は削除するので、実効性をもってOSイメージのサイズを縮小することができる。
【0036】
(2)実行履歴管理工程(ST210−ST240)は、縮小対象としているOSだけでなくアプリケーション300にもプローブ412を組み込み、アプリケーション動作中に使用された関数については関数実行履歴のテーブル416にエントリすることとしている。
これにより、アプリケーション動作に必要な関数については確実に保存し、不用意に削除するといった不都合を回避することができる。
従来は、縮小対象のプログラムにのみプローブを組み込んだうえで特定のデータを走らせてプログラム中の実行履歴を取得していたが、このように特定データを与えたときの実行履歴を見るだけでは広汎な処理を行うOSの真に必要な部分を正確に判断することはできない。
この点、本実施形態では、アプリケーション300の動作とOS関数群の動作とを関連させるので、必要な関数を正確に判断して確実に保存関数として保存させることができる。
【0037】
(3)不使用関数の削除にあたっては、不使用関数リスト433のアドレスを参照してハードディスク上のOSイメージから不使用関数を削除するので、ソースプログラム(ソースコード)に戻ってプログラムを編集しなくてもハードディスク上のバイナリファイルを自動的に縮小することができる。また、不使用関数のうちアドレスの大きいものから削除するとしているので参照アドレスの書き換え動作をできるかぎり少なくすることができる。
【産業上の利用可能性】
【0038】
本発明は、OSのサイズ縮小化に利用できる。そして、たとえば、特定のアプリケーションの実行に最適化されたコンピュータシステムのOSや、搭載されている物理メモリが限られている組み込みシステムに特に貢献できる。
【図面の簡単な説明】
【0039】
【図1】OSイメージ縮小プログラムを実行させるコンピュータの構成を示す図。
【図2】OSイメージ縮小プログラムの構成を示す図。
【図3】アプリケーション実行履歴のテーブルを示す図。
【図4】関数実行履歴のテーブルを示す図。
【図5】不使用関数リストの構成例を示す図。
【図6】OSイメージ縮小プログラムの動作手順を示すフローチャート。
【図7】必要ファイルがメインメモリにロードされた状態を示す図。
【図8】保存関数リスト作成工程の手順の一例を示す図。
【図9】不使用関数削除工程の手順を示す図。
【符号の説明】
【0040】
100…コンピュータ、110…中央演算装置(CPU)、120…メインメモリ、130 ハードディスク、140…インターフェース、150…入出力手段、200…OSイメージファイル、210…OSカーネル、300…アプリケーション、300…アプリケーション、400…イメージ縮小プログラム、410…実行履歴管理部、411…プローブ挿入部、412…プローブ、413…実行履歴作成部、414…実行履歴記憶部、415…アプリケーション実行履歴、416…関数実行履歴、420…保存関数管理部、421…保存関数リスト作成部、422…保存関数リスト記憶部、430…不使用関数処理部、431…不使用関数リスト作成部、432…不使用関数リスト記憶部、433…不使用関数リスト、434…不使用関数削除部。
【技術分野】
【0001】
本発明は、OSイメージ縮小方法、OSイメージ縮小プログラムおよびOSイメージ縮小プログラムを記録した記録媒体に関する。
【背景技術】
【0002】
コンピュータ上でアプリケーションソフトを起動して実行するためにはオペレーティングシステム(OS)が必要となる。OSは、入出力機能やメモリ管理機能など多くのアプリケーションソフトから共通して利用される基本的な機能を提供し、ハードウェアを抽象化したインターフェースをアプリケーションソフトに提供する基本ソフトウェアとして広く用いられているシステムである。そして、ユーザーが使用するハードウェアやアプリケーションに汎用性を持たせるため、複数の機能を盛り込んだフルセットのOSファイル(オペレーティングシステムファイル)が構成されている。特に、近年では、コンピュータ機能の発達に応じて拡張性の高いGUI機能や高度で複雑な管理機能が求められるようになってきている。このようにOSに求められる機能が多くなったためOSファイルが非常に大きくなってきている。そして、一般にOSファイルはコンピュータに内蔵されるメインメモリ(主記憶装置)あるいはハードディスク(補助記憶装置)に保存されて使用されるものであるが、OSサイズが大きくなってきているためコンピュータに求められる容量も非常に大きくなっている。
【0003】
そこで、コンピュータに常時記憶保存するOSファイルの容量を縮小するための構成が提案されている(例えば特許文献1、特許文献2)。
特許文献1には、情報処理システムが記載されている。この情報処理システムは、OSのフルセットを構成する複数のOSファイルのうち、一部のOSファイルはコンピュータに保存し、その他のOSファイルを外部の記録媒体に記録しておく構成を採用する。たとえば、システム環境に影響を受けないOSファイル群として、カーネル、デバイスマネージャー(キーボード処理、ディスプレイ処理、マウス処理、IDE/ネットワーク処理)、ファイルマネージャー、メモリマネージャー、タスクマネージャーがコンピュータに保存される。その一方、基本的にシステム環境に影響を受けないOSファイル群として、GUIマネージャー(Graphical User Interface)、かな漢字変換マネージャー、プリンタマネージャー、フォントファイル、ライブラリファイル等はコンピュータではなく記録媒体に記録される。
【0004】
そして、アプリケーション実行時には、そのアプリケーション動作に必要なOSファイルをすべてコンピュータに有しているか判断し、必要なファイルがコンピュータ側に保存されていなければ、記録媒体から必要なファイルをコンピュータにロードする。たとえば、プリンタが必要なアプリケーションであればプリンタマネージャーのロードを行う。
このような構成によれば、コンピュータ側では必要最小限のOSファイルのみしか保持していないため、コンピュータにおけるOSサイズを小さくできる。
【0005】
また、特許文献2には、プログラム処理高速化方式が記載されている。
このプログラム処理高速化方式では、まず、ソースプログラムに使用回数を計測する測定手段を組み込んで測定手段組み込み済みソースプログラムを生成する。そして、この測定手段組み込み済みソースプログラムをコンパイルして実行プログラムを作成する。実行プログラムに特定のデータを与えて実行させ、プログラム中の個々の分岐命令が実行されたか否か測定して測定値を収集する。実行されなかった分岐命令を削除し、不要な分岐命令が削除されたソースプログラムを得る。このような方式により、特定データに対して最適化されたソースプログラムを得る。
すなわち、汎用的に作られたプログラムを特定のユーザーや使用目的に合うようにカスタマイズして処理の高速化を図ることができ、同時に、不必要な部分(分岐命令)を削除するのでプログラムを縮小することができる。
【0006】
【特許文献1】特開平10−143356号公報(第14頁、図11)
【特許文献2】特開平7−44397号公報(第4頁、図1)
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1の構成ではOSサイズを縮小することにほとんど寄与せず、現実的にはコンピュータの容量にかける負荷は従前のものと変わらないという問題がある。
たとえば、特許文献1おいて、ライブラリファイルは記録媒体に記録しておいてアプリケーション実行時に必要があればコンピュータ側にロードするとされている。一アプリケーションがライブラリファイルに含まれる総ての機能もしくは関数を使用することは極稀であるのでライブラリファイルを記録媒体に記録するという構成をとっていると考えられるが、その使用量の多寡に違いはあってもライブラリファイル自体は一般的にすべてのアプリケーションが利用するものである。したがって、アプリケーションの実行時にはほぼ必ずライブラリファイルをコンピュータ側にロードさせる必要がある。その他のOSファイルであるGUIマネージャー(Graphical User Interface)、かな漢字変換マネージャー、プリンタマネージャー、フォントファイルにあっても同じ事情が当てはまる。
すると、結局、ファイル単位で読み出しの要否を判断する特許文献1の構成では、不必要な部分も含めて記録媒体からOSファイル全体をコンピュータ側に読み込む必要がある。
【0008】
また、コンピュータに保存しているデバイスマネージャーや、ファイルマネージャーや、メモリマネージャーについてみれば、一のアプリケーションがこれらの総ての機能を必要とするわけではないが、常にコンピュータメモリの大きな部分を占めていることになる。
結局、アプリケーション実行時には不必要な部分も含めてすべてのOSファイルをコンピュータに保存する必要があり、現実的にはコンピュータ容量に要求される性能は変わらないことになる。
【0009】
また、特許文献2の構成はOSに適用できないという問題がある。
特許文献2では、特定データをプログラム(例えばOS)に与えてプログラム(例えばOS)中の分岐命令の要不要を判断させるものであるが、特定データの付与では割り込み処理といった判断させにくい部分もOSには多数存在している。
その結果、特許文献2の構成をOSに採用した場合、本来は必要である部分まで削除してしまう危険性が非常に高い。
さらに、タスクのスケジューリングやメモリ管理機能は特定のデータに依存するものではないので、これらの機能は削除されてしまう可能性が高い。
【0010】
このような問題のため、OSサイズを適切に縮小してコンピュータ容量にかける負担を小さくする構成が切望されていた。
【0011】
本発明の目的は、OSサイズを適切に縮小するOSイメージ縮小方法、OSイメージ縮小プログラムおよびOSイメージ縮小プログラムを記録した記録媒体を提供することにある。
【課題を解決するための手段】
【0012】
本発明のOSイメージ縮小方法は、コンピュータに格納された少なくとも一つのOSイメージのサイズを縮小するOSイメージ縮小方法であって、前記コンピュータに所定のアプリケーションプログラムを所定時間動作させるとともに前記アプリケーションプログラムの動作中に実行された関数をモニターして関数の実行履歴を管理する実行履歴管理工程と、前記実行履歴管理工程にて管理された実行履歴を参照して前記OSイメージに含まれる関数のうち前記実行履歴にある関数を保存関数として管理する保存関数管理工程と、前記OSイメージに含まれる関数のうち前記保存関数管理工程で管理されない関数を不使用関数として前記OSイメージから削除処理する不使用関数処理工程と、を備えることを特徴とする。
【発明の効果】
【0013】
本発明によれば、OSイメージから不要な部分を関数単位で削除するため、効果的にOSイメージを縮小することができる。
【発明を実施するための最良の形態】
【0014】
本発明の実施の形態を図示するとともに図中の各要素に付した符号を参照して説明する。
図1は、本発明のOSイメージ縮小プログラム400を実行させるコンピュータ100の構成を示す図である。
コンピュータ100は、中央演算装置(CPU)110と、メインメモリ120と、ハードディスク130と、インターフェース(I/F)140と、を備える。
コンピュータ100にはインターフェース140を介して入出力手段150が接続されている。
入出力手段150としては、キーボード、マウス、プリンタ、モニター、モデムなどが例として挙げられる。
【0015】
ハードディクス130には、必要なプログラムが記憶保存されている。
本例では、縮小対象となるOSイメージファイル200と、特定のアプリケーション300と、本実施形態に係るOSイメージ縮小プログラム400が保存されている。
ここで、OSイメージファイル200としては例えばLinux(登録商標)が例として挙げられ、アプリケーション300としてはWEBサーバが例として挙げられるが、本発明の趣旨よりOSやアプリケーションの種類は特に限定されるものではないことはもちろんである。
【0016】
次に、本実施形態に係るOSイメージ縮小プログラム400の構成について説明する。
図2は、OSイメージ縮小プログラム400の構成を示す図である。
OSイメージ縮小プログラム400は、プログラムの動作中に実行された関数をモニターして実行履歴を管理する実行履歴管理部410と、実行履歴管理部410にて管理された実行履歴を参照してOSイメージの関数のうち実行された関数を保存関数として管理する保存関数管理部420と、OSイメージの関数のうち保存関数管理部420に管理されない関数を不使用関数として削除処理する不使用関数処理部430と、を備える。
【0017】
実行履歴管理部410は、OSイメージおよびアプリケーション300に動作測定のためのプローブ412を組み込むプローブ挿入部411と、プローブ412によって得られる情報から実行履歴を作成する実行履歴作成部413と、作成された実行履歴を記憶する実行履歴記憶部414と、を備える。
【0018】
プローブ412は、OSカーネル210内の任意の命令の実行に割り込んで命令の実行情報を取得する探査機能を有する。
例えばKprobe(登録商標)が例として挙げられる。
プローブ挿入部411は、このプローブ412をOSイメージおよびアプリケーション300に組み込む機能を有する。
【0019】
実行履歴作成部413は、プローブ412にて取得される情報に基づいてアプリケーション300および各関数の実行履歴を作成する。
アプリケーション300の実行履歴は、図3に示されるように、動作しているアプリケーション名と、その実行開始時間と、実行終了時間が記録されたテーブル415として作成される。
関数実行履歴416は、図4に示されるように、実行された関数の情報を表すテーブルとして作成される。
関数実行履歴416のテーブルには、スレッド名、関数群、実行要求者、実行開始時刻、データアドレスが記録される。
このように作成されたアプリケーション実行履歴テーブル415および関数実行履歴テーブル416は実行履歴記憶部414に記憶される。
【0020】
保存関数管理部420は、関数実行履歴テーブル416に記録された実行関数を保存関数として抽出した保存関数リストを作成する保存関数リスト作成部421と、作成された保存関数リストを記憶する保存関数リスト記憶部422と、を備える。
【0021】
保存関数リスト作成部421は、アプリケーション300の動作に関連して実行されたOS関数群を関数実行履歴テーブル416からピックアップして保存関数リストとし、このように作成した保存関数リストを保存関数リスト記憶部422に記憶させる。
【0022】
不使用関数処理部430は、OSイメージの関数のうち保存関数リストにエントリされていない関数を不使用関数として抽出した不使用関数リスト433を作成する不使用関数リスト作成部431と、作成された不使用関数リスト433を記憶する不使用関数リスト記憶部432と、不使用関数リスト433にある関数をOSイメージファイル200から削除する不使用関数削除部434と、を備える。
【0023】
不使用関数リスト作成部431は、保存関数リストとOSイメージファイル200とを参照して、OSイメージファイル中の関数で保存関数リストに挙がっていない関数を抽出したリストを作成する。
このように抽出した関数とその対応アドレスをテーブルにしてリスト化する。
図5は、不使用関数リスト433の構成例を示す図であり、不使用関数リスト433には、関数名、開始アドレス、終了アドレスが記録される。
不使用関数削除部434は、不使用関数リスト433にある不使用関数のアドレスを取得し、対応する関数をOSイメージファイル200から削除する。さらに、削除された関数のみが参照するデータ(変数)が存在する場合にはそのデータ(変数)を削除する。そして、削除した関数のサイズ分だけ残った関数が参照するアドレスから値を引く。
これにより、不使用の余計な関数が削除されてサイズが縮小されたOSイメージファイル200が得られる。
【0024】
次に、OSイメージ縮小プログラム400の動作について説明する。
図6は、OSイメージ縮小プログラム400の動作手順を示すフローチャートである。
OSイメージ縮小プログラム400の実行にあたっては、まずST100において、OSイメージ縮小プログラム400を実行するために必要なファイルがハードディスク130からメインメモリ120にロードされる。
そして、ST210において、プローブ挿入部411によりアプリケーション300およびOSカーネル210にプローブ412が挿入される。
【0025】
図7は、ハードディスク130中の必要ファイルがメインメモリ120にロードされた状態を示す図である。
アプリケーション300(例えばWEBサーバ)およびOSカーネル210がメインメモリ120にロードされ、さらに、アプリケーション300およびOSカーネル210にはプローブ挿入部411によりプローブ412が組み込まれている(なお、図7中では説明のためにプローブ412を明示的に示している)。
そして、実行履歴作成部413、保存関数リスト作成部421、不使用関数リスト作成部431および不使用関数削除部434がメインメモリ120にロードされる。
【0026】
このように必要ファイルのロードが完了したところで、ST220のアプリケーション実行工程によりアプリケーション300が所定時間実行される。
アプリケーション300の実行中にアプリケーション300および関数の実行履歴が作成される(実行履歴作成工程、ST230)。
これにより、図3および図4に示されるアプリケーション300の実行履歴と関数の実行履歴が作成される。
このように作成された実行履歴は実行履歴記憶工程(ST240)により、実行履歴記憶部414に記憶される。
【0027】
ここに、ST210からST240により実行履歴管理工程が構成されている。
【0028】
実行履歴が作成されたところで、実行履歴を参照して保存関数のリストが作成される(保存関数リスト作成工程、ST310)。
保存関数リストは、関数実行履歴416に記録されている関数とその対応するアドレスを記録して保存関数リストとする。
ここで、図8に、保存関数リスト作成工程(ST310)の手順の一例を示す。
【0029】
保存関数リストの作成にあたって、まず、関数実行履歴416からエントリを取得する(ST510)。次に当該エントリの実行要求者が監視対象のアプリケーション300と一致するかを確認する(ST511)。一致すれば(ST511:YES)、当該エントリの実行関数を保存関数リストに追加し(ST513)、さらに、当該エントリのデータアドレスを記録する(ST514)。一致しなければ(ST512:NO)、次に、当該エントリの実行開始時刻が監視対象アプリケーション300の実行時間内かどうかを確認する(ST515)。
この確認方法としては、監視対象アプリケーション300の実行開始時刻以上、実行終了時刻以内に当該エントリの実行開始時刻が含まれているかを確認する。
実行時間内でなければ(ST516:YES)、当該エントリの実行関数を保存関数リストに追加し(ST513)、当該エントリのデータアドレスを記録しておく(ST514)。
一致しなければ(ST516:NO)、ST514にてすでに記録されているデータアドレスと一致するかどうかを確認する(ST517)。
一致すれば(ST518:YES)、当該エントリの実行関数を保存関数リストに追加し(ST513)、当該エントリのデータアドレスを一時的に記録しておく(ST514)。
一致しなければ(ST518:NO)、関数実行履歴416にエントリが残っているか確認する(ST519)。
残っていれば(ST520:YES)、ST510から処理を繰り返す。
残っていなければ(ST520:NO)、保存関数リスト作成工程を終了する。
【0030】
作成された保存関数リストは、保存関数リスト記憶部422に記憶される(保存関数リスト記憶工程、ST320)。
【0031】
次に、ST410において不使用関数リスト作成工程が行われ、不使用関数リスト作成部431にて不使用関数リスト433が作成される。
これは、保存関数リストとOSイメージファイル200とが参照されて、OSイメージファイル中の関数で保存関数リストに挙がっていない関数を抽出したリストが不使用関数リスト433として作成される。
このとき、不使用関数リスト作成部431は、OSイメージファイル200からOS関数群に含まれる総ての関数の関数名、当該関数の開始アドレスおよび終了アドレスを取得し、一時保存する。
そして、保存関数リストを参照して、保存関数リストに挙がっている関数を前記一時保存ファイルから削除することにより、不使用関数リスト433を作成する。
【0032】
作成された不使用関数リスト433は、不使用関数リスト記憶部432に記憶される(不使用関数リスト記憶工程、ST420)。
【0033】
不使用関数リスト433が作成された後、ST430において、不使用関数削除工程(ST430)が行われ、不使用関数削除部434によりOSイメージファイル200から不使用関数が削除される。
図9に、不使用関数削除工程(ST430)の手順を示す。
不使用関数を削除するにあたって、まず、不使用関数リスト433にエントリされている削除対象となる不使用関数のアドレスを取得する(ST610)。
このとき、不使用関数削除部434は、不使用関数リスト433にエントリされている関数のうち、開始アドレスの大きいものから順に削除対象として取得する。
そして、当該不使用関数をOSイメージファイル200から削除する(ST611)。
次に、この削除した不使用関数のみが参照するデータを削除する(ST612)。
すなわち、この不使用関数しかアクセスしない変数が存在すればその変数を削除する。
次に、OSファイルに残っている関数が利用している参照アドレスから、先ほど削除した不使用関数のサイズ分だけ値を引く(ST613)。
そして、不使用関数リスト433にエントリされた不使用関数が総てOSイメージファイル200から削除されるまでST610からST613を繰り返す(ST614)。
【0034】
以上により、OSイメージから不使用の関数を削除し、OSイメージの適切な縮小が完了する。
【0035】
このような本実施形態によれば、次の効果を奏することができる。
(1)実行履歴管理工程(ST210−ST240)は、アプリケーション300の動作中に実行されたOSを関数単位でモニターして記録し、不使用関数処理工程(ST410−ST430)における不使用関数の削除にあたっても関数単位で不使用関数をOSイメージから削除する。
これにより、OSイメージのうち不使用の部分を削除して効果的にOSイメージのサイズを縮小することができる。
従来は、OSのファイルごとに使用頻度や重要性を区別し、使用頻度や重要性の低いファイルは外部メディアに保存させることでコンピュータに保持するOSサイズを縮小させるとしていたが、使用量の多寡の差はあってもファイル単位でみれば一アプリケーション300の動作中に総てのファイルが使用されるので、現実的にはすべてのOSファイルをコンピュータにロードすることになり、実質的にコンピュータ容量に与える負荷に対してはほとんど効果を奏していなかった。
この点、本実施形態では、関数単位で要不要を判断し、不使用の関数は削除するので、実効性をもってOSイメージのサイズを縮小することができる。
【0036】
(2)実行履歴管理工程(ST210−ST240)は、縮小対象としているOSだけでなくアプリケーション300にもプローブ412を組み込み、アプリケーション動作中に使用された関数については関数実行履歴のテーブル416にエントリすることとしている。
これにより、アプリケーション動作に必要な関数については確実に保存し、不用意に削除するといった不都合を回避することができる。
従来は、縮小対象のプログラムにのみプローブを組み込んだうえで特定のデータを走らせてプログラム中の実行履歴を取得していたが、このように特定データを与えたときの実行履歴を見るだけでは広汎な処理を行うOSの真に必要な部分を正確に判断することはできない。
この点、本実施形態では、アプリケーション300の動作とOS関数群の動作とを関連させるので、必要な関数を正確に判断して確実に保存関数として保存させることができる。
【0037】
(3)不使用関数の削除にあたっては、不使用関数リスト433のアドレスを参照してハードディスク上のOSイメージから不使用関数を削除するので、ソースプログラム(ソースコード)に戻ってプログラムを編集しなくてもハードディスク上のバイナリファイルを自動的に縮小することができる。また、不使用関数のうちアドレスの大きいものから削除するとしているので参照アドレスの書き換え動作をできるかぎり少なくすることができる。
【産業上の利用可能性】
【0038】
本発明は、OSのサイズ縮小化に利用できる。そして、たとえば、特定のアプリケーションの実行に最適化されたコンピュータシステムのOSや、搭載されている物理メモリが限られている組み込みシステムに特に貢献できる。
【図面の簡単な説明】
【0039】
【図1】OSイメージ縮小プログラムを実行させるコンピュータの構成を示す図。
【図2】OSイメージ縮小プログラムの構成を示す図。
【図3】アプリケーション実行履歴のテーブルを示す図。
【図4】関数実行履歴のテーブルを示す図。
【図5】不使用関数リストの構成例を示す図。
【図6】OSイメージ縮小プログラムの動作手順を示すフローチャート。
【図7】必要ファイルがメインメモリにロードされた状態を示す図。
【図8】保存関数リスト作成工程の手順の一例を示す図。
【図9】不使用関数削除工程の手順を示す図。
【符号の説明】
【0040】
100…コンピュータ、110…中央演算装置(CPU)、120…メインメモリ、130 ハードディスク、140…インターフェース、150…入出力手段、200…OSイメージファイル、210…OSカーネル、300…アプリケーション、300…アプリケーション、400…イメージ縮小プログラム、410…実行履歴管理部、411…プローブ挿入部、412…プローブ、413…実行履歴作成部、414…実行履歴記憶部、415…アプリケーション実行履歴、416…関数実行履歴、420…保存関数管理部、421…保存関数リスト作成部、422…保存関数リスト記憶部、430…不使用関数処理部、431…不使用関数リスト作成部、432…不使用関数リスト記憶部、433…不使用関数リスト、434…不使用関数削除部。
【特許請求の範囲】
【請求項1】
コンピュータに格納された少なくとも一つのOSイメージのサイズを縮小するOSイメージ縮小方法であって、
前記コンピュータに所定のアプリケーションプログラムを所定時間動作させるとともに前記アプリケーションプログラムの動作中に実行された関数をモニターして関数の実行履歴を管理する実行履歴管理工程と、
前記実行履歴管理工程にて管理された実行履歴を参照して前記OSイメージに含まれる関数のうち前記実行履歴にある関数を保存関数として管理する保存関数管理工程と、
前記OSイメージに含まれる関数のうち前記保存関数管理工程で管理されない関数を不使用関数として前記OSイメージから削除処理する不使用関数処理工程と、を備える
ことを特徴とするOSイメージ縮小方法。
【請求項2】
請求項1に記載のOSイメージ縮小方法において、
前記実行履歴管理工程は、
前記OSイメージおよび前記所定のアプリケーションプログラムに動作測定のためのプローブを組み込むプローブ挿入工程と、
前記プローブによって得られる情報から実行履歴を作成する実行履歴作成工程と、
前記実行履歴作成工程にて作成された実行履歴を記憶する実行履歴記憶工程と、を備える
ことを特徴とするOSイメージ縮小方法。
【請求項3】
請求項1または請求項2に記載のOSイメージ縮小方法において、
前記保存関数管理工程は、
前記実行履歴管理工程にて作成された実行履歴に記録された実行関数を保存関数として抽出した保存関数リストを作成する保存関数リスト作成工程と、
前記保存関数リスト作成工程にて作成された前記保存関数リストを記憶する保存関数リスト記憶工程と、を備える
ことを特徴とするOSイメージ縮小方法。
【請求項4】
請求項1から請求項3のいずれかに記載のOSイメージ縮小方法において、
前記不使用関数処理工程は、
前記OSイメージに含まれる関数のうち前記保存関数管理工程にて管理されない関数を不使用関数として抽出した不使用関数リストを作成する不使用関数リスト作成工程と、
前記不使用関数リスト作成工程にて作成された不使用関数リストを記憶する不使用関数リスト記憶工程と、
前記不使用関数リストにある関数を前記OSイメージから削除する不使用関数削除工程と、を備える
ことを特徴とするOSイメージ縮小方法。
【請求項5】
請求項1から請求項4のいずれかに記載のOSイメージ縮小方法において、
前記不使用関数処理工程は、
前記不使用関数のみが参照するデータが存在する場合には、前記データを前記OSイメージから削除する
ことを特徴とするOSイメージ縮小方法。
【請求項6】
少なくとも一つのOSイメージを有するコンピュータに請求項1から請求項5のいずれかに記載のOSイメージ縮小方法の各工程を実行させる
ことを特徴とするOSイメージ縮小プログラム。
【請求項7】
請求項6に記載のOSイメージ縮小プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項1】
コンピュータに格納された少なくとも一つのOSイメージのサイズを縮小するOSイメージ縮小方法であって、
前記コンピュータに所定のアプリケーションプログラムを所定時間動作させるとともに前記アプリケーションプログラムの動作中に実行された関数をモニターして関数の実行履歴を管理する実行履歴管理工程と、
前記実行履歴管理工程にて管理された実行履歴を参照して前記OSイメージに含まれる関数のうち前記実行履歴にある関数を保存関数として管理する保存関数管理工程と、
前記OSイメージに含まれる関数のうち前記保存関数管理工程で管理されない関数を不使用関数として前記OSイメージから削除処理する不使用関数処理工程と、を備える
ことを特徴とするOSイメージ縮小方法。
【請求項2】
請求項1に記載のOSイメージ縮小方法において、
前記実行履歴管理工程は、
前記OSイメージおよび前記所定のアプリケーションプログラムに動作測定のためのプローブを組み込むプローブ挿入工程と、
前記プローブによって得られる情報から実行履歴を作成する実行履歴作成工程と、
前記実行履歴作成工程にて作成された実行履歴を記憶する実行履歴記憶工程と、を備える
ことを特徴とするOSイメージ縮小方法。
【請求項3】
請求項1または請求項2に記載のOSイメージ縮小方法において、
前記保存関数管理工程は、
前記実行履歴管理工程にて作成された実行履歴に記録された実行関数を保存関数として抽出した保存関数リストを作成する保存関数リスト作成工程と、
前記保存関数リスト作成工程にて作成された前記保存関数リストを記憶する保存関数リスト記憶工程と、を備える
ことを特徴とするOSイメージ縮小方法。
【請求項4】
請求項1から請求項3のいずれかに記載のOSイメージ縮小方法において、
前記不使用関数処理工程は、
前記OSイメージに含まれる関数のうち前記保存関数管理工程にて管理されない関数を不使用関数として抽出した不使用関数リストを作成する不使用関数リスト作成工程と、
前記不使用関数リスト作成工程にて作成された不使用関数リストを記憶する不使用関数リスト記憶工程と、
前記不使用関数リストにある関数を前記OSイメージから削除する不使用関数削除工程と、を備える
ことを特徴とするOSイメージ縮小方法。
【請求項5】
請求項1から請求項4のいずれかに記載のOSイメージ縮小方法において、
前記不使用関数処理工程は、
前記不使用関数のみが参照するデータが存在する場合には、前記データを前記OSイメージから削除する
ことを特徴とするOSイメージ縮小方法。
【請求項6】
少なくとも一つのOSイメージを有するコンピュータに請求項1から請求項5のいずれかに記載のOSイメージ縮小方法の各工程を実行させる
ことを特徴とするOSイメージ縮小プログラム。
【請求項7】
請求項6に記載のOSイメージ縮小プログラムを記録したコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【公開番号】特開2009−199214(P2009−199214A)
【公開日】平成21年9月3日(2009.9.3)
【国際特許分類】
【出願番号】特願2008−38545(P2008−38545)
【出願日】平成20年2月20日(2008.2.20)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成21年9月3日(2009.9.3)
【国際特許分類】
【出願日】平成20年2月20日(2008.2.20)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]