[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JPH0756799A - Method for managing storage area - Google Patents

Method for managing storage area

Info

Publication number
JPH0756799A
JPH0756799A JP5200607A JP20060793A JPH0756799A JP H0756799 A JPH0756799 A JP H0756799A JP 5200607 A JP5200607 A JP 5200607A JP 20060793 A JP20060793 A JP 20060793A JP H0756799 A JPH0756799 A JP H0756799A
Authority
JP
Japan
Prior art keywords
size
area
heap
free
storage area
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
JP5200607A
Other languages
Japanese (ja)
Inventor
Yasuhiro Suzuki
康弘 鈴木
Yukiyasu Kobayashi
志康 小林
Masayuki Nakayama
正行 中山
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP5200607A priority Critical patent/JPH0756799A/en
Publication of JPH0756799A publication Critical patent/JPH0756799A/en
Pending legal-status Critical Current

Links

Landscapes

  • Memory System (AREA)

Abstract

PURPOSE:To provide a storage area managing method capable of efficiently managing especially a storage area. CONSTITUTION:This storage area managing method is constituted of a storage area operating means 2 for executing the allocation of a storage area to be used for application processing 1, the return of an unnecessary storage area, the initialization of storage area management prior to the allocation and return request of the storage area, and the ending operation of storage area management at the time of completing requests to all storage areas, a block operation means 3 for executing the allocation and return of a block expressing the unit of a storage area less than a certain fixed size, a heap operation means 4 for executing the allocation and return of a heap expressing a large storage area capable of storing plural blocks, the allocation of blocks into each heap and the security of a heap area, and free area managing means 5, 6 for acquiring and registering unused free areas.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は記憶領域管理方法に関
し、更に詳しくは可変長の記憶領域の割当て、返却を行
う記憶領域管理方法に関する。コンピュータ・システム
を運用するとき、様々な応用処理からの記憶領域の割当
て要求に対して、限りのある記憶領域を分配して割り当
てたり、不要になって返却された記憶領域を再利用する
といった記憶領域の管理が必要である。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a storage area management method, and more particularly to a storage area management method for allocating and returning variable length storage areas. When operating a computer system, storage that allocates limited storage areas in response to storage area allocation requests from various application processes, and reuses storage areas that are returned when they are no longer needed Area management is required.

【0002】[0002]

【従来の技術】記憶領域の管理は一般的に、応用処理で
利用されるデータ領域の割当て要求に対し、大きな記憶
領域である「ヒープ」を確保し、応用処理から割当て要
求のあったサイズの「ブロック」を、このヒープ内に割
り当てる。応用処理でブロックが不要となり記憶領域の
管理に返却されると、記憶領域の管理では、返却された
未使用の空きブロックとして、次回のブロック割当てに
再利用する。この原理図を図31に示す。
2. Description of the Related Art Generally, storage area management secures a large storage area "heap" in response to an allocation request for a data area used by an application process, and allocates a size of the size requested by the application process. Allocate a "block" in this heap. When the block becomes unnecessary in the application process and returned to the storage area management, the storage area management reuses the returned unused free block for the next block allocation. This principle diagram is shown in FIG.

【0003】空きブロックの再利用を行う方法には、再
利用すべき空きブロックを高速に決定することと、大き
い領域が小さい使用サイズで占有される「断片化」を極
力抑制するといった、互いに相反する課題があり、この
両極端を実現する基本的な方法として、最初に見つかっ
た割当て要求サイズ以上の空きブロックを再利用する
「初適合(first-fit)法」と、割当て要求サイズ以上の
空きブロックの内最小サイズのものを再利用する「最適
適合(best-fit) 法」とがある。最適適合法は半端にな
った断片が小さくなる傾向にあるが、空き領域の件数の
増加に伴い初適合法に比べてかなり遅くなる。
The methods of reusing free blocks are conflicting with each other, such as determining free blocks to be reused at high speed and suppressing “fragmentation” in which a large area is occupied by a small used size as much as possible. As a basic method to realize both extremes, there is a "first-fit method" that reuses the first found free block that is larger than the allocation request size, and the free block that is larger than the allocation request size. There is a "best-fit method" that reuses the smallest size of. The optimal fitting method tends to have smaller odd fragments, but it becomes much slower than the initial fitting method as the number of empty areas increases.

【0004】これらの方法に対し「分身法(buddy syst
em) 」は、断片化を抑制しながら高速に空きブロックを
決定する方法として一般的に利用されている。図32
は、分身法の内最も一般的な「指数型分身法(exponent
ial buddy system) 」による空きブロック管理の原理を
示している。この方法では、予め上限の決められた2の
累乗のサイズのバリエーションに対応したサイズ別の配
列を用意し、空きブロックをこれらのサイズ別にリスト
管理する。2の累乗のサイズで分割構成されている性質
から、必ずしも応用処理の要求した割当てサイズと一致
しないが、割当て要求サイズ以上の空きブロックを再利
用すると残りサイズは別の2の累乗となる空きブロック
に分割して再利用できる。
For these methods, the "buddy syst" method is used.
em) ”is generally used as a method for determining free blocks at high speed while suppressing fragmentation. Figure 32
Is the most common of the alter ego methods, "exponential alternation method (exponent
ial buddy system) ”to show the principle of free block management. In this method, an array for each size corresponding to a variation of a power of 2 with an upper limit determined in advance is prepared, and a list of empty blocks is managed for each size. Due to the fact that it is divided into sizes of powers of 2, it does not necessarily match the allocation size requested by the application process, but if an empty block larger than the allocation request size is reused, the remaining size becomes another power of 2 empty block. It can be divided into and reused.

【0005】図33は、分身法における分割と再構成の
原理を示している。例えば割当て要求サイズ5に対し、
サイズ8の空きブロックを再利用すると、残りサイズ3
はサイズ2と1の空きブロックに分割される。逆にこの
サイズ5のブロックが応用処理から不要になり返却され
ると、その領域に隣接するサイズ2と1の空きブロック
をまとめて元の大きさのサイズ8の空きブロックを構成
し、もし新たにまとめられたサイズ8の空きブロックに
隣接して、別のサイズ8の空きブロックがあれば、更に
大きなサイズ16の空きブロックにまとめるといったよ
うに、再帰的に再構成が成される。 参考文献:「データ構造とアルゴリズム」の中の「12
記憶管理」Alfred V.Aho,John E.Hopcroft,Jeffrey
D.Ullman 著/大野義夫訳 情報処理シリーズ11 培
風館 1987。
FIG. 33 shows the principle of division and reconstruction in the alternation method. For example, for allocation request size 5,
Reusing an empty block of size 8 leaves 3 remaining size
Is divided into free blocks of size 2 and 1. Conversely, when this block of size 5 is no longer needed by the application process and is returned, the empty blocks of sizes 2 and 1 adjacent to that area are combined to form an empty block of size 8 of the original size. If there is another free block of size 8 adjacent to the free block of size 8 that has been grouped together, reconfiguration is recursively performed such that it is grouped into a free block of larger size 16. Reference: "12. Data structure and algorithm"
Memory Management ”Alfred V. Aho, John E. Hopcroft, Jeffrey
D. Ullman / Translated by Yoshio Ohno Information Processing Series 11 Baifukan 1987.

【0006】[0006]

【発明が解決しようとする課題】前述の分身法では、以
下の2つの問題がある。 (1)アルゴリズムの性質上、分割管理すべきサイズの
上限を設けなければならない。もし上限サイズを設けな
ければ、サイズ別の空きブロックのリストの開始ポイン
タを配列として管理できず、サイズ値から指数分解によ
る容易な計算で、高速にリストの先頭ポインタを決定で
きない。 (2)同一の小さいサイズのブロックに対する割当てと
返却を頻繁に繰り返される場合には、極端にオーバーヘ
ッドが大きい。
The above-described alternation method has the following two problems. (1) Due to the nature of the algorithm, the upper limit of the size to be divided and managed must be set. If the upper limit size is not provided, the start pointer of the list of empty blocks by size cannot be managed as an array, and the head pointer of the list cannot be determined at high speed by easy calculation by exponential decomposition from the size value. (2) If the allocation and the return for the same small block are frequently repeated, the overhead is extremely large.

【0007】応用処理の多くの場合、小さいサイズのブ
ロックの割当て件数は多い。更にコンパイラ言語で用意
される構造体に従い、同一構造体の型であり同じサイズ
のブロックは、頻繁に割当てと返却が繰り返される。し
かも上記の2つの問題点は、互いに相反する関係にあ
る。即ち、(1)の問題点を解決する為に、上限サイズ
を十分大きくする程、(2)の分割と再構成のオーバー
ヘッドは大きくなる。
In many cases of applied processing, the number of small blocks allocated is large. Further, according to the structure prepared by the compiler language, blocks having the same structure type and the same size are frequently allocated and returned. Moreover, the above two problems are in a mutually contradictory relationship. That is, in order to solve the problem of (1), the larger the upper limit size is, the larger the overhead of the division and reconstruction of (2) becomes.

【0008】分身法を利用しないで、サイズ値を元にハ
ッシュ・テーブルで管理する方法も考えられる。例え
ば、ハッシュ・テーブルの配列数を10とし(配列0〜
9)、空きブロックのサイズ値をこの10で割った余り
毎にリスト管理した場合、空きブロックのサイズが0、
10、20等が配列0に、サイズの1、11、21等が
配列1にリスト管理される。この方法では、分身法のよ
うに2の累乗のサイズに限定されることなく空きブロッ
ク自体のサイズで管理され、分割と再編成をすることは
なく、且つサイズ値の上限もなくなるが、次の問題点が
生じる。 (3)割当て要求サイズと一致する空きブロックが無い
場合には、断片化が大きい。ハッシュ・テーブルの一つ
の配列から、要求サイズと一致しない空きブロックを取
得しようとすると、その空きブロックのサイズと要求し
たサイズとの差が大きい。ハッシュ・テーブルの配列の
順番はサイズの昇順にはならないので、別の配列番号に
ついて逐次調べても、断片化を抑制するような最適サイ
ズの空きブロックを探すことは困難である。
It is also possible to consider a method of managing a hash table based on the size value without using the alternation method. For example, the number of arrays in the hash table is 10 (array 0 to array 0
9), when the list management is performed for each remainder obtained by dividing the size value of the empty block by 10, the size of the empty block is 0,
Lists 10 and 20 are managed in the array 0, and sizes 1, 11, and 21 are managed in the array 1. In this method, unlike the alternation method, it is managed by the size of the empty block itself without being limited to the size of a power of 2, there is no division and reorganization, and there is no upper limit of the size value. Problems arise. (3) If there is no free block that matches the allocation request size, fragmentation is large. If an empty block that does not match the requested size is obtained from one array of the hash table, the difference between the size of the empty block and the requested size is large. Since the array order of the hash table is not in ascending order of size, it is difficult to find an empty block of an optimal size that suppresses fragmentation, even when sequentially examining different array numbers.

