(57)【要約】【課題】システムの能力の低下を抑制しつつ、メモリ解放処理の実行頻度を抑える。【解決手段】ステップＳ５１において、命令部分の割り当てが要求されたと判定され、ステップＳ５２において、割当対象プログラムの命令部分のメモリ使用量が上限を超えると判定された場合、ステップＳ５３において、割当対象プログラムの命令部分が使用しているメモリ領域が解放され、ステップＳ５４において、命令部分のメモリの割り当てが行われる。ステップＳ５２において、割当対象プログラムの命令部分のメモリ使用量が上限を超えないと判定された場合、ステップＳ５３の処理はスキップされる。ステップＳ５１において、データ部分の割り当てが要求されたと判定された場合、ステップＳ５５において、通常のメモリ割り当て処理が行われる。本技術は、例えば、組み込み機器に適用できる。【選択図】図５
2012242877.tif 000002
【特許請求の範囲】
【請求項１】
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するメモリ管理部を
備えるメモリ管理装置。
【請求項２】
前記メモリ管理部は、前記主記憶装置に配置する命令部分の容量をプログラム毎に制限する
請求項１に記載のメモリ管理装置。
【請求項３】
所定の条件に基づいて、前記主記憶装置に配置する命令部分の容量の上限値をプログラム毎に動的に設定する設定部を
さらに備える請求項２に記載のメモリ管理装置。
【請求項４】
前記メモリ管理部は、前記命令部分を前記主記憶装置に配置するアルゴリズムをプログラム毎に設定する
請求項１に記載のメモリ管理装置。
【請求項５】
前記メモリ管理部は、将来実行される前記命令部分を予測し、当該命令部分が必要になる前に前記主記憶装置に配置する
請求項１に記載のメモリ管理装置。
【請求項６】
メモリ管理装置が、
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含むメモリ管理方法。
【請求項７】
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含む処理をプログラムに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリ管理装置、メモリ管理方法、および、制御プログラムに関し、特に、メモリ解放処理の実行頻度を抑えるようにしたメモリ管理装置、メモリ管理方法、および、制御プログラムに関する。
【背景技術】
【０００２】
従来、プログラム単位でメモリ（主記憶装置）の使用量を制限する技術として、例えば、Linuxのcgroupが知られている（例えば、非特許文献１参照）。
【０００３】
cgroupを用いると、システムで実行されるプログラム（プロセス）を複数のグループに分け、グループ毎にメモリの使用量の上限を設定することができる。
【０００４】
図１は、cgroupを用いてグループ毎にメモリの使用量を制限するようにしたシステムにおいて、１つのプログラムからなるグループのメモリ使用量の推移の例を示すグラフである。横軸は時間を示し、縦軸はメモリ使用量を示している。また、図内のＬ１は、このグループのメモリ使用量の上限値を示している。
【０００５】
なお、この例は、補助記憶装置が書き込み不可であり、メモリ上のデータを補助記憶装置に退避できない場合の例を示している。
【０００６】
図１に示されるように、システムの稼働時間が長くなるにつれて、当該グループのメモリ使用量は増加する。そして、時刻ｔ１においてメモリ使用量が上限値Ｌ１に達すると、システム全体としてはメモリの空き領域が存在しても、例えば、当該グループ内のプログラムの命令部分など破棄可能なメモリ領域を解放するなどにより、必要なメモリ領域を確保するメモリ解放処理が実行される。なお、グループ内に複数のプログラムが含まれる場合には、メモリ解放処理として、例えば、重要度の低いプログラムを強制終了する場合もある。そして、以降、メモリ使用量が上限値Ｌ１に達する度に、メモリ解放処理の実行が繰り返される。
【０００７】
図２は、図１のメモリ使用量の推移を、プログラムの命令部分とそれ以外のデータ部分とに分けて示したグラフである。
【０００８】
図２に示されるように、メモリ解放処理が実行される度に、データ部分のメモリ使用量はほぼ変わらずに、命令部分のメモリ使用量が削減される。これは、データ部分は、値が書き換えられると破棄することができず、メモリに保持しておく必要があるため、破棄することが可能な命令部分のメモリ領域が解放されることによる。
【０００９】
また、cgroupを用いたシステムでは、システム全体のメモリ使用量が所定の上限値に達した場合にも、必要なメモリ領域を確保するために、メモリ解放処理が実行される。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Balbir Singh, 他１名, "Containers: Challenges with the memory resource controller and its performance", Proceedings of the Linux Symposium Volume Two, Canada, June 27th-30th, 2007, p.209-222
【発明の概要】
【発明が解決しようとする課題】
【００１１】
メモリ解放処理の実行時には、システム全体がその処理に費やされるため、例えば、システムのレスポンスが低下したり、動作が不安定（例えば、画像や音声の乱れ等）になったりする。特に、組み込み機器など搭載するメモリの容量が小さい場合には、メモリ解放処理の実行頻度が高くなり、システムの能力が大きく低下する。
【００１２】
本技術は、システムの能力の低下を抑制しつつ、メモリ解放処理の実行頻度を抑えることができるようにするものである。
【課題を解決するための手段】
【００１３】
本技術の一側面のメモリ管理装置は、補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するメモリ管理部を備える。
【００１４】
前記メモリ管理部は、前記主記憶装置に配置する命令部分の容量をプログラム毎に制限させることができる。
【００１５】
所定の条件に基づいて、前記主記憶装置に配置する命令部分の容量の上限値をプログラム毎に動的に設定する設定部をさらに設けることができる。
【００１６】
前記メモリ管理部には、前記命令部分を前記主記憶装置に配置するアルゴリズムをプログラム毎に設定させることができる。
【００１７】
前記メモリ管理部には、将来実行される前記命令部分を予測させ、当該命令部分が必要になる前に前記主記憶装置に配置させることができる。
【００１８】
本技術の一側面のメモリ管理方法は、メモリ管理装置が、補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するステップを含む。
【００１９】
本技術の一側面のプログラムは、補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するステップを含む処理をコンピュータに実行させる。
【００２０】
本技術の一側面においては、補助記憶装置に格納されているプログラムの主記憶装置への配置が制御されるとともに、プログラムの命令部分が前記主記憶装置に配置する容量を制限される。
【発明の効果】
【００２１】
本技術の一側面によれば、システムの能力の低下を抑制しつつ、メモリ解放処理の実行頻度を抑えることができる。
【図面の簡単な説明】
【００２２】
【図１】cgroupを用いたシステムのメモリ使用量の推移の例を示すグラフである。
【図２】図１のメモリ使用量の推移を、プログラムの命令部分とそれ以外のデータ部分とに分けて示したグラフである。
【図３】本技術を適用した情報処理システムの一実施の形態を示すブロック図である。
【図４】最大命令メモリ割当量設定処理を説明するためのフローチャートである。
【図５】メモリ割り当て処理を説明するためのフローチャートである。
【図６】メモリ割り当て処理の具体例について説明するための図である。
【図７】メモリ割り当て処理の具体例について説明するための図である。
【図８】本技術を適用したシステムのメモリ使用量の推移の例を示すグラフである。
【図９】図９のメモリ使用量の推移を、プログラムの命令部分とそれ以外のデータ部分とに分けて示したグラフである。
【図１０】cgroupを用いたシステムと本技術を用いたシステムのメモリ使用量の推移を比較したグラフである。
【発明を実施するための形態】
【００２３】
以下、本技術を実施するための形態（以下、実施の形態という）について説明する。なお、説明は以下の順序で行う。
１．実施の形態
２．変形例
【００２４】
＜１．実施の形態＞
［情報処理システムの構成例］
図３は、本技術を適用した情報処理システム１０１の一実施の形態を示すブロック図である。
【００２５】
情報処理システム１０１は、例えば、テレビジョン受像機、携帯電話機等の各種の組み込み機器や、コンピュータ等に適用可能なシステムである。
【００２６】
なお、以下、情報処理システム１０１が適用される装置やシステム等を、単にシステムと称する。
【００２７】
情報処理システム１０１は、メモリマネージャ１１１、補助記憶装置１１２、および、主記憶装置１１３を含むように構成される。
【００２８】
メモリマネージャ１１１は、情報処理システム１０１のメモリ管理を行う。例えば、メモリマネージャ１１１は、補助記憶装置１１２に格納されているプログラムやデータの主記憶装置１１３への配置を制御する。
【００２９】
なお、メモリマネージャ１１１は、ソフトウエアまたはハードウエアのいずれで実現してもよいし、あるいは、その両方の組み合わせにより実現してもよい。ソフトウエアにより実現される場合、例えば、メモリマネージャ１１１は、図示せぬCPU（Central Processing Unit）等のプロセッサにより実行されるＯＳ（オペレーティングシステム）の機能の一部として実現される。一方、ハードウエアにより実現される場合、メモリマネージャ１１１は、例えば、メモリ管理ユニット（MMU）等により実現される。
【００３０】
補助記憶装置１１２は、例えば、ROM（Read Only Memory）、ハードディスクドライブ、フラッシュメモリ等、主記憶装置１１３より容量が大きく、一般にアクセス速度が遅い記憶装置により構成される。
【００３１】
なお、補助記憶装置１１２は、データの書き込みが可能なものであってもよいし、データの書き込みができないものであってもよい。
【００３２】
主記憶装置１１３は、例えば、RAM（Random Access Memory）等、データの書き込みが可能な記憶装置により構成される。
【００３３】
なお、以下、主記憶装置１１３を単にメモリとも称する。また、以下、主記憶装置１１３の領域をメモリ領域、使用量をメモリ使用量とも称する。
【００３４】
ここで、メモリマネージャ１１１の機能の構成例について説明する。メモリマネージャ１１１は、設定部１２１およびメモリ管理部１２２を含むように構成される。
【００３５】
設定部１２１は、外部から入力される情報等に基づいて、補助記憶装置１１２に格納されている各プログラムの命令部分を主記憶装置１１３に配置することができる容量の上限値（以下、最大命令メモリ割当量と称する）をプログラム毎に設定する。設定部１２１は、設定した最大命令メモリ割当量をメモリ管理部１２２に通知したり、主記憶装置１１３に記憶させたりする。
【００３６】
メモリ管理部１２２は、図示せぬCPU等のプロセッサにより実行されるプログラムからの要求や、主記憶装置１１３の使用状況等に応じて、補助記憶装置１１２に格納されているプログラムやデータの主記憶装置１１３への配置を制御する。例えば、メモリ管理部１２２は、必要に応じて、補助記憶装置１１２に格納されているプログラムやデータを主記憶装置１１３に配置したり、主記憶装置１１３に格納されているプログラムやデータを破棄したりする。また、例えば、メモリ管理部１２２は、補助記憶装置１１２が書き込み可能な場合、必要に応じて、主記憶装置１１３に格納されているプログラムやデータを補助記憶装置１１２に退避させる。
【００３７】
さらに、メモリ管理部１２２は、補助記憶装置１１２に格納されている各プログラムの命令部分について、主記憶装置１１３に配置する容量が最大命令メモリ割当量以下になるように制限する。
【００３８】
［最大命令メモリ割当量設定処理］
次に、図４のフローチャートを参照して、情報処理システム１０１により実行される最大命令メモリ割当量設定処理について説明する。
【００３９】
なお、この処理は、例えば、情報処理システム１０１の起動時などの所定のタイミング、あるいは、最大命令メモリ割当量の設定値がメモリマネージャ１１１に入力されたとき等に開始される。
【００４０】
ステップＳ１において、設定部１２１は、設定条件等を取得する。
【００４１】
ステップＳ２において、設定部１２１は、取得した設定条件等に基づいて、プログラム毎に最大命令メモリ割当量を設定する。そして、設定部１２１は、設定した最大命令メモリ割当量をメモリ管理部１２２に通知したり、主記憶装置１１３に記憶させたりする。
【００４２】
その後、最大命令メモリ割当量設定処理は終了する。
【００４３】
ここで、最大命令メモリ割当量の設定方法の具体例について説明する。
【００４４】
例えば、設定部１２１は、情報処理システム１０１の起動時に、各プログラムの最大命令メモリ割当量の初期値を補助記憶装置１１２から読み込む。そして、設定部１２１は、各プログラムの最大命令メモリ割当量を初期値に設定する。
【００４５】
各プログラムの最大命令メモリ割当量の初期値は、例えば、各プログラムの優先度や規模などに基づいて設定される。例えば、優先して実行する必要があるプログラムについては、初期値が大きい値に設定され、実行を遅らせることが可能なプログラムについては、初期値が小さい値に設定される。また、例えば、規模が大きいプログラムについては、初期値が大きい値に設定され、規模が小さいプログラムについては、初期値が小さい値に設定される。
【００４６】
また、例えば、設定部１２１は、実行中のプログラムからの要求により、当該プログラムの最大命令メモリ割当量を変更する。例えば、各プログラムは、実行される頻度が高くなると予測される場合に、最大命令メモリ割当量を増やすように要求し、実行される頻度が低くなると予測される場合に、最大命令メモリ割当量を減らすように要求する。
【００４７】
さらに、例えば、設定部１２１は、情報処理システム１０１の状態や動作環境等に基づいて、各プログラムの最大命令メモリ割当量を変更する。例えば、設定部１２１は、所定の機能が実行される場合に、その機能を実現するのに必要なプログラムの最大命令メモリ割当量を増やし、必要のないプログラムの最大命令メモリ割当量を減らす。あるいは、例えば、設定部１２１は、所定の時刻になったときに、その時刻付近に実行されることが想定される機能を実現するのに必要なプログラムの最大命令メモリ割当量を増やし、必要のないプログラムの最大命令メモリ割当量を減らす。
【００４８】
なお、以上に述べた最大命令メモリ割当量を変更する条件は、その一例であり、他の条件に基づいて変更するようにしてもよい。
【００４９】
また、最大命令メモリ割当量を動的に設定せずに、固定値とすることも可能である。
【００５０】
［メモリ割り当て処理］
次に、図５のフローチャートを参照して、情報処理システム１０１により実行されるメモリ割り当て処理について説明する。なお、この処理は、例えば、メモリ管理部１２２に対してメモリの割り当てが要求されたとき開始される。このメモリ割り当ての要求は、例えば、実行中のプログラムが明示的に行ったり、あるいは、OSなどがプログラムを介さずに行ったりする場合がある。
【００５１】
また、以下、メモリの割り当てを行う対象となるプログラムを割当対象プログラムと称する。
【００５２】
ステップＳ５１において、メモリ管理部１２２は、命令部分の割り当てが要求されたか否かを判定する。命令部分の割り当てが要求されたと判定された場合、処理はステップＳ５２に進む。
【００５３】
ステップＳ５２において、メモリ管理部１２２は、割当対象プログラムの命令部分のメモリ使用量が上限を超えるか否かを判定する。具体的には、メモリ管理部１２２は、割り当てが要求された命令部分の容量と、現在の割当対象プログラムの命令部分のメモリ使用量（割当対象プログラムの命令部分が主記憶装置１１３に配置されている容量）の合計値を求める。メモリ管理部１２２は、求めた合計値が割当対象プログラムの最大命令メモリ割当量を超える場合、割当対象プログラムの命令部分のメモリ使用量が上限を超えると判定し、処理はステップＳ５３に進む。
【００５４】
ステップＳ５３において、メモリ管理部１２２は、割当対象プログラムの命令部分が使用しているメモリ領域を解放する。具体的には、メモリ管理部１２２は、割当対象プログラムのメモリ割当量の残量が、割り当てが要求された命令部分の容量以上となるように、割当対象プログラムの命令部分が使用しているメモリ領域の少なくとも一部を解放する。ここで、メモリ割当量の残量とは、割当対象プログラムの最大命令メモリ割当量からメモリ使用量を引いた値である。
【００５５】
なお、このとき解放するメモリ領域を決定するためのアルゴリズムには、例えば、LRU（Least Recently Used）やリングバッファ等、任意のものを採用することができる。
【００５６】
その後、処理はステップＳ５４に進む。
【００５７】
一方、ステップＳ５２において、割当対象プログラムの命令部分のメモリ使用量が上限を超えないと判定された場合、ステップＳ５３の処理はスキップされ、処理はステップＳ５４に進む。
【００５８】
ステップＳ５４において、メモリ管理部１２２は、命令部分のメモリの割り当てを行う。すなわち、メモリ管理部１２２は、割当対象プログラムの割り当てが要求された命令部分を補助記憶装置１１２から読み出し、主記憶装置１１３の空き領域に配置する。
【００５９】
その後、処理はステップＳ５６に進む。
【００６０】
一方、ステップＳ５１において、データ部分の割り当てが要求されていると判定された場合、処理はステップＳ５５に進む。
【００６１】
ステップＳ５５において、メモリ管理部１２２は、通常のメモリ割り当て処理を行う。例えば、割当対象プログラムの割り当てが要求されたデータ部分の容量が、主記憶装置１１３の空き容量以下である場合、メモリ管理部１２２は、そのデータ部分を補助記憶装置１１２から読み出し、主記憶装置１１３の空き領域に配置する。
【００６２】
一方、割り当てが要求されたデータ部分の容量が、主記憶装置１１３の空き容量を超える場合、メモリ管理部１２２は、主記憶装置１１３の空き容量が、そのデータ部分の容量以上になるように、主記憶装置１１３の使用領域の解放を行う。
【００６３】
なお、このときメモリ領域を解放するアルゴリズムには、例えば、LRU（Least Recently Used）、FIFO（First In First Out）等、任意のものを採用することができる。
【００６４】
そして、メモリ管理部１２２は、割り当てが要求されたデータ部分を補助記憶装置１１２から読み出し、主記憶装置１１３の空き領域に配置する。
【００６５】
その後、処理はステップＳ５６に進む。
【００６６】
ステップＳ５６において、メモリ管理部１２２は、メモリの使用状態を示す情報を更新する。例えば、メモリ管理部１２２は、主記憶装置１１３の使用領域および空き領域を示す情報を更新したり、各プログラムの命令部分のメモリ使用量を示す情報を更新したりする。
【００６７】
その後、メモリ割り当て処理は終了する。
【００６８】
ここで、図５のメモリ割り当て処理の具体例として、図６および図７を参照して、補助記憶装置１１２に格納されているプログラムＰの命令部分に対してメモリの割り当てを行う場合について説明する。
【００６９】
なお、プログラムＰの命令部分は、命令ブロック１乃至６の６つのブロックに分割されるものとする。この命令ブロックは、例えば、仮想記憶システムにおけるページに相当し、全て同じサイズであり、プログラムＰの複数の命令を含むものとする。
【００７０】
さらに、以下、命令ブロック１から昇順に逐次実行されるものとする。また、プログラムＰの最大命令メモリ割当量が３ブロックに設定されているものとする。
【００７１】
例えば、図７の左端に示されるように、命令ブロック１乃至３が主記憶装置１１３に配置されるまでは最大命令メモリ割当量を超えないため、命令ブロック１、命令ブロック２、命令ブロック３が、順に主記憶装置１１３に配置される。
【００７２】
そして、命令ブロック４を主記憶装置１１３に配置する場合、そのまま配置すれば、プログラムＰの命令部分のメモリ使用量が最大命令メモリ割当量を超えてしまう。そこで、例えば、最初に主記憶装置１１３に配置された命令ブロック１の領域が解放され、解放された領域が命令ブロック４に割り当てられる。その結果、図７の中央に示されるように、命令ブロック２乃至４が主記憶装置１１３に配置された状態となる。
【００７３】
同様にして、命令ブロック２の領域が解放され、解放された領域が命令ブロック５に割り当てられ、命令ブロック３の領域が解放され、解放された領域が命令ブロック６に割り当てられる。そして、最終的に、図７の右端に示されるように、命令ブロック４乃至６が主記憶装置１１３に配置された状態となる。
【００７４】
以上のようにして、プログラム毎に命令部分のメモリ使用量が制限され、命令部分以外のデータ部分については、従来のようにシステム全体でメモリ使用量が制限される。その結果、システム全体のメモリ使用量を抑制することができ、メモリ解放処理の実行頻度を抑えることができる。
【００７５】
これについて、図８乃至図１０を参照して説明する。
【００７６】
図８は、上述した図１でメモリ使用量の推移を示したグループに含まれるプログラム（以下、比較対象プログラムと称する）を、情報処理システム１０１を適用したシステムで実行させた場合のメモリ使用量の推移の例を示している。図９は、上述した図２と同様のグラフであり、図８のメモリ使用量の推移を、命令部分とそれ以外のデータ部分とに分けて示している。図１０は、図１のグラフと図８のグラフとを比較するものであり、cgroupを用いたシステムと情報処理システム１０１を用いたシステムにおける比較対象プログラムのメモリ使用量の推移を比較したグラフである。
【００７７】
なお、図８乃至図１０のＬ１は、図１および図２のＬ１と同じ値である。また、図９のＬ２は、比較対象プログラムの命令部分のメモリ使用量の上限値を示している。さらに、図１０の実線のグラフは、情報処理システム１０１を用いたシステムにおける比較対象プログラムのメモリ使用量の推移を示し、点線のグラフは、cgroupを用いたシステムにおける比較対象プログラムからなるグループのメモリ使用量の推移を示している。
【００７８】
なお、この例は、補助記憶装置１１２が書き込み不可であり、主記憶装置１１３上のデータを補助記憶装置１１２に退避できない場合の例を示している。
【００７９】
図８乃至図１０に示されるように、システムの稼働時間が長くなるにつれて、比較対象プログラムのメモリ使用量は増加する。ただし、時刻ｔ１１において、命令部分のメモリ使用量が上限値Ｌ２に達すると、命令部分のメモリ使用量がそれ以上増加しなくなる。そのため、cgroupを用いたシステムと比較して、比較対象プログラムのメモリ使用量の増加が抑制される。
【００８０】
このように、情報処理システム１０１を用いたシステムでは、プログラム毎にメモリ使用量の増加を抑制することにより、システム全体のメモリ使用量を抑制し、メモリ解放処理の実行頻度を抑制することができる。従って、メモリ解放処理の実行によるシステムの能力の低下を抑制することができる。
【００８１】
その結果、例えば、一時的にシステムが高負荷になり、システムのレスポンスが低下したり、動作が不安定（例えば、画像や音声の乱れ等）になったりすることを防止することができる。
【００８２】
また、例えば、システムの起動時のプログラムの起動順が決まっている場合、先に起動する必要があるが、優先度の低いプログラムの最大命令メモリ割当量を小さく設定することにより、システムの起動時に当該プログラムがメモリを占有し、メモリ解放処理が実行され、起動が遅くなることを回避することができる。
【００８３】
さらに、主記憶装置１１３に命令部分の以外のデータをより多く配置することができ、システムの動作を高速化したり、安定化したりすることができる。
【００８４】
また、cgroupを用いたシステムでは、上述したように、グループのメモリ使用量が制限値を越えた場合、たとえシステム全体としてはメモリの空き領域が存在しても、当該グループ内のプログラムの強制終了などのエラー処理が実行されてしまう。
【００８５】
一方、情報処理システム１０１では、プログラムの命令部分のメモリ使用量が制限値を超えても、主記憶装置１１３に空き領域があれば、当該プログラムのデータ部分については、主記憶装置１１３に配置することができ、上述したようなエラー処理は実行されない。その結果、システムの動作を安定化することができる。
【００８６】
さらに、情報処理システム１０１では、最大命令メモリ割当量をプログラム毎に適切な値に設定することができ、命令部分の再配置の実行頻度を抑え、システムの能力の低下を抑制することができる。また、上述したように最大命令メモリ割当量を動的に変更することにより、さらに命令部分の再配置の実行頻度を抑え、システムの能力の低下を抑制することができる。
【００８７】
＜２．変形例＞
以下、本技術の実施の形態の変形例について説明する。
【００８８】
［変形例１］
以上の説明では、プログラム毎にそれぞれ最大命令メモリ割当量を設定する例を示したが、例えば、各プログラムを複数のグループに分類し、グループ毎に最大命令メモリ割当量を設定するようにしてもよい。すなわち、グループ毎に、グループに属するプログラム全体の命令部分のメモリ使用量が、最大命令メモリ割当量を超えないように制限するようにしてもよい。
【００８９】
また、例えば、システム全体で１つの最大命令メモリ割当量を設定するようにしてもよい。すなわち、システムで実行されるプログラム全体の命令部分のメモリ使用量が、最大命令メモリ割当量を超えないように制限するようにしてもよい。
【００９０】
［変形例２］
また、プログラム毎または上述したグループ毎に、命令部分を主記憶装置１１３に配置するアルゴリズム（命令部分のメモリ割り当てのアルゴリズム）を設定するようにしてもよい。
【００９１】
例えば、プログラム毎またはグループ毎にアルゴリズムを使い分けて、命令部分の再配置を行う頻度を調整するようにしてもよい。
【００９２】
また、例えば、プログラム毎またはグループ毎にアルゴリズムを使い分けて、命令部分のメモリ領域を解放する基準（例えば、メモリ領域の使用頻度、メモリ領域が確保されている時間等）を変えるようにしてもよい。
【００９３】
さらに、プログラム全体が実行バイナリと共有ライブラリから構成される場合、実行バイナリの命令部分と共有ライブラリの命令部分とで、アルゴリズムを使い分けて、共有ライブラリの命令部分の再利用性を高めるようにしてもよい。
【００９４】
［変形例３］
また、例えば、実行速度をより速くするために、命令部分の先読みを行うようにしてもよい。すなわち、将来実行される命令部分を予測して、当該命令部分が必要になる前に補助記憶装置１１２から読み出し、主記憶装置１１３に配置するようにしてもよい。
【００９５】
なお、将来実行される命令部分の予測は、例えは、事前にシステムを動作させたときの各プログラムの命令部分の実行順を示すプロファイルを取得しておき、そのプロファイルに基づいて行うようにすることが考えられる。
【００９６】
［変形例４］
また、図６および図７の例では、プログラムの命令部分を、一定のサイズのブロック単位で主記憶装置１１３に配置する例を示したが、本技術は、主記憶装置１１３に配置する命令部分のブロックのサイズが一定でない場合にも適用できる。また、本技術は、例えば、命令単位、あるいは、セグメント単位など、ブロックとは異なる単位で命令部分を主記憶装置１１３に配置する場合にも適用できる。
【００９７】
［変形例５］
さらに、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。
【００９８】
なお、一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【００９９】
コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディアに記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。その他、プログラムは、装置に組み込まれている記憶装置（例えば、補助記憶装置１１２）に、あらかじめインストールしておくことができる。
【０１００】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１０１】
また、本明細書において、システムの用語は、複数の装置、手段などより構成される全体的な装置を意味するものとする。
【０１０２】
さらに、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０１０３】
また、例えば、本技術は以下のような構成も取ることができる。
【０１０４】
（１）
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限するメモリ管理部を
備えるメモリ管理装置。
（２）
前記メモリ管理部は、前記主記憶装置に配置する命令部分の容量をプログラム毎に制限する
前記（１）に記載のメモリ管理装置。
（３）
所定の条件に基づいて、前記主記憶装置に配置する命令部分の容量の上限値をプログラム毎に動的に設定する設定部を
さらに備える前記（２）に記載のメモリ管理装置。
（４）
前記メモリ管理部は、前記命令部分を前記主記憶装置に配置するアルゴリズムをプログラム毎に設定する
前記（１）乃至（３）のいずれかに記載のメモリ管理装置。
（５）
前記メモリ管理部は、将来必要になる前記命令部分を予測し、当該命令部分が必要になる前に前記主記憶装置に配置する
前記（１）乃至（４）のいずれかに記載のメモリ管理装置。
（６）
メモリ管理装置が、
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含むメモリ管理方法。
（７）
補助記憶装置に格納されているプログラムの主記憶装置への配置を制御するとともに、プログラムの命令部分を前記主記憶装置に配置する容量を制限する
ステップを含む処理をプログラムに実行させるためのプログラム。
【符号の説明】
【０１０５】
１０１  情報処理システム，  １１１  メモリマネージャ，  １１２  補助記憶装置，  １１３  主記憶装置，  １２１  設定部，  １２２  メモリ管理部
【図１】
2012242877.tif 000003
【図２】
2012242877.tif 000004
【図３】
2012242877.tif 000005
【図４】
2012242877.tif 000006
【図５】
2012242877.tif 000007
【図６】
2012242877.tif 000008
【図７】
2012242877.tif 000009
【図８】
2012242877.tif 000010
【図９】
2012242877.tif 000011
【図１０】
2012242877.tif 000012