(57)【要約】【課題】ユーザの利用状況に応じてソフトウェアを最適化する情報処理装置、情報処理装置の最適化方法及びプログラムを提供すること。【解決手段】複数のＯＳ１，ＯＳ２が独立に動作可能な情報処理装置１０において、第２のオペレーティングシステムで実行されるソフトウェア２の利用状況情報３２を記憶した利用状況情報記憶手段１４と、利用状況情報３２を参照する、第１のオペレーティングシステムで実行される利用状況情報参照手段２２と、利用状況情報３２に基づき第２のオペレーティングシステムを最適化する、第１のオペレーティングシステムで実行されるＯＳ最適化手段２３と、を有することを特徴とする。【選択図】図３
2008269094.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムが独立に動作可能な情報処理装置において、
第２のオペレーティングシステムで実行されるソフトウェアの利用状況情報を記憶した利用状況情報記憶手段と、
前記利用状況情報を参照する、第１のオペレーティングシステムで実行される利用状況情報参照手段と、
前記利用状況情報に基づき前記第２のオペレーティングシステムを最適化する、前記第１のオペレーティングシステムで実行されるＯＳ最適化手段と、
を有することを特徴とする情報処理装置。
【請求項２】
複数のオペレーティングシステムが独立に動作可能な情報処理装置において、
第２のオペレーティングシステムで実行されるソフトウェアの利用状況情報を記憶した利用状況情報記憶手段と、
第１のオペレーティングシステムに最適化を要求する、前記第２のオペレーティングシステムで実行される最適化要求手段と、
前記第２のオペレーティングシステムを最適化する、前記第１のオペレーティングシステムで実行されるＯＳ最適化手段と、
を有することを特徴とする情報処理装置。
【請求項３】
前記ＯＳ最適化手段は、利用頻度が所定以下のソフトウェアを停止する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
複数のオペレーティングシステムが独立に動作可能な情報処理装置の最適化方法において、
第１のオペレーティングシステムで実行される利用状況情報参照手段が、第２のオペレーティングシステムで実行されるソフトウェアの利用状況情報を記憶した利用状況情報記憶手段を参照するステップと、
前記第１のオペレーティングシステムで実行されるＯＳ最適化手段が、前記利用状況情報に基づき前記第２のオペレーティングシステムを最適化するステップと、
を有することを特徴とする情報処理装置の最適化方法。
【請求項５】
複数のオペレーティングシステムが独立に動作可能なコンピュータを、
第２のオペレーティングシステムで実行されるソフトウェアの利用状況情報を記憶した利用状況情報記憶手段を参照する、第１のオペレーティングシステムで実行される利用状況情報参照手段と、
前記利用状況情報に基づき前記第２のオペレーティングシステムを最適化する、前記第１のオペレーティングシステムで実行されるＯＳ最適化手段と、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの最適化が可能な情報処理装置等に関し、特に、利用状況に応じてソフトウェアを最適化する情報処理装置、情報処理装置の最適化方法及びプログラムに関する。
【背景技術】
【０００２】
アプリケーションプログラムは限られた範囲のプラットフォーム上で動作する一方、多様なユーザニーズに対応するため、１つのプラットフォームでアプリケーションプログラムを含め多くのソフトウェア的な機能が実行可能となっている。プラットフォームは、ユーザの操作や利用されるハードウェアに応じて適切なソフトウェアを起動しその機能を提供するが、多くの場合、実行可能なソフトウェア又はその機能の全てが使用されることはない。そこで、アプリケーションプログラムに応じてコンピュータが最適化されるよう、１つのプラットフォームにおいて単一の命令セットでなく多数の命令セットを付加できる再構成可能なコンピュータが提案されている（例えば、特許文献１参照。）。特許文献１記載のコンピュータでは、アプリケーションプログラムを処理するコンピュータの能力を最適化するプログラマブルロジックによりコンピュータを再構成することができる。
【特許文献１】特表２００２−５３０７８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１記載のコンピュータは、プログラマブルロジックがメモリやCPUへの入出力回路を再構成するものであって、ソフトウェアの再構成については考慮されていない。アプリケーションプログラムを実際に実行した場合にはメモリやCPUの資源を再構成できるが、この再構成はハードウェアの拡張に等しいものであって、ユーザの利用状況に応じてソフトウェア資源までを最適化したものではない。このため、例えば、利用頻度の高いソフトウェアの処理効率を向上させたり、低いソフトウェアの優先度を下げるなどのソフトウェア面の配慮がなく、コンピュータの最適化としては不十分である。
【０００４】
本発明は、上記課題に鑑み、ユーザの利用状況に応じてソフトウェアを最適化する情報処理装置、情報処理装置の最適化方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題に鑑み、本発明は、複数のＯＳが独立に動作可能な情報処理装置において、第２のオペレーティングシステムで実行されるソフトウェアの利用状況情報を記憶した利用状況情報記憶手段と、利用状況情報を参照する、第１のオペレーティングシステムで実行される利用状況情報参照手段と、利用状況情報に基づき第２のオペレーティングシステムを最適化する、第１のオペレーティングシステムで実行されるＯＳ最適化手段と、を有することを特徴とする。
【０００６】
本発明によれば、第１のＯＳが利用状況情報を参照して第２のＯＳを最適化するので、利用頻度やソフトウェアの特性に応じてＯＳレベルで互いにＯＳを最適化することができる。
【０００７】
また、本発明によれば、複数のＯＳが独立に動作可能な情報処理装置において、第２のオペレーティングシステムで実行されるソフトウェアの利用状況情報を記憶した利用状況情報記憶手段と、第１のオペレーティングシステムに最適化を要求する、第２のオペレーティングシステムで実行される最適化要求手段と、第２のオペレーティングシステムを最適化する、第１のオペレーティングシステムで実行されるＯＳ最適化手段と、を有することを特徴とする。
【０００８】
本発明によれば、第２のＯＳが利用状況情報を参照して第１のＯＳに最適化要求するので、タイミングよく、利用頻度やソフトウェアの特性に応じてＯＳレベルで互いにＯＳを最適化することができる。
【０００９】
また、本発明の一形態において、ＯＳ最適化手段は、利用頻度が所定以下のソフトウェアを停止する、ことを特徴とする。
【００１０】
本発明によれば、利用頻度の低いソフトウェアを停止するので、発熱や消費電力を低減できる。
【発明の効果】
【００１１】
ユーザの利用状況に応じてソフトウェアを最適化する情報処理装置、情報処理装置の最適化方法及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための最良の形態について図面を参照しながら説明する。
【実施例１】
【００１３】
図１は、情報処理装置１０のハードウェア構成図を示す。本実施形態の情報処理装置１０は、１台で複数のＯＳを動作可能としユーザの利用状況に応じて、ＯＳレベルで機能の再構築を行うことで、ユーザのよく利用する機能に資源を割り振ったり、利用されない機能への資源の割り当てを停止するなどして、情報処理装置１０を最適化する。
【００１４】
情報処理装置１０は、プログラムを実行するＣＰＵ１１、プログラム実行の作業領域となりまた一時的にデータを記憶するＲＡＭ１２、ブートプログラムやＢＩＯＳを記憶するＲＯＭ１３、プログラムやファイルを記憶するフラッシュメモリやハードディスク装置１４、キーボードやマウスなどの入力装置１５、ＤＶＤ（Digital  Versatile  Disk）等の記憶媒体に情報を読み書きするドライブ装置１６、ＧＵＩなどユーザインターフェイスをディスプレイに表示する表示制御装置１７、がバスにより接続されている。
【００１５】
本実施形態では複数のＯＳ１、ＯＳ２を並行に動作するため、特にＣＰＵ１１は、複数のＣＰＵを備えたマルチＣＰＵ又は演算ユニットを複数設けたマルチコア型である。ＣＰＵ１１は、少なくとも２つのＯＳを同時に互いに独立に動作させ、一方のＯＳが他方のＯＳを再構築できるので、互いにＯＳを停止させることなくＯＳレベルの最適化が可能となる。
【００１６】
図２は、情報処理装置１０の機能ブロック図を示す。情報処理装置１０は、ハードウェア（以下、ＨＷという）２０として提供されるいくつかの機能Ｈ（機能Ｈ１、Ｈ２、Ｈ３…）を有し、ＨＷ２０上で２つの異なるオペレーティングシステム（以下、ＯＳという）１及びＯＳ２が独立かつ並行に動作する。ＯＳ１は、例えばWindows（登録商標）、ＯＳ２は、例えばLINUX（登録商標）である。
【００１７】
また、ＯＳ１はソフトウェア１としていくつかの機能Ｓ（機能１Ａ、１Ｂ、１Ｃ…）を提供し、ＯＳ２はソフトウェア２としていくつかの機能Ｓ（機能２Ａ、２Ｂ、２Ｃ…）を提供する。これらソフトウェア１、ソフトウェア２は、ＣＰＵ１１がオブジェクトコードを実行することで実現され、ソフトウェア１とソフトウェア２が同じ機能であっても、多くの場合ソースプログラムから異なる。
【００１８】
一例を挙げれば、機能１Ａ、２Ａはアプリケーションプログラム、機能１Ｂ、２Ｂはライブラリ、機能１Ｃ、２Ｃはデバイスドライバである。また、ＨＷ２０の機能Ｈ１は、例えば、表示制御装置１７，機能Ｈ２はドライブ装置１６、機能Ｈ３はハードディスク装置１４、等であるが、当然ながらＣＰＵ１１、ＲＡＭ１２及び入力装置１５もＨＷ２０に含まれる。
【００１９】
ソフトウェア１の各機能ＳとＨＷ２０の各機能Ｈは１対１に対応するものではなく、複数のアプリケーションプログラム（例えば、ナビゲーションやメディアプレーヤ（機能１Ａ））が表示制御装置１７（機能Ｈ１）を共有するし、ほぼ全てのソフトウェア１がハードディスク装置１４（機能Ｈ３）を共有する。
【００２０】
このような共有は、例えば機能１Ｃ、２Ｃの所定のデバイスドライバ（以下、このデバイスドライバをＯＳ制御ドライバという）により実現される。ＯＳ制御ドライバについて簡単に説明する。
【００２１】
電源オンされると、ＣＰＵ１１は、ＲＯＭ１３から起動プログラムやＢＩＯＳを読み出し、ＯＳ制御ドライバを起動し、ついで、予め定められたＯＳを自動的に起動する。また、ＯＳに次いで自動的に起動するよう設定されたＡＰがあれば、予め定めたＯＳ（ＯＳ１又はＯＳ２）上で当該ＡＰを実行する。
【００２２】
ＯＳ制御ドライバは、運転者が存在を意識することのない常駐型のソフトウェアで、ＯＳ１、２に対しＨＷ２０を論理的（時間的にも）に分割し割り当てる。ＯＳ制御ドライバは、この論理分割を利用して複数の仮想的な計算機の実行環境を作り、それらの実行環境の上で複数のＯＳ１、ＯＳ２を動作させる。仮想的な実行環境の制御に必要なＨＷ２０はＯＳ制御ドライバによりＯＳ１又はＯＳ２から隠蔽されている。ＯＳ１又はＯＳ２はシステムコールを発行することで各種のサービスをＯＳ制御ドライバに要求することができる。
【００２３】
ＯＳ制御ドライバはＯＳ１，ＯＳ２が通信するための手段を備え、例えば、実行環境間の割り込み（イベント発生）、メッセージ送受信、共有メモリ等を提供する。また、ＯＳ制御ドライバは、ＯＳ１からＯＳ２が使用している物理メモリをアクセス可能としたり、ＯＳ２の所定のメモリの内容をＯＳ１にコピーするなど、ＯＳ間での情報交換を可能とする。したがって、ＯＳ制御ドライバにより、ＯＳ１はＯＳ２の次述する利用状況情報を参照し、ＯＳ２のソフトウェア２を最適化することができ、ＯＳ２はＯＳ１の利用状況情報を参照し、ＯＳ１のソフトウェアを最適化することができる。
【００２４】
図３は、ＯＳの最適化の概略を説明する説明図を示す。ＯＳ１は、ＣＰＵ１１がプログラムを実行することで実現される利用頻度集計手段２１、利用状況情報参照手段２２、ＯＳ最適化手段２３、コンパイル手段２４を有し、ＯＳ２はＣＰＵ１１がプログラムを実行することで実現される最適化要求手段２５を有する。プログラムは、ハードディスク装置１４に記憶されており、各ＯＳが図３の利用頻度集計手段２１等を有するが、ここではＯＳ１を対象にして説明する。
【００２５】
利用頻度集計手段２１は、自身のＯＳ（図３ではＯＳ１）におけるソフトウェア１の各機能Ｓの利用頻度を集計する。ソフトウェア１は、例えばアプリケーションプログラム、ライブラリ、デバイスドライバ等であるので、利用頻度集計手段２１は、アプリケーションプログラム毎、ライブラリ毎、デバイスドライバ毎に利用頻度を集計する。
【００２６】
車両の乗員が操作してソフトウェア１を利用したり、何らかのＨＷ２０を使用して自動的にソフトウェア１が利用されると、利用頻度集計手段２１がそれを検知して利用回数をカウントアップする。利用頻度集計手段２１は、毎日、ソフトウェア１の利用の有無を記憶しておき、週毎又は月毎の利用頻度を集計する。このような集計により、ＯＳ毎にソフトウェアの利用状況情報を記憶しておくことができる。
【００２７】
図４は、利用状況情報の一例を示す図である。利用状況情報は、アプリケーションプログラム、ライブラリ、デバイスドライバ毎にハッシュ値などのＩＤに対応づけて利用頻度を記憶している。例えば、「１１ＡＡ」のアプリケーションプログラムは利用頻度が週に２回、月に５回であるが、「１２ＢＢ」のアプリケーションプログラムは利用頻度が週に０回、月に１回となっている。なお、利用状況情報は、運転者又は乗員などによって異なるものであるので、利用状況情報は運転者毎、乗員の組み合わせ毎、に複数保持することが好適である。
【００２８】
ＯＳ１利用状況情報３１，ＯＳ１ソースコード４１、ＯＳ１オブジェクトコード５１、ＯＳ２利用状況情報３２，ＯＳ２ソースコード４２、ＯＳ２オブジェクトコード５２、はハードディスク装置１４に記憶されている。このうち、ＯＳ１ソースコード４１、ＯＳ２ソースコード４２については、最適化の際に必要となるので常に車載する必要はなく、サーバからダウンロードしてもよい。
【００２９】
図３に戻り、利用状況情報参照手段２２は、他のＯＳ（図３ではＯＳ２）のＯＳ２利用状況情報３２を参照してＯＳ最適化手段２３に利用状況情報を送出する。利用状況情報の参照は、ＯＳ２のソフトウェア２を最適化するためであるので、例えば、週に１回程度実行してもよいし、毎日実行してもよい。
【００３０】
そして、ＯＳ最適化手段２３は、利用状況情報に基づき最適化するソフトウェア２の機能２Ａ〜２Ｃ、すなわち、アプリケーションプログラム、ライブラリ、デバイスドライバを決定する。最適化は、利用頻度が所定以上変動した機能Ｓや、利用頻度が他の機能Ｓよりも高い機能Ｓ又は低い機能Ｓを対象に行う。
【００３１】
例えば、ＯＳ最適化手段２３は、利用頻度の高い順に、アプリケーションプログラムの上位５個、ライブラリの上位５個、デバイスドライバの上位５個というように、ＯＳ２にて最適化対象にする機能Ｓを決定する。また、アプリケーションプログラムはよく使うが、ライブラリはあまり使わないといった利用頻度の場合には、アプリケーションプログラムをライブラリよりも多く最適化対象としてもよい。また、アプリケーションプログラム毎、ライブラリ毎、デバイスドライバ毎に、それぞれ閾値を定めておき、閾値以上の利用頻度の機能Ｓを最適化対象としてもよい。
【００３２】
また、利用頻度の低い機能Ｓについては、未使用の機能Ｓや、資源を開放すべき観点から他の機能Ｓよりも相対的に利用頻度が下がった機能Ｓが最適化対象となる。
【００３３】
ＯＳ最適化手段２３は最適化対象とするソフトウェア２を決定すると、そのソフトウェア２をコンパイル手段２４に通知する。コンパイル手段２４は、ＯＳ２で実行できるオブジェクトコードをＯＳ１上で生成するいわゆるクロスコンパイラである。
【００３４】
また、ＯＳ最適化手段２３は、最適化対象のソフトウェア２をコンパイル手段２４に通知する際、コンパイラオプションを指定する。コンパイラオプションには種々のものがあるが、本実施形態では主に最適化のためのコンパイラオプションを指定する。例えば、
できるだけ小さいオブジェクトコードを生成するコンパイラオプション、できるだけ高速のオブジェクトコードを生成するコンパイラオプション、初期状態で確保するメモリ量を指定するコンパイラオプション、ＣＰＵ１１の特定の命令セットを積極的に利用してオブジェクトコードを生成するコンパイラオプション、等である。このように、コンパイルする時点で、利用頻度に応じて最適なオブジェクトコードを生成することで、ＯＳレベルで情報処理装置１０をそのユーザに最適化することができる。
【００３５】
コンパイル手段２４は、最適化対象とされたソフトウェア２のソースコードをＯＳ２ソース４２から読み出し、指定されたコンパイラオプションによりコンパイルする。ＯＳ最適化手段２３は、コンパイルにより生成されたオブジェクトコードをＯＳ２オブジェクトコード５２に記憶する。したがって、以降ＯＳ２は、利用状況情報に基づき最適化されたソフトウェア２を実行することができる。
【００３６】
ところで、ＯＳレベルの更新は最適化対象となったソフトウェアがＲＡＭ１２等に展開されていないこと（実行されていないこと）が必要であるが、アプリケーションプログラム、ライブラリ、デバイスドライバであれば多くの場合、これらは停止させることができるため、ＯＳ２を起動したまま更新することができる。しかしながら、メモリ監視やタイマなどカーネルは常に起動しているため、ＯＳ２を起動したまま最適化することが困難である。このため、ＯＳ最適化手段２３は、最適化対象がカーネルに含まれる機能Ｓの場合、いったんＯＳ２を終了してカーネルを最適化した後再起動する。したがって、本実施形態の情報処理装置１０によれば、ＯＳ２のカーネルであっても最適化することができる。
【００３７】
また、最適化するＯＳ１がＯＳ２の利用状況情報を読み出すのでなく、最適化されるＯＳ２がＯＳ１に最適化を要求してもよい。最適化要求手段２５は、ＯＳ最適化手段２３と同様に、ＯＳ２利用状況情報３２に基づき最適化するソフトウェア２の最適化対象を決定し、ＯＳ最適化手段２３に最適化対象の最適化を要求する。なお、要求後の処理は同じである。このように、最適化されるＯＳが最適化すべきことを検出すれば、よりタイミングよくＯＳを最適化できる。
【００３８】
以上の構成を用いて、ＯＳ１がＯＳ２を最適化する手順を図５のフローチャート図に基づき説明する。ソフトウェアの最適化は、予め定められたサイクル（毎日、毎週、毎月）で行ってもよいし、利用状況情報が変動した場合に最適化要求手段２５がそれを検出して、ＯＳ１に最適化を要求する形で実行してもよい。図５では、予め定められたサイクルで最適化する処理を示す。
【００３９】
図５では、ＯＳ２上でアプリケーションプログラムとしてブラウザとエディタが利用されているものとし、これらのソフトウェア２の最適化を実行する。本実施形態では、ブラウザの利用頻度は最適化が必要な程度に低く、エディタは未使用であるとする。
【００４０】
まず、ＯＳ１の利用状況情報参照手段２２は、ＯＳ２利用状況情報３２を参照する（Ｓ１０）。そして、ＯＳ最適化手段２３は、最適化が必要か否かを判定する（Ｓ２０）。ブラウザは利用頻度が低く、また、エディタは使用されていないので、ＯＳ最適化手段２３は、最適化が必要であると判定する。
【００４１】
最適化する場合、ＯＳ最適化手段２３はＯＳ２に処理状況を通知するよう要求し、処理状況に基づき最適化対象のブラウザとエディタが停止状態か否か、停止状態でなければ停止可能か否かを判定する（Ｓ４０）。なお、最適化対象が複数の場合は、１つずつ順に最適化する。
【００４２】
停止状態、又は、停止可能の場合（Ｓ４０のＹｅｓ）、ＯＳ最適化手段２３はＯＳ２を最適化する（Ｓ５０）。
【００４３】
まず、ブラウザの最適化について説明する。ＯＳ最適化手段２３は、ブラウザの利用頻度が低いので、例えば「できるだけ小さいオブジェクトコードを生成する」、「最低限の機能のみオブジェクトコードを生成する」などのコンパイラオプションをコンパイル手段２４に指示する。コンパイル手段２４は、ブラウザのソースコードをＯＳ２ソースコード４２から読み出し、このようなコンパイラオプションによりオブジェクトコードを生成する。そして、ＯＳ最適化手段２３は最適化されたブラウザのオブジェクトコードをＯＳ２オブジェクトコード５２に記憶させる。
【００４４】
エディタの最適化について説明する。ＯＳ最適化手段２３は、エディタが未使用であるので、実行されていれば停止し、ＯＳ２の起動時に自動的に起動する設定になっていれば自動的に起動しないように設定する。また、エディタが常駐型である場合、常駐しないように設定する。設定は、コンパイルによって行ってもよいし、例えば、設定内容を最適化したメタデータを生成してもよい。ＯＳ最適化手段２３は最適化されたエディタのオブジェクトコード又はメタデータをＯＳ２オブジェクトコード５２に記憶させる。
【００４５】
ついで、ＯＳ最適化手段２３は、最適化の必要なソフトウェア（ブラウザ、エディタ）の最適化が全て終了したか否かを判定し、終了していなければＯＳ２の処理状況の解析から繰り返す。
【００４６】
最適化の必要なソフトウェアの最適化が全て終了した場合（Ｓ６０のＹｅｓ）、ＯＳ最適化手段２３は、ＯＳ２を停止させ残機能を最適化する（Ｓ７０）。すなわち、ＯＳ２のカーネルについてはＯＳ２を停止させないと最適化が困難なので、ＯＳ最適化手段２３はＯＳ２に停止を要求し、また、ＯＳ２のカーネル全体を新たにコンパイルしたカーネルの複製を生成した後、次回のＯＳ２の起動時に新たに生成したカーネルが起動されるように設定して、ＯＳ２を再起動する。これにより、ＯＳ２のカーネルを最適化することができた。
【００４７】
利用頻度の低いソフトウェア２は、オブジェクトコードを小さくするなどの方法により、例えば最低限、実行に必要な構成とすることで実行可能な状態を保ちつつ、ハードディスク装置１４の容量を節約することができる。また、未使用のソフトウェア２については、停止させ、かつ、可能な限り実行することのないように設定することで、発熱や消費電力を低減することができる。なお、エディタのオブジェクトコードは削除していないので、ユーザが例えばエディタを起動する操作をした場合、ＯＳ２はエディタを起動する。
【００４８】
続いて、ＯＳ２がＯＳ１を最適化する手順を図６のフローチャート図に基づき説明する。最適化の手順はＯＳが異なっても同じなので、ステップＳ１４０以降の、利用状況情報に応じた最適化について説明する。ＯＳ１上では、アプリケーションプログラムとしてナビゲーションとメディアプレイヤーが利用されているとして、これらのソフトウェア１の最適化を実行する。また、本実施形態では、ナビゲーションの利用頻度は高頻度であり、メディアプレイヤーはほぼ定期的に音声出力のみが利用されているものとする。図６では、ナビゲーションの最適化が必要で、メディアプレイヤーは最適化が必要でないとする。
【００４９】
最適化する場合、ＯＳ最適化手段２３はＯＳ２に処理状況を通知するよう要求し、処理状況に基づき最適化対象のナビゲーションとメディアプレイヤーが停止状態か否か、停止状態でなければ停止可能か否かを判定する（Ｓ１４０）。なお、最適化対象が複数の場合は、１つずつ順に最適化する。
【００５０】
停止状態、又は、停止可能の場合（Ｓ１４０のＹｅｓ）、ＯＳ最適化手段２３はＯＳ２を最適化する（Ｓ１５０）。
【００５１】
ナビゲーションの最適化について説明する。ＯＳ最適化手段２３は、ナビゲーションの利用頻度が高いので、例えば「起動時に割り当てるメモリの初期値を最大にする」、「全ての関数のオブジェクトコードを生成する」、などのコンパイラオプションをコンパイル手段２４に指示する。
【００５２】
コンパイル手段２４は、ナビゲーションのソースコードをＯＳ１ソースコード４１から読み出し、このようなコンパイラオプションによりオブジェクトコードを生成する。そして、ＯＳ最適化手段２３は最適化されたブラウザのオブジェクトコードをＯＳ１オブジェクトコード５１に記憶させる。
【００５３】
メディアプレイヤーについては最適化を行わない。全てのソフトウェア１の最適化が終了したら（Ｓ１６０のＹｅｓ）、以降は、図５のフローチャート図と同様である。すなわち、ＯＳ最適化手段２３は、ＯＳ１を停止させ残機能（カーネル）を最適化する（Ｓ１７０）。
【００５４】
利用頻度の高いソフトウェア１は、例えば全ての要素を利用できる構成とし、また、資源を最大限割り当てるので、ユーザはいつでも快適にソフトウェア１の機能Ｓを最大限利用することができる。
【００５５】
本実施例によれば、ソフトウェア１，２による機能Ｓの利用状況情報を記憶しておくことで、機能Ｓ毎にユーザの利用頻度を判定し、情報処理装置１０を最適化するので、処理を高速化することができる。停止できる機能ＳについてはＯＳを起動したまま部分的なコンパイルを動的に行うことができ、常に動作しているカーネルについては他方のＯＳを完全に停止して最適化することができる。複数のＯＳを独立して実行可能なので、一方のＯＳが他方のＯＳをＯＳレベルで最適化でき、より詳細な最適化が可能となる。また、不要な機能Ｓは停止するので、発熱や消費電力を低減できる。
【００５６】
また、本実施例では、図４に示したように、機能Ｓ毎（アプリケーションプログラム毎、ライブラリ毎、デバイスドライバ毎）に利用状況情報を記憶した。しかし、例えば、アプリケーションプログラムであれば、機能Ｓの中にいくつかのサブ機能（画像処理、音声処理、特殊ファイルの表示、特殊な関数の演算等）が存在する場合があるので、サブ機能毎に利用状況情報を記憶しておいてもよい。サブ機能毎に最適化することで、各機能Ｓをより最適化しやすくすることができる。
【００５７】
また、機能Ｓ（例えば実行プログラム）でなく、単に情報を記憶したファイルの場合であっても、アプリケーションプログラムが管理する全てのファイルを使用するとは限らないので、これらファイルのアクセス履歴を記憶しておき、アクセスされないファイルについては圧縮してもよい。例えば、使用されないフォントファイル、地図データファイル、音声案内のメッセージ等、文章のテンプレートファイル等を、圧縮して保存しておくことで処理を高速化することができる。
【実施例２】
【００５８】
実施例１ではソフトウェア１、２の利用状況情報に基づき最適化する情報処理装置１０について説明したが、ソフトウェア１，２の特性情報を記憶しておくと、ソフトウェア１，２の特性に応じて情報処理装置１０を最適化することができる。特性情報とは、例えば画像処理、音声処理の有無、負荷の程度、などソフトウェア１，２の特徴をいう。本実施例では、利用頻度に加えさらに特性情報を利用して最適化する情報処理装置１０について説明する。
【００５９】
図７は、本実施例の情報処理装置１０の機能ブロック図を示す。なお、図７において頭２と同一部分には同一の符号を付しその説明は省略する。図７の情報処理装置１０は、次述するソフトウェアの特性情報を検出する特性情報検出手段２６を有する点で図２と異なる。また、図７では、ＯＳ２においてナビゲーション、メディアプレイヤー及びブラウザを実行している。
【００６０】
図８は、本実施例の利用状況情報の一例を示す。図８ではアプリケーションプログラムの特性情報を示した。ここでは、「１１ＡＡ」をナビゲーションと、「１２ＢＢ」をメディアプレイヤーと、「１３ＣＣ」をブラウザと、する。また、利用状況情報に示すように、ナビゲーションとメディアプレイヤーが高頻度で、ブラウザは低頻度とした。また、特性情報は、ナビゲーションが「画像処理：有  音声処理：有  負荷：中  」、メディアプレイヤーが「画像処理：無  音声処理：有  負荷：中」、ブラウザが「画像処理：有  音声処理：無  負荷：高」である。
【００６１】
この特性情報は、特性情報検出手段２６が検出する。特性情報検出手段２６は、例えば、画像処理用のＡＰＩ（Application  Program  Interface）を呼び出すか否か、表示制御装置１７の情報処理量、等により画像処理の有無を判定する。また、特性情報検出手段２６は、例えば、音声処理用のＡＰＩを呼び出すか否か、スピーカのデバイスドライバが使用されるか否か、等により音声処理の有無を判定する。また、負荷については、例えばＣＰＵ負荷率の値を監視して負荷の程度を検出する。特性情報検出手段２６は、ＣＰＵ負荷率のピーク値又は単位時間当たりの積算値等と所定の閾値を比較し、３〜５段階程度に負荷の程度を分類する。
【００６２】
本実施例のＯＳ最適化手段２３は、利用状況情報、特性情報及び負荷情報に基づき、最適化対象にする機能Ｓ及び方法を決定する。例えば、画像処理や音声処理するソフトウェア１，２であれば、画像処理や音声処理が高速に処理されるよう最適化し、負荷の高いソフトウェア１，２については資源を多く割り当てる。
【００６３】
本実施例においてＯＳ１がＯＳ２を最適化する手順は図５のフローチャート図と同様である。また、ＯＳ２がＯＳ１を最適化する手順も同様であるのでこの手順は説明を省略する。
【００６４】
まず、ＯＳ１の利用状況情報参照手段２２は、ＯＳ２利用状況情報３２を参照する（Ｓ１０）。そして、ＯＳ最適化手段２３は、最適化が必要か否かを判定する（Ｓ２０）。ここでは、ナビゲーション、メディアプレイヤー及びブラウザの全てに最適化が必要であると判定する。
【００６５】
最適化する場合、ＯＳ最適化手段２３はＯＳ２に処理状況を通知するよう要求し、処理状況に基づき最適化対象のブラウザとエディタが停止状態か否か、停止状態でなければ停止可能か否かを判定する（Ｓ４０）。なお、最適化対象が複数の場合は、１つずつ順に最適化する。
【００６６】
停止状態、又は、停止可能の場合（Ｓ４０のＹｅｓ）、ＯＳ最適化手段２３はＯＳ２を最適化する（Ｓ５０）。
【００６７】
まず、ナビゲーションの場合、利用頻度が高く、また、画像処理と音声処理のいずれも使用されるので、ＯＳ最適化手段２３は、ナビゲーションを画像処理と音声処理を中心に最適化する。具体的には、例えば、画像処理と音声処理に適した命令セットを積極的に使用してコンパイルするようにコンパイル手段２４に要求し、また、画像処理や音声処理の専用のライブラリを利用するように設定する。利用頻度が高いので、実施例１と同様に「起動時に割り当てるメモリの初期値を最大にする」など資源を割り当てるようにして最適化する。処理負荷の大きい画像処理や音声処理専用の命令セットを利用してコンパイルすることで、処理を高速化することができる。なお、画像処理において、例えば３次元の画像処理を多用する場合は、３次元画像処理用の命令セットを割り当てる。
【００６８】
また、メディアプレイヤーの場合、利用頻度が高く、音声処理は利用されているが画像処理は利用されていないので、ＯＳ最適化手段２３は、メディアプレイヤーを音声処理を中心に最適化し、画像処理等に関するサブ機能を停止する。処理負荷の大きい音声処理専用の命令セットを利用してコンパイルすることで、処理を高速化することができ、また、画像処理等に関するサブ機能を停止するのでオブジェクトコードも小さくなり、さらに処理を高速化し易くできる。
【００６９】
また、ブラウザの場合、利用頻度は低く、また、画像処理が利用されるが音声処理は利用されないので、ＯＳ最適化手段２３は、ブラウザを、画像処理を中心に最適化する。しかしながらブラウザは利用頻度が低いので、ＯＳ最適化手段２３は、音声処理等に関するサブ機能を停止すると共に、画像処理について最低限実行できるよう「できるだけ小さいオブジェクトコードを生成する」等のコンパイラオプションによりコンパイラすることで最適化する。したがって、画像処理専用の命令セットは利用しない。
【００７０】
また、ブラウザの場合、利用頻度は低いが実行時の負荷が大きいので、実行までは資源を割り当てる必要がないが、実行時には多くの資源を割り当てることが好ましい。そこで、実行時には必要に応じて他のアプリケーションプログラムよりも優先的に資源が割り当てられるように設定しておく。利用頻度が低いので最低限のオブジェクトコードのみを生成しておき、実行する際は必要に応じて優先的に資源を割り当てるので、実行前は資源を圧迫することなく実行時は高速に処理できる。
【００７１】
ついで、ＯＳ最適化手段２３は、最適化の必要なソフトウェア（ナビゲーション、メディアプレイヤー、ブラウザ）の最適化が全て終了したか否かを判定し、終了していなければＯＳ２の処理状況の解析から繰り返す。
【００７２】
最適化の必要なソフトウェアの最適化が全て終了した場合（Ｓ６０のＹｅｓ）、ＯＳ最適化手段２３は、ＯＳ２を停止させ残機能を最適化する（Ｓ７０）。すなわち、ＯＳ最適化手段２３はＯＳ２に停止を要求し、また、ＯＳ２のカーネル全体を新たにコンパイルしたカーネルの複製を生成した後、次回のＯＳ２の起動時に新たに生成したカーネルが起動されるように設定して、ＯＳ２を再起動する。これにより、ＯＳ２のカーネルを最適化することができた。
【００７３】
本実施例によれば、実施例１の効果に加え、利用頻度だけでなくさらに各機能の特性情報に基づきより詳細にソフトウェア１，２を最適化することができる。
【図面の簡単な説明】
【００７４】
【図１】情報処理装置のハードウェア構成図である。
【図２】情報処理装置の機能ブロック図である。
【図３】ＯＳの最適化の概略を説明する説明図である。
【図４】利用状況情報の一例を示す図である。
【図５】ＯＳ１がＯＳ２を最適化する手順のフローチャート図である。
【図６】ＯＳ２がＯＳ１を最適化する手順のフローチャート図である。
【図７】情報処理装置の機能ブロック図である（実施例２）。
【図８】利用状況情報の一例を示す図である（実施例２）。
【符号の説明】
【００７５】
１０      情報処理装置
１１      ＣＰＵ
１２      ＲＡＭ
１３      ＲＯＭ
１４      ハードディスク装置
１５      入力装置
１６      ドライブ装置
１７      表示制御装置
２０      ハードウェア（ＨＷ）
２１      利用頻度集計手段
２２      利用状況情報参照手段
２３      ＯＳ最適化手段
２４      コンパイル手段
２５      最適化要求手段
２６      特性情報検出手段
３１      ＯＳ１利用状況情報
３２      ＯＳ２利用状況情報
４１      ＯＳ１ソースコード
４２      ＯＳ２ソースコード
５１      ＯＳ１オブジェクトコード
５２      ＯＳ２オブジェクトコード
【図１】
2008269094.tif 000003
【図２】
2008269094.tif 000004
【図３】
2008269094.tif 000005
【図４】
2008269094.tif 000006
【図５】
2008269094.tif 000007
【図６】
2008269094.tif 000008
【図７】
2008269094.tif 000009
【図８】
2008269094.tif 000010