当前位置: 首页 > 专利查询>朱怡安专利>正文

基于补偿回滚的操作系统故障自恢复方法技术方案

技术编号:13790665 阅读:90 留言:0更新日期:2016-10-05 22:37
操作系统故障根据传播范围可分为process-local(进程局部)和kernel-global(内核全局)两类,分别造成进程局部数据和内核全局状态的错误,本发明专利技术公开了一种基于补偿回滚的操作系统故障自恢复技术,可使系统从错误状态恢复正常。该技术方案包括进程备份重启和内核补偿两种机制,其中进程备份机制通过周期性备份进程执行状态,当进程出现故障崩溃时,通过重新载入备份的执行镜像完成快速重启;内核补偿机制通过监测内核全局方法调用,通过内核栈结构存储进程执行的修改内核全局状态的操作,在进程故障后利用补偿操作消除内核的不一致状态,控制故障的传播效应,减小单点故障造成的影响。在恢复进程局部数据前提下,有效控制了本进程故障整体系统的影响,提高了故障恢复率。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种基于补偿回滚的操作系统故障自恢复方法
技术介绍
作为系统软件的最低层,操作系统管理软硬件资源,为系统软硬件交互提供接口,充当TCB(Trusting Computing Base可信计算基础)的角色。当前操作系统在出现严重内部错误时大都采取fail-stop(故障即失效)的行为模式,因此故障的出现等价于系统的失效。操作系统设计一般采用模块化或层级结构,某个模块或进程中出现的故障会通过程序调用、参数传递等方式进行传播,导致故障影响范围的扩大。操作系统故障根据其传播范围分为process-local(进程局部故障)和kernel-global(内核全局故障)两类。其中process-local类型故障的影响范围仅限于故障进程上下文,而kernel-global类型故障则会影响到其他进程的执行上下文和全局数据结构。由于kernel-global类型故障不仅会带来进程数据的丢失,还会引起系统其他模块甚至整体的失效,故其故障危害要大于process-local故障。操作系统本身存在很多防范机制,包括对指针数据结构的检查,在发现数据不一致时终止故障进程的执行。该类机制虽然可以缩小错误传播的范围,控制故障的传播,但进程功能的失效也是不可接受的。基于以上分析,故障恢复策略应该在完成进程执行状态的恢复的同时,保证共享数据的一致性,消除故障传播的影响。障恢复方法的设计一般涉及两个问题,一是如何清除系统的错误状态,二是如何恢复系统失效前的执行状态,且需要满足以下几点要求:1)抢占性,可以在程序执行过程中的任意一点执行数据备份操作;2)透明性,对于已有的程序不需要对原有的代码进行修改就能支持备份重启机制;3)低负载,不能造成显著的系统负载;4)易于移植,不需要对操作系统代码或结构进行修改,能够较为便利地集成到现有操作系统中;5)安全性,机制避免系统程序的优先级和权限被恶意提升。针对操作系统故障,除重新启动外,其他方法都无法将系统从故障状态完全恢复。但对于安全关键应用,重新启动带来的损失是无法接受的。因此,本专利技术中设计的策略均基于不重新启动整个系统的前提。对于传播范围仅限于错误进程空间,传播途径主要是参数调用和函数返回的故障,通过终止错误进程对内核进行恢复是一种有效的手段。对于会造成内核共用数据的污染的故障,如导致内核中负责管理堆栈的红黑树数据结构污染,则需要对全局的数据操作进行跟踪记录
相关信息来实现故障修复。当前操作系统通过冗余设计或重启的方法实现故障自恢复。冗余设计方案通过软硬件冗余来实现故障屏蔽,典型代表为三余度系统、N-Version(多版本)软件系统等,通过表决的方法保证结果的正确性。对故障系统、组件或操作进行重启是简单有效的恢复策略,如微重启、Transactional Recovery(基于事务的恢复策略)等,但未考虑kernel-global类型故障带来的全局数据状态错误。现有技术通过重启系统或重新执行进程来恢复故障,而未考虑故障传播效应,针对以上问题,本专利技术提出了一种基于补偿回滚的故障自恢复技术。该方法对内核全局数据或方法进行监测,在进程局部数据被正确恢复的前提下,通过控制故障的传播效应,保证了全局数据状态的一致性,兼顾了对两类故障的恢复效果。
技术实现思路
本专利技术的目的为提供一种在不重新启动整个系统的前提下恢复操作系统故障的方法。该基于补偿回滚的故障恢复方法不仅可恢复故障进程执行状态,而且可消除该故障进程对内核全局状态的影响,从而消除故障对其他进程的影响,提高故障恢复率。为达到上述目的,本专利技术提供包括进程备份重启和内核补偿两机制的技术方案,可描述如下:进程备份重启机制实现process-local类型故障的恢复,对进程相关的文件句柄、内存数据、寄存器数据周期性保存到文件中,此外还需记录进程执行的内核系统调用。操作系统中,进程对内核全局数据的操作通过特定的系统调用实现,因此对全局数据修改的记录可转化为对系统调用序列的记录。内核补偿机制用于恢复kernel-global类型故障,其工作流程分为如下几个阶段,内核系统调用监测阶段、补偿操作映射阶段、补偿栈数据维护阶段和故障补偿修复阶段。工作原理为通过执行内核系统调用对应的补偿调用来消除对内核全局状态的影响,如打开文件和关闭文件系统调用即为调用与补偿调用的关系。以上两机制执行步骤可描述如下:[1]进程信息备份阶段,将与该进程相关的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据值以文件形式保存到非易失存储器中。[2]内核调用追踪阶段,建立内核栈及系统调用逆调用映射机制,在内核中通过动态内存分配的方法建立动态栈,并为需要监测的系统调用及其逆调用设置标识号。此阶段链接进程备份重启机制与内核补偿机制,其可分为如下基本步骤:(a)内核方法调用监测阶段,利用中断捕捉监测进程执行的内核系统调用,对内核执行流
中关键方法调用进行监测,将采集到的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据传输至补偿操作映射阶段,当监测到补偿调用时则直接修改补偿栈数据。(b)补偿操作映射阶段,根据监测到的内核调用信息,映射出可以消除该调用导致的全局数据变化的补偿调用,动态分配内存存储内核方法调用监测阶段采集的数据,并将该信息传输到栈数据维护阶段。(c)栈数据维护阶段,对内核调用信息及其对应的补偿操作信息进行维护,为故障恢复阶段提供数据支持,若无故障,则执行完栈数据操作后返回内核调用追踪阶段,若收到故障监测器故障报警,则进入故障补偿恢复阶段。[3]故障补偿恢复阶段,通过补偿栈中的数据生成补偿操作序列,恢复内核全局数据一致性。具体包括以下步骤:(a)在对故障进程进行修复时,首先将检查内核补偿栈。若栈中信息不为空,执行(b)步骤,否则执行(c)步骤。(b)此时当前进程在出错退出时对全局数据造成的影响未被消除,则从补偿栈中依次出栈补偿操作,根据其操作标识调用补偿方法,使内核状态恢复到一致状态。(c)首先需要载入故障进程执行镜像文件,载入内存,恢复当前进程的执行状态,包括寄存器数据、内存数据已经文件句柄,完成故障恢复恢复。通过本专利技术中涉及的补偿回滚故障恢复方法,在进程故障后利用补偿操作消除内核的不一致状态,控制故障的传播效应,减小单点故障造成的影响。在恢复进程局部数据前提下,有效控制了本进程故障整体系统的影响,提高了故障恢复率。附图说明下面结合附图对本专利技术进一步说明:图1为进程备份重启机制示意图;图2为内核补偿栈工作流程示意图;图3为进程备份重启机制流程图;图4为补偿栈操作流程图;图5故障修复流程图;具体实施方式在每个备份周期内,进程备份重启机制主要包括进程信息备份和内核调用追踪两个阶段。进程信息备份阶段,图1中t0到t1时间段,将与该进程相关的全局寄存器、内存指针、进程局部寄存器等信息保存到非易失存储器中。在每个Checkpoint周期结束时,需要更新进程备份镜像。内核调用追踪阶段,图1中t1到t2时间段,利用中断捕捉本进程的内核全局方法调用,将能够导致全局数据修改的操作及其参数等信息存储到内核补偿栈结构中,该结构常驻于系统内存中,实现快速地增加删除内核系统调用信息。图2中描述了内核补偿栈的工作流程,ci为ai对应本文档来自技高网
...

