(57)【要約】【課題】従来のメモリ割付方法による割付処理において行われていた無駄な処理を排除し，効率のよいメモリ割付処理を実現すること。【解決手段】メモリ領域を適宜のサイズ範囲にクラス分け（分級）し，このクラス分けされた１つのサイズ範囲に属する空領域を探査するルールに従って，割付要求された情報の割付位置を探査して特定すると共に，クラス分けされた１つのサイズ範囲を分割し，或いは，複数のサイズ範囲を併合することにより，これまで行なわれていた無駄な探査処理を排除し，効率のよい割付処理を実行する。【選択図】図４
2004192208.tif 000002
【特許請求の範囲】
【請求項１】
動的に使用されるメモリ領域に対して割付要求がされた際に当該メモリ領域の空領域を選択して割付処理を行うメモリ管理システムにおいて，
上記メモリに記憶し得る情報のサイズを適宜のサイズ範囲毎に分級し，このサイズ範囲を記憶するサイズ範囲記憶手段と，
上記適宜のサイズ範囲に属するサイズを持つ空領域の探査順位を設定するための所定のルールを記憶する順位付けルール記憶手段と，
上記割付要求がなされた情報のサイズに応じた上記サイズ範囲記憶手段に記憶されたサイズ範囲を選択すると共に，上記順位付けルール記憶手段に記憶された上記所定のルールに基づいて，上記割付要求がされた情報の割付位置を特定する割付位置特定手段と，
を具備してなることを特徴とするメモリ管理システム。
【請求項２】
上記サイズ範囲記憶手段により記憶されたサイズ範囲に属するサイズを持つ上記空領域数を算出し，この算出値を記憶する空領域数記憶手段を更に具備してなる，請求項１に記載のメモリ管理システム。
【請求項３】
上記算出値が所定の数値を超えることを条件に，上記算出対象のサイズ範囲を分割するサイズ範囲分割手段を更に具備するものである，請求項１又は２に記載のメモリ管理システム。
【請求項４】
上記サイズ範囲記憶手段により記憶された複数のサイズ範囲に属するサイズを持つ上記空領域数の合計数を算出し，この合計数値が所定の数値未満であることを条件に，上記複数のサイズ範囲を併合するサイズ範囲併合手段を更に具備するものである，請求項１〜３のいずれかに記載のメモリ管理システム。
【請求項５】
上記サイズ範囲記憶手段により記憶されたサイズ範囲，若しくは上記順位付けルール記憶手段により記憶される所定のルール，若しくは上記空領域数記憶手段により記憶された空領域数，若しくは上記再分級サイズ範囲記憶手段により記憶されたサイズ範囲，若しくは上記併合サイズ範囲記憶手段により記憶されたサイズ範囲のいずれか１つ又は複数をテーブル化するテーブル作成手段を更に具備してなる，請求項１〜４に記載のメモリ管理システム。
【請求項６】
上記所定のルールが，上記適宜のサイズ範囲に属するサイズを持つ空領域を，そのサイズに応じて順位付けするものである，請求項１〜５のいずれかに記載のメモリ管理システム。
【請求項７】
上記所定のルールが，上記適宜のサイズ範囲に属するサイズを持つ空領域を，そのアドレスに応じて順位付けするものである，請求項１〜５のいずれかに記載のメモリ管理システム。
【請求項８】
上記所定のルールが，上記割付要求頻度の高い割付サイズに応じて順位付けするものである，請求項１〜５のいずれかに記載のメモリ管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，動的に使用されるメモリ領域に対して割付要求がされた際に，当該メモリ領域の空領域を選択して割付処理を行うメモリ管理システムに関し，特に新たに要求されたメモリ割付を高速処理するメモリ管理システムに関するものである。
【０００２】
【従来の技術】
メモリ割付要求がされた際にメモリ領域の空領域を選択して動的に割付処理を実行する代表的な方法として，最良適合法（ｂｅｓｔ−ｆｉｔ）と最初適合法（ｆｉｒｓｔ−ｆｉｔ）が一般的に知られている。
最良適合法は，メモリ領域に散在している全ての空領域を探査し，割付要求がされたサイズに最も適合する空領域を選択するものであるため，メモリ全領域を検索する必要があり，割付処理に費やす時間が大きいという欠点があった。
一方，最初適合法は，割付要求がされたサイズが格納され得る空領域を，空領域の大小に関係なくメモリアドレスの昇順に探査し，最初に探査された空領域を選択するものである。このため，必然的にアドレス先頭付近の利用頻度が高まり，メモリアドレス先頭付近にメモリ領域の断片化（フラグメンテーション）が頻繁に発生し，メモリ不足が発生しやすいという欠点があった。
【０００３】
この問題を解決するため，従来，例えば特許文献１に示されるように，過去に割付要求がされたサイズの統計をとり，その大きさに準じてクラス分けをし，割付要求の回数が多いクラス順に要求サイズに適合する空領域を選択する方法がある。
【０００４】
【特許文献１】
特開平９−１６４６３号公報
【０００５】
【発明が解決しようとする課題】
しかしながら，割付要求がされた回数が少ないクラスに属するサイズの割付要求がされた場合は，結局最後に探査されるため，却って割付処理に多大な時間を費やし，従って，上記最良適合法や最初適合法と較べれば無駄な選択処理が回避されるとはいえ，選択される全てのサイズについて統計的に見ると，上記特許文献１に記載の方法は依然として選択効率に問題がある。
従って，本発明は上記事情に鑑みてなされたものであり，その目的とするところは，割付要求がされた情報のサイズに関わらず，無駄な処理を排除し，効率のよい割付処理を実行することができるメモリ管理システムを提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために本発明は，動的に使用されるメモリ領域に対して割付要求がされた際に当該メモリ領域の空領域を選択して割付処理を行うメモリ管理システムにおいて，上記メモリに記憶し得る情報のサイズを適宜のサイズ範囲毎に分級し，このサイズ範囲を記憶するサイズ範囲記憶手段と，上記適宜のサイズ範囲に属するサイズを持つ空領域の探査順位を設定するための所定のルールを記憶する順位付けルール記憶手段と，上記割付要求がなされた情報のサイズに応じた上記サイズ範囲記憶手段に記憶されたサイズ範囲を選択すると共に，上記順位付けルール記憶手段に記憶された上記所定のルールに基づいて，上記割付要求がされた情報の割付位置を特定する割付位置特定手段と，を具備してなることを特徴とするメモリ管理システムとして構成されている。
これにより，割付要求がされたサイズが属するサイズ範囲をまず選択し，選択された範囲内のみを探査するだけで割付要求サイズの割付位置を特定することができるので，これまで無駄に探査処理を行っていた空領域を探査対象から排除することができ，割付要求がされた情報のサイズに左右されず，常に安定した速度で効率よく割付処理を実行することが可能となる。
この場合，上記所定のルールとしては，上記適宜のサイズ範囲に属するサイズを持つ空領域をそのサイズに応じて順位付けするもの，上記適宜のサイズ範囲に属するサイズを持つ空領域をそのアドレスに応じて順位付けするもの，若しくは上記割付要求頻度の高い割付サイズに応じて順位付けするもの，が考えられる。
【０００７】
また，上記サイズ範囲記憶手段により記憶されたサイズ範囲に属するサイズを持つ上記空領域数を算出可能とし，この算出値を記憶する空領域数記憶手段を更に具備する構成とすれば，例えばメモリ内に散在する空領域数と空領域サイズからメモリの断片化率，或いはメモリの使用率等を算出することができ便利である。もちろん，後述する分級されるサイズ範囲の分割或いは併合もこの機能を前提として可能となる。
この場合，上記サイズ範囲記憶手段により記憶されたサイズ範囲，若しくは上記順位付けルール記憶手段により記憶される所定のルール，若しくは上記空領域数記憶手段により記憶された空領域数，若しくは上記再分級サイズ範囲記憶手段により記憶されたサイズ範囲，若しくは上記併合サイズ範囲記憶手段により記憶されたサイズ範囲のいずれか１つ又は複数をテーブル化するテーブル作成手段を更に具備するものが望ましい。このようなテーブルを参照するだけで，効率のよいメモリ選択が可能となる。
上記テーブルに基づいて，上記算出値が所定の数値を超えることを条件に，上記算出対象のサイズ範囲を分割するサイズ範囲分割手段を更に具備する構成とすれば，探査する範囲を絞り込み，常に一定のサイズ範囲内だけを探査することができるので，空領域を迅速に探査することができ，その結果，高速に割付処理をすることができる。
【０００８】
また，上記サイズ範囲記憶手段により記憶された複数のサイズ範囲に属するサイズを持つ上記空領域数の合計数を算出し，この合計数値が所定の数値未満であることを条件に，上記複数のサイズ範囲を併合するサイズ範囲併合手段を更に具備するものも考えられる。
例えば複数のサイズ範囲に属する空領域数の合計数が極端に少なくなった場合は，特定の複数のサイズ範囲を併合することにより，サイズ範囲数が不必要に増加することによるサイズ範囲を選択するためだけの無駄な探査処理を排除するため，処理全体として空領域を迅速に探査することができ，その結果，高速に割付処理をすることができる。
【０００９】
【発明の実施の形態】
以下添付図面を参照しながら，本発明の実施の形態について説明し，本発明の理解に供する。尚，以下の実施の形態は，本発明を具体化した一例であって，本発明の技術的範囲を限定する性格のものではない。
ここに，図１は本発明の実施の形態に係るメモリ管理システムにおけるメモリの使用状態及び空領域に関する各種情報を示す図，図２は空領域の増加により図１のメモリ使用状態が変化したことを説明する図，図３は空領域の増加によりサイズ範囲が分割されることを説明する図，図４は割付要求時の空領域探査処理を説明するフローチャート，図５はクラスの分割処理及び併合処理を説明するフローチャートである。
【００１０】
まず，図１〜図３を用いて，本発明の一実施形態におけるメモリ管理システムの概要について説明する。尚，この実施形態は，一般的な演算処理，記憶処理を行い得る通常のコンピュータによる処理を前提としており，特殊なハードウェア資源を用いる必要がないので，ハードウェア資源の説明はここでは省略される。図中のテーブル１１，２１及び３１は，上記テーブル作成手段により作成され，メモリ内の空領域に関する各種の情報を管理するテーブルの一例である。具体的には，この管理テーブルは，例えば不揮発性メモリに記憶されるものであり，この管理テーブルには，後記サイズ範囲記憶手段により記憶される全メモリサイズを適宜のサイズ範囲２にクラス分け（分級）するための情報（後記サイズ範囲記憶手段により記憶される），後記空領域数記憶手段により記憶されるクラス分けする各クラス１に属する空領域数３に関する情報（後記空領域数記憶手段により記憶される），及び後記順位付けルール記憶手段により記憶される各クラス１に属する空領域を探査するための順位付けをするルールの一例である探査ポインタ４に関する情報（後記順位付けルール記憶手段により記憶される）等が含まれている。また，メモリ内の空領域数及び空領域サイズからメモリの断片化率，或いはメモリの使用率等を算出し，上記各クラス毎の当該算出情報を含むものであってもよい。この管理テーブルは，後述する当該メモリ管理システムが行なうテーブル更新処理（図４，Ｓ７０参照）によってその内容が更新されて管理される。
本発明に係る実施形態においては，上記探査ポインタ４の設定方法，即ち，空領域の探査の順位付けのルールは，クラス１に属する空領域のサイズに関して探査の順位がサイズの昇順に設定されるものとして説明する。しかし，特にこれに限られることはなく，例えば上記空領域のサイズに関して降順に設定されるものでもよい。クラス分けされたサイズ範囲内においては，空領域数が絞り込まれているため，メモリ領域の断片化が生じにくく，断片化によるメモリ不足が頻繁に発生しないというメリットがある。また，空領域のメモリアドレスに応じて設定されるものでもよい。既に割り付けられる空領域の属する範囲が絞り込まれているので，この範囲内であればアドレスに基づいて空領域を探査することとしても割付け処理が大きく遅延することがなく，空領域のサイズに対してランダムに探査されることになるので，却って割付け処理速度が増す場合があるからである。更に，割付要求頻度の高いサイズに応じた空領域のサイズに基づいて設定されるものでもよい。この場合は最近のメモリ使用状況に対応する探査が可能となる。このように，管理テーブル１１におけるサイズ範囲２は，メモリ１２に記憶し得る情報のサイズを適宜のサイズ範囲毎に分級し，このサイズ範囲を記憶するサイズ範囲記憶手段の一例であり，上記探査ポインタ４は，上記適宜のサイズ範囲に属するサイズを持つ空領域の探査順位を設定するためのルールを記憶する順位付けルール記憶手段の一例である。
図中のメモリ１２，２２及び３２では，メモリの使用状態が模式的に表されている。尚，括弧内の数値は空領域のサイズを表す。
【００１１】
図１に示されるメモリ１２を対象とする割付処理について，管理テーブル１１を用いて説明する。現在のメモリ使用状態では，クラスＣ１（０＜Ｓ≦１０００：Ｓはメモリサイズ）に「１００」と「８００」の２個の空領域が属しており，クラスＣ２（１０００＜Ｓ≦５０００）に「１２００」「１４００」「２０００」「３０００」「５０００」の５個の空領域が属しているものとする。このメモリ使用状態において，例えばクラスＣ１のサイズ範囲に属するサイズの割付要求がされた場合，ＣＰＵによるその割付要求サイズに該当する空領域の探査は，探査ポインタＲ１（ｘ）に従って，
Ｒ１（１）：［１００］→Ｒ１（２）：［８００］
の順序（実線矢印順）で行なわれる。即ち，探査ポインタＲｎ（ｘ）は，クラスＣｎというサイズ範囲に属するサイズを持つ空領域を探査するときの順位を記憶するもので，従って，探査ポインタＲ１（ｘ）は，クラスＣ１というサイズ範囲に属するサイズを持つ空領域を探査するときの順位を記憶するものである。この場合，サイズの昇順に探査するというルールに基づく順位が記憶されるのである。
また，同様に，例えばクラスＣ２のサイズ範囲に属するサイズの割付要求がされた場合，その割付要求サイズに該当する空領域の探査は，探査ポインタＲ２（ｘ）に従って，
Ｒ２（１）：［１２００］→Ｒ２（２）：［１４００］→Ｒ２（３）：［２０００］→Ｒ２（４）：［３０００］→Ｒ２（５）：［５０００］
の順序（点線矢印順）で行なわれる。
このように，割付要求がなされた情報のサイズに応じた上記サイズ範囲記憶手段に記憶されたサイズ範囲を選択すると共に，上記順位付けルール記憶手段に記憶された上記所定のルールに基づいて，上記割付要求がされた情報の割付位置を特定する，というＣＰＵによる機能を達成する手段が割付位置特定手段である。
【００１２】
次に，探査ポインタ４の更新処理について説明する。例えば，図１のようなメモリ１２の使用状態において，例えば，使用中であった「２５００」の大きさのメモリ領域が，データの削除等により空領域となった場合，即ち，「２５００」のサイズの空領域が１個増加した場合について，図２を用いて説明する。
図示しないＣＰＵはメモリ２２を常時監視しているが，このとき増加した空領域のサイズは「２５００」であるので，この空領域は管理テーブル２１を参照すると，クラスＣ２に属することになる。従って，ＣＰＵは，クラスＣ２の空領域数を１個増加させて，合計６個とすると共に，空領域「２５００」を含むクラスＣ２の探査ポインタＲ２（ｘ）に記憶された探査順位を図１の点線で示したものから，図２の点線で示したものに更新する。即ち，「空（２０００）」の次に「空（３０００）」を探査するという順位を，点線矢印Ｙ１，Ｙ２のように
「空（２０００）」→「空（２５００）」→「空（３０００）」
のように更新する。これにより，クラスＣ２のサイズ範囲に属するサイズの割付要求がされた場合は，その割付要求サイズに該当する空領域の探査は，探査ポインタＲ２（ｘ）に従って，
Ｒ２（１）：［１２００］→Ｒ２（２）：［１４００］→Ｒ２（３）：［２０００］→Ｒ２（４）：［２５００］→Ｒ２（５）：［３０００］→Ｒ２（６）：［５０００］
の順序（点線矢印順）で行なわれることになる。
【００１３】
次に，サイズ範囲分割手段及びサイズ範囲併合手段について説明する。
上記のようにメモリの割付及び削除を繰り返すことにより，メモリ内の空領域が流動的に増加或いは減少する。今，メモリ内の空領域が著しく増加し，例えば特定のクラスＣｎのサイズ範囲に属する空領域数が１０００個に増加した場合を考える。このとき，クラスＣｎのサイズ範囲に属するサイズの割付要求がされた場合，仮に要求サイズに該当する空領域が１０００番目に位置付けされているとすると，１０００個の空領域情報が読み込まれ，後述する割付可能サイズかどうかの判断（図４，Ｓ４０参照）が１０００回行なわれることになり，空領域の探査に膨大な時間がかかる。
従って，この場合，図３に示す管理テーブル３１において，１つのクラスで管理し得る最大空領域数を定め，クラス１のあるサイズ範囲２に属する空領域数３が，この最大空領域数を越えた場合には，そのクラス内において，サイズ範囲２を複数に分割し（本実施の形態では２分割とする），その分割されたサイズ範囲に応じて新たにクラス分けをすることによって，上記管理テーブルにおける空領域情報を管理することにより，割付サイズの探査対象の空領域数を減少させ，割付け処理を迅速に実行する。
具体的には，例えば上記のクラスが管理し得る最大空領域数を１５個と定めた場合，空領域数がこの数値超えて１６になると同時に，この空領域が属するクラスは２分割されることになる。従って，クラスＣｎに１０００の空領域が存在する場合においては，クラスＣｎは最多で１２５（１０００／８）のクラスに分割さる。もし分割しないすると，最多で１０００回の割付可能性の判断を行なわなければならないが，このように分割すると，分割された全てのクラスが８個の空領域を管理することになるので，上記管理テーブルの空領域情報を読み込み，割付可能サイズかどうかの判断は，割り付けようとする情報のサイズがどのサイズ範囲に属するかの判断を含めても，最多で１２５＋８回の合計１３３回行なわれるだけである。また，上記判断回数が最も多くなるのは，クラスＣｎが１２４のクラスに分割され，探査される最後のクラスが１５個の空領域を管理する場合であるが，この場合であっても，１２４＋１５回の合計１３９回の判断が行なわれるだけである。このように，上記１つのクラスが管理し得る最大空領域数を定めることにより，探査する範囲を絞り込み，これまで無駄に探査処理を行っていたメモリ領域を探査対象から排除し，常に一定のサイズ範囲内だけを探査することができるので，空領域を迅速に探査することができ，その結果，高速に割付処理をすることが可能となる。
この新たなクラス分けの処理については，後述する図５の分割及び併合処理において詳しく説明される。
上述したように，１つのサイズ範囲に属する空領域数が所定値を越えると，そのサイズ範囲を分割する処理をＣＰＵに実行させる手段が，サイズ範囲分割手段である。
【００１４】
また逆に，メモリの使用によりメモリ内の空領域が減少し，例えば１つのクラスのサイズ範囲に属する空領域数の合計数が極端に少なくなる場合も想定される。この場合は，例えば特定の隣接するクラスＣｍ，Ｃｍ＋１のサイズ範囲に属する空領域数の合計数が例えば１０未満であることを条件に，上記併合サイズ範囲記憶手段により上記クラスＣｍとＣｍ＋１を併合することにより，クラス数が不必要に増加することを防止し，無駄なクラス選択処理を排除することができるため，その結果，空領域の探査が迅速に実行され得ることになる。かかる処理は後述する図５の分割及び併合処理において実行される。
このように，複数のサイズ範囲に属する空領域数の合計が，所定数値未満の場合にこれらのサイズ範囲を併合させる機能をＣＰＵに実行させる手段が，サイズ範囲併合手段である。
【００１５】
図３は，クラスＣ２で管理する最大空領域数を１５とした場合であって，テーブル上記図２のメモリ２２の使用状態が，クラスＣ２に１６の空領域が属するようなメモリ使用状態になった場合に，クラスＣ２をクラスＣ２とクラスＣ３（それぞれ空領域数８）とに分割したときの管理テーブル，メモリ使用状態の模式図，及び探査ポインタ４による分割後のメモリ空領域の探査順序が示されている。管理テーブル３１（ａ）はクラスＣ２に１６の空領域が属する場合の管理テーブル，管理テーブル３１（ｂ）は上記クラスＣ２をクラスＣ２とクラスＣ３とに分割したときの管理テーブルである。
図３に示されるメモリ３２の使用状態において，クラスＣ２のサイズ範囲に属するサイズの割付要求がされた場合，その割付要求サイズに該当する空領域の探査は，探査ポインタＲ２（ｘ）に従って，
Ｒ２（１）：［１２００］→………→Ｒ２（７）：［１４００］→Ｒ２（８）：［２０００］
の順序（点線矢印順）で行なわれ，クラスＣ３のサイズ範囲に属するサイズの割付要求がされた場合，その割付要求サイズに該当する空領域の探査は，探査ポインタＣ（ｘ）に従って，
Ｒ３（１）：［２５００］→Ｒ３（２）：［３０００］→Ｒ３（３）：［４０００］→………→Ｒ３（８）：［５０００］
の順序（一点鎖線矢印順）で行なわれる。
【００１６】
次に，図４のフローチャートを用いて，割付要求がされたサイズが格納し得る空領域を探査する処理手順について説明する。図中のＳ１０，Ｓ２０，…は処理手順（ステップ）番号を示す。処理はステップＳ１０より開始される。
【００１７】
メモリ領域に対して割付要求がされると，まず，クラスＣ１から昇順に，割付要求サイズ（ｐ）を格納し得る空領域の属するクラス（Ｃｋ）が探査される（Ｓ１０，Ｓ２０）。つまり，ステップＳ２０では，割付要求サイズ（ｐ）がクラスで管理し得る最大空領域サイズ（ＣｋＳｍａｘ）以上であるかどうかが判断される（Ｓ２０）。割付要求サイズ（ｐ）が上記最大空領域サイズ（ＣｋＳｍａｘ）よりも大きいと判断された場合は，全てのクラスについて探査するため，次のクラスを探査対象に指定した後に（Ｓ２１），ステップＳ２０〜Ｓ２１のループ処理が実行される。
ステップＳ２０において，割付要求サイズ（ｐ）がクラス（Ｃｋ）で管理し得る最大空領域サイズ（ＣｋＳｍａｘ）以下であると判断される，つまり割付要求サイズ（ｐ）を格納し得る空領域が探査対象のクラス（Ｃｋ）に属していると判断されると，ステップＳ３０に進む。ステップＳ２１のようにサイズ範囲の小さいものから昇順にサーチが行なわれるので，必要以上に大きいサイズ範囲が選択されることはない。
ステップＳ３０では，上記探査対象のクラス（Ｃｋ）内において，クラス内の空領域サイズの昇順に探査し得るよう関連付けて探査ポインタ（Ｒｋ（ｘ））が設定される。このように探査ポインタが所謂チェーン化して設定されることで，プログラムソフト等によって探査ポインタが付された空領域を容易にチェーン探査することが可能になる。
上記探査ポインタが設定された後は，クラスＣｋに属する空領域の内，最もサイズの小さい空領域に付された探査ポインタ（Ｒｋ（１））の空領域（Ｒｋ（１）Ｓ）から探査が開始され（Ｓ４０），割付要求サイズ（ｐ）を格納し得る空領域（Ｒｋ（ｕ）Ｓ）が見つかるまで順次昇順に探査される（Ｓ５０，Ｓ５１）。
ステップＳ５０において，割付要求サイズ（ｐ）を格納し得る空領域（Ｒｋ（ｕ）Ｓ）が見つかると，この空領域には新たなデータが割り付けられ，つまりメモリ使用中の状態になる。従って，もはや空領域ではないので，ステップＳ６０において，この空領域に付されていた探査ポインタ（Ｒｋ（ｕ））の設定は解除される。
ステップＳ７０では，使用中のデータが削除等されることによって増加した空領域や，逆に，新たなデータが割付けられることによって減少した空領域，及び新たなデータが割り付けられたことにより生じる余分空領域，に基づいて，サイズ範囲２，空領域数３の空領域情報が更新される。また，空領域サイズの昇順に探査し得るよう関連付けられた探査ポインタ４の設定も，上記更新されたサイズ範囲や空領域数に応じて更新される。このテーブル更新処理により，新たに要求されるメモリ割付が正常に行なわれることになる。
ステップＳ７０の処理がなされると，ステップＳ８０に進む。
【００１８】
図５のフローチャートを用いて，上記ステップＳ８０で行われるクラスの分割処理及び併合処理について説明する。処理はステップＳ２１０より開始される。
分割処理及び併合処理の対象となるかどうかの判断は，まず，クラスＣ１から開始される（Ｓ２１０）。
ステップＳ２２０では，クラスＣｋに属する最小空領域（ＣｋＳｍｉｎ）が０であるかどうかが判断される。この判断は後述するステップＳ２２０〜Ｓ２７０の無限ループ処理の解除条件である。上記最小空領域（ＣｋＳｍｉｎ）が０であると判断されれば，空領域が無ければ分割も併合も必要がないので，当該無限ループは解除され，分割及び併合処理が終了し，上記最小空領域（ＣｋＳｍｉｎ）が０でないと判断されれば，ステップＳ２２０〜Ｓ２７０の無限ループ処理を行う。
ステップＳ２３０では，クラスＣｋ内の空領域数（ＣｋＴ）が所定の値Ｔ１（本例では，Ｔ１＝１６）以上であるかどうかが判断される。Ｔ１及び後述するＴ２は共に１以上の予め定められるの整数であり，Ｔ１≧Ｔ２の関係を有する。ステップＳ２３０においてクラスＣｋ内の空領域数（ＣｋＴ）がＴ１以上であると判断がされれば，クラスＣｋはＣｋとＣｋ＋１に分割される（Ｓ２４０）。ここでは２分割することとしたが，これに限られず，２以上の複数に分割する形態としても良い。その後ステップＳ２５０に進む。クラスＣｋ内の空領域数（ＣｋＴ）がＴ１未満であると判断がされれば，クラスＣｋは分割されずにステップＳ２５０に進む。
ステップＳ２５０では，クラスＣｋ内の空領域数（ＣｋＴ）とその隣のクラスＣｋ＋１の空領域数（Ｃｋ＋１Ｔ）の合計数が所定の値Ｔ２（本例では，Ｔ２＝１０）以上であるかどうかが判断される。クラスＣｋ内の空領域数（ＣｋＴ）及びクラスＣｋ＋１の空領域数（Ｃｋ＋１Ｔ）の合計数がＴ２未満であると判断がされれば，クラスＣｋ＋１はＣｋに併合される。ここでは２個のクラスを併合することとしたが，これに限られず，２以上の複数のクラスを１のクラスに併合する形態としても良い。その後ステップＳ２７０に進む。クラスＣｋ内の空領域数（ＣｋＴ）及びクラスＣｋ＋１の空領域数（Ｃｋ＋１Ｔ）の合計数がＴ２以上であると判断がされれば，クラスは併合されずにステップＳ２７０に進み，次のクラスについて同様に上記ステップＳ２２０〜Ｓ２７０の無限ループ処理が行なわれる。
【００１９】
【発明の効果】
以上説明したように，本発明によれば，割付要求がされたサイズが属するサイズ範囲を選択し，これまで無駄に探査処理を行っていた空領域を探査対象から排除し，選択された範囲内だけを探査するので，割付要求がされた情報のサイズに関わらずに割付位置を特定することができるので，無駄な探査を排し，常に安定した速度で効率よく割付処理を実行することが可能となる。
また，分級されたサイズ範囲に属する空領域数を所定の数値に設定することにより，分級されたサイズ範囲を更に分級し，或いは複数のサイズ範囲を１の範囲に併合することにより，常に一定のサイズ範囲内だけを探査すると共に，サイズ範囲数が不必要に増加することによる無駄な探査処理を排除するため，割付要求サイズを格納し得る空領域を迅速に探査することができ，その結果，高速に割付処理をすることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るメモリ管理システムにおけるメモリの使用状態及び空領域に関する各種情報を示す図。
【図２】空領域の増加により図１のメモリ使用状態が変化したことを説明する図。
【図３】空領域の増加によりサイズ範囲が分割されることを説明する図。
【図４】本発明の実施の形態に係るメモリ管理システムにおいて実行される割付要求時の空領域探査処理を説明するフローチャート。
【図５】本発明の実施の形態に係るメモリ管理システムにおいて実行される分割処理及び併合処理を説明するフローチャート。
【符号の説明】
１…分級されたサイズ範囲のクラス名称表示欄
２…サイズ範囲表示欄
３…空領域数表示欄
４…探査ポインタ表示欄
１１，２１，３１…管理テーブル
１２，２２，３２…メモリ
【図１】
2004192208.tif 000003
【図２】
2004192208.tif 000004
【図３】
2004192208.tif 000005
【図４】
2004192208.tif 000006
【図５】
2004192208.tif 000007