(57)【要約】【課題】  システムで動作するプログラムが使用するメモリ領域を管理するメモリ管理装置に係り、プログラムの動作に応じてメモリ領域の有効利用を図ることを課題とする。【解決手段】  システムメモリ管理手段１０１は、プログラムメモリ管理手段１０８からのメモリ獲得要求に対して、予備メモリ不足のために要求に応えられない場合に、別のプログラムメモリ管理手段１０４に対してメモリの解放を要求し、プログラムメモリ解放要求応答手段１０５は、メモリ解放の要求に応じてメモリを解放し、システムメモリ管理手段１０１は、メモリの解放によって生じた分を含めた予備メモリを対象としてメモリ獲得要求に再度応じてメモリを割り当てる。【選択図】        図１
2005322007.tif 000002
【特許請求の範囲】
【請求項１】
それぞれの処理プログラムの手順をコンピュータにより実行する複数の処理実行手段毎にメモリ管理を実施するプログラムメモリ管理手段と、当該プログラムメモリ管理手段との対話によって処理実行手段からのメモリの獲得要求および解放要求に応えるシステムメモリ管理手段とを備えるメモリ管理装置であって、
システムメモリ管理手段は、プログラムメモリ管理手段からのメモリ獲得要求に対して、予備メモリ不足のために要求に応えられない場合に、別のプログラムメモリ管理手段に対して、当該別のプログラムメモリ管理手段が管理するメモリの解放を要求するプログラムメモリ解放要求手段を備え、
プログラムメモリ管理手段は、メモリ解放の要求に応じてメモリの解放を実行するプログラムメモリ解放要求応答手段を備え、
システムメモリ管理手段は、メモリの解放によって生じた分を含めた予備メモリを対象として、当初のメモリ獲得要求に再度応じてメモリを割り当てることを特徴とするメモリ管理装置。
【請求項２】
プログラムメモリ管理手段に、プログラムが使用していない余剰メモリをプログラムから回収するプログラムメモリ回収手段を備えたことをを特徴とする請求項１に記載のメモリ管理装置。
【請求項３】
プログラムメモリ回収手段にガベージコレクションを用いることを特徴とする請求項２に記載のメモリ管理装置。
【請求項４】
プログラムメモリ解放要求手段は、メモリの貸与を要求するプログラムメモリ貸与要求手段を備え、
プログラムメモリ解放要求応答手段は、プログラムメモリ貸与要求手段からのメモリ貸与の要求に対して、当該プログラムメモリ管理手段が管理するメモリを一時的に解放し、解放したメモリをシステムメモリ管理手段に貸与するプログラムメモリ貸与要求応答手段を備えたことを特徴とする請求項１から３のいずれかに記載のメモリ管理装置。
【請求項５】
プログラムメモリ管理手段は、処理実行手段を指定してメモリの借用を要求するプログラムメモリ借用要求手段を備え、
プログラムメモリ解放要求応答手段は、メモリ借用の要求に基づくメモリの貸与を要求された場合に、要求元のプログラムメモリ管理手段に貸与するメモリを一時的に解放するプログラムメモリ借用要求応答手段を備えることを特徴とする請求項１から４のいずれかに記載のメモリ管理装置。
【請求項６】
プログラムメモリ解放要求応答手段は、前記要求の元に応じて、貸与可否を決定し、また貸与するメモリ量を決定することを特徴とする請求項４または５に記載のメモリ管理装置。
【請求項７】
貸与するメモリに共有属性を備え、貸与元と貸与先で貸与したメモリを共有できることを特徴とする請求項４から６のいずれかに記載のメモリ管理装置。
【請求項８】
共有するメモリを、それぞれの処理実行手段で連続した領域として扱うことを特徴とする請求項７に記載のメモリ管理装置。
【請求項９】
貸与するメモリにグループ属性を備え、グループ内での相互貸借を可能とする請求項４から８のいずれかに記載のメモリ管理装置。
【請求項１０】
グループ内の処理実行手段に優先度を持たせたことを特徴とする請求項９に記載のメモリ管理装置。
【請求項１１】
処理プログラムによるメモリを使用する処理手順を複数実行可能なコンピュータによるシステムメモリ管理方法
（１）処理プログラムに含まれるプログラムメモリ管理手順をコンピュータにより実行するプログラムメモリ管理手段からのメモリ獲得要求を受付ける工程
（２）予備メモリ不足のために前記メモリ獲得要求に応えられない場合に、別の処理プログラムに含まれる別のプログラムメモリ管理手順をコンピュータにより実行する別のプログラムメモリ管理手段に対して、当該別のプログラムメモリ管理手段が管理するメモリの解放を要求する工程
（３）メモリの解放によって生じた分を含めた予備メモリを対象として、当初のメモリ獲得要求に再度応じてメモリを割り当てる工程。
【請求項１２】
処理プログラムによるメモリを使用する処理手順を複数実行可能なコンピュータに、以下の手順を実行させるためのシステムメモリ管理プログラム
（１）処理プログラムに含まれるプログラムメモリ管理手順をコンピュータにより実行するプログラムメモリ管理手段からのメモリ獲得要求を受付ける手順
（２）予備メモリ不足のために前記メモリ獲得要求に応えられない場合に、別の処理プログラムに含まれる別のプログラムメモリ管理手順をコンピュータにより実行する別のプログラムメモリ管理手段に対して、当該別のプログラムメモリ管理手段が管理するメモリの解放を要求する手順
（３）メモリの解放によって生じた分を含めた予備メモリを対象として、当初のメモリ獲得要求に再度応じてメモリを割り当てる手順。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムで動作するプログラムが使用するメモリ領域を管理するメモリ管理装置に係り、メモリ領域の有効使用を図る技術に関する。
【背景技術】
【０００２】
コンピュータシステムでは、多くのプログラムは動作するためにメモリ領域を必要としている。また、多くのシステムでは、システム内に複数のプログラムが同時に動作する。コンピュータシステムにおけるメモリ資源は有限であり、多くの場合、コストの増大を抑えるため、システム内に動作するすべてのプログラムが同時に動作するために必要なメモリ資源より少ない。したがって、それらのプログラムは動作に必要なメモリ領域をシステムから獲得したり、また不要になればシステムに返却したりして、限られたシステムのメモリ資源を有効に活用しながら動作する。
【０００３】
特開平１１−３４５１６６号公報は、このような限られたメモリ資源を有効に活用する例であり、あるプログラムの未使用領域を解放あるいは二次記憶装置に移動させることにより、複数のプログラムがその時々に応じて必要なメモリを確保し、動作するようにしている。
【０００４】
しかし、更なるメモリ資源の有効利用が求められている。特に、通常のメモリだけでなく、二次記憶の容量も限られており、あるいは非常に二次記憶が低速であり、上記例のように二次記憶を使用することが事実上不可能である場合におけるメモリ資源の有効利用が求められている。
【０００５】
上記の典型的な問題として、携帯電話機における複数のプログラムの動作がある。例えば、携帯電話上で電子メールを作成するためにメールプログラムを起動し、作成途中で電子メールにカメラ画像を添付することを思いついたため、カメラプログラムを起動し、カメラ撮影の後、撮影したカメラ画像を二次記憶などに保存し、再びメールプログラムに戻り、撮影・保存したカメラ画像を添付し、電子メールを送信する。この場合、メールプログラムとカメラプログラムは一時的に同時に動作しているため、両者が同時に動くだけのメモリ量が必要である。両者が同時に動作できたとしても、カメラ撮影画像のデータ量は、撮影画像のサイズに比例するため、より大きなあるいはより精細なカメラ画像を撮影するためにはより多くのメモリ量が必要となる。すなわち、メールプログラムが動作している状態において、まず、カメラプログラムが起動できるだけのメモリが必要であり、さらに多くのメモリ量をカメラプログラムが確保できるようにして、より大きなあるいは精細なカメラ画像を撮影できるようにすることが必要である。
【特許文献１】特開平１１−３４５１６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、システムが保有する限られたメモリ資源を有効に利用して、動作するためにメモリを必要とするプログラムができるだけ多く同時に実行できる、あるいはできるだけ多くのメモリを利用できるようにすることである。
【課題を解決するための手段】
【０００７】
本発明に係るメモリ管理装置は、
それぞれの処理プログラムの手順をコンピュータにより実行する複数の処理実行手段毎にメモリ管理を実施するプログラムメモリ管理手段と、当該プログラムメモリ管理手段との対話によって処理実行手段からのメモリの獲得要求および解放要求に応えるシステムメモリ管理手段とを備えるメモリ管理装置であって、
システムメモリ管理手段は、プログラムメモリ管理手段からのメモリ獲得要求に対して、予備メモリ不足のために要求に応えられない場合に、別のプログラムメモリ管理手段に対して、当該別のプログラムメモリ管理手段が管理するメモリの解放を要求するプログラムメモリ解放要求手段を備え、
プログラムメモリ管理手段は、メモリ解放の要求に応じてメモリの解放を実行するプログラムメモリ解放要求応答手段を備え、
システムメモリ管理手段は、メモリの解放によって生じた分を含めた予備メモリを対象として、当初のメモリ獲得要求に再度応じてメモリを割り当てることを特徴とする。
【発明の効果】
【０００８】
本発明においては、システムが保有する限られたメモリ資源を有効に利用して動作するためにメモリを必要とするプログラムができるだけ多く同時に実行できるようになる。また、できるだけ多くのメモリを利用できるようになる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１に、実施の形態１に係るメモリ管理装置の構成を示す。まず、本発明適用前の構成について述べる。システム（メモリ管理装置の例）は、コンピュータであり、メモリにロードされたプログラムが、演算装置に読み込まれ、そのプログラムの手順が実行されている。
【００１０】
処理Ａ実行手段１０３は、システム上で処理Ａプログラムを実行させることにより動作するモジュールである。処理Ｂ実行手段１０７は、同様にシステム上で処理Ｂプログラムを実行させることにより動作するモジュールである。
【００１１】
システムメモリ管理手段１０１は、システム全体のメモリ資源を管理する。処理Ａ実行手段１０３（処理Ａプログラム）及び処理Ｂ実行手段１０７（処理Ｂプログラム）は、それぞれプログラムメモリ管理手段１０４，１０８を備えている。これらのプログラムメモリ管理手段１０４，１０８は、メモリが必要である場合に、システムメモリ管理手段１０１によりメモリを獲得し、プログラム終了時等、メモリが不要になった時点で、獲得したメモリを解放（返却）する。
【００１２】
実施の形態１においては、システムメモリ管理手段１０１はプログラムメモリ解放要求手段１０２を備え、プログラムメモリ管理手段１０４はプログラムメモリ解放要求応答手段１０５およびプログラムメモリ回収手段１０６を備える。プログラムメモリ管理手段１０８においても同様の構成をとってもよい。
【００１３】
処理Ｂ実行手段１０７（処理Ｂプログラム）がメモリ獲得要求を行う場合において、システムメモリ管理手段１０１、処理Ａ実行手段１０３（処理Ａプログラム）、処理Ｂ実行手段１０７（処理Ｂプログラム）の動作シーケンスを図２に示す。
【００１４】
また、システムメモリ管理手段１０１が、自身が管理するメモリ領域を管理するためのシステムメモリ管理表、および処理Ａ実行手段１０３（処理Ａプログラム）のプログラムメモリ管理手段１０４が、自身が管理するメモリ領域を管理するためのプログラムメモリ管理表を図３〜図６に示す。
【００１５】
処理Ｂ実行手段１０７（処理Ｂプログラム）が、プログラムの処理過程において新たにメモリを必要と判断し、プログラムメモリ管理手段１０８にメモリの獲得を要求する。プログラムメモリ管理手段１０８は、要求に応じるだけの空き領域がないと判断した場合に、システムメモリ管理手段１０１にメモリ量（サイズ）２０００の獲得を要求する（Ｓ２０１）。処理Ｂ実行手段１０７（処理Ｂプログラム）からのメモリ獲得要求を受けたシステムメモリ管理手段１０１の、このときのシステムメモリ管理表を図３に示す。システムメモリ管理表は、システムメモリが管理するメモリ領域のうち、プログラム等に割り当てている部分および空き部分を管理している。図３に示す状態では、サイズ２０００およびサイズ３０００のメモリ領域を処理Ａプログラムに対して割り当てており、サイズ３０００の領域を処理Ｂプログラムに対して割り当てており、サイズ１０００の領域が空いている。
【００１６】
システムメモリ管理手段１０１は、システムメモリ管理表（図３）の内容と要求されたメモリ量２０００から、空き領域からは要求されたメモリ量を割り当てられないことを判断する。そこで、処理Ｂプログラム以外でサイズ２０００以上のメモリ割り当てを行っている処理Ａプログラムからメモリを獲得することを判断する。ここで、システムメモリ管理手段１０１のプログラムメモリ解放要求手段１０２により、処理Ａ実行手段１０３（処理Ａプログラム）のプログラムメモリ解放要求応答手段１０５に対して、すでに処理Ａプログラムに対して割り当てているメモリ領域の不要部分の解放を要求する（Ｓ２０２）。
【００１７】
プログラムメモリ解放要求を受け取ったプログラムメモリ解放要求応答手段１０５は、プログラムメモリ管理手段１０４のプログラムメモリ管理表を参照する。
このときの状態を図５に示す。プログラムメモリ管理表（図５）は、処理Ａ実行手段１０３（処理Ａプログラム）が使用しているメモリ領域を管理しており、その全体はシステムメモリ管理手段１０１から割り当てられたものである。その割り当てられた領域を、処理Ａ実行手段１０３（処理Ａプログラム）の処理に応じて使用している。この状態では、サイズ５００の領域のみが未使用であり、要求されているサイズ２０００には満たないため、プログラムメモリ回収手段１０６により、処理Ａ実行手段１０３（処理Ａプログラム）で使用していないメモリ領域の回収を行う（Ｓ２０３）。尚、プログラムメモリ管理表とシステムメモリ管理表のメモリのアドレスは同じになっているが、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）を利用しているシステム等では、実体が同じでも管理表のアドレスは異なっている場合がある。
【００１８】
プログラムの処理手順として、プログラムメモリ管理手段１０４に対してメモリの獲得および解放（返却）を行う場合によく用いられるＣ言語のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）に、ｍａｌｌｏｃおよびｆｒｅｅ関数がある。ｍａｌｌｏｃにより獲得した領域は、すなわちプログラムが獲得後にそれを使用しており、ｆｒｅｅにより解放されるまではメモリは使用中であるとみなされる。すでに使用しなくなっているにもかかわらず、逆に、ｍａｌｌｏｃで獲得した領域のｆｒｅｅでの解放を忘れている場合、メモリリークと呼ばれる障害が発生する。一方、メモリの獲得は明示的に行うが、解放は必ずしも明示的に行う必要のないプログラムメモリ管理手段もある。そのようなプログラムメモリ管理手段の実現方法の１つとして、ガベージコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）の技術を用いることがある。すでに獲得されているメモリ領域のアドレスが、プログラムで使用している変数や、別のメモリ領域から指し示されていない場合、プログラムが関心を失っているメモリ領域であると考え、ガベージコレクションを実行すると、未使用メモリ領域であると判断される。
【００１９】
本実施の形態では、プログラムメモリ回収手段１０６は、上記のガベージコレクションの技術を使用して使用のメモリ領域を回収する。回収後のプログラムメモリ管理表を図６に示す。ここで要求された２０００以上のサイズの空き領域が確保できたため、プログラムメモリ解放要求応答手段１０５は、プログラムメモリ解放要求手段１０２に当該未使用メモリを解放する（Ｓ２０４）。なお、ここではサイズ３０００分が未使用であったためすべて解放しているが、要求のあった２０００分としてもよい。
【００２０】
処理Ａ実行手段１０３（処理Ａプログラム）からメモリの解放を受けたシステムメモリ管理手段１０１のシステムメモリ管理表を図４に示す。ここで、要求されているサイズ２０００の領域が確保できなければ、処理Ｂプログラムには確保できない旨を通知するが、ここでは確保可能であると判断し、サイズ２０００のメモリを確保してプログラムメモリ管理手段１０８に通知する（Ｓ２０５）。
【００２１】
このようにして、システム全体でのメモリ領域が不足しそうな場合に、すでに割り当てているメモリ領域から不要な部分をシステムにいったん返却してからメモリ割り当てを行うために、システム全体として効率よくメモリを使用することができる。これは、各プログラムが、使用していないメモリ領域をその都度システムメモリ管理手段に解放（返却）することによっても可能であるが、システムによっては、プログラムメモリ管理手段とシステムメモリ管理手段とのメモリのやりとりに時間がかかる場合があり、必要な場合にのみシステムメモリ管理手段とのメモリのやり取りを行うことで、オーバーヘッドを低減することができる。
【００２２】
実施の形態２．
本実施の形態では、実施の形態１の各手段に係るプログラムがメモリにロードされている状態を説明する。図７は、メモリにロードされているプログラムの状態を示す図である。実施の形態における各モジュールは、プログラム全体あるいはプログラム中の一部の処理手順を演算装置により実行することにより実現されている。
【００２３】
システムメモリ管理プログラム７０１は、システムメモリ管理手段１０１の処理手順を有し、システムメモリ管理プログラム７０１に含まれるプログラムメモリ解放要求手順７０２は、プログラムメモリ解放要求手段１０２の処理手順を有している。
【００２４】
処理Ａプログラム７０３は、処理Ａ実行手段１０３の処理手順を有し、処理Ｂプログラム７０７は、処理Ｂ実行手段１０７の処理手順を有している。処理Ａプログラム７０３に含まれるプログラムメモリ管理手順７０４は、プログラムメモリ管理手段１０４の処理手順を有している。処理Ｂプログラム７０７に含まれるプログラムメモリ管理手順７０８は、プログラムメモリ管理手段１０８の処理手順を有している。
【００２５】
プログラムメモリ管理手順７０４に含まれるプログラムメモリ解放要求応答手順７０５は、プログラムメモリ解放要求応答手段１０５の処理手順を有している。また、プログラムメモリ管理手順７０４に含まれるプログラムメモリ回収手順７０６は、プログラムメモリ回収手段１０６の処理手順を有している。
【００２６】
プログラム使用メモリ領域７０３は、各プログラムが使用するメモリ領域である。
【００２７】
実施の形態３．
実施の形態３の構成を図８に示す。実施の形態１の構成に加え、システムメモリ管理手段１０１のプログラムメモリ解放要求手段１０２は、プログラムメモリ貸与要求手段１０９を備え、プログラムメモリ解放要求応答手段１０５は、プログラムメモリ貸与要求応答手段１１０を備える。
【００２８】
本実施の形態における動作を、図９のシーケンスおよび図１０〜図１３を用いて説明する。実施の形態１と同様に、処理Ｂ実行手段１０７（処理Ｂプログラム）がサイズ２０００のメモリの獲得を行うものとする。処理Ｂ実行手段１０７（処理Ｂプログラム）のメモリ管理手段１０８は、システムメモリ管理手段１０１にメモリの獲得を要求する（Ｓ９０１）。このときのシステムメモリ管理表は、図１０のようになっている。空きメモリがないためにシステムメモリ管理手段１０１は、プログラムメモリ貸与要求手段１０９により処理Ａ実行手段１０３（処理Ａプログラム）のプログラムメモリ貸与要求応答手段１１０にメモリの貸与を要求する（Ｓ９０２）。このときの処理Ａ実行手段１０３（処理Ａプログラム）のプログラムメモリ管理表は、図１２のようになっており、十分な未使用領域がないため、プログラムメモリ貸与要求応答手段１１０は、プログラムメモリ回収手段１０６に未使用メモリの回収を行わせる（Ｓ９０３）。アドレス６０００からサイズ３０００の未使用メモリが確保されたとすると、アドレス６０００からサイズ２０００を貸与する（Ｓ９０４）。このときのプログラムメモリ管理表を図１３に示す。これにより、システムメモリ管理手段１０１はメモリを処理Ｂプログラムのために割り当てる（Ｓ９０５）。ただし、この場合、そもそも処理Ａプログラムに割り当てていた領域であるため、システムメモリ管理表は図１１のように、該当領域が処理Ａプログラムから処理Ｂプログラムに貸与されていることを記す。
【００２９】
処理Ａ実行手段１０３（処理Ａプログラム）は、確かに一旦獲得した領域のうち、サイズ３０００の未使用領域を有していたが、あとで再び使用することがあるかもしれない。これは、一旦解放して、後に再獲得することでも実現できるが、処理Ａプログラムの処理内容やプログラムメモリ管理手段の実現方法によっては、まとまった連続領域のメモリをまず確保し、その中のメモリのみ使用するような場合があり、そのような場合には、また別のアドレスからはじまるメモリ領域を再獲得するよりも、貸与したメモリ領域を返却してもらうことが管理上便利あるいは必要である場合がある。例えば、先に述べたガベージコレクションの実現方法によっては、ある変数がメモリアドレスを指し示しているのか、単なる数値を表しているのかわからないような場合に、あるアドレス（数値）の範囲の場合にはそれをメモリアドレスとみなし、それ以外は単なる数値とみなして、使用および非使用の区別をつける場合がある。このように、本実施例の場合、プログラムやプログラムメモリ管理手段の制限に対応して、システムのメモリを効率よく使用することができる。
【００３０】
実施の形態４．
実施の形態３の各手段に係るプログラムがメモリにロードされている状態を説明する。図１４は、メモリにロードされているプログラムの状態を示す図である。
【００３１】
プログラムメモリ解放要求手順７０２に含まれるプログラムメモリ貸与要求手順１４０９は、プログラムメモリ貸与要求手段１０９の処理手順を有している。
【００３２】
プログラムメモリ解放要求応答手順７０５に含まれるプログラムメモリ貸与要求応答手順１４１０は、プログラムメモリ貸与要求応答１１０の処理手順を有している。
【００３３】
実施の形態５．
図１５に、実施の形態５の構成を示す。システムメモリ管理手段１０１のプログラムメモリ解放要求手段１０２は、プログラムメモリ貸借管理手段１１１を備え、処理Ａ実行手段１０３（処理Ａプログラム）のプログラムメモリ管理手段１０４は、プログラムメモリ貸借要求応答手段１１２を備え、処理Ｂ実行手段１０７（処理Ｂプログラム）のプログラムメモリ管理手段１０８は、プログラムメモリ借用要求手段１１３を備える。
【００３４】
本実施例における動作を図１６〜図１８を用いて説明する。実施の形態３と同様にプログラムＢがサイズ２０００のメモリの獲得を行うものとする。処理Ｂ実行手段１０７（処理Ｂプログラム）のメモリ管理手段１０８は、自身の管理メモリに空き領域がないため、プログラムメモリ借用要求手段１１３によりプログラムメモリ貸借管理手段１１１に対して、処理Ａ実行手段１０３（処理Ａプログラム）からのメモリの借用を要求する（Ｓ１６０１）。プログラムメモリ貸借管理手段１１１は、処理Ａ実行手段１０３（処理Ａプログラム）のプログラムメモリ貸借要求応答手段１１２にメモリの貸与を要求する（Ｓ１６０２）。これまでの実施の形態と同様に、プログラムメモリ貸借要求応答手段１１２は、プログラムメモリ回収手段１０６に未使用メモリの回収を行わせ（Ｓ１６０３）、メモリ領域を貸与する（Ｓ１６０４）。このときのプログラムメモリ管理表を図１７に示す。これにより、システムメモリ管理手段１０１はメモリを処理Ｂプログラムのために割り当てる５０５。ただし、この場合、そもそも処理Ａプログラムに割り当てていた領域であるため、システムメモリ管理表にはシステムメモリ管理表（図１１）と同じように、該当領域が処理Ａ実行手段１０３（処理Ａプログラム）から処理Ｂ実行手段１０７（処理Ｂプログラム）に貸与されるように管理する。このとき、プログラムＢのプログラムメモリ管理表は図１８のようになっており、アドレス６０００からサイズ２０００のメモリが借用されていることを管理する。
【００３５】
本実施の形態は、実施の形態３によく似ているが、処理Ｂ実行手段１０７（処理Ｂプログラム）が処理Ａ実行手段１０３（処理Ａプログラム）からの借用を明示的に要求している点が異なる。これは、発明が解決しようとする課題で述べたメールアプリケーションとカメラアプリケーションの関係のようにの場合に有効である。すなわち、ここではメールアプリケーションが処理Ａプログラムであり、
カメラアプリケーションが処理Ｂプログラムに相当する。メールアプリケーションは、特に携帯端末などのように画面が小さい場合には１つのアプリケーションのみユーザから操作可能な場合には、カメラ撮影中には動作する必要がなく、カメラアプリケーションは動作が一時停止していることが確実なメールアプリケーションからメモリを借用する。
【００３６】
上記の場合には、メールアプリケーションがこの場合のカメラアプリケーション以外からのメモリ借用要求を断ることが望ましい。したがって、メールアプリケーション、すなわち処理Ａ実行手段１０３（処理Ａプログラム）のプログラムメモリ貸借要求応答手段１１２にメモリ貸借許可表を備えるようにする。これは、静的であっても動的であってもよいが、上記の場合には、メールアプリケーションからカメラアプリケーションを呼び出したときに借用を許可し、そうでないときには禁止する。メモリ貸借許可表の例を図１９に示す。
【００３７】
実施の形態６．
実施の形態５の各手段に係るプログラムがメモリにロードされている状態を説明する。図２０は、メモリにロードされているプログラムの状態を示す図である。
【００３８】
プログラムメモリ解放要求手順７０２に含まれるプログラムメモリ貸借管理手順２８１１は、プログラムメモリ貸借管理手段１１１の処理手順を有している。プログラムメモリ管理手順７０４に含まれるプログラムメモリ貸借要求応答手順２８１２は、プログラムメモリ貸借要求応答手段１１２の処理手順を有している。
【００３９】
実施の形態７．
実施の形態５は、メールアプリケーションとカメラアプリケーションの連係動作に適していることを述べた。このメールアプリケーションとカメラアプリケーションの関係の場合、メールアプリケーションがカメラアプリケーションを呼び出し、カメラアプリケーションが撮影したカメラ画像をメールアプリケーションが使用する。すなわち、カメラ画像は両者で一時的に共有され、受け渡されるデータとなる。そこで、貸借されるメモリの属性（プログラムメモリ管理表の使用中の列）に共有属性を追加する。また、カメラ画像などは比較的大きなサイズを占めることが考えられ、複数の連続しないメモリ領域を合わせないと使用できないことが考えられる。特に、複数の連続しないメモリ領域に分断された、１つのカメラ画像データを２つのプログラムから共有する場合、それぞれのプログラム内に応じて、連続的にデータが配置されているように扱えることは、プログラムの構造を容易にする。
【００４０】
図２５及び図２６に、図１７及び図１８の状況に相当する処理Ａプログラム，処理Ｂプログラムのプログラム管理表を示す。使用中列に共有の属性が追加されている。
【００４１】
共有しているメモリ領域を連続的に見えるようにする、仮想連続メモリ提供手段について、図２１〜図２４を用いて説明する。
【００４２】
実施の形態５と同様にしてメモリの貸借を行った結果、処理Ａ実行手段１０３（処理Ａプログラム）のプログラムメモリ管理表は、図２１のようになり、処理Ｂ実行手段１０７（処理Ｂプログラム）のプログラムメモリ管理表は、同様に図２２のようになったとする。また、この貸借されている１０００＋１０００、あわせて２０００のサイズのメモリにカメラ画像データのような連続データを格納し、共有あるいは受け渡ししたいとする。処理Ａ実行手段１０３（処理Ａプログラム）の仮想連続メモリ提供手段は、仮想連続メモリ管理表（図２３）を作成し、処理Ｂ実行手段１０７（処理Ｂプログラム）の仮想連続メモリ提供手段は、同様に仮想連続メモリ管理表（図２４）を作成する。処理Ａプログラムのアドレス１００００からサイズ２０００と、処理Ｂプログラムのアドレス２００００からサイズ２０００は、貸借されている同じ領域を指し、仮想的には連続しているように見える。プログラムからは、ＧｅｔＭｅｍｏｒｙ（ｖｉｒｔｕａｌ＿ａｄｄｒｅｓｓ、ｓｉｚｅ）のようなＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を用意し、指定された仮想アドレスとサイズから、仮想連続メモリ管理表を参照して、実アドレスのメモリからのデータ参照を行うようにする。これは、ＣＰＵのＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）の機能などを利用してもよい。
【００４３】
実施の形態５あるいは７では、２つのプログラムの間でのメモリの貸借を実現したが、３つ以上のプログラムにも対応できるようにグループを作成し、そのグループに属するプログラムの間でメモリの貸借を可能にさせる。このようにすることにより、そのグループに対してシステムから提供できるメモリ量を一定限度に保ちつつ、グループ内でのその限度内のメモリ量を効率よく利用することができる。
【００４４】
さらに、グループ内の各プログラムに優先度をつけることにより、どのプログラムによる借用要求を優先するかを定義し、ユーザにとって重要なプログラムやより大きなメモリを確保することで使い道が広がるプログラムにメモリを優先的に使用させることにより、メモリの使い道をも考慮したうえで、メモリを真に効率よく利用することができる。
【００４５】
図２７及び図２８に、この場合のメモリ貸借許可表の例を示す。図２７に、処理Ａ実行手段１０３（処理Ａプログラム）のメモリ貸借許可表を示す。貸与許可プログラムとしてグループＸが定義されている。グループＸ定義表１３０２にグループＸの定義を示す。グループＸは、処理Ａプログラム、処理Ｂプログラム、処理Ｃプログラム、処理Ｄプログラムから構成され、それぞれ優先度が１０、９、９、３と定義されている。
【００４６】
以上のようには、システム（メモリ管理装置の例）コンピュータであり、各要素はプログラムにより処理を実行することができる。また、プログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにすることができる。
【００４７】
図２９は、システム（メモリ管理装置の例）のハードウエア構成例を示す図である。バスに、演算装置１、データ記憶装置２、メモリ３が接続されている。データ記憶装置２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やハードディスクである。メモ３は、通常ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００４８】
プログラムは、通常データ記憶装置２に記憶されており、メモリ３にロードされた状態で、順次演算装置１に読み込まれ処理を行う。
【図面の簡単な説明】
【００４９】
【図１】実施の形態１に係る構成を示す図である。
【図２】実施の形態１に係るシーケンスを示す図である。
【図３】システムメモリ管理表の例を示す図である。
【図４】システムメモリ管理表の例を示す図である。
【図５】プログラムメモリ管理表の例を示す図である。
【図６】プログラムメモリ管理表の例を示す図である。
【図７】実施の形態２（実施の形態１）におけるプログラムの状態を示す図である。
【図８】実施の形態３に係る構成を示す図である。
【図９】実施の形態３に係るシーケンスを示す図である。
【図１０】システムメモリ管理表の例を示す図である。
【図１１】システムメモリ管理表の例を示す図である。
【図１２】プログラムメモリ管理表の例を示す図である。
【図１３】プログラムメモリ管理表の例を示す図である。
【図１４】実施の形態４（実施の形態３）におけるプログラムの状態を示す図である。
【図１５】実施の形態５に係る構成を示す図である。
【図１６】実施の形態５に係るシーケンスを示す図である。
【図１７】プログラムメモリ管理表の例を示す図である。
【図１８】プログラムメモリ管理表の例を示す図である。
【図１９】メモリ貸借許可表の例を示す図である。
【図２０】実施の形態６（実施の形態５）におけるプログラムの状態を示す図である。
【図２１】プログラムメモリ管理表の例を示す図である。
【図２２】プログラムメモリ管理表の例を示す図である。
【図２３】仮想連続メモリ管理表の例を示す図である。
【図２４】仮想連続メモリ管理表の例を示す図である。
【図２５】プログラムメモリ管理表の例を示す図である。
【図２６】プログラムメモリ管理表の例を示す図である。
【図２７】メモリ貸借許可表の例を示す図である。
【図２８】グループＸ定義表を示す図である。
【図２９】本発明におけるハードウェア構成図である。
【符号の説明】
【００５０】
１  演算装置、２  データ記憶装置、３  メモリ、１０１  システムメモリ管理手段、１０２  プログラムメモリ解放要求手段、１０３  処理Ａ実行手段、１０４  プログラムメモリ解放要求応答手段、１０５  プログラムメモリ解放要求応答手段、１０６  プログラムメモリ回収手段、１０７  処理Ｂ実行手段、１０８  プログラムメモリ管理手段、１０９  プログラムメモリ貸与要求手段、１１０  プログラムメモリ貸与要求応答手段、１１１  プログラムメモリ貸借管理手段、７０１  システムメモリ管理手段、７０２  プログラムメモリ解放要求手順、７０３  処理Ａプログラム、７０４  プログラムメモリ管理手順、７０５  プログラムメモリ解放要求応答手順、７０６  プログラムメモリ回収手順、７０７  処理Ｂプログラム、７０８  プログラムメモリ管理手順、７０９  プログラム使用メモリ領域、１４０９  プログラムメモリ貸与要求手順、１４１０  プログラムメモリ貸与要求応答手順。
【図１】
2005322007.tif 000003
【図２】
2005322007.tif 000004
【図３】
2005322007.tif 000005
【図４】
2005322007.tif 000006
【図５】
2005322007.tif 000007
【図６】
2005322007.tif 000008
【図７】
2005322007.tif 000009
【図８】
2005322007.tif 000010
【図９】
2005322007.tif 000011
【図１０】
2005322007.tif 000012
【図１１】
2005322007.tif 000013
【図１２】
2005322007.tif 000014
【図１３】
2005322007.tif 000015
【図１４】
2005322007.tif 000016
【図１５】
2005322007.tif 000017
【図１６】
2005322007.tif 000018
【図１７】
2005322007.tif 000019
【図１８】
2005322007.tif 000020
【図１９】
2005322007.tif 000021
【図２０】
2005322007.tif 000022
【図２１】
2005322007.tif 000023
【図２２】
2005322007.tif 000024
【図２３】
2005322007.tif 000025
【図２４】
2005322007.tif 000026
【図２５】
2005322007.tif 000027
【図２６】
2005322007.tif 000028
【図２７】
2005322007.tif 000029
【図２８】
2005322007.tif 000030
【図２９】
2005322007.tif 000031