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

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

Info

Publication number
JP2010204763A
JP2010204763A JP2009047281A JP2009047281A JP2010204763A JP 2010204763 A JP2010204763 A JP 2010204763A JP 2009047281 A JP2009047281 A JP 2009047281A JP 2009047281 A JP2009047281 A JP 2009047281A JP 2010204763 A JP2010204763 A JP 2010204763A
Authority
JP
Japan
Prior art keywords
memory
physical
partition
allocation
address space
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
JP2009047281A
Other languages
English (en)
Other versions
JP5352284B2 (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 JP2009047281A priority Critical patent/JP5352284B2/ja
Priority to US12/607,673 priority patent/US8291192B2/en
Publication of JP2010204763A publication Critical patent/JP2010204763A/ja
Priority to US13/606,784 priority patent/US8539198B2/en
Application granted granted Critical
Publication of JP5352284B2 publication Critical patent/JP5352284B2/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号公報
解決しようとする問題点は、メモリ管理システム、電子機器及びメモリ管理プログラムにおいて、メモリのフラグメンテーションを効率的に回避することができなかった点と、高速に連続的なメモリ空間の割当・解放動作を行い、割当てられた連続的なメモリ空間のサイズの増減を行うことができなかった点である。さらに、物理パーテーションのフラグメンテーション率が高くなった場合で大きなメモリの再割当が必要な際には、細分化されたメモリを多数合わせて用いることに起因する物理アドレスと論理アドレスの変換処理に時間がかかることを回避できなかった点である。
本発明のメモリ管理システムは、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理部と、物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理部と、前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換部とを有し、前記物理パーテーション管理部は、前記物理パーテーションのフラグメンテーション率を監視して当該フラグメンテーション率が所定の上限閾値を超えた物理パーテーションに対するメモリの割当を禁止することを特徴とする。
また、本発明のメモリ管理システムの前記物理パーテーション管理部は、前記メモリの割当を禁止したフラグメンテーション率が所定の上限閾値を超えた物理パーテーションの当該フラグメンテーション率が所定の下限閾値を下回った場合には、再度のメモリの割当を許可することを特徴としてもよい。
また、本発明のメモリ管理システムの前記変換部は、前記論理アドレス空間と前記物理アドレス空間とを関連付ける、前記変換テーブルを生成又は消去することを特徴としてもよい。
また、本発明のメモリ管理システムの前記論理パーテーション管理部は、前記仮想メモリの割当をアプリケーション毎に連続した論理アドレス空間に確保することを特徴としてもよい。
また、本発明のメモリ管理システムの前記物理パーテーション管理部は、ハードウェア依存によるアクセス領域を固定領域とし、前記論理パーテーション管理部からの前記アプリケーションによる仮想メモリ割当てに対して、前記固定領域には割当を行わないことを特徴としてもよい。
本発明の電子機器は、前記メモリ管理システムを有することを特徴とする。
本発明のメモリ管理プログラムは、コンピュータに、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理機能と、物理アドレス空間において実メモリを小サイズ毎に切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理機能と、変換テーブルに基づいて前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換機能とを実現させることを特徴とする。
本発明のメモリ管理システムは、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理部と、物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理部と、前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換部とを有し、前記物理パーテーション管理部は、前記物理パーテーションのフラグメンテーション率を監視して当該フラグメンテーション率が所定の上限閾値を超えた物理パーテーションに対するメモリの割当を禁止することを特徴とする。
このため、論理アドレス空間におけるフラグメンテーションを効率的に回避する。また、高速に連続的な仮想メモリ空間の割当、解放動作が可能となり、割当てられた連続的な仮想メモリ空間のサイズの増減を行うことが可能となる。そして、物理パーテーションのフラグメンテーション率が上限閾値を越えた場合には、当該物理パーテーションを使用させないため、フラグメンテーションによる細かいメモリ領域を物理パーテーションから集めるような効率の悪いメモリ管理を行うことが無くなり、物理メモリと論理メモリとの間の変換に大きなコスト(変換処理のステップ増)がかかるのを抑制可能となる。
また、本発明のメモリ管理システムの前記物理パーテーション管理部は、前記メモリの割当を禁止したフラグメンテーション率が所定の上限閾値を超えた物理パーテーションの当該フラグメンテーション率が所定の下限閾値を下回った場合には、再度のメモリの割当を許可することを特徴としてもよい。
このため、一旦メモリの再割当を禁止したものであっても、フラグメンテーション率が下限閾値を下回った場合には、再度改善されたフラグメンテーション率での連続したメモリ領域がとれているために、新規の物理パーテーションを使用することなく、メモリの利用効率を高めることが可能となる。
また、本発明のメモリ管理システムの前記変換部は、前記論理アドレス空間と前記物理アドレス空間とを関連付ける、前記変換テーブルを生成又は消去することを特徴としてもよい。
このため、アプリケーションが使用する仮想メモリの論理アドレス空間から、実メモリの物理アドレス空間へのアドレス変換が効率よく行うことができる。
また、本発明のメモリ管理システムの前記論理パーテーション管理部は、前記仮想メモリの割当をアプリケーション毎に連続した論理アドレス空間に確保することを特徴としてもよい。
このため、アプリケーション毎に区切られたパーテーションを一度に解放することにより、仮想メモリの解放が高速に行うことが可能となり、かつ、連続した大きな論理アドレス空間を得ることが可能となる。
また、本発明のメモリ管理システムの前記物理パーテーション管理部は、ハードウェア依存によるアクセス領域を固定領域とし、前記論理パーテーション管理部からの前記アプリケーションによる仮想メモリ割当てに対して、前記固定領域には割当を行わないことを特徴としてもよい。
このため、DMA(Direct Memory Access)等のハードウェア依存アクセスがあっても、当該箇所が他のアプリケーション等に割当てられることがなく動作する。
本発明の電子機器は、前記メモリ管理システムを有することを特徴とする。
このため、論理アドレス空間におけるフラグメンテーションの発生を効率的に回避する。また、高速に連続的な仮想メモリ空間の割当、解放動作が可能となり、割当てられた連続的な仮想メモリ空間のサイズの増減を行うことが可能となる。また、アプリケーション毎に区切られたパーテーションを一度に解放することにより、仮想メモリの解放を高速に行うことが可能となり、かつ、連続した大きな論理アドレス空間を得ることが可能となる。また、DMA(Direct Memory Access)等のハードウェア依存アクセスがあっても、当該箇所が他のアプリケーション等に割当てられることがなく動作する。
本発明のメモリ管理プログラムは、コンピュータに、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理機能と、物理アドレス空間において実メモリを小サイズ毎に切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理機能と、変換テーブルに基づいて前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換機能とを実現させることを特徴とする。
このため、論理アドレス空間におけるフラグメンテーションの発生を効率的に回避する。また、高速に連続的な仮想メモリ空間の割当、解放動作が可能となり、割当てられた連続的な仮想メモリ空間のサイズの増減を行うことが可能となる。
従来例と本発明実施例のパーテーションの違いを示す説明図である。 従来例のパーテーションのメモリ割当ての図である。 本実施例のパーテーションのメモリ割当ての図である。 本発明実施例のメモリ管理システムの機能ブロック図である。 本発明実施例の変換テーブルの例である。 本発明実施例のマイクロパーテーションの使用例の説明図である。 本発明実施例のマイクロパーテーションのサイズ確保の例の説明図である。 本発明実施例のマイクロパーテーションの固定領域の説明図である。 従来例のメモリマップと物理パーテーションの関係図である。 本発明実施例のメモリマップと物理パーテーションの関係図である(割当停止が発生した場合)。 本発明実施例のメモリマップと物理パーテーションの関係図である(割当待機に復帰した場合)。 変換テーブルの例である。 初期化処理のフローチャートである。 メモリ割当処理のフローチャートである。 メモリ解放処理のフローチャートである。 メモリ一括解放のフローチャートである。 本発明実施例のメモリ管理システムのソフトウェアの構成図である。
メモリ管理システム、電子機器及びメモリ管理プログラムにおいて、メモリのフラグメンテーションを効率的に回避することができない問題点と、高速に連続的な仮想メモリ空間の割当、解放動作を行い、割当てられた連続的なメモリ空間のサイズの増減を行うことができない問題点を物理アドレス空間を小サイズ毎に区切ったマイクロパーテーション単位で扱い、アプリケーション等毎に区切った連続的な論理アドレス空間を必要数の前記マイクロパーテーションに割当て、各マイクロパーテーションのフラグメンテーション率を監視して、フラグメンテーション率が所定の上限閾値を超えたマイクロパーテーションにはメモリの再割当を行わない方法により、メモリの割当を高速に行うことを可能とした。
[パーテーション]
図1(A)は、従来のメモリ管理システムにおけるアドレス空間での実メモリの割り当てに関する説明図である。従来は、アドレス空間を単一のパーテーションとして区切り、これら単一のパーテーションをメモリ管理のAPI(Application Program Interface)によって、実メモリの割り当て(malloc())、解放(free())を行っていた。このようなメモリ管理の下では、実メモリの割当・解放を繰り返した結果として、図2(A)から図2(B)に示すように使用中、未使用中のアドレス空間が分散してフラグメンテーションを発生し、実メモリ内のデータ移動処理を行わなければ連続的な大容量の実メモリ空間を確保することができない。しかし、実メモリ内のデータ移動処理には時間がかかり、データ移動中は実メモリの使用が大きく制限されるため、画像形成装置などのリアルタイム処理が必要な電子機器では非常に問題となる。
図1(B)は、本発明のメモリ管理システムにおける、物理アドレス空間をパーテーション毎に区切って使用する場合の物理アドレス空間の割当てに関する説明図である。図3(A)に示すように全体の物理アドレス空間を複数のパーテーション毎にIDを与えて区切り、IDをアプリケーション毎に関連付けて割当てるようにすると、ひとつのアプリケーションが終了した場合(図3(B)におけるID=2のアプリケーション)には、パーテーション2をID指定による一括解放(free_all(ID=2)、図1(B)参照)を行うことにより大きな連続アドレス空間を得ることができる。
しかし、このパーテーションを区切る方法だけでは、最初に割当てられたパーテーションサイズと実際に使用されるメモリサイズとの間に大きな差異があった場合、特にパーテーションで割当てられた実メモリサイズでは、容量が足りなくなった場合には、連続した大きな物理アドレス空間を得ることはできない。
そこで、本発明ではアプリケーション側が要求する論理アドレス空間を、物理メモリ空間を小サイズに区切ったマイクロパーテーションの物理アドレス空間に変換することにより、前記の問題を解決した。
[構成]
図4は、本発明の実施例に係わるメモリ管理システムの機能ブロック図である。
メモリ管理部M10は、物理パーテーション管理部M17、変換部M19,論理パーテーション管理部M21の機能部を有する。
上記の各機能部は、物理アドレス空間での物理マイクロパーテーションM11にアクセスし、物理アドレスと論理アドレスの間の変換テーブルM13を生成又は消去し、論理アドレス空間での論理パーテーションM15にアクセスする。
以下に各機能部毎にその動作について説明する。
論理パーテーション管理部M21は、論理アドレス空間においてアプリケーションが使用する仮想メモリの割当を管理し、該仮想メモリ割当てについてはアプリケーション毎に連続した論理アドレスのパーテーション毎(論理パーテーションM15)に区切って管理する。
変換部M19は、論理アドレス空間と物理アドレス空間との間のアドレス変換を行う。アドレス変換には前記論理アドレス空間と前記物理アドレス空間とを関連付ける変換テーブルM13を用いる(詳細後述)。すなわち、変換部M19は、仮想メモリ及び実メモリの未使用領域を、それぞれ論理パーテーション管理部M19及び物理パーテーション管理部M17から取得し、前記論理アドレス空間に前記物理アドレス空間を関連付ける。変換部M19は、アプリケーションの使用状況に応じて、変換テーブルM13の生成と消去を行う。詳細には、変換部M19は、アプリケーションの起動や動作に伴う要求に応じて変換テーブルM13を生成し、アプリケーションの終了に応じて変換テーブルM13を消去する。
物理パーテーション管理部M17は、物理アドレス空間において実メモリを小サイズ毎の物理マイクロパーテーションM11に切り分けて実メモリの割当と解放を管理する。
さらに、物理パーテーションのフラグメンテーション率を監視して、フラグメンテーション率が所定の上限閾値を超えた物理パーテーションについては、それ以上のメモリの割当を禁止する。また、一旦メモリの割当が禁止された物理パーテーションであっても、そのフラグメンテーション率が所定の下限閾値より下回った場合には、再度のメモリの割当を許可する。これらの上限閾値と下限閾値は例えば、典型的には上限閾値を70%、下限閾値を30%としてもよい。また、上限閾値は最大値に近い例えば99%といった値であってもよい。
ここで、フラグメンテーション率は次式から算出される。
フラグメンテーション率(%)={[フラグメント数]/([マイクロパーテーション数]−1)}×100
この上限閾値による物理パーテーションの割当を禁止する方法により、メモリの割当が必要になった場合には、他の物理パーテーションからの割当を行う。
[ソフトウェア構成]
さらに詳細にソフトウェア構成について図17のソフトウェア構成図を用いて説明する。
メモリ管理システムは、メモリマネージメント初期化部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は、パーテーションのフラグメンテーション率をチェックし、そのフラグメンテーション率が上限の閾値を超えた場合には、当該パーテーションからのメモリの再割当を禁止する。一旦再割当を禁止されたパーテーションのフラグメンテーション率が下限の閾値を下回った場合には、メモリの再割当の禁止を解除する。
閾値種別管理257は、メモリの未使用領域のサイズに従って、物理パーテーション内でサイズ毎にグループ分けを行う。
MCB管理部261は、メモリコントロールブロック(MCB)の管理を行う。MCBは、実メモリのメモリブロックの先頭部にあるポインターやサイズ情報等を納めた部分であり、その管理を行う。MCBの動作の詳細については後述する。
[変換テーブル及びマイクロパーテーション]
図5を用いて変換テーブルについて説明する。
物理アドレス空間は、変換テーブルT01に示すように、サイズが0x0800(このサイズは、一例であって、その他のサイズであってもよい)毎のマイクロパーテーションに区切られている。各マイクロパーテーションは、どのアプリケーションによって使用されているかを示すIDを有し、その物理アドレス及び対応する論理アドレスの値を有する。
例えばID=2のアプリケーションに使用されているマイクロパーテーションについてみると、変換テーブルT11に示すようにマイクロパーテーション番号=1がID=2での先頭のマイクロパーテーションであり、そのリンク先ポインタは次の変換テーブルT31でマイクロパーテーション番号=3を示し、次がマイクロパーテーション番号=6を示している。
このように、変換部M19は、物理パーテーション管理部M17によって物理アドレス空間ではとびとびに割当てられている実メモリの物理アドレスを連続した論理アドレスに変換することができる。更に、論理パーテーション管理部M15は、変換部M19から取得した変換された連続した論理アドレスを、仮想メモリ空間に割当てることが可能である。
図6(A)にID指定による実メモリ一括解放の場合を示す。この場合にマイクロパーテーション2は、グラフィックスアプリケーションによって占有されていたが、グラフィックアプリケーションが終了したため、その実メモリを必要としなくなる。そこで、物理パーテーション管理部M17は、ID=グラフィックスを指定してメモリの一括解放を行う。この場合、前記変換テーブルのT11からT61に示したようなリンク先ポインタを用いて、ID=グラフィックスに割当てられていた実メモリをすべて解放することが可能である。解放されたマイクロパーテーションは他のアプリケーションにより使用が可能である。
図6(B)に最初に割当てられた実メモリのパーテーションを再割当する場合についての図を示す。最初に物理パーテーション管理部M17により割当てられた物理メモリ空間が足りなくなった場合には、未使用であったマイクロパーテーション5をID=グラフィックスのために割当てる。この場合、物理アドレス空間は、とびとびに存在するが、論理アドレス空間は連続的に存在する。
図6(C)では、新規にマイクロパーテーションを複数割当てる場合について説明する。割当てに必要なアドレス空間がマイクロパーテーションのひとつのサイズより大きい場合には、例えば図のようにマイクロパーテーション3,4,5の3つを割当てるようにしてもよい。
図7を用いて、物理アドレス空間ではマイクロパーテーションの使用空間が分散して存在している場合でも、連続した論理アドレス空間が得られることを説明する。図7では、例えばID=インタープリタのアプリケーションは、その使用実メモリがマイクロパーテーションの1,6,9に分散しており、フラグメントは2つ(マイクロパーテーション2から5と、マイクロパーテーション7,8)存在している。同様に、ID=グラフィックスのアプリケーションは、マイクロパーテーションの2,4,5,8に分散しており、フラグメントは2つ(マイクロパーテーション3と、マイクロパーテーション6,7)存在している。また、ID=レンダリングのアプリケーションは、マイクロパーテーションの3,7に分散しており、フラグメントは1つ(マイクロパーテーション4から6)存在している。物理パーテーション内のフラグメント数は5で、マイクロパーテーション数は9なので、フラグメンテーション率は、{5/(9−1)}×100=62.5%となる。
しかしながら、変換部M19が前記した変換テーブルM13を用いて物理アドレスと論理アドレス間のアドレス変換を行うために、論理パーテーション管理部M21へは、常に連続したメモリ空間への論理アドレスでのアクセスが可能である。グラフィックス及びレンダリングのアプリケーションについても同様にメモリ管理される。
例えば、図7において、ID=インタープリタのアプリケーションは、マイクロパーテーション1,6,9の順で論理アドレスが連続している。同様に、ID=グラフィックスのアプリケーションはマイクロパーテーションの2,4,5,8の順で、ID=レンダリングのアプリケーションは、マイクロパーテーションの3,7の順で、それぞれ論理アドレスが連続している。
図8を用いて、特定のマイクロパーテーションを固定メモリ領域に指定する例について示す。実メモリのアドレス空間においては、DMA(Direct Memory Access)などのハードウェアから直接メモリ空間をアクセスする場合などがあるが、本メモリ管理システムにおいて、そのようなハードウェア依存アクセスがあっても、問題なく動作する。その場合は、変換部M19は、変換テーブルM13中の該当マイクロパーテーションに例えばID=ハードウェア依存のようなマークを付ける。当該IDを有するマイクロパーテーションは固定領域であるために、物理パーテーション管理部M17は、論理パーテーション管理部M21からのメモリ割当要求がきても、該当部分(固定領域)には割当を行わない。図8に示すように、論理パーテーション管理部M21に割当て要求があったアプリケーションのインタープリタ、グラフィックス、レンダリングのいずれも、ID=ハードウェア依存のマイクロパーテーション領域(固定領域)を避けてメモリの物理アドレスの割り当てを行うために、これらDMA等によってアクセスされる領域との競合は生じない。
[未使用領域のフラグメンテーション率による再割当の禁止・許可]
次に、未使用領域のフラグメンテーション率による再割当の禁止・許可の動作について詳細に説明する。
ダブル・ポインタ方式を利用したメモリ管理システムでは、メモリのデフラグメンテーションは行えるが、メモリ内のデータ転送によりパフォーマンスが低下する欠点がある。その為、前述したマイクローパーテーションを用いるメモリ管理方法を提案した。このメモリ管理システムは、メモリを利用するアプリケーション毎に専用のパーテーションを割当てることで、アプリケーションが一切のメモリを使用しなくなった時点で、パーテーション内のメモリを全て解放するものである。上記のメモリ管理システムでは、パーテーション連結の為の論理アドレスを導入し、物理アドレスと論理アドレスの相互変換を行う「変換テーブル」を用意した。図9は、前述したマイクロパーテーションによる「メモリマップと物理パーテーションの関係」を示している。但し、上記方法においても、アプリケーションがメモリを使用している間は、そのパーテーション内でメモリのフラグメンテーションが発生する欠点がある。(メモリ利用効率の低下)
本発明の目的は、アプリケーションがメモリを使用中にパーテーション内で発生するフラグメンテーションを効率的に解消することである。
上記を実現する為、新たに「上限閾値」と「下限閾値」を用意した。各々のパーテーションでは、「上限閾値」を超えるとフラグメンテーションが多数発生したとして「割当」を中断し、以降は「解放」のみ行う。「割当」は、新たにパーテーションを作成(「変換テーブル」にパーテーション情報を登録)し、そのパーテーション内で行う。「割当」を中断したパーテーションは、「解放」が進み「下限閾値」未満に達すると、フラグメンテーションが少なくなったとして、再び「割当」を再開する。この様に、「上限閾値」と「下限閾値」を設け、パーテーションを「割当」可能な状態(「待機」)と、「解放」のみ行われる状態(「停止」)の2状態で管理することで、パーテーション使用中もデフラグメンテーションを効率よく行うことが出来る様になる。尚、「閾値」としては、パーテーション内における「メモリ使用ブロック数」、「メモリ使用バイト数」などが考えられる。
図10に本発明実施例での割当停止が発生した場合のメモリマップと物理パーテーションの関係を示す。
物理パーテーション番号1,3,4は、フラグメンテーションが「上限閾値」以上に達したので、「割当」は停止し、「解放」のみ行われる。代わりに、物理パーテーション番号6,7,8が新たに「割当」に使用される。
図11に本発明実施例での割当が「待機」に復帰した場合のメモリマップと物理パーテーションの関係を示す。
物理パーテーション番号1,3,4は、「解放」によりフラグメンテーションが「下限閾値」未満に達したので、「割当」が再開される。
ここで、上限閾値とは、パーテーション内で「割当」を停止する為の閾値。この値以上に達すると、以降「解放」のみ行われ、フラグメンテーションの解消が進む。
下限閾値とは、パーテーション内で「割当」を再開する為の閾値。この値未満に達すると、以降「割当」が再開される。
これまで説明したマイクロパーテーション番号、ID、フラグ、物理開始アドレス、レングス、対象論理アドレスの関係を表1に示す。
Figure 2010204763

[アドレス変換方法]
本発明では、パーテーションを連結する為、メモリ割当およびメモリ解放は「論理アドレス」を介して行う。
例えば、メモリ解放では解放対象となるアドレスを「論理アドレス」で指定する。
[論理アドレスから物理アドレスへの変換方法]
以下、図12を利用して論理アドレスから物理アドレスへの変換方法を説明する。アプリケーション(ID=2)が論理アドレス0x1234を先頭アドレスとするメモリ領域を解放する場合を考える。始めに、メモリ管理システムの「変換プログラム」は、変換テーブルを参照する。
1つ目の変換テーブルの論理開始アドレス0x0000とレングス0x0800から、対象論理アドレス0x0000〜0x07FFを求めるが、指定された0x1234は範囲外である。
次に、リンク先ポインタから2つ目の変換テーブルを求める。2つ目の変換テーブルの論理開始アドレス0x0800とレングス0x0800から、対象論理アドレス0x0800〜0x0FFFを求めるが、指定された0x1234は範囲外である。
次に、リンク先ポインタから3つ目の変換テーブルを求める。3つ目の変換テーブルの論理開始アドレス0x1000とレングス0x0800から、対象論理アドレス0x1000〜0x17FFを求めると、指定された0x1234は範囲内である。
ここで、指定された0x1234と論理開始アドレス0x1000の差(オフセット値)を求めると、0x0234となる。
最後に、物理開始アドレス0x5500に、オフセット値0x0234を加えて、物理アドレス0x5734を求めることが出来る。
[物理アドレスから論理アドレスへの変換方法]
以下、図12を利用して物理アドレスから論理アドレスへの変換方法を説明する。アプリケーション(ID=2)が物理アドレス0x5734を先頭アドレスとするメモリ領域を確保(割当)した場合を考える。
始めに、メモリ管理システムの「変換プログラム」は、変換テーブルを参照する。1つ目の変換テーブルの物理開始アドレス0x3000とレングス0x0800から、対象物理アドレス0x3000〜0x37FFを求めるが、確保した領域の先頭アドレス0x5734は範囲外である。
次に、リンク先ポインタから2つ目の変換テーブルを求める。2つ目の変換テーブルの物理開始アドレス0x4000とレングス0x0800から、対象物理アドレス0x4000〜0x47FFを求めるが、確保した領域の先頭アドレス0x5734は範囲外である。
次に、リンク先ポインタから3つ目の変換テーブルを求める。3つ目の変換テーブルの物理開始アドレス0x5500とレングス0x0800から、対象物理アドレス0x5500〜0x5CFFを求めると、確保した先頭アドレス0x5734は範囲内である。
ここで、確保した先頭アドレス0x5734から、物理パーテーションの先頭(物理)アドレス0x0x5500の差(オフセット値)を求めると0x0234となる。
最後に、論理開始アドレス0x1000に、オフセット値0x0234を加えて、物理アドレス0x1234を求めることが出来る。
[割当、解放、一括解放の例]
以下に、「論理アドレス」を使用した「割当」、「解放」、「一括解放」の例を示す。
「割当」の例
void *malloc( int id, size_t size ) (注)戻り値は、論理アドレス
「解放」の例
void free( int id, void *pointer ) (注)pointer は、論理アドレス
「一括解放」の例
void free_all( int id )
上記の動作を行う際には以下の点に注意する。
・DMA転送を行う場合は、物理パーテーションの領域を固定化すること。
・メモリアクセスを伴うライブラリ関数(memcpy, strcpy, 等)を使用する場合は、独自のライブラリ関数(論理アドレス指定)に置き換えること。
[動作の流れ;フローチャート]
次に実際の動作の流れについて、フローチャートを用いて説明する。
まず、初期化時の動作;void init_memory(void)についての動作の流れについて、図13を用いて説明する。
S11:パーテーションサイズの定義ファイルがあるかどうかを判断する。ある場合には動作をS15に、無い場合にはS13に動作を移行する。
S13:パーテーションサイズはデフォルト値を使用する。
S15:パーテーションサイズの定義ファイルを読み込む。
S17:閾値と閾値種別定義ファイルがあるかどうかを判断する。ある場合はS23に、無い場合にはS19に動作を移行する。
S19:パーテーションサイズはデフォルト値を使用する。
S21:パーテーションサイズはデフォルト値を使用する。
S23:閾値(上限閾値、下限閾値)を定義ファイルから読み込む。
S25:閾値種別(メモリ使用ブロック数またはメモリ使用パイと数)を定義ファイルから読み込む。
以上の一連の動作により、初期化動作を完了する。
次にメモリ割当処理の動作について、図14のフローチャートを用いて説明する。
S31:メモリ割当要求を受信する。
S33:ポインターをMCBの先頭にセットする。
S35:MCB有りかどうかを判断する。MCBがあれば動作をS37に、無ければ動作をS61に移行する。
S37:空き領域のサーチを行う。
S39:空き領域あるかどうかを判断する。空き領域があればS41に、無ければS47に動作を移行する。
S41:変換テーブル内のIDとフラグを参照する。
S43:空き領域のIDは指定されたidと一致するかどうかを判断する。一致する場合は動作をS45に、無ければS47に移行する。
S45:フラグは、待機状態かどうかを判断する。待機状態であればS49に、そうでなければS47に移行する。
S47:ポインターを次のMCBへ進める。
S49:MCBを更新する。
S51:物理アドレスを論理アドレスに変換する。
S53:メモリ利用率は上限閾値以上かどうかを判断する。そうであればS55に、そうでなければS57に動作を移行する。
S55:変換テーブル内のフラグを待機から停止に変更する。
S57:確保した領域の先頭アドレス(論理アドレス)をリターンする。
S61:パーテーション情報を変換テーブルに追加し、フラグを待機にセットする。
S63:パーテーション情報は追加できたかどうかを判断する。追加できたときはS67に、そうでない場合はS65に動作を移行する。
S65:ポインターをMCBの先頭にセットする。
S67:パーテーション情報の連結を行う。
S69:MCBが有るかどうかを判断する。有る場合はS71に、無い場合はS87に動作を移行する。
S71:空き領域のサーチを行う。
S73:空き領域があるかどうかを判断する。有る場合にはS75に、無い場合にはS81に動作を移行する。
S75:変換テーブル内のIDとフラグを参照する。
S77:空き領域のIDは、指定されたidと一致するかどうかを判断する。一致する場合にはS79に、一致しない場合にはS81に動作を移行する。
S79:フラグは停止状態かどうかを判断する。停止状態の場合は動作をS83に、そうでない場合はS81に動作を移行する。
S81:ポインターを次のMCBへ進める。
S83:MCBを更新する。
S85:物理アドレスを論理アドレスに変換する。
S87:NULL(割当失敗)をリターンする。
以上の一連の動作により、メモリの割当処理を完了する。
次にメモリ解放処理の動作について、図15のフローチャートを用いて説明する。
S101:メモリ解放要求を受信する。
S103:論理アドレスを物理アドレスに変換する。
S105:ポインターをMCBの先頭にセットする。
S107:解放する領域の先頭アドレスをサーチする。
S109:先頭アドレスが見つかったかどうかを判断する。見つかった場合はS111に、見つからない場合はS113に動作を移行する。
S111:メモリの領域を解放して、MCBを更新する。
S113:ポインターを次のMCBへ進める。
S115:パーテーション内に使用中メモリ無しかどうかを判断する。使用中メモリが無い場合にはS117に、有る場合はS119に動作を移行する。
S117:変換テーブルからパーテーション情報を削除する。これにより動作を終了する。
S119:メモリ利用率は下限閾値未満かどうかを判断する。下限未満であればS121に、そうでなければS123に動作を移行する。
S121:変換テーブル内に同じIDの待機がないかどうかを判断する。待機が無い場合にはS123に移行する。そうでない場合には動作を終了する。
S123:変換テーブル内のフラグを停止から待機に変更する。
以上の一連の動作によりメモリの解放動作を完了する。
次にメモリの一括解放動作について図16のフローチャートを用いて説明する。
S131:メモリ一括解放要求を受信する。
S133:指定されたidから該当する物理パーテーションを選択する。
S135;変換テーブルからパーテーション情報を削除する。
以上の一連の動作によりメモリの一括解放動作が行われる。
[実施例の効果]
本発明実施例のメモリ管理システムにより、以下のことが可能となる。
フラグメンテーションを効率的に回避することが可能となる。
フラグメンテーションを回避する為の手段であるパーテーションを複数化することが可能となる。
フラグメンテーションを回避する為の手段であるパーテーションの区切り位置を動的に変更することが可能となる。
メモリの解放順序に制限を必要とせず、不要になったメモリから解放可能となる。
物理パーテーション中のフラグメンテーション率を監視して、フラグメンテーション率が上限閾値を超えた場合には、当該物理パーテーションに対するメモリの割当を禁止するため、細分化されたメモリ領域を使用することによる処理速度の低下を抑制可能となる。さらに、当該物理パーテーションのフラグメンテーション率が下限閾値を下回った場合には割当の禁止を解除するため、新規にパーテーションを消費することなくメモリ利用効率が向上する。
M10 メモリ管理部(メモリ管理システム)
M13 変換テーブル
M17 物理パーテーション管理部
M19 変換部
M21 論理パーテーション管理部
200 メモリマネージメント初期化部
201 変換テーブル管理部(物理パーテーション管理部、論理パーテーション管理部)
211 パーテーション管理部
213 パーテーションサイズ管理部
215 アドレス(物理・論理)管理部
217 ID管理部
219 フラグ(待機・停止)管理部
221 アドレス変換部(変換部)
231 物理アドレスから論理アドレスへの変換部
233 論理アドレスから物理アドレスへの変換部
241 メモリ統計情報管理部(物理パーテーション管理部)
251 メモリ使用ブロック数の管理部
253 メモリ使用バイト数の管理部
255 パーテーションの閾値チェック部
257 閾値種別管理部
261 MCB管理部
271 malloc()処理部
273 free()処理部

Claims (7)

  1. 論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理部と、
    物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理部と、
    前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換部とを有し、
    前記物理パーテーション管理部は、前記物理パーテーションのフラグメンテーション率を監視して当該フラグメンテーション率が所定の上限閾値を超えた物理パーテーションに対するメモリの割当を禁止する
    ことを特徴とするメモリ管理システム。
  2. 請求項1のメモリ管理システムであって、
    前記物理パーテーション管理部は、前記メモリの割当を禁止したフラグメンテーション率が所定の上限閾値を超えた物理パーテーションの当該フラグメンテーション率が所定の下限閾値を下回った場合には、再度のメモリの割当を許可する
    ことを特徴とするメモリ管理システム。
  3. 請求項1又は2のメモリ管理システムであって、
    前記変換部は、前記論理アドレス空間と前記物理アドレス空間とを関連付ける変換テーブルを生成又は消去する
    ことを特徴とするメモリ管理システム。
  4. 請求項1から3のいずれかのメモリ管理システムであって、
    前記論理パーテーション管理部は、前記仮想メモリの割当をアプリケーション毎に連続した論理アドレス空間に確保する
    ことを特徴とするメモリ管理システム。
  5. 請求項1から4のいずれかのメモリ管理システムであって、
    前記物理パーテーション管理部は、ハードウェア依存によるアクセス領域を固定領域とし、前記論理パーテーション管理部からの前記アプリケーションによる仮想メモリ割当に対して、前記固定領域には割当を行わない
    ことを特徴とするメモリ管理システム。
  6. 請求項1から5のいずれかのメモリ管理システムを有する
    ことを特徴とする電子機器。
  7. コンピュータに、
    論理アドレス空間においてアプリケーションが使用する仮想メモリの割当と解放を管理する論理パーテーション管理機能と、
    物理アドレス空間において実メモリを小サイズ毎の物理パーテーションに切り分けて前記実メモリの割当と解放を管理する物理パーテーション管理機能と、
    前記論理アドレス空間と前記物理アドレス空間との間のアドレス変換を行う変換機能とを実現させ、
    前記物理パーテーション管理機能は、前記物理パーテーションのフラグメンテーション率を監視して当該フラグメンテーション率が所定の上限閾値を超えた物理パーテーションに対するメモリの割当を禁止する
    ことを特徴とするメモリ管理プログラム。
JP2009047281A 2008-10-30 2009-02-27 メモリ管理システム、電子機器及びメモリ管理プログラム Expired - Fee Related JP5352284B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009047281A JP5352284B2 (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
JP2009047281A JP5352284B2 (ja) 2009-02-27 2009-02-27 メモリ管理システム、電子機器及びメモリ管理プログラム

Publications (2)

Publication Number Publication Date
JP2010204763A true JP2010204763A (ja) 2010-09-16
JP5352284B2 JP5352284B2 (ja) 2013-11-27

Family

ID=42966208

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP5352284B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111008076A (zh) * 2019-12-06 2020-04-14 安徽芯智科技有限公司 一种基于slab算法的内存管理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004192208A (ja) * 2002-12-10 2004-07-08 Kyocera Mita Corp メモリ管理システム
JP2004326957A (ja) * 2003-04-25 2004-11-18 Sharp Corp 動画像記録再生用ファイルシステム
JP2007249708A (ja) * 2006-03-16 2007-09-27 Fujitsu Ltd メモリ領域割り当て制御装置、メモリ領域割り当て制御プログラム、及びメモリ領域割り当て制御方法
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
JP2004192208A (ja) * 2002-12-10 2004-07-08 Kyocera Mita Corp メモリ管理システム
JP2004326957A (ja) * 2003-04-25 2004-11-18 Sharp Corp 動画像記録再生用ファイルシステム
JP2007249708A (ja) * 2006-03-16 2007-09-27 Fujitsu Ltd メモリ領域割り当て制御装置、メモリ領域割り当て制御プログラム、及びメモリ領域割り当て制御方法
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
CN111008076A (zh) * 2019-12-06 2020-04-14 安徽芯智科技有限公司 一种基于slab算法的内存管理方法
CN111008076B (zh) * 2019-12-06 2023-03-14 安徽芯智科技有限公司 一种基于slab算法的内存管理方法

Also Published As

Publication number Publication date
JP5352284B2 (ja) 2013-11-27

Similar Documents

Publication Publication Date Title
US8291192B2 (en) Memory management system
RU2661280C2 (ru) Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
TWI533152B (zh) 資料儲存裝置及方法
JP5510556B2 (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
KR102290540B1 (ko) 네임스페이스/스트림 관리
US7975123B2 (en) Computer system, management computer and storage system, and storage area allocation amount controlling method
WO2017054610A1 (zh) 计算机、服务质量控制方法及装置
US9405485B2 (en) Method and apparatus for writing data to a flash memory
JP7467593B2 (ja) リソース割振り方法、記憶デバイス、および記憶システム
JP2005031929A (ja) サーバに記憶領域を割り当てる管理サーバ、記憶装置システム、及びプログラム
EP3881192B1 (en) An apparatus and method for handling address decoding in a system-on-chip
CN109308269B (zh) 一种内存管理方法及装置
JP2009230352A (ja) ストレージ容量拡張方法及びその方法を使用するストレージシステム
US20080244118A1 (en) Method and apparatus for sharing buffers
US7904688B1 (en) Memory management unit for field programmable gate array boards
JP2008225520A (ja) 仮想マシン環境においてメモリ資源を配置するメモリ資源配置制御方法、仮想マシンシステム及びプログラム
CN116719753A (zh) 数据处理设备、数据处理方法和计算机可读存储介质
JP2007122268A (ja) 計算機システム、記憶領域割当方法及び管理計算機
CN112162818B (zh) 一种虚拟内存分配方法、装置、电子设备及存储介质
JP5352284B2 (ja) メモリ管理システム、電子機器及びメモリ管理プログラム
CN114518962A (zh) 内存的管理方法及装置
JP5377001B2 (ja) メモリ管理システム、電子機器及びメモリ管理プログラム
CN112352216B (zh) 数据存储方法及数据存储装置
JP2010108216A (ja) メモリ管理システム、電子機器及びメモリ管理プログラム
JP2008033838A (ja) メモリ管理装置及びメモリ管理方法

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

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: 20130730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130826

R150 Certificate of patent or registration of utility model

Ref document number: 5352284

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees