JPWO2010021085A1 - 記憶領域管理方法、記憶領域割付方法及びプログラム - Google Patents

記憶領域管理方法、記憶領域割付方法及びプログラム Download PDF

Info

Publication number
JPWO2010021085A1
JPWO2010021085A1 JP2010525569A JP2010525569A JPWO2010021085A1 JP WO2010021085 A1 JPWO2010021085 A1 JP WO2010021085A1 JP 2010525569 A JP2010525569 A JP 2010525569A JP 2010525569 A JP2010525569 A JP 2010525569A JP WO2010021085 A1 JPWO2010021085 A1 JP WO2010021085A1
Authority
JP
Japan
Prior art keywords
allocation
size
storage area
area
main
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.)
Granted
Application number
JP2010525569A
Other languages
English (en)
Other versions
JP4761590B2 (ja
Inventor
吉岡 誠
誠 吉岡
光裕 國分
光裕 國分
新庄 敏男
敏男 新庄
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.)
S Grants Co Ltd
Original Assignee
S Grants Co 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 S Grants Co Ltd filed Critical S Grants Co Ltd
Priority to JP2010525569A priority Critical patent/JP4761590B2/ja
Application granted granted Critical
Publication of JP4761590B2 publication Critical patent/JP4761590B2/ja
Publication of JPWO2010021085A1 publication Critical patent/JPWO2010021085A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

2のべき乗サイズの記憶領域から2のべき乗サイズではない記憶領域を取得した場合でも、2のべき乗サイズではない記憶領域から2のべき乗サイズの記憶領域を取得した場合でも、残りの記憶領域を管理することが可能であり、記憶領域を有効活用する技術を提供する。記憶装置の記憶領域管理方法において、取得した記憶領域を異なる2のべき乗サイズの記憶領域に分割してそれぞれ管理する。また、割付要求サイズを含む記憶領域の割付要求を受付け、割付要求サイズを包含する、2のべき乗の最小のサイズの空記憶領域を取得し、割付要求サイズの2進数表示を求め、受け付けた割付要求に対して、該2進数表示でビット1の立っているビット位置毎の2のべき乗の大きさの記憶領域からなる連続した記憶領域を割り付ける。

Description

