一种对存储设备进行数据读写的方法及装置制造方法及图纸

技术编号:10506831 阅读:158 留言:0更新日期:2014-10-08 11:02
本发明专利技术公开了一种对存储设备进行数据读写的方法及装置,写方法为:选择系统表中循环位图的未用比特位,分配新用户数据页和新地址映射页,将待写数据写入新用户数据页,将新用户数据页的物理页号写入新地址映射页,将新地址映射页的物理页号写入系统表,将系统表写入存储设备;读方法为:从系统表中获取地址映射页的物理页号,从地址映射页获取用户数据页的物理页号,从用户数据页获取需要读取的数据。本发明专利技术的技术方案是通过系统表、地址映射页、用户数据页的两级映射关系进行数据的读写,通过管理循环位图,能够实现防掉电,通过采用缓存机制,减少对存储设备的擦写次数,实现磨损平衡。

【技术实现步骤摘要】
一种对存储设备进行数据读写的方法及装置
本专利技术涉及信息安全领域,尤其涉及一种对存储设备进行数据读写的方法及装置。
技术介绍
随着科学技术的发展,智能卡的市场不断扩大,而在使用智能卡的过程中,在未知情况下由于断电、失电或电的质量达不到要求而导致智能卡不能正常工作,如果此时智能卡正处于对存储设备(即非易失性存储区,包括EEPROM、FLASH等)进行擦写操作,则会导致存储设备中的原有数据的丢失,大大降低了智能卡的安全性。另外,在向存储设备写入数据时,需要对数据进行擦写操作,在实际的擦写操作过程中,往往会对存储设备中的某一页进行频繁擦写,使擦写达不到平衡,而存储设备的擦写生命周期一般为十万次,由于对某些页进行过度的擦写从而导致存储设备的提早损坏,严重影响存储设备的使用寿命。
技术实现思路
本专利技术为了解决现有技术中存在的不足,提供了一种对存储设备进行数据读写的方法。本专利技术采用的技术方案是:一种对存储设备进行数据写入的方法,包括:调用写入函数,向所述写入函数中传入待写数据、待写数据的长度和待写数据的逻辑地址,所述写入函数执行以下操作:步骤S1:从所述存储设备中获取系统表,将所述系统表写入系统表缓存区中,根据所述待写数据的逻辑地址,计算所述待写数据的逻辑页号,根据所述逻辑页号,计算与所述逻辑页号对应的地址映射页的逻辑页号和在所述地址映射页的页内偏移;步骤S2:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中一个未用比特位,作为第一比特位,将所述第一比特位置为已用比特位,将所述存储设备中与所述第一比特位对应的数据页作为新用户数据页;步骤S3:根据所述地址映射页的逻辑页号和在所述地址映射页的页内偏移,判断是否能够从所述地址映射页中获取到第一物理页号,如果是,则根据所述存储设备中与所述第一物理页号对应的数据、所述待写数据及所述待写数据的长度,更新所述新用户数据页,执行步骤S5,否则执行步骤S4;步骤S4:将所述新用户数据页中的数据清空,根据所述待写数据及所述待写数据的长度,更新所述新用户数据页中的数据;步骤S5:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中一个未用比特位,作为第二比特位,将所述第二比特位置为已用比特位,将所述存储设备中与所述第二比特位对应的数据页作为新地址映射页;步骤S6:判断是否能够从所述系统表缓存区的所述系统表中获取到与所述地址映射页的物理页号对应的第二物理页号,如果是,则根据所述存储设备中与所述第二物理页号对应的数据更新所述新地址映射页,执行步骤S7,否则将所述新地址映射页中的数据清空,执行步骤S7;步骤S7:将所述新用户数据页的物理页号写入所述新地址映射页中,并将所述新地址映射页的物理页号写入所述系统表缓存区的所述系统表中,获取所述系统表的循环位图中与所述地址映射页对应的比特位,将该比特位置为未用比特位;步骤S8:将所述系统表缓存区中的所述系统表写入所述存储设备的相应位置,写入结束。所述步骤S1之前,还包括:从所述存储设备中获取有效静态回收标记页,根据所述有效静态回收标记页中的静态回收标记判断是否需要进行静态回收,如果是,则执行静态回收操作,执行步骤S1,否则直接执行步骤S1。所述步骤S1中,所述从所述存储设备中获取系统表,将所述系统表写入系统表缓存区中,具体为:步骤a1:从高地址向低地址依次遍历所述存储设备中的系统区,获取系统区中页内数据全为第四预设值的第一个页,将该页的页号减一对应的页作为第一有效系统表;步骤a2:从低地址向高地址依次遍历所述存储设备中的系统区,获取系统区中页内数据全为第四预设值的第一个页时,将该页的页号加一对应的页作为第二有效系统表;步骤a3:判断所述第一有效系统表和所述第二有效系统表中的数据是否能够通过校验,如果均通过校验,则执行步骤a4;如果只有所述第一有效系统表通过校验,则将所述第一有效系统表写入所述系统表缓存区中,将所述第二有效系统表的页号记为更新索引,步骤a3结束;如果只有所述第二有效系统表通过校验,则将第二有效系统表写入系统表缓存区中,将第一有效系统表的页号记为更新索引,步骤a3结束;如果均未通过校验,则报错,步骤a3结束;步骤a4:获取并判断所述第一有效系统表和所述第二有效系统表中的新旧标记,如果是第一预设值和第二预设值,则将所述第二预设值对应的有效系统表读入所述系统表缓存区中,将所述第一预设值对应的有效系统表的页号记为更新索引,步骤a4结束;如果是所述第二预设值和第三预设值,则将所述第三预设值对应的有效系统表读入所述系统表缓存区中,将所述第二预设值对应的有效系统表的页号记为更新索引,步骤a4结束;如果是所述第三预设值和所述第一预设值,则将所述第一预设值对应的有效系统表读入所述系统表缓存区中,将所述第三预设值对应的有效系统表的页号记为更新索引,步骤a4结束。所述步骤S8,具体为:将所述系统表缓存区中的所述系统表写入所述更新索引对应的有效系统表中,更新所述更新索引对应的有效系统表中的新旧标记。所述将所述系统表缓存区中的所述系统表写入所述更新索引对应的有效系统表中,还包括:判断所述系统表缓存区中的所述系统表写入所述更新索引对应的有效系统表时是否出现坏页,如果是,则获取与所述更新索引对应的有效系统表相邻的非坏页的系统表,将所述系统表缓存区中的所述系统表写入该相邻的非坏页的系统表中,否则执行更新所述更新索引对应的有效系统表中的新旧标记的操作。所述更新所述更新索引对应的有效系统表中的新旧标记,具体为:判断所述更新索引对应的有效系统表中的新旧标记,如果是所述第一预设值,则将所述新旧标记更新为所述第三预设值,如果是所述第二预设值,则将所述新旧标记更新为所述第一预设值,如果是所述第三预设值,则将所述新旧标记更新为所述第二预设值。所述步骤S1中,所述根据所述待写数据的逻辑地址,计算所述待写数据的逻辑页号,具体为:将所述待写数据的逻辑地址除以预设页长,将得到的商作为逻辑页号。所述步骤S1中,所述根据所述逻辑页号,计算与所述逻辑页号对应的地址映射页的逻辑页号和在所述地址映射页的页内偏移,具体为:将所述逻辑页号除以预设页长的二分之一,将得到的商作为与所述逻辑页号对应的地址映射页的逻辑页号,将得到的余数作为在所述地址映射页的页内偏移。所述步骤S3中,所述根据所述地址映射页的逻辑页号和在所述地址映射页的页内偏移,判断是否能够从所述地址映射页中获取到第一物理页号,具体为:根据所述地址映射页的逻辑页号,查找所述系统表中的地址映射索引,将所述地址映射页的逻辑页号乘以2得到在地址映射索引的偏移,读取两个字节的数据,作为所述地址映射页的物理页号,然后根据所述地址映射页的物理页号和在所述地址映射页的页内偏移,从所述地址映射页中获取数据,判断获取到的数据是否为0xffff,如果是,则未找到第一物理页号,否则找到第一物理页号。所述步骤S3中,所述根据所述存储设备中与所述第一物理页号对应的数据、所述待写数据及所述待写数据的长度,更新所述新用户数据页,具体为:步骤1:将所述第一物理页号转换为第一物理地址,判断所述第一物理地址是否在用户数据缓存区中,如果是,则执行步骤2,否则执行步骤3;步骤2:根据所述待写数据及所述待写数据的长度,更新所述用户数据缓存区中的数本文档来自技高网...
一种对存储设备进行数据读写的方法及装置

【技术保护点】
一种对存储设备进行数据写入的方法,其特征在于,包括:调用写入函数,向所述写入函数中传入待写数据、待写数据的长度和待写数据的逻辑地址,所述写入函数执行以下操作:步骤S1:从所述存储设备中获取系统表,将所述系统表写入系统表缓存区中,根据所述待写数据的逻辑地址,计算所述待写数据的逻辑页号,根据所述逻辑页号,计算与所述逻辑页号对应的地址映射页的逻辑页号和在所述地址映射页的页内偏移;步骤S2:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中一个未用比特位,作为第一比特位,将所述第一比特位置为已用比特位,将所述存储设备中与所述第一比特位对应的数据页作为新用户数据页;步骤S3:根据所述地址映射页的逻辑页号和在所述地址映射页的页内偏移,判断是否能够从所述地址映射页中获取到第一物理页号,如果是,则根据所述存储设备中与所述第一物理页号对应的数据、所述待写数据及所述待写数据的长度,更新所述新用户数据页,执行步骤S5,否则执行步骤S4;步骤S4:将所述新用户数据页中的数据清空,根据所述待写数据及所述待写数据的长度,更新所述新用户数据页中的数据;步骤S5:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中一个未用比特位,作为第二比特位,将所述第二比特位置为已用比特位,将所述存储设备中与所述第二比特位对应的数据页作为新地址映射页;步骤S6:判断是否能够从所述系统表缓存区的所述系统表中获取到与所述地址映射页的物理页号对应的第二物理页号,如果是,则根据所述存储设备中与所述第二物理页号对应的数据更新所述新地址映射页,执行步骤S7,否则将所述新地址映射页中的数据清空,执行步骤S7;步骤S7:将所述新用户数据页的物理页号写入所述新地址映射页中,并将所述新地址映射页的物理页号写入所述系统表缓存区的所述系统表中,获取所述系统表的循环位图中与所述地址映射页对应的比特位,将该比特位置为未用比特位;步骤S8:将所述系统表缓存区中的所述系统表写入所述存储设备的相应位置,写入结束。...

