问答题 希赛公司承担了一项宇航嵌入式设备的研制任务。本项目除对硬件设备环境有很高的要求外,还要求支持以下功能:
①设备由多个处理机模块组成,需要时外场可快速更换(即LRM结构)。
②应用软件应与硬件无关,便于软硬件的升级。
③由于宇航嵌入式设备中要支持不同功能,系统应支持完成不同功能任务间的数据隔离。
④宇航设备可靠性要求高,系统要有故障处理能力。
公司在接到此项任务后,进行了反复论证,提出三层栈(TLS)软件总体架构,如图所示,并将软件设计工作交给了李工,要求其在3周内完成软件总体设计工作,给出总体设计方案。
问答题 用150字以内的文字,说明公司制定的TLS软件架构的层次特点,并针对上述功能需求①~④,说明架构中各层内涵。
【正确答案】TLS结构框架的主要特点如下: ①应用软件仅与操作系统服务相关,不直接操作硬件。 ②操作系统通过模块支持原软件访问硬件,可与具体硬件无关。 ③模块支持层将硬件抽象成标准操作。 ④通过三层栈的划分可实现硬件的快速更改与升级,应用软件的升级不会引起硬件的变更。 TLS结构框架的各层内涵如下: ①应用层主要完成宇航设备的具体工作,由多个功能任务组成,各功能任务间的隔离由操作系统层实现。 ②操作系统层实现应用软件与硬件的隔离,为应用软件提供更加丰富的计算机资源服务。操作系统为应用软件提供标准的API接口(如POSIX),确保了应用软件的可升级性。 ③模块支持层为操作系统管理硬件资源提供统一管理方法,用一种抽象的标准接口实现软件与硬件的无关性,达到硬件的升级要求,便于硬件的外场快速更换。
【答案解析】
问答题 在TLS软件架构的基础上,关于选择哪种类型的嵌入式操作系统问题,李工与总工程师发生了严重分歧。李工认为,宇航系统是实时系统,操作系统的处理时间越快越好,隔离意味着以时间作代价,没有必要,建议选择类似于VxWorks 5.5的操作系统;总工程师认为,应用软件间隔离是宇航系统安全性要求,宇航系统在选择操作系统时必须考虑这一点,建议选择类似于Linux的操作系统。
请说明两种操作系统的主要差异,完成表1中的空白部分,并针对本任务要求,用200字以内的文字说明你选择操作系统的类型和理由。
{{B}}表1 两种操作系统的主要差异{{/B}}
比较类型 VxWorks 5.5 Linux
工作方式 操作系统与应用程序处于同一存储
空间
多任务支持 支持多任务(线程)操作
实时性 实时系统
安全性
标准API 支持 支持
【正确答案】两种操作系统的差异如表2所示。
{{B}}表2 两种操作系统的主要差异{{/B}}
比较类型 VxWorks 5.5 Linux
工作方式 ①操作系统与应用程序处于不同存储空间
多任务支持 ②支持多进程、多线程操作
实时性 ③硬实时系统
安全性 ④任务间无隔离保护 ⑤支持进程间隔离保护
标准API
选择类似于Linux的嵌入式操作系统。理由如下:
①Linux操作系统是一种安全性较强的操作系统。内核工作在系统态,应用软件工作在用户态,可以有效防止应用软件对操作系统的破坏。
②Linux操作系统调度的最小单位是线程,线程归属于进程,进程具有自己独立的资源。进程通过存储器管理部件(MMU)实现多功能应用间隔离。
③嵌入式Linux操作系统支持硬件抽象,可有效实现TLS结构,并将硬件抽象与操作系统分离,可方便实现硬件的外场快速更换。
【答案解析】
问答题 故障处理是宇航系统软件设计中极为重要的组成部分。故障处理主要包括故障监视、故障定位、故障隔离和系统容错(重组)。用150字以内的文字说明嵌入式系统中故障主要分哪几类?并分别给出两种常用的故障滤波算法和容错算法。
【正确答案】(1)嵌入式系统中故障主要分为: ①硬件故障:如CPU、存储器和定时器等。 ②应用软件故障:如数值越界、异常和超时等。 ③操作系统故障:如越权访问、死锁和资源枯竭等。 (2)滤波算法: ①门限算法。 ②递减算法。 ③递增算法。 ④周期滤波算法。 (3)容错算法: ①N+1备份。 ②冷备。 ③温备。 ④热备。
【答案解析】[解析] 这是一道嵌入式系统架构试题,题目以宇航嵌入式设备的研制为背景。考查软件需求分析、软件架构、框架设计、可靠性设计及嵌入式操作系统相关的一些知识。题目所述的项目中提出了一种新型的架构TLS,由于是项目中提出的架构,大家必然对这种架构感觉比较陌生,但从图中,我们可以很明显地看到,架构是分层的结构。这也就回到了我们熟悉的技术框架之内了。
首先看第1问,问题要求说明“公司制定的TLS软件架构的层次特点”,这需要从层次型架构的特点,以及题目已给出的说明两方面着手进行说明。层次型架构总的来说,特点有:下层为上层提供服务,层次与层次之间有着良好的独立性,结合题目的说明,可以总结出以下的特点:
①应用软件仅与操作系统服务相关,不直接操作硬件。
②操作系统通过模块支持原软件访问硬件,可与具体硬件无关。
③模块支持层将硬件抽象成标准操作。
④通过三层栈的划分可实现硬件的快速更改与升级,应用软件的升级不会引起硬件的变更。
基于这种思想,TLS结构框架实现了宇航设备中软件功能服务,这样考生就可以完整地叙述各层软件的设计内涵,即:
①应用层主要完成宇航设备的具体工作,由多个功能任务组成,各功能任务间的隔离由操作系统层实现。
②操作系统层实现应用软件与硬件的隔离,为应用软件提供更加丰富的计算机资源服务。操作系统为应用软件提供标准的API接口(如POSIX),确保了应用软件的可升级性。
③模块支持层为操作系统管理硬件资源提供统一管理方法,用一种抽象的标准接口实现软件与硬件的无关性,达到硬件的升级要求,便于硬件的外场快速更换。
接下来看第2问,该问考查嵌入式操作系统的相关知识。VxWorks和Linux是两个常见的嵌入式操作系统,其特点如表3所示。
{{B}}表3 两种操作系统的主要差异{{/B}}
比较类型 VxWorks 5.5 Linux
工作方式 操作系统与应用程序处于同一存储空间 ①操作系统与应用程序处于不同存储空间
多任务支持 支持多任务(线程)操作 ②支持多进程、多线程操作
实时性 ③硬实时系统 实时系统
安全性 ④任务间无隔离保护 ⑤支持进程间隔离保护
标准API 支持 支持
通过比较,显然选用类似于Linux的嵌入式操作系统适用本题要求。理由包括3点:
①Linux操作系统是一种安全性较强的操作系统。内核工作在系统态,应用软件工作在用户态(这点是系统安全性要求),可以有效防止应用软件对操作系统的破坏。
②Linux操作系统调度的最小单位是线程,线程归属于进程,进程具有自己独立的资源。进程通过存储器管理部件(MMU)实现多功能应用间隔离。
③嵌入式Linux操作系统支持硬件抽象,可有效实现TLS结构,并将硬件抽象与操作系统分离,可方便实现硬件的外场快速更换。
最后看第3问,作为宇航系统的嵌入式设备,硬/软件故障是宇航系统最为关注的内容,根据宇航系统的特点和系统组成,故障一般分为3类,即硬件故障、应用软件故障和操作系统故障,在设计中,应考虑这3类故障的处理方法。硬件故障一般包括CPU运算错误、存储器访问/越界错误、MMU配置错误、定时器计数错误和内总线错误等;应用软件故障一般包括计算越界、除0、溢出和超时等各种异常情况;操作系统故障一般包括越权访问、死锁、资源枯竭、调度超时、配置越界和操作系统异常等。
一般情况下,宇航系统的故障分为瞬态故障和永久故障,瞬态故障是指偶然发生的错误,而永久故障是指发生后不可消失的错误。在容错系统中,故障一般是由瞬态故障向永久故障转变,将鉴别瞬态故障和永久故障的算法称为滤波算法。在嵌入式实时系统中,常用的滤波算法包括门限算法、递减算法、递增算法和周期滤波算法等。
故障的鉴别目的是实现宇航系统的容错与重构。常用的容错算法是N+1备份、冷备、温备和热备。N+1备份是指N个通用模块之一的任何一个模块发生故障后,将故障模块的任务迁移到备份模块运行;冷备、温备和热备是3种备份方式,可根据宇航系统的总体备份时间或重要程度安排不同的备份算法。