本発明は、記憶装置の記憶領域を管理し、記憶領域にファイル及びメモリオブジェクトの割付を行う技術に関する。
従来から、ハードディスク等の記憶装置に記憶するデータを管理するための方式として、例えばFAT(File Allocation Tables)やNTFS(NT File System)等のファイルシステムが採用されている。
図1Aは、従来から採用されているハードディスク等の外部記憶装置における区画割付を説明する図である。
図1Aに示すように、例えば外部記憶装置306の記憶領域の先頭には、マスターブートレコード195と区画の管理データを格納した区画管理テーブル195aが配置されている。更に図示しないディスクアロケータ等のユーティリティプログラムにより4つの区画1〜4(191,192,193,194)が割り付けられ、それぞれあるファイルシステムに割り当てられている。図1Aに区画番号3についての区画情報196が例示されているように、区画管理テーブル195aは、区画番号196a、開始位置196b、区画サイズ196cのエントリを含んでいる。区画番号196aには、区画を識別する区画番号が格納されており、図示の例では3である。開始位置には、区画の先頭アドレスの情報が格納されており、図示の例ではその内容は省略している。区画サイズ196cには、区画の割当単位領域の個数が格納されており、図示の例では52である。
各区画におけるファイルに対するディスクの割付管理は、それぞれの区画が割り当てられたファイルシステム特有の割付方法に依存するため煩雑であった。例えば、FATによれば、割付を行ったブロックを示すリンクリストをファイルごとに保持している。また、NTFSによれば、ファイルごとに割付を行ったブロックの開始位置及び連続するブロック数についての情報を保持している。
これらのファイルシステムにおける割付管理の問題を解決するために、例えば、下記特許文献1及び非特許文献1に開示されているバディシステムに関する技術が提案されている。バディシステムは、記憶領域を2からなるサイズごとに分割して割付の管理を行う。仮想記憶方式を使用していない単純なシステムでのメモリオブジェクトの割り付けでは、基本的なバディシステムが採用されている。
図1Bは、バディシステムの割付原理を説明する図である。図1Bに示すのは、サイズが2=8の割当領域490とそれに対応するツリー構造体580である。割当領域490は、例えば図1Aに例示した区画1〜4等である。
ツリー構造体580は、割当領域490を2分の1のサイズに順次割付単位のサイズまで分割して得られる領域(特許文献1の用語を用いればエクステント)の関係を階層的にモデル化したものである。割付単位のサイズのエクステントの階層をレベル0とすると、図に示す例では、ルートノードのレベルは3、すなわち割当領域490のサイズである2のべき乗のべき数となる。
ツリー構造体580のルートノード480は、分割前の割当領域490全体の領域(レベル3のエクステント)に対応し、ノード内に記載された“8”は、対応する割当領域490のサイズに相当する。また、括弧内の数字は、同一レベル内のエクステントを識別するレベル内番号である。
ルートノード480にリンク540で接続されたノード440と、ルートノード480にリンク541で接続されたノード441は割当領域490を2分割した領域(レベル2のエクステント)に対応する。それぞれのエクステントのサイズは図に示すように4である。
ノード440の下位には、リンク520で接続されたサイズ2のノード420と、リンク521で接続されたサイズ2のノード421が存在する。同様に、ノード441の下位には、リンク522で接続されたサイズ2のノード422と、リンク523で接続されたサイズ2のノード423が存在する。これら4つのノードはレベル1のエクステントに対応する。
ノード420の下位には、リンク510で接続されたサイズ1のノード410と、リンク511で接続されたサイズ1のノード411が存在する。同様に、ノード421の下位には、リンク512で接続されたサイズ1のノード412と、リンク513で接続されたサイズ1のノード413が存在し、ノード422の下位には、リンク514で接続されたサイズ1のノード414と、リンク515で接続されたサイズ1のノード415が存在し、ノード423の下位には、リンク516で接続されたサイズ1のノード416と、リンク517で接続されたサイズ1のノード417が存在する。これら8つのノードはレベル0のエクステントに対応する。
ルートノード480以外のノードは親ノードの対応するエクステントを2分割したエクステントの1つに対応したものとなっている。したがって、各レベルのエクステントのサイズの総和は、割当領域490のサイズに一致する。
上述のバディシステムによれば、ある大きさのファイルを割り付けるとき、その大きさと等しいかそれを超える2からなるサイズのエクステントの中から空きエクステントを探して割り付け、解放するときもそのサイズの空きエクステント群に戻せばよいので、ファイル及びメモリオブジェクトの割り付けと解放及び領域の管理が容易である。
特開平7−28693号公報
安井卓、「はじめて学ぶLinuxカーネル(第5回カーネル・メモリ管理)」日経Linux第6巻第1号(2004-01-08)p123-p130
しかしながら、上記のバディシステムによれば、2のべき乗単位で領域を割り付けることから、例えば2.1GBのファイルを割り付けるとき、4GBの領域が必要となり、ファイル割付後のブロックには、データの書き込まれていない領域が生じるにも関わらず、従来のファイルシステムにおいてはその領域に対して更にファイルを追加することができず、領域を有効に使用することができなかった。
また、例えば記憶装置全体の記憶容量が127GBであったとしても、記憶領域を要求する要求元に対して割り付ける物理的あるいは論理的な領域である区画について、最大でも64GBの区画として管理せざるを得なかった。区画についていえば、図1に例示した区画3(193)のサイズは52であるが、2=32のサイズの区画として管理せざるを得ないものである。
すなわち、バディシステムによれば、2のべき乗単位で領域を割り付けることからファイル及びメモリオブジェクトの割り付けと解放及び領域の管理が容易ではあるが、2のべき乗サイズの領域から2のべき乗サイズではない領域を取得した場合の残りの領域の管理、及び2のべき乗サイズではない領域から2のべき乗サイズの領域を取得した場合の残りの領域の管理がなされていないため、領域を有効活用できないという課題がある。
そこで本発明は、2のべき乗サイズの記憶領域から2のべき乗サイズではない記憶領域を取得した場合でも、2のべき乗サイズではない記憶領域から2のべき乗サイズの記憶領域を取得した場合でも、いずれの場合でも残りの記憶領域を管理することが可能であり、記憶領域を有効活用することのできる技術を提供することを目的とする。
本発明の記憶領域管理手法によれば、取得した記憶領域を異なる2のべき乗サイズの記憶領域に分割して管理し割付を可能とすることにより、上述の課題を解決する。
本発明の一つの態様によれば、区画の割付サイズを取得し、割付サイズと、区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、区画を、該算出された互いに異なる2のべき乗のべき乗数毎に該2のべき乗と区画の割当単位のサイズの積からなる大きさの区域に区分し、記区分された区域毎に区画を管理する。
また、本発明の別の態様によれば、割付要求サイズを含む記憶領域の割付要求を受付け、割付要求サイズを包含する、2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域を取得し、割付要求サイズを区画の割付単位のサイズで割った値の2進数表示を求め、受け付けた割付要求に対して、該2進数表示でビット1の立っているビット位置毎の2のべき乗と前記区画の割当単位のサイズの積の大きさの記憶領域からなる連続した記憶領域を割り付ける。
本発明によれば、記憶領域を2のべき乗サイズの組合せで管理するので任意のサイズの記憶領域を有効に管理することが可能であり、記憶領域を分割した各2のべき乗サイズの記憶領域で割付管理を行うことから、連続する記憶領域に無駄なくファイル及びメモリオブジェクトの割付がなされることとなるため、記憶領域の有効活用を図ることができる。
外部記憶装置における区画割付例を説明する図である。 バディシステムの割付原理を説明する図である。 本発明を実施するためのハードウェア構成例を説明する図である。 本発明の実施形態1における取得済み区画を主区分(初期割付)して管理する概念を説明する図である。 図3Aに示す主区分を行った取得済み区画を管理する割付区分表を説明する図である。 本発明の実施形態1における取得済み区画を主区分(初期割付)する処理フロー例を説明する図である。 本発明の実施形態2における割付要求サイズの区域を取得して使用区域を解放する概念を説明する図である。 本発明の実施形態2における各区分レベルのエクステントの割付状態例を説明する図である。 本発明におけるバディシステムを初期化する処理フロー例を説明する図である。 本発明におけるバディシステムによる空エクステントを取得する処理フロー例を説明する図である。 本発明におけるバディシステムによる取得エクステントを解放する処理フロー例を説明する図である。 本発明の実施形態2における割付区分レベルの区域を取得する処理フロー例を説明する図である。 本発明の実施形態2における割付要求サイズの区域を取得する処理フロー例の前段を説明する図である。 本発明の実施形態2における割付要求サイズの区域を取得する処理フロー例の後段を説明する図である。 本発明の実施形態2における取得した割付要求サイズの区域を解放する処理フロー例の前段を説明する図である。 本発明の実施形態2における取得した割付要求サイズの区域を解放する処理フロー例の後段を説明する図である。 本発明の実施形態3における割付区分レベルの区域を取得する処理フロー例を説明する図である。 本発明の実施形態3における空エクステントを取得する処理フロー例を説明する図である。
以下、本発明の好適な実施の形態について、図面を参照して詳細に説明するが、その前に、本明細書で用いる用語を以下のとおり定義する。
最初に、あらためて区画の定義を行う。本発明において「区画」とは、図1Aを参照して説明したように、予め割り当てられた領域であり、最初に割り当てられる領域である。本発明においては、区画は取得済みであることを前提とする。
「区域」とは、割り当てられた、あるいは割り付けられた領域である。区画は予め割り当てられた領域であるから、区域の1つであり、区域のうちの特定のものである。
区域を、2のべき乗と割当単位領域の積のサイズを有する複数の区域に分割することを「多層区分」という。また、多層区分された区域を「多層区域」という。なお、以下の説明においては、割当単位領域についての言及は省略し、領域のサイズについて、単に2のn乗のサイズ等の表記を用いる場合がある。
以下、区域についての用語とそれに対応する区画についての用語を対比しながら定義する。
「区分」とは、領域を割り当てる、あるいは領域を分割して割り当てることであり、「割付」ということもある。このときの領域の分割サイズは、互いに異なる2のべき乗サイズで規定されるが、領域の先頭からサイズの大きさの順に割り付けられる。領域は、区域または区画である。特に区画を区分することを「主区分」という。また、主区分により割り付けられた区域を「主区域」という。主区分は、本発明においては、区画に対する初期割付である。
区分または主区分による区域または主区域の割付サイズの2のべき乗数を「区分レベル」という。図2に示すツリー構造体580を援用して説明すると、例えばノード441が対応するレベル3のエクステントのサイズは4であるから、その区分レベルは2である。
上記定義された用語により説明すると、本発明の一つの実施態様によれば、区画を主区分し、主区域毎に区画を管理する。
また、本発明の別の態様によれば、割付要求サイズを含む区域の割付要求を受付け、割付要求サイズを包含する2のべき乗と区画の割当単位のサイズの積の最小のサイズの区域を取得し、更に割付要求サイズと、区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、前記割付要求を受け付けた区域を、該算出された互いに異なる2のべき乗のべき乗数毎に該2のべき乗と前記区画の割当単位のサイズの積からなる大きさの区域に多層区分した多層区域を使用区域とし、前記取得した区域のうち使用区域以外の残りの区域を、該残りの区域のサイズを互いに異なる2のべき乗の和と区画の割当単位のサイズの積からなる大きさとしたときの該互いに異なる2のべき乗のべき乗数毎に、該2のべき乗と前記割当単位のサイズの積からなる大きさの区域に多層区分して該多層区分された多層区域を解放して未使用状態とする。
次に本発明を実施するためのハードウェア構成例について、図2を参照して説明する。
本発明の一実施形態による記憶装置の領域管理及び区域の割付及び解放処理は図に示す中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。データ格納装置308については、後に説明する割付区分表208と管理対象である取得済み区画211を含む。図3に示すように、データ格納装置308は、主記憶装置305または外部記憶装置306、あるいはそれらの組み合わせで実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。
すなわち、主記憶装置305をデータ処理装置301内のものとすることもできるし、割付区分表208は主記憶装置305に持ち、区画211は外部記憶装置306に割り当てられるのが多くの場合と考えられるが、区画211が、主記憶装置305に割り当てられる場合でも本発明が適用可能であることは、後の説明から明らかである。
図3の例示では、主記憶装置305、外部記憶装置306及び通信装置307が一本のバス304によりデータ処理装置301に接続されているが、接続方法はこれに限るものではない。
また、特に図示されてはいないが、処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶領域が用いられることは当然である。以下の説明においては、表記の簡略化のため、例えば区画番号196aに格納された値3を区画番号196aと呼ぶように、記憶領域に格納されたあるいは設定された値をその記憶領域の名前で呼ぶことがある。
以下、図3A〜図3Cを参照して本発明の実施形態1を説明する。本実施形態は、区画の割付サイズを取得し、割付サイズから互いに異なる2のべき乗の和を算出し、区画を、該算出された互いに異なる2のべき乗のサイズの主区域に主区分し、主区分された主区域毎に区画を管理するものである。区画の取得方法には制限はなく、先に述べた図示しないディスクアロケータ等のユーティリティプログラムにより取得されていてもよく、区画の開始位置とサイズさえ与えられるものであればよい。
図3Aは、本発明の実施形態1における、取得済み区画を主区分(初期割付)して管理する概念を説明する図である。
図3Aに例示するのは、取得済み区画211の区画サイズ220と主区域1〜3(81a、82a、83a)との関係である。取得済み区画211は、例えば、図1Aに示す区画3(193)とすることができる。
任意の大きさの区画サイズは互いに異なる2のべき乗の和で表現することができることから、区画サイズ220には、区画サイズを互いに異なる2のべき乗の和で表現したとき、その和にべき乗が存在するべき乗数の位置(以下、有意のビット位置ということがある。)にビット1をその他のべき乗数の位置にビット0を格納した2進数表示により区画サイズの大きさを表している。
図3Aに示す例では、区画サイズ220の複数のビット位置(5、4、2)にビット値1が格納されていることから、区画サイズは2のべき乗の値に等しくなく、取得済み区画211の区画サイズは2+2+2=52である。取得済み区画211の開始位置219から、矢印(225、224、222)で示すように区画サイズ220の有意のビット位置(5、4、2)に対応して、それぞれ2のビット位置の値のべき乗のサイズの主区域1〜3(81a、82a、83a)が割り付けられる。
図3Bに示すのは、図3Aに示す主区分を行った取得済み区画211を管理する割付区分表208である。割付区分表208は割り付けられた主区域毎にエントリを有し、各エントリは主区域番号205、割付位置202、割付サイズ203の項目を含んで構成される。
割付位置202には、取得済み区画211の位置情報が格納されており、主区域番号が1の主区域1の割付位置202には開始位置219の値(以下、開始位置ということがある。)が、割付サイズ203には2が格納されている。同様に、主区域2の割付位置202には開始位置+2、割付サイズ203には2が格納され、主区域3の割付位置202には開始位置+2+2、割付サイズ203には2が格納されている。
以上のような本発明の実施形態1の主区分の手法を採用することにより、取得済みの与えられた区画のサイズが2のべき乗の値に等しくなくても、その区画を2のべき乗の値に等しい区域に区分してそれぞれ管理することができるので、初期割付された主区域毎にバディシステムの手法を採用することが可能となり、取得済みの区画を効率よく利用することが可能となる。
図3Cは、本発明の実施形態1における区画を主区分する処理フロー例を説明する図である。ここで主区分する処理は、具体的には例えば図3Bに示す割付区分表208の値を設定する処理である。以下では、例として割付区分表208を参照して説明する。
最初にステップS201で、割付ビットマップに与えられた取得済み区画の区画サイズを2進数表示した値を設定する。割付ビットマップは図3Aに示す区画サイズ220のイメージのものとなる。
ここで割付ビットマップは図示しないワークエリアである。以下の説明においても、表記の簡略化のため、ワークエリアの名称Xであることを特に断ることなく、「Xに・・・を設定する。」のように記述することがある。
次にステップS202で、割付位置に区画の開始位置を設定する。次にステップS203で、主区域番号に初期値を設定する。次にステップS204で、ビット位置に割付ビット位置の最上位のビット位置を設定する。図3Aに示す例では、ビット位置には5が設定される。
次にステップS205に進み、割付ビットマップより、ビット位置の指すビット値を取り出し、ステップS206aで、取り出したビット値が1であるか判定する。ビット値が1であればステップS207aに進み、割付サイズに、ビット位置の2のべき乗の値を設定する。
次にステップS207bにおいて、主区域番号の指す割付区分表208の、割付位置202に割付位置に設定した値を、割付サイズ203にビット位置に設定した値をべき乗数とする2のべき乗の値を設定し、ステップS208に進む。
図3Bに示す例における最初の処理においては、主区域番号205には初期値の1が、割付位置202には開始位置が、割付サイズ203には2が設定される。
ステップS208では、ビット位置は最下位のビット位置であるか判定し、最下位のビット位置であれば処理を終了し、最下位のビット位置でなければステップS209aに移行し、割付位置に、割付サイズを加算した値を設定する。次にステップS210で主区域番号に1を加え、ステップS211でビット位置に設定する値を1つ減らしてステップS205に戻る。
一方ステップS206aでの判定がビット値は1ではないであれば、ステップS206bに進み、ビット位置は最下位のビット位置であるか判定し、最下位のビット位置であれば処理を終了し、最下位のビット位置でなければステップS211に移行する。
上記ステップS205〜ステップS211のループ処理をビット位置が最下位のビット位置になるまで繰り返し、ビット位置が最下位のビット位置になると処理を終了する。
以上の処理により取得済み区画の主区分が完了する。
次に、本発明の実施形態2について説明する。本実施形態2は、要求元から2のべき乗サイズと異なる割付要求サイズを含む区域の取得要求を受け付け、該割付要求サイズを包含する最小の2のべき乗サイズ(割付区分レベル)の区域を、バディシステムの割付処理により取得し、そのうち未使用区域をバディシステムの割付処理により解放することにより、割付要求サイズに対応する使用区域を異なる区分レベルの区域の連続領域として取得するものである。上述の割付区分レベルの区域の取得は、実施形態1で区画から主区分された主区域からとすることができるが、それに限るものではない。
図4Aは、本発明の実施形態2における、割付要求サイズの区域を取得し未使用区域を解放する概念を説明する図である。
図4Aには、2のべき乗サイズとは等しくない割付要求サイズ20aと、それに基づいて取得した区域80との関係及び取得した区域80を多層区分した区域1〜4(81b、83b、84c、82c)との関係が示されている。割付要求サイズ20aの有意のビット位置は3と1であり、割付要求サイズは2+2=10である。
複数の有意ビットが存在する場合、すなわち割付要求サイズが2のべき乗のサイズでない場合は、割付要求サイズ20aの最上位の有意ビットの位置3より1つ上位の位置の値4が割付区分レベル44aとなる。そして、図の点線の矢印44に示すように、バディシステムによる割付処理23により、点線の矢印40で関係を示すように、割付区分レベル44aである4を2のべき乗数とする2のべき乗サイズの区域80を取得する。区域80の取得には、任意の既存のバディシステムの割付処理を採用することが可能であるが、後に図6及び図5Bを参照して、本実施形態2におけるバディシステムによる割付処理例を説明する。
割付要求サイズ20aの各ビット値と区域1〜4(81b、83b、84c、82c)との関係は、実線の矢印71b、73b及び点線の矢印73c、72cで示すとおりである。すなわち、割付要求サイズ20aの最上位の有意ビットの位置が3であることが、2のサイズの区域1(81b)が区分されて分割割付されることに対応し、次のビット位置2のビット値が0であることが、2のサイズの区域2(82c)が分割割付されることに対応する。そして、次のビット位置1が有意ビットの位置であることから、2のサイズの区域3(83b)が分割割付され、更にビット位置1が最下位の有意ビットの位置であることから、残りの領域が区域4(84c)として分割割付される。
区域1(81b)と区域3(83b)により割付要求サイズに対応する使用区域が構成され、区域4(84c)と区域2(82c)により未使用区域が構成される。
図4Bは、本発明の実施形態2における各区分レベルのエクステントの割付状態例を説明する図である。
図4Bに示す各エクステントの割付状態とレベル内番号のツリーは、図4Aに示す取得した区域80に対応するエクステントを2分の1ずつ分割(バディ分割)したエクステントの割付状態1または0を、区分レベル4から区分レベル1まで示したものである。割付状態1は塞状態に相当し、割付状態0は空状態に相当する。空状態はそのエクステントが割付可能な状態であり、塞状態は、それ単独ではそのエクステントの全体あるいは一部が割付可能か不明な状態である。上位区分の割付状態と下位区分の割付状態を結ぶ実線は、各割付状態に関するエクステントのバディ分割の関係を示したものである。レベル内番号は0番から始まるものとして示している。
区分レベル4の割付状態616は、区域80に対応するエクステントのものであり、1が設定されている。区分レベル3の割付状態608のうち、レベル内番号0のものは区域1(81b)に対応するエクステントのものであり、1が設定され、それをバディ分割した下位区分のエクステントの割付状態にはすべて1が設定されている。区分レベル1の割付状態602のうち、レベル内番号4のものは区域3(83b)に対応するエクステントのものであり、レベル内番号5のものは区域4(84c)に対応するエクステントのものである。それぞれ使用区域、不使用区域を構成することに対応して1及び0が設定されている。そして、区分レベル2の割付状態604のうち、レベル内番号3のものは区域2(82c)に対応するエクステントのものであり、0が設定されている。
区分レベル1の割付状態602のうち、レベル内番号6と7のものは1ではあるが、それらの上位区分の区分レベル2の割付状態604のうちレベル内番号3の割付状態が0であることから、区分レベル2のレベル内番号3のエクステントをバディ分割することにより空状態として使用することができる。
区分レベル1のレベル内番号6と7の割付状態を1とすることにより、図4Bに示す割付状態において区分レベル1の空エクステントを探索したとき、レベル内番号5の空エクステントが優先的に取得される。したがって、その後区分レベル2の空エクステントが探索されたときのために、区分レベル2のレベル内番号3のエクステントを空エクステントとして残しておくことができる。
理解を容易にするため、図4Bには割付状態をツリーとして表記したが、割付状態を連続した領域におけるビットマップに保持することができることは明らかである。
次に図5A〜図5Cを参照して、実施形態2におけるバディシステムについて説明する。以下において、実施形態2におけるバディシステムを、実施形態1で主区分された区画を構成する主区域内のエクステントの割付解放を行うものとして、すなわち主区域番号が与えられるものとして説明するが、先に述べたように、それに限ることなく、2のべき乗サイズのエクステントの割付解放を行うものとしてもよい。
図5Aは、本実施形態におけるバディシステムを初期化する処理フロー例を説明する図である。
図に示すように、ステップS501において、区分レベルに、主区域番号の指す主区域の割付サイズに対応する区分レベルを設定する。次にステップS502で、レベル内開始番号に、初期値(例えば値0)を設定し、ステップS503で、レベル内終了番号に、レベル内開始番号を設定する。
次にステップS504で、区分レベルのレベル内開始番号の指す割付状態に空状態を設定し、ステップS505に進む。
上述のステップS501〜ステップS504の処理は、図4Aの例示の区域80が主区域であるとして説明すると、区分レベル4の割付状態616に空状態を設定するものである。なお、区域を取得する主区域の選択については、後に図6を参照して説明する。また、図4Bに示すレベル内番号は、レベル内開始番号+割付番号として一般化をはかっている。レベル内開始番号は任意の番号であり、割付番号はレベル内開始番号からのオフセットである。したがって、レベル内開始番号を0とすると、レベル内番号と割付番号は同一の値となる。
ステップS505においては、区分レベルは最下位の区分レベルか判定する。最下位の区分レベルであれば初期化は完了しているので処理を終了する。最下位の区分レベルでなければ、ステップS506に進む。
ステップS506では、区分レベルより値1を減らす。次にステップS507で割付番号に、レベル内開始番号を設定し、ステップS508で、レベル内終了番号に、レベル内終了番号を2倍した値に値1を加えた値を設定する。
次にステップS509で区分レベルの割付番号の指す割付状態に塞状態を設定し、ステップS510で、割付番号はレベル内終了番号と等しいか判定する。割付番号がレベル内終了番号と等しければステップS505に戻り、等しくなければ、ステップS511で割付番号に1を加えてステップS509に戻る。
上述のステップ505〜ステップS511の処理は、主区域をバディ分割したエクステントの割付状態に塞状態を設定するものである。図4Bに示す例では、レベル内終了番号が初期値の0から1、3、7と処理ループを回るたびにステップ508で計算され、区分レベル3〜区分レベル1のレベル内開始番号0からレベル内終了番号までの割付番号(レベル内番号)の指す割付状態に塞状態が設定される。上述の空状態、塞状態は、先に述べたように、割付状態を表すビットマップのバディ分割された各エクステントに対応するビット位置に設定することができる。
以上の処理により、本実施形態のバディシステムは初期状態となる。初期状態においては、主区域に対応するエクステントのみ空状態とし、主区域に対応するエクステントをバディ分割した実質的には空状態であるエクステントを塞状態とする。先に述べたとおり、塞状態のエクステントは使用可能な場合と使用不可能な場合とがある。
図5Bは、本実施形態におけるバディシステムによる空エクステントを取得する処理フロー例を説明する図である。バディシステムは、空エクステントの取得が最初に行われる前には、図5Aを参照して説明した初期化処理により初期化されているものとする。
最初に、ステップS521において、主区分レベルに、主区域番号の指す主区域の割付サイズに相当する区分レベルを設定すると共に、区分レベルに割付区分レベルを設定する。ここで割付区分レベルは、バディシステムにより取得する空エクステントの区分レベルである。図5Aに示す例では4が設定される。
次にステップS522において、区分レベル内の空状態の区域を探索し、ステップS523で区分レベルに空があるか判定する。空がなければステップS524に分岐して、区分レベルは主区分レベルを指すか、すなわち主区域のサイズであるか判定する。主区分レベルを指す場合は取得失敗として処理を終了し、主区分レベルを指していなければ、ステップS525に進み、区分レベルに値1を加えてステップS522に戻る。
一方、ステップS523で区分レベルに空があると判定されるとステップS526に進み、空状態の割付番号を取得し、割付番号の指す割付状態に塞状態を設定し、ステップS527に進む。ステップS527では、区分レベルは割付区分レベルか判定し、割付区分レベルであれば処理を終了し、割付区分レベルでなければステップS528に分岐する。
ステップS528では、区分レベルから値1を減らし、ステップS529に進んで割付番号を2倍する。このステップS528とステップS529の処理は、バディ分割の処理に相当する。次にステップS530で区分レベルの割付番号の指す割付状態に空状態を設定し、ステップS531において、区分レベルの割付番号とバディ分割の対をなす割付番号(以下、バディということがある。)の指す割付状態に空状態を設定してステップS522に戻る。すなわち、バディ分割により得られた2つのエクステントの割付状態を空状態として空状態のエクステントの探索を行う。そして、ステップS526で探索された空状態のエクステントの割付状態を塞状態とし、バディの割付状態は空状態とすることを区分レベルが割付区分レベルとなるまで繰り返し、割付区分レベルの空エクステントを取得する。
図5Cは、本実施形態におけるバディシステムによる取得エクステントを解放する処理フロー例を説明する図である。
最初に、ステップS541において、主区分レベルに、主区域番号の指す主区域の割付サイズに相当する区分レベルを設定すると共に、区分レベルに解放区分レベルを設定する。ここで解放区分レベルは、バディシステムにより解放する塞状態のエクステントの区分レベルである。図4Aに示す例の区域1(81b)を解放する場合には、解放区分レベルはそれに対応した3であり、区分レベルには3が設定される。また、解放する塞状態のエクステントを特定する解放区分レベル内の割付番号が、解放番号として与えられているものとする。
次にステップS543において、区分レベルは主区分レベルを指すか判定する。主区分レベルを指すのであれば区分レベルはルートノードに対応し、バディは存在しないのでステップS548に分岐し、区分レベルの解放番号の指す割付状態に空状態を設定して処理を終了する。
一方ステップS543で区分レベルは主区分レベルを指さないと判定されるとステップS544に進み、区分レベルの解放番号のバディの指す割付状態は空状態か判定する。空状態でなければ先に説明したステップS548に進み、空状態であれば、ステップS545に分岐する。
ステップS545では、区分レベルの解放番号のバディの指す割付状態に塞状態を設定する。次にステップS546で区分レベルに1を加え、ステップS547で解放番号に解放番号を2で割った商を設定してステップS543に戻る。
以上のステップS543〜ステップS547のループ処理を、区分レベルが主区分レベルを指すか区分レベルの解放番号のバディの指す割付番号が塞状態となるまで繰り返し、最後に区分レベルの解放番号の指す割付状態に空状態を設定することで割付区域の解放処理が完了する。すなわち、図5Dに示す処理では、解放番号のバディの指す割付状態が空状態であれば、解放番号とバディの指すペアの割付状態をともに塞状態とし、上位区分レベルにおいてバディの指す割付状態が塞状態となったとき、あるいは主区分レベルを指す区分レベルにまで至ったときに解放番号の指す割付状態に空状態を設定するものである。
次に、本発明の実施形態2における割付区分レベルの区域を取得しその区域を多層区分し、多層区分された多層区域のうち、割付要求サイズに対応する使用区域を異なる区分レベルの区域の連続領域として取得し、残りの未使用区域をバディシステムの割付処理により解放する処理を、図6〜図7Bを参照して説明する。
図6は、本実施形態における割付要求区分レベルの区域を取得する処理フロー例を説明する図である。割付要求区分レベルの区域の取得は、割付要求サイズの区域を取得するのに先立って行われるものであり、後に図7A及び図7Bを参照して説明する割付要求サイズの区域を取得する処理の一部をなすものである。ここで割付要求区分レベルの区域は、例えば、図3Aに示す取得済み区画211から取得される。以下では、図4Aに示す例に加えて、図3A及び図3Bに示す割付区分表208を参照して説明する。
図6に示すように、ステップS601において、主区域番号に、割付区分表の最下位の主区域番号を設定する。図3Bの例では、割付区分表208の主区域番号には3が設定される。すなわち、最も小さいサイズの主区域から割付要求サイズの区域の取得処理が開始される。
次にステップS602で主区域番号の指す割付区分表の割付サイズを読み出し、ステップS603において該読み出した割付サイズは割付要求サイズより小さいか判定する。小さければ、ステップS606に分岐する。図4Aに示す例では、割付要求サイズは10であるから、最初の処理においては主区域番号205が3の割付サイズ203の値4は割付要求サイズより小さく、ステップS606を介してステップS607に進み、次の主区域番号として2が設定される。
一方ステップS603において割付サイズは割付要求サイズより小さくないと判定されるとステップS604に進み、主区域番号の指す主区域から割付要求区分レベルの区域を取得し、割付番号を得る。ステップS604の詳細は、先に図5Bを参照して説明したものである。
次にステップS605において、ステップS604で割付要求区分レベルの区域を取得したか判定する。割付要求区分レベルの区域を取得していれば、ステップS608に分岐し、割付区分レベルの区域の取得結果に、主区域番号、割付区分レベル、割付番号を設定して処理を終了する。
ステップS604の処理で割付要求区分レベルの区域を取得していなければ、ステップS606に進み、主区域番号は最上位の番号か判定する。主区域番号が最上位の番号であれば取得失敗として処理を終了し、主区域番号が最上位の番号でなければ、ステップS607において主区域番号に次の主区域番号を設定してステップS602に戻る。
以上のステップS602からステップS607までのループ処理を、主区域番号を更新しながら割付要求区分レベルの区域を取得するまで繰り返し、主区域番号が最上位の番号であっても割付要求区分レベルの区域を取得できなければ、取得失敗として処理を終了する。
図3Aに示す初期割付及び図4Aに示す割付要求サイズの例では、割付要求サイズが10、主区域3(83a)の割付サイズが4、主区域2(82a)の割付サイズが16であるから、主区域2(82a)からステップS604における割付区分レベルの区域の取得を試み、その取得に失敗した場合に次に主区域1(81a)から割付区分レベルの区域の取得を試みる。主区域2(82a)のサイズは16、主区域1(81a)のサイズは32であるから、取得される割付区分レベルの区域の割付番号は、0か1になる。
次に図7A及び図7Bを参照して、割付要求サイズの区域を取得する処理を説明する。
図7Aは、本実施形態2における割付要求サイズの区域を取得する処理フロー例の前段を説明する図である。この前段の処理は、割付区分レベルの区域を取得する処理である。
最初にステップS701で、割付ビットマップに割付要求サイズを2進数表示した値を設定する。割付ビットマップは図4Aに示す割付要求サイズ20aのイメージのものとなる。割付要求サイズは、要求元から与えられることを前提としている。
次にステップS702で、最下位ビット位置に割付ビットマップのビット値が1である最も下位のビット位置を設定する。図4Aに示す例では、最下位ビット位置には1が設定される。
次にステップS703で、最上位ビット位置に割付ビットマップのビット値が1である最も上位のビット位置を設定する。図4Aに示す例では、最上位ビット位置には3が設定される。
次にステップS704において、最上位ビット位置と最下位ビット位置は一致するか判定する。一致すれば、ステップS705に分岐する。この場合は図4Aに示す例とは異なり、割付要求サイズ20aが2のべき乗サイズと等しい場合であり、ステップS701で設定した割付ビットマップでビット1が立っているビット位置は1箇所だけである。したがって以下の説明において、2のべき乗サイズと等しい割付要求をシングルビット要求ということがある。
ステップS704からステップS705に分岐した場合は、ステップS705で、割付区分レベルに最上位ビット位置を設定する。この場合には、割付区分レベルのサイズは割付要求サイズと等しくなる。
次にステップS706に進み、図6を参照して説明した処理により、割付区分レベルの区域を取得し、主区域番号と割付番号を得る。ここでの主区域番号は、図6のステップS601またはステップS607で設定されたものである。また割付番号は、ステップS604で呼び出す図5Cの処理フロー例のステップS526で設定されたものである。
次にステップS707において、ステップS706の処理で割付区分レベル、すなわち割付要求サイズの区域を取得したか判定し、取得していなければ、取得失敗として処理を終了する。割付要求サイズの区域を取得していれば、ステップS707aにおいて、レベル内番号に、レベル内開始番号に割付番号を加えた値を設定し、ステップS707bで、取得結果に、主区域番号、割付区分レベル、レベル内番号を設定して処理を終了する。
一方、図4Aの例のように最上位ビット位置と最下位ビット位置が一致しなければ、ステップS708で割付区分レベルに最上位ビット位置に値1を加えた値を設定してステップS709に進む。図4Aの例では、割付区分レベル44aとして4が設定される。この場合は、ステップS701で設定した割付ビットマップの複数のビット位置でビット1が立っているので、以下の説明において、2のべき乗サイズと等しくない割付要求サイズの割付要求をマルチビット要求ということがある。
ステップS709では、ステップS706と同様に、図6を参照して説明した処理により、割付区分レベルの区域を取得し、主区域番号と割付番号を得る。
次にステップS710において、ステップS709の処理で割付区分レベルの区域を取得したか判定し、取得していなければ、取得失敗として処理を終了し、取得していれば図7Bに示すステップS711に進む。
図7Bは、実施形態2の、マルチビット要求における割付要求サイズの区域を取得する処理フロー例の後段を説明する図である。この後段の処理は、取得済みの割付区分レベルの区域から未使用区域を解放することにより、割付要求サイズの区域を使用区域として取得する処理である。
まずステップS711において、割付番号に、ステップS709で得た割付番号を2倍した値を設定し、ステップS712において、ビット位置に、最上位ビット位置を設定する。図3A及び図4Aの例では、割付番号は0または1であり、最上位ビット位置は3であるから、割付番号には0または1が、ビット位置には3が設定される。
次にステップS713で、割付ビットマップより、ビット位置の指すビット値を取り出し、ステップS714において取り出したビット値が1であるか判定し、1であればステップS718に進み、0であればステップS715に進む。
ステップS715では、解放区分レベルにビット位置を設定し、ステップS716に進み、解放番号に、割付番号に1を加えた値を設定する。次にステップS717において、図5Dを参照して説明した処理により、主区域番号の指す主区域から解放区分レベルの解放番号の区域を解放し、ステップS717aにおいて、割付番号に、割付番号を2倍した値を設定してステップS720に進む。
一方ステップS718では、ビット位置が最下位ビット位置か判定し、最下位ビット位置であればステップS721へ進み、最下位ビット位置でなければ、ステップS719に分岐して割付番号に1を加えた値を2倍した値を設定し、ステップS720に進む。ステップS720では、ビット位置から1を減らしてステップS713に戻る。
図3A、図4Aの例では、先に述べたようにステップS709で得る割付区分レベル4の区域の割付番号は0または1である。そこで割付区分レベルの区域をバディ分割した区分レベル3の区域1(81b)の割付番号をステップS711で0または2とした後、初回のビット位置3の処理ではステップS718からステップS719に分岐して割付番号を2または6とし、ビット位置を2とする。2度目の処理では、ビット位置2のビット値は0なので、ステップS715に進む。そして解放区分レベルに2が、解放番号に3または7が設定される。区分レベル3の区域1(81b)の割付番号が0であれば、区分レベル2の解放番号3の区域2(82c)が解放され、区分レベル3の区域1(81b)の割付番号が2であれば、同様に区分レベル2の解放番号7の区域2(82c)が解放される。
一方、ステップS718でビット位置が最下位ビット位置と判定されると、ステップS721に進み、解放区分レベルにビット位置を設定し、ステップS722で、解放番号に、割付番号に1を加えた値を設定する。そして、ステップS723において、図5Dを参照して説明した処理により、主区域番号の指す主区域より解放区分レベルの解放番号の区域を解放する。
図3A、図4Aの例では、ビット位置1が最下位ビット位置であり、ビット位置2のステップS717aの処理で割付番号は4または12になっているので、解放区分レベルに1が、解放番号には5または13が設定される。したがって、区分レベル3の区域1(81b)の割付番号が0であれば、区分レベル1の解放番号5の区域4(84c)が解放され、区分レベル3の区域1(81b)の割付番号が2であれば、同様に区分レベル1の解放番号13の区域4(84c)が解放される。
ステップS723に引続きステップS724では、レベル内番号に、レベル内開始番号に割付番号を加えた値を設定し、ステップS725で、割付要求サイズの区域の取得結果に、主区域番号、割付区分レベル、レベル内番号を設定して処理を終了する。ここで設定される割付区分レベルは、図7AのステップS708で設定されたものである。
以上の処理により要求されたサイズに対応する使用区域の取得と未使用区域の解放が完了する。
次に、図8A及び図8Bを参照して、割付要求サイズの使用区域を解放する処理を説明する。
図8Aは、実施形態2における取得した割付要求サイズの区域(使用区域)を解放する処理フロー例の前段を説明する図である。図7Bを参照して説明した割付要求サイズの区域の取得結果は解放要求に含まれるものとし、また割付要求サイズも解放要求に含まれるものとすることができる。
最初にステップS801で、解放番号に、レベル内番号からレベル内開始番号を引いた値を設定するとともに、解放区分レベルに割付区分レベルを設定し、次にステップS802において、割付ビットマップに割付要求サイズを2進数表示した値を設定する。
次にステップS803で、最下位ビット位置に割付ビットマップのビット値が1である最も下位のビット位置を設定する。図5Aに示す例では、最下位ビット位置には1が設定される。次にステップS804で、最上位ビット位置に割付ビットマップのビット値が1である最も上位のビット位置を設定する。
次にステップS805において、最上位ビット位置と最下位ビット位置は一致するか判定する。一致すれば、ステップS806に分岐する。この場合は割付要求サイズ20aが2のべき乗サイズと等しい場合であり、割付要求がシングルビット要求の場合である。ステップS806では、図5Dを参照して説明した処理により、主区域番号の指す主区域から解放区分レベルの解放番号の指す区域を解放し、処理を終了する。
一方ステップS805の判定において、最上位ビット位置と最下位ビット位置が一致しなければ、図8Bに示すステップS807に進む。
図8Bは、実施形態2における取得した割付要求サイズの区域(使用区域)を解放する処理フロー例の後段を説明する図である。この後段の処理は、マルチビット要求の使用区域を解放する処理である。
図に示すように、ステップS807で解放番号(割付番号)に、解放番号を2倍した値を設定し、ステップS808でビット位置に、最上位ビット位置を設定する。
次にステップS809で、割付ビットマップより、ビット位置の指すビット値を取り出し、ステップS810で、該取り出したビット値は1か判定する。ビット値が1でなければステップS811において、解放番号に、解放番号を2倍した値を設定してステップS814に進む。ビット値が1であれば、ステップS813において、スタックに、ビット位置と解放番号を書き込み、ステップS814で、解放番号に、解放番号に値1を加えた値を2倍した値を設定してステップS814に進む。
ステップS814ではビット位置は最下位ビット位置か判定し、最下位ビット位置でなければステップS815でビット位置から1を減らしてステップS809に戻る。最下位ビット位置であれば、ステップS816においてスタックは空か判定し、空であれば処理を終了し、空でなければ、ステップS817に進み、スタックより、ビット位置と解放番号を取り出す。次にステップS818で解放区分レベルにステップS817で取り出したビット位置を設定する。そして、ステップS819で図5Cを参照して説明した処理により、主区域番号の指す主区域から解放区分レベルの解放番号の区域を解放し、ステップS816に戻る。
上述のステップS816〜ステップS819のループ処理をスタックが空になるまで繰り返すことにより、割付要求サイズの区域の解放が完了する。
図4Aに例示する割付要求サイズの使用区域を解放する場合には、ステップS801で解放番号に0または1が設定され、ステップS807で解放番号に0または2が設定される。ビット位置にはステップS808で3が設定され、スタックには最初にビット位置3と解放番号0または2が設定される。解放番号に1を足して2倍し、2または6に更新した後、ビット位置2の処理で更に解放番号を2倍して4または12に更新する。そしてビット位置1の処理で、スタックにビット位置1と解放番号4または12を書き込む。
その後、スタックからビット位置1と解放番号4または12を取り出し、解放区分レベルに1を設定し、解放番号4または12の区域を解放する。区分レベル3の区域1(81b)の割付番号が0であれば、区分レベル1の解放番号4の区域3(83b)が解放され、区分レベル3の区域1(81b)の割付番号が2であれば、同様に区分レベル1の解放番号12の区域3(83b)が解放される。
続いてスタックからビット位置3と解放番号0または2を取り出し、解放区分レベルに3を設定し、解放番号0または2の区域を解放する。すなわち区分レベル3の区域1(81b)が解放される。以上の処理により、使用区域を構成していた区域1(81b)と区域3(83b)が解放される。
以上のような本発明の実施形態2の手法を採用することにより、取得要求された区域のサイズが2のべき乗の値に等しくなくても、その区域を2のべき乗の値に等しい区域に区分して区域毎に管理することができるので、区域毎にバディシステムの手法を採用することが可能となり、取得済みの区域を効率よく利用することが可能となる。また、要求サイズを包含する2のべき乗サイズの区域を取得した場合でも、要求元が要求したサイズ以上の余りの領域を未使用区域として管理し、有効に利用することが可能となる。
次に、本発明の実施形態3について説明する。本実施形態3は、上述の実施形態2の変形例に相当するものである。要求元から2のべき乗サイズと異なる割付要求サイズを含む区域の取得要求を受け付け、該割付要求サイズを包含する最小の2のべき乗サイズ(割付区分レベル)の区域を取得し、そのうち未使用区域をバディシステムの割付処理により解放することにより、割付要求サイズに対応する使用区域を異なる区分レベルの区域の連続領域として取得することでは、実施形態2と同様である。
しかしながら割付区分レベルの区域の取得に関しては、実施形態2では、図5B及び図6に示す処理フロー例を参照して説明したように、1つの主区域に対応するバディシステムにより区分レベルを更新しながら空エクステントを探索し、そのバディシステム内で空エクステントが見つからなければ主区域番号を更新し、その主区域番号の主区域に対応するバディシステムにより、空エクステントを探索することを空エクステントが見つかるまで繰り返すものであるのに対し、実施形態3では、同一の区分レベルについて、異なる主区域に亘って空エクステントを探索し、すべての主区域において空エクステントが見つからなかったときに区分レベルを更新し、その区分レベルで異なる主区域に亘って空エクステントを探索することを繰り返す。
以下、本発明の実施形態3について、図9及び図10を参照して本発明の実施形態2と異なる部分を説明する。先に述べたように、実施形態2と実施形態3で異なるところは、異なる主区域に対する割付区分レベルの区域の取得手順である。したがって、実施形態2について図4A〜図8Bを参照して説明したうち、実施形態3で異なる部分は図5B及び図6を参照して説明した部分、及びそれに関連した図4Aを参照して説明した割付区分レベルの区域の取得の部分である。そこで、実施形態2の図5B及び図6に相当する実施形態3の処理フロー例について説明する。
図9は、本発明の実施形態3における割付区分レベルの区域を取得する処理フロー例を説明する図である。図9に示す処理フロー例は、図6に示す本発明の実施形態2における処理フロー例に対応するものである。
図9に示すように、ステップS900で、区分レベルに、割付区分レベルを設定する。次にステップS901で、主区域番号に、割付区分表の最下位の主区域番号を設定する。図3Bの例では、主区域番号には3が設定される。すなわち、最も小さいサイズの主区域から割付要求サイズの区域の取得処理が開始される。
次にステップS902で主区分レベルに、主区域番号の指す主区域の割付サイズに相当する区分レベルを設定し、ステップS903において、区分レベルはステップS902で設定した主区分レベルより大きいか判定する。大きくなければステップS904に進み、主区域番号の指す主区域から割付要求区分レベルの区域を取得し、割付番号を得る。ステップS904の詳細は、後に図10を参照して説明する
次にステップS905において、ステップS904で割付要求区分レベルの区域を取得したか判定する。割付要求区分レベルの区域を取得していれば、ステップS908に分岐し、割付区分レベルの区域の取得結果に、主区域番号、割付区分レベル、割付番号を設定して処理を終了する。
ステップS904の処理で割付要求区分レベルの区域を取得していなければ、ステップS906に進む。
また、ステップS903で区分レベルはステップS902で設定した主区分レベルより大きいと判定されると、ステップS906に進む。
ステップS906では、主区域番号は最上位の番号か判定する。主区域番号が最上位の番号でなければステップS907に進み、ステップS907で主区域番号に次の主区域番号を設定してステップS902に戻る。上述のステップS902〜ステップS907のループ処理は、先に述べた同一の区分レベルについて、異なる主区域に亘って空エクステントを探索する処理である。
一方、主区域番号が最上位の番号であればステップS906aに進み、さらに区分レベルは主区分レベルを指すか判定し、主区分レベルを指せば取得失敗として処理を終了し、主区分レベルでなければ、ステップS907aにおいて区分レベルに値1を加えてステップS901に戻る。上述のステップS906aの判定処理からステップS907aを介してステップS901に戻るループ処理は、先に述べた、区分レベルを更新しその区分レベルで異なる主区域に亘って空エクステントを探索する処理である。
以上の2重のループ処理を、主区域番号と区分レベルを更新しながら割付要求区分レベルの区域を取得するまで繰り返し、区分レベルが主区分レベルであっても割付要求区分レベルの区域を取得できなければ、取得失敗として処理を終了する。
図10は、図9に示すステップS904の処理の詳細なフロー例を示すものであり、本発明の実施形態3における空エクステントを取得する処理フロー例を説明する図である。図10に示す処理フロー例は、図5Bに示す本発明の実施形態2における処理フロー例に対応するものである。
図に示すように、まずステップS1022において、区分レベル内の空状態の区域を探索する。区分レベルは、図9に示すステップS900あるいはステップS907aで設定されたものである。次にステップS1023で区分レベルに空があるか判定する。空がなければ取得失敗として処理を終了する。
一方、ステップS1023で区分レベルに空があると判定されるとステップS1026に進み、空状態の割付番号を取得し、割付番号の指す割付状態に塞状態を設定し、ステップS1027に進む。ステップS1027では、区分レベルは割付区分レベルか判定し、割付区分レベルであれば処理を終了し、割付区分レベルでなければステップS1028に分岐する。
ステップS1028では、区分レベルから値1を減らし、ステップS1029に進んで割付番号を2倍する。このステップS1028とステップS1029の処理は、実施形態2の場合と同様にバディ分割の処理に相当する。次にステップS1030で区分レベルの割付番号の指す割付状態に空状態を設定し、ステップS1031において、区分レベルの割付番号とバディ分割の対をなす割付番号(バディ)の指す割付状態に空状態を設定してステップS1022に戻る。すなわち、バディ分割により得られた2つのエクステントの割付状態を空状態として空状態のエクステントの探索を行う。そして、ステップS1026で探索された空状態のエクステントの割付状態を塞状態とし、バディの割付状態は空状態とすることを区分レベルが割付区分レベルとなるまで繰り返し、割付区分レベルの空エクステントを取得する。
以上説明した実施形態3によれば、ある主区域、例えばサイズの小さな主区域に所望の区分レベルの空エクステントがなく、別の主区域、例えばサイズの大きな主区域に所望の区分レベルの空エクステントが存在するとき、サイズの小さな主区域の所望の区分レベルより大きな区分レベルの空エクステントをバディ分割することなく、別の主区域から所望の区分レベルの空エクステントを取得することができる。
以上本発明を実施するための最良の形態について詳細に説明したが、本発明に実施の形態はそれらに限ることなく種々の変形が可能であることは、当業者に明らかである。また、以上に説明した本発明の実施の形態による記憶領域管理方法、記憶領域割付方法及び記憶領域解放方法、更にその均等物は、それらをコンピュータに実行させるプログラムにより実現可能であることも明らかである。したがって、上記プログラム、及び上記プログラムを記憶したコンピュータ読み取り可能な記憶媒体も、本発明の実施の形態に含まれる。
また、本発明の実施の形態による記憶領域管理方法、記憶領域割付方法及び記憶領域解放方法の各処理の実行手段は、上記プログラムにより、コンピュータ上に実現されることも明らかである。したがって、上記プログラムによりとコンピュータにより、記憶領域管理装置、記憶領域割付装置及び記憶領域解放装置が実現されることも明らかである。
ツリー構造体580は、割当領域490を2分の1のサイズに順次割付単位のサイズまで分割して得られる領域(特許文献1の用語を用いればエクステント)の関係を階層的にモデル化したものである。割付単位のサイズのエクステントの階層をレベル0とすると、図に示す例では、ルートノードのレベルは3、すなわち割当領域490のサイズである2のべき乗の指数となる。
本発明の記憶領域管理手法によれば、取得した記憶領域を異なる2のべき乗サイズの記憶領域に分割して管理し割付を可能とすることにより、上述の課題を解決する。
本発明の一つの態様によれば、区画の割付サイズを取得し、割付サイズと、区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、区画を、該算出された互いに異なる2のべき乗の指数毎に該2のべき乗と区画の割当単位のサイズの積からなる大きさの区域に区分し、記区分された区域毎に区画を管理する。
以下、区域についての用語とそれに対応する区画についての用語を対比しながら定義する。
「区分」とは、領域を割り当てる、あるいは領域を分割して割り当てることであり、「割付」ということもある。このときの領域の分割サイズは、互いに異なる2のべき乗サイズで規定されるが、領域の先頭からサイズの大きさの順に割り付けられる。領域は、区域または区画である。特に区画を区分することを「主区分」という。また、主区分により割り付けられた区域を「主区域」という。主区分は、本発明においては、区画に対する初期割付である。
区分または主区分による区域または主区域の割付サイズの2のべき乗の指数を「区分レベル」という。図1Bに示すツリー構造体580を援用して説明すると、例えばノード441が対応するレベルのエクステントのサイズは4であるから、その区分レベルは2である。
上記定義された用語により説明すると、本発明の一つの実施態様によれば、区画を主区分し、主区域毎に区画を管理する。
また、本発明の別の態様によれば、割付要求サイズを含む区域の割付要求を受付け、割付要求サイズを包含する2のべき乗と区画の割当単位のサイズの積の最小のサイズの区域を取得し、更に割付要求サイズと、区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、前記割付要求を受け付けた区域を、該算出された互いに異なる2のべき乗の指数毎に該2のべき乗と前記区画の割当単位のサイズの積からなる大きさの区域に多層区分した多層区域を使用区域とし、前記取得した区域のうち使用区域以外の残りの区域を、該残りの区域のサイズを互いに異なる2のべき乗の和と区画の割当単位のサイズの積からなる大きさとしたときの該互いに異なる2のべき乗の指数毎に、該2のべき乗と前記割当単位のサイズの積からなる大きさの区域に多層区分して該多層区分された多層区域を解放して未使用状態とする。
すなわち、主記憶装置305をデータ処理装置301内のものとすることもできるし、割付区分表208は主記憶装置305に持ち、区画211は外部記憶装置306に割り当てられるのが多くの場合と考えられるが、区画211が、主記憶装置305に割り当てられる場合でも本発明が適用可能であることは、後の説明から明らかである。
の例示では、主記憶装置305、外部記憶装置306及び通信装置307が一本のバス304によりデータ処理装置301に接続されているが、接続方法はこれに限るものではない。
図3Aは、本発明の実施形態1における、取得済み区画を主区分(初期割付)して管理する概念を説明する図である。
図3Aに例示するのは、取得済み区画211の区画サイズ220と主区域1〜3(81a、82a、83a)との関係である。取得済み区画211は、例えば、図1Aに示す区画3(193)とすることができる。
任意の大きさの区画サイズは互いに異なる2のべき乗の和で表現することができることから、区画サイズ220には、区画サイズを互いに異なる2のべき乗の和で表現したとき、その和に存在する2のべき乗の指数が指す位置(以下、有意のビット位置ということがある。)にビット1をその他の位置にビット0を格納した2進数表示により区画サイズの大きさを表している。
次にステップS207bにおいて、主区域番号の指す割付区分表208の、割付位置202に割付位置に設定した値を、割付サイズ203にビット位置に設定した値を指数とする2のべき乗の値を設定し、ステップS208に進む。
図3Bに示す例における最初の処理においては、主区域番号205には初期値の1が、割付位置202には開始位置が、割付サイズ203には25が設定される。
複数の有意ビットが存在する場合、すなわち割付要求サイズが2のべき乗のサイズでない場合は、割付要求サイズ20aの最上位の有意ビットの位置3より1つ上位の位置の値4が割付区分レベル44aとなる。そして、図の点線の矢印44に示すように、バディシステムによる割付処理23により、点線の矢印40で関係を示すように、割付区分レベル44aである4を指数とする2のべき乗サイズの区域80を取得する。区域80の取得には、任意の既存のバディシステムの割付処理を採用することが可能であるが、後に図6及び図5Bを参照して、本実施形態2におけるバディシステムによる割付処理例を説明する。
最初に、ステップS521において、主区分レベルに、主区域番号の指す主区域の割付サイズに相当する区分レベルを設定すると共に、区分レベルに割付区分レベルを設定する。ここで割付区分レベルは、バディシステムにより取得する空エクステントの区分レベルである。図Aに示す例では4が設定される。
次にステップS522において、区分レベル内の空状態のエクステントを探索し、ステップS523で区分レベルに空があるか判定する。空がなければステップS524に分岐して、区分レベルは主区分レベルを指すか、すなわち主区域のサイズであるか判定する。主区分レベルを指す場合は取得失敗として処理を終了し、主区分レベルを指していなければ、ステップS525に進み、区分レベルに値1を加えてステップS522に戻る。
以上のステップS543〜ステップS547のループ処理を、区分レベルが主区分レベルを指すか区分レベルの解放番号のバディの指す割付番号が塞状態となるまで繰り返し、最後に区分レベルの解放番号の指す割付状態に空状態を設定することで割付区域の解放処理が完了する。すなわち、図5に示す処理では、解放番号のバディの指す割付状態が空状態であれば、解放番号とバディの指すペアの割付状態をともに塞状態とし、上位区分レベルにおいてバディの指す割付状態が塞状態となったとき、あるいは主区分レベルを指す区分レベルにまで至ったときに解放番号の指す割付状態に空状態を設定するものである。
図6は、本実施形態における割付区分レベルの区域を取得する処理フロー例を説明する図である。割付区分レベルの区域の取得は、割付要求サイズの区域を取得するのに先立って行われるものであり、後に図7A及び図7Bを参照して説明する割付要求サイズの区域を取得する処理の一部をなすものである。ここで割付区分レベルの区域は、例えば、図3Aに示す取得済み区画211から取得される。以下では、図4Aに示す例に加えて、図3A及び図3Bに示す割付区分表208を参照して説明する。
一方ステップS603において割付サイズは割付要求サイズより小さくないと判定されるとステップS604に進み、主区域番号の指す主区域から割付区分レベルの区域を取得し、割付番号を得る。ステップS604の詳細は、先に図5Bを参照して説明したものである。
次にステップS605において、ステップS604で割付区分レベルの区域を取得したか判定する。割付区分レベルの区域を取得していれば、ステップS608に分岐し、割付区分レベルの区域の取得結果に、主区域番号、割付区分レベル、割付番号を設定して処理を終了する。
ステップS604の処理で割付区分レベルの区域を取得していなければ、ステップS606に進み、主区域番号は最上位の番号か判定する。主区域番号が最上位の番号であれば取得失敗として処理を終了し、主区域番号が最上位の番号でなければ、ステップS607において主区域番号に次の主区域番号を設定してステップS602に戻る。
以上のステップS602からステップS607までのループ処理を、主区域番号を更新しながら割付区分レベルの区域を取得するまで繰り返し、主区域番号が最上位の番号であっても割付区分レベルの区域を取得できなければ、取得失敗として処理を終了する。
次にステップS713で、割付ビットマップより、ビット位置の指すビット値を取り出し、ステップS714において取り出したビット値が1であるか判定し、1であればステップS718に進み、0であればステップS715に進む。
ステップS715では、解放区分レベルにビット位置を設定し、ステップS716に進み、解放番号に、割付番号に1を加えた値を設定する。次にステップS717において、図5を参照して説明した処理により、主区域番号の指す主区域から解放区分レベルの解放番号の区域を解放し、ステップS717aにおいて、割付番号に、割付番号を2倍した値を設定してステップS720に進む。
一方、ステップS718でビット位置が最下位ビット位置と判定されると、ステップS721に進み、解放区分レベルにビット位置を設定し、ステップS722で、解放番号に、割付番号に1を加えた値を設定する。そして、ステップS723において、図5を参照して説明した処理により、主区域番号の指す主区域より解放区分レベルの解放番号の区域を解放する。
最初にステップS801で、解放番号に、レベル内番号からレベル内開始番号を引いた値を設定するとともに、解放区分レベルに割付区分レベルを設定し、次にステップS802において、割付ビットマップに割付要求サイズを2進数表示した値を設定する。
次にステップS803で、最下位ビット位置に割付ビットマップのビット値が1である最も下位のビット位置を設定する。図Aに示す例では、最下位ビット位置には1が設定される。次にステップS804で、最上位ビット位置に割付ビットマップのビット値が1である最も上位のビット位置を設定する。
次にステップS805において、最上位ビット位置と最下位ビット位置は一致するか判定する。一致すれば、ステップS806に分岐する。この場合は割付要求サイズ20aが2のべき乗サイズと等しい場合であり、割付要求がシングルビット要求の場合である。ステップS806では、図5を参照して説明した処理により、主区域番号の指す主区域から解放区分レベルの解放番号の指す区域を解放し、処理を終了する。
図に示すように、ステップS807で解放番号(割付番号)に、解放番号を2倍した値を設定し、ステップS808でビット位置に、最上位ビット位置を設定する。
次にステップS809で、割付ビットマップより、ビット位置の指すビット値を取り出し、ステップS810で、該取り出したビット値は1か判定する。ビット値が1でなければステップS811において、解放番号に、解放番号を2倍した値を設定してステップS814に進む。ビット値が1であれば、ステップS81において、スタックに、ビット位置と解放番号を書き込み、ステップS81で、解放番号に、解放番号に値1を加えた値を2倍した値を設定してステップS814に進む。
次にステップS902で主区分レベルに、主区域番号の指す主区域の割付サイズに相当する区分レベルを設定し、ステップS903において、区分レベルはステップS902で設定した主区分レベルより大きいか判定する。大きくなければステップS904に進み、主区域番号の指す主区域から割付区分レベルの区域を取得し、割付番号を得る。ステップS904の詳細は、後に図10を参照して説明する
次にステップS905において、ステップS904で割付区分レベルの区域を取得したか判定する。割付区分レベルの区域を取得していれば、ステップS908に分岐し、割付区分レベルの区域の取得結果に、主区域番号、割付区分レベル、割付番号を設定して処理を終了する。
ステップS904の処理で割付区分レベルの区域を取得していなければ、ステップS906に進む。
また、ステップS903で区分レベルはステップS902で設定した主区分レベルより大きいと判定されると、ステップS906に進む。
以上の2重のループ処理を、主区域番号と区分レベルを更新しながら割付区分レベルの区域を取得するまで繰り返し、区分レベルが主区分レベルであっても割付区分レベルの区域を取得できなければ、取得失敗として処理を終了する。
図に示すように、まずステップS1022において、区分レベル内の空状態のエクステントを探索する。区分レベルは、図9に示すステップS900あるいはステップS907aで設定されたものである。次にステップS1023で区分レベルに空があるか判定する。空がなければ取得失敗として処理を終了する。
以上本発明を実施するための最良の形態について詳細に説明したが、本発明に実施の形態はそれらに限ることなく種々の変形が可能であることは、当業者に明らかである。また、以上に説明した本発明の実施の形態による記憶領域管理方法、記憶領域割付方法及び記憶領域解放方法、更にその均等物は、それらをコンピュータに実行させるプログラムにより実現可能であることも明らかである。したがって、上記プログラム、及び上記プログラムを記憶したコンピュータ読み取り可能な記憶媒体も、本発明の実施の形態に含まれる。
また、本発明の実施の形態による記憶領域管理方法、記憶領域割付方法及び記憶領域解放方法の各処理の実行手段は、上記プログラムにより、コンピュータ上に実現されることも明らかである。したがって、上記プログラムによりとコンピュータにより、記憶領域管理装置、記憶領域割付装置及び記憶領域解放装置が実現されることも明らかである。
さらに、本発明の記憶領域管理方法によりその記憶領域が管理される記憶装置及び本発明の記憶領域割付方法によりファイルが割り付けられる記憶装置は、本発明の実施の形態に含まれる。そして、記憶装置が、記憶媒体駆動装置と記憶媒体からなる場合には、本発明の記憶領域管理方法によりその記憶領域が管理される記憶媒体及び本発明の記憶領域割付方法によりファイルが割り付けられる記憶媒体も本発明の実施の形態に含まれる。
ツリー構造体580は、割当領域490を2分の1のサイズに順次割当単位のサイズまで分割して得られる領域(特許文献1の用語を用いればエクステント)の関係を階層的にモデル化したものである。割当単位のサイズのエクステントの階層をレベル0とすると、図に示す例では、ルートノードのレベルは3、すなわち割当領域490のサイズである2のべき乗の指数となる。
本発明の記憶領域管理手法によれば、取得した記憶領域を異なる2のべき乗サイズの記憶領域に分割して管理し割付を可能とすることにより、上述の課題を解決する。
本発明の一つの態様によれば、区画の割付サイズを取得し、割付サイズと、区画の割当単位のサイズから互いに異なる2のべき乗の和を算出し、区画を、該算出された互いに異なる2のべき乗の指数毎に該2のべき乗と区画の割当単位のサイズの積からなる大きさの区域に区分し、記区分された区域毎に区画を管理する。
また、本発明の別の態様によれば、割付要求サイズを含む記憶領域の割付要求を受付け、割付要求サイズを包含する、2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域を取得し、割付要求サイズを区画の割当単位のサイズで割った値の2進数表示を求め、受け付けた割付要求に対して、該2進数表示でビット1の立っているビット位置毎の2のべき乗と前記区画の割当単位のサイズの積の大きさの記憶領域からなる連続した記憶領域を割り付ける。
上記定義された用語により説明すると、本発明の一つの実施態様によれば、区画を主区分し、主区域毎に区画を管理する。
また、本発明の別の態様によれば、割付要求サイズを含む区域の割付要求を受付け、割付要求サイズを包含する2のべき乗と区画の割当単位のサイズの積の最小のサイズの区域を取得し、更に割付要求サイズと、区画の割当単位のサイズから互いに異なる2のべき乗の和を算出し、前記割付要求を受け付けた区域を、該算出された互いに異なる2のべき乗の指数毎に該2のべき乗と前記区画の割当単位のサイズの積からなる大きさの区域に多層区分した多層区域を使用区域とし、前記取得した区域のうち使用区域以外の残りの区域を、該残りの区域のサイズを互いに異なる2のべき乗の和と区画の割当単位のサイズの積からなる大きさとしたときの該互いに異なる2のべき乗の指数毎に、該2のべき乗と前記割当単位のサイズの積からなる大きさの区域に多層区分して該多層区分された多層区域を解放して未使用状態とする。
次に本発明を実施するためのハードウェア構成例について、図2を参照して説明する。
本発明の一実施形態による記憶装置の領域管理及び区域の割付及び解放処理は図に示す中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。データ格納装置308については、後に説明する割付区分表208と管理対象である取得済み区画211を含む。図に示すように、データ格納装置308は、主記憶装置305または外部記憶装置306、あるいはそれらの組み合わせで実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。

