[发明专利]文件空闲块的分配和回收方法有效
申请号: | 200910194886.7 | 申请日: | 2009-08-31 |
公开(公告)号: | CN101692252A | 公开(公告)日: | 2010-04-07 |
发明(设计)人: | 沈春锋;张超锋;丛力群;闻扬;董文生;李振光 | 申请(专利权)人: | 上海宝信软件股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海金盛协力知识产权代理有限公司 31242 | 代理人: | 罗大忱 |
地址: | 201203 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 文件 空闲 分配 回收 方法 | ||
技术领域
本发明属于数据存储和管理技术领域,特别涉及一种文件空闲块的分配和回收方法。
背景技术
在数据存储和管理领域,通常将数据以一定大小的块写入文件,然后对数据块建立数据 索引,如操作系统和数据库通常对数据块采用B+树或Hash函数建立数据索引。上述过程需要 一个文件空闲块管理系统,当要向文件写入数据的时候,空闲块管理系统分配一个空闲块给 用户,用户将数据写入获得的空闲块,然后将块的地址加入数据索引;当用户要释放某一数 据块时,将该数据块的地址从数据索引中摘除,摘除的数据块则交给空闲块管理系统进行回 收,作为空闲块使用,达到循环利用的目的。
在类似于实时数据库的实时海量数据管理领域,为了保证实时性,数据的存储必须具有 很高的速度,因此空闲块的分配和回收必须很快得到响应;同时为了能存储尽量多的数据, 还需要保证文件空间的高利用率;在保证实时性和高文件空间利用率的同时,还须保证系统 占用尽可能少的内存。
中国知识产权局网站上公开了名称为一种分配空闲簇以及释放簇的方法并且其申请号为 200710073581.1的发明专利申请,其采用在文件头部空出一块连续区域,区域中每个位(bit) 对应相应位置数据块的使用情况。如区域中的第n个bit如果为0表示文件第n块为空闲块, 可以被分配,如果第n个bit为1表示文件第n块为已使用的块,不能被分配。这种方法在 文件中的块经过多次释放和分配操作后,将会出现0和1混合在一起的情况,这时从文件连 续区域中要找到一个空闲块会比较费时;同时随着文件不断被填入数据,空闲块出现在文件 头部连续区域中的位置越靠后,查询文件头部连续区域获取一个空闲块的时间将会越长;再 者此方法应用于大文件,由于文件头部连续区域占用的空间比较大,相应会对磁盘空间造成 很大的浪费。
发明内容
本发明的目的之一在于,提供一种文件空闲块的分配方法,当用户需要存储数据的时候, 在占用尽量少内存的情况下,快速给用户分配空闲块。
本发明的另一目的在于,提供一种文件空闲块的回收方法,当用户释放某一数据块或索 引块使用完时,对被释放的数据块或使用完的索引块进行回收,以实现文件空间的高利用率。
在描述本发明的方法细节之前,先给出本发明所采用部分技术术语的定义:
空闲块:占有一定大小且在逻辑上连续的文件存储空间,其内部没有有用的数据。为了 提高磁盘的访问性能,空闲块的大小一般为簇的整数倍。
索引块:也是占有一定大小且在逻辑上连续的文件存储空间,大小跟空闲块一致,其内 部存储有作为索引的空闲块的编号。索引块之间以双向链表连接,在索引块的头部分别存储 本索引块的前索引块序号、后索引块序号和本索引块管理(可分配)的空闲块的块数(以下 简称块数)。
数据块:占有一定大小且在逻辑上连续的文件存储空间,大小与空闲块一致,内部存有 数据。
保留块,用于保存文件全局信息,例如文件大小、索引块链表首地址等。
文件块:保留块、空闲块、索引块和数据块统称为文件块。
一种文件空闲块的分配方法,将文件按预设大小划分成N个文件块,并对文件块进行编 号,将N个文件块中K个作为索引块,索引块采用双向链表连接,索引块中存储有本索引块 的前索引块序号、后索引块序号和本索引块管理的空闲块的块数,根据索引块在双向链表中 的顺序依次分配索引块管理的空闲块,并相应修改索引块中存储的信息。
进一步地,所述N个文件块中设有一保留块,所述索引块中的第一个索引块中的前索引 块序号和最后一个索引块中的后索引块序号为保留块的序号。
进一步地,当所述索引块中无管理的空闲块时,该索引块作为空闲块被分配,并删除双 向链表中的该索引块,修改双向链表中的对应信息。
进一步地,所述N个文件块编号依次为0、1、2、…、N-1,所述保留块的块号为0,所 述索引块的块号依次为1到K,每一索引块最多可存储m个文件块的编号,从序号为1的索引 块开始,将从N-1开始到K+1的整数依次写入该K个索引块中。
进一步地,在系统启动时,从文件保留块中获取索引块链表的首位置,然后在链表中遍 历,如果索引块中的后索引块序号为0,将该索引块读入内存作为当前索引块,读取当前索引 块中的第三个参数:块数h,如果h大于0,进入步骤11);如果h等于0,则转步骤12):
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海宝信软件股份有限公司,未经上海宝信软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910194886.7/2.html,转载请声明来源钻瓜专利网。