System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种NVM空间分配方法和装置制造方法及图纸_技高网

一种NVM空间分配方法和装置制造方法及图纸

技术编号:40708877 阅读:2 留言:0更新日期:2024-03-22 11:09
本发明专利技术公开了一种NVM空间分配方法和装置,其中该方法包括:确定待存入NVM空间的数据类别,所述数据类别包括对象和包;当确定所述数据类别为对象时,将所述对象从NVM用户区的底部向顶部分配空间,当确定所述数据类别为包时,将所述包从NVM用户区的顶部向底部分配空间,以对NVM空间进行分配管理。本申请能够提高NVM空间的存储利用率和存储速率。

【技术实现步骤摘要】

本专利技术涉及嵌入式,尤其涉及一种nvm空间分配方法和装置。


技术介绍

1、nvm是非易失存储器,包括但不限于flash、eeprom等,在智能卡系统中,如何提高nvm空间的存储利用率一直是行业内研究的重点问题。在一个事务中,存储的内容会包括对象和包两大类,现有技术的做法是不会对这两类内容进行区别,统一采用的是顺序存储,即由顶部(小地址)向底部(大地址)依次夹杂分配空间。但是这两类内容的文件特性并不相同,如果采用上述存储方式,会造成很多存储混乱,且影响nvm空间的存储速率和空间利用率。

2、因此,如何提高nvm空间的存储利用率,是目前亟需解决的技术问题。


技术实现思路

1、本专利技术主要目的在于提供一种nvm空间分配方法和装置,能够提高nvm空间的存储利用率和存储速率。

2、第一方面,本申请提供了一种nvm空间分配方法,其中该方法包括:

3、确定待存入nvm空间的数据类别,所述数据类别包括对象和包;

4、当确定所述数据类别为对象时,将所述对象从nvm用户区的底部向顶部分配空间,当确定所述数据类别为包时,将所述包从nvm用户区的顶部向底部分配空间,以对nvm空间进行分配管理。

5、结合上述第一方面,作为一种可选的实现方式,建立包逻辑表进行包管理、包的空间申请和空间释放、包的空间紧凑,其中,包逻辑表记录每个包的起始地址,所管理的最多包个数即包逻辑表的记录表项;

6、包按照包申请的先后顺序依次存放,依据包的起始地址和其下一个包的起始地址,计算出包的长度。

7、结合上述第一方面,作为一种可选的实现方式,按照应用要求的长度,将最后一个包尾地址为起始地址的nvm连续空间分配给该包,在包逻辑表中记录该起始地址,并将包逻辑表的记录地址返回给应用,以完成包的空间申请;

8、按照应用要求指定包所占用空间,标记该包对应的包逻辑表记录,为后续包紧凑后该空间分配给其它包或对象使用,以完成包的空间释放。

9、结合上述第一方面,作为一种可选的实现方式,所述包的空间紧凑,包括:

10、当任意包的使用空间被释放时,确定释放的包的地址,并查找下一个包的地址和最后一个包的地址;

11、通过所述最后一个包的尾地址与所述下一个包的起始地址之间的差值,计算得到需平移的总长度;

12、将所述释放的包后面所有包的地址依次向前平移,以对nvm空间进行紧凑操作;

13、当释放包的长度小于一个nvm页时,包紧凑平移操作采用页备份的方式进行;

14、根据每个包所对应的包逻辑表记录项中的包起始地址,确定包的存储地址。

15、当紧凑操作完成后,同步更新所有包对应的包逻辑表记录项。

16、结合上述第一方面,作为一种可选的实现方式,建立对象逻辑表和对象状态表进行对象管理、对象的空间申请和空间释放、对象的空间紧凑,其中,对象逻辑表记录对象起始地址所在nvm页的页起始地址;

17、对象状态表记录nvm用户区存储单元的使用状态:

18、当nvm存储单元为空闲状态,则标记为1;

19、当nvm存储单元为占用状态,则标记为0。

20、结合上述第一方面,作为一种可选的实现方式,当对象申请长度小于nvm的页长度,则从最顶部对象向nvm用户区底部查找碎片;

21、如找到足够分配的碎片,则将该碎片起始地址对应的对象逻辑表记录项逻辑地址及该碎片起始地址对应nvm物理页中的偏移返回给应用;

