JPH10320265A - メモリ管理方法 - Google Patents

メモリ管理方法

Info

Publication number
JPH10320265A
JPH10320265A JP13144497A JP13144497A JPH10320265A JP H10320265 A JPH10320265 A JP H10320265A JP 13144497 A JP13144497 A JP 13144497A JP 13144497 A JP13144497 A JP 13144497A JP H10320265 A JPH10320265 A JP H10320265A
Authority
JP
Japan
Prior art keywords
memory
page
size
block
address
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.)
Pending
Application number
JP13144497A
Other languages
English (en)
Inventor
Motohide Nishimura
元秀 西村
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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP13144497A priority Critical patent/JPH10320265A/ja
Publication of JPH10320265A publication Critical patent/JPH10320265A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】プログラムの複雑化及びテーブルサイズの累増
等を招くことなく、効率良くメモリ管理を行うことがで
きるメモリ管理方法を提供すること。 【解決手段】メモリ確保部111、メモリ再確保部11
2及びメモリ解放部113をそれぞれページメモリ管理
部と小ブロック管理部で構成し、各ページメモリ管理部
が共通のページメモリ管理テーブル114bをアクセス
してページ単位のメモリ操作を行い、メモリ管理ユニッ
トのページサイズよりも小さい最終ページについては各
小ブロック管理部が小ブロック管理テーブル114cを
アクセスしてメモリ操作を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、組み込み機械など
計算機一般のオペレーティングシステムのメモリ管理方
式に関し、特に、中央処理装置に内蔵した又は外付けの
メモリ管理ユニットがページ単位でメモリを管理し、該
中央処理装置上でマルチプロセスを管理するオペレーテ
ィングシステムが各プロセスに対して任意のサイズのメ
モリブロックの確保、確保したメモリブロックのサイズ
変更及びメモリブロックの解放を行うメモリ管理方法に
関する。
【0002】
【従来の技術】従来、オペレーティングシステム(以下
「OS」と言う。)によるメモリ管理技術として、線形
リストによるメモリ管理方式(以下「線形リスト方式」
と言う。)と、仮想記憶管理によるメモリ管理方式(以
下「仮想記憶方式」と言う。)とが知られている。ここ
でまず、線形リスト方式とは、OSが所定のプロセスの
ために確保したメモリブロックを相互にチェイン接続
し、リスト構造を用いてメモリブロックを管理するメモ
リ管理方式である。
【0003】図6に示すように、この線形リスト方式で
は、確保したメモリブロックの先頭に管理テーブルを設
け、該管理テーブル内の情報を用いてメモリブロックを
チェイン接続する。この管理テーブル内には、メモリブ
ロックの属性、前のブロックのアドレス、次のブロック
のアドレス、メモリブロックのサイズ及びメモリを確保
したプロセスの識別子(以下「プロセスID」と言
う。)等のメモリ管理に必要な情報が記録される。
【0004】そして、メモリを確保する場合には、メモ
リブロックのテーブルを順に検索し、次のテーブルのア
ドレス及びサイズから確保されていない空きメモリのサ
イズを計算する。空きメモリが確保すべきメモリ容量よ
りも大きな場合には、空きメモリブロックの先頭に新た
な管理テーブルを作成して情報を記録し、前後の管理テ
ーブルに、該メモリブロックに関する情報を書き込む。
これに対して、メモリを解放する場合には、図7に示す
ように解放対象となるメモリブロックに連結された前後
のメモリブロックの管理テーブルから、解放対象となる
メモリブロックの情報を削除し、その代わりにお互いの
メモリブロックの情報を格納してチェイン接続する。こ
のように、線形リスト方式では、上記管理テーブルを用
いたメモリの確保及び解放を通して、メモリ管理を行っ
ている。
【0005】次に、仮想記憶方式について説明する。現
在一般的に用いられている計算機の中央処理装置(以下
「CPU」と言う。)は、内在又は外付けされたメモリ
管理ユニット(以下「MMU」と言う。)を用いてメモ
リ管理を行っており、仮想記憶方式では、論理アドレス
及び物理アドレスをMMU固有のページサイズ単位に分
割し、OSが論理ページを物理ページに割り当てる。
【0006】図8に示すように、この論理アドレスは、
ページ情報及びオフセットからなり、論理アドレスを物
理アドレスに変換する場合には、該ページ情報を用いて
アドレス変換テーブルを検索してページの物理アドレス
を決定し、それにオフセットを加えて実際の物理アドレ
スとする。なお、一度変換された論理アドレスと該論理
アドレスに対応する物理アドレスをアドレス変換バッフ
ァ(以下「TLB」と言う。)に一時記憶することによ
り、変換の高速化が実現される。
【0007】ここで、この仮想記憶方式には、単一仮想
記憶方式と多重仮想記憶方式とがある。
【0008】単一仮想記憶方式は、図9に示すように、
複数のプロセスが同一の論理アドレス空間を共有するメ
モリ管理形態となり、実際にメモリ領域を確保する場合
には、論理アドレス上のメモリブロックをページ単位で
確保し、確保された論理アドレス空間のページが実際の
物理アドレス空間のページに割り当てられる。なお、ペ
ージの変換は、OSによって自由に設定できるため、複
数ページにまたがるメモリブロックが論理アドレス上で
連続であっても、物理アドレス上で連続である必要はな
い。
【0009】これに対して、多重仮想記憶方式は、マル
チプロセス対応型OSが一般的に採用するメモリ管理方
式であり、図10のように、プロセスごとに異なる論理
アドレス空間を有するメモリ管理形態となる。プロセス
の論理アドレス空間がそれぞれ独立し、あるプロセスが
別のプロセスのメモリ内容を破壊することがないため、
データ保護を要する場合に使用される。なお、この多重
仮想記憶方式では、プロセスを切り替える都度アドレス
変換テーブルを切り替えねばならないため、CPU内部
に設けられるキャッシュメモリやTLBをその都度初期
化する必要がある。
【0010】
【発明が解決しようとする課題】しかしながら、上記線
形リスト方式及び仮想記憶方式のいずれを用いたとして
も、メモリの有効利用という面では大きな問題がある。
【0011】具体的には、この線形リスト方式では、メ
モリの確保及び解放が頻繁に行われると、確保するメモ
リプール(以下「ヒープ領域」と言う。)上に空きメモ
リのかけらが多数存在することとなり、メモリ使用効率
が低下する。このため、特公平8−2526384号公
報に開示されるガーベジコレクション方法等を用いて、
解放したメモリ領域のかけらを集めて所定サイズのメモ
リ領域を確保し、もってメモリの有効利用を図る必要が
生ずる。
【0012】しかし、このガーベジコレクションを用い
ると、メモリのアドレス自体が変化するため、プロセス
のメモリアクセスでは、図11に示すように、固定アド
レスのテーブルに各メモリブロックの先頭アドレスを記
憶しておき、そこからの相対アドレスで実際のメモリア
ドレスを得る必要がある。このため、メモリアクセスが
2段階必要となってプログラムが複雑化し、またこれが
行われている間は他のプロセスを中断する必要が生じ
る。
【0013】一方、仮想記憶方式では、論理ページを自
由に物理ページに割り当てられるため、上記問題は解決
できるものの、ページ単位でメモリを確保するために、
メモリブロックの最終ページでは未使用のメモリ領域が
発生する。特に、ページサイズよりも小さな単位でメモ
リ確保を行う場合には、ページごとに未使用のメモリ領
域が発生する。このため、ページサイズよりも小さな単
位でメモリ確保を頻繁に行うような場合には、実際には
空きメモリ領域が残っていても、メモリを確保できなく
なってしまう。
【0014】OSのメモリ管理部は、論理アドレスのヒ
ープ領域をあらかじめ定めておくが、このサイズを限定
すると、物理メモリと同じくかけらが残る問題が発生
し、連続したサイズのメモリが取れない可能性がある。
【0015】論理アドレスは、一般に物理アドレスと比
較して十分に大きいため、ヒープに使用する論理アドレ
スを大きく取れば良いが、そうすると逆にアドレス変換
及びアドレス管理に必要となるテーブルサイズが大きく
なってしまう。
【0016】また、多重仮想記憶方式を用いる場合に
は、組み込み機器などで使用される安価なRISC−C
PUでは負担が大きい。例えば、ARM社のRISCプ
ロセッサはキャッシュメモリを論理アドレスで操作する
ため、プロセスの切換えの度にキャッシュTLBのフラ
ッシュを行う必要がありRAMからキャッシュにデータ
転送が発生し、性能が大きく低下する。
【0017】このように、従来の線形リスト方式及び仮
想記憶方式のいずれを用いたとしてもメモリの有効利用
を図ることが難しいため、プログラムの複雑化及びテー
ブルサイズの累増を招くことなく、いかにしてメモリを
有効利用するかが重要な課題となっていた。
【0018】そこで、本発明では、上記課題を解決し、
プログラムの複雑化及びテーブルサイズの累増等を招く
ことなく、効率良くメモリ管理を行うことができるメモ
リ管理方法を提供することを目的とする。
【0019】
【課題を解決するための手段】上記目的を達成するた
め、第1の発明は、中央処理装置に内蔵した又は外付け
のメモリ管理ユニットがページ単位でメモリを管理し、
該中央処理装置上でマルチプロセスを管理するオペレー
ティングシステムが各プロセスに対して任意のサイズの
メモリブロックの確保、確保したメモリブロックのサイ
ズ変更及びメモリブロックの解放を行うメモリ管理方法
において、前記メモリブロックのサイズが前記メモリ管
理ユニットのページサイズよりも大きな場合には、該メ
モリ管理ユニットがページ単位でメモリを確保し、メモ
リ管理ユニットのページサイズよりも小さい場合には、
ページ単位で確保されたメモリブロックの最終ページで
発生する未使用メモリの集合を小メモリ用のメモリプー
ルとして使用することを特徴とする。
【0020】また、第2の発明は、前記オペレーティン
グシステムは、各プロセスに提供する物理空間と同一サ
イズの2つの論理空間を確保し、通常は一方の論理空間
のみを使用し、前記メモリブロックの確保又は解放によ
り、前記物理空間にメモリの余裕があるにも係わらず連
続したアドレスを取得できない場合にのみ他方の論理空
間を使用し、常に連続した論理アドレスのメモリブロッ
クの確保を保証することを特徴とする。
【0021】また、第3の発明は、前記小メモリ用のメ
モリプールは、前記ページ単位のメモリと異なる論理空
間を使用し、変換された物理アドレスのページは2重に
マッピングされることを特徴とする。
【0022】
【発明の実施の形態】以下、図面を参照して本実施の形
態について説明する。
【0023】まず、本実施の形態で用いる計算機システ
ムのハードウエア構成について説明する。図2は、本実
施の形態で用いる計算機システムのハードウエア構成を
示す図であり、CPU本体20a、キャッシュメモリ2
0b、MMU20c及びTLB20dを有するCPU部
20が、アドレスバス21及びデータバス22を介し
て、ROM23及びRAM24のメモリと、物理メモリ
マップ上にマッピングされたI/O装置25とをアクセ
スする。このように、本実施の形態では、CPU本体2
0aが取り扱う論理アドレスをMMU20cを介して物
理アドレスに変換する上記単一仮想記憶方式を前提とし
ている。なお、この単一仮想記憶方式を用いることによ
り、DMA転送などの特別な場合を除き、キャッシュを
フラッシュする必要がなくなり、安価なRISC−CP
Uを用いた場合でも性能低下を最小限に抑えることがで
きる。
【0024】次に、図2に示すCPU部20上で動作す
るオペレーティングシステムについて説明する。図1
は、本実施の形態で用いるオペレーティングシステム
(OS)の構成を示す機能ブロック図である。図1に示
すOS10は、基本的なページ管理を単一仮想記憶方式
で行い、メモリをサイズで確保する。ただし、メモリブ
ロックの最終ページには未使用部が発生するため、かか
る未使用部をページサイズの1/2以下の小メモリ確保
用のメモリプールとして使用する。このため、小さなブ
ロックを確保するためにわざわざページメモリを取得す
る不合理をなくすことができ、もってメモリ効率を上げ
ることができる。
【0025】また、このOS10は、ヒープ領域の論理
空間として実際に使用する物理ヒープサイズの2倍のメ
モリ領域を確保しておき、通常はその一つだけを使用
し、その空間で連続するサイズが確保できなかった場合
のみ、他方の空間を使用するよう構成している。このた
め、常に連続した論理アドレスが確保でき、使用する論
理アドレス空間を最小にすることができる。また、小ブ
ロックの論理アドレスを、別の空間に設けることで論理
アドレスが分断されることを抑制している。
【0026】次に、このOS10の具体的な構成につい
て説明する。図1に示すように、このOS10は、メモ
リブロックの確保、メモリブロックのサイズ変更及びメ
モリブロックの解放を行うメモリ管理部11と、ソフト
ウエア割り込み処理を行うソフトウエア割り込み処理部
12と、システムコールに対応する分岐処理を行うシス
テムコール分岐部13とからなり、プロセス14及び1
5は、複数のスレッドからなる。なお、プロセスは、O
S10の資源(メモリ、ファイルなど)を確保する単位
であり、スレッドはCPUを確保する単位である。
【0027】また、メモリ管理部11は、メモリ確保部
111、メモリ再確保部112、メモリ解放部113、
メモリ管理表114及び初期化部115からなり、メモ
リ確保部111、メモリ再確保部112及びメモリ解放
部113は、それぞれページメモリ管理部及び小ブロッ
ク管理部を有し、これらを用いて共通のメモリ管理表1
14を操作する。
【0028】また、メモリ管理表114は、アドレス変
換テーブル114a、ページメモリ管理テーブル114
b及び小ブロック管理テーブル114cからなり、初期
化部115に内在されたMMU初期化部115a、ペー
ジメモリ初期化部115b及び小ブロック初期化部11
5cによりそれぞれ初期化される。
【0029】具体的には、まずOS10起動時に初期化
部115がメモリ管理表114を初期化し、OS10が
起動した後に、応用プログラムのプロセス14又は15
が、OS10に対してシステムコール(ソフトウエア割
り込み)によってメモリの確保、サイズ変更、解放の要
求を送る。その後、OS10内のソフトウエア割り込み
処理部12及びシステムコール分岐部13は該要求を解
析し、メモリ管理部11のそれぞれのルーチン111〜
113に分岐する。
【0030】各処理部111〜113は、システムコー
ルの引数の情報から、ページメモリであるか小ブロック
であるかを判断し、それぞれの内部ルーチンへさらに分
岐する。各ルーチンは、引数の情報にしたがってメモリ
管理表114を操作し、要求元のプロセス14又は15
へ情報を返信する。例えば、メモリ確保又はサイズ変更
の場合にはメモリブロックの先頭アドレスを返し、メモ
リ解放の場合には解放が成功したか否かを返す。その
後、プロセス14又は15は、その情報を使用して実際
のメモリの使用を行う。
【0031】次に、図1に示す初期化部115による初
期化処理について説明する。図3は、本実施の形態で用
いるメモリマップを示す図であり、論理アドレス上にマ
ッピングされているプログラム/データが、アドレス変
換されて物理アドレスとなることを示している。なお、
本実施の形態では、ヒープ領域以外は論理アドレスと物
理アドレスとが一致することとする。そして、OS10
が起動すると、まず応用プログラムであるプロセス14
又は15に解放するヒープ領域のサイズを決定し、メモ
リ管理表114を初期化する。この状態では、まだMM
U20cのメモリ管理機能は無効化されており、物理ア
ドレスがそのまま使用されている。
【0032】ここで、図3に示すように、物理アドレス
上のヒープ領域30のサイズは、RAM24の全サイズ
から、スタティックデータとメモリ管理表114の和を
引いて計算する。すなわち、本実施の形態では、プログ
ラムをROM23に置き、かかるプログラムがヒープ領
域30に影響を及ぼさないようにしている。また、I/
O領域は、I/O装置25のレジスタがメモリ上にマッ
ピングされただけなのでRAM24のサイズとは関係し
ない。なお、プログラムをRAM24上に置く場合に
は、さらにプログラムのサイズを引かねばならない。
【0033】図4に示すように、論理アドレス上のヒー
プ領域31(以下「論理ヒープ領域31」と言う。)の
ページサイズは、物理アドレス上のヒープ領域30(以
下「物理ヒープ領域30」と言う。)の2倍+小メモリ
ブロック用の論理ページとして計算され、本実施の形態
では8ページとなる。
【0034】論理ヒープ領域31のアドレスは、I/O
領域などの物理アドレス空間の後に置き、将来RAMサ
イズが拡張された場合でも、連続した論理アドレスを取
得できるようにしておく。ヒープサイズが決定すると、
論理サイズ分のページメモリ管理テーブル114bをス
タティックデータのすぐ後ろに確保して初期化する。こ
のページメモリ管理テーブル114bは、論理ヒープ領
域31のページと1対1に確保し、全てを0に初期化
し、最初のテーブルのメモリブロックのサイズを物理ヒ
ープページ数に入れる。なお、ページ属性は、ページメ
モリ及び小ブロックの両者に共通して以下の意味があ
る。
【0035】 0 000 空き 1 001 ページメモリ(4096バイト) 2 010 小メモリ(2048バイト) 3 011 小メモリ(1024バイト) 4 100 小メモリ(512バイト) 5 101 小メモリ(256バイト) 6 110 小メモリ(128バイト) 7 111 ページ/小ブロック共用ページ ページメモリ管理テーブル114bの論理ヒープページ
領域の1ページ目の最後に終端として、最初のページと
のリンクを設定する。具体的には、前のページ番号に最
初のページ番号を入れ、次のページに当該ページ番号を
入れる。
【0036】最初のページの管理テーブルには、前のペ
ージに自分のページ番号を、次のページに終端のページ
番号を入れる。同様に、小ブロック用のページメモリ管
理テーブルの先頭と終端を設定しリンクを張る。ただ
し、小ブロックの先頭の空きサイズは設定しない。
【0037】次に、MMU20cが使用するアドレス変
換テーブル114aを初期化する。本実施の形態では、
実存するROM、RAM、I/O領域の物理アドレス空
間はヒープ領域を除き論理アドレスに1対1に対応し、
物理アドレスはそのまま使用できるようにしている。物
理ヒープ領域30だけは2重マッピングを避けるため、
未使用領域に設定される。次に、論理ヒープ領域31を
設定する。論理ヒープ領域31の1ページ目だけを物理
ヒープ領域30に1対1に変換できるよう、あらかじめ
設定する。
【0038】これにより、プロセス14又は15起動後
の無用なアドレス変換テーブル114aの変更及びTL
B20dのフラッシュを抑制する。2ページ目と小ブロ
ック用の空間は、それ以外の空間と同じく未使用領域に
設定する。以上でOS10初期化時のメモリ管理表11
4の初期化が終了する。以上、図1に示す初期化部11
5による初期化処理について説明した。
【0039】次に、図1に示すメモリ確保部111によ
るメモリの確保について説明する。このメモリ確保部1
11に渡される引数は、確保するメモリサイズ及びプロ
セスIDである。このメモリサイズがページサイズの1
/2(2048バイト)よりも大きな場合にはページメ
モリ管理部111aに分岐し、1/2以下の場合には小
ブロック管理部111bへ分岐する。
【0040】ページメモリ管理部111aは、次式に従
ってメモリサイズから確保するページ数を計算する。 ページ数 = (サイズ−1)/ページサイズ+1 まず、確保するページサイズが、スタティック領域に記
録された空きサイズ以下であるか否かを調べ、空きサイ
ズ以下でない場合には、メモリ確保不可として0を返
す。
【0041】一方、確保可能な場合には、ページメモリ
管理テーブル114bの先頭からページ属性が空きか否
かと、空きであればその空きページサイズが確保するサ
イズ以上であるか否かとを検索し、確保可能な場合に
は、そのページ番号から論理ヒープアドレスを計算し、
返り値として確保する。そして、このページメモリ管理
テーブル114bのページ属性をページメモリ(00
1)とし、メモリブロックのサイズに確保するバイト数
と次に確保したプロセスIDを入れる。
【0042】空きページ数すなわち確保したページ数が
0以外であれば、確保したページ分を進めた管理テーブ
ルのリストに挿入する。そして、スタティック領域に記
録された空きページサイズから確保したページサイズを
引く。最後に確保した論理アドレスを返り値としてプロ
セスに返す。
【0043】メモリが確保できなかった場合は、論理ヒ
ープ領域の2ページ目を使用して連続したアドレスを確
保し、1ページ目の空きのページテーブルを検索し、そ
の部分に対応するアドレス変換テーブルのデータを2ペ
ージ目に確保した管理テーブルにコピーする。1ページ
目のページメモリ管理テーブルは、リストは変更しない
が、コピーした部分の空きサイズは引いて設定する。2
ページ目のページメモリ管理テーブルは、リスト構造と
メモリブロックサイズのみを設定する。2ページ目が使
用される場合は、常にページメモリの使用中である。
【0044】確保するページ数をページサイズで割った
余りをページサイズから引いた値が128バイトより大
きい場合(確保した最終ページに未使用メモリが残って
いる場合)は、このページを小ブロック管理テーブルに
登録する。最終ページのページ属性に共用ページ属性
(111)を入れる。次に、小ブロック用のページ管理
テーブルリストを検索し、空きページの小ブロック番号
に小ブロック管理テーブル内の位置を示す番号を入れ、
そしてアドレス変換テーブルのこのページに対応する部
分に上記最終ページと同じ物理アドレスを示すデータを
入れる。これにより、変換される物理ページは2重にマ
ッピングされるが、使用する物理メモリは重ならない。
【0045】また、小ブロック処理部111bは、サイ
ズを2で割りその値が128以下になるまでの回数から
メモリ属性を決定する。小ブロックのページメモリリス
トを検索し、同じ属性のものがあれば、小ブロック番号
から小ブロック管理テーブル114cを検索し、利用ビ
ットパターンを調べ、未使用部分があるならその位置に
1を入れ、ビット位置から論理ヒープアドレスを計算し
て先頭アドレスを返す。以上、図1に示すメモリ確保部
111が行うメモリの確保について説明した。
【0046】次に、図1に示すメモリ再確保部112が
行うメモリの再確保について説明する。メモリ再確保部
112に渡される引数は、確保したメモリアドレスと新
しいメモリサイズ及びプロセスIDである。まず、メモ
リアドレスから確保してあるメモリブロックのページメ
モリ管理テーブル114bを調べ、該ページメモリ管理
テーブル114bのページ属性がページメモリならペー
ジメモリ管理部112aに、小ブロックなら小ブロック
処理部112bに分岐する。
【0047】ページメモリ管理部112aは、新たに確
保するサイズとページメモリ管理テーブル114bに記
録されている確保サイズとを比較し、新たに確保するサ
イズの方が小さい場合、それぞれをページサイズにして
比較し、同じであれば、管理テーブルのメモリサイズを
新しいものに変更し、前と同じアドレスを返す。
【0048】次に、新たに確保するメモリサイズをペー
ジサイズの1/2(2048バイト)と比較し、小さけ
れば小ブロックの確保ルーチンを呼び出して確保し、前
のブロックの先頭からサイズバイト分をコピーして、新
たに確保した小ブロックの先頭アドレスを返す。サイズ
が1/2より大きい場合は、解放するページが出るため
ページメモリ管理テーブルのサイズを書き換え、新しく
確保したページを進めたページメモリ管理テーブルに空
きサイズを設定し、リストに追加する。
【0049】解放するページ数は空きページ数に追加す
る。解放するページに共用メモリがある場合には、空き
ページから1を引いておく。新たに確保されたメモリブ
ロックの最終ページの未使用部が128バイト以上であ
れば、小ブロックのリストに追加する。新たに確保する
サイズが、古いサイズより大きな場合には、ページメモ
リ確保部を呼び出してメモリを確保し、古い部分からメ
モリをコピーする。確保できない場合には、空きページ
数と確保中のメモリサイズとの和を求め、そのサイズが
確保するサイズよりも大きい場合は、論理ヒープの2ペ
ージ目に論理アドレスを確保し、確保してある論理ペー
ジに対応するアドレス変換テーブルの値を2ページ目に
コピーし、古いページメモリ管理テーブルのサイズを0
にする。そして、1ページ目の空きページのアドレス変
換テーブルの値を、2ページ目のサイズを満たすまでコ
ピーする。
【0050】また、小ブロック処理部112bは、新た
に確保するサイズとページサイズの1/2(2048バ
イト)と比較して、大きい場合はページメモリ確保部を
使用してメモリを確保し内容をコピーし、古い小ブロッ
クを解放し、新たに確保したメモリブロックの先頭アド
レスを返す。小ブロックの場合も、小ブロックの確保機
能を使用して確保し、新しいブロックのサイズの方が大
きい場合は、古いブロックから全サイズをコピーし、小
さい場合は、新たに確保したサイズ分だけコピーし、新
しいブロックの先頭サイズを返す。以上、図1に示すメ
モリ再確保部112が行うメモリ再確保について説明し
た。
【0051】次に、図1に示すメモリ解放部113が行
うメモリ解放について説明する。メモリ解放部113へ
渡される引数は、確保したメモリアドレスと新しいメモ
リサイズ及びプロセスIDである。まず、メモリアドレ
スから確保してあるメモリブロックのページメモリ管理
テーブル114bを調べる。そのページメモリ管理テー
ブル114bのページ属性がページメモリならページメ
モリ処理部113aに、小ブロックなら小ブロック処理
部113bに分岐する。
【0052】ページメモリ管理部113aは、ページメ
モリ管理テーブル114bの属性を空きにし、解放する
ページサイズをメモリブロックのサイズに入れ、空きサ
イズに加える。最終ページが共用の場合はそれぞれ1を
引く。その場合は、共用ページをリストに挿入する。解
放するメモリブロックが論理ヒープの2ページ目の場合
は、管理テーブルの空きサイズを0にして、1ページ目
の対応する空きサイズを復帰させる。
【0053】また、小ブロック処理部113bは、ペー
ジメモリ管理テーブル114bから小ブロック番号を参
照し、利用ビットパターンの対応するアドレスに0を入
れる。ビットパターンが全て0になった場合は、ページ
メモリ管理テーブル114b自体を解放する。その時
に、その部分に対応する共用ページテーブルも解放し、
前後のテーブルリストを接続する。前のブロックが空き
の場合は、そのページ管理テーブルの空きサイズページ
と空きページの値に1を加える。以上、図1に示すメモ
リ解放部113が行うメモリ解放について説明した。
【0054】次に、図1に示すページメモリ管理テーブ
ル114bと、小ブロック管理テーブル114cとの関
係について説明する。図5は、実際のメモリ利用の具体
例を示す図であり、ページメモリ管理テーブルと小ブロ
ック管理テーブルとの関連を示している。同図に示すよ
うに、ページメモリ管理テーブル114bは、ページ単
位で取得されるページメモリを管理しており、具体的に
は、小ブロック番号、ページ属性、メモリブロックのサ
イズ、ブロックを取得したプロセスID、前のページ番
号及び後ろのページ番号を有する。また、小ブロック管
理テーブル114cは、各最終ページに関して、ページ
先頭からのオフセットバイト、小ブロックの利用ビット
パターンを管理している。
【0055】上述してきたように、本実施の形態では、
メモリ確保部111、メモリ再確保部112及びメモリ
解放部113をそれぞれページメモリ管理部と小ブロッ
ク管理部で構成し、各ページメモリ管理部が共通のペー
ジメモリ管理テーブル114bをアクセスしてページ単
位のメモリ操作を行い、メモリ管理ユニットのページサ
イズよりも小さい最終ページについては各小ブロック管
理部が小ブロック管理テーブル114cをアクセスして
メモリ操作を行うよう構成したので、下記に示す効果が
得られる。 1)従来未使用として使用できなかったメモリブロック
の最終ページのメモリを有効に利用し、もってメモリの
利用効率を上げることが可能となる。 2)小メモリ確保のためにページ単位のメモリ領域を確
保する必要をなくし、もってメモリの有効利用を図るこ
とが可能となる。 3)メモリのかけら部分について、常に空きページのサ
イズ分は連続したアドレスを確保し、もってメモリの有
効利用を図ることが可能となる。
【0056】
【発明の効果】以上詳細に説明したように、本発明は、
メモリブロックのサイズがメモリ管理ユニットのページ
サイズよりも大きな場合には、該メモリ管理ユニットが
ページ単位でメモリを確保し、メモリ管理ユニットのペ
ージサイズよりも小さい場合には、ページ単位で確保さ
れたメモリブロックの最終ページで発生する未使用メモ
リの集合を小メモリ用のメモリプールとして使用するよ
う構成したので、下記に示す効果が得られる。
【0057】1)従来未使用として使用できなかったメ
モリブロックの最終ページのメモリを有効に利用し、も
ってメモリの利用効率を上げることが可能となる。
【0058】2)小メモリ確保のためにページ単位のメ
モリ領域を確保する必要をなくし、もってメモリの有効
利用を図ることが可能となる。
【0059】3)メモリのかけら部分について、常に空
きページのサイズ分は連続したアドレスを確保し、もっ
てメモリの有効利用を図ることが可能となる。
【図面の簡単な説明】
【図1】本実施の形態で用いるオペレーティングシステ
ムの構成を示す機能ブロック図である。
【図2】本実施の形態で用いる計算機システムのハード
ウエア構成を示す図である。
【図3】本実施の形態で用いるメモリマップを示す図で
ある。
【図4】図3に示すヒープ領域の詳細なメモリマップを
示す図である。
【図5】ページメモリ管理テーブルと小ブロック管理テ
ーブルの関係を示す図である。
【図6】線形リストによるメモリ管理の概念を示す図で
ある。
【図7】線形リストによるメモリ解放の概念を示す図で
ある。
【図8】仮想記憶方式によるアドレス変換を示す図であ
る。
【図9】単一仮想記憶方式の概念を示す図である。
【図10】多重仮想記憶方式の概念を示す図である。
【図11】ガーベジコレクションの概念を示す図であ
る。
【符号の説明】
10…オペレーティングシステム 11…メモリ管理部 12…ソフトウエア割り込み処理部 13…システムコール分岐部、 14,15…プロセス 111…メモリ確保部 112…メモリ再確保部 113…メモリ解放部 114…メモリ管理表 115…初期化部 111a,112a,113a…ページメモリ管理部 111b,112b,113b…小ブロック管理部 114a…アドレス変換テーブル 114b…ページメモリ管理テーブル 114c…小ブロック管理テーブル 115a…MMU初期化部 115b…ページメモリ初期化部 115c…小ブロック初期化部 20…CPU部 20a…CPU本体 20b…キャッシュメモリ 20c…MMU 20d…TLB 21…アドレスバス 22…データバス 23…ROM 24…RAM 25…I/O装置 30…物理アドレスのヒープ領域 31…論理アドレスのヒープ領域

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 中央処理装置に内蔵した又は外付けのメ
    モリ管理ユニットがページ単位でメモリを管理し、該中
    央処理装置上でマルチプロセスを管理するオペレーティ
    ングシステムが各プロセスに対して任意のサイズのメモ
    リブロックの確保、確保したメモリブロックのサイズ変
    更及びメモリブロックの解放を行うメモリ管理方法にお
    いて、 前記メモリブロックのサイズが前記メモリ管理ユニット
    のページサイズよりも大きな場合には、該メモリ管理ユ
    ニットがページ単位でメモリを確保し、メモリ管理ユニ
    ットのページサイズよりも小さい場合には、ページ単位
    で確保されたメモリブロックの最終ページで発生する未
    使用メモリの集合を小メモリ用のメモリプールとして使
    用することを特徴とするメモリ管理方法。
  2. 【請求項2】 前記オペレーティングシステムは、 各プロセスに提供する物理空間と同一サイズの2つの論
    理空間を確保し、通常は一方の論理空間のみを使用し、
    前記メモリブロックの確保又は解放により、前記物理空
    間にメモリの余裕があるにも係わらず連続したアドレス
    を取得できない場合にのみ他方の論理空間を使用し、常
    に連続した論理アドレスのメモリブロックの確保を保証
    することを特徴とする請求項1記載のメモリ管理方法。
  3. 【請求項3】 前記小メモリ用のメモリプールは、 前記ページ単位のメモリと異なる論理空間を使用し、変
    換された物理アドレスのページは2重にマッピングされ
    ることを特徴とする請求項1記載のメモリ管理方法。