【0009】(4)同一サイズの空きブロックが多い場
合には、空きブロック探査のオーバーヘッドが大きい。
ハッシュ・テーブルの一つの配列には、同一サイズの空
きブロックだけとは限らないので、リストに繋がる各空
きブロックのサイズを調べる必要がある。同一サイズの
空きブロックが多数ある場合には、このオーバーヘッド
が極めて大きい。 本発明はこのような課題に鑑みてなされたものであっ
て、記憶領域の効率的な管理を図ることができる記憶領
域管理方法を提供することを目的としている。
(4) If there are many empty blocks of the same size, the overhead of searching for empty blocks is large.
Since one array of the hash table is not limited to empty blocks of the same size, it is necessary to check the size of each empty block linked to the list. This overhead is extremely large when there are many free blocks of the same size. The present invention has been made in view of such a problem, and an object thereof is to provide a storage area management method capable of efficiently managing a storage area.

【0010】[0010]

【課題を解決するための手段】図1は本発明の原理ブロ
ック図であり、図2はそのより詳細な原理図を示してい
る。図1乃至図2において、記憶領域操作手段2は予め
定められたブロック領域の許容サイズに従い、このサイ
ズ以下の割当て要求についてはブロック操作手段3に対
しブロック領域として割り当て、このサイズを越える場
合にはヒープ操作手段4に対しヒープ自体の領域として
割り当てる。従来技術では、応用処理1からの記憶領域
の割当ては必ず固定サイズのヒープ領域内に対するブロ
ックとして行っており、ヒープ領域自体は再利用されな
い。これに対し、本発明ではブロックだけでなくヒープ
自体も再利用する為に、ヒープに対する空き領域管理手
段6を備える。
FIG. 1 is a principle block diagram of the present invention, and FIG. 2 is a more detailed principle diagram thereof. In FIG. 1 and FIG. 2, the storage area operating means 2 follows a predetermined allowable size of the block area, and allocates an allocation request smaller than this size to the block operating means 3 as a block area. It is allocated to the heap operation means 4 as an area of the heap itself. In the conventional technique, the storage area is allocated from the application process 1 as a block in the heap area of a fixed size, and the heap area itself is not reused. On the other hand, in the present invention, the free area management means 6 for the heap is provided in order to reuse not only the blocks but also the heap itself.

【0011】図3は、本発明の空き領域管理手段5のよ
り詳細な原理図を示している。図3において、サイズ別
リスト管理手段7は予め定められた空き領域(例えば空
きブロック)のサイズ値の範囲毎にグループ分けを行
い、ハッシュ・テーブル管理手段8はグループ分けされ
た各サイズ範囲毎の空き領域について、空き領域をその
サイズ値に基いてハッシュ・テーブルの配列に振り分け
ている。又、サイズ・エントリ管理手段9はハッシュ・
テーブルの各配列からリスト管理され、同一サイズ毎に
空き領域を更にグループ化してリスト管理している。こ
の方法は再利用すべき空き領域の選択の高速化を優先
し、ハッシュ・テーブルで管理された空き領域のサイズ
が要求サイズと一致していない場合でも、再利用し合う
領域が小さく、且つ両サイズの差がある一定のサイズ範
囲内に抑制されることにより、断片化の影響は小さいと
わりきった方法である。
FIG. 3 shows a more detailed principle of the free space management means 5 of the present invention. In FIG. 3, the size-based list management means 7 performs grouping for each size range of a predetermined free area (for example, a free block), and the hash table management means 8 performs grouping for each size range. With respect to the free area, the free area is sorted into an array of hash tables based on the size value. Also, the size / entry management means 9
A list is managed from each array of the table, and empty areas are further grouped for each same size for list management. This method gives priority to speeding up the selection of free space to be reused, and even if the size of the free space managed in the hash table does not match the requested size, the area to be reused is small and both This is a method in which the influence of fragmentation is small because the size difference is suppressed within a certain size range.

【0012】一般に小さいサイズの領域となるブロック
は、件数が極めて多く且つ同一サイズになる傾向が多
い。本発明で提唱する空き領域管理はブロックに適した
管理方法と言える。これに対し、ヒープ領域として割り
当てられるブロック領域の許容サイズを越えるような長
大データ領域は、件数が極めて少なく且つ複数の長大デ
ータ領域が同一サイズになる場合も少ない。しかもこの
ような大きい領域内に半端となった断片サイズを最小化
することが最優先であることから、ヒープの空き領域の
管理は最適適合法が適していると言える。
[0012] Generally, the number of blocks, which are small-sized regions, is very large, and the blocks tend to have the same size. The free area management proposed by the present invention can be said to be a management method suitable for blocks. On the other hand, the number of long data areas that exceed the allowable size of the block area allocated as the heap area is extremely small, and there are few cases where a plurality of long data areas have the same size. Moreover, since it is the highest priority to minimize the fragment size that becomes odd in such a large area, it can be said that the optimal fitting method is suitable for managing the free area of the heap.

【0013】このように、ブロックとヒープとで空き領
域管理の方法を分ける場合のブロック領域の許容サイズ
や、本発明の空き領域管理における前記サイズ別リスト
管理手段での空き領域サイズ値の範囲、前記ハッシュ・
テーブルの配列数は、性能と断片化抑制(領域の節約)
の面から重要なファクタとなる。そこで、図1の記憶領
域操作手段2の初期化では、これらのファクタを記憶領
域の管理に対する動作制御パラメータとして、応用処理
毎の最適になる値として設定可能としている。
As described above, the allowable size of the block area when the method of managing the free area is divided into the block and the heap, the range of the free area size value in the size-based list management means in the free area management of the present invention, The hash
The number of arrays in the table, performance and fragmentation control (space saving)
Is an important factor in terms of. Therefore, in the initialization of the storage area operating means 2 in FIG. 1, these factors can be set as the operation control parameters for the management of the storage area as the optimum values for each application process.

【0014】[0014]

【作用】本発明では、予め定められたブロック領域の許
容サイズに従い、このサイズ以下の割当て要求について
はブロック操作手段3に対しブロック領域として割り当
て、このサイズを越える場合にはヒープ操作手段4に対
しヒープ自体の領域として割り当てるので、一定サイズ
の上限を越える長大データ領域の割当てができない分身
法の欠点を克服している。又、空き領域管理手段5は、
空き領域(例えば空きブロック)のサイズ自体の値で、
空き領域をハッシュ・テーブルの配列に振り分けてお
り、同一の小さいサイズのブロックに対する割当てと返
却を頻繁に繰り返しても、分身法のように2の累乗のサ
イズに限定されることなく、分割と再編成を行うことは
ない。
According to the present invention, according to the predetermined allowable size of the block area, the allocation request of this size or less is allocated to the block operating means 3 as a block area, and when exceeding this size, the heap operating means 4 is allocated. Since it is allocated as the area of the heap itself, it overcomes the disadvantage of the alternation method that cannot allocate a large data area that exceeds the upper limit of a certain size. In addition, the free space management means 5
The value of the size of free space (for example, free block) itself,
The free space is allotted to the array of hash tables, and even if the same small block is allocated and returned frequently, it is not limited to the size of power of 2 as in the alternation method, and it is divided and re-allocated. There is no organization.

【0015】更に、空き領域管理手段5は、空き領域を
サイズ値のハッシュ値により管理するハッシュ・テーブ
ル管理手段8と、予め定められた空き領域のサイズ値の
範囲毎に前記ハッシュ・テーブルをグループ化したサイ
ズ別リスト管理手段7を備え、割当て要求サイズと一致
する空きブロックが無い場合でも、このグループ分けさ
れたサイズの段階により断片化を抑制する。更に又、空
き領域管理手段5は、同一サイズ毎に空き領域をグルー
プ化してリスト管理するサイズ・エントリ管理手段9を
備え、且つこのサイズ・エントリ管理手段9はハッシュ
・テーブルの各配列からリスト管理されるので、同一サ
イズの空き領域が多い場合でも、空き領域の件数でな
く、ハッシュ・テーブルの配列当たりのサイズの種類数
に依存した探査となる。
Further, the free area management means 5 groups the hash table by means of a hash table management means 8 for managing the free area by the hash value of the size value and a predetermined range of the size value of the free area. The size-based list management unit 7 is provided, and fragmentation is suppressed by the size of the grouped size even when there is no free block that matches the allocation request size. Furthermore, the free area management means 5 is provided with a size / entry management means 9 which manages a list by grouping free areas for each same size, and the size / entry management means 9 manages the list from each array of the hash table. Therefore, even if there are many free areas of the same size, the search depends on the number of types of sizes per array of the hash table, not on the number of free areas.

【0016】最後に、記憶領域操作手段2は、性能と断
片化抑制の面から重要なファクタとなるブロック領域の
許容サイズや、空き領域管理5における前記サイズ別リ
スト管理手段7での空き領域サイズ値の範囲、前記ハッ
シュ・テーブルの配列数を動作制御パラメータとして指
定できる初期化を行い、応用処理毎に最適になる記憶領
域管理の方法を提供できる。
Finally, the storage area manipulating means 2 has an allowable size of the block area which is an important factor in terms of performance and suppression of fragmentation, and the free area size in the size-based list managing means 7 in the free area management 5. It is possible to provide a storage area management method that is optimized for each application process by performing initialization so that the range of values and the number of arrays in the hash table can be specified as operation control parameters.

【0017】[0017]

