一种在Flash文件系统中加快逻辑块映射速度的方法技术方案

技术编号:2868365 阅读:210 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种在Flash文件系统中加快逻辑块映射速度的方法,可提高查找数据块的速度。数据块的状态表项区中保存逻辑块与数据块的映射信息,数据块的数据区中保存与其映射的逻辑块的内容。包括:建立一个由表项组成的反向映射表,一个表项对应一个逻辑块;在系统初始化过程中,将数据块状态表项区中记录的映射信息,按逻辑块号与表项间的对应关系读取到各表项中;读取某逻辑块时,以其逻辑块号作为表项索引查找反向映射表,定位到表项,根据表项中记录的映射信息,在Flash存储器件中查找到数据块;写入某逻辑块时,将更新数据写入一新数据块的空白数据区中和将该逻辑块与新数据块间的映射信息写入状态表项区中,同时更新反向映射表相应表项的映射信息。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及Flash文件系统的一种数据管理技术,更确切地说是涉及,用于解决在Flash文件系统中查找逻辑块对应的数据块、以便进行数据块的快速定位。
技术介绍
文件管理系统为了方便对存储硬件进行管理,通常将管理对象划分为若干个逻辑块(扇区),以逻辑块为最小单位进行所有的操作,和要求存储硬件的接口驱动程序提供逻辑块读、写函数。快闪存储(Flash)器件是一种非易失性器件,被写入的内容可以在断电的情况下长时间保存。但是,Flash的存储单元只能够进行一次写操作,如果想在其上同一位置再次写入新的内容,就必须先进行擦除操作。擦除操作是以擦除块为单位进行的,一般来说擦除块的单位比较大,为了改写一个逻辑块而擦除该逻辑块所在的整个擦除块显然是不现实的。目前,Flash文件管理系统将擦除块进一步划分为若干个与逻辑块大小相同的数据块,采用动态改变逻辑块与数据块映射关系的方式实现逻辑块的改写操作。其具体过程是当需要改写某一个逻辑块时,先为这个逻辑块分配一个没有进行过写入操作的数据块,在该新的数据块中写入改写数据,同时更改逻辑块与新的数据块间的映射关系,并将旧数据块的状态项标记为无效,此后会在适当时候,对标记为无效的数据块进行统一的回收(擦除)操作,使这些数据块重新可用。为了保证逻辑块与数据块的映射关系在掉电时也不丢失,通常将映射关系记录在Flash中;同样为了便于数据块的分配、回收操作,还将映射关系分散记录在整个Flash区域中,即为每一个数据块分配一个额外的区域-数据块标志区(也可称作数据块状态表项区,或映射表),用于记录与它对应的逻辑块索引值。Flash文件系统为了得到与某个逻辑块对应的数据块位置,必须采用一定的操作流程先得到它们间的映射关系。目前的Flash文件管理系统是采用顺序查询的方式进行查找的。即每次读写一个逻辑块时,都需要从Flash存储空间的首地址或者上次查找结果处开始扫描整个Flash器件的数据块标志(状态表项)。要查找的逻辑块索引值是已知的,通过不断地比较数据块状态表项中的逻辑块索引值与要查找的逻辑块索引值,直到查找到与这个要查找的逻辑块索引值映射的数据块为止。参见图1,图中说明了Flash文件系统逻辑块与数据块的映射关系及其查找过程。图中空心箭头10上方所示为写逻辑块n前的数据块与逻辑块的映射关系,空心箭头10下方所示为写逻辑块n后的数据块与逻辑块的映射关系。数据块m标志、…、数据块i标志、数据块j标志、…、数据块i标志,是在Flash中为相应数据块分配的额外区域-数据块标志区(状态表项区),即与逻辑块的映射表,用于记录与数据块对应的逻辑块索引值,数据块标志区中记录本数据块的状态,包括空白、旧数据、新数据(也可如图中所示称作有效数据)等。如在改写逻辑块n前,数据块m标志记录了逻辑块n索引值,箭头11所指是经扫描数据块标志区,找到与数据块m映射的逻辑块n。改写逻辑块n时,由于数据块i标志是空白状态,将修改数据写入数据块i的数据区,同时在数据块i标志区记录逻辑块n索引值和新数据的标志,箭头12所指是经扫描数据块标志区,找到与数据块i映射的逻辑块n。当然还需将数据块m标志为无效(图中未示出)。由上述过程可知,由于每次对逻辑块的操作都需要进行数据块与逻辑块间索引值的查找操作,因此平均查找时间很长。尤其是当映射关系不存在时(即这个逻辑块从没有写入过值,没有任何数据块与这个逻辑块对应),需要查找整个Flash空间才能返回结果,造成了操作时延和CPU资源的浪费,特别是在实时操作系统中,由于CPU还要执行其它更重要的任务,因此这种浪费就更不能容忍了。
技术实现思路
本专利技术的目的是提供,通过采用一种新的数据块与逻辑块间映射关系的查询方法,从而提高查找数据块的速度。实现本专利技术目的的技术方案是这样的,在Flash存储器件中,将一逻辑块与一数据块的映射信息保存在该数据块的状态表项区中,将与该数据块映射的逻辑块的内容保存在该数据块的数据区中,其特征在于还包括A.建立一个反向映射表,在反向映射表中为每个逻辑块分配一个对应表项;B.在系统初始化过程中,读取全部数据块的状态表项区,将各数据块状态表项区中记录的逻辑块与数据块的映射信息,按逻辑块号与反向映射表表项间的一一对应关系重建到反向映射表各表项中;C.在读取某逻辑块时,以其逻辑块号作为表项索引查找反向映射表,定位到与该逻辑块号对应的表项,根据该表项中记录的与数据块的映射信息,在Flash存储器件中查找到数据块;D.在写入某逻辑块时,将更新数据写入一新数据块的空白数据区中和将该新数据块与该逻辑块间的映射信息写入该新数据块的状态表项区中,同时在反向映射表该逻辑块的表项中记录该逻辑块与新数据块的映射信息,在与该逻辑块有映射关系的原数据块状态表项区中将原数据块的状态置为旧数据。所述反向映射表的各表项是根据逻辑块索引值进行排列的。所述的反向映射表是建立在Flash文件系统的内存中。现有技术中,已经将数据块与逻辑块的映射信息保存在Flash中,而且分散记录在每个数据块的状态表项区(或称标志区域或映射表,用于记录数据区的数据状态和数据块与逻辑块的映射信息)中,当逻辑块与数据块间的映射关系发生了变化时,将在新数据块的状态表项区记载其与逻辑块间的新的映射关系。本专利技术方法通过在内存中建立一个反向映射表(因为是从逻辑块查找数据块,相对于现有技术的从数据块查找逻辑块的顺序是反向的,故称作反向映射),是根据数据块状态表项中记录的逻辑块索引值(数据块与逻辑块的映射关系)建立起反向映射表的相应表项,且该反向映射表与数据块的状态表项同步更新,因而反向映射表中记录了数据块的定位信息,并且反向映射表使用逻辑块号作为索引值,即作为查询反向映射表的关键值。读逻辑块时,先在反向索引表中找到与逻辑块号相对应的表项,根据表项中记载的数据块定位信息可找到数据块。本专利技术可在保证映射信息断电不丢失的前提下,提高查找数据块的速度。本专利技术方法实现简单,可有效提高查找数据块的速度,从而提高CPU的使用效率。附图说明图1是现有技术中Flash文件系统逻辑块与数据块映射关系及查找过程示意图;图2是采用反向映射表时,查找逻辑块的过程示意图。具体实施例方式本专利技术方法,通过在内存中增加一个反向映射表,可以在Flash文件系统中加快逻辑块映射速度,从而改进系统的性能。在这种方式下,反向映射表中为每个逻辑块分配了一个表项,并使用逻辑块号进行索引。参见图2,图中描述了本专利技术采用反向映射表的工作原理。图中空心箭头20上方所示是改写逻辑块n前的数据块、逻辑块与反向映射表中表项的映射关系及查找逻辑块n的过程,空心箭头20下方所示为改写逻辑块n后的数据块、逻辑块与反向映射表中表项的映射关系及查找逻辑块n的过程。空心箭头20表示改写逻辑块n时,需要同时更新Flash中的映射关系(数据块标志区或数据块状态表项区或映射表)和反向映射表中的映射关系。反向映射表的初始建立过程发生在每次系统启动时,系统扫描整个Flash器件,根据数据块状态表项区中记录的逻辑块索引值建立反向映射表中的相应表项。反向映射表中为每个逻辑块逻辑块0,…,逻辑块n分配了一个表项表项0,…,表项n,即逻辑块与反向映射表的表项成一一对应关系,因此反向映射表可使用逻辑块号进行索引。反向映射本文档来自技高网
...

【技术保护点】
一种在Flash文件系统中加快逻辑块映射速度的方法,在Flash存储器件中,将一逻辑块与一数据块的映射信息保存在该数据块的状态表项区中,将与该数据块映射的逻辑块的内容保存在该数据块的数据区中,其特征在于还包括:    A.建立一个反向映射表,在反向映射表中为每个逻辑块分配一个对应表项;    B.在系统初始化过程中,读取全部数据块的状态表项区,将各数据块状态表项区中记录的逻辑块与数据块的映射信息,按逻辑块号与反向映射表表项间的一一对应关系重建到反向映射表各表项中;    C.在读取某逻辑块时,以其逻辑块号作为表项索引查找反向映射表,定位到与该逻辑块号对应的表项,根据该表项中记录的与数据块的映射信息,在Flash存储器件中查找到数据块;    D.在写入某逻辑块时,将更新数据写入一新数据块的空白数据区中和将该新数据块与该逻辑块间的映射信息写入该新数据块的状态表项区中,同时在反向映射表该逻辑块的表项中记录该逻辑块与新数据块的映射信息,在与该逻辑块有映射关系的原数据块状态表项区中将原数据块的状态置为旧数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:黄晓光
申请(专利权)人:大唐移动通信设备有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1