【技术特征摘要】
1.一种对存储设备进行数据写入的方法,其特征在于,包括:调用写入函数,向所述写入函数中传入待写数据、待写数据的长度和待写数据的逻辑地址,所述写入函数执行以下操作:步骤S1:从所述存储设备中获取系统表,将所述系统表写入系统表缓存区中,根据所述待写数据的逻辑地址,计算所述待写数据的逻辑页号,根据所述逻辑页号,计算与所述逻辑页号对应的地址映射页的逻辑页号和在所述地址映射页的页内偏移;步骤S2:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中一个未用比特位,作为第一比特位,将所述第一比特位置为已用比特位,将所述存储设备中与所述第一比特位对应的数据页作为新用户数据页;步骤S3:根据所述地址映射页的逻辑页号和在所述地址映射页的页内偏移,判断是否能够从所述地址映射页中获取到第一物理页号,如果是,则根据所述存储设备中与所述第一物理页号对应的数据、所述待写数据及所述待写数据的长度,更新所述新用户数据页,执行步骤S5,否则执行步骤S4;步骤S4:将所述新用户数据页中的数据清空,根据所述待写数据及所述待写数据的长度,更新所述新用户数据页中的数据;步骤S5:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中一个未用比特位,作为第二比特位,将所述第二比特位置为已用比特位,将所述存储设备中与所述第二比特位对应的数据页作为新地址映射页;步骤S6:判断是否能够从所述系统表缓存区的所述系统表中获取到与所述地址映射页的物理页号对应的第二物理页号,如果是,则根据所述存储设备中与所述第二物理页号对应的数据更新所述新地址映射页,执行步骤S7,否则将所述新地址映射页中的数据清空,执行步骤S7;步骤S7:将所述新用户数据页的物理页号写入所述新地址映射页中,并将所述新地址映射页的物理页号写入所述系统表缓存区的所述系统表中,获取所述系统表的循环位图中与所述地址映射页对应的比特位,将该比特位置为未用比特位;步骤S8:将所述系统表缓存区中的所述系统表写入所述存储设备的相应位置,写入结束。2.根据权利要求1所述的方法,其特征在于,所述步骤S1之前,还包括:从所述存储设备中获取有效静态回收标记页,根据所述有效静态回收标记页中的静态回收标记判断是否需要进行静态回收,如果是,则执行静态回收操作,执行步骤S1,否则直接执行步骤S1。3.根据权利要求1所述的方法,其特征在于,所述步骤S1中,所述从所述存储设备中获取系统表,将所述系统表写入系统表缓存区中,具体为:步骤a1:从高地址向低地址依次遍历所述存储设备中的系统区,获取系统区中页内数据全为第四预设值的第一个页,将该页的页号减一对应的页作为第一有效系统表;步骤a2:从低地址向高地址依次遍历所述存储设备中的系统区,获取系统区中页内数据全为第四预设值的第一个页时,将该页的页号加一对应的页作为第二有效系统表;步骤a3:判断所述第一有效系统表和所述第二有效系统表中的数据是否能够通过校验,如果均通过校验,则执行步骤a4;如果只有所述第一有效系统表通过校验,则将所述第一有效系统表写入所述系统表缓存区中,将所述第二有效系统表的页号记为更新索引,步骤a3结束;如果只有所述第二有效系统表通过校验,则将第二有效系统表写入系统表缓存区中,将第一有效系统表的页号记为更新索引,步骤a3结束;如果均未通过校验,则报错,步骤a3结束;步骤a4:获取并判断所述第一有效系统表和所述第二有效系统表中的新旧标记,如果是第一预设值和第二预设值,则将所述第二预设值对应的有效系统表读入所述系统表缓存区中,将所述第一预设值对应的有效系统表的页号记为更新索引,步骤a4结束;如果是所述第二预设值和第三预设值,则将所述第三预设值对应的有效系统表读入所述系统表缓存区中,将所述第二预设值对应的有效系统表的页号记为更新索引,步骤a4结束;如果是所述第三预设值和所述第一预设值,则将所述第一预设值对应的有效系统表读入所述系统表缓存区中,将所述第三预设值对应的有效系统表的页号记为更新索引,步骤a4结束。4.根据权利要求3所述的方法,其特征在于,所述步骤S8,具体为:将所述系统表缓存区中的所述系统表写入所述更新索引对应的有效系统表中,更新所述更新索引对应的有效系统表中的新旧标记。5.根据权利要求4所述的方法,其特征在于,所述将所述系统表缓存区中的所述系统表写入所述更新索引对应的有效系统表中,还包括:判断所述系统表缓存区中的所述系统表写入所述更新索引对应的有效系统表时是否出现坏页,如果是,则获取与所述更新索引对应的有效系统表相邻的非坏页的系统表,将所述系统表缓存区中的所述系统表写入该相邻的非坏页的系统表中,否则执行更新所述更新索引对应的有效系统表中的新旧标记的操作。6.根据权利要求4所述的方法,其特征在于,所述更新所述更新索引对应的有效系统表中的新旧标记,具体为:判断所述更新索引对应的有效系统表中的新旧标记,如果是所述第一预设值,则将所述新旧标记更新为所述第三预设值,如果是所述第二预设值,则将所述新旧标记更新为所述第一预设值,如果是所述第三预设值,则将所述新旧标记更新为所述第二预设值。7.根据权利要求1所述的方法,其特征在于,所述步骤S1中,所述根据所述待写数据的逻辑地址,计算所述待写数据的逻辑页号,具体为:将所述待写数据的逻辑地址除以预设页长,将得到的商作为逻辑页号。8.根据权利要求1所述的方法,其特征在于,所述步骤S1中,所述根据所述逻辑页号,计算与所述逻辑页号对应的地址映射页的逻辑页号和在所述地址映射页的页内偏移,具体为:将所述逻辑页号除以预设页长的二分之一,将得到的商作为与所述逻辑页号对应的地址映射页的逻辑页号,将得到的余数作为在所述地址映射页的页内偏移。9.根据权利要求1所述的方法,其特征在于,所述步骤S3中,所述根据所述地址映射页的逻辑页号和在所述地址映射页的页内偏移,判断是否能够从所述地址映射页中获取到第一物理页号,具体为:根据所述地址映射页的逻辑页号,查找所述系统表中的地址映射索引,将所述地址映射页的逻辑页号乘以2得到在地址映射索引的偏移,读取两个字节的数据,作为所述地址映射页的物理页号,然后根据所述地址映射页的物理页号和在所述地址映射页的页内偏移,从所述地址映射页中获取数据,判断获取到的数据是否为0xffff,如果是,则未找到第一物理页号,否则找到第一物理页号。10.根据权利要求1所述的方法,其特征在于,所述步骤S3中,所述根据所述存储设备中与所述第一物理页号对应的数据、所述待写数据及所述待写数据的长度,更新所述新用户数据页,具体为:步骤1:将所述第一物理页号转换为第一物理地址,判断所述第一物理地址是否在用户数据缓存区中,如果是,则执行步骤2,否则执行步骤3;步骤2:根据所述待写数据及所述待写数据的长度,更新所述用户数据缓存区中的数据,执行步骤S5;步骤3:将所述第一物理地址对应的存储设备中的数据写入所述用户数据缓存区中,根据所述待写数据及所述待写数据的长度,更新所述用户数据缓存区中的数据,执行步骤S5;所述步骤S8之前还包括:将所述用户数据缓存区中的数据写入所述新用户数据页中。11.根据权利要求10所述的方法,其特征在于,所述将所述用户数据缓存区中的数据写入所述新用户数据页中,还包括:判断所述用户数据缓存区中的数据写入所述新用户数据页时是否出现坏页,如果是,则返回执行步骤S2,否则将所述用户数据缓存区中的数据写入所述新用户数据页中。12.根据权利要求11所述的方法,其特征在于,所述判断所述用户数据缓存区中的数据写入存储设备的相应位置时是否出现坏页,具体为:步骤aa1:将执行写入读出次数置为初始值;步骤aa2:将所述用户数据缓存区中的数据写入存储设备的相应位置后,再从该相应位置中将该数据读出,判断读出的数据与写入的数据是否相同,如果是,则未出现坏页,否则更新所述执行写入读出的次数,执行步骤aa3;步骤aa3:判断执行写入读出的次数是否达到预设次数,如果是,则所述用户数据缓存区中的数据写入的对应的存储设备区域为坏页,否则返回步骤aa2。13.根据权利要求1所述的方法,其特征在于,所述步骤S6中,所述根据所述存储设备中与所述第二物理页号对应的数据更新所述新地址映射页,具体为:步骤b1:将所述第二物理页号转换为第二物理地址,判断所述第二物理地址是否在地址映射缓存区中,如果是,则执行步骤b3,否则执行步骤b2;步骤b2:将所述第二物理地址对应存储设备中的数据写入所述地址映射缓存区中,执行步骤b3;步骤b3:将所述地址映射缓存区中的数据写入所述存储设备中的所述新地址映射页中,执行步骤S7。14.根据权利要求13所述的方法,其特征在于,所述步骤b3,还包括:判断所述地址映射缓存区中的数据写入所述存储设备中的所述新地址映射页时是否出现坏页,如果是,则返回步骤S5,否则将所述地址映射缓存区中的数据写入所述存储设备中的所述新地址映射页中。15.根据权利要求14所述的方法,其特征在于,所述判断所述地址映射缓存区中的数据写入所述存储设备中的所述新地址映射页时是否出现坏页,具体为:步骤bb1:将执行写入读出的操作次数置为初始值;步骤bb2:将所述地址映射缓存区中的数据写入存储设备的相应位置后,再从该相应位置处将该数据读出,判断读出的数据与写入的数据是否相同,如果是,则未出现坏页,否则更新所述执行写入读出的次数,执行步骤bb3;步骤bb3:判断执行写入读出的操作次数是否达到预设次数,如果是,则所述地址映射缓存区中的数据写入所述存储设备中的所述新地址映射页为坏页,否则返回步骤bb2。16.根据权利要求1所述的方法,其特征在于,所述步骤S7与所述步骤S8之间还包括:步骤c1:根据所述新用户数据页的物理页号和所述新地址映射页的物理页号,计算对应的擦除计数页;步骤c2:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中一个未用比特位,作为第三比特位,将所述第三比特位置为已用比特位,将所述存储设备中所述第三比特位对应的数据页作为新擦除计数页;步骤c3:判断从所述系统表中是否能够获取到与所述擦除计数页的页号对应的第三物理页号,如果是,则将所述第三物理页号对应存储设备中的数据写入所述新擦除计数页中,执行步骤c4,否则将所述新擦除计数页中的数据清空,执行步骤c4;步骤c4:从所述新擦除计数页中分别查找与所述新用户数据页和所述新地址映射页对应的擦除次数,更新对应的擦除次数,根据所述新擦除计数页的页号和更新后的擦除次数更新所述系统表缓存区中的所述系统表,执行步骤S8。17.根据权利要求16所述的方法,其特征在于,所述步骤c3中,所述将所述第三物理页号对应存储设备中的数据写入所述新擦除计数页中,具体为:步骤e1:将所述第三物理页号转换为第三物理地址,判断所述第三物理地址是否在擦除计数缓存区中,如果是,则执行步骤e3,否则执行步骤e2;步骤e2:将所述第三物理地址对应存储设备中的数据写入所述擦除计数缓存区中,执行步骤e3;步骤e3:将所述擦除计数缓存区中的数据写入所述存储设备中的所述新擦除计数页中,执行步骤c4。18.根据权利要求17所述的方法,其特征在于,所述步骤e3,还包括:判断所述擦除计数缓存区中的数据写入所述存储设备中的所述新擦除计数页中时是否出现坏页,如果是,则返回步骤S5,否则将所述擦除计数缓存区中的数据写入所述存储设备中的所述新擦除计数页中。19.根据权利要求18所述的方法,其特征在于,所述判断所述擦除计数缓存区中的数据写入所述存储设备中的所述新擦除计数页中时是否出现坏页,具体为:步骤cc1:将执行写入读出的操作次数置为初始值;步骤cc2:将所述擦除计数缓存区中的数据写入存储设备的相应位置后,再从该相应位置中将该数据读出,判断读出的数据与写入的数据是否相同,如果是,则未出现坏页,否则更新所述执行写入读出的次数,执行步骤cc3;步骤cc3:判断执行写入读出的操作次数是否达到预设次数,如果是,则所述擦除计数缓存区中的数据写入所述存储设备中的所述新擦除计数页为坏页,否则返回步骤cc2。20.根据权利要求16所述的方法,其特征在于,所述从所述新擦除计数页中分别查找与所述新用户数据页和所述新地址映射页对应的擦除次数,更新对应的擦除次数,具体为:将所述新擦除计数页中与所述新用户数据页和所述新地址映射页对应的擦除次数均加0x01。21.根据权利要求16所述的方法,其特征在于,所述根据所述新擦除计数页的页号和更新后的擦除次数更新所述系统表缓存区中的所述系统表,具体为:根据所述更新后的擦除次数更新所述系统表缓存区中的所述系统表中的擦除总数,并将所述新擦除计数页的页号写入所述系统表缓存区中的所述系统表中。22.根据权利要求16所述的方法,其特征在于,所述步骤c4与所述步骤S8之间还包括:步骤f1:判断所述新擦除计数页中的擦除次数是否大于第一预设值,如果是,则将静态回收标记置为需要进行静态回收,执行步骤f2,否则执行步骤f2;步骤f2:获取所述系统表中的擦除总数,根据所述擦除总数,计算得到平均擦除次数,判断所述平均擦除次数是否大于第二预设值,如果是,则将所述静态回收标记置为需要进行静态回收,执行步骤S8,否则直接执行步骤S8。23.根据权利要求2所述的方法,其特征在于,所述执行静态回收操作,具体为:步骤g1:从所述存储设备中获取系统表,将所述系统表写入系统表缓存区中,获取系统表缓存区中系统表的所有地址映射页,将所有地址映射页中的第一个地址映射页作为当前地址映射页;步骤g2:判断当前地址映射页的擦除次数是否达到第六预设值,如果是,则根据当前地址映射页的物理页号计算当前地址映射页的第四物理地址,执行步骤g3,否则执行步骤g16;步骤g3:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中的一个未用比特位,作为第四比特位,将所述第四比特位置为已用比特位,将所述第四比特位对应的存储设备区域作为待回收地址映射页;步骤g4:判断所述待回收地址映射页的擦除次数是否小于第六预设值,如果是,则将第四比特位置为未用比特位,执行步骤g3,否则执行步骤g5;步骤g5:判断地址映射缓存区中是否存在空闲缓存页,如果是,则执行步骤g7,否则将地址映射缓存区中的数据写入存储设备的相应位置,并将地址映射缓存区置为空闲,执行步骤g6;步骤g6:判断地址映射缓存区中的数据写入存储设备的相应位置时是否出现坏页,如果是,则执行步骤g3,否则执行步骤g7;步骤g7:将当前地址映射页中的数据写入地址映射缓存区中,根据新地址映射页修改所述系统表缓存区中当前地址映射页对应的页号,获取当前地址映射页中所有用户数据页的物理页号,将第一个用户数据页作为当前用户数据页;步骤g8:判断当前用户数据页的擦除次数是否达到第六预设值,如果是,则根据当前用户数据页的物理页号计算当前用户数据页的第五物理地址,执行步骤g9,否则执行步骤g15;步骤g9:从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中的一个未用比特位,作为第五比特位,将所述第五比特位置为已用比特位,将所述第五比特位对应的存储设备区域作为待回收用户数据页;步骤g10:判断所述待回收用户数据页的擦除次数是否小于第六预设值,如果是,则将第五比特位置为未用比特位,执行步骤g9,否则执行步骤g11;步骤g11:判断用户数据缓存区中是否存在空闲缓存页,如果是,则执行步骤g14,否则将用户数据缓存区中的数据写入存储设备的相应位置,并将用户缓存区置为空闲,执行步骤g12;步骤g13:判断所述用户数据缓存区中的数据写入存储设备的相应位置时是否出现坏页,如果是,则执行步骤g9,否则执行步骤g14;步骤g14:将当前用户数据页中的数据写入所述用户数据缓存区中,根据新用户数据页修改当前地址映射页中当前用户数据页对应的页号;步骤g15:判断是否处理完当前地址映射页中的所有用户数据页,如果是,则执行步骤g16,否则将当前用户数据页的下一用户数据页作为当前用户数据页,返回执行步骤g8;步骤g16:判断是否处理完系统表缓存区中系统表的所有地址映射页,如果是,则将静态回收标记置为不需要进行静态回收,将系统表缓存区中的系统表写入存储设备中,回收成功,结束,否则将当前地址映射页的下一地址映射页作为当前地址映射页,返回执行步骤g2。24.根据权利要求1或16所述的方法,其特征在于,所述从所述系统表缓存区中查询所述系统表中的循环位图,具体为:逐位查询所述系统表缓存区中所述系统表中的循环位图。25.根据权利要求1或16所述的方法,其特征在于,所述从所述系统表缓存区中查询所述系统表中的循环位图,具体为:从所述系统表缓存区中获取所述系统表中的动态控制指令,根据所述动态控制指令获取循环位图中相应的位置。26.一种对存储设备进行数据读取的方法,其特征在于,包括:调用读取函数,向所述读取函数中传入读取地址和读取长度,所述读取函数执行以下操作:步骤A1:从所述存储设备中获取系统表,判断所述系统表是否为空,如果是,则执行步骤A7,否则执行步骤A2;步骤A2:根据所述读取地址计算逻辑页号,根据所述逻辑页号计算与所述逻辑页号对应的地址映射页的物理页号和所述逻辑页号在所述地址映射页的页内偏移;步骤A3:判断所述地址映射页的物理页号是否为第四预设值,如果是,则执行步骤A7,否则执行步骤A4;步骤A4:根据所述地址映射页的物理页号和在所述地址映射页的页内偏移,从所述地址映射页中读出用户数据页的物理页号;步骤A5:判断所述用户数据页的物理页号是否为所述第四预设值,如果是,则执行步骤A7,否则执行步骤A6;步骤A6:根据所述读取地址和所述读取长度,从所述用户数据页中读出相应的数据,并将所述相应的数据返回,读取结束;步骤A7:根据所述读取长度,返回长度为所述读取长度的第五预设值,读取结束。27.根据权利要求26所述的方法,其特征在于,所述从所述存储设备中获取系统表,具体包括:步骤h1:从高地址向低地址依次遍历所述存储设备中的系统区,获取系统区中页内数据全为第二预设值的第一个页,将所述获取到的第一个页的页号减一对应的页作为第一有效系统表;步骤h2:从低地址向高地址依次遍历所述存储设备中的系统区,获取系统区中页内数据全为第二预设值的第一个页,将所述获取到的第一个页的页号加一对应的页作为第二有效系统表;步骤h3:判断所述第一有效系统表和所述第二有效系统表中的数据是否能够通过校验,如果均通过校验,则执行步骤h4;如果只有所述第一有效系统表通过校验,则将所述第一有效系统表写入所述系统表缓存区中,执行步骤A2;如果只有所述第二有效系统表通过校验,则将所述第二有效系统表写入所述系统表缓存区中,执行步骤A2;如果均未通过校验,则报错,结束;步骤h4:分别获取所述第一有效系统表和所述第二有效系统表中的新旧标记,如果是第一预设值和第二预设值,则将所述第二预设值对应的有效系统表读入所述系统表缓存区中;如果是所述第二预设值和第三预设值,则将所述第三预设值对应的有效系统表读入所述系统表缓存区中;如果是所述第三预设值和所述第一预设值,则将所述第一预设值对应的有效系统表读入所述系统表缓存区中,执行步骤A2。28.根据权利要求26所述的方法,其特征在于,所述步骤A2中,所述根据所述读取地址计算逻辑页号,具体为:将所述读取地址除以预设页长,将得到的商作为逻辑页号;所述步骤A2中,所述根据所述逻辑页号计算与所述逻辑页号对应的地址映射页的物理页号和所述逻辑页号在地址映射页的页内偏移,具体为:将所述逻辑页号除以预设页长,根据得到的商从所述系统表中获取与所述逻辑页号对应的地址映射页的物理页号,将得到的余数作为所述逻辑页号在所述地址映射页的页内偏移。29.根据权利要求26所述的方法,其特征在于,所述步骤A3与所述步骤A4之间还包括:将所述地址映射页的物理页号转换为所述地址映射页的物理地址,判断从地址映射缓存区中是否能够找到所述地址映射页的物理地址,如果是,则根据所述地址映射页的物理页号和在地址映射页的页内偏移,从所述地址映射缓存区中读出用户数据页的物理页号,执行步骤A5,否则执行步骤A4。30.根据权利要求26所述的方法,其特征在于,所述步骤A5与所述步骤A6之间还包括:将所述用户数据页的物理页号转换为所述用户数据页的物理地址,判断用户数据缓存区中是否存在所述用户数据页的物理地址,如果是,则根据所述读取地址和所述读取长度,从所述用户数据缓存区中读取相应的数据,将读取到的数据返回,读取结束,否则执行步骤A6。31.一种对存储设备进行数据写入的装置,其特征在于,包括:调用模块:用于调用写入函数,向所述写入函数传入待写数据、待写数据的长度和待写数据的逻辑地址;获取模块:用于当所述调用模块向所述写入函数传入待写数据、待写数据的长度和待写数据的逻辑地址后,从所述存储设备中获取系统表;计算模块:用于根据待写数据的逻辑地址,计算所述待写数据的逻辑页号;用于根据所述逻辑页号,计算与所述逻辑页号对应的地址映射页的逻辑页号和在所述地址映射页的页内偏移;选择模块:用于当所述计算模块计算得到与所述逻辑页号对应的地址映射页的逻辑页号和在所述地址映射页的页内偏移时,从所述系统表缓存区中查询所述系统表中的循环位图,选择所述循环位图中的一个未用比特位,作为第一比特位,将所述第一比特位置为已用...

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:北京;11

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

1