论文部分内容阅读
随着嵌入式系统在消费电子、信息多媒体、汽车电子、网络通信、工业控制等各个领域的广泛应用,对嵌入式系统中的数据存储器在容量和掉电保护方面提出了更高要求,因Flash存储器在性能上具有容量大、掉电不丢失数据等优点而成为嵌入式系统中使用最广泛的数据存储器。为实现对Flash存储器中大量数据存储和读写擦除操作的管理,在Flash存储器上建立文件系统具有非常重要的现实意义。 目前使用在NAND Flash存储器上的文件系统主要有两种类型:一种是常用于硬磁盘存储器的集中索引文件系统;另一种是日志闪存文件系统如YAFFS(Yet Another Flash File System)。YAFFS因具有更高存取访问速度和有更强的易移植性等诸多优点,使YAFFS成为管理NAND Flash存储器最可行的文件系统。 本文针对YAFFS文件系统的实现原理和管理机制,进行了深入研究和相关算法的改进,具体所做工作和取得成果如下: 1)为掌握YAFFS文件系统实现原理,在阅读YAFFS文件系统核心算法基础上,对YAFFS文件系统使用的最主要数据结构进行了研究;并对YAFFS在系统内存的组织方式和YAFFS块的坏块管理机制进行了研究。 2)为实现YAFFS文件系统通过访问Linux内核提供的MTD(Memory Technology Device)的驱动程序,去完成对NAND Flash的读写等操作,在阅读分析与NAND驱动有关的源代码基础上,对Linux内核操作系统中的MTD和基于MTD系统上实现NAND Flash设备驱动机制进行了深入研究。 3)针对YAFFS垃圾收集机制(Garbage Collection)因使用贪婪算法而出现的Flash磨损不均衡问题,依据KimLim算法将Flash中的block区域分为“cold”和“hot”区域方法,实现对Flash存储器中的块擦除进行计数,并将擦除计数值应用到改进的损耗均衡算法中,很好解决原垃圾收集算法出现的损耗不均衡问题。 4)针对YAFFS文件系统进行垃圾回收时,因脏块中有效页数目多于文件系统中的可使用块而出现的“死锁”而造成文件系统写数据慢的问题,设计出根据nEraseBlocks(YAFFS可使用的空块)的阀值把nReserveBlocks(专为垃圾收集而预保留的块)设置为动态可变(tuneable)的改进算法,改进的算法在保障文件系统稳定性基础上,在写数据方面有了很大提高,并很好的缓解出现的“死锁”问题。 5)为验证改进算法的有效性,搭建了测试平台。在SBC-2410目标开发板上完成了YAFFS文件系统在Linux内核操作系统上的移植工作。 6)在搭建好的测试平台上,对改进的YAFFS垃圾回收算法和擦写性能进行了相关测试,并根据其测试结果对改进算法的有效性做出了客观评价。