CN104536847B - 一种提高数据写入完整性的方法 - Google Patents

一种提高数据写入完整性的方法 Download PDF

Info

Publication number
CN104536847B
CN104536847B CN201410790546.1A CN201410790546A CN104536847B CN 104536847 B CN104536847 B CN 104536847B CN 201410790546 A CN201410790546 A CN 201410790546A CN 104536847 B CN104536847 B CN 104536847B
Authority
CN
China
Prior art keywords
page
address
pages
backed
homepage
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
CN201410790546.1A
Other languages
English (en)
Other versions
CN104536847A (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.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies 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 Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201410790546.1A priority Critical patent/CN104536847B/zh
Publication of CN104536847A publication Critical patent/CN104536847A/zh
Application granted granted Critical
Publication of CN104536847B publication Critical patent/CN104536847B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供一种提高数据写入完整性的方法,特别涉及信息安全领域;本发明包括:获取每个页地址中的掉电标识和页号,将置位的掉电标识对应的页号和页地址保存至第一缓存区中,从第一缓存区中获取第一个页号作为当前页号,如果第一缓存区中首页的掉电标识置位,并且存在与当前页号相同的其他页,则擦除当前页;如果第一缓存区中首页的掉电标识置位,并且不存在与当前页号相同的其他页,则清除当前页的掉电标识;如果第一缓存区中首页的掉电标识未置位,并且存在与当前页号相同的其他页,则擦除与当前页号相同的其他页;如果第一缓存区中首页的掉电标识未置位,并且不存在与当前页号相同的其他页,则清除当前页的掉电标识。

Description

一种提高数据写入完整性的方法
技术领域
本发明涉及信息安全领域,特别涉及一种提高数据写入完整性的方法。
背景技术
文件系统中存有许多文件页,在对文件页中的数据更新时,容易出现坏页;在现有技术中,文件系统中只有两个备份页,在连续对同一个文件页进行写操作时,会出现循环使用同一个备份页和文件页的情况,减少备份页和文件页的使用寿命;现有技术中,使用两个备份页将长度为2048比特的RSA私钥数据写入文件系统时,需将私钥数据划分为若干部分,向第一个备份页写入RSA私钥数据的第一部分,将第一备份页中的数据写入文件系统中,向第二个备份页中写入RSA私钥数据的第二部分,将第二备份页中的数据写入文件系统中,然后擦除第一备份页中的数据,如果此时掉电,在掉电恢复之后,无法恢复RSA私钥数据的第一部分,导致文件页中写入的RSA私钥数据不完整。
发明内容
为了解决现有技术中出现的问题,本发明提出一种提高数据写入完整性的方法,包括:
当设备上电进行数据恢复时,执行步骤S1;
步骤S1:获取每个页地址中的掉电标识和页号,将置位的掉电标识对应的页号和页地址保存至第一缓存区中,记录掉电页数;
步骤S2:判断所述掉电页数是否大于0,是则执行步骤S3;否则结束;
步骤S3:从所述第一缓存区中获取第一个页号作为当前页号,判断所述第一缓存区中首页的掉电标识是否置位,是则执行步骤S4;否则执行步骤S6;
步骤S4:判断是否存在与所述当前页号相同的其他页,是则擦除当前页,执行步骤S5;否则清除所述当前页的掉电标识,执行步骤S5;
步骤S5:更新所述当前页号,判断所述第一缓存区中是否存在所述更新后的当前页号,是则返回步骤S4;否则结束;
步骤S6:判断是否存在与所述当前页号相同的其他页,是则擦除与所述当前页号相同的其他页,执行步骤S7;否则清除所述当前页的掉电标识,执行步骤S7;
步骤S7:更新所述当前页号,判断所述第一缓存区中是否存在当前页号,是则返回步骤S6;否则结束。
采用本发明提供的方法,通过增加磨损平衡处理机制,采用三个备份页的处理方式,即使在写入数据的时候发生掉电,也能保证更新数据的完整性。
附图说明
图1至图2为本发明实施例提供的一种进行系统写操作的方法流程图;
图3至图4为本发明实施例提供的一种磨损平衡处理函数的方法流程图;
图5为本发明实施例提供的一种进行系统读取操作的方法流程图。
图6、图7和图8为本发明实施例提供的一种提高数据写入完整性的方法流程图。
图9为本发明实施例提供的一种坏块管理模块操作的方法流程图。
具体实施方式
本实施例提供的技术方案,涉及到系统写操作,具体包括:接收物理地址、待写参数、待写参数的长度,根据这些参数计算首页页号、首页偏移量、首页待写参数长度、尾页页号以及尾页待写参数长度,根据首页页号和尾页页号,判断页数,如果是单页,则从RAM页号表中读取与首页页号对应的地址,作为首页地址,从文件系统区中的数据区中查找与首页地址对应的首页,读取首页数据,根据首页偏移量、首页待写参数长度和首页地址,将待写参数写入首页数据中,设置首页数据中的首页的掉电标识,根据首备份页标识查找首备份页,擦除首页,从RAM页号表中获取首备份页的地址,作为待写入的首页地址,用首页地址更新RAM页号表中的首备份页地址,用待写入的首页地址更新RAM页号表中的首页地址,清除首备份页的掉电标识,结束;如果是两页,则采用与写首页、写首备份页相同的方法,写尾页和尾备份页,擦除首页,擦除尾页,采用与更新首页地址和首备份页地址相同的方式,更新尾页地址和尾备份页地址,清除首备份页的掉电标识、尾备份页的掉电标识,结束;
如果是三页,先写首页和首备份页,然后根据首页页号计算中间页页号,采用与写首页、写首备份页相同的方法,写中间页和中间备份页,写尾页和尾备份页,擦除首页,擦除中间页,擦除尾页,采用与更新首页地址和首备份页地址相同的方式,更新中间页地址和中间备份页地址,采用与更新首页地址和首备份页地址相同的方式,更新尾页地址和尾备份页地址,清除首备份页的掉电标识、中间备份页的掉电标识、尾备份页的掉电标识,结束;
为了保障在进行系统写操作过程中,数据安全性,设备增加掉电恢复处理机制,具体方案包括:设备首次上电时,擦除坏页地址记录区和坏页替换区、设置文件系统区中的数据区的页号、擦除文件系统区中的备份区中的三个备份页,然后建立RAM页号表,将文件系统区中的数据区中的每个页的页号和地址写入RAM页号表中,将文件系统区中的备份区中的每个备份页的页号和地址写入RAM页号表中,等待进行系统写操作;
当设备再次上电时,读取坏页地址记录区中的坏页数目,若坏页数目在规定范围内,则从文件系统区中的数据区中遍历所有页的掉电标识和相应的页号,将该页号和该页地址存入第一缓存区中,如果第一缓存区中存在首页、中间页、尾页,或者首页、中间页,或者首页、尾页,或者首页,则循环从第一缓存区中获取页号,将其作为当前页号,如果文件系统区中的数据区中存在与当前页号相同的其他页,则擦除当前页;如果文件系统区中的数据区中不存在与当前页号相同的其他页,则清除当前页的掉电标识;如果第一缓存区中存在中间页和尾页,或者存在尾页,则循环从第一缓存区中获取页号,将其作为当前页号,如果文件系统区中的数据区中存在与当前页号相同的其他页,则擦除与当前页号相同的其他页,否则清除当前页的掉电标识。
具体地,本实施例提供一种进行系统写操作的方法,如图1至图2所示,具体包括:
步骤b1:接收物理地址、待写参数、待写参数的长度,根据物理地址和待写参数的长度计算首页页号、首页偏移量、首页待写参数长度、尾页页号、尾页待写参数长度;
具体地,接收物理地址、待写参数、待写参数的长度,将物理地址与页中有效数据长度值做除法运算,将得到的运算结果作为首页页号;将物理地址与页中有效数据长度值做求余运算,将得到的运算结果作为首页偏移量;将页中有效数据长度值减去首页偏移量,将得到的运算结果作为首页待写参数长度;将物理地址与待写参数的长度相加再减1,将得到的计算结果与页中有效数据长度值做除法运算,将得到的运算结果作为尾页页号;将物理地址与待写参数的长度相加,将得到的计算结果与页中有效数据长度值做求余运算,将得到的运算结果作为尾页待写参数长度;
其中,页中有效数据长度值为页实际长度减去掉电标识长度减去页号长度得到的结果;优选地,页实际长度为512字节;掉电标识长度为2字节;页号长度为1字节;
例如:接收到的物理地址为:500,待写参数为:0X6B8AECEE54C2C65D174C9311334B76C097B09211E61DD59BC8F7FA9F85A……03E007ACF7930C1CB72823944FC14FF88DB8FBEDF1DEFD46B8AECEE54C2C65D174C9311334B76C097B09211E61DD59BC8F7FA9F85A68F1CD5D1022F1346B745203E007ACF7930C1CB72823944FC14FF88DB75D3DF1DEFD4203E007ACF7930C1CB72823944FC14FF88DB8FBEDF1DEFD4;待写参数的长度为:600;
通过计算得到页中有效数据长度为:509;首页页号为:0;首页偏移量为9;首页待写参数长度为:500;尾页页号为:2;尾页待写参数长度为:82;
步骤b2:根据首页页号和尾页页号计算页数,判断页数,如果是1页,则执行步骤b3;如果是2页,则执行步骤b9;如果大于等于3页,则执行步骤b20;
具体地,将尾页页号与首页页号相减,对得到的运算结果进行判断,如果运算结果为0,则是1页;如果运算结果为1,则是2页;如果运算结果大于等于2,则大于等于3页;
本实施例中,以页数是3页为例进行说明;
步骤b3:将页数保存为1页,从RAM页号表中读取与首页页号对应的地址,作为首页地址,根据首页地址从文件系统区中的数据区中查找首页,读取首页数据;
具体地,将页数保存为1页,从RAM页号表中读取与首页页号对应的地址,作为首页地址,从文件系统区中的数据区中查找首页地址对应的数据作为首页数据;
步骤b4:根据首页偏移量、首页待写参数长度和首页地址,将待写参数写入首页数据中;
具体地,根据首页偏移量和首页地址,计算待写参数在首页中的起始地址,从待写参数高位端开始获取长度与首页待写参数长度相同的数据,将其作为首页待写参数,从待写参数在首页中的起始地址开始,将首页待写参数写入首页数据中。
步骤b5:将首页数据中的首页的掉电标识置位,将首页页号写入首页数据中,将首备份页标识作为备份页标识;
具体地,将首页数据中的首页的掉电标识置为0XFF00,将首页页号写入首页数据中的第三个字节上,将首备份页标识作为备份页标识;优选地,首备份页标识为back1;
步骤b6:根据页数和备份页标识从RAM页号表中获取未被使用的备份页地址,将其作为首备份页地址,根据首备份页地址查找首备份页,将首页数据写入首备份页中;
具体地,将页数和备份页标识作为参数,传给磨损平衡处理函数,获取磨损平衡处理函数返回的未被使用的备份页地址,从文件系统的备份区中查找与未被使用的备份页地址对应的首备份页,将首页数据写入首备份页中。
本步骤之后,还包括:判断是否成功将首页数据写入首备份页中,是则执行步骤b7;否则报错,结束;
其中,判断未成功将首页数据写入首备份页中时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b6;
步骤b7:擦除首页,将首备份页地址作为待写入的首页地址,用首页地址更新RAM页号表中的首备份页地址,用待写入的首页地址更新RAM页号表中的首页地址;
本步骤中,擦除首页之后,还包括:判断是否成功擦除首页,是则将首备份页地址作为待写入的首页地址,用首页地址更新RAM页号表中的首备份页地址,用待写入的首页地址更新RAM页号表中的首页地址,执行步骤b8;否则报错,结束;
其中,判断未成功擦除首页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b7;其中,当前页为首页。
步骤b8:清除首备份页的掉电标识,结束;
本实施例中,清除首备份页的掉电标识之后,还包括:判断是否成功清除首备份页的掉电标识,是则结束;否则报错,结束。
其中,判断未成功清除首备份页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b8;
步骤b9:将页数保存为2页,从RAM页号表中读取与首页页号对应的地址,作为首页地址,根据首页地址从文件系统区中的数据区中查找首页,读取首页数据;
具体地,将页数保存为2页,从RAM页号表中读取与首页页号对应的地址,作为首页地址,从文件系统区中的数据区中查找首页地址对应的数据作为首页数据;
步骤b10:根据首页偏移量、首页待写参数长度和首页地址,将待写参数写入首页数据中;
具体地,根据首页偏移量和首页地址,计算待写参数在首页中的起始地址,从待写参数高位端开始获取长度与首页待写参数长度相同的数据,将其作为首页待写参数,从待写参数在首页中的起始地址开始,将首页待写参数写入首页数据中。
步骤b11:将首页数据中的首页的掉电标识置位,将首页页号写入首页数据中,将首备份页标识作为备份页标识;
具体地,将首页数据中的首页的掉电标识置为0XFF00,将首页页号写入首页数据中的第三个字节上,将首备份页标识作为备份页标识;优选地,首备份页标识为back1;
步骤b12:根据页数和备份页标识从RAM页号表中获取未被使用的备份页地址,将其作为首备份页地址,根据首备份页地址查找首备份页,将首页数据写入首备份页中;
具体地,将页数和备份页标识作为参数,传给磨损平衡处理函数,获取磨损平衡处理函数返回的未被使用的备份页地址,从文件系统的备份区中查找与未被使用的备份页地址对应的首备份页,将首页数据写入首备份页中。
本步骤之后,还包括:判断是否成功将首页数据写入首备份页中,是则执行步骤b13;否则报错,结束;
其中,判断未成功将首页数据写入首备份页中时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b12;
步骤b13:从RAM页号表中读取与尾页页号对应的地址,作为尾页地址,根据尾页地址从文件系统区中的数据区中查找尾页,读取尾页数据;
具体地,从RAM页号表中读取与尾页页号对应的地址,作为尾页地址,从文件系统区中的数据区中查找与尾页地址对应的尾页,读取尾页数据;
步骤b14:根据尾页待写参数长度将待写参数写入尾页数据中;
步骤b15:将尾页数据中的尾页的掉电标识置位,将尾页页号写入尾页数据中,将尾备份页标识作为备份页标识;
具体地,根据尾页地址和尾页待写参数长度将待写参数写入尾页数据中,将尾页数据中的尾页的掉电标识置为0XFFFF,将尾页页号写入尾页数据中的第三个字节上,将尾备份页标识作为备份页标识;优选地,尾备份页标识为back3;
步骤b16:根据页数和备份页标识从RAM页号表中获取未被使用的备份页地址,将其作为尾备份页地址,根据尾备份页地址查找尾备份页,将尾页数据写入尾备份页中;
具体地,将页数和备份页标识作为参数,传给磨损平衡处理函数,获取磨损平衡处理函数返回的未被使用的备份页地址,从文件系统的备份区中查找与未被使用的备份页地址对应的尾备份页,将尾页数据写入尾备份页中;
本步骤之后,还包括:判断是否成功将尾页数据写入尾备份页中,是则执行步骤b17;否则报错,结束;
其中,判断未成功将尾页数据写入尾备份页中时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b16;
步骤b17:擦除首页,擦除尾页,将首备份页地址作为待写入的首页地址,用首页地址更新RAM页号表中的首备份页地址,用待写入的首页地址更新RAM页号表中的首页地址;
具体地,将文件系统区中的数据区中的首页数据置为0XFF,将文件系统区中的数据区中的尾页中的尾页数据置为0XFF;
本步骤中,擦除首页之后,还包括:判断是否成功擦除首页,是则擦除尾页;否则报错,结束;其中,判断未成功擦除首页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回重新擦除首页;
擦除尾页之后,还包括:判断是否成功擦除尾页,是则将首备份页地址作为待写入的首页地址,用首页地址更新RAM页号表中的首备份页地址,用待写入的首页地址更新RAM页号表中的首页地址,执行步骤b18;否则报错,结束;其中,判断未成功擦除尾页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回重新擦除尾页;
步骤b18:清除首备份页的掉电标识,将尾备份页地址作为待写入的尾页地址,用尾页地址更新RAM页号表中的尾备份页地址,用待写入的尾页地址更新RAM页号表中的尾页地址;
本步骤中,清除首备份页的掉电标识之后,还包括:判断是否成功清除首备份页的掉电标识,是则将尾备份页地址作为待写入的尾页地址,用尾页地址更新RAM页号表中的尾备份页地址,用待写入的尾页地址更新RAM页号表中的尾页地址,执行步骤b19;否则报错,结束;其中,判断未成功清除首备份页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b18;
步骤b19:清除尾备份页的掉电标识,结束;
本步骤中,清除尾备份页的掉电标识之后,还包括:判断是否成功清除尾备份页的掉电标识,是则结束;否则报错,结束;其中,判断未成功清除尾备份页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b19;
步骤b20:将页数保存为3页,从RAM页号表中读取与首页页号对应的地址,作为首页地址,根据首页地址从文件系统区中的数据区中查找首页,读取首页数据;
具体地,将页数保存为3页,从RAM页号表中读取与首页页号对应的地址,作为首页地址,从文件系统区中的数据区中查找首页地址对应的数据作为首页数据;
例如:从RAM页号表中读取首页页号0对应的地址,将其作为首页地址,即首页地址为:0;
从文件系统区中的数据区中查找首页地址0对应的数据,作为首页,读取到的首页数据为:00000……0000;
步骤b21:根据首页偏移量、首页待写参数长度和首页地址,将待写参数写入首页数据中;
具体地,根据首页偏移量和首页地址,计算待写参数在首页中的起始地址,从待写参数高位端开始获取长度与首页待写参数长度相同的数据,将其作为首页待写参数,从待写参数在首页中的起始地址开始,将首页待写参数写入首页数据中。
例如:以首页地址为0、首页偏移量为9、首页待写参数长度是500为例,计算得到待写参数在首页中的起始地址为9,从首页数据的高位端开始获取长度与首页待写参数长度相同的数据,将其作为首页待写参数,从首页数据中地址为9处开始写入首页待写参数,写入首页待写参数之后的首页数据为:00000000000000006B8A……D4DF1DEF;
步骤b22:将首页数据中的首页的掉电标识置位,将首页页号写入首页数据中,将首备份页标识作为备份页标识;
具体地,将首页数据中的首页的掉电标识置为0XFF00,将首页页号写入首页数据中的第三个字节上,将首备份页标识作为备份页标识;优选地,首备份页标识为back1;
步骤b23:根据页数和备份页标识从RAM页号表中获取未被使用的备份页地址,将其作为首备份页地址,根据首备份页地址查找首备份页,将首页数据写入首备份页中;
具体地,将页数和备份页标识作为参数,传给磨损平衡处理函数,获取磨损平衡处理函数返回的未被使用的备份页地址,从文件系统的备份区中查找与未被使用的备份页地址对应的首备份页,将首页数据写入首备份页中。
例如:将页数3和备份页标识back1作为参数,传给磨损平衡处理函数,获取到磨损平衡处理函数返回的未被使用的备份页地址为3072,从文件系统区中的备份区中查找3072对应的首备份页,将首页数据写入首备份页中,写入数据之后的首备份页为:
本实施例中,步骤b23之后,还包括:判断是否成功将首页数据写入首备份页中,是则执行步骤b24;否则报错,结束;其中,判断未成功将首页数据写入首备份页中时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b23;
步骤b24:根据首页页号计算中间页页号,从RAM页号表中读取与中间页页号对应的地址,作为中间页地址,根据中间页地址从文件系统区中的数据区中查找中间页,读取中间页数据;
具体地,将首页页号加1的结果作为中间页页号,从RAM页号表中读取与中间页页号对应的地址,作为中间页地址,从文件系统区中的数据区中查找与中间页地址对应的中间页,读取中间页数据;
例如:从RAM页号表中读取与中间页页号1对应的中间页地址为:512;
从文件系统区中的数据区中查找中间页地址512对应的数据,作为中间页数据,读取到的中间页数据为:0000100……00;
步骤b25:根据尾页待写参数长度、首页待写参数将待写参数写入中间页数据中,将中间页数据中的中间页的掉电标识置位,将中间页页号写入中间页数据中,将中间备份页标识作为备份页标识;
具体地,从待写参数的低位端开始获取长度与尾页待写参数长度相同的数据,将其作为尾页待写参数,从待写参数中获取除首页待写参数和尾页待写参数外的数据,将其作为中间页待写参数,将中间页待写参数写入中间页数据中,将中间页数据中的中间页的掉电标识置为0X00FF,将中间页页号写入中间页数据中的第三个字节上,将中间备份页标识作为备份页标识;
优选地,中间备份页标识为back2;
步骤b26:根据页数和备份页标识从RAM页号表中获取未被使用的备份页地址,将其作为中间备份页地址,根据中间备份页地址查找中间备份页,将中间页数据写入中间备份页中;
具体地,将页数和备份页标识作为参数,传给磨损平衡处理函数,获取磨损平衡处理函数返回的未被使用的备份页地址,从文件系统的备份区中查找与未被使用的备份页地址对应的中间备份页,将中间页数据写入中间备份页中;
例如:将页数3和中间页备份页标识back2作为参数,传给磨损平衡处理函数,获取到磨损平衡处理函数返回的未被使用的备份页地址为3584,从文件系统的备份区中查找与3584对应的中间备份页,将中间页数据写入中间备份页中,写入数据之后的中间备份页为:
本步骤之后,还包括:判断是否成功将中间页数据写入中间备份页中,是则执行步骤b27;否则报错,结束;其中,判断未成功将中间页数据写入中间备份页中时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b26;
步骤b27:从RAM页号表中读取与尾页页号对应的地址,作为尾页地址,根据尾页地址从文件系统区中的数据区中查找尾页,读取尾页数据;
具体地,从RAM页号表中读取与尾页页号对应的地址,作为尾页地址,从文件系统区中的数据区中查找与尾页地址对应的尾页,读取尾页数据;
例如:从RAM页号表中读取与尾页页号2对应的尾页地址为1024;
从文件系统区中的数据区中查找尾页地址1024对应的数据,作为尾页数据,读取到的尾页数据为:0000200……00;
步骤b28:根据尾页待写参数长度将待写参数写入尾页数据中,将尾页数据中的尾页的掉电标识置位,将尾页页号写入尾页数据中,将尾备份页标识作为备份页标识;
具体地,根据尾页地址和尾页待写参数长度将待写参数写入尾页数据中,将尾页数据中的尾页的掉电标识置为0XFFFF,将尾页页号写入尾页数据中的第三个字节上,将尾备份页标识作为备份页标识;优选地,尾备份页标识为back3;
步骤b29:根据页数和备份页标识从RAM页号表中获取未被使用的备份页地址,将其作为尾备份页地址,根据尾备份页地址查找尾备份页,将尾页数据写入尾备份页中;
具体地,将页数和备份页标识作为参数,传给磨损平衡处理函数,获取磨损平衡处理函数返回的未被使用的备份页地址,从文件系统的备份区中查找与未被使用的备份页地址对应的尾备份页,将尾页数据写入尾备份页中;
例如:将页数3和备份页标识back3作为参数,传给磨损平衡处理函数,获取到磨损平衡处理函数返回的未被使用的备份页地址为4096,从文件系统区中的备份区中查找4096对应的尾备份页,将尾页数据写入尾备份页中,写入数据之后的尾备份页为:
本步骤之后,还包括:判断是否成功将尾页数据写入尾备份页中,是则执行步骤b30;否则报错,结束;其中,判断未成功将尾页数据写入尾备份页中时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b29;
步骤b30:擦除首页,擦除中间页,擦除尾页;
具体地,将文件系统区中的数据区中的首页数据置为0XFF,将文件系统区中的数据区中的中间页数据置为0XFF,将文件系统区中的数据区中的尾页中的尾页数据置为0XFF;
例如:成功擦除首页、中间页、尾页后,文件系统区中的数据区中各页及相应的页地址为:
本步骤中,擦除首页之后,还包括:判断是否成功擦除首页,是则擦除中间页;否则报错,结束;其中,判断未成功擦除首页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b30;
擦除中间页之后,还包括:判断是否成功擦除中间页,是则擦除尾页;否则报错,结束;其中,判断未成功擦除中间页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回重新擦除中间页;
擦除尾页之后,还包括:判断是否成功擦除尾页,是则执行步骤b31;否则报错,结束;其中,判断未成功擦除尾页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回重新擦除尾页;
步骤b31:将首备份页的地址作为待写入的首页地址,用首页地址更新RAM页号表中的首备份页地址,用待写入的首页地址更新RAM页号表中的首页地址;
例如:更新后的RAM页号表为:
步骤b32:清除首备份页的掉电标识,将中间备份页的地址作为待写入的中间页地址,用中间页地址更新RAM页号表中的中间备份页地址,用待写入的中间页地址更新RAM页号表中的中间页地址;
具体地,清除首备份页的掉电标识为将首备份页中第一、第二字节上的数据作为首备份页的掉电标识,将其置为0X0000;
例如:更新后的RAM页号表为:
本步骤中,清除首备份页的掉电标识之后,还包括:判断是否成功清除首备份页的掉电标识,是则将中间备份页的地址作为待写入的中间页地址,用中间页地址更新RAM页号表中的中间备份页地址,用待写入的中间页地址更新RAM页号表中的中间页地址,执行步骤b33;否则报错,结束;其中,判断未成功清除首备份页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b32;
步骤b33:清除中间备份页的掉电标识,将尾备份页地址作为待写入的尾页地址,用尾页地址更新RAM页号表中的尾备份页地址,用待写入的尾页地址更新RAM页号表中的尾页地址;
具体地,清除中间备份页的掉电标识为将中间备份页中第一、第二字节上的数据作为中间备份页的掉电标识,将其置为0X0000;例如:更新后的RAM页号表为:
本实施例中,清除中间备份页的掉电标识之后,还包括:判断是否成功清除中间备份页的掉电标识,是则将尾备份页地址作为待写入的尾页地址,用尾页地址更新RAM页号表中的尾备份页地址,用待写入的尾页地址更新RAM页号表中的尾页地址,执行步骤b34;否则报错,结束;其中,判断未成功清除中间备份页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b33;
步骤b34:清除尾备份页的掉电标识,结束。
具体地,将尾备份页中第一、第二字节上的数据作为尾备份页的掉电标识,将其置为0X0000;
例如:清除尾备份页的掉电标识后,文件系统区中的备份区中的各备份页为:
本步骤中,清除尾备份页的掉电标识之后,还包括:判断是否成功清除尾备份页的掉电标识,是则结束;否则报错,结束。其中,判断未成功清除尾备份页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤b34;
本实施例中,将备份页标识和页数传入磨损平衡处理函数,磨损平衡处理函数对备份页标识和页数进行相应处理,得到未被使用的备份页地址,磨损平衡处理函数的具体操作方法如图3和图4所示,包括:
步骤c1:等待接收备份页标识和页数,判断备份页标识,如果是首备份页标识,则执行步骤c2;如果是中间备份页标识,则执行步骤c8;如果是尾备份页标识,则执行步骤c9;
步骤c2:判断页数,如果是1页,则执行步骤c3;如果是2页,则执行步骤c6;如果是大于等于3页,则执行步骤c7;
步骤c3:判断是否存在第一随机数,是则执行步骤c4;否则执行步骤c5;
步骤c4:更新第一随机数,根据第一随机数获取未被使用的备份页地址,返回未被使用的备份页地址,结束。
本实施例中,获取更新后的第一随机数的后两位,将其作为未被使用的备份页地址在RAM页号表中的位置,获取该位置上的数据,将其作为未被使用的备份页地址。
步骤c5:生成第一随机数,根据第一随机数获取未被使用的备份页地址,保存第一随机数,返回未被使用的备份页地址,结束。
具体地,生成第一随机数,获取第一随机数的后两位,将其作为未被使用的备份页地址在RAM页号表中的位置,获取该位置上的数据,将其作为未被使用的备份页地址。
步骤c6:生成第二随机数,根据第二随机数获取未被使用的备份页地址,保存第二随机数,返回未被使用的备份页地址,结束。
具体操作方法与步骤c5相同。
步骤c7:根据备份页标识获取未被使用的备份页地址,返回未被使用的备份页地址,结束。
具体地,将备份页标识作为未被使用的备份页地址在RAM页号表中的位置,获取该位置上的数据,将其作为未被使用的备份页地址,返回未被使用的备份页地址,结束。
步骤c8:判断页数是否合法,是则执行步骤c7;否则报错,结束。
具体地,判断页数是否大于等于3页,是则确定页数合法,执行步骤c7;否则确定不合法,报错,结束。
步骤c9:判断页数,如果是2页,则执行步骤c10;如果是大于等于3页,则执行步骤c12;如果是其他页,则报错,结束。
步骤c10:判断是否存在第二随机数,是则执行步骤c11;否则报错,结束。
步骤c11:更新第二随机数,根据第二随机数获取未被使用的备份页地址,返回未被使用的备份页地址,结束。
步骤c12:根据备份页标识获取未被使用的备份页地址,返回未被使用的备份页地址,结束。
具体地,将备份页标识作为未被使用的备份页地址在RAM页号表中的位置,获取该位置上的数据,将其作为未被使用的备份页地址,返回未被使用的备份页地址,结束。
本实施例提供一种进行系统读取操作的方法,如图5所示,具体包括:
步骤d1:接收物理地址、待读参数缓存地址、待读参数的长度,根据物理地址和待读参数的长度计算首页页号、首页偏移量、首页待读参数长度、尾页页号、尾页待读参数长度;
具体地,接收物理地址、待读参数、待读参数的长度,将物理地址与页中有效数据长度值做除法运算,将得到的运算结果作为首页页号;将物理地址与页中有效数据长度值做求余运算,将得到的运算结果作为首页偏移量;将页中有效数据长度值减去首页偏移量,将得到的运算结果作为首页待读参数长度;将物理地址与待读参数的长度相加再减1,将得到的计算结果与页中有效数据长度值做除法运算,将得到的运算结果作为尾页页号;将物理地址与待读参数的长度相加,将得到的计算结果与页中有效数据长度值做求余运算,将得到的运算结果作为尾页待读参数长度;
其中,页中有效数据长度值为页实际长度减去掉电标识长度减去页号长度得到的结果;优选地,页实际长度为512字节;掉电标识长度为2字节;页号长度为1字节;
步骤d2:根据首页页号和尾页页号,判断页数,如果是1页,则执行步骤d3;如果是2页,则执行步骤d5;如果大于等于3页,则执行步骤d10;
具体地,判断首页页号和尾页页号,如果首页页号和尾页页号相同则是1页,如果首页页号和尾页页号不相同,则判断首页页号加1的结果和尾页页号是否相同,如果判断首页页号加1的结果和尾页页号相同则是2页;如果判断首页页号加1的结果和尾页页号不相同则大于等于3页;
步骤d3:从RAM页号表中读取与首页页号对应的地址,作为首页地址,根据首页地址从文件系统区中的数据区中查找首页;
步骤d4:根据首页偏移量和首页待读参数长度,从首页中读取首页数据,将首页数据存入待读参数缓存中,结束;
具体地,在首页中,将首页偏移量作为起始位置,开始读取长度等于首页待读参数长度的数据,将读取到的数据存入待读缓存区中。
步骤d5:从RAM页号表中读取与首页页号对应的地址,作为首页地址,根据首页地址从文件系统区中的数据区中查找首页;
步骤d6:根据首页偏移量和首页待读参数长度,从首页中读取首页数据,将首页数据存入待读参数缓存中;
步骤d7:根据首页偏移量和待读参数缓存地址,计算尾页待读参数缓存地址;
具体地,将首页偏移量与待读参数缓存地址相加,将得到的计算结果作为尾页待读参数缓存地址;
步骤d8:从RAM页号表中读取与尾页页号对应的地址,作为尾页地址,根据尾页地址从文件系统区中的数据区中查找尾页;
步骤d9:根据尾页待读参数长度和尾页待读参数缓存地址,从尾页中读取尾页数据,将尾页数据存入待读参数缓存中,结束;
步骤d10:从RAM页号表中读取与首页页号对应的地址,作为首页地址,根据首页地址从文件系统区中的数据区中查找首页;
步骤d11:根据首页偏移量和首页待读参数长度,从首页中读取首页数据,将首页数据存入待读参数缓存中;
具体地,在首页中,将首页偏移量作为起始位置,开始读取长度等于首页待读参数长度的数据,将读取到的数据存入待读缓存中。
步骤d12:根据首页偏移量和待读参数缓存地址,计算中间页待读参数缓存地址;
具体地,将首页偏移量与待读参数缓存地址相加,将得到的计算结果作为中间页待读参数缓存地址;
步骤d13:从RAM页号表中读取与中间页页号对应的地址,作为中间页地址,根据中间页地址从文件系统区中的数据区中查找中间页;
步骤d14:根据中间页待读参数长度和中间页待读参数缓存地址,从中间页数据中读取中间页数据,将中间页数据存入待读参数缓存中;
步骤d15:根据预设的页长度和中间页待读参数缓存地址,计算尾页待读参数缓存地址;
具体地,将预设的页长度与中间页待读参数缓存地址相加,得到的计算结果作为尾页待读参数缓存地址;其中,预设的页长度为512;
步骤d16:从RAM页号表中读取与尾页页号对应的地址,作为尾页地址,根据尾页地址从文件系统区中的数据区中查找尾页;
步骤d17:根据尾页待读参数长度和尾页待读参数缓存地址,从尾页中读取尾页数据,将尾页数据存入待读参数缓存中,结束。
本实施例中,提供的一种提高数据写入完整性的方法,系统在上电之后会进行如下操作,如图6、图7和图8所示,具体包括:
步骤101:读取初始化标识,判断初始化标识是否置位,是则执行步骤107;否则执行步骤102;
本实施例中,初始化标识初始状态为复位。
步骤102:擦除坏页地址记录区,判断是否成功擦除坏页地址记录区,是则执行步骤103;否则结束;
本实施例中,擦除坏页地址记录区具体为:将坏页地址记录区中的各个字节上的数据置为0XFF;擦除坏页地址记录区之后,还包括:获取函数返回数据,根据返回数据判断是否成功擦除坏页地址记录区,如果返回数据为1,则执行步骤103;否则结束。
例如:成功擦除后的坏页地址记录区为:
步骤103:擦除坏页替换区,判断是否成功擦除坏页替换区,是则执行步骤104;否则结束;
本实施例中,擦除坏页替换区具体为:将坏页替换区中的各个字节上的数据置为0XFF;擦除坏页替换区之后,还包括:获取函数返回数据,根据返回数据判断是否成功擦除坏页替换区,如果返回数据为1,则执行步骤104;否则结束。
例如:成功擦除后的坏页替换区为:
步骤104:设置文件系统区中的数据区的页号,判断是否成功设置文件系统区中的数据区的页号,是则执行步骤105;否则报错,结束;
本步骤具体为:
步骤104-1:获取文件系统区中的数据区中第一个页,将其作为当前页,设置文件系统区中的数据区中第一个页号,将其作为当前页号;
优选地,页号从0开始设置,即第一个页号为0;当前页的下一个页对应的页号为当前页号加1的结果。
步骤104-2:将当前页号写入当前页,判断是否成功将当前页号写入当前页中,是则执行步骤104-3;否则报错,结束;
本实施例中,将当前页号写入当前页,具体为:将当前页号写入当前页的第三字节,将当前页中除第三字节以外的字节上的数据置为0X00;
将当前页号写入当前页之后,还包括:获取函数返回数据,根据返回数据判断是否成功将当前页号写入当前页,如果返回数据为1,则执行步骤104-3;否则报错,结束;其中,判断未成功将当前页号写入当前页中时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤104-2;
步骤104-3:判断文件系统区中的数据区中是否存在当前页的下一页,是则将当前页的下一页作为当前页,返回步骤104-2;否则执行步骤105;
例如:文件系统区中的数据区中有5个页,设置完页号的文件系统区中的数据区中各页及相应的页地址为:
步骤105:擦除文件系统区中的备份区的三个备份页,判断是否成功擦除文件系统区中的备份区文件系统的备份区的三个备份页,是则执行步骤106;否则报错,结束;
本步骤具体为:
步骤105-1:将文件系统区中的备份区文件系统的备份区的第一个备份页的第三字节作为当前页号,根据当前页号获取备份页,将其作为当前备份页;
步骤105-2:擦除当前备份页,判断是否成功擦除当前备份页,是则执行步骤105-3;否则报错,结束;
本实施例中,擦除当前备份页具体为:将当前备份页中的各个字节上的数据置为0XFF;擦除当前备份页之后,还包括:获取函数返回数据,根据返回数据判断是否成功擦除当前备份页,如果返回数据为1,则执行步骤105-3;否则报错,结束;其中,判断未成功擦除当前备份页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤105-2;
步骤105-3:判断文件系统区中的备份区文件系统的备份区中是否存在当前备份页的下一个备份页,是则执行步骤105-4;否则返回步骤106;
步骤105-4:从文件系统区中的备份区文件系统的备份区中获取当前备份页的下一个备份页,将其作为当前备份页,返回步骤105-2;
例如:文件系统区中的备份区文件系统的备份区中各备份页被擦除后,如下:
步骤106:建立RAM页号表,将文件系统区中的数据区中每个页的页号和地址写入RAM页号表中,将文件系统区中的备份区中每个备份页的页号和地址写入RAM页号表中,将初始化标识置位,进行系统写操作,结束。
具体地,
步骤106-1:建立RAM页号表;
步骤106-2:从文件系统区中的数据区中读取第一个页,将其作为当前页;
步骤106-3:获取当前页的第三个字节上的数据,将其作为当前页号,获取当前页的地址,将当前页号和当前页的地址写入RAM页号表中;
步骤106-4:判断文件系统区中的数据区中是否存在当前页的下一页,是则执行步骤106-5;否则执行步骤106-6;
步骤106-5:将当前页的下一页作为当前页,返回步骤106-3;
步骤106-6:从文件系统区中的备份区文件系统的备份区中读取第一个备份页,将其作为当前页;
步骤106-7:获取当前页的第三个字节上的数据,将其作为当前页号,获取当前页的地址,将当前页号和当前页的地址写入RAM页号表中;
步骤106-8:判断文件系统区中的备份区文件系统的备份区中是否存在当前页的下一个备份页,是则执行步骤106-9;否则将初始化标识置位,结束;
步骤106-9:将当前页的下一个备份页作为当前页,返回步骤106-7;
本实施例中,也可以按照以下顺序执行,先执行步骤106-1,然后执行步骤106-6至步骤106-9,其中,步骤106-8中的判断结果为否时,替换为执行步骤106-2至步骤106-5,相应地,步骤106-4中的判断结果为否时,替换为将初始化标识置位,结束。
例如:RAM页号表为:
本实施例中,通过执行步骤101至步骤106,完成上电初始化操作,在上电初始化操作过程中,建立RAM页号表,将初始化标识置位,在上电初始化结束之后,可以进行系统写操作。
步骤107:读取坏页地址记录区中的坏页数目,判断坏页数目是否在规定范围内,是则执行步骤108;否则结束;
具体地,读取坏页地址记录区中的记录条数,将其作为坏页数目;
步骤108:初始化存储器地址,将其作为文件系统区的当前页地址,将掉电页数置为初始值,执行步骤109;
具体地,将存储器地址置为0,将其作为当前页地址,将掉电页数置为0;
步骤109:判断文件系统区的当前页地址是否为页尾,是则执行步骤113;否则执行步骤110;
步骤110:从文件系统区的当前页地址中读取当前页的掉电标识和当前页号,判断当前页的掉电标识是否合法,是则执行步骤111;否则执行步骤112;
本实施例中,读取文件系统区的当前页中的第一至第二字节上的数据,将其作为当前页的掉电标识;读取文件系统区的当前页中的第三字节上的数据,将其作为当前页号;
步骤111:将当前页号和当前页地址存入第一缓存区中,更新掉电页数,执行步骤112;
具体地,将当前页号和当前页地址存入第一缓存区中,更新掉电页数,执行步骤112;
步骤112:更新文件系统区的当前页地址,返回步骤109;
步骤113:判断掉电页数是否大于0,是则执行步骤114;否则结束;
步骤114:获取页数,判断页数,如果是1页,则执行步骤115;如果是2页,则执行步骤118;如果大于等于3页,则执行步骤128;
步骤115:从第一缓存区中获取页号,将其作为当前页号,判断文件系统区中是否存在与当前页号相同的其他页,是则执行步骤116;否则执行步骤117;
步骤116:擦除当前页,结束;
本实施例中,擦除当前页之后,还包括:判断是否成功擦除当前页,是则结束;否则报错,结束;其中,判断未成功擦除当前页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤116;
步骤117:清除当前页的掉电标识,结束。
本实施例中,清除当前页的掉电标识之后,还包括:判断是否成功清除当前页的掉电标识,是则,结束;否则报错,结束;其中,判断未成功清除当前页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤117;
步骤118:判断第一缓存区中是否存在置位的首页的掉电标识,是则执行步骤119;否则执行步骤124;
步骤119:从第一缓存区中获取第一个页号,将其作为当前页号,执行步骤120;
步骤120:判断文件系统区中是否存在与当前页号相同的其他页,是则执行步骤121;否则执行步骤122;
步骤121:擦除当前页,执行步骤123;
本实施例中,擦除当前页之后,还包括:判断是否成功擦除当前页,是则执行步骤123;否则报错,结束;
其中,判断未成功擦除当前页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤121;
步骤122:清除当前页的掉电标识,执行步骤123;
本实施例中,清除当前页的掉电标识之后,还包括:判断是否成功清除当前页的掉电标识,是则执行步骤123;否则报错,结束。
其中,判断未成功清除当前页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤122;
步骤123:更新当前页号,判断第一缓存区中是否存在当前页号,是则执行步骤120;否则结束。
步骤124:从第一缓存区中获取第一个页号,将其作为当前页号;
步骤125:判断文件系统区中是否存在与当前页号相同的其他页,是则执行步骤126;否则执行步骤127;
步骤126:擦除与当前页号相同的其他页,结束;
本实施例中,擦除与当前页号相同的其他页之后,还包括:判断是否成功擦除与当前页号相同的其他页,是则结束;否则报错,结束;其中,判断未成功擦除与当前页号相同的其他页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤126;
步骤127:清除当前页的掉电标识,结束。
本实施例中,清除当前页的掉电标识之后,还包括:判断是否成功清除当前页的掉电标识,是则,结束;否则报错,结束;其中,判断未成功清除当前页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤127;
步骤128:判断第一缓存区中是否存在置位的首页的掉电标识,是则执行步骤129;否则执行步骤134;
本步骤还可以为:从第一缓存区中获取第一个页号,将其作为当前页号,判断第一缓存区中是否存在置位的首页的掉电标识,是则执行步骤130;否则执行步骤135;
步骤129:从第一缓存区中获取第一个页号,将其作为当前页号,执行步骤130;
步骤130:判断文件系统区中是否存在与当前页号相同的其他页,是则执行步骤131;否则执行步骤132;
步骤131:擦除当前页,执行步骤133;
本实施例中,擦除当前页之后,还包括:判断是否成功擦除当前页,是则执行步骤133;否则报错,结束;
其中,判断未成功擦除当前页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤131;
步骤132:清除当前页的掉电标识,执行步骤133;
本实施例中,清除当前页的掉电标识之后,还包括:判断是否成功清除当前页的掉电标识,是则执行步骤133;否则报错,结束。
其中,判断未成功清除当前页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤132;
步骤133:更新当前页号,判断第一缓存区中是否存在当前页号,是则执行步骤130;否则结束。
步骤134:从第一缓存区中获取第一个页号,将其作为当前页号;
步骤135:判断文件系统区中是否存在与当前页号相同的其他页,是则执行步骤136;否则执行步骤137;
步骤136:擦除与当前页号相同的其他页,执行步骤138;
本实施例中,擦除与当前页号相同的其他页之后,还包括:判断是否成功擦除与当前页号相同的其他页,是则执行步骤138;否则报错,结束;
其中,判断未成功擦除与当前页号相同的其他页时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤138;
步骤137:清除当前页的掉电标识,执行步骤138。
本实施例中,清除当前页的掉电标识之后,还包括:判断是否成功清除当前页的掉电标识,是则执行步骤138;否则报错,结束。其中,判断未成功清除当前页的掉电标识时,还可以为:将当前页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,返回步骤137;
步骤138:更新当前页号,判断第一缓存区中是否存在当前页号,是则返回步骤135;否则结束。
采用本实施例提供的技术方案,通过对初始化标识进行判断,来确定设备是否需要进行掉电恢复,如果初始化标识未置位,则设备不需要掉电恢复,直接建立RAM页号表,将文件系统区中的数据区和文件系统区中的备份区中的页的页号及地址写入RAM页号表中。如果初始化标识置位,则设备需要进行掉电恢复,获取文件系统区中的数据区中掉电标识合法的页的页号和地址,将获取到的页号和地址写入第一缓存区中,若文件系统区中的数据区中存在与该页号相同的其他页时,擦除当前页,根据当前页号更新RAM页号表;若文件系统区中的数据区中不存在与该页号相同的其他页时,根据当前页号更新RAM页号表。通过以上方法,可以恢复设备掉电时缺失的数据,保证数据的完整性。
需要说明的是,在发明实施例中,将当前页地址作为当前坏页地址,对当前坏页地址执行坏块管理模块操作,然后重新执行当前操作;其中,坏块管理模块操作的方法,具体如图9所示,包括:
步骤a1:读取坏页地址记录区中的坏页数目;
具体地,读取坏页地址记录区中的记录条数,将其作为坏页数目,以坏页地址记录区中仅有1条记录,并且是未成功将尾页数据写入尾备份页中为例:读取坏页地址记录区为:
则坏页数目为1。
步骤a2:判断坏页数目是否在规定范围内,是则执行步骤a3;否则结束;
具体地,判断坏页数目是否大于0,是则坏页数目在规定范围内,执行步骤a3;否则坏页数目不在规定范围内,结束;
例如:坏页数目为1,在规定范围内,执行步骤a3;
步骤a3:将当前坏页地址记录到坏页地址记录区中,从坏页替换区中获取未使用的页,将其作为当前页,更新坏页数目,执行步骤a4;
本实施例中,从坏页替换区中获取未使用的页,具体为:将坏页数目减去1的结果与页实际长度做乘法运算,得到的运算结果再加上坏页替换区起始地址,得到的计算结果作为坏页替换区中未使用的页的地址;其中,页实际长度为512;
例如:将当前页地址4096转换成十六进制为:0X00001000,将其写入坏页地址记录区中,写入当前地址的坏页地址记录区为:
坏页数目为1,坏页替换区起始地址为5120;计算得到的坏页替换区中未使用的页的地址为:5120;
即,从坏页替换区中获取未使用的页为:
步骤a4:判断是否存在RAM页号表,是则执行步骤a5;否则结束;
以存在RAM页号表为例,执行步骤a5;
步骤a5:用当前页地址更新RAM页号表中与当前页号对应的页地址,结束;
例如:更新后的RAM页号表为:
采用坏块管理模块提供的方法,可以实现,设备在工作过程中出现坏页时,能够记录坏页地址,并且从坏页替换区中获取未使用的页,并将该未使用的页的地址记录在RAM页号表中,以供设备在进行掉电恢复时使用。
综上所述,本发明为设备在进行写数据操作时采用的技术方案:对首页页号、尾页页号进行判断,当待写参数需要三页或三页以上时,首先,根据首页页号从文件系统区中的数据区中查找首页,将待写参数写入首页中,并将首页中的数据写入文件系统区中的备份区中的首备份页中,进行备份;然后,根据中间页页号从文件系统区中的数据区中查找中间页,将待写参数写入中间页中,并将中间页中的数据写入文件系统区中的备份区中的中间备份页中,进行备份;最后,根据尾页页号从文件系统区中的数据区中查找尾页,将待写参数写入尾页中,并将首页中的数据写入文件系统区中的备份区中的尾备份页中,进行备份;通过采用上述方法,使用三个备份页对待写入数据进行备份,既能保证写入待写参数的过程中发生掉电后,再次上电时能够进行掉电恢复,保证数据的完整性,并且在进行写数据过程中,避免经常使用文件系统区中的数据区中的一个页导致该页磨损,从而使得文件系统区中的数据区中的每个页磨损的情况大致相同。
需要说明的是,本发明提供技术方案中,操作三个页的方法同样适用于对多页进行操作,此处不再赘述。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (20)

1.一种提高数据写入完整性的方法,其特征在于,包括:
当设备上电进行数据恢复时,执行步骤S1;
步骤S1:获取每个页地址中的掉电标识和页号,将置位的掉电标识对应的页号和页地址保存至第一缓存区中,记录掉电页数;
步骤S2:根据所述掉电页数判断是否存在掉电页,是则执行步骤S3;否则结束;
步骤S3:从所述第一缓存区中获取第一个页号作为当前页号,判断所述第一缓存区中首页的掉电标识是否置位,是则执行步骤S4;否则执行步骤S6;
步骤S4:判断是否存在与所述当前页号相同的其他页,是则擦除当前页,执行步骤S5;否则清除所述当前页的掉电标识,执行步骤S5;
步骤S5:更新所述当前页号,判断所述第一缓存区中是否存在所述更新后的当前页号,是则返回步骤S4;否则结束;
步骤S6:判断是否存在与所述当前页号相同的其他页,是则擦除与所述当前页号相同的其他页,执行步骤S7;否则清除所述当前页的掉电标识,执行步骤S7;
步骤S7:更新所述当前页号,判断所述第一缓存区中是否存在当前页号,是则返回步骤S6;否则结束;
所述设备上电时,还包括:
读取初始化标识,对所述初始化标识进行判断,如果所述初始化标识未置位,则进行初始化操作,将所述初始化标识置位,执行步骤b1;如果所述初始化标识置位,则执行步骤S1;
步骤b1:接收外部传入的参数,根据所述外部传入的参数计算首页页号、首页偏移量、首页待写参数长度、尾页页号、尾页待写参数长度;
步骤b2:根据所述首页页号获取首页地址,根据所述首页地址查找首页,读取首页数据,根据所述首页偏移量、所述首页地址和所述首页待写参数长度,从所述外部传入的参数中的待写参数中获取首页待写参数,将所述首页待写参数写入所述首页数据中,将所述首页数据中的首页的掉电标识置位,将所述首页页号写入所述首页数据中,根据预设的首备份页标识获取首备份页地址,根据所述首备份页地址查找首备份页,将所述首页数据写入所述首备份页中;
步骤b3:根据所述首页页号计算中间页页号,根据所述中间页页号获取中间页地址,根据所述中间页地址查找中间页,读取中间页数据,根据所述首页待写参数长度和所述尾页待写参数长度,从所述外部传入的参数中的待写参数中获取中间页待写参数,将所述中间页待写参数写入所述中间页数据中,将所述中间页数据中的中间页的掉电标识置位,将所述中间页页号写入所述中间页数据中,根据预设的中间备份页标识获取中间备份页地址,根据所述中间备份页地址查找中间备份页,将所述中间页数据写入所述中间备份页中;
步骤b4:根据所述尾页页号获取尾页地址,根据所述尾页地址查找尾页,读取尾页数据,根据所述尾页待写参数长度,从所述外部传入的参数中的待写参数中获取尾页待写参数,将所述尾页待写参数写入所述尾页数据中,将所述尾页数据中的尾页的掉电标识置位,将所述尾页页号写入所述尾页数据中,根据预设的尾备份页标识获取尾备份页地址,根据所述尾备份页地址查找尾备份页,将所述尾页数据写入所述尾备份页中;
步骤b5:擦除所述首页,擦除所述中间页,擦除所述尾页,将所述首备份页的地址作为待写入的首页地址,用所述首页地址更新所述首备份页地址,用所述待写入的首页地址更新所述首页地址,清除首备份页的掉电标识;
步骤b6:将所述中间备份页的地址作为待写入的中间页地址,用所述中间页地址更新所述中间备份页地址,用所述待写入的中间页地址更新所述中间页地址,清除中间备份页的掉电标识;
步骤b7:将所述尾备份页的地址作为待写入的尾页地址,用所述尾页地址更新所述尾备份页地址,用所述待写入的尾页地址更新所述尾页地址,清除尾备份页的掉电标识,结束。
2.如权利要求1所述的方法,其特征在于,所述初始化操作,具体包括:
擦除坏页地址记录区,擦除坏页替换区,设置文件系统区中的数据区的页号,擦除文件系统区中的备份区中的所有备份页,建立RAM页号表,将所述文件系统区中的数据区中的每个页的页号和地址写入所述RAM页号表中,将所述文件系统区的备份区中的每个备份页的页号和地址写入所述RAM页号表中。
3.如权利要求2所述的方法,其特征在于,所述根据所述首页页号获取首页地址,根据所述首页地址查找首页,具体包括:
从所述RAM页号表中读取与所述首页页号对应的地址,作为首页地址,从所述文件系统区中的数据区中查找所述首页地址对应的首页;
所述根据预设的首备份页标识获取首备份页地址,根据所述首备份页地址查找首备份页,具体包括:
根据所述预设的首备份页标识从所述RAM页号表中获取未被使用的备份页地址,将其作为首备份页地址,从所述文件系统的备份区中查找所述首备份页地址对应的首备份页;
所述用所述首页地址更新所述首备份页地址,用所述待写入的首页地址更新所述首页地址,具体包括:
用所述首页地址更新所述RAM页号表中的首备份页地址,用所述待写入的首页地址更新所述RAM页号表中的首页地址。
4.如权利要求2所述的方法,其特征在于,所述根据所述中间页页号获取中间页地址,根据所述中间页地址查找中间页,具体包括:
从所述RAM页号表中读取与所述中间页页号对应的地址,将其作为中间页地址,从所述文件系统区中的数据区中查找所述中间页地址对应的中间页;
所述根据预设的中间备份页标识获取中间备份页地址,根据所述中间备份页地址查找中间备份页,具体包括:
根据预设的中间备份页标识从所述RAM页号表中获取未被使用的备份页地址,将其作为中间备份页地址,从所述文件系统的备份区中查找所述中间备份页地址对应的中间备份页;
所述用所述中间页地址更新所述中间备份页地址,用所述待写入的中间页地址更新所述中间页地址,具体包括:
用所述中间页地址更新所述RAM页号表中的中间备份页地址,用所述待写入的中间页地址更新所述RAM页号表中的中间页地址。
5.如权利要求2所述的方法,其特征在于,所述根据所述尾页页号获取尾页地址,根据所述尾页地址查找尾页,具体包括:
从所述RAM页号表中读取与所述尾页页号对应的地址,作为尾页地址,从所述文件系统区中的数据区中查找所述尾页地址对应的尾页;
所述根据预设的尾备份页标识获取尾备份页地址,根据所述尾备份页地址查找尾备份页,具体包括:
根据预设的尾备份页标识从所述RAM页号表中获取未被使用的备份页地址,将其作为尾备份页地址,从所述文件系统的备份区中查找所述尾备份页地址对应的尾备份页;
所述用所述尾页地址更新所述尾备份页地址,用所述待写入的尾页地址更新所述尾页地址,具体包括:
用所述尾页地址更新所述RAM页号表中的尾备份页地址,用所述待写入的尾页地址更新所述RAM页号表中的尾页地址。
6.如权利要求1所述的方法,其特征在于,所述步骤S1,具体包括:
步骤K1:初始化存储器地址,将其作为当前页地址,将掉电页数置为初始值,执行步骤K2;
步骤K2:判断当前页地址是否为页尾,是则执行步骤S2;否则执行步骤K3;
步骤K3:从所述当前页地址中读取当前页的掉电标识和当前页号,判断所述当前页的掉电标识是否合法,是则执行步骤K4;否则执行步骤K6;
步骤K4:将所述当前页号和所述当前页地址保存至所述第一缓存区中,执行步骤K5;
步骤K5:更新所述当前页地址,更新掉电页数,返回步骤K2;
步骤K6:更新所述当前页地址,返回步骤K2。
7.如权利要求1所述的方法,其特征在于,所述根据预设的首备份页标识获取首备份页地址,具体包括:
根据预设的首备份页标识获取未被使用的备份页地址,将其作为首备份页地址;
所述根据预设的中间备份页标识获取中间备份页地址,具体包括:
根据预设的中间备份页标识获取未被使用的备份页地址,将其作为中间备份页地址;
所述根据预设的尾备份页标识获取尾备份页地址,具体包括:
根据预设的尾备份页标识获取未被使用的备份页地址,将其作为尾备份页地址。
8.如权利要求1所述的方法,其特征在于,所述步骤b1,具体包括:
接收外部传入的物理地址、待写参数、待写参数的长度;
将所述物理地址与页中有效数据长度值做除法运算,将得到的运算结果作为首页页号;
将所述物理地址与所述页中有效数据长度值做求余运算,将得到的运算结果作为首页偏移量;
将所述页中有效数据长度值减去所述首页偏移量,将得到的运算结果作为首页待写参数长度;
将所述物理地址与所述待写参数的长度相加再减1,将得到的计算结果与所述页中有效数据长度值做除法运算,得到的运算结果作为尾页页号;
将所述物理地址与所述待写参数的长度相加,将得到的计算结果与所述页中有效数据长度值做求余运算,将得到的运算结果作为尾页待写参数长度。
9.如权利要求1所述的方法,其特征在于,所述根据所述首页偏移量、所述首页地址和所述首页待写参数长度,从所述外部传入的参数中的待写参数中获取首页待写参数,将所述首页待写参数写入所述首页数据中,具体包括:
根据所述首页偏移量和所述首页地址,计算所述待写参数在所述首页中的起始地址,从所述待写参数高位端开始获取长度与所述首页待写参数长度相同的数据,将其作为首页待写参数,从所述待写参数在首页中的起始地址开始,将所述首页待写参数写入所述首页数据中。
10.如权利要求9所述的方法,其特征在于,所述根据所述首页待写参数长度和所述尾页待写参数长度,从所述外部传入的参数中的待写参数中获取中间页待写参数,将所述中间页待写参数写入所述中间页数据中,具体包括:
从所述待写参数的低位端开始获取长度与所述尾页待写参数长度相同的数据,将其作为所述尾页待写参数;
从所述待写参数中获取除所述首页待写参数和所述尾页待写参数外的数据,将其作为中间页待写参数,将所述中间页待写参数写入所述中间页数据中。
11.如权利要求2所述的方法,其特征在于,所述擦除当前页之后,还包括:
判断是否成功擦除所述当前页,是则执行步骤S5;否则将所述当前页的地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,然后重新擦除当前页;
所述擦除与所述当前页号相同的其他页之后,还包括:
判断是否成功擦除与所述当前页号相同的其他页,是则执行步骤S7;否则将所述其他页的地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,然后重新擦除与所述当前页号相同的其他页;
所述清除所述当前页的掉电标识之后,还包括:
判断是否成功清除所述当前页的掉电标识,是则继续向下执行;否则将所述当前页的地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,然后重新清除所述当前页的掉电标识。
12.如权利要求2所述的方法,其特征在于,所述将所述首页数据写入所述首备份页中之后,还包括:
判断是否成功将所述首页数据写入所述首备份页中,是则执行步骤b3;否则
将首备份页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,根据预设的首备份页标识获取首备份页地址,根据所述首备份页地址查找首备份页,将所述首页数据写入所述首备份页中;
所述将中间页数据写入所述中间备份页中之后,还包括:
判断是否成功将所述中间页数据写入所述中间备份页中,是则执行步骤b4;否则将所述中间备份页的地址作为当前坏页地址,对当前坏页地址执行坏块处理操作,根据预设的中间备份页标识获取中间备份页地址,根据所述中间备份页地址查找中间备份页,将所述中间页数据写入所述中间备份页中;
所述将所述尾页数据写入所述尾备份页中之后,还包括:
判断是否成功将所述尾页数据写入所述尾备份页中,是则执行步骤b5;否则将所述尾备份页的地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,根据预设的尾备份页标识获取尾备份页地址,根据所述尾备份页地址查找尾备份页,将所述尾页数据写入所述尾备份页中。
13.如权利要求2所述的方法,其特征在于,所述擦除所述首页之后,还包括:
判断是否成功擦除所述首页,是则擦除所述中间页;否则将所述首页地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,返回步骤b5;
所述擦除所述中间页之后,还包括:
判断是否成功擦除所述中间页,是则擦除所述尾页;否则将所述中间页的地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,返回重新擦除所述中间页;
所述擦除所述尾页之后,还包括:
判断是否成功擦除所述尾页,是则将所述首备份页的地址作为待写入的首页地址,用所述首页地址更新所述首备份页地址,用所述待写入的首页地址更新所述首页地址,清除首备份页的掉电标识,执行步骤b6;否则将所述尾页地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,返回重新擦除所述尾页。
14.如权利要求2所述的方法,其特征在于,所述清除首备份页的掉电标识之后,还包括:
判断是否成功清除所述首备份页的掉电标识,是则执行步骤b6;否则将首备份页地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,重新清除所述首备份页的掉电标识;
所述清除中间备份页的掉电标识之后,还包括:
判断是否成功清除所述中间备份页的掉电标识,是则执行步骤b7;否则将所述中间备份页地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,重新清除所述中间备份页的掉电标识;
所述清除尾备份页的掉电标识之后,还包括:
判断是否成功清除所述尾备份页的掉电标识,是则结束;否则将所述尾备份页地址作为当前坏页地址,对所述当前坏页地址执行坏块处理操作,重新清除所述尾备份页的掉电标识。
15.如权利要求11至14中的任意一项所述的方法,其特征在于,所述对所述当前坏页地址执行坏块处理操作,具体包括:
步骤a1:读取所述坏页地址记录区中的坏页数目;
步骤a2:判断所述坏页数目是否在预设范围内,是则执行步骤a3;否则结束;
步骤a3:将所述当前坏页地址记录到所述坏页地址记录区中,从所述坏页替换区中获取未使用的页,将其作为当前页,更新所述坏页数目,执行步骤a4;
步骤a4:判断是否存在所述RAM页号表,是则执行步骤a5;否则结束;
步骤a5:用所述当前页地址更新所述RAM页号表中与所述当前页号对应的页地址,结束。
16.如权利要求15所述的方法,其特征在于,所述判断所述初始化标识置位之后,所述步骤S1之前,还包括:
读取所述坏页地址记录区中的坏页数据,判断所述坏页数目是是否在预设范围内,是则执行步骤S1;否则结束。
17.如权利要求1所述的方法,其特征在于,所述步骤b1之后,步骤b2之前,还包括:
根据所述首页页号和所述尾页页号判断页数,如果是1页,则执行步骤b2-1;如果大于等于3页,则执行步骤b2;
步骤b2-1:根据所述首页页号获取首页地址,根据所述首页地址查找首页,读取首页数据;
步骤b2-2:根据所述首页偏移量、所述首页地址和所述首页待写参数长度,从所述外部传入的参数中的待写参数中获取首页待写参数,将所述首页待写参数写入所述首页数据中;
步骤b2-3:将所述首页数据中的首页的掉电标识置位,将所述首页页号写入所述首页数据中,根据预设的首备份页标识获取首备份页地址,根据所述首备份页地址查找首备份页,将所述首页数据写入所述首备份页中;
步骤b2-4:擦除所述首页,将所述首备份页的地址作为待写入的首页地址,用所述首页地址更新所述首备份页地址,用所述待写入的首页地址更新所述首页地址,清除首备份页的掉电标识,结束。
18.如权利要求17所述的方法,其特征在于,所述步骤b2中还包括:将页数保存为3;所述步骤b2-1中还包括:将页数保存为1;
所述步骤S2之后,所述步骤S3之前还包括:判断页数,如果是1,则执行步骤S3’;如果是3,则执行步骤S3;
步骤S3’:从所述第一缓存区中获取页号,将其作为当前页号,判断是否存在与所述当前页号相同的其他页,是则擦除所述当前页,结束;否则清除所述当前页的掉电标识,结束。
19.如权利要求1所述的方法,其特征在于,所述步骤b1之后,步骤b2之前,还包括:
根据所述首页页号和所述尾页页号判断页数,如果是2页,执行步骤b2-1’;如果大于等于3页,则执行步骤b2;
步骤b2-1’:根据所述首页页号获取首页地址,根据所述首页地址查找首页,读取首页数据;
步骤b2-2’:根据所述首页偏移量、所述首页地址和所述首页待写参数长度,从所述外部传入的参数中的待写参数中获取首页待写参数,将所述首页待写参数写入所述首页数据中,将所述首页数据中的首页的掉电标识置位,将所述首页页号写入所述首页数据中,根据预设的首备份页标识获取首备份页地址,根据所述首备份页地址查找首备份页,将所述首页数据写入所述首备份页中;
步骤b2-3’:根据所述尾页页号获取尾页地址,根据所述尾页地址查找尾页,读取尾页数据,根据所述尾页待写参数长度,从所述外部传入的参数中的待写参数中获取尾页待写参数,将所述尾页待写参数写入所述尾页数据中,将所述尾页数据中的尾页的掉电标识置位,将所述尾页页号写入所述尾页数据中,根据预设的尾备份页标识获取尾备份页地址,根据所述尾备份页地址查找尾备份页,将所述尾页数据写入所述尾备份页中;
步骤b2-4’:擦除所述首页,擦除所述尾页,将所述首备份页的地址作为待写入的首页地址,用所述首页地址更新所述首备份页地址,用所述待写入的首页地址更新所述首页地址,清除首备份页的掉电标识;
步骤b2-5’:将所述尾备份页的地址作为待写入的尾页地址,用所述尾页地址更新所述尾备份页地址,用所述待写入的尾页地址更新所述尾页地址,清除尾备份页的掉电标识,结束。
20.如权利要求19所述的方法,其特征在于,所述步骤b2中还包括:将页数保存为3;所述步骤b2-1中还包括:将页数保存为2;
所述步骤S2之后,所述步骤S3之前还包括:判断页数,如果是2,则执行步骤S3”;如果是3,则执行步骤S3;
步骤S3”:判断所述第一缓存区中是否存在置位的首页掉电标识,是则从所述第一缓存区中获取第一个页号将其作为当前页号,执行步骤S4”;否则清除所述当前页的掉电标识,执行步骤S6”;
步骤S4”:判断是否存在与所述当前页号相同的其他页,是则擦除所述当前页,执行步骤S5”;
步骤S5”:更新所述当前页号,判断所述第一缓存区中是否存在所述当前页号,是则返回步骤S4”;否则结束;
步骤S6”;从所述第一缓存区中获取第一个页号,将其作为当前页号,判断是否存在与所述当前页号相同的其他页,是则擦除与所述当前页号相同的其他页,结束;否则清除所述当前页的掉电标识,结束。
CN201410790546.1A 2014-12-18 2014-12-18 一种提高数据写入完整性的方法 Active CN104536847B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410790546.1A CN104536847B (zh) 2014-12-18 2014-12-18 一种提高数据写入完整性的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410790546.1A CN104536847B (zh) 2014-12-18 2014-12-18 一种提高数据写入完整性的方法

Publications (2)

Publication Number Publication Date
CN104536847A CN104536847A (zh) 2015-04-22
CN104536847B true CN104536847B (zh) 2017-10-31

Family

ID=52852377

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410790546.1A Active CN104536847B (zh) 2014-12-18 2014-12-18 一种提高数据写入完整性的方法

Country Status (1)

Country Link
CN (1) CN104536847B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107678679B (zh) * 2016-08-02 2020-09-08 建兴储存科技(广州)有限公司 运用于固态储存装置的超级区块的扫描方法
CN108108271B (zh) * 2017-12-25 2020-11-03 飞天诚信科技股份有限公司 一种实现事务与掉电保护统一管理的方法及装置
CN109685190B (zh) * 2018-12-28 2022-04-12 江苏恒宝智能系统技术有限公司 一种ic卡掉电保护方法及装置
CN110750467B (zh) * 2019-10-22 2021-11-02 深圳芯邦科技股份有限公司 一种Nand Flash中干扰页的检测方法、系统
CN111105563B (zh) * 2019-12-17 2021-08-24 厦门计讯物联科技有限公司 防数据丢失的水卡数据写入方法、装置、设备及存储介质
CN112131040B (zh) * 2020-09-30 2022-02-11 郑州信大捷安信息技术股份有限公司 一种智能卡掉电备份区的磨损均衡管理方法和系统
CN112162936B (zh) * 2020-09-30 2023-06-30 武汉天喻信息产业股份有限公司 一种动态增强flash擦写次数的方法及系统
CN112667446B (zh) * 2021-01-13 2022-11-08 珠海妙存科技有限公司 Mlc nand的数据备份方法、装置及闪存系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617101A (zh) * 2013-12-12 2014-03-05 北京旋极信息技术股份有限公司 一种掉电保护方法及装置
CN103699341A (zh) * 2013-12-17 2014-04-02 飞天诚信科技股份有限公司 一种向存储设备中写数据的方法
CN103793337A (zh) * 2013-11-12 2014-05-14 飞天诚信科技股份有限公司 一种防掉电的数据保护方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089398B2 (en) * 2003-07-31 2006-08-08 Silicon Graphics, Inc. Address translation using a page size tag
KR20120129695A (ko) * 2011-05-20 2012-11-28 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793337A (zh) * 2013-11-12 2014-05-14 飞天诚信科技股份有限公司 一种防掉电的数据保护方法
CN103617101A (zh) * 2013-12-12 2014-03-05 北京旋极信息技术股份有限公司 一种掉电保护方法及装置
CN103699341A (zh) * 2013-12-17 2014-04-02 飞天诚信科技股份有限公司 一种向存储设备中写数据的方法

Also Published As

Publication number Publication date
CN104536847A (zh) 2015-04-22

Similar Documents

Publication Publication Date Title
CN104536847B (zh) 一种提高数据写入完整性的方法
CN105260270B (zh) 一种Flash存储空间的动态恢复方法及装置
CN103729303B (zh) 一种Flash的数据写入和读取方法
CN104484283B (zh) 一种降低固态硬盘写放大的方法
US20080016121A1 (en) Method, an apparatus and a system for managing a snapshot storage pool
US20150074355A1 (en) Efficient caching of file system journals
CN104487952A (zh) 用于闪存存储的i/o访问模式专用
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
CN103052945B (zh) 管理计算机存储器的方法及数据存储设备
CN109213690A (zh) 一种l2p表的重建方法及相关装置
CN102981966B (zh) 一种均衡分配Flash存储块的数据存储方法
CN106527992A (zh) 一种存储设备数据销毁方法及装置
CN103034592B (zh) 数据处理方法和装置
CN106569960B (zh) 一种混合主存的末级缓存管理方法
CN108073522A (zh) 可用于数据储存装置的垃圾搜集方法
CN106776362A (zh) 存储器的控制方法及装置
CN106610901B (zh) 存储器的磨损次数平衡方法及装置
CN106407224A (zh) 一种键值存储系统中文件压实的方法和装置
CN109582216A (zh) 数据储存装置与存储器装置的数据处理方法
CN109669889B (zh) 一种轻量型Nor Flash闪存控制方法和装置
CN105308575A (zh) 用于错误校正码(ecc)错误处理的方法和装置
CN106407130A (zh) 一种Nandflash内存数据管理的方法
CN102508743B (zh) Linux文件系统的多点备份和实时保护方法
US8321631B2 (en) Parity calculation and journal generation in a storage device with multiple storage media
CN107863127A (zh) 一种存储设备存储单元选择方法及装置

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant