CN104731872B - 基于位图的存储空间管理系统及其方法 - Google Patents
基于位图的存储空间管理系统及其方法 Download PDFInfo
- Publication number
- CN104731872B CN104731872B CN201510097786.8A CN201510097786A CN104731872B CN 104731872 B CN104731872 B CN 104731872B CN 201510097786 A CN201510097786 A CN 201510097786A CN 104731872 B CN104731872 B CN 104731872B
- Authority
- CN
- China
- Prior art keywords
- bitmap
- index
- state
- fritter
- bit
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1737—Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Abstract
本发明公开了基于位图的存储空间管理系统及其方法,实现了存储块可分割,在存储小的数据对象时按照小块来分配,存储大的数据对象时按照大块来分配。其技术方案为:通过索引位图和状态位图的两层结构来实现对存储空间的管理,其中索引位图分成主资源索引位图、大块索引位图、副资源索引位图和小块索引位图,状态位图分成资源状态位图和分配状态位图,通过资源状态位图和分配状态位图将存储空间描述成三种状态:未占用可分块、已占用可分块和已占用不可分块。然后,在这种存储空间结构下,实现对存储空间的大块分配、小块分配、大块释放和小块释放。
Description
技术领域
本发明涉及一种存储空间的管理系统,尤其涉及基于位图来实现的存储空间管理系统和方法。
背景技术
位图示法是一种根据位图结构中的数据位来表示存储卷或者分区中的簇的分配和使用情况,它结构简单、易于实现,大多数文件系统都采用了位图来进行存储空间的管理。
比如,Windows操作系统中的FAT文件系统采用了文件分配表,它是FAT文件系统中使用磁盘数据索引和定位引进的一种链式结构。在FAT文件系统中,存储器具有专门的文件分配表区(FAT区),它描述了文件系统中每个文件所占用的存储空间大小并将该存储空间结构化为一个文件的簇分配链表。文件的存储依照FAT表中的簇链式数据结构来进行。
比如,Linux系统中采用Ext2的非日志型文件系统,一个被格式化为Etx2文件系统的磁盘分区,被分成一个引导分区后接多个块组,一个块组又包含超级块、块组描述、数据块位图、i-node位图、i-node表、数据块。其中超级块用于存放文件系统信息,一个文件系统内的每个块组的超级块均包含相同内容。块组描述用于存放块组信息。数据块位图用于管理空闲数据块。i-node位图用于管理空闲i-node。i-node表用于存放i-node表,每个文件对应一个i-node表,i-node表用于管理文件的元数据(如uid、gid、ctime、dtime、指向数据块的指针等)。数据块用于存放实际用户数据。
而无论是Windows还是Linux系统,目前操作系统管理存储空间的位图比较简单,即一位表示一个固定的存储块大小。如果每块分配的空间太小,在存储和访问大的数据对象时效率就会下降。而如果每块分配的空间太大,在存储小的数据对象时又会浪费很多空间。
发明内容
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
本发明的目的在于解决上述问题,提供了一种基于位图的存储空间管理系统及其方法,实现了在存储小的数据对象时按照小块来分配,存储大的数据对象时按照大块来分配。
本发明的技术方案为:本发明揭示了一种基于位图的存储空间管理系统,包括:
索引位图配置模块,配置位于上层的索引位图,索引位图包括主资源索引位图、大块索引位图、副资源索引位图、以及小块索引位图;
状态位图配置模块,配置位于下层的状态位图,状态位图包括并列的资源状态位图和分配状态位图,其中资源状态位图的一个资源状态位和分配状态位图中的相应位置的一个分配状态位对应着存储空间中的同一个存储块,每多个资源状态位构成一个资源状态位图单元,每多个分配状态位构成一个分配状态位图单元,每一个资源状态位图单元和与之对应的一个分配状态位图单元组成一个状态位图单元,且资源状态位图中的每一位的二进制值指示对应的存储块是否被占用,分配状态位图中的每一位的二进制值指示对应的存储块是否可进一步分割;
其中索引位图中的每一索引位对应一个状态位图单元,通过索引位的二进制值表示是否有效,主资源索引位图用于索引包含空闲块且没有用于大块分配或小块分配的一个状态位图单元,副资源索引位图用于索引小块分配且资源状态位不全为占用状态的一个状态位图单元,大块索引位图用于索引大块分配的一个状态位图单元,小块索引位图用于索引小块分配的一个状态位图单元。
根据本发明的基于位图的存储空间管理系统的一实施例,索引位图配置模块配置多层级的索引位图。
根据本发明的基于位图的存储空间管理系统的一实施例,索引位图配置模块中的每个索引位图和状态位图配置模块中的每个状态位图分割成若干小块,并将每个位图相关联部分的小块集合到一起进行管理。
根据本发明的基于位图的存储空间管理系统的一实施例,状态位图配置模块中的资源状态位图和分配状态位图将存储空间中的存储块配置为未占用可分块状态、已占用可分块状态和已占用不可分块状态,当分配大块时状态位图配置模块同时修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态配置成已占用不可分块状态;当分配小块时,在首次操作中修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态配置成已占用可分块状态,直至存储块被全部分割成小块后,修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态配置成已占用不可分块状态。
本发明还揭示了一种在基于位图的存储空间管理系统中实施大块分配的方法,用于在上述的存储空间管理系统中进行存储块的大块分配,方法包括:
按照大块索引位图、主资源索引位图、副资源索引位图的优先顺序查找可用于大块分配的状态位图单元的有效索引位;
若在大块索引位图中找到有效索引位,则确保主资源索引位图中对应的索引位无效;若在主资源索引位图中找到有效索引位,则将大块索引位图中对应的索引位设置成有效,同时将主资源索引位图中的索引位设置为无效;若在副资源索引位图中找到有效索引位,则在用于小块分配的状态位图单元中查找剩余的用于大块分配的存储块;
在上一步骤找到有效索引位后,在对应的资源状态位图单元中查找可分配的存储块并返回可分配的存储块的逻辑地址,同时将已分配的存储块在资源状态位图和分配状态位图中对应的状态位设置为无效;
若当前的资源状态位图单元的所有状态位都为无效时,则将该资源状态位图单元在索引位图中对应的索引位设置为无效,同时检查该资源状态位图单元对应的分配状态位图单元中是否还包括有效的状态位,并设置小块索引位图对应的索引位的状态。
本发明还揭示了一种在基于位图的存储空间管理系统中实施小块分配的方法,用于在上述的存储空间管理系统中进行块资源的小块分配,方法包括:
按照小块索引位图、主资源索引位图和大块索引位图的优先顺序,查找可进行小块分配的状态位图单元的有效的索引位;
若在小块索引位图中找到有效的索引位则直接进入下一步骤;若在主资源索引位图中查找到有效的索引位,则同时将小块索引位图和副资源索引位图中对应的索引位设置为有效,并将主资源索引位图和大块索引位图中的相应的索引位设置为无效后再进入下一步骤;若在大块索引位图中找到有效的索引位则直接进入下一步骤;
当找到有效的索引位之后,在这一有效的索引位对应的分配状态位图单元中查找可用于小块分配的存储块,从可用于小块分配的存储块中划分出一块进行小块分配,并确保该小块分配的存储块对应的资源状态位图单元的状态位为无效;
若存储块已被全部划分分配,则将分配状态位图单元中对应的状态位设置为无效;
若分配状态位图单元中所有的状态位都为无效,则将分配状态位图单元在索引位图中对应的索引位设置为无效。
本发明还揭示了一种在基于位图的存储空间管理系统中实施大块释放的方法,用于在上述的存储空间管理系统中进行块资源的大块释放,方法包括:
将存储块在资源状态位图单元和分配状态位图单元中对应的状态位设置成有效;
若分配状态位图单元仅一位有效则更新主资源索引位图对应的索引位的状态;
若状态位图单元中的所有状态位都有效,则将主资源索引位图、大块索引位图、副资源索引位图、以及小块索引位图中对应的索引位恢复到初始化状态;
若状态位图单元还没有完全释放则检查小块索引位图中对应的索引位,以确认该状态位图单元是否在小块索引位图中,若在小块索引位图中则确保该状态位图单元在副资源索引位图中对应的索引位为有效。
本发明还揭示了一种在基于位图的存储空间管理系统中实施小块释放的方法,用于在上述的存储空间管理系统中进行块资源的小块释放,方法包括:
检查开始释放的小块是否为整个存储块中的第一个小块;
若是整个存储块中的第一个小块,则将分配状态位图单元中相应的状态位设置成有效,若分配状态位图单元仅有一个有效位,则将分配状态位图单元在小块索引位图中的相应的索引位设置成有效;
若一个存储块划分的小块全部被释放,则将资源状态位图单元中对应的状态位设置为有效,当资源状态位图单元和分配状态位图单元中的所有状态位全部为有效时,将主资源索引位图、大块索引位图、副资源索引位图、以及小块索引位图中对应的索引位恢复到初始化状态;
若一个存储块的小块没有全部被释放,则检查小块索引位图中对应的索引位以确认状态位图单元是否在小块索引位图中,若在小块索引位图中则确保状态位图单元在副资源索引位图中对应的索引位有效。
本发明对比现有技术有如下的有益效果:本发明是通过索引位图和状态位图的两层结构来实现对存储空间的管理,其中索引位图分成主资源索引位图、大块索引位图、副资源索引位图和小块索引位图,状态位图分成资源状态位图和分配状态位图,通过资源状态位图和分配状态位图将存储空间描述成三种状态:未占用可分块、已占用可分块和已占用不可分块。然后,在这种存储空间结构下,实现对存储空间的大块分配、小块分配、大块释放和小块释放。对比现有的用位图来管理存储空间的技术,本发明的存储块是可分割的,并且在存储小的数据对象时可以为其进行小块存储空间的分配,在存储大的数据对象时为其进行大块存储空间的分配。
附图说明
图1示出了本发明的基于位图的存储空间管理系统的较佳实施例的原理图。
图2示出了本发明的位图的结构的较佳实施例的示意图。
图3示出了本发明的在基于位图的存储空间管理系统中实施大块分配的方法的较佳实施例的流程图。
图4示出了本发明的在基于位图的存储空间管理系统中实施小块分配的方法的较佳实施例的流程图。
图5示出了本发明的在基于位图的存储空间管理系统中实施大块释放的方法的较佳实施例的流程图。
图6示出了本发明的在基于位图的存储空间管理系统中实施小块释放的方法的较佳实施例的流程图。
具体实施方式
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
图1示出了本发明的基于位图的存储空间管理系统的较佳实施例的原理。请参见图1,本发明的存储空间管理系统由索引位图配置模块1和状态位图配置模块2组成。位图结构的一个示例如图2所示。请结合图2,索引位图配置模块11配置位于上层的索引位图,索引位图包括如图2所示的主资源索引位图11、大块索引位图12、副资源索引位图13、以及小块索引位图14。
状态位图配置模块12配置位于下层的状态位图,状态位图包括并列的资源状态位图21和分配状态位图22,其中资源状态位图的一个资源状态位和分配状态位图中的相应位置的一个分配状态位对应着存储空间中的同一个存储块(例如存储块31至3N)。每多个资源状态位构成一个资源状态位图单元,在图2中是8位资源状态位构成一个资源状态位图单元。每多个分配状态位构成一个分配状态位图单元,在图2中是8位分配状态位构成一个分配状态位图单元。每一个资源状态位图单元和与之对应的一个分配状态位图单元组成一个状态位图单元。资源状态位图中的每一位的二进制值指示对应的存储块是否被占用,分配状态位图中的每一位的二进制值指示对应的存储块是否可进一步分割成更小的块来使用。
由于资源状态位图和分配状态位图相应的状态位对应着存储空间上的同一个存储块,因此对于同一个存储块而言这两份位图描述了该存储块的三种状态,即未占用可分块、已占用可分块和已占用不可分块。当分配大块时状态位图配置模块2同时修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态由未占用可分块状态修改为已占用不可分块状态;当分配小块时,在首次操作中修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态由未占用可分块修改为已占用可分块状态,直至这一个存储块被全部分割成小块后,修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态由已占用可分块修改为已占用不可分块状态。
索引位图中的每一索引位对应一个状态位图单元(每一索引位对应下层的一个资源状态位图单元和一个分配状态位图单元),通过索引位的二进制值表示是否有效。索引位图通过这种构造快速查找下一级位图中可用单元的位置,具体实现中可以根据需要扩展索引位图的层数以实现快速查找可用块的位置和支持更大规模的存储空间管理。四种类型的索引位图是这样区分的:主资源索引位图用于索引包含空闲块且没有用于大块分配或小块分配的一个状态位图单元,副资源索引位图用于索引小块分配且资源状态位不全为占用状态的一个状态位图单元,大块索引位图用于索引大块分配的一个状态位图单元,小块索引位图用于索引小块分配的一个状态位图单元。
以图2的示例来说明。图2中在索引位图中用1表示有效0表示无效,在资源状态位图中用1表示未占用0表示已占用,在分配状态位图中用1表示可分配0表示不可分配,实际应用中可根据自己理解定义1和0的含义。图2示意了一个简单的索引位图、状态位图和存储块的关系层次结构。最上层示意的是4个索引位图,从左至右依次是主资源索引位图11、大块索引位图12、副资源索引位图13和小块索引位图14。初始化时,主资源索引位图11和大块索引位图12的每一索引位都为有效状态,副资源索引位图13和小块索引位图14的每一索引位都为无效状态,即存储空间初始状态为全部可分配且没有任何被占用的块。中间层示意的是两份状态位图,分别为资源状态位图21和分配状态位图22,为了便于画图展示,该示意图中每个状态位图只画了两个由8位构成的位图单元,实际应用中可以根据实际需要确定每个单元的位数,可以是16位、32位或者64位等。图中4个索引位图与2个状态位图之间的连线展示了索引位图每个索引位与状态位图中每个状态位图单元的对应关系,也体现了两个状态位图中单元之间的并列关系。最底层表示的是存储块以及存储块与状态位图之间的对应关系,两个状态位图中并列单元的相应位对应着同一个存储块空间。
在上述的基于位图的存储空间管理系统中,系统为数据存储实施大块分配、小块分配、大块释放以及小块释放的操作,下面分别用图3至6进行说明。
图3示出了在基于位图的存储空间管理系统中实施大块分配的方法的实施例的步骤,详述如下。
步骤S101:在大块索引位图中查找有效位。继续执行步骤S102。
本实施例中的首要任务是找到可进行大块分配的状态位图单元,因此从步骤S101、S112和步骤S114中可看出,从三个索引位图中查找索引位,按照优先顺序依次是大块索引位图、主资源索引位图和副资源索引位图。
步骤S102:判断是否能在大块索引位图中查找到有效位。
若能找到有效位(也称为有效索引位),则执行步骤S103,若找不到有效位,则执行步骤S112。
步骤S103:设置主资源索引位图对应的索引位为无效。继续执行步骤S104。
这一步骤的用意是在大块索引位图中找到有效索引位时,应确保主资源索引位图中对应的位无效,以表示该索引位对应的状态位图单元优先为大块分配使用。
步骤S104:在索引位图的有效位对应的资源状态位图单元中查找有效位。继续执行步骤S105。
资源状态位图单元中的有效位代表了可分配的大块的存储块。
步骤S105:将有效位对应的存储块分配给应用。继续执行步骤S106。
这一步骤的实现是根据找到的有效位对应的存储块计算其逻辑地址并返回给应用。
步骤S106:将资源状态位图单元和分配状态位图单元中这一已分配的存储块对应的状态位设置为无效,以表明这一存储块已经完全占用。然后执行步骤S107。
步骤S107:判断资源状态位图单元中的所有状态位是否全部变为无效。若是则说明这个资源状态位图单元包含的所有存储块都已经全部占用完,接着执行步骤S108,若否则说明已经完成分配,本实施例的流程结束。
步骤S108:设置相关索引位图的对应索引位为无效。继续执行步骤S109。
因为资源状态位图单元包含的存储块资源已经全部占用完了,所以应当设置用于检索到这个单元的索引位图中对应索引位为无效状态。
步骤S109:检查资源状态位图单元相应的分配状态位图单元是否还包含有效状态位。
对分配状态位图单元的检查,是为了确认该单元是否还包含有小块分配的存储块设置小块索引位图对应位的相关状态。若分配状态位图单元中的所有状态位均为无效,则说明分配状态位图单元对应的存储块都不能继续被分割,继续执行步骤S110。若还包含有效的状态位,则说明分配状态位图单元仍然包含有小块分配的存储块,继续执行步骤S111,
步骤S110:由于分配状态位图单元对应的存储块都不能继续被分割,因此将分配状态位图单元对应的小块索引位图的对应的索引位设置为无效,至此完成分配,本实施例的流程结束。
步骤S111:由于分配状态位图单元仍然包含有小块分配的存储块,因此将分配状态位图单元对应的小块索引位图的对应的索引位设置为有效,至此完成分配,本实施例的流程结束。
步骤S112:在主资源索引位图中查找有效位。继续执行步骤S113。
步骤S113:判断是否能在主资源索引位图中找到有效位,若能找到则执行步骤S117,若不能找到则说明空闲的存储空间和用于大块分配的存储空间都已经耗尽,执行步骤S114。
步骤S114:在副资源索引位图中查找有效位。继续执行步骤S115。
执行到这一步骤,说明空闲的存储空间和用于大块分配的存储空间都已经耗尽,这时已处于资源紧张状态,只能在优先用于小块分配的状态位图单元中寻找剩余的状态位。
步骤S115:判断是否能在副资源索引位图中找到有效位,若能找到则执行步骤S104,若无法找到则执行步骤S116。
步骤S116:资源不足无法分配。
若执行到这一步骤,则说明存储空间耗尽,无法完成大块的分配操作。
图4示出了在基于位图的存储空间管理系统中实施大块分配的方法的实施例的步骤,详述如下。
步骤S201:在小块索引位图中查找有效位。然后执行步骤S202。
本实施例的首要任务是找到可进行小块分配的状态位图单元。因此从步骤S201、S210和S216中可以看出,本实施例从三个索引委托中查找索引位,按照优先顺序依次是小块索引位图、主资源索引位图和大块索引位图。
步骤S202:判断是否能在小块索引位图中找到有效位。若能找到有效位则继续执行步骤S203,若不能找到有效位则继续执行步骤S210。
步骤S203:在索引位对应的分配状态位图单元中查找有效位。继续执行步骤S204。
步骤S204:将资源状态位图单元中与步骤S203中的分配状态位图单元所找到的有效位相对应的状态位设置为无效,继续执行步骤S205。
这一步骤是为了实现在找到有效位的同时确保相应的资源状态位图单元的对应位是无效的。
步骤S205:在有效的状态位对应的存储块中划分出一小块。继续执行步骤S206。
在本步骤中,计算有效的状态位对应的存储块的逻辑地址并将其划分出一小块出来给应用。
步骤S206:判断存储块的空间是否划分完。若已经全部划分完则继续执行步骤S207,若还未全部划分完则说明已经完成分配,本实施例的流程结束。
步骤S207:设置分配状态位图单元中的对应位为无效。继续执行步骤S208。
步骤S208:判断分配状态位图单元中的所有状态位是否都为无效,若都为无效则继续执行步骤S209,若不是都为无效则说明已经完成分配,本实施例的流程结束。
步骤S209:设置能检索到该分配状态位图单元的索引位图中对应的索引位为无效,此时说明已经完成分配,本实施例的流程结束。
步骤S210:在主资源索引位图中查找有效的索引位。继续执行步骤S211。
步骤S211:判断是否找到有效的索引位,若找到则继续执行步骤S212,若无法找到则继续执行步骤S216。
步骤S212:设置主资源索引位图中的找到的有效位为无效。继续执行步骤S213。
步骤S213:设置副资源索引位图对应的索引位为有效。继续执行步骤S214。
步骤S214:设置小块索引位图对应的索引位为有效。继续执行步骤S215。
步骤S215:设置大块索引位图对应的索引位为无效,继续执行步骤S203。
上述的步骤S212至步骤S215,即,将小块索引位图和副资源索引位图中对应的设置为有效并将主资源索引位图和大块索引位图中相应位设置为无效,以表示索引位对应的状态位图单元优先为小块分配使用。
步骤S216:在大块索引位图中查找有效位,继续执行步骤S217。
步骤S217:判断是否能在大块索引位图中查找有效位,若能查找到则执行步骤S215,若不能找到则说明在三个索引位图中都找不到有效位,存储空间耗尽无法完成分配操作,本实施例的流程结束。
图5示出了在基于位图的存储空间管理系统中实施大块释放的方法的实施例的步骤,详述如下。
步骤S301:设置资源状态位图单元和分配状态位图单元中的对应位为有效。继续执行步骤S302。
步骤S302:判断分配状态位图单元是否仅有一个状态位有效。若是则执行步骤S303,若否则执行步骤S304。
步骤S303:设置主资源索引位图中的对应位为有效,本实施例的流程结束。
执行到这一步骤,说明当前是分配状态位图单元仅一位有效的状态,此时应该更新主资源索引位图中的对应位的状态,以保证能通过该索引位图重新找到这个分配状态位图单元。
步骤S304:判断资源状态位图单元和分配状态位图单元的所有状态位是否都有效。若都有效则执行步骤S305,若不是都有效则执行步骤S309。
步骤S305:设置主资源索引位图对应位为有效。继续执行步骤S306。
步骤S306:设置大块索引位图中的对应位为有效。继续执行步骤S307。
步骤S307:设置小块索引位图中的对应位为无效。继续执行步骤S308。
步骤S308:设置副资源索引位图中的对应位为无效,本实施例的流程结束。
上述步骤S305至308的实施的前提是两个状态位图单元中的所有状态位都为有效状态,这一情况说明状态位图单元的存储块都已经完全释放,应该将四份索引位图中的对应位回归到初始化状态。步骤S305至S308的执行并没有先后之分,在本实施例中的这种执行顺序仅仅是一种举例说明。
步骤S309:判断小块索引位图中的对应位是否有效,若有效则执行步骤S310,若无效则说明本实施例的流程结束。
状态位图单元中有部分状态位为无效,则说明还没有完全释放存储空间,需要检查小块索引位图中的对应位来确认状态位图单元是否在小块索引位图中。
步骤S310:设置副资源索引位图的对应位为有效,本实施例的流程结束。
若状态位图单元在小块索引位图中则说明状态位图单元正处于优先用于小块分配的状态,应确保状态位图单元在副资源索引位图中的对应位为有效,以便下次能通过副资源索引位图找到这个包含有空闲块的状态位图单元。
图6示出了在基于位图的存储空间管理系统中实施小块释放的方法的实施例的步骤,详述如下。
步骤S401:判断所要释放的小块是否为整个大块存储空间中的第一块。若是则执行步骤S402,若不是则执行步骤S405。
判断是否为存储空间中的第一块,即检查对应的大块存储空间是否还能继续划分,若不能继续划分则说明当前释放的是存储空间中的第一个空闲块。
步骤S402:设置分配状态位图单元对应位为有效,继续执行步骤S403。
步骤S403:判断分配状态位图单元是否仅有一位有效,若是则执行步骤S404,若不是则本实施例的流程结束。
步骤S404:设置小块索引位图的对应位为有效,然后本实施例的流程结束。
这一步骤的作用是为了下次能通过小块索引位图找到分配状态位图单元。
步骤S405:检查存储块中的小块是否全部释放,若是则执行步骤S406,若不是则代表本实施例的流程结束。
步骤S406:设置资源状态位图单元中的对应位为有效,继续执行步骤S407。
步骤S407:检查状态位图单元(资源状态位图单元和分配状态位图单元)中的所有状态位是否都有效,若都有效则说明状态位图单元中的存储块都已经完全释放,执行步骤S408,若并不是都有效则执行步骤S412。
步骤S408:设置主资源索引位图对应的索引位为有效,继续执行步骤S409。
步骤S409:设置大块索引位图中对应的索引位为有效,继续执行步骤S410。
步骤S410:设置小块索引位图中对应的索引位为无效,继续执行步骤S411。
步骤S411:设置副资源索引位图中对应的索引位为无效,然后本实施例的流程结束。
上述的步骤S408至S411说明状态位图单元中的存储块都已经完全释放,将四份索引位图(主资源索引位图、大块索引位图、小块索引位图、副资源索引位图)中对应的索引位回归到初始化状态。步骤S408至S411的执行并没有先后之分,在本实施例中的这种执行顺序仅仅是一种举例说明。
步骤S412:判断小块索引位图的对应位是否有效,若有效则执行步骤S413,若无效则本实施例的流程结束。
步骤S413:设置副资源索引位图的对应位为有效,然后本实施例的流程结束。
在本步骤中,在小块索引位图中应确保状态位图单元在副资源索引位图中的对应位有效,以便下次能通过副资源索引位图找到这个包含有空闲存储块的状态位图单元。
本发明中所述的存储可以是内存(RAM)、硬盘、闪存、ROM、光盘(CDROM&DVD),且不限于这些,凡是能用于记录信号的有无,电平的高低,磁性的正反,光的强弱以及量子状态等都属于这里说的存储的范畴。
在具体实施中,本领域的技术人员将进一步认识到,结合本文公开的实施例所述的各种示例性的逻辑方框、模块和步骤,在磁盘和闪存这类块存储介质上实现所述的功能时,可将本文实施例中的位图分割成若干小块,并将这些位图之间存在关联的部分集中到块存储介质中的一个单元块里进行管理。这样可以使得对多份位图的修改在存储介质的一个单元块里进行,因此减少了在这类存储介质中对位图进行修改时的IO次数,大大提高了性能。对于特定的应用,熟练的技术人员可对本文实施例中的位图采用不同的分块和组合方式来实现所述功能,但是不应将这种实现的决定解释为脱离了本发明的范围。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
Claims (8)
1.一种基于位图的存储空间管理系统,包括:
索引位图配置模块,配置位于上层的索引位图,索引位图包括主资源索引位图、大块索引位图、副资源索引位图、以及小块索引位图;
状态位图配置模块,配置位于下层的状态位图,状态位图包括并列的资源状态位图和分配状态位图,其中资源状态位图的一个资源状态位和分配状态位图中的相应位置的一个分配状态位对应着存储空间中的同一个存储块,每多个资源状态位构成一个资源状态位图单元,每多个分配状态位构成一个分配状态位图单元,每一个资源状态位图单元和与之对应的一个分配状态位图单元组成一个状态位图单元,且资源状态位图中的每一位的二进制值指示对应的存储块是否被占用,分配状态位图中的每一位的二进制值指示对应的存储块是否可进一步分割;
其中索引位图中的每一索引位对应一个状态位图单元,通过索引位的二进制值表示是否有效,主资源索引位图用于索引包含空闲块且没有用于大块分配或小块分配的一个状态位图单元,副资源索引位图用于索引小块分配且资源状态位不全为占用状态的一个状态位图单元,大块索引位图用于索引大块分配的一个状态位图单元,小块索引位图用于索引小块分配的一个状态位图单元。
2.根据权利要求1所述的基于位图的存储空间管理系统,其特征在于,索引位图配置模块配置多层级的索引位图。
3.根据权利要求1所述的基于位图的存储空间管理系统,其特征在于,索引位图配置模块中的每个索引位图和状态位图配置模块中的每个状态位图分割成若干小块,并将每个位图相关联部分的小块集合到一起进行管理。
4.根据权利要求1所述的基于位图的存储空间管理系统,其特征在于,状态位图配置模块中的资源状态位图和分配状态位图将存储空间中的存储块配置为未占用可分块状态、已占用可分块状态和已占用不可分块状态,当分配大块时状态位图配置模块同时修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态配置成已占用不可分块状态;当分配小块时,在首次操作中修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态配置成已占用可分块状态,直至存储块被全部分割成小块后,修改存储块在资源状态位图和分配状态位图中的对应的状态位,以使存储块的状态配置成已占用不可分块状态。
5.一种在基于位图的存储空间管理系统中实施大块分配的方法,用于在如权利要求1所述的存储空间管理系统中进行存储块的大块分配,方法包括:
按照大块索引位图、主资源索引位图、副资源索引位图的优先顺序查找可用于大块分配的状态位图单元的有效索引位;
若在大块索引位图中找到有效索引位,则确保主资源索引位图中对应的索引位无效;若在主资源索引位图中找到有效索引位,则将大块索引位图中对应的索引位设置成有效,同时将主资源索引位图中的索引位设置为无效;若在副资源索引位图中找到有效索引位,则在用于小块分配的状态位图单元中查找剩余的用于大块分配的存储块;
在上一步骤找到有效索引位后,在对应的资源状态位图单元中查找可分配的存储块并返回可分配的存储块的逻辑地址,同时将已分配的存储块在资源状态位图和分配状态位图中对应的状态位设置为无效;
若当前的资源状态位图单元的所有状态位都为无效时,则将该资源状态位图单元在索引位图中对应的索引位设置为无效,同时检查该资源状态位图单元对应的分配状态位图单元中是否还包括有效的状态位,并设置小块索引位图对应的索引位的状态。
6.一种在基于位图的存储空间管理系统中实施小块分配的方法,用于在如权利要求1所述的存储空间管理系统中进行块资源的小块分配,方法包括:
按照小块索引位图、主资源索引位图和大块索引位图的优先顺序,查找可进行小块分配的状态位图单元的有效的索引位;
若在小块索引位图中找到有效的索引位则直接进入下一步骤;若在主资源索引位图中查找到有效的索引位,则同时将小块索引位图和副资源索引位图中对应的索引位设置为有效,并将主资源索引位图和大块索引位图中的相应的索引位设置为无效后再进入下一步骤;若在大块索引位图中找到有效的索引位则直接进入下一步骤;
当找到有效的索引位之后,在这一有效的索引位对应的分配状态位图单元中查找可用于小块分配的存储块,从可用于小块分配的存储块中划分出一块进行小块分配,并确保该小块分配的存储块对应的资源状态位图单元的状态位为无效;
若存储块已被全部划分分配,则将分配状态位图单元中对应的状态位设置为无效;
若分配状态位图单元中所有的状态位都为无效,则将分配状态位图单元在索引位图中对应的索引位设置为无效。
7.一种在基于位图的存储空间管理系统中实施大块释放的方法,用于在如权利要求1所述的存储空间管理系统中进行块资源的大块释放,方法包括:
将存储块在资源状态位图单元和分配状态位图单元中对应的状态位设置成有效;
若分配状态位图单元仅一位有效则更新主资源索引位图对应的索引位的状态;
若状态位图单元中的所有状态位都有效,则将主资源索引位图、大块索引位图、副资源索引位图、以及小块索引位图中对应的索引位恢复到初始化状态;
若状态位图单元还没有完全释放则检查小块索引位图中对应的索引位,以确认该状态位图单元是否在小块索引位图中,若在小块索引位图中则确保该状态位图单元在副资源索引位图中对应的索引位为有效。
8.一种在基于位图的存储空间管理系统中实施小块释放的方法,用于在如权利要求1所述的存储空间管理系统中进行块资源的小块释放,方法包括:
检查开始释放的小块是否为整个存储块中的第一个小块;
若是整个存储块中的第一个小块,则将分配状态位图单元中相应的状态位设置成有效,若分配状态位图单元仅有一个有效位,则将分配状态位图单元在小块索引位图中的相应的索引位设置成有效;
若一个存储块划分的小块全部被释放,则将资源状态位图单元中对应的状态位设置为有效,当资源状态位图单元和分配状态位图单元中的所有状态位全部为有效时,将主资源索引位图、大块索引位图、副资源索引位图、以及小块索引位图中对应的索引位恢复到初始化状态;
若一个存储块的小块没有全部被释放,则检查小块索引位图中对应的索引位以确认状态位图单元是否在小块索引位图中,若在小块索引位图中则确保状态位图单元在副资源索引位图中对应的索引位有效。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510097786.8A CN104731872B (zh) | 2015-03-05 | 2015-03-05 | 基于位图的存储空间管理系统及其方法 |
PCT/CN2016/074793 WO2016138839A1 (zh) | 2015-03-05 | 2016-02-29 | 基于位图的存储空间管理系统及其方法 |
US15/553,722 US10831732B2 (en) | 2015-03-05 | 2016-02-29 | Bitmap-based storage space management system and methods thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510097786.8A CN104731872B (zh) | 2015-03-05 | 2015-03-05 | 基于位图的存储空间管理系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731872A CN104731872A (zh) | 2015-06-24 |
CN104731872B true CN104731872B (zh) | 2018-04-03 |
Family
ID=53455759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510097786.8A Active CN104731872B (zh) | 2015-03-05 | 2015-03-05 | 基于位图的存储空间管理系统及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10831732B2 (zh) |
CN (1) | CN104731872B (zh) |
WO (1) | WO2016138839A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731872B (zh) * | 2015-03-05 | 2018-04-03 | 长沙新弘软件有限公司 | 基于位图的存储空间管理系统及其方法 |
CN107704527B (zh) * | 2017-09-18 | 2020-05-08 | 华为技术有限公司 | 数据存储方法、装置及存储介质 |
CN109471864A (zh) * | 2018-11-19 | 2019-03-15 | 中山大学 | 一种面向并行文件系统双层索引方法和系统 |
CN111563053B (zh) * | 2020-07-10 | 2020-12-11 | 阿里云计算有限公司 | 处理Bitmap数据的方法以及装置 |
CN111984652B (zh) | 2020-08-28 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种位图数据中空闲块的查找方法及相关组件 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122883A (zh) * | 2006-08-09 | 2008-02-13 | 中兴通讯股份有限公司 | 一种避免内存碎片化的内存分配方法 |
CN102207907A (zh) * | 2010-03-30 | 2011-10-05 | 联想(北京)有限公司 | 数据操作的方法、装置及计算机 |
CN103377130A (zh) * | 2012-04-13 | 2013-10-30 | 日立(中国)研究开发有限公司 | 数据存储设备以及相应的数据存储方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784699A (en) * | 1996-05-24 | 1998-07-21 | Oracle Corporation | Dynamic memory allocation in a computer using a bit map index |
US6175900B1 (en) * | 1998-02-09 | 2001-01-16 | Microsoft Corporation | Hierarchical bitmap-based memory manager |
US8972696B2 (en) * | 2011-03-07 | 2015-03-03 | Microsoft Technology Licensing, Llc | Pagefile reservations |
CN102253897B (zh) * | 2011-07-26 | 2013-09-11 | 大唐移动通信设备有限公司 | 一种内存池管理方法及装置 |
CN103678160B (zh) * | 2012-08-30 | 2017-12-05 | 腾讯科技(深圳)有限公司 | 一种存储数据的方法和装置 |
CN103714013B (zh) * | 2013-12-31 | 2017-08-25 | 华为技术有限公司 | 一种文件系统的存储空间的配置方法及装置 |
CN104731872B (zh) * | 2015-03-05 | 2018-04-03 | 长沙新弘软件有限公司 | 基于位图的存储空间管理系统及其方法 |
-
2015
- 2015-03-05 CN CN201510097786.8A patent/CN104731872B/zh active Active
-
2016
- 2016-02-29 US US15/553,722 patent/US10831732B2/en active Active
- 2016-02-29 WO PCT/CN2016/074793 patent/WO2016138839A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122883A (zh) * | 2006-08-09 | 2008-02-13 | 中兴通讯股份有限公司 | 一种避免内存碎片化的内存分配方法 |
CN102207907A (zh) * | 2010-03-30 | 2011-10-05 | 联想(北京)有限公司 | 数据操作的方法、装置及计算机 |
CN103377130A (zh) * | 2012-04-13 | 2013-10-30 | 日立(中国)研究开发有限公司 | 数据存储设备以及相应的数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104731872A (zh) | 2015-06-24 |
US20180239791A1 (en) | 2018-08-23 |
WO2016138839A1 (zh) | 2016-09-09 |
US10831732B2 (en) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104731872B (zh) | 基于位图的存储空间管理系统及其方法 | |
CN104021161B (zh) | 一种聚簇存储方法及装置 | |
EP2917854B1 (en) | Method for automated scaling of massive parallel processing (mpp) database | |
Blelloch et al. | Sorting with asymmetric read and write costs | |
CA2124753C (en) | Modified buddy system for managing disk space | |
EP1393206B1 (en) | Data structure for information systems | |
US7558802B2 (en) | Information retrieving system | |
EP0124097B1 (en) | Method for storing and retrieving data in a data base | |
US7617265B2 (en) | Indexing method of database management system | |
US20160239550A1 (en) | Frequent Pattern Mining | |
Bender et al. | Exponential structures for efficient cache-oblivious algorithms | |
CN101763415B (zh) | 一种数据库的b树索引的生成方法及装置 | |
US7225186B2 (en) | Binary search tree system and method | |
CN102163232A (zh) | 一种支持iec61850对象查询的sql接口实现方法 | |
US6745198B1 (en) | Parallel spatial join index | |
CN106445835A (zh) | 内存分配方法与装置 | |
CN107209768A (zh) | 用于数据集的可扩展排序的方法和设备 | |
CN104573112B (zh) | Oltp集群数据库中页面查询方法及数据处理节点 | |
CN106484815A (zh) | 一种基于海量数据类sql检索场景的自动识别优化方法 | |
Blake et al. | Big buckets are (are not) better! | |
CN106980673A (zh) | 内存数据库表索引更新方法及系统 | |
CN107273443A (zh) | 一种基于大数据模型元数据的混合索引方法 | |
CN112506813A (zh) | 一种内存管理方法和系统 | |
CN115543993A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110209489B (zh) | 一种适用于内存页结构的内存管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 410000 room 2, 1606 Science Park, 588 West Road, Changsha hi tech Development Zone, Hunan, Yuelu Applicant after: Changsha Xin Hong softcom limited Address before: Building No. 662 software incubator center in Hunan province 410013 Changsha City Lugu high tech Zone Road No. 567 Applicant before: Changsha Xin Hong softcom limited |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |