一种轻量级嵌入式文件系统的实现方法与流程

文档序号:14403271阅读:278来源:国知局
一种轻量级嵌入式文件系统的实现方法与流程

本发明涉及计算机数据存储技术,尤其是一种轻量级的嵌入式文件系统。



背景技术:

在计算机系统中,文件系统是在存储设备上组织数据的一种方法,该种方法采用文件的方式将存储设备上的客户数据抽象成一些互相关联的“对象”,然后以一定的数据结构将这些“对象”组织起来,并提供一定的方法对这些“对象”进行访问,从而实现对客户数据存储访问的管理。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行检索的系统。

文件系统一般采用目录和文件的方式管理存储数据。目录结构通常采用“树状结构”,即目录由顶层开始,每一级目录下可以放置多个子目录,由此形成分层级的“树状”目录结构,而文件则被放置在分层级树状结构的某一处分支上。文件系统使用专门的数据结构记录,维护该树状结构。

主流文件系统一般将文件划分为多个长度较小的“分片”,称为“簇”。文件系统通过对多个簇的管理实现对文件内容的访问控制。一个文件包含多个簇,隶属于同一文件的簇一般通过链表数据结构来维护。记录目录树状结构的数据和记录文件链表关系的数据统称“元数据”。元数据同样存储在存储设备上,一般是存储在存储设备的特殊区域中。

系统通过文件所在目录位置(即路径名)以及文件名来索引文件,然后通过文件内部偏移量来访问文件内容,其步骤大致如下:

1)系统解析文件路径名,在树状结构中查找路径所在位置,然后利用文件名进行查找,从树状结构的节点中取得该文件第一个簇的索引号;

2)系统通过文件内部偏移量计算出要访问的文件内容隶属于该文件的第几个簇;

3)系统从该文件的第一个簇开始访问,由于每个文件簇都包含文件下一个簇的索引号,由此系统可以找到当前该文件内部偏移量对应的簇;

4)系统读取或写入找到的簇,完成对文件内容的访问。

以上是主流文件系统的实现方式,该种方式在系统资源较为充足的平台上已被证明是高效稳定的,但在系统资源严重受限的一些嵌入式平台上,该种实现方式并不适合,原因如下:

1)主流文件系统的元数据需在上电时读取到系统ram中缓冲起来,而某些小型嵌入式平台的ram空间很小,无法容纳元数据;

2)主流文件系统为了支持复杂的目录结构,一般会采用较为复杂的数据结构来维护“元数据”。而对小型嵌入式系统来说,并不需要支持复杂的目录结构,而且小型系统的处理器运算能力有限,采用复杂的数据结构反而降低了效率。



技术实现要素:

基于现有技术的上述缺陷,本发明提供一种逻辑简单、占用运行内存小、数据访问效率高、对代码存储器要求低的轻量级嵌入式文件系统实现方法。

本发明能够以多种方式实现,包括方法、系统、设备、装置或计算机可读介质,在下面论述本发明的几个实施例。

一种轻量级嵌入式文件系统的实现方法,包括将设备存储空间划分为不同类型簇,簇包括目录项簇和文件内容簇,目录项簇用于存储文件和/或目录的索引信息,文件内容簇用于存储文件数据,系统上电时,扫描并缓存每个簇的簇标识,通过读取簇标识判断簇类型,判断簇内容是否合法,完成上电流程。

进一步地,所述目录项簇存储的元数据内容包括父目录名、本目录名或文件名、本目录或文件所在层级。

进一步地,所述文件内容簇存储有文件索引值、文件内容簇序号和文件数据。

进一步地,当目录项簇对应的是一个文件时,目录项簇还存储有文件索引值和文件属性区,用于完成对文件的索引。

进一步地,所述目录项簇还存储有冗余数据和整个簇的校验值。

进一步地,通过读取簇标识判断簇为目录项簇时,根据目录项簇内部存储的校验值是否正确判断簇内容是否合法。

进一步地,通过读取簇标识判断簇为文件内容簇时,通过检查该文件是否有对应的合法目录项簇来判断簇内容是否合法。

