发明名称 基于非易失性内存的可在线恢复对象分配器设计方法
摘要 本发明提供一种基于非易失性内存的可在线恢复的对象分配器设计方法,包括:使用两个版本号保存每个对象的分配信息;使用版本矩阵保存非易失性内存中每个对象的版本号;在对象分配和对象释放过程中不需要进行持久化操作;故障后的恢复过程中,分配器无需等待恢复完成,可根据已持久化的信息处理新的请求;使用两个版本号在恢复过程中验证一个对象是否在恢复中被重新分配。本发明消除了在分配和释放的时的持久化操作,在故障发生后能够在对分配信息进行恢复的同时,根据已经持久化的信息处理新的请求,提高了正常运行情况下以及在故障发生后对象分配的性能,减少了因故障宕机和恢复导致的服务中断时间。
申请公布号 CN106598730A 申请公布日期 2017.04.26
申请号 CN201611060153.0 申请日期 2016.11.24
申请人 上海交通大学 发明人 陈海波;董明凯;余倩倩;臧斌宇
分类号 G06F9/50(2006.01)I 主分类号 G06F9/50(2006.01)I
代理机构 上海汉声知识产权代理有限公司 31236 代理人 郭国中;樊昕
主权项 一种基于非易失性内存的可在线恢复的对象分配器设计方法,其特征在于,包括:存储,在非易失性内存使用版本阵列管理对象分配信息,每个可分配对象使用两个版本号进行标识,分别为出生版本和检查版本,另有一个最新版本号表示当前系统的版本;加载,分配器读取存储在非易失性内存中的版本阵列,并将其转化为易失性内存中的数据结构;分配,查找易失性内存中的数据结构,在找到合适的空闲内存区间之后,将易失性内存数据结构中的相关地方标记为已分配,且在其对应的非易失性内存的版本阵列中,保存此分配对象的出生版本和检查版本为当前的最新版本号;释放,在易失性内存数据结构中进行查找,在找到相应的内存区域之后,将其易失性内存数据结构中相应地方标记为未分配,且在其对应的非易失性内存版本阵列中,将此分配对象的出生版本和检查版本均标记为0;恢复准备,在系统发生故障或因断电而重启后,将非易失性内存中的最新版本号增加,并将其持久化,随后分配器执行加载阶段,在加载阶段执行后,分配器可根据已持久化的分配信息处理请求,同时恢复进程启动;在线恢复,恢复进程从非易失性内存中保存的数据根部开始,首先检查根部的完整性,随后根据指针的指向遍历所有的对象并进行检查,当一个对象中保存的所有指针都已经被检查完毕之后,此对象的检查版本可被更新为当前的最新版本号。
地址 200240 上海市闵行区东川路800号