文件系统存储管理方法、读取方法、管理装置和读取装置与流程

文档序号:18464495发布日期:2019-08-17 02:19阅读:147来源:国知局
文件系统存储管理方法、读取方法、管理装置和读取装置与流程

本发明涉及领域,尤其是一种文件系统存储管理方法、读取方法、管理装置和读取装置。



背景技术:

嵌入式系统中,由于系统组件的性能的限制,不易执行大型文件的读取,因此小型文件的大量读取是嵌入式文件的数据进出的主流;闪存是比较合适于嵌入式系统的存储器,系统的闪存需要完成擦拭后才能进行再次的数据写入,考虑到嵌入式系统在实际的数据存取是较为频繁的且偏向于小型文件,如果不能合理安排存储空间的使用会影响存储器的寿命,降低嵌入式系统的运行稳定性。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的是提供一种文件系统存储管理方法、读取方法、管理装置和读取装置。

本发明实施例所采用的技术方案是:

第一方面,本发明实施例提供一种文件系统存储管理方法,包括:设置第一存储区,设置包括若干存储块的第二存储区;所述第一存储区的存储元对应所述第二存储区的一个存储块,所述第一存储区的存储元所存储的二进制码分别对应可存储状态和非可存储状态;以第二存储区的存储块的数量作为第一存储区的存储元的存储分区划分标准,划分第一存储区为若干存储分区;当所述第二存储区的存储状态发生变化,则根据所述第二存储区的存储块的存储状态依次在所述存储分区写入对应的二进制码。

优选地,还包括步骤:查询最后被写入的所述存储分区的二进制码以获得可供写入的存储块的地址信息,根据所述地址信息执行文件的存储。

优选地,所述执行文件的存储具体包括:根据存储块的存储空间计算所需的块数,其中,存储块存储的存储空间包括块头和非块头,所述块头存储有文件的属性信息,所述非块头存储有所述文件的本体,所述属性信息包括用于表示文件存储顺序的顺序信息,用于表示文件大小的数量信息,用于表示文件名称的名称信息,用于记录同属一个文件的存储块的编号的id信息。

优选地,还包括步骤:标记根据存储状态写入二进制码的过程为记录存储状态,当可供写入的所述存储分区不足以执行新的记录存储状态,则擦拭所述第一存储区,重新执行记录存储状态。

第二方面,本发明实施例提供一种小文件数据读取方法,适用于从上述第一存储区、第二存储区读取数据,包括步骤:备份存储分区并解析对应的二进制码,从非可存储状态的存储块中判断其所存储的文件是否属于目标文件,是则读取存储块所存储的文件,不是则修改所述存储块在备份的存储分区中的对应二进制码并重新从非可存储状态的存储块中判断其所存储的文件是否属于目标文件。

优选地,存储块存储的存储空间包括块头和非块头,所述块头存储有文件的属性信息,所述非块头存储有所述文件的本体,所述属性信息包括用于表示文件存储顺序的顺序信息,用于表示文件大小的数量信息,用于表示文件名称的名称信息,用于记录同属一个文件的存储块的编号的id信息。

优选地,具体包括步骤:根据文件的属性信息判断是否属于目标文件,是则读取存储块所存储的文件,不是则根据id信息修改同属于一个文件的存储块在备份的存储分区中的对应二进制码并重新从非可存储状态的存储块中判断其所存储的文件是否属于目标文件。

第三方面,本发明实施例提供一种文件系统存储管理装置,包括:设置单元,用于设置第一存储区,设置包括若干存储块的第二存储区,所述第一存储区的存储元对应所述第二存储区的一个存储块,所述第一存储区的存储元所存储的二进制码分别对应可存储状态和非可存储状态;划分单元,用于以第二存储区的存储块的数量作为第一存储区的存储元的存储分区划分标准,划分第一存储区为若干存储分区;记录单元,用于当所述第二存储区的存储状态发生变化,则根据所述第二存储区的存储块的存储状态依次在所述存储分区写入对应的二进制码。

第四方面,本发明实施例提供一种小文件数据读取方法装置,用于执行步骤:备份存储分区并解析对应的二进制码,从非可存储状态的存储块中判断其所存储的文件是否属于目标文件,是则读取存储块所存储的文件,不是则修改所述存储块在备份的存储分区中的对应二进制码并重新从非可存储状态的存储块中判断其所存储的文件是否属于目标文件。

本发明的有益效果是:

