首页> 中国专利> 嵌入式文件系统的缓存方法及嵌入式文件系统

嵌入式文件系统的缓存方法及嵌入式文件系统

摘要

本发明要解决的技术问题是提供一种可兼顾性能和可靠性需求的适用于嵌入式文件系统的缓存方法以及实现该方法的嵌入式文件系统。当读写以扇区为单位的整数据时,直接在存储设备上操作;读写元数据时主要通过操作缓冲区单元完成,尽量减少访问硬件存储设备的次数与访问硬件存储设备的耗费时间总和。在文件关闭时同步所有缓冲区单元的数据到存储设备的对应扇区,保证已关闭的文件的数据完整性。

著录项

  • 公开/公告号CN101807212A

    专利类型发明专利

  • 公开/公告日2010-08-18

    原文格式PDF

  • 申请/专利权人 迈普通信技术股份有限公司;

    申请/专利号CN201010160993.0

  • 发明设计人 陈小军;

    申请日2010-04-30

  • 分类号

  • 代理机构成都虹桥专利事务所;

  • 代理人邹裕蓉

  • 地址 610041 四川省成都市高新区九兴大道16号迈普大厦

  • 入库时间 2023-12-18 00:39:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-05-08

    授权

    授权

  • 2010-10-06

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20100430

    实质审查的生效

  • 2010-08-18

    公开

    公开

说明书

技术领域

本发明属于信息技术领域,尤其涉及一种应用于嵌入式文件系统的缓存技术。

背景技术

在文件系统中,通常需要使用一级缓存来访问存储设备。最初的存储设备主要是像磁盘这类转动存储设备,这类设备的特点是在访问数据时需要漫长的转动寻址过程。因为转动存储设备具有这种特点,如果每次访问都进行寻址将导致文件系统的性能低下。通用缓存技术在这种背景下应运而生,它有效的改善了访问转动存储设备的性能。

通用缓存技术使用一个内存池来缓存存储设备中的数据,通过减少在存储设备中的寻址次数来提高性能。文件系统以扇区为单位来管理存储设备。使用通用缓存技术后,在读取存储设备数据时除读取有效扇区的数据外,还会额外多读取几个连续扇区的数据,这种方式叫做预读取;在数据写入时,首先将数据写入到缓存数据的内存池,再周期性的将缓存中的数据同步到存储设备上,这种方式叫统一写入。通用缓存技术通过预读取和统一写入使存储设备的寻址次数大大减少,从而有效的改善了文件系统的性能。

通用缓存技术虽然有较多的优点,但并不适用于嵌入式文件系统,主要限制是通用缓存技术无法保证嵌入式文件系统的可靠性。通用缓存技术依赖于数据的预读取和周期性的统一写入,这就会导致待写入的数据会在缓存中驻留一段时间,从而不能实时的同步到存储设备。由于嵌入式设备常常需要面对意外掉电的挑战,这就有可能会导致驻留在缓存中那部分数据的丢失。如果丢失的数据恰好是文件系统的关键数据,如启动扇区数据、FAT(File AllocationTable,文件分配表)数据、目录数据等,这将对文件系统造成严重的破坏,甚至可能导致文件系统的崩溃。

随着技术的进步,现在嵌入式设备中普遍采用闪存(简称FLASH)或者标准闪存卡(CompactFlash,简称CF卡)作为存储设备。Flash具有可随机访问的特点,不再有寻址时间长的限制,也就减少了对缓存技术的依赖。目前,为了保证可靠性,有在嵌入式系统中去除缓存的做法。但这样处理后,又会因为元数据的读写操作频繁访问外部存储设备导致系统性能降低的问题。

可见,在嵌入式文件系统中不能使用现有的通用缓存技术,而不使用缓存技术又无法满足文件系统性能的需求。因此有必要实现一种适用于嵌入式文件系统的缓存技术,既能满足性能需求又不损害文件系统的可靠性。

发明内容

本发明要解决的技术问题是提供一种可兼顾性能和可靠性需求的适用于嵌入式文件系统的缓存方法以及实现该方法的嵌入式文件系统。

本发明为解决上述技术问题所采用的技术方案是,嵌入式文件系统的缓存方法,包括:

在内存中分配一块缓冲区;所述缓冲区至少包括2个缓冲区单元,每个缓冲区单元可缓存一个扇区的数据;

当读写以扇区为单位的整数据时,直接在存储设备上的目的操作扇区上进行操作;

当读写元数据时,在与目的操作扇区对应的缓冲区单元上进行操作;

当文件关闭时,触发将每个缓冲区单元中的数据同步至存储设备的对应扇区中。

当读写以扇区为单位的整数据时,直接在存储设备上操作;读写元数据时主要通过操作缓冲区单元完成,尽量减少访问硬件存储设备的次数与访问硬件存储设备的耗费时间总和。在文件关闭时同步所有缓冲区单元的数据到存储设备的对应扇区,保证已关闭的文件的数据完整性。

优选的,所述缓冲区包括3个缓冲区单元。

本发明方案中采用3个缓冲区单元为最优方式是根据文件系统操作的特性来设计的。在文件操作的过程中,读写存储设备的扇区通常需要在其FAT扇区,目录扇区和数据扇区之间来回切换。如果缓冲区仅有一个缓冲区单元,将导致每次扇区的切换都重新同步和缓存数据,不能起到减少硬件存储设备访问次数的作用,如缓冲区中缓冲区单元过多又会造成文件关闭时,需同步的数据过多,影响系统可靠性。

具体的,存储设备为闪存或标准闪存卡。

尽管在嵌入式系统中广泛使用的FLASH设备不需要漫长的寻址时间,但每次的硬件访问仍需要建立时间,保持时间和恢复时间三种时间耗费。频繁的硬件访问会使得累加后的时间耗费非常巨大,严重影响文件系统的性能,因此需要尽量减少硬件访问的次数。结合FLASH的硬件特点和多次的试验结果,我们发现以扇区为单位来访问FLASH可以获得一个性能和稳定性的平衡点。

进一步的,缓冲区单元中包含有扇区号与同步标记两个管理参数;扇区号表示缓冲区单元中缓存数据对应的扇区号;同步标记表示缓冲区单元中缓存数据是否需同步。

读元数据的具体实现方式为:先在缓冲区中查找是否有和目的操作扇区对应的缓冲区单元,如有,则直接对该缓冲区单元进行读操作;如否,则在缓冲区中分配一个空闲缓冲区单元,将存储设备中目的操作扇区的数据读取到该缓冲区单元中,同时设置该缓冲区单元的扇区号,然后对该缓冲区单元进行读操作。

写元数据的具体实现方式为:先在缓冲区中查找是否有和目的操作扇区对应的缓冲区单元,如有,则直接将待写入的元数据写入该缓冲区单元中;如否,将存储设备目的操作扇区中的数据先读取到分配的空闲缓冲区单元中,同时设置该缓冲区单元的扇区号,再将需写入的元数据写入该缓冲区单元,设置该缓冲区单元的同步标记为需同步状态。

具体的,在读写元数据时,如缓冲区中无和存储设备的目的操作扇区对应的缓冲区单元,且缓冲区中无空闲缓冲区单元可分配,则执行缓冲区单元替换;所述缓冲区单元替换为,选出对应扇区号最大的缓冲区单元作为替换缓冲区,并将替换缓冲区单元中的数据同步至存储设备的对应扇区,将同步处理后的替换缓冲区单元作为空闲缓冲区单元。所述扇区号最大的缓冲区单元针对dosFs文件系统而言的,dosFs文件系统中数据扇区号的扇区号较其它类型扇区号大。优选的,尽可能地选择数据扇区作为替换缓冲区单元,保留FAT扇区和目录扇区中的数据;使FAT扇区和目录扇区这种相对固定又需要频繁访问的扇区较长时间的缓存在缓冲区单元中可以有效的提高性能。

嵌入式文件系统,包括文件系统处理模块、存储设备,其特征在于,还包括内存中的一块缓冲区;

缓冲区用于,缓存元数据;所述缓冲区包含有至少2个缓冲区单元,每个缓冲区单元可用于缓存一个扇区的数据;

文件系统处理模块用于,当读写以扇区为单位的整数据时,直接在存储设备上的目的操作扇区上进行操作;当读写元数据时,先在与目的操作扇区对应的缓冲区单元上进行操作;

