JP2010204762A - メモリ管理システム、電子機器及びメモリ管理プログラム - Google Patents

メモリ管理システム、電子機器及びメモリ管理プログラム Download PDF

Info

Publication number
JP2010204762A
JP2010204762A JP2009047280A JP2009047280A JP2010204762A JP 2010204762 A JP2010204762 A JP 2010204762A JP 2009047280 A JP2009047280 A JP 2009047280A JP 2009047280 A JP2009047280 A JP 2009047280A JP 2010204762 A JP2010204762 A JP 2010204762A
Authority
JP
Japan
Prior art keywords
memory
size
unused
physical
allocation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009047280A
Other languages
English (en)
Other versions
JP5377001B2 (ja
Inventor
Toshiaki Ueno
敏昭 上野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyocera Document Solutions Inc
Original Assignee
Kyocera Mita Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyocera Mita Corp filed Critical Kyocera Mita Corp
Priority to JP2009047280A priority Critical patent/JP5377001B2/ja
Priority to US12/607,673 priority patent/US8291192B2/en
Publication of JP2010204762A publication Critical patent/JP2010204762A/ja
Priority to US13/606,784 priority patent/US8539198B2/en
Application granted granted Critical
Publication of JP5377001B2 publication Critical patent/JP5377001B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 メモリ管理システムにおいて、メモリのフラグメンテーションを効率的に回避することができない問題点と、高速に連続的なメモリ空間の割当、解放動作を行い、割当てられた連続的なメモリ空間のサイズの増減を行うことができない問題点を解決し、メモリの割当要求時に要求サイズに適合した未使用領域を高速で割当てること。
【解決手段】 メモリ管理システムにおいて、物理アドレス空間を小サイズ毎に区切ったマイクロパーテーション単位で扱い、アプリケーション毎に区切った連続的な論理アドレス空間を必要数の前記マイクロパーテーションに割当てる。物理パーテーション中の未使用領域は、フラグメンテーションのため細分化されてゆくが、各未使用領域をサイズ毎にグループ化して、メモリの割当要求時には要求メモリサイズに該当するグループから未使用領域を選択するために、未使用領域を検索するための時間が短縮されて処理速度が向上する。
【選択図】図5

Description

メモリ管理システム、電子機器及びメモリ管理プログラムにおいて、メモリの割当・解放動作に関して、フラグメンテーションの発生を抑制し効率的なメモリ管理を行う技術に関する。
半導体メモリや磁気回転ディスクなどの記憶装置を備える電子機器では、メモリの管理を効率的に行う技術的要求がある。メモリは使用時に必要領域を確保(割当)し、その使用が終わった後は解放して再使用に備える。このような、メモリの割当・解放動作を繰り返すと、フラグメンテーションと呼ばれる使用可能なメモリ空間がアドレス空間上に細かく分散して存在する状態になってしまい、メモリの使用率としては少ない状態であっても大きなアドレス空間が取れない状況が発生する。
従来技術として、画像形成装置などのデータ処理装置において、フラグメンテーションの発生を少なくし、メモリの空き待ちやメモリ内のデータ移動等によるスループットの低下を起こさないメモリ管理方法を実現する以下の方法がある。ページ検出処理部がページ開始を検出すると、メモリ資源取得処理部がメモリを確保し、パーティション(パーテーション)分割が行われ、入力データ用および加工データ用のパーティション(パーテーション)にメモリ領域がそれぞれ確保される。データ加工処理部によって加工データが生成され加工データ用メモリ領域に格納されると、メモリ資源解放処理部によって、不要となるメモリ領域の解放が行われる。解放されたメモリ領域は、加工データ用パーティション(パーテーション)の空き領域の一部となる(特許文献1参照)。
また、高い書き込み速度を実現可能なホスト機器を提供するために、管理システムがメモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、単位領域の自然数倍の大きさからなる管理単位を割り当て位置の決定単位として用い、書き込み関数呼び出しを受けて管理単位ごとの実現可能な書き込み速度順に従って管理単位を前記書き込み領域として割り当てて、コントローラが、管理システムが割り当てた単位領域に書き込みデータを書き込む旨の指示をメモリカードに出す方法があった(特許文献2参照)。
しかし、特許文献1の方法では画像形成装置のページ単位毎の処理を前提としているため、複数ページに跨る処理には対応できない。また、パーテーションの区切りは2つという制限がある。さらに、パーテーションのサイズは、最初の割当時の容量で不足しても、その連続的メモリ空間の増量はできず、ひとつのパーテーションのサイズを減少する方向にしか容量変化に対応できない。
また、特許文献2の方法は、書き込みの際のメモリ割当に関するものであり、メモリが連続的に割当・解放動作を伴う際のフラグメンテーションの抑制には対応できない。
特開2002−351739号公報 特開2006−285669号公報
「プログラミング言語C」第2版(1989年)
解決しようとする問題点は、メモリ管理システム、電子機器及びメモリ管理プログラムにおいて、メモリのフラグメンテーションを効率的に回避することができなかった点と、高速に連続的なメモリ空間の割当・解放動作を行い、割当てられた連続的なメモリ空間のサイズの増減を行うことができなかった点である。さらに、物理パーテーション内の未使用領域の割当を行う際に、割当サイズに適した未使用メモリ領域を高速で検索することができなかった点である。
本発明のメモリ管理システムは、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理部と、物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理部と、前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換部とを有し、前記物理パーテーション管理部は、前記物理パーテーションの未使用領域をそのサイズ毎に分類しておき、メモリ割当要求の際には当該割当要求のサイズを含む前記分類された未使用領域から検索して選択することを特徴とする。
また、本発明のメモリ管理システムの前記変換部は、前記論理アドレス空間と前記物理アドレス空間とを関連付ける、前記変換テーブルを生成又は消去することを特徴としてもよい。
また、本発明のメモリ管理システムの前記論理パーテーション管理部は、前記仮想メモリの割当をアプリケーション毎に連続した論理アドレス空間に確保することを特徴としてもよい。
本発明の電子機器は、前記メモリ管理システムを有することを特徴とする。
本発明のメモリ管理プログラムは、コンピュータに、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理機能と、物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理機能と、前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換機能とを実現させ、前記物理パーテーション管理機能は、前記物理パーテーションの未使用領域をそのサイズ毎に分類しておき、メモリ割当要求の際には当該割当要求のサイズを含む前記分類された未使用領域から検索して選択することを特徴とする。
本発明のメモリ管理システムは、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理部と、物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理部と、前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換部とを有し、前記物理パーテーション管理部は、前記物理パーテーションの未使用領域をそのサイズ毎に分類しておき、メモリ割当要求の際には当該割当要求のサイズを含む前記分類された未使用領域から検索して選択することを特徴とする。
このため、論理アドレス空間におけるフラグメンテーションの効率を効率的に回避する。また、高速に連続的な仮想メモリ空間の割当、解放動作が可能となり、割当てられた連続的な仮想メモリ空間のサイズの増減を行うことが可能となる。そして、多数ある未使用領域の中から、その割当要求のサイズに合う未使用領域を検索する際に、あらかじめサイズによって分類化されている複数のグループ中の最適のグループを選択してその中で検索することが可能となるので、未使用領域の選択にかかる時間が大きく短縮される。
また、本発明のメモリ管理システムの前記変換部は、前記論理アドレス空間と前記物理アドレス空間とを関連付ける、前記変換テーブルを生成又は消去することを特徴としてもよい。
このため、アプリケーションが使用する仮想メモリの論理アドレス空間から、実メモリの物理アドレス空間へのアドレス変換が効率よく行うことができる。
また、本発明のメモリ管理システムの前記論理パーテーション管理部は、前記仮想メモリの割当をアプリケーション毎に連続した論理アドレス空間に確保することを特徴としてもよい。
このため、アプリケーション毎に区切られたパーテーションを一度に解放することにより、仮想メモリの解放が高速に行うことが可能となり、かつ、連続した大きな論理アドレス空間を得ることが可能となる。
本発明の電子機器は、前記メモリ管理システムを有することを特徴とする。
このため、論理アドレス空間におけるフラグメンテーションの発生を効率的に回避する。また、高速に連続的な仮想メモリ空間の割当、解放動作が可能となり、割当てられた連続的な仮想メモリ空間のサイズの増減を行うことが可能となる。また、アプリケーション毎に区切られたパーテーションを一度に解放することにより、仮想メモリの解放を高速に行うことが可能となり、かつ、連続した大きな論理アドレス空間を得ることが可能となる。また、DMA(Direct Memory Access)等のハードウェア依存アクセスがあっても、当該箇所が他のアプリケーション等に割当てられることがなく動作する。
本発明のメモリ管理プログラムは、コンピュータに、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理機能と、物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理機能と、前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換機能とを実現させ、前記物理パーテーション管理機能は、前記物理パーテーションの未使用領域をそのサイズ毎に分類しておき、メモリ割当要求の際には当該割当要求のサイズを含む前記分類された未使用領域から検索して選択することを特徴とする。
このため、論理アドレス空間におけるフラグメンテーションの効率を効率的に回避する。また、高速に連続的な仮想メモリ空間の割当、解放動作が可能となり、割当てられた連続的な仮想メモリ空間のサイズの増減を行うことが可能となる。そして、多数ある未使用領域の中から、その割当要求のサイズに合う未使用領域を検索する際に、あらかじめサイズによって分類化されている複数のグループ中の最適のグループを選択してその中で検索することが可能となるので、未使用領域の選択にかかる時間が大きく短縮される。
従来のメモリプール方式(1)のアプリケーションとメモリマップの関係図である。 従来のメモリプール方式(2)のメモリマップとメモリプールの関係図である。 従来のメモリマッププール方式(3)のメモリマップと物理パーテーションの関係図である。 従来のメモリプール方式(2)でのメモリマップとパーテーションの関係図である。 従来のメモリプール方式(3)でのメモリマップとパーテーションの関係図である。 アプリケーションを一括解放するメモリ管理方式のメモリマップ図である。 フラグメンテーションの上限の閾値を設けるメモリ管理方式のメモリマップ図である。 MCBによる未使用領域のリンク状態を示すマップメモリである。 本発明によるパーテーション内でサイズ毎に未使用領域をグループ化した様子を示すマップメモリである。 従来例による記憶割当の説明図である。 未使用メモリブロックのリスト構造が全てのパーテーションにリンクされている場合を示す図である。 未使用メモリブロックのリスト構造を物理パーテーション単位に区切る場合の図である。 未使用メモリブロックのリスト構造が全ての物理パーテーションにリンクされている場合の図である。 未使用メモリブロックのリスト構造を物理パーテーション単位に区切る場合の図である。 未使用メモリブロックのリスト構造を物理パーテーションにリンクされている場合の変換テーブルの例である。 未使用メモリブロックのリスト構造を物理パーテーション単位に区切る場合を示す図である。 変換テーブルとMCBの関係を示す図である。 BSD mallocによる割当の例のパーテーション内のメモリマップである。 割当サイズに応じて、未使用メモリブロックのリスト構造を別にする例のパーテーション内のメモリマップである。 割当サイズに応じて、未使用メモリブロックのリスト構造を別にする例である。 割当サイズに応じて、未使用メモリブロックのリスト構造を別にする場合の変換テーブルの例である。 割当サイズに応じて未使用メモリブロックのリスト構造を別にする場合の変換テーブルのリンク例である。 変換テーブルとMCBとの関係を示す図である。 ひとつの未使用メモリブロックのリスト構造によるメモリ解放の説明図である。 複数の未使用メモリブロックのリスト構造によるメモリ解放の説明図である。 割当後フリー領域が存在する場合のメモリ割当前後のメモリマップである。 割当後フリー領域が存在する場合のメモリ割当のフローチャートである。 割当後フリー領域が存在しない場合のメモリ割当前後のメモリマップである。 割当後フリー領域が存在しない場合のメモリ割当処理のフローチャートである。 メモリ解放前後のメモリマップである(左隣接メモリブロックが未使用、右隣接メモリブロックが使用中の場合)。 メモリ解放処理のフローチャートである(左隣接メモリブロックが未使用、右隣接メモリブロックが使用中の場合)。 メモリ解放前後のメモリマップである(左隣接メモリブロックが使用中、右隣接メモリブロックが未使用の場合)。 メモリ解放処理のフローチャートである(左隣接メモリブロックが使用中、右隣接メモリブロックが未使用の場合)。 メモリ解放前後のメモリマップである(左右隣接メモリブロックが未使用の場合)。 メモリ解放処理のフローチャートである(左右隣接メモリブロックが未使用の場合)。 メモリ解放前後のメモリマップである(左右隣接メモリブロックが使用中の場合)。 メモリ解放処理のフローチャートである(左右隣接メモリブロックが使用中の場合)。 ソフトウェアの構成図である。
メモリ管理システム、電子機器及びメモリ管理プログラムにおいて、メモリのフラグメンテーションを効率的に回避することができない問題点と、高速に連続的な仮想メモリ空間の割当、解放動作を行い、割当てられた連続的なメモリ空間のサイズの増減を行うことができない問題点を物理アドレス空間を小サイズ毎に区切ったマイクロパーテーション単位で扱い、アプリケーション等毎に区切った連続的な論理アドレス空間を必要数の前記マイクロパーテーションに割当てる。マイクロパーテーションの集合で形成する論理パーテーションに対応する物理パーテーション中の未使用領域は、フラグメンテーションのため細分化されてゆくが、各未使用領域をサイズ毎にグループ化して、メモリの割当要求時には要求メモリサイズに該当するグループから未使用領域を選択する方法により、未使用領域を検索するための時間が短縮されて処理速度が向上する。
[従来のメモリプール方式との比較]
図1に示すように従来のメモリプール方式では、メモリ空間中からアプリケーションが必要時にメモリ領域を取得(割当)して、メモリの使用が終わると同領域を解放する。この動作により、フラグメンテーションと呼ばれるメモリが細分化された状態となり連続した大容量のメモリ領域を取ることが困難となる問題がある。
図2に従来方式での改良されたメモリプール方式では、アプリケーションの各々が起動時にサイズを定めたメモリ領域を確保する。メモリマネージャーはアプリケーションからのメモリ割当要求時には、それぞれのアプリケーションに予め確保されたメモリ領域内からメモリを取得する。本方法では、図1で説明した方法に比較して、アプリケーションの終了時には、あらかじめ確保されていたメモリ領域が一括して解放されるため、大容量の連続したメモリ領域を確保できるメリットがある。
しかし、何れの方法でも、画像形成装置などアプリケーションによっては大きな画像データを扱う装置では個々のアプリケーションが使用する最大メモリサイズが大きく異なる。そのため、図2で示した各アプリケーションのメモリプールの領域を固定する方法では、メモリの使用が非効率となる問題がある。
[マイクロパーテーションによる物理アドレス空間と論理アドレス空間の変換]
そこで、物理メモリ空間を小サイズの領域(以降マイクロパーテーションと呼ぶ)に切り分けて、論理アドレス空間をこのマイクロパーテーションの実メモリの物理アドレス空間に変換する方法によって、前記した不具合を解消する。
この方法によれば、実メモリの物理アドレス空間が実際に連続していなくとも、連続した論理アドレス空間に割当てることにより、連続した大容量のメモリ空間を確保することができる。
例えば、図2で示したアプリケーション毎にメモリプールを行う方式において、以下の表1に示すパーテーションサイズでメモリ領域を確保しておいて、後にデータのサイズに示すメモリ領域が必要となった時に、データのサイズがパーテーションサイズを超えている場合にはメモリ領域を確保できない。図4にこの場合のメモリマップを示す。
Figure 2010204762
しかし、前記したマイクロパーテーションを用いて物理アドレス空間と論理アドレス空間の変換を行う場合には、表2に示すように必要に応じてパーテーションサイズを変更可能(マイクロパーテーションを論理アドレス空間に割当てるないしは解放することにより可能)であるので上記したようなメモリの不足の問題は起こらない。図5にこの場合のメモリマップを示す。
Figure 2010204762
[パーテーション内の未使用領域]
このようなマイクロパーテーションを用いた、論理アドレス空間と物理アドレス空間との間での変換を行う方法において、アプリケーションによって使用されるメモリ空間と未使用のメモリ空間により分けられるが、未使用のメモリ領域は、図8に示すようなリンクリスト構造により結合されている。
これは、アプリケーションからのメモリ領域の割当要求時にその割当要求に適したサイズ(割当要求のサイズより大きくかつなるべく小さい容量のものを選択することにより、メモリの利用効率を高めてフラグメンテーションの発生を抑制可能である)のものを探し出すために、まず、ポインタが示すメモリ領域のサイズを要求サイズと比較して、適合すれば当該領域を確保し、適合しなければ当該領域のポインタが指し示す次の領域に飛ぶというメモリ確保のための領域の検索動作を取るためである。この場合にこのリンクリスト構造は、未使用のメモリ領域のサイズには関係なく、アドレス空間の順番に機械的に並んでいるだけであり、最適なサイズの未使用領域を探し出す(検索する)のに非常に時間がかかる問題がある。
そこで、本発明実施例のメモリ管理方式では、未使用領域(未使用ブロック)のリンクリスト構造を物理パーテーション単位で閉じてさらに、未使用領域のサイズの幅(レンジ)をもたせて、そのサイズのレンジ内でのリンクリスト構造とすることとした。
図9に示す例では、メモリの未使用領域を
(1)メモリレンジ1をメモリサイズが0x0001から0x00FF
(2)メモリレンジ2をメモリサイズが0x0100から0x0FFF
(3)メモリレンジ3をメモリサイズが0x1000以上
とする3つのレンジに分けて、それぞれのレンジ毎に連結したリンクリスト構造にしてある。
[構成]
図38に本発明実施例のメモリ管理システムの機能ブロック図を示す。
メモリ管理システムは、メモリマネージメント初期化部200、変換テーブル管理部201、アドレス変換部221、メモリ統計情報管理部241、MCB管理部261の各機能部を有する。以下に各機能部について説明する。
メモリマネージメント初期化部200は、メモリマネージメントの初期化に必要な動作を行う。初期化時にメモリマネージメントを行うメモリ領域や、物理アドレス空間、論理アドレス空間、固定アドレス空間の設定等を行う。
変換テーブル管理部201(論理パーテーション管理部、物理パーテーション管理部)は、物理アドレス空間において実メモリを小サイズに切り分けたマイクロパーテーションに対するメモリの割当と解放の管理を行う。また、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放の管理を行う。変換テーブル管理部201は、さらに個々の機能部に分かれており、パーテーション管理部211、パーテーションサイズの管理部213、アドレス(物理、論理)管理部215、ID管理部217、フラグ(待機、停止)管理部219とを有する。
パーテーション管理部211は、前記した物理アドレス空間をマイクロパーテーションに切り分けてその割当解放の管理を行う。
パーテーションサイズの管理部213は、パーテーションのサイズの管理を行う。
アドレス(物理、論理)管理部215は、論理アドレスでのメモリの割当及び解放と、それに呼応する物理アドレスの管理を行う。
ID管理部217は、アプリケーション毎に持つIDを管理し、変換テーブル中に各メモリブロックがどのアプリケーションから使われているかのIDを記載して管理する。
フラグ(待機、停止)管理部219は、各メモリブロックの状態(待機、停止)を管理する。
次にアドレス変換部221(変換部)は、前記論理アドレス空間と物理アドレス空間との間のアドレス変換を行う。物理アドレスから論理アドレスへの変換部231と論理アドレスから物理アドレスへの変換部233との二つの機能部を有する。
メモリ統計情報管理部241(物理パーテーション管理部)は、物理パーテーション管理部の一部の機能を担う。物理パーテーション内の未使用領域をそのサイズによりグループに分けてリンクリスト構造を形成し、メモリの割当要求の際には、最適なサイズのグループの中のリンクリストから未使用領域を検索する。
メモリ使用ブロック数の管理部231は、メモリ使用ブロック数を管理する。
メモリ使用バイト数の管理部253は、メモリ使用バイト数を管理する。
パーテーションの閾値チェック部255は、パーテーションのフラグメンテーション率をチェックし、そのフラグメンテーション率が上限の閾値を超えた場合には、当該パーテーションからのメモリの再割当を禁止する。一旦再割当を禁止されたパーテーションのフラグメンテーション率が下限の閾値を下回った場合には、メモリの再割当の禁止を解除する。これらの上限閾値と下限閾値は例えば、典型的には上限閾値を70%、下限閾値を30%としてもよい。また、上限閾値は最大値に近い例えば99%といった値であってもよい。
ここで、フラグメンテーション率は次式から算出される。
フラグメンテーション率(%)={[フラグメント数]/([マイクロパーテーション数]−1)}×100
閾値種別管理257は、メモリの未使用領域のサイズに従って、物理パーテーション内でサイズ毎にグループ分けを行う。
MCB管理部261は、メモリコントロールブロック(MCB)の管理を行う。MCBは、実メモリのメモリブロックの先頭部にあるポインターやサイズ情報等を納めた部分であり、その管理を行う。MCBの動作の詳細については後述する。
[詳細な動作の説明]
本方式のさらに詳細な構造について、従来例(非特許文献1参照)との比較を示して以下に説明する。
図9は、メモリマップの未使用領域と使用領域でのさらに詳細な構造を示した図である。各メモリ領域には、先頭に次の同種のメモリ領域を示すポインタ(ptr)と領域のサイズ(size)を示すMCB(メモリコントロールブロック)と呼ばれるヘッダ部分を持ち、その後に使用可能領域を有する。
この場合に、使用中のメモリのポインタは使われること無く、未使用の領域についてのポインタが次の未使用領域を示す。MCBと使用可能領域を合わせてメモリブロックと呼ぶ。以下の表3にMCBの内容を示す。
Figure 2010204762
図9に示した非特許文献1によるアルゴリズムでは、未使用メモリブロックのリスト構造が全てのパーテーションにリンクされている(繋がっている)ので、割当処理時間が長くなる場合がある。
また、未使用メモリブロックのリスト構造を物理パーテーション単位に区切った場合と比較して割当処理の平均時間が長いという問題がある。
図11に、未使用メモリブロックのリスト構造が全てのパーテーションにリンクされている場合を示す。また、図12に未使用メモリブロックのリスト構造を物理パーテーション単位に区切る場合を示す。
さらに、そのときのリンクリスト構造を示したメモリマップについて、図13に、未使用メモリブロックのリスト構造が全てのパーテーションにリンクされている場合を、図14に未使用メモリブロックのリスト構造を物理パーテーション単位に区切る場合を示す。
これらの場合に用いられる変換テーブルの例について、図15及び図16に示す。図15は、未使用メモリブロックのリスト構造が、全ての物理パーテーションにリンクされている場合であり、図16は、未使用メモリブロックのリスト構造が、物理パーテーション単位に区切る場合である。
両方に共通する項目は、マイクロパーテーション番号、ID(メモリを利用しているアプリケーションを示す番号)、フラグ(メモリの使用状態)、物理開始アドレス、レングス(長さ、すなわちサイズ)、論理開始アドレス、リンク先ポインタ(次の未使用メモリブロックを示すポインタ)である。
図16には、図15に無い「先頭のMCBへのポインタ」という項目がある。次にこの項目について説明する。
図17に未使用メモリブロックのリスト構造が物理パーテーション単位で区切られている場合のメモリマップ(上段)と変換テーブル(下段)を並べて示し、「先頭のMCBへのポインタ」が、各物理パーテーションの未使用メモリ領域の先頭アドレスを指すことを示している。
この方法により、物理パーテーション単位毎に未使用メモリ領域を探すことが可能となり、未使用メモリの割当の効率が高まる。
図18に非特許文献1に記載のBSD malloc によるメモリの割当方法で割当てられた際のメモリマップの例を示す。従来のBSD malloc によるメモリの割当方法では、予め複数サイズのブロックを用意し、要求されたメモリサイズに該当するブロックを割当てる。本方法によるメモリ割当は高速処理が可能だがメモリ使用効率は悪い。
一方本発明実施例によるメモリ管理方法によるメモリ割当でのメモリマップと各未使用領域のリンクリスト構造を図19に示す。この場合に、割当サイズに応じて未使用メモリブロックのリスト構造を別にすることにより、未使用メモリブロックの検索回数が減る。
図20にこの場合のより詳細にメモリマップを示す。未使用メモリ領域は、サイズによってメモリレンジ1とメモリレンジ2の二つに分けられて、それぞれは異なるリンクリスト構造に属している。この場合には、MCB部分に以下の表4に示す、prev-flag, self-flagを有する。
Figure 2010204762
表4にあるとおり、prev-flagは隣接する一つ前のメモリブロックの状態(使用中か未使用)を示す。self-flagは自身のメモリブロックの状態を表す。使用中とは、メモリが割当てられている状態、未使用とはメモリが割当てられていない状態を表す。
ptrは、self-flagが未使用の場合は、次の同じメモリレンジの未使用ブロックの先頭を表し、使用中の場合は、隣接する一つ前の未使用メモリブロックの先頭アドレスを示す。
図21に割当サイズに応じて未使用メモリブロックのリスト構造をサイズ1から4の4つに分ける場合の変換テーブルを示す。図16で示した変換テーブルでは、ひとつのMCBへのポインタのみがあったが、図23で示すようにMCBへのポインタは、未使用領域のサイズ毎に分けられたポインタを有する。図23に示すように、サイズ1から4の4つのポインタは、メモリマップ上のそれぞれのレンジの未使用領域のリンクリスト構造の先頭のリストを指し示す。
図22に図21に示した変換テーブルのリンク例を示す。各テーブルのリンク先ポインタが次のテーブルを指し示しており、最終テーブルのリンク先ポインタはENDとなっている。
図23にこの変換テーブルとMCBの関係を示す。前記したサイズ毎の先頭のMCBへのポインタは、そのサイズのレンジ内に該当するサイズの未使用領域を有する未使用領域の先頭アドレスを指し示す。
図24に非特許文献1に記載のメモリブロックの解放方法を示す。従来方法では、複数の未使用メモリブロックのリスト構造に対応できない。
図24(P)の例では、AからEのメモリブロックがA:使用、B:未使用、C:使用、D:未使用、E:使用の状態でCを解放するとB+C+Dの未使用の連続領域ができ、前の未使用領域はB、次の未使用領域はDとなる。
図24(Q)の例では、AからEのメモリブロックがA:未使用、B:使用、C:使用、D:未使用、E:使用の状態でCを解放するとC+Dの未使用の連続領域ができ、前の未使用領域はA,次の未使用領域はDとなる。
図24(R)の例では、AからEのメモリブロックがA:使用、B:未使用、C:使用、D:使用、E:未使用の状態でCを解放するとB+Cの未使用の連続領域ができ、前の未使用領域はB、次の未使用領域はEとなる。
図24(S)の例では、AからEのメモリブロックがA:未使用、B:使用、C:使用、D:使用、E:未使用の状態でCを解放すると前の未使用領域はA、次の未使用領域はEとなる。
図25では、本発明実施例のメモリレンジ毎にリンクリスト構造を有する場合の例について示す。図25(T)で、メモリブロックがA:未使用、B:使用、C:未使用、D:使用、E:未使用、F:使用、G:未使用の状態で、使用されていたDを解放すると図25(U)のように変化して、Dは未使用となり、そのサイズレンジが0x1000以上であるために、同じサイズレンジの未使用領域AとGとの間に挿入される。
図25において、非特許文献1に記載のアルゴリズムを適用すると、前の未使用領域はAで
Aのアドレス+Aのレングス<Dのアドレス
次の未使用領域はGで
Dのアドレス+Dのレングス<Gのアドレスとなり、
CとDが連結されない、またDとEが連結されない。
そこで、D解放時にCとDとEとを連結するために以下の方法を用いる。
メモリブロックDのprev-flagをチェックすることで、隣接するメモリブロックCの状態(「使用中」または「未使用」)を取得する。(注)Dのprev-flagが「未使用」の場合、DのptrはCの先頭アドレスを指す。メモリブロックEのself-flagをチェックすることで、隣接するメモリブロックEの状態(「使用中」または「未使用」)を取得する。(注)Dのsizeから、Eの先頭アドレスが求まる。
図26にメモリ割当後にフリー領域が存在する場合のメモリ割当のメモリマップを示し、図27にその動作のフローチャートを示す。この処理はメモリブロックFを割当てる。ここで、メモリブロックFのサイズは、メモリブロックBのサイズより小さい。
以下にステップ毎の動作を説明する。
S11:Eのprev-flagを「使用中」にセットする。
S13:Eのself-flagを「未使用」にセットする。
S15:Eのメモリサイズを算出し、sizeにセットする。
S17:割当前のBのメモリレンジに該当する「空きブロックのリスト」から、Bのメモリブロックを外す。
S19:割当後のEのメモリレンジに該当する「空きブロックのリスト」に、Eのメモリブロックを挿入する。
S21:Fのprev-flagを「未使用」にセットする。
S23:Fのself-flagを「使用中」にセットする。
S25:Fのptrに、E(未使用)のブロックの先頭アドレスをセットする。
S27:Fのsizeをセットする。
S29:Gのprev-flagを「使用中」にセットする。
S31:Gのptrに、NULL(Fのメモリブロック使用中)をセットする。
以上の一連の動作で割当後フリー領域が存在する場合のメモリ割当処理が完了する。
図28にメモリ割当後にフリー領域が存在しない場合のメモリ割当のメモリマップを示し、図29にその動作のフローチャートを示す。この処理はメモリブロックFを割当てる。ここで、メモリブロックFのサイズは、メモリブロックBのサイズと同じ。
以下にステップ毎の動作を説明する。
S41:Eのprev-flagを「使用中」にセットする。
S43:Eのself-flagを「未使用」にセットする。
S45:Eのptrに、NULL(Dのメモリブロック使用中)をセットする。
S47:割当前のBのメモリレンジに該当する「空きブロックのリスト」から、Bのメモリブロックを外す。
S49:Fのprev-flagを「使用中」にセットする。
S51:Fのptrに、NULL(Eのメモリブロック使用中)をセットする。
以上の一連の動作で割当後フリー領域が存在しない場合のメモリ割当処理が完了する。
図30に下位アドレスに隣接するメモリブロックが未使用、上位アドレスに隣接するメモリブロックが使用中の場合のメモリ解放の動作前後のメモリマップを示し、図31にその動作のフローチャートを示す。この処理はメモリブロックBを解放する。Bのprev-flagが「未使用」、Cのself-flagが「使用中」なので、DとEのメモリブロックを結合して解放する。
以下にステップ毎の動作を説明する。
S61:DとEの結合後のメモリサイズを算出し、Dのsizeにセットする。
S63:解放前のAのメモリレンジに該当する「空きブロックのリスト」から、Aのメモリブロックを外す。
S65:解放後のDとEを結合したメモリレンジに該当する「空きブロックのリスト」に、DとEを結合したメモリブロックを挿入する。
S67:Fのprev-flagを「未使用」にセットする。
S69:Fのptrに、D(未使用)のブロックの先頭アドレスをセットする。
以上の一連の動作で左隣接メモリブロックが未使用、右隣接メモリブロックが使用中の場合のメモリ解放処理を完了する。
図32に下位アドレスに隣接するメモリブロックが使用中、上位アドレスに隣接するメモリブロックが未使用の場合のメモリ解放の動作前後のメモリマップを示し、図33にその動作のフローチャートを示す。この処理はメモリブロックBを解放する。Bのprev-flagが「使用中」、Cのself-flagが「未使用」なので、FとGのメモリブロックを結合して解放する。
以下にステップ毎の動作を説明する。
S71:FとGの結合後のメモリサイズを算出し、Fのsizeにセットする。
S73:Fのptrに、次の(同じメモリレンジの)未使用ブロックの先頭アドレスをセットする。
S75:Fのself-flagを「未使用」にセットする。
S77:解放前のCのメモリレンジに該当する「空きブロックのリスト」から、Cのメモリブロックを外す。
S79:解放後のFとGを結合したメモリレンジに該当する「空きブロックのリスト」に、FとGを結合したメモリブロックを挿入する。
S81:Hのptrに、F(未使用)のブロックの先頭アドレスをセットする。
以上の一連の動作で左隣接メモリブロックが使用中、右隣接メモリブロックが未使用の場合のメモリ解放処理を完了する。
図34に上位アドレス、下位アドレスに隣接するメモリブロックが未使用の場合のメモリ解放の動作前後のメモリマップを示し、図35にその動作のフローチャートを示す。この処理はメモリブロックBを解放する。Bのprev-flagが「未使用」、Cのself-flagが「使用中」なので、EとFとGのメモリブロックを結合して解放する。
以下にステップ毎の動作を説明する。
S91:E、F、Gの結合後のメモリサイズを算出し、Eのsizeにセットする。
S93:Eのptrに、次の(同じメモリレンジの)未使用ブロックの先頭アドレスをセットする。
S95:解放前のAのメモリレンジに該当する「空きブロックのリスト」から、Aのメモリブロックを外す。
S97:解放前のCのメモリレンジに該当する「空きブロックのリスト」から、Cのメモリブロックを外す。
S99:解放後のEとFとGを結合したメモリレンジに該当する「空きブロックのリスト」に、EとFとGを結合したメモリブロックを挿入する。
S101:Hのptrに、E(未使用)のブロックの先頭アドレスをセットする。
以上の一連の動作で上位アドレス、下位アドレスに隣接するメモリブロックが未使用の場合のメモリ解放処理を完了する。
図36に上位アドレス、下位アドレスに隣接するメモリブロックが使用中の場合のメモリ解放の動作前後のメモリマップを示し、図37にその動作のフローチャートを示す。この処理はメモリブロックBを解放する。Bのprev-flagが「使用中」、Cのself-flagが「使用中」なので、Eのメモリブロックだけを解放する。
以下にステップ毎の動作を説明する。
S111:Eのself-flagを「未使用」にセットする。
S113:EのメモリサイズをEのsizeにセットする。
S115:解放後のEのメモリレンジに該当する「空きブロックのリスト」に、Eのメモリブロックを挿入する。
S117:Fのprev-flagを「未使用」にセットする。
S119:Fのptrに、E(未使用)のブロックの先頭アドレスをセットする。
以上の一連の動作で上位アドレス、下位アドレスに隣接するメモリブロックが使用中の場合のメモリ解放処理を完了する。
[実施例の効果]
本発明実施例のメモリ管理システムにより、以下のことが可能となる。
フラグメンテーションを効率的に回避することが可能となる。
フラグメンテーションを回避する為の手段であるパーテーションを複数化することが可能となる。
フラグメンテーションを回避する為の手段であるパーテーションの区切り位置を動的に変更することが可能となる。
メモリの解放順序に制限を必要とせず、不要になったメモリから解放可能となる。
未使用領域をそのサイズのレンジ毎に分類し、メモリの割当要求時に最適なサイズのメモリ領域を検索する際には、割当要求のサイズに適合するサイズレンジの中からのみ未使用領域を検索するため、検索にかかる時間が短くなる。
200 メモリマネージメント初期化部
201 変換テーブル管理部(物理パーテーション管理部、論理パーテーション管理部)
211 パーテーション管理部
213 パーテーションサイズ管理部
215 アドレス(物理・論理)管理部
217 ID管理部
219 フラグ(待機・停止)管理部
221 アドレス変換部(変換部)
231 物理アドレスから論理アドレスへの変換部
233 論理アドレスから物理アドレスへの変換部
241 メモリ統計情報管理部(物理パーテーション管理部)
251 メモリ使用ブロック数の管理部
253 メモリ使用バイト数の管理部
255 パーテーションの閾値チェック部
257 閾値種別管理部
261 MCB管理部
271 malloc()処理部
273 free()処理部

Claims (5)

  1. 論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理部と、
    物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理部と、
    前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換部とを有し、
    前記物理パーテーション管理部は、前記物理パーテーションの未使用領域をそのサイズ毎に分類しておき、メモリ割当要求の際には当該割当要求のサイズを含む前記分類された未使用領域から検索して選択する
    ことを特徴とするメモリ管理システム。
  2. 請求項1のメモリ管理システムであって、
    前記変換部は、前記論理アドレス空間と前記物理アドレス空間とを関連付ける変換テーブルを生成又は消去する
    ことを特徴とするメモリ管理システム。
  3. 請求項1又は2のメモリ管理システムであって、
    前記論理パーテーション管理部は、前記仮想メモリの割当をアプリケーション毎に連続した論理アドレス空間に確保する
    ことを特徴とするメモリ管理システム。
  4. 請求項1から3のいずれかのメモリ管理システムを有する
    ことを特徴とする電子機器。
  5. コンピュータに、
    論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理機能と、
    物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理機能と、
    前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換機能とを実現させ、
    前記物理パーテーション管理機能は、前記物理パーテーションの未使用領域をそのサイズ毎に分類しておき、メモリ割当要求の際には当該割当要求のサイズを含む前記分類された未使用領域から検索して選択する
    ことを特徴とするメモリ管理プログラム。
JP2009047280A 2008-10-30 2009-02-27 メモリ管理システム、電子機器及びメモリ管理プログラム Expired - Fee Related JP5377001B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009047280A JP5377001B2 (ja) 2009-02-27 2009-02-27 メモリ管理システム、電子機器及びメモリ管理プログラム
US12/607,673 US8291192B2 (en) 2008-10-30 2009-10-28 Memory management system
US13/606,784 US8539198B2 (en) 2008-10-30 2012-09-07 Memory management system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009047280A JP5377001B2 (ja) 2009-02-27 2009-02-27 メモリ管理システム、電子機器及びメモリ管理プログラム

Publications (2)

Publication Number Publication Date
JP2010204762A true JP2010204762A (ja) 2010-09-16
JP5377001B2 JP5377001B2 (ja) 2013-12-25

Family

ID=42966207

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009047280A Expired - Fee Related JP5377001B2 (ja) 2008-10-30 2009-02-27 メモリ管理システム、電子機器及びメモリ管理プログラム

Country Status (1)

Country Link
JP (1) JP5377001B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977265A (zh) * 2016-10-25 2018-05-01 中兴通讯股份有限公司 内存初始化方法、装置和内存分配方法、装置
CN117806983A (zh) * 2023-12-27 2024-04-02 摩尔线程智能科技(北京)有限责任公司 存储空间管理方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0438540A (ja) * 1990-06-05 1992-02-07 Toshiba Corp メモリ管理方式
JPH0895849A (ja) * 1994-09-27 1996-04-12 Canon Inc メモリ管理方法
JP2005196343A (ja) * 2004-01-05 2005-07-21 Mitsubishi Electric Corp メモリ管理装置及びメモリ管理方法及びプログラム
WO2008084531A1 (ja) * 2007-01-10 2008-07-17 Netcleus Systems Corporation メモリ管理装置
JP2008217183A (ja) * 2007-03-01 2008-09-18 Yokogawa Electric Corp メモリ管理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0438540A (ja) * 1990-06-05 1992-02-07 Toshiba Corp メモリ管理方式
JPH0895849A (ja) * 1994-09-27 1996-04-12 Canon Inc メモリ管理方法
JP2005196343A (ja) * 2004-01-05 2005-07-21 Mitsubishi Electric Corp メモリ管理装置及びメモリ管理方法及びプログラム
WO2008084531A1 (ja) * 2007-01-10 2008-07-17 Netcleus Systems Corporation メモリ管理装置
JP2008217183A (ja) * 2007-03-01 2008-09-18 Yokogawa Electric Corp メモリ管理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977265A (zh) * 2016-10-25 2018-05-01 中兴通讯股份有限公司 内存初始化方法、装置和内存分配方法、装置
CN117806983A (zh) * 2023-12-27 2024-04-02 摩尔线程智能科技(北京)有限责任公司 存储空间管理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
JP5377001B2 (ja) 2013-12-25

Similar Documents

Publication Publication Date Title
US8291192B2 (en) Memory management system
JP4139675B2 (ja) 仮想ボリュームの記憶領域割当方法、その装置及びプログラム
US9405485B2 (en) Method and apparatus for writing data to a flash memory
CN106126124B (zh) 一种数据处理方法及电子设备
US10114866B2 (en) Memory-constrained aggregation using intra-operator pipelining
CN111177017B (zh) 一种内存分配方法及装置
US10049035B1 (en) Stream memory management unit (SMMU)
US20130318322A1 (en) Memory Management Scheme and Apparatus
US8352702B2 (en) Data processing system memory allocation
JP2007249708A (ja) メモリ領域割り当て制御装置、メモリ領域割り当て制御プログラム、及びメモリ領域割り当て制御方法
JP2005500620A (ja) 移動するメモリブロックを備えるメモリプール
US7865632B2 (en) Memory allocation and access method and device using the same
JP5377001B2 (ja) メモリ管理システム、電子機器及びメモリ管理プログラム
CN112650577A (zh) 内存管理方法和装置
CN106537321B (zh) 存取文件的方法、装置和存储系统
JP5352284B2 (ja) メモリ管理システム、電子機器及びメモリ管理プログラム
JP2008033838A (ja) メモリ管理装置及びメモリ管理方法
JP2010108216A (ja) メモリ管理システム、電子機器及びメモリ管理プログラム
CN109284234A (zh) 一种存储地址分配方法及系统
JP2004046900A (ja) 情報処理システムの制御方法
CN111881639B (zh) 一种可重构硬件任务动态布局方法
JP4176682B2 (ja) メモリ管理方式
KR102432473B1 (ko) 반도체 회로
AU2014268230A1 (en) Cyclic allocation buffers
CN111913657A (zh) 块数据读写方法、装置、系统及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130730

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130808

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130924

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees