某水电站根据安全监控的需要决定采用嵌入式工控微机进行实时多任务安全监测。该系统有

admin2022-08-02  36

问题 某水电站根据安全监控的需要决定采用嵌入式工控微机进行实时多任务安全监测。该系统有32路模拟量输入、96路开关量、16路脉冲量输入和水位落差量输入,产生显示信息、报警信号、监测报表和水位传感器控制信号等输出。该水电站安全监测系统具有以下几个特点:对各种模拟量、开关量、脉冲量、水位落差量等数据量的监测,事实上只是周期性地重复执行相应的各个任务模块。 监视的对象比较固定,系统硬件的规模相对固定不变。尽可能允许把所有软件都固化在EPROM中。人机交互作用的内容固定,即由操作人员通过键盘去调用此系统中所存入的相应应用程序,不会去修改应用程序。基于以上安全监测系统的特点,该水电站技术研发部门准备选用现有的工业控制机系统及现成的各种模板等硬件,由本部门的开发人员自行开发软件。所开发的软件主要包括:应用程序,即按各类输入/输出量的采集、处理、显示、报警和制表等功能分别作为若干任务块,由这些任务组成应用程序。多任务嵌入式实时操作系统,用来协调各任务的资源分配与管理,管理任务之间的联系与多任务操作。 [问题1]根据以上安全监测系统的特点,技术研发人员郭工程师提出了一个自行编制简化“多任务嵌入式实时操作系统”的方案,以适应于协调管理硬件资源和监测对象的实际需求,其中只保留了标准的多任务实时操作系统的核心功能,例如CPU管理、中断管理和外设管理等。请在200字以内简要说明郭工程师提出的简化的“多任务嵌入式实时操作系统”可能具有哪些优点。 [问题2] 设计简化的多任务嵌入式实时操作系统时,由于多个任务均可能要求占用CPU这个关键资源,因此CPU的任务管理是一个非常重要的设计内容。在该嵌入式实时操作系统中,作为占用资源的基本单位,任务总共有五个状态,分别是休眠状态、就绪状态、运行状态、等待状态和延时等待状态。在任何时候,一个任务只会处于其中的某一个状态。请根据图6-8中已给出的信息将(1)~(5)空缺处填写完整。[问题3]在该水电站安全监测系统中,数据采集任务(Collect_task)把所采集的数据送入一单缓冲区,计算任务(Calculate_task)从该单缓冲区中取出数据进行计算。以下是利用信号量机制实现两个任务共享单缓冲区的C语言形式化描述程序。请将程序代码中(6)~(9)空缺处以及(10)空缺处的内容填写完整。int sr=0'int (6) :main() { cobegin Collect_task(); Calculate_task(); coend}Collect_task(){  While(采集工作未完成){  采集一个数据,  P(se),  将数据送入缓冲区中:  (7) ,}}Calculate_task(){While(计算工作未完成){ (8) ,从缓冲区中取出数据: (9) 进行数据计算送入缓冲区中,}}如果以上程序中“int sf=0;”语句不小心被改写成“ints{=-1;”,那么系统运行时将会进入(10)状态。

选项

答案

解析 问题1:①可加快该操作系统的开发周期,并使其更易于维护,②减少操作系统占有内存的容量,便于固化,③减少操作系统的运行开销(例如CPU占用时间),④可提高系统的实时性能和快速响应能力;⑤可提高系统的资源利用率和性价比等这是一道要求读者根据实际应用环境分析多任务嵌入式实时操作系统的特点的综合理解题。本题的解答思路如下: (1)嵌入式实时系统(RTOS)是指能够在指定的时间内完成系统功能和对内部或外部、同步或异步时间做出响应的系统,它还具有在事先定义的时间范围内识别和处理离散事件的能力,系统能够处理和存储控制系统所需要的大量数据。实时操作系统的主要功能是多任务、可抢占的任务调度、中断管理、存储管理、时钟管理、外部设备管理以及文件系统等。 (2)由试题中关键信息“只保留了标准的多任务实时操作系统的核心功能,例如CPU管理、中断管理和外设管理等”可直接理解简化的多任务嵌入式实时操作系统中“简化”一词的涵义。“简化”可加快该操作系统的开发周期,并使其更易于维护。(3)由题干关键信息“对各种模拟量、开关量、脉冲量、水位落差量等数据量的监测,事实上只是周期性地重复执行相应的各个任务模块”可知,系统中有着相对较多的简单输入量,另外由于“监视的对象比较固定,系统硬件的规模相对固定不变”,因此,采用简化多任务实时操作系统是可行的。(4)采用简化的实时操作系统比标准多用户实时操作系统(MROS)所需占用的主存空间容量小,更符合题干中“尽可能允许把所有软件都固化在EPROM中”的要求。 (5)另外,采用简化的实时操作系统具有可提高系统的实时性能和快速响应能力,可减少操作系统的运行开销(例如CPU可更快运行任务,更快响应中断),提高系统的资源利用率和性价比等。问题2:(1)等待状态(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:se=1(7)V(sf)(8)P(sf)(9)V(se)(10)死锁这是一道要求读者掌握信号量操作机制的程序分析题。本题的解答思路如下:①在本试题中,数据采集任务(Collect_task)和计算任务(Calculate_task)共用一个单缓冲区。数据采集任务(Collect_task)采集到一个数据后,只有当缓冲区为空时,才能将数据送入该单缓冲区存放,否则应等待单缓冲区腾空。当单缓冲区中有数据时,计算任务 (Calculate task)才能从缓冲区中取出数据进行计算,否则也应等待。②本试题信号量操作机制的实质是一个典型的生产者——消费者操作问题,即需要使用两个任务间同步算法解决问题。③本试题中应设置两个信号量,其中一个信号量来表示缓冲区中是否有可供计算的数据,其初值为0。程序代码中“int sf=0;”语句正是对该信号量的定义。④实现两个任务间同步算法时,还需定义另一个信号量来表示单缓冲区中有无空位置存放新的数据,其初值为1。数据采集任务(Collect_task)程序代码中已给出“P(se),”语句,间接说明另一个信号量的标识是“se”。因此(6)空缺处所填写的内容是“se=1”。⑤当数据采集任务(Collect_task)将数据送入单缓冲区中时,应使用“V(sf),”语句唤醒原处于等待状态的计算任务(Calculate_task)。因此(7)空缺处所填写的内容是“V(sf);”语句。⑥由于计算任务(Calculate_task)需要等待单缓冲区中有数据时,才能从缓冲区中取出数据进行计算,也就是说,单缓冲区中没有数据时,计算任务(Calculate_task)应处于等待状态。因此(8)空缺处实现此功能语句的语句是“P(sf);”。⑦当计算任务(Calculate_task)从缓冲区中取出数据时,单缓冲区的空间被腾空,此时允许将新数据存人该单缓冲区,即单缓冲区的使用权限将交付给数据采集任务(Collect _task因此(9)空缺处需填入语句“V(se);”实现此功能。⑧当信号量sf的初始值为-1时,假设计算任务(Calculate_task)先被调度执行,它执行P(sf)操作时,使sf的值变为-2,计算任务(Calculate_task)进入阻塞状态。假设此时发生了一次时钟中断,数据采集任务(Collect_task)被调度执行,它顺利通过了P(se)操作,并使se的值变为o,接着在执行V(sf)操作,并使sf的值变为-1,假设满足“While(采集工作未完成)”判断条件,P(se)操作将再次执行,并使se的值变为-1,数据采集任务 (Collect_task)也进入阻塞状态。这样一来,两个任务都在等待对方释放信号量,就成为了一种死锁状态。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2424804.html

最新回复(0)