某公司新近签订了一份控制系统软件的研制合同。合同技术要求如下:(1)本控制系统的软件运行平台拟采用嵌入式实时操作系统,控制系统的工作周期为10ms,要求控制软件能够精确地按事先预定的时间顺序完成数据的采集、处理和输出。(2)为了提高整个系统的可靠性,控制系统采用容错处理,即用两个相对独立的计算机承担相同的工作,通过交叉对比,实现控制的双余度管理;当任何一台计算机出现故障时,系统可以进行单余度控制。系统结构如图8-2所示。 公司总工程师将本项任务交付给项目主管李工程师实施,要求李工按双方合同要求完成本项目的策划、需求分析和方案设计工作,重点强调系统的可靠性要求,并特别提示:目前比较流行的嵌入式操作系统普遍采用可抢占式优先级调度策略,不能满足用户关于“能够精确地按事先预定的时间顺序完成数据的采集、处理和输出”的要求。【问题1】李工接到任务后,认为本项目比较简单,很快就安排3名技术人员分别负责数据采集/输出模块、数据处理模块和比较监控模块的编写。总工程师听到汇报后,认为李工的方案和安排不妥,理由是李工忽视了系统的可靠性要求,对系统需求的理解不够深入为实现系统关于可靠性方面的需求:(1)你认为在组织结构、人员分工、设计开发等方面应做出哪些安排和规定?(2)请写出关于余度表决算法的考虑。【问题2】请用200字以内的文字说明李工应如何设计优先级调度策略,并按照表8-3的要求实现任务流程处理。【问题3】图8-3为控制软件的数据流程关系,请根据本题给出的各个功能模块,填补其中的空缺处。
一、试题分析在可靠性要求极高的控制系统中(如航空、航天和核电厂等领域),控制设备的可靠性问题始终是嵌入式领域待解决的问题。一旦发生控制错误,将会引起机毁人亡的惨剧,设置带来区域性的灾难,因此,余度技术是计算机技术中最为关键的技术。在传统的余度控制计算机系统中,为了保证系统的实时性和控制的完整性,一般不采用嵌入式操作系统,而是用软件直接控制硬件的方式实施,但随着计算机技术发展,软件开发手段的不断完善,目前广泛应用了嵌入式实时操作系统作为余度软件的基本支持平台。但是,为了确保实时性要求,达到余度管理同步操作的精确性,必然对操作系统加以限制。本题重点是考核考生如何应用余度技术完成高可靠性控制系统的策划与设计的能力。1. 总结问题的要点本题主要是围绕具有高可靠性控制系统这一应用背景来考虑的,考察相关领域考生对具有余度需求的项目进行组织、策划和设计的方法。作为系统分析师,在启动项目之前,应学会充分论证用户需求对实施过程的组织能力。本题的主要要点应该包括以下几方面内容:n 项目的组织要合理,解决由于人员素质的差异而带来的软件缺陷。n 采用的编程语言要有一定冗余能力,以预防语言的二义性带来的软件缺陷。n 设计方法要合理,针对两余度硬件平台的特点,重点考虑两余度的设计策略,n 实现余度间交叉对比和失步后的处理方法。因此,本题的选用具有一定的普遍性。【问题1】本问题主要是要求考生通过对题目的理解,根据题目给出的技术参数和硬件结构,设计出配套的人员组织和典型余度实现的具体方法,包括软件项目组织、语言的选择和具体的表决方法。考生应抓住命题中内容要点,通过项目分解,给出余度设计的几种方法。本题主要考察考生分析问题的能力。开发人员的相互独立性、不同种高级语言的使用以及表决算法的设计是高可靠性控制系统必须考虑的三大因素。【问题2】本问题是在通用操作系统的基础上,为了达到本题所要求的“能够精确地按事先预定的时间顺序完成数据的采集、处理和输出”这一技术特点,在问题一总体思路的基础上,给出在操作系统之上实现精确的交叉对比与系统同步的方法。要求考生对操作系统的任务调度方法有一定的了解,这样才能准确回答此问题。本题主要考验考生在嵌入式实时操作系统之上开发任务确定性调度的设计方法,需要根据题中表内所示的10ms内的任务分派情况,设计出系统软件定时器的节拍数和对操作系统中任务管理的限制等问题,重点衡量对嵌入式系统知识面的掌握程度。【问题3】本题包含两个问题,其一是根据本题给出的两余度数据处理流程的关系,以填空方式,给出流程中默认的处理功能及数据流关系。本题主要考验考试对余度管理的具体处理步骤的熟悉程度;其二是说明在系统发生失步的情况下,如何继承性地处理余度数据。2. 根据问题要点,仔细阅读正文,找出相应的段落本题第二段描述了问题的所在,从图8-2中可以看出,本题的余度方案是两余度系统,输入是一个数据源进入计算机系统,在系统内一分为二,分别输入到不同的计算机中;而输出仅有一路,这说明,两个计算机分别处理完后,通过交叉对比,选择最为接近的数据作为输出数据。理解了这一点,对余度系统的设计具有一定的帮助。本题的第一段值得关注,尤其是文中提到的“要求控制软件能够精确地按事先预定的时间顺序完成数据采集、处理和输出”,是本题关键所在,也是回答【问题2】的基础。本题的第三段主要通过“10ms工作周期内的时间分配表”间接地描述余度管理的重要功能流程,考生可根据本题上述描述的内容,确定性描绘出本题的控制流程。而失步问题值得关注,本题中没有明确提出,但是,作为余度系统,失步是重要的处理环节,考生必须知道。3. 分析试题的内容,构思答案要点通过前两步的分析与归纳,余度问题将是本题首要关注内容之一,也是提高系统可靠性极为重要的考虑内容。通过组织管理、在消化了余度管理核心思想的基础上,主要对任务调度管理、同步设计等关键技术进行解决,就可以设计出较为完善的余度系统。因此,【问题1】和【问题2】是通过对本题的理解而形成答案;【问题3】是基于考生对余度系统理解,完成本命题的流程设计。二、参考答案【问题1】(1)成立两个独立的软件开发小组。两个小组合作编写统一的系统需求稳当和软件功能说明书。两个小组分别进行软件开发,最好使用不同的编程设计语言(如C语言、C++语言和ADA语言)。(2)余度表决算法一般采用主从式。以下假设设计计算机1为主机,计算机2为从机。对输入数据进行交叉对比,如果一致,则用计算机1的数据为数据处理;如果不一致,有历史数据时,计算机1用历史数据为数据处理;无历史数据时,若计算机1和计算机2 的数据中有一个在门限值之内,则使用该数据作为数据处理,若无门限值之内的数据,则计算机1使用默认数据进行处理。交叉对比不一致,应建立故障记录,若故障记录超过门限值,系统变为单余度工作方式。对输出数据进行交叉对比,如果一致,用计算机1的数据为输出数据;如果不一致,且计算机1和计算机2均无历史数据,则计算机1用默认数据作为输出数据。交叉对比不一致,应建立故障记录,若故障记录超过门限值,系统变为单余度工作方式。【问题2】设计时,将本项目的所有任务设定为统一的优先级,避免优先级抢占;根据10ms工作周期内的时间节点划分,设定操作系统的时钟节拍为0.5ms,设计出一个软件定时器;根据软件定时器的计时情况,在事先安排好的时间节点上,分别启动相应的任务工作;如果在规定的时间上任务工作未完成,则按超时处理。原则上使用上一周期的数据。【问题3】(1)数据采集 (2)交叉对比 (3)同步 (4)同步 (5)交叉对比 (6)输出【问题4】计算机1和计算机2进行同步操作时,相互间未能同步上,则称为失步。在一个工作周期开始时,两个计算机在时间上必须同步,一旦发生失步,为了确保系统的稳定,本周期内的工作将采用上一周期的数据进行;如果输出失步,则输出交叉对比功能无效,使用上一周期的输出数据作为本周期的输出。