(58)【調査した分野】(Int.Cl.,DB名)
前記常駐プログラム起動制御部は、リソース使用量が前記特定の値を超える原因となる常駐プログラムが次回のシステム起動時に最初に起動するように、前記起動順序定義を変更する
請求項3記載のプログラム実行システム。
前記プログラム実行部は、リソース使用量が前記特定の値を超える原因となる常駐プログラムの順番を飛ばして次の常駐プログラムを常駐させる動作を、前記起動順序定義に従って繰り返し行う
請求項1記載のプログラム実行システム。
前記常駐プログラム起動制御部は、新たな常駐プログラムが導入されると、前記起動順序定義における常駐プログラムの順番の任意の位置に前記新たな常駐プログラムを追加する
請求項1記載のプログラム実行システム。
前記常駐プログラム起動制御部は、新たな常駐プログラムを前記起動順序定義に追加するとき、前記新たな常駐プログラムおよびそれを追加する位置の前後の常駐プログラムのリソース使用量の平均値が、前記起動順序定義に含まれる全ての常駐プログラムのリソース使用量の平均値に最も近くなる位置に追加する
請求項8記載のプログラム実行システム。
プログラム実行システムのシステム起動時に、プログラム実行部が、複数の常駐プログラムを起動させる順番を規定する情報である起動順序定義に従って常駐プログラムを起動し、
前記プログラム実行部が前記常駐プログラムを起動させる前または後に、リソース監視部が、前記常駐プログラムの起動によってリソース使用量が特定の値を超えるか否かを判断し、
前記常駐プログラムの起動によってリソース使用量が前記特定の値を超えると判断された場合、常駐プログラム起動制御部が、次回のシステム起動時における前記起動順序定義を今回の前記起動順序定義から変更する
ことを特徴とする常駐プログラムの起動方法。
【発明を実施するための形態】
【0012】
<実施の形態1>
図1は、本発明に係るプログラム実行システムの構成図である。当該プログラム実行システムは、プログラム実行装置10と、それに接続した起動スイッチ21、表示装置22および音声出力装置23を備えている。本発明は、パーソナルコンピュータをはじめとするプログラム実行システムに広く適用可能であるが、製造コストや製品サイズ、消費電力などの理由からリソースが制限される携帯型または小型の装置(例えばスマートフォン、タブレット端末、車載の情報表示装置、ナビゲーション装置など)への適用が特に有効である。
【0013】
起動スイッチ21は、プログラム実行装置10の電源スイッチであり、ユーザが起動スイッチ21を操作してプログラム実行装置10の電源がオンになると、プログラム実行システムが起動する。起動スイッチ21は、プログラム実行装置10を遠隔操作するリモコンでもよいし、プログラム実行装置10に内蔵されていてもよい。また、プログラム実行システムが車載装置に適用される場合、起動スイッチ21は車両の電源スイッチやイグニッションスイッチと連動するように構成してもよい。
【0014】
表示装置22としては、液晶ディスプレイが代表的であるが、画像表示機能を有する任意の装置(例えばスマートフォンやタブレット端末、車両のインストルメントパネルの表示部など)を利用してもよい。また、表示装置22は、ユーザによる操作の入力手段としても機能するタッチパネルであってもよい。音声出力装置23は、スピーカやヘッドフォン等が一般的であるが、これも音声出力機能を有する任意の装置を利用してもよい。
【0015】
プログラム実行装置10は、プログラム実行部11、記憶部12、リソース監視部13および常駐プログラム起動制御部14を備えている。プログラム実行装置10はコンピュータを用いて構成されており、プログラム実行部11、リソース監視部13および常駐プログラム起動制御部14は、コンピュータがプログラムに従って動作することにより実現される。記憶部12は、例えばハードディスク、リムーバブルディスクなど不揮発性の記憶媒体によって構成される。
【0016】
プログラム実行部11は、複数のアプリケーションを複数同時に実行することができる。また、プログラム実行部11は、各アプリケーションの動作に従って、当該アプリケーションの実行結果を表示装置22または音声出力装置23から出力することもできる。
【0017】
一般的に、プログラム実行装置で実行されるアプリケーションは、1以上のプログラムと、当該アプリケーションに関する各種の情報が記載された定義ファイルとを含むパッケージとして構成されている。また、一般的なアプリケーションは、
図2に示すように、表示装置22に表示される実行画面を有する表示プログラムと、表示装置22への描画は行わずに常駐する(つまりバックグラウンドで動作する)常駐プログラムと、定義ファイルとを含む構成となる。ただし、表示プログラムを含まずに常駐プログラムと定義ファイルからなるアプリケーションや、常駐プログラムを含まずに表示プログラムと定義ファイルからなるアプリケーションもある。また1つのアプリケーションが、表示プログラム、常駐プログラムまたは定義ファイルを複数有することもある。
【0018】
常駐プログラムの例としては、ナビゲーション用の地図アップデート確認プログラムや、SNS(Social Networking Service)アプリケーションの投稿確認プログラム、ニュースアプリケーションの新着ニュース取得プログラム、音楽アプリケーションのアップデート確認プログラム、天気予報アプリケーションの最新情報取得プログラムなどがある。
【0019】
プログラム実行部11により実行されるアプリケーションは、記憶部12に記憶されている。ここで、記憶部12に記憶されているアプリケーションには、常駐プログラムを含むアプリケーションが複数含まれているものとする。また、プログラム実行部11は、システム起動時に、それら複数のアプリケーションの常駐プログラムを、予め規定された順番で起動させる。プログラム実行部11が複数の常駐プログラムを起動させる順番(常駐プログラム起動順序)を規定する情報である「起動順序定義」は、記憶部12に記憶されており、システム起動時にプログラム実行部11によって読み出される。
【0020】
図3は、記憶部12に記憶される起動順序定義を模式的に示した図である。
図3の例では、起動順序定義として、常駐プログラムA〜Eを起動する順番が示されている。本実施の形態では、起動順序定義は、常駐プログラムを起動させる順番をループ状に規定しており、起動対象とする常駐プログラムを示す情報を含んでいるものとする。
【0021】
図3に示す起動順序定義が記憶部12に記憶されていた場合、プログラム実行部11は、起動対象となっている常駐プログラムAを最初に起動し、その後は、起動対象を起動順序定義に従って1つずつ進めながら、起動対象となった常駐プログラムを起動する。つまり、プログラム実行部11は、常駐プログラムA〜Eを、常駐プログラムA,B,C,D、E…の順番で起動することになる。
【0022】
リソース監視部13は、各アプリケーションによるリソースの使用状況を監視する。リソースの使用状況を表す情報としては、メモリ使用量やCPUの使用率などが挙げられるが、本実施の形態では、リソース監視部13がプログラム実行装置10のメモリ使用量を監視するものとする。
【0023】
ここで、プログラム実行部11が実行するプログラムには、ユーザが導入したアプリケーションに含まれるプログラムだけでなく、プログラム実行装置10の基本的な動作を実現するためのプログラム(システムプログラム)も含まれている。システムプログラムは必ず実行する必要があるため、一般的には、
図4のようにプログラム実行装置10のメモリ容量の一部がシステムプログラム用の領域として予約され、残りの部分がアプリケーション用の領域として使用される。本明細書でいう「メモリ容量」とは、アプリケーション用の領域の容量を指している。
【0024】
常駐プログラム起動制御部14は、複数の常駐プログラムを起動させる順番(常駐プログラム起動順序)を制御する。具体的には、常駐プログラム起動制御部14は、システム起動時に常駐プログラムが起動されることでメモリ容量が不足することが検出された場合に、次回のシステム起動時における起動順序定義を、今回のシステム起動時に用いた起動順序定義から変更する。すなわち、常駐プログラム起動制御部14は、記憶部12に記憶される起動順序定義の内容を更新する。それによって、次回のシステム起動時における常駐プログラム起動順序が、今回のシステム起動時のものから変更される。
【0025】
次に、
図5を用いて、システム起動時におけるプログラム実行装置10の動作を説明する。
図5は、記憶部12に
図3の起動順序定義が記憶されていると仮定したときの、プログラム実行装置10の動作を示している。ここで、プログラム実行装置10のメモリ容量は80MBであり、常駐プログラムが使用できるメモリ容量の上限(メモリ使用上限)は50MBと規定されているものとする。つまり、常駐プログラムによるメモリ使用量が50MBを超えるとメモリ不足と判断される。また、
図3に示すように、常駐プログラムA,B,C,D,Eのメモリ使用量は、それぞれ20MB,10MB,30MB,15MB,25MBであるものとする。
【0026】
起動スイッチ21によってプログラム実行装置10の電源がオンにされ、システムが起動すると、プログラム実行部11は、起動順序定義(
図3)に従って、起動対象となっている常駐プログラムAを起動する。
図5の(a)のように、常駐プログラムAを起動しただけではメモリ使用量は20MBであり、メモリ使用上限の50MBには達しない。その場合、プログラム実行部11は、起動順序定義に従って起動対象を常駐プログラムBに進め、常駐プログラムBを起動する。
図5の(b)のように、常駐プログラムA,Bが起動してもメモリ使用量は30MBであり、メモリ使用上限には達しないので、プログラム実行部11は、さらに起動対象を常駐プログラムCに進め、常駐プログラムCを起動する。
【0027】
図5の(c)のように、常駐プログラムA,B,Cが起動するとメモリ使用量は60MBとなり、メモリ使用上限を超えるため、メモリ不足となる。その場合、プログラム実行部11は、メモリ使用量がメモリ使用上限を超える原因となった(つまり直前に起動させた)常駐プログラムCを終了させて、
図5の(d)のようにメモリ不足を解消する。さらに、常駐プログラム起動制御部14は、このとき起動対象となっている常駐プログラムCが、次回のシステム起動時に最初に起動させる常駐プログラムになるように、記憶部12に記憶されている起動順序定義を更新する。つまり、
図6のように常駐プログラムCが起動対象となっている起動順序定義を、記憶部12に記憶させる。その結果、次回のシステム起動時には、プログラム実行部11により最初に常駐プログラムCが起動されてから、上記と同様の動作が行われることになる。
【0028】
このように、本実施の形態では、起動順序定義におけるループを変更せずに、最初に起動させる常駐プログラムを変更することによって、起動順序定義の内容を変更している。従って、システムの起動と終了が繰り返されるうちに、どの常駐プログラムにも実行される機会が与えられることになり、全く起動されない常駐プログラムが生じることが防止される。
【0029】
図7は、実施の形態1に係るプログラム実行装置10のシステム起動時の動作を示すフローチャートである。
図5を用いて説明した動作は、プログラム実行装置10が当該フローチャートに従った動作を行うことで実現される。
【0030】
起動スイッチ21によってプログラム実行装置10の電源がオンにされ、システムが起動すると、プログラム実行部11は、記憶部12から起動順序定義を取得し(ステップS11)、起動対象となっている常駐プログラムを起動する(ステップS12)。次に、リソース監視部13がプログラム実行装置10のメモリ使用量を監視して、メモリ使用量がメモリ使用上限以下であるか否かを確認する(ステップS13)。メモリ使用量がメモリ使用上限以下であれば(ステップS13でYES)、起動対象を次の常駐プログラムに変更し(ステップS14)、ステップS12へ戻る。
【0031】
メモリ使用量がメモリ使用上限を超えていれば(ステップS13でNO)、プログラム実行部11は、直前に起動させた常駐プログラムを終了させる(ステップS15)。さらに、常駐プログラム起動制御部14が、現在起動対象となっている常駐プログラムを、次回のシステム起動時の起動対象に決定し(ステップS16)、その常駐プログラムが起動対象となっている起動順序定義を、記憶部12に記憶させる(ステップS17)。以上により、システムの起動処理が完了する。
【0032】
なお、上の説明では、実際に常駐プログラムを起動させてから(ステップS12)、メモリ不足となるか否かを判断したが(ステップS13)、各常駐プログラムのメモリ使用量が予め分かっている場合には、常駐プログラムを起動させる前にメモリ不足が生じるか否かを判断してもよい。その場合、メモリ不足が生じないと判断された場合にだけ常駐プログラムを起動して常駐させればよい。
【0033】
例えば、アプリケーションに含まれる定義ファイル(
図2)に、常駐プログラムのメモリ使用量の情報が記載されている場合には、当該常駐プログラムのメモリ使用量を予め判断できる。また、定義ファイルに記載されるメモリ使用量の情報は、当該常駐プログラムが過去に起動したときの実測値であってもよい。
【0034】
以下、常駐プログラムのメモリ使用量を予め判断できる場合における、プログラム実行装置10のシステム起動時の動作をより詳細に示す。
図8は、その動作を示すフローチャートである。
【0035】
起動スイッチ21によってプログラム実行装置10の電源がオンにされ、システムが起動すると、プログラム実行部11は、記憶部12から起動順序定義を取得する(ステップS21)。次に、プログラム実行部11は、リソース監視部13が検出したプログラム実行装置10の現在のメモリ使用量と、起動対象となっている常駐プログラムのメモリ使用量に基づいて、起動対象となっている常駐プログラムを起動させたときのメモリ使用量を予測し、そのときのメモリ使用量がメモリ使用上限以下に収まるか否かを判断する(ステップS22)。
【0036】
起動対象となっている常駐プログラムを起動させてもメモリ使用量がメモリ使用上限以下に収まると判断されれば(ステップS22でYES)、その常駐プログラムを起動させる(ステップS23)。そして、起動対象を次の常駐プログラムに変更して(ステップS24)、ステップS22へ戻る。
【0037】
一方、起動対象となっている常駐プログラムを起動させるとメモリ使用量がメモリ使用上限を超えると判断されれば(ステップS22でNO)、その常駐プログラムは起動させない。この場合、常駐プログラム起動制御部14が、現在起動対象となっている常駐プログラムを、次回のシステム起動時の起動対象に決定し(ステップS25)、その常駐プログラムが起動対象となっている起動順序定義を、記憶部12に記憶させる(ステップS26)。以上により、システムの起動処理が完了する。
【0038】
なお、ユーザがプログラム実行装置10に新たなアプリケーションを導入した場合、常駐プログラム起動制御部14は、
図9のように、新たな常駐プログラム(F)を、記憶部12に記憶されている起動順序定義における常駐プログラムの順番に追加する。起動順序定義に新たなアプリケーションを追加する位置は任意でよいが、例えば、新たな常駐プログラムおよびそれを追加する位置の前後の常駐プログラムのメモリ使用量の平均値が、起動順序定義に含まれる全ての常駐プログラムのメモリ使用量の平均値に最も近くなる位置に追加するとよい。そうすることにより、メモリ使用量が大きなアプリケーションが起動順序定義の特定位置に集中することを防止でき、より多くの常駐プログラムが同時に実行されるようになる。
【0039】
図9に示すように、新たな常駐プログラムFのメモリ使用量が20MBの場合、常駐プログラムFを追加した後の起動順序定義に含まれる全ての常駐プログラムA〜Fのメモリ使用量の平均値は、20.0MBである。また、
図10に示すように、新たな常駐プログラムFおよびそれを追加する位置の前後の常駐プログラムのメモリ使用量の平均値は、常駐プログラムFを常駐プログラムA,Bの間に追加すると16.7MB、常駐プログラムFを常駐プログラムB,Cの間に追加すると20.0MB、常駐プログラムFを常駐プログラムC,Dの間に追加すると21.7MB、常駐プログラムFを常駐プログラムD,Eの間に追加すると20.0MB、常駐プログラムFを常駐プログラムE,Aの間に追加すると21.7MBとなる。よって、常駐プログラムFは、常駐プログラムB,Cの間または常駐プログラムD,Eの間に追加するとよい。
図11は、常駐プログラムFを、常駐プログラムB,Cの間に追加した場合の起動順序定義を示している。
【0040】
<実施の形態2>
実施の形態1では、起動順序定義における常駐プログラムの順番のループを変更せずに、最初に起動させる常駐プログラムを変更することによって起動順序定義の内容を変更したが、常駐プログラム起動順序の変更方法はこれに限られない。実施の形態2では、常駐プログラム起動制御部14が常駐プログラム起動順序を変更する際、
図12に示すように、起動順序定義における常駐プログラムの順番をランダムに決定する。この方法によっても、実施の形態1と同様の効果が得られる。
【0041】
図13は、実施の形態2に係るプログラム実行装置10のシステム起動時の動作を示すフローチャートである。このフローチャートは、
図7のフローチャートに対し、次回のシステム起動時の起動対象を決定するステップS16を、次回のシステム起動時における起動順序定義における常駐プログラムの順番をランダムに決定するステップS16aに置き換えただけのものであるため、ここでの説明は省略する。
【0042】
<実施の形態3>
実施の形態1では、常駐プログラムの起動によってメモリ不足が生じた場合、その次以降の常駐プログラムは起動されない。例えば
図5の例において、
図5の(c)のように常駐プログラムCの起動によりメモリ不足が生じると、
図5の(d)の状態でシステム起動の処理が終了し、常駐プログラムD,Eは起動されない。
【0043】
しかし、
図5の(d)の状態ではメモリ使用量は30MBであり、メモリ使用上限の50MBまで20MBの余裕があるので、メモリ使用量が15MBの常駐プログラムDを実行可能なはずである。実施の形態3では、このようにメモリ容量を十分に有効活用できていない状態となることを防止する。
【0044】
すなわち、実施の形態3に係るプログラム実行装置10では、プログラム実行部11が、メモリ不足の原因となる常駐プログラムの順番を飛ばして次の常駐プログラムを常駐させる動作を、起動順序定義に従って繰り返し行う。その繰り返しの動作は、起動順序定義内の常駐プログラムを一巡するまで実行される。
【0045】
この動作を、
図14を用いて説明する。
図14は、
図3の起動順序定義に基づく動作を示している。ここでも、プログラム実行装置10のメモリ容量は80MBであり、メモリ使用上限は50MBとする。
【0046】
起動スイッチ21によってプログラム実行装置10の電源がオンにされ、システムが起動すると、プログラム実行部11は、記憶部12に記憶されている起動順序定義(
図3)に従って、起動対象となっている常駐プログラムAを起動する。
図14の(a)のように、常駐プログラムAを起動しただけではメモリ使用量は20MBであり、メモリ使用上限には達しない。その場合、プログラム実行部11は、起動対象を常駐プログラムBに進め、常駐プログラムBを起動する。
図14の(b)のように、常駐プログラムA,Bが起動してもメモリ使用量は30MBでありメモリ使用上限には達しないので、プログラム実行部11は、起動対象を常駐プログラムCに進め、常駐プログラムCを起動する。
【0047】
図14の(c)のように、常駐プログラムA,B,Cが起動するとメモリ使用量は60MBとなり、メモリ使用上限を超えるので、メモリ不足となる。その場合、プログラム実行部11は、メモリ使用量がメモリ使用上限を超える原因となった(つまり直前に起動させた)常駐プログラムCを終了させた上で、起動対象を常駐プログラムDに進め、常駐プログラムDを起動する。
図14の(d)のように、常駐プログラムA,B,Dが起動してもメモリ使用量は45MBであり、メモリ不足にはならない。その場合、プログラム実行部11は、起動対象を常駐プログラムEに進め、常駐プログラムEを起動する。
【0048】
図14の(e)のように、常駐プログラムA,B,D,Eが起動するとメモリ使用量は70MBになり、メモリ不足となる。その場合、プログラム実行部11は、メモリ使用量がメモリ使用上限を超える原因となった常駐プログラムEを終了させ、起動対象を常駐プログラムAに進める。これにより起動対象が起動順序定義内の常駐プログラムを一巡するため、常駐プログラムを起動させる処理は終了する。
【0049】
常駐プログラム起動制御部14は、メモリ使用量がメモリ使用上限を超える1回目の原因となった常駐プログラムが次回のシステム起動時に最初に起動するように、起動順序定義を変更する。
図14に示した動作では、常駐プログラムCを起動させたときに初めてメモリ不足となったため、次回のシステム起動時に最初に起動させる常駐プログラムは常駐プログラムCに設定される。つまり、
図6のように常駐プログラムCが起動対象となっている起動順序定義を、記憶部12に記憶させる。その結果、次回のシステム起動時には、常駐プログラムCが最初に起動されてから、上記と同様の動作が行われることになる。
【0050】
このように、本実施の形態では、常駐プログラムの起動によってメモリ不足が生じた場合、代わりに起動できる常駐プログラムが探索され、そのような常駐プログラムが見つかればそれが起動される。よって、実施の形態1よりも常駐する常駐プログラムの数を多くできる。
【0051】
図15は、実施の形態3に係るプログラム実行装置10のシステム起動時の動作を示すフローチャートである。
図14を用いて説明した動作は、プログラム実行装置10が当該フローチャートに従った動作を行うことで実現される。
【0052】
まず、起動スイッチ21によってプログラム実行装置10の電源がオンにされ、システムが起動すると、プログラム実行部11は、記憶部12から起動順序定義を取得し(ステップS31)、起動対象となっている常駐プログラムを起動する(ステップS32)。次に、リソース監視部13がプログラム実行装置10のメモリ使用量を監視して、メモリ使用量がメモリ使用上限以下であるか否かを確認する(ステップS33)。
【0053】
メモリ使用量がメモリ使用上限以下であれば(ステップS33でYES)、起動対象を次の常駐プログラムに変更する(ステップS34)。このとき起動対象が起動順序定義内の常駐プログラムをまだ一巡していなければ(ステップS35でNO)ステップS32へ戻る。
【0054】
一方、ステップS33においてメモリ使用量がメモリ使用上限を超えていれば(ステップS33でNO)、プログラム実行部11は、直前に起動させた常駐プログラムを終了させる(ステップS36)。このとき、メモリ使用量がメモリ使用上限を超えたのが1回目であれば(ステップS37でYES)、常駐プログラム起動制御部14は、現在起動対象となっている常駐プログラムを、次回のシステム起動時の起動対象に決定して(ステップS38)、ステップS34へ移行する。メモリ使用量がメモリ使用上限を超えたのが初めてでなければ(ステップS37でNO)、ステップS38の処理を行わずにステップS34へと移行する。
【0055】
以上の処理が繰り返し行われ、起動対象が起動順序定義内の常駐プログラムを一巡すれば(ステップS35でYES)、次回のシステム起動時の起動対象が決定済みかどうか(つまりステップS38の処理が行われたか否か)を確認する(ステップS39)。次回のシステム起動時の起動対象が決定済みでなければ(ステップS39でNO)、常駐プログラム起動制御部14は、現在起動対象となっている常駐プログラムを、次回のシステム起動時の起動対象に決定し(ステップS40)、そのように規定された起動順序定義を記憶部12に記憶させる(ステップS41)。
【0056】
次回のシステム起動時の起動対象が決定済みであれば(ステップS39でYES)、常駐プログラム起動制御部14は、ステップS40の処理を行わずに、ステップS38で決定したとおりに起動対象が規定された起動順序定義を記憶部12に記憶させる(ステップS41)。以上により、システムの起動処理が完了する。
【0057】
なお、実施の形態3においても、各常駐プログラムのメモリ使用量が予め分かっている場合には、実際に常駐プログラムを起動させることなくメモリ不足が生じるか否かを判断してもよい。
【0058】
実施の形態3では、常駐プログラム起動制御部14は、起動順序定義におけるループは変更せずに、メモリ使用量が特定の値を超える1回目の原因となる常駐プログラムが次回のシステム起動時に最初に起動するように、起動順序定義の内容を変更したが、実施の形態2を適用して、常駐プログラム起動制御部14が起動順序定義を変更する際、起動順序定義における常駐プログラムの順番をランダムに決定してもよい。
【0059】
<実施の形態4>
実施の形態1では、プログラム実行装置10が1つの起動順序定義のみを使用する例を示したが、実施の形態4では、プログラム実行装置10が複数の起動順序定義を使用する例を示す。すなわち、常駐プログラム起動制御部14が、
図16のような複数の起動順序定義を複数管理し、予め定められた条件に従って、プログラム実行部11に使用させる起動順序定義を切り替える。その他の動作は実施の形態1(
図7)と同様である。
【0060】
例えば、現在位置の条件に応じて複数の起動順序定義を切り替える場合、記憶部12には、現在位置の各条件に対応した複数の起動順序定義が記憶される。常駐プログラム起動制御部14は、プログラム実行装置10の起動時に現在位置を取得し、
図7のステップS11において、プログラム実行部11に対し現在位置に応じた起動順序定義を記憶部12から読み出すように指示する。
【0061】
どの起動順序定義を選択するかの判断基準となる条件としては、現在位置の条件の他、天候の条件やユーザの条件などが考えられる。これらの条件を用いる場合のプログラム実行装置10の動作も上記と同様でよく、常駐プログラム起動制御部14が、
図7のステップS11において、プログラム実行部11に対し現在の天候やユーザに応じた起動順序定義を記憶部12から読み出すように指示すればよい。
【0062】
実施の形態4によれば、プログラム実行装置10を起動したときの現在位置や天候などに応じて、起動順序定義を使い分けることが可能になる。また、プログラム実行装置10を使用するユーザごとに起動順序定義を切り替えることも可能である。特に、ユーザごとに独立してアプリケーションを導入可能な場合には、
図17のように、ユーザごとに導入した常駐プログラム自体が異なることがあるため、ユーザごとに起動順序定義の使い分けができることは非常に有効である。
【0063】
<実施の形態5>
実施の形態5では、複数の常駐プログラムのそれぞれに優先度を規定し、常駐プログラム起動制御部14がそれぞれの優先度に対応した複数の起動順序定義を管理する構成としたプログラム実行装置10を示す。
【0064】
図18は、常駐プログラムを高優先度の常駐プログラムA〜Eと、低優先度の常駐プログラムa〜eとに分けて、優先度ごとに起動順序定義を分けた例である。システム起動時には、プログラム実行部11が、各常駐プログラムをその優先度に対応する起動順序定義に従った順番で起動させる。
【0065】
この場合、低優先度の常駐プログラムは、高優先度の常駐プログラムが全て起動してもメモリ容量に余裕がある場合にだけ起動されるようにしてもよいが、その場合には、低優先度の常駐プログラムが全く起動されなくなることも考えられる。そのため、各優先度の常駐プログラムが少なくとも1つずつは実行可能なように、常駐プログラムを起動させる順番を決定することが好ましい。システム起動時に各優先度の常駐プログラムが少なくとも1つずつ実行されれば、システムの起動と終了が繰り返されるうちに、低優先度の常駐プログラムも全て起動される機会が得られ、全く起動されない常駐プログラムが生じることを防止できる。
【0066】
図19は、実施の形態5に係るプログラム実行装置10のシステム起動時の動作を示すフローチャートである。ここでは、高優先度の常駐プログラムと低優先度の常駐プログラムとが規定されており、プログラム実行装置10が、各優先度の常駐プログラムを少なくとも1つずつは実行する動作を示す。なお、プログラム実行装置10の記憶部12には、
図18の例のような、高優先度の常駐プログラム用の起動順序定義と、低優先度の常駐プログラム用の起動順序定義とが記憶されている。
【0067】
起動スイッチ21によってプログラム実行装置10の電源がオンにされ、システムが起動すると、プログラム実行部11は、記憶部12から高優先度の常駐プログラム用の起動順序定義と低優先度の常駐プログラム用の起動順序定義をそれぞれ取得する(ステップS51)。そして、プログラム実行部11は、高優先度の常駐プログラムの起動対象を起動する(ステップS52)。次に、リソース監視部13がプログラム実行装置10のメモリ使用量を監視して、メモリ使用量がメモリ使用上限以下であるか否かを確認する(ステップS53)。メモリ使用量がメモリ使用上限以下であれば(ステップS53でYES)、高優先度の常駐プログラムの起動対象を現在の起動対象の次のものに変更し(ステップS54)、ステップS52へ戻る。
【0068】
ステップS52〜S54の処理が繰り返されて、メモリ使用量がメモリ使用上限を超えるようになれば(ステップS53でNO)、プログラム実行部11は、直前に起動させた高優先度の常駐プログラムを終了させる(ステップS55)。ここまでの処理により、メモリ使用量がメモリ使用上限を超えない範囲で、高優先度の常駐プログラムが起動される。
【0069】
続いて、プログラム実行部11は、低優先度の常駐プログラムの起動対象を起動する(ステップS56)。次に、リソース監視部13が、メモリ使用量がメモリ使用上限以下であるか否かを確認する(ステップS57)。メモリ使用量がメモリ使用上限以下であれば(ステップS57でYES)、低優先度の常駐プログラムの起動対象を現在の起動対象の次のものに変更し(ステップS58)、ステップS56へ戻る。
【0070】
メモリ使用量がメモリ使用上限を超えていれば(ステップS57でNO)、プログラム実行部11は、低優先度の常駐プログラムが2つ以上起動しているかを確認する(ステップS59)。なお、ステップS59の前にステップS56が実行されるので、ステップS59では、低優先度の常駐プログラムが少なくとも1つは起動している。
【0071】
低優先度の常駐プログラムが1つしか起動していない場合は(ステップS59でNO)、その常駐プログラムの動作を継続させつつメモリ使用量を下げるために、起動している高優先度の常駐プログラムのうち最後に起動させたものを終了させる(ステップS60)。さらに、高優先度の常駐プログラムの起動対象を、現在の起動対象の1つ前のものに変更する(ステップS61)。その結果、高優先度の常駐プログラムの起動対象は、ステップS60で終了させた常駐プログラムになる。その後、リソース監視部13が、メモリ使用量がメモリ使用上限以下であるか否かを再度確認し(ステップS62)、メモリ使用量がメモリ使用上限を超えていれば(ステップS62でNO)ステップS60へ戻る。つまり、ステップS60,S61の処理は、メモリ使用量がメモリ使用上限以下になるまで繰り返し行われる。それにより、起動している唯一の低優先度の常駐プログラムの動作を継続させつつ、メモリ使用量をメモリ使用上限以下まで下げることができる。
【0072】
そして、メモリ使用量がメモリ使用上限以下になれば(ステップS62でYES)、ステップS56へ戻る。それにより、ステップS60の処理で増えたメモリの空き容量が大きい場合に更に低優先度の常駐プログラムを起動させることができ、メモリ容量を有効に活用できる。
【0073】
一方、ステップS59において、低優先度の常駐プログラムが2つ以上起動していた場合には(ステップS59でYES)、高優先度の常駐プログラムの動作を継続させつつメモリ使用量をメモリ使用上限以下にするために、起動している低優先度の常駐プログラムのうち最後に起動させたものを終了させる(ステップS63)。その後、常駐プログラム起動制御部14が、各優先度の常駐プログラムの現在の起動対象を、それぞれ次回のシステム起動時の起動対象に決定した上で(ステップS64)、各優先度の常駐プログラム用の起動順序定義を、記憶部12に記憶させる(ステップS65)。以上により、システムの起動処理が完了する。
【0074】
なお、
図19の動作は、実際に常駐プログラムを起動させてから(ステップS52,S56)、メモリ不足となるか否かを判断したが(ステップS53,S57)、各常駐プログラムのメモリ使用量が予め分かっている場合には、常駐プログラムを起動させる前にメモリ不足が生じるか否かを判断してもよい。その場合、メモリ不足が生じないと判断された場合にだけ常駐プログラムを起動して常駐させればよい。
【0075】
以下、常駐プログラムのメモリ使用量を予め判断できる場合における、プログラム実行装置10のシステム起動時の動作を説明する。
図20は、その動作を示すフローチャートである。
【0076】
起動スイッチ21によってプログラム実行装置10の電源がオンにされ、システムが起動すると、プログラム実行部11は、記憶部12から高優先度の常駐プログラム用の起動順序定義と低優先度の常駐プログラム用の起動順序定義をそれぞれ取得する(ステップS71)。次に、プログラム実行部11は、リソース監視部13が検出した現在のメモリ使用量と、高優先度の常駐プログラムの起動対象のメモリ使用量と、低優先度の常駐プログラムの起動対象のメモリ使用量とに基づいて、高優先度の常駐プログラムの起動対象と低優先度の常駐プログラムの起動対象を起動させたときのメモリ使用量を予測し、そのときのメモリ使用量がメモリ使用上限以下に収まるか否かを判断する(ステップS72)。
【0077】
高優先度の常駐プログラムの起動対象と低優先度の常駐プログラムの起動対象を起動してもメモリ使用量がメモリ使用上限以下に収まると判断されれば(ステップS72でYES)、高優先度の常駐プログラムの起動対象を起動させる(ステップS73)。そして、高優先度の常駐プログラムの起動対象を現在の起動対象の次のものに変更して(ステップS74)、ステップS72へ戻る。ステップS72〜S74の処理により、低優先度の常駐プログラムの起動対象の起動に必要なメモリ容量を残しつつ、メモリ使用量がメモリ使用上限を超えない範囲で、高優先度の常駐プログラムが起動される。
【0078】
その後、高優先度の常駐プログラムの起動対象と低優先度の常駐プログラムの起動対象を起動するとメモリ使用量がメモリ使用上限を超えると判断されるようになると(ステップS72でNO)、プログラム実行部11は、リソース監視部13が検出した現在のメモリ使用量と、低優先度の常駐プログラムの起動対象のメモリ使用量とに基づいて、低優先度の常駐プログラムの起動対象を起動させたときのメモリ使用量を予測し、そのときのメモリ使用量がメモリ使用上限以下に収まるか否かを判断する(ステップS75)。
【0079】
低優先度の常駐プログラムの起動対象を起動してもメモリ使用量がメモリ使用上限以下に収まると判断されれば(ステップS75でYES)、低優先度の常駐プログラムの起動対象を起動させる(ステップS76)。そして、低優先度の常駐プログラムの起動対象を現在の起動対象の次のものに変更して(ステップS77)、ステップS75へ戻る。先に述べたように、ステップS72〜S74では低優先度の常駐プログラムの起動対象の起動に必要なメモリ容量は確保されているので、少なくとも1回はステップS75でYESと判定され、低優先度の常駐プログラムが少なくとも1つ起動することになる。
【0080】
一方、低優先度の常駐プログラムの起動対象を起動するとメモリ使用量がメモリ使用上限を超えると判断されれば(ステップS75でNO)、低優先度の常駐プログラムの更なる起動は行わない。この場合、常駐プログラム起動制御部14が、各優先度の常駐プログラムの現在の起動対象を、それぞれ次回のシステム起動時の起動対象に決定した上で(ステップS78)、各優先度の常駐プログラム用の起動順序定義を、記憶部12に記憶させる(ステップS79)。以上により、システムの起動処理が完了する。
【0081】
なお、各常駐プログラムの優先度は固定されていなくてもよく、例えば、予め定められた条件(現在位置、天候、ユーザなどの条件)に従って、優先度が変更されるようにしてもよい。
【0082】
<実施の形態6>
実施の形態1〜5では、プログラム実行部11が、常駐プログラムをシステム起動時のみに起動させる例を示したが、実施の形態6では、プログラム実行部11が、システム起動後に、常駐させる常駐プログラムを起動順序定義に従って一定周期で変更する。
【0083】
具体的には、プログラム実行部11は、システム起動時に実施の形態1(
図7)の処理を実行した後、一定の時間が経過するごとに、常駐している常駐プログラムのうち最も先に起動した常駐プログラムを終了させて、再び、
図7の処理を実行する。
【0084】
図21を用いて、その動作を説明する。システム起動時に、
図3の起動順序定義に基づいて、
図7の処理を実行すると、
図21の(a)のように常駐プログラムA,Bが起動される。その後、一定の時間が経過すると、常駐プログラムA,Bのうち最も先に起動した常駐プログラムAを終了させ、再び
図7の処理を実行する。すると、常駐プログラムCが起動し、
図21の(b)のように常駐プログラムB,Cが常駐した状態になる。一定の周期でこの動作が繰り返されると、
図21の(c)のように常駐プログラムC,Dが常駐した状態、
図21の(d)のように常駐プログラムD,Eが常駐した状態、
図21の(e)のように常駐プログラムE,Aが常駐した状態、と変化して、
図21の(a)の状態に戻る。この動作はプログラム実行装置10がオフにされるまで繰り返される。
【0085】
本実施の形態では、システムが動作している間、常駐プログラムが起動順序定義に従って切り替わるため、システムの動作を終了させることなく実施の形態1と同様の効果が得られる。特に、スマートフォンなど、頻繁に電源をオフにしない装置に有効である。なお、
図7の処理が繰り返し実行される場合、システムの動作を終了させるときには、最後に常駐した常駐プログラムの次の常駐プログラム、つまりメモリ使用量がメモリ使用上限を超える原因となった常駐プログラムが、次回のシステム起動時に最初に起動するようになる。あるいは、実施の形態2を適用し、次回のシステム起動時に用いる起動順序定義における常駐プログラムの順番をランダムに決定してもよい。
【0086】
また、実施の形態5では、システム起動後に実施の形態1(
図7)の処理が一定周期で実行される例を示したが、実施の形態3(
図15)の処理が一定周期で実行されるようにしてもよい。
【0087】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【0088】
本発明は詳細に説明されたが、上記した説明は、すべての態様において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。