22、当对象申请长度大于或等于nvm的页长度或对象申请长度小于nvm的页长度,但没有找到足够分配的碎片,则将当前最顶部对象的起始地址作为尾地址向顶部延申应用要求长度的nvm用户区连续空间分配给该对象,在对象逻辑表对应记录项记录物理页地址,在对象状态表中标记该空间为占用状态,并将对象逻辑表的记录地址及页偏移返回给应用,以完成对象的空间申请;

23、按照应用要求指定对象所占用空间,将对应的对象状态表修改为空闲状态;如释放后nvm完整页空闲,则删除对应的对象逻辑表记录项;

24、当任意对象的使用空间被释放时,将所述任意对象所对应原始分配的空间作为空闲区进行保留,并当待分配下一个对象时,判断所述空闲区空间是否满足待分配对象的存储空间;

25、若是,将所述待分配对象存储在所述空闲区间;

26、若不是,依次按照所述对象的预设空间存储规则分配存储空间,并存储,以完成对象的空间释放。

27、结合上述第一方面,作为一种可选的实现方式,当用户区的存储达到饱和时,基于对象状态表,对nvm中整页空闲的空间进行紧凑操作,将上方的非整页空闲的页转移存储到下方的整页空闲页,并同步修改对象逻辑表对应的记录项和对象状态表对应的记录项。

28、结合上述第一方面,作为一种可选的实现方式,包的事务开启、事务处理、事务取消和事务完成;

29、所述包的事务开启包括:将pkg_logic_table拷贝至pkg_logic_table_bak;

30、所述包的事务处理包括:一个包事务中可以有多个包申请和一个包释放;包申请和包释放,只修改pkg_logic_table_bak中的对应记录项;

31、所述包的事务取消操作包括:已经完成一个或多个包申请和/或一个包释放;中途希望取消上述操作,则回滚到包事务开启前的状态;

32、所述包的事务完成操作包括:将pkg_logic_table_bak拷贝至pkg_logic_table;

33、包事务防掉电处理;

34、所述包事务防掉电处理包括:当在所述包事务处理过程中意外掉电,再次上电时,回滚到包事务开启前的状态;

35、对象的事务开启、事务处理、事务取消和事务完成;

36、所述对象的事务开启操作包括:将obj_logic_table拷贝至obj_logic_table_bak,并将obj_state_table拷贝至obj_state_table_bak;

37、所述对象的事务处理操作包括:一个对象事务中可以有多个对象申请和/或多个对象释放;对象申请和对象释放,只修改obj_logic_table_bak中的对应记录项和obj_state_table_bak中的对应记录项;

38、所述对象的事务取消操作包括:已经完成一个或多个对象申请及一个或多个对象释放;中途希望取消上述操作,则回滚到对象事务开启前的状态;

39、所述对象的事务完成操作包括:将obj_logic_table_bak拷贝至obj_logic_table,并将obj_state_table_bak拷贝至obj_state_table;

40、对象事务防掉电处理;

41、所述对象事务防掉电处理包括:当在所述对象事务过程中发生意外掉电,再次上电时,回滚到对象事务开启前的状态;...

【技术保护点】

1.一种NVM空间分配方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述对NVM空间进行分配管理,包括:

3.根据权利要求2所述的方法,其特征在于,所述包的空间申请和空间释放包括:

4.根据权利要求2所述的方法,其特征在于,包括:

5.根据权利要求1所述的方法,其特征在于,所述对NVM空间进行分配管理,还包括:

6.根据权利要求5所述的方法,其特征在于,所述对象的空间申请和空间释放,包括:

7.根据权利要求5所述的方法,其特征在于,所述对象的空间紧凑,包括:

8.根据权利要求2或5所述的方法,其特征在于,包括:

9.根据权利要求2或5所述的方法,其特征在于,包括:

10.一种实现如权利要求1-9任一项所述的NVM空间分配方法的NVM空间分配装置,其特征在于,包括:

【技术特征摘要】

1.一种nvm空间分配方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述对nvm空间进行分配管理,包括:

3.根据权利要求2所述的方法,其特征在于,所述包的空间申请和空间释放包括:

4.根据权利要求2所述的方法,其特征在于,包括:

5.根据权利要求1所述的方法,其特征在于,所述对nvm空间进行分配管理,还包括:

6.根...

【专利技术属性】
技术研发人员:程诗猛肖灵周杰董逢华
申请(专利权)人:武汉天喻信息产业股份有限公司
类型:发明
国别省市:

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

1