问答题
阅读以下关于嵌入式系统技术的说明,根据要求回答问题1至问题3。
[说明]
某水电站根据安全监控的需要决定采用嵌入式工控微机进行实时多任务安全监测。该系统有32路模拟量输入、96路开关量、16路脉冲量输入和水位落差量输入,产生显示信息、报警信号、监测报表和水位传感器控制信号等输出。该水电站安全监测系统具有以下几个特点:
(1)对各种模拟量、开关量、脉冲量、水位落差量等数据量的监测,事实上只是周期性地重复执行相应的各个任务模块。
(2)监视的对象比较固定,系统硬件的规模相对固定不变。
(3)尽可能允许把所有软件都固化在EPROM中。
(4)人机交互作用的内容固定,即由操作人员通过键盘去调用此系统中所存入的相应应用程序,不会去修改应用程序。
基于以上安全监测系统的特点,该水电站技术研发部门准备选用现有的工业控制机系统及现成的各种模板等硬件,由本部门的开发人员自行开发软件。所开发的软件主要包括:
(1)应用程序,即按各类输入/输出量的采集、处理、显示、报警和制表等功能分别作为若干任务块,由这些任务组成应用程序。
(2)多任务嵌入式实时操作系统,用来协调各任务的资源分配与管理,管理任务之间的联系与多任务操作。
问答题
[问题1]
根据以上安全监测系统的特点,技术研发人员郭工程师提出了一个自行编制简化“多任务嵌入式实时操作系统”的方案,以适应于协调管理硬件资源和监测对象的实际需求,其中只保留了标准的多任务实时操作系统的核心功能,例如CPU管理、中断管理和外设管理等。请在200字以内简要说明郭工程师提出的简化的“多任务嵌入式实时操作系统”可能具有哪些优点。
【正确答案】
【答案解析】①可加快该操作系统的开发周期,并使其更易于维护,
②减少操作系统占有内存的容量,便于固化,
③减少操作系统的运行开销(例如CPU占用时间),
④可提高系统的实时性能和快速响应能力;
⑤可提高系统的资源利用率和性价比等
这是一道要求读者根据实际应用环境分析多任务嵌入式实时操作系统的特点的综合理解题。本题的解答思路如下:
(1)嵌入式实时系统(RTOS)是指能够在指定的时间内完成系统功能和对内部或外部、同步或异步时间做出响应的系统,它还具有在事先定义的时间范围内识别和处理离散事件的能力,系统能够处理和存储控制系统所需要的大量数据。实时操作系统的主要功能是多任务、可抢占的任务调度、中断管理、存储管理、时钟管理、外部设备管理以及文件系统等。
(2)嵌入式实时操作系统的主要特点如表6-16所示。
{{B}} 表6-16 实时操作系统的主要特点{{/B}}
主要特点
描 述
多任务
  不但包括周期任务、非周期任务、偶发任务,还包括非实时任务。实时任务要求满足其时限,而非实时任务要求其响应时间尽可能地短
约束的复杂性
时间约束
  根据截止期限,又可分为硬实时和软实时。硬实时是指应用的时间需求应能够得到完全满足,否则将造成重大安全事故,软实时是指偶尔出现违反某些应用的时间需求而不会对系统运行造成严重影响
资源约束
  是指多个实时任务共享有限的资源时,必须按照一定的资源访问控制协议进行同步,以避免死锁等现象
执行顺序约束
  是指各任务的启动和执行必须满足一定的时间和顺序约束
性能约束
  是指必须满足可靠性、可预测性、服务质量QoS等性能指标
具有短暂超载能力
  是指能应对系统元件出现老化,环境的动态变化、应用规模的扩大等短暂超载现象
可预测性
  是指系统能对实时任务的执柠时间进行判断,确定是否能够满足任务的时限要求
可靠性
  是指采用静态分析、保留资源、冗余配置等方法,使系统在最坏情况下都能正常工作或避免损失
与外部环境的
交互作用性
  是指实时系统必须在规定的时间内对外部环境的请求做出反应,以及时任何异常行为采取预防措施