存储设备用于,存储以扇区为单位的数据。

进一步的,文件系统处理模块还用于,在缓冲区的每个缓冲区单元中包含有扇区号与同步标记两个管理参数;扇区号表示缓冲区单元中缓存数据对应的扇区号;同步标记表示缓冲区单元中的缓存数据是否需同步。

具体的,所述文件系统处理模块在用于读元数据时,先在缓冲区中查找是否有和目的操作扇区对应的缓冲区单元,如有,则直接对该缓冲区单元进行读操作;如否,则在缓冲区中分配一个空闲缓冲区单元,将存储设备中目的操作扇区的数据读取到该缓冲区单元中,同时设置该缓冲区单元的扇区号,然后对该缓冲区单元进行读操作。

具体的,所述文件系统处理模块在用于写元数据时,先在缓冲区中查找是否有和目的操作扇区对应的缓冲区单元,如有,则直接将待写入的元数据写入该缓冲区单元中;如否,将存储设备目的操作扇区中的数据先读取到分配的空闲缓冲区单元中,同时设置该缓冲区单元的扇区号,再将需写入的元数据写入该缓冲区单元,设置该缓冲区单元的同步标记为需同步状态。

本发明的有益效果是,同时兼顾可靠性和性能需求,与通用缓存技术相比,本发明占用内存小,驻留数据少,数据丢失破坏可控。

附图说明

图1是本发明实施例的文件系统结构示意图。

图2是本发明实施例的缓冲区单元同步处理流程图。

图3是本发明实施例的元数据读写处理流程图。

图4是本发明实施例的缓冲区单元替换处理的流程图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的详细说明。

从图1中的实例中可以看出,嵌入式文件系统包括文件系统处理模块、存储设备、缓冲区;在本例中缓冲区包括了3个缓冲区单元(缓冲区单元[0]、缓冲区单元[1]、缓冲区单元[2]),每个缓冲区单元可以缓存一个扇区的数据,存储设备为FLASH或者CF卡。对于本发明的缓冲区,建议由2至5个缓冲区单元组成,能够达到满足性能需求又不损害文件系统的可靠性的效果。

文件系统处理模块对数据的处理方法,主要有:

1.初始状态时,首先在内存中分配一个3倍扇区大小的缓冲区;并将该缓冲区划分为3个缓冲区单元,每个缓冲区单元有两个管理参数:扇区号和同步标记。扇区号代表缓冲区单元中的缓存数据对应的扇区号,初始为空;同步标记代表缓存的扇区数据是否需要同步,初始为无需同步;

2.当读写以扇区为单位的整数据时,直接在FLASH上的目的操作扇区上进行读写整数据的操作;

3.当读写元数据时,在和目的操作扇区对应的缓冲区单元上进行读写操作:

初始读取元数据时,在缓冲区中分配一个空闲缓冲区单元,将读操作的FLASH中的目的扇区中的数据读取到缓冲区单元中,同时在扇区号中记录该扇区号,然后进行相应的读操作。后续进行元数据的读操作时,先在缓冲区中查找是否有和目的操作扇区对应的缓冲区单元,如有,则直接将待写入的元数据写入该缓冲区单元中;如否,将存储设备目的操作扇区中的数据先读取到分配的空闲缓冲区单元中,同时设置该缓冲区单元的扇区号,再将需写入的元数据写入该缓冲区单元,设置该缓冲区单元的同步标记为需同步状态。

在写入数据时,先在缓冲区中查找是否有和目的操作扇区对应的缓冲区单元,如有,则直接将待写入的元数据写入该缓冲区单元中;如否,在缓冲区中分配一个空闲缓冲区单元,将存储设备目的操作扇区中的数据先读取到以上分配的空闲缓冲区单元中,同时设置该缓冲区单元的扇区号,再将需写入的元数据写入该缓冲区单元,设置该缓冲区单元的同步标记为需同步状态,但此时不进行同步操作。如缓冲区中无和存储设备的目的操作扇区对应的缓冲区单元,且缓冲区中无空闲缓冲区单元可分配,则执行缓冲区单元替换;所述缓冲区单元替换为,选出替换缓冲区单元,并将替换缓冲区单元中的数据以扇区为单位同步至存储设备,将同步处理后的替换缓冲区单元作为空闲缓冲区单元;可以选择缓冲区中对应扇区号最大的缓冲区单元作为替换缓冲区单元。

