一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

文件管理系统及其文件管理方法、装置与流程

2022-06-11 15:40:31 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,具体涉及一种文件管理系统及其文件管理方法和一种装置。


背景技术:

2.nand flash存储器是非易失存储器内部分为若干个存储单元块(block),每个存储单元块又包括若干个页(page),存储单元块是最小的擦除单位,页是写入数据的最小单位。
3.文件系统在整个系统中位于设备驱动程序和上层应用程序之间,负责管理文件的创立、撤消、读写、修改、复制和存取控制等,并管理存放文件的各种资源。它管理硬件上的数据存取方式和结构,以更好利用存储空间和提高存储效率。目前,fat文件系统是在微软dos/windows操作系统中广泛使用的一种文件系统。fat文件系统将磁盘空间以一定的扇区(sector)数目划分为簇(cluster),而一个簇则是由2n个扇区(sector)构成,通常一个扇区的大小为512个字节(byte)的大小是固定的。文件占有磁盘空间时,基本单位不是字节而是簇,即使某个文件只有一个字节,操作系统也会给它分配一个簇;对于大文件,则需要分配多个簇。为了实现文件的链式存储,文件系统必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继的下一个簇的簇号,对于文件的最后一簇,则要指明本簇无后继簇。这些都是由fat表(文件分配表)来保存的,fat表对应表项中记录着它所代表的簇的有关信息:诸如是空,是不是坏簇,是否是已经是某个文件的尾簇等。
4.由此可见,簇的划分影响整体性能,较大的簇可以减少簇的数量,减小fat表大小,提高系统性能;但是在存储文件较小的情况下,单个文件依旧会占据一个簇,无法充分利用每个簇的存储空间,使得磁盘空间的利用率不高。而较小的簇,虽然有利于提高存储空间利用率,但是簇的数量增大,文件较大的情况下,会占用多个簇,导致fat表变大,依旧会占据较多的有效数据存储空间。


技术实现要素:

