论文部分内容阅读
传统的嵌入式系统主要应用于控制领域,对数据存储的要求并不高,因此在嵌入式系统中文件系统并没有受到足够的重视。但随着嵌入式技术在航空电子、汽车电子和消费电子等领域应用的不断拓展,嵌入式系统对数据存储和数据管理的要求越来越高,所以嵌入式文件系统应运而生。嵌入式系统有其自身的特点,要求嵌入式设备必须体积小、功耗低、防震等。显然像磁盘这样的传统存储介质并不具备这些特点,不适合在嵌入式系统中存储数据。Flash存储器具有成本低廉、存储容量大、体积小、功耗低等特性,与磁盘相比,更适宜在嵌入式系统中存储数据,已经成为嵌入式系统中最主要的数据存储介质。近年来,针对Flash存储器的嵌入式文件系统不断涌现,主要分为三类:基于块设备的嵌入式文件系统、通用的嵌入式Flash文件系统、专用的嵌入式Flash文件系统。第一类嵌入式文件系统实际上就是基于磁盘的块设备文件系统向Flash存储器的移植;第二类嵌入式文件系统摒弃了移植的思想,是专门针对Flash存储器设计的通用文件系统,既可以在NOR Flash上运行,又可以在NAND Flash上运行;最后一类文件系统是专门针对特定类型的Flash而设计的,实际上是针对NAND Flash设计的文件系统。这三类文件系统代表了嵌入式文件系统发展的三个阶段,虽然每个阶段都较前一个阶段有了巨大的进步,但是基于NAND Flash的嵌入式文件系统仍存在诸多不足:启动时间过长,消耗内存过多,实时性不高等,而专门针对NAND Flash的文件系统对磨损平衡的考虑也不充分。针对NAND Flash文件系统的不足,本文提出了改进的方法。在现有的NAND Flash文件系统中,一个Flash擦除块同时保存了文件的属性信息和数据信息,启动时要逐块扫描。本文改变了这种文件信息的管理方式,将文件的属性信息和数据信息分别存储于不同的擦除块,启动时只扫描属性块,进而减少文件系统的启动加载时间;现有的NAND Flash文件系统在运行的过程中将所有的文件系统控制信息均存储在内存中,导致内存的大量消耗,本文利用程序的局部性原理,只将最近访问的文件信息存储在内存中,降低文件系统对内存的消耗;现有的NAND Flash文件系统并没有考虑Flash各擦除块间的磨损平衡,本文通过将空闲块分类管理,将系统中的冷热数据交替存储于不同类型的擦除块上,实现各擦除块间的磨损平衡。根据以上方法,基于已有的YAFFS文件系统,本文实现了一个新的文件系统SFFS。测试结果表明,SFFS在启动时间、内存消耗和磨损平衡三方面的性能上都较YAFFS有不同程度的提高。