CN102981968B - 一种nor-flash-fat文件系统空闲簇的分配方法 - Google Patents

一种nor-flash-fat文件系统空闲簇的分配方法 Download PDF

Info

Publication number
CN102981968B
CN102981968B CN201210453150.9A CN201210453150A CN102981968B CN 102981968 B CN102981968 B CN 102981968B CN 201210453150 A CN201210453150 A CN 201210453150A CN 102981968 B CN102981968 B CN 102981968B
Authority
CN
China
Prior art keywords
bunch
dirty
flash
traversal
free cluster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210453150.9A
Other languages
English (en)
Other versions
CN102981968A (zh
Inventor
刘宝阳
黄家明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Tianjin Data Information Technology Co ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201210453150.9A priority Critical patent/CN102981968B/zh
Publication of CN102981968A publication Critical patent/CN102981968A/zh
Application granted granted Critical
Publication of CN102981968B publication Critical patent/CN102981968B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

本发明提供一种NOR?FLASH?FAT文件系统空闲簇的分配方法,通过三次遍历FAT分区表中所有簇信息,第一次遍历空簇,找到空簇直接分配使用,不再进行第二、三次遍历;第二次遍历在第一次遍历失败情况下进行,遍历NOR-FLASH某个擦写块上全部是脏簇的块,首先擦除此块进行垃圾回收,然后分配该擦写块上的第一个簇,此时,此簇为空簇;第三次遍历在前两次遍历均失败情况下进行,遍历NOR-FLASH某个擦写块上脏簇最多的块,回收该块上的脏簇,然后分配该擦写块上第一个脏簇,即已经回收为空簇,这样可以最大限度的回收脏簇。这样可以最大限度的减少擦写NOR-FLASH的次数,延长了NOR-FLASH的使用寿命。

Description

一种NOR-FLASH-FAT文件系统空闲簇的分配方法
技术领域
本发明涉及NOR-FLASH数据存储领域,具体涉及一种NOR-Flash-FAT文件系统空闲簇的分配方法。
背景技术
随着嵌入式技术的发展,大量应用不断涌现,而这些应用总是伴随着大量数据的处理和存储,这就对作为嵌入式主要存储介质的NOR-FLASH的管理技术提出了更高的要求。最通常的NOR-FLASH存储介质的管理使用方法是为数据指定Flash的开始位置和长度,鉴于NOR-FLASH存储介质的擦写特性,要求指定的开始位置必须是Flash块的开始位置,指定的长度必须是Flash擦写块大小的倍数,这样就带来了两个问题,第一,数据扩展不灵活,如果有了新的数据存储需求,必须重新划分NOR-FLASH区域;第二,造成了Flash空间的浪费,NOR-FLASH擦写块一般为64K,对于一类只有很少字节的数据,也需要分配64K的空间,这样会造成Flash空间的浪费。因此使用文件系统管理NOR-FLASH存储介质的技术出现了,文件系统可以有效的解决以上两个问题。
考虑到NOR-FLASH存储介质的特性,对文件系统也提出了更高的要求,必须确保文件系统的安全可靠性,另外还要考虑到擦写平衡,垃圾回收机制,保证文件系统在NOR-FLASH存储介质上安全可靠的运行。传统的文件系统的做法一般是将垃圾回收机制和文件系统管理隔离开来,文件系统管理只负责文件读写等操作,垃圾回收机制只负责定期扫描垃圾簇,并回收。这就带来了两个问题,第一,需要额外的资源去处理垃圾回收,造成文件系统效率低下;第二,垃圾回收机制和文件系统管理隔离会出现两者交互问题,垃圾回收和文件系统管理不能同时操作同一个簇,否则会出现文件数据丢失的风险。
鉴于传统的文件系统的以上两个缺点,亟需提出一种新的NOR-FLASH-FAT文件系统的垃圾回收机制的方法,以满足文件系统在NOR-FLASH存储介质上的安全可靠的运行,因此本发明提出一种NOR-FLASH-FAT文件系统空闲簇的分配方法来解决垃圾回收问题就很有必要了。
发明内容
本发明的目的是提供一种NOR-Flash-FAT文件系统空闲簇的分配方法。
本发明的目的是按以下方式实现的,空闲簇分为两种:空簇和脏簇,空簇可以直接分配,脏簇分配之前需要垃圾回收。NOR-FLASH擦写块一般是64KBytes的倍数,而文件系统簇大小一般是4KBytes或者8KBytes,一个擦写块上可以有多个文件簇。
本发明中分配空闲簇的方法,通过三次遍历FAT分区表中所有簇信息,第一次遍历空簇,找到空簇直接分配使用,不再进行第二、三次遍历;第二次遍历在第一次遍历失败情况下进行,遍历NOR-FLASH擦写块上全部是脏簇的块,首先擦除此块进行垃圾回收,然后分配该擦写块上的第一个簇,此时,此簇为空簇;第三次遍历在前两次遍历均失败情况下进行,遍历NOR-FLASH擦写块上脏簇最多的块,回收该块上的脏簇,然后分配该擦写块上第一个脏簇,即已经回收为空簇,这样可以最大限度的回收脏簇。
具体步骤如下:
首先,有簇请求时,从FAT分区表中读取空闲簇的位置信息,此位置信息是上一次分配簇的簇号,此次分配簇从此位置开始往后循环遍历,目的是为了擦写平衡考虑的,能够保证遍历在整个簇空间中进行,而不是每次都从第一簇开始,每次从第一簇开始会出现多次分配簇出现在同一个擦写块上;
其次,从空闲簇位置信息开始的簇往后进行第一次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,簇的状态分三种:已使用,空簇和脏簇,如果为空簇,则直接分配此簇,并且修改空闲簇位置信息为当前簇号,否则,空闲簇位置信息加1,查看下一个簇的状态;
再次,如果第一次遍历完成以后,没有发现空簇,则进行第二次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,如果为脏簇,则查看和此脏簇在同一个NOR-FLASH擦写块上的其他所有簇状态,如果均为脏簇,则擦除此块进行垃圾回收,然后分配此擦写块上的第一个簇,并修改空闲簇位置信息为当前簇号,否则,空闲簇位置信息置为下一个擦写块的第一个簇的簇号,继续进行遍历;
最后,如果前两次遍历完成以后,没有找到空闲簇,则进行第三次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,如果为脏簇,则查看和此脏簇在同一个NOR-FLASH擦写块上的其他所有簇状态,并记录此擦写块上脏簇的个数,修改空闲簇位置信息,并查看下一个擦写块的所有脏簇个数,直至遍历完所有的擦写块,最终找到一个脏簇个数最多的擦写块,进行垃圾回收,然后分配此擦写块上的第一个脏簇,即已经回收为空簇,并修改空闲簇位置信息为当前簇号。
本发明的有益效果是:在FAT文件系统分配空闲簇的过程中,兼顾到分配效率和垃圾回收,不再需要额外的资源去做垃圾回收工作,同时垃圾回收时选择脏簇最多的块,可以最大限度的回收脏簇,减少了擦写NOR-FLASH的次数,延长了NOR-FLASH的使用寿命,使其更适用于多样化的NOR-FLASH数据存储领域,因而具有非常广阔的发展空间。
具体实施方式
正如发明内容中所描述的,本发明中提到的NOR-FLASH-FAT文件系统空闲簇的方法,是在分配簇的过程中兼顾到分配效率、垃圾回收和擦写平衡。
具体步骤如下:
首先,有簇请求时,从FAT分区表中读取空闲簇的位置信息,此位置信息是上一次分配簇的簇号,此次分配簇从此位置开始往后循环遍历,这样做的目的是为了擦写平衡考虑的,能够保证遍历在整个簇空间中进行,而不是每次都从第一簇开始,每次从第一簇开始可能会出现多次分配簇出现在同一个擦写块上。
其次,从空闲簇位置信息开始的簇往后进行第一次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,簇的状态分三种:已使用,空簇和脏簇,如果为空簇,则直接分配此簇,并且修改空闲簇位置信息为当前簇号,否则,空闲簇位置信息加1,查看下一个簇的状态。
再次,如果第一次遍历完成以后,没有发现空簇,则进行第二次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,如果为脏簇,则查看和此脏簇在同一个NOR-FLASH擦写块上的其他所有簇状态,如果均为脏簇,则擦除此块进行垃圾回收,然后分配此擦写块上的第一个簇,并修改空闲簇位置信息为当前簇号,否则,空闲簇位置信息置为下一个擦写块的第一个簇的簇号,继续进行遍历。
最后,如果前两次遍历完成以后,没有找到空闲簇,则进行第三次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,如果为脏簇,则查看和此脏簇在同一个NOR-FLASH
擦写块上的其他所有簇状态,并记录此擦写块上脏簇的个数,修改空闲簇位置信息,并查看下一个擦写块的所有脏簇个数,直至遍历完所有的擦写块,最终找到一个脏簇个数最多的擦写块,进行垃圾回收,然后分配此擦写块上的第一个脏簇(即已经回收为空簇),并修改空闲簇位置信息为当前簇号。
本发明中提到的一种NOR-FLASH-FAT文件系统空闲簇的分配方法,充分考虑NORFALSH存储介质擦写特性,可以有效满足NOR-FLASH文件系统读写效率,垃圾回收和擦写平衡的需要,减少了擦写NOR-FLASH的次数,延长了NOR-FLASH的使用寿命。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。

Claims (1)

1.一种NOR-FLASH-FAT文件系统空闲簇的分配方法,其特征在于分三次遍历FAT分区表中所有簇信息,第一次遍历空簇,找到直接分配,不再进行第二、三次遍历;第二次遍历在第一次遍历失败情况下进行,遍历NOR-FLASH擦写块上全部是脏簇的块,首先擦除此块进行垃圾回收,然后分配该擦写块上的第一个簇;第三次遍历在前两次遍历均失败情况下进行,遍历NOR-FLASH擦写块上脏簇最多的块,回收该块上的脏簇,然后分配该擦写块上第一个脏簇,即已经回收为空簇,在分配簇的过程中兼顾到分配效率和垃圾回收,不再需要额外的资源去做垃圾回收工作,同时垃圾回收时选择脏簇最多的块,可以最大限度的减少擦写NOR-FLASH的次数,延长了NOR-FLASH的使用寿命,具体步骤如下:
首先,有簇请求时,从FAT分区表中读取空闲簇的位置信息,此位置信息是上一次分配簇的簇号,此次分配簇从此位置开始往后循环遍历,目的是为了擦写平衡考虑的,能够保证遍历在整个簇空间中进行,而不是每次都从第一簇开始,每次从第一簇开始会出现多次分配簇出现在同一个擦写块上;
其次,从空闲簇位置信息开始的簇往后进行第一次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,簇的状态分三种:已使用,空簇和脏簇,如果为空簇,则直接分配此簇,并且修改空闲簇位置信息为当前簇号,否则,空闲簇位置信息加1,查看下一个簇的状态;
再次,如果第一次遍历完成以后,没有发现空簇,则进行第二次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,如果为脏簇,则查看和此脏簇在同一个NOR-FLASH擦写块上的其他所有簇状态,如果均为脏簇,则擦除此块进行垃圾回收,然后分配此擦写块上的第一个簇,并修改空闲簇位置信息为当前簇号,否则,空闲簇位置信息置为下一个擦写块的第一个簇的簇号,继续进行遍历;
最后,如果前两次遍历完成以后,没有找到空闲簇,则进行第三次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,如果为脏簇,则查看和此脏簇在同一个NOR-FLASH擦写块上的其他所有簇状态,并记录此擦写块上脏簇的个数,修改空闲簇位置信息,并查看下一个擦写块的所有脏簇个数,直至遍历完所有的擦写块,最终找到一个脏簇个数最多的擦写块,进行垃圾回收,然后分配此擦写块上的第一个脏簇,即已经回收为空簇,并修改空闲簇位置信息为当前簇号。
CN201210453150.9A 2012-11-13 2012-11-13 一种nor-flash-fat文件系统空闲簇的分配方法 Active CN102981968B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210453150.9A CN102981968B (zh) 2012-11-13 2012-11-13 一种nor-flash-fat文件系统空闲簇的分配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210453150.9A CN102981968B (zh) 2012-11-13 2012-11-13 一种nor-flash-fat文件系统空闲簇的分配方法

Publications (2)

Publication Number Publication Date
CN102981968A CN102981968A (zh) 2013-03-20
CN102981968B true CN102981968B (zh) 2016-05-25

Family

ID=47856020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210453150.9A Active CN102981968B (zh) 2012-11-13 2012-11-13 一种nor-flash-fat文件系统空闲簇的分配方法

Country Status (1)

Country Link
CN (1) CN102981968B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255740A (zh) * 2017-12-07 2018-07-06 深圳市中易通安全芯科技有限公司 一种flash均衡擦写方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101027651A (zh) * 2004-07-21 2007-08-29 桑迪士克股份有限公司 最佳顺序性簇管理的fat分析

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI260497B (en) * 2003-06-13 2006-08-21 Hon Hai Prec Ind Co Ltd System and method of flash file
US8607016B2 (en) * 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101027651A (zh) * 2004-07-21 2007-08-29 桑迪士克股份有限公司 最佳顺序性簇管理的fat分析

Also Published As

Publication number Publication date
CN102981968A (zh) 2013-03-20

Similar Documents

Publication Publication Date Title
CN102306126B (zh) 内存管理方法、装置和系统
CN101221536B (zh) 嵌入式系统的内存管理方法及装置
CN108132842B (zh) 一种嵌入式软件内存管理系统
CN104317742B (zh) 一种优化空间管理的自动精简配置方法
US6865585B1 (en) Method and system for multiprocessor garbage collection
CN101571869B (zh) 一种智能卡的文件存储、读取方法及装置
CN102084331A (zh) 在多处理器/多线程环境下协调存储请求的装置、系统和方法
CN105027093A (zh) 用于压缩和紧凑虚拟存储器的方法和装置
CN100561386C (zh) 一种数据保存方法和装置
CN103577336B (zh) 一种存储数据处理方法及装置
CN102163175A (zh) 一种基于局部性分析的混合地址映射方法
CN102084332A (zh) 将存储请求转换为附加数据存储命令的装置、系统和方法
CN1996258A (zh) 一种动态内存池的实现方法
CN101510332B (zh) 一种智能卡中存储空间的管理方法和装置
CN102520887A (zh) 一种应用于云计算的存储空间配置与管理方法
CN103942159A (zh) 一种基于混合存储设备的数据读写方法与装置
CN103793332B (zh) 基于内存的数据存储方法、装置、处理器和电子设备
CN102591789A (zh) 存储空间回收方法及装置
CN111309289A (zh) 一种内存池管理组件
CN103455433A (zh) 内存管理方法及系统
CN107817945A (zh) 一种混合内存结构的数据读取方法和系统
CN109960471A (zh) 数据存储方法、装置、设备以及存储介质
CN103778149A (zh) 文件系统及其对文件进行存储管理的方法
CN105159842A (zh) 存储系统数据写时拷贝的处理方法和处理装置
CN103425435A (zh) 磁盘存储方法及磁盘存储系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180815

Address after: 250101 S06 tower, 1036, Chao Lu Road, hi tech Zone, Ji'nan, Shandong.

Patentee after: SHANDONG LANGCHAO YUNTOU INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 250014 1036 Shun Ya Road, hi tech Zone, Ji'nan, Shandong.

Patentee before: INSPUR ELECTRONIC INFORMATION INDUSTRY Co.,Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Patentee after: Inspur cloud Information Technology Co.,Ltd.

Address before: 250101 S06 tower, 1036, Chao Lu Road, hi tech Zone, Ji'nan, Shandong.

Patentee before: SHANDONG LANGCHAO YUNTOU INFORMATION TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221011

Address after: 300300 Room 706, Floor 7, Investment Promotion Center Building, Wanxin Xiangyi Plaza, intersection of Chenglin Road and Dengzhou Road, Wanxin Street, Dongli District, Tianjin

Patentee after: Inspur (Tianjin) Data Information Technology Co.,Ltd.

Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Patentee before: Inspur cloud Information Technology Co.,Ltd.