APP下载

对嵌入式操作系统健康监控功能的扩展

2017-07-10曹原

科技风 2017年2期

摘 要:本文介绍了一种嵌入式操作系统模块支持层故障处理方法,扩展了ARINC653标准关于支持分区功能的嵌入式实时操作系统的健康监控机制,在操作系统模块支持层建立了具备故障处理、日志记录和自定义故障处理动作等功能的健康监控机制,实现了健康监控对操作系统各个层次的全面覆盖。

关键词:健康监控;模块支持层;嵌入式操作系统

一、背景

计算机系统在运行过程中,应用程序和操作系统可能产生各种类型的错误和故障,传统处理方式多为依据对输入和返回值的判断等方法在发现错误时执行逻辑简单、动作固定的处理行为,往往无法根据当时的系统状态和具体的故障细节进行可配置的、有针对性的处理和恢复。据此,ARINC653中提出了对健康监控系统的实现要求:具有分区功能的嵌入式实时操作系统需要健康监控机制提供故障响应、处理、恢复等安全性功能。操作系统不仅要提供给用户针对某种故障自由选择处理动作的能力,而且需要支持用户自定义故障处理动作。[ 1 ]

具有分区功能的嵌入式实时操作系统为分层结构。[ 2 ]为了适应应用环境的需求,操作系统经过不断发展和演化,形成了由模块支持层、核心操作系统层、分区操作系统层和应用程序层组成的基本结构。[ 3 ]模块支持层作为操作系统的基础,包含硬件驱动程序和基本运行环境,为操作系统屏蔽底层硬件的实现细节和差别,提供统一的接口和运行环境。ARINC653标准规定了传统的核心操作系统和分区操作系统的健康监控功能,而新层次和组件的相关功能需要自行设计和实现。

二、模块支持层健康监控

嵌入式操作系统在不同的运行状态下,不同层次的功能可能发生不同种类的故障,健康监控必须针对故障的类型,根据用户的设置调用不同的处理方法进行处理和恢复。[ 4 ]传统的操作系统健康监控机制涵盖了核心操作系统、分区操作系统和应用程序的各类故障的探测和处理,但并未涉及模块支持层。[ 5 ]本文提出的模块支持层故障处理方法,作为传统操作系统健康监控体系的补充,将健康监控功能延伸至模块支持层,解决了模块支持层故障的处理问题。模块支持层健康监控的主要组成模块包括:健康监控故障处理、故障日志记录管理和用户自定义故障处理动作。

(一)健康监控故障处理

模块支持层健康监控接管模块支持层初始化和运行过程中出现的所有故障。它由以下部分组成:

1.故障注入接口

模块支持层健康监控为模块支持层软件提供注入故障的接口,在模块支持层软件的错误分支,开发者可以使用接口注入指定的故障信息,使模块支持层健康监控介入并接管故障处理相关事宜。

2.故障默认处理例程

模块支持层健康监控为模块支持层软件提供了默认故障处理例程,主要功能包括输出和记录故障相关信息、调用用户设置的故障处理挂钩以及在用户未设置挂钩时根据操作系统的配置执行模块重启、挂起或忽略故障等默认故障恢复操作。

3.故障处理挂钩

模块支持层健康监控为用户提供了介入模块支持层故障处理过程的函数挂钩,通过该挂钩,用户可以避免在发生模块支持层故障时执行默认的模块重启、挂起或忽略操作,而是利用用户挂钩执行用户希望的操作。模块支持层故障处理过程通过挂钩函数参数向用户传递了故障的类型、文本说明等多种相关信息,以帮助用户判别故障情况,进而执行相应的自定义恢复操作。

4.故障处理流程

模块支持层健康监控故障处理流程如图 1所示。

步骤1)注入故障。操作系統模块支持层软件运行过程中产生故障时可调用模块支持层故障注入接口注入相应的故障,参数包括故障代码和自定义故障消息。

步骤2)故障处理。

模块支持层注入故障后即转入故障处理流程:

1)检查故障代码和自定义故障消息长度的合法性;

