专利名称:一种星载实时操作系统中的检查点恢复容错方法及系统的制作方法
技术领域:
本发明涉及软件容错领域,特别是涉及一种星载实时操作系统中的检查点恢复容错方法及系统。
背景技术:
星载计算机工作于辐射环境复杂的外太空,受宇宙射线、范艾伦带等空间例子辐射影响较大,这些因素都会导致航天器发生故障和出现错误的几率成倍增长,因此,从软件上对星载计算机进行加固是提高星载计算机的可靠性的重要方法。
μ C/0S-II自2. 52版本之后就通过了美国航空航天局(FAA)的安全认证,采用 μ C/0S-II作为星载实时操作系统,可以应用于航天器等对安全要求极为苛刻的系统中。相比其他操作系统,μ C/0S-II具有公开源码的优势,结构小巧,具有RTOS微型核结构。
通常采用的软件容错技术有检查点恢复技术和冗余技术,检查点恢复技术是指系统发生故障后回卷到检查点状态重新执行。然而,由于嵌入式环境下资源等因素的限制, 检查点的保存规模和方式都必须进行不同于通用环境的考虑。因此可以看出,如何在μ C/ OS-II嵌入式系统中设置检查点和并进行恢复,是提高星载操作系统可靠性必须要考虑的问题。目前国内外公开文档中尚无这种技术的报道。
综上所述,可知先前技术中存在无法在μ C/0S-II嵌入式系统中设置检查点并进行恢复的问题,因此实有必要提出改进的技术手段,来解决此一问题。发明内容
为克服上述现有技术存在的不足,本发明的主要目的在于提供一种星载实时操作系统中的检查点恢复容错方法及系统,其通过在文件系统的基础上采用自行设计的检查点保存和检查点恢复方法,达到提高星载计算机可靠性的目的。
为达上述及其它目的,本发明提供一种星载实时操作系统中的检查点恢复容错方法,包括如下步骤
对关键任务冗余执行,对非关键任务进行分布处理;
根据执行结果保存检查点;以及
根据保存的检查点进行检查点恢复。
进一步地,该方法应用于三模冗余系统中。
进一步地,该关键任务比该非关键任务具有较高优先级。
进一步地,对该关键任务冗余执行包括如下步骤
该关键任务完成其主要内容;
调用表决函数,利用通信函数对三个结点的中间结果进行表决;
判断是否表决成功;
若表决不成功,则发送消息至消息邮箱;若表决成功,则比较当前任务优先级是否与预留优先级相同;
若相同,则把当前任务优先级改为原优先级;若不相同,则挂起该关键任务。
进一步地,在该非关键任务结束时,把其当前任务优先级与预留优先级比较;若相同,则把当前任务优先级改为原优先级。
进一步地,该检查点保存的步骤包括如下步骤
获得前一个任务的任务控制块指针;
禁止任务调度,对任务调度加锁;
判断该任务是否是检查点恢复任务,若不是则向下执行;
获得该任务的栈顶指针;
把栈中保存的寄存器值写入检查点文件;
执行堆栈检查函数,获得堆栈实际使用的长度;
把栈中实际使用的项值写入检查点文件中;
恢复被保存的任务状态;
开启任务调度,对任务调度开锁;以及
挂起该任务。
进一步地,该检查点恢复步骤包括如下步骤
获得消息邮箱信息;
若获得非零信息则向下执行,否则任务一直处于挂起状态;
把待恢复任务放入准备队列;
读取该检查点文件来恢复任务堆栈内容;以及
恢复任务寄存器值。
进一步地,该关键任务与该非关键任务的次序预先写定。
进一步地,该星载实时操作系统为μ C/0S-II嵌入式系统。
为达到上述及其他目的,本发明提供一种星载实时操作系统中的检查点恢复容错系统,至少包括
文件系统;
检查点记录模块,用于记录并保存检查点;
检查点恢复模块,用于根据保存的检查点执行检查点恢复任务;
表决模块,包含表决函数,用于利用该表决函数对三个节点的中间结果进行表决; 以及
通信模块,利用通信函数进行通信。
与现有技术相比,本发明一种星载实时操作系统中的检查点恢复容错方法及系统通过在文件系统的基础上采用自行设计的检查点保存和检查点恢复方法,达到了提高星载计算机可靠性的目的。
图1为本发明一种星载实时操作系统中的检查点恢复容错系统所应用之系统逻辑框图2为本发明一种星载实时操作系统中的检查点恢复容错方法之步骤流程图3为本发明一种星载实时操作系统中的检查点恢复容错方法之较佳实施例中执行关键任务的流程图4为本发明一种星载实时操作系统中的检查点恢复容错方法之较佳实施例中检查点保存步骤的流程图5为本发明一种星载实时操作系统中的检查点恢复容错方法之较佳实施例中检查点恢复步骤的流程图。
具体实施方式
以下通过特定的具体实例并结合
本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种星载实时操作系统中的检查点恢复容错系统所应用之系统逻辑框图。本发明之星载实时操作系统中的检查点恢复容错系统应用于一套三模冗余(TMR, triple modular redundancy)系统中,在文件系统的基础上采用自行设计的检查点保存和检查点恢复方法,以达到提高可靠性的目的。该星载实时操作系统中的检查点恢复容错系统所应用的系统包括硬件层(Hardware)、移植接口层(Porting interface)、操作系统层 (OS)、容错软件层(FT Software)以及应用层(Application),其中本发明之容错系统工作于容错软件层,其工作于硬件层的嵌入式软核上,即CPU包含三个嵌入式软核,在本发明较佳实施例中,硬件层的嵌入式软核以Xilinx公司的MicroBlaze嵌入式软核为例,三个结点各有一个microblaze嵌入式软核,硬件层的其他的硬件包括计时器(Timer)、中断控制器 (Interrupt controller)、通信总线(Communication bus)禾口闪存(flash)等;移植接口层 (Porting interface)是要根据处理器类型修改一些处理器相关代码,使操作系统(OS)能运行于microblaze嵌入式软核上;操作系统(OS)层包括了操作系统必须要包含的功能,在此,为了达到精简的目的,本发明根据需求对内核进行了裁剪,保留了一些相关功能;容错软件层(FT Software)即包括本发明之星载实时操作系统中的检查点恢复容错系统,用于对本节点的应用任务进行监测,其至少包括检查点记录模块11、检查点恢复模块12、表决模块13、文件系统14和通信模块15
其中检查点记录模块11用于记录并保存检查点;检查点恢复模块12用于根据保存的检查点执行检查点恢复任务;表决模块13包含表决函数,用于对三个节点的中间结果进行表决;通信模块15,利用通信函数进行通信。
图2为本发明一种星载实时操作系统中的检查点恢复容错方法之步骤流程图。在本发明较佳实施例中,星载实时操作系统为uC/OS-II操作系统,任务分为关键任务及非关键任务,该星载实时操作系统中的检查点恢复容错方法包括如下步骤
步骤201,对关键任务冗余执行,对非关键任务进行分布处理,其中关键任务具有较高优先级,关键任务与非关键任务的次序是已写定的;
步骤202,检查点保存;以及
步骤203,检查点恢复。
图3为本发明一种星载实时操作系统中的检查点恢复容错方法之较佳实施例中执行关键任务的流程图。在步骤300,任务完成其主要内容;在步骤301,调用表决函数,利用通信函数对三个结点的中间结果进行表决;在步骤302,判断是否表决成功,若成功则转到步骤304,若不成功则转到步骤303 ;在步骤303,发送消息到消息邮箱;在步骤304,比较当前任务优先级是否与预留优先级相同,若相同则说明经历了检查点保存对优先级的修改,则需要转到步骤305,把优先级修改为原优先级;若不相同则转到步骤306 ;在步骤206, 挂起该任务,任务进入挂起状态。
而对于非关键任务的分布处理,在本发明较佳实施例中,则是在其任务结束时,把当前任务优先级与预留优先级比较,若相同,则说明历了检查点保存对优先级的修改,则把优先级改为原优先级。
图4为本发明一种星载实时操作系统中的检查点恢复容错方法之较佳实施例中检查点保存步骤的流程图。在本发明较佳实施例中,μ C/0S-II的任务上下文保存在任务控制块TCB(Task Control Block)当中,其中,任务的上下文包括任务的执行点(程序计数器)、cpu寄存器、临时变量、和任务栈、任务选项、任务延时等内容;单个任务卷回的情况下,利用任务TCB可以获得任务栈顶指针;每隔一定时间,检查点保存任务剥夺掉当前任务,当前任务现场被保存在自身的TCB中,检查点保存函数通过栈顶指针获得任务的执行信息,如寄存器值、堆栈内容等;将对应的堆栈内容写入检查点文件;恢复前一被抢占的任务状态,为保证这一过程的进行,需要把被抢占任务优先级设为“预留优先级”,通过提高其优先级来保证任务的执行顺序。更具体地说,如图4所示,在步骤400,获得前一个任务的 0S_TCB指针。在步骤401,禁止任务调度,对任务调度加锁;在步骤402,判断该任务是否是检查点恢复任务,若不是则向下执行;在步骤403中,获得该任务的栈顶指针;在步骤404 中,把栈中保存的寄存器值写入检查点文件;在步骤405中,执行堆栈检查函数,获得堆栈实际使用的长度,这一步骤是为了节省现场保存规模;在步骤406中,把栈中实际使用的项值写入检查点文件中;在步骤407中,恢复被保存的任务状态;在步骤408中,开启任务调度,对任务调度开锁;在步骤409中,挂起该任务。
图5为本发明一种星载实时操作系统中的检查点恢复容错方法之较佳实施例中检查点恢复步骤的流程图。在步骤500中,获得消息邮箱信息,若获得非零信息则向下执行,否则任务一直处于挂起状态;在步骤501中,把待恢复任务放入准备(ready)队列;在步骤502中,读检查点文件来恢复任务堆栈内容;在步骤503中,恢复任务寄存器值。
可见,本发明一种星载实时操作系统中的检查点恢复容错方法及系统通过在文件系统的基础上采用自行设计的检查点保存和检查点恢复方法,达到了提高星载计算机可靠性的目的。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此, 本发明的权利保护范围,应如权利要求书所列。
权利要求
1.一种星载实时操作系统中的检查点恢复容错方法,包括如下步骤 对关键任务冗余执行,对非关键任务进行分布处理;根据执行结果保存检查点;以及根据保存的检查点进行检查点恢复。
2.如权利要求1所述的星载实时操作系统中的检查点恢复容错方法,其特征在于该方法应用于三模冗余系统中。
3.如权利要求2所述的星载实时操作系统中的检查点恢复容错方法,其特征在于该关键任务比该非关键任务具有较高优先级。
4.如权利要求3所述的星载实时操作系统中的检查点恢复容错方法,其特征在于,对该关键任务冗余执行包括如下步骤该关键任务完成其主要内容;调用表决函数,利用通信函数对三个结点的中间结果进行表决; 判断是否表决成功;若表决不成功,则发送消息至消息邮箱;若表决成功,则比较当前任务优先级是否与预留优先级相同;若相同,则把当前任务优先级改为原优先级;若不相同,则挂起该关键任务。
5.如权利要求4所述的星载实时操作系统中的检查点恢复容错方法,其特征在于在该非关键任务结束时,把其当前任务优先级与预留优先级比较;若相同,则把当前任务优先级改为原优先级。
6.如权利要求5所述的星载实时操作系统中的检查点恢复容错方法,其特征在于,该检查点保存的步骤包括如下步骤获得前一个任务的任务控制块指针;禁止任务调度,对任务调度加锁;判断该任务是否是检查点恢复任务,若不是则向下执行;获得该任务的栈顶指针;把栈中保存的寄存器值写入检查点文件;执行堆栈检查函数,获得堆栈实际使用的长度;把栈中实际使用的项值写入检查点文件中;恢复被保存的任务状态;开启任务调度,对任务调度开锁;以及挂起该任务。
7.如权利要求6所述的星载实时操作系统中的检查点恢复容错方法,其特征在于,该检查点恢复步骤包括如下步骤获得消息邮箱信息;若获得非零信息则向下执行,否则任务一直处于挂起状态; 把待恢复任务放入准备队列; 读取该检查点文件来恢复任务堆栈内容;以及恢复任务寄存器值。
8.如权利要求1所述的星载实时操作系统中的检查点恢复容错方法,其特征在于该关键任务与该非关键任务的次序预先写定。
9.如权利要求1所述的星载实时操作系统中的检查点恢复容错方法,其特征在于该星载实时操作系统为μ C/os-II嵌入式系统。
10. 一种星载实时操作系统中的检查点恢复容错系统,至少包括 文件系统;检查点记录模块,用于记录并保存检查点;检查点恢复模块,用于根据保存的检查点执行检查点恢复任务;表决模块,包含表决函数,用于利用该表决函数对三个节点的中间结果进行表决;以及通信模块,利用通信函数进行通信。
全文摘要
本发明公开一种星载实时操作系统中的检查点恢复容错方法及系统,该方法包括如下步骤对关键任务冗余执行,对非关键任务进行分布处理;根据执行结果保存检查点;以及根据保存的检查点进行检查点恢复;本发明通过在文件系统的基础上采用自行设计的检查点保存和检查点恢复方法,达到提高星载计算机可靠性的目的。
文档编号G06F11/14GK102521082SQ20111040725
公开日2012年6月27日 申请日期2011年12月8日 优先权日2011年12月8日
发明者刘茵竺, 蒋江 申请人:上海交通大学