论文部分内容阅读
为了应对恶劣的外层空间环境,航天系统的软硬件必须具备抗辐射影响的容错特性,而错误检测(简称检错)是容错的重点和难点环节。近年来,商业货架(COTS)器件被越来越广泛地应用到现代航天系统,加上体积、重量等物理条件以及成本因素的限制,使得硬件实现的检错面临重重困难,而不依赖于硬件的软件实现的检错由于通用性强、成本低、不易受技术封锁以及与COTS天生关系紧密等优势被凸显出来,成为一个研究热点。以空间机器人为背景研究航天软件的错误检测技术具有普遍性和代表性。空间机器人是一种低成本的轻型遥控机器人,可在空间环境中导航及飞行,代替宇航员完成舱外作业。它是现代航天系统的典型代表,在软硬件上具备现代航天系统的典型特征:硬件上它运算节点多,大量使用不具备抗辐射能力COTS器件;软件上具有基于组件技术、分布式运行,组件来源复杂,具有多任务操作系统等现代航天系统的普遍特征。传统的软件检错技术不能满足这些新特征的提出的新要求,为此需要研究新的软件检错技术。结合空间机器人软件系统的特点,本文首先研究了软件检错技术的基本原理与评价体系。提出对空间机器人的软件容错问题在进程和系统两个层次分别进行研究,再用一个混合模型来协调这两个层次,最终通过一个原型系统对理论进行验证和评估。进程内的错误通过在编译阶段自动添加检纠错指令的方法进行检测。这样可以避免人工添加指令的成本,还可以提高效率。但自动添加检错指令必须突破现有技术受限于寄存器分配的限制,为此本文提出了模拟存储器的概念及分配方法。其核心是基于编译后的程序中寄存器使用不均的特点,利用暂不使用的寄存器或存储器模拟寄存器供添加的检纠错指令使用。针对控制流和数据错误,分别设计了基于模拟存储器的错误检测算法,并将二者组合优化,提高了检错覆盖率和检测效果。实验表明,该方法效果明显,优于现有其它方法。系统级错误检测通过先研究框架模型,再研究不同实现算法的思路来实现。本文提出的分布式组件检错模型(CDEDM)是一个多层检错模型,适用于具有分布式、基于组件以及多进程等复杂结构特点软件,它充分利用系统空闲资源来提高系统性能,同时它被设计得易于扩展和与其它技术协作。基于CDEDM模型,本文提出了分布式自适应冗余模型(DARM)模型。在此基础上提出了IO错误检测和利用微检查点进行错误检测的算法。其中前者是一种非侵入式的技术,可以检查IO的顺序和内容的正确性;而后者则更加灵活,可设置微检查点的位置、密度等细节。实验表明二者可联合运用,效果良好。最后本文建立了一个混合检错模型(MSEDS),并以空间机器人实际项目为背景建立原型系统来验证。将前述进程级和系统级的研究成果,集中到同一个系统内,实现利用软件检错技术对一个复杂软件的完整覆盖。辅以故障注入等系统,在模拟实际空间环境的条件下进行验证,原型系统表现符合预期,其平均故障检测率达到了93.5%,平均正常运行率为95.5%,平均错误纠正率为95.1%,而平均只增加了21%的时间开销和约132.1%的存储开销。