【実施例】以下、本発明の実施例を図面を参照しながら
説明する。図4は、本発明の実施例のシステム構成図で
ある。又、図5乃至図7はこの実施例全体の動作を表す
フローチャートである。このシステムは、開始処理(S
100)で、記憶領域操作部16の「初期化」(S11
0)、二次記憶装置上のファイル13から主記憶上への
データ・ロード(S120)、ディスプレイ装置11へ
のデータの内容の表示を行う(S130)。続いてデー
タ更新処理(S200)で、キーボード12からコマン
ドを受け付けて(S210)、データの挿入(S22
0)と削除(S230)を行いながら、その結果を画面
に反映することを繰り返す。終了のコマンドを受け付け
ると終了処理(S300)を行い、主記憶上のデータの
二次記憶装置上のファイル13へのデータ・セーブ(S
310)、記憶領域操作部16の「終了化」を行う(S
320)。
Embodiments of the present invention will be described below with reference to the drawings. FIG. 4 is a system configuration diagram of an embodiment of the present invention. 5 to 7 are flow charts showing the operation of the entire embodiment. This system uses start processing (S
100), "initialization" of the storage area operating unit 16 (S11
0), data loading from the file 13 on the secondary storage device to the main storage (S120), and display of data content on the display device 11 (S130). Subsequently, in the data update process (S200), a command is accepted from the keyboard 12 (S210), and data is inserted (S22).
0) and deletion (S230) are performed, and the result is reflected on the screen repeatedly. When the end command is accepted, the end process (S300) is performed, and the data on the main memory is saved to the file 13 on the secondary storage device (S300).
310), "terminate" the storage area operating unit 16 (S)
320).

【0018】図5の開始処理(S100)のデータ・ロ
ード(S120)では、まず複数レコード分を格納する
大きいバッファ領域を記憶領域操作部16に「割当て」
要求し(S121)、次にファイル13から複数レコー
ドの内容をバッファ領域に読み込み(S122)、レコ
ード領域を記憶領域操作部16に「割当て」要求しなが
ら(S123)、バッファ領域からレコード領域にレコ
ード内容を複写する。全てのレコードについて内容の読
み込みとレコード領域への複写が完了すると(S12
4)、バッファ領域を記憶領域操作部16に「返却」す
る。
In the data loading (S120) of the start processing (S100) of FIG. 5, first, a large buffer area for storing a plurality of records is "allocated" to the storage area operating unit 16.
A request is made (S121), then the contents of a plurality of records are read from the file 13 into the buffer area (S122), and the record area is requested to be “allocated” to the storage area operation unit 16 (S123), while the record is transferred from the buffer area to the record area. Copy the contents. When the reading of the contents of all records and copying to the record area are completed (S12
4) The buffer area is “returned” to the storage area operating unit 16.

【0019】図6のデータ更新処理(S200)の挿入
コマンド(S220)では、キーボード12からコマン
ドと共に入力されたデータを解釈し(S221)、新し
いレコード領域を記憶領域操作部16に「割当て」要求
し(S222)、入力データをレコード領域に複写して
(S223)、レコードが挿入された画面の最新状態を
反映する(S224)。同様に削除コマンドでは、入力
データを解釈し(S231)、レコードが削除された画
面の最新状態を反映してから(S232)、実際に削除
されるべきレコード領域を記憶領域操作部16に「返
却」する(S233)。
In the insert command (S220) of the data update process (S200) of FIG. 6, the data input together with the command from the keyboard 12 is interpreted (S221), and a new record area is requested to the storage area operation unit 16 by "allocate". Then, the input data is copied to the record area (S223) and the latest state of the screen in which the record is inserted is reflected (S224). Similarly, with the delete command, the input data is interpreted (S231), the latest state of the screen in which the record is deleted is reflected (S232), and then the record area to be actually deleted is returned to the storage area operation unit 16. (S233).

【0020】図7の終了処理(S300)のデータ・セ
ーブ(S310)では、まず複数レコード分を格納する
大きいバッファ領域を記憶領域操作部16に「割当て」
要求し(S311)、次に割当てられている主記憶上の
レコード領域を逐次たぐってはバッファ領域にため込
み、二次記憶装置上のファイル13に書き出す。全ての
レコードの内容のファイルへの書き出しが完了すると、
バッファ領域を記憶領域操作部16に「返却」するが
(S312)、逐次たぐった複数のレコード領域の「返
却」は行わない(行ってもよいが)。複数のレコード領
域は、次の「終了化」(S320)でまとめて主記憶上
から解放される。
In the data save (S310) of the end processing (S300) of FIG. 7, first, a large buffer area for storing a plurality of records is "allocated" to the storage area operating unit 16.
A request is made (S311), the record area on the main memory allocated next is sequentially traced, and the result is stored in the buffer area and written to the file 13 on the secondary storage device. When the writing of the contents of all records to the file is completed,
The buffer area is “returned” to the storage area operation unit 16 (S312), but the “return” of a plurality of record areas that have been sequentially skipped is not performed (though it may be). The plurality of record areas are collectively released from the main memory in the next "termination" (S320).

【0021】図8は、図5に示す記憶領域操作部16の
「初期化」(S110)の動作を表すフローチャートで
ある。この処理では、記憶領域の「割当て」「返却」に
先立ち、記憶領域管理の全体を制御する図24に示す共
通制御テーブルの初期化を行う(S111)。初期化に
あたって、応用処理14から渡された動作制御パラメー
タに基き、ブロック許容上限サイズ、ブロック割当て用
専用ヒープ領域サイズを設定し、更に空きブロック領域
を管理する為のサイズ別リスト、ハッシュ・テーブルを
確保して初期値を設定する(S112)。又、ブロック
割当て専用ヒープ領域を予め1個確保して初期値を設定
する(S113)。
FIG. 8 is a flowchart showing the operation of "initialization" (S110) of the storage area operating unit 16 shown in FIG. In this process, prior to the “allocation” and “return” of the storage area, the common control table shown in FIG. 24 that controls the entire storage area management is initialized (S111). Upon initialization, based on the operation control parameters passed from the application process 14, the block allowable upper limit size and the block allocation dedicated heap area size are set, and a list by size and a hash table for managing the free block area are set. It is ensured and the initial value is set (S112). Further, one heap area dedicated to block allocation is secured in advance and an initial value is set (S113).

【0022】図9は、図7に示す記憶領域操作部16の
「終了化」(S320)の動作を表すフローチャートで
ある。この処理では、未使用ヒープ領域、個別データ領
域用ヒープ、ブロック割当てに用いられたヒープ、サイ
ズ・エントリ用ヒープの各解放を行う(S321〜S3
24)。これらの領域は、その先頭ポインタを共通制御
テーブルに備えており、このポインタから逐次リストを
追って解放していく。更に空きブロック管理の終了化と
して、サイズ別リスト数分のハッシュ・テーブルと、サ
イズ別リスト自体の解放を行う(S332,S33
3)。主記憶上からの「領域解放」は、例えばUNIX
ライブラリのfree関数を利用することが想定され
る。
FIG. 9 is a flow chart showing the operation of "termination" (S320) of the storage area operating section 16 shown in FIG. In this process, the unused heap area, individual data area heap, heap used for block allocation, and size entry heap are released (S321 to S3).
24). These areas are provided with the leading pointer in the common control table, and the list is sequentially released from this pointer. Furthermore, as termination of free block management, the hash tables for the number of size-based lists and the size-based lists themselves are released (S332, S33).
3). "Release of area" from the main memory is, for example, UNIX
It is assumed to use the free function of the library.

【0023】図10は、図5及び図6に示す記憶領域操
作部16の「割当て」の動作(S123,S222)を
表すフローチャートである。この処理では、応用処理1
4からの要求サイズを入力指定して、割り当てられた記
憶領域のポインタを返す。まず入力指定された要求サイ
ズを共通制御テーブルに設定されたブロック許容上限サ
イズと比較して、要求サイズの方が大きい場合、長大デ
ータ領域としてヒープ操作部に対し「ヒープ割当て」を
行い(S131)、さもなければブロック領域としてブ
ロック操作部に対し「ブロック割当て」を行う(S13
2)。いずれの場合も、割り当てられたヒープ領域又は
ブロック領域の各ヘッダ部の直後の領域を、応用処理で
利用する記憶領域のポインタとして返す。
FIG. 10 is a flow chart showing the "allocation" operation (S123, S222) of the storage area operating section 16 shown in FIGS. In this processing, application processing 1
Input the requested size from 4 and return the pointer of the allocated storage area. First, the request size specified by input is compared with the block allowable upper limit size set in the common control table, and if the request size is larger, "heap allocation" is performed for the heap operation unit as a long data area (S131). , Otherwise, "block allocation" is performed for the block operation unit as a block area (S13).
2). In either case, the area immediately after each header portion of the allocated heap area or block area is returned as a pointer of the storage area used in the application processing.

【0024】図11は、図6に示す記憶領域操作部16
の「返却」の動作(S233)を表すフローチャートで
ある。この処理では、応用処理14からの記憶領域のポ
インタを入力指定して、この指針領域の直前にあるヒー
プ又はブロックのヘッダ部のポインタを求め、記憶領域
の種別がヒープならばヒープ操作部の「ヒープ返却」処
理(S241)を行い、記憶領域の種別がブロックなら
ばブロック操作部の「ブロック返却」の処理(S24
2)を行う。図25に、ヒープとブロックのデータ構造
を示す。
FIG. 11 shows the storage area operating unit 16 shown in FIG.
5 is a flowchart showing the "return" operation (S233). In this processing, the pointer of the storage area from the application processing 14 is input and specified, and the pointer of the header portion of the heap or block immediately before this pointer area is obtained. The "heap return" process (S241) is performed, and if the storage area type is block, the "block return" process of the block operation unit (S24)
Perform 2). FIG. 25 shows the heap and block data structures.

【0025】図12は、図10に示すブロック操作部1
7の「ブロック割当て」の動作(S132)を表すフロ
ーチャートである。この処理は、図10の記憶領域操作
部16の「割当て」処理(S123,S222)から呼
び出され、割当て要求サイズを入力指定し、割り当てら
れたブロック領域へのポインタを返す。まず空きブロッ
ク管理部に「空きブロック取得」要求を行う(S14
1)。当該要求サイズを満足する空きブロックが無けれ
ば、新規にブロックをヒープ上に割り当てる(S14
5)。ヒープ上に新規にブロックを割り当てる場合に
は、図24の共通制御テーブル内のブロック割当て用有
効ヒープ・リンクの先頭のヒープ(以降単に「カレント
・ヒープ」と称す)の残り領域が要求サイズを満たすか
調べる。もし残り領域が足らなければ、ブロック割当て
用にヒープを割り当てる必要があり、ヒープ操作部に
「ヒープ割当て」の要求を行う(S144)。
FIG. 12 is a block operating section 1 shown in FIG.
7 is a flowchart showing an operation (S132) of “block allocation” of No. 7. This processing is called from the "allocation" processing (S123, S222) of the storage area operating unit 16 of FIG. 10, the allocation request size is input and designated, and the pointer to the allocated block area is returned. First, a request for "acquiring an empty block" is made to the empty block management unit (S14).
1). If there is no free block that satisfies the requested size, a new block is allocated on the heap (S14).
5). When newly allocating a block on the heap, the remaining area of the heap at the head of the effective heap link for block allocation (hereinafter simply referred to as “current heap”) in the common control table of FIG. 24 satisfies the requested size. Check If the remaining area is insufficient, it is necessary to allocate the heap for block allocation, and the heap operation unit is requested to "allocate heap" (S144).

