[发明专利]基于非易失性内存的可在线恢复对象分配器设计方法有效
申请号: | 201611060153.0 | 申请日: | 2016-11-24 |
公开(公告)号: | CN106598730B | 公开(公告)日: | 2020-06-12 |
发明(设计)人: | 陈海波;董明凯;余倩倩;臧斌宇 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 郭国中;樊昕 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 非易失性 内存 在线 恢复 对象 分配器 设计 方法 | ||
1.一种基于非易失性内存的可在线恢复的对象分配器设计方法,其特征在于,包括:
存储,在非易失性内存使用版本阵列管理对象分配信息,每个可分配对象使用两个版本号进行标识,分别为出生版本和检查版本,另有一个最新版本号表示当前系统的版本;
加载,分配器读取存储在非易失性内存中的版本阵列,并将其转化为易失性内存中的数据结构;
分配,查找易失性内存中的数据结构,在找到合适的空闲内存区间之后,将易失性内存数据结构中的相关地方标记为已分配,且在其对应的非易失性内存的版本阵列中,保存此分配对象的出生版本和检查版本为当前的最新版本号;
释放,在易失性内存数据结构中进行查找,在找到相应的内存区域之后,将其易失性内存数据结构中相应地方标记为未分配,且在其对应的非易失性内存版本阵列中,将此分配对象的出生版本和检查版本均标记为0;
恢复准备,在系统发生故障或因断电而重启后,将非易失性内存中的最新版本号增加,并将其持久化,随后分配器执行加载阶段,在加载阶段执行后,分配器可根据已持久化的分配信息处理请求,同时恢复进程启动;
在线恢复,恢复进程从非易失性内存中保存的数据根部开始,首先检查根部的完整性,随后根据指针的指向遍历所有的对象并进行检查,当一个对象中保存的所有指针都已经被检查完毕之后,此对象的检查版本可被更新为当前的最新版本号;
在线恢复阶段,对于通过指针相关联的两个对象1和对象2,首先检查对象2是否均已经被分配以及完整的持久化,若其未被分配或未被完整持久化,则该指针被删除,已分配但未为完整持久化的对象交由上层应用决定如何处理和回收,若对象2已被分配且自身完整,则检查对象2的出生版本是否小于等于对象1的检查版本号,如果不是,则说明对象2在建立此指针关系时的分配信息未被持久化,此时已经被重新分配,所以将此指针删除。
2.根据权利要求1所述的基于非易失性内存的可在线恢复的对象分配器设计方法,其特征在于,在分配和释放阶段中,不需要对分配信息进行持久化操作。
3.根据权利要求1所述的基于非易失性内存的可在线恢复的对象分配器设计方法,其特征在于,在线恢复阶段进行的同时,能处理分配和释放请求。
4.根据权利要求1所述的基于非易失性内存的可在线恢复的对象分配器设计方法,其特征在于,在线恢复阶段进行时,一个对象只有在被检查之后才可进行修改操作。
5.根据权利要求1所述的基于非易失性内存的可在线恢复的对象分配器设计方法,其特征在于,在线恢复阶段不依赖于易失性内存的数据结构,易失性内存中的数据结构只是用来加速分配和释放请求。
6.根据权利要求1所述的基于非易失性内存的可在线恢复的对象分配器设计方法,其特征在于,在线恢复能适用于多次重复故障后的恢复。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611060153.0/1.html,转载请声明来源钻瓜专利网。