一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于星载软件防止系统失效的方法与流程

2022-11-16 14:42:45 来源:中国专利 TAG:


1.本发明涉及航天软件运行技术领域,特别涉及一种基于星载软件防止航天器控制系统失效的方法。


背景技术:

2.随着航天器的频繁发射,航天器控制系统采用分布式架构组件越来越多,硬件节点增多,系统失败的风险也增大。然而,密集的任务要求系统能够全天候在线服务,而空间辐射对电子设备中的集成电路的影响主要有总剂量效应和单粒子效应,对卫星和航天器的可能性造成了极大的威胁,卫星的空间辐射效应故障严重会导致卫星姿态失控、卫星失效,从而造成严重损失。
3.其中硬件方面主要集中在电路的逻辑设计上,进行故障检测、冗余设计、修复机制和抗辐加固等改进,微处理器方面主要面向处理器的cache、程序执行流程及代码冗余设计等。软件方面主要存在系统设计错误、人员操作失误和外界环境干扰等重要因素,其中系统设计错误是造成失效的主要原因。
4.现有方案一般针对硬件做了冗余约束,而对软件领域的操作较少,即使有冗余,也通常是软件产品的冗余,因此一旦出现问题会产生延时,也会造成损失后或软件崩溃后进行热备,除预测手段外无法提前避免造成系统失效,而预测的准确性通常却难以保证。


技术实现要素:

5.本发明的目的在于不修改源程序和二进制代码,也不添加新的硬件支持,搭建异步虚拟容错软件对执行的目标程序进行预先异步执行,避免实体进程在正式执行程序时发生崩溃,以防止程序崩溃后造成航天器控制器系统失效,提供一种基于星载软件防止航天器控制系统失效的方法。
6.为了实现上述发明目的,本发明实施例提供了以下技术方案:一种基于星载软件防止系统失效的方法,包括以下步骤:目标程序包括若干个并行的线程,将目标程序复制为两个,分别用于实体进程和虚拟进程执行;实体进程和虚拟进程异步执行所述目标程序,且虚拟进程优先于实体进程执行至少一个线程;所述虚拟进程同步执行多个线程,对执行的线程进行状态标记,若状态标记为线程正常,则记录执行结果,并通知实体进程执行该线程;若状态标记为线程异常,则结束执行该线程,并通知实体进程不执行该线程。
7.更进一步地,每个所述线程中包含若干个依次连接的函数功能块;虚拟进程执行任一线程时,按顺序调用该线程中的函数功能块进行执行,当执行到某个函数功能块后,状态标记为线程正常,则继续调用并执行下一个函数功能块,直到该线程的所有函数功能块都调用并执行完毕,且所有函数功能块执行后状态标记均为线程正常,则通知实体进程执行该线程;
当虚拟进程执行到某个函数功能块后,状态标记为线程异常,则虚拟进程回退至恢复点,所述恢复点为上一个函数功能块,并通知实体进程不执行该线程。
8.更进一步地,当虚拟进程对某线程的状态标记为线程异常时,重启该线程,重启后从恢复点继续调用并执行下一个函数功能块,直到该线程的所有函数功能块都调用并执行完毕,且所有函数功能块执行后状态标记均为线程正常,则通知实体进程执行该线程。
9.更近一步地,虚拟进程中重启的线程,在实体进程中对应的线程也进行重启。
10.更进一步地,所述实体进程按照虚拟进程的通知执行完线程后,还未接收到虚拟进程通知的可执行线程时,则实体进程进入等待状态,直到接收到虚拟进程通知可执行线程,则执行该通知的线程。
11.更进一步地,所述实体进程在执行虚拟进程通知执行的线程后,将执行结果与虚拟进程记录的执行结果进行比较,若比较执行结果一致,则实体进程执行虚拟进程通知执行的下一个线程;否则实体进程回退至该线程的起始点。
12.更进一步地,当实体进程将执行结果与虚拟进程记录的执行结果进行比较,比较执行结果不一致,回退至该线程的起始点后,重启该线程并重新执行该线程,直到执行结果与虚拟进程的执行结果一致时,完成对该线程的执行。
13.与现有技术相比,本发明的有益效果:本发明针对航天软件程序的可靠性和可用性特点,根据时间冗余设计思想,提出异步虚拟容错软件架构设计思想,通过构建虚拟空间的映射程序,采用进程并行冗余、线程异步容错的设计原则,虚拟进程优先执行线程,经确认反馈线程正常后,通知实体进程完成执行,完成异步核准处理流程。
附图说明
14.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
15.图1为本发明方法流程示意图;图2为本发明实施例将目标程序划分为n个线程的示意图;图3为本发明实施例异步虚拟容错软件架构示意图。
具体实施方式
16.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的
描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性,或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
18.实施例1:由于线程设计方法和运行的局限性,某些因外部依赖、长时间运行或错误输入等原因造成线程崩溃、内存空间越界等问题,并不能在线程内部通过单线程程序容错设计方法进行检测,多线程程序中一旦线程出现bug将直接导致程序崩溃,程序执行结果错误。
19.本发明通过下述技术方案实现,如图1所示,一种基于星载软件防止系统失效的方法,包括以下步骤:步骤s1,目标程序包括若干个并行的线程,将目标程序复制为两个,分别用于实体进程和虚拟进程执行;实体进程和虚拟进程异步执行所述目标程序,且虚拟进程优先于实体进程执行至少一个线程。
20.一个目标程序由若干个线程组成(目标程序是指需要执行的程序,也称为程序),请参见图2,这些线程相互并行,各个线程的长度均不相同,因为每个线程中包含若干个依次连接的函数功能块,这些函数功能块的程序长度基本都不一致,所以构成的线程长度也不一致。一个线程的开端处是起始点,结尾处是结束点。
21.将目标程序进行复制得到两个,分别用于实体进程和虚拟进程执行,实体进程和虚拟进程异步执行所述目标程序,且虚拟进程优先于实体进程执行至少一个线程。比如虚拟线程先并行执行线程1、线程2、线程3,由于线程2的程序长度较短,可能先执行完线程2,也有可能先执行完其他线程,根据实际情况而定。虚拟进程至少执行完一个线程后,实体进程才开始执行,且实体进程执行的线程对应的是虚拟进程执行后状态标记为正常的线程。
22.步骤s2,所述虚拟进程同步执行多个线程,对执行的线程进行状态标记,若状态标记为线程正常,则记录执行结果,并通知实体进程执行该线程;若状态标记为线程异常,则结束执行该线程,并通知实体进程不执行该线程。
23.本方案使用进程级冗余技术,是在内核空间实现进程间数据比较,增加程序故障检测的透明度。将目标程序复制出两个相同的目标程序,一个作为实体进程对外执行,另一个作为虚拟进程作复核,当虚拟进程执行线程无误后,实体进程再执行对应的线程,避免实体进程在正式执行目标程序时发生崩溃,从而防止目标程序崩溃后造成航天器控制器系统失效。本方案无需修改源程序和二进制代码,也无需添加新的硬件支持,具有对用户透明的特点。
24.当一个程序在执行时因各种原因发生错误,一般可以通过三种途径检测出来:一是依赖于操作系统的指示信号,当程序中某线程发生崩溃,操作系统将向此线程的父线程发送指示信号,通过捕捉这一信号可以试试监测到出错线程,比如检测线程崩溃等错误,这种方式需要修改源程序或二进制代码;二是通过父线程给子线程的每次运行设置一个计时器,若超时后该线程仍未进入休眠状态,则可判定此线程出错,比如检测死锁、死循环等错误,这种方式需要添加新的软件支持;三是通过在检测点对数据的合法性进行检查发现错误,本方案使用的就是第三种检测方法。
25.由于每个线程是由若干个函数功能块组成,在划分线程时,可以将线程划分为多个函数功能块,将一个函数功能块作为最小执行单元,一个函数功能块也是由一个或多个完整的函数组成,因此每个函数功能块的长度可以不一致。比如线程1中包含5个函数功能
块,线程2中包含3个函数功能块。换句话说,每个线程中包含了多个函数功能块,当虚拟程序或实体程序在执行线程时,相当于就是在依次调用并执行各个函数功能块。
26.本方案基于时间冗余原则,搭建异步虚拟容错软件,执行最小执行单元,实体进程和虚拟进程异步执行目标程序,且虚拟进程先于实体进程执行至少一个线程。虚拟进程在执行目标程序时,可以同步执行多个线程,多个线程之间相互独立,每执行完毕一个线程,会对该线程进行状态标记,状态标记的内容包括数据帧、线程编号、执行过程、执行结果、线程正常与否。若状态标记为线程正常,则记录执行结果,并通知实体进程执行该线程;若状态标记为线程异常,则说明该线程的程序崩溃了,或者程序出现了错误,那么虚拟进程暂时结束执行该线程,并通知实体进程不执行该线程。
27.搭建的异步虚拟容错软件的架构如图3所示,架构主要包含三大部分,一是软件实体进程,二是具有映射和恢复机制的虚拟进程的空间,三是包括数据库服务、监控服务和时间异步恢复机制等底层支撑控件集。具体而言,虚拟进程的空间作用是提前执行至少一个线程,执行状态标记为线程正常,则给实体进程传递一个信号,驱动实体进程执行该线程。若虚拟进程的空间中程序因异常造成崩溃,则由恢复机制将虚拟进程回退到恢复点,也就是该线程中前一个函数功能块,同时驱动实体程序停止执行该线程。
28.由于每个线程由多个函数功能块构成,虚拟进程在执行线程时,依次调用该线程中各个函数功能块进行执行,当执行到某个函数功能块后,状态标记为线程正常,则继续调用并执行下一个函数功能块,直到该线程的所有函数功能块都调用并执行完毕,且所有函数功能块执行后状态标记均为线程正常,则通知实体进程执行该程序。
29.但是如果虚拟进程在执行到某个函数功能块后,状态标记为线程异常,则说明该线程出现程序崩溃,那么虚拟进程回退至恢复点,也就是上一个函数功能块,如果在执行第一个函数功能块时状态标记就为线程异常,则直接回退至该线程的起始点,并通知实体进程不执行该线程。虚拟进程回退至恢复点后,重启该线程,重启后继续执行恢复点的下一个函数功能块,重启能够解决线程异常崩溃的问题。因此重启后直到该线程的所有函数功能块都调用并执行完毕,且所有函数功能块执行后状态标记均为线程正常,则通知实体进程执行该线程。
30.由于虚拟进程执行的目标程序与实体进程执行的目标程序是完全相同的,当虚拟进程因线程异常重启某线程时,实体进程同样也重启该对应的线程,以解决线程异常崩溃的问题。
31.当实体进程执行完虚拟进程通知的可执行的线程后,如果暂时未接收到下一个可执行的线程,则实体进程进入等待状态,直到虚拟进程执行完某个线程后并对该线程状态标记为线程正常后,向实体进程发出通知,实体进程再按照虚拟进程的通知执行该线程。
32.作为举例,请参见图2,假设将目标程序划分为n个线程,初始化后,虚拟进程优先于实体进程并行执行线程1、线程2、线程3,那么接下来对该目标程序的执行过程进行详细分析,便于理解本方案:(1)虚拟进程并行执行线程1、线程2、线程3,其中线程1由5个函数功能块组成,线程2由3个函数功能块组成,线程3由6个函数块组成;假设线程2是程序长度最短的,也是最先执行完的一个线程,所以此处以线程2作为举例进行说明,当虚拟进程调用并执行线程2的第一个函数功能块后,状态标记均为线程正常,则虚拟进程准备调用并执行线程2的第二
个函数功能块;(2)虚拟进程调用并执行线程2的第二个函数功能块后,状态标记为线程异常,则说明线程2的第二个函数功能块程序崩溃出错,此时虚拟进程回退至第一个函数功能块,并重启线程2;(3)重启线程2后,虚拟进程从第一个函数功能块继续调用并执行第二个函数功能块,重启线程2后解决了程序崩溃出错的问题,所以虚拟进程调用并执行第二个函数块后,状态标记为线程正常,则虚拟进程准备调用并执行线程2的第三个函数功能块;(4)虚拟进程调用并执行线程2的第三个函数功能块后,状态标记为线程正常,完成对线程2的执行,则虚拟进程通知实体进程执行线程2;实体进程接收到虚拟进程的通知后执行线程2;(5)虚拟进程执行完毕线程2后,可能线程1、线程3还在执行中,当执行完线程1或线程3后,虚拟进程通知实体进程执行线程1或线程3,若实体进程接收到通知时正在执行线程2,也可以同时并行执行线程1和/或线程3;如果当实体进程执行完毕线程2后,虚拟进程还在执行线程1和线程3,则实体进程进入等待状态,直到虚拟进程执行完线程1或线程3后,向实体进程发起通知时,实体进程才按照虚拟进程的通知进行执行。
33.更进一步地,本方案处理通过虚拟进程预先检测线程的是否出错崩溃,还加入判断实体进程的执行结果是否正确的步骤。实体进程在执行虚拟进程通知执行的线程后,将执行结果与虚拟进程记录的执行结果进行比较,若比较执行结果一致,则实体进程回退至该线程的起始点。
34.当实体进程因执行结果不一致回退至线程的起始点后,重启该线程。若重新执行该线程后比较执行结果与虚拟进程记录的执行结果一致,则实体进程执行下一个虚拟进程通知执行的线程。
35.本发明在执行线程时比较程序过程,由虚拟进程执行线程后得到的执行结果作为比较依据,同时将执行结果传递映射给实体进程,实体进程将执行结果与比较依据进程判断,除了random类型外均认为实体进程的执行结果与虚拟进程的执行结果应有唯一解,因此只有一致时才认为线程执行结果正确。
36.综上所述,本发明针对航天软件程序的可靠性和可用性特点,根据时间冗余设计思想,提出异步虚拟容错软件架构设计思想,通过构建虚拟空间的映射程序,采用进程并行冗余、线程异步容错的设计原则,虚拟进程优先执行线程,经确认反馈线程正常后,通知实体进程完成执行,完成异步核准处理流程。
37.根据上述软件架构逻辑描述,软件底层支持中间件包括监控服务,因此在对于造成软件异常的外部输入数据时,可将此类数据收集汇总,添加至数据库服务的容错诊断文件中。通过采用特征学习等方法对风险数据进行分析技术,将大量可能造成异常的数据按照非监督的数据分类方法完成自动分类,或者可以通过人工指定标准,例如数据长度、某些明显固定的数据字段、非法数据标识等,将其作为数据核验知识库,对后续系统的输入程序数据均进行相似度检查,风险预置以筛选威胁数据,并将其在虚拟程序中运行以验证评估结果进行符合验证。
38.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献