本发明通过设置第二存储区作为实际的存储区,以第一存储区存储的二进制码作为第二存储区使用状态的记录代码,能够快速的确定存储块的存储状态,有利于后续的存储流程;通过以第二存储区存储块数量作为存储分区划分标准,能够实现第一存储区的分区,有利于轮换记录存储状态,降低第一存储区的擦拭负荷,提高系统的运行稳定性。

附图说明

图1是本发明实施例的一种文件系统存储管理方法示意图;

图2是本发明实施例的位图表查找流程示意图;

图3是本发明实施例的文件定位查找流程示意图;

图4是本发明实施例的一种文件系统存储管理系统示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

闪存是目前主流的储存器件,其硬件特性是,以页为基本单位,大小可以为256字节,读写都是以页为基本单元,如果某个页被写入数据,则该页就不能再被写,要擦除后才能再次写入数据;擦拭的最少单元为块,一般一个块大小为16个页,4k字节大小;后面统称此储存器件为flash。

实施例1

本实施例提供如图1所示一种文件系统存储管理方法,包括:

s1、设置第一存储区,设置包括若干存储块的第二存储区;

s2、第一存储区的存储元对应第二存储区的一个存储块,第一存储区的存储元所存储的二进制码分别对应可存储状态和非可存储状态;

s3、以第二存储区的存储块的数量作为第一存储区的存储元的存储分区划分标准,划分第一存储区为若干存储分区;

s4、当第二存储区的存储状态发生变化,则根据第二存储区的存储块的存储状态依次在存储分区写入对应的二进制码,标记根据存储状态写入二进制码的过程为记录存储状态。

本实施例设置一个概念“位图表”:闪存的存储块,有些被使用,有些没有使用,用一位二进制码来某个存储块的使用状态,以便区分存储块的存储状态,1表示未使用,0表示已使用,对应的二进制码的数据表称为位图表。

将整个flash分为两块区域:位图区域与数据区域,即第一存储区和第二存储区,因flash有擦写寿命的,所以在设计上尽量要考虑读写均衡,以便延长整体产品的寿命;flash的容量一般都不大,目前较大的也就是16mb,下面以16mb为设计举例,存储块数目=16mb/4kb=4k,所以整个存储块区域有4k个存储块;位图表大小=4k/8=512b=2页,使用一位二进制码可以表示一个存储块的存储状态,所以用2个页可以表示完所有存储块的状态;

位图区域:每次对文件系统进行写的操作,位图表都将发生变化,所以位图是被改写非常频繁的位置,会严重影响flash寿命,所以要对位图表加入一些写均衡来延长产品寿命,将64kb的存储空间分配给位图表,即第一存储区;用于读写均衡,64kb总共分有128个页,每次只使用两个页来表示整个第二存储区的存储状态,顺序进行写入,当128个页全部使用完后,再将位图区域擦除,即当可供写入的存储分区不足以执行新的记录存储状态,则擦拭第一存储区,重新执行记录存储状态;再从头开始使用,通过此方式达到避免某个位置过度被擦拭而影响其寿命。

其中,可存储状态即存储块可以进行数据的写入,此时,该存储块可能是空的,或者是擦拭完成的存储块,还可能是已经存有数据,但是可以被擦拭后使用的;非可存储状态则表示对应的存储块不能被写入数据,一般来说,属于该存储块已被写入数据且不允许在本次写入的操作中被擦拭。

以上述例子为例,以第二存储区的存储块的数量作为第一存储区的存储元的存储分区划分标准具体的过程是:根据第二存储区的存储块的数量来定义第一存储区的存储分区,即2个页,其目的是通过统一设置的存储空间的基准,降低实际的第一存储区和第二存储区之间的对应关系复杂度、对应寻址的难度和降低判断执行擦拭的判断流程的难度;

每个文件在完成写入后,其存储位置由若干个存储块组成;对于区别一个文件最主要的几个关键信息就是文件名、文件大小、文件数据;将存储块前面若干字节,例如32字节来记录一些关键信息,即文件的属性信息,例如,用于表示文件存储顺序的顺序信息,用于表示文件大小的数量信息,用于表示文件名称的名称信息,用于记录同属一个文件的存储块的编号的id信息。这些信息存储在块头,而文件所包含的数据的本体存储在非块头;顺序信息主要包括文件的第一个存储块和非第一存储块,第一个存储块作为某一个被写入的文件的第一个存储空间,而非第一存储块作为第一存储块的容量不足时的补充的存储空间,其定义的目的在于第一存储块需要存储更多的属性信息,例如,第一存储块会包括关于被写入文件的所部存储块的id,而非第二存储块可以只需要包括一部分id,如此可以提高存储空间的利用率。

实施例2

本实施例的目的在详细说明实施例1相关原理的具体执行流程。

