JP2009217589A - 実行用メモリ領域割当装置及び実行用メモリ領域割当プログラム及び記録媒体 - Google Patents
実行用メモリ領域割当装置及び実行用メモリ領域割当プログラム及び記録媒体Info
- Publication number
- JP2009217589A JP2009217589A JP2008061065A JP2008061065A JP2009217589A JP 2009217589 A JP2009217589 A JP 2009217589A JP 2008061065 A JP2008061065 A JP 2008061065A JP 2008061065 A JP2008061065 A JP 2008061065A JP 2009217589 A JP2009217589 A JP 2009217589A
- Authority
- JP
- Japan
- Prior art keywords
- program
- memory area
- execution memory
- execution
- dedicated
- 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.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
Abstract
【課題】プログラムの高速実行を確保しつつ、記憶容量が限られるRAMについての効率的利用を阻害しない装置を提供する。
【解決手段】RAM101は、プログラムコードを格納するプログラム専用実行用メモリ領域11と通常領域12とに管理されている。プログラムA、Xは、プログラム専用実行用メモリ領域が固定的に割り当てられている。プログラム専用実行用メモリ管理部は、プログラムBからメモリ領域を求める要求を受けると、プログラムA、Xの動作状況と、システムで使用されるプログラムA、B、X等のそれぞれのプログラムの相関関係が定義されたプログラム相関関係情報とに基づいて、プログラムBの要求に対してプログラム専用実行用メモリ領域を貸与するべきプログラムを抽出する。例えばプログラムAが抽出されると、プログラム専用実行用メモリ管理部130はプログラムAのプログラム専用実行用メモリ領域をプログラムBに割り当てる。
【選択図】図2
【解決手段】RAM101は、プログラムコードを格納するプログラム専用実行用メモリ領域11と通常領域12とに管理されている。プログラムA、Xは、プログラム専用実行用メモリ領域が固定的に割り当てられている。プログラム専用実行用メモリ管理部は、プログラムBからメモリ領域を求める要求を受けると、プログラムA、Xの動作状況と、システムで使用されるプログラムA、B、X等のそれぞれのプログラムの相関関係が定義されたプログラム相関関係情報とに基づいて、プログラムBの要求に対してプログラム専用実行用メモリ領域を貸与するべきプログラムを抽出する。例えばプログラムAが抽出されると、プログラム専用実行用メモリ管理部130はプログラムAのプログラム専用実行用メモリ領域をプログラムBに割り当てる。
【選択図】図2
Description
この発明は、RAM(Random Access Memory)上におけるメモリ領域をプログラムに割り当てる実行用メモリ領域割当装置及び実行用メモリ領域割当プログラム及びこの実行用メモリ領域割当プログラムを記録した記録媒体に関する。
(プログラム実行可能なメモリ)
現在のコンピュータシステム、特に組み込み機器を含むコンピュータシステムにおいて、プログラム実行のためにそのプログラムコードを配置するメモリは、RAM、またはXIP(eXecute In Plane)可能な不揮発メモリである。
現在のコンピュータシステム、特に組み込み機器を含むコンピュータシステムにおいて、プログラム実行のためにそのプログラムコードを配置するメモリは、RAM、またはXIP(eXecute In Plane)可能な不揮発メモリである。
プログラムコードをRAMに配置するシステムでは、ほとんどの場合、実行可能なプログラムコードはRAMに配置され、実行可能になる前のプログラムコードは、HDD(Hard Disk Drive)やNAND型Flashメモリに格納されている。CPU(Central Processing Unit)は、これらHDDやNAND型Flashメモリ上のプログラムコードを直接実行することは出来ないため、プログラムコードをRAMに読み込んで実行する。
(RAMへの読込方式)
このRAMへの読み込み、およびプログラム実行用メモリ制御方法においては、プログラム起動時にすべてのプログラムコードをRAMに読み込む方法か、プログラムコード中の必要になった領域のみを動的にRAMに読み込む方式が一般的である。後者(動的読み込み)の方法においては、MMU(Memory Management Unit)を利用するのが一般的であり、MMUの管理単位をページと呼ぶことから、デマンドページング方式などと呼ばれている。
このRAMへの読み込み、およびプログラム実行用メモリ制御方法においては、プログラム起動時にすべてのプログラムコードをRAMに読み込む方法か、プログラムコード中の必要になった領域のみを動的にRAMに読み込む方式が一般的である。後者(動的読み込み)の方法においては、MMU(Memory Management Unit)を利用するのが一般的であり、MMUの管理単位をページと呼ぶことから、デマンドページング方式などと呼ばれている。
(デマンドページング方式の特徴)
デマンドページング方式の場合、ページ単位にRAMの使用をやめて別の用途に使用し、再度必要になった場合にそのページのプログラムコードを不揮発メモリから読み込むことが一般的である。このような特徴のため、プログラムコードをすべて読み込む方式と比べて、同じプログラムを実行するのに必要なRAM容量が少なくて済むという利点がある。一方、いったんプログラムコードをロードしたメモリの解放と再読み込みを行うと、速度性能が劣化するという欠点がある。
デマンドページング方式の場合、ページ単位にRAMの使用をやめて別の用途に使用し、再度必要になった場合にそのページのプログラムコードを不揮発メモリから読み込むことが一般的である。このような特徴のため、プログラムコードをすべて読み込む方式と比べて、同じプログラムを実行するのに必要なRAM容量が少なくて済むという利点がある。一方、いったんプログラムコードをロードしたメモリの解放と再読み込みを行うと、速度性能が劣化するという欠点がある。
(NOR型Flashメモリ)
代表的なXIP可能な不揮発メモリにNOR型Flashメモリがある。NOR型Flashメモリに、プログラムコードを格納した場合、CPUのプログラムカウンタに、NOR型Flashメモリ上のアドレスを指定すれば、プログラムコード用にRAMを消費することなくプログラムを実行することが出来る。しかし、NOR型Flashメモリからの読み込みは、RAMからの読み込みに比べて遅いため、プログラムの速度性能が劣化するという欠点がある。
代表的なXIP可能な不揮発メモリにNOR型Flashメモリがある。NOR型Flashメモリに、プログラムコードを格納した場合、CPUのプログラムカウンタに、NOR型Flashメモリ上のアドレスを指定すれば、プログラムコード用にRAMを消費することなくプログラムを実行することが出来る。しかし、NOR型Flashメモリからの読み込みは、RAMからの読み込みに比べて遅いため、プログラムの速度性能が劣化するという欠点がある。
(RAMの一部固定的使用)
特表2007−501450号公報「コンピュータ装置のデータにアクセスする方法」は、プログラムコードがNAND型Flashメモリに格納されているシステムにおいて、機器のブートアップ時にすべてのプログラムコードをRAMにロードすると、ブートアップ時間がかかり、かつ、RAMを大量に消費することから、共通的に利用されるプログラムであるコアOS(Operating System)のプログラムコードおよびそれに関連の深いプログラムコードのみをブートアップ時にRAMに固定的に読み込み、それ以外のプログラムについては必要に応じて読み込む方式について述べている。
特表2007−501450号公報「コンピュータ装置のデータにアクセスする方法」は、プログラムコードがNAND型Flashメモリに格納されているシステムにおいて、機器のブートアップ時にすべてのプログラムコードをRAMにロードすると、ブートアップ時間がかかり、かつ、RAMを大量に消費することから、共通的に利用されるプログラムであるコアOS(Operating System)のプログラムコードおよびそれに関連の深いプログラムコードのみをブートアップ時にRAMに固定的に読み込み、それ以外のプログラムについては必要に応じて読み込む方式について述べている。
特表2007−501450号公報のように、プログラムコードをRAMに固定的に割り当てるものと、そうでないものを分離することは、他の理由によっても必要になる場合がある。
(タイプ1)
ひとつの例として、プログラムコードはNOR型のFlashメモリに格納されており、XIPで実行するが、共通的かつ比較的長い時間にわたって頻繁に利用されるOSのプログラムコードや、高速実行を必要とするプログラムに対しては、固定的にRAMを割り当てることがある。
ひとつの例として、プログラムコードはNOR型のFlashメモリに格納されており、XIPで実行するが、共通的かつ比較的長い時間にわたって頻繁に利用されるOSのプログラムコードや、高速実行を必要とするプログラムに対しては、固定的にRAMを割り当てることがある。
(タイプ2)
また別の例として、デマンドページング方式によりプログラムコードをRAMに読み込んで実行するが、ページの解放・再読み込みが発生することによる速度性能の低下をさけるため、高速実行を必要とするプログラムに対しては、固定的にメモリを割り当てる、あるいは解放されることのないページを割り当てることがある。
また別の例として、デマンドページング方式によりプログラムコードをRAMに読み込んで実行するが、ページの解放・再読み込みが発生することによる速度性能の低下をさけるため、高速実行を必要とするプログラムに対しては、固定的にメモリを割り当てる、あるいは解放されることのないページを割り当てることがある。
(タイプ3)
さらに別の例として、デマンドページング方式によりプログラムコードをRAMに読み込んで実行するが、ページサイズが小さいとTLB(Translation Lookaside Buffer)の消費量が相対的に多くなって実行性能が劣化するために、ページサイズの大きい固定的なメモリを割り当てることがある。
さらに別の例として、デマンドページング方式によりプログラムコードをRAMに読み込んで実行するが、ページサイズが小さいとTLB(Translation Lookaside Buffer)の消費量が相対的に多くなって実行性能が劣化するために、ページサイズの大きい固定的なメモリを割り当てることがある。
最後の例(タイプ3)について補足する。デマンドページング方式の実現の有無にかかわらず、メモリ保護機能を有するOSでは、MMUを利用してメモリ管理を行う。MMUは、物理メモリと論理メモリの対応を管理するための機構であるが、先に述べたようにページを管理単位としており、物理メモリと論理メモリの対応表をページテーブルと呼ぶ。
MMUを利用した場合、プログラムは論理アドレスで動作するが、実際にその論理アドレスの指すメモリにアクセスするためには、CPUは論理アドレスを物理アドレスに変換しなければならない。この処理を行うためには、ページテーブルを参照しなければならないが、多くのCPUではページテーブルはRAM上にあり、CPU内部のキャッシュメモリなどと比較してかなり低速である。このため、前記のTLBという機構が存在する。TLBの1つのエントリは、MMUで管理する1ページの情報をキャッシュしている。TLBはキャッシュメモリのようにCPU内部にあり、高速である。したがって、まずTLBを参照して、その論理アドレスの情報がキャッシュされていれば、ページテーブルを参照せずに高速に物理アドレスへの変換が可能となる。さらに、TLBの中でも、マイクロTLBという少数の、より高速なTLBを搭載して、このアドレス変換をより高速に行うCPUもある。
このTLBの数はCPUにより異なるが、組み込み機器で利用されるような小型のCPUでは、せいぜい128エントリ程度であり、さらにマイクロTLBは10エントリ程度である。
あるプログラムのプログラムコードが1MBであったとする。ページサイズを4KBとすると、全体で256ページあることになるが、これは先の128や10といったTLBのエントリ数に比べて大きく、TLBのミスヒットの可能性が高くなる。すなわち、物理アドレスに変換したい論理アドレスの情報がTLBやマイクロTLBになく、ページテーブルの探索を必要とする可能性が高くなり、結果としてプログラムの実行速度が低下する。もしページサイズが1MBであれば、1ページで済むために、TLBミスヒットの可能性は小さくなり、実行性能の劣化も小さい。
しかし、ページは、物理的に連続するメモリでなくてはならない。したがって、ページサイズを1MBとすると、1MBより小さいプログラムや、1MBより大きくともプログラムの最後の1MB未満の部分の存在により、メモリ全体の利用効率が低くなる。また、同時にRAM上に存在できるページ数そのものが少なくなることや、プログラムコードのメモリへの読み込みに時間がかかるため、システム全体で見た場合、実行性能が劣化する。
したがって、高速性を要求するプログラムに対しては、ページサイズの大きなメモリを割り当て、その他のプログラムに対しては、通常の小さなページサイズでのデマンドページングを採用することがある。
特表2007−501450号公報
上記のように、プログラムの高速実行のため、固定的なRAMを特定のプログラムに対して割り当てた場合、そのプログラムが動作していない、あるいは使用状況によっては高速実行を必要としていない場合にも、RAMを固定的に占有するために、システム全体で動的に利用できるRAMが減少してしまう。特に、RAM容量が限られる組込み機器で課題となる。
本発明の目的は、プログラムの高速実行を確保しつつ、記憶容量が限られるRAMについての効率的利用を阻害しない装置の提供を目的とする。
この発明の実行用メモリ領域割当装置は、
所定のRAM(Random Access Memory)のメモリ領域を割り当てる対象となる複数のプログラムの相関関係が定義されたプログラム相関関係情報を格納するプログラム相関関係情報格納部と、
前記所定のRAMにおけるメモリ領域であってCPU(Central Processing Unit)による直接実行が可能なプログラムコードが記憶されるメモリ領域として予め設定されたプログラム専用実行用メモリ領域が割り当てられておらず、かつ、前記複数のプログラムのうちの一つである第1プログラムからメモリ領域を求める要求を受けると、前記複数のプログラムに含まれるプログラムであって前記プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムの動作状況を取得し、取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第1プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第2プログラムを検索するプログラム検索部と、
前記プログラム検索部による検索の結果、前記第2プログラムがヒットした場合には、ヒットした前記第2プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域の少なくとも一部を前記第1プログラムに一時的に割り当てるメモリ割当部と
を備えたことを特徴とする。
所定のRAM(Random Access Memory)のメモリ領域を割り当てる対象となる複数のプログラムの相関関係が定義されたプログラム相関関係情報を格納するプログラム相関関係情報格納部と、
前記所定のRAMにおけるメモリ領域であってCPU(Central Processing Unit)による直接実行が可能なプログラムコードが記憶されるメモリ領域として予め設定されたプログラム専用実行用メモリ領域が割り当てられておらず、かつ、前記複数のプログラムのうちの一つである第1プログラムからメモリ領域を求める要求を受けると、前記複数のプログラムに含まれるプログラムであって前記プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムの動作状況を取得し、取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第1プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第2プログラムを検索するプログラム検索部と、
前記プログラム検索部による検索の結果、前記第2プログラムがヒットした場合には、ヒットした前記第2プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域の少なくとも一部を前記第1プログラムに一時的に割り当てるメモリ割当部と
を備えたことを特徴とする。
本発明により、プログラムの高速実行を確保しつつ、記憶容量が限られるRAMについての効率的利用を阻害しない装置を提供できる。
実施の形態1.
図1〜図6を参照して実施の形態1を説明する。図1に実施の形態1の構成を示す。
図1〜図6を参照して実施の形態1を説明する。図1に実施の形態1の構成を示す。
図1は、実施の形態1の想定する携帯端末、携帯電話等である組み込み機器1000(実行用メモリ領域割当装置)のハードウェア資源の一例を示す図である。図1において、組み込み機器1000は、プログラムを実行するCPU102を備えている。CPU102は、バスを介して、RAM101、プログラムコード格納不揮発メモリ100と接続され、これらのハードウェアデバイスを制御する。RAM101は、揮発性メモリの一例である。なお、プログラムコード格納不揮発メモリ100は、後述のように、XIP実行が可能なNOR型Flashメモリであるとする。
プログラムコード格納不揮発メモリ100には、図1の上部にソフトウェア構成として示す各種のプログラムが格納されている。
格納されているプログラムは、
(1)オペレーティングシステム110(OS110)、
(2)プログラムであるプログラム相関関係情報管理部131、
(3)メニューアプリケーション120(以下、メニューアプリ120という)、
(4)プログラムA、
(5)プログラムX(図示していない)、
(6)プログラムD、
(7)プログラムB
(8)プログラムC
などである。図1は、プログラムAとプログラムDとが動作している状態を示している。プログラムAとプログラムXとには、後述の図2に示すように、プログラム専用実行用メモリ領域が予め固定的に割り当てられているものとする。また、プログラムAとプログラムX以外の、プログラムD、プログラムB、プログラムCは、プログラムコード格納不揮発メモリ100においてXIP実行されるものとする。
格納されているプログラムは、
(1)オペレーティングシステム110(OS110)、
(2)プログラムであるプログラム相関関係情報管理部131、
(3)メニューアプリケーション120(以下、メニューアプリ120という)、
(4)プログラムA、
(5)プログラムX(図示していない)、
(6)プログラムD、
(7)プログラムB
(8)プログラムC
などである。図1は、プログラムAとプログラムDとが動作している状態を示している。プログラムAとプログラムXとには、後述の図2に示すように、プログラム専用実行用メモリ領域が予め固定的に割り当てられているものとする。また、プログラムAとプログラムX以外の、プログラムD、プログラムB、プログラムCは、プログラムコード格納不揮発メモリ100においてXIP実行されるものとする。
以下に述べる実施の形態の説明において、「〜部」として説明するものは、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち「〜部」として説明するものは、プログラムとして実現され、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図1において、プログラムコードは、NOR型Flashメモリであるプログラムコード格納不揮発メモリ100に格納されている。このNOR型FlashメモリからはXIP実行が可能である。前記のように組み込み機器1000は、プログラムコード格納不揮発メモリ100、プログラムコードあるいはデータ用に使用するためのRAM101、およびプログラム実行を行うCPU102を備えている。CPU102は、MMU103を備えている。OS110は、MMU103を利用した仮想記憶を使用して動作するOSであり、MMU103を利用してメモリ管理を行うメモリ管理部111と、プロセス管理部112を備える。メモリ管理部111とプロセス管理部112とは、メモリ割当部を構成する。アプリケーションソフトウェアとして、メニューアプリ120があり、アプリケーションとして、プログラムA、プログラムDが動作していることを示している。
(1)プログラムAは、多くの場合、常駐アプリケーションとして動作するプログラムであり、専用のホットキーなどによりすぐに呼び出すことができ、高い性能を要求するリッチUI(User Interface)を有しているため、プログラム専用実行用メモリを割り当てられている。
(2)プログラムXは、常時起動するものではないが、非常に速度性能を要求するアプリケーションであり、プログラム専用実行用メモリを割り当てられている。
(3)プログラムDについては、プログラムDのプログラムコードはNOR型Flashメモリ上にあり、XIP実行される。このため、プログラムDのRAM101への割り当ては不要としている。
(4)後述するプログラムB、プログラムCも、プログラムDと同様にNOR型Flashメモリ上でXIP実行される。
(2)プログラムXは、常時起動するものではないが、非常に速度性能を要求するアプリケーションであり、プログラム専用実行用メモリを割り当てられている。
(3)プログラムDについては、プログラムDのプログラムコードはNOR型Flashメモリ上にあり、XIP実行される。このため、プログラムDのRAM101への割り当ては不要としている。
(4)後述するプログラムB、プログラムCも、プログラムDと同様にNOR型Flashメモリ上でXIP実行される。
図1の組み込み機器1000の構成は、通常見られるハードウェア・ソフトウェア構成であり、これに加えて、組み込み機器1000は、OS110内にプログラム専用実行用メモリ管理部130(プログラム検索部)を備えるとともに、プログラム相関関係情報管理部131(プログラム相関関係情報格納部)を備えた点が特徴である。
図2に、このシステムにおいて使用されるRAM101の使用状況の例を示す。RAM101では、OS110のメモリ管理部111が、図2の上部にあたるプログラム専用実行用メモリ領域11と、通常領域12とに分けて管理する。なお、メモリ管理部111は、RAM101の全体をどのように使い分けるか管理するが、このRAM101の管理のうち、プログラム専用実行用メモリ領域11部分の具体的な割り当てについては、プログラム専用実行用メモリ管理部130に権限が委譲されている構成である。
図2の中の破線は、MMU103で管理するページの境界を表す。太線で示す領域は、各プログラムが利用する領域である。プログラム専用実行用メモリ領域11は、先に述べたTLBの性能問題を考慮して、1MBサイズのページとし、通常領域12はメモリ利用効率を考慮して4KBのページとしている。なお、図2は、領域の大きさの関係を適切には表していない。
図2の中の破線は、MMU103で管理するページの境界を表す。太線で示す領域は、各プログラムが利用する領域である。プログラム専用実行用メモリ領域11は、先に述べたTLBの性能問題を考慮して、1MBサイズのページとし、通常領域12はメモリ利用効率を考慮して4KBのページとしている。なお、図2は、領域の大きさの関係を適切には表していない。
プログラム専用実行用メモリ領域11には、まずOSコードやOSに関連の深いドライバ群の実行用コードが割り当てられている。さらに、高速実行のため、プログラムAおよびプログラムXが割り当てられている。なお、図2ではプログラムA,プログラムXのコード領域は1MBのページ単位に使用しているが、これは管理を容易にするためであり、ページをまたがっていてもよい。
通常領域12には、OSやドライバが利用するデータ、プログラムAが利用するデータ、プログラムXが利用するデータが割り当てられている他、プログラム専用実行用メモリ領域を割り当てられていない、プログラムDのためのデータ領域が割り当てられている。プログラムDのプログラムコードはNOR型Flashメモリ上にあり、XIP実行されるため、RAM101への割り当ては不要である。
図3に、プログラム相関関係情報管理部131の持つプログラム相関関係情報表20の例を示す。相関関係であるため、同じ組合せについては一方のみを記載する。また、このシステムの想定では、同じプログラムは1つしか起動できないため、同じプログラムどうしの組合せもない。本実施の形態1では、
(1)「相関なし」、
(2)「互いに連携して動作する」、
(3)「排他的に動作する」
の3つの相関関係を定義している。
より実際的なシステムでは、あるプログラムから別のプログラムを起動する場合や、連携する場合にも一方が他方を利用するだけでその逆はない、などの細かな相関関係を定義することができる。
(1)「相関なし」、
(2)「互いに連携して動作する」、
(3)「排他的に動作する」
の3つの相関関係を定義している。
より実際的なシステムでは、あるプログラムから別のプログラムを起動する場合や、連携する場合にも一方が他方を利用するだけでその逆はない、などの細かな相関関係を定義することができる。
ここで、非常に大きなデータ用メモリ領域を必要とするプログラムB(第1プログラムの例)が動作する場合を考える。メニューアプリ120により、ユーザがプログラムBの起動を指示し、OS110の機能、例えばプロセス管理部112やメモリ管理部111を用いて、プロセスの起動が行われる。ここで、通常の場合にはOS110に依頼してメモリ管理部111を通して、メモリ獲得を依頼し、RAM101の通常領域12からメモリを確保する。その場合、RAM101の利用可能な容量が十分にない場合や、RAM101は確保できても、さらに追加で起動するプログラムのためのメモリが確保できない場合がある。そのため、本実施の形態1では、プログラム専用実行用メモリ領域11を有効に利用する。
本実施の形態1では、大きなデータ用メモリ領域の獲得の際に、プログラムBは、通常のOSのメモリ獲得ではなく、プログラム専用実行用メモリ管理部130を利用したメモリ獲得を行う。この場合、通常領域12の獲得でははなく、プログラム専用実行用メモリ領域11の獲得処理が開始されるのは、例えば、予め獲得処理する判定条件をもっているからである。
例えば、次の様な場合である。
(a)メモリ管理部111は、RAM101全体のメモリ領域使用状況を管理している(ただし、上記のように、プログラム専用実行用メモリ領域11部分の具体的な割り当てについては、プログラム専用実行用メモリ管理部130に権限が委譲されている。)
(b)一方、プログラム専用実行用メモリ管理部130は、プログラム専用実行用メモリ領域11の貸与可能性の検討処理(つまり後述の図4の処理)を「する/しない」の判定条件を持っている。
(c)プログラムBから要求があると、プログラム専用実行用メモリ管理部130は、前記判定条件とRAM使用状況とから、プログラムBに対するプログラム専用実行用メモリ領域11の割り当て検討処理(図4)を実行するかどうかを決める。実行すると判定すると図4の処理がされ、実行しないと判定すると通常領域が割り当てられる。
(d)さらに具体的な判定基準としては、要求しているメモリ容量自体が特定の値を超える、残りの通常容量のXX%以上のメモリを要求する、などの判断基準が考えられる。
まず、プログラム専用実行用メモリ領域11の獲得処理について説明する。
例えば、次の様な場合である。
(a)メモリ管理部111は、RAM101全体のメモリ領域使用状況を管理している(ただし、上記のように、プログラム専用実行用メモリ領域11部分の具体的な割り当てについては、プログラム専用実行用メモリ管理部130に権限が委譲されている。)
(b)一方、プログラム専用実行用メモリ管理部130は、プログラム専用実行用メモリ領域11の貸与可能性の検討処理(つまり後述の図4の処理)を「する/しない」の判定条件を持っている。
(c)プログラムBから要求があると、プログラム専用実行用メモリ管理部130は、前記判定条件とRAM使用状況とから、プログラムBに対するプログラム専用実行用メモリ領域11の割り当て検討処理(図4)を実行するかどうかを決める。実行すると判定すると図4の処理がされ、実行しないと判定すると通常領域が割り当てられる。
(d)さらに具体的な判定基準としては、要求しているメモリ容量自体が特定の値を超える、残りの通常容量のXX%以上のメモリを要求する、などの判断基準が考えられる。
まず、プログラム専用実行用メモリ領域11の獲得処理について説明する。
図4に、使用するプログラム専用実行用メモリ領域11をプログラム専用実行用メモリ管理部130が確定する手順を示す。
(プログラム一覧、プログラム相関関係情報及びプログラム実行状態の取得)
(1)プログラム専用実行用メモリ管理部130は、自身が管理するプログラム専用実行用メモリ領域11を割り当てているプログラム一覧を参照する(S401)。プログラム一覧は、プログラム専用実行用メモリ管理部130が管理しているかあるいはメモリ管理部111が管理している。
(2)プログラム相関関係情報管理部131からプログラム相関関係情報20を取得し(S402)、
(3)プロセス管理部112から各プログラムの実行状態を取得する(S403)。
(1)プログラム専用実行用メモリ管理部130は、自身が管理するプログラム専用実行用メモリ領域11を割り当てているプログラム一覧を参照する(S401)。プログラム一覧は、プログラム専用実行用メモリ管理部130が管理しているかあるいはメモリ管理部111が管理している。
(2)プログラム相関関係情報管理部131からプログラム相関関係情報20を取得し(S402)、
(3)プロセス管理部112から各プログラムの実行状態を取得する(S403)。
(プログラムの抽出:要求プログラム=プログラムB)
プログラム専用実行用メモリ管理部130はS401で取得したプログラム一覧に対して、それぞれポイントをつけてそのポイントによってプログラムを抽出するものとする。この場合、メモリの利用を要求する要求プログラムである「プログラムB」に対して、
(1)プログラム相関関係情報20において「連携関係」のあるものは除外し(S405)、
(2)「排他関係」のあるものは2ポイントとし(S406)、
(3)プロセス管理部112から得た情報により、プログラムが停止状態にある場合には1ポイントとする(S407)。
なお、プログラム専用実行用メモリ領域11は固定的に割り当てられているため、そのプログラムが動作していなくとも、割り当てられたままであるが、そのプログラムが起動されたときには、再び利用される可能性があり、ここではプログラムが停止している状態よりも、排他関係にあるほうに高いポイントをあてている。ポイント付与の結果、「最もポイントの高いプログラム」を抽出する(S408)。これにより、プログラム専用実行用メモリ領域11を貸与するプログラムを決定する。すなわち、最も高得点のプログラムの領域をプログラムBに貸与する。
プログラム専用実行用メモリ管理部130はS401で取得したプログラム一覧に対して、それぞれポイントをつけてそのポイントによってプログラムを抽出するものとする。この場合、メモリの利用を要求する要求プログラムである「プログラムB」に対して、
(1)プログラム相関関係情報20において「連携関係」のあるものは除外し(S405)、
(2)「排他関係」のあるものは2ポイントとし(S406)、
(3)プロセス管理部112から得た情報により、プログラムが停止状態にある場合には1ポイントとする(S407)。
なお、プログラム専用実行用メモリ領域11は固定的に割り当てられているため、そのプログラムが動作していなくとも、割り当てられたままであるが、そのプログラムが起動されたときには、再び利用される可能性があり、ここではプログラムが停止している状態よりも、排他関係にあるほうに高いポイントをあてている。ポイント付与の結果、「最もポイントの高いプログラム」を抽出する(S408)。これにより、プログラム専用実行用メモリ領域11を貸与するプログラムを決定する。すなわち、最も高得点のプログラムの領域をプログラムBに貸与する。
例えば、図2、図3の状態の設例で考える。即ち、図2に示すように、プログラムA、プログラムXがプログラム専用実行用メモリ領域11を割当てられている状態とする。また、図3に示す「プログラム相関関係情報」であるとする。この場合、次の(1)、(2)の様である。
(1)「要求プログラム=プログラムB」の場合、プログラムXは、プログラムBと「連携関係あり」であるため除外され、よって、プログラムAが抽出される。
(2)「利用希望プログラム=プログラムC」の場合、
あるいは、プログラムCがメモリを要求したとする。
この場合、図3によればプログラムCは、プログラムXとは「排他関係」(+2)にあるが、プログラムAとは「相関関係なし」(0)であるため、この場合、プログラムXが抽出される。
(1)「要求プログラム=プログラムB」の場合、プログラムXは、プログラムBと「連携関係あり」であるため除外され、よって、プログラムAが抽出される。
(2)「利用希望プログラム=プログラムC」の場合、
あるいは、プログラムCがメモリを要求したとする。
この場合、図3によればプログラムCは、プログラムXとは「排他関係」(+2)にあるが、プログラムAとは「相関関係なし」(0)であるため、この場合、プログラムXが抽出される。
また、各プログラムの状態として、メニューアプリ120の把握する状態を使用することも有効である。本実施の形態1のシステムが携帯端末のように画面が小さく、ユーザが直接操作できるプログラムは画面前面に表示されているプログラムのみであるとする。すると、例えば先の図3で説明したポイントでは、同じポイントであっても、画面を有するアプリであって、画面裏面(最前面ではない)のプログラムへのポイントを高くしてプログラムの抽出を行うことが出来る。
(抽出プログラム決定後の処理)
続く処理を図5を用いて説明する。図5は、プログラム専用実行用メモリ管理部130がメモリ管理部111,プロセス管理部112を用いて行なう動作である。「要求プログラム=プログラムB」の場合であって、抽出されるプログラムはプログラムAとする。プログラムAのプログラム専用実行用メモリ領域11を使用することは決定した。このとき、プログラムAは実行状態にあるため(図4のS403で取得した実行状態による)、この状態を継続する必要がある。
続く処理を図5を用いて説明する。図5は、プログラム専用実行用メモリ管理部130がメモリ管理部111,プロセス管理部112を用いて行なう動作である。「要求プログラム=プログラムB」の場合であって、抽出されるプログラムはプログラムAとする。プログラムAのプログラム専用実行用メモリ領域11を使用することは決定した。このとき、プログラムAは実行状態にあるため(図4のS403で取得した実行状態による)、この状態を継続する必要がある。
(プログラムAの実行継続)
まず、S501において、プログラム専用実行用メモリ管理部130は、プロセス管理部112により、プログラムAを一時停止状態にする。この後の処理は十分短く終了するため、ユーザに対しては一時停止したことはほとんどわからない。また、先に述べた携帯端末の例のように、画面裏面にあれば、まったくわからない。S502において、プログラム専用実行用メモリ管理部130は、メモリ管理部111により、プログラム専用実行用メモリ領域11に割り当てていたプログラムAのプログラムコードのメモリを、実行可能なメモリであるプログラムコード格納不揮発メモリ100(プログラム専用実行用メモリ領域11とは異なるいずれかのメモリ領域の例)に変更する。これは、MMUを利用したメモリ割り当ての変更のみで済み、コピー処理などは不要である。S503において、プログラム専用実行用メモリ管理部130は、プロセス管理部112により、プログラムAの実行状態を元に戻す。S504において、プログラム専用実行用メモリ管理部130は、メモリ管理部111により、プログラムAが使用しなくなったプログラム専用実行用メモリ領域11を、プログラムBに割り当てる(S504)。これにより、プログラムAの実行は継続しつつ(ただし、実行速度は遅い)、プログラムBに対して大量のメモリを使用させることが出来る。
まず、S501において、プログラム専用実行用メモリ管理部130は、プロセス管理部112により、プログラムAを一時停止状態にする。この後の処理は十分短く終了するため、ユーザに対しては一時停止したことはほとんどわからない。また、先に述べた携帯端末の例のように、画面裏面にあれば、まったくわからない。S502において、プログラム専用実行用メモリ管理部130は、メモリ管理部111により、プログラム専用実行用メモリ領域11に割り当てていたプログラムAのプログラムコードのメモリを、実行可能なメモリであるプログラムコード格納不揮発メモリ100(プログラム専用実行用メモリ領域11とは異なるいずれかのメモリ領域の例)に変更する。これは、MMUを利用したメモリ割り当ての変更のみで済み、コピー処理などは不要である。S503において、プログラム専用実行用メモリ管理部130は、プロセス管理部112により、プログラムAの実行状態を元に戻す。S504において、プログラム専用実行用メモリ管理部130は、メモリ管理部111により、プログラムAが使用しなくなったプログラム専用実行用メモリ領域11を、プログラムBに割り当てる(S504)。これにより、プログラムAの実行は継続しつつ(ただし、実行速度は遅い)、プログラムBに対して大量のメモリを使用させることが出来る。
(プログラムBの実行終了後の処理)
ここで、プログラムBの実行が終了したときの処理を図6を用いて説明する。図6は、プログラム専用実行用メモリ管理部130がメモリ管理部111、プロセス管理部112を用いて行なう動作である。プログラムが終了すると、プロセス管理部112で終了処理が行なわれ、メモリ管理部111でメモリ解放が行なわれ(利用終了処理)、プログラム専用実行用メモリ管理部130に通知される。この流れに従って、プログラム専用実行用メモリ管理部130に対して、プログラムBに割り当てていたメモリの利用終了がメモリ管理部111から通知されると(プログラムBに対する割り当ては解除されているものとする)、プログラム専用実行用メモリ管理部130は、プログラムAのプログラムコードをプログラムコード格納不揮発メモリ100(NOR型Flashメモリ)からプログラム専用実行用メモリ領域11にコピーする(S601)。このコピー中は、プログラムAは、まだNOR型Flashメモリ上でXIPにより低速ではあるが実行可能である。したがって、プログラムBが終了した後にプログラムAを利用することは可能である。メモリのコピーを待たないため、実行性能の高速性は得られなくとも、ユーザに対する応答性は得られている。さて、プログラムAのコピーが完了すると、プログラム専用実行用メモリ管理部130は、プロセス管理部112により、プログラムコード格納不揮発メモリ100上で実行されているプログラムAを一時停止し(S602)、メモリ管理部111によりプログラムコードのメモリ割り当てを元に戻し(S603)、再度プログラムAの実行状態を元に戻す(S604)。
ここで、プログラムBの実行が終了したときの処理を図6を用いて説明する。図6は、プログラム専用実行用メモリ管理部130がメモリ管理部111、プロセス管理部112を用いて行なう動作である。プログラムが終了すると、プロセス管理部112で終了処理が行なわれ、メモリ管理部111でメモリ解放が行なわれ(利用終了処理)、プログラム専用実行用メモリ管理部130に通知される。この流れに従って、プログラム専用実行用メモリ管理部130に対して、プログラムBに割り当てていたメモリの利用終了がメモリ管理部111から通知されると(プログラムBに対する割り当ては解除されているものとする)、プログラム専用実行用メモリ管理部130は、プログラムAのプログラムコードをプログラムコード格納不揮発メモリ100(NOR型Flashメモリ)からプログラム専用実行用メモリ領域11にコピーする(S601)。このコピー中は、プログラムAは、まだNOR型Flashメモリ上でXIPにより低速ではあるが実行可能である。したがって、プログラムBが終了した後にプログラムAを利用することは可能である。メモリのコピーを待たないため、実行性能の高速性は得られなくとも、ユーザに対する応答性は得られている。さて、プログラムAのコピーが完了すると、プログラム専用実行用メモリ管理部130は、プロセス管理部112により、プログラムコード格納不揮発メモリ100上で実行されているプログラムAを一時停止し(S602)、メモリ管理部111によりプログラムコードのメモリ割り当てを元に戻し(S603)、再度プログラムAの実行状態を元に戻す(S604)。
以上のように、高速実行を必要とするプログラムのために、専用のプログラム実行用メモリ領域を提供しながらも、大量のデータ用メモリを必要とするプログラム等のために限られたメモリ(RAM)を効率よく利用することが出来る。
本実施の形態1では、NOR型Flashメモリを利用したが、XIPを利用できないNAND型Flashメモリを利用することも可能である。この場合、プログラムAがメモリ(プログラム専用実行用メモリ領域11)を貸与中に実行される場合には、NAND型Flashメモリから通常領域12(プログラム専用実行用メモリ領域11とは異なるいずれかのメモリ領域の一例)にプログラムAのプログラムコードをコピーして実行することが必要である。先に述べたように、このような場合には一般的にプログラムコードを一括コピーする方法、または必要に応じてページ単位にコピーする方法があるが、必要に応じてページ単位にコピーする方法の方が、必要となるメモリ量を制限でき、またコピー時間が短くなるため適切である。
実施の形態2.
次に実施の形態2を説明する。実施の形態2では、次の実施例1〜実施例3を説明する。
(1)実施例1では、実施の形態1でプログラムAのプログラム専用実行用メモリ領域11をプログラムBに貸与する場合を説明したが、このプログラムBについて、プログラム専用実行用メモリ領域11の貸与の見直しをする場合を説明する。
(2)実施例2では、実施の形態1でプログラム専用実行用メモリ管理部130がプログラムAを抽出したが(図4のS408)、プログラム専用実行用メモリ管理部130が該当するプログラムを抽出できない場合の手当てを説明する。
(3)実施例3では、プログラム専用実行用メモリ領域11が割り当てられているプログラムに静的あるいは動的に後述の「プログラム優先度」を付与し、プログラム専用実行用メモリ管理部130によるプログラム専用実行用メモリ管理部130の貸与判定において「プログラム優先度」を使用する場合を説明する。
次に実施の形態2を説明する。実施の形態2では、次の実施例1〜実施例3を説明する。
(1)実施例1では、実施の形態1でプログラムAのプログラム専用実行用メモリ領域11をプログラムBに貸与する場合を説明したが、このプログラムBについて、プログラム専用実行用メモリ領域11の貸与の見直しをする場合を説明する。
(2)実施例2では、実施の形態1でプログラム専用実行用メモリ管理部130がプログラムAを抽出したが(図4のS408)、プログラム専用実行用メモリ管理部130が該当するプログラムを抽出できない場合の手当てを説明する。
(3)実施例3では、プログラム専用実行用メモリ領域11が割り当てられているプログラムに静的あるいは動的に後述の「プログラム優先度」を付与し、プログラム専用実行用メモリ管理部130によるプログラム専用実行用メモリ管理部130の貸与判定において「プログラム優先度」を使用する場合を説明する。
(実施例1)
まず実施例1を説明する。実施の形態2における実施例1では、プログラム専用実行用メモリ管理部130は、抽出されたプログラムA(第2プログラム)の動作状況、メモリ領域の要求側であるプログラムB(第1プログラム)の動作状況、および、プログラムAとプログラムBとのプログラム相関関係情報1310に応じて、プログラムBへのプログラム専用実行用メモリ領域11の貸与を終了させる。そして、プログラム専用実行用メモリ管理部130は、プログラムBを、より低速なメモリ上での実行に切り替え、一方、プログラムAを再びプログラム専用実行用メモリ領域11上での実行に切り替える。このように、プログラム専用実行用メモリ管理部130は、抽出されたプログラムAの動作状況、要求側であるプログラムBの動作状況、および、プログラムAとプログラムBとのプログラム相関関係情報1310に応じて、プログラムBへのプログラム専用実行用メモリ領域11の貸与を終了させるが、具体例は次の様である。
(1)すなわち、プログラムの動作状況としては、画面表示の状況、直前の数秒間のCPU使用率、などがあるが、この実施例1では、「画面表示の状況」を用いて説明する。
(2)メニューアプリや、既に最前面で画面表示されているプログラムBでの操作により、プログラムA(貸与側のプログラム)が最前面となった場合、メニューアプリ(中の画面表示状況を管理している部分)からプロセス管理部112に対して、最前面アプリであることが通知される。
(3)プロセス管理部112は、メモリ管理部111を介して、プログラム専用実行用メモリ管理部130に最前面アプリの変更を通知する。
(4)プログラム専用実行用メモリ管理部130は、最前面となったプログラムAのメモリ使用状況を確認する。プログラム専用実行用メモリ管理部130は、初期設定のとおり、プログラム専用実行用メモリ領域で動作していれば何もしない。一方、プログラム専用実行用メモリ管理部130は、貸与している状況にあれば、貸与しているプログラムBを特定する(これは自身で管理している)。
(5)プログラムAが最前面表示であって、プログラムB(借りている側)よりも高速に動作することが望ましいため、プログラム専用実行用メモリ管理部130は、プログラムBへの貸与の見直しを行う。プログラム専用実行用メモリ管理部130は、プログラム相関関係情報1310により、プログラムBへの貸与を終了するか判断する。
(6)
プログラム相関関係情報1310において「排他的関係」にある場合には、そもそも貸与されていることはないので無関係である。
また、「連携関係」の場合には、再びプログラムBが最前面になる可能性があるため、貸与を終了しない。
また、「相関なし」の場合には、プログラム専用実行用メモリ管理部130は、貸与を終了する。
(7)なお、プログラム専用実行用メモリ管理部130によるプログラムの動作状況の取得については、上記の(1)〜(6)の説明のようにプログラム専用実行用メモリ管理部130にプロセス管理部112から通知しても良いし、プログラム専用実行用メモリ管理部130から、プロセス管理部112に問い合わせて動作状況を取得してもよい。
まず実施例1を説明する。実施の形態2における実施例1では、プログラム専用実行用メモリ管理部130は、抽出されたプログラムA(第2プログラム)の動作状況、メモリ領域の要求側であるプログラムB(第1プログラム)の動作状況、および、プログラムAとプログラムBとのプログラム相関関係情報1310に応じて、プログラムBへのプログラム専用実行用メモリ領域11の貸与を終了させる。そして、プログラム専用実行用メモリ管理部130は、プログラムBを、より低速なメモリ上での実行に切り替え、一方、プログラムAを再びプログラム専用実行用メモリ領域11上での実行に切り替える。このように、プログラム専用実行用メモリ管理部130は、抽出されたプログラムAの動作状況、要求側であるプログラムBの動作状況、および、プログラムAとプログラムBとのプログラム相関関係情報1310に応じて、プログラムBへのプログラム専用実行用メモリ領域11の貸与を終了させるが、具体例は次の様である。
(1)すなわち、プログラムの動作状況としては、画面表示の状況、直前の数秒間のCPU使用率、などがあるが、この実施例1では、「画面表示の状況」を用いて説明する。
(2)メニューアプリや、既に最前面で画面表示されているプログラムBでの操作により、プログラムA(貸与側のプログラム)が最前面となった場合、メニューアプリ(中の画面表示状況を管理している部分)からプロセス管理部112に対して、最前面アプリであることが通知される。
(3)プロセス管理部112は、メモリ管理部111を介して、プログラム専用実行用メモリ管理部130に最前面アプリの変更を通知する。
(4)プログラム専用実行用メモリ管理部130は、最前面となったプログラムAのメモリ使用状況を確認する。プログラム専用実行用メモリ管理部130は、初期設定のとおり、プログラム専用実行用メモリ領域で動作していれば何もしない。一方、プログラム専用実行用メモリ管理部130は、貸与している状況にあれば、貸与しているプログラムBを特定する(これは自身で管理している)。
(5)プログラムAが最前面表示であって、プログラムB(借りている側)よりも高速に動作することが望ましいため、プログラム専用実行用メモリ管理部130は、プログラムBへの貸与の見直しを行う。プログラム専用実行用メモリ管理部130は、プログラム相関関係情報1310により、プログラムBへの貸与を終了するか判断する。
(6)
プログラム相関関係情報1310において「排他的関係」にある場合には、そもそも貸与されていることはないので無関係である。
また、「連携関係」の場合には、再びプログラムBが最前面になる可能性があるため、貸与を終了しない。
また、「相関なし」の場合には、プログラム専用実行用メモリ管理部130は、貸与を終了する。
(7)なお、プログラム専用実行用メモリ管理部130によるプログラムの動作状況の取得については、上記の(1)〜(6)の説明のようにプログラム専用実行用メモリ管理部130にプロセス管理部112から通知しても良いし、プログラム専用実行用メモリ管理部130から、プロセス管理部112に問い合わせて動作状況を取得してもよい。
この実施例1の動作は、次の(1)〜(4)の様である。
(1)プログラム専用実行用メモリ管理部130は、プログラムA(第2プログラム)のプログラムコード格納不揮発メモリ100(メモリ領域の例)における動作状況と、プログラムB(第1プログラム)のプログラム専用実行用メモリ領域11における動作状況と、プログラム相関関係情報1310に定義されたプログラムAとプログラムBとの相関関係とに基づいて、プログラムBへのプログラム専用実行用メモリ領域11の割り当てを終了するかどうかを判定する。なお、プログラム専用実行用メモリ管理部130は、前記動作状況をプロセス管理部112から取得可能とする。
(2)そして、プログラム専用実行用メモリ管理部130は、プログラムBへのプログラム専用実行用メモリ領域11の割り当てを終了すると判定した場合には、メモリ管理部111により、プログラムBへのプログラム専用実行用メモリ領域11の割り当てをプログラムAへの割り当てに戻す。
(3)また、プログラム専用実行用メモリ管理部130は、プロセス管理部112により、プログラム専用実行用メモリ領域11においてプログラムAの実行を継続させる。
(4)また、プログラム専用実行用メモリ管理部130は、メモリ管理部111により、プログラムBにプログラム専用実行用メモリ領域11に代替する通常領域12における新たなメモリ領域を割り当てる。
(1)プログラム専用実行用メモリ管理部130は、プログラムA(第2プログラム)のプログラムコード格納不揮発メモリ100(メモリ領域の例)における動作状況と、プログラムB(第1プログラム)のプログラム専用実行用メモリ領域11における動作状況と、プログラム相関関係情報1310に定義されたプログラムAとプログラムBとの相関関係とに基づいて、プログラムBへのプログラム専用実行用メモリ領域11の割り当てを終了するかどうかを判定する。なお、プログラム専用実行用メモリ管理部130は、前記動作状況をプロセス管理部112から取得可能とする。
(2)そして、プログラム専用実行用メモリ管理部130は、プログラムBへのプログラム専用実行用メモリ領域11の割り当てを終了すると判定した場合には、メモリ管理部111により、プログラムBへのプログラム専用実行用メモリ領域11の割り当てをプログラムAへの割り当てに戻す。
(3)また、プログラム専用実行用メモリ管理部130は、プロセス管理部112により、プログラム専用実行用メモリ領域11においてプログラムAの実行を継続させる。
(4)また、プログラム専用実行用メモリ管理部130は、メモリ管理部111により、プログラムBにプログラム専用実行用メモリ領域11に代替する通常領域12における新たなメモリ領域を割り当てる。
実施例1については、例えばプログラムBの実行は継続しているが、ユーザの指示によりプログラムAをアクティブにした場合、特に先に述べた携帯端末のようにユーザが直接利用できるプログラムが1つである場合に有効である。プログラム専用実行用メモリ管理部130の動作は、次のように、実施の形態1の図4〜図6と、ほぼ同様である。
プログラムAを再度プログラム専用実行用メモリ領域11に切り替える方法は、図6と同じである。実施の形態1と異なるのは、プログラムBがプログラム専用実行用メモリ領域11を使用していたが、これを通常メモリ(通常領域12)に切り替える必要があるところである。これも図6とほぼ同様である。
これは、
(1)プログラムBの実行を一時停止し、
(2)プログラム専用実行用メモリ領域11の(プログラムBの)データを、通常領域に確保した別の領域にコピーし、
(3)MMUによるメモリ割り当てを変更し、
(4)プログラムBの実行を再開すればよい。
ただし、図6の場合と異なり、データの一貫性を保証するため、コピー中はプログラムBを一時停止しておく必要がある。これにより、再度プログラムAに高速性が必要になった場合、プログラム専用実行用メモリ領域11による効果を得ることが出来る。
これは、
(1)プログラムBの実行を一時停止し、
(2)プログラム専用実行用メモリ領域11の(プログラムBの)データを、通常領域に確保した別の領域にコピーし、
(3)MMUによるメモリ割り当てを変更し、
(4)プログラムBの実行を再開すればよい。
ただし、図6の場合と異なり、データの一貫性を保証するため、コピー中はプログラムBを一時停止しておく必要がある。これにより、再度プログラムAに高速性が必要になった場合、プログラム専用実行用メモリ領域11による効果を得ることが出来る。
(実施例2)
次に実施例2を説明する。実施例1ではプログラムBのメモリ割り当てを変更する方法について述べた。これと同様の方法により、プログラムBがデータメモリを要求したがプログラム専用実行用メモリ領域11を貸与するべきプログラムが抽出されず、プログラム専用実行用メモリ領域11ではなく、通常領域12がデータメモリとして割り当てられたような場合に、プログラムBのデータメモリを通常領域12から、プログラム専用実行用メモリ領域11に変更することが可能である。例えば、プログラムAが終了した、別のプログラムの起動により画面裏面に移動したなどの情報を、プロセス管理部112、メニューアプリ120からプログラム専用実行用メモリ管理部130に「通知」することにより、その判断の契機(図4の抽出判定の契機)を与えることが出来る。この「通知」は、画面遷移や、プログラム終了により、プロセス管理部112からプログラム専用実行用メモリ管理部130に送られる「通知」であり、あるいは、プログラムの起動によってメニューアプリ120からプログラム専用実行用メモリ管理部130に送られる「通知」である。
次に実施例2を説明する。実施例1ではプログラムBのメモリ割り当てを変更する方法について述べた。これと同様の方法により、プログラムBがデータメモリを要求したがプログラム専用実行用メモリ領域11を貸与するべきプログラムが抽出されず、プログラム専用実行用メモリ領域11ではなく、通常領域12がデータメモリとして割り当てられたような場合に、プログラムBのデータメモリを通常領域12から、プログラム専用実行用メモリ領域11に変更することが可能である。例えば、プログラムAが終了した、別のプログラムの起動により画面裏面に移動したなどの情報を、プロセス管理部112、メニューアプリ120からプログラム専用実行用メモリ管理部130に「通知」することにより、その判断の契機(図4の抽出判定の契機)を与えることが出来る。この「通知」は、画面遷移や、プログラム終了により、プロセス管理部112からプログラム専用実行用メモリ管理部130に送られる「通知」であり、あるいは、プログラムの起動によってメニューアプリ120からプログラム専用実行用メモリ管理部130に送られる「通知」である。
即ち、プログラムBが、プログラムの動作状況や、相関関係情報により、実行コードまたはデータ用メモリを要求したときにプログラム専用実行用メモリ領域の貸与を受けられなかった場合に、プログラムの動作状況の変化により、プログラム専用実行用メモリ領域の貸与が可能になった場合に貸与を行う。具体的な動作は、例えば次の要である。プログラム専用実行用メモリ管理部130は、プログラムBが貸与を受けられなかったということを「記録」しておく。例えば、プログラムAの終了が前述のようにプログラム専用実行用メモリ管理部130に伝えられると、プログラム専用実行用メモリ管理部130は、貸与を受けられなかった「記録」を検索する。プログラム専用実行用メモリ管理部130は、プログラムBがヒットすると、図4に示した処理(貸与可能性)を再度、評価する。プログラム専用実行用メモリ管理部130は、再度の評価により貸与可能であれば、貸与するとともに貸与が受けられなかったという「記録」を削除する。貸与不可能であれば、「記録」はその維持する。また、プログラムBの終了がプロセス管理部112からプログラム専用実行用メモリ管理部130に伝えられた場合は、貸与を受けられなかったことの「記録」を削除する。
具体的には、プログラム専用実行用メモリ管理部130は、検索によってプログラム(第2プログラム)がヒットしなかった場合には、動作状況の新たな取得を繰り返し(あるいは通知を待ち)、新たに取得された動作状況と、プログラム相関関係情報1310に定義された相関関係とに基づいて、プログラム(第2プログラム)を検索する。
(実施例3)
次に実施例3を説明する。
実施例3は、プログラムの優先度に関する実施例である。実施例3の「優先度」はプログラムに対する優先度であので、「プログラム優先度」という場合がある。後述する実施例5では管理単位(構成単位)についての優先度(構成単位優先度)と区別する。ここで「プログラム優先度」とは、プログラム専用実行用メモリ領域11を他のプログラムに貸与するに際しての、その貸与側のプログラム事態の貸与可能性の度合を示す値、数値である。なお、「優先度」が高い場合は、貸与されにくく、「優先度」が低いほど貸与され易い。一方、貸与可能性は優先度とは逆であり、「貸与可能性」が高いほど貸与され易い(優先度が低い)。
次のように、プログラムの動作状況を、プロセス管理部112や、メニューアプリ120の外部から知るのではなく、プログラム自身から知ることにより、より適切にメモリを貸与するプログラムを選択することが出来る。
次に実施例3を説明する。
実施例3は、プログラムの優先度に関する実施例である。実施例3の「優先度」はプログラムに対する優先度であので、「プログラム優先度」という場合がある。後述する実施例5では管理単位(構成単位)についての優先度(構成単位優先度)と区別する。ここで「プログラム優先度」とは、プログラム専用実行用メモリ領域11を他のプログラムに貸与するに際しての、その貸与側のプログラム事態の貸与可能性の度合を示す値、数値である。なお、「優先度」が高い場合は、貸与されにくく、「優先度」が低いほど貸与され易い。一方、貸与可能性は優先度とは逆であり、「貸与可能性」が高いほど貸与され易い(優先度が低い)。
次のように、プログラムの動作状況を、プロセス管理部112や、メニューアプリ120の外部から知るのではなく、プログラム自身から知ることにより、より適切にメモリを貸与するプログラムを選択することが出来る。
即ち、プログラム専用実行用メモリ領域が割り当てられているプログラムに対して、静的あるいは動的に貸与可能性の優先度を付与し、貸与判断においてその優先度情報を利用する。次のように、プログラム専用実行用メモリ管理部130は、プログラムの動作状況(プログラム優先度を含む)を、プロセス管理部112や、メニューアプリ120の外部から知るのではなく、プログラム自身から知ることにより、より適切にメモリを貸与するプログラムを選択することが出来る。後に示すJava(登録商標)アプリのように、「プログラム優先度」が動的に変わり、それをプログラムからプログラム専用実行用メモリ管理部130に設定したような場合が該当する。
このように、プログラム専用実行用メモリ領域11が固定的に割り当てられているプログラムには、プログラム専用実行用メモリ領域11を他のプログラムに貸与するに際しての貸与可能性の度合を示すプログラム優先度が静的、あるいは動的に設定される。そして、プログラム専用実行用メモリ管理部130は、取得した動作状況と、プログラム相関関係情報1310に定義された複数のプログラムの相関関係と、さらに、プログラム優先度とに基づいて、プログラム専用実行用メモリ領域11が固定的に割り当てられているプログラムの中から、メモリ領域を要求するプログラム(第1プログラム)に対してプログラム専用実行用メモリ領域11を一時的に貸与させるべきプログラム(第2プログラム)を検索する。
例えば、プログラムXは、その上でさらにアプリケーションが実行できる環境、例えばJava実行環境(Javaは登録商標)であって様々なJavaアプリケーション(Javaは登録商標)が実行できるプログラムであったとする。この場合、スケジュール帳のように速度性能を要求しないアプリである場合もあれば、アクションゲームのように速度性能を要求しないアプリである場合もある。そこで、プログラム専用実行用メモリ領域11に対して、自身のプログラムが速度性能を要求しなければ、貸与可能性を動的に高く設定(プログラム優先度を動的に低く設定)し、そうでなければ貸与可能性を動的に低く設定するようにし、貸与するプログラムの選択基準として利用する。例えば、図4のポイントによる抽出判定においてポイントが同点の場合、プログラム専用実行用メモリ管理部130は、プログラム優先度の低い方のプログラムを抽出する。
実施の形態3.
図7、図8を参照して実施の形態3について説明する。実施の形態3では、次の実施例4〜実施例7を説明する。
図7、図8を参照して実施の形態3について説明する。実施の形態3では、次の実施例4〜実施例7を説明する。
(1)実施例4では、プログラムAのように、プログラム専用実行用メモリ領域11が予め固定的に割り当てられるプログラムについて、そのプログラム専用実行用メモリ領域11が複数の管理単位(構成単位)から構成されている場合を説明する。即ち、実施例4では、プログラムAのプログラム専用実行用メモリ領域11を他のプログラムに貸与するに当り、そのすべてを貸与するのではなく、プログラム専用実行用メモリ領域11の管理単位に合わせて部分的に貸与する場合を説明する。
(2)実施例5では、実施例4における管理単位に優先度(構成単位優先度)を付与する場合を説明する。
(3)実施例6では、プログラムにプログラム専用実行用メモリ領域11を割り当てる際に、前記優先度(構成単位優先度)を参照する場合を説明する。
(4)実施例7では、プログラム専用実行用メモリ領域11における割り当て位置に基き、プログラムコード格納不揮発メモリ100への格納位置を決定する場合を説明する。
(2)実施例5では、実施例4における管理単位に優先度(構成単位優先度)を付与する場合を説明する。
(3)実施例6では、プログラムにプログラム専用実行用メモリ領域11を割り当てる際に、前記優先度(構成単位優先度)を参照する場合を説明する。
(4)実施例7では、プログラム専用実行用メモリ領域11における割り当て位置に基き、プログラムコード格納不揮発メモリ100への格納位置を決定する場合を説明する。
(実施例4)
まず実施例4について説明する。図2においては、プログラム専用実行用メモリ領域11におけるプログラムXのコード領域は1ページ分であったが、この実施例4では図7に示すように、プログラムXのコード領域はもっと大きいものとする。図7は、プログラムX関連部分のみのプログラム専用実行用メモリ領域11を示している。ここで、プログラムXは、先に示した例のように、様々なアプリケーションが利用できるJava実行環境(Javaは登録商標)であり、Java実行環境(Javaは登録商標)は、図7に示すように、
(1)共通コード、
(2)2次元グラフィックス機能を利用するアプリケーションで多用される2次元画像描画コード、
(3)3次元グラフィックス機能を利用するアプリケーションで多用される3次元画像描画コード、
(4)その他のコード
から構成されているものとする。なお、このように関連する機能のコードを集中するのは、通常、コンパイラが出力した各オブジェクトをリンカによってリンクする順序によって制御することが出来る。
まず実施例4について説明する。図2においては、プログラム専用実行用メモリ領域11におけるプログラムXのコード領域は1ページ分であったが、この実施例4では図7に示すように、プログラムXのコード領域はもっと大きいものとする。図7は、プログラムX関連部分のみのプログラム専用実行用メモリ領域11を示している。ここで、プログラムXは、先に示した例のように、様々なアプリケーションが利用できるJava実行環境(Javaは登録商標)であり、Java実行環境(Javaは登録商標)は、図7に示すように、
(1)共通コード、
(2)2次元グラフィックス機能を利用するアプリケーションで多用される2次元画像描画コード、
(3)3次元グラフィックス機能を利用するアプリケーションで多用される3次元画像描画コード、
(4)その他のコード
から構成されているものとする。なお、このように関連する機能のコードを集中するのは、通常、コンパイラが出力した各オブジェクトをリンカによってリンクする順序によって制御することが出来る。
この場合、プログラム専用実行用メモリ領域11が固定的に割り当てられているプログラムXは、「(1)共通コード」、「(2)2次元画像描画コード」、「(3)3次元画像描画コード」、「(4)その他のコード」というように4つの管理単位(構成単位)から構成されている。この場合、プログラム専用実行用メモリ管理部130は、取得された動作状況と、プログラム相関関係情報に定義された複数のプログラムの相関関係とに基づいて、プログラム専用実行用メモリ領域11が固定的に割り当てられているプログラムの中から、メモリ領域を要求するプログラム(第1プログラム)に対してプログラム専用実行用メモリ領域11を一時的に貸与させるべきプログラム(第2プログラム)を検索し、検索によりプログラム(実施例4ではプログラムX)がヒットした場合には、所定の基準に従ってプログラムXから少なくとも一つの管理単位を抽出する。
「所定の基準」の一例として、例えば、「先頭から要求された容量分の管理単位を貸与する」と決めても良い。
そして、プログラム専用実行用メモリ管理部130は、メモリ割当部(メモリ管理部111)により、抽出された少なくとも一つの管理単位をメモリ領域を要求するプログラム(第1プログラム)に一時的に割り当てる。
「所定の基準」の一例として、例えば、「先頭から要求された容量分の管理単位を貸与する」と決めても良い。
そして、プログラム専用実行用メモリ管理部130は、メモリ割当部(メモリ管理部111)により、抽出された少なくとも一つの管理単位をメモリ領域を要求するプログラム(第1プログラム)に一時的に割り当てる。
(実施例5)
次に実施例5を説明する。実施例5は、プログラム専用実行用メモリ領域11が割り当てられている各プログラム内のプログラム専用実行用メモリ領域11に、静的あるいは動的に貸与可能性を示す優先度(構成単位優先度)を付与し、貸与判断においてその優先度情報を利用する場合である。
次に実施例5を説明する。実施例5は、プログラム専用実行用メモリ領域11が割り当てられている各プログラム内のプログラム専用実行用メモリ領域11に、静的あるいは動的に貸与可能性を示す優先度(構成単位優先度)を付与し、貸与判断においてその優先度情報を利用する場合である。
図8は、プログラム専用実行用メモリ管理部130が管理する、各プログラムに対する領域(ページ)別のプログラム専用実行用メモリ領域11の優先度情報として、プログラムXの例を示す図である。図7に示したようにプログラムXのプログラム専用実行用メモリ領域11は5ページから構成されている。優先度情報は、それぞれの機能(共通、2次元グラフィックス、3次元グラフィックス、その他)の、各ページに対する容量の割合、および、各機能そのものの優先度(構成単位優先度)からなる。「優先度」が高いほうが、プログラム専用実行用メモリの必要性が高いことをあらわしている。即ち、「優先度」が高いほど、貸与されにくい。これは静的な情報として構成可能であるが、先に示した例のようにアプリケーションが2次元グラフィックスを多用し、3次元グラフィックスを利用しないのであれば、プログラム専用実行用メモリ管理部130は、3次元グラフィックスに対する優先度を、プログラムXからの通知により、「優先度=0」(低い優先度:この場合、最優先で貸与してよい)に変更することが出来る。
この情報に基づいて、プログラム専用実行用メモリ管理部130は、貸与の判断を行うようにする。
即ち、図8に示したように、プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムXは、4つの管理単位である「(1)共通コード」〜「(4)その他機能コード」のそれぞれに、他のプログラムにプログラム専用実行用メモリ領域を貸与するに際しての貸与可能性の度合を示す優先度(構成単位優先度)が予め設定されている。そして、プログラム専用実行用メモリ管理部130は、検索によりプログラムX(第2プログラムの)がヒットした場合には、優先度(構成単位優先度)に従ってプログラムXから少なくとも一つの管理単位(構成単位)を抽出する。
(管理単位の抽出動作)
上記における管理単位の具体的な抽出の動作を説明する。例えば、管理単位の抽出動作は次の様である。プログラム専用実行用メモリ管理部130は、図8の表を用いて、各ページ毎に、機能の優先度と、その機能がそのページに含まれる割合から、そのページの優先度(値が大きいほど貸与されにくい)を計算する。図8の場合で、二次元グラフィックスを多用するアプリの場合の優先度は次の(1)〜(5)のように計算される。なお、二次元グラフィックスを多用する場合には前述のとおり、プログラムXからプログラム専用実行用メモリ管理部130に通知済みである。すなわち、プログラムXが2次元グラフィックスを多用し、3次元グラフィックスを利用しないのであれば、プログラム専用実行用メモリ管理部130は、3次元グラフィックスに対する優先度を、プログラムXからの通知により、優先度を「0」に変更する。そのため、下記の(4)では、「ページ4」の優先度を「0」として計算している。
(1)ページ1の優先度は、50*100%=50であり、
(2)ページ2の優先度は、50*90%+100*10%=55であり、
(3)ページ3の優先度は、100*100%=100、
(4)ページ4の優先度は、「0」*70%+0*30%=0、
(5)ページ5の優先度は、0*80%=0、
のようになる。そして、プログラム専用実行用メモリ管理部130は、必要とする容量分のページを、優先度の低い(貸与されやすい)順に抽出する(この例では、ページ4、ページ5、ページ1、ページ2、ページ3の順に抽出)。
上記における管理単位の具体的な抽出の動作を説明する。例えば、管理単位の抽出動作は次の様である。プログラム専用実行用メモリ管理部130は、図8の表を用いて、各ページ毎に、機能の優先度と、その機能がそのページに含まれる割合から、そのページの優先度(値が大きいほど貸与されにくい)を計算する。図8の場合で、二次元グラフィックスを多用するアプリの場合の優先度は次の(1)〜(5)のように計算される。なお、二次元グラフィックスを多用する場合には前述のとおり、プログラムXからプログラム専用実行用メモリ管理部130に通知済みである。すなわち、プログラムXが2次元グラフィックスを多用し、3次元グラフィックスを利用しないのであれば、プログラム専用実行用メモリ管理部130は、3次元グラフィックスに対する優先度を、プログラムXからの通知により、優先度を「0」に変更する。そのため、下記の(4)では、「ページ4」の優先度を「0」として計算している。
(1)ページ1の優先度は、50*100%=50であり、
(2)ページ2の優先度は、50*90%+100*10%=55であり、
(3)ページ3の優先度は、100*100%=100、
(4)ページ4の優先度は、「0」*70%+0*30%=0、
(5)ページ5の優先度は、0*80%=0、
のようになる。そして、プログラム専用実行用メモリ管理部130は、必要とする容量分のページを、優先度の低い(貸与されやすい)順に抽出する(この例では、ページ4、ページ5、ページ1、ページ2、ページ3の順に抽出)。
このように、各プログラムの各ページ毎に優先度情報をつけて、貸与可能性を判断することにより、プログラム全体を貸与する必要性がなくなるため、貸与中に低速メモリで動作する部分が減少して速度性能への影響が小さくなるほか、コピーによる影響も小さくなる。また、各プログラムの特性に基づいた制御が可能となるため、速度性能に影響の小さい部分から貸与することにより、速度性能への影響を小さく出来る。
(実施例6)
次に実施例6を説明する。図8のように、同じプログラム内でもその優先度に差異がある。また、ページサイズ境界に、各プログラムや機能を配置すると、メモリ利用効率が低下するため、ページ境界以外にプログラムや機能の境界が配置されることがある。そこで、例えば図7に示した5ページ目の「余分領域」に、他のプログラム、例えばプログラムAの、優先度の低い機能を配置できれば、この5ページ目全体の優先度を一貫して下げることが出来る。ここでは、抽出そのものは問題にしておらず、メモリ利用効率のみを問題としてる。ページが1MBで、図7に示した5ページ目のうち、利用されている部分(プログラムXの最後の部分)が800KBならば、あと200KB利用できる。もし、プログラムAが1.2MBあるのならば、1MBをプログラムA専用に、残りの200KBを、このプログラムXの5ページ目のあまりに入れることができる。ただし、プログラムやページの抽出が困難になるため、低優先度のみをまとめるようにする。例えば、プログラムAの残りの200KBの領域は、優先度の高いものであるが、プログラムXの5ページ目の800KBの領域は優先度が低い場合、前記実施例5のようにしてページ5を抽出することはできなくなり、プログラムAの状況も考慮する必要がある。
次に実施例6を説明する。図8のように、同じプログラム内でもその優先度に差異がある。また、ページサイズ境界に、各プログラムや機能を配置すると、メモリ利用効率が低下するため、ページ境界以外にプログラムや機能の境界が配置されることがある。そこで、例えば図7に示した5ページ目の「余分領域」に、他のプログラム、例えばプログラムAの、優先度の低い機能を配置できれば、この5ページ目全体の優先度を一貫して下げることが出来る。ここでは、抽出そのものは問題にしておらず、メモリ利用効率のみを問題としてる。ページが1MBで、図7に示した5ページ目のうち、利用されている部分(プログラムXの最後の部分)が800KBならば、あと200KB利用できる。もし、プログラムAが1.2MBあるのならば、1MBをプログラムA専用に、残りの200KBを、このプログラムXの5ページ目のあまりに入れることができる。ただし、プログラムやページの抽出が困難になるため、低優先度のみをまとめるようにする。例えば、プログラムAの残りの200KBの領域は、優先度の高いものであるが、プログラムXの5ページ目の800KBの領域は優先度が低い場合、前記実施例5のようにしてページ5を抽出することはできなくなり、プログラムAの状況も考慮する必要がある。
そこで、プログラム専用実行用メモリ領域11における、各プログラムへの割り当て位置を、貸与可能性の優先度(プログラム優先度、管理単位優先度の両方を対象)、及びプログラム相関関係情報に基づいて決定する。
すなわち、プログラム専用実行用メモリ管理部130は、プログラム専用実行用メモリ領域11へのプログラムの割り当て位置を、優先度(構成単位優先度)と、プログラム相関関係情報とに基づいて決定する。
例えば、図8に示した各プログラムのページ単位の優先度表を考慮して、それぞれのプログラムをプログラム専用実行用メモリ領域11に割り当てる順序を決定し、同じレベルの優先度の機能が、ページに集中するように配置する。これにより、貸与中の速度性能の影響を小さくすることが出来る。
また、図3の内容とは異なるが、プログラムBに対して、プログラムAもプログラムXも排他であれば、どちらのプログラムもプログラムB動作時には貸与可能性が高くなるので、端数部分が同じページになるように配置すると、やはり貸与中の速度性能への影響を小さくすることが出来る。
(実施例7)
次に実施例7を説明する。上記は、プログラム専用実行用メモリ領域11による割り当てにおける決定であったが、あらかじめそれに適したように不揮発記憶装置上(図1のプログラムコード格納不揮発メモリ100上)にプログラムを配置すると、不揮発記憶装置からプログラム専用実行用メモリ領域11にコピーするのが容易・高速である。そこで、実施例6と同様の判断基準にて、不揮発記憶装置上にプログラムを配置するようにする。
次に実施例7を説明する。上記は、プログラム専用実行用メモリ領域11による割り当てにおける決定であったが、あらかじめそれに適したように不揮発記憶装置上(図1のプログラムコード格納不揮発メモリ100上)にプログラムを配置すると、不揮発記憶装置からプログラム専用実行用メモリ領域11にコピーするのが容易・高速である。そこで、実施例6と同様の判断基準にて、不揮発記憶装置上にプログラムを配置するようにする。
つまり、プログラム専用実行用メモリ領域への各プログラムの割り当て位置に基づいて、不揮発記憶装置上(プログラムコード格納不揮発メモリ100上)の各プログラムの格納位置を決定する。すなわち、プログラム専用実行用メモリ管理部130は、プログラム専用実行用メモリ領域への割り当て位置を決定したプログラムを、決定した前記割り当て位置に基づいて、プログラムコード格納不揮発メモリ100に格納する。「格納する」とは、決定した前記割り当て位置に基づいて、格納状態を再編成する場合も含む。
前記のように、あらかじめそれに適したように不揮発記憶装置上(図1のプログラムコード格納不揮発メモリ100上)にプログラムを配置すると、不揮発記憶装置からプログラム専用実行用メモリ領域11にコピーするのが容易・高速である。
以上の実施の形態1では、
システム上のRAMに関して、
あるプログラムまたはプログラム群のプログラムコードに対して、高速実行のために専用のプログラム実行用メモリを割り当てる、プログラム実行用メモリの制御装置(実行用メモリ領域割当装置)であって、
プログラム専用実行用メモリを割り当てられているプログラムAの動作状況、および、システム上の各プログラムの相関関係情報に応じて、他の、あらかじめプログラム専用実行メモリが割り当てられていないプログラムBが、実行コードまたはデータ用メモリを要求した場合に、プログラムA用のプログラム専用実行用メモリをプログラムBに貸与する(プログラム専用実行用メモリの貸与)一方、
プログラムAは、より低速なメモリ上で実行に切り替わり、プログラムBへの貸与が終了した場合に、プログラムAは再びプログラム専用実行用メモリ上での実行に切り替わる、プログラム実行用メモリの制御装置を説明した。
システム上のRAMに関して、
あるプログラムまたはプログラム群のプログラムコードに対して、高速実行のために専用のプログラム実行用メモリを割り当てる、プログラム実行用メモリの制御装置(実行用メモリ領域割当装置)であって、
プログラム専用実行用メモリを割り当てられているプログラムAの動作状況、および、システム上の各プログラムの相関関係情報に応じて、他の、あらかじめプログラム専用実行メモリが割り当てられていないプログラムBが、実行コードまたはデータ用メモリを要求した場合に、プログラムA用のプログラム専用実行用メモリをプログラムBに貸与する(プログラム専用実行用メモリの貸与)一方、
プログラムAは、より低速なメモリ上で実行に切り替わり、プログラムBへの貸与が終了した場合に、プログラムAは再びプログラム専用実行用メモリ上での実行に切り替わる、プログラム実行用メモリの制御装置を説明した。
(プログラムBへの貸与の見直し)
以上の実施の形態2では、
プログラムAの動作状況、プログラムBの動作状況、および、プログラムAとプログラムBの相関関係情報に応じて、プログラムBへの貸与を終了させて、プログラムBは、より低速なメモリ上での実行に切り替わり、一方、プログラムAは再びプログラム専用実行用メモリ上での実行に切り替わるプログラム実行用メモリの制御装置を説明した。
以上の実施の形態2では、
プログラムAの動作状況、プログラムBの動作状況、および、プログラムAとプログラムBの相関関係情報に応じて、プログラムBへの貸与を終了させて、プログラムBは、より低速なメモリ上での実行に切り替わり、一方、プログラムAは再びプログラム専用実行用メモリ上での実行に切り替わるプログラム実行用メモリの制御装置を説明した。
(プログラムを抽出できない場合)
以上の実施の形態2では、
プログラムBが、プログラムの動作状況や、相関関係情報により、実行コードまたはデータ用メモリを要求したときにプログラム専用実行用メモリ領域の貸与を受けられなかった場合に、プログラムの動作状況の変化により、プログラム専用実行用メモリ領域の貸与が可能になった場合に貸与を行うプログラム実行用メモリの制御装置を説明した。
以上の実施の形態2では、
プログラムBが、プログラムの動作状況や、相関関係情報により、実行コードまたはデータ用メモリを要求したときにプログラム専用実行用メモリ領域の貸与を受けられなかった場合に、プログラムの動作状況の変化により、プログラム専用実行用メモリ領域の貸与が可能になった場合に貸与を行うプログラム実行用メモリの制御装置を説明した。
(プログラム優先度)
以上の実施の形態2では、
プログラム専用実行用メモリ領域が割り当てられているプログラムに対して、
静的あるいは動的に貸与可能性の優先度を付与し、貸与判断においてその優先度情報を利用するプログラム実行用メモリの制御装置を説明した。
以上の実施の形態2では、
プログラム専用実行用メモリ領域が割り当てられているプログラムに対して、
静的あるいは動的に貸与可能性の優先度を付与し、貸与判断においてその優先度情報を利用するプログラム実行用メモリの制御装置を説明した。
(管理単位)
以上の実施の形態3では、
プログラムAのプログラム専用実行用メモリ領域を貸与するに当り、そのすべてを貸与するのではなく、プログラム専用実行用メモリの管理単位に合わせて部分的に貸与するプログラム実行用メモリの制御装置を説明した。
以上の実施の形態3では、
プログラムAのプログラム専用実行用メモリ領域を貸与するに当り、そのすべてを貸与するのではなく、プログラム専用実行用メモリの管理単位に合わせて部分的に貸与するプログラム実行用メモリの制御装置を説明した。
(構成単位優先素)
以上の実施の形態3では、
プログラム専用実行用メモリ領域が割り当てられている各プログラム内のプログラム実行用メモリ領域に、静的あるいは動的に貸与可能性の優先度を付与し、貸与判断においてその優先度情報を利用するプログラム実行用メモリの制御装置を説明した。
以上の実施の形態3では、
プログラム専用実行用メモリ領域が割り当てられている各プログラム内のプログラム実行用メモリ領域に、静的あるいは動的に貸与可能性の優先度を付与し、貸与判断においてその優先度情報を利用するプログラム実行用メモリの制御装置を説明した。
(割当位置1)
以上の実施の形態3では、
プログラム専用実行用メモリの領域における、各プログラムへの割り当て位置を、貸与可能性の優先度、プログラム相関情報に基づいて決定する、プログラム実行用メモリの制御装置を説明した。
以上の実施の形態3では、
プログラム専用実行用メモリの領域における、各プログラムへの割り当て位置を、貸与可能性の優先度、プログラム相関情報に基づいて決定する、プログラム実行用メモリの制御装置を説明した。
(割当位置2)
以上の実施の形態3では、
プログラム専用実行用メモリへの各プログラムの割り当て位置に基づいて、
不揮発記憶装置上の各プログラムの格納位置を決定する、プログラム実行用メモリの制御装置を説明した。
以上の実施の形態3では、
プログラム専用実行用メモリへの各プログラムの割り当て位置に基づいて、
不揮発記憶装置上の各プログラムの格納位置を決定する、プログラム実行用メモリの制御装置を説明した。
11 プログラム専用実行用メモリ領域、12 通常領域、100 プログラムコード格納不揮発メモリ、101 RAM、102 CPU、103 MMU、110 OS、111 メモリ管理部、112 プロセス管理部、120 メニューアプリ、121 プログラムA、122 プログラムD、130 プログラム専用実行用メモリ管理部、131 プログラム相関関係情報管理部、1000 組み込み機器、1310 プログラム相関関係情報。
Claims (10)
- 所定のRAM(Random Access Memory)のメモリ領域を割り当てる対象となる複数のプログラムの相関関係が定義されたプログラム相関関係情報を格納するプログラム相関関係情報格納部と、
前記所定のRAMにおけるメモリ領域であってCPU(Central Processing Unit)による直接実行が可能なプログラムコードが記憶されるメモリ領域として予め設定されたプログラム専用実行用メモリ領域が割り当てられておらず、かつ、前記複数のプログラムのうちの一つである第1プログラムからメモリ領域を求める要求を受けると、前記複数のプログラムに含まれるプログラムであって前記プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムの動作状況を取得し、取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第1プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第2プログラムを検索するプログラム検索部と、
前記プログラム検索部による検索の結果、前記第2プログラムがヒットした場合には、ヒットした前記第2プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域の少なくとも一部を前記第1プログラムに一時的に割り当てるメモリ割当部と
を備えたことを特徴とする実行用メモリ領域割当装置。 - 前記メモリ割当部は、
前記プログラム検索部の検索によりヒットした前記第2プログラムが実行中である場合には、前記第2プログラムに対して、前記第2プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域とは異なるいずれかの新たなメモリ領域を割り当てるとともに、割り当てた前記新たなメモリ領域において前記第2プログラムを継続して実行させることを特徴とする請求項1記載の実行用メモリ領域割当装置。 - 前記プログラム検索部は、
前記第2プログラムの前記新たなメモリ領域における動作状況と、前記プログラム専用実行用メモリ領域が割り当てられた前記第1プログラムの動作状況と、前記プログラム相関関係情報に定義された前記第2プログラムと前記第1プログラムとの相関関係とに基づいて、前記第1プログラムへの前記プログラム専用実行用メモリ領域の割り当てを終了するかどうかを判定し、
前記メモリ割当部は、
前記プログラム検索部が前記第1プログラムへの前記プログラム専用実行用メモリ領域の割り当てを終了すると判定した場合には、前記第1プログラムへの前記プログラム専用実行用メモリ領域の割り当てを前記第2プログラムへの割り当てに戻すとともに前記プログラム専用実行用メモリ領域において前記第2プログラムの実行を継続させ、かつ、前記第1プログラムに前記プログラム専用実行用メモリ領域に代替する新たなメモリ領域を割り当てることを特徴とする請求項1または2のいずれかに記載の実行用メモリ領域割当装置。 - 前記メモリ割当部は、
前記第1プログラムによる前記プログラム専用実行用メモリ領域の使用が終了すると、前記第1プログラムへの前記プログラム専用実行用メモリ領域の割り当てを前記第2プログラムへの割り当てに戻すことを特徴とする請求項1〜3のいずれかに記載の実行用メモリ領域割当装置。 - 前記プログラム検索部は、
検索によって前記第2プログラムがヒットしなかった場合には、新たな前記動作状況を取得し、取得した前記新たな動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記第2プログラムを検索することを特徴とする請求項1〜4のいずれかに記載の実行用メモリ領域割当装置。 - 前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムは、
前記プログラム専用実行用メモリ領域が複数の構成単位から構成され、
前記プログラム検索部は、
取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第1プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第2プログラムを検索し、検索により前記第2プログラムがヒットした場合には、所定の基準に従って前記第2プログラムから少なくとも一つの前記構成単位を抽出し、
前記メモリ割当部は、
前記プログラム検索部により抽出された前記少なくとも一つの構成単位を前記第1プログラムに一時的に割り当てることを特徴とする請求項1〜5のいずれかに記載の実行用メモリ領域割当装置。 - 前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムは、
前記複数の構成単位のそれぞれに、他のプログラムに貸与するに際しての貸与可能性の度合を示す構成単位優先度が静的または動的に付与され、
前記プログラム検索部は、
検索により前記第2プログラムがヒットした場合には、前記所定の基準として、前記構成単位優先度に従って前記第2プログラムから少なくとも一つの前記構成単位を抽出することを特徴とする請求項6記載の実行用メモリ領域割当装置。 - 前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムは、
前記プログラム専用実行用メモリ領域を他のプログラムに貸与するに際しての前記プログラム自身の貸与可能性の度合を示すプログラム優先度が静的または動的に付与され、
前記プログラム検索部は、
取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係と、さらに、前記プログラム優先度とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第1プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第2プログラムを検索することを特徴とする請求項1〜7のいずれかに記載の実行用メモリ領域割当装置。 - コンピュータを、
所定のRAM(Random Access Memory)のメモリ領域を割り当てる対象となる複数のプログラムの相関関係が定義されたプログラム相関関係情報を格納するプログラム相関関係情報格納部、
前記所定のRAMにおけるメモリ領域であってCPU(Central Processing Unit)による直接実行が可能なプログラムコードが記憶されるメモリ領域として予め設定されたプログラム専用実行用メモリ領域が割り当てられておらず、かつ、前記複数のプログラムのうちの一つである第1プログラムからメモリ領域を求める要求を受けると、前記複数のプログラムに含まれるプログラムであって前記プログラム専用実行用メモリ領域が固定的に割り当てられているプログラムの動作状況を取得し、取得された前記動作状況と、前記プログラム相関関係情報に定義された前記複数のプログラムの相関関係とに基づいて、前記プログラム専用実行用メモリ領域が固定的に割り当てられている前記プログラムの中から、前記第1プログラムに対して前記プログラム専用実行用メモリ領域を一時的に貸与させるべき第2プログラムを検索するプログラム検索部、
前記プログラム検索部による検索の結果、前記第2プログラムがヒットした場合には、ヒットした前記第2プログラムに固定的に割り当てられている前記プログラム専用実行用メモリ領域の少なくとも一部を前記第1プログラムに一時的に割り当てるメモリ割当部、
として機能させることを特徴とする実行用メモリ領域割当プログラム。 - 請求項9の実行用メモリ領域割当プログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008061065A JP2009217589A (ja) | 2008-03-11 | 2008-03-11 | 実行用メモリ領域割当装置及び実行用メモリ領域割当プログラム及び記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008061065A JP2009217589A (ja) | 2008-03-11 | 2008-03-11 | 実行用メモリ領域割当装置及び実行用メモリ領域割当プログラム及び記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009217589A true JP2009217589A (ja) | 2009-09-24 |
Family
ID=41189360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008061065A Pending JP2009217589A (ja) | 2008-03-11 | 2008-03-11 | 実行用メモリ領域割当装置及び実行用メモリ領域割当プログラム及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009217589A (ja) |
-
2008
- 2008-03-11 JP JP2008061065A patent/JP2009217589A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021510B (zh) | 操作对多重名称空间进行管理的存储装置的方法 | |
JP6198226B2 (ja) | 順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ | |
US9547600B2 (en) | Method and system for restoring consumed memory after memory consolidation | |
US10489295B2 (en) | Systems and methods for managing cache pre-fetch | |
KR100823171B1 (ko) | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 | |
KR100965051B1 (ko) | 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치 | |
JP6403164B2 (ja) | メモリシステム | |
US20130212319A1 (en) | Memory system and method of controlling memory system | |
JP5385347B2 (ja) | メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ | |
US10534720B2 (en) | Application aware memory resource management | |
US7543124B1 (en) | Method for preventing page replacement of unreferenced read-ahead file pages | |
KR101636892B1 (ko) | 플래시 메모리 저장 장치에서 동적 메모리 할당에 의해 일어나는 자기 축출을 회피하는 방법 | |
JP4886866B2 (ja) | 主記憶装置へのアクセスを高速化する方法および記憶装置システム | |
US8645612B2 (en) | Information processing device and information processing method | |
JP2019523920A (ja) | ページ・フォールト解決法 | |
US8930732B2 (en) | Fast speed computer system power-on and power-off method | |
JP2008090657A (ja) | ストレージシステム及び制御方法 | |
KR101392062B1 (ko) | 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법 | |
US8274521B2 (en) | System available cache color map | |
US20110138118A1 (en) | Memory disc composition method and apparatus using main memory | |
US10346234B2 (en) | Information processing system including physical memory, flag storage unit, recording device and saving device, information processing apparatus, information processing method, and computer-readable non-transitory storage medium | |
KR100994723B1 (ko) | 시스템에서 초기 구동시간을 단축시키는 선택적 서스펜드 리쥼 방법 및 그 기록매체 | |
JP6219560B2 (ja) | 情報処理装置、情報処理方法、およびプログラム | |
JP2009217589A (ja) | 実行用メモリ領域割当装置及び実行用メモリ領域割当プログラム及び記録媒体 | |
US20160313915A1 (en) | Management apparatus, storage system, method, and computer readable medium |