Claims (14)

  1. 記憶装置の記憶領域管理方法において、
    予め割り付けられた記憶領域である区画の割付サイズを取得し、
    該割付サイズと、前記区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、
    前記区画を、該算出された互いに異なる2のべき乗のべき乗数毎に該2のべき乗と前記区画の割当単位のサイズの積からなる大きさの記憶領域である主区域に分割し、
    前記主区域毎に前記区画を管理することを特徴とする記憶領域管理方法。
  2. 請求項1に記載の記憶領域管理方法において、
    前記区画を前記主区域のサイズの大きさの順に分割することを特徴とする記憶領域管理方法。
  3. 請求項2に記載の記憶領域管理方法において、前記主区域の先頭アドレスである割付位置と主区域のサイズである割付サイズを、前記区画の割付サイズと前記区画の先頭アドレスから求めて前記主区域毎に保持することを特徴とする記憶領域管理方法。
  4. 請求項1に記載の記憶領域管理方法により前記区画を分割した主区域から割付要求された記憶領域のサイズである割付要求サイズの記憶領域を割り付ける記憶領域割付方法において、
    前記割付要求サイズを含む記憶領域の割付要求を受付け、
    前記主区域から前記割付要求サイズを包含する、2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域を取得し、
    前記割付要求サイズを区画の割付単位のサイズで割った値の2進数表示を求め、
    前記受け付けた割付要求に対して、該2進数表示でビット1の立っているビット位置毎の2のべき乗と前記区画の割当単位のサイズの積の大きさの記憶領域からなる連続した記憶領域を、前記取得した2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域に割り付けることを特徴とする記憶領域割付方法。
  5. 請求項4に記載の記憶領域割付方法において、
    前記区画を前記主区域のサイズの大きさの順に分割し、
    該分割した主区域のうちサイズの小さい主区域からサイズの大きい主区域に亘って前記2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域を探索して取得し、該取得した2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域に前記割付要求されたサイズの記憶領域を割り付けることを特徴とする記憶領域割付方法。
  6. 請求項5に記載の記憶領域割付方法において、
    前記最小のサイズの空記憶領域は、前記分割した主区域のうちサイズの小さい主区域からサイズの大きい主区域に亘って前記各主区域に対応するバディシステムにより探索して取得することを特徴とする記憶領域割付方法。
  7. 請求項5に記載の記憶領域割付方法において、
    前記最小のサイズの空記憶領域は、前記分割した主区域のうちサイズの小さい主区域からサイズの大きい主区域に亘って該最小のサイズの空記憶領域を探索し、すべての主区域において該最小のサイズの空記憶領域を取得できなかったときには、該探索した空記憶領域のサイズの2倍のサイズの空記憶領域を前記分割した主区域のうちサイズの小さい主区域からサイズの大きい主区域に亘って探索することを繰り返すことにより取得することを特徴とする記憶領域割付方法。
  8. 予め割り付けられた記憶領域である区画から割付要求された記憶領域のサイズである割付要求サイズの記憶領域を割り付ける記憶領域割付方法において、
    前記割付要求サイズを含む記憶領域の割付要求を受付け、
    前記区画から、前記割付要求サイズを包含する2のべき乗と前記区画の割当単位のサイズの積の最小のサイズの空記憶領域を取得し、
    前記割付要求サイズを前記割付単位のサイズで割った値の2進数表示を求め、
    前記受け付けた割付要求に対して、該2進数表示でビット1の立っているビット位置毎の2のべき乗と前記割当単位のサイズの積の大きさの記憶領域からなる連続した記憶領域を、前記取得した2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域に割り付けることを特徴とする記憶領域割付方法。
  9. 請求項4乃至請求項8のいずれか1項に記載の記憶領域割付方法において、
    前記取得した最小のサイズの空記憶領域のうち前記割り付ける記憶領域以外の残りの記憶領域を解放することを特徴とする記憶領域割付方法。
  10. 請求項9に記載の記憶領域割付方法において、
    前記取得した最小のサイズの空記憶領域のうち前記割り付ける記憶領域以外の残りの記憶領域は、バディシステムにより解放することを特徴とする記憶領域割付方法。
  11. 請求項4乃至請求項10のいずれか1項に記載の記憶領域割付方法により割り付けた記憶領域を解放する記憶領域解放方法において、
    前記ビット位置の小さい記憶領域から順に、バディシステムにより解放することを特徴とする記憶領域解放方法。
  12. 請求項1〜請求項11のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
  13. 請求項1〜請求項11のいずれか1項に記載の方法をコンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
  14. 予め割り付けられた記憶領域である区画の割付サイズを取得し、該割付サイズと、前記区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、前記区画を、該算出された互いに異なる2のべき乗のべき乗数毎に該2のべき乗と前記区画の割当単位のサイズの積からなる大きさの記憶領域である主区域に分割し、前記主区域毎に前記区画を管理する、記憶装置の記憶領域管理のための割付区分表のデータ構造において、
    前記割付区分表は、前記主区域を識別する主区域番号毎に、該主区域の割付位置とサイズを格納するものであり、
    前記主区域毎に記憶領域のバディシステムによる割付管理を可能とする割付管理表のデータ構造。
