(57)【要約】【課題】プログラムの高速実行を確保しつつ、記憶容量が限られるＲＡＭについての効率的利用を阻害しない装置を提供する。【解決手段】ＲＡＭ１０１は、プログラムコードを格納するプログラム専用実行用メモリ領域１１と通常領域１２とに管理されている。プログラムＡ、Ｘは、プログラム専用実行用メモリ領域が固定的に割り当てられている。プログラム専用実行用メモリ管理部は、プログラムＢからメモリ領域を求める要求を受けると、プログラムＡ、Ｘの動作状況と、システムで使用されるプログラムＡ、Ｂ、Ｘ等のそれぞれのプログラムの相関関係が定義されたプログラム相関関係情報とに基づいて、プログラムＢの要求に対してプログラム専用実行用メモリ領域を貸与するべきプログラムを抽出する。例えばプログラムＡが抽出されると、プログラム専用実行用メモリ管理部１３０はプログラムＡのプログラム専用実行用メモリ領域をプログラムＢに割り当てる。【選択図】図２
2009217589.tif 000002
【特許請求の範囲】
【請求項１】
所定のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のメモリ領域を割り当てる対象となる複数のプログラムの相関関係が定義されたプログラム相関関係情報を格納するプログラム相関関係情報格納部と、
前記所定のＲＡＭにおけるメモリ領域であってＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）による直接実行が可能なプログラムコードが記憶されるメモリ領域として予め設定されたプログラム専用実行用メモリ領域が割り当てられておらず、かつ、前記複数のプログラムのうちの一つである第１プログラムからメモリ領域を求める要求を受けると、前記複数のプログラムに含まれるプログラムであって前記プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムの動作状況を取得し、取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第１プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第２プログラムを検索するプログラム検索部と、
前記プログラム検索部による検索の結果、前記第２プログラムがヒットした場合には、ヒットした前記第２プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域の少なくとも一部を前記第１プログラムに一時的に割り当てるメモリ割当部と
を備えたことを特徴とする実行用メモリ領域割当装置。
【請求項２】
前記メモリ割当部は、
前記プログラム検索部の検索によりヒットした前記第２プログラムが実行中である場合には、前記第２プログラムに対して、前記第２プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域とは異なるいずれかの新たなメモリ領域を割り当てるとともに、割り当てた前記新たなメモリ領域において前記第２プログラムを継続して実行させることを特徴とする請求項１記載の実行用メモリ領域割当装置。
【請求項３】
前記プログラム検索部は、
前記第２プログラムの前記新たなメモリ領域における動作状況と、前記プログラム専用実行用メモリ領域が割り当てられた前記第１プログラムの動作状況と、前記プログラム相関関係情報に定義された前記第２プログラムと前記第１プログラムとの相関関係とに基づいて、前記第１プログラムへの前記プログラム専用実行用メモリ領域の割り当てを終了するかどうかを判定し、
前記メモリ割当部は、
前記プログラム検索部が前記第１プログラムへの前記プログラム専用実行用メモリ領域の割り当てを終了すると判定した場合には、前記第１プログラムへの前記プログラム専用実行用メモリ領域の割り当てを前記第２プログラムへの割り当てに戻すとともに前記プログラム専用実行用メモリ領域において前記第２プログラムの実行を継続させ、かつ、前記第１プログラムに前記プログラム専用実行用メモリ領域に代替する新たなメモリ領域を割り当てることを特徴とする請求項１または２のいずれかに記載の実行用メモリ領域割当装置。
【請求項４】
前記メモリ割当部は、
前記第１プログラムによる前記プログラム専用実行用メモリ領域の使用が終了すると、前記第１プログラムへの前記プログラム専用実行用メモリ領域の割り当てを前記第２プログラムへの割り当てに戻すことを特徴とする請求項１〜３のいずれかに記載の実行用メモリ領域割当装置。
【請求項５】
前記プログラム検索部は、
検索によって前記第２プログラムがヒットしなかった場合には、新たな前記動作状況を取得し、取得した前記新たな動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記第２プログラムを検索することを特徴とする請求項１〜４のいずれかに記載の実行用メモリ領域割当装置。
【請求項６】
前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムは、
前記プログラム専用実行用メモリ領域が複数の構成単位から構成され、
前記プログラム検索部は、
取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第１プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第２プログラムを検索し、検索により前記第２プログラムがヒットした場合には、所定の基準に従って前記第２プログラムから少なくとも一つの前記構成単位を抽出し、
前記メモリ割当部は、
前記プログラム検索部により抽出された前記少なくとも一つの構成単位を前記第１プログラムに一時的に割り当てることを特徴とする請求項１〜５のいずれかに記載の実行用メモリ領域割当装置。
【請求項７】
前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムは、
前記複数の構成単位のそれぞれに、他のプログラムに貸与するに際しての貸与可能性の度合を示す構成単位優先度が静的または動的に付与され、
前記プログラム検索部は、
検索により前記第２プログラムがヒットした場合には、前記所定の基準として、前記構成単位優先度に従って前記第２プログラムから少なくとも一つの前記構成単位を抽出することを特徴とする請求項６記載の実行用メモリ領域割当装置。
【請求項８】
前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムは、
前記プログラム専用実行用メモリ領域を他のプログラムに貸与するに際しての前記プログラム自身の貸与可能性の度合を示すプログラム優先度が静的または動的に付与され、
前記プログラム検索部は、
取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係と、さらに、前記プログラム優先度とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第１プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第２プログラムを検索することを特徴とする請求項１〜７のいずれかに記載の実行用メモリ領域割当装置。
【請求項９】
コンピュータを、
所定のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のメモリ領域を割り当てる対象となる複数のプログラムの相関関係が定義されたプログラム相関関係情報を格納するプログラム相関関係情報格納部、
前記所定のＲＡＭにおけるメモリ領域であってＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）による直接実行が可能なプログラムコードが記憶されるメモリ領域として予め設定されたプログラム専用実行用メモリ領域が割り当てられておらず、かつ、前記複数のプログラムのうちの一つである第１プログラムからメモリ領域を求める要求を受けると、前記複数のプログラムに含まれるプログラムであって前記プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムの動作状況を取得し、取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第１プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第２プログラムを検索するプログラム検索部、
前記プログラム検索部による検索の結果、前記第２プログラムがヒットした場合には、ヒットした前記第２プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域の少なくとも一部を前記第１プログラムに一時的に割り当てるメモリ割当部、
として機能させることを特徴とする実行用メモリ領域割当プログラム。
【請求項１０】
請求項９の実行用メモリ領域割当プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）上におけるメモリ領域をプログラムに割り当てる実行用メモリ領域割当装置及び実行用メモリ領域割当プログラム及びこの実行用メモリ領域割当プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
（プログラム実行可能なメモリ）
現在のコンピュータシステム、特に組み込み機器を含むコンピュータシステムにおいて、プログラム実行のためにそのプログラムコードを配置するメモリは、ＲＡＭ、またはＸＩＰ（ｅＸｅｃｕｔｅ  Ｉｎ  Ｐｌａｎｅ）可能な不揮発メモリである。
【０００３】
プログラムコードをＲＡＭに配置するシステムでは、ほとんどの場合、実行可能なプログラムコードはＲＡＭに配置され、実行可能になる前のプログラムコードは、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＮＡＮＤ型Ｆｌａｓｈメモリに格納されている。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、これらＨＤＤやＮＡＮＤ型Ｆｌａｓｈメモリ上のプログラムコードを直接実行することは出来ないため、プログラムコードをＲＡＭに読み込んで実行する。
【０００４】
（ＲＡＭへの読込方式）
このＲＡＭへの読み込み、およびプログラム実行用メモリ制御方法においては、プログラム起動時にすべてのプログラムコードをＲＡＭに読み込む方法か、プログラムコード中の必要になった領域のみを動的にＲＡＭに読み込む方式が一般的である。後者（動的読み込み）の方法においては、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）を利用するのが一般的であり、ＭＭＵの管理単位をページと呼ぶことから、デマンドページング方式などと呼ばれている。
【０００５】
（デマンドページング方式の特徴）
デマンドページング方式の場合、ページ単位にＲＡＭの使用をやめて別の用途に使用し、再度必要になった場合にそのページのプログラムコードを不揮発メモリから読み込むことが一般的である。このような特徴のため、プログラムコードをすべて読み込む方式と比べて、同じプログラムを実行するのに必要なＲＡＭ容量が少なくて済むという利点がある。一方、いったんプログラムコードをロードしたメモリの解放と再読み込みを行うと、速度性能が劣化するという欠点がある。
【０００６】
（ＮＯＲ型Ｆｌａｓｈメモリ）
代表的なＸＩＰ可能な不揮発メモリにＮＯＲ型Ｆｌａｓｈメモリがある。ＮＯＲ型Ｆｌａｓｈメモリに、プログラムコードを格納した場合、ＣＰＵのプログラムカウンタに、ＮＯＲ型Ｆｌａｓｈメモリ上のアドレスを指定すれば、プログラムコード用にＲＡＭを消費することなくプログラムを実行することが出来る。しかし、ＮＯＲ型Ｆｌａｓｈメモリからの読み込みは、ＲＡＭからの読み込みに比べて遅いため、プログラムの速度性能が劣化するという欠点がある。
【０００７】
（ＲＡＭの一部固定的使用）
特表２００７−５０１４５０号公報「コンピュータ装置のデータにアクセスする方法」は、プログラムコードがＮＡＮＤ型Ｆｌａｓｈメモリに格納されているシステムにおいて、機器のブートアップ時にすべてのプログラムコードをＲＡＭにロードすると、ブートアップ時間がかかり、かつ、ＲＡＭを大量に消費することから、共通的に利用されるプログラムであるコアＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のプログラムコードおよびそれに関連の深いプログラムコードのみをブートアップ時にＲＡＭに固定的に読み込み、それ以外のプログラムについては必要に応じて読み込む方式について述べている。
【０００８】
特表２００７−５０１４５０号公報のように、プログラムコードをＲＡＭに固定的に割り当てるものと、そうでないものを分離することは、他の理由によっても必要になる場合がある。
【０００９】
（タイプ１）
ひとつの例として、プログラムコードはＮＯＲ型のＦｌａｓｈメモリに格納されており、ＸＩＰで実行するが、共通的かつ比較的長い時間にわたって頻繁に利用されるＯＳのプログラムコードや、高速実行を必要とするプログラムに対しては、固定的にＲＡＭを割り当てることがある。
【００１０】
（タイプ２）
また別の例として、デマンドページング方式によりプログラムコードをＲＡＭに読み込んで実行するが、ページの解放・再読み込みが発生することによる速度性能の低下をさけるため、高速実行を必要とするプログラムに対しては、固定的にメモリを割り当てる、あるいは解放されることのないページを割り当てることがある。
【００１１】
（タイプ３）
さらに別の例として、デマンドページング方式によりプログラムコードをＲＡＭに読み込んで実行するが、ページサイズが小さいとＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）の消費量が相対的に多くなって実行性能が劣化するために、ページサイズの大きい固定的なメモリを割り当てることがある。
【００１２】
最後の例（タイプ３）について補足する。デマンドページング方式の実現の有無にかかわらず、メモリ保護機能を有するＯＳでは、ＭＭＵを利用してメモリ管理を行う。ＭＭＵは、物理メモリと論理メモリの対応を管理するための機構であるが、先に述べたようにページを管理単位としており、物理メモリと論理メモリの対応表をページテーブルと呼ぶ。
【００１３】
ＭＭＵを利用した場合、プログラムは論理アドレスで動作するが、実際にその論理アドレスの指すメモリにアクセスするためには、ＣＰＵは論理アドレスを物理アドレスに変換しなければならない。この処理を行うためには、ページテーブルを参照しなければならないが、多くのＣＰＵではページテーブルはＲＡＭ上にあり、ＣＰＵ内部のキャッシュメモリなどと比較してかなり低速である。このため、前記のＴＬＢという機構が存在する。ＴＬＢの１つのエントリは、ＭＭＵで管理する１ページの情報をキャッシュしている。ＴＬＢはキャッシュメモリのようにＣＰＵ内部にあり、高速である。したがって、まずＴＬＢを参照して、その論理アドレスの情報がキャッシュされていれば、ページテーブルを参照せずに高速に物理アドレスへの変換が可能となる。さらに、ＴＬＢの中でも、マイクロＴＬＢという少数の、より高速なＴＬＢを搭載して、このアドレス変換をより高速に行うＣＰＵもある。
【００１４】
このＴＬＢの数はＣＰＵにより異なるが、組み込み機器で利用されるような小型のＣＰＵでは、せいぜい１２８エントリ程度であり、さらにマイクロＴＬＢは１０エントリ程度である。
【００１５】
あるプログラムのプログラムコードが１ＭＢであったとする。ページサイズを４ＫＢとすると、全体で２５６ページあることになるが、これは先の１２８や１０といったＴＬＢのエントリ数に比べて大きく、ＴＬＢのミスヒットの可能性が高くなる。すなわち、物理アドレスに変換したい論理アドレスの情報がＴＬＢやマイクロＴＬＢになく、ページテーブルの探索を必要とする可能性が高くなり、結果としてプログラムの実行速度が低下する。もしページサイズが１ＭＢであれば、１ページで済むために、ＴＬＢミスヒットの可能性は小さくなり、実行性能の劣化も小さい。
【００１６】
しかし、ページは、物理的に連続するメモリでなくてはならない。したがって、ページサイズを１ＭＢとすると、１ＭＢより小さいプログラムや、１ＭＢより大きくともプログラムの最後の１ＭＢ未満の部分の存在により、メモリ全体の利用効率が低くなる。また、同時にＲＡＭ上に存在できるページ数そのものが少なくなることや、プログラムコードのメモリへの読み込みに時間がかかるため、システム全体で見た場合、実行性能が劣化する。
【００１７】
したがって、高速性を要求するプログラムに対しては、ページサイズの大きなメモリを割り当て、その他のプログラムに対しては、通常の小さなページサイズでのデマンドページングを採用することがある。
【特許文献１】特表２００７−５０１４５０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
上記のように、プログラムの高速実行のため、固定的なＲＡＭを特定のプログラムに対して割り当てた場合、そのプログラムが動作していない、あるいは使用状況によっては高速実行を必要としていない場合にも、ＲＡＭを固定的に占有するために、システム全体で動的に利用できるＲＡＭが減少してしまう。特に、ＲＡＭ容量が限られる組込み機器で課題となる。
【００１９】
本発明の目的は、プログラムの高速実行を確保しつつ、記憶容量が限られるＲＡＭについての効率的利用を阻害しない装置の提供を目的とする。
【課題を解決するための手段】
【００２０】
この発明の実行用メモリ領域割当装置は、
所定のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のメモリ領域を割り当てる対象となる複数のプログラムの相関関係が定義されたプログラム相関関係情報を格納するプログラム相関関係情報格納部と、
前記所定のＲＡＭにおけるメモリ領域であってＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）による直接実行が可能なプログラムコードが記憶されるメモリ領域として予め設定されたプログラム専用実行用メモリ領域が割り当てられておらず、かつ、前記複数のプログラムのうちの一つである第１プログラムからメモリ領域を求める要求を受けると、前記複数のプログラムに含まれるプログラムであって前記プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムの動作状況を取得し、取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第１プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第２プログラムを検索するプログラム検索部と、
前記プログラム検索部による検索の結果、前記第２プログラムがヒットした場合には、ヒットした前記第２プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域の少なくとも一部を前記第１プログラムに一時的に割り当てるメモリ割当部と
を備えたことを特徴とする。
【発明の効果】
【００２１】
本発明により、プログラムの高速実行を確保しつつ、記憶容量が限られるＲＡＭについての効率的利用を阻害しない装置を提供できる。
【発明を実施するための最良の形態】
【００２２】
実施の形態１．
図１〜図６を参照して実施の形態１を説明する。図１に実施の形態１の構成を示す。
【００２３】
図１は、実施の形態１の想定する携帯端末、携帯電話等である組み込み機器１０００（実行用メモリ領域割当装置）のハードウェア資源の一例を示す図である。図１において、組み込み機器１０００は、プログラムを実行するＣＰＵ１０２を備えている。ＣＰＵ１０２は、バスを介して、ＲＡＭ１０１、プログラムコード格納不揮発メモリ１００と接続され、これらのハードウェアデバイスを制御する。ＲＡＭ１０１は、揮発性メモリの一例である。なお、プログラムコード格納不揮発メモリ１００は、後述のように、ＸＩＰ実行が可能なＮＯＲ型Ｆｌａｓｈメモリであるとする。
【００２４】
プログラムコード格納不揮発メモリ１００には、図１の上部にソフトウェア構成として示す各種のプログラムが格納されている。
格納されているプログラムは、
（１）オペレーティングシステム１１０（ＯＳ１１０）、
（２）プログラムであるプログラム相関関係情報管理部１３１、
（３）メニューアプリケーション１２０（以下、メニューアプリ１２０という）、
（４）プログラムＡ、
（５）プログラムＸ（図示していない）、
（６）プログラムＤ、
（７）プログラムＢ
（８）プログラムＣ
などである。図１は、プログラムＡとプログラムＤとが動作している状態を示している。プログラムＡとプログラムＸとには、後述の図２に示すように、プログラム専用実行用メモリ領域が予め固定的に割り当てられているものとする。また、プログラムＡとプログラムＸ以外の、プログラムＤ、プログラムＢ、プログラムＣは、プログラムコード格納不揮発メモリ１００においてＸＩＰ実行されるものとする。
【００２５】
以下に述べる実施の形態の説明において、「〜部」として説明するものは、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち「〜部」として説明するものは、プログラムとして実現され、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００２６】
図１において、プログラムコードは、ＮＯＲ型Ｆｌａｓｈメモリであるプログラムコード格納不揮発メモリ１００に格納されている。このＮＯＲ型ＦｌａｓｈメモリからはＸＩＰ実行が可能である。前記のように組み込み機器１０００は、プログラムコード格納不揮発メモリ１００、プログラムコードあるいはデータ用に使用するためのＲＡＭ１０１、およびプログラム実行を行うＣＰＵ１０２を備えている。ＣＰＵ１０２は、ＭＭＵ１０３を備えている。ＯＳ１１０は、ＭＭＵ１０３を利用した仮想記憶を使用して動作するＯＳであり、ＭＭＵ１０３を利用してメモリ管理を行うメモリ管理部１１１と、プロセス管理部１１２を備える。メモリ管理部１１１とプロセス管理部１１２とは、メモリ割当部を構成する。アプリケーションソフトウェアとして、メニューアプリ１２０があり、アプリケーションとして、プログラムＡ、プログラムＤが動作していることを示している。
【００２７】
（１）プログラムＡは、多くの場合、常駐アプリケーションとして動作するプログラムであり、専用のホットキーなどによりすぐに呼び出すことができ、高い性能を要求するリッチＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を有しているため、プログラム専用実行用メモリを割り当てられている。
（２）プログラムＸは、常時起動するものではないが、非常に速度性能を要求するアプリケーションであり、プログラム専用実行用メモリを割り当てられている。
（３）プログラムＤについては、プログラムＤのプログラムコードはＮＯＲ型Ｆｌａｓｈメモリ上にあり、ＸＩＰ実行される。このため、プログラムＤのＲＡＭ１０１への割り当ては不要としている。
（４）後述するプログラムＢ、プログラムＣも、プログラムＤと同様にＮＯＲ型Ｆｌａｓｈメモリ上でＸＩＰ実行される。
【００２８】
図１の組み込み機器１０００の構成は、通常見られるハードウェア・ソフトウェア構成であり、これに加えて、組み込み機器１０００は、ＯＳ１１０内にプログラム専用実行用メモリ管理部１３０（プログラム検索部）を備えるとともに、プログラム相関関係情報管理部１３１（プログラム相関関係情報格納部）を備えた点が特徴である。
【００２９】
図２に、このシステムにおいて使用されるＲＡＭ１０１の使用状況の例を示す。ＲＡＭ１０１では、ＯＳ１１０のメモリ管理部１１１が、図２の上部にあたるプログラム専用実行用メモリ領域１１と、通常領域１２とに分けて管理する。なお、メモリ管理部１１１は、ＲＡＭ１０１の全体をどのように使い分けるか管理するが、このＲＡＭ１０１の管理のうち、プログラム専用実行用メモリ領域１１部分の具体的な割り当てについては、プログラム専用実行用メモリ管理部１３０に権限が委譲されている構成である。
図２の中の破線は、ＭＭＵ１０３で管理するページの境界を表す。太線で示す領域は、各プログラムが利用する領域である。プログラム専用実行用メモリ領域１１は、先に述べたＴＬＢの性能問題を考慮して、１ＭＢサイズのページとし、通常領域１２はメモリ利用効率を考慮して４ＫＢのページとしている。なお、図２は、領域の大きさの関係を適切には表していない。
【００３０】
プログラム専用実行用メモリ領域１１には、まずＯＳコードやＯＳに関連の深いドライバ群の実行用コードが割り当てられている。さらに、高速実行のため、プログラムＡおよびプログラムＸが割り当てられている。なお、図２ではプログラムＡ，プログラムＸのコード領域は１ＭＢのページ単位に使用しているが、これは管理を容易にするためであり、ページをまたがっていてもよい。
【００３１】
通常領域１２には、ＯＳやドライバが利用するデータ、プログラムＡが利用するデータ、プログラムＸが利用するデータが割り当てられている他、プログラム専用実行用メモリ領域を割り当てられていない、プログラムＤのためのデータ領域が割り当てられている。プログラムＤのプログラムコードはＮＯＲ型Ｆｌａｓｈメモリ上にあり、ＸＩＰ実行されるため、ＲＡＭ１０１への割り当ては不要である。
【００３２】
図３に、プログラム相関関係情報管理部１３１の持つプログラム相関関係情報表２０の例を示す。相関関係であるため、同じ組合せについては一方のみを記載する。また、このシステムの想定では、同じプログラムは１つしか起動できないため、同じプログラムどうしの組合せもない。本実施の形態１では、
（１）「相関なし」、
（２）「互いに連携して動作する」、
（３）「排他的に動作する」
の３つの相関関係を定義している。
より実際的なシステムでは、あるプログラムから別のプログラムを起動する場合や、連携する場合にも一方が他方を利用するだけでその逆はない、などの細かな相関関係を定義することができる。
【００３３】
ここで、非常に大きなデータ用メモリ領域を必要とするプログラムＢ（第１プログラムの例）が動作する場合を考える。メニューアプリ１２０により、ユーザがプログラムＢの起動を指示し、ＯＳ１１０の機能、例えばプロセス管理部１１２やメモリ管理部１１１を用いて、プロセスの起動が行われる。ここで、通常の場合にはＯＳ１１０に依頼してメモリ管理部１１１を通して、メモリ獲得を依頼し、ＲＡＭ１０１の通常領域１２からメモリを確保する。その場合、ＲＡＭ１０１の利用可能な容量が十分にない場合や、ＲＡＭ１０１は確保できても、さらに追加で起動するプログラムのためのメモリが確保できない場合がある。そのため、本実施の形態１では、プログラム専用実行用メモリ領域１１を有効に利用する。
【００３４】
本実施の形態１では、大きなデータ用メモリ領域の獲得の際に、プログラムＢは、通常のＯＳのメモリ獲得ではなく、プログラム専用実行用メモリ管理部１３０を利用したメモリ獲得を行う。この場合、通常領域１２の獲得でははなく、プログラム専用実行用メモリ領域１１の獲得処理が開始されるのは、例えば、予め獲得処理する判定条件をもっているからである。
例えば、次の様な場合である。
（ａ）メモリ管理部１１１は、ＲＡＭ１０１全体のメモリ領域使用状況を管理している（ただし、上記のように、プログラム専用実行用メモリ領域１１部分の具体的な割り当てについては、プログラム専用実行用メモリ管理部１３０に権限が委譲されている。）
（ｂ）一方、プログラム専用実行用メモリ管理部１３０は、プログラム専用実行用メモリ領域１１の貸与可能性の検討処理（つまり後述の図４の処理）を「する／しない」の判定条件を持っている。
（ｃ）プログラムＢから要求があると、プログラム専用実行用メモリ管理部１３０は、前記判定条件とＲＡＭ使用状況とから、プログラムＢに対するプログラム専用実行用メモリ領域１１の割り当て検討処理（図４）を実行するかどうかを決める。実行すると判定すると図４の処理がされ、実行しないと判定すると通常領域が割り当てられる。
（ｄ）さらに具体的な判定基準としては、要求しているメモリ容量自体が特定の値を超える、残りの通常容量のＸＸ％以上のメモリを要求する、などの判断基準が考えられる。
まず、プログラム専用実行用メモリ領域１１の獲得処理について説明する。
【００３５】
図４に、使用するプログラム専用実行用メモリ領域１１をプログラム専用実行用メモリ管理部１３０が確定する手順を示す。
【００３６】
（プログラム一覧、プログラム相関関係情報及びプログラム実行状態の取得）
（１）プログラム専用実行用メモリ管理部１３０は、自身が管理するプログラム専用実行用メモリ領域１１を割り当てているプログラム一覧を参照する（Ｓ４０１）。プログラム一覧は、プログラム専用実行用メモリ管理部１３０が管理しているかあるいはメモリ管理部１１１が管理している。
（２）プログラム相関関係情報管理部１３１からプログラム相関関係情報２０を取得し（Ｓ４０２）、
（３）プロセス管理部１１２から各プログラムの実行状態を取得する（Ｓ４０３）。
【００３７】
（プログラムの抽出：要求プログラム＝プログラムＢ）
プログラム専用実行用メモリ管理部１３０はＳ４０１で取得したプログラム一覧に対して、それぞれポイントをつけてそのポイントによってプログラムを抽出するものとする。この場合、メモリの利用を要求する要求プログラムである「プログラムＢ」に対して、
（１）プログラム相関関係情報２０において「連携関係」のあるものは除外し（Ｓ４０５）、
（２）「排他関係」のあるものは２ポイントとし（Ｓ４０６）、
（３）プロセス管理部１１２から得た情報により、プログラムが停止状態にある場合には１ポイントとする（Ｓ４０７）。
なお、プログラム専用実行用メモリ領域１１は固定的に割り当てられているため、そのプログラムが動作していなくとも、割り当てられたままであるが、そのプログラムが起動されたときには、再び利用される可能性があり、ここではプログラムが停止している状態よりも、排他関係にあるほうに高いポイントをあてている。ポイント付与の結果、「最もポイントの高いプログラム」を抽出する（Ｓ４０８）。これにより、プログラム専用実行用メモリ領域１１を貸与するプログラムを決定する。すなわち、最も高得点のプログラムの領域をプログラムＢに貸与する。
【００３８】
例えば、図２、図３の状態の設例で考える。即ち、図２に示すように、プログラムＡ、プログラムＸがプログラム専用実行用メモリ領域１１を割当てられている状態とする。また、図３に示す「プログラム相関関係情報」であるとする。この場合、次の（１）、（２）の様である。
（１）「要求プログラム＝プログラムＢ」の場合、プログラムＸは、プログラムＢと「連携関係あり」であるため除外され、よって、プログラムＡが抽出される。
（２）「利用希望プログラム＝プログラムＣ」の場合、
あるいは、プログラムＣがメモリを要求したとする。
この場合、図３によればプログラムＣは、プログラムＸとは「排他関係」（＋２）にあるが、プログラムＡとは「相関関係なし」（０）であるため、この場合、プログラムＸが抽出される。
【００３９】
また、各プログラムの状態として、メニューアプリ１２０の把握する状態を使用することも有効である。本実施の形態１のシステムが携帯端末のように画面が小さく、ユーザが直接操作できるプログラムは画面前面に表示されているプログラムのみであるとする。すると、例えば先の図３で説明したポイントでは、同じポイントであっても、画面を有するアプリであって、画面裏面（最前面ではない）のプログラムへのポイントを高くしてプログラムの抽出を行うことが出来る。
【００４０】
（抽出プログラム決定後の処理）
続く処理を図５を用いて説明する。図５は、プログラム専用実行用メモリ管理部１３０がメモリ管理部１１１，プロセス管理部１１２を用いて行なう動作である。「要求プログラム＝プログラムＢ」の場合であって、抽出されるプログラムはプログラムＡとする。プログラムＡのプログラム専用実行用メモリ領域１１を使用することは決定した。このとき、プログラムＡは実行状態にあるため（図４のＳ４０３で取得した実行状態による）、この状態を継続する必要がある。
【００４１】
（プログラムＡの実行継続）
まず、Ｓ５０１において、プログラム専用実行用メモリ管理部１３０は、プロセス管理部１１２により、プログラムＡを一時停止状態にする。この後の処理は十分短く終了するため、ユーザに対しては一時停止したことはほとんどわからない。また、先に述べた携帯端末の例のように、画面裏面にあれば、まったくわからない。Ｓ５０２において、プログラム専用実行用メモリ管理部１３０は、メモリ管理部１１１により、プログラム専用実行用メモリ領域１１に割り当てていたプログラムＡのプログラムコードのメモリを、実行可能なメモリであるプログラムコード格納不揮発メモリ１００（プログラム専用実行用メモリ領域１１とは異なるいずれかのメモリ領域の例）に変更する。これは、ＭＭＵを利用したメモリ割り当ての変更のみで済み、コピー処理などは不要である。Ｓ５０３において、プログラム専用実行用メモリ管理部１３０は、プロセス管理部１１２により、プログラムＡの実行状態を元に戻す。Ｓ５０４において、プログラム専用実行用メモリ管理部１３０は、メモリ管理部１１１により、プログラムＡが使用しなくなったプログラム専用実行用メモリ領域１１を、プログラムＢに割り当てる（Ｓ５０４）。これにより、プログラムＡの実行は継続しつつ（ただし、実行速度は遅い）、プログラムＢに対して大量のメモリを使用させることが出来る。
【００４２】
（プログラムＢの実行終了後の処理）
ここで、プログラムＢの実行が終了したときの処理を図６を用いて説明する。図６は、プログラム専用実行用メモリ管理部１３０がメモリ管理部１１１、プロセス管理部１１２を用いて行なう動作である。プログラムが終了すると、プロセス管理部１１２で終了処理が行なわれ、メモリ管理部１１１でメモリ解放が行なわれ（利用終了処理）、プログラム専用実行用メモリ管理部１３０に通知される。この流れに従って、プログラム専用実行用メモリ管理部１３０に対して、プログラムＢに割り当てていたメモリの利用終了がメモリ管理部１１１から通知されると（プログラムＢに対する割り当ては解除されているものとする）、プログラム専用実行用メモリ管理部１３０は、プログラムＡのプログラムコードをプログラムコード格納不揮発メモリ１００（ＮＯＲ型Ｆｌａｓｈメモリ）からプログラム専用実行用メモリ領域１１にコピーする（Ｓ６０１）。このコピー中は、プログラムＡは、まだＮＯＲ型Ｆｌａｓｈメモリ上でＸＩＰにより低速ではあるが実行可能である。したがって、プログラムＢが終了した後にプログラムＡを利用することは可能である。メモリのコピーを待たないため、実行性能の高速性は得られなくとも、ユーザに対する応答性は得られている。さて、プログラムＡのコピーが完了すると、プログラム専用実行用メモリ管理部１３０は、プロセス管理部１１２により、プログラムコード格納不揮発メモリ１００上で実行されているプログラムＡを一時停止し（Ｓ６０２）、メモリ管理部１１１によりプログラムコードのメモリ割り当てを元に戻し（Ｓ６０３）、再度プログラムＡの実行状態を元に戻す（Ｓ６０４）。
【００４３】
以上のように、高速実行を必要とするプログラムのために、専用のプログラム実行用メモリ領域を提供しながらも、大量のデータ用メモリを必要とするプログラム等のために限られたメモリ（ＲＡＭ）を効率よく利用することが出来る。
【００４４】
本実施の形態１では、ＮＯＲ型Ｆｌａｓｈメモリを利用したが、ＸＩＰを利用できないＮＡＮＤ型Ｆｌａｓｈメモリを利用することも可能である。この場合、プログラムＡがメモリ（プログラム専用実行用メモリ領域１１）を貸与中に実行される場合には、ＮＡＮＤ型Ｆｌａｓｈメモリから通常領域１２（プログラム専用実行用メモリ領域１１とは異なるいずれかのメモリ領域の一例）にプログラムＡのプログラムコードをコピーして実行することが必要である。先に述べたように、このような場合には一般的にプログラムコードを一括コピーする方法、または必要に応じてページ単位にコピーする方法があるが、必要に応じてページ単位にコピーする方法の方が、必要となるメモリ量を制限でき、またコピー時間が短くなるため適切である。
【００４５】
実施の形態２．
次に実施の形態２を説明する。実施の形態２では、次の実施例１〜実施例３を説明する。
（１）実施例１では、実施の形態１でプログラムＡのプログラム専用実行用メモリ領域１１をプログラムＢに貸与する場合を説明したが、このプログラムＢについて、プログラム専用実行用メモリ領域１１の貸与の見直しをする場合を説明する。
（２）実施例２では、実施の形態１でプログラム専用実行用メモリ管理部１３０がプログラムＡを抽出したが（図４のＳ４０８）、プログラム専用実行用メモリ管理部１３０が該当するプログラムを抽出できない場合の手当てを説明する。
（３）実施例３では、プログラム専用実行用メモリ領域１１が割り当てられているプログラムに静的あるいは動的に後述の「プログラム優先度」を付与し、プログラム専用実行用メモリ管理部１３０によるプログラム専用実行用メモリ管理部１３０の貸与判定において「プログラム優先度」を使用する場合を説明する。
【００４６】
（実施例１）
まず実施例１を説明する。実施の形態２における実施例１では、プログラム専用実行用メモリ管理部１３０は、抽出されたプログラムＡ（第２プログラム）の動作状況、メモリ領域の要求側であるプログラムＢ（第１プログラム）の動作状況、および、プログラムＡとプログラムＢとのプログラム相関関係情報１３１０に応じて、プログラムＢへのプログラム専用実行用メモリ領域１１の貸与を終了させる。そして、プログラム専用実行用メモリ管理部１３０は、プログラムＢを、より低速なメモリ上での実行に切り替え、一方、プログラムＡを再びプログラム専用実行用メモリ領域１１上での実行に切り替える。このように、プログラム専用実行用メモリ管理部１３０は、抽出されたプログラムＡの動作状況、要求側であるプログラムＢの動作状況、および、プログラムＡとプログラムＢとのプログラム相関関係情報１３１０に応じて、プログラムＢへのプログラム専用実行用メモリ領域１１の貸与を終了させるが、具体例は次の様である。
（１）すなわち、プログラムの動作状況としては、画面表示の状況、直前の数秒間のＣＰＵ使用率、などがあるが、この実施例１では、「画面表示の状況」を用いて説明する。
（２）メニューアプリや、既に最前面で画面表示されているプログラムＢでの操作により、プログラムＡ（貸与側のプログラム）が最前面となった場合、メニューアプリ（中の画面表示状況を管理している部分）からプロセス管理部１１２に対して、最前面アプリであることが通知される。
（３）プロセス管理部１１２は、メモリ管理部１１１を介して、プログラム専用実行用メモリ管理部１３０に最前面アプリの変更を通知する。
（４）プログラム専用実行用メモリ管理部１３０は、最前面となったプログラムＡのメモリ使用状況を確認する。プログラム専用実行用メモリ管理部１３０は、初期設定のとおり、プログラム専用実行用メモリ領域で動作していれば何もしない。一方、プログラム専用実行用メモリ管理部１３０は、貸与している状況にあれば、貸与しているプログラムＢを特定する（これは自身で管理している）。
（５）プログラムＡが最前面表示であって、プログラムＢ（借りている側）よりも高速に動作することが望ましいため、プログラム専用実行用メモリ管理部１３０は、プログラムＢへの貸与の見直しを行う。プログラム専用実行用メモリ管理部１３０は、プログラム相関関係情報１３１０により、プログラムＢへの貸与を終了するか判断する。
（６）
プログラム相関関係情報１３１０において「排他的関係」にある場合には、そもそも貸与されていることはないので無関係である。
また、「連携関係」の場合には、再びプログラムＢが最前面になる可能性があるため、貸与を終了しない。
また、「相関なし」の場合には、プログラム専用実行用メモリ管理部１３０は、貸与を終了する。
（７）なお、プログラム専用実行用メモリ管理部１３０によるプログラムの動作状況の取得については、上記の（１）〜（６）の説明のようにプログラム専用実行用メモリ管理部１３０にプロセス管理部１１２から通知しても良いし、プログラム専用実行用メモリ管理部１３０から、プロセス管理部１１２に問い合わせて動作状況を取得してもよい。
【００４７】
この実施例１の動作は、次の（１）〜（４）の様である。
（１）プログラム専用実行用メモリ管理部１３０は、プログラムＡ（第２プログラム）のプログラムコード格納不揮発メモリ１００（メモリ領域の例）における動作状況と、プログラムＢ（第１プログラム）のプログラム専用実行用メモリ領域１１における動作状況と、プログラム相関関係情報１３１０に定義されたプログラムＡとプログラムＢとの相関関係とに基づいて、プログラムＢへのプログラム専用実行用メモリ領域１１の割り当てを終了するかどうかを判定する。なお、プログラム専用実行用メモリ管理部１３０は、前記動作状況をプロセス管理部１１２から取得可能とする。
（２）そして、プログラム専用実行用メモリ管理部１３０は、プログラムＢへのプログラム専用実行用メモリ領域１１の割り当てを終了すると判定した場合には、メモリ管理部１１１により、プログラムＢへのプログラム専用実行用メモリ領域１１の割り当てをプログラムＡへの割り当てに戻す。
（３）また、プログラム専用実行用メモリ管理部１３０は、プロセス管理部１１２により、プログラム専用実行用メモリ領域１１においてプログラムＡの実行を継続させる。
（４）また、プログラム専用実行用メモリ管理部１３０は、メモリ管理部１１１により、プログラムＢにプログラム専用実行用メモリ領域１１に代替する通常領域１２における新たなメモリ領域を割り当てる。
【００４８】
実施例１については、例えばプログラムＢの実行は継続しているが、ユーザの指示によりプログラムＡをアクティブにした場合、特に先に述べた携帯端末のようにユーザが直接利用できるプログラムが１つである場合に有効である。プログラム専用実行用メモリ管理部１３０の動作は、次のように、実施の形態１の図４〜図６と、ほぼ同様である。
【００４９】
プログラムＡを再度プログラム専用実行用メモリ領域１１に切り替える方法は、図６と同じである。実施の形態１と異なるのは、プログラムＢがプログラム専用実行用メモリ領域１１を使用していたが、これを通常メモリ（通常領域１２）に切り替える必要があるところである。これも図６とほぼ同様である。
これは、
（１）プログラムＢの実行を一時停止し、
（２）プログラム専用実行用メモリ領域１１の（プログラムＢの）データを、通常領域に確保した別の領域にコピーし、
（３）ＭＭＵによるメモリ割り当てを変更し、
（４）プログラムＢの実行を再開すればよい。
ただし、図６の場合と異なり、データの一貫性を保証するため、コピー中はプログラムＢを一時停止しておく必要がある。これにより、再度プログラムＡに高速性が必要になった場合、プログラム専用実行用メモリ領域１１による効果を得ることが出来る。
【００５０】
（実施例２）
次に実施例２を説明する。実施例１ではプログラムＢのメモリ割り当てを変更する方法について述べた。これと同様の方法により、プログラムＢがデータメモリを要求したがプログラム専用実行用メモリ領域１１を貸与するべきプログラムが抽出されず、プログラム専用実行用メモリ領域１１ではなく、通常領域１２がデータメモリとして割り当てられたような場合に、プログラムＢのデータメモリを通常領域１２から、プログラム専用実行用メモリ領域１１に変更することが可能である。例えば、プログラムＡが終了した、別のプログラムの起動により画面裏面に移動したなどの情報を、プロセス管理部１１２、メニューアプリ１２０からプログラム専用実行用メモリ管理部１３０に「通知」することにより、その判断の契機（図４の抽出判定の契機）を与えることが出来る。この「通知」は、画面遷移や、プログラム終了により、プロセス管理部１１２からプログラム専用実行用メモリ管理部１３０に送られる「通知」であり、あるいは、プログラムの起動によってメニューアプリ１２０からプログラム専用実行用メモリ管理部１３０に送られる「通知」である。
【００５１】
即ち、プログラムＢが、プログラムの動作状況や、相関関係情報により、実行コードまたはデータ用メモリを要求したときにプログラム専用実行用メモリ領域の貸与を受けられなかった場合に、プログラムの動作状況の変化により、プログラム専用実行用メモリ領域の貸与が可能になった場合に貸与を行う。具体的な動作は、例えば次の要である。プログラム専用実行用メモリ管理部１３０は、プログラムＢが貸与を受けられなかったということを「記録」しておく。例えば、プログラムＡの終了が前述のようにプログラム専用実行用メモリ管理部１３０に伝えられると、プログラム専用実行用メモリ管理部１３０は、貸与を受けられなかった「記録」を検索する。プログラム専用実行用メモリ管理部１３０は、プログラムＢがヒットすると、図４に示した処理（貸与可能性）を再度、評価する。プログラム専用実行用メモリ管理部１３０は、再度の評価により貸与可能であれば、貸与するとともに貸与が受けられなかったという「記録」を削除する。貸与不可能であれば、「記録」はその維持する。また、プログラムＢの終了がプロセス管理部１１２からプログラム専用実行用メモリ管理部１３０に伝えられた場合は、貸与を受けられなかったことの「記録」を削除する。
【００５２】
具体的には、プログラム専用実行用メモリ管理部１３０は、検索によってプログラム（第２プログラム）がヒットしなかった場合には、動作状況の新たな取得を繰り返し（あるいは通知を待ち）、新たに取得された動作状況と、プログラム相関関係情報１３１０に定義された相関関係とに基づいて、プログラム（第２プログラム）を検索する。
【００５３】
（実施例３）
次に実施例３を説明する。
実施例３は、プログラムの優先度に関する実施例である。実施例３の「優先度」はプログラムに対する優先度であので、「プログラム優先度」という場合がある。後述する実施例５では管理単位（構成単位）についての優先度（構成単位優先度）と区別する。ここで「プログラム優先度」とは、プログラム専用実行用メモリ領域１１を他のプログラムに貸与するに際しての、その貸与側のプログラム事態の貸与可能性の度合を示す値、数値である。なお、「優先度」が高い場合は、貸与されにくく、「優先度」が低いほど貸与され易い。一方、貸与可能性は優先度とは逆であり、「貸与可能性」が高いほど貸与され易い（優先度が低い）。
次のように、プログラムの動作状況を、プロセス管理部１１２や、メニューアプリ１２０の外部から知るのではなく、プログラム自身から知ることにより、より適切にメモリを貸与するプログラムを選択することが出来る。
【００５４】
即ち、プログラム専用実行用メモリ領域が割り当てられているプログラムに対して、静的あるいは動的に貸与可能性の優先度を付与し、貸与判断においてその優先度情報を利用する。次のように、プログラム専用実行用メモリ管理部１３０は、プログラムの動作状況（プログラム優先度を含む）を、プロセス管理部１１２や、メニューアプリ１２０の外部から知るのではなく、プログラム自身から知ることにより、より適切にメモリを貸与するプログラムを選択することが出来る。後に示すＪａｖａ（登録商標）アプリのように、「プログラム優先度」が動的に変わり、それをプログラムからプログラム専用実行用メモリ管理部１３０に設定したような場合が該当する。
【００５５】
このように、プログラム専用実行用メモリ領域１１が固定的に割り当てられているプログラムには、プログラム専用実行用メモリ領域１１を他のプログラムに貸与するに際しての貸与可能性の度合を示すプログラム優先度が静的、あるいは動的に設定される。そして、プログラム専用実行用メモリ管理部１３０は、取得した動作状況と、プログラム相関関係情報１３１０に定義された複数のプログラムの相関関係と、さらに、プログラム優先度とに基づいて、プログラム専用実行用メモリ領域１１が固定的に割り当てられているプログラムの中から、メモリ領域を要求するプログラム（第１プログラム）に対してプログラム専用実行用メモリ領域１１を一時的に貸与させるべきプログラム（第２プログラム）を検索する。
【００５６】
例えば、プログラムＸは、その上でさらにアプリケーションが実行できる環境、例えばＪａｖａ実行環境（Ｊａｖａは登録商標）であって様々なＪａｖａアプリケーション（Ｊａｖａは登録商標）が実行できるプログラムであったとする。この場合、スケジュール帳のように速度性能を要求しないアプリである場合もあれば、アクションゲームのように速度性能を要求しないアプリである場合もある。そこで、プログラム専用実行用メモリ領域１１に対して、自身のプログラムが速度性能を要求しなければ、貸与可能性を動的に高く設定（プログラム優先度を動的に低く設定）し、そうでなければ貸与可能性を動的に低く設定するようにし、貸与するプログラムの選択基準として利用する。例えば、図４のポイントによる抽出判定においてポイントが同点の場合、プログラム専用実行用メモリ管理部１３０は、プログラム優先度の低い方のプログラムを抽出する。
【００５７】
実施の形態３．
図７、図８を参照して実施の形態３について説明する。実施の形態３では、次の実施例４〜実施例７を説明する。
【００５８】
（１）実施例４では、プログラムＡのように、プログラム専用実行用メモリ領域１１が予め固定的に割り当てられるプログラムについて、そのプログラム専用実行用メモリ領域１１が複数の管理単位（構成単位）から構成されている場合を説明する。即ち、実施例４では、プログラムＡのプログラム専用実行用メモリ領域１１を他のプログラムに貸与するに当り、そのすべてを貸与するのではなく、プログラム専用実行用メモリ領域１１の管理単位に合わせて部分的に貸与する場合を説明する。
（２）実施例５では、実施例４における管理単位に優先度（構成単位優先度）を付与する場合を説明する。
（３）実施例６では、プログラムにプログラム専用実行用メモリ領域１１を割り当てる際に、前記優先度（構成単位優先度）を参照する場合を説明する。
（４）実施例７では、プログラム専用実行用メモリ領域１１における割り当て位置に基き、プログラムコード格納不揮発メモリ１００への格納位置を決定する場合を説明する。
【００５９】
（実施例４）
まず実施例４について説明する。図２においては、プログラム専用実行用メモリ領域１１におけるプログラムＸのコード領域は１ページ分であったが、この実施例４では図７に示すように、プログラムＸのコード領域はもっと大きいものとする。図７は、プログラムＸ関連部分のみのプログラム専用実行用メモリ領域１１を示している。ここで、プログラムＸは、先に示した例のように、様々なアプリケーションが利用できるＪａｖａ実行環境（Ｊａｖａは登録商標）であり、Ｊａｖａ実行環境（Ｊａｖａは登録商標）は、図７に示すように、
（１）共通コード、
（２）２次元グラフィックス機能を利用するアプリケーションで多用される２次元画像描画コード、
（３）３次元グラフィックス機能を利用するアプリケーションで多用される３次元画像描画コード、
（４）その他のコード
から構成されているものとする。なお、このように関連する機能のコードを集中するのは、通常、コンパイラが出力した各オブジェクトをリンカによってリンクする順序によって制御することが出来る。
【００６０】
この場合、プログラム専用実行用メモリ領域１１が固定的に割り当てられているプログラムＸは、「（１）共通コード」、「（２）２次元画像描画コード」、「（３）３次元画像描画コード」、「（４）その他のコード」というように４つの管理単位（構成単位）から構成されている。この場合、プログラム専用実行用メモリ管理部１３０は、取得された動作状況と、プログラム相関関係情報に定義された複数のプログラムの相関関係とに基づいて、プログラム専用実行用メモリ領域１１が固定的に割り当てられているプログラムの中から、メモリ領域を要求するプログラム（第１プログラム）に対してプログラム専用実行用メモリ領域１１を一時的に貸与させるべきプログラム（第２プログラム）を検索し、検索によりプログラム（実施例４ではプログラムＸ）がヒットした場合には、所定の基準に従ってプログラムＸから少なくとも一つの管理単位を抽出する。
「所定の基準」の一例として、例えば、「先頭から要求された容量分の管理単位を貸与する」と決めても良い。
そして、プログラム専用実行用メモリ管理部１３０は、メモリ割当部（メモリ管理部１１１）により、抽出された少なくとも一つの管理単位をメモリ領域を要求するプログラム（第１プログラム）に一時的に割り当てる。
【００６１】
（実施例５）
次に実施例５を説明する。実施例５は、プログラム専用実行用メモリ領域１１が割り当てられている各プログラム内のプログラム専用実行用メモリ領域１１に、静的あるいは動的に貸与可能性を示す優先度（構成単位優先度）を付与し、貸与判断においてその優先度情報を利用する場合である。
【００６２】
図８は、プログラム専用実行用メモリ管理部１３０が管理する、各プログラムに対する領域（ページ）別のプログラム専用実行用メモリ領域１１の優先度情報として、プログラムＸの例を示す図である。図７に示したようにプログラムＸのプログラム専用実行用メモリ領域１１は５ページから構成されている。優先度情報は、それぞれの機能（共通、２次元グラフィックス、３次元グラフィックス、その他）の、各ページに対する容量の割合、および、各機能そのものの優先度（構成単位優先度）からなる。「優先度」が高いほうが、プログラム専用実行用メモリの必要性が高いことをあらわしている。即ち、「優先度」が高いほど、貸与されにくい。これは静的な情報として構成可能であるが、先に示した例のようにアプリケーションが２次元グラフィックスを多用し、３次元グラフィックスを利用しないのであれば、プログラム専用実行用メモリ管理部１３０は、３次元グラフィックスに対する優先度を、プログラムＸからの通知により、「優先度＝０」（低い優先度：この場合、最優先で貸与してよい）に変更することが出来る。
【００６３】
この情報に基づいて、プログラム専用実行用メモリ管理部１３０は、貸与の判断を行うようにする。
【００６４】
即ち、図８に示したように、プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムＸは、４つの管理単位である「（１）共通コード」〜「（４）その他機能コード」のそれぞれに、他のプログラムにプログラム専用実行用メモリ領域を貸与するに際しての貸与可能性の度合を示す優先度（構成単位優先度）が予め設定されている。そして、プログラム専用実行用メモリ管理部１３０は、検索によりプログラムＸ（第２プログラムの）がヒットした場合には、優先度（構成単位優先度）に従ってプログラムＸから少なくとも一つの管理単位（構成単位）を抽出する。
【００６５】
（管理単位の抽出動作）
上記における管理単位の具体的な抽出の動作を説明する。例えば、管理単位の抽出動作は次の様である。プログラム専用実行用メモリ管理部１３０は、図８の表を用いて、各ページ毎に、機能の優先度と、その機能がそのページに含まれる割合から、そのページの優先度（値が大きいほど貸与されにくい）を計算する。図８の場合で、二次元グラフィックスを多用するアプリの場合の優先度は次の（１）〜（５）のように計算される。なお、二次元グラフィックスを多用する場合には前述のとおり、プログラムＸからプログラム専用実行用メモリ管理部１３０に通知済みである。すなわち、プログラムＸが２次元グラフィックスを多用し、３次元グラフィックスを利用しないのであれば、プログラム専用実行用メモリ管理部１３０は、３次元グラフィックスに対する優先度を、プログラムＸからの通知により、優先度を「０」に変更する。そのため、下記の（４）では、「ページ４」の優先度を「０」として計算している。
（１）ページ１の優先度は、５０＊１００％＝５０であり、
（２）ページ２の優先度は、５０＊９０％＋１００＊１０％＝５５であり、
（３）ページ３の優先度は、１００＊１００％＝１００、
（４）ページ４の優先度は、「０」＊７０％＋０＊３０％＝０、
（５）ページ５の優先度は、０＊８０％＝０、
のようになる。そして、プログラム専用実行用メモリ管理部１３０は、必要とする容量分のページを、優先度の低い（貸与されやすい）順に抽出する（この例では、ページ４、ページ５、ページ１、ページ２、ページ３の順に抽出）。
【００６６】
このように、各プログラムの各ページ毎に優先度情報をつけて、貸与可能性を判断することにより、プログラム全体を貸与する必要性がなくなるため、貸与中に低速メモリで動作する部分が減少して速度性能への影響が小さくなるほか、コピーによる影響も小さくなる。また、各プログラムの特性に基づいた制御が可能となるため、速度性能に影響の小さい部分から貸与することにより、速度性能への影響を小さく出来る。
【００６７】
（実施例６）
次に実施例６を説明する。図８のように、同じプログラム内でもその優先度に差異がある。また、ページサイズ境界に、各プログラムや機能を配置すると、メモリ利用効率が低下するため、ページ境界以外にプログラムや機能の境界が配置されることがある。そこで、例えば図７に示した５ページ目の「余分領域」に、他のプログラム、例えばプログラムＡの、優先度の低い機能を配置できれば、この５ページ目全体の優先度を一貫して下げることが出来る。ここでは、抽出そのものは問題にしておらず、メモリ利用効率のみを問題としてる。ページが１ＭＢで、図７に示した５ページ目のうち、利用されている部分（プログラムＸの最後の部分）が８００ＫＢならば、あと２００ＫＢ利用できる。もし、プログラムＡが１．２ＭＢあるのならば、１ＭＢをプログラムＡ専用に、残りの２００ＫＢを、このプログラムＸの５ページ目のあまりに入れることができる。ただし、プログラムやページの抽出が困難になるため、低優先度のみをまとめるようにする。例えば、プログラムＡの残りの２００ＫＢの領域は、優先度の高いものであるが、プログラムＸの５ページ目の８００ＫＢの領域は優先度が低い場合、前記実施例５のようにしてページ５を抽出することはできなくなり、プログラムＡの状況も考慮する必要がある。
【００６８】
そこで、プログラム専用実行用メモリ領域１１における、各プログラムへの割り当て位置を、貸与可能性の優先度（プログラム優先度、管理単位優先度の両方を対象）、及びプログラム相関関係情報に基づいて決定する。
【００６９】
すなわち、プログラム専用実行用メモリ管理部１３０は、プログラム専用実行用メモリ領域１１へのプログラムの割り当て位置を、優先度（構成単位優先度）と、プログラム相関関係情報とに基づいて決定する。
【００７０】
例えば、図８に示した各プログラムのページ単位の優先度表を考慮して、それぞれのプログラムをプログラム専用実行用メモリ領域１１に割り当てる順序を決定し、同じレベルの優先度の機能が、ページに集中するように配置する。これにより、貸与中の速度性能の影響を小さくすることが出来る。
【００７１】
また、図３の内容とは異なるが、プログラムＢに対して、プログラムＡもプログラムＸも排他であれば、どちらのプログラムもプログラムＢ動作時には貸与可能性が高くなるので、端数部分が同じページになるように配置すると、やはり貸与中の速度性能への影響を小さくすることが出来る。
【００７２】
（実施例７）
次に実施例７を説明する。上記は、プログラム専用実行用メモリ領域１１による割り当てにおける決定であったが、あらかじめそれに適したように不揮発記憶装置上（図１のプログラムコード格納不揮発メモリ１００上）にプログラムを配置すると、不揮発記憶装置からプログラム専用実行用メモリ領域１１にコピーするのが容易・高速である。そこで、実施例６と同様の判断基準にて、不揮発記憶装置上にプログラムを配置するようにする。
【００７３】
つまり、プログラム専用実行用メモリ領域への各プログラムの割り当て位置に基づいて、不揮発記憶装置上（プログラムコード格納不揮発メモリ１００上）の各プログラムの格納位置を決定する。すなわち、プログラム専用実行用メモリ管理部１３０は、プログラム専用実行用メモリ領域への割り当て位置を決定したプログラムを、決定した前記割り当て位置に基づいて、プログラムコード格納不揮発メモリ１００に格納する。「格納する」とは、決定した前記割り当て位置に基づいて、格納状態を再編成する場合も含む。
【００７４】
前記のように、あらかじめそれに適したように不揮発記憶装置上（図１のプログラムコード格納不揮発メモリ１００上）にプログラムを配置すると、不揮発記憶装置からプログラム専用実行用メモリ領域１１にコピーするのが容易・高速である。
【００７５】
以上の実施の形態１では、
システム上のＲＡＭに関して、
あるプログラムまたはプログラム群のプログラムコードに対して、高速実行のために専用のプログラム実行用メモリを割り当てる、プログラム実行用メモリの制御装置（実行用メモリ領域割当装置）であって、
プログラム専用実行用メモリを割り当てられているプログラムＡの動作状況、および、システム上の各プログラムの相関関係情報に応じて、他の、あらかじめプログラム専用実行メモリが割り当てられていないプログラムＢが、実行コードまたはデータ用メモリを要求した場合に、プログラムＡ用のプログラム専用実行用メモリをプログラムＢに貸与する（プログラム専用実行用メモリの貸与）一方、
プログラムＡは、より低速なメモリ上で実行に切り替わり、プログラムＢへの貸与が終了した場合に、プログラムＡは再びプログラム専用実行用メモリ上での実行に切り替わる、プログラム実行用メモリの制御装置を説明した。
【００７６】
（プログラムＢへの貸与の見直し）
以上の実施の形態２では、
プログラムＡの動作状況、プログラムＢの動作状況、および、プログラムＡとプログラムＢの相関関係情報に応じて、プログラムＢへの貸与を終了させて、プログラムＢは、より低速なメモリ上での実行に切り替わり、一方、プログラムＡは再びプログラム専用実行用メモリ上での実行に切り替わるプログラム実行用メモリの制御装置を説明した。
【００７７】
（プログラムを抽出できない場合）
以上の実施の形態２では、
プログラムＢが、プログラムの動作状況や、相関関係情報により、実行コードまたはデータ用メモリを要求したときにプログラム専用実行用メモリ領域の貸与を受けられなかった場合に、プログラムの動作状況の変化により、プログラム専用実行用メモリ領域の貸与が可能になった場合に貸与を行うプログラム実行用メモリの制御装置を説明した。
【００７８】
（プログラム優先度）
以上の実施の形態２では、
プログラム専用実行用メモリ領域が割り当てられているプログラムに対して、
静的あるいは動的に貸与可能性の優先度を付与し、貸与判断においてその優先度情報を利用するプログラム実行用メモリの制御装置を説明した。
【００７９】
（管理単位）
以上の実施の形態３では、
プログラムＡのプログラム専用実行用メモリ領域を貸与するに当り、そのすべてを貸与するのではなく、プログラム専用実行用メモリの管理単位に合わせて部分的に貸与するプログラム実行用メモリの制御装置を説明した。
【００８０】
（構成単位優先素）
以上の実施の形態３では、
プログラム専用実行用メモリ領域が割り当てられている各プログラム内のプログラム実行用メモリ領域に、静的あるいは動的に貸与可能性の優先度を付与し、貸与判断においてその優先度情報を利用するプログラム実行用メモリの制御装置を説明した。
【００８１】
（割当位置１）
以上の実施の形態３では、
プログラム専用実行用メモリの領域における、各プログラムへの割り当て位置を、貸与可能性の優先度、プログラム相関情報に基づいて決定する、プログラム実行用メモリの制御装置を説明した。
【００８２】
（割当位置２）
以上の実施の形態３では、
プログラム専用実行用メモリへの各プログラムの割り当て位置に基づいて、
不揮発記憶装置上の各プログラムの格納位置を決定する、プログラム実行用メモリの制御装置を説明した。
【図面の簡単な説明】
【００８３】
【図１】実施の形態１における組み込み機器１０００のハードウェア構成及びソフトウェア構成。
【図２】実施の形態１におけるＲＡＭ１０１の使用状況。
【図３】実施の形態１におけるプログラム相関関係情報。
【図４】実施の形態１におけるプログラム専用実行用メモリ管理部１３０によるプログラム抽出動作を示すフローチャート。
【図５】実施の形態１におけるプログラム専用実行用メモリ管理部１３０によるプログラム専用実行用メモリ領域の割り当ての動作を示すフローチャート。
【図６】実施の形態１におけるプログラム専用実行用メモリ管理部１３０によるプログラムＢの実行終了時の動作を示すフローチャート。
【図７】実施の形態３におけるプログラム専用実行用メモリ領域１１のプログラムＸへの割り当てを示す図。
【図８】実施の形態３における優先度情報を示す図。
【符号の説明】
【００８４】
１１  プログラム専用実行用メモリ領域、１２  通常領域、１００  プログラムコード格納不揮発メモリ、１０１  ＲＡＭ、１０２  ＣＰＵ、１０３  ＭＭＵ、１１０  ＯＳ、１１１  メモリ管理部、１１２  プロセス管理部、１２０  メニューアプリ、１２１  プログラムＡ、１２２  プログラムＤ、１３０  プログラム専用実行用メモリ管理部、１３１  プログラム相関関係情報管理部、１０００  組み込み機器、１３１０  プログラム相関関係情報。
【図１】
2009217589.tif 000003
【図２】
2009217589.tif 000004
【図３】
2009217589.tif 000005
【図４】
2009217589.tif 000006
【図５】
2009217589.tif 000007
【図６】
2009217589.tif 000008
【図７】
2009217589.tif 000009
【図８】
2009217589.tif 000010