JPH04209045A - 動的メモリ割り当て方式 - Google Patents

動的メモリ割り当て方式

Info

Publication number
JPH04209045A
JPH04209045A JP34073690A JP34073690A JPH04209045A JP H04209045 A JPH04209045 A JP H04209045A JP 34073690 A JP34073690 A JP 34073690A JP 34073690 A JP34073690 A JP 34073690A JP H04209045 A JPH04209045 A JP H04209045A
Authority
JP
Japan
Prior art keywords
memory
segment
dynamic
size
request
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
JP34073690A
Other languages
English (en)
Inventor
Kunio Ito
伊藤 邦夫
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP34073690A priority Critical patent/JPH04209045A/ja
Publication of JPH04209045A publication Critical patent/JPH04209045A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野〕 本発明は電子計算機システムにおける動的メモリ割り当
て方式に関し、より詳しくは、オペレーティングシステ
ムを構成するシステムコンポーネントやオペレーティン
グシステムの制御下で動作するオブジェクトプログラム
等のコンポーネントが実行中に動的に必要となるメモリ
を要求に応して割り当てる方式に関するものである。
〔従来の技術〕
従来、動的メモリの割り当てを行う場合、その動的メモ
リを要求するコンポーネントが直接にセグメント操作手
段を呼び出して動的セグメントの生成もしくは拡張を行
い、そのセグメント内の使用メモ°すの管理を自分で行
っていた。
なお、より詳しくは、次の2通りの方式に分かれる。
■メモリ割り当てが必要な度にセグメント操作手段を呼
び出して必要なメモリサイズをカバーする動的セグメン
トを確保し、動的メモリに割り当てる方式 ■適当な時期にセグメント操作手段を呼び出して動的セ
グメントを生成もしくは拡張し、大きなサイズのメモリ
領域をまとめて確保し、その動的セグメント内の使用領
域、未使用領域をコンポーネント自身で管理し、必要と
なる動的メモリをその動的セグメントから割り当てる方
式 〔発明が解決しようとする課題〕 従来の動的メモリ割り当て方式は上述したように2通り
の方式があったが、それぞれに次のような欠点があった
(1)上記の■の方式では、メモリを必要とする度にセ
グメント操作手段を呼び出すため、オーバーヘッドの増
加により電子計算機システムの性能低下を招く、また、
各コンポーネントにセグメント操作手段を呼び出して動
的メモリを確保するためのルーチンを設けなければなら
ないため、プログラムが複雑となる。
(2)上記の■の方式では、オーバーヘッドの増加はあ
まり問題とならないが、動的セグメント内の使用領域、
未使用領域の管理が複雑となり、プログラム開発の負担
となる。特に、動的セグメントの最大サイズを超えるメ
モリ要求がある時は複数の動的セグメントにまたがって
メモリの割り当てを行う必要があり、管理のための処理
が非常に複雑となる。また、確保した動的セグメントの
全ての領域が使用されるわけではないので、未使用領域
の有効利用が図れない。
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、オーバーヘッドを増大させることな
く、各コンポーネントのプログラムの部品化および動的
セグメントのメモリ領域の有効利用が図れる動的メモリ
割り当て方式を提供することにある。
(!!II!を解決するための手段〕 本発明は上記の目的を達成するため、動的メモリ要求コ
ンポーネントからの連続メモリ要求に応し、セグメント
管理テーブルを用いて動的セグメントから連続メモリを
割り当てる連続メモリ割り当て手段と、 動的メモリ要求コンポーネントからの不連続メモリ要求
に応じ、セグメント管理テーブルを用いて動的セグメン
トからメモリを割り当てる不連続メモリ割り当て手段と
、 前記連続メモリ割り当て手段および不連続メモリ割り当
て手段のメモリ割り当てに際して新たに動的セグメント
を生成するセグメント生成手段と、前記連続メモリ割り
当て手段および不連続メモリ割り当て手段のメモリ割り
当てに際して既存の動的セグメントを拡張するセグメン
ト拡張手段とを備えるようにしている。
なお、連続メモリ要求とは1つの動的セグメント内に連
続して動的メモリを確保することを特徴とする請求であ
り、不連続メモリ要求とは複数の動的セグメントにまた
がってもかまわないことを特徴とする請求である。
(作用) 本発明の動的メモリ割り当て方式にあっては、動的メモ
リ要求コンポーネントからの連続メモリ要求に応じ、連
続メモリ割り当て手段がセグメント管理テーブルを用い
て動的セグメントから連続メモリを割り当て、動的メモ
リ要求コンポーネントからの不連続メモリ要求に応じ、
不連続メモリ割り当て手段がセグメント管理テーブルを
用いて動的セグメントからメモリを割り当て、セグメン
ト生成手段が連続メモリ割り当て手段および不連続メモ
リ割り当て手段のメモリ割り当てに際して新たに動的セ
グメントを生成し、セグメント拡張手段が連続メモリ割
り当て手段および不連続メモリ割り当て手段のメモリ割
り当てに際して既存の動的セグメントを拡張する。
〔実施例〕
以下、本発明の実施例につき図面を参照して説明する。
第1図は本発明の動的メモリ割り当て方式の一実施例を
示す構成図である。
第1図において、1はオペレーティングシステムヲi!
成するシステムコンポーネントやオペレーティングシス
テムの制御下で動作するオブジェクトプログラム等の動
的メモリ要求コンポーネントであり、この動的メモリ要
求コンポーネント1の要求に応じて動的メモリを割り当
てる手段として、連続メモリ割り当て手段21および不
連続メモリ割り当て手段22から構成されるメモリ割り
当て手段2と、セグメント生成手段41およびセグメン
ト拡張手段42から構成されるセグメント操作手段4と
が設けられている。
また、3はメモリ割り当てに関して必要な情報を格納し
たセグメント管理テーブルであり、動的に生成される動
的セグメント51〜5nのそれぞれに対応したセグメン
ト管理テーブル31〜3nを有している。第2図ないし
第4図はセグメント管理テーブル31〜3nと動的セグ
メント51〜5nとの対応関係を示したものであり、セ
グメント管理テーブル31〜3nはそれぞれ、・使用メ
モリサイズ ・未使用メモリサイズ ・拡張可能メモリサイズ ・未使用メモリ先頭アドレス ・セグメント先頭アドレス の項目を有している。例えば、第2図において、セグメ
ント管理テーブル31は、1番目の動的セグメント51
は38にバイトを既に使用し、未使用メモリサイズが1
0にバイト、拡張可能メモリサイズが16にハイド、未
使用メモリ先頭アドレスがP2、セグメント先頭アドレ
スがPlであることを示している。なお、動的セグメン
トは最大サイズが決められている(第2図ないし第4図
の例では64にバイトに決められている。)。また、動
的セグメントは一定のサイズ(第2図ないし第4図の例
では16にハイ日を単位に拡張が行えるようになってい
る。ただし、最大サイズを超えることはできない。
なお、他の部分の機能等については、重複を避けるため
、以下の動作を通して説明することとする。
以下、上記の実施例の動作を場合を分けて説明する。
(1)連続メモリ要求に対する処理 動的メモリ要求コンポーネント1は、1つの動的セグメ
ント内に連続して動的メモリを確保する必要が生した場
合、必要なメモリサイズを指定して連続メモリ要求を出
す。なお、連続メモリ要求は、要求するメモリサイズが
動的セグメントの最大サイズを超える場合には行えない
動的メモリ要求コンポーネント1から連続メモリ要求が
あると、メモリ割り当て手段2の連続メモリ割り当て手
段21が動作する。
連続メモリ割り当て手段21は、要求されたメモリサイ
ズとその時点で既に生成されている動的セグメント(5
1〜5n)に対応するセグメント管理テーブル(31〜
3n)の未使用メモリサイズとを比較し、要求されたメ
モリサイズの方が小さい場合には、そのセグメント管理
テーブル(31〜3n)の未使用メモリ先頭アドレスに
格納されている値を動的メモリ要求コンポーネント1が
要求したメモリのアドレスとして返却する。
また、要求されたメモリサイズの方が大きい場合には、
更にセグメント管理テーブル(31〜3n)の拡張可能
メモリサイズと未使用メモリサイズとを加えたサイズを
要求されたメモリサイズと比較し、要求されたメモリサ
イズの方が小さい場合には、セグメント操作手段4のセ
グメント拡張手段42を用いて動的セグメント(51〜
5n)を必要な単位だけ拡張した上で、セグメント管理
テーブル(31〜3n)の未使用メモリ先頭アドレスに
格納されている値を動的メモリ要求コンポーネント1が
要求したメモリのアドレスとして返却する。
また、拡張可能メモリサイズと未使用メモリサイズとを
加えたサイズよりも要求されたメモリサイズの方が大き
い場合には、その動的セグメント(51〜5n)内で連
続してメモリを割り当てることができないため、セグメ
ント操作手段4のセグメント生成手段41を用いて新た
に動的セグメントを生成し、その先頭アドレスを動的メ
モリ要求コンポーネントlが要求したメモリのアドレス
として返却する。
いずれの場合にもセグメント管理テーブル(31〜3n
)の各項目を、動的メモリを割り当てた後の状態に更新
する。
今、第2図の状態Xにおいて、動的メモリ要求コンポー
ネント1から2にバイトの連続メモリ要求があった場合
を例にして具体的に動作を説明する。
連続メモリ割り当て手段21は、要求されたメモリサイ
ズ2にバイトとその時点で既に生成されている動的セグ
メント5Iに対応するセグメント管理テーブル31の未
使用メモリサイズ10にバイトとを比較するが、要求さ
れたメモリサイズ2にバイトの方が小さいので、セグメ
ント管理テーブル31の未使用メモリ先頭アドレスP2
を動的メモリ要求コンポーネントlが要求したメモリの
アドレスとして返却する。これにより、アドレスP2か
ら2にバイトが動的メモリ要求コンポーネント1の動的
メモリとして割り当てられる。
次いで、連続メモリ割り当て手段21は、セグメント管
理テーブル31の使用メモリサイズを2にバイトの領域
を新たに割り当てたため40にバイトに更新し、未使用
メモリサイズは2にバイト減少したため8kに更新し、
拡張可能メモリサイズは今回の要求で動的セグメントの
拡張を行わなかったので更新はせず、未使用メモリ先頭
アドレスはP2から2にバイト後ろにずらしたP3に更
新し、セグメント先頭アドレスは更新はしない。
以上の結果、第2図の状態Xは第3図の状態Xlで示す
ように更新される。
(2)不連続メモリ要求に対する処理 動的メモリ要求コンポーネント1は、動的メモリを確保
する必要が生じた場合であって、その動的メモリが複数
の動的セグメントにまたがってもかまわないような場合
には、必要なメモリサイズを指定して不連続メモリ要求
を出す。なお、要求するメモリサイズが動的セグメント
の最大サイズを超える場合には必ず不連続メモリ要求と
しなければならないが、最大サイズ以下であっても不連
続メモリ要求とすることは自由である。
動的メモリ要求コンポーネント1から不連続メモリ要求
があると、メモリ割り当て手段2の不連続メモリ割り当
て手段22が動作する。
不連続メモリ割り当て手段22は、要求されたメモリサ
イズとその時点で既に生成されている動的セグメント(
51〜5n)に対応するセグメント管理テーブル(31
〜3n)の未使用メモリサイズとを比較し、要求された
メモリサイズの方が小さい場合には、そのセグメント管
理テーブル(31〜3n)の未使用メモリ先頭アドレス
に格納されている値を動的メモl〕要求コンポーネント
1が要求したメモリのアドレスとして返却する。
また、要求されたメモリサイズの方が大きい場合には、
更にセグメント管理テーブル(31〜3n)の拡張可能
メモリサイズと未使用メモリサイズとを加えたサイズを
要求されたメモリサイズと比較し、要求されたメモリサ
イズの方が小さい場合には、セグメント操作手段4のセ
グメント拡張手段42を用いて動的セグメント(51〜
5n)を必要な単位だけ拡張した上で、セグメント管理
テーブル(31〜3n)の未使用メモリ先頭アドレスに
格納されている値を動的メモリ要求コンポーネント1が
要求したメモリのアドレスとして返却する。
また、拡張可能メモリサイズと未使用メモリサイズとを
加えたサイズよりも要求されたメモリサイズの方が大き
い場合には、拡張可能メモリサイズと未使用メモリサイ
ズとを加えたメモリサイズを1番目の割り当て領域とし
て割り当てるため、セグメント操作手段4のセグメント
拡張手段42を用いて動的セグメント(51〜5n)を
拡張可能メモリサイズだけ拡張し、1番目の動的セグメ
ント(51〜5n)を最大サイズの大きさにする。
そして、セグメント管理テーブル(31〜3n)の未使
用メモリ先頭アドレスに格納されている値を1番目の領
域のアドレスとして動的メモリ要求コンポーネント1に
返却する。また、その動的セグメント(51〜5n)で
使用可能なサイズ(拡張可能メモリサイズと未使用メモ
リサイズとを加えたサイズ)も動的メモリ要求コンポー
ネント1に通知する。
次いで、不連続メモリ割り当て手段22は、要求された
メモリサイズから1番目に割り当てた領域のサイズを引
いたサイズの領域を更に割り当てるため、前述と同様に
既に生成されている動的セグメントから可能な限り割り
当てを行っていき、余裕のある動的セグメントがなくな
った場合には、セグメント操作手段4のセグメント生成
手段41を用いて新たな動的セグメント(51〜5n)
を生成する。ここで、生成する動的セグメント(51〜
5n)のサイズは、拡張の単位(例えば16にバイト)
の整数倍のサイズであって、更に割り当てるサイズをカ
バーできるサイズとする。そして、新たに生成した動的
セグメント(51〜5n)の先頭アドレスを動的メモリ
要求コンポーネント1に2番目の割り当て領域のアドレ
スとして返却する。なお、あまり多くの動的メモリにま
たがると使用および管理が煩雑となるため、分割可能な
数の上限を動的メモリ要求コンポーネント1から指定す
るものとし、その数に達しそうな場合は、上述の余裕の
ある動的セグメントがなくなった場合と同様に新たな動
的セグメントを生成してそこから割り当てを行う。
いずれの場合にも、セグメント管理テーブル(31〜3
n)の各項目を、動的メモリを割り当てた後の状態に更
新する。
今、第2図の状態Xにおいて、動的メモリ要求コンポー
ネント1から80にバイトの不連続メモリ要求があった
場合を例にして具体的に動作を説明する。
不連続メモリ割り当て手段22は、要求されたメモリサ
イズ80にハイドとその時点で既に生成されている動的
セグメント51に対応するセグメント管理テーブル31
の未使用メモリサイズ10にバイトとを比較するが、要
求されたメモリサイズS Okハイドの方が大きいので
、更に拡張可能メモリサイズ16にバイトと未使用メモ
リサイズ10にとを加えたサイズ26にハイドと要求さ
れたメモリサイズ80にバイトとを比較する。
この場合、要求されたメモリサイズ80にハイドの方が
まだ大きいので、拡張可能メモリサイズ16にバイトと
未使用メモリサイズ10にバイトとを加えたメモリサイ
ズ26にバイトを1番目の割り当て領域として割り当て
るため、セグメント拡張手段42を用い、動的セグメン
ト51を拡張可能メモリサイズ16にバイトだけ拡張し
、1番目の動的セグメント51を最大サイズの64にバ
イトの大きさにする。そして、セグメント管理チー、プ
ル31の未使用メモリ先頭アドレスに格納されている値
P2を1番目の領域のアドレスとして動的メモリ要求コ
ンポーネントに返却する。また、そのアドレスP2から
使用可能なサイズ26にバイトも通知する。
次いで、不連続メモリ割り当て手段22は、セグメント
管理テーブル31の使用メモリサイズを26にバイトの
領域を新たに割り当てたため64にバイトに更新し、未
使用メモリサイズは1.0にバイトを全て割り当てると
共に拡張した16にバイトも割り当てたのでOkバイト
に更新し、拡張可能メモリサイズは動的セグメント51
を最大サイズまで拡張したのでOkバイトに更新し、未
使用メモリ先頭アドレスは未使用メモリサイズがOkバ
イトため空値(NULL)に更新し、セグメント先頭ア
ドレスはこのまま更新はしない。
次いで、不連続メモリ割り当て手段22は、要求された
メモリサイズ80にバイトがらL番目に割り当てたa域
のサイズ26にバイトを引いたサイズ54にハイドの領
域を更に割り当てるため、セグメント生成手段41を用
い、54にバイトをカバーする16にバイトの整数倍の
6.lkハイドの大きさで2番目の動的セグメント52
を生成する。そして、動的メモリ要求コンポーネント1
に2番目のメモリ割り当て領域のアドレスとして新たに
生成した2番目の動的セグメント52の先頭アドレスP
4を返却する。
次いで、不連続メモリ割り当て手段22は、2番目の動
的セグメント52に対応するセグメント管理テーブル3
2の使用メモリサイズに割り当てたサイズに相当する5
4にバイトをセットし、未使用メモリサイズに残りの1
0にバイトをセットし、拡張可能メモリサイズにOkバ
イトをセットし、未使用メモリ先頭アドレスにP5をセ
ットし、セグメント先頭アドレスにP4をセットする。
以上の結果、第2図の状態Xは第4図の状態X2で示す
ように更新され、アドレスP2から26にバイト、アド
レスP4から54にバイトの2個のメモリ領域が動的メ
モリ要求コンポーネント1に割り当てられる。
〔発明の効果〕
以上説明したように、本発明の動的メモリ割り当て方式
にあっては、コンポーネントから要求を行うだけで動的
メモリの割り当てが自動的に行われるので、 (a)各コンポーネントにセグメント操作手段を呼び出
して動的メモリを確保するためのルーチンを設ける必要
がないため、プログラムの簡易化を図ることができる。
(b)一元的に管理された動的セグメントから各コンポ
ーネントに対して動的メモリを割り当てるため、無駄が
なくなり、メモリ領域の有効利用が図れる。
(C)統一された手段により動的メモリの確保が行われ
ると共に、既に生成された動的セグメントから割り当て
を行うためセグメント操作手段の起動回数が少なく、オ
ーバーヘッドが小さい。
等の効果がある。
【図面の簡単な説明】
第1図は本発明の動的メモリ割り当て方式の一実施例を
示す構成図、 第2図は状態Xにおけるセグメント管理テーブルおよび
動的セグメントの説明図、 第3図は状態X1におけるセグメント管理テーブルおよ
び動的セグメントの説明図ならびに、第4図は状態X2
におけるセグメント管理テーブルおよび動的セグメント
・の説明図である。 図において、 1・・・・・・・・・・・・・・・動的メモリ要求コン
ポーネント2・・・・・・・・・・・・・・・メモリ割
り当て手段21・・・・・・・・・・・・連続メモリ割
り当て手段22・・・・・・・・・・・・不連続メモリ
割り当て手段3・・・・・・・・・・・・・・・セグメ
ント管理テーブル31〜3n・・・セグメント管理テー
ブル4・・・・・・・・・・・・・・・セグメント操作
手段41・・・・・・・・・・・・セグメント生成手段
42・・・・・・・・・・・・セグメント拡張手段51
〜5n・・・動的セグメント

Claims (1)

  1. 【特許請求の範囲】 動的メモリ要求コンポーネントからの連続メモリ要求に
    応じ、セグメント管理テーブルを用いて動的セグメント
    から連続メモリを割り当てる連続メモリ割り当て手段と
    、 動的メモリ要求コンポーネントからの不連続メモリ要求
    に応じ、セグメント管理テーブルを用いて動的セグメン
    トからメモリを割り当てる不連続メモリ割り当て手段と
    、 前記連続メモリ割り当て手段および不連続メモリ割り当
    て手段のメモリ割り当てに際して新たに動的セグメント
    を生成するセグメント生成手段と、前記連続メモリ割り
    当て手段および不連続メモリ割り当て手段のメモリ割り
    当てに際して既存の動的セグメントを拡張するセグメン
    ト拡張手段とを備えたことを特徴とする動的メモリ割り
    当て方式。
JP34073690A 1990-11-30 1990-11-30 動的メモリ割り当て方式 Pending JPH04209045A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34073690A JPH04209045A (ja) 1990-11-30 1990-11-30 動的メモリ割り当て方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34073690A JPH04209045A (ja) 1990-11-30 1990-11-30 動的メモリ割り当て方式

Publications (1)

Publication Number Publication Date
JPH04209045A true JPH04209045A (ja) 1992-07-30

Family

ID=18339819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34073690A Pending JPH04209045A (ja) 1990-11-30 1990-11-30 動的メモリ割り当て方式

Country Status (1)

Country Link
JP (1) JPH04209045A (ja)

Similar Documents

Publication Publication Date Title
EP0700000B1 (en) System and method combining a global object identifier with a local object address in a single object pointer
JPH02201653A (ja) アプリケーシヨン・プログラム・インターフエース方法
JPH03231352A (ja) オブジェクトクラス定義情報実装装置
JP2003167737A (ja) スタック使用方法
US5394539A (en) Method and apparatus for rapid data copying using reassigned backing pages
US7467166B2 (en) System and method for heterogeneous caching
CN112596762A (zh) 一种滚动升级方法及装置
JPH03257644A (ja) 主メモリ管理方法
JPH06110715A (ja) 仮想計算機システムにおける計算機資源の動的割付け方法
JP3610528B2 (ja) メモリ管理方法及び装置
JPH04209045A (ja) 動的メモリ割り当て方式
KR20040111148A (ko) 멀티-프로세서 시스템에서의 메모리 할당
US6233621B1 (en) System and method for space efficient hashcode allocation
US5784701A (en) Method and system for dynamically changing the size of a hardware system area
US20040123289A1 (en) Multi-processing inside a virtual machine
JPH0212339A (ja) テーブル管理装置
JPH02178856A (ja) マルチタスクオペレーティングシステムでのグラフィックvramのアクセス方式
JPH1040118A (ja) クライアント/サーバシステム及びクライアント端末装置
JP2976725B2 (ja) 待機システムにおける資源管理方式
JPH01191229A (ja) ファイル制御方式
JPH09204326A (ja) 画像データ格納制御装置
JPH06110813A (ja) 非同期データ入出力方式
JPH03282756A (ja) 非同期入出力方式
JPH1049433A (ja) メモリ管理方式
JPH0348950A (ja) メモリ管理方式