【技术保护点】
基于补偿回滚的操作系统故障自恢复方法,其特征在于包括下述步骤:[1]进程信息备份阶段,将与该进程相关的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据值以文件形式保存到非易失存储器中。[2]内核调用追踪阶段,建立内核栈及系统调用逆调用映射机制,在内核中通过动态内存分配的方法建立动态栈,并为需要监测的系统调用及其逆调用设置标识号。此阶段链接进程备份重启机制与内核补偿机制,其可分为如下基本步骤:(a)内核方法调用监测阶段,利用中断捕捉监测进程执行的内核系统调用,对内核执行流中关键方法调用进行监测,将采集到的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据传输至补偿操作映射阶段,当监测到补偿调用时则直接修改补偿栈数据。(b)补偿操作映射阶段,根据监测到的内核调用信息,映射出可以消除该调用导致的全局数据变化的补偿调用,动态分配内存存储内核方法调用监测阶段采集的数据,并将该信息传输到栈数据维护阶段。(c)栈数据维护阶段,对内核调用信息及其对应的补偿操作信息进行维护,为故障恢复阶段提供数据支持,若无故障,则执行完栈数据操作后返回内核调用追踪阶段,若收到故障监测器故障报警,则进入故障补偿恢复阶段。[3]故障补偿恢复阶段,通过补偿栈中的数据生成补偿操作序列,恢复内核全局数据一致性。具体包括以下步骤:(a)在对故障进程进行修复时,首先将检查内核补偿栈。若栈中信息不为空,执行(b)步骤,否则执行(c)步骤。(b)此时当前进程在出错退出时对全局数据造成的影响未被消除,则从补偿栈中依次出栈补偿操作,根据其操作标识调用补偿方法,使内核状态恢复到一致状态。(c)首先需要载入故障进程执行镜像文件,载入内存,恢复当前进程的执行状态,包括寄存器数据、内存数据已经文件句柄,完成故障恢复恢复。...

【技术特征摘要】
1.基于补偿回滚的操作系统故障自恢复方法,其特征在于包括下述步骤:[1]进程信息备份阶段,将与该进程相关的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据值以文件形式保存到非易失存储器中。[2]内核调用追踪阶段,建立内核栈及系统调用逆调用映射机制,在内核中通过动态内存分配的方法建立动态栈,并为需要监测的系统调用及其逆调用设置标识号。此阶段链接进程备份重启机制与内核补偿机制,其可分为如下基本步骤:(a)内核方法调用监测阶段,利用中断捕捉监测进程执行的内核系统调用,对内核执行流中关键方法调用进行监测,将采集到的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据传输至补偿操作映射阶段,当监测到补偿调用时则直接修改补偿栈数据。(b)补偿操作映射阶段,根据监测到的内核调用信息,映射出可以消除该调用导致的全局数据变化的补偿调用,动态分配内...

【专利技术属性】
技术研发人员:朱怡安史佳龙张黎翔
申请(专利权)人:朱怡安史佳龙张黎翔
类型:发明
国别省市:陕西;61

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

1