【0026】「ヒープ割当て」に先立ち、カレント・ヒ
ープ内に残り領域があるか調べて、有ればその残り領域
を空きブロックとして掃き出す為に、ヒープ操作部に
「ヒープ内ブロック割当て」要求を行い(S142)、
残り領域のブロックについて空きブロック管理部に「空
きブロック登録」要求を行う(S143)。「ヒープ割
当て」が行われると、カレント・ヒープは新たに割り当
てられたヒープ領域を指針している。この時点でカレン
ト・ヒープは必ず要求サイズを満たす残り領域を持った
ヒープとなる。そこでこのカレント・ヒープについてヒ
ープ操作部18に「ヒープ内ブロック割当て」要求を行
い、新規に割り当てられたブロック領域へのポインタを
得る。再利用される空きブロックの場合も、新規に割り
当てられたブロックの場合も、図24の共通制御テーブ
ル内の有効ブロック・リンクに結合される。
Prior to the "heap allocation", it is checked whether or not there is a remaining area in the current heap, and if there is, the remaining area is swept out as a free block. (S142),
A request for "vacant block registration" is made to the free block management unit for blocks in the remaining area (S143). When a "heap allocation" is made, the current heap points to the newly allocated heap area. At this point, the current heap is always the heap with the remaining area that meets the requested size. Therefore, a "allocate block in heap" request is made to the heap operation unit 18 for this current heap, and a pointer to the newly allocated block area is obtained. Both free blocks to be reused and newly allocated blocks are bound to valid block links in the common control table of FIG.

【0027】図13は、図11に示すブロック操作部1
7の「ブロック返却」の動作(S242)を表すフロー
チャートである。この処理は、記憶領域操作部16の
「返却」処理(S233)から呼び出され、ブロックの
ポインタを入力指定して、そのポインタで指針されたブ
ロックを有効リンクからはずした後、空きブロック管理
部19に「空きブロック登録」要求を行う(S25
1)。
FIG. 13 is a block operating section 1 shown in FIG.
7 is a flowchart showing an operation (S242) of “block return” of No. 7. This processing is called from the "return" processing (S233) of the storage area operation unit 16, inputs the pointer of the block, and removes the block pointed by the pointer from the valid link, and then the empty block management unit 19 A "free block registration" request (S25
1).

【0028】図14は、図8,10及び12に示すヒー
プ操作部18の「ヒープ割当て」の動作(S113,S
131及びS144)を表すフローチャートである。こ
の処理は、記憶領域操作部16の「割当て」処理(S1
23,S222)、及びブロック操作部17の「ブロッ
ク割当て」処理(S132)、及び記憶領域操作部16
の「初期化」処理(S110)から呼び出され、ヒープ
区分としてブロック割当て用又は個別データ領域(長大
データ領域)用の区別と、割当て要求サイズを入力指定
し、割り当てられたヒープ領域へのポインタを返す。ま
ず空きヒープ管理部23に「空きヒープ取得」要求を行
う(S154)。当該要求サイズを満足する空きヒープ
が無ければ、ヒープ操作部に「ヒープ領域確保」要求を
行い(S155)、新規にヒープの領域を主記憶上に確
保する。
FIG. 14 shows the operation of the "heap allocation" of the heap operation unit 18 shown in FIGS. 8, 10 and 12 (S113, S).
131 and S144). This process is the "allocation" process (S1) of the storage area operating unit 16.
23, S222), the "block allocation" process of the block operating unit 17 (S132), and the storage area operating unit 16
Called from the "Initialization" process (S110), the heap partition is distinguished between block allocation and individual data area (long data area), and the allocation request size is input and specified, and a pointer to the allocated heap area is specified. return. First, a "free heap acquisition" request is made to the free heap management unit 23 (S154). If there is no free heap that satisfies the request size, a "heap area allocation" request is made to the heap operation unit (S155), and a new heap area is allocated in the main memory.

【0029】新規にヒープ区分がブロック割当て用なら
ば、これに先立ち要求サイズを図24の共通制御テーブ
ルのブロック割当て用ヒープの標準サイズに変更を行
う。再利用された空きヒープの場合も、新規に確保され
たヒープの場合も、ヒープ区分に従いヒープの有効リン
クに結合される。即ち、ブロック割当て用ヒープの場合
は、図24の共通制御テーブル内のブロック割当て用有
効ヒープ・リンクの先頭ポインタにより、個別データ領
域用ヒープの場合は、同じく個別データ用有効ヒープ・
リンクの先頭ポインタにより結合される。更に、ヒープ
領域のヘッダ部にこのヒープ区分を記録する。図26に
有効記憶領域のデータ間の関係図を示す。
If the new heap partition is for block allocation, the request size is changed to the standard size of the block allocation heap in the common control table shown in FIG. 24 prior to this. Whether it is a reused free heap or a newly allocated heap, it is linked to the effective link of the heap according to the heap partition. That is, in the case of the heap for block allocation, the head pointer of the effective heap link for block allocation in the common control table of FIG.
It is linked by the head pointer of the link. Further, this heap division is recorded in the header part of the heap area. FIG. 26 shows a relationship diagram between data in the effective storage area.

【0030】図15は、図11に示すヒープ操作部18
の「ヒープ返却」の動作(S241)を表すフローチャ
ートである。この処理は、記憶領域操作部16の「返
却」処理(S233)から呼び出され、ヒープのポイン
タを入力指定して、そのポインタ指針されたヒープを有
効リンクからはずした後、空きヒープ管理部23に「空
きヒープ登録」要求を行う(S261)。この処理は、
単に図24の共通制御テーブル内の個別データ領域用未
使用ヒープ・リンクに結合するだけであり、フローチャ
ートは示していない。尚、この処理で返却されるヒープ
のヒープ区分は必ず個別データ領域用ヒープであり、個
別データ領域用有効ヒープ・リンクからはずされる。ブ
ロック割当て専用ヒープ領域の場合、その中に割り当て
られたブロック単位に再利用される為、ヒープ自体の返
却と再利用は行わない。
FIG. 15 shows the heap operating unit 18 shown in FIG.
14 is a flowchart showing the operation of "heap return" (S241). This process is called from the “return” process (S233) of the storage area operation unit 16, inputs the heap pointer, specifies the pointer, and removes the heap pointed to by the pointer from the effective link. A "free heap registration" request is made (S261). This process
It is simply linked to the unused heap link for the individual data area in the common control table of FIG. 24, and the flowchart is not shown. The heap section of the heap returned by this processing is always the individual data area heap, and is removed from the individual data area effective heap link. In the case of the heap area dedicated to block allocation, the heap itself is not returned or reused because it is reused for each block allocated in it.

【0031】図16は、図12に示すヒープ操作部18
の「ヒープ内ブロック割当て」の動作(S142,S1
45)を表すフローチャートである。この処理は、ブロ
ック操作部17の「ブロック割当て」処理(S132)
から呼び出され、割当て要求サイズを入力指定し、ヒー
プ内に割り当てられたそのサイズ分のブロックへのポイ
ンタを返す。ヒープのデータ部(ヘッダ部の直後)の最
終位置used(使用サイズ)のポインタを割り当てら
れるブロックのポインタとし、入力指定された要求サイ
ズを、ヒープのヘッダ部の最終位置usedには加算
し、割り当てられたブロックのヘッダ部の使用サイズs
izeにはその値を設定する。
FIG. 16 shows the heap operating unit 18 shown in FIG.
"Block allocation in heap" operation (S142, S1
45) is a flow chart showing (45). This process is the “block allocation” process of the block operation unit 17 (S132).
Is called from, and inputs the allocation request size, and returns a pointer to a block of that size allocated in the heap. The pointer of the final position used (used size) of the data part of the heap (immediately after the header part) is used as the pointer of the block to be allocated, and the request size specified by input is added to the final position used of the heap header part and allocated. Size s of the header part of the created block
The value is set in the size.

【0032】図17は、図14に示すヒープ操作部18
の「ヒープ領域確保」の動作(S132)を表すフロー
チャートである。この処理は、ヒープ操作部18の「ヒ
ープ割当て」処理(S113,S131,S144)か
ら呼び出され、割当て要求サイズを入力指定し、確保さ
れたヒープへのポインタを返す。主記憶上に確保される
ヒープ領域のサイズは、要求サイズとヘッダ部のサイズ
の加算された値となる。この値で確保されたヒープ領域
のヘッダ部の領域サイズmaxには入力指定された要求
サイズを設定し、最終位置usedは0クリアする。
尚、主記憶上への「領域確保」(S161)は、例えば
UNIXライブラリのmalloc関数を利用すること
が想定される。
FIG. 17 shows the heap operating unit 18 shown in FIG.
14 is a flowchart showing the operation of "securing heap area" (S132). This process is called from the "heap allocation" process (S113, S131, S144) of the heap operation unit 18, inputs the allocation request size, and returns a pointer to the secured heap. The size of the heap area secured in the main memory is the sum of the requested size and the size of the header part. The requested size specified by input is set to the area size max of the header part of the heap area secured with this value, and the final position used is cleared to 0.
It is assumed that the "area reservation" on the main memory (S161) uses, for example, the malloc function of the UNIX library.

【0033】図18は、図12に示す空きブロック管理
部19の「空きブロック取得」の動作(S141)を表
すフローチャートである。この処理は、ブロック操作部
17の「ブロック割当て」処理(S132)から呼び出
され、割当て要求サイズを入力指定し、このサイズを満
足する空きブロックが見つかればそのポインタを返し、
無ければNULLポインタを返す。まず返却すべきブロ
ックへのポインタを、空きブロックが見つからない場合
を仮定してNULLにリセットする。次に入力指定され
た要求サイズに基いて、サイズ別リスト管理部20に
「ハッシュ・テーブル決定」要求を行う(S171)。
決定されたハッシュ・テーブルの空きブロック数を調
べ、もし0ならば空きブロックが全く無いことになり、
返却するブロックのポインタがNULLのまま返却す
る。0でなければ何かしらのサイズの空きブロックが有
ることになり、ハッシュ・テーブルから要求サイズを満
たすべき空きブロックの有無を更に調べる。この場合、
まずハッシュ・テーブル管理部21に「サイズ・エント
リ探査」要求を行い(S173)、要求サイズ以上のサ
イズ・エントリが有るか調べる。
FIG. 18 is a flowchart showing the operation (S141) of "acquiring an empty block" of the empty block managing section 19 shown in FIG. This process is called from the "block allocation" process (S132) of the block operation unit 17, inputs and specifies the allocation request size, and returns a pointer when a free block satisfying this size is found,
If there is not, a NULL pointer is returned. First, the pointer to the block to be returned is reset to NULL assuming that no free block is found. Next, based on the requested size designated by input, a "hash table determination" request is made to the size-based list management unit 20 (S171).
Check the number of free blocks in the determined hash table. If 0, it means that there are no free blocks.
The pointer of the block to be returned is returned as NULL. If it is not 0, it means that there is a free block of some size, and it is further checked from the hash table whether or not there is a free block that should satisfy the requested size. in this case,
First, a "size entry search" request is made to the hash table management unit 21 (S173), and it is checked whether there is a size entry larger than the requested size.

