发明名称 一种NOR FLASH FAT文件系统空闲簇的分配方法
摘要 本发明提供一种NORFLASHFAT文件系统空闲簇的分配方法,通过三次遍历FAT分区表中所有簇信息,第一次遍历空簇,找到空簇直接分配使用,不再进行第二、三次遍历;第二次遍历在第一次遍历失败情况下进行,遍历NOR-FLASH某个擦写块上全部是脏簇的块,首先擦除此块进行垃圾回收,然后分配该擦写块上的第一个簇,此时,此簇为空簇;第三次遍历在前两次遍历均失败情况下进行,遍历NOR-FLASH某个擦写块上脏簇最多的块,回收该块上的脏簇,然后分配该擦写块上第一个脏簇,即已经回收为空簇,这样可以最大限度的回收脏簇。这样可以最大限度的减少擦写NOR-FLASH的次数,延长了NOR-FLASH的使用寿命。
申请公布号 CN102981968A 申请公布日期 2013.03.20
申请号 CN201210453150.9 申请日期 2012.11.13
申请人 浪潮电子信息产业股份有限公司 发明人 刘宝阳;黄家明
分类号 G06F12/02(2006.01)I;G06F17/30(2006.01)I 主分类号 G06F12/02(2006.01)I
代理机构 代理人
主权项 一种NOR FLASH FAT文件系统空闲簇的分配方法, 其特征在于分三次遍历FAT分区表中所有簇信息,第一次遍历空簇,找到直接分配,不再进行第二、三次遍历;第二次遍历在第一次遍历失败情况下进行,遍历NOR‑FLASH某个擦写块上全部是脏簇的块,首先擦除此块进行垃圾回收,然后分配该擦写块上的第一个簇;第三次遍历在前两次遍历均失败情况下进行,遍历NOR‑FLASH某个擦写块上脏簇最多的块,回收该块上的脏簇,然后分配该擦写块上第一个脏簇,即已经回收为空簇,在分配簇的过程中兼顾到分配效率和垃圾回收,不再需要额外的资源去做垃圾回收工作,同时垃圾回收时选择脏簇最多的块,可以最大限度的减少擦写NOR‑FLASH的次数,延长了NOR‑FLASH的使用寿命,具体步骤如下:首先,有簇请求时,从FAT分区表中读取空闲簇的位置信息,此位置信息是上一次分配簇的簇号,此次分配簇从此位置开始往后循环遍历,目的是为了擦写平衡考虑的,能够保证遍历在整个簇空间中进行,而不是每次都从第一簇开始,每次从第一簇开始会出现多次分配簇出现在同一个擦写块上;其次,从空闲簇位置信息开始的簇往后进行第一次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,簇的状态分三种:已使用,空簇和脏簇,如果为空簇,则直接分配此簇,并且修改空闲簇位置信息为当前簇号,否则,空闲簇位置信息加1,查看下一个簇的状态;再次,如果第一次遍历完成以后,没有发现空簇,则进行第二次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,如果为脏簇,则查看和此脏簇在同一个NOR‑FLASH擦写块上的其他所有簇状态,如果均为脏簇,则擦除此块进行垃圾回收,然后分配此擦写块上的第一个簇,并修改空闲簇位置信息为当前簇号,否则,空闲簇位置信息置为下一个擦写块的第一个簇的簇号,继续进行遍历;最后,如果前两次遍历完成以后,没有找到空闲簇,则进行第三次遍历,在FAT分区表中找到空闲簇位置信息对应的簇,查看此簇的状态,如果为脏簇,则查看和此脏簇在同一个NOR‑FLASH擦写块上的其他所有簇状态,并记录此擦写块上脏簇的个数,修改空闲簇位置信息,并查看下一个擦写块的所有脏簇个数,直至遍历完所有的擦写块,最终找到一个脏簇个数最多的擦写块,进行垃圾回收,然后分配此擦写块上的第一个脏簇,即已经回收为空簇,并修改空闲簇位置信息为当前簇号。
地址 250014 山东省济南市高新区舜雅路1036号