2)如果操作系统健康监控已初始化,则注入操作系统健康监控,由操作系统健康监控接管处理;

3)如果操作系统健康监控未初始化,则生成和组织故障信息;

4)调用模块支持层默认故障处理动作。

步骤3)模块支持层默认故障处理动作。

模块支持层默认故障处理动作的流程包括:

1)检查故障事件有效性;

2)如果用户挂接了故障信息的显示挂钩,则调用;

3)将故障信息记录至模块支持层故障日志记录;

4)如果用户挂接了自定义故障处理动作,则调用;

5)如果用户未定义故障处理动作,则根据操作系统的配置执行以下三种处理之一:a.重启动操作系统;b.停止处理,进入等待状态;c.不进行处理,忽略故障。

(二)故障日志记录管理

模块支持层健康监控提供了独立于操作系统健康监控的故障日志管理功能,在故障发生时,能够自动记录故障的类型、文本说明等故障相关信息,并提供了故障日志内容获取、显示输出等管理功能,便于用户根据日志查找故障原因。

1.故障日志记录

模块支持层由于其独立运行的特性,需要独立的故障日志记录功能。模块支持层故障处理提供的日志记录功能包括记录日志信息、获取日志信息、格式化显示日志信息等。

在故障发生时,模块支持层故障处理过程会在执行处理动作之前将详细的故障信息记录在指定的模块支持层故障日志记录位置内。该故障日志采用循环记录方式,在记录空间满后,新的故障信息将覆盖最旧的故障信息,以确保记录最近发生的故障。

2.日志记录管理

模块支持层故障处理为用户提供了获取故障日志和格式化显示故障日志内容的管理功能及相关接口。用户能够通过这些接口按照指定的数量和偏移获取故障日志,并保存在指定的缓冲区。提取故障日志后,用户可利用故障信息格式化显示接口以统一的格式输出故障的类型、地址、文本说明等详细信息。

(三)用户自定义故障处理动作

模块支持层故障处理为用户提供了默认故障处理动作,用户还可以根据自己的需要挂接自定义故障处理动作。如果用户的应用场景不希望模块支持层故障处理过程执行重启模块、挂起所有操作或忽略错误的默认动作,用户可以自定义故障处理动作,并通过模块支持层故障处理提供的接口将其挂接至故障处理流程,模块支持层故障处理将会以用户的动作替代默认的重启、挂起和忽略动作。模块支持层故障处理流程通过用户挂钩函数参数为用户提供了故障的所有详细信息,包括故障类型、地址、文本说明等,用户可以根据这些信息实现自定义故障处理逻辑,如:根据故障类型执行相应的恢复方法。

三、总结

在传统的支持分区的嵌入式操作系统结构中,健康监控完整全面的管理了整个操作系统各个层次的故障处理事务。随着操作系统的不断发展和演化,出现了新的结构和层次,健康监控作为操作系统重要的组成部分,也需要进行相应的进化和扩展,以满足新的系统结构的功能需求。本文介绍的模块支持层健康监控扩展了传统操作系统健康监控功能的覆盖范围,并使之与传统健康监控系统有机结合,合作完成故障处理任务,保证了操作系统发展和演化产生的新结构在实际应用中的安全性。

参考文献:

[1] 刘冬,聂同攀,王承惠.基于ARINC653标准机载电子设备健康监控体系设计[J].航空科学技术,2014.

[2] 李宁波,汪溢,俞慎,叶晓芸.嵌入式RTOS健康监控技术研究[J].计算机工程,2009.

[3] 仝敏,卫一芃,张灯.嵌入式分区操作系统可靠性技术的研究与应用[J].航空计算技术,2015.

[4] 刘剑慰,姜斌.飞行控制系统健康监控技术研究与系统开发[J].科技通报,2011.

[5] 李伟,万晓冬.安全嵌入式操作系统的构建与配置[J].电子科技,2010.

基金项目:工信部民用飞机专项科研项目(MJ-S-2012-05)

作者简介:曹原(1983-),男,陕西西安人,硕士,主要研究方向为嵌入式实时操作系统。