一种闪存存储器等概率连续空间存储文件的方法

文档序号:6426295阅读:185来源:国知局
专利名称:一种闪存存储器等概率连续空间存储文件的方法
技术领域
本发明属于数据存储技术领域,特别涉及一种闪存存储器等概率连续空间存储文件的方法。
背景技术
由于闪存存储器的寿命是有限的,不能无限次写入,存储单元的最大写入次数一般为IO5 IO6次。所以在采用NAND Flash的应用中,必须采用一定的机制,保证各个存储单元近似均衡连续使用,在避免某些单元提前损耗达到使用寿命前提下,提高访问效率。针对这一问题,许多研究者提出了一些算法例如,Kawaguchi等提出了 Cost-Benefit策略、 Wells等提出了综合考虑回收效率和等概率的策略、Chiang等提出了 CAT (Cost Age Times, 简称CAT)策略等,这些方法主要是通过垃圾回收来实现对闪存存储器管理的优化,都需要记录大量的数据存储的时间参数,而且计算较复杂,现在为止没有一个成熟的适合用于资源有限嵌入式系统的闪存存储器存储文件的方法。

发明内容
针对现有技术存在的不足,本发明提供一种闪存存储器等概率连续空间存储文件的方法,闪存存储器等概率连续空间文件存储包括文件存储和文件删除。文件存储和文件删除的核心是管理序列存储区格式化、存储次数排序和相同存储次数连续空间排序。一种闪存存储器等概率连续空间存储文件的方法,具体按如下步骤进行步骤1 管理序列存储区格式化管理序列存储区格式化基于闪存存储器的大小和存储单元的大小设置专用的管理序列存储区。如果闪存存储器已格式化,把管理序列存储区数据读到RAM,等待文件操作命令;否则,按以下步骤执行管理序列存储区格式化步骤1-1 分配专用的管理序列存储区,管理序列存储区只限存储管理序列和空闲单元长度,管理序列包括存储单元序号、存储次数和状态位;步骤1-2 设闪存存储器大小为Flastlsize,存储单元的大小为Unitsize ;步骤1-3 计算空闲单元长度 Nullsize = FlaShSize/UnitSize I,状态位 USEstate = 0 表示存储单元空闲,USEstate = 1表示存储单元使用中;步骤1-4 计算管理序列大小 Arraysize = FlashSize/UnitSize X3 ;步骤1-5 按升序初始化管理序列的存储单元序号;步骤1-6 设置所有存储次数为0 ;步骤1-7 设置状态位USEstate = 0 ;步骤1-8 把管理序列和空闲单元长度存储到管理序列存储区。步骤2:文件存储文件的存储基于空闲存储单元的序列ArrayN^存储文件。设文件File的大小为Nme个存储单元,
步骤2-1 存储文件到Array,-前NFile个元素指定的空闲存储单元;步骤2-2 设置Nme个对应的空闲存储单元的存储次数^ise = Nuse+1 ;步骤2-3 设置Nme个对应空闲存储单元的状态位US^tate = 1 ;
步骤2-4 把Nme个对应空闲存储单元从Array·移到ArrayUSE ;步骤2-5 =Nullsize = Nullsize-Nme ;步骤2-6 用存储次数排序算法排序Array-y存储次数排序基于存储次数将管理序列由低至高排序。存储次数排序算法具体过程如下设管理序列为Array、空闲单元管理序列为Array·。使用单元管理序列为 Array·,则 Array = {ArrayNULL, Array·}。设Array肌L = {· · ·,(Xi, i,0),(Xj, j,0),· · · },X” Xj 分别是第 i、j 存储单元的存储次数。若Xj < Xi,则 ArrayNULL = {· · ·,(Xj, j,0), (Xi, i,0),· · · },直至序列 ArrayNULL 中所有存储次数满足升序排列。步骤2-7 相同存储次数连续空间算法排序ArrayNm,相同存储次数连续空间排序算法基于具有相同存储次数的连续存储单元数量将空闲单元管理序列由多至少排序。相同存储次数连续空间排序算法具体过程如下设序列B= {· · ·,(Yi, i,0), (Yj, j,0),· · · } e ArrayNULL。B中的所有元素满足Yi = Yj,即B中表示的所有存储单元具有相同的存储次数。设Bmax e B, Bfflax是B中有最大连续存储单元数量的子集,则B = {Bfflax, . · · },直至序列B按连续存储单元数量由多至少排序。步骤 2-8 Array = {Array·, ArrayusJ。步骤2-9 把管理序列Array和空闲单元长度Nullsize存储到管理序列存储区。步骤3:文件删除文件的删除基于Array·删除文件。设文件File的大小为Nme个存储单元,步骤3-1 确定文件File使用的NFile个存储单元;步骤3-2 设置Nme个对应使用存储单元的状态位US^tate = 0 ;步骤3-3 把Nme个对应使用存储单元从ArrayUSE移到Array·;步骤3-4 =Nullsize = NullSize+NFile ;步骤3-5 用存储次数排序算法排序Array,-;步骤3-6 相同存储次数连续空间算法排序Array,-;步骤3-7 Array = {ArraymL, ArrayusJ ;步骤3-8 把管理序列Array和空闲单元长度Nullsize存储到管理序列存储区。本发明提出存储次数排序从而控制空间存储的存储次数,在此基础上提出相同存储次数连续空间排序从而控制文件存储的连续性,使文件存储在低存储次数连续存储空间。通过对仿真和实现进行性能评价,得出闪存存储器等概率连续空间存储文件的方法克服了传统文件存储操作不均衡和闪存文件管理系统速度慢的缺陷,提高了文件存储空间的使用寿命和访问效率,具有良好的性能和实用性。


图1是本发明闪存存储器等概率连续空间存储文件的方法流程图;图2是操作次数上限为100万次时两种文件存储方法运行结果的对比。
具体实施例方式下面结合附图和仿真过程对本发明做进一步说明。(1)仿真环境开发平台为VC++6. 0,程序设计语言为C++,操作系统为WindowsXP。(2)参数设置常用FAT32、NTFS等文件系统的存储单元缺省设定大小为4k,不失一般性设闪存存储器的存储单元大小为4k,则
权利要求
1. 一种闪存存储器等概率连续空间存储文件的方法,其特征在于该方法包括以下步骤步骤1 管理序列存储区格式化; 步骤2 文件存储; 步骤3 文件删除;所述步骤1管理序列存储区格式化,基于闪存存储器的大小和存储单元的大小设置专用的管理序列存储区,如果闪存存储器已格式化,把管理序列存储区数据读到RAM,等待文件操作命令;否则,按以下步骤执行管理序列存储区格式化步骤1-1 分配专用的管理序列存储区,管理序列存储区只限存储管理序列和空闲单元长度,管理序列包括存储单元序号、存储次数和状态位;步骤1-2 设置闪存存储器大小为Flashsize,存储单元的大小为Unitsize ; 步骤1-3 计算空闲单元长度Nullsize= I FlaShSize/UnitSize I,状态位US^tate=O表示存储单元空闲,USEstate=I表示存储单元使用中;步骤 1-4 计算管理序列大小 ArraySize=|FlaShSize/UnitSize| X3 ; 步骤1-5 按升序初始化管理序列的存储单元序号; 步骤1-6 设置所有存储单元的存储次数为0 ; 步骤1-7 设置状态位USEstate=O ;步骤1-8 把管理序列和空闲单元长度存储到管理序列存储区; 所述步骤2文件存储,基于空闲存储单元的序列Array^存储文件,具体步骤如下 设文件File的大小为Nme个存储单元,步骤2-1 存储文件到ArrayN^前Nme个元素指定的空闲存储单元; 步骤2-2 设置Nf&个对应的空闲存储单元的存储次数Nuse=Nuse+1 ; 步骤2-3 设置Nf&个对应空闲存储单元的状态位USEstate=I ; 步骤2-4 把Npile个对应空闲存储单元从Array·移到ArrayUSE ; 步骤 2-5: Nullsize = Nullsize-Nme ;步骤2-6 用存储次数排序算法排序ArraymM存储次数排序基于存储次数将管理序列由低至高排序;步骤2-7 用相同存储次数连续空间算法排序ArrayNm,相同存储次数连续空间排序算法基于具有相同存储次数的连续存储单元数量将空闲单元管理序列由多至少排序; 步骤 2-8 Array= {ArrayNULL, Array·};步骤2-9 把管理序列Array和空闲单元长度Nullsize存储到管理序列存储区;所述步骤3文件删除,基于ArrayUSE删除文件,具体步骤如下设文件File的大小为Nme个存储单元,步骤3-1 确定文件File使用的Nf&个存储单元;步骤3-2 设置Nf&个对应使用存储单元的状态位USEstate=O ;步骤3-3 把Nme个对应使用存储单元从Array·移到Array-L ;步骤 3-4 =Nullsize= Nullsize +Npile ;步骤3-5 用存储次数排序算法排序Array-L ;步骤3-6 相同存储次数连续空间算法排序ArrayN^ ;步骤 3-7 Array= {ArrayNULL, ArrayusJ ;步骤3-8 把管理序列Array和空闲单元长度Nullsize存储到管理序列存储区。
2.根据权利要求1所述的一种闪存存储器等概率连续空间存储文件的方法,其特征在于步骤2-6中所述的存储次数排序算法具体过程如下设管理序列为Array、空闲单元管理序列为Array-L、使用单元管理序列为Array·,则 Array= {Array·, ArrayusJ ;设ArraymL= {···,( , i,0),(Xj, j,0),…},\、Xj分别是第i、j存储单元的存储次数;若 Xj < Xi,则 Array肌ρ{…,(Xj, j,0),(Xi, i,0),…},直至序列 ArrayNULL 中所有存储次数满足升序排列。
3.根据权利要求1所述的一种闪存存储器等概率连续空间存储文件的方法,其特征在于步骤2-7中所述的相同存储次数连续空间排序算法具体过程如下设序列 B ={>..,(Yi, i,0), (Yj, j,0),···} e ArraymL, B中的所有元素满足Yi = Yp即B中表示的所有存储单元具有相同的存储次数, 设Bmax e B,Bmax是B中有最大连续存储单元数量的子集,则B= { Bmax,···},直至序列B 按连续存储单元数量由多至少排序。
全文摘要
本发明提供一种闪存存储器等概率连续空间存储文件的方法,通过对存储次数排序控制存储单元的存储次数,在此基础上对相同存储次数连续空间排序从而控制文件存储的连续性,实现连续存储单元数量由多至少排序。该方法包括管理序列存储区格式化、文件存储和文件删除。本方法实现了在对存储次数排序的基础上对相同存储次数的存储单元进行排序,克服了传统文件存储操作不均衡和闪存文件存储系统速度慢的缺陷,提高了文件存储空间的使用寿命和访问效率,具有良好的性能和实用性。
文档编号G06F12/02GK102253894SQ20111015986
公开日2011年11月23日 申请日期2011年6月14日 优先权日2011年6月14日
发明者白乐强 申请人:沈阳建筑大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1