5.鉴于此,本技术提供一种文件管理系统及其文件管理方法和一种装置,以解决现有的文件管理系统的数据存储空间利用率不高的问题。
6.本技术提供的一种文件管理系统,包括:存储空间,所述存储空间包括保留区、文件分配区和数据区,所述数据区包括至少一个簇,所述簇内包括至少两个以上的文件。
7.可选的,所述数据区包括根目录,所述根目录用于记录所述文件所在的首簇编号,所述文件分配区包括文件分配表,所述文件分配表用于记录所述文件对应的簇的使用情况以及每个文件对应的簇链信息。
8.可选的,所述文件簇内含索引文档,所述索引文档用于记录所述簇内的所有文件的索引信息。
9.可选的,所述索引信息至少包括文件名称、文件大小以及文件在簇内的偏移位置。
10.可选的,所述簇的大小等于存储芯片的最小读写单元的大小。
11.可选的,所述存储芯片为nand flash,每个簇的大小为存储页的大小。
12.可选的,所述存储芯片为nand flash,每个簇的大小为存储块的大小。
13.本技术还提供一种文件管理系统的文件管理方法,包括:将存储空间划分为:保留区、文件分配表、数据区;在所述数据区内以簇为单位进行数据管理;在簇空间允许的情况下,在单个簇内存储两个以上的文件。
14.可选的,还包括:在数据区内建立根目录,用于记录文件所在的首簇编号;在文件分配表内记录文件对应的簇的使用情况以及每个文件对应的簇链信息。
15.可选的,还包括:在存储有文件的簇内建立索引文档,在所述索引文档内记录该簇内的所有文件的索引信息。
16.可选的,所述文件管理包括进行文件存储,所述文件存储的方法进一步包括:通过所述文件分配表获取每个簇的使用情况,获取每个簇的剩余存储空间;寻找到剩余空间大于且最接近待存储文件的目标簇;复制所述目标簇内的文件,与待存储文件一起存储于新的空白簇内;更新所述根目录与文件分配表内的相关信息,至少包括:将已被复制的目标簇内数据标记为无效,和/或修改根目录内对应文件的首簇编号,和/或修改文件分配表内的对应簇的使用情况。
17.可选的,所述文件管理包括进行文件存储,所述文件存储的方法进一步包括:通过所述文件分配表获取每个簇的使用情况,并根据所述簇的使用情况确定目标簇;缓存所述待存储文件并在所述多个待存储文件的大小总和接近所述目标簇的大小时,将所述多个待存储文件写入所述目标簇;更新所述根目录、文件分配表内的相关信息。
18.可选的,所述文件管理包括进行文件读取,所述文件读取的方法进一步包括:根据根目录获取待读取文件所在的首簇号,再根据所述文件分配表,定位到所述待读取文件所在的簇;当所在簇内包括多个文件时,扫描所在簇内的索引文档,根据所述索引信息,获取待读取文件的具体存储位置,并进行读取。
19.可选的,所述文件管理包括进行文件读取,所述文件读取的方法进一步包括:根据根目录获取待读取文件所在的首簇号,再根据所述文件分配表,定位到所述待读取文件所在的簇;当所在簇内包括多个文件时,读取待读取文件所在簇内的所有文件;识别所述所有文件的文件名称,进而确定待读取文件。
20.可选的,所述文件管理包括进行文件删除,所述文件删除的方法进一步包括:根据所述根目录以及文件分配表,定位待删除文件所在的簇,以及该簇所在的待擦除区块;将待擦除区块内其他文件复制至内存中;将所述待擦除区块内的数据全部擦除后,将各个文件再写入至擦除后的区块内。
21.可选的,所述文件管理包括进行文件删除,所述文件删除的方法进一步包括:根据所述根目录以及文件分配表,定位待删除文件所在的簇,以及该簇所在的待擦除区块;将待擦除区块内其他文件复制至其他区块的空白簇内;将待删除文件所在簇内数据标记为无效。
22.本技术还提供一种装置,包括上述任一项所述的文件管理系统、微处理器和存储器;所述存储器内存储有能够被所述处理器执行的计算机程序;或者所述计算机程序被执行时,能够执行上述任一项所述的文件管理方法。
23.本技术上述文件管理系统及其文件管理方法,以存储芯片的最小读写单元划分簇,并以簇作为数据管理单元,且在簇空间允许的情况下,在单个簇内存储两个以上的文件,以尽可能的充分利用每个簇内的存储空间,提高存储芯片的空间利用率。且,每个簇的大小,与存储器的最小单元一致,单次可以对单个完整的簇进行读写,可以确保数据存储的完整性,避免单次对多个簇进行读写时,数据读写发生错误的问题。
附图说明
24.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
25.图1是本技术一实施例的文件系统的结构示意图;
26.图2是本技术一实施例的数据区内的簇划分示意图;
27.图3是本技术一实施例的数据区内根目录的记载内容的示意图;
28.图4是本技术一实施例的文件存储的流程示意图;
29.图5是本技术一实施例的文件读取的流程示意图;
30.图6是本技术一实施例的文件读取的流程示意图;
31.图7是本技术一实施例的文件删除的流程示意图。
具体实施方式
32.如背景技术中所述,现有技术的文件管理系统的存储空间的利用率有待进一步提高。特别是在需要存储大量小文件的情况下,会造成大量存储空间的浪费。
33.为此,提出一种新的文件管理系统,以提高存储空间的利用率。上述文件系统特别适用于需要存储大量小文件的存储器,例如在一些存储器中,数据被上传至云端,而仅在存储器本地保存具有指向云端地址的网络地址索引文件,通常地址索引文件的尺寸均很小,如采用现有的fat文件系统,会导致大量的存储空间浪费。而采用本技术的文件管理方法,则能够充分利用存储空间。
34.下面结合附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得有其他实施例,都属于本技术保护的范围。在不冲突的情况下,下述各个实施例及其技术特征可以相互组合。
35.本发明的一个实施例中,所述文件管理系统以及文件管理方法,包括:将存储芯片的存储空间划分为:保留区、文件分配表、数据区;在所述数据区内以簇为单位进行数据管理,每个簇的大小等于存储芯片的最小读写单元的大小;在簇空间允许的情况下,在单个簇内存储两个以上的文件。
36.请参考图1,为一个实施例中,所述文件管理系统下的存储空间的结构示意图。
37.所述文件管理系统下,存储空间被划分为包括三个连续的存储区域,分别是保留区101、文件分配表102以及数据区103。
38.所述保留区101内用于存放最重要的文件系统信息,如存储器的类型、容量、版本
信息、数据区的位置和大小、主引导程序、文件分配表102的起始位置等。
39.所述文件分配表102内通常包括两个子表,表1和表2,表2作为表1的备份。文件分配表102用于记录文件存储的簇的位置。
40.所述数据区103用于存储具体的文件数据。所述数据区103被划分为多个连续的相同大小的簇(cluster)。在所述数据区103内以簇为单位进行数据管理,所述数据区包括至少一个簇,所述簇内包括至少两个以上的文件,并且每个簇的大小等于存储芯片的最小读写单元的大小,例如,每个簇的大小可以等于存储芯片的存储页的大小,或者等于所述存储芯片的存储块的大小
41.以nand flash存储器为例,存储器最小的读写单元可以为存储页(page)或者存储块等,参见图2,该实施例中,存储器的最小读写单元为存储页,当所述每个簇的大小等于存储芯片的存储页的大小时,以页为单位将数据区103划分为多个簇,这样每次读写操作时,单次可以对单个完整的簇进行读写,可以确保数据存储的完整性,避免单次对多个簇进行读写时,数据读写发生错误的问题。每个存储页的大小可以为8k、16k或者32k字节(byte)等,由存储器的配置决定。而nand flash存储器的存储块(block)通常由多个页组成,例如32个、64个等。参见图2,以1block=64page,1page=8k字节的存储器为例,结合上述定义的8k字节大小的簇,则该存储器的每个存储块可以被划分为64个簇。
42.进一步的,在簇空间允许的情况下,在单个簇内存储两个以上的文件。由于簇空间比较大,在写入的多为小文件的情况下,可以将多个小文件一次写入单个簇内。例如,存储器1page=8k字节,每个簇内可以存储2个4k字节大小的文件,或者1个4k大小的文件和2个2k大小的文件,甚至更多个更小的文件,以尽量填充满整个簇的存储空间,以减少存储空间的浪费。在文件比较大的情况下,也可以是单个文件占据多个簇空间。
43.在数据区内写入文件,还包括在该数据区内建立根目录,所述根目录用于记录文件所在的首簇编号。在文件仅位于一个簇内时,所述首簇编号即为该文件所在簇的编号。每个簇的编号与该簇的存储位置一一对应。可以通过根目录,找到文件对应的文件所在的起始簇。通常,可以给根目录分配固定大小的存储空间,例如2个簇,通常占据数据区首位的两个簇,分别为簇0和簇1。在其他实施例中,也可以将根目录存储于其他簇内,以及为根目录分配1个或更多个簇,在此不作限定。
44.同时,还要进一步在文件分配表102内记录文件对应的簇的使用情况以及每个文件对应的簇链信息。记录每个簇是否已被完全使用,或者该簇内数据是否有效数据、在文件占据多个簇的情况下,文件分配表内起始簇对应的表项内容为下一个簇的编号,形成簇链信息,根据文件分配表,可以进一步定位到文件所在的所有簇的位置。
45.由于在簇内可能存在多个文件,还需要再簇内建立索引文档(请参考图2),在所述索引文档内记录该簇内的所有文件的索引信息。所述索引信息至少包括文件名称、文件大小以及文件在簇内的偏移位置等信息(请参考图3),以便准确定位簇内各文件的存储位置。可以在簇起始位置分配固定大小的存储空间用于存储索引文档。在其他实施例中,也可以将索引文档内各文件的索引信息存储于该文件的存储位置首位的固定存储空间内,也根据由本领域技术人员根据实际情况进行设定。通过索引文档,可以记录簇内各个文件的信息,便于进行文件的查找和读取。
46.当存储器最小的读写单元为存储块时,每个簇的大小可以等于存储块时,此时,当
该簇内存储有多个文件时,可以根据具体文件的大小将该多个文件存储至所存储块的多个存储页或者单个存储页中。例如,当存储块大小为24k字节,3个存储页,而待存储文件分别为1.5k的file1、6.5k的file2、5.5k的file3和10.5k的flie4时,可以将1.5k的file1和6.5k的file2存储至同一个存储页,而将5.5k的file3和10.5k的flie4存储至相邻的两个存储页,以上该簇的四个文件可以存储至同一个存储块中,这样在存储和删除该簇的数据文件时,可以达到整个存储块的数据存储和删除,更加符合目前flash闪存的存储特性,可以加快数据的存储、读取和删除的速度。类似的,本类状况下也可以先建立根目录用于记录所述文件所在的首簇编号,建立索引文档用于记录所述簇内的所有文件的索引信息以进行读取上述流程和方法,详细可参见上述说明,在此不再赘述。
47.以下针对各种不同的情况,具体阐述本发明的文件管理系统的文件管理方法。
48.请参考图4,为本发明一实施例的文件管理方法中的文件存储的流程示意图。
49.所述文件存储的方法包括:
50.步骤s101:通过所述文件分配表获取每个簇的使用情况,获取每个簇的剩余存储空间。
51.文件分配表内记录有各个簇的使用情况,是否已经存储满,以及簇内数据是否有效等。寻找其中数据有效且未存储满的簇,并扫描该簇内的索引文档,明确其中未存储的剩余空间大小。在一个实施例中,当待存储文件大小小于簇大小,可以优先寻找已使用但是未存满的簇;当待存储文件大于簇大小,则首先寻找空白簇,然后将存储文件超出簇大小整数倍的部分数据大小为目标数据,寻找未存满的簇。
52.步骤s102:寻找到剩余空间大于且最接近待存储文件的目标簇。
53.优先选择剩余空间最接近待存储文件(或者目标数据)的簇作为目标簇,以充分利用各簇内的剩余空间。例如此次写入的多个待存储文件的大小总和为1.5k,而找到若干个簇分别具有剩余空间为2k、1.6k、1.4k,则选择剩余空间为1.6k的簇作为目标簇。
54.或者,在进行文件存储时,可以暂时缓存待存储文件,直到多次存储操作中被缓存的多个待存储文件的大小总和,与目标簇的剩余空间大小等于或者接近。后续再将此次需要存储的多个待存储文件一次性进行存储。例如:当目前待存储文件a的大小为1.5k,而确定的目标簇大小为8k时,则可以先将待存储文件a缓存至缓存单元或者存储于其他模块,之后等待下一次待存储文件b,例如当存储文件b为6.5k时,则可以将待存储文件a和待存储文件b一起执行存储操作。而当待存储文件b的大小为2.5k时,则可以继续将其缓存至缓存单元,继续等到待存储文件c或者更多文件,直到多个待存储文件的大小总和接近或者等于目标簇大小时,再进行存储。
55.步骤s103:复制所述目标簇内的文件,与待存储文件一起存储于新的空白簇内。
56.以nand flash为例,由于无法对写有数据的存储区域直接进行数据写入,该实施例中,可以将目标簇内的文件复制进内存中,对文件进行修改(即加入新的文件或目标数据),然后再将文件从内存中写入进空白的簇内。
57.在待存储文件大于簇空间时,优先将文件依次存储满多个空白簇,将不满一个簇大小的剩余的目标数据,采用上述方法写入目标簇内。
58.当文件系统内存在文件较多的情况下,可能无法寻找到用于转移存储数据的空白簇,此时,可以先将该目标簇所在区块内的数据进行擦除,以获得空白簇,再将区块内数据,
连同新的文件再次写入该区块内。如何进行数据的擦除,会在后续实施例中具体描述,在此不再赘述。
59.步骤s104:更新所述根目录与文件分配表内的相关信息。
60.所述更新的内容至少包括:将已被复制的目标簇内数据标记为无效,和/或修改根目录内对应文件的首簇编号,和/或修改文件分配表内的对应簇的使用情况。
61.当目标簇内文件被复制后,连同待存储文件一起写入至其他簇内,则在文件分配表内将该数据标记为无效,后续在必要时可以通过擦除操作,将该簇内数据删除。同时,还需要更新更目录以及文件分配表内,文件所在的新的簇的簇号、簇的使用状态等信息,以及在簇内形成新的索引文档等。
62.请参考图5,为本发明一实施例的,所述文件管理方法中的文件读取的方法流程示意图。
63.文件读取的方法进一步包括:
64.步骤s201:根据根目录获取待读取文件所在的首簇号,再根据所述文件分配表,定位到所述待读取文件所在的簇。
65.由于文件大小不同,单个文件可能对应于一个或多个簇。当一个簇内包含多个文件时,首先通过根目录读取待读取文件所在的首簇号,再根据文件分配表定位到待读取文件所在的簇。
66.步骤s202:当所在簇内包括多个文件时,扫描所在簇内的索引文档,根据所述索引信息,获取待读取文件的具体存储位置,并进行读取。
67.当定位到待读取文件所在的簇时,通过扫描或读取该簇保存的文件的索引文档,参见图3,通过该索引文档,可以获取待读取文件的具体存储位置,进而可以将例如file1的文件进行读取。
68.作为一种可选的实施方式,该文件所在的簇内,也可不建立索引文档,此时文件读取的方法请参考图6,包括如下步骤:
69.步骤s301:根据根目录获取待读取文件所在的首簇号,再根据所述文件分配表,定位到所诉待读取文件所在的簇。
70.步骤s302:当所在簇内包括多个文件时,当所在簇内包括多个文件时,读取待读取文件所在簇内的所有文件。
71.步骤s302:识别所述所有文件的文件名称,进而确定待读取文件
72.在文件读取时,直接将该簇内的所有文件读取,再通过分析多个文件的文件名进行文件识别,进而读取该待读取文件。例如:当簇内存有file1:sh.anf、file2:who.bic、file3:wo.bie和flie4:w.bx时,可以先读取file1、file2、file3和file4,然后通过识别其文件名sh.anf、who.bic、wo.bie、w.bx,进而识别文件名为sh.anf的待读取文件file1,并将其进行读取。
73.请参考图7,为本发明一实施例的,所述文件管理方法中的文件删除(擦除)的方法流程示意图。
74.文件删除的方法进一步包括:
75.步骤s401:根据所述根目录以及文件分配表,定位待删除文件所在的簇,以及该簇所在的待擦除区块。
76.由于nand flash的擦除操作只能对整个区块进行,因此需要首先定位至需要进行擦除操作的区块。所述待删除文件,可能占用一个簇,或同时占用多个簇,将待删除文件所占用的一个或多个簇所在的一个或多个区块,作为待擦除区块。
77.步骤s402:将待擦除区块内的文件复制至内存中,在内存中对文件进行修改。
78.在内存中对文件进行的修改包括对待删除文件的删除操作。
79.步骤s403:擦除待擦除区块内的所有数据。
80.对整个擦除区块进行擦除操作,清空所有数据。由于区块内其他有效文件已被复制进内存,因此擦除操作不会造成有效数据的丢失。
81.步骤s404:将内存中修改后的文件再次写入至擦除后的区块内。
82.可以按照擦除前的文件存储位置,将文件重新写入至对应的簇内。这种情况下,只需对更目录、文件分配表以及索引文档内更新已删除文件的相关信息即可。
83.在另一些实施例中,可以根据各个文件的大小,对文件的存储位置进行重新调整,以尽量在单个簇内存储尽可能多的文件,提高簇内存储空间的利用率,避免由于文件的删除导致的存储空间的浪费。这种情况下,需要正对文件存储位置的改变,对更目录以及文件分配表、索引文档进行大量数据的更新。
84.在另一实施例中,还可以将待擦除区块内其他文件复制至其他区块的空白簇内,将待删除文件所在簇的标记为无效,在后续需要的时候再进行擦除即可。这样可以尽量减少存储区块的擦写次数,延长存储器的寿命。
85.完成上述操作的同时,还包括根据文件存储位置的移动,更新所述根目录、文件分配表内、索引文档的相关信息。
86.本发明的实施例还提供一种装置,所述装置包括上述实施例中的任意一种文件管理系统,此外还包括微处理器和存储器,所述存储器内存储有能够被所述处理器执行的计算机程序;所述计算机程序被执行时,能够执行如上述实施例中所述的文件管理方法。
87.以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,例如各实施例之间技术特征的相互结合,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献