一种分配空闲簇以及释放簇的方法技术

技术编号:2829188 阅读:336 留言:0更新日期:2012-04-11 18:40
本发明专利技术适用于数据存储领域,提供了一种分配空闲簇以及释放簇的方法,所述分配空闲簇的方法包括:将空闲簇的位置信息以链表结构保存;当接收到分配请求时,读取所述链表结构的起始点空闲簇的位置信息;根据该位置信息分配相应的空闲簇;将链表起始点的位置信息修改为下一个空闲簇的位置信息。本发明专利技术通过将空闲簇的位置信息以链表的结构保存起来,当接收到分配请求时,直接根据链表的起始点空闲簇的位置信息将对应的空闲簇分配给数据,使得存储数据的时候不需要查找空闲簇,缩短了存储数据的时间。

【技术实现步骤摘要】

本专利技术属于数据存储领域,尤其涉及。
技术介绍
随着存储技术的发展和音视频技术的应用,人们对于磁盘容量的要求越来越大。磁盘中的搡作单位是蔟(Cluster, CL),在对石兹盘进行写入的过程中, 需要找到一个或多个未使用的空闲簇,然后才能将參数据写入。现有的技术方案通常在磁盘上每个扇区开始的部分划分出一块连续的区 间,区间中的每个比特对应于该扇区的空闲簇的情况,例如,该区间上第n个 比特为1,表示第n个簇为空闲簇;该区间的第n个比特为0表示第n个簇被 使用。当第一次查找该扇区上的空闲簇时,从该区间的第一个比特开始查找, 直到找到一个为1的比特,将数据写入对应的空闲簇并将该比特修改为0,以 后的每次查找,都从该区间上次查找到空闲簇的位置开始向后查找,直到查找 到下一个为1的比特,将数据写入对应的空闲簇,并把该位置对应的比特修改为0。上述技术方案对于在大容量的磁盘中查找空闲簇很困难,耗时长,尤其当 反复对磁盘进行操作后,扇区空间快满时,查找到一个空闲簇很困难,耗时很长。
技术实现思路
本专利技术实施例的目的在于提供一种分配空闲簇的方法,旨在解决现有技术 中查找空闲簇耗时长的问题。本专利技术实施例的另 一 目的在于提供一种释放蔟的方法,使得被释放的簇能够按照上述空闲簇的分配方法继续被分配出去。本专利技术实施例是这样实现的, 一种分配空闲簇的方法,所述方法包括将空闲簇的位置信息以链表结构保存;当接收到分配请求时,读取所述链表结构的起始点空闲簇的位置信息;才艮据该位置信息分配相应的空闲簇;将链表起始点的位置信息修改为下 一个空闲簇的位置信息。所述将空闲簇的位置信息以链表结构保存的步骤具体包括根据空闲簇的数量unit设置unit+l个记录单元;将所有空闲簇的位置信息以链表结构保存在所述记录单元中。所述当接收到分配请求时,读取所述链表结构的起始点空闲簇的位置信息 的步骤具体包括读取所述链表结构的起始点记录单元的值。所述根据位置信息分配相应的空闲簇并将链表起始点的位置信息修改为下 一个空闲簇的位置信息的步骤具体包括根据读取到的记录单元的值分配相应的空闲簇;根据链表结构将下一个空闲簇的位置信息保存到链表结构的起始点的记录 单元中。一种释放簇的方法,所述方法包括释放簇;将所释放簇的位置信息保存到记录单元中,所述记录单元以链表结构记录空闲簇的位置信息。所述将所释放簇的位置信息保存到记录单元中的步骤具体包括 将链表结构的起始点记录单元的值CLn保存到第n个记录单元中;将所释放蔟的位置信息保存到链表结构的起始点记录单元中。本专利技术实施例通过将空闲簇的位置信息以链表的结构保存起来,当接收到分配请求时,直接根据链表的起始点空闲簇的位置信息将对应的空闲簇分配给数据,使得存储数据的时候不需要查找空闲簇,缩短了存储数据的时间。同时, 本专利技术实施例提供的释放簇的方法使得被释放的簇能够按照上述空闲蔟的分配 方法继续^皮分配出去。附图说明图1是本专利技术实施例提供的值为链表结构的记录单元的一个示例图2是本专利技术实施例提供的分配空闲蔟的方法的实现流程图3是本专利技术实施例提供的释放簇的方法的实现流程图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术实施例通过将空闲簇的位置以链表的结构链接起来,使得存储数据的时候不需要查找空闲簇,直接根据链表的起始点空闲蔟的位置将对应的空闲簇分配给数据。假设磁盘扇区的大小为HddSize,磁盘上每一簇的大小为SectorSize,则整个磁盘扇区空闲簇的数量为Unit=HddSize/SectorSize。本专利技术在磁盘的扇区 上划分一块连续区间,通过Unit+1个记录单元来记录/F兹盘扇区上的空闲蔟的信息。记录空闲簇信息的记录单元在磁盘扇区中占用的簇数为TotalSector=(Unit+1)*nByte/SectorSize,其中nByte为每个记录单元需要的字节数。记录单元的一个示例如图1所示,其中,第Unit+1个记录单元中的内容为CL1,CL1表示第一个空闲簇,第一个记录单元中的内容为CL2,CL2表示第二个空闲簇,第二个记录单元中的内容为CL3,CL3表示第三个空闲簇,…… 第Unit-1个记录单元中的内容为Clunit, Clunit表示第unit个空闲簇,链表结 尾处的记录单元的值为非法值,可设置为0,表示没有可用的空闲簇。可以看出空闲簇的链表结构为CL1—CL2—CL3—......CLunit—0,第Unit + 1个记录单元为链表的起始点。图2示出了本专利技术实施例提供的分配空闲簇的方法实现流程,详述如下在步骤S201中,当接收到一个分配请求时,读取链表的起始点,即第Unit + 1个记录单元的值;在步骤S202中,根据第Unit + 1个记录单元的值判断磁盘扇区中是否有可 分配的空闲簇,是则执行步骤S203,否则执行步骤S205;第Unit+1个记录单元的值为0或CLn,其中ne[l, 2, 3, ......, unit],当第Unit+ 1个记录单元的值为0时,表示没有可以分配的空闲蔟。在步骤S203中,分配空闲蔟;将第n个空闲簇分配给待存数据,进入步骤S204。在步骤S204中,修改记录单元的值;将第n个记录单元的值保存到第Unit + 1个记录单元中。在步骤S205中,分配空闲蔟失败。当接收到下一个分配请求时,继续执行步骤S201。可以看出空闲簇的位置 信息始终以链表结构保存在记录单元中,从而使得存储数据的时候不需要查找 空闲簇,直接根据链表的起始点记录单元的值将对应的空闲簇分配给数据。对应的,本专利技术实施例还提供了一种释;改簇的方法,如图3所示,详述如下在步骤S301中,当接收到一个释放第m个簇的请求时,释放蔟;其中,m印,2, 3, ......, unit]。在步骤S302中,修改记录单元的值。读取链表的起始点,即第Unit+l个记录单元的值,将该值保存到第m个 记录单元中,并将第Unit + 1个记录单元的值修改为CLm。为了更好的说明本专利技术,下面结合一个具体示例对本专利技术进行说明,假设 磁盘扇区中有3个空闲簇,即Unit = 3,那么就需要111^+1=4个记录单元,初始化时,各记录单元中的值可以分别为CL2, CL3, 0, CL1;可分配的空闲簇组成的链表结构为CL1—CL2—CL3—0。当接收到一个分配请求时,读取第4个记录单元的值,为CL1则表示第1 个空闲簇是可以分配的空闲簇,将其分配后,读出第1个记录单元中的值并将 其写入第4个记录单元中,此时,各记录单元中的值分别为 CL2, CL3, 0, CL2;可分配的空闲簇实际的链表结构为CL2—CL3—0。当又接收到一个分配请求时,仍读取第4个记录单元的值,为CL2则表示 第2个空闲簇是可以分配的空闲簇,将其分配后,读出第2个记录单元中的值 并将其写入第4个记录单元中,此时,各记录单元中的值分别为CL2, CL3, 0, CL3;可分配的空闲簇实际的链表结构为CL3—0。当又接收到一个分配请求时,仍读取第4个记录单元的值,为CL3则表示 第3个空闲簇是可以分配的空闲簇,将其分配后,读出第3个记录单元本文档来自技高网...

