JP3299294B2 - Memory block control method - Google Patents
Memory block control methodInfo
- Publication number
- JP3299294B2 JP3299294B2 JP32745091A JP32745091A JP3299294B2 JP 3299294 B2 JP3299294 B2 JP 3299294B2 JP 32745091 A JP32745091 A JP 32745091A JP 32745091 A JP32745091 A JP 32745091A JP 3299294 B2 JP3299294 B2 JP 3299294B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- page
- memory page
- memory block
- block
- 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.)
- Expired - Fee Related
Links
Description
【0001】[0001]
【産業上の利用分野】本発明はマルチプログラミングを
サポートするオペレーティングシステムを備える情報処
理装置におけるメモリ割り当て制御方式に関する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a memory allocation control method in an information processing apparatus having an operating system that supports multi-programming.
【0002】マルチプログラミングをサポートするオペ
レーティングシステム(OS)では,ユーザプログラム
からのメモリ確保要求に対して速やかに割り当て可能メ
モリを検索して割り当てを行う必要がある。その場合,
OSにより管理するユーザ用のメモリエリアを効率的に
利用すると共に必要なメモリブロックの割り当て及び解
放を高速に行うことが望まれている。In an operating system (OS) that supports multi-programming, it is necessary to promptly search for an allocatable memory and perform allocation in response to a memory reservation request from a user program. In that case,
It is desired to efficiently use a memory area for a user managed by an OS and to allocate and release necessary memory blocks at high speed.
【0003】[0003]
【従来の技術】図12は従来例1の説明図,図13は従
来例2の説明図である。図12に示す従来例1の方法
は,(1) に示すようにメモリのユーザ領域を一定サイズ
(例えば4KB:キロバイト)のページで分割して管理
する。これらの各ページP0,P1,P2,P3・・・
の使用状態(使用中/未使用)を表すビットを(2) に示
すようにa0,a1,a2,a3・・と割り当てて格納
してビットマップを設ける。このビットマップには, ペ
ージが使用中の時“1”が格納され,未使用の時“0”
が格納され,図12の(3) にビットマップに実際に使用
状態を表すビット情報が格納された例を示す。ユーザか
らメモリ確保要求があると,OSにより(3) に示すよう
なビットマップを参照して未使用のページを検出して,
そのページを割り当てる。2. Description of the Related Art FIG. 12 is an explanatory view of Conventional Example 1, and FIG. 13 is an explanatory view of Conventional Example 2. In the method of Conventional Example 1 shown in FIG. 12, the user area of the memory is divided into pages of a fixed size (for example, 4 KB: kilobytes) and managed as shown in (1). Each of these pages P0, P1, P2, P3 ...
Are assigned and stored as a0, a1, a2, a3,... As shown in (2), to provide a bit map. This bitmap stores “1” when the page is in use and “0” when the page is not used.
FIG. 12 (3) shows an example in which bit information indicating the actual use state is stored in the bit map. When there is a memory reservation request from the user, the OS detects an unused page by referring to the bitmap shown in (3), and
Assign that page.
【0004】次に図13に示す従来例2の方法を説明す
ると,メモリをユーザが必要とするサイズを持つブロッ
クで分割する。各ブロックは,次にリンクするブロック
の先頭アドレスと使用状態(使用中/未使用)の情報及
びブロックのサイズを表す情報をブロックの管理エリア
に格納され,その後にそのブロックで実際に使用される
データエリアが設けられ,各ブロックは全て同様な構成
を備えている。この先頭アドレスのリンクにより関係付
けられたブロックは,リンクの最初の方は使用中であ
り,リンクの後の方に未使用のブロックがある。Next, the method of the conventional example 2 shown in FIG. 13 will be described. A memory is divided into blocks having a size required by a user. For each block, the start address of the block to be linked next, information on the use state (used / unused), and information indicating the size of the block are stored in the management area of the block, and are subsequently used in that block. A data area is provided, and each block has the same configuration. The block associated with the link of the first address is in use at the beginning of the link, and there is an unused block at the end of the link.
【0005】リンクされる順序はメモリの物理的なアド
レスと関係ない。この従来例2の場合,ユーザからのメ
モリ確保要求があると,OSは先頭アドレスのリンクに
従って未使用状態のブロックを探索することにより未使
用のブロックを見つけて,ユーザに割り当てる。[0005] The order of linking is independent of the physical address of the memory. In the case of the second conventional example, when there is a memory reservation request from the user, the OS searches for an unused block according to the link of the start address, finds an unused block, and allocates the unused block to the user.
【0006】[0006]
【発明が解決しようとする課題】上記した従来例1のビ
ットマップにより管理する方法では,メモリ割り当て単
位がOSの管理単位に限定されてしまい,必要以上に大
きなサイズまたは小さなサイズが割り当てられるという
問題がある。また,常にビットマップを検索するため空
きメモリ検索に時間がかかるという問題があった。In the above-described method of managing by the bitmap of the first conventional example, the memory allocation unit is limited to the management unit of the OS, and a size larger or smaller than necessary is allocated. There is. Further, there is a problem that it takes time to search for a free memory because a bitmap is always searched.
【0007】また,従来例2のリンクするブロックの先
頭を指すアドレス,サイズ等を管理用エリアに格納する
方法では,メモリ割り当て単位に対して自由度があるも
のの,使用中メモリ領域から空きメモリを検索するた
め,ビットマップによる管理以上に空きメモリ検索に時
間がかかるという問題がある。In the conventional method of storing the address, size, and the like indicating the head of a linked block in the management area in the second conventional example, although there is a degree of freedom with respect to the memory allocation unit, free memory is used from the used memory area. Since the search is performed, there is a problem that it takes more time to search for a free memory than the management by the bitmap.
【0008】本発明はメモリ割り当てサイズに対しての
自由度を与えながらメモリブロックの割り当て及び解放
を高速にするメモリブロック制御方式を提供することを
目的とする。SUMMARY OF THE INVENTION It is an object of the present invention to provide a memory block control method which can allocate and release a memory block at a high speed while giving a degree of freedom to a memory allocation size.
【0009】[0009]
【課題を解決するための手段】図1は本発明の基本構成
図である。図1において,1は処理部,2はビットマッ
プ,3は使用中のメモリページで構成するキューのキュ
ーヘッダ(PQHで表す),4はメモリである。FIG. 1 is a basic configuration diagram of the present invention. In FIG. 1, reference numeral 1 denotes a processing unit, 2 denotes a bit map, 3 denotes a queue header (indicated by PQH) of a queue composed of a memory page being used, and 4 denotes a memory.
【0010】処理部1内の10はビットマップ制御部
(BMC),13はメモリページ制御部(MPC),1
7はメモリブロック制御部(MBC)である。ビットマ
ップ制御部10は空きメモリページを取得する制御を行
う空きページ検索部(BMC0)11とメモリページを
解放するためのページ未使用設定部(BMC1)12と
を備え,メモリページ制御部13はメモリページリンク
部(MPC0)14,メモリページアンリンク部(MP
C1)15及びメモリページ検査部(MPC2)16と
を備え,メモリブロック制御部17は確保要求制御部
(MBC0)18及び解放要求制御部(MBC1)19
とを備える。In the processing unit 1, reference numeral 10 denotes a bit map control unit (BMC), reference numeral 13 denotes a memory page control unit (MPC),
7 is a memory block control unit (MBC). The bitmap control unit 10 includes a free page search unit (BMC0) 11 for controlling acquisition of a free memory page and a page unused setting unit (BMC1) 12 for releasing a memory page. Memory page link unit (MPC0) 14, memory page unlink unit (MP
C1) 15 and a memory page checking unit (MPC2) 16, and the memory block control unit 17 includes a reservation request control unit (MBC0) 18 and a release request control unit (MBC1) 19.
And
【0011】ビットマップ2は管理する各メモリページ
をそれぞれビットに対応して保持し,各ビット位置は,
それぞれメモリのページポインタを表す。初期状態では
各ビットb0〜bnは全て“0”である。The bit map 2 holds each memory page to be managed corresponding to each bit.
Each represents a memory page pointer. In an initial state, all bits b0 to bn are "0".
【0012】メモリ4は,一定のサイズを持つメモリペ
ージ(MP)5からなり,各メモリページ5は,ユーザ
が希望するサイズを持つ複数のメモリブロック(MB)
6から成る。The memory 4 is composed of memory pages (MP) 5 having a fixed size. Each memory page 5 has a plurality of memory blocks (MB) having a size desired by the user.
Consists of six.
【0013】各メモリページ(MP)5には,最初に使
用中メモリページによってキューを構成するための双方
向(前方と後方)のリンクポインタ(PQ)5aが,そ
の後に使用メモリブロック数カウンタ(UCNT)5b
及び未使用メモリブロックで構成するキューの先頭を表
すキューヘッダ(BQH)5cが格納されている。Each memory page (MP) 5 first has a bidirectional (forward and backward) link pointer (PQ) 5a for forming a queue based on the used memory pages, and thereafter a used memory block number counter (PQ). UCNT) 5b
And a queue header (BQH) 5c that indicates the head of a queue composed of unused memory blocks.
【0014】また,各メモリブロック(MB)6は,先
頭に未使用メモリブロック(MB)によりキューを構成
するための双方向リンクポインタ(BQ)6aと,自メ
モリブロックを含むメモリページの先頭を示すポインタ
(QP)6bが格納され,その後にユーザプログラムが
使用可能なメモリブロックのデータ領域(MBD)6c
が配置されている。Each memory block (MB) 6 has a bidirectional link pointer (BQ) 6a for forming a queue with unused memory blocks (MB) at the head and a head of a memory page including its own memory block. Pointer (QP) 6b, and a data area (MBD) 6c of a memory block that can be used by the user program thereafter
Is arranged.
【0015】本発明は一定の大きさのメモリ管理単位
(メモリページ)でメモリの使用・未使用を管理するメ
モリマップを設け,メモリページ内にメモリページキュ
ーを構成する双方向リンクポインタとメモリページ内に
分割された領域(メモリブロック)を設けて,その使用
量を表すブロック数カウンタとメモリブロックキューを
構成する双方向リンクポインタとそのメモリブロックが
存在するメモリページの先頭を指示するポインタを設
け,これらの各部の制御する手段によりユーザプログラ
ムからのメモリ確保要求に対して速やかに割当て可能な
メモリを検索して割り当てを行うものである。According to the present invention, there is provided a memory map for managing use / non-use of a memory in a memory management unit (memory page) of a fixed size, and a bidirectional link pointer and a memory page constituting a memory page queue in the memory page. A divided area (memory block) is provided, and a block number counter indicating the used amount, a bidirectional link pointer forming a memory block queue, and a pointer indicating a head of a memory page where the memory block exists are provided. In response to a memory reservation request from a user program, a memory that can be allocated is quickly searched for and allocated by means controlled by these units.
【0016】[0016]
【作用】プログラムからの確保要求や解放要求に対し
て,図1の処理部1においてビットマップ制御部10,
メモリページ制御部13及びメモリブロック制御部17
のそれぞれに設けられた機構の中から必要なものを組み
合わせることにより実現される。以下,各制御部に設け
られた各部が備える機能を説明する。In response to a reservation request or a release request from a program, the processing unit 1 of FIG.
Memory page controller 13 and memory block controller 17
It is realized by combining necessary components from the mechanisms provided for each of the components. Hereinafter, functions of each unit provided in each control unit will be described.
【0017】ビットマップ制御部10の空きページ検索
部(BMC0)11は,要求によりビットマップ2を検
索して0状態(未使用)のビットを検出し,そのビット
に対応するメモリページ(MP)の先頭位置のアドレス
であるメモリページポインタ(MPポインタという)を
要求元へ返送し,0状態のビットがなかった場合は要求
元へ未使用のメモリページが無いことを通知する。A free page search unit (BMC0) 11 of the bitmap control unit 10 searches the bitmap 2 upon request to detect a bit in a 0 state (unused), and a memory page (MP) corresponding to the bit. A memory page pointer (referred to as an MP pointer), which is the address of the head position of, is returned to the request source, and if there is no 0-state bit, the request source is notified that there is no unused memory page.
【0018】ビットマップ制御部10のページ未使用設
定部(BMC1)12は,要求により要求元が指定する
メモリポインタで示されるメモリページに対応するビッ
トマップ(BM)2の中のビットを“0”にセットす
る。The page unused setting section (BMC1) 12 of the bitmap control section 10 sets a bit in the bitmap (BM) 2 corresponding to the memory page indicated by the memory pointer designated by the request source to "0". Set to "".
【0019】メモリページ制御部13のメモリページリ
ンク部(MPC0)14は,要求により以下の処理を行
う。 要求元がMPポインタにより指定するメモリページ
を,同じく要求元が指定するページキューヘッダ(PQ
H)及び指定されたメモリページのリンクポインタ(P
Q)により使用中メモリページキューの最後尾へリンク
する。The memory page link unit (MPC0) 14 of the memory page control unit 13 performs the following processing upon request. The memory page specified by the requester by the MP pointer is stored in the page queue header (PQ) also specified by the requester.
H) and the link pointer (P
Q) links to the end of the used memory page queue.
【0020】要求元がMPポインタにより指定するメ
モリページ5を,同じく要求元が指定する大きさを持つ
メモリブロックに分割し,使用メモリブロック数カウン
タ(UCNT)5bを0に初期化する。The memory page 5 specified by the requester by the MP pointer is divided into memory blocks having the same size as specified by the requester, and a used memory block number counter (UCN) 5b is initialized to zero.
【0021】分割した全メモリブロック6を指定され
たメモリページ内の未使用メモリブロックキューヘッダ
(BQH)5c及び各メモリブロック内の双方向リンク
ポインタ(BQ)6aによって未使用メモリブロックキ
ューを構成する。An unused memory block queue is constituted by an unused memory block queue header (BQH) 5c in a designated memory page and a bidirectional link pointer (BQ) 6a in each memory block for all divided memory blocks 6. .
【0022】全メモリブロック6内に設けられた各メ
モリブロックを含むメモリページの先頭を示すポインタ
(QP)6bに,指定されたMPポインタを設定する。
メモリページ制御部13のメモリページアンリンク部
(MPC1)15は,要求により要求元がMPポインタ
により指定するメモリページを,メモリページの双方向
リンクポインタ(PQ)5aによって使用中のメモリペ
ージキューからアンリンク(リンクから外す)する。A designated MP pointer is set to a pointer (QP) 6b indicating the head of a memory page including each memory block provided in all the memory blocks 6.
The memory page unlinking unit (MPC1) 15 of the memory page control unit 13 converts the memory page specified by the requester with the MP pointer by the request from the memory page queue in use by the memory page bidirectional link pointer (PQ) 5a. Unlink (unlink).
【0023】メモリページ制御部13のメモリページ検
査部(MPC2)16は,要求により要求元が指定する
メモリブロックサイズを用いて1メモリページの全メモ
リブロック数を算出(1ページのサイズ/指定メモリプ
ログラムサイズを算出)し,要求元が指定するページキ
ューヘッダ(PQH)3によって使用中のメモリページ
キュー(双方向リンクポインタPQ)5aを検索し,使
用メモリブロック数カウンタ(UCNT)5bがメモリ
ページ内の全メモリブロック数以内であるMPポインタ
を要求元に返送し,そのようなメモリページが無い場合
はその旨を通知する。The memory page inspection unit (MPC2) 16 of the memory page control unit 13 calculates the total number of memory blocks of one memory page by using the memory block size specified by the request source in response to the request (size of one page / specified memory). The program size is calculated), the used memory page queue (bidirectional link pointer PQ) 5a is searched by the page queue header (PQH) 3 specified by the request source, and the used memory block number counter (UCNT) 5b is In this case, the MP pointer which is within the total number of memory blocks in the memory is returned to the request source, and if there is no such memory page, the fact is notified.
【0024】次に,メモリブロック制御部17の確保要
求制御部(MBC0)18は,要求により以下の処理を
行う。 要求元が指定するページキューヘッダ(PQH)3を
用いてメモリページ検査部(MPC2)16へ要求を発
生して,使用ブロック数カウンタ(UCNT)5bを用
いて要求元が指定するメモリブロック数以内のメモリペ
ージのポインタ(MPポインタ)を確保する。Next, the reservation request control unit (MBC0) 18 of the memory block control unit 17 performs the following processing upon request. A request is generated to the memory page checking unit (MPC2) 16 using the page queue header (PQH) 3 specified by the request source, and within the number of memory blocks specified by the request source using the used block number counter (UCN) 5b. Of the memory page (MP pointer).
【0025】メモリページ内の全メモリブロック数以
内( 全メモリブロックが使用状態ではない) の使用メモ
リブロック数カウンタ(UCNT)を持つメモリページ
があった場合は,次の処理を行う。If there is a memory page having a used memory block number counter (UCNT) within the total number of memory blocks in the memory page (all the memory blocks are not in use), the following processing is performed.
【0026】(1) 返送されたメモリページ内の未使用メ
モリブロックのキューヘッダ(BQH)5cによって示
す先頭のメモリブロックをキューからアンリンクする。 (2) 返送されたMPポインタが示すメモリページ内の使
用メモリブロック数カウンタ(UCNT)5bを+1し
て更新する。(1) Unlink the head memory block indicated by the queue header (BQH) 5c of the unused memory block in the returned memory page from the queue. (2) The used memory block number counter (UCN) 5b in the memory page indicated by the returned MP pointer is incremented by 1 and updated.
【0027】(3) アンリンクしたメモリブロックの先頭
を示すポインタ(MBポインタ)を要求元に返送する。 メモリページ内の全メモリブロック数以内の使用メモ
リブロック数カウンタ(UCNT)を持つメモリページ
が無かった場合,次の処理を行う。(3) A pointer (MB pointer) indicating the head of the unlinked memory block is returned to the request source. If there is no memory page having a used memory block number counter (UCNT) within the total number of memory blocks in the memory page, the following processing is performed.
【0028】(1) 上記した空きページ検索部(BMC
0)11に対し要求を発行し,ビットマップ内の0状態
であるビットに対応するメモリページのMPポインタを
取得する。(1) The empty page search section (BMC)
0) A request is issued to 11 to obtain the MP pointer of the memory page corresponding to the bit in the 0 state in the bit map.
【0029】(2) 取得したMPポインタ及び要求元が指
定するページキューヘッダ(PQH)を用いてMPアン
リンク部(MPC1)15へ要求を発行し,取得したM
Pを使用中MPキューの最後尾にリンクする。(2) A request is issued to the MP unlink unit (MPC1) 15 using the obtained MP pointer and the page queue header (PQH) specified by the request source, and the obtained M
Link P to the end of the busy MP queue.
【0030】(3) 要求元が指定するPQHを用いてメモ
リページ検査部(MPC2)16へ要求を発行して,使
用メモリブロック数カウンタ(UCNT)5bが,要求
元の指定するメモリブロックサイズを収容する余裕をも
つメモリページに対応するMPポインタを取得する。こ
の後, 上記の(1) 〜(3) と同様の処理が行われる。(3) A request is issued to the memory page inspection unit (MPC2) 16 using the PQH specified by the request source, and the used memory block number counter (UCN) 5b determines the memory block size specified by the request source. An MP pointer corresponding to a memory page having room to accommodate is acquired. Thereafter, the same processing as the above (1) to (3) is performed.
【0031】上記の(1) において,空きページ検索部
(MBC0)11への要求発行に対して0状態のビット
がなかったことが通知された場合,要求元へ割り当て失
敗を通知する。In the above (1), when it is notified that there is no bit in the 0 state in response to the issuance of the request to the empty page search unit (MBC0) 11, the request source is notified of the allocation failure.
【0032】メモリブロック制御部17の解放要求制御
部(MBC1)19は,要求により次の処理を行う。 要求元がMBポインタにより指定するメモリブロック
6内のポインタ(QP)6bにより,指定メモリブロッ
クが存在するメモリページのMPポインタを取得する。The release request control unit (MBC1) 19 of the memory block control unit 17 performs the following processing according to the request. With the pointer (QP) 6b in the memory block 6 specified by the MB pointer by the request source, the MP pointer of the memory page in which the specified memory block exists is acquired.
【0033】指定するメモリブロック6内の双方向リ
ンクポインタ(BQ)6a及び取得したMPポインタに
よって示されるメモリページ5内のキューヘッダ(BQ
H)5cによって,指定メモリブロックを未使用MBキ
ューにリンクする。The bidirectional link pointer (BQ) 6a in the designated memory block 6 and the queue header (BQ) in the memory page 5 indicated by the acquired MP pointer
H) 5c links the specified memory block to the unused MB queue.
【0034】取得したMPポインタによって示される
メモリページ内の使用メモリブロック数カウンタ(UC
NT)5bを−1して更新する。 UCNTが0の時は,取得したMPポインタを用いて
メモリページアンリンク部(MPC1)15へ要求を発
行し,MPポインタで示されるメモリページを使用中M
Pキューからアンリンクし,続いてページ未使用設定部
(BMC1)12へ要求を発行し,MPポインタで示さ
れるメモリページに対応するビットマップ2内のビット
を0に設定する。The used memory block number counter (UC) in the memory page indicated by the acquired MP pointer
NT) 5b is decremented by one and updated. When UCNT is 0, a request is issued to the memory page unlink unit (MPC1) 15 using the acquired MP pointer, and the memory page indicated by the MP pointer is in use.
The link is unlinked from the P queue, and then a request is issued to the page unused setting section (BMC1) 12, and the bit in the bitmap 2 corresponding to the memory page indicated by the MP pointer is set to 0.
【0035】図1において,ユーザプログラムが希望す
る大きさのメモリ領域を確保したい場合,メモリブロッ
ク制御部17の確保要求制御部(MBC0)18に対し
て,ページキューヘッダ(PQH)及び確保するサイズ
を指定して要求を発行する。In FIG. 1, when a user program wants to secure a memory area of a desired size, a page queue header (PQH) and a size to be secured are provided to a securing request control unit (MBC0) 18 of a memory block control unit 17. Issue a request with
【0036】これに応じて確保要求制御部(MBC0)
18は,メモリページリンク部(MPC0)14,メモ
リページ検査部(MPC2)16及び空きページ検索部
(BMC0)11を制御することにより,最終的にユー
ザプログラムに対して使用可能なメモリブロックのメモ
リブロックポインタ(アドレス)を返送する。In response, the securing request control unit (MBC0)
The memory 18 controls the memory page link unit (MPC0) 14, the memory page check unit (MPC2) 16, and the empty page search unit (BMC0) 11, and finally the memory of the memory block that can be used for the user program. Returns the block pointer (address).
【0037】また,メモリ領域を解放する場合,解放要
求制御部(MBC1)19に対して解放するメモリブロ
ックのメモリブロックポインタを指定して要求を発行す
ると,解放要求制御部(MBC1)19はメモリページ
アンリンク部(MPC1)15及びページ未使用設定部
(BMC1)12を制御して指定されたメモリブロック
を解放する。To release the memory area, the release request control unit (MBC1) 19 issues a request to the release request control unit (MBC1) 19 by designating the memory block pointer of the memory block to be released. It controls the page unlink section (MPC1) 15 and the page unused setting section (BMC1) 12 to release the specified memory block.
【0038】同一サイズのメモリ確保要求がプログラム
から発行した場合,最初の要求及び未使用メモリブロッ
クがなくなり,新たなメモリページを必要とする時以外
は,殆どの場合キューを操作することにより迅速なメモ
リ確保が可能となる。When a memory reservation request of the same size is issued from a program, the initial request and unused memory blocks are eliminated, and in most cases, except for the case where a new memory page is required, the queue can be operated quickly. Memory can be secured.
【0039】同様に同一サイズのメモリ解放要求が発行
された場合,解放メモリブロックを含むメモリページ内
の全てのメモリブロックが未使用となり,メモリページ
そのものを解放する時以外は,キュー操作だけで行われ
るため迅速なメモリ解放が可能となる。Similarly, when a memory release request of the same size is issued, all the memory blocks in the memory page including the released memory block become unused, and only when the memory page itself is released, the line is executed only by the queue operation. As a result, the memory can be quickly released.
【0040】さらに,ユーザブロックが複数のページキ
ューヘッダ(PQH)を持つことにより,それぞれのペ
ージキューヘッダ毎に異なったサイズのメモリブロック
の確保・解放を行うことができる。Further, since the user block has a plurality of page queue headers (PQH), it is possible to secure and release memory blocks of different sizes for each page queue header.
【0041】[0041]
【実施例】図2はメモリの確保・解放制御のための各サ
ブルーチンとユーザプログラムの関係説明図,図3は本
発明によるメモリの構成図である。FIG. 2 is a diagram for explaining the relationship between each subroutine for securing and releasing control of a memory and a user program, and FIG. 3 is a diagram showing the configuration of a memory according to the present invention.
【0042】図2において,20は処理装置のオペレー
ティングシステム(OS)であり,BMC0・11〜M
BC1・19はOS内のサブルーチンであり,それぞれ
図1の同一符号の各部に対応する。21は処理装置のユ
ーザプログラム(UP)であり,PQH0,PQH1は
それぞれ異なるページキューヘッダであり,ユーザプロ
グラムによりメモリの確保・解放の要求の時に使用す
る,初期状態では0にセットされている。In FIG. 2, reference numeral 20 denotes an operating system (OS) of the processing device.
BC1 • 19 are subroutines in the OS, and correspond to the respective units of the same reference numerals in FIG. Reference numeral 21 denotes a user program (UP) of the processing device. PQH0 and PQH1 are different page queue headers, which are used when a user program requests to secure and release a memory.
【0043】OS内のBMC0(空きページ検索部)1
1,MPC0(メモリページリンク部)14及びMPC
2(メモリページ検査部)16はMBC0(確保要求制
御部)18によりコールされ,BMC1(ページ未使用
設定部)12,MPC1(メモリページアンリンク部)
15は,MBC1(解放要求制御部)19からコールさ
れる。またMBC0(確保要求制御部)18とMBC1
(解放要求制御部)19はユーザプログラム(UP)2
1からコールされる。BMC0 (free page search unit) 1 in OS
1, MPC0 (memory page link unit) 14 and MPC
2 (memory page checker) 16 is called by MBC0 (reservation request controller) 18, BMC1 (page unused setting unit) 12, MPC1 (memory page unlink unit)
15 is called from the MBC 1 (release request control unit) 19. MBC0 (secure request control unit) 18 and MBC1
(Release request control unit) 19 is a user program (UP) 2
Called from 1.
【0044】図3に示すようにメモリ(MMで表示)
は,各ページMP0〜MPnに分割され,各ページはユ
ーザにより要求されたサイズを持つ複数のメモリブロッ
クMBで構成され,先頭のメモリページMP0の場合M
B00〜MB0m(m個に分割した例)から成る。各ペ
ージの先頭には,メモリページMP0を例にすると,図
1の5a〜5cに対応するPQ0(ページキューの双方
向リンクポインタ),UCNT0(使用メモリブロック
数カウンタ),BQH0(未使用メモリブロックのキュ
ーヘッダ)が設けられ,メモリブロックMB00には図
1の6a〜6cに対応するBQ00(未使用メモリブロ
ックキューの双方向リンクポインタ),QP00(メモ
リページの先頭を示すポインタ)及びMBD00(メモ
リブロックのデータ領域)が格納されている。他のメモ
リブロックMB01・・・MB0mも同様の情報が格納
されており,他のメモリページMP1・・・MPnも図
3に示すようにMP0と同様の構成を備えている。As shown in FIG. 3, a memory (indicated by MM)
Is divided into pages MP0 to MPn. Each page is composed of a plurality of memory blocks MB having a size requested by the user.
B00 to MB0m (example divided into m pieces). At the beginning of each page, taking memory page MP0 as an example, PQ0 (bidirectional link pointer of page queue), UCNT0 (used memory block number counter), and BQH0 (unused memory block) corresponding to 5a to 5c in FIG. The memory block MB00 has BQ00 (a bidirectional link pointer of an unused memory block queue), QP00 (a pointer indicating the head of a memory page) and MBD00 (a memory corresponding to 6a to 6c in FIG. 1). Block data area). The same information is stored in other memory blocks MB01 to MB0m, and the other memory pages MP1 to MPn have the same configuration as MP0 as shown in FIG.
【0045】次に上記図2に示すOS20に設けられた
各サブルーチンのフローチャートを図4乃至図9に示
す。図4は空きページ検索部(BMC0)の処理フロ
ー,図5はページ未使用設定部(BMC1)の処理フロ
ー,図6はメモリページリンク部(MPC0)の処理フ
ロー,図7はメモリページアンリンク部(MPC1)の
処理フロー及びメモリページの検査部(MPC2)の処
理フロー,図8は確保要求制御部(MBC0)の処理フ
ロー,図9は解放要求制御部(MBC1)の処理フロー
である。Next, FIGS. 4 to 9 show flowcharts of subroutines provided in the OS 20 shown in FIG. 4 is a processing flow of the empty page search unit (BMC0), FIG. 5 is a processing flow of the page unused setting unit (BMC1), FIG. 6 is a processing flow of the memory page link unit (MPC0), and FIG. 8 is a process flow of the memory page checking unit (MPC2), FIG. 8 is a process flow of the reservation request control unit (MBC0), and FIG. 9 is a process flow of the release request control unit (MBC1).
【0046】図4において,空きページ検索部(BMC
0)は入力パラメータを伴わないで起動し,出力として
MP(メモリページ)先頭アドレスが得られる。起動す
ると,ビットマップBMの“0”ビットを検索し(S
1),検索された“0”のビット(空きメモリページを
取得)を“1”に設定する(S2)。その検索結果のビ
ットのビット位置から,対応するMP先頭アドレスを算
出し(S3),算出したMP先頭アドレスを出力パラメ
ータとして設定して終了する(S4)。In FIG. 4, a free page search unit (BMC)
0) starts without an input parameter, and an MP (memory page) start address is obtained as an output. When activated, the “0” bit of the bitmap BM is searched (S
1), the searched “0” bit (obtains a free memory page) is set to “1” (S2). From the bit position of the bit of the search result, the corresponding MP head address is calculated (S3), the calculated MP head address is set as an output parameter, and the process ends (S4).
【0047】図5において,ページ未使用設定部(BM
C1)は,入力パラメータとしてMP先頭アドレスを指
定し,出力として発生するものはない処理である。起動
すると,入力パラメータにより指定されたMP先頭アド
レスから,対応するビットマップ内のビット位置を算出
し,算出したビットマップ内に位置するビットを“0”
に設定する。In FIG. 5, a page unused setting section (BM
C1) is a process in which the MP start address is specified as an input parameter and there is no output generated. When activated, the bit position in the corresponding bitmap is calculated from the MP start address specified by the input parameter, and the bit located in the calculated bitmap is set to “0”.
Set to.
【0048】次に図6に示すメモリページリンク部(M
PC0)は,起動要求の時に入力パラメータとして,P
QH先頭アドレス,メモリページ(MP)先頭アドレス
及びメモリブロック(MB)サイズを指定すると,対応
するメモリページがリンクされ,そのページに指定され
たサイズの複数のメモリブロック(未使用)が形成さ
れ,各メモリブロックにそれぞれの制御情報が設定され
る。Next, the memory page link section (M
PC0) uses P as an input parameter at the time of a start request.
When a QH start address, a memory page (MP) start address, and a memory block (MB) size are specified, the corresponding memory pages are linked, and a plurality of memory blocks (unused) of the size specified in the page are formed. Each control information is set in each memory block.
【0049】起動すると,入力パラメータとして指定さ
れたMP先頭アドレスを用いてメモリからPQアドレス
(ページキューの双方向リンクポインタ)を取得する
(S1)。取得したPQアドレスにより,入力パラメー
タとして指定されたMPを同じく指定されたページキュ
ーヘッダ(PQH)にリンクする(S2)。これにより
指定したMP先頭アドレスをもつメモリページが使用中
のページキュー(PQ)に追加される。When activated, a PQ address (a bidirectional link pointer of a page queue) is acquired from the memory using the MP head address specified as an input parameter (S1). The MP designated as an input parameter is linked to the page queue header (PQH) designated by the acquired PQ address (S2). As a result, the memory page having the specified MP start address is added to the used page queue (PQ).
【0050】次に入力パラメータにより指定されたMB
サイズにより1メモリページ内のメモリブロック数を算
出し(S3),同じく指定されたMP内の使用メモリブ
ロック数カウンタ(UCNT)に0を設定する(S
4)。これは,このページのメモリブロックはこの時点
では未使用であるからである。Next, the MB specified by the input parameter
The number of memory blocks in one memory page is calculated according to the size (S3), and 0 is set to a used memory block number counter (UCNT) in the MP similarly designated (S3).
4). This is because the memory block of this page is unused at this time.
【0051】この後,指定のメモリページを算出したメ
モリブロック数分のメモリブロックに分割し(S5),
分割した各メモリブロック内の未使用メモリブロックキ
ューの双方向リンクポインタ(BQ)を取得する(S
6)。取得したBQアドレス(ポインタ)により,全メ
モリブロックをメモリページ内の未使用メモリブロック
のキューヘッダ(BQH)にリンクする(S7)。この
S5〜S7の処理によりメモリページ内の全メモリブロ
ックが空き状態にされる。Thereafter, the designated memory page is divided into the calculated number of memory blocks (S5).
The bidirectional link pointer (BQ) of the unused memory block queue in each divided memory block is obtained (S
6). Based on the acquired BQ address (pointer), all memory blocks are linked to the queue header (BQH) of an unused memory block in the memory page (S7). By the processing of S5 to S7, all the memory blocks in the memory page are made empty.
【0052】次に分割した各メモリブロック内のQP
(自メモリブロックが属するメモリページの先頭アドレ
ス)を格納すべきアドレスを取得し(S8),取得した
各アドレスに全メモリブロック内のQPにメモリページ
先頭アドレスを設定し(S9),終了する。Next, the QP in each divided memory block
An address at which (the top address of the memory page to which the own memory block belongs) is to be stored (S8), the memory page top address is set to the QP in all the memory blocks at each of the obtained addresses (S9), and the process ends.
【0053】上記のメモリページリンク部の処理におい
て実行される使用メモリページのキュー及び未使用メモ
リブロック等のキューのリンク構成を,図10及び図1
1を用いて説明する。The link configuration of the queue of the used memory page and the queue of the unused memory block and the like executed in the processing of the above memory page link unit is shown in FIG. 10 and FIG.
1 will be described.
【0054】図10にはキュー1,キュー2の2つのキ
ューが形成されている例であり,この状態をリンク前の
状態とする。この時,リンクヘッダにはキューの先頭の
キュー1のポインタを表す前方リンクと最後尾のキュー
2のポインタを表す後方リンクとで双方向ポインタが構
成される。リンクヘッダの前方リンクで示す位置にキュ
ー1が設けられ,その中に同様に双方向リンクが格納さ
れており,このキュー1の前方リンクにより示す位置に
キュー2が図10に示すように設けられている。この状
態で,新たに別のキュー(例えば,使用メモリページや
未使用メモリブロック)をリンク対象キューとして追加
する場合の構成を図11に示す。FIG. 10 shows an example in which two queues, queue 1 and queue 2, are formed, and this state is referred to as a state before linking. At this time, a bidirectional pointer is formed in the link header by a forward link indicating the pointer of the first queue 1 of the queue and a backward link indicating the pointer of the last queue 2 of the queue. A queue 1 is provided at a position indicated by a forward link in the link header, and a bidirectional link is similarly stored therein. A queue 2 is provided at a position indicated by the forward link of the queue 1 as shown in FIG. ing. FIG. 11 shows a configuration in which another queue (for example, a used memory page or an unused memory block) is newly added as a link target queue in this state.
【0055】すなわち,図11に示すように,リンク対
象キューのアドレスは,現在のリンクヘッダの前方リン
クに設定され,リンク前の状態(図10)でリンクヘッ
ダに格納されていた前方リンクの内容をリンク対象キュ
ーの前方リンクに設定する。また,リンク前のキュー1
に格納されていた後方リンク(リンクヘッダのポイン
タ)の内容をリンク対象キューの後方リンクに設定し,
キュー1の後方リンクにリンク対象キューのアドレスが
設定される。That is, as shown in FIG. 11, the address of the link target queue is set to the forward link of the current link header, and the contents of the forward link stored in the link header in the state before the link (FIG. 10). Is set as the forward link of the link target queue. Also, queue 1 before link
Set the contents of the back link (pointer of the link header) stored in the back link of the link target queue,
The address of the link target queue is set in the backward link of the queue 1.
【0056】次に,メモリページアンリンク部(MPC
1)の処理フローを図7のA.により説明すると,この
処理は入力パラメータとしてアンリンクしたいメモリペ
ージ(MP)先頭アドレスを指定すると,そのメモリペ
ージが使用中メモリページキューからアンリンクされ
る。この場合のアンリンクの動作は,上記図10,図1
1に説明したリンクの動作と逆の動作(図11の状態か
ら図10の状態にする動作)に相当する。Next, the memory page unlink section (MPC
The processing flow of 1) is shown in FIG. In this process, when a memory page (MP) head address to be unlinked is specified as an input parameter, the memory page is unlinked from the in-use memory page queue. The unlinking operation in this case is described in FIGS.
This corresponds to an operation reverse to the operation of the link described in FIG. 1 (operation for changing the state of FIG. 11 to the state of FIG. 10).
【0057】起動すると,指定されたMP先頭アドレス
から,メモリページ内のPQアドレス(双方向リンクポ
インタ)を取得し(図7のA.のS1),取得したPQ
アドレスを元に指定されたMPをPQHからアンリンク
する(同S2)。Upon activation, the PQ address (bidirectional link pointer) in the memory page is obtained from the specified MP start address (S1 in A of FIG. 7), and the obtained PQ
The MP specified based on the address is unlinked from the PQH (S2).
【0058】次にメモリページの検査部(MPC2)の
処理フローを図7のB.により説明すると,入力パラメ
ータとしてPQH先頭アドレス(PQHが格納されたア
ドレス)と必要なメモリブロックサイズを指定すると,
指定したメモリブロックサイズを割り当てることができ
るメモリページを探して,検出するとMP先頭アドレス
を出力し,検出できない場合はその旨の検索結果を出力
する。Next, the processing flow of the memory page inspection section (MPC2) will be described with reference to FIG. When the PQH start address (the address where the PQH is stored) and the required memory block size are specified as input parameters,
A search is made for a memory page to which a specified memory block size can be assigned, and if detected, an MP start address is output, and if not detected, a search result to that effect is output.
【0059】図7のB.のメモリページ検査部が起動す
ると,指定(要求)されたメモリブロックサイズで1メ
モリページのサイズを除算して全メモリブロック数(こ
れをzとする)を算出する(図7のB.のS1)。なお
指定されたメモリブロックサイズは既に使用されている
メモリページ内に設けたメモリブロック(MB)1個の
サイズと一致する場合や一致しない場合があり,この演
算でメモリページのメモリブロックが何個分で指定され
たメモリサイズに相当するかを求める。FIG. When the memory page inspection unit is activated, the size of one memory page is divided by the designated (requested) memory block size to calculate the total number of memory blocks (this is z) (S1 in FIG. 7B). ). Note that the specified memory block size may or may not match the size of one memory block (MB) provided in a memory page that has already been used. Determines if the memory size is specified in minutes.
【0060】次に指定されたPQH先頭アドレスをもと
に,順次使用されている各メモリページ内のUCNTア
ドレスを取得する(同S2)。取得したUCNTアドレ
スにより,各メモリページ内のUCNTを判定し,UC
NTの値が算出した1メモリページ内のメモリブロック
数(z)と一致しない(但し,UCNT>zの場合だ
け)メモリページを検索する(S3)。この検索の結
果,該当するメモリページが検索できないと,検索NG
(失敗)を出力パラメータとして設定し(S4,S
5),該当するメモリページが検索されるとその先頭ア
ドレス及び検索OK(成功)を出力パラメータとして設
定して(S6,S7),終了する。出力パラメータは要
求元に対して通知される。Next, based on the specified PQH start address, the UCNT address in each memory page used sequentially is acquired (S2). UCNT in each memory page is determined based on the obtained UCNT address, and UC
A search is made for a memory page in which the value of NT does not match the calculated number of memory blocks (z) in one memory page (only when UCNT> z) (S3). As a result of this search, if the corresponding memory page cannot be searched, the search NG
(Failure) is set as an output parameter (S4, S
5) When the corresponding memory page is searched, the start address and search OK (success) are set as output parameters (S6, S7), and the process ends. The output parameter is notified to the requester.
【0061】図8に示す確保要求制御部(MBC0)の
処理フローは,ユーザプログラムからのメモリ確保要求
により起動する。入力パラメータとしてPQH先頭アド
レスと,メモリブロックサイズが指定され,この確保要
求制御部の処理の結果として確保されたメモリページの
先頭アドレスが出力される。The processing flow of the reservation request control unit (MBC0) shown in FIG. 8 is started by a memory reservation request from a user program. The PQH start address and the memory block size are specified as input parameters, and the start address of the secured memory page is output as a result of the processing of the reserve request control unit.
【0062】図8において,最初にメモリページの検査
部(MPC2:図7のB参照)を起動して要求されたサ
イズのメモリブロックをもつメモリページを検索する
(S1)。この検索の結果,該当するメモリページが無
い(NG)の場合,空きページ検索部(MBC0:図4
参照)を起動して新たに空きメモリページ(MP)を確
保する(S3)。次いで,MPリンク部(MPC0:図
6参照)を起動して確保したメモリページ(MP)を要
求したサイズのメモリブロックで初期化し,空きメモリ
ブロックを作成する(S4)。この後,再びメモリペー
ジの検査部(MPC2:図7のB参照)を起動して,空
きメモリブロックがあるメモリページを検索する(S
5)。この場合,既に空きMBが作成されているので要
求されたサイズのメモリブロックを持つ空きメモリペー
ジが検索される。In FIG. 8, first, a memory page inspection unit (MPC2: see FIG. 7B) is activated to search for a memory page having a memory block of a requested size (S1). As a result of this search, if there is no corresponding memory page (NG), a free page search unit (MBC0: FIG.
) To secure a new free memory page (MP) (S3). Next, the MP link unit (MPC0: see FIG. 6) is activated to initialize the secured memory page (MP) with a memory block of the requested size to create a free memory block (S4). Thereafter, the memory page inspection unit (MPC2: see FIG. 7B) is started again to search for a memory page having an empty memory block (S
5). In this case, a free memory page having a memory block of the requested size is searched because a free MB has already been created.
【0063】上記の各ステップ(S2,S5)に続い
て,検索された結果であるMP先頭アドレスをもとにメ
モリページ内のBQH(ブロックキューヘッダ)のアド
レスを取得し(S6),BQHにリンクしている先頭メ
モリブロックを未使用リンクからアンリンクし(S
7),アンリンクしたメモリブロックの先頭アドレスを
出力パラメータとして設定する(S8)。Subsequent to the above steps (S2, S5), the address of the BQH (block queue header) in the memory page is obtained based on the MP start address which is the searched result (S6), and Unlink the linked top memory block from the unused link (S
7), the head address of the unlinked memory block is set as an output parameter (S8).
【0064】次に図9に示す解放要求制御部(MBC
1)の処理フローは,上記の確保要求制御部と同様にユ
ーザブロックからのメモリ解放要求により起動する。入
力パラメータとして解放したいメモリブロックの先頭ア
ドレスが指定される。Next, the release request control unit (MBC) shown in FIG.
The processing flow of 1) is started by a memory release request from a user block, similarly to the above-mentioned reservation request control unit. The start address of the memory block to be released is specified as an input parameter.
【0065】起動すると,最初に指定されたメモリブロ
ック先頭アドレスを元にメモリブロック内のBQアドレ
ス(未使用メモリブロックキューの双方向リンクポイン
タが格納された位置)を取得し(S1),同様にメモリ
ブロック内のQPアドレス(メモリページの先頭を示す
ポインタが格納された位置)を取得する(S2)。取得
したQPにより,メモリページの先頭アドレスを取得し
(S3),これをもとにメモリページ内のBQHアドレ
ス(未使用メモリブロックのキューヘッダの格納位置)
を取得する(S4)。When activated, the BQ address (the position where the bidirectional link pointer of the unused memory block queue is stored) in the memory block is acquired based on the first specified memory block start address (S1). The QP address in the memory block (the position where the pointer indicating the beginning of the memory page is stored) is obtained (S2). The head address of the memory page is obtained from the obtained QP (S3), and based on this, the BQH address in the memory page (storage position of the queue header of the unused memory block)
Is acquired (S4).
【0066】次いで上記S1で取得したBQアドレスに
より,指定されたメモリブロックをBQHにリンクし
(S5),上記S3で取得したMP先頭アドレスをもと
にMP内のUCNTアドレスを取得し(S6),そのU
CNTの内容を−1にして更新する(S7)。続いて,
更新したUCNTが0か判断し(S8),0でなければ
終了し,0の場合は,メモリページアンリンク部(MP
C1:図7のA参照)を起動して,PQHからそのメモ
リページを解放し(S9),更にページ未使用設定部
(BMC1:図5参照)を起動してビットマップからそ
のメモリページを解放する(S10)。Next, the designated memory block is linked to the BQH based on the BQ address acquired in S1 (S5), and the UCNT address in the MP is acquired based on the MP head address acquired in S3 (S6). , That U
The content of the CNT is updated to −1 (S7). continue,
It is determined whether the updated UCNT is 0 (S8). If the updated UCNT is not 0, the process is terminated. If it is 0, the memory page unlink unit (MP
C1: start the memory page from the PQH (S9), and further activate the page unused setting section (BMC1: see FIG. 5) to release the memory page from the bitmap. (S10).
【0067】ここで,具体例により実施例の動作を説明
する。図2に示すユーザプログラム(以下UPという)
が,PQH0を用いて,x1バイト(x1はMPサイズ
に比較して充分小さい)のメモリブロックの確保を行う
場合,次のように動作する。この説明の中で使用するメ
モリのメモリページ,メモリブロックの符号は図3を参
照されたい。Now, the operation of the embodiment will be described with reference to a specific example. User program shown in FIG. 2 (hereinafter referred to as UP)
However, when a memory block of x1 bytes (x1 is sufficiently smaller than the MP size) is secured using PQH0, the following operation is performed. Refer to FIG. 3 for the memory page and the memory block code used in the description.
【0068】(1) UPは入力パラメータとしてPQH0
の先頭アドレスと数値x1(要求ブロックサイズ)を設
定し,確保要求制御部(MBC0)をコールする。 (2) MBC0はUPからの入力パラメータをそのまま引
き継ぎ,メモリページ検査部(MPC2)をコールす
る。(1) UP is PQH0 as an input parameter
Is set and the numerical value x1 (request block size) is set, and the reservation request control unit (MBC0) is called. (2) MBC0 takes over the input parameters from UP as it is, and calls the memory page checking unit (MPC2).
【0069】(3) MPC2は,MPサイズからPQ,U
CNT,BQHのサイズを減算したのち,x1で除算し
てメモリページ内の全メモリブロック数z1を算出す
る。 (4) MPC2は,PQH0をキューヘッダとして,UC
NTがz1でないMPを検索する。(3) MPC2 calculates PQ, U from MP size.
After subtracting the sizes of CNT and BQH, the number is divided by x1 to calculate the total number z1 of memory blocks in the memory page. (4) MPC2 uses PQH0 as a queue header and
Search for an MP whose NT is not z1.
【0070】(5) 初期状態では, 使用MPキューは空き
状態であるため,検索は失敗となり,MPC2は0を返
送する。 (6) 確保要求制御部(MBC0)はMPC2から0が返
送されたため,新たなMPを確保するため,空きページ
検索部(BMC0)をコールする。(5) In the initial state, since the used MP queue is empty, the search fails, and the MPC 2 returns 0. (6) Since 0 has been returned from the MPC 2, the reservation request control unit (MBC0) calls the empty page search unit (BMC0) to reserve a new MP.
【0071】(7) 初期状態ではビットマップは全て0で
あるため,BMC0はb0(ビットマップの先頭ビッ
ト)を選択し,その結果対応するメモリページ0(MP
0)の先頭アドレスを返送する。(7) Since the bitmap is all 0 in the initial state, BMC0 selects b0 (the first bit of the bitmap), and as a result, the corresponding memory page 0 (MP
0) is returned.
【0072】(8) MBC0はUPからの入力パラメータ
及びBMC0から返送されたMP0の先頭アドレスを入
力パラメータとして設定し,メモリページリンク部(M
PC0)をコールする。(8) The MBC0 sets the input parameters from the UP and the start address of the MP0 returned from the BMC0 as input parameters, and sets the memory page link section (M
Call PC0).
【0073】(9) MPC0は,MP0をPHQ0へリン
クする。 (10)MPC0はMPサイズ(y1とする)から,PQ,
UCNT,BQHのサイズを減算(制御情報のサイズを
除く)したのち,x1で除算することでMP内の全メモ
リブロック数z1を算出する。(9) MPC0 links MP0 to PHQ0. (10) MPC0 has PQ,
After subtracting the size of UCNT and BQH (excluding the size of the control information) and dividing by x1, the total number z1 of memory blocks in the MP is calculated.
【0074】(11)MPC0は,MP0内のBQH0と,
BQH0の次を先頭アドレスとするメモリブロック00
(MB00,図3参照)内のBQ00をリンクする。以
下,MB0mまでの全MBをリンクし,未使用MBキュ
ーを構成する。(11) MPC0 is BQH0 in MP0,
Memory block 00 with the start address following BQH0
(MB00, see FIG. 3). Hereinafter, all MBs up to MB0m are linked to form an unused MB queue.
【0075】(12)MPC0は,全MB内のQP(QP0
0〜QP0m)にMP0の先頭アドレスを設定して処理
を終了する。 (13)MBC0は,上記(2) と同様にMPC2をコールす
る。(12) MPC0 sets the QP (QP0) in all MBs.
0 to QP0m), set the start address of MP0, and end the process. (13) MBC0 calls MPC2 as in (2) above.
【0076】(14)上記(6) 〜(12)により,未使用MBを
もつMP0がリンクされているため,MPC2はMP0
の先頭アドレスを返送する。 (15)MBC0は返送されたMP0の先頭アドレスによ
り,MP0内のBQH0にリンクされている先頭の未使
用MB(MB00)をアンリンクする。(14) According to the above (6) to (12), MP0 having an unused MB is linked, so that MPC2
Returns the start address of (15) The MBC0 unlinks the head unused MB (MB00) linked to the BQH0 in the MP0 by the returned head address of the MP0.
【0077】(16)MBC0はMB00の先頭アドレスを
UPへ返送する。この後,UPがさらにPHQ0を用い
て二つ目のx1バイトのメモリブロック(MB)を確保
する場合には,上記(1) 〜(4) を行った後,(5)において
検索成功となって(15),(16) が行われることになる。(16) MBC0 returns the start address of MB00 to UP. Thereafter, when the UP further secures the second x1 byte memory block (MB) using PHQ0, after performing the above (1) to (4), the search succeeds in (5). (15) and (16) are performed.
【0078】また,PQH1を用いて,メモリブロック
サイズがx2バイトのMBを確保する場合も,上記の同
じ動作が行われる。次に初期状態からx1バイトのMB
(MB00)を確保したのち,確保したMBを解放する
場合は以下のように行われる。The same operation as described above is performed when an MB having a memory block size of x2 bytes is secured by using PQH1. Next, x1 byte MB from the initial state
After securing (MB00), releasing the secured MB is performed as follows.
【0079】(1) UPはMB00の先頭アドレスを入力
パラメータとして設定し,解放要求制御部(MBC1)
をコールする。 (2) MBC1は,MB00の先頭アドレスからMB00
内BQ00を取得し,さらにMB00内QP00からP
Q0の先頭アドレスを取得する。さらにPQ0の先頭ア
ドレスからBQH0を取得する。(1) The UP sets the start address of MB00 as an input parameter, and the release request control unit (MBC1)
Call. (2) MBC1 starts with MB00 from the start address of MB00.
BQ00 in MB00 and P from QP00 in MB00
Get the start address of Q0. Further, BQH0 is obtained from the head address of PQ0.
【0080】(3) MBC1は,BQ00及びBQH0に
よって,MB00をMP0内の未使用MBキューにリン
クする。 (4) MBC1は,MP0内のUCNT0を更新する。(3) MBC1 links MB00 to an unused MB queue in MP0 by BQ00 and BQH0. (4) MBC1 updates UCNT0 in MP0.
【0081】(5) 現在MB00のみ確保されてるだけな
のでUCNT0は0となる。 (6) MBC1はUCNT0が0であるため,MP0を解
放するために,MP0の先頭アドレスを入力パラメータ
として設定し,MPアンリンク部(MPC1)をコール
する。(5) Since only MB00 is currently reserved, UCNT0 becomes 0. (6) Since UCNT0 is 0, MBC1 sets the start address of MP0 as an input parameter to release MP0, and calls the MP unlink unit (MPC1).
【0082】(7) MPC1はMP0の先頭アドレスを入
力パラメータとして設定し,BMC1をコールする。 (8) MBC1は,MP0の先頭アドレスを入力パラメー
タとして設定し,BMC1をコールする。(7) MPC1 sets the head address of MP0 as an input parameter and calls BMC1. (8) MBC1 sets the start address of MP0 as an input parameter and calls BMC1.
【0083】(9) BMC1は,MP0の先頭アドレスか
ら対応するBM内のビットb0を0にリセットして処理
を終了する。 (10)MBC1は処理を終了し,UPへリターンする。(9) The BMC 1 resets the bit b0 in the corresponding BM from the start address of MP0 to 0, and ends the processing. (10) The MBC 1 ends the processing and returns to the UP.
【0084】また,二つのx1バイトのMBを確保した
後,MBを解放する場合は,上記(1) 〜(4) を行ったの
ち,(5)でUCNT0は0をとらないので,その時点でU
Pへリターンする。When the MB is released after securing two x1 byte MBs, after performing the above (1) to (4), UCNT0 does not become 0 in (5). U
Return to P.
【0085】[0085]
【発明の効果】本発明によれば異なるサイズのメモリ確
保が可能となる上に,一般的なユーザブロックのメモリ
確保(同一サイズのメモリ領域を複数個確保する)の要
求に対して,ほとんどの場合にメモリブロックの割り当
て・解放をキュー操作だけで行うため高速な処理を実現
することができる。According to the present invention, it is possible to secure memories of different sizes, and in addition to the general requirement of securing memory for user blocks (securing a plurality of memory areas of the same size), In this case, high-speed processing can be realized because the allocation / release of the memory block is performed only by the queue operation.
【0086】特に,近年マイクロプロセッサではそれぞ
れの計算機特有の大きさの単位(一般的には数キロバイ
ト)でのメモリ管理が充実してきており,さらに高速な
キュー操作機能を備えつつあるため,これらの計算機特
有の大きさの単位でメモリページを設定する場合に本発
明による効果は更に増大すると考えられる。In particular, in recent years, microprocessors have been enriched in memory management in units of size (generally several kilobytes) peculiar to each computer, and have been equipped with a queue operation function at a higher speed. It is considered that the effect of the present invention is further increased when a memory page is set in units of a size unique to a computer.
【図1】本発明の基本構成図である。FIG. 1 is a basic configuration diagram of the present invention.
【図2】メモリの確保・解放制御のための各サブルーチ
ンとユーザプログラムの関係説明図である。FIG. 2 is an explanatory diagram showing a relationship between each subroutine for memory allocation / release control and a user program.
【図3】本発明によるメモリの構成図である。FIG. 3 is a configuration diagram of a memory according to the present invention.
【図4】空きページ検索部(BMC0)の処理フローで
ある。FIG. 4 is a processing flow of a free page search unit (BMC0).
【図5】ページ未使用設定部(BMC1)の処理フロー
である。FIG. 5 is a processing flow of a page unused setting section (BMC1).
【図6】メモリページリンク部(MPC0)の処理フロ
ーである。FIG. 6 is a processing flow of a memory page link unit (MPC0).
【図7】メモリページアンリンク部(MPC1)の処理
フロー及びメモリページの検査部(MPC2)の処理フ
ローである。FIG. 7 shows a processing flow of a memory page unlinking unit (MPC1) and a processing flow of a memory page checking unit (MPC2).
【図8】確保要求制御部(MBC0)の処理フローであ
る。FIG. 8 is a processing flow of a reservation request control unit (MBC0).
【図9】解放要求制御部(MBC1)の処理フローであ
る。FIG. 9 is a processing flow of a release request control unit (MBC1).
【図10】キューのリンク構成説明図(リンク前)であ
る。FIG. 10 is an explanatory diagram of a link configuration of a queue (before linking).
【図11】キューのリンク構成説明図(リンク後)であ
る。FIG. 11 is an explanatory diagram of a link configuration of a queue (after linking).
【図12】従来例1の説明図である。FIG. 12 is an explanatory diagram of Conventional Example 1.
【図13】従来例2の説明図である。FIG. 13 is an explanatory diagram of Conventional Example 2.
1 処理部 2 ビットマップ 3 使用中のメモリページで構成するキューのキュ
ーヘッダ(PQH) 4 メモリ 10 ビットマップ制御部(BMC) 11 空きページ検索部(BMC0) 12 ページ未使用設定部(BMC1) 13 メモリページ制御部(MPC) 14 メモリページリンク部(MPC0) 15 メモリページアンリンク部(MPC1) 16 メモリページ検査部(MPC2) 17 メモリブロック制御部(MBC) 18 確保要求制御部(MBC0) 19 解放要求制御部(MBC1)DESCRIPTION OF SYMBOLS 1 Processing part 2 Bitmap 3 Queue header (PQH) of a queue composed of used memory pages 4 Memory 10 Bitmap control part (BMC) 11 Free page search part (BMC0) 12 Page unused setting part (BMC1) 13 Memory page control unit (MPC) 14 Memory page link unit (MPC0) 15 Memory page unlink unit (MPC1) 16 Memory page check unit (MPC2) 17 Memory block control unit (MBC) 18 Reserve request control unit (MBC0) 19 Release Request control unit (MBC1)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 星田 勝典 東京都千代田区内幸町一町目1番6号 日本電信電話株式会社内 (56)参考文献 特開 平3−34042(JP,A) 特開 平1−209546(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/00 - 12/06 ──────────────────────────────────────────────────続 き Continuation of the front page (72) Inventor Katsunori Hoshida 1-6, Uchisaiwaicho, Chiyoda-ku, Tokyo Nippon Telegraph and Telephone Corporation (56) References JP-A-3-34042 (JP, A) Hei 1-209546 (JP, A) (58) Fields investigated (Int. Cl. 7 , DB name) G06F 12/00-12/06
Claims (3)
理部を備える情報処理装置において,メモリを所定サイ
ズの複数のメモリページ単位で分割し,各メモリページ
をユーザが要求するサイズを持つ複数個のメモリブロッ
クで分割し,各メモリページは使用中のメモリページキ
ューを構成するための双方向リンクポインタ(PQ),現在
の使用メモリブロック数を表すカウンタ(UCNT)及び未使
用メモリブロックのキューヘッダ(BQH) の各情報と複数
のメモリブロックとを備え,各メモリブロックは,未使
用メモリブロックのキューを構成する双方向リンクポイ
ンタ(BQ)と当該メモリブロックが所属するメモリページ
のポインタ(QP)の各情報とデータを格納するエリア(MB
D) を備え,各メモリページの使用状態をそれぞれ1ビ
ットで表すビットマップを設け,前記処理部はビットマ
ップを制御するビットマップ制御部,メモリページを制
御するメモリページ制御部及びユーザプログラムから発
生するメモリ確保または解放の要求に応じて前記ビット
マップ制御部とメモリページ制御部を駆動することによ
り要求されたメモリブロックの確保または解放を行うメ
モリブロック制御部とを備えることを特徴とするメモリ
ブロック制御方式。In an information processing apparatus having a processing unit supporting multi-programming, a memory is divided into a plurality of memory pages of a predetermined size, and each memory page is divided into a plurality of memory blocks having a size required by a user. Each memory page is divided into a bidirectional link pointer (PQ) for configuring the memory page queue in use, a counter (UCNT) indicating the number of currently used memory blocks, and a queue header (BQH) of unused memory blocks. Each memory block includes information and a plurality of memory blocks. Each memory block includes information of a bidirectional link pointer (BQ) constituting a queue of unused memory blocks and a pointer (QP) of a memory page to which the memory block belongs. Data storage area (MB
D), wherein a bitmap representing the use state of each memory page by one bit is provided, and the processing unit generates a bitmap control unit for controlling the bitmap, a memory page control unit for controlling the memory page, and a user program. A memory block control unit that secures or releases a memory block requested by driving the bitmap control unit and a memory page control unit in response to a request for securing or releasing memory to be performed. control method.
御部に, 要求によりビットマップから未使用状態のメモ
リページを検索してメモリページポインタを出力する空
きページ検索部と, 要求されたメモリページに対応する
メモリページのビットを未使用状態に設定するページ未
使用設定部とを備え,前記メモリページ制御部は, 指定
されたメモリページ及びメモリブロックサイズを使用中
のメモリページのキューにリンクするメモリページリン
ク部, 指定されたメモリページを使用中メモリページキ
ューからアンリンクするメモリページアンリンク部, 要
求された条件を備えるメモリブロックを備えるメモリペ
ージのポインタを発生するメモリページの検査部とを備
えることを特徴とするメモリブロック制御方式。2. A free page search unit according to claim 1, wherein the bit map control unit searches an unused memory page from the bit map upon request and outputs a memory page pointer. A page unused setting unit for setting a bit of a corresponding memory page to an unused state, wherein the memory page control unit links a designated memory page and a memory block size to a queue of used memory pages. A page link unit, a memory page unlink unit that unlinks a specified memory page from a busy memory page queue, and a memory page check unit that generates a memory page pointer that includes a memory block having a required condition A memory block control method, characterized in that:
制御部は,ユーザプログラムによりメモリブロックのサ
イズ及びページキューヘッダを指定した要求により起動
して,前記空きページ検索部,メモリページリンク部及
びメモリページの検査部を駆動して要求されたサイズの
空きメモリブロックを確保して出力する確保要求制御部
と,ユーザプログラムによりメモリブロックのアドレス
を指定した要求により起動して,該メモリブロックを未
使用メモリブロックのキューにリンクして解放すると共
に,使用メモリブロック数を表すカウンタを更新し,該
カウンタ値が0の時メモリページアンリンク部及びペー
ジ未使用設定部を駆動して指定メモリブロックを解放す
る解放要求制御部とを備えることを特徴とするメモリブ
ロック制御方式。3. The memory block control unit according to claim 2, wherein the memory block control unit is activated by a request specifying a size of a memory block and a page queue header by a user program. And a securing request control unit that drives a checking unit to secure and output a free memory block of a requested size, and activates the memory block by using a request in which the address of the memory block is specified by a user program. In addition to linking and releasing the block with the block queue, the counter indicating the number of used memory blocks is updated, and when the counter value is 0, the memory page unlink section and the page unused setting section are driven to release the specified memory block. A memory block control method, comprising: a release request control unit.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32745091A JP3299294B2 (en) | 1991-12-11 | 1991-12-11 | Memory block control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32745091A JP3299294B2 (en) | 1991-12-11 | 1991-12-11 | Memory block control method |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05158783A JPH05158783A (en) | 1993-06-25 |
JP3299294B2 true JP3299294B2 (en) | 2002-07-08 |
Family
ID=18199300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP32745091A Expired - Fee Related JP3299294B2 (en) | 1991-12-11 | 1991-12-11 | Memory block control method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3299294B2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100750096B1 (en) * | 2001-04-19 | 2007-08-21 | 삼성전자주식회사 | Video pre-processing/post-processing method for processing video efficiently and pre-processing/post-processing apparatus thereof |
US7917906B2 (en) | 2004-07-02 | 2011-03-29 | Seagate Technology Llc | Resource allocation in a computer-based system |
JP6115116B2 (en) * | 2012-12-19 | 2017-04-19 | 富士通株式会社 | Information processing apparatus, storage processing method, and program |
JP6694141B2 (en) | 2016-09-02 | 2020-05-13 | 富士通株式会社 | Array control program, array control method, array control device |
JP7082275B2 (en) | 2017-11-08 | 2022-06-08 | 富士通株式会社 | Sequence control program, sequence control method, sequence control device |
-
1991
- 1991-12-11 JP JP32745091A patent/JP3299294B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH05158783A (en) | 1993-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5784698A (en) | Dynamic memory allocation that enalbes efficient use of buffer pool memory segments | |
US5420999A (en) | Free memory cell management | |
US4528624A (en) | Method and apparatus for allocating memory space based upon free space in diverse memory devices | |
US5802341A (en) | Method for the dynamic allocation of page sizes in virtual memory | |
EP0769173B1 (en) | Method and apparatus for consolidated buffer handling for computer device input/output | |
US3647348A (en) | Hardware-oriented paging control system | |
JPS60501824A (en) | Demand paging method for a storage processing system that shares multiple address translation buffer storage devices | |
JPH034940B2 (en) | ||
US5289581A (en) | Disk driver with lookahead cache | |
US5581726A (en) | Control system for controlling cache storage unit by using a non-volatile memory | |
JPH06105440B2 (en) | Main memory management method | |
JP3299294B2 (en) | Memory block control method | |
US7552285B2 (en) | Line fill techniques | |
JP3701135B2 (en) | Data processing device | |
US8108873B1 (en) | System for extending an addressable range of memory | |
EP0114944B1 (en) | Method and apparatus for controlling a single physical cache memory to provide multiple virtual caches | |
EP0522728B1 (en) | Method for efficient access of data stored in a nexus table | |
US5761738A (en) | Computer system which stores management or control information in different address space but same offset as corresponding data | |
JP3356090B2 (en) | Memory management method, memory management device, and recording medium | |
JP2000047933A (en) | Bidirectional memory securing management system | |
JPH06103157A (en) | Method of memory space management | |
JP2634485B2 (en) | A method of accessing shared memory as a virtual area and automatically expanding | |
JPH1040194A (en) | Communication controller and receiving buffer control system | |
JPH01241642A (en) | Dynamic arranging method for common memory | |
KR20000061779A (en) | Method for managing sub-allocator of a memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20020402 |
|
LAPS | Cancellation because of no payment of annual fees |