4.在文件关闭时,将缓冲区中的同步标记设置为需要同步的缓冲区单元数据同步到存储设备FLASH。

图2为缓冲区单元同步部分的处理流程示意图,在文件关闭时会触发同步标记为需要同步的每个缓冲区单元中的数据同步到存储器的对应缓冲区的处理。如图所示,缓冲区单元同步包括以下步骤:

201.本次处理流程开始;

202.读取当前缓冲区单元的管理参数中的同步标记;

203.判断当前缓冲区单元是否需要同步,如果需要则进入数据同步流程,即将缓冲区单元中同步标记为需同步状态的缓冲区单元中的数据同步至存储设备的对应扇区,并且复位当前缓冲区单元的同步标记为不需要同步;如果不需要同步则执行步骤204;

204.判断对缓冲区的缓冲区单元遍历是否完成,没有完成则跳回步骤202;完成后则执行步骤205;

205.本次处理流程结束;

图3为元数据读写部分处理的流程示意图,如图所示,元数据的读写流程包括以下步骤:

301.本次处理流程开始;

302.依照特有策略为待读写的目的操作扇区分配一个空闲缓冲区单元,并将该目的操作扇区的数据读取到已分配的空闲缓冲区单元中;

303.如果需要进行元数据的写操作则将待写入的元数据写入到该缓冲区单元,并设置该缓冲区单元的管理参数,即将扇区号设为对应存储设备上的扇区号,将同步标记设为需同步状态;如果是读操作则执行相应的读操作;

304.本次处理流程结束;

图4为缓冲区单元替换部分的处理流程示意图,如图所示,缓冲区单元同步包括以下步骤:

401.本次处理流程开始;

402.如果待操作的目的操作扇区在缓冲区中已经有对应缓冲区单元,则不需要任何处理,本次处理流程结束;如果没有则执行步骤403;

403.如果缓冲区中有空闲缓冲区单元则执行步骤406;如果没有空闲缓冲区单元则执行替换策略,即执行步骤404;

404.在进行扇区替换时采取的策略是替换缓冲区中扇区号最大的缓冲区单元;采用这样的替换策略是根据文件系统操作特性来设计的:在文件操作过程中,需要在存储设备的FAT扇区,目录扇区和数据扇区之间反复切换,其中FAT扇区和目录扇区中写入的数据较少,扇区号也就相对固定;使这些扇区号相对固定又需要频繁访问的扇区较长时间的缓存在缓冲区单元中可以有效的提高性能。在dosFs(dos file system,是基于FAT的一种文件系统,最早由微软公司提出)文件系统中,FAT扇区号<目录扇区号<数据扇区号,在其它文件系统中可根据类似关系做相应的修改。

405.将根据以上策略选择出来的缓冲区单元中的数据根据其同步必要性同步到FLASH;

406.将待操作的目的操作扇区数据缓存到选择出来的缓冲区单元中;

407.设置该缓冲区单元的管理参数,即将扇区号设为对应存储设备上的扇区号;

408.本次处理流程结束;

本发明中提出的嵌入式缓存技术具有占用内存小,驻留数据少,数据丢失破坏可控的优点。本发明的技术方案仅缓存元数据,因此只需要很少的内存空间,且驻留数据很少;由于数据同步和文件的关闭相关联,即使掉电使驻留数据丢失,也仅影响未关闭的这一个文件,这就保证了破坏可控。

上述实施例以dosFs文件系统处理模块为例来加以说明的,采用的存储设备为FLASH。本发明也适用于其它类型的嵌入式文件系统,采用的存储设备需要具有可随机访问的特点。在这类系统中,根据本发明技术方案实现的嵌入式缓存技术也属于本发明的范畴。

以上所述的具体实施例,对本发明的目的,技术方案和有益效果进行了进一步详细说明,所应注意的是以上所述仅为本发明的具体实施例而已,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求记载的技术方案及等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号