【技术保护点】
一种分配空闲簇的方法,其特征在于,所述方法包括:将空闲簇的位置信息以链表结构保存;当接收到分配请求时,读取所述链表结构的起始点空闲簇的位置信息;根据该位置信息分配相应的空闲簇;将链表起始点的位置信息修改为下一个空闲簇的位置信息。

【技术特征摘要】
1、一种分配空闲簇的方法,其特征在于,所述方法包括将空闲簇的位置信息以链表结构保存;当接收到分配请求时,读取所述链表结构的起始点空闲簇的位置信息;根据该位置信息分配相应的空闲簇;将链表起始点的位置信息修改为下一个空闲簇的位置信息。2、 如权利要求1所述的分配空闲簇的方法,其特征在于,所述将空闲簇的 位置信息以链表结构保存的步骤具体包括根据空闲簇的数量unit设置unit+l个记录单元;将所有空闲簇的位置信息以链表结构保存在所述记录单元中。3、 如权利要求2所述的分配空闲簇的方法,其特征在于,所述当接收到分 配请求时,读取所述链表结构的起始点空闲簇的位置信息的步骤具体包括读取所述链表结构的起始点记录单元的值。4、 如权...

【专利技术属性】
技术研发人员:况敬波
申请(专利权)人:深圳市同洲电子股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1