【0034】この条件は、単に「サイズ・エントリ探
査」処理(S173)から返却されるサイズ・エントリ
へのポインタがNULLでないことにより満足される。
次に要求サイズ以上のサイズ・エントリが有る場合に
は、サイズ・エントリから空きブロックを1個取り出
し、取り出された空きブロックをサイズ・エントリから
のリンクからはずす。この結果、このサイズ・エントリ
にもう1個も空きブロックが無ければ、このサイズ・エ
ントリをハッシュ・テーブルからのリンクよりはずし、
「サイズ・エントリの削除」(S174)を行う。「サ
イズ・エントリの削除」は、単に図24の共通制御テー
ブル内の未使用サイズ・エントリ・リンクに結合するだ
けである。こうすることにより、削除されたサイズ・エ
ントリの領域は、新たな空きブロックのサイズ値に対す
るサイズ・エントリの作成時に再利用される。空きブロ
ックを1個取り出したのに呼応して、ハッシュ・テーブ
ルの空きブロック数から1減算する。更に取り出された
空きブロックのポインタを要求サイズを満たしたブロッ
クのポインタとして返却する。図27に空き記憶領域の
データ間の関係図を、図28にサイズ別リストとハッシ
ュ・テーブルの関係図を、図29にサイズ・エントリと
空きブロックの関係図をそれぞれ示す。
This condition is satisfied only because the pointer to the size entry returned from the "size entry search" process (S173) is not NULL.
Next, if there is a size entry larger than the requested size, one empty block is taken out from the size entry, and the taken out empty block is removed from the link from the size entry. As a result, if there is no free block in this size entry, remove this size entry from the link from the hash table,
"Delete size entry" (S174) is performed. "Delete size entry" simply binds to an unused size entry link in the common control table of FIG. By doing so, the area of the deleted size entry is reused when creating the size entry for the size value of the new free block. In response to the extraction of one empty block, 1 is subtracted from the number of empty blocks in the hash table. Furthermore, the pointer of the retrieved empty block is returned as the pointer of the block that satisfies the required size. FIG. 27 shows a relationship diagram between the data in the free storage area, FIG. 28 shows a relationship diagram between the list by size and the hash table, and FIG. 29 shows a relationship diagram between the size entry and the empty block.

【0035】図19は、図13に示す空きブロック管理
部19の「空きブロック登録」の動作(S143,S2
51)を表すフローチャートである。この処理は、ブロ
ック操作部17の「ブロック割当て」処理(S13
2)、及び「ブロック返却」処理(S242)から呼び
出され、空きブロックとして登録すべきブロックへのポ
インタを入力指定する。まず入力指定されたポインタ指
針されるブロックのサイズに基いて、サイズ別リスト管
理部20に「ハッシュ・テーブル決定」要求を行う(S
271)。決定されたハッシュ・テーブルに空きブロッ
クを登録するのに際し、ハッシュ・テーブル管理部21
に「サイズ・エントリ探査」要求を行い(S273)、
入力指定されたブロックのサイズと一致するサイズ・エ
ントリが有るか調べる。この条件は、「サイズ・エント
リ探査」処理(S273)から返却されるサイズ・エン
トリへのポインタがNULLか、あるいはそのサイズ・
エントリのサイズがブロックのサイズと一致しないと満
足されない。もし無ければ、ハッシュ・テーブル管理部
21に「サイズ・エントリ作成」要求を行い(S27
4)、作成されたサイズ・エントリをハッシュ・テーブ
ルよりリンクする。
FIG. 19 shows the operation of "registration of free block" by the free block management section 19 shown in FIG. 13 (S143, S2).
51 is a flowchart showing 51). This process is the “block allocation” process (S13) of the block operation unit 17.
2) and called from the "block return" process (S242), the pointer to the block to be registered as an empty block is input and designated. First, a "hash table determination" request is issued to the size-based list management unit 20 based on the size of the block designated by the pointer designated by the input (S).
271). When registering an empty block in the determined hash table, the hash table management unit 21
Requesting "size / entry search" to (S273),
Check for a size entry that matches the size of the input block. This condition is that the pointer to the size entry returned from the "size entry search" process (S273) is NULL or its size
You will not be satisfied unless the size of the entry matches the size of the block. If not, a "size entry creation" request is made to the hash table management unit 21 (S27).
4) Link the created size entries from the hash table.

【0036】ハッシュ・テーブルからの各サイズ・エン
トリへのリンクの順序は、空きブロックのサイズ値の順
番(この実施例ではサイズ値の大きい順)になるように
しており、これにより、登録すべき空きブロックとサイ
ズ値の一致するサイズ・エントリや、再利用すべき最適
サイズ(要求サイズ以上であり、且つ最小サイズ)の空
きブロックに対応するサイズ・エントリを容易に探査で
きる。逆に、新たなサイズ値のサイズ・エントリをハッ
シュ・テーブルにリンクする場合には、このサイズ値の
順番を守る必要がある。この為予め探査されたサイズ・
エントリのポインタがNULLならばハッシュ・テーブ
ルからのリンクの先頭に、もしNULLでなければその
サイズ・エントリの直後に、新たに作成されたサイズ・
エントリを挿入すべきことが判り、リンク結合を容易化
することができる。こうして新規に作成又は既に存在し
たサイズ・エントリに対し、入力指定されたブロックを
このサイズ・エントリからの空きブロック・リンクに結
合し、当該ハッシュ・テーブルの空きブロック数を1加
算する。
The links from the hash table to the respective size entries are arranged in the order of the size values of the empty blocks (in this embodiment, the size values are arranged in descending order), and should be registered. It is possible to easily search the size entry corresponding to the empty block and the size value, or the size entry corresponding to the empty block of the optimum size (the required size or more and the minimum size) to be reused. Conversely, when linking a size entry with a new size value to the hash table, the order of this size value must be preserved. Therefore, the size of the
If the entry's pointer is NULL, then at the beginning of the link from the hash table, if not NULL, then the size of the newly created size
It can be seen that the entry should be inserted, which facilitates link binding. In this way, with respect to the size entry newly created or already existing, the input designated block is linked to the free block link from this size entry, and the number of free blocks in the hash table is incremented by one.

【0037】図20は、空きブロック管理部19内のサ
イズ別リスト管理部20の図18に示す「ハッシュ・テ
ーブル決定」の動作(S171,S271)を表すフロ
ーチャートである。この処理は、空きブロック管理部1
9の「空きブロック取得」処理(S141)、及び「空
きブロック登録」処理(S242)から呼び出され、ブ
ロック・サイズを入力指定し、このブロック・サイズを
範囲内に収めるハッシュ・テーブルを持つサイズ別リス
トの配列番号(ハッシュ・テーブルNo.)を返却する。図
24の共通制御テーブル内のサイズ別リスト数(nとす
る)、空きブロック管理用サイズ別リストの配列へのポ
インタに基き、且つサイズ別リストの配列の順番は、こ
のブロック・サイズしきい値の小さい順になっていると
いう前提で、各サイズ別リストのブロック・サイズしき
い値に対し、入力指定したブロック・サイズ以上のもの
を探す。サイズ別リストの配列の0番からn−2番まで
調べ、該当するものが無ければ最後の配列番号n−1番
のものを採用する。
FIG. 20 is a flowchart showing the operation (S171, S271) of the “hash table determination” shown in FIG. 18 of the size-based list management unit 20 in the free block management unit 19. This processing is performed by the empty block management unit 1
Called from the "free block acquisition" process (S141) and the "free block registration" process (S242) of 9, the block size is input and designated, and each size has a hash table that keeps this block size within the range. Return the array number (hash table No.) of the list. Based on the number of lists by size (n) in the common control table of FIG. 24, the pointer to the array by size list for free block management, and the order of the array by size list is this block size threshold value. Assuming that the block sizes are in ascending order, the block size threshold value in each size list is searched for a block size greater than or equal to the specified input block size. The array of the list according to size is searched from 0 to n-2, and if there is no corresponding one, the last array number n-1 is adopted.

【0038】図21は、空きブロック管理部19内のハ
ッシュ・テーブル管理部21の図18に示す「サイズ・
エントリ探査」の動作(S173,S273)を表すフ
ローチャートである。この処理は、空きブロック管理部
19の「空きブロック取得」処理(S141)、及び
「空きブロック登録」処理(S242)から呼び出さ
れ、ブロック・サイズ(要求サイズ)を入力指定し、こ
の要求サイズと一致するサイズ値サイズ・エントリが有
ればそのポインタを、無ければ、この要求サイズ以上の
サイズ値の内最小サイズのものを返却し、要求サイズ以
上のサイズ・エントリが1件も無ければNULLポイン
タを返却する。まず返却すべき適合サイズのサイズ・エ
ントリへのポインタをNULLにリセットする。次に要
求サイズに基いてハッシュ関数により、このハッシュ・
テーブル上の配列番号を決定する。単純なハッシュ関数
としては、例えばこの要求サイズのブロック・サイズ値
をハッシュ・テーブルの配列数で割った余りを返却し、
これをハッシュ・テーブル上の配列番号とすることが想
定される。
FIG. 21 shows the "size / size" of the hash table management unit 21 in the empty block management unit 19 shown in FIG.
It is a flow chart showing operation (S173, S273) of "entry search". This process is called from the "free block acquisition" process (S141) and the "free block registration" process (S242) of the free block management unit 19, and the block size (request size) is input and designated. If there is a matching size value size entry, the pointer is returned. If there is no size entry, the smallest size value out of the requested size values is returned, and if there is no size entry larger than the requested size, a NULL pointer is returned. Will be returned. First, the pointer to the size entry of the compatible size to be returned is reset to NULL. This hash function is then
Determine the sequence number on the table. As a simple hash function, for example, the remainder obtained by dividing the block size value of this request size by the number of arrays in the hash table is returned,
It is assumed that this is the array number on the hash table.

