存储区域管理方法、存储区域分配方法以及程序的制作方法

文档序号:6594482阅读:182来源:国知局
专利名称:存储区域管理方法、存储区域分配方法以及程序的制作方法
技术领域
本发明涉及管理存储装置的存储区域并对存储区域分配文件以及存储对象的技 术。
背景技术
一直以来,作为用于管理存储在硬盘等存储装置中的数据的方式,例如采用了 FAT (File Allocation Tables 文件分配表)或 NTFS(NT File System :NT 文件系统)等文 件系统。图IA是说明一直以来采用的硬盘等外部存储装置中的分区分配的图。如图IA所示,例如在外部存储装置306的存储区域的开头配置有主引导记录195 和存储有分区管理数据的分区管理表l%a。此外,还利用未图示的磁盘分配程序等实用程 序来分配4个分区1 4(191、192、193、194),并分别分配给某文件系统。如图IA例示针对 分区编号3的分区信息196那样,分区管理表19 包含分区编号196a、开始位置196b、分 区尺寸196c的条目。在分区编号196a中存储有识别分区的分区编号,在图示的例子中是 3。在开始位置中存储有分区的起始地址信息,在图示的例子中省略内容。在分区尺寸196c 中,存储有分区的分配单位区域的个数,在图示的例子中是52。针对各分区中的文件的磁盘分配管理取决于分配了各个分区的文件系统所特有 的分配方法,因此非常烦杂。例如,根据FAT,针对每个文件保持表示分配后的区块的链接 表。另外,根据NTFS,针对每个文件保持与分配后的区块的开始位置以及连续的区块数相关 的信息。为了解决这些文件系统中的分配管理的问题,例如提出了与下述专利文献1以及 非专利文献1所公开的伙伴系统(buddy system)相关的技术。伙伴系统按照由2k构成的 尺寸来分割存储区域进行分配管理。在不使用虚拟存储方式的单纯系统的存储对象的分配 中,采用基本的伙伴系统。图IB是说明伙伴系统的分配原理的图。图IB所示的是尺寸为23 = 8的分配区域 490、以及与其对应的树结构体580。分配区域490例如是图IA所例示的分区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 日本特开平748693号公报非专利文献1 安井卓,「ii I;趵 学名Linux力一才、A (第5回力一才、乂 V 管理)」日経 Linux 第 6 卷第 1 号(2004-01-08)ρ123_ρ130但是,根据上述伙伴系统,因为以2幂数为单位来分配区域,所以例如在分配 2. IGB文件时需要4GB的区域,在文件分配后的区块中,不管是否产生没有写入数据的区 域,在现有的文件系统内均不能对该区域进一步追加文件,从而无法有效地使用区域。另外,例如即使存储装置的整体存储容量是127GB,关于分配给请求存储区域的请 求源的物理或逻辑区域的分区,最大也只能作为64GB的分区进行管理。关于分区,虽然图 1所例示的分区3(193)的尺寸是52,但也只能作为25 = 32尺寸的分区进行管理。S卩,根据伙伴系统,虽然由于以2幂数为单位分配区域所以能够容易地进行文件 和存储对象的分配释放以及区域的管理,但存在如下问题由于未能实现从2幂数尺寸的 区域取得非2幂数尺寸的区域时的剩余区域管理,以及从非2幂数尺寸的区域取得2幂数 尺寸的区域时的剩余区域管理,所以不能有效地利用区域。