JP2010525569A 2008-08-17 2009-07-22 記憶領域管理方法、記憶領域割付方法及びプログラム Active JP4761590B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010525569A JP4761590B2 (ja) 2008-08-17 2009-07-22 記憶領域管理方法、記憶領域割付方法及びプログラム

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2008209395 2008-08-17
JP2008209395 2008-08-17
JP2008264689 2008-10-11
JP2008264689 2008-10-11
JP2010525569A JP4761590B2 (ja) 2008-08-17 2009-07-22 記憶領域管理方法、記憶領域割付方法及びプログラム
PCT/JP2009/003452 WO2010021085A1 (ja) 2008-08-17 2009-07-22 記憶領域管理方法、記憶領域割付方法及びプログラム

Publications (2)

Publication Number Publication Date
JP4761590B2 JP4761590B2 (ja) 2011-08-31
JPWO2010021085A1 true JPWO2010021085A1 (ja) 2012-01-26

Family

ID=41706978

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010525569A Active JP4761590B2 (ja) 2008-08-17 2009-07-22 記憶領域管理方法、記憶領域割付方法及びプログラム

Country Status (5)

Country Link
US (2) US9164902B2 (ja)
EP (2) EP3128431A1 (ja)
JP (1) JP4761590B2 (ja)
CN (1) CN102124452B (ja)
WO (1) WO2010021085A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8538926B2 (en) * 2011-03-08 2013-09-17 Rackspace Us, Inc. Massively scalable object storage system for storing object replicas
CN102096722B (zh) * 2011-03-21 2013-03-27 华为数字技术(成都)有限公司 文件存储方法和装置
CN102981964B (zh) * 2012-11-01 2016-08-03 华为技术有限公司 数据存储空间的管理方法及系统
CN109308267B (zh) * 2017-07-28 2021-12-03 星宸科技股份有限公司 行车记录器的储存装置的控制方法与储存装置控制系统
US10877763B2 (en) 2018-08-02 2020-12-29 International Business Machines Corporation Dispatching, allocating, and deallocating instructions with real/virtual and region tags in a queue in a processor
US11606555B2 (en) * 2018-12-20 2023-03-14 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for video coding using uniform segment split in pictures
US20220244869A1 (en) * 2021-02-02 2022-08-04 Micron Technology, Inc. File system storage allocation based on zones of a memory device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5490274A (en) * 1993-06-30 1996-02-06 Microsoft Corporation Modified buddy system for managing disk space
US6131150A (en) * 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system
US6901497B2 (en) * 2000-10-27 2005-05-31 Sony Computer Entertainment Inc. Partition creating method and deleting method
US7610468B2 (en) * 2006-10-26 2009-10-27 Hewlett-Packard Development Company, L.P. Modified buddy system memory allocation

Also Published As

Publication number Publication date
US9778872B2 (en) 2017-10-03
EP2339471A1 (en) 2011-06-29
US20110145538A1 (en) 2011-06-16
JP4761590B2 (ja) 2011-08-31
WO2010021085A1 (ja) 2010-02-25
EP2339471A4 (en) 2013-10-23
US20160266837A1 (en) 2016-09-15
CN102124452B (zh) 2015-01-14
US9164902B2 (en) 2015-10-20
CN102124452A (zh) 2011-07-13
EP3128431A1 (en) 2017-02-08

Similar Documents

Publication Publication Date Title
JP4761590B2 (ja) 記憶領域管理方法、記憶領域割付方法及びプログラム
CN108628753B (zh) 内存空间管理方法和装置
CN106776967B (zh) 基于时序聚合算法的海量小文件实时存储方法及装置
CN102609446B (zh) 一种分布式Bloom过滤系统及其使用方法
US10191998B1 (en) Methods of data reduction for parallel breadth-first search over graphs of connected data elements
CN113961514B (zh) 数据查询方法及装置
CN103064639A (zh) 数据存储方法及装置
CN105593828A (zh) 管理文件的方法、分布式存储系统和管理节点
CN104424219B (zh) 一种数据文件的管理方法及装置
JP2006195960A5 (ja)
CN107111627A (zh) 在线文件系统检查
CN109407985B (zh) 一种数据管理的方法以及相关装置
CN113722319A (zh) 基于学习索引的数据存储方法
CN115904255B (zh) 一种数据请求方法、装置、设备及存储介质
TW201830249A (zh) 最大化可去重複記憶體的方法、記憶體系統和產品
JP5447523B2 (ja) データ処理装置、データ記録方法、データ記録プログラム
CN107111549A (zh) 一种文件系统的管理方法及装置
CN104133970A (zh) 一种数据空间管理方法及装置
CN107203479B (zh) 层级化存储系统、存储控制器及层级化控制方法
CN116774937A (zh) 数据存储方法、装置、处理设备、存储介质
CN108804571B (zh) 一种数据存储方法、装置以及设备
JP6006740B2 (ja) インデックス管理装置
CN103970671B (zh) 用于在存储器中分配管理数据集的系统和方法
CN109871355B (zh) 一种快照元数据存储方法、装置及设备、介质
CN107291404B (zh) 一种缓存下刷方法及系统

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20110315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110517

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110606

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110606

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4761590

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250