【0039】このハッシュ・テーブル上の決定された配
列番号のサイズ・エントリへのリンクの先頭ポインタか
ら、逐次リンクを追ってポインタがNULLになるま
で、サイズ・エントリのサイズ値と要求サイズとを比較
していく。まずサイズ・エントリのサイズが要求サイズ
未満の場合、もうこれ以上後には要求サイズ以上のサイ
ズ・エントリが無いことを意味し、サイズ・エントリの
探査を中断する。さもなければ、このサイズ・エントリ
は、少なくとも要求サイズ以上であり、取り合えずこの
時のサイズ・エントリを適合サイズのものとして記録す
る。更にこのサイズ・エントリのサイズが要求サイズと
一致する場合には、このサイズ・エントリが適合サイズ
のものに違いないので、これでサイズ・エントリの探査
を中断する。こうして、サイズ・エントリのリンクを追
う繰り返し処理が完了すると、既に述べたように、サイ
ズ・エントリのリンクの順番は、サイズ値の大きい順に
なっている為、要求サイズ以上のサイズ・エントリが有
れば、その内の最小サイズ(サイズが一致すればそれが
最小サイズ)のものを、無ければNULLが適合サイズ
・エントリのポインタとして得られ、そのポインタを返
却する。
From the head pointer of the link to the size entry of the determined array number on this hash table, the size value of the size entry and the requested size are compared until the pointer becomes NULL following the successive links. To go. First, when the size of the size entry is smaller than the requested size, it means that there is no size entry larger than the requested size after this, and the search for the size entry is interrupted. Otherwise, this size entry is at least larger than the requested size, and for this reason, the size entry at this time is recorded as that of the conforming size. Further, if the size of this size entry matches the requested size, this size entry must be of a conforming size, and this suspends the search for the size entry. When the iterative process of following the size entry links is completed in this way, as already described, the order of the size entry links is from the largest size value. For example, the smallest size (the smallest size if the sizes match) is obtained, or NULL is obtained as the matching size entry pointer, and that pointer is returned.

【0040】図22は、空きブロック管理部19内のハ
ッシュ・テーブル管理部21の図19に示す「サイズ・
エントリ作成」の動作(S274)を表すフローチャー
トである。この処理は、空きブロック管理部19の「空
きブロック登録」処理(S274)から呼び出され、ブ
ロック・サイズ(要求サイズ)を入力指定し、新たに割
当てられたサイズ・エントリの領域のポインタを返却す
る。まず返却すべきサイズ・エントリのポインタに、図
24の共通制御テーブル内の未使用サイズ・エントリ・
リンクの先頭ポインタを設定する。このポインタ値がN
ULLでなければ、未使用のサイズ・エントリが有るこ
とを意味し、この未使用サイズ・エントリを再利用する
為に未使用リンクからはずす。もし無ければサイズ・エ
ントリ用ヒープから新たにサイズ・エントリを割り当て
る必要があり、同じく共通制御テーブル内のサイズ・エ
ントリ用ヒープのリンク・ポインタで指針された領域
(カレント・サイズ・エントリ用ヒープ)の最終割当て
数lastを調べる。この値が共通制御テーブル内のサ
イズ・エントリ用ヒープ・サイズ(サイズ・エントリの
配列数上限)に一致していればもう一杯であることを意
味し、この場合には、新たにサイズ・エントリ用ヒープ
の領域確保を行う。
FIG. 22 shows the "size / size" of the hash table management unit 21 in the empty block management unit 19 shown in FIG.
It is a flow chart showing operation (S274) of "entry creation." This process is called from the "free block registration" process (S274) of the free block management unit 19, the block size (request size) is input and designated, and the pointer of the newly allocated size entry area is returned. . First, the pointer of the size entry to be returned is set to the unused size entry in the common control table of FIG.
Set the first pointer of the link. This pointer value is N
If it is not UL, it means that there is an unused size entry, and this unused size entry is removed from the unused link for reuse. If it does not exist, it is necessary to allocate a new size entry from the size entry heap, and also in the area (current size entry heap) indicated by the link pointer of the size entry heap in the common control table. Examine the final allocation number last. If this value matches the heap size for size entry in the common control table (upper limit of array size of size entry), it means that it is full. In this case, for new size entry. Allocates a heap area.

【0041】確保されたサイズ・エントリ用ヒープのl
astは0にリセットされ、共通制御テーブルのサイズ
・エントリ用ヒープのリンクに結合され、新たなカレン
ト・サイズ・エントリ用ヒープとなる。カレント・サイ
ズ・エントリ用ヒープが新規の場合も既存の場合も、こ
の領域よりサイズ・エントリを1個割り当て、last
の値を1加算する。更にサイズ・エントリが再利用の場
合も新たに割り当てられた場合も、このサイズ・エント
リのサイズ値に入力指定された要求サイズを設定し、こ
のサイズ・エントリからの空きブロックへのリンクの先
頭ポインタentryをNULLリセットする。図30
に、サイズ・エントリの領域の構成図を示す。
L of heap for reserved size entry
ast is reset to 0 and is linked to the link of the heap for the size entry of the common control table to become a new heap for the current size entry. Whether the heap for the current size entry is new or existing, one size entry is allocated from this area, and last
The value of is incremented by 1. Whether the size entry is reused or newly allocated, the size value of this size entry is set to the requested size specified, and the start pointer of the link from this size entry to an empty block Reset the entry to NULL. Figure 30
Fig. 1 shows the structure of the size entry area.

【0042】図23は、図15に示す空きヒープ管理部
23の「空きヒープ取得」の動作(S154)を表すフ
ローチャートである。この処理は最適適合法に基き、空
きヒープ操作部18の「ヒープ割当て」処理(S11
3,S131,S144)から呼び出され、ヒープ・サ
イズ(要求サイズ)を入力指定し、このサイズを満足す
る空きヒープが見つかればそのポインタを返し、無けれ
ばNULLポインタを返す。まず返却すべき最小ヒープ
へのポインタを、空きヒープが見つからない場合を仮定
してNULLにリセットする。次に図24の共通制御テ
ーブル内の個別データ領域用未使用ヒープ・リンクの先
頭ポインタを、カレント未使用ヒープ・ポインタとして
設定する。以降、このポインタがNULLになるまで、
空きヒープの探査を繰り返す。まずカレント未使用ヒー
プの領域サイズmaxが要求サイズ未満ならば、次のヒ
ープへ進む。又、最小ヒープが確定していて(最小ヒー
プ・ポインタがNULLでなく)、且つ最小ヒープの領
域サイズmaxがこの時のカレント未使用ヒープの領域
サイズmax未満ならば、やはり次のヒープへ進む。
FIG. 23 is a flow chart showing the operation (S154) of the "free heap acquisition" of the free heap management unit 23 shown in FIG. This processing is based on the optimal fitting method, and is the "heap allocation" processing (S11) of the free heap operation unit 18.
3, S131, S144), the heap size (request size) is input and designated, and if a free heap satisfying this size is found, the pointer is returned, and if there is no empty heap, a NULL pointer is returned. First, the pointer to the minimum heap to be returned is reset to NULL assuming that no free heap can be found. Next, the head pointer of the unused heap link for individual data area in the common control table of FIG. 24 is set as the current unused heap pointer. After that, until this pointer becomes NULL,
Repeat free heap exploration. First, if the area size max of the current unused heap is less than the required size, the process proceeds to the next heap. If the minimum heap has been determined (the minimum heap pointer is not NULL) and the area size max of the minimum heap is less than the area size max of the current unused heap at this time, the process proceeds to the next heap.

【0043】もし、上記のいずれでもなければ、この時
のカレント未使用ヒープは、少なくとも要求サイズ以上
であり、且つその内で最小サイズであり、新たな最小ヒ
ープとしてそのポインタを記録する。更にこの時の領域
サイズが要求サイズと一致していれば、このヒープが最
適サイズとなるので、空きヒープの探査を中断する。こ
うして空きヒープの探査が完了した結果、最小ヒープ・
ポインタが設定されていれば(NULLでなければ)、
そのヒープを未使用ヒープのリンクからはずし、要求サ
イズを満たす最適な空きヒープとして返却する。本発明
では、応用処理14からの記憶領域の割当て要求に対
し、その要求サイズに応じてヒープ又はブロックとして
記憶領域の割り当てを行っているが、上記実施例の説明
における記憶領域としては、それぞれどのように対応す
るかを説明する。
If none of the above, the current unused heap at this time is at least the requested size and the minimum size among them, and the pointer is recorded as a new minimum heap. Furthermore, if the area size at this time matches the requested size, this heap becomes the optimum size, and the search for the empty heap is interrupted. As a result of exploring the free heap, the minimum heap
If the pointer is set (not NULL),
Remove the heap from the links of unused heaps and return it as an optimal free heap that satisfies the requested size. In the present invention, a storage area allocation request from the application processing 14 is allocated as a heap or block according to the request size. I will explain how to correspond.

【0044】図5及至図7のフローチャートにおけるデ
ータ・ロードとデータ・セーブでは、二次記憶装置上の
ファイルにおける物理ブロックのサイズに対応した、例
えば4K〜8Kバイトとなるバッファ領域に、複数レコ
ードをまとめて読み書きする。この大きい記憶領域のバ
ッファ領域は、データ・ロードとデータ・セーブの各処
理を実行する際に1個だけ割り当てられゝばよい。従っ
て、このような記憶領域はヒープとして割り当てられる
のが望ましい。
In the data load and data save in the flowcharts of FIGS. 5 to 7, a plurality of records are stored in the buffer area corresponding to the size of the physical block in the file on the secondary storage device, for example, 4K to 8K bytes. Read and write in bulk. Only one buffer area of this large storage area needs to be allocated when executing the data load and data save processes. Therefore, such a storage area is preferably allocated as a heap.

【0045】又この実施例では、ファイルから一括して
ロードしたデータについて、レコードの削除と挿入とい
った修正を加えた結果のデータを再びファイルにセーブ
する。このような応用処理としては、プログラム・ソー
ス等の各行のレコード毎に可変長となる文字列のデータ
を修正するテキスト・エディタが想定される。画面上に
表示できる1行の文字数を仮りに80文字までとする
と、習慣的にほとんどのレコードは80文字以内になる
ように入力し、しばしば2行分の160文字まで及ぶレ
コードが入力され、稀に3行分以上になるレコーダが入
力されるかもしれない。このようなレコードの記憶領域
は、例えば2行分以内、即ち160バイト以内のレコー
ド領域はブロックの記憶領域として割り当てられ、それ
を越えるサイズのレコード領域はヒープの記憶領域とし
て割り当てられることが考えられる。即ち、ブロック許
容上限サイズは160バイトと指定すれば、2行以内の
レコード領域はブロックとして割り当てられ、それ以上
のレコード領域やバッファ領域はヒープとして割り当て
られる。
Further, in this embodiment, the data that is collectively loaded from the file is saved again in the file as a result of correction such as deletion and insertion of records. As such an application process, a text editor that modifies data of a character string having a variable length for each record of each line such as a program source is assumed. Assuming that the number of characters that can be displayed on the screen is up to 80 characters, it is customary to enter most records within 80 characters, and often records up to 160 characters for 2 lines are entered. A recorder with more than 3 lines may be input. It is conceivable that such a record storage area, for example, within 2 rows, that is, within 160 bytes, is allocated as a block storage area, and a record area exceeding that size is allocated as a heap storage area. . That is, if the block allowable upper limit size is designated as 160 bytes, the record areas within 2 rows are allocated as blocks, and the record areas and buffer areas larger than that are allocated as heaps.

【0046】更に1行以内のレコード領域は極めて件数
が多く、このサイズの範囲内で同一サイズのレコード領
域が多数割り当てられる可能性が高い。そこで空きブロ
ックの管理としては、1行以内のレコードを更に2段階
のサイズでグループ化して、40バイト以内のものを第
1のサイズ別リストで、80バイト以内のものを第2の
サイズ別リストで、更にそれ以上の160バイト以内の
ものを第3のサイズ別リストでそれぞれ管理し、各サイ
ズ別リスト毎に件数の頻度と同一サイズのブロックの再
利用を考慮したハッシュ・テーブルの配列数を設定する
ことが考えられる。
Further, the number of record areas within one line is extremely large, and there is a high possibility that a large number of record areas of the same size will be allocated within this size range. Therefore, for the management of empty blocks, records within 1 row are further grouped into sizes of 2 levels, those within 40 bytes are the first size list, and those within 80 bytes are the second size list. In addition, those with a size of 160 bytes or more are managed in the third size list, and the number of hash table arrays is taken into consideration for each size list, considering the frequency of the number of cases and reuse of blocks of the same size. It is possible to set it.

【0047】[0047]

【発明の効果】以上、詳細に説明したように、本発明に
よれば小さい記憶領域はブロック領域として、大きい記
憶領域はヒープ領域として割当てることにより、記憶領
域の割当てサイズの制約はない。又、返却された記憶領
域の再利用に際しては、断片化を極力抑制しながら、高
速に再利用すべき記憶領域の選択を行うことができる。
更に、応用処理の記憶領域の利用傾向に従い、最適な記
憶領域の管理方法を提供することができる。
As described above in detail, according to the present invention, a small storage area is allocated as a block area and a large storage area is allocated as a heap area, so that the allocation size of the storage area is not restricted. Further, when reusing the returned storage area, it is possible to select the storage area to be reused at high speed while suppressing fragmentation as much as possible.
Furthermore, it is possible to provide an optimum storage area management method according to the usage tendency of the storage area for the application processing.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の原理ブロック図である。FIG. 1 is a principle block diagram of the present invention.

【図2】本発明のより詳細な原理ブロック図である。FIG. 2 is a more detailed principle block diagram of the present invention.

【図3】本発明の空き領域管理のより詳細な原理ブロッ
ク図である。
FIG. 3 is a block diagram showing a more detailed principle of free area management according to the present invention.

【図4】実施例のシステム構成図である。FIG. 4 is a system configuration diagram of an embodiment.

【図5】実施例の全体の動作を示すフローチャート
(1)である。
FIG. 5 is a flowchart (1) showing the overall operation of the embodiment.

【図6】実施例の全体の動作を示すフローチャート
(2)である。
FIG. 6 is a flowchart (2) showing the overall operation of the embodiment.

【図7】実施例の全体の動作を示すフローチャート
(3)である。
FIG. 7 is a flowchart (3) showing the overall operation of the embodiment.

【図8】記憶領域操作部の初期化の動作を示すフローチ
ャートである。
FIG. 8 is a flowchart showing an operation of initializing a storage area operating unit.

【図9】記憶領域操作部の終了化の動作を示すフローチ
ャートである。
FIG. 9 is a flowchart showing an operation of finalizing a storage area operating unit.

【図10】記憶領域操作部の割当ての動作を示すフロー
チャートである。
FIG. 10 is a flowchart showing an operation of allocating a storage area operating unit.

【図11】記憶領域操作部の返却の動作を示すフローチ
ャートである。
FIG. 11 is a flowchart showing a return operation of the storage area operation unit.

【図12】ブロック操作部のブロック割当ての動作を示
すフローチャートである。
FIG. 12 is a flowchart showing a block allocation operation of the block operation unit.

【図13】ブロック操作部のブロック返却の動作を示す
フローチャートである。
FIG. 13 is a flowchart showing a block return operation of the block operation unit.

【図14】ヒープ操作部のヒープ割当ての動作を示すフ
ローチャートである。
FIG. 14 is a flowchart showing the heap allocation operation of the heap operation unit.

【図15】ヒープ操作部のヒープ返却の動作を示すフロ
ーチャートである。
FIG. 15 is a flowchart showing a heap return operation of the heap operation unit.

【図16】ヒープ操作部のヒープ内ブロック割当ての動
作を示すフローチャートである。
FIG. 16 is a flowchart showing an operation of allocating blocks in a heap by a heap operation unit.

【図17】ヒープ操作部のヒープ領域確保の動作を示す
フローチャートである。
FIG. 17 is a flowchart showing a heap area allocation operation of the heap operation unit.

【図18】空きブロック管理部の空きブロック取得の動
作を示すフローチャートである。
FIG. 18 is a flowchart showing an operation of an empty block management unit for acquiring an empty block.

【図19】空きブロック管理部の空きブロック登録の動
作を示すフローチャートである。
FIG. 19 is a flowchart showing an operation of free block registration of a free block management unit.

【図20】サイズ別リスト管理部のハッシュ・テーブル
決定の動作を示すフローチャートである。
FIG. 20 is a flowchart showing the operation of a hash table determination of the size-based list management unit.

【図21】ハッシュ・テーブル管理部のサイズ・エント
リ探査の動作を示すフローチャートである。
FIG. 21 is a flowchart showing the operation of the hash table management unit for size entry search.

【図22】ハッシュ・テーブル管理部のサイズ・エント
リ作成の動作を示すフローチャートである。
FIG. 22 is a flowchart showing the operation of the hash table management unit for creating a size entry.

【図23】空きヒープ管理部の空きヒープ取得の動作を
示すフローチャートである。
FIG. 23 is a flowchart showing the operation of free heap acquisition by the free heap management unit.

【図24】共通制御テーブルのデータ構造である。FIG. 24 is a data structure of a common control table.

【図25】ヒープとブロックのデータ構造である。FIG. 25 is a heap and block data structure.

【図26】有効(使用中)記憶領域のデータ間の関係図
である。
FIG. 26 is a relationship diagram between data in the valid (in use) storage area.

【図27】空き(未使用)記憶領域のデータ間の関係図
である。
FIG. 27 is a relationship diagram between data in empty (unused) storage areas.

【図28】空きブロック管理におけるサイズ別リストと
ハッシュ・テーブルの関係図である。
FIG. 28 is a diagram showing a relationship between a list by size and a hash table in free block management.

【図29】空きブロック管理におけるサイズ・エントリ
と空きブロックの関係図である。
FIG. 29 is a diagram showing the relationship between size entries and empty blocks in empty block management.

【図30】サイズ・エントリの領域の構成図である。FIG. 30 is a configuration diagram of a size entry area.

【図31】従来方法の原理ブロック図である。FIG. 31 is a principle block diagram of a conventional method.

【図32】従来方法の分身法の原理図である。FIG. 32 is a principle view of a conventional alternation method.

【図33】従来方法の分身法の分割と再構成の原理図で
ある。
FIG. 33 is a principle diagram of division and reconstruction of a conventional alternation method.

【符号の説明】[Explanation of symbols]

1…応用処理 2…記憶領域操作手段 3…ブロック操作手段 4…ヒープ操作手段 5,6…空き領域管理手段 7…サイズ別リスト管理手段 8…ハッシュ・テーブル管理手段 9…サイズ・エントリ管理手段 DESCRIPTION OF SYMBOLS 1 ... Applied processing 2 ... Storage area operating means 3 ... Block operating means 4 ... Heap operating means 5, 6 ... Free area management means 7 ... Size list management means 8 ... Hash table management means 9 ... Size entry management means

Claims (9)