发明内容
因此本发明的目的是提供以下这样的技术不管是在从2幂数尺寸的存储区域取 得非2幂数尺寸的存储区域时,还是在从非2幂数尺寸的存储区域取得2幂数尺寸的存储 区域时,在哪种情况下都能够管理剩余的存储区域并且能够有效地利用存储区域。根据本发明的存储区域管理方法,能够将所取得的存储区域分割成不同的2幂数 尺寸的存储区域进行管理分配,由此解决上述课题。根据本发明的一个方式,取得分区的分配尺寸,根据分配尺寸和分区的分配单位 尺寸来算出互不相同的2幂数之和,针对该算出的互不相同的2幂数的每个指数,将分区分 割成由该2幂数与分区的分配单位尺寸之积构成的大小的区域,针对该分割后的每个区段 来管理分区。另外,根据本发明的另一方式,接受包含分配请求尺寸的存储区域分配请求,取得
5包含分配请求尺寸的、2幂数与分区的分配单位尺寸之积的最小尺寸的空存储区域,求出 将分配请求尺寸除以分区的分配单位尺寸所得的值的2进制数表示,针对所接受的分配请 求,分配由在该2进制数表示中处于比特1的每个比特位置的2幂数与上述分区的分配单 位尺寸之积的大小的存储区域构成的连续存储区域。根据本发明,通过组合2幂数的尺寸来管理存储区域,所以能够有效管理任意尺 寸的存储区域,按照对存储区域进行分割后的每个2幂数尺寸的存储区域进行分配管理, 所以能够在连续存储区域中没有浪费地进行文件和存储对象的分配,从而能有效地利用存 储区域。