进一步地,通过所述文件系统访问文件内容的方法为:

(1)输入文件路径名和文件内部偏移量,生成各层级目录名及文件所在目录层级和文件内容簇序号;

(2)搜索匹配各层级目录名,找到文件对应的目录项簇;

(3)从文件对应的目录项簇中读取文件索引值;

(4)利用文件索引值和文件内容簇序号作为输入,搜索对应的文件内容簇,完成对文件内容的访问。

本发明具有的积极有益技术效果如下:本文件系统采用元数据分散存储方式,降低了对系统ram容量的需求,利用分散存储文件索引值的方式代替传统链表式文件维护方式,逻辑复杂度低,文件访问效率高,文件系统实现代码对系统程序存储器容量需求小,实现了在小型嵌入式系统上实现小容量存储功能。

本发明的其他方面和优点根据下面结合附图的详细的描述而变得明显,所述附图通过示例说明本发明的原理。

附图说明

本发明将通过例子并参照附图的方式说明,其中:

图1为本发明实施例提供的目录项簇结构框图;

图2为本发明实施例提供的文件内容簇结构框图。

具体实施方式

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。

一种轻量级嵌入式文件系统的实现方法,包括将设备存储空间划分为不同类型簇,簇包括目录项簇和文件内容簇,目录项簇用于存储文件和/或目录的索引信息,文件内容簇用于存储文件数据,系统上电时,扫描并缓存每个簇的簇标识,通过读取簇标识判断簇类型,并判断簇内容是否合法,完成上电流程。

目录项簇存储的元数据内容包括父目录名、本目录名或文件名、本目录或文件所在层级,当目录项簇对应的是一个文件时,目录项簇还存储有文件索引值和文件属性区,用于完成对文件的索引。优化地,目录项簇还存储有冗余数据和整个簇的校验值,用于保证簇的正确性。

文件内容簇存储有文件索引值、文件内容簇序号和文件数据,文件索引值用于索引文件,文件内容簇序号用于确定本文件内容簇在所有隶属于本文件的簇中的排列序号,通过在每个文件内容簇中存储文件内容簇序号可以有效降低数据结构复杂度。

存储设备的簇除目录项簇和文件内容簇外,还包括失效的目录项簇、失效的文件内容簇和空闲簇。优化地,存储设备每个簇的开头存储有簇标志,用于判断每个簇的簇类型。

该文件系统采用特殊元数据缓冲机制,与主流文件系统在上电时将大量元数据缓冲到系统ram(random-accessmemory随机存取存储器)中的策略不同,本文件系统在上电时仅缓冲小部分元数据。系统上电时,本文件系统扫描存储设备每个簇的簇开头,读取每个簇的簇标志并把簇标志缓存到系统ram中。相对传统文件系统通过备份一个元数据区来保证数据正确性的方法,本文件系统减少了元数据缓冲数量,降低了对ram容量的要求,适用于资源严重受限的小型嵌入式系统。

通过读取簇标识判断簇为目录项簇时,根据目录项簇内部存储的校验值是否正确判断簇内容是否合法;通过读取簇标识判断簇为文件内容簇时,通过检查该文件是否有对应的合法目录项簇来判断簇内容是否合法,当文件内容簇没有对应的合法目录项簇时,判断当文件内容簇非法,并将之置为失效状态。

优化地,通过所述文件系统访问文件内容的方法为:

(1)输入文件路径名和文件内部偏移量,生成各层级目录名及文件所在目录层级和文件内容簇序号;

(2)搜索匹配各层级目录名,找到文件对应的目录项簇;

(3)从文件对应的目录项簇中读取文件索引值;

(4)利用文件索引值和文件内容簇序号作为输入,搜索对应的文件内容簇,完成对文件内容的访问。

本文件系统采用分散存储文件索引值的方式代替传统链表式文件维护方式,逻辑复杂度低,文件访问效率高逻辑简单,访问效率高,是一种轻量级的文件访问方式。

本发明的不同方面、实施例、实施方式或特征能够单独使用或任意组合使用。

本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。

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