CN102124452A - 存储区域管理方法、存储区域分配方法以及程序 - Google Patents

存储区域管理方法、存储区域分配方法以及程序 Download PDF

Info

Publication number
CN102124452A
CN102124452A CN2009801319219A CN200980131921A CN102124452A CN 102124452 A CN102124452 A CN 102124452A CN 2009801319219 A CN2009801319219 A CN 2009801319219A CN 200980131921 A CN200980131921 A CN 200980131921A CN 102124452 A CN102124452 A CN 102124452A
Authority
CN
China
Prior art keywords
storage area
size
mentioned
primary section
subregion
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
CN2009801319219A
Other languages
English (en)
Other versions
CN102124452B (zh
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.)
Ji Gangcheng
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
Publication of CN102124452A publication Critical patent/CN102124452A/zh
Application granted granted Critical
Publication of CN102124452B publication Critical patent/CN102124452B/zh
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:NT文件系统)等文件系统。
图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所公开的伙伴系统(buddy system)相关的技术。伙伴系统按照由2k构成的尺寸来分割存储区域进行分配管理。在不使用虚拟存储方式的单纯系统的存储对象的分配中,采用基本的伙伴系统。
图1B是说明伙伴系统的分配原理的图。图1B所示的是尺寸为23=8的分配区域490、以及与其对应的树结构体580。分配区域490例如是图1A所例示的分区1~4等。
树结构体580是对依次将分配区域490分割为2分之1尺寸,直到分配单位尺寸为止而获得的区域(如果采用专利文献1的术语则为盘区(extent))的关系层级地进行模型化而得到的。在将分配单位尺寸的盘区的阶层设为级别0时,在图所示的例子中,根节点的级别是3,即作为分配区域490尺寸的2乘方的指数。
树结构体580的根节点480对应于分割前的分配区域490的整个区域(级别3的盘区),记载在节点内的“8”相当于所对应的分配区域490的尺寸。另外,括弧内的数字是识别同一级别内的盘区的级别内编号。
通过链接540连接到根节点480的节点440和通过链接541连接到根节点480的节点441对应于将分配区域490一分为二所得到的区域(级别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以外的节点对应于将父节点所对应的盘区进行一分为二后的盘区之一。因此,各级别的盘区的尺寸总和与分配区域490的尺寸一致。
根据上述伙伴系统,当分配某一大小的文件时,从与该大小相等或超过该大小的由2k构成的尺寸的盘区中寻找空盘区进行分配,在释放时返回到该尺寸的空盘区组中即可,所以能够容易地进行文件和存储对象的分配释放以及区域的管理。
专利文献1:日本特开平7-28693号公报
非专利文献1:安井卓,「はじめて学ぶLinuxカ一ネル(第5回カ一ネル·メモリ管理)」日経Linux第6卷第1号(2004-01-08)p123-p130
但是,根据上述伙伴系统,因为以2幂数为单位来分配区域,所以例如在分配2.1GB文件时需要4GB的区域,在文件分配后的区块中,不管是否产生没有写入数据的区域,在现有的文件系统内均不能对该区域进一步追加文件,从而无法有效地使用区域。
另外,例如即使存储装置的整体存储容量是127GB,关于分配给请求存储区域的请求源的物理或逻辑区域的分区,最大也只能作为64GB的分区进行管理。关于分区,虽然图1所例示的分区3(193)的尺寸是52,但也只能作为25=32尺寸的分区进行管理。
即,根据伙伴系统,虽然由于以2幂数为单位分配区域所以能够容易地进行文件和存储对象的分配释放以及区域的管理,但存在如下问题:由于未能实现从2幂数尺寸的区域取得非2幂数尺寸的区域时的剩余区域管理,以及从非2幂数尺寸的区域取得2幂数尺寸的区域时的剩余区域管理,所以不能有效地利用区域。
发明内容
因此本发明的目的是提供以下这样的技术:不管是在从2幂数尺寸的存储区域取得非2幂数尺寸的存储区域时,还是在从非2幂数尺寸的存储区域取得2幂数尺寸的存储区域时,在哪种情况下都能够管理剩余的存储区域并且能够有效地利用存储区域。
根据本发明的存储区域管理方法,能够将所取得的存储区域分割成不同的2幂数尺寸的存储区域进行管理分配,由此解决上述课题。
根据本发明的一个方式,取得分区的分配尺寸,根据分配尺寸和分区的分配单位尺寸来算出互不相同的2幂数之和,针对该算出的互不相同的2幂数的每个指数,将分区分割成由该2幂数与分区的分配单位尺寸之积构成的大小的区域,针对该分割后的每个区段来管理分区。
另外,根据本发明的另一方式,接受包含分配请求尺寸的存储区域分配请求,取得包含分配请求尺寸的、2幂数与分区的分配单位尺寸之积的最小尺寸的空存储区域,求出将分配请求尺寸除以分区的分配单位尺寸所得的值的2进制数表示,针对所接受的分配请求,分配由在该2进制数表示中处于比特1的每个比特位置的2幂数与上述分区的分配单位尺寸之积的大小的存储区域构成的连续存储区域。
根据本发明,通过组合2幂数的尺寸来管理存储区域,所以能够有效管理任意尺寸的存储区域,按照对存储区域进行分割后的每个2幂数尺寸的存储区域进行分配管理,所以能够在连续存储区域中没有浪费地进行文件和存储对象的分配,从而能有效地利用存储区域。
附图说明
图1A是说明外部存储装置中的分区分配例的图。
图1B是说明伙伴系统的分配原理的图。
图2是说明用于实施本发明的硬件构成例的图。
图3A是说明本发明实施方式1中的将已取得分区作为主划分(初始分配)进行管理的概念图。
图3B是说明管理已进行图3A所示的主划分的已取得分区的分配划分表的图。
图3C是说明本发明实施方式1的对已取得分区进行主划分(初始分配)的处理流程例的图。
图4A是说明本发明实施方式2的取得分配请求尺寸的区段而释放使用区段的概念的图。
图4B是说明本发明实施方式2的各划分级别的盘区的分配状态例的图。
图5A是说明本发明中的对伙伴系统进行初始化的处理流程例的图。
图5B是说明本发明中的基于伙伴系统的取得空盘区的处理流程例的图。
图5C是说明本发明中的基于伙伴系统的对取得盘区进行释放的处理流程例的图。
图6是说明本发明实施方式2中的取得分配划分级别区段的处理流程例的图。
图7A是说明本发明实施方式2中的取得分配请求尺寸区段的处理流程例的前半部分图。
图7B是说明本发明实施方式2中的取得分配请求尺寸区段的处理流程例的后半部分图。
图8A是说明本发明实施方式2中的释放所取得的分配请求尺寸区段的处理流程例的前半部分图。
图8B是说明本发明实施方式2中的释放所取得的分配请求尺寸区段的处理流程例的后半部分图。
图9是说明本发明实施方式3中的取得分配划分级别区段的处理流程例的图。
图10是说明本发明实施方式3中的取得空盘区的处理流程例的图。
具体实施方式
以下,参照附图对本发明的优选实施方式进行详细说明,在此之前,本说明书中采用的术语定义如下。
首先,重新对分区进行定义。在本发明中所谓“分区”,如参照图1A所说明的那样,是预先分配的区域,是最初分配的区域。在本发明中,以取得了分区为前提。
所谓“区段”就是分配或指派的区域。由于分区是预先分配的区域,所以分区是区段的一种,区段中的特定区段。
将区段分割成具有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内的部件,或者在主存储装置305中具有分配划分表208,分区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幂数之和来表现分区尺寸时,利用如下的2进制数表示来表示分区尺寸的大小,该2进制数表示在2幂数之和中存在幂的指数的位置(以下,有时称为有效比特位置。)上存储比特1、在其它指数的位置上存储比特0。
在图3A所示的例子中,在分区尺寸220的多个比特位置(5、4、2)中存储了比特值1,所以分区尺寸不等于2幂数的值,已取得分区211的分区尺寸是25+24+22=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中存储25。同样,在主区段2的分配位置202中存储开始位置+25,在分配尺寸203中存储24,在主区段3的分配位置202中存储开始位置+25+24,在分配尺寸203中存储22
通过采用以上这样的本发明实施方式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设定25
在步骤S208中,判定比特位置是否是最下位的比特位置,如果是最下位的比特位置则结束处理,如果不是最下位的比特位置则转移至步骤S209a,对分配位置设定加上分配尺寸后的值。接着在步骤S210中对主区段编号加1,在步骤S211中将比特位置中设定的值减去1,返回步骤S205。
另一方面,如果步骤S206a中的判定是比特值不为1,则进到步骤S206b,判定比特位置是否是最下位的比特位置,如果是最下位的比特位置则结束处理,如果不是最下位的比特位置则转移到步骤S211。
反复上述步骤S205~步骤S211的循环处理,直到比特位置成为最下位的比特位置为止,当比特位置成为最下位的比特位置时结束处理。
通过以上的处理,完成已取得分区的主划分。
接着,对本发明的实施方式2进行说明。在本实施方式2中,从请求源接受包含与2幂数尺寸不同的分配请求尺寸的区段取得请求,利用伙伴系统的分配处理来取得包含该分配请求尺寸的最小的2幂数尺寸(分配划分级别)的区段,利用伙伴系统的分配处理来释放其中的未使用区段,由此取得与分配请求尺寸对应的使用区段,作为不同划分级别区段的连续区域。在实施方式1中,从分区进行主划分后得到的主区段中取得上述分配划分级别的区段,但不限于此。
图4A是说明本发明实施方式2中的取得分配请求尺寸的区段并释放未使用区段的概念的图。
在图4A中示出不等于2幂数尺寸的分配请求尺寸20a与根据该分配请求尺寸20a取得的区段80之间的关系、以及与将所取得的区段80进行多层划分而得到的区段1~4(81b、83b、84c、82c)之间的关系。分配请求尺寸20a的有效比特位置是3和1,分配请求尺寸是23+21=10。
当存在多个有效比特时,即分配请求尺寸不是2幂数的尺寸时,比分配请求尺寸20a的最上位有效比特的位置3再上位一个位置的值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对应于划分23尺寸的区段1(81b)进行分割分配,下一比特位置2的比特值是0对应于分割分配22尺寸的区段2(82c)。并且,因为下一比特位置1是有效比特的位置,所以分割分配21尺寸的区段3(83b),此外因为比特位置1是最下位的有效比特的位置,所以将剩余区域分割分配为区段4(84c)。
由区段1(81b)和区段3(83b)构成与分配请求尺寸对应的使用区段,由区域4(84c)和区段2(82c)构成未使用区段。
图4B是说明本发明实施方式2的各划分级别的盘区的分配状态例的图。
图4B所示的各盘区的分配状态和级别内编号的树是这样的树:从划分级别4到划分级别1,示出对与图4A所示的取得区段80对应的盘区分别进行一分为二的分割(伙伴分割)后得到的盘区的分配状态1或0。分配状态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。
当将图4A例示的区段80作为主区段进行说明时,上述步骤S501~步骤S504的处理是对划分级别4的分配状态616设定空状态的处理。此外,关于取得区段的主区段的选择,之后参照图6来说明。另外,图4B所示的级别内编号被一般化为级别内开始编号+分配编号。级别内开始编号是任意的编号,分配编号是相对于级别内开始编号的偏移。因此,当级别内开始编号为0时,级别内编号与分配编号是相同的值。
在步骤S505中,判定划分级别是否为最下位的划分级别。如果是最下位的划分级别则初始化结束所以结束处理。如果不是最下位的划分级别,则进到步骤S506。
在步骤S506中,从划分级别减去值1。接着在步骤S507中对分配编号设定级别内开始编号,在步骤S508中,对级别内结束编号设定将级别内结束编号乘以2的值与值1相加所得的值。
接着在步骤S509中对划分级别的分配编号指向的分配状态设定满状态,在步骤S510中,判定分配编号是否与级别内结束编号相等。如果分配编号与级别内结束编号相等则返回步骤S505,如果不相等,则在步骤S511中对分配编号加1,返回步骤S509。
在上述步骤505~步骤S511的处理中,将对主区段进行了伙伴分割得到的盘区的分配状态设定为满状态。在图4B所示的例子中,级别内结束编号从初始值0起,每当进行一次处理循环,在步骤508中计算出1、3、7,从划分级别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所示的处理中,如果释放编号的伙伴所指向的分配状态是空状态,则释放编号和伙伴所指向的对的分配状态都设为满状态,在上位划分级别中伙伴所指向的分配状态为满状态时、或者在到达指向主划分级别的划分级别时,将释放编号指向的分配状态设定空状态。
接着,参照图6~图7B来说明本发明实施方式2的下述处理:取得分配划分级别的区段对该区段进行多层划分,取得多层划分后的多层区段中与分配请求尺寸对应的使用区段,作为不同划分级别的区段的连续区域,通过伙伴系统的分配处理来释放剩余的未使用区段。
图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。因此,在步骤S711中将对分配划分级别区段进行伙伴分割后的划分级别3的区段1(81b)的分配编号设为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的不同点是,针对不同的主区段取得分配划分级别区段的过程。因此,在参照图4A~图8B对实施方式2进行说明的内容中,实施方式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,当在某主区段(例如尺寸较小的主区段)中没有期望的划分级别的空盘区而在其它主区段(例如尺寸较大的主区段)中存在期望的划分级别的空盘区时,不需要对划分级别大于尺寸较小的主区段的期望划分级别的空盘区进行伙伴分割,就能够从其它主区段中取得期望的划分级别的空盘区。
以上对用于实施本发明的优选方式进行了详细说明,但本领域技术人员可知本发明的实施方式不仅限于此,还可以进行各种变形。另外,关于以上说明的本发明实施方式的存储区域管理方法、存储区域分配方法以及存储区域释放方法还有其等同物,可以通过使计算机执行的程序来实现。因此,本发明的实施方式还包含上述程序、以及存储上述程序的计算机可读存储介质。
另外,关于本发明实施方式的存储区域管理方法、存储区域分配方法以及存储区域释放方法的各处理的执行手段,显然可以通过上述程序在计算机上实现。因此显然可以通过上述程序和计算机,来实现存储区域管理装置、存储区域分配装置以及存储区域释放装置。

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中任一项所述的存储区域分配方法,其特征在于,
释放上述取得的最小尺寸的空存储区域中、除了上述分配的存储区域以外的剩余存储区域。
10.根据权利要求9所述的存储区域分配方法,其特征在于,
利用伙伴系统来释放上述取得的最小尺寸的空存储区域中、除了上述分配的存储区域以外的剩余存储区域。
11.一种存储区域释放方法,该存储区域释放方法对利用权利要求4~10中任一项所述的存储区域分配方法分配的存储区域进行释放,其特征在于,
利用伙伴系统从上述比特位置小的存储区域起依次进行释放。
12.一种程序,该程序用于使计算机执行如权利要求1~11中任一项所述的方法。
13.一种计算机可读存储介质,该存储介质存储有用于使计算机执行如权利要求1~11中任一项所述的方法的程序。
14.一种分配划分表的数据结构,该分配划分表的数据结构用于存储装置的存储区域管理,在该存储装置的存储区域管理中,取得作为预先分配的存储区域的分区的分配尺寸,根据该分配尺寸和上述分区的分配单位的尺寸,算出互不相同的2幂数之和,针对该算出的互不相同的2幂数的每个指数,将上述分区分割成作为由该2幂数与上述分区的分配单位尺寸之积构成的大小的存储区域的主区段,针对每个上述主区段来管理上述分区,其中,
上述分配划分表按照识别上述主区段的每个主区段编号,存储该主区段的分配位置和尺寸,
能够针对每个上述主区段进行基于存储区域的伙伴系统的分配管理。
CN200980131921.9A 2008-08-17 2009-07-22 存储区域管理方法、存储区域分配方法以及程序 Active CN102124452B (zh)

Applications Claiming Priority (5)

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

Publications (2)

Publication Number Publication Date
CN102124452A true CN102124452A (zh) 2011-07-13
CN102124452B CN102124452B (zh) 2015-01-14

Family

ID=41706978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980131921.9A Active CN102124452B (zh) 2008-08-17 2009-07-22 存储区域管理方法、存储区域分配方法以及程序

Country Status (5)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109308267A (zh) * 2017-07-28 2019-02-05 聚星电子股份有限公司 行车记录器的储存装置的控制方法与储存装置控制系统

Families Citing this family (6)

* 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 华为技术有限公司 数据存储空间的管理方法及系统
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
JP7182006B2 (ja) * 2018-12-20 2022-12-01 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ピクチャにおける均一なセグメントスプリットを使用したビデオコーディングのための方法および装置
US20220244869A1 (en) * 2021-02-02 2022-08-04 Micron Technology, Inc. File system storage allocation based on zones of a memory device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131150A (en) * 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system

Family Cites Families (3)

* 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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131150A (en) * 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HONG MIN等: "An Efficient Dynamic Memory Allocator for Sensor Operating Systems", 《SAC》 *
IBM: "Method for Allocating Computer Disk Space to a File of Known Size", 《IBM TECHNICAL DISCLOSURE BULLETIN》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109308267A (zh) * 2017-07-28 2019-02-05 聚星电子股份有限公司 行车记录器的储存装置的控制方法与储存装置控制系统
CN109308267B (zh) * 2017-07-28 2021-12-03 星宸科技股份有限公司 行车记录器的储存装置的控制方法与储存装置控制系统

Also Published As

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

Similar Documents

Publication Publication Date Title
CN102124452A (zh) 存储区域管理方法、存储区域分配方法以及程序
CN102646130B (zh) 一种海量历史数据的存储及索引方法
CN110413611B (zh) 数据存储、查询方法及装置
CN107239230A (zh) 用于高效存储器内嵌去重应用的最优化的跳房子多散列表
CN102609446B (zh) 一种分布式Bloom过滤系统及其使用方法
CN104115134A (zh) 复合非易失性存储设备的数据迁移
CN103106158A (zh) 包括键-值存储的存储器系统
CN103440208A (zh) 一种数据存储的方法及装置
CN105320608A (zh) 用于控制存储器设备处理访问请求的存储器控制器和方法
CN103995855A (zh) 存储数据的方法和装置
JP2013196565A (ja) データベース処理方法、及びデータベース処理装置
CN105138282A (zh) 一种存储空间回收的方法及存储系统
KR102316271B1 (ko) 데이터 저장장치의 주소 맵핑 테이블 운용 방법
GB2593408A (en) Increasing data performance by transferring data between storage tiers using workload characteristics
CN109407985B (zh) 一种数据管理的方法以及相关装置
CN104424219A (zh) 一种数据文件的管理方法及装置
CN112114753A (zh) 一种数据写入方法、装置及设备
CN104933051A (zh) 文件存储空间回收方法和装置
CN111708894B (zh) 一种知识图谱创建方法
CN109977078A (zh) 一种数据的处理方法、装置、计算机设备和存储介质
CN106462491B (zh) 一种存储数据的管理方法、存储管理器及存储系统
CN104038423A (zh) 一种Open flow流表刷新方法及路由设备
CN106383826A (zh) 数据库查询方法和装置
CN101350010B (zh) 一种哈希表的操作方法
JP2016192170A (ja) ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: KOUSOKUYA INC.

Free format text: FORMER OWNER: GRANTS CO. LTD S.

Effective date: 20121113

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20121113

Address after: Kanagawa

Applicant after: Kousokuya Inc.

Address before: Chiba County, Japan

Applicant before: Grants Co. Ltd S.

ASS Succession or assignment of patent right

Owner name: JI GANGCHENG

Free format text: FORMER OWNER: KOUSOKUYA INC.

Effective date: 20140813

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20140813

Address after: Kanagawa

Applicant after: Ji Gangcheng

Address before: Kanagawa

Applicant before: Kousokuya Inc.

C14 Grant of patent or utility model
GR01 Patent grant