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