(57)【要約】 【課題】一時的に情報を記憶するための断片を効率良く割り当てる記憶領域管理装置等を提供する。【解決手段】記憶領域管理装置２０１の推測部２０３は、次に割り当てられる領域の推測サイズを推測し、割当部２０４は、記憶部２０２の一時記憶領域のうち、まだ割り当てていない断片のサイズが、今回割り当てたい割当サイズに一致するものがあれば、当該断片を割り当て、そうでなければ、今回割り当てたい割当サイズと推測サイズの和に一致するものがあれば、当該断片を分割して一方を割り当て、そうでなければ、今回割り当てたい割当サイズより大きい断片を分割して一方を割り当てる。【選択図】図２
2007219890.tif 000002
【特許請求の範囲】
【請求項１】
一時的に情報を記憶するための断片を割り当てる記憶領域管理装置であって、
断片に分割されて割り当てられるべき一時記憶領域と、前記一時記憶領域のうち割当済の断片のそれぞれの場所とサイズの情報が記憶される割当済断片管理領域と、前記一時記憶領域のうちまだ割り当てられていない断片のそれぞれの場所とサイズの情報を記憶する自由断片管理領域と、が確保される記憶部、
当該記憶領域管理装置により現在までに割り当てられた断片のサイズの履歴から将来割り当てられるサイズの候補を推測する推測部、
サイズが指定された割当要求に対して、
（ａ）前記自由断片管理領域に当該指定されたサイズに一致するサイズの断片の情報が記憶されている場合、当該断片に関する情報を前記割当済断片管理領域に追加し、前記自由断片管理領域から削除し、
（ｂ）前記自由断片管理領域に当該指定されたサイズと、当該推測された候補のいずれかと、の和に一致するサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と当該候補のサイズの断片とに分割し、当該指定されたサイズの断片の情報を前記割当済断片管理領域に追加し、前記自由断片管理領域において当該和に一致するサイズの断片の情報を削除して当該候補のサイズの断片の情報を追加し、
（ｃ）上記（ａ）（ｂ）のいずれでもない場合、前記自由断片管理領域に当該指定されたサイズよりも大きいサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と残余のサイズの断片とに分割し、当該指定されたサイズの断片の情報を前記割当済断片管理領域に追加し、前記自由断片管理領域において当該より大きいサイズの断片の情報を削除して当該残余のサイズの断片の情報を追加し、
前記割当済断片管理領域に追加された情報に係る断片を、割り当てた結果として出力する割当部
を備えることを特徴とする記憶領域管理装置。
【請求項２】
請求項１に記載の記憶領域管理装置であって、
前記割当済断片管理領域は、当該割当済の断片の余命の情報をさらに記憶し、
前記割当部は、
（ｐ）前記割当済断片管理領域において、前記割り当てた結果に係る断片の余命の情報として、所定の初期値を書き込み、
（ｑ）前記割り当てた結果に係る断片以外の断片の余命の情報として、当該情報に係る余命から所定の差分値を減算した値を書き込み、
割り当てた結果の断片に一時的に情報を記憶する毎に、前記割当済断片管理領域において、当該一時的に情報を記憶された断片の余命の情報として、当該情報に係る余命に所定の増分値を加算した値を書き込む余命部、
前記割当済断片管理領域に現在記憶されている余命が所定の閾値より小さい断片の情報を、前記自由断片管理領域に追加し、前記割当済断片管理領域から削除するごみ集め部
をさらに備えることを特徴とする記憶領域管理装置。
【請求項３】
請求項１または２に記載の記憶領域管理装置であって、
断片の場所を指定した解放要求に対して、当該指定された場所の断片の情報を前記割当済断片管理領域から前記自由断片管理領域へ移動して解放する解放部
をさらに備えることを特徴とする記憶領域管理装置。
【請求項４】
請求項１から３のいずれか１項に記載の記憶領域管理装置であって、
前記推測部は、現在までの割当のうち、直近の所定回数の割当において割り当てられたサイズの最頻値のうち上位の所定個数を、候補として推測する
ことを特徴とする記憶領域管理装置。
【請求項５】
請求項１から３のいずれか１項に記載の記憶領域管理装置であって、
前記推測部は、現在までの割当のうち、直近の所定回数の割当において割り当てられたサイズの平均値を、候補として推測する
ことを特徴とする記憶領域管理装置。
【請求項６】
請求項１から３のいずれか１項に記載の記憶領域管理装置であって、
前記推測部は、前回の推測において推測された候補と、前回の割当において割り当てられたサイズと、の重み付きの平均値を、候補として推測する
ことを特徴とする記憶領域管理装置。
【請求項７】
記憶部、推測部、割当部を有し、一時的に情報を記憶するための断片を割り当てる記憶領域管理装置にて実行される記憶領域管理方法であって、前記記憶部には、断片に分割されて割り当てられるべき一時記憶領域と、前記一時記憶領域のうち割当済の断片のそれぞれの場所とサイズの情報が記憶される割当済断片管理領域と、前記一時記憶領域のうちまだ割り当てられていない断片のそれぞれの場所とサイズの情報を記憶する自由断片管理領域と、が確保され、
前記推測部が、当該記憶領域管理方法により現在までに割り当てられた断片のサイズの履歴から将来割り当てられるサイズの候補を推測する推測工程、
前記割当部が、サイズが指定された割当要求に対して、
（ａ）前記自由断片管理領域に当該指定されたサイズに一致するサイズの断片の情報が記憶されている場合、当該断片に関する情報を前記割当済断片管理領域に追加し、前記自由断片管理領域から削除し、
（ｂ）前記自由断片管理領域に当該指定されたサイズと、当該推測された候補のいずれかと、の和に一致するサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と当該候補のサイズの断片とに分割し、当該指定されたサイズの断片の情報を前記割当済断片管理領域に追加し、前記自由断片管理領域において当該和に一致するサイズの断片の情報を削除して当該候補のサイズの断片の情報を追加し、
（ｃ）上記（ａ）（ｂ）のいずれでもない場合、前記自由断片管理領域に当該指定されたサイズよりも大きいサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と残余のサイズの断片とに分割し、当該指定されたサイズの断片の情報を前記割当済断片管理領域に追加し、前記自由断片管理領域において当該より大きいサイズの断片の情報を削除して当該残余のサイズの断片の情報を追加し、
前記割当済断片管理領域に追加された情報に係る断片を、割り当てた結果として出力する割当工程
を備えることを特徴とする記憶領域管理方法。
【請求項８】
一時的に情報を記憶するための断片を割り当てるため、コンピュータを、
断片に分割されて割り当てられるべき一時記憶領域と、前記一時記憶領域のうち割当済の断片のそれぞれの場所とサイズの情報が記憶される割当済断片管理領域と、前記一時記憶領域のうちまだ割り当てられていない断片のそれぞれの場所とサイズの情報を記憶する自由断片管理領域と、が確保される記憶部、
当該記憶領域管理装置により現在までに割り当てられた断片のサイズの履歴から将来割り当てられるサイズの候補を推測する推測部、
サイズが指定された割当要求に対して、
（ａ）前記自由断片管理領域に当該指定されたサイズに一致するサイズの断片の情報が記憶されている場合、当該断片に関する情報を前記割当済断片管理領域に追加し、前記自由断片管理領域から削除し、
（ｂ）前記自由断片管理領域に当該指定されたサイズと、当該推測された候補のいずれかと、の和に一致するサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と当該候補のサイズの断片とに分割し、当該指定されたサイズの断片の情報を前記割当済断片管理領域に追加し、前記自由断片管理領域において当該和に一致するサイズの断片の情報を削除して当該候補のサイズの断片の情報を追加し、
（ｃ）上記（ａ）（ｂ）のいずれでもない場合、前記自由断片管理領域に当該指定されたサイズよりも大きいサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と残余のサイズの断片とに分割し、当該指定されたサイズの断片の情報を前記割当済断片管理領域に追加し、前記自由断片管理領域において当該より大きいサイズの断片の情報を削除して当該残余のサイズの断片の情報を追加し、
前記割当済断片管理領域に追加された情報に係る断片を、割り当てた結果として出力する割当部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一時的に情報を記憶するための断片をできるだけ効率良く割り当てるのに好適な記憶領域管理装置、記憶領域管理方法ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、一時的に情報を記憶するための断片をメモリ内から確保するため、種々の手法が提案されてきた。このようにして確保された断片は、たとえば携帯ゲーム装置において、画面にキャラクターを表示する際の画像の定義情報を格納するために用いられる。
【０００３】
さて、このような、メモリ管理の手法については、たとえば、以下の文献に開示されている。
【非特許文献１】Brian W.Kernighan、Rob Pike、石田晴久監訳、ＵＮＩＸプログラミング環境、アスキー出版局、１９８５年１０月１５日初版発行
【非特許文献２】TONC v.10，http://user.chem.tue.nl/jakvijn/tonc/index.htm，２００６年１月１２日更新
【０００４】
[非特許文献１]に記載の技術では、メモリ内から所定サイズszの断片を確保するために、 p = malloc(sz)； という関数呼び出しを用いる。すると、アドレスpからアドレスp+sz-1までの領域が、一時的な記憶のためのメモリ断片として確保される。このメモリ断片の使用が終わった後は、 free(p)； という関数呼び出しによって、当該断片を解放する。
【０００５】
このほか、メモリ管理の手法では、確保したメモリ断片をそのまま解放せずに放置しておいても、メモリの参照関係を調べて当該断片が使用されていないことが判明したときに、自動的に解放するガベージ・コレクション（garbage collection；ごみ集め）技術も利用されている。
【０００６】
一方、あるゲーム装置では、１２８個のスプライトが使用でき、スプライトの定義は、オブジェクト属性メモリ（Object Attribute Memory）に記憶されること、スプライトは、８×８ドットのタイルと呼ばれるビットマップ画像の集合として表現されること、オジェクト属性メモリとタイルは、それぞれ、当該ゲーム装置内の所定のメモリ領域内に配置される。
【０００７】
ゲームにおけるスプライトは長方形の形状を採用するのが一般的であり、ゲームに登場する主要キャラクターのスプライト画像のサイズは同じ大きさとするのが一般的であるから、このゲーム装置にてキャラクター用のスプライト画像の情報を記憶するために、タイル用のメモリ領域から、実際にスプライト画像の情報を記憶させる領域を確保する際の、確保したいサイズには偏りがあるのが一般的である。
【０００８】
一方で、メモリ断片の確保と解放の繰り返しが不適切に行われると、現在使用されているメモリ断片と現在使用されていないメモリ断片とが互い違いに配置され、不使用領域が分断されるフラグメンテーションという現象が生じてしまい、メモリの確保ができなくなることも知られている。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ゲーム装置等、メモリ管理に要する処理の時間コストがきわめて重要視される環境下では、処理に時間がかかるガベージ・コレクションを採用するのが現実的に困難である。一方で、フラグメンテーションなどの問題が生じるのをできるだけ避けて、効率良くメモリ管理を行いたい、という要望は大きい。
【００１０】
本発明は、上記のような課題を解決するもので、一時的に情報を記憶するための断片をできるだけ効率良く割り当てるのに好適な記憶領域管理装置、記憶領域管理方法ならびに、これらをコンピュータにて実現するプログラムに関する。
【課題を解決するための手段】
【００１１】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１２】
本発明の第１の観点に係る記憶領域管理装置であって、一時的に情報を記憶するための断片を割り当て、記憶部、推測部、割当部を備え、以下のように構成する。
【００１３】
すなわち、記憶部には、断片に分割されて割り当てられるべき一時記憶領域と、一時記憶領域のうち割当済の断片のそれぞれの場所とサイズの情報が記憶される割当済断片管理領域と、一時記憶領域のうちまだ割り当てられていない断片のそれぞれの場所とサイズの情報を記憶する自由断片管理領域と、が確保される。
【００１４】
記憶部としては、典型的にはＲＡＭ（Random Access Memory）が利用されるが、たとえばハードディスクやＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）、フラッシュメモリなど、種々の記憶媒体に適用が可能である。
【００１５】
従来の手法で、 p = malloc(sz)； により確保されるのに相当する領域が一時記憶領域である。この場合、一時記憶領域のアドレスpからp+sz-1までが、一時的に情報を記憶するための断片として利用される。
また、割当済断片管理領域は、一時記憶領域のアドレスpからp+szまでが現在使用されていることを管理するものである。
従来の手法で free(p)； に相当する機能を実行した際には、一時記憶領域のアドレスpからp+sz-1までは、割当済断片管理領域の管理を離れ、自由断片管理領域の管理下に移行する。
新たに q = malloc(tu)； に相当する機能が実行されると、一時記憶領域のうち、自由断片管理領域に管理される断片が確保され、そのアドレスqからq+tu-1までの管理が、割当済断片管理領域に移行される。
【００１６】
一方、推測部は、当該記憶領域管理装置により現在までに割り当てられた断片のサイズの履歴から将来割り当てられるサイズの候補を推測する。
上記の携帯ゲーム装置の例でいえば、キャラクターを画面に表示するためのスプライト画像のサイズだけ、タイル用のメモリ断片を確保する頻度が高いから、このようなメモリ断片を確保する際のフラグメンテーションをできるだけ防止するために、将来の割り当てサイズを推測するのである。ここで推測されるサイズは、１つもしくは複数の候補g1，g2，…，gN  (N≧1)である。
【００１７】
さらに、割当部は、サイズが指定された割当要求に対して、
（ａ）自由断片管理領域に当該指定されたサイズに一致するサイズの断片の情報が記憶されている場合、当該断片に関する情報を割当済断片管理領域に追加し、自由断片管理領域から削除する。
（ｂ）自由断片管理領域に当該指定されたサイズと、当該推測された候補のいずれかと、の和に一致するサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と当該候補のサイズの断片とに分割し、当該指定されたサイズの断片の情報を割当済断片管理領域に追加し、自由断片管理領域において当該和に一致するサイズの断片の情報を削除して当該候補のサイズの断片の情報を追加する。
（ｃ）上記（ａ）（ｂ）のいずれでもない場合、自由断片管理領域に当該指定されたサイズよりも大きいサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と残余のサイズの断片とに分割し、当該指定されたサイズの断片の情報を割当済断片管理領域に追加し、自由断片管理領域において当該より大きいサイズの断片の情報を削除して当該残余のサイズの断片の情報を追加する。
【００１８】
そして、割当部は、割当済断片管理領域に追加された情報に係る断片を、割り当てた結果として出力する。
割当要求に指定されるサイズがszである場合は、まず、これに一致するサイズの自由断片を探す。見つからなければ、推測されたサイズg1，…，gNを考慮して、サイズがsz+g1，…，sz+gNのいずれかであるような自由断片（サイズsz+gnとする。）を、サイズszとサイズgnの２つに分割する。見つからなければ、既存の自由断片（サイズsz+rsとする。）をサイズszとサイズrsの２つに分割する。そして、発見されもしくは分割されたサイズszの自由断片を割り当てるのである。
【００１９】
本発明によれば、断片のサイズの履歴から効率良く断片を割り当て、できるだけフラグメンテーションを防止することができるようになる。
【００２０】
また、本発明の記憶領域管理装置は、余命部、ごみ集め部をさらに備え、以下のように構成することができる。
すなわち、割当済断片管理領域は、当該割当済の断片の余命の情報をさらに記憶する。
いわゆる余命を割当済断片に採用し、余命が尽きた割当済断片は解放して自由断片にするのである。
【００２１】
一方、割当部は、
（ｐ）割当済断片管理領域において、割り当てた結果に係る断片の余命の情報として、所定の初期値を書き込み、
（ｑ）割り当てた結果に係る断片以外の断片の余命の情報として、当該情報に係る余命から所定の差分値を減算した値を書き込む。
すなわち、メモリ断片の確保が行われるたびに、確保された断片には一定の余命が書き込まれ、既存の割当済断片の余命が縮む。
【００２２】
さらに、余命部は、割り当てた結果の断片に一時的に情報を記憶する毎に、割当済断片管理領域において、当該一時的に情報を記憶された断片の余命の情報として、当該情報に係る余命に所定の増分値を加算した値を書き込む。
上記の例のように、タイルの画像情報が割当済断片に記憶される場合には、そのタイルを参照するスプライトの属性が更新され、表示位置や表示の有無が変化するごとに、余命が伸びる。
【００２３】
そして、ごみ集め部は、割当済断片管理領域に現在記憶されている余命が所定の閾値より小さい断片の情報を、自由断片管理領域に追加し、割当済断片管理領域から削除する。
余命がなくなる、ということは、一定期間以上の利用がされなかったこととなるので、当該割当済断片は、もはや使用されていないと判断して、解放するのである。
なお、ごみ集め部による処理は、一時記憶領域における割当済断片の割合が一定以上となった場合、一時記憶領域における自由断片の割合が一定以上となった場合、所望のサイズの自由断片が発見できる、割当に一旦失敗した場合などに開始されるほか、コルーチンやスレッドを利用して、バックグラウンドで処理を行うことも可能である。
【００２４】
本発明によれば、断片同士の参照関係を解析する参照カウントやガベージ・コレクションに比べて、単純な余命の計算によって容易に割当済のメモリ断片を解放するか否かを決定することができる。
【００２５】
また、本発明の記憶領域管理装置は、解放部をさらに備え、以下のように構成することができる。
すなわち、解放部は、断片の場所を指定した解放要求に対して、当該指定された場所の断片の情報を割当済断片管理領域から自由断片管理領域へ移動して解放する。
本発明は、上記発明の好適実施形態に係るものであり、ごみ集め部によるメモリ断片の解放ではなく、不要になった割当済断片を積極的に自由断片にすることができるようにするものである。
【００２６】
本発明によれば、メモリ断片の管理を別途適切に行っている場合に、不要な割当済断片を積極的に解放して、早期に自由断片にすることができるようになる。
【００２７】
また、本発明の記憶領域管理装置において、推測部は、現在までの割当のうち、直近の所定回数の割当において割り当てられたサイズの最頻値のうち上位の所定個数を、候補として推測するように構成することができる。
【００２８】
本発明は、上記発明の好適実施形態に係るものであり、将来割り当てられるであろうサイズの候補を、最近の割当履歴のうち頻度が高いものから、１つもしくは複数の所定個数抽出して、これを推測結果とするものである。
【００２９】
また、本発明の記憶領域管理装置において、推測部は、現在までの割当のうち、直近の所定回数の割当において割り当てられたサイズの平均値を、候補として推測するように構成することができる。
【００３０】
本発明は、上記発明の好適実施形態に係るものであり、将来割り当てられるであろうサイズの候補の１つとして、最近の割当履歴の平均を採用するものである。
【００３１】
また、本発明の記憶領域管理装置において、推測部は、前回の推測において推測された候補と、前回の割当において割り当てられたサイズと、の重み付きの平均値を、候補として推測するように構成することができる。
【００３２】
本発明は、上記発明の好適実施形態に係るものであり、最近の割当履歴を記憶するための領域が用意できない場合に好適である。すなわち、前回の推測値と今回の指定サイズとの重み付き平均を今回の推測値とするので、推測値を１つ記憶する領域を用意すればすむ。
【００３３】
本発明のその他の観点に係る記憶領域管理方法は、記憶部、推測部、割当部を有し、一時的に情報を記憶するための断片を割り当てる記憶領域管理装置にて実行され、以下のように構成する。
【００３４】
ここで、記憶部には、断片に分割されて割り当てられるべき一時記憶領域と、一時記憶領域のうち割当済の断片のそれぞれの場所とサイズの情報が記憶される割当済断片管理領域と、一時記憶領域のうちまだ割り当てられていない断片のそれぞれの場所とサイズの情報を記憶する自由断片管理領域と、が確保される。
【００３５】
一方、推測工程では、推測部が、当該記憶領域管理方法により現在までに割り当てられた断片のサイズの履歴から将来割り当てられるサイズの候補を推測する。
【００３６】
さらに、割当工程では、割当部が、サイズが指定された割当要求に対して、
（ａ）自由断片管理領域に当該指定されたサイズに一致するサイズの断片の情報が記憶されている場合、当該断片に関する情報を割当済断片管理領域に追加し、自由断片管理領域から削除し、
（ｂ）自由断片管理領域に当該指定されたサイズと、当該推測された候補のいずれかと、の和に一致するサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と当該候補のサイズの断片とに分割し、当該指定されたサイズの断片の情報を割当済断片管理領域に追加し、自由断片管理領域において当該和に一致するサイズの断片の情報を削除して当該候補のサイズの断片の情報を追加し、
（ｃ）上記（ａ）（ｂ）のいずれでもない場合、自由断片管理領域に当該指定されたサイズよりも大きいサイズの断片の情報が記憶されている場合、当該断片を当該指定されたサイズの断片と残余のサイズの断片とに分割し、当該指定されたサイズの断片の情報を割当済断片管理領域に追加し、自由断片管理領域において当該より大きいサイズの断片の情報を削除して当該残余のサイズの断片の情報を追加し、
割当済断片管理領域に追加された情報に係る断片を、割り当てた結果として出力する。
【００３７】
本発明のその他の観点に係るプログラムは、コンピュータを上記の記憶領域管理装置の各部として機能させ、コンピュータに上記の記憶領域管理方法の各工程を実行させるように構成する。
【００３８】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００３９】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００４０】
本発明によれば、一時的に情報を記憶するための断片をできるだけ効率良く割り当てるのに好適な記憶領域管理装置、記憶領域管理方法ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００４１】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００４２】
（情報処理装置）
図１は、本発明に係る記憶領域管理装置が実現される一般的な情報処理装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【００４３】
本情報処理装置１０１は、ＣＰＵ（Central Processing Unit）１０２と、ＲＡＭ（Random Access Memory）１０３と、ＲＯＭ（Read Only Memory）１０４と、入力装置１０５と、画像処理部１０６と、液晶ディスプレイ１０７と、音声処理部１０８と、スピーカ１０９と、カセットリーダ１１０と、を備える。
【００４４】
ＣＰＵ  １０２は、本情報処理装置１０１の各部の制御を行う。ＲＡＭ  １０３の記憶域、ＲＯＭ  １０４の記憶域、カセットリーダ１１０に挿入されたＲＯＭカセット１１１の記憶域は、いずれも、ＣＰＵ  １０２が管理する１つのメモリ空間にマップされており、ＣＰＵ  １０２は、それぞれの記憶域がマップされるアドレスを読み出せば、それぞれに記憶されている情報を取得することができる。また、ＲＡＭ  １０３の記憶域には、書き込みも可能である。
【００４５】
このほか、ＣＰＵ  １０２が画像処理部１０６や音声処理部１０８に対して各種の指示を行う際や、これらのほか、入力装置１０５から情報を取得する際の、窓口となるレジスタも、当該メモリ空間にマップされており、所定のアドレスにコマンドを表すデータ書き込みを行えば指示をすることができ、所定のアドレスからデータを読み出せば、情報を取得することができる。
【００４６】
情報処理装置１０１の電源が投入されると、ＣＰＵ  １０２は、カセットリーダ１１０に挿入されたＲＯＭカセット１１１の記憶域がマップされたアドレスから開始されるプログラムを実行する。ＲＡＭ  １０３は、一時的な記憶域として種々の目的に使用される。ＲＯＭ  １０４には、情報処理装置１０１が提供するＢＩＯＳ(Basic Input/Output System)ルーチンが記録されており、ＲＯＭカセット内のプログラムから、適宜呼び出すことができる。
【００４７】
入力装置１０５は、方向を表す指示入力を受け付けるボタン、各種の操作を区別する指示入力を受け付けるボタンからの入力をメモリ空間にマップされたレジスタに反映させるほか、液晶ディスプレイ１０７の表面に貼り付けられたタッチパネルが押圧されているか否か、および押圧されているときのその座標の入力も受け付ける。
【００４８】
液晶ディスプレイ１０７は、画像処理部１０６によって管理される。メモリ空間にマップされたタイルを記憶するための記憶領域や、オブジェクト属性メモリを記憶するための記憶領域に、ＣＰＵ  １０２が、計算により生成した値を書き込んだり、カセットリーダ１１０に挿入されたＲＯＭカセット１１１から適切に情報を転送すると、液晶ディスプレイ１０７にスプライト画像が表示されることとなる。
【００４９】
液晶ディスプレイ１０７の数は１つまたは複数とするのが一般的であり、複数の場合には、一方の液晶ディスプレイ１０７は表示専用とし、他方の液晶ディスプレイ１０７にはタッチパネルが貼り付けられているように構成しても良い。
【００５０】
なお、本情報処理装置１０１は、典型的な携帯ゲーム装置として利用されるもので、本発明の記憶領域管理の技術は、タイルを記憶する領域の管理に適用される。しかしながら、一般的なコンピュータにおいても、確保したいサイズには偏りがあるため、本発明の記憶領域管理の技術を適用することが可能であり、そのような実施形態も本発明の範囲に含まれる。
【００５１】
（記憶領域管理装置）
図２は、本発明の一つの実施形態に係る記憶領域管理装置の概要構成を示す説明図である。以下、本図を参照して説明する。
本実施形態の記憶領域管理装置２０１は、記憶部２０２、推測部２０３、割当部２０４、ごみ集め部２０５、解放部２０６を備える。
【００５２】
記憶部２０２は、割り当てるメモリ断片を管理し、推測部２０３は、将来割り当てが予想されるメモリ断片のサイズを推測し、割当部２０４は、記憶部２０２を更新して実際のメモリ割当を行い、ごみ集め部２０５や解放部２０６は、不要になったメモリ断片の解放を行う。以下詳細に説明する。
【００５３】
（記憶部）
図３は、ある時点における記憶部２０２の様子を示す模式図である。以下、本図を参照して説明する。
記憶部２０２には、以下の領域が用意される。
（ａ）一時記憶領域。本実施形態では、タイルを記憶するための領域に相当する。一時記憶領域からは、あるスプライト用の所定のサイズの断片が確保され、この断片にタイルの定義を書き込むことにより、スプライト画像が構成される。本図では、割当済断片は太線で、自由断片は細線で囲まれており、サイズの単位が点線で描かれている。
（ｂ）割当済断片管理領域。本実施形態では、ＲＡＭ  １０３内に用意される。すでに利用されているタイル領域の断片の場所とサイズ、寿命を管理するための領域である。スプライト画像を定義するオブジェクト属性メモリにも共通する情報が記憶されるため、情報を分割して記憶することとしても良い。また、当該タイル領域の断片を使用しているスプライトの番号を、この領域でさらに管理することとしても良い。
【００５４】
（ｃ）自由断片管理領域。本実施形態では、ＲＡＭ  １０３内に用意される。現在利用されていないタイル領域の断片の場所とサイズを管理するための領域である。
（ｄ）履歴管理領域。本実施形態では、ＲＡＭ  １０３内に用意される。配列やリングバッファとして用意され、直近N回の断片の割当処理において、何バイトの割当が行われたか、を記憶する。
【００５５】
上記のように、本実施形態で利用する情報処理装置１０１では、タイルを記憶するための領域とオブジェクト属性メモリとは、メモリ空間内で、ＲＡＭ  １０３とは異なる領域にアドレスがマップされており、ＲＡＭ  １０３と同様に読み書きができる。したがって、本実施形態におけるメモリ管理の手法は、他の態様のコンピュータにも適用することができる。たとえばハードディスクやＥＥＰＲＯＭ、フラッシュメモリなど、種々の記憶媒体に適用が可能である。
【００５６】
さて、従来の手法で、 p = malloc(sz)； により確保されるのに相当する領域が一時記憶領域である。この場合、一時記憶領域のアドレスpからp+sz-1までが、一時的に情報を記憶するための断片として利用される。また、このときに、履歴管理領域にszが履歴として新規登録される。
また、割当済断片管理領域は、一時記憶領域のアドレスpからp+szまでが現在使用されていることを管理するものである。
従来の手法で free(p)； に相当する機能を実行した際には、一時記憶領域のアドレスpからp+sz-1までは、割当済断片管理領域の管理を離れ、自由断片管理領域の管理下に移行する。
新たに q = malloc(tu)； に相当する機能が実行されると、一時記憶領域のうち、自由断片管理領域に管理される断片が確保され、そのアドレスqからq+tu-1までの管理が、割当済断片管理領域に移行される。また、このときに、履歴管理領域にtuが履歴として新規登録される。
【００５７】
本図では、サイズ７２の一時記憶領域が用意されている。そして、割当済断片管理領域には、以下の情報が２つの要素（以下「割当済要素」という。）として記憶されている。
（１）場所０、サイズ４、寿命１９０。
（２）場所２８、サイズ４、寿命１９０。
これは、現在一時記憶領域の中から２つの断片（０〜３、２８〜３１）が確保済みであり、いずれもサイズが４、寿命が１９０であることを意味する。
【００５８】
一方、自由断片管理領域には、以下の情報が２つの要素（以下「自由要素」という。）として記憶されている。
（１）場所４、サイズ２４。
（２）場所３２、サイズ４０。
すなわち、現在一時記憶領域は、２つの断片（４〜２７、３２〜７１）が未使用であることを意味する。
【００５９】
また、履歴管理領域には、直近２回分の割り当て情報として、４が記憶されているほか、それ以前の割当履歴も種々記憶されている。
【００６０】
（記憶領域管理処理）
以下、具体的な処理について、さらに詳細に説明する。図４は、本実施形態に係る記憶領域管理装置２０１にて実行される記憶領域管理処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００６１】
本記憶領域管理処理は、記憶領域管理装置２０１に対してサイズを指定した割当要求がされることによって起動される。これは、従来の手法では、p = malloc(sz)；の中の関数呼び出しに相当する。
【００６２】
まず、記憶領域管理装置２０１の推測部２０３は、履歴管理領域を参照して、当該記憶領域管理装置２０１により現在までに割り当てられた断片のサイズの履歴から将来割り当てられるサイズの候補を推測する（ステップＳ４０１）。
上記の携帯ゲーム装置の例でいえば、キャラクターを画面に表示するためのスプライト画像のサイズだけ、タイル用のメモリ断片を確保する頻度が高いから、このようなメモリ断片を確保する際のフラグメンテーションをできるだけ防止するために、将来の割り当てサイズを推測するのである。ここで推測されるサイズは、１つもしくは複数の候補g1，g2，…，gN  (N≧1)である。
【００６３】
図３に示す例では、割り当てられたサイズとして最も頻度が大きいのは４であり、次が８である。そこで、以下の説明では、適宜N = 2とし、g1 = 4，g2 = 18として説明する。なお、Nの値は、少なくとも１であれば良い。すなわち、少なくとも１個の推測がされれば十分である。また、推測のその他の手法については、後述する。
したがって、ＣＰＵ  １０２は、ＲＡＭ  １０３と共働して、推測部２０３として機能する。
【００６４】
ついで、割当部２０４は、自由断片管理領域の自由要素を順に走査し（ステップＳ４０２）、現在注目している自由要素に指定されているサイズが、確保に指定されたサイズszに一致する否かを調べる（ステップＳ４０３）。存在すれば（ステップＳ４０３；Ｙｅｓ）、繰り返し（ステップＳ４０２〜ステップＳ４０４）を終了して、ステップＳ４０５に進む。
そして、割当済要素の寿命を減らす処理を実行する（ステップＳ４０５）。割当済要素の寿命を減らす処理の詳細については、後述する。
【００６５】
ついで、発見された自由要素の情報を、自由断片管理領域から割当済断片管理領域に移動する（ステップＳ４０６）。
【００６６】
すなわち、割当済断片管理領域の新しい割当済要素として、
（１）サイズは、当該自由要素のサイズと一致。
（２）場所は、当該自由要素の場所と一致。
（３）寿命は、所定の初期値（本実施例では２００とする。）。
というものを追加し、当該自由要素を自由断片管理領域から削除するのである。
そして、履歴管理領域に、サイズszを履歴として追加して（ステップＳ４０７）、当該新たな割当済要素が指定するアドレスを返し（ステップＳ４０８）、本処理を終了する。
【００６７】
このように、ＣＰＵ  １０２は、ＲＡＭ  １０３等と共働して、割当部２０４として機能する。
【００６８】
図５は、図３の状況下で、sz = 24の割り当てがされた後の、記憶部２０２の様子を示す説明図である。以下、本図を参照して説明する。
【００６９】
本図に示すように、サイズ２４の自由要素があるため、これに管理される一時記憶領域の断片がそのまま結果となる。自由断片管理領域の自由要素が割当済断片管理領域割当済要素への移動が行われているほか、履歴管理領域に値２４が追加されており、古い値が消えている。
【００７０】
さて、自由断片管理領域の自由要素を最後まで走査してしまった場合（ステップＳ４０４）、もう一度、自由断片管理領域の自由要素を最後まで走査して（ステップＳ４０９）、以下の処理を繰り返す（ステップＳ４０９〜ステップＳ４１３）。
【００７１】
すなわち、i = 1〜Nについて、以下の処理を繰り返す（ステップＳ４１０〜ステップＳ４１２）。現在注目している自由要素のサイズが、確保に指定されたサイズszと推測されたサイズgiの和sz + giに一致するか否かを調べる（ステップＳ４１１）。一致していれば（ステップＳ４１１；Ｙｅｓ）、繰り返し（ステップＳ４０９〜ステップＳ４１２）を終了して、ステップＳ４１４に進む。一方、一致していなければ（ステップＳ４１１；Ｎｏ）、iについて処理を繰り返す（ステップＳ４１２）。
【００７２】
そして、最後まで走査するまで、処理を繰り返す（ステップＳ４１３）。
【００７３】
さて、sz + giに一致する自由要素が見つかった場合（ステップＳ４１１；Ｙｅｓ）、割当済要素の寿命を減らす処理を実行する（ステップＳ４１４）。
【００７４】
ついで、発見された自由要素の情報を分割して（ステップＳ４１５）、サイズszに関する情報を自由断片管理領域から割当済断片管理領域に追加する（ステップＳ４１６）。
【００７５】
すなわち、分割前は、
（ａ）サイズsz+gi、アドレスpの自由要素。
だったものを、
（ｙ）サイズgi、アドレスpの自由要素。
（ｘ）サイズsz、アドレスp+gi、寿命２００の割当済要素。
の２つに分けるのである。
【００７６】
このようにして、新たな割当済要素が指定するアドレスp+giを返すべく、ステップＳ４０７に進む。
【００７７】
図６は、図３の状況下で、sz = 22の割り当てがされた後の、記憶部２０２の様子を示す説明図である。以下、本図を参照して説明する。
【００７８】
上記のように、g1 = 4，g2 = 18であるが、
sz + g1 = 26
sz + g2 = 40
であるから、２つ目の自由要素がマッチする。
【００７９】
そこで、２つ目の自由要素を２つに分割して、一方の断片を結果とするため割当済断片管理領域に割当済要素の追加が行われる。他方の断片はそのまま、サイズの大きさのみ変更した自由断片管理領域の自由要素に管理される。
なお、分割した前半と後半のいずれを自由要素に当て、いずれを割当済要素に当てるかは、任意に変更が可能である。
また、履歴管理領域に値２２が追加されており、古い値が消えている。
【００８０】
一方、サイズがsz + giに一致する自由要素が見つからないまま繰り返しが終わった場合（ステップＳ４１３）、もう一度、自由断片管理領域の自由要素を最後まで走査して（ステップＳ４１８）、以下の処理を繰り返す（ステップＳ４１８〜ステップＳ４２０）。
【００８１】
すなわち、当該自由要素のサイズがszより大きいか否かを調べ（ステップＳ４１９）、大きい場合（ステップＳ４１９；Ｙｅｓ）、繰り返し（ステップＳ４１８〜ステップＳ４２０）を終了して、ステップＳ４２１に進む。一方、そうでなければ（ステップＳ４１９；Ｎｏ）、最後まで処理を繰り返す（ステップＳ４２０）。
【００８２】
さて、サイズがszより大きい自由要素が見つかった場合（ステップＳ４１９；Ｙｅｓ）、各割当済要素の寿命を減らす処理を実行する（ステップＳ４２１）。
【００８３】
ついで、発見された自由要素の情報分割して（ステップＳ４２２）、サイズszに関する情報を自由断片管理領域から割当済断片管理領域に追加する（ステップＳ４２３）。
【００８４】
すなわち、分割前は、
（ａ）サイズsz+rs、アドレスpの自由要素  (rs≧1)
だったものを、
（ｘ）サイズrs、アドレスpの自由要素
（ｙ）サイズsz、アドレスp+rs、寿命２００の自由要素。
の２つに分けるのである。このようにして、新たな割当済要素が指定するアドレスp+rsを返すべく、ステップＳ４０７に進む。
【００８５】
図７は、図３の状況下で、sz = 14の割り当てがされた後の、記憶部２０２の様子を示す説明図である。
【００８６】
上記のように、g1 = 4，g2 = 18であり、
sz + g1 = 18；
sz + g2 = 32
であるから、マッチする自由要素はないので、szより大きなサイズを指定する自由要素を探す。
【００８７】
最初に見つかるものが１つ目のサイズ１６の自由要素であるから、これを２つに分割するのである。分割した断片の一方は自由断片管理領域に管理され、他方は割当済断片管理領域に管理される。分割の前半と後半をいずれに当てるかは、上記と同様、任意である。また、履歴管理領域にサイズ１４が追加されている。
【００８８】
さて、サイズがszより大きな自由断片が見つからないまま、繰り返しが終わった場合（ステップＳ４２０）、ごみ集め処理を実行して（ステップＳ４２４）、ステップＳ４０２に戻る。ごみ集め処理の詳細については、後述するが、適宜コンパクション（ごみ集めの際にコンパクションを行う公知技術を適用することができる。）を行うものである。
【００８９】
（寿命を扱う処理）
以下では、寿命を減らす処理と、寿命を増やす処理の２つについて説明する。図８は、寿命を減らす処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００９０】
寿命を減らす処理が開始されると、まず、割当済断片管理領域の割当済要素のそれぞれについて、以下の走査を繰り返す（ステップＳ７０１〜ステップＳ７０５）。すなわち、当該割当済要素の寿命を１減らす（ステップＳ７０２）。そして、当該寿命が０以下か否かを調べ（ステップＳ７０３）、０以下である場合（ステップＳ７０３；Ｙｅｓ）、当該割当済要素に指定される断片を解放すべく、自由要素に移動させる（ステップＳ７０４）。
【００９１】
この処理は、上記のステップＳ４０６と逆の処理を行えば良いが、この際に、当該割当済要素の場所を詰める必要はない。「寿命が０以下である」ということによって、当該割当済要素は、実は未使用である、ということが表現できるからである。
【００９２】
また、この際には、当該割当済要素のアドレスは、いずれの断片とも異なる無効アドレスの値とし、寿命も０とすることが望ましい。
【００９３】
なお、上記の説明では、割当済要素を「追加」するとの文言で説明したが、「追加」の際には、寿命が０以下となっているような割当済要素を探して、当該割当済要素の領域に上書きを行えば良いことになる。
【００９４】
全割当済要素についての走査が終了したら（ステップＳ７０５）、本処理を終了する。
【００９５】
一方、寿命を増やす処理は、当該割当済のメモリ断片を使用する際に行われる。たとえば、上記情報処理装置１０１において、メモリ断片のアドレスpを使用する場合とは、当該タイル情報を使用するスプライト画像を画面に表示する場合である。このときに、アドレスpについて寿命を増やす処理を実行する。
【００９６】
図９は、アドレスpについての寿命を増やす処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００９７】
寿命を増やす処理が開始されると、まず、割当済断片管理領域の割当済要素のそれぞれについて、以下の走査を繰り返す（ステップＳ８０１〜ステップＳ８０３）。すなわち、当該割当済要素が指定する寿命が正であり、かつ、アドレスがpに等しいか否かを調べ（ステップＳ８０２）、等しい場合（ステップＳ８０２；Ｙｅｓ）、当該割当済要素の寿命を１増やして（ステップＳ８０４）、本処理を終了する。
【００９８】
一方、そうでなければ（ステップＳ８０２；Ｎｏ）、他の要素について走査を繰り返す（ステップＳ８０３）。全割当済要素についての走査が終了したら（ステップＳ８０３）、当該アドレスpは記憶部２０２によって管理されていないこととなるので、エラーを報告して（ステップＳ８０５）、本処理を終了する。
【００９９】
なお、上記のように、無効アドレスを使用している場合は、ステップＳ８０２における寿命が正であるか否かの判断は省略することができる。以下同様である。
【０１００】
なお、アドレスpから始まる断片を使用するごとに、上記のような繰り返し（ステップＳ８０１〜ステップＳ８０３）が行われるのを防止するためには、確保した領域のアドレスそのものを返すのではなく、割当済要素を「確保した領域のアドレスを指定するハンドル」として使用する手法が考えられる。このような「ハンドル」として利用できるのが、割当済断片管理領域における割当済要素のインデックス（何番目の割当済要素か）の情報である。
【０１０１】
上記のように、割当済要素を解放する際であっても、割当済要素を詰めることは行われない。したがって、アドレスpを直接用いるかわりに、割当済要素のインデックスを用いて間接的にタイル領域にアクセスすることとすれば、割当済要素のインデックスを用いて寿命を増やす処理も高速に実行することができる。
【０１０２】
（解放処理）
図１０は、アドレスpから始まるメモリ断片を解放する処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１０３】
まず、割当済断片管理領域の割当済要素のそれぞれについて、以下の走査を繰り返す（ステップＳ９０１〜ステップＳ９０３）。すなわち、寿命が正であり、かつ、当該割当済要素が指定するアドレスがpに等しいか否かを調べ（ステップＳ９０２）、等しい場合（ステップＳ９０２；Ｙｅｓ）、当該割当済要素の情報を自由断片管理領域に移動するとともに当該割当済要素の寿命を０にして（ステップＳ９０４）、本処理を終了する。
【０１０４】
一方、そうでなければ（ステップＳ９０２；Ｎｏ）、他の要素について走査を繰り返す（ステップＳ９０３）。全割当済要素についての走査が終了したら（ステップＳ９０３）、当該アドレスpは記憶部２０２によって管理されていないこととなるので、エラーを報告して（ステップＳ９０５）、本処理を終了する。
【０１０５】
なお、アドレスpから始まる断片を使用するごとに、上記のような繰り返し（ステップＳ９０１〜ステップＳ９０３）が行われるのを防止するためには、確保した領域のアドレスそのものを返すのではなく、割当済要素を「確保した領域のアドレスを指定するハンドル」として使用する手法を採用すれば良い。これは、上記の寿命を増やす処理と同様である。
【０１０６】
このように、ＣＰＵ  １０１は、ＲＡＭ  １０３等と共働して、解放部２０６として機能する。
【０１０７】
（ごみ集め処理）
図１１は、ごみ集め処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１０８】
上記のように、寿命が尽きた割当済断片は、割当済要素の寿命を減らす処理（ステップＳ４０５、ステップＳ４１４、ステップＳ４２１）で適宜解放されるから、本処理では、いわゆるコンパクション処理を行うこととなる。
【０１０９】
コンパクション処理が開始されると、まず、一時的な変数yを、一時記憶領域の先頭のアドレスに初期化する（ステップＳ１００１）。本実施形態では、一時記憶領域のアドレスは、一時記憶領域におけるインデックスとしているので、この初期値は０である。
【０１１０】
ついで、割当済断片管理領域の割当済要素のうち、寿命が正であるもの（すなわち、有効な、まだ解放されていない割当済要素。）の中から、指定するアドレスがy以上で、かつ、当該アドレスが最小のものを探す（ステップＳ１００２）。そのような割当済要素が発見された場合（ステップＳ１００２；Ｙｅｓ）、当該割当済要素が指定するアドレスzがyより大きければ（ステップＳ１００３；Ｙｅｓ）、当該割当済要素が指定するサイズsを参照して、一時記憶領域のアドレスz〜z+s-1の情報を、一時記憶領域のアドレスy〜y+s-1にコピーするとともに当該割当要素が指定するアドレスzをyの値に更新して断片を移動し（ステップＳ１００４）、yをy+sに更新して（ステップＳ１００５）、ステップＳ１００２に戻る。
【０１１１】
一方、発見された割当済要素が指定するアドレスzがyに等しければ（ステップＳ１００３；Ｎｏ）、当該割当済要素が指定するサイズsを参照して、ステップＳ１００５に進み、yをy+sに更新してステップＳ１００２に戻る。
【０１１２】
一方、そのような割当済要素が発見されなかった場合（ステップＳ１００２；Ｎｏ）、すべての割当済断片が一時記憶領域の先頭付近にコンパクションされたこととなるはずである。そこで、ステップＳ１００４における断片の移動が繰り返しの中で１回でも行われていれば（ステップＳ１００６；Ｙｅｓ）、自由断片管理領域をすべてクリアし（ステップＳ１００７）、その最初の自由要素を、アドレスにyを指定し、サイズに、一時記憶領域の末尾のアドレスeからyを減算した値を指定することにより、設定して（ステップＳ１００８）、本処理を終了して、ステップＳ４０１に戻る。
【０１１３】
一方、断片の移動が一切行われなかった場合（ステップＳ１００６；Ｎｏ）、コンパクションにも失敗したこととなるから、要求されたメモリの割当はできないことを報告して（ステップＳ１００９）、本処理および記憶領域管理処理を終了する。
このように、ＣＰＵ  １０２は、ＲＡＭ  １０３等と共働して、ごみ集め部２０５として機能する。
【０１１４】
図１２は、図３における状況下で、ごみ集めを実行した後の記憶部２０２の様子を示す模式図である。以下、本図を参照して説明する。
【０１１５】
本図に示すように、自由断片管理領域における自由要素は１つにまとめられており、割当済断片管理領域における割当済要素のアドレスは、前に寄せられている。
【０１１６】
なお、当該ごみ集めの処理（ステップＳ１００１〜ステップＳ１００８）は、アイドル時間にコルーチンとして実行したり、別スレッドによって実行したり、一時記憶領域の空領域を別途管理しておき、当該空領域が所定のサイズよりも小さくなった場合に実行したり、自由断片管理領域に記憶される最後の自由要素のサイズ（典型的には、これが最大の自由領域になる）が一定サイズよりも小さくなった場合に実行するなど、種々のタイミングで実行することができる。
【０１１７】
（推測の他の実施形態）
上記実施形態では、推測部２０３は、履歴管理領域を利用して、その上位２位の最頻値を使用していた。
【０１１８】
この他の手法としては、N=1として、履歴管理領域に登録されているサイズの平均値を候補g1として採用する手法が考えられる。
【０１１９】
また、履歴管理領域を用意せずに、候補管理領域を１つだけ用意し、この領域に記憶される値を推測値として利用する手法もありうる。この際は、0<w≦1を満たす重みwを採用して、次の推測値として、
(1-w)×(候補管理領域の値) + w×(今回の確保サイズ)
を計算し、メモリ断片の確保が終わった後に、候補管理領域に代入する、という手法を採用しても良い。
【０１２０】
なお、上記実施形態では、最初に発見された自由要素をそのまま使用したり、分割したりしているが、条件にマッチする自由要素のうち、最もサイズが大きいものを選ぶこととする等、種々の変形を行うことも可能である。
【産業上の利用可能性】
【０１２１】
以上説明したように、本発明によれば、一時的に情報を記憶するための断片をできるだけ効率良く割り当てるのに好適な記憶領域管理装置、記憶領域管理方法ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【０１２２】
【図１】プログラムを実行することにより、本発明の記憶領域管理装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。
【図２】本発明の一つの実施形態に係る記憶領域管理装置の概要構成を示す説明図である。
【図３】ある時点における記憶部の様子を示す模式図である。
【図４】本実施形態に係る記憶領域管理装置にて実行される記憶領域管理処理の制御の流れを示すフローチャートである。
【図５】図３の状況下で、sz = 24の割り当てがされた後の、記憶部の様子を示す説明図である。
【図６】図３の状況下で、sz = 22の割り当てがされた後の、記憶部の様子を示す説明図である。
【図７】図３の状況下で、sz = 14の割り当てがされた後の、記憶部の様子を示す説明図である。
【図８】寿命を減らす処理の制御の流れを示すフローチャートである。
【図９】アドレスpについての寿命を増やす処理の制御の流れを示すフローチャートである。
【図１０】アドレスpから始まるメモリ断片を解放する処理の制御の流れを示すフローチャートである。
【図１１】ごみ集め処理の制御の流れを示すフローチャートである。
【図１２】図３における状況下で、ごみ集めを実行した後の記憶部の様子を示す模式図である。
【符号の説明】
【０１２３】
１０１  情報処理装置
１０２  ＣＰＵ
１０３  ＲＡＭ
１０４  ＲＯＭ
１０５  入力装置
１０６  画像処理部
１０７  液晶ディスプレイ
１０８  音声処理部
１０９  スピーカ
１１０  カセットリーダ
１１１  ＲＯＭカセット
２０１  記憶領域管理装置
２０２  記憶部
２０３  推測部
２０４  割当部
２０５  ごみ集め部
２０６  解放部
【図１】
2007219890.tif 000003
【図２】
2007219890.tif 000004
【図３】
2007219890.tif 000005
【図４】
2007219890.tif 000006
【図５】
2007219890.tif 000007
【図６】
2007219890.tif 000008
【図７】
2007219890.tif 000009
【図８】
2007219890.tif 000010
【図９】
2007219890.tif 000011
【図１０】
2007219890.tif 000012
【図１１】
2007219890.tif 000013
【図１２】
2007219890.tif 000014