图IA是说明外部存储装置中的分区分配例的图。图IB是说明伙伴系统的分配原理的图。图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中的取得空盘区的处理流程例的图。
具体实施例方式以下,参照附图对本发明的优选实施方式进行详细说明,在此之前,本说明书中采用的术语定义如下。首先,重新对分区进行定义。在本发明中所谓“分区”,如参照图IA所说明的那样, 是预先分配的区域,是最初分配的区域。在本发明中,以取得了分区为前提。所谓“区段”就是分配或指派的区域。由于分区是预先分配的区域,所以分区是区 段的一种,区段中的特定区段。将区段分割成具有2幂数与分配单位区域之积的尺寸的多个区段的情况称为“多 层划分”。另外,将多层划分后得到的区段称为“多层区段”。此外,在以下的说明中,省略了 提及分配单位区域,有时对区域尺寸简单地采用2的η次方的尺寸等的表述。以下,一边对比一边定义关于区段的术语和与其对应的分区的术语。所谓“划分”是指分配区域、或者对区域进行分割并分配,还可以称为“指派”。此 时的区域的分割尺寸利用互不相同的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例如可以设为图IA所示的分区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、8h、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,分配请求 尺寸是2^21 = 10。当存在多个有效比特时,即分配请求尺寸不是2幂数的尺寸时,比分配请求尺寸 20a的最上位有效比特的位置3再上位一个位置的值4成为分配划分级别44a。并且,如图 的虚线箭头44所示,利用伙伴系统的分配处理23,如以虚线箭头40所示关系那样,取得将 分配划分级别4 即4作为2的指数的2幂数尺寸的区段80。在区段80的取得中,可采用 任意的现有伙伴系统的分配处理,之后参照图6以及图5B,说明本实施方式2中的伙伴系统 的分配处理例。
9
分配请求尺寸20a的各比特值与区段1 4(81b、83b、84c、82c)之间的关系如实 线箭头71b、73b以及虚线箭头73c、72c所示。即,分配请求尺寸20a的最上位的有效比特 的位置是3对应于划分23尺寸的区段1 (81b)进行分割分配,下一比特位置2的比特值是0 对应于分割分配22尺寸的区段2 (82c)。并且,因为下一比特位置1是有效比特的位置,所 以分割分配21尺寸的区段3(8 ),此外因为比特位置1是最下位的有效比特的位置,所以 将剩余区域分割分配为区段4(84c)。由区段l(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的分配状态是与区段I(Slb)对应的盘区的分配 状态,设定了 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中判定划分级 别是否有空闲。如果没有空闲则分支到步骤S5M,判定划分级别是否指主划分级别(S卩、是 否是主区段的尺寸)。在是指主划分级别的情况下作为取得失败结束处理,如果不是指主划 分级别,则进到步骤S525,使划分级别与值1相加,返回步骤S522。另一方面,当在步骤S523中判定为划分级别有空时,进到步骤,取得空状态 的分配编号,对分配编号指向的分配状态设定满状态,进到步骤S527。在步骤S527中,判定 划分级别是否是分配划分级别,如果是分配划分级别则结束处理,如果不是分配划分级别 则分支到步骤S5^。在步骤中,从划分级别减去值1,前进到步骤,将分配编号乘以2。该步 骤与步骤的处理相当于伙伴分割的处理。接着在步骤S530中对划分级别的分配 编号指向的分配状态设定空状态,在步骤S531中,对与划分级别的分配编号构成伙伴分割对的分配编号(以下,有时称为伙伴。)指向的分配状态设定空状态,返回步骤S522。艮口, 将利用伙伴分割获得的2个盘区的分配状态设为空状态,进行空状态的盘区的搜索。并且, 反复将在步骤中搜索到的空状态盘区的分配状态设为满状态、将伙伴的分配状态设 为空状态的处理,直到划分级别成为分配划分级别为止,取得分配划分级别的空盘区。图5C是说明本实施方式中的释放伙伴系统的取得盘区的处理流程例的图。首先,在步骤S541中,对主划分级别设定与主区段编号指向的主区段的分配尺寸 相当的划分级别,并且对划分级别设定释放划分级别。这里,释放划分级别是利用伙伴系统 释放的满状态盘区的划分级别。在对图4A所示例子的区段I(Slb)进行释放时,释放划分 级别是与其对应的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中的分配划分级别区段的取得,在该取得失败的情况下,接着尝试从 主区段I(Sla)取得分配划分级别区段。因为主区段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的处理流程例的步骤中设定的。
接着在步骤S707中判定在步骤S706的处理中是否取得了分配划分级别(即分配 请求尺寸的区段),如果没有取得,则作为取得失败结束处理。如果取得了分配请求尺寸的 区段,则在步骤S707a中,对级别内编号设定将级别内开始编号与分配编号相加所得的值, 在步骤S707b中,在取得结果中设定主区段编号、分配划分级别、级别内编号并结束处理。另一方面,如图4A的例子那样当最上位比特位置与最下位比特位置不一致时,在 步骤S708中对分配划分级别设定将最上位比特位置加上值1所得的值,并进到步骤S709。 在图4A的例子中,作为分配划分级别4 设定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的区段I(Slb)的分配编号是0,则释放划分级别2的释放编 号3的区段2 (82c),如果划分级别3的区段I(Slb)的分配编号是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(8如),如果划分级别3的区段I(Slb)的分配编号是2,则同样释放划分级别1的释放 编号13的区段4(8 )。在步骤S723之后的步骤S7M中,对级别内编号设定将级别内开始编号加上分配 编号所得的值,在步骤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。
15
在步骤S814中判定比特位置是否是最下位比特位置,如果不是最下位比特位置, 则在步骤S815中从比特位置减去1,返回到步骤S809。如果是最下位比特位置,则在步骤 S816中判定堆栈是否为空,如果是空则结束处理,如果不是空,则进到步骤S817,从堆栈中 取出比特位置与释放编号。接着在步骤S818中对释放划分级别设定在步骤S817中取出的 比特位置。然后,在步骤S819中通过参照图5C说明的处理,从主区段编号指向的主区段中 对释放划分级别的释放编号的区域进行释放,并返回步骤S816。反复上述步骤S816 步骤S819的循环处理直到堆栈为空为止,由此完成分配请 求尺寸的区段的释放。在释放图4A所例示的分配请求尺寸的使用区段的情况下,在步骤S801中对释放 编号设定O或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的区段I(Slb)。通过以上的处理,释放构成 使用区段的区段l(81b)和区段3 (8!3b)。通过采用以上这样的本发明实施方式2的方法,即使请求取得的区段的尺寸与2 幂数的值不相等,也能够将该区段划分成与2幂数的值相等的区段并针对每个区段进行管 理,所以能够针对每个区段采用伙伴系统的方法,从而能够有效地利用已取得的区段。另 外,即使在取得了包含请求尺寸的2幂数尺寸的区段的情况下,也能够将超过请求源所请 求的尺寸的剩余区段作为未使用区段进行管理并有效利用。接着,对本发明的实施方式3进行说明。本实施方式3相当于上述实施方式2的 变形例。与实施方式2相同的是,从请求源接受包含与2幂数尺寸不同的分配请求尺寸的 区段的取得请求,取得包含该分配请求尺寸的最小的2幂数尺寸(分配划分级别)的区段, 并利用伙伴系统的分配处理来释放其中的未使用区段,由此取得与分配请求尺寸对应的使 用区段,作为不同划分级别区段的连续区域。但是,关于分配划分级别区段的取得,在实施方式2中,如参照图5B以及图6所示 的处理流程例所说明的那样,利用与1个主区段对应的伙伴系统更新划分级别并搜索空盘 区,如果在该伙伴系统内没有找到空盘区,则更新主区段编号,利用与该主区段编号的主区 段对应的伙伴系统,搜索空盘区,反复以上处理直到找到空盘区为止,与此相对在实施方式 3中,针对同一划分级别,在不同的主区段间搜索空盘区,当在所有的主区段中没有找到空 盘区时反复以下的动作更新划分级别,并以该划分级别在不同的主区段间搜索空盘区。以下,关于本发明的实施方式3,参照图9以及图10来说明与本发明实施方式2不 同的部分。如先前所述,实施方式2与实施方式3的不同点是,针对不同的主区段取得分配 划分级别区段的过程。因此,在参照图4A 图8B对实施方式2进行说明的内容中,实施方
16式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。在步骤Sl(^8中,从划分级别减去值1,进到步骤Sl(^9将分配编号乘以2。该步骤 S1028和步骤Sl(^9的处理与实施方式2的情况同样相当于伙伴分割的处理。接着在步骤 S1030中将划分级别的分配编号指向的分配状态设定为空状态,在步骤S1031中,将与划分 级别的分配编号构成伙伴分割对的分配编号(伙伴)所指向的分配状态设定为空状态后, 返回到步骤S1022。即,将利用伙伴分割获得的2个盘区的分配状态设为空状态,进行空状 态盘区的搜索。然后,将在步骤Sl(^6中搜索到的空状态盘区的分配状态设为满状态,将伙 伴的分配状态设为空状态,反复以上处理直到划分级别成为分配划分级别为止,取得分配 划分级别的空盘区。根据以上说明的实施方式3,当在某主区段(例如尺寸较小的主区段)中没有期望 的划分级别的空盘区而在其它主区段(例如尺寸较大的主区段)中存在期望的划分级别的 空盘区时,不需要对划分级别大于尺寸较小的主区段的期望划分级别的空盘区进行伙伴分 割,就能够从其它主区段中取得期望的划分级别的空盘区。以上对用于实施本发明的优选方式进行了详细说明,但本领域技术人员可知本发 明的实施方式不仅限于此,还可以进行各种变形。另外,关于以上说明的本发明实施方式的 存储区域管理方法、存储区域分配方法以及存储区域释放方法还有其等同物,可以通过使 计算机执行的程序来实现。因此,本发明的实施方式还包含上述程序、以及存储上述程序的 计算机可读存储介质。另外,关于本发明实施方式的存储区域管理方法、存储区域分配方法以及存储区 域释放方法的各处理的执行手段,显然可以通过上述程序在计算机上实现。因此显然可以 通过上述程序和计算机,来实现存储区域管理装置、存储区域分配装置以及存储区域释放
直ο
权利要求
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幂数与上述分区的分配单 位尺寸之积构成的大小的存储区域的主区段,针对每个上述主区段来管理上述分区,其中,上述分配划分表按照识别上述主区段的每个主区段编号,存储该主区段的分配位置和 尺寸,能够针对每个上述主区段进行基于存储区域的伙伴系统的分配管理。
全文摘要
本发明提供如下的技术不管是在从2幂数尺寸的存储区域取得非2幂数尺寸的存储区域时,还是在从非2幂数尺寸的存储区域取得2幂数尺寸的存储区域时,都能够管理剩余的存储区域并且能够有效地利用存储区域。在存储装置的存储区域管理方法中,将取得的存储区域分割成不同的2幂数尺寸的存储区域,分别进行管理。另外,接受包含分配请求尺寸的存储区域分配请求,取得包含分配请求尺寸的2幂数的最小尺寸的空存储区域,求出分配请求尺寸的2进制数表示,针对所接受的分配请求,分配由在该2进制数表示中处于比特1的每个比特位置的2幂数大小的存储区域构成的连续存储区域。
文档编号G06F12/00GK102124452SQ20098013192
公开日2011年7月13日 申请日期2009年7月22日 优先权日2008年8月17日
发明者吉冈诚, 国分光裕, 新庄敏男 申请人:新叶股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1