JP13144497A 1997-05-21 1997-05-21 メモリ管理方法 Pending JPH10320265A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13144497A JPH10320265A (ja) 1997-05-21 1997-05-21 メモリ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13144497A JPH10320265A (ja) 1997-05-21 1997-05-21 メモリ管理方法

Publications (1)

Publication Number Publication Date
JPH10320265A true JPH10320265A (ja) 1998-12-04

Family

ID=15058107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13144497A Pending JPH10320265A (ja) 1997-05-21 1997-05-21 メモリ管理方法

Country Status (1)

Country Link
JP (1) JPH10320265A (ja)

Similar Documents

Publication Publication Date Title
US6275917B1 (en) High-speed address translation system
EP0431467B1 (en) Multiprocessor system having distributed shared resources and dynamic global data replication
JP2833062B2 (ja) キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置
US6061773A (en) Virtual memory system with page table space separating a private space and a shared space in a virtual memory
US7000072B1 (en) Cache memory allocation method
US7516291B2 (en) Cooperative mechanism for efficient application memory allocation
US6070173A (en) Method and apparatus for assisting garbage collection process within a java virtual machine
US6125430A (en) Virtual memory allocation in a virtual address space having an inaccessible gap
US5873127A (en) Universal PTE backlinks for page table accesses
US5835961A (en) System for non-current page table structure access
JP7340326B2 (ja) メンテナンス動作の実行
US6487630B2 (en) Processor with register stack engine that dynamically spills/fills physical registers to backing store
US7493464B2 (en) Sparse matrix
US5893159A (en) Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
US4563737A (en) Virtual storage management
US7000087B2 (en) Programmatically pre-selecting specific physical memory blocks to allocate to an executing application
CN118819871B (zh) 内存管理方法、宿主机、电子设备、存储介质和程序产品
US5873120A (en) Variable split virtual address space allocation with multi-system compatibility
JPH07152641A (ja) プログラムキャッシュ装置
EP0404560A2 (en) Improved multiprocessor system
WO2023029982A1 (zh) 一种内存的分配方法及系统
JP2001051958A (ja) 多重プロセッサ多成分アーキテクチャのための統一メモリ管理システム
JP3991443B2 (ja) タスク切り替え方法及びデータ処理装置
JP3903678B2 (ja) 計算機システムのダンプ処理方法
JPH10320265A (ja) メモリ管理方法