(3)由试题中关键信息“只保留了标准的多任务实时操作系统的核心功能,例如CPU管理、中断管理和外设管理等”可直接理解简化的多任务嵌入式实时操作系统中“简化”一词的涵义。“简化”可加快该操作系统的开发周期,并使其更易于维护。
(4)由题干关键信息“对各种模拟量、开关量、脉冲量、水位落差量等数据量的监测,事实上只是周期性地重复执行相应的各个任务模块”可知,系统中有着相对较多的简单输入量,另外由于“监视的对象比较固定,系统硬件的规模相对固定不变”,因此,采用简化多任务实时操作系统是可行的。
(5)采用简化的实时操作系统比标准多用户实时操作系统(MROS)所需占用的主存空间容量小,更符合题干中“尽可能允许把所有软件都固化在EPROM中”的要求。
(6)另外,采用简化的实时操作系统具有可提高系统的实时性能和快速响应能力,可减少操作系统的运行开销(例如CPU可更快运行任务,更快响应中断),提高系统的资源利用率和性价比等。
问答题
[问题2]
设计简化的多任务嵌入式实时操作系统时,由于多个任务均可能要求占用CPU这个关键资源,因此CPU的任务管理是一个非常重要的设计内容。在该嵌入式实时操作系统中,作为占用资源的基本单位,任务总共有五个状态,分别是休眠状态、就绪状态、运行状态、等待状态和延时等待状态。在任何时候,一个任务只会处于其中的某一个状态。请根据图6-8中已给出的信息将(1)~(5)空缺处填写完整。
【正确答案】
【答案解析】等待状态 (2)就绪状态 (3)休眠状态 (4)延时等待 (5)运行状态 这是一道要求读者根据实际应用环境分析嵌入式实时操作系统任务状态转换的综合理解题。本题的分析思路如下: ①任务是相应任务块程序关于某数据集合的可并发的一次运行活动,即任务通常作为占有资源的最基本单位。在本案例的实时操作系统中,任务总共有五个状态,分别是休眠状态、就绪状态、运行状态、等待状态和延时等待状态。而且试题中已给定“在任何时候,一个任务只会处于其中的某一个状态”。 ②其中,休眠状态指任务还没有初始化,或任务的执行已经结束,实际上对操作系统来说,该任务是不存在的。就绪状态是指任务已经具备了运行的条件,但是由于CPU正忙,正在运行其他的任务,因此暂时不能运行的状态。 ③运行状态表示此任务正在占有CPU,并在CPU上运行。处于就绪状态的任务只要把CPU控制权分配给它(任务调度),它就能够立刻执行。 等待状态是指任务因为正在等待某种事件的发生而暂时不能运行。例如,它正在等待某个I/O操作的完成,或者它同某个任务之间存在着同步关系,正在等待该任务给它发信号。此时,即使CPU已经空闲了下来,它也还是不能运行。处于等待状态的任务可以被某些系统调用或事件激发而转到就绪状态。当一个任务运行过程中需要等待某个事件或更高优先级的任务占用CPU时,将由运行状态转移到等待状态。由此可判断(1)空缺处填写的内容是“等待状态”,(2)空缺处填写的内容是“就绪状态”,(5)空缺处填写的内容是“运行状态”。 ④处于运行状态的任务如暂时不需要占用CPU资源,则可直接进入休眠状态;而当操作系统唤醒某一处于休眠状态的任务时,该任务将进入就绪状态,因此(3)空缺处可填入“休眠状态”等内容。 ⑤由图6-8中“延时时间到”以及(2)空缺处填写的内容是“就绪状态”、(5)空缺处填写的内容是“运行状态”可推理出,(4)空缺处可填人“延时等待”这一状态。 ⑥图6-14给出了一个完整的简化实时操作系统的任务状态转换图。
问答题
[问题3]
在该水电站安全监测系统中,数据采集任务(Collect_task)把所采集的数据送入一单缓冲区,计算任务(Calculate_task)从该单缓冲区中取出数据进行计算。以下是利用信号量机制实现两个任务共享单缓冲区的C语言形式化描述程序。请将程序代码中(6)~(9)空缺处以及(10)空缺处的内容填写完整。
int sr=0'
int{{U}} (6) {{/U}}:
main()
{
cobegin
Collect_task();
Calculate_task();
coend
}
Collect_task()
{
While(采集工作未完成)
{
采集一个数据,
P(se),
将数据送入缓冲区中:
{{U}} (7) {{/U}},
}
}
Calculate_task()
{
While(计算工作未完成)
{
{{U}} (8) {{/U}},
从缓冲区中取出数据:
{{U}} (9) {{/U}}
进行数据计算送入缓冲区中,
}
}
如果以上程序中“int sf=0;”语句不小心被改写成“ints{=-1;”,那么系统运行时将会进入{{U}} (10) {{/U}}状态。
【正确答案】
【答案解析】se=1 (7)V(sf) (8)P(sf) (9)V(se) (10)死锁 这是一道要求读者掌握信号量操作机制的程序分析题。本题的解答思路如下: ①在本试题中,数据采集任务(Collect_task)和计算任务(Calculate_task)共用一个单缓冲区。数据采集任务(Collect_task)采集到一个数据后,只有当缓冲区为空时,才能将数据送入该单缓冲区存放,否则应等待单缓冲区腾空。当单缓冲区中有数据时,计算任务 (Calculate task)才能从缓冲区中取出数据进行计算,否则也应等待。