(57)【要約】【課題】記憶装置の空き容量が不足している場合に、システムや装置の異常の発生を抑制しつつ、記憶装置の領域を解放し、新たな領域を確保する。【解決手段】メモリマネージャは、プログラムからの要求に応じてメモリ領域を確保するとともに、確保したメモリ領域に当該プログラムにより指定されたランクを設定する。また、メモリマネージャは、主記憶装置の空き容量が足りない場合、すでに確保されているメモリ領域の中から、各メモリ領域のランクに基づいて解放するメモリ領域を選択し、選択したメモリ領域を解放し、新たなメモリ領域を確保する。本発明は、例えば、組み込み機器に適用できる。【選択図】図１
2012221217.tif 000002
【特許請求の範囲】
【請求項１】
プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定するメモリ領域割り当て部と、
前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択するメモリ領域選択部と、
前記選択された領域を解放するメモリ領域解放部と
を備えるメモリ管理装置。
【請求項２】
前記メモリ領域選択部は、新たに確保する領域よりランクが低い領域の中から、解放する領域を選択する
請求項１に記載のメモリ管理装置。
【請求項３】
前記領域選択部は、新たに確保する領域よりランクが低い領域のうち最もランクが低い領域を解放する領域に選択する
請求項２に記載のメモリ管理装置。
【請求項４】
各プログラムには予めランクが設定されており、
前記領域選択部は、前記最もランクが低い領域が複数ある場合、前記最もランクが低い領域のうち最もランクが低いプログラムに割り当てられている領域を解放する領域に選択する
請求項３に記載のメモリ管理装置。
【請求項５】
前記メモリ領域選択部は、新たに確保する領域よりランクが低い領域が存在しない場合、新たな領域の確保を行わない
請求項２に記載のメモリ管理装置。
【請求項６】
各プログラムには予めランクが設定されており、
前記メモリ領域解放部は、新たに確保する領域よりランクが低い領域が存在しない場合、領域の確保を要求したプログラムよりランクが低いプログラムのうち少なくとも１つを強制終了させる
請求項２に記載のメモリ管理装置。
【請求項７】
前記領域割り当て部は、プログラムからの要求に従って、当該プログラムに割り当てられている領域のランクを変更する
請求項１に記載のメモリ管理装置。
【請求項８】
プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定し、
前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択し、
前記選択された領域を解放する
ステップを含むメモリ管理方法。
【請求項９】
プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定し、
前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択し、
前記選択された領域を解放する
ステップを含む処理をコンピュータに実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリ管理装置、メモリ管理方法、および、制御プログラムに関し、特に、メモリ領域の確保および解放を行う場合に用いて好適なメモリ管理装置、メモリ管理方法、および、制御プログラムに関する。
【背景技術】
【０００２】
従来、メモリの空き容量が足りない場合、優先度の低いプロセス、または、次の実行時刻までの時間が大きいプロセスを選択し、選択したプロセスに割り当てられているメモリ領域を解放することが提案されている（例えば、特許文献１参照）。
【０００３】
また、従来、メモリの実ページ不足が発生した場合、重要度の低い業務系のジョブからページスチールを行い、重要度の高い業務系のジョブに実ページを割り当てることが提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２１５０９９号公報
【特許文献２】特開２００２−２４４８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１または２に記載の発明では、メモリ領域が解放されたプロセスまたはジョブが強制終了されるため、例えば、複数のプロセスまたはジョブが協調して動作するシステムでは、システムが正常に動作しなくなる恐れがある。
【０００６】
本技術は、記憶装置の空き容量が不足している場合に、システムや装置の異常の発生を抑制しつつ、記憶装置の領域を解放し、新たな領域を確保できるようにするものである。
【課題を解決するための手段】
【０００７】
本技術の一側面のメモリ管理装置は、プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定するメモリ領域割り当て部と、前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択するメモリ領域選択部と、前記選択された領域を解放するメモリ領域解放部とを備える。
【０００８】
前記メモリ領域選択部には、新たに確保する領域よりランクが低い領域の中から、解放する領域を選択させることができる。
【０００９】
前記領域選択部には、新たに確保する領域よりランクが低い領域のうち最もランクが低い領域を解放する領域に選択させることができる。
【００１０】
各プログラムには予めランクが設定されており、前記領域選択部には、前記最もランクが低い領域が複数ある場合、前記最もランクが低い領域のうち最もランクが低いプログラムに割り当てられている領域を解放する領域に選択させることができる。
【００１１】
前記メモリ領域選択部には、新たに確保する領域よりランクが低い領域が存在しない場合、新たな領域の確保を行わせないようにすることができる。
【００１２】
各プログラムには予めランクが設定されており、前記メモリ領域解放部には、新たに確保する領域よりランクが低い領域が存在しない場合、領域の確保を要求したプログラムよりランクが低いプログラムのうち少なくとも１つを強制終了させるようにすることができる。
【００１３】
前記領域割り当て部には、プログラムからの要求に従って、当該プログラムに割り当てられている領域のランクを変更させるようにすることができる。
【００１４】
本技術の一側面のメモリ管理方法は、プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定し、前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択し、前記選択された領域を解放するステップを含む。
【００１５】
本技術の一側面の制御プログラムは、プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定し、前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択し、前記選択された領域を解放するステップを含む処理をコンピュータに実行させる。
【００１６】
本技術の一側面においては、プログラムからの要求に応じて記憶装置の領域が確保されるとともに、確保した領域に当該プログラムにより指定されたランクが設定され、前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域が選択され、前記選択された領域が解放される。
【発明の効果】
【００１７】
本技術の一側面によれば、記憶装置の空き容量が不足している場合に、記憶装置の領域を解放し、新たな領域を確保することができる。
【００１８】
特に、本技術の一側面によれば、記憶装置の空き容量が不足している場合に、システムや装置の異常の発生を抑制しつつ、記憶装置の領域を解放し、新たな領域を確保することができる。
【図面の簡単な説明】
【００１９】
【図１】本技術の概要を説明するための図である。
【図２】本技術を適用した情報処理システムの一実施の形態を示すブロック図である。
【図３】メモリマネージャの機能の構成例を示すブロック図である。
【図４】メモリ領域確保要求処理を説明するためのフローチャートである。
【図５】メモリ領域確保処理の第１の実施の形態を説明するためのフローチャートである。
【図６】メモリ領域確保処理の第１の実施の形態の具体例を説明するための図である。
【図７】メモリ領域確保処理の第１の実施の形態の具体例を説明するための図である。
【図８】メモリ領域確保処理の第２の実施の形態を説明するためのフローチャートである。
【図９】メモリ領域確保処理の第３の実施の形態を説明するためのフローチャートである。
【図１０】メモリ領域確保処理の第４の実施の形態を説明するためのフローチャートである。
【図１１】メモリアクセス処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本技術を実施するための形態（以下、実施の形態という）について説明する。なお、説明は以下の順序で行う。
１．実施の形態
２．変形例
【００２１】
＜１．実施の形態＞
［本技術の概要］
まず、図１を参照して、本技術の概要について説明する。なお、図内の縦方向が時間軸を示している。
【００２２】
プログラムＡおよびプログラムＢは、CPU（Central Processing Unit）等の演算処理装置により実行されるプログラムである。メモリマネージャは、例えば、ＯＳ（オペレーティングシステム）の機能の一部として提供され、プログラムＡおよびプログラムＢに割り当てるメモリ領域の確保および解放等の処理を実行する。
【００２３】
例えば、プログラムＡおよびプログラムＢが、メモリマネージャにメモリ領域の確保を要求する場合、あわせて確保するメモリ領域のランクを指定する。メモリマネージャは、各プログラムからの要求に従って、メモリ領域を確保するとともに、確保したメモリ領域に指定されたランクを設定する。
【００２４】
このメモリ領域のランクは、例えば、メモリ領域の用途等を考慮した重要度に基づいて設定される。例えば、システム全体の処理に欠かせないデータや、消去されると再現が困難なデータを保持するメモリ領域のランクは高く設定される。一方、例えば、処理の高速化のために一時的にデータを保持しておくメモリ領域、例えば、ウェブブラウザのページキャッシュデータを保持するメモリ領域や、ファイルから読み込んだデータをキャッシュしておくメモリ領域のランクは低く設定される。また、例えば、容易に再計算ができるデータを保持するメモリ領域のランクは低く設定される。
【００２５】
そして、図１の例においては、まず、プログラムＢからの要求により低ランクのメモリ領域Ｍ１が割り当てられる。次に、プログラムＡからの要求により高ランクのメモリ領域Ｍ２が割り当てられ、その次に、プログラムＢからの要求により高ランクのメモリ領域Ｍ３が割り当てられる。そして、プログラムＡから高ランクのメモリ領域Ｍ４の確保が要求された場合に、メモリの空き容量の不足が発生したとき、メモリ領域Ｍ４よりランクが低いメモリ領域Ｍ１が自動解放される。その結果、メモリ不足が解消し、メモリ領域Ｍ４が確保される。
【００２６】
このように、本技術においては、プログラムからの要求によりメモリ領域を確保する場合に、確保するメモリ領域のランクが設定され、メモリ不足に陥った場合に、ランクが低いメモリ領域が優先的に解放される。
【００２７】
これにより、例えば、重要なデータを保持するメモリ領域が解放されてしまい、システムや装置が正常に動作しないようになることが防止される。
【００２８】
［情報処理システムの構成例］
図２は、本技術を適用した情報処理システム１０１の一実施の形態を示すブロック図である。
【００２９】
情報処理システム１０１は、例えば、テレビジョン受像機、携帯電話機等の各種の組み込み機器や、コンピュータ等に適用可能なシステムである。
【００３０】
情報処理システム１０１は、演算処理装置１１１、主記憶装置１１２、および、補助記憶装置１１３を含むように構成される。演算処理装置１１１、主記憶装置１１２、および、補助記憶装置１１３は、バス１１４を介して相互に接続されている。
【００３１】
演算処理装置１１１は、例えば、CPU（Central Processing Unit）等により構成される。
【００３２】
主記憶装置１１２は、例えば、RAM（Random Access Memory）等により構成される。
【００３３】
補助記憶装置１１３は、例えば、ROM（Read Only Memory）、ハードディスクドライブ、フラッシュメモリ等、主記憶装置１１２より容量が大きく、アクセス速度が遅い記憶装置により構成される。
【００３４】
ここで、演算処理装置１１１のソフトウエアの構成例について説明する。
【００３５】
メモリマネージャ１２１およびメモリアクセス部１２２は、例えば、演算処理装置１１１により実行されるＯＳの機能の一部として提供される。
【００３６】
メモリマネージャ１２１は、プログラム１２３−１乃至１２３−ｎからの要求等に応じて、補助記憶装置１１３上のプログラムおよびデータの主記憶装置１１２への配置、並びに、主記憶装置１１２の領域（メモリ領域）の確保および解放の制御を行う。また、メモリマネージャ１２１は、プログラム１２３−１乃至１２３−ｎからの要求に応じて確保したメモリ領域のランクの設定を行う。なお、以下、各メモリ領域は、高、中、低の３段階のランクに分類されるものとする。また、メモリマネージャ１２１は、プログラム１２３−１乃至１２３−ｎからの要求に対する処理結果を要求元のプログラムに通知する。
【００３７】
さらに、メモリマネージャ１２１は、主記憶装置１１２に確保されているメモリ領域の状態を示す情報（以下、メモリマップと称する）の生成および更新を行い、主記憶装置１１２に記憶させる。メモリマップは、例えば、主記憶装置１１２に確保されている各メモリ領域の位置、サイズおよびランク、並びに、各メモリ領域が割り当てられているプログラム１２３およびそのランク（後述）を示す情報を含む。
【００３８】
さらに、メモリマネージャ１２１は、例えば、メモリ領域を確保できない場合などに、プログラム１２３−１乃至１２３−ｎを強制終了させる。
【００３９】
メモリアクセス部１２２は、プログラム１２３−１乃至１２３−ｎからの要求に応じて、メモリマップを用いて、主記憶装置１１２から指定されたデータを読み出し、読み出したデータを要求元のプログラムに渡す。また、メモリアクセス部１２２は、プログラム１２３−１乃至１２３−ｎからの要求に応じて、メモリマップを用いて、主記憶装置１１２上の指定されたデータの書き込みを行い、その結果を要求元のプログラムに通知する。
【００４０】
また、メモリマネージャ１２１とメモリアクセス部１２２とは、互いにデータ等の授受を行いながら、協調して動作する。
【００４１】
プログラム１２３−１乃至１２３−ｎは、演算処理装置１１１が所定の機能を実現するためのアプリケーションプログラム等により構成される。また、プログラム１２３−１乃至１２３−ｎには、それぞれが行う処理の優先度等に応じたランクが設定されている。
【００４２】
このプログラム１２３−１乃至１２３−ｎのランクは、例えば、各プログラムにより実行される処理の優先度に基づいて設定される。例えば、優先的に処理する必要があるプログラムのランクは高く設定され、処理を遅らせてもよいプログラムのランクは低く設定される。
【００４３】
なお、以下、プログラム１２３−１乃至１２３−ｎは、高、中、低の３段階のランクに分類されるものとする。また、以下、プログラム１２３−１乃至１２３−ｎを個々に区別する必要がない場合、単にプログラム１２３と称する。
【００４４】
［メモリマネージャ１２１の機能の構成例］
次に、図３を参照して、メモリマネージャ１２１の機能の構成例について説明する。
【００４５】
メモリマネージャ１２１は、メモリ領域割り当て部１５１、メモリ領域選択部１５２、および、メモリ領域解放部１５３を含むように構成される。
【００４６】
メモリ領域割り当て部１５１は、プログラム１２３からの要求に応じて、主記憶装置１１２の領域（メモリ領域）を確保し、その結果を要求元のプログラム１２３に通知する。また、メモリ領域割り当て部１５１は、主記憶装置１１２の空き容量が不足している場合、主記憶装置１１２の空き容量が不足していること、確保が要求されたメモリ領域のランク、および、要求元のプログラム１２３のランクをメモリ領域選択部１５２に通知する。さらに、メモリ領域割り当て部１５１は、補助記憶装置１１３上のプログラムおよびデータの主記憶装置１１２への配置（スワップイン）を制御する。また、メモリ領域割り当て部１５１は、メモリ領域の確保またはスワップインの実行に伴い、主記憶装置１１２に記憶されているメモリマップの更新を行う。
【００４７】
メモリ領域選択部１５２は、メモリ領域割り当て部１５１から主記憶装置１１２の空き容量の不足が通知された場合、メモリマップに基づいて、解放するメモリ領域を選択する。メモリ領域選択部１５２は、選択したメモリ領域をメモリ領域解放部１５３に通知する。
【００４８】
メモリ領域解放部１５３は、メモリ領域選択部１５２により選択されたメモリ領域を解放し、メモリ領域を解放したことをメモリ領域割り当て部１５１に通知する。また、メモリ領域解放部１５３は、プログラム１２３からの要求に応じて、メモリ領域を解放し、その結果を要求元のプログラム１２３に通知する。さらに、メモリ領域解放部１５３は、補助記憶装置１１３上のプログラムおよびデータの主記憶装置１１２への配置（スワップアウト）を制御する。また、メモリ領域解放部１５３は、メモリ領域の解放またはスワップアウトの実行に伴い、主記憶装置１１２に記憶されているメモリマップの更新を行う。
【００４９】
［メモリ領域を確保する場合の処理］
次に、図４乃至図１０を参照して、情報処理システム１０１において、プログラム１２３からの要求に対して、主記憶装置１１２の領域を確保する場合の処理について説明する。
【００５０】
［メモリ領域確保要求処理］
まず、図４のフローチャートを参照して、プログラム１２３により実行されるメモリ領域確保要求処理について説明する。
【００５１】
ステップＳ１において、プログラム１２３は、メモリ領域割り当て部１５１に対して、メモリ領域の確保を要求する。このとき、要求元のプログラム１２３は、少なくとも確保するメモリ領域のサイズ（容量）およびランク、並びに、要求元のプログラム１２３のランクをメモリ領域割り当て部１５１に通知する。
【００５２】
ステップＳ２において、プログラム１２３は、メモリ領域割り当て部１５１から、メモリ領域の確保結果を受信する。このメモリ領域の確保結果には、例えば、メモリ領域の確保が成功したか否か、確保したメモリ領域の位置等が含まれる。
【００５３】
［メモリ領域確保処理の第１の実施の形態］
次に、図５のフローチャートを参照して、図４のメモリ領域確保要求処理に対応して、メモリマネージャ１２１により実行されるメモリ領域確保処理の第１の実施の形態について説明する。
【００５４】
なお、この第１の実施の形態では、メモリ領域のランクを優先的に用いて、メモリ領域の確保が行われる。
【００５５】
ステップＳ１０１において、メモリ領域割り当て部１５１は、主記憶装置１１２の空き容量が不足しているか否かを判定する。メモリ領域割り当て部１５１は、プログラム１２３から要求されたメモリ領域を確保するのに十分な空き容量が主記憶装置１１２にない場合、主記憶装置１１２の空き容量が不足していると判定する。そして、メモリ領域割り当て部１５１は、主記憶装置１１２の空き容量が不足していること、要求されたメモリ領域のランク、および、要求元のプログラム１２３のランクをメモリ領域選択部１５２に通知する。その後、処理はステップＳ１０２に進む。
【００５６】
ステップＳ１０２において、メモリ領域選択部１５２は、要求されたメモリ領域よりランクが低いメモリ領域があるか否かを判定する。具体的には、メモリ領域選択部１５２は、メモリマップに基づいて、各プログラム１２３に割り当てられているメモリ領域（すなわち、確保済みのメモリ領域）の中から、要求されたメモリ領域よりランクが低いメモリ領域を検索する。その結果、要求されたメモリ領域よりランクが低いメモリ領域があると判定された場合、処理はステップＳ１０３に進む。
【００５７】
ステップＳ１０３において、メモリ領域選択部１５２は、最もランクが低いメモリ領域が複数あるか否かを判定する。最もランクが低いメモリ領域が１つしかないと判定された場合、処理はステップＳ１０４に進む。これは、例えば、プログラム１２３から要求されたメモリ領域が高ランクである場合、確保済みのメモリ領域の中に低ランクのものが１つしかないときや、低ランクのものがなく、中ランクのものが１つしかないとき等である。
【００５８】
ステップＳ１０４において、メモリ領域選択部１５２は、最もランクが低いメモリ領域を選択する。そして、メモリ領域選択部１５２は、選択したメモリ領域をメモリ領域解放部１５３に通知する。
【００５９】
その後、処理はステップＳ１０６に進む。
【００６０】
一方、ステップＳ１０３において、最もランクが低いメモリ領域が複数あると判定された場合、処理はステップＳ１０５に進む。
【００６１】
ステップＳ１０５において、メモリ領域選択部１５２は、最もランクが低いメモリ領域の中から、最もランクが低いプログラム１２３に割り当てられているメモリ領域を選択する。なお、該当するメモリ領域が複数ある場合、メモリ領域選択部１５２は、例えば、メモリ領域のサイズや使用状況等に基づいて、あるいは、ランダムに、１つのメモリ領域を選択する。そして、メモリ領域選択部１５２は、選択したメモリ領域をメモリ領域解放部１５３に通知する。
【００６２】
その後、処理はステップＳ１０６に進む。
【００６３】
ここで、図６を参照して、ステップＳ１０５の処理の具体例について説明する。
【００６４】
この例では、主記憶装置１１２において、メモリ領域Ｍ１乃至Ｍ６の６つのメモリ領域が確保されている。そのうち、メモリ領域Ｍ１、Ｍ３およびＭ６がプログラムＡに割り当てられ、メモリ領域Ｍ２およびＭ４がプログラムＢに割り当てられ、メモリ領域Ｍ５がプログラムＣに割り当てられている。また、メモリ領域Ｍ２、Ｍ５およびＭ６が高ランクに設定され、メモリ領域Ｍ３が中ランクに設定され、メモリ領域Ｍ１およびＭ４が低ランクに設定されている。
【００６５】
また、プログラムＡは高ランクに設定され、プログラムＢは中ランクに設定され、プログラムＣは低ランクに設定されている。
【００６６】
そして、プログラムＣが、高ランクのメモリ領域の確保を要求した場合について検討する。
【００６７】
この場合、プログラムＣが要求したメモリ領域よりランクが低い中ランクおよび低ランクのメモリ領域は、メモリ領域Ｍ１、Ｍ３およびＭ４の３つである。また、これらの３つのメモリ領域の中で最もランクが低い低ランクのメモリ領域は、メモリ領域Ｍ１およびＭ４の２つである。そして、これらの２つのメモリ領域のうち、メモリ領域Ｍ４が割り当てられているプログラムＢの方が、メモリ領域Ｍ１が割り当てられているプログラムＡよりランクが低い。従って、この場合、メモリ領域Ｍ４が選択される。
【００６８】
図５に戻り、ステップＳ１０６において、メモリ領域解放部１５３は、選択したメモリ領域を解放する。なお、このとき、選択したメモリ領域を単に解放するようにしてもよいし、選択したメモリ領域のデータを補助記憶装置１１３にスワップアウトすることにより解放するようにしてもよい。
【００６９】
また、メモリ領域解放部１５３は、解放したメモリ領域の情報をメモリマップから削除する。さらに、メモリ領域解放部１５３は、メモリ領域を解放したことをメモリ領域割り当て部１５１に通知する。
【００７０】
その後、処理はステップＳ１０７に進む。
【００７１】
なお、このとき、解放したメモリ領域が割り当てられていたプログラム１２３に対して、メモリ領域を解放したことを通知するようにしてもよいし、通知しないようにしてもよい。
【００７２】
前者の場合、例えば、メモリマネージャ１２１が、当該プログラム１２３に対して、すぐに割り込み通知を行うようにしてもよい。また、例えば、当該プログラム１２３が解放されたメモリ領域にアクセスしようとしたときに、メモリアクセス部１２２が割り込み通知を行うようにしてもよい。
【００７３】
後者の場合、例えば、プログラム１２３自身が、解放されたメモリ領域の値（例えば、オールクリアされている等）に基づいて、メモリ領域の解放を検出するようにすればよい。
【００７４】
一方、ステップＳ１０１において、主記憶装置１１２の空き容量が不足していないと判定された場合、ステップＳ１０２乃至Ｓ１０６の処理はスキップされ、処理はステップＳ１０７に進む。
【００７５】
ステップＳ１０７において、メモリ領域割り当て部１５１は、メモリ領域を確保する。すなわち、メモリ領域割り当て部１５１は、主記憶装置１１２の空き領域内に、プログラム１２３により要求されたサイズのメモリ領域を確保する。
【００７６】
例えば、上述した図６の例の場合、ステップＳ１０６およびＳ１０７の処理により、図７に示されるように、メモリ領域Ｍ４が解放され、代わりにメモリ領域Ｍ７が確保され、プログラムＣに割り当てられる。
【００７７】
また、メモリ領域割り当て部１５１は、新たに確保したメモリ領域の位置、サイズおよびランク、並びに、メモリ領域を割り当てたプログラム１２３およびそのランク等の情報をメモリマップに追加する。さらに、メモリ領域割り当て部１５１は、確保したメモリ領域の位置等を要求元のプログラム１２３に通知する。
【００７８】
その後、メモリ領域確保処理は終了する。
【００７９】
一方、ステップＳ１０２において、要求されたメモリ領域よりランクが低いメモリ領域がないと判定された場合、処理はステップＳ１０８に進む。
【００８０】
ステップＳ１０８において、メモリマネージャ１２１は、エラー処理を実行する。このとき、例えば、メモリ領域の確保を行わずに、単にメモリ領域の確保に失敗したことを要求元のプログラム１２３に通知するようにしてもよいし、あるいは、別の方法でメモリ領域の確保を試みるようにしてもよい。
【００８１】
後者の場合、例えば、メモリ領域解放部１５３は、要求元のプログラム１２３よりランクが低いプログラム１２３のうちの少なくとも１つを強制終了させ、そのプログラム１２３に割り当てられていたメモリ領域を解放する。そして、メモリマネージャ１２１は、ステップＳ１０１から再度処理を実行する。
【００８２】
あるいは、例えば、メモリマネージャ１２１は、後述するメモリ領域確保処理の第２の実施の形態と同様に、プログラム１２３のランクを優先的に用いて、要求されたメモリ領域の確保を試みる。
【００８３】
その後、メモリ領域確保処理は終了する。
【００８４】
このように、プログラム１２３からメモリ領域の確保が要求された場合に、主記憶装置１１２の空き容量が不足しているとき、よりランクが低いメモリ領域が解放され、新たなメモリ領域が確保される。従って、メモリ領域を自動解放することにより、情報処理システム１０１が正常に動作しないようになることが防止される。
【００８５】
［メモリ領域確保処理の第２の実施の形態］
次に、図８のフローチャートを参照して、図４のメモリ領域確保要求処理に対応して、メモリマネージャ１２１により実行されるメモリ領域確保処理の第２の実施の形態について説明する。
【００８６】
なお、この第２の実施の形態では、プログラム１２３のランクを優先的に用いて、メモリ領域の確保が行われる。
【００８７】
ステップＳ１５１において、図５のステップＳ１０１の処理と同様に、主記憶装置１１２の空き容量が不足しているか否かが判定され、主記憶装置１１２の空き容量が不足していると判定された場合、処理はステップＳ１５２に進む。
【００８８】
ステップＳ１５２において、メモリ領域選択部１５２は、メモリマップに基づいて、メモリ領域が割り当てられているプログラム１２３の中に、要求元のプログラム１２３よりランクが低いものがあるか否かを判定する。メモリ領域が割り当てられているプログラム１２３の中に、要求元のプログラム１２３よりランクが低いものがあると判定された場合、処理はステップＳ１５３に進む。
【００８９】
ステップＳ１５３において、メモリ領域選択部１５２は、最もランクが低いプログラム１２３が複数あるか否かを判定する。最もランクが低いプログラム１２３が１つしかないと判定された場合、処理はステップＳ１５４に進む。これは、例えば、要求元のプログラム１２３が高ランクである場合、メモリ領域が割り当てられているプログラム１２３の中に低ランクのものが１つしかないときや、低ランクのものがなく、中ランクのものが１つしかないとき等である。
【００９０】
ステップＳ１５４において、メモリ領域選択部１５２は、最もランクが低いプログラム１２３を選択する。
【００９１】
その後、処理はステップＳ１５６に進む。
【００９２】
一方、ステップＳ１５３において、最もランクが低いプログラム１２３が複数あると判定された場合、処理はステップＳ１５５に進む。
【００９３】
ステップＳ１５５において、メモリ領域選択部１５２は、最もランクが低いプログラム１２３の中から、最もランクが低いメモリ領域が割り当てられているプログラム１２３を選択する。なお、該当するプログラム１２３が複数ある場合、例えば、プログラム１２３に割り当てられているメモリ領域のサイズやプログラム１２３の状態等に基づいて、あるいは、ランダムに、１つのプログラム１２３が選択される。
【００９４】
その後、処理はステップＳ１５６に進む。
【００９５】
ステップＳ１５６において、メモリ領域選択部１５２は、選択したプログラム１２３に割り当てられているメモリ領域の中から、最もランクが低いものを選択する。なお、該当するメモリ領域が複数ある場合、例えば、メモリ領域のサイズや使用状況等に基づいて、あるいは、ランダムに、１つのメモリ領域が選択される。そして、メモリ領域選択部１５２は、選択したメモリ領域をメモリ領域解放部１５３に通知する。
【００９６】
ステップＳ１５７において、図５のステップＳ１０６と同様の処理が行われ、選択したメモリ領域が解放される。
【００９７】
その後、処理はステップＳ１５８に進む。
【００９８】
一方、ステップＳ１５１において、主記憶装置１１２の空き容量が不足していないと判定された場合、ステップＳ１５２乃至Ｓ１５７の処理はスキップされ、処理はステップＳ１５８に進む。
【００９９】
ステップＳ１５８において、図５のステップＳ１０７と同様の処理が行われ、メモリ領域が確保される。
【０１００】
その後、メモリ領域確保処理は終了する。
【０１０１】
一方、ステップＳ１５２において、メモリ領域が割り当てられているプログラム１２３の中に、要求元のプログラム１２３よりランクが低いものがないと判定された場合、処理はステップＳ１５９に進む。
【０１０２】
ステップＳ１５９において、メモリマネージャ１２１は、エラー処理を実行する。このとき、例えば、メモリ領域の確保を行わずに、単にメモリ領域の確保に失敗したことを要求元のプログラム１２３に通知するようにしてもよいし、あるいは、別の方法でメモリ領域の確保を試みるようにしてもよい。
【０１０３】
後者の場合、例えば、メモリマネージャ１２１は、図５のメモリ領域確保処理の第１の実施の形態と同様に、メモリ領域のランクを優先的に用いて、要求されたメモリ領域の確保を試みる。
【０１０４】
その後、メモリ領域確保処理は終了する。
【０１０５】
このように、プログラム１２３からメモリ領域の確保が要求された場合に、主記憶装置１１２の空き容量が不足しているとき、よりランクが低いプログラム１２３のメモリ領域が解放され、新たなメモリ領域が確保される。従って、メモリ領域を自動解放することにより、情報処理システム１０１が正常に動作しないようになることが防止される。
【０１０６】
［メモリ領域確保処理の第３の実施の形態］
次に、図９のフローチャートを参照して、図４のメモリ領域確保要求処理に対応して、メモリマネージャ１２１により実行されるメモリ領域確保処理の第３の実施の形態について説明する。
【０１０７】
なお、この第３の実施の形態は、図５を参照して上述した第１の実施の形態と同様にメモリ領域のランクを優先的に用いてメモリ領域を確保する場合において、複数のメモリ領域を解放して、要求されたメモリ領域を確保できるようにしたものである。
【０１０８】
ステップＳ２０１において、図５のステップＳ１０１の処理と同様に、主記憶装置１１２の空き容量が不足しているか否かが判定され、主記憶装置１１２の空き容量が不足していると判定された場合、処理はステップＳ２０２に進む。
【０１０９】
ステップＳ２０２において、図５のステップＳ１０２の処理と同様に、要求されたメモリ領域よりランクが低いメモリ領域があるか否かが判定され、要求されたメモリ領域よりランクが低いメモリ領域があると判定された場合、処理はステップＳ２０３に進む。
【０１１０】
なお、以下、この処理において、要求されたメモリ領域よりランクが低いメモリ領域を解放可能領域と称する。
【０１１１】
ステップＳ２０３において、メモリ領域選択部１５２は、必要な空き容量を確保できるか否かを判定する。メモリ領域選択部１５２は、解放可能領域を全て解放した場合の主記憶装置１１２の空き容量が、要求されたメモリ領域の確保に必要な容量に達する場合、必要な空き容量を確保できると判定し、処理はステップＳ２０４に進む。
【０１１２】
その後、ステップＳ２０４乃至Ｓ２０７において、図５のステップＳ１０３乃至Ｓ１０６と同様の処理が実行される。これにより、解放可能領域の中から最もランクが低いメモリ領域が１つ選択され、選択されたメモリ領域が解放される。
【０１１３】
ステップＳ２０８において、メモリ領域割り当て部１５１は、必要な空き容量を確保できたか否かを判定する。メモリ領域割り当て部１５１は、主記憶装置１１２の空き容量が、まだ要求されたメモリ領域の確保に必要な空き容量に達していない場合、まだ必要な空き容量を確保できていないと判定し、処理はステップＳ２０４に戻る。
【０１１４】
その後、ステップＳ２０８において、必要な空き容量を確保できたと判定されるまで、ステップＳ２０４乃至Ｓ２０８の処理が繰り返し実行される。これにより、ランクが低いメモリ領域から順に１つずつメモリ領域が解放されていく。
【０１１５】
一方、ステップＳ２０８において、必要な空き容量を確保できたと判定された場合、処理はステップＳ２０９に進む。
【０１１６】
また、ステップＳ２０１において、主記憶装置１１２の空き容量が不足していないと判定された場合、ステップＳ２０２乃至Ｓ２０８の処理はスキップされ、処理はステップＳ２０９に進む。
【０１１７】
ステップＳ２０９において、図５のステップＳ１０７と同様の処理が行われ、メモリ領域が確保される。
【０１１８】
その後、メモリ領域確保処理は終了する。
【０１１９】
一方、ステップＳ２０２において、要求されたメモリ領域よりランクが低いメモリ領域がないと判定された場合、処理はステップＳ２１０に進む。
【０１２０】
また、ステップＳ２０３において、必要な空き容量を確保できないと判定された場合、処理はステップＳ２１０に進む。
【０１２１】
ステップＳ２１０において、メモリマネージャ１２１は、エラー処理を実行する。このとき、例えば、メモリ領域の確保を行わずに、単にメモリ領域の確保に失敗したことを要求元のプログラム１２３に通知するようにしてもよいし、あるいは、別の方法でメモリ領域の確保を試みるようにしてもよい。
【０１２２】
後者の場合、例えば、メモリ領域解放部１５３は、要求元のプログラム１２３よりランクが低いプログラム１２３のうちの少なくとも１つを強制終了させ、そのプログラム１２３に割り当てられていたメモリ領域を解放する。そして、メモリマネージャ１２１は、ステップＳ２０１から再度処理を実行する。
【０１２３】
あるいは、例えば、メモリマネージャ１２１は、後述するメモリ領域確保処理の第４の実施の形態と同様に、プログラム１２３のランクを優先的に用いて、要求されたメモリ領域の確保を試みる。
【０１２４】
その後、メモリ領域確保処理は終了する。
【０１２５】
これにより、第１の実施の形態と比較して、より確実に必要なメモリ領域を確保することが可能になる。
【０１２６】
［メモリ領域確保処理の第４の実施の形態］
次に、図１０のフローチャートを参照して、図４のメモリ領域確保要求処理に対応して、メモリマネージャ１２１により実行されるメモリ領域確保処理の第４の実施の形態について説明する。
【０１２７】
なお、この第４の実施の形態は、図８を参照して上述した第２の実施の形態と同様にプログラム１２３のランクを優先的に用いてメモリ領域を確保する場合において、複数のメモリ領域を解放して、要求されたメモリ領域を確保できるようにしたものである。
【０１２８】
ステップＳ２５１において、図５のステップＳ１０１の処理と同様に、主記憶装置１１２の空き容量が不足しているか否かが判定され、主記憶装置１１２の空き容量が不足していると判定された場合、処理はステップＳ２５２に進む。
【０１２９】
ステップＳ２５２において、図８のステップＳ１５２の処理と同様に、メモリ領域が割り当てられているプログラム１２３の中に、要求元のプログラム１２３よりランクが低いものがあるか否かが判定される。メモリ領域が割り当てられているプログラム１２３の中に、要求元のプログラム１２３よりランクが低いものがあると判定された場合、処理はステップＳ２５３に進む。
【０１３０】
なお、以下、この処理において、要求元のプログラム１２３よりランクが低いプログラム１２３に割り当てられているメモリ領域を解放可能領域と称する。
【０１３１】
ステップＳ２５３において、メモリ領域選択部１５２は、必要な空き容量を確保できるか否かを判定する。メモリ領域選択部１５２は、解放可能領域を全て解放した場合の主記憶装置１１２の空き容量が、要求されたメモリ領域の確保に必要な容量に達する場合、必要な空き容量を確保できると判定し、処理はステップＳ２５４に進む。
【０１３２】
その後、ステップＳ２５４乃至Ｓ２５８において、図８のステップＳ１５３乃至Ｓ１５７と同様の処理が実行される。これにより、最もランクが低いプログラム１２３に割り当てられているメモリ領域の中から最もランクが低いメモリ領域が１つ選択され、選択されたメモリ領域が解放される。
【０１３３】
ステップＳ２５９において、図９のステップＳ２０８の処理と同様に、必要な空き容量を確保できたか否かが判定され、まだ必要な空き容量を確保できていないと判定された場合、処理はステップＳ２５４に戻る。
【０１３４】
その後、ステップＳ２５９において、必要な空き容量を確保できたと判定されるまで、ステップＳ２５４乃至Ｓ２５９の処理が繰り返し実行される。これにより、ランクが低いプログラム１２３に割り当てられているメモリ領域から順に１つずつメモリ領域が解放されていく。
【０１３５】
一方、ステップＳ２５９において、必要な空き容量を確保できたと判定された場合、処理はステップＳ２６０に進む。
【０１３６】
また、ステップＳ２５１において、主記憶装置１１２の空き容量が不足していないと判定された場合、ステップＳ２５２乃至Ｓ２５９の処理はスキップされ、処理はステップＳ２６０に進む。
【０１３７】
ステップＳ２６０において、図５のステップＳ１０７と同様の処理が行われ、メモリ領域が確保される。
【０１３８】
その後、メモリ領域確保処理は終了する。
【０１３９】
一方、ステップＳ２５２において、メモリ領域が割り当てられているプログラム１２３の中に、要求元のプログラム１２３よりランクが低いものがないと判定された場合、処理はステップＳ２６１に進む。
【０１４０】
また、ステップＳ２５３において、必要な空き容量を確保できないと判定された場合、処理はステップＳ２６１に進む。
【０１４１】
ステップＳ２６１において、メモリマネージャ１２１は、エラー処理を実行する。このとき、例えば、メモリ領域の確保を行わずに、単にメモリ領域の確保に失敗したことを要求元のプログラム１２３に通知するようにしてもよいし、あるいは、別の方法でメモリ領域の確保を試みるようにしてもよい。
【０１４２】
後者の場合、例えば、メモリマネージャ１２１は、図９のメモリ領域確保処理の第３の実施の形態と同様に、メモリ領域のランクを優先的に用いて、要求されたメモリ領域の確保を試みる。
【０１４３】
その後、メモリ領域確保処理は終了する。
【０１４４】
これにより、第２の実施の形態と比較して、より確実に必要なメモリ領域を確保することが可能になる。
【０１４５】
［メモリアクセス処理］
次に、図１１のフローチャートを参照して、メモリ領域の自動解放時にプログラム１２３にメモリ領域の解放が通知されない場合に、プログラム１２３が、解放されたメモリ領域にアクセスする場合の処理について説明する。
【０１４６】
ステップＳ３０１において、プログラム１２３は、メモリアクセス部１２２に対して、メモリ領域へのアクセス（例えば、データの読み出しあるいは書き込み）を要求する。
【０１４７】
ステップＳ３０２において、プログラム１２３は、アクセスを要求したメモリ領域が解放されているか否かを判定する。例えば、プログラム１２３は、メモリアクセス部１２２からの割り込み通知の有無により、アクセスを要求したメモリ領域が解放されているか否かを判定する。また、例えば、プログラム１２３は、アクセスを要求したメモリ領域の値がオールクリアされているか否かに基づいて、アクセスを要求したメモリ領域が解放されているか否かを判定する。そして、アクセスを要求したメモリ領域が解放されていると判定された場合、処理はステップＳ３０３に進む。
【０１４８】
ステップＳ３０３において、プログラム１２３は、図４を参照して上述したメモリ領域確保要求処理を実行する。
【０１４９】
なお、このとき、解放前のメモリ領域のデータがスワップアウトされている場合、そのデータが確保されたメモリ領域にスワップインされる。
【０１５０】
また、解放前のメモリ領域のデータがスワップアウトされていない場合、例えば、プログラム１２３は、解放前のメモリ領域のデータを再計算して、メモリアクセス部１２２を介して、確保されたメモリ領域に格納する。
【０１５１】
その後、処理はステップＳ３０４に進む。
【０１５２】
一方、ステップＳ３０２において、アクセスを要求したメモリ領域が解放されていないと判定された場合、ステップＳ３０３の処理はスキップされ、処理はステップＳ３０４に進む。
【０１５３】
ステップＳ３０４において、プログラム１２３は、所定の処理、すなわち、メモリ領域へのアクセスに伴う処理を実行する。
【０１５４】
その後、メモリアクセス処理は終了する。
【０１５５】
＜２.変形例＞
以下、本技術の実施の形態の変形例について説明する。
【０１５６】
［変形例１］
以上の説明では、メモリ領域およびプログラム１２３のランクを高、中、低の３段階に分類する例を示したが、２段階、または、４段階以上に分類するようにしてもよい。
【０１５７】
［変形例２］
また、メモリ領域のランクにメモリマネージャ１２１による自動解放を許可しないランクを設けて、そのランクに設定されているメモリ領域を、上述したメモリ領域確保処理において、自動解放する対象から除外するようにしてもよい。
【０１５８】
同様に、プログラム１２３のランクにメモリマネージャ１２１による自動解放を許可しないランクを設けて、そのランクのプログラム１２３に割り当てられているメモリ領域を、上述したメモリ領域確保処理において、自動解放する対象から除外するようにしてもよい。
【０１５９】
［変形例３］
さらに、メモリ領域のランクは、プログラム１２３の実行中に変動する場合が想定される。従って、メモリ領域の確保時だけでなく、プログラム１２３の実行中に、プログラム１２３からの要求に従って、メモリ領域のランクを動的に変更できるようにしてもよい。
【０１６０】
例えば、処理の高速化のために、解放せずに一時的に主記憶装置１１２に確保しているメモリ領域のランクを、使用時に高く設定し、未使用時に低く設定するようにすることが考えられる。
【０１６１】
これにより、メモリ領域のランクをより適切に設定することができ、主記憶装置１１２の空き容量が不足した場合に、より必要性の低いメモリ領域を解放して、新たなメモリ領域を確保することが可能になる。
【０１６２】
同様に、プログラム１２３のランクも動的に変更できるようにしてもよい。
【０１６３】
［変形例４］
また、上述したメモリ領域確保処理の第２および第４の実施の形態においては、要求元のプログラム１２３よりランクが低いプログラム１２３のメモリ領域であれば、要求されたメモリ領域のランク以上のメモリ領域であっても解放される可能性がある。これに対して、第２および第４の実施の形態においても、要求されたメモリ領域のランク以上のメモリ領域を、自動解放する対象から除外するようにしてもよい。
【０１６４】
［変形例５］
さらに、以上に示した情報処理システム１０１のソフトウエアの構成例は、その一例であり、他の構成にすることも可能である。例えば、プログラム１２３が、メモリマネージャ１２１およびメモリアクセス部１２２の機能の全部または一部を、実行するようにしてもよい。また、例えば、メモリマネージャ１２１が、メモリアクセス部１２２の機能の一部または全部を実行するようにしてもよい。
【０１６５】
［変形例６］
また、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。例えば、メモリアクセス部１２２を、メモリ管理ユニット（MMU）等のハードウエアにより構成することも可能である。
【０１６６】
なお、一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【０１６７】
コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディアに記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。その他、プログラムは、装置に組み込まれている記憶装置（例えば、補助記憶装置１１３）に、あらかじめインストールしておくことができる。
【０１６８】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１６９】
また、本明細書において、システムの用語は、複数の装置、手段などより構成される全体的な装置を意味するものとする。
【０１７０】
さらに、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０１７１】
また、例えば、本技術は以下のような構成も取ることができる。
【０１７２】
（１）
プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定するメモリ領域割り当て部と、
前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択するメモリ領域選択部と、
前記選択された領域を解放するメモリ領域解放部と
を備えるメモリ管理装置。
（２）
前記メモリ領域選択部は、新たに確保する領域よりランクが低い領域の中から、解放する領域を選択する
前記（１）に記載のメモリ管理装置。
（３）
前記領域選択部は、新たに確保する領域よりランクが低い領域のうち最もランクが低い領域を解放する領域に選択する
前記（２）に記載のメモリ管理装置。
（４）
各プログラムには予めランクが設定されており、
前記領域選択部は、前記最もランクが低い領域が複数ある場合、前記最もランクが低い領域のうち最もランクが低いプログラムに割り当てられている領域を解放する領域に選択する
前記（３）に記載のメモリ管理装置。
（５）
前記メモリ領域選択部は、新たに確保する領域よりランクが低い領域が存在しない場合、新たな領域の確保を行わない
前記（２）から（４）のいずれかに記載のメモリ管理装置。
（６）
各プログラムには予めランクが設定されており、
前記メモリ領域解放部は、新たに確保する領域よりランクが低い領域が存在しない場合、領域の確保を要求したプログラムよりランクが低いプログラムのうち少なくとも１つを強制終了させる
前記（２）から（４）のいずれかに記載のメモリ管理装置。
（７）
前記領域割り当て部は、プログラムからの要求に従って、当該プログラムに割り当てられている領域のランクを変更する
前記（１）から（６）のいずれかに記載のメモリ管理装置。
（８）
プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定し、
前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択し、
前記選択された領域を解放する
ステップを含むメモリ管理方法。
（９）
プログラムからの要求に応じて記憶装置の領域を確保するとともに、確保した領域に当該プログラムにより指定されたランクを設定し、
前記記憶装置の空き容量が足りない場合、すでに確保されている領域の中から、各領域のランクに基づいて解放する領域を選択し、
前記選択された領域を解放する
ステップを含む処理をコンピュータに実行させるための制御プログラム。
【符号の説明】
【０１７３】
１０１  情報処理システム，  １１１  演算処理装置,  １１２  主記憶装置，  １１３  補助記憶装置,  １２１  メモリマネージャ，  １２２  メモリアクセス部,  １２３−１乃至１２３−ｎ  プログラム，  １５１  メモリ領域割り当て部,  １５２  メモリ領域選択部，  １５３  メモリ領域解放部
【図１】
2012221217.tif 000003
【図２】
2012221217.tif 000004
【図３】
2012221217.tif 000005
【図４】
2012221217.tif 000006
【図５】
2012221217.tif 000007
【図６】
2012221217.tif 000008
【図７】
2012221217.tif 000009
【図８】
2012221217.tif 000010
【図９】
2012221217.tif 000011
【図１０】
2012221217.tif 000012
【図１１】
2012221217.tif 000013