主权项 |
一种基于非易失性内存的可在线恢复的对象分配器设计方法,其特征在于,包括:存储,在非易失性内存使用版本阵列管理对象分配信息,每个可分配对象使用两个版本号进行标识,分别为出生版本和检查版本,另有一个最新版本号表示当前系统的版本;加载,分配器读取存储在非易失性内存中的版本阵列,并将其转化为易失性内存中的数据结构;分配,查找易失性内存中的数据结构,在找到合适的空闲内存区间之后,将易失性内存数据结构中的相关地方标记为已分配,且在其对应的非易失性内存的版本阵列中,保存此分配对象的出生版本和检查版本为当前的最新版本号;释放,在易失性内存数据结构中进行查找,在找到相应的内存区域之后,将其易失性内存数据结构中相应地方标记为未分配,且在其对应的非易失性内存版本阵列中,将此分配对象的出生版本和检查版本均标记为0;恢复准备,在系统发生故障或因断电而重启后,将非易失性内存中的最新版本号增加,并将其持久化,随后分配器执行加载阶段,在加载阶段执行后,分配器可根据已持久化的分配信息处理请求,同时恢复进程启动;在线恢复,恢复进程从非易失性内存中保存的数据根部开始,首先检查根部的完整性,随后根据指针的指向遍历所有的对象并进行检查,当一个对象中保存的所有指针都已经被检查完毕之后,此对象的检查版本可被更新为当前的最新版本号。 |