JP3299294B2 - メモリブロック制御方式 - Google Patents
メモリブロック制御方式Info
- 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】
【産業上の利用分野】本発明はマルチプログラミングを
サポートするオペレーティングシステムを備える情報処
理装置におけるメモリ割り当て制御方式に関する。
サポートするオペレーティングシステムを備える情報処
理装置におけるメモリ割り当て制御方式に関する。
【0002】マルチプログラミングをサポートするオペ
レーティングシステム(OS)では,ユーザプログラム
からのメモリ確保要求に対して速やかに割り当て可能メ
モリを検索して割り当てを行う必要がある。その場合,
OSにより管理するユーザ用のメモリエリアを効率的に
利用すると共に必要なメモリブロックの割り当て及び解
放を高速に行うことが望まれている。
レーティングシステム(OS)では,ユーザプログラム
からのメモリ確保要求に対して速やかに割り当て可能メ
モリを検索して割り当てを行う必要がある。その場合,
OSにより管理するユーザ用のメモリエリアを効率的に
利用すると共に必要なメモリブロックの割り当て及び解
放を高速に行うことが望まれている。
【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の説明図である。図12に示す従来例1の方法
は,(1) に示すようにメモリのユーザ領域を一定サイズ
(例えば4KB:キロバイト)のページで分割して管理
する。これらの各ページP0,P1,P2,P3・・・
の使用状態(使用中/未使用)を表すビットを(2) に示
すようにa0,a1,a2,a3・・と割り当てて格納
してビットマップを設ける。このビットマップには, ペ
ージが使用中の時“1”が格納され,未使用の時“0”
が格納され,図12の(3) にビットマップに実際に使用
状態を表すビット情報が格納された例を示す。ユーザか
らメモリ確保要求があると,OSにより(3) に示すよう
なビットマップを参照して未使用のページを検出して,
そのページを割り当てる。
【0004】次に図13に示す従来例2の方法を説明す
ると,メモリをユーザが必要とするサイズを持つブロッ
クで分割する。各ブロックは,次にリンクするブロック
の先頭アドレスと使用状態(使用中/未使用)の情報及
びブロックのサイズを表す情報をブロックの管理エリア
に格納され,その後にそのブロックで実際に使用される
データエリアが設けられ,各ブロックは全て同様な構成
を備えている。この先頭アドレスのリンクにより関係付
けられたブロックは,リンクの最初の方は使用中であ
り,リンクの後の方に未使用のブロックがある。
ると,メモリをユーザが必要とするサイズを持つブロッ
クで分割する。各ブロックは,次にリンクするブロック
の先頭アドレスと使用状態(使用中/未使用)の情報及
びブロックのサイズを表す情報をブロックの管理エリア
に格納され,その後にそのブロックで実際に使用される
データエリアが設けられ,各ブロックは全て同様な構成
を備えている。この先頭アドレスのリンクにより関係付
けられたブロックは,リンクの最初の方は使用中であ
り,リンクの後の方に未使用のブロックがある。
【0005】リンクされる順序はメモリの物理的なアド
レスと関係ない。この従来例2の場合,ユーザからのメ
モリ確保要求があると,OSは先頭アドレスのリンクに
従って未使用状態のブロックを探索することにより未使
用のブロックを見つけて,ユーザに割り当てる。
レスと関係ない。この従来例2の場合,ユーザからのメ
モリ確保要求があると,OSは先頭アドレスのリンクに
従って未使用状態のブロックを探索することにより未使
用のブロックを見つけて,ユーザに割り当てる。
【0006】
【発明が解決しようとする課題】上記した従来例1のビ
ットマップにより管理する方法では,メモリ割り当て単
位がOSの管理単位に限定されてしまい,必要以上に大
きなサイズまたは小さなサイズが割り当てられるという
問題がある。また,常にビットマップを検索するため空
きメモリ検索に時間がかかるという問題があった。
ットマップにより管理する方法では,メモリ割り当て単
位がOSの管理単位に限定されてしまい,必要以上に大
きなサイズまたは小さなサイズが割り当てられるという
問題がある。また,常にビットマップを検索するため空
きメモリ検索に時間がかかるという問題があった。
【0007】また,従来例2のリンクするブロックの先
頭を指すアドレス,サイズ等を管理用エリアに格納する
方法では,メモリ割り当て単位に対して自由度があるも
のの,使用中メモリ領域から空きメモリを検索するた
め,ビットマップによる管理以上に空きメモリ検索に時
間がかかるという問題がある。
頭を指すアドレス,サイズ等を管理用エリアに格納する
方法では,メモリ割り当て単位に対して自由度があるも
のの,使用中メモリ領域から空きメモリを検索するた
め,ビットマップによる管理以上に空きメモリ検索に時
間がかかるという問題がある。
【0008】本発明はメモリ割り当てサイズに対しての
自由度を与えながらメモリブロックの割り当て及び解放
を高速にするメモリブロック制御方式を提供することを
目的とする。
自由度を与えながらメモリブロックの割り当て及び解放
を高速にするメモリブロック制御方式を提供することを
目的とする。
【0009】
【課題を解決するための手段】図1は本発明の基本構成
図である。図1において,1は処理部,2はビットマッ
プ,3は使用中のメモリページで構成するキューのキュ
ーヘッダ(PQHで表す),4はメモリである。
図である。図1において,1は処理部,2はビットマッ
プ,3は使用中のメモリページで構成するキューのキュ
ーヘッダ(PQHで表す),4はメモリである。
【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
とを備える。
(BMC),13はメモリページ制御部(MPC),1
7はメモリブロック制御部(MBC)である。ビットマ
ップ制御部10は空きメモリページを取得する制御を行
う空きページ検索部(BMC0)11とメモリページを
解放するためのページ未使用設定部(BMC1)12と
を備え,メモリページ制御部13はメモリページリンク
部(MPC0)14,メモリページアンリンク部(MP
C1)15及びメモリページ検査部(MPC2)16と
を備え,メモリブロック制御部17は確保要求制御部
(MBC0)18及び解放要求制御部(MBC1)19
とを備える。
【0011】ビットマップ2は管理する各メモリページ
をそれぞれビットに対応して保持し,各ビット位置は,
それぞれメモリのページポインタを表す。初期状態では
各ビットb0〜bnは全て“0”である。
をそれぞれビットに対応して保持し,各ビット位置は,
それぞれメモリのページポインタを表す。初期状態では
各ビットb0〜bnは全て“0”である。
【0012】メモリ4は,一定のサイズを持つメモリペ
ージ(MP)5からなり,各メモリページ5は,ユーザ
が希望するサイズを持つ複数のメモリブロック(MB)
6から成る。
ージ(MP)5からなり,各メモリページ5は,ユーザ
が希望するサイズを持つ複数のメモリブロック(MB)
6から成る。
【0013】各メモリページ(MP)5には,最初に使
用中メモリページによってキューを構成するための双方
向(前方と後方)のリンクポインタ(PQ)5aが,そ
の後に使用メモリブロック数カウンタ(UCNT)5b
及び未使用メモリブロックで構成するキューの先頭を表
すキューヘッダ(BQH)5cが格納されている。
用中メモリページによってキューを構成するための双方
向(前方と後方)のリンクポインタ(PQ)5aが,そ
の後に使用メモリブロック数カウンタ(UCNT)5b
及び未使用メモリブロックで構成するキューの先頭を表
すキューヘッダ(BQH)5cが格納されている。
【0014】また,各メモリブロック(MB)6は,先
頭に未使用メモリブロック(MB)によりキューを構成
するための双方向リンクポインタ(BQ)6aと,自メ
モリブロックを含むメモリページの先頭を示すポインタ
(QP)6bが格納され,その後にユーザプログラムが
使用可能なメモリブロックのデータ領域(MBD)6c
が配置されている。
頭に未使用メモリブロック(MB)によりキューを構成
するための双方向リンクポインタ(BQ)6aと,自メ
モリブロックを含むメモリページの先頭を示すポインタ
(QP)6bが格納され,その後にユーザプログラムが
使用可能なメモリブロックのデータ領域(MBD)6c
が配置されている。
【0015】本発明は一定の大きさのメモリ管理単位
(メモリページ)でメモリの使用・未使用を管理するメ
モリマップを設け,メモリページ内にメモリページキュ
ーを構成する双方向リンクポインタとメモリページ内に
分割された領域(メモリブロック)を設けて,その使用
量を表すブロック数カウンタとメモリブロックキューを
構成する双方向リンクポインタとそのメモリブロックが
存在するメモリページの先頭を指示するポインタを設
け,これらの各部の制御する手段によりユーザプログラ
ムからのメモリ確保要求に対して速やかに割当て可能な
メモリを検索して割り当てを行うものである。
(メモリページ)でメモリの使用・未使用を管理するメ
モリマップを設け,メモリページ内にメモリページキュ
ーを構成する双方向リンクポインタとメモリページ内に
分割された領域(メモリブロック)を設けて,その使用
量を表すブロック数カウンタとメモリブロックキューを
構成する双方向リンクポインタとそのメモリブロックが
存在するメモリページの先頭を指示するポインタを設
け,これらの各部の制御する手段によりユーザプログラ
ムからのメモリ確保要求に対して速やかに割当て可能な
メモリを検索して割り当てを行うものである。
【0016】
【作用】プログラムからの確保要求や解放要求に対し
て,図1の処理部1においてビットマップ制御部10,
メモリページ制御部13及びメモリブロック制御部17
のそれぞれに設けられた機構の中から必要なものを組み
合わせることにより実現される。以下,各制御部に設け
られた各部が備える機能を説明する。
て,図1の処理部1においてビットマップ制御部10,
メモリページ制御部13及びメモリブロック制御部17
のそれぞれに設けられた機構の中から必要なものを組み
合わせることにより実現される。以下,各制御部に設け
られた各部が備える機能を説明する。
【0017】ビットマップ制御部10の空きページ検索
部(BMC0)11は,要求によりビットマップ2を検
索して0状態(未使用)のビットを検出し,そのビット
に対応するメモリページ(MP)の先頭位置のアドレス
であるメモリページポインタ(MPポインタという)を
要求元へ返送し,0状態のビットがなかった場合は要求
元へ未使用のメモリページが無いことを通知する。
部(BMC0)11は,要求によりビットマップ2を検
索して0状態(未使用)のビットを検出し,そのビット
に対応するメモリページ(MP)の先頭位置のアドレス
であるメモリページポインタ(MPポインタという)を
要求元へ返送し,0状態のビットがなかった場合は要求
元へ未使用のメモリページが無いことを通知する。
【0018】ビットマップ制御部10のページ未使用設
定部(BMC1)12は,要求により要求元が指定する
メモリポインタで示されるメモリページに対応するビッ
トマップ(BM)2の中のビットを“0”にセットす
る。
定部(BMC1)12は,要求により要求元が指定する
メモリポインタで示されるメモリページに対応するビッ
トマップ(BM)2の中のビットを“0”にセットす
る。
【0019】メモリページ制御部13のメモリページリ
ンク部(MPC0)14は,要求により以下の処理を行
う。 要求元がMPポインタにより指定するメモリページ
を,同じく要求元が指定するページキューヘッダ(PQ
H)及び指定されたメモリページのリンクポインタ(P
Q)により使用中メモリページキューの最後尾へリンク
する。
ンク部(MPC0)14は,要求により以下の処理を行
う。 要求元がMPポインタにより指定するメモリページ
を,同じく要求元が指定するページキューヘッダ(PQ
H)及び指定されたメモリページのリンクポインタ(P
Q)により使用中メモリページキューの最後尾へリンク
する。
【0020】要求元がMPポインタにより指定するメ
モリページ5を,同じく要求元が指定する大きさを持つ
メモリブロックに分割し,使用メモリブロック数カウン
タ(UCNT)5bを0に初期化する。
モリページ5を,同じく要求元が指定する大きさを持つ
メモリブロックに分割し,使用メモリブロック数カウン
タ(UCNT)5bを0に初期化する。
【0021】分割した全メモリブロック6を指定され
たメモリページ内の未使用メモリブロックキューヘッダ
(BQH)5c及び各メモリブロック内の双方向リンク
ポインタ(BQ)6aによって未使用メモリブロックキ
ューを構成する。
たメモリページ内の未使用メモリブロックキューヘッダ
(BQH)5c及び各メモリブロック内の双方向リンク
ポインタ(BQ)6aによって未使用メモリブロックキ
ューを構成する。
【0022】全メモリブロック6内に設けられた各メ
モリブロックを含むメモリページの先頭を示すポインタ
(QP)6bに,指定されたMPポインタを設定する。
メモリページ制御部13のメモリページアンリンク部
(MPC1)15は,要求により要求元がMPポインタ
により指定するメモリページを,メモリページの双方向
リンクポインタ(PQ)5aによって使用中のメモリペ
ージキューからアンリンク(リンクから外す)する。
モリブロックを含むメモリページの先頭を示すポインタ
(QP)6bに,指定されたMPポインタを設定する。
メモリページ制御部13のメモリページアンリンク部
(MPC1)15は,要求により要求元がMPポインタ
により指定するメモリページを,メモリページの双方向
リンクポインタ(PQ)5aによって使用中のメモリペ
ージキューからアンリンク(リンクから外す)する。
【0023】メモリページ制御部13のメモリページ検
査部(MPC2)16は,要求により要求元が指定する
メモリブロックサイズを用いて1メモリページの全メモ
リブロック数を算出(1ページのサイズ/指定メモリプ
ログラムサイズを算出)し,要求元が指定するページキ
ューヘッダ(PQH)3によって使用中のメモリページ
キュー(双方向リンクポインタPQ)5aを検索し,使
用メモリブロック数カウンタ(UCNT)5bがメモリ
ページ内の全メモリブロック数以内であるMPポインタ
を要求元に返送し,そのようなメモリページが無い場合
はその旨を通知する。
査部(MPC2)16は,要求により要求元が指定する
メモリブロックサイズを用いて1メモリページの全メモ
リブロック数を算出(1ページのサイズ/指定メモリプ
ログラムサイズを算出)し,要求元が指定するページキ
ューヘッダ(PQH)3によって使用中のメモリページ
キュー(双方向リンクポインタPQ)5aを検索し,使
用メモリブロック数カウンタ(UCNT)5bがメモリ
ページ内の全メモリブロック数以内であるMPポインタ
を要求元に返送し,そのようなメモリページが無い場合
はその旨を通知する。
【0024】次に,メモリブロック制御部17の確保要
求制御部(MBC0)18は,要求により以下の処理を
行う。 要求元が指定するページキューヘッダ(PQH)3を
用いてメモリページ検査部(MPC2)16へ要求を発
生して,使用ブロック数カウンタ(UCNT)5bを用
いて要求元が指定するメモリブロック数以内のメモリペ
ージのポインタ(MPポインタ)を確保する。
求制御部(MBC0)18は,要求により以下の処理を
行う。 要求元が指定するページキューヘッダ(PQH)3を
用いてメモリページ検査部(MPC2)16へ要求を発
生して,使用ブロック数カウンタ(UCNT)5bを用
いて要求元が指定するメモリブロック数以内のメモリペ
ージのポインタ(MPポインタ)を確保する。
【0025】メモリページ内の全メモリブロック数以
内( 全メモリブロックが使用状態ではない) の使用メモ
リブロック数カウンタ(UCNT)を持つメモリページ
があった場合は,次の処理を行う。
内( 全メモリブロックが使用状態ではない) の使用メモ
リブロック数カウンタ(UCNT)を持つメモリページ
があった場合は,次の処理を行う。
【0026】(1) 返送されたメモリページ内の未使用メ
モリブロックのキューヘッダ(BQH)5cによって示
す先頭のメモリブロックをキューからアンリンクする。 (2) 返送されたMPポインタが示すメモリページ内の使
用メモリブロック数カウンタ(UCNT)5bを+1し
て更新する。
モリブロックのキューヘッダ(BQH)5cによって示
す先頭のメモリブロックをキューからアンリンクする。 (2) 返送されたMPポインタが示すメモリページ内の使
用メモリブロック数カウンタ(UCNT)5bを+1し
て更新する。
【0027】(3) アンリンクしたメモリブロックの先頭
を示すポインタ(MBポインタ)を要求元に返送する。 メモリページ内の全メモリブロック数以内の使用メモ
リブロック数カウンタ(UCNT)を持つメモリページ
が無かった場合,次の処理を行う。
を示すポインタ(MBポインタ)を要求元に返送する。 メモリページ内の全メモリブロック数以内の使用メモ
リブロック数カウンタ(UCNT)を持つメモリページ
が無かった場合,次の処理を行う。
【0028】(1) 上記した空きページ検索部(BMC
0)11に対し要求を発行し,ビットマップ内の0状態
であるビットに対応するメモリページのMPポインタを
取得する。
0)11に対し要求を発行し,ビットマップ内の0状態
であるビットに対応するメモリページのMPポインタを
取得する。
【0029】(2) 取得したMPポインタ及び要求元が指
定するページキューヘッダ(PQH)を用いてMPアン
リンク部(MPC1)15へ要求を発行し,取得したM
Pを使用中MPキューの最後尾にリンクする。
定するページキューヘッダ(PQH)を用いてMPアン
リンク部(MPC1)15へ要求を発行し,取得したM
Pを使用中MPキューの最後尾にリンクする。
【0030】(3) 要求元が指定するPQHを用いてメモ
リページ検査部(MPC2)16へ要求を発行して,使
用メモリブロック数カウンタ(UCNT)5bが,要求
元の指定するメモリブロックサイズを収容する余裕をも
つメモリページに対応するMPポインタを取得する。こ
の後, 上記の(1) 〜(3) と同様の処理が行われる。
リページ検査部(MPC2)16へ要求を発行して,使
用メモリブロック数カウンタ(UCNT)5bが,要求
元の指定するメモリブロックサイズを収容する余裕をも
つメモリページに対応するMPポインタを取得する。こ
の後, 上記の(1) 〜(3) と同様の処理が行われる。
【0031】上記の(1) において,空きページ検索部
(MBC0)11への要求発行に対して0状態のビット
がなかったことが通知された場合,要求元へ割り当て失
敗を通知する。
(MBC0)11への要求発行に対して0状態のビット
がなかったことが通知された場合,要求元へ割り当て失
敗を通知する。
【0032】メモリブロック制御部17の解放要求制御
部(MBC1)19は,要求により次の処理を行う。 要求元がMBポインタにより指定するメモリブロック
6内のポインタ(QP)6bにより,指定メモリブロッ
クが存在するメモリページのMPポインタを取得する。
部(MBC1)19は,要求により次の処理を行う。 要求元がMBポインタにより指定するメモリブロック
6内のポインタ(QP)6bにより,指定メモリブロッ
クが存在するメモリページのMPポインタを取得する。
【0033】指定するメモリブロック6内の双方向リ
ンクポインタ(BQ)6a及び取得したMPポインタに
よって示されるメモリページ5内のキューヘッダ(BQ
H)5cによって,指定メモリブロックを未使用MBキ
ューにリンクする。
ンクポインタ(BQ)6a及び取得したMPポインタに
よって示されるメモリページ5内のキューヘッダ(BQ
H)5cによって,指定メモリブロックを未使用MBキ
ューにリンクする。
【0034】取得したMPポインタによって示される
メモリページ内の使用メモリブロック数カウンタ(UC
NT)5bを−1して更新する。 UCNTが0の時は,取得したMPポインタを用いて
メモリページアンリンク部(MPC1)15へ要求を発
行し,MPポインタで示されるメモリページを使用中M
Pキューからアンリンクし,続いてページ未使用設定部
(BMC1)12へ要求を発行し,MPポインタで示さ
れるメモリページに対応するビットマップ2内のビット
を0に設定する。
メモリページ内の使用メモリブロック数カウンタ(UC
NT)5bを−1して更新する。 UCNTが0の時は,取得したMPポインタを用いて
メモリページアンリンク部(MPC1)15へ要求を発
行し,MPポインタで示されるメモリページを使用中M
Pキューからアンリンクし,続いてページ未使用設定部
(BMC1)12へ要求を発行し,MPポインタで示さ
れるメモリページに対応するビットマップ2内のビット
を0に設定する。
【0035】図1において,ユーザプログラムが希望す
る大きさのメモリ領域を確保したい場合,メモリブロッ
ク制御部17の確保要求制御部(MBC0)18に対し
て,ページキューヘッダ(PQH)及び確保するサイズ
を指定して要求を発行する。
る大きさのメモリ領域を確保したい場合,メモリブロッ
ク制御部17の確保要求制御部(MBC0)18に対し
て,ページキューヘッダ(PQH)及び確保するサイズ
を指定して要求を発行する。
【0036】これに応じて確保要求制御部(MBC0)
18は,メモリページリンク部(MPC0)14,メモ
リページ検査部(MPC2)16及び空きページ検索部
(BMC0)11を制御することにより,最終的にユー
ザプログラムに対して使用可能なメモリブロックのメモ
リブロックポインタ(アドレス)を返送する。
18は,メモリページリンク部(MPC0)14,メモ
リページ検査部(MPC2)16及び空きページ検索部
(BMC0)11を制御することにより,最終的にユー
ザプログラムに対して使用可能なメモリブロックのメモ
リブロックポインタ(アドレス)を返送する。
【0037】また,メモリ領域を解放する場合,解放要
求制御部(MBC1)19に対して解放するメモリブロ
ックのメモリブロックポインタを指定して要求を発行す
ると,解放要求制御部(MBC1)19はメモリページ
アンリンク部(MPC1)15及びページ未使用設定部
(BMC1)12を制御して指定されたメモリブロック
を解放する。
求制御部(MBC1)19に対して解放するメモリブロ
ックのメモリブロックポインタを指定して要求を発行す
ると,解放要求制御部(MBC1)19はメモリページ
アンリンク部(MPC1)15及びページ未使用設定部
(BMC1)12を制御して指定されたメモリブロック
を解放する。
【0038】同一サイズのメモリ確保要求がプログラム
から発行した場合,最初の要求及び未使用メモリブロッ
クがなくなり,新たなメモリページを必要とする時以外
は,殆どの場合キューを操作することにより迅速なメモ
リ確保が可能となる。
から発行した場合,最初の要求及び未使用メモリブロッ
クがなくなり,新たなメモリページを必要とする時以外
は,殆どの場合キューを操作することにより迅速なメモ
リ確保が可能となる。
【0039】同様に同一サイズのメモリ解放要求が発行
された場合,解放メモリブロックを含むメモリページ内
の全てのメモリブロックが未使用となり,メモリページ
そのものを解放する時以外は,キュー操作だけで行われ
るため迅速なメモリ解放が可能となる。
された場合,解放メモリブロックを含むメモリページ内
の全てのメモリブロックが未使用となり,メモリページ
そのものを解放する時以外は,キュー操作だけで行われ
るため迅速なメモリ解放が可能となる。
【0040】さらに,ユーザブロックが複数のページキ
ューヘッダ(PQH)を持つことにより,それぞれのペ
ージキューヘッダ毎に異なったサイズのメモリブロック
の確保・解放を行うことができる。
ューヘッダ(PQH)を持つことにより,それぞれのペ
ージキューヘッダ毎に異なったサイズのメモリブロック
の確保・解放を行うことができる。
【0041】
【実施例】図2はメモリの確保・解放制御のための各サ
ブルーチンとユーザプログラムの関係説明図,図3は本
発明によるメモリの構成図である。
ブルーチンとユーザプログラムの関係説明図,図3は本
発明によるメモリの構成図である。
【0042】図2において,20は処理装置のオペレー
ティングシステム(OS)であり,BMC0・11〜M
BC1・19はOS内のサブルーチンであり,それぞれ
図1の同一符号の各部に対応する。21は処理装置のユ
ーザプログラム(UP)であり,PQH0,PQH1は
それぞれ異なるページキューヘッダであり,ユーザプロ
グラムによりメモリの確保・解放の要求の時に使用す
る,初期状態では0にセットされている。
ティングシステム(OS)であり,BMC0・11〜M
BC1・19はOS内のサブルーチンであり,それぞれ
図1の同一符号の各部に対応する。21は処理装置のユ
ーザプログラム(UP)であり,PQH0,PQH1は
それぞれ異なるページキューヘッダであり,ユーザプロ
グラムによりメモリの確保・解放の要求の時に使用す
る,初期状態では0にセットされている。
【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からコールされる。
1,MPC0(メモリページリンク部)14及びMPC
2(メモリページ検査部)16はMBC0(確保要求制
御部)18によりコールされ,BMC1(ページ未使用
設定部)12,MPC1(メモリページアンリンク部)
15は,MBC1(解放要求制御部)19からコールさ
れる。またMBC0(確保要求制御部)18とMBC1
(解放要求制御部)19はユーザプログラム(UP)2
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と同様の構成を備えている。
は,各ページ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と同様の構成を備えている。
【0045】次に上記図2に示すOS20に設けられた
各サブルーチンのフローチャートを図4乃至図9に示
す。図4は空きページ検索部(BMC0)の処理フロ
ー,図5はページ未使用設定部(BMC1)の処理フロ
ー,図6はメモリページリンク部(MPC0)の処理フ
ロー,図7はメモリページアンリンク部(MPC1)の
処理フロー及びメモリページの検査部(MPC2)の処
理フロー,図8は確保要求制御部(MBC0)の処理フ
ロー,図9は解放要求制御部(MBC1)の処理フロー
である。
各サブルーチンのフローチャートを図4乃至図9に示
す。図4は空きページ検索部(BMC0)の処理フロ
ー,図5はページ未使用設定部(BMC1)の処理フロ
ー,図6はメモリページリンク部(MPC0)の処理フ
ロー,図7はメモリページアンリンク部(MPC1)の
処理フロー及びメモリページの検査部(MPC2)の処
理フロー,図8は確保要求制御部(MBC0)の処理フ
ロー,図9は解放要求制御部(MBC1)の処理フロー
である。
【0046】図4において,空きページ検索部(BMC
0)は入力パラメータを伴わないで起動し,出力として
MP(メモリページ)先頭アドレスが得られる。起動す
ると,ビットマップBMの“0”ビットを検索し(S
1),検索された“0”のビット(空きメモリページを
取得)を“1”に設定する(S2)。その検索結果のビ
ットのビット位置から,対応するMP先頭アドレスを算
出し(S3),算出したMP先頭アドレスを出力パラメ
ータとして設定して終了する(S4)。
0)は入力パラメータを伴わないで起動し,出力として
MP(メモリページ)先頭アドレスが得られる。起動す
ると,ビットマップBMの“0”ビットを検索し(S
1),検索された“0”のビット(空きメモリページを
取得)を“1”に設定する(S2)。その検索結果のビ
ットのビット位置から,対応するMP先頭アドレスを算
出し(S3),算出したMP先頭アドレスを出力パラメ
ータとして設定して終了する(S4)。
【0047】図5において,ページ未使用設定部(BM
C1)は,入力パラメータとしてMP先頭アドレスを指
定し,出力として発生するものはない処理である。起動
すると,入力パラメータにより指定されたMP先頭アド
レスから,対応するビットマップ内のビット位置を算出
し,算出したビットマップ内に位置するビットを“0”
に設定する。
C1)は,入力パラメータとしてMP先頭アドレスを指
定し,出力として発生するものはない処理である。起動
すると,入力パラメータにより指定されたMP先頭アド
レスから,対応するビットマップ内のビット位置を算出
し,算出したビットマップ内に位置するビットを“0”
に設定する。
【0048】次に図6に示すメモリページリンク部(M
PC0)は,起動要求の時に入力パラメータとして,P
QH先頭アドレス,メモリページ(MP)先頭アドレス
及びメモリブロック(MB)サイズを指定すると,対応
するメモリページがリンクされ,そのページに指定され
たサイズの複数のメモリブロック(未使用)が形成さ
れ,各メモリブロックにそれぞれの制御情報が設定され
る。
PC0)は,起動要求の時に入力パラメータとして,P
QH先頭アドレス,メモリページ(MP)先頭アドレス
及びメモリブロック(MB)サイズを指定すると,対応
するメモリページがリンクされ,そのページに指定され
たサイズの複数のメモリブロック(未使用)が形成さ
れ,各メモリブロックにそれぞれの制御情報が設定され
る。
【0049】起動すると,入力パラメータとして指定さ
れたMP先頭アドレスを用いてメモリからPQアドレス
(ページキューの双方向リンクポインタ)を取得する
(S1)。取得したPQアドレスにより,入力パラメー
タとして指定されたMPを同じく指定されたページキュ
ーヘッダ(PQH)にリンクする(S2)。これにより
指定したMP先頭アドレスをもつメモリページが使用中
のページキュー(PQ)に追加される。
れたMP先頭アドレスを用いてメモリからPQアドレス
(ページキューの双方向リンクポインタ)を取得する
(S1)。取得したPQアドレスにより,入力パラメー
タとして指定されたMPを同じく指定されたページキュ
ーヘッダ(PQH)にリンクする(S2)。これにより
指定したMP先頭アドレスをもつメモリページが使用中
のページキュー(PQ)に追加される。
【0050】次に入力パラメータにより指定されたMB
サイズにより1メモリページ内のメモリブロック数を算
出し(S3),同じく指定されたMP内の使用メモリブ
ロック数カウンタ(UCNT)に0を設定する(S
4)。これは,このページのメモリブロックはこの時点
では未使用であるからである。
サイズにより1メモリページ内のメモリブロック数を算
出し(S3),同じく指定されたMP内の使用メモリブ
ロック数カウンタ(UCNT)に0を設定する(S
4)。これは,このページのメモリブロックはこの時点
では未使用であるからである。
【0051】この後,指定のメモリページを算出したメ
モリブロック数分のメモリブロックに分割し(S5),
分割した各メモリブロック内の未使用メモリブロックキ
ューの双方向リンクポインタ(BQ)を取得する(S
6)。取得したBQアドレス(ポインタ)により,全メ
モリブロックをメモリページ内の未使用メモリブロック
のキューヘッダ(BQH)にリンクする(S7)。この
S5〜S7の処理によりメモリページ内の全メモリブロ
ックが空き状態にされる。
モリブロック数分のメモリブロックに分割し(S5),
分割した各メモリブロック内の未使用メモリブロックキ
ューの双方向リンクポインタ(BQ)を取得する(S
6)。取得したBQアドレス(ポインタ)により,全メ
モリブロックをメモリページ内の未使用メモリブロック
のキューヘッダ(BQH)にリンクする(S7)。この
S5〜S7の処理によりメモリページ内の全メモリブロ
ックが空き状態にされる。
【0052】次に分割した各メモリブロック内のQP
(自メモリブロックが属するメモリページの先頭アドレ
ス)を格納すべきアドレスを取得し(S8),取得した
各アドレスに全メモリブロック内のQPにメモリページ
先頭アドレスを設定し(S9),終了する。
(自メモリブロックが属するメモリページの先頭アドレ
ス)を格納すべきアドレスを取得し(S8),取得した
各アドレスに全メモリブロック内のQPにメモリページ
先頭アドレスを設定し(S9),終了する。
【0053】上記のメモリページリンク部の処理におい
て実行される使用メモリページのキュー及び未使用メモ
リブロック等のキューのリンク構成を,図10及び図1
1を用いて説明する。
て実行される使用メモリページのキュー及び未使用メモ
リブロック等のキューのリンク構成を,図10及び図1
1を用いて説明する。
【0054】図10にはキュー1,キュー2の2つのキ
ューが形成されている例であり,この状態をリンク前の
状態とする。この時,リンクヘッダにはキューの先頭の
キュー1のポインタを表す前方リンクと最後尾のキュー
2のポインタを表す後方リンクとで双方向ポインタが構
成される。リンクヘッダの前方リンクで示す位置にキュ
ー1が設けられ,その中に同様に双方向リンクが格納さ
れており,このキュー1の前方リンクにより示す位置に
キュー2が図10に示すように設けられている。この状
態で,新たに別のキュー(例えば,使用メモリページや
未使用メモリブロック)をリンク対象キューとして追加
する場合の構成を図11に示す。
ューが形成されている例であり,この状態をリンク前の
状態とする。この時,リンクヘッダにはキューの先頭の
キュー1のポインタを表す前方リンクと最後尾のキュー
2のポインタを表す後方リンクとで双方向ポインタが構
成される。リンクヘッダの前方リンクで示す位置にキュ
ー1が設けられ,その中に同様に双方向リンクが格納さ
れており,このキュー1の前方リンクにより示す位置に
キュー2が図10に示すように設けられている。この状
態で,新たに別のキュー(例えば,使用メモリページや
未使用メモリブロック)をリンク対象キューとして追加
する場合の構成を図11に示す。
【0055】すなわち,図11に示すように,リンク対
象キューのアドレスは,現在のリンクヘッダの前方リン
クに設定され,リンク前の状態(図10)でリンクヘッ
ダに格納されていた前方リンクの内容をリンク対象キュ
ーの前方リンクに設定する。また,リンク前のキュー1
に格納されていた後方リンク(リンクヘッダのポイン
タ)の内容をリンク対象キューの後方リンクに設定し,
キュー1の後方リンクにリンク対象キューのアドレスが
設定される。
象キューのアドレスは,現在のリンクヘッダの前方リン
クに設定され,リンク前の状態(図10)でリンクヘッ
ダに格納されていた前方リンクの内容をリンク対象キュ
ーの前方リンクに設定する。また,リンク前のキュー1
に格納されていた後方リンク(リンクヘッダのポイン
タ)の内容をリンク対象キューの後方リンクに設定し,
キュー1の後方リンクにリンク対象キューのアドレスが
設定される。
【0056】次に,メモリページアンリンク部(MPC
1)の処理フローを図7のA.により説明すると,この
処理は入力パラメータとしてアンリンクしたいメモリペ
ージ(MP)先頭アドレスを指定すると,そのメモリペ
ージが使用中メモリページキューからアンリンクされ
る。この場合のアンリンクの動作は,上記図10,図1
1に説明したリンクの動作と逆の動作(図11の状態か
ら図10の状態にする動作)に相当する。
1)の処理フローを図7のA.により説明すると,この
処理は入力パラメータとしてアンリンクしたいメモリペ
ージ(MP)先頭アドレスを指定すると,そのメモリペ
ージが使用中メモリページキューからアンリンクされ
る。この場合のアンリンクの動作は,上記図10,図1
1に説明したリンクの動作と逆の動作(図11の状態か
ら図10の状態にする動作)に相当する。
【0057】起動すると,指定されたMP先頭アドレス
から,メモリページ内のPQアドレス(双方向リンクポ
インタ)を取得し(図7のA.のS1),取得したPQ
アドレスを元に指定されたMPをPQHからアンリンク
する(同S2)。
から,メモリページ内のPQアドレス(双方向リンクポ
インタ)を取得し(図7のA.のS1),取得したPQ
アドレスを元に指定されたMPをPQHからアンリンク
する(同S2)。
【0058】次にメモリページの検査部(MPC2)の
処理フローを図7のB.により説明すると,入力パラメ
ータとしてPQH先頭アドレス(PQHが格納されたア
ドレス)と必要なメモリブロックサイズを指定すると,
指定したメモリブロックサイズを割り当てることができ
るメモリページを探して,検出するとMP先頭アドレス
を出力し,検出できない場合はその旨の検索結果を出力
する。
処理フローを図7のB.により説明すると,入力パラメ
ータとしてPQH先頭アドレス(PQHが格納されたア
ドレス)と必要なメモリブロックサイズを指定すると,
指定したメモリブロックサイズを割り当てることができ
るメモリページを探して,検出するとMP先頭アドレス
を出力し,検出できない場合はその旨の検索結果を出力
する。
【0059】図7のB.のメモリページ検査部が起動す
ると,指定(要求)されたメモリブロックサイズで1メ
モリページのサイズを除算して全メモリブロック数(こ
れをzとする)を算出する(図7のB.のS1)。なお
指定されたメモリブロックサイズは既に使用されている
メモリページ内に設けたメモリブロック(MB)1個の
サイズと一致する場合や一致しない場合があり,この演
算でメモリページのメモリブロックが何個分で指定され
たメモリサイズに相当するかを求める。
ると,指定(要求)されたメモリブロックサイズで1メ
モリページのサイズを除算して全メモリブロック数(こ
れをzとする)を算出する(図7のB.のS1)。なお
指定されたメモリブロックサイズは既に使用されている
メモリページ内に設けたメモリブロック(MB)1個の
サイズと一致する場合や一致しない場合があり,この演
算でメモリページのメモリブロックが何個分で指定され
たメモリサイズに相当するかを求める。
【0060】次に指定されたPQH先頭アドレスをもと
に,順次使用されている各メモリページ内のUCNTア
ドレスを取得する(同S2)。取得したUCNTアドレ
スにより,各メモリページ内のUCNTを判定し,UC
NTの値が算出した1メモリページ内のメモリブロック
数(z)と一致しない(但し,UCNT>zの場合だ
け)メモリページを検索する(S3)。この検索の結
果,該当するメモリページが検索できないと,検索NG
(失敗)を出力パラメータとして設定し(S4,S
5),該当するメモリページが検索されるとその先頭ア
ドレス及び検索OK(成功)を出力パラメータとして設
定して(S6,S7),終了する。出力パラメータは要
求元に対して通知される。
に,順次使用されている各メモリページ内のUCNTア
ドレスを取得する(同S2)。取得したUCNTアドレ
スにより,各メモリページ内のUCNTを判定し,UC
NTの値が算出した1メモリページ内のメモリブロック
数(z)と一致しない(但し,UCNT>zの場合だ
け)メモリページを検索する(S3)。この検索の結
果,該当するメモリページが検索できないと,検索NG
(失敗)を出力パラメータとして設定し(S4,S
5),該当するメモリページが検索されるとその先頭ア
ドレス及び検索OK(成功)を出力パラメータとして設
定して(S6,S7),終了する。出力パラメータは要
求元に対して通知される。
【0061】図8に示す確保要求制御部(MBC0)の
処理フローは,ユーザプログラムからのメモリ確保要求
により起動する。入力パラメータとしてPQH先頭アド
レスと,メモリブロックサイズが指定され,この確保要
求制御部の処理の結果として確保されたメモリページの
先頭アドレスが出力される。
処理フローは,ユーザプログラムからのメモリ確保要求
により起動する。入力パラメータとしてPQH先頭アド
レスと,メモリブロックサイズが指定され,この確保要
求制御部の処理の結果として確保されたメモリページの
先頭アドレスが出力される。
【0062】図8において,最初にメモリページの検査
部(MPC2:図7のB参照)を起動して要求されたサ
イズのメモリブロックをもつメモリページを検索する
(S1)。この検索の結果,該当するメモリページが無
い(NG)の場合,空きページ検索部(MBC0:図4
参照)を起動して新たに空きメモリページ(MP)を確
保する(S3)。次いで,MPリンク部(MPC0:図
6参照)を起動して確保したメモリページ(MP)を要
求したサイズのメモリブロックで初期化し,空きメモリ
ブロックを作成する(S4)。この後,再びメモリペー
ジの検査部(MPC2:図7のB参照)を起動して,空
きメモリブロックがあるメモリページを検索する(S
5)。この場合,既に空きMBが作成されているので要
求されたサイズのメモリブロックを持つ空きメモリペー
ジが検索される。
部(MPC2:図7のB参照)を起動して要求されたサ
イズのメモリブロックをもつメモリページを検索する
(S1)。この検索の結果,該当するメモリページが無
い(NG)の場合,空きページ検索部(MBC0:図4
参照)を起動して新たに空きメモリページ(MP)を確
保する(S3)。次いで,MPリンク部(MPC0:図
6参照)を起動して確保したメモリページ(MP)を要
求したサイズのメモリブロックで初期化し,空きメモリ
ブロックを作成する(S4)。この後,再びメモリペー
ジの検査部(MPC2:図7のB参照)を起動して,空
きメモリブロックがあるメモリページを検索する(S
5)。この場合,既に空きMBが作成されているので要
求されたサイズのメモリブロックを持つ空きメモリペー
ジが検索される。
【0063】上記の各ステップ(S2,S5)に続い
て,検索された結果であるMP先頭アドレスをもとにメ
モリページ内のBQH(ブロックキューヘッダ)のアド
レスを取得し(S6),BQHにリンクしている先頭メ
モリブロックを未使用リンクからアンリンクし(S
7),アンリンクしたメモリブロックの先頭アドレスを
出力パラメータとして設定する(S8)。
て,検索された結果であるMP先頭アドレスをもとにメ
モリページ内のBQH(ブロックキューヘッダ)のアド
レスを取得し(S6),BQHにリンクしている先頭メ
モリブロックを未使用リンクからアンリンクし(S
7),アンリンクしたメモリブロックの先頭アドレスを
出力パラメータとして設定する(S8)。
【0064】次に図9に示す解放要求制御部(MBC
1)の処理フローは,上記の確保要求制御部と同様にユ
ーザブロックからのメモリ解放要求により起動する。入
力パラメータとして解放したいメモリブロックの先頭ア
ドレスが指定される。
1)の処理フローは,上記の確保要求制御部と同様にユ
ーザブロックからのメモリ解放要求により起動する。入
力パラメータとして解放したいメモリブロックの先頭ア
ドレスが指定される。
【0065】起動すると,最初に指定されたメモリブロ
ック先頭アドレスを元にメモリブロック内のBQアドレ
ス(未使用メモリブロックキューの双方向リンクポイン
タが格納された位置)を取得し(S1),同様にメモリ
ブロック内のQPアドレス(メモリページの先頭を示す
ポインタが格納された位置)を取得する(S2)。取得
したQPにより,メモリページの先頭アドレスを取得し
(S3),これをもとにメモリページ内のBQHアドレ
ス(未使用メモリブロックのキューヘッダの格納位置)
を取得する(S4)。
ック先頭アドレスを元にメモリブロック内のBQアドレ
ス(未使用メモリブロックキューの双方向リンクポイン
タが格納された位置)を取得し(S1),同様にメモリ
ブロック内のQPアドレス(メモリページの先頭を示す
ポインタが格納された位置)を取得する(S2)。取得
したQPにより,メモリページの先頭アドレスを取得し
(S3),これをもとにメモリページ内のBQHアドレ
ス(未使用メモリブロックのキューヘッダの格納位置)
を取得する(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)。
より,指定されたメモリブロックを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)。
【0067】ここで,具体例により実施例の動作を説明
する。図2に示すユーザプログラム(以下UPという)
が,PQH0を用いて,x1バイト(x1はMPサイズ
に比較して充分小さい)のメモリブロックの確保を行う
場合,次のように動作する。この説明の中で使用するメ
モリのメモリページ,メモリブロックの符号は図3を参
照されたい。
する。図2に示すユーザプログラム(以下UPという)
が,PQH0を用いて,x1バイト(x1はMPサイズ
に比較して充分小さい)のメモリブロックの確保を行う
場合,次のように動作する。この説明の中で使用するメ
モリのメモリページ,メモリブロックの符号は図3を参
照されたい。
【0068】(1) UPは入力パラメータとしてPQH0
の先頭アドレスと数値x1(要求ブロックサイズ)を設
定し,確保要求制御部(MBC0)をコールする。 (2) MBC0はUPからの入力パラメータをそのまま引
き継ぎ,メモリページ検査部(MPC2)をコールす
る。
の先頭アドレスと数値x1(要求ブロックサイズ)を設
定し,確保要求制御部(MBC0)をコールする。 (2) MBC0はUPからの入力パラメータをそのまま引
き継ぎ,メモリページ検査部(MPC2)をコールす
る。
【0069】(3) MPC2は,MPサイズからPQ,U
CNT,BQHのサイズを減算したのち,x1で除算し
てメモリページ内の全メモリブロック数z1を算出す
る。 (4) MPC2は,PQH0をキューヘッダとして,UC
NTがz1でないMPを検索する。
CNT,BQHのサイズを減算したのち,x1で除算し
てメモリページ内の全メモリブロック数z1を算出す
る。 (4) MPC2は,PQH0をキューヘッダとして,UC
NTがz1でないMPを検索する。
【0070】(5) 初期状態では, 使用MPキューは空き
状態であるため,検索は失敗となり,MPC2は0を返
送する。 (6) 確保要求制御部(MBC0)はMPC2から0が返
送されたため,新たなMPを確保するため,空きページ
検索部(BMC0)をコールする。
状態であるため,検索は失敗となり,MPC2は0を返
送する。 (6) 確保要求制御部(MBC0)はMPC2から0が返
送されたため,新たなMPを確保するため,空きページ
検索部(BMC0)をコールする。
【0071】(7) 初期状態ではビットマップは全て0で
あるため,BMC0はb0(ビットマップの先頭ビッ
ト)を選択し,その結果対応するメモリページ0(MP
0)の先頭アドレスを返送する。
あるため,BMC0はb0(ビットマップの先頭ビッ
ト)を選択し,その結果対応するメモリページ0(MP
0)の先頭アドレスを返送する。
【0072】(8) MBC0はUPからの入力パラメータ
及びBMC0から返送されたMP0の先頭アドレスを入
力パラメータとして設定し,メモリページリンク部(M
PC0)をコールする。
及びBMC0から返送されたMP0の先頭アドレスを入
力パラメータとして設定し,メモリページリンク部(M
PC0)をコールする。
【0073】(9) MPC0は,MP0をPHQ0へリン
クする。 (10)MPC0はMPサイズ(y1とする)から,PQ,
UCNT,BQHのサイズを減算(制御情報のサイズを
除く)したのち,x1で除算することでMP内の全メモ
リブロック数z1を算出する。
クする。 (10)MPC0はMPサイズ(y1とする)から,PQ,
UCNT,BQHのサイズを減算(制御情報のサイズを
除く)したのち,x1で除算することでMP内の全メモ
リブロック数z1を算出する。
【0074】(11)MPC0は,MP0内のBQH0と,
BQH0の次を先頭アドレスとするメモリブロック00
(MB00,図3参照)内のBQ00をリンクする。以
下,MB0mまでの全MBをリンクし,未使用MBキュ
ーを構成する。
BQH0の次を先頭アドレスとするメモリブロック00
(MB00,図3参照)内のBQ00をリンクする。以
下,MB0mまでの全MBをリンクし,未使用MBキュ
ーを構成する。
【0075】(12)MPC0は,全MB内のQP(QP0
0〜QP0m)にMP0の先頭アドレスを設定して処理
を終了する。 (13)MBC0は,上記(2) と同様にMPC2をコールす
る。
0〜QP0m)にMP0の先頭アドレスを設定して処理
を終了する。 (13)MBC0は,上記(2) と同様にMPC2をコールす
る。
【0076】(14)上記(6) 〜(12)により,未使用MBを
もつMP0がリンクされているため,MPC2はMP0
の先頭アドレスを返送する。 (15)MBC0は返送されたMP0の先頭アドレスによ
り,MP0内のBQH0にリンクされている先頭の未使
用MB(MB00)をアンリンクする。
もつMP0がリンクされているため,MPC2はMP0
の先頭アドレスを返送する。 (15)MBC0は返送されたMP0の先頭アドレスによ
り,MP0内のBQH0にリンクされている先頭の未使
用MB(MB00)をアンリンクする。
【0077】(16)MBC0はMB00の先頭アドレスを
UPへ返送する。この後,UPがさらにPHQ0を用い
て二つ目のx1バイトのメモリブロック(MB)を確保
する場合には,上記(1) 〜(4) を行った後,(5)において
検索成功となって(15),(16) が行われることになる。
UPへ返送する。この後,UPがさらにPHQ0を用い
て二つ目のx1バイトのメモリブロック(MB)を確保
する場合には,上記(1) 〜(4) を行った後,(5)において
検索成功となって(15),(16) が行われることになる。
【0078】また,PQH1を用いて,メモリブロック
サイズがx2バイトのMBを確保する場合も,上記の同
じ動作が行われる。次に初期状態からx1バイトのMB
(MB00)を確保したのち,確保したMBを解放する
場合は以下のように行われる。
サイズがx2バイトのMBを確保する場合も,上記の同
じ動作が行われる。次に初期状態からx1バイトのMB
(MB00)を確保したのち,確保したMBを解放する
場合は以下のように行われる。
【0079】(1) UPはMB00の先頭アドレスを入力
パラメータとして設定し,解放要求制御部(MBC1)
をコールする。 (2) MBC1は,MB00の先頭アドレスからMB00
内BQ00を取得し,さらにMB00内QP00からP
Q0の先頭アドレスを取得する。さらにPQ0の先頭ア
ドレスからBQH0を取得する。
パラメータとして設定し,解放要求制御部(MBC1)
をコールする。 (2) MBC1は,MB00の先頭アドレスからMB00
内BQ00を取得し,さらにMB00内QP00からP
Q0の先頭アドレスを取得する。さらにPQ0の先頭ア
ドレスからBQH0を取得する。
【0080】(3) MBC1は,BQ00及びBQH0に
よって,MB00をMP0内の未使用MBキューにリン
クする。 (4) MBC1は,MP0内のUCNT0を更新する。
よって,MB00をMP0内の未使用MBキューにリン
クする。 (4) MBC1は,MP0内のUCNT0を更新する。
【0081】(5) 現在MB00のみ確保されてるだけな
のでUCNT0は0となる。 (6) MBC1はUCNT0が0であるため,MP0を解
放するために,MP0の先頭アドレスを入力パラメータ
として設定し,MPアンリンク部(MPC1)をコール
する。
のでUCNT0は0となる。 (6) MBC1はUCNT0が0であるため,MP0を解
放するために,MP0の先頭アドレスを入力パラメータ
として設定し,MPアンリンク部(MPC1)をコール
する。
【0082】(7) MPC1はMP0の先頭アドレスを入
力パラメータとして設定し,BMC1をコールする。 (8) MBC1は,MP0の先頭アドレスを入力パラメー
タとして設定し,BMC1をコールする。
力パラメータとして設定し,BMC1をコールする。 (8) MBC1は,MP0の先頭アドレスを入力パラメー
タとして設定し,BMC1をコールする。
【0083】(9) BMC1は,MP0の先頭アドレスか
ら対応するBM内のビットb0を0にリセットして処理
を終了する。 (10)MBC1は処理を終了し,UPへリターンする。
ら対応するBM内のビットb0を0にリセットして処理
を終了する。 (10)MBC1は処理を終了し,UPへリターンする。
【0084】また,二つのx1バイトのMBを確保した
後,MBを解放する場合は,上記(1) 〜(4) を行ったの
ち,(5)でUCNT0は0をとらないので,その時点でU
Pへリターンする。
後,MBを解放する場合は,上記(1) 〜(4) を行ったの
ち,(5)でUCNT0は0をとらないので,その時点でU
Pへリターンする。
【0085】
【発明の効果】本発明によれば異なるサイズのメモリ確
保が可能となる上に,一般的なユーザブロックのメモリ
確保(同一サイズのメモリ領域を複数個確保する)の要
求に対して,ほとんどの場合にメモリブロックの割り当
て・解放をキュー操作だけで行うため高速な処理を実現
することができる。
保が可能となる上に,一般的なユーザブロックのメモリ
確保(同一サイズのメモリ領域を複数個確保する)の要
求に対して,ほとんどの場合にメモリブロックの割り当
て・解放をキュー操作だけで行うため高速な処理を実現
することができる。
【0086】特に,近年マイクロプロセッサではそれぞ
れの計算機特有の大きさの単位(一般的には数キロバイ
ト)でのメモリ管理が充実してきており,さらに高速な
キュー操作機能を備えつつあるため,これらの計算機特
有の大きさの単位でメモリページを設定する場合に本発
明による効果は更に増大すると考えられる。
れの計算機特有の大きさの単位(一般的には数キロバイ
ト)でのメモリ管理が充実してきており,さらに高速な
キュー操作機能を備えつつあるため,これらの計算機特
有の大きさの単位でメモリページを設定する場合に本発
明による効果は更に増大すると考えられる。
【図1】本発明の基本構成図である。
【図2】メモリの確保・解放制御のための各サブルーチ
ンとユーザプログラムの関係説明図である。
ンとユーザプログラムの関係説明図である。
【図3】本発明によるメモリの構成図である。
【図4】空きページ検索部(BMC0)の処理フローで
ある。
ある。
【図5】ページ未使用設定部(BMC1)の処理フロー
である。
である。
【図6】メモリページリンク部(MPC0)の処理フロ
ーである。
ーである。
【図7】メモリページアンリンク部(MPC1)の処理
フロー及びメモリページの検査部(MPC2)の処理フ
ローである。
フロー及びメモリページの検査部(MPC2)の処理フ
ローである。
【図8】確保要求制御部(MBC0)の処理フローであ
る。
る。
【図9】解放要求制御部(MBC1)の処理フローであ
る。
る。
【図10】キューのリンク構成説明図(リンク前)であ
る。
る。
【図11】キューのリンク構成説明図(リンク後)であ
る。
る。
【図12】従来例1の説明図である。
【図13】従来例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)
ーヘッダ(PQH) 4 メモリ 10 ビットマップ制御部(BMC) 11 空きページ検索部(BMC0) 12 ページ未使用設定部(BMC1) 13 メモリページ制御部(MPC) 14 メモリページリンク部(MPC0) 15 メモリページアンリンク部(MPC1) 16 メモリページ検査部(MPC2) 17 メモリブロック制御部(MBC) 18 確保要求制御部(MBC0) 19 解放要求制御部(MBC1)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 星田 勝典 東京都千代田区内幸町一町目1番6号 日本電信電話株式会社内 (56)参考文献 特開 平3−34042(JP,A) 特開 平1−209546(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/00 - 12/06
Claims (3)
- 【請求項1】 マルチプログラミングをサポートする処
理部を備える情報処理装置において,メモリを所定サイ
ズの複数のメモリページ単位で分割し,各メモリページ
をユーザが要求するサイズを持つ複数個のメモリブロッ
クで分割し,各メモリページは使用中のメモリページキ
ューを構成するための双方向リンクポインタ(PQ),現在
の使用メモリブロック数を表すカウンタ(UCNT)及び未使
用メモリブロックのキューヘッダ(BQH) の各情報と複数
のメモリブロックとを備え,各メモリブロックは,未使
用メモリブロックのキューを構成する双方向リンクポイ
ンタ(BQ)と当該メモリブロックが所属するメモリページ
のポインタ(QP)の各情報とデータを格納するエリア(MB
D) を備え,各メモリページの使用状態をそれぞれ1ビ
ットで表すビットマップを設け,前記処理部はビットマ
ップを制御するビットマップ制御部,メモリページを制
御するメモリページ制御部及びユーザプログラムから発
生するメモリ確保または解放の要求に応じて前記ビット
マップ制御部とメモリページ制御部を駆動することによ
り要求されたメモリブロックの確保または解放を行うメ
モリブロック制御部とを備えることを特徴とするメモリ
ブロック制御方式。 - 【請求項2】 請求項1において,前記ビットマップ制
御部に, 要求によりビットマップから未使用状態のメモ
リページを検索してメモリページポインタを出力する空
きページ検索部と, 要求されたメモリページに対応する
メモリページのビットを未使用状態に設定するページ未
使用設定部とを備え,前記メモリページ制御部は, 指定
されたメモリページ及びメモリブロックサイズを使用中
のメモリページのキューにリンクするメモリページリン
ク部, 指定されたメモリページを使用中メモリページキ
ューからアンリンクするメモリページアンリンク部, 要
求された条件を備えるメモリブロックを備えるメモリペ
ージのポインタを発生するメモリページの検査部とを備
えることを特徴とするメモリブロック制御方式。 - 【請求項3】 請求項2において,前記メモリブロック
制御部は,ユーザプログラムによりメモリブロックのサ
イズ及びページキューヘッダを指定した要求により起動
して,前記空きページ検索部,メモリページリンク部及
びメモリページの検査部を駆動して要求されたサイズの
空きメモリブロックを確保して出力する確保要求制御部
と,ユーザプログラムによりメモリブロックのアドレス
を指定した要求により起動して,該メモリブロックを未
使用メモリブロックのキューにリンクして解放すると共
に,使用メモリブロック数を表すカウンタを更新し,該
カウンタ値が0の時メモリページアンリンク部及びペー
ジ未使用設定部を駆動して指定メモリブロックを解放す
る解放要求制御部とを備えることを特徴とするメモリブ
ロック制御方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32745091A JP3299294B2 (ja) | 1991-12-11 | 1991-12-11 | メモリブロック制御方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32745091A JP3299294B2 (ja) | 1991-12-11 | 1991-12-11 | メモリブロック制御方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05158783A JPH05158783A (ja) | 1993-06-25 |
JP3299294B2 true JP3299294B2 (ja) | 2002-07-08 |
Family
ID=18199300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP32745091A Expired - Fee Related JP3299294B2 (ja) | 1991-12-11 | 1991-12-11 | メモリブロック制御方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3299294B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100750096B1 (ko) * | 2001-04-19 | 2007-08-21 | 삼성전자주식회사 | 효율적인 영상 처리를 위한 전/후처리 방법 및 그를적용한 전/후 처리 시스템 |
US7917906B2 (en) | 2004-07-02 | 2011-03-29 | Seagate Technology Llc | Resource allocation in a computer-based system |
JP6115116B2 (ja) * | 2012-12-19 | 2017-04-19 | 富士通株式会社 | 情報処理装置、格納処理方法及びプログラム |
JP6694141B2 (ja) | 2016-09-02 | 2020-05-13 | 富士通株式会社 | 配列制御プログラム、配列制御方法、配列制御装置 |
JP7082275B2 (ja) | 2017-11-08 | 2022-06-08 | 富士通株式会社 | 配列制御プログラム、配列制御方法、配列制御装置 |
-
1991
- 1991-12-11 JP JP32745091A patent/JP3299294B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH05158783A (ja) | 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 (ja) | 複数個のアドレス変換バッファ記憶装置を共有する記憶装置処理システムのデマンド・ペ−ジング法 | |
JPH034940B2 (ja) | ||
US5289581A (en) | Disk driver with lookahead cache | |
US5581726A (en) | Control system for controlling cache storage unit by using a non-volatile memory | |
JPH06105440B2 (ja) | 主メモリ管理方法 | |
JP3299294B2 (ja) | メモリブロック制御方式 | |
US7552285B2 (en) | Line fill techniques | |
JP3701135B2 (ja) | データ処理装置 | |
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 (ja) | メモリ管理方法およびメモリ管理装置、並びに記録媒体 | |
JP2000047933A (ja) | 双方向メモリ確保管理方式 | |
JPH06103157A (ja) | 記憶空間管理方法 | |
JP2634485B2 (ja) | 共用メモリを仮想領域としてアクセスし、自動拡張する方式 | |
JPH1040194A (ja) | 通信制御装置の受信バッファ制御システム | |
JPH01241642A (ja) | 共通メモリの動的配置方法 | |
KR20000061779A (ko) | 부할당자 메모리 관리방법 |
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 |