【特許請求の範囲】[Claims] 【請求項1】 記憶領域の割当て、返却を行う記憶領域
管理において、 応用処理(1)で利用される記憶領域の割当てと、応用
処理(1)で不要となった記憶領域の返却と、応用処理
(1)からの記憶領域の割当てと返却要求に先立った記
憶領域管理の初期化と、全ての応用処理(1)からの記
憶領域に対する要求が終了した後の記憶領域管理の終了
化を行う記憶領域操作手段(2)と、 ある一定サイズ以下の記憶領域の単位を表すブロックの
割当てと返却を行うブロック操作手段(3)と、 上記ブロックを複数格納する大きい記憶領域を表すヒー
プの割当て、返却、ヒープ内へのブロック割当て、ヒー
プ領域確保を行うヒープ操作手段(4)と、 上記ブロック、及びヒープの内、未使用となった空き領
域の取得、登録を行う空き領域管理手段(5,6)とを
具備したことを特徴とする記憶領域管理方法。
1. In storage area management for allocating and returning storage areas, allocation of storage areas used in application processing (1), return of storage areas that are no longer needed in application processing (1), and application The storage area management is initialized prior to the allocation of the storage area and the return request from the processing (1), and the storage area management is completed after the requests for the storage area from all the application processing (1) are completed. A storage area operating means (2), a block operating means (3) for allocating and returning a block representing a unit of storage area of a certain size or less, and a heap allocation for representing a large storage area for storing a plurality of the blocks, Heap operation means (4) for returning, allocating blocks in the heap, and securing heap areas, and free area management for acquiring and registering unused free areas in the blocks and heaps Storage area management method characterized by comprising a stage (5,6).
【請求項2】 前記記憶領域操作手段(2)は、ブロッ
ク領域として許容される上限サイズを予め設けて、 応用処理(1)からの記憶領域の割当て要求が、この上
限サイズ以下の場合にはブロック操作手段(2)に対し
ヒープ内のブロック領域として領域を割当て、 上限サイズを越える記憶領域(長大データ領域)の割当
て要求に対しては、ヒープ操作手段(4)に対しヒープ
自体の領域として記憶領域の割当てを行うことを特徴と
する請求項1記載の記憶領域管理方法。
2. The storage area operating means (2) previously provides an upper limit size allowed as a block area, and when the storage area allocation request from the application processing (1) is less than or equal to this upper limit size. An area is allocated as a block area in the heap to the block operating means (2), and in response to a request to allocate a storage area (long data area) that exceeds the upper limit size, the heap operating means (4) is made to use the area of the heap itself. The storage area management method according to claim 1, further comprising allocating a storage area.
【請求項3】 前記ヒープ操作手段(4)は、長大デー
タ領域として確保されたヒープ領域が、応用処理(1)
から未使用領域として返却された場合に、次回の長大デ
ータ領域の割当て、又はブロック割当て用ヒープ領域と
して再利用されることを特徴とする請求項2記載の記憶
領域管理方法。
3. The heap operation means (4) is configured so that the heap area secured as a long data area is applied processing (1).
3. The storage area management method according to claim 2, wherein, when returned as an unused area from, it is reused as a heap area for allocation of the next large data area or a block allocation.
【請求項4】 前記ヒープ操作手段(4)は、ブロック
割当て用ヒープ領域の決定に際し、 応用処理(1)から要求されたブロック領域のサイズ以
上の空きヒープ領域が有ればそのヒープ領域を再利用
し、 無ければ新規にブロック割当て専用のヒープ領域を固定
サイズで確保することを特徴とする請求項2記載の記憶
領域管理方法。
4. The heap manipulating means (4) re-determines the heap area when determining a heap area for block allocation, if there is a free heap area larger than the size of the block area requested by the application processing (1). 3. The storage area management method according to claim 2, wherein a heap area dedicated to block allocation is newly secured with a fixed size if not used.
【請求項5】 前記空き領域管理手段(5)は、 予め定められた段階的なサイズ範囲毎に空き領域をグル
ープ化したハッシュ・テーブルの特定を行い、空き領域
のサイズの値に基いたハッシュ関数でハッシュ・テーブ
ルの配列番号を計算するサイズ別リスト管理手段(8)
と、 未使用となった空き領域を登録する場合は、ハッシュ関
数で計算された配列番号のハッシュ・テーブル位置に登
録し、 空き領域を再利用する場合は、ハッシュ関数で計算され
た配列番号のハッシュ・テーブル位置から、要求サイズ
以上の空き領域を取得し、取得され再利用される空き領
域は、ハッシュ・テーブルから抹消するハッシュ・テー
ブル管理手段(7)とを具備したことを特徴とする請求
項1記載の記憶領域管理方法。
5. The free area management means (5) specifies a hash table in which free areas are grouped for each predetermined stepwise size range, and the hash is based on the value of the size of the free area. Size-based list management means for calculating array number of hash table by function (8)
When registering an unused free area, register it in the hash table position of the array number calculated by the hash function.If reusing the free area, register the array number calculated by the hash function. A hash table management means (7) for obtaining a free area having a size equal to or larger than a requested size from a hash table position and deleting the obtained free area from the hash table. The storage area management method according to item 1.
【請求項6】 前記空き領域管理手段(5)は、 同一サイズの空き領域をグループ化したサイズ・エント
リ管理手段(9)と、 未使用となった空き領域を登録する場合は、ハッシュ関
数で計算された配列番号のハッシュ・テーブル位置か
ら、空き領域と同一サイズのサイズ・エントリを探査
し、当該サイズ・エントリが有ればそのサイズ・エント
リに空き領域を登録し、無ければ新規にサイズ・エント
リを作成し、そのサイズ・エントリに空き領域を登録
し、 空き領域を再利用する場合は、ハッシュ関数で計算され
た配列番号のハッシュ・テーブル位置から、要求サイズ
以上のサイズ・エントリを探査し、当該サイズ・エント
リが有ればそのサイズ・エントリから空き領域を取り出
し、その結果当該サイズ・エントリに空き領域が無くな
れば、そのサイズ・エントリをハッシュ・テーブルから
抹消するハッシュ・テーブル管理手段(8)とを具備し
たことを特徴とする請求項5記載の記憶領域管理方法。
6. The free space management means (5) uses a hash function when registering a size / entry management means (9) in which free areas of the same size are grouped and an unused free area. From the hash table position of the calculated array number, search for a size entry of the same size as the free space, register the free space in the size entry if there is the size entry, and newly create the size When creating an entry, registering free space in the size entry, and reusing the free space, search for a size entry larger than the requested size from the hash table position of the array number calculated by the hash function. , If there is the size entry, the empty area is taken out from the size entry, and if there is no free area in the size entry, The storage area management method according to claim 5, further comprising a hash table management means (8) for deleting the size entry from the hash table.
【請求項7】 前記ハッシュ・テーブル管理手段(8)
は、 未使用となった空き領域を登録する場合は、ハッシュ関
数で計算された配列番号のハッシュ・テーブル位置か
ら、空き領域のサイズ値で整列して空き領域又はサイズ
・エントリを登録し、 空き領域の登録の際の同一サイズのサイズ・エントリの
探査、及び空き領域の再利用の際の最適サイズの空き領
域又はサイズ・エントリの探査を効率化することを特徴
とする請求項5又は請求項6記載の記憶領域管理方法。
7. The hash table management means (8)
When registering an unused free area, register the free area or size entry by aligning with the size value of the free area from the hash table position of the array number calculated by the hash function. 6. A method for efficiently searching for a size entry of the same size when registering an area and for searching for an optimum size free area or size entry when reusing a free area. 6. A storage area management method described in 6.
【請求項8】 前記空き領域管理手段(6)は、 空きヒープを再利用する場合は、全ての空きヒープの中
からヒープの割当て要求サイズ以上で且つ最小サイズと
なるものを選択する最適適合法を用い、 空きブロックの管理に関しては、前記請求項5又は請求
項6又は請求項7記載の空き領域管理手段(5)を用い
るように、記憶領域のサイズと件数に応じて空き領域管
理の方法を使い分けることを特徴とする請求項5又は請
求項6又は請求項7記載の記憶領域管理方法。
8. The optimum adaption method, wherein, when reusing a free heap, the free area management means (6) selects, from all free heaps, a heap allocation request size or more and a minimum size. With respect to the management of empty blocks, a method of free space management according to the size and number of storage areas is used so as to use the free space management means (5) according to claim 5, claim 6 or claim 7. 8. The storage area management method according to claim 5, 6 or 7, wherein the storage areas are selectively used.
【請求項9】 前記記憶領域操作手段(2)は、 ブロック領域として許容される上限サイズ、ブロック割
当て専用ヒープ領域の固定サイズ、及び前記空き領域管
理手段(5)で利用される、サイズ別リスト数、各サイ
ズ別リスト毎にグループ化する空き領域のサイズのしき
い値、各サイズ別リスト毎のハッシュ・テーブルの配列
数とから成る動作制御パラメータを、 応用処理(1)毎に最適となる値を応用処理(1)側か
ら初期化指定させることを特徴とした請求項1又は請求
項5記載の記憶領域管理方法。
9. The storage area operating means (2) is a maximum size allowed as a block area, a fixed size of a heap area dedicated to block allocation, and a size-specific list used by the free area managing means (5). Number, the threshold value of the size of the free area to be grouped for each size list, and the number of hash table arrays for each size list, the operation control parameters are optimized for each application process (1). The storage area management method according to claim 1 or 5, wherein the value is designated to be initialized from the application processing (1) side.
JP5200607A 1993-08-12 1993-08-12 Method for managing storage area Pending JPH0756799A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5200607A JPH0756799A (en) 1993-08-12 1993-08-12 Method for managing storage area

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5200607A JPH0756799A (en) 1993-08-12 1993-08-12 Method for managing storage area

Publications (1)

Publication Number Publication Date
JPH0756799A true JPH0756799A (en) 1995-03-03

Family

ID=16427186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5200607A Pending JPH0756799A (en) 1993-08-12 1993-08-12 Method for managing storage area

Country Status (1)

Country Link
JP (1) JPH0756799A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005108216A (en) * 2003-09-30 2005-04-21 Samsung Electronics Co Ltd Method and apparatus for dynamic memory management within an object-oriented program
JP2018010492A (en) * 2016-07-13 2018-01-18 富士通株式会社 Parallel processing device, job management method, and job management program

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005108216A (en) * 2003-09-30 2005-04-21 Samsung Electronics Co Ltd Method and apparatus for dynamic memory management within an object-oriented program
JP4684607B2 (en) * 2003-09-30 2011-05-18 三星電子株式会社 Dynamic memory management method and apparatus for object-oriented programs
JP2018010492A (en) * 2016-07-13 2018-01-18 富士通株式会社 Parallel processing device, job management method, and job management program

Similar Documents

Publication Publication Date Title
US5448728A (en) Storage medium control system for controlling a write-once read-many storage medium
US6023744A (en) Method and mechanism for freeing disk space in a file system
US6314418B1 (en) Index managing unit, index updating method, index managing method, computer-readable recording medium retaining an index updating program, and computer-readable recording medium retaining an index managing program
US7647355B2 (en) Method and apparatus for increasing efficiency of data storage in a file system
EP0375188B1 (en) File system
US6519614B1 (en) Transaction processing system using efficient file update processing and recovery processing
US20050050050A1 (en) Database management methods and equipment and database management program storage media
US7240172B2 (en) Snapshot by deferred propagation
JP3609841B2 (en) File management device
JPH0756799A (en) Method for managing storage area
JP2539347B2 (en) File management method
US11954328B2 (en) Storage management device, storage management method, and program
US8782353B2 (en) Information processing device having data field and operation methods of the same
US5978810A (en) Data management system and method for storing a long record in a set of shorter keyed records
JP2787107B2 (en) Buffer control system and device
JP4131579B2 (en) Data management system and data management method
JPS63280356A (en) Buffer management system for virtual disk device
US20220283705A1 (en) Storage management apparatus, storage management method, and program
JP3578501B2 (en) Document search method and apparatus
JP2767966B2 (en) High-speed file access method
JP2743849B2 (en) Update buffer management device
JPH054695B2 (en)
JP3585264B2 (en) Database system and data retrieval method
JPWO2021015175A1 (en) Storage management device, storage management method and program
CN115840769A (en) Method and device for processing jump table based on range partition

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20020806