加载位图表:

可知,当至少有一个存储块被使用时,则位图表的二进制码最少有一个位为0,则依次从位图表中查找2个页的数据,当发现连续两个2页的位图表的二进制码均为1,则说明该2个页为被使用的页,则这2个页前面的两个页为最后被写入的存储分区,则根据对应的二进制码以获得可供写入的存储块的地址信息,根据地址信息执行文件的存储;

如图2所示的对应的位图表查找流程可以包括:

s01:初始化查找页page=0;

s02:如果查找页page大于等于最大页码128,则表示位图区域的所有页都被用光了,则说明最后两个页是最新的位图表,跳转到s07,否则跳转到s03;

s03:从位图区域的偏移page页的位置读出2个页的数据;

s04:对两页的数据进行查空操作,比较读来的数据是否是全0xff,如果是则这个两个页没有被写过,是空页,则跳转到s06;否则跳转到s05;

s05:更新要读位图表的页偏移page=page+2,跳转到s02;

s06:找到第一个空页,则储存实际的位图表就是前面两个页,将页偏移page=page-2,并读出位图区域从page开始的2个页的数据;

s07:将读出来的最后两个页的数据填充到位图表中;完成擦拭并将最后两个页作为首页。

正常的查找和定位文件的流程是,找到已存有数据的存储块,然后根据属性信息确定是否属于目标文件,但是这样比较耗时,本实施例提供更为合理的如图3所示的文件定位查找流程:

s11:备份位图表,开始查找;

s12:是否已经查找完所有的(存储)块,即已查找的块大于最大块存储块号,如果查找完成跳转s13,否则s14;

s13:还原位图表,返回查找失败;

s14:查看位图表,被查找的块是否处于被使用状态,如果没有被使用跳转到s15,否则跳转到s16;

s15:修改块偏移地址++;并跳转s12;

s16:读出存储块的一个页数据,查看关键信息里面的数据帧标记,如果是文件首块,即第一存储块,跳转到s17,否则跳转到s15;

s17:比较关键信息里面的文件名是否是查找的文件名,如果是将跳转到s19,否则跳转到s18;

s18:从关键信息里面读出文件块id列表,将位图表中对应的位清除,标记为这块为未使用块,以便后面查找时不用再查找这个文件的后续数据快,以便提速,再跳转到s15;

s19:还原位图表,返回查找结果,结束查找。

上述步骤s18,即根据文件的属性信息判断是否属于目标文件,是则读取存储块所存储的文件,不是则根据id信息修改同属于一个文件的存储块在备份的存储分区中的对应二进制码并重新从非可存储状态的存储块中判断其所存储的文件是否属于目标文件,其目的是在备份的位图表中将不是目标文件的存储块全部视为空的存储块,则下一次查找时就会自动跳过这些块,能够提高查找的效率,而备份的位图表并不会影响原始位图表,例如,可以在内存中存储备份的位图表并执行查找。

写入文件的步骤具体包括:

首先计算需要多少的存储块,由于,实际的存储块还包括块头,所以需要的存储块的总容量要大于文件的真实数据量,简单的除法运算就可以完成计算需要多少的存储块,根据位图表可以知道哪些存储块是可以被写入数据的,则对应的地址关系也可以通过简单的地址偏移计算就可以得到,则在完成存储块的数量和地址的计算之后,可以把存储块的id和地址信息等如上的关键信息/属性信息和文件的本体一并写入存储块,相关的地址计算和数据写入过程为基础原理,本实施例不进行进一步的说明。

实施例3

本实施例提供如图4所示的一种文件系统存储管理装置,包括:

设置单元1,用于设置第一存储区,设置包括若干存储块的第二存储区,第一存储区的存储元对应第二存储区的一个存储块,第一存储区的存储元所存储的二进制码分别对应可存储状态和非可存储状态;

划分单元2,用于以第二存储区的存储块的数量作为第一存储区的存储元的存储分区划分标准,划分第一存储区为若干存储分区;

记录单元3,用于当第二存储区的存储状态发生变化,则根据第二存储区的存储块的存储状态依次在存储分区写入对应的二进制码,标记根据存储状态写入二进制码的过程为记录存储状态。

本发明实施例提供一种小文件数据读取方法装置,用于执行步骤:备份存储分区并解析对应的二进制码,从非可存储状态的存储块中判断其所存储的文件是否属于目标文件,是则读取存储块所存储的文件,不是则修改存储块在备份的存储分区中的对应二进制码并重新从非可存储状态的存储块中判断其所存储的文件是否属于目标文件。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1