发明名称 基于补偿回滚的操作系统故障自恢复方法
摘要 操作系统故障根据传播范围可分为process-local(进程局部)和kernel-global(内核全局)两类,分别造成进程局部数据和内核全局状态的错误,本发明公开了一种基于补偿回滚的操作系统故障自恢复技术,可使系统从错误状态恢复正常。该技术方案包括进程备份重启和内核补偿两种机制,其中进程备份机制通过周期性备份进程执行状态,当进程出现故障崩溃时,通过重新载入备份的执行镜像完成快速重启;内核补偿机制通过监测内核全局方法调用,通过内核栈结构存储进程执行的修改内核全局状态的操作,在进程故障后利用补偿操作消除内核的不一致状态,控制故障的传播效应,减小单点故障造成的影响。在恢复进程局部数据前提下,有效控制了本进程故障整体系统的影响,提高了故障恢复率。
申请公布号 CN105988885A 申请公布日期 2016.10.05
申请号 CN201510154388.5 申请日期 2015.03.26
申请人 朱怡安;史佳龙;张黎翔 发明人 朱怡安;史佳龙;张黎翔
分类号 G06F11/07(2006.01)I 主分类号 G06F11/07(2006.01)I
代理机构 代理人
主权项 基于补偿回滚的操作系统故障自恢复方法,其特征在于包括下述步骤:[1]进程信息备份阶段,将与该进程相关的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据值以文件形式保存到非易失存储器中。[2]内核调用追踪阶段,建立内核栈及系统调用逆调用映射机制,在内核中通过动态内存分配的方法建立动态栈,并为需要监测的系统调用及其逆调用设置标识号。此阶段链接进程备份重启机制与内核补偿机制,其可分为如下基本步骤:(a)内核方法调用监测阶段,利用中断捕捉监测进程执行的内核系统调用,对内核执行流中关键方法调用进行监测,将采集到的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据传输至补偿操作映射阶段,当监测到补偿调用时则直接修改补偿栈数据。(b)补偿操作映射阶段,根据监测到的内核调用信息,映射出可以消除该调用导致的全局数据变化的补偿调用,动态分配内存存储内核方法调用监测阶段采集的数据,并将该信息传输到栈数据维护阶段。(c)栈数据维护阶段,对内核调用信息及其对应的补偿操作信息进行维护,为故障恢复阶段提供数据支持,若无故障,则执行完栈数据操作后返回内核调用追踪阶段,若收到故障监测器故障报警,则进入故障补偿恢复阶段。[3]故障补偿恢复阶段,通过补偿栈中的数据生成补偿操作序列,恢复内核全局数据一致性。具体包括以下步骤:(a)在对故障进程进行修复时,首先将检查内核补偿栈。若栈中信息不为空,执行(b)步骤,否则执行(c)步骤。(b)此时当前进程在出错退出时对全局数据造成的影响未被消除,则从补偿栈中依次出栈补偿操作,根据其操作标识调用补偿方法,使内核状态恢复到一致状态。(c)首先需要载入故障进程执行镜像文件,载入内存,恢复当前进程的执行状态,包括寄存器数据、内存数据已经文件句柄,完成故障恢复恢复。
地址 710072 陕西省西安市西北工业大学南村5-5-902