在线操作系统(漫谈实时操作系统)
导读:实时操作系统(RTOS)是一种实时管理硬件资源、承载应用程序和处理数据的操作系统。它定义了实时任务处理时间、中断延迟以及硬件和应用程序的可靠性,这对于低功耗、内存受限的设备以及依赖于它们的网络/系统尤为重要。RTOS和通用操作系统的关键区别在于,实时操作系统在应用程序任务接受和完成的时间上具有高度的可靠性和一致性。
作者简介 :彭瑜,教授级高工,上海工业自动化仪表研究院技术顾问,PLCopen中国组织名誉主席,工信部智能制造标准化体系建设工作组专家,国家智能制造标准化协调推进组专家咨询组专家。*本文由 工控百家谈 授权发布
1
软实时、硬实时
和确定性的基本概念
微软公司1995年发表的文献《Real-Time Systems and Microsoft Windows NT》中对硬实时操作系统做了如下定义:硬实时操作系统“必须无故障地在规定的时间间隔内对某个事件作响应,这种响应必须可以预测,而且不受该操作系统所承担的其它活动的影响。”由此可见,硬实时系统必须在预定的时间间隔内不停顿地对其数据或事件进行操作。与此相反,软实时系统仅在平均的意义上以一种定时的方式对其数据或事件进行操作,而不考虑它被延迟进程调用(DPC)中断而产生的停顿。
按此定义,显然Windows NT并非一种硬实时的操作系统。NT不能保证控制的确定性,其软实时的本质难以确保控制应用的有效执行。它用于实时控制还有以下缺陷:线程优先级太少;调度决策不透明和非确定;可能发生优先级颠倒,特别在中断处理时会使高优先级的任务处于等待状态。
将硬实时和软实时的概念引入工业控制系统,其完整的表述应该是:在硬实时系统中,每个事件都必须得到响应,从事件起动到任务執行完成,总在一个有界的时间周期内进行(见图1上半部分);在软实时系统中,某几个事件可能不会触发任务执行而丢失,不能保证任务执行所要求的时间在一个有界的时间周期内(见图1的下半部分)。显然,如果没有硬实时环境的支撑,图1中这个控制器处于不稳定状态,其控制质量难以接受。因此操作系统的硬实时特性是影响控制系统确定性的关键因素。
图1 对于周期性的实时控制任务硬实时和软实时的处理的差异举例
计算机的性能和确定性不是等同的概念。计算机的性能是一种处理器完成有效工作的能力。一般而言,性能越好表示在一定的时间周期内可以处理的指令越多,通常认为提高执行速度(即提高处理器的主钟频率)便可提高性能。事件等待时间是一个系统对一个异步事件响应能力的度量。系统的事件等待时间与确定性密切相关。它与CPU响应中断并取得总线控制权的时间之和,以及系统将CPU的状态改变为中断处理程序的能力有关。
明确了硬实时、软实时和控制确定性的概念,就可以认定:硬实时系统的时间安排是事先排定的,所以各个任务保证从对外部事件的响应开始,在精确的时间限度内开始执行,并在确定的时间间隔内完成程序的执行。因此硬实时系统在时间尺度上是确定性的。软实时系统通常按起始例行程序的平均时间长度考量,因而不可避免会发产生受其它因素制约等待时间,从而使程序执行的时间难以确定。由此可以断定,任务的确定性要求严格的应用必须选用具有确定性特性的硬实时操作系统。
还有一种表述。时间是区分硬实时和软实时的关键参数。在硬实时系统中,将时间线作为在任何情况下都必须遵循的判定准则。硬实时系统不使用任何类型的永久内存,因此它们的进程必须在第一次执行就正确完成,即必须在指定的时间内对事件产生准确的响应。这种硬性的预定时间一般是毫秒级的。此外,硬实时系统的数据文件都是小或中等的存储容量,因而对数据完整性的要求不像对大型数据文件那样,较为简单。像飞行控制系统、飞行交通控制系统、飞机自动驾驶系统、导弹制导系统、反导弹系统、核反应堆控制系统、铁路信号系统、电子医疗装置系统、起搏器、工业控制系统、运动控制系统等都是硬实时系统。
2
采用实时操作系统的必要性
实时操作系统(RTOS)是一类嵌入式/非嵌入式应用软件的基础和开发平台。在开发阶段,RTOS能使开发工作更容易更有效率地进行;在运行阶段,它自动执行软件程序,准时进行操作,并能自动响应外部事件的作业。
从更有效地应用软件执行任务的视角来看,我们有充足的理由采用实时操作系统。因为实时操作系统提供了基于优先级的调度,使我们能把非关键的处理任务与关键的处理任务加以分离;实时操作系统提供API函数,允许我们开发更清晰和更小的应用程序代码;将对时间有严格要求、且基于任务的设计加以抽象,会使软件模块之间的相互依赖更少;实时操作系统提供模块化的基于任务的开发,便于对基于模块化的任务进行测试;基于任务的API促使对任务进行模块化开发,通常会使任务在系统中的功能有明确的定义,同时使团队可以按任务分工,各自独立完成项目中的部分;RTOS是事件驱动的,不会将时间耗费在未发生事件所引发的处理上。
实时操作系统由以下部分构成(见图2):调度程序 按优先级确定任务执行的先后顺序;对称多处理程序 实时操作系统可采用并行处理的方式处理多个不同任务;功能库 用户通过功能库作为接口与实时操作系统的内核和应用程序代码连接,而该应用程序允许用户向内核发送请求使用功能库,从而给出所要求的结果;存储管理 在实时操作系统中分配每个程序的存储空间,是RTOS最重要的部分;快速调度延迟 它是操作系统可以识别的任务终止和线程实际所花费的时间之间的间隔,该线程处于就绪队列中,并已开始处理;用户定义数据对象和类RTOS系统使用了C、C++等编程语言,需要根据它们的操作进行组织。
图2 实时操作系统的基本组成
作为系统软件的核心,嵌入式操作系统的主要作用如下:
①有效管理越来越复杂的系统资源;
②将硬件虚拟化,使开发人员得以从驱动程序的移植和维护中得到解脱;
③提供库函数、驱动程序、工具集以及应用程序。
实时操作系统一般具有以下特性:占用非常少的内存,例如VxWorks的内核极小;消耗更少的资源;实时性强,如VxWorks对外部事件的响应≦1mS;对事件的响应时间高度可预测;可在不可预测的环境中运行;内核保存被中断的任务的状态,并决定下一步应该运行的任务;内核恢复被中断任务的状态,并将该任务的控制权交还给CPU。随着嵌入式设备的功能越来越趋于强大和复杂,系统的开发对操作系统的依赖就越来越大,以至于在嵌入式系统中操作系统成为系统中必不可少的部分。
3
实时操作系统的选择
与PC机的操作系统可选择品种很有限不同,可供嵌入式系统选择的实时操作系统差不多有200种之多,而且每种操作系统软件的差异都很微妙,甚至难以捉摸。我们不妨从有关调度算法、信号传送特征、存储器要求、等待时间、工具的支持以及价格模型等方面的性能和知识来区分不同操作系统的差异。
具体在选择实时操作系统时可以考虑以下因素。首先是性能,性能是选择RTOS时需要考虑的最重要的因素,应该从使用的场景和范围出发合理地考虑性能。譬如同时执行任务的最大数目,选择过多浪费资源,选择太少有可能不够用。中间件,如果在实时操作系统中没有中间件支持,那么就会出现进程整合耗时的问题。应该挑选经过实践检验的口碑好的RTOS系统才不会在执行任务时出错。一般来讲嵌入式系统的资源有限,而实时操作系统的程序体量小,因此在嵌入式系统中广泛使用实时操作系统是最合适不过的。另外,用户都乐意选择任务转移时间少的实时操作系统,这样在任务转移时实时的性能仍然很好。独特的功能:一个好的RTOS还应该具有一些额外的功能,如如何执行命令、有效保护系统的内存等。24/7性能:RTOS是对于那些需要长时间保证一天24小时不停地运行的应用,实时操作系统的24/7运行性能是必须的选择。
要选择正好适用于嵌入式产品的RTOS,也不是一件轻而易举的事情。目前用得比较多的硬实时操作系统有:WindowsCE(V.6.0/7.0版本以上),VxWorks(美国风河公司,已被Intel收购),pSOS,Ventur Com ETS 10.1,Ventur Com RTX 5.1 for Windows NT、2000、XP,OSE(瑞典Enea公司),……。对于较大型的应用,也可以采用带实时操作系统内核的Windows NT embedding,简称NTe。另外,适用于嵌入式系统的Linux操作系统,源码公开,也有一些实时Linux操作系统,如奥地利开源自动化开发实验室的OSADL;再如在Linux主核中集成另一个专用的实时核Cobalt,再用PREEMPT_RT补丁与Cobalt核组合后,由Cobalt调度的实时任务可以由定期的Linux任务来创建。
据2014年嵌入式OS市场调查,居前八位的实时操作系统是:GreenHills Software的INTEGRITY、WindRiver的VxWorks、QNXNeutrino、FreeRTOS、Micrium的µC/OS-II,III、WindowsCE、TI-RTOSKernel (前称DSP/BIOS)、RTEMS的嵌入式系统开源RTOSdesigned for embedded systems, 主要用于导弹和空间探测器。
4
国内的实时操作系统简介
国内的实时操作系统有华东计算技术研究所引进消化美国风河公VxWorks实时操作系统的基础上开发了具有自主知识产权的ReWorks,目的是在开发嵌入式系统时取代VxWorks。与此同时,又把在VxWorks基础上形成了原有工作成果全部移植到的ReWorks。兼容于VxWorks的嵌入式实时操作系统适用于多种目标硬件环境:x86、xScale、PPC、ARM9等。适应不同系统规模:最小配置小于100K。ReWorks/ReDe实时系统开发与运行平台,包含:集设计/开发/调试/仿真于一体的开发环境,以及实时中间件。图3是ReWorks技术架构。
图3 ReWorks技术架构
新近在国内迅速崛起的翼辉公司开发的原创大型硬实时操作系统SylixOS,为摆脱国内一些关键性设备对国外嵌入式操作系统的依赖做出了贡献;也为国内的嵌入式设备的发展,提了供一个全新的选择。SylixOS支持对称多处理器平台SMP调度,依据工信部评估报告其内核自主化率达到100%,拥有完全自主可控的技术能力。
SylixOS具有实时进程及动态加载机制,满足多个开发人员进行分布式软件开发需求,并支持这些应用软件在操作系统上的集成;支持ARM、MIPS、PowerPC、x86、SPARC、DSP、RISC-V、C-SKY等架构处理器,支持主流国产通用处理器(如飞腾全系列、龙芯全系列、中天微CK810、兆芯全系列等),便于用户在升级硬件平台时进行应用程序的移植,减少移植的工作量;SylixOS 可配合专用的集成开发环境RealEvo-IDE及硬件模拟器RealEvo-Simulator,便于系统开发与调试,加快软件研发速度,缩短产品研制周期;针对不同的处理器提供优化的驱动程序,提高系统整体性能。SylixOS符合IEEE、ISO、IEC相关操作系统编程接口规范,用户已有应用程序可方便的迁移到SylixOS上。
SylixOS是一款开源操作系统,为了保证SylixOS能够持续开发,并且吸引大批开发人员参与测试,目前是以公开源代码项目的形式存在。
5
工业互联网使用的
实时操作系统
嵌入式系统、实时操作系统和物联网之间是强相关的,因为实时操作系统解决方案是消费类产品以及工业物联网(IIoT)的资产设备、系统和流程构建嵌入式系统的一个基础组成。由此可知,嵌入式实时操作系统是跨各个行业(包括工业设备、汽车、医疗保健、电信、政府解决方案等)部署任务关键型、超可靠的工业物联网应用的核心因素。在工业自动化过程和诸如智能机器和机器人等制造装置和设备方面,尤其如此。全球市场洞察(Global Market Insights)于2019年9月发布的一份报告指出,物联网应用中实时操作系统(RTOS)的日益普及是该行业预期增长的驱动因素之一。更具体地说,2019年市场价值已经超过120亿美元。该研究公司预计,2019年至2025年期间的年增长率将超过6%。Global Market Insights的分析师也证实,先进的实时操作系统选项允许开发者在不影响性能或安全性的情况下,构建更小的物联网设备。
在物联网设备出现之前实时操作系统早已存在,因此早在2016年就开始了为物联网应用的实时操作系统的可行性研究时,出现过一些常见的设想,例如物联网电子产品不需要实时操作框架,或者也可以采用轮询循环架构也能满足要求。但很快就从这些陷阱中走了出来,已经有许多公司为物联网设备提供实时操作系统,还有一些团队通过协作改进现存的实时操作系统。
例如,Linux基金会正在托管的Zephyr项目,为物联网工具构建一个实时操作系统;它是一个开源的、社区驱动的、专注于创新的努力。此外,风河公司还有一款名为VxWorks的产品,这是另一款物联网实时操作系统。还有IntervalZero是另一家为物联网设计提供实时操作框架的提供商。亚马逊拥有一个实时操作系统品牌,亚马逊FreeRTOS。微软还在2019年收购了Express Logic公司,它们开发了一个工业级的ThreadX实时操作系统。之后又发展成为Azure RTOS嵌入式开发套件,包括Azure RTOS ThreadX,FileX,GUIX Studio and GUIX,TraceX,NetX,NetX Duo,USBX。这是一个小型但功能强大的操作系统,为资源有限的设备提供可靠、超快的性能。它易于使用并经过市场验证,已在全球超过100亿台设备上部署。Azure RTOS支持最流行的32位微控制器和嵌入式开发工具。Azure RTOS取得IEC61508 SIL4的功能安全认证,已应用于航空电子、医疗设备、交通运输和工业控制设备等领域的安全关键产品。华为的LightOS也是一款很不错的物联网实时操作系统(见图4),LightOS也可用于5G网络,这张图中没有出现5G,是因为图画的较早。
图4 华为的物联网实时操作系统LightOS
随着人们开始对实时操作系统如何让物联网变得更强大感兴趣,以新的方式收集或使用数据的机会就出现了。这一结果有利于整个物联网行业,而不仅仅是使用实时操作系统的机器设备。在选择为物联网设备提供实时操作系统的公司时,可能更希望了解哪些实时操作系统可以提高其在开发物联网设计中的性能,因为物联网实时操作系统在联网设备的功能和系统的功能方面发挥着重要作用。其中必须优先考虑的是信息安全和功能安全问题。
例如2019年7月风河宣布了与VxWorks实时操作系统相关的11个漏洞,尽管它们发布了一个补丁来修复,但令人不安的事实是在发现漏洞时大约已经有2亿台设备正在运行这个有缺陷的操作系统版本。另外,微机电系统MEMS是几乎所有垂直行业的各种嵌入式设备、系统、解决方案和应用中的关键部件。它是一种组合了机械和电气元件的微小型集成设备或系统。它由一个处理数据的中央单元(微处理器)和几个与周围环境相互作用的部件(如微传感器)构成。MEMS通过其在微观尺度上感知、控制和驱动的能力,以及在宏观尺度上产生影响的能力,为运用物联网的企业提供了利益。适合于MEMS用用的实时操作系统也应该是一个考虑因素。
应该为随着人们开始对实时操作系统如何让物联网变得更强大感兴趣,以新的方式收集或使用数据的机会就出现了。这一结果有利于整个物联网行业,而不仅仅是使用实时操作系统的机器设备。在选择为物联网设备提供实时操作系统的公司时,可能更希望了解哪些实时操作系统可以提高其在开发物联网设计中的性能,因为物联网实时操作系统在联网设备的功能和系统的功能方面发挥着重要作用。其中必须优先考虑的是信息安全和功能安全问题。例如2019年7月风河宣布了与VxWorks实时操作系统相关的11个漏洞,尽管它们发布了一个补丁来修复,但令人不安的事实是在发现漏洞时大约已经有2亿台设备正在运行这个有缺陷的操作系统版本。另外,微机电系统MEMS是几乎所有垂直行业的各种嵌入式设备、系统、解决方案和应用中的关键部件。
6
实时操作系统的安全性问题
实时操作系统作为一种基础性软件,也应该符合一定的软件安全保障。软件安全认证有多种标准。信息安全的标准:信息技术安全评估的公共标准是为安全性能、安全保证和安全评估制定的国际标准ISO/IEC15408。这是已被美国政府、加拿大和其他23个国家所认同的国际标准。它将evaluation Assurance Level(EAL)分成7个等级。目前已评定的操作系统的最高等级是EAL6+(美国Green Hills公司的Integrity-178B实时操作系统)。功能安全的标准:工业软件功能安全标准IEC61508-3,将安全完整性等级SIL分成4个等级(见表1)。据笔者了解目前已评定的操作系统的最高等级是SIL3 (美国Integrity、VxWorks,加拿大QNX等)。因为SIL3被认为是单个可编程系统中风险降低的最高等级。微软号称其Azure RTOS取得IEC61508 SIL 4的功能安全认证,但未指出是哪个机构认证的。
目前许多实时操作系统采用了分区技术,该技术将不同的软件部分放在受保护的地址空间,因此程序某个部分出错或受侵害时不会影响到整个系统。Green Hills Software公司的INTEGRITY实时操作系统采用分离型内核概念已经有10年。图5所示是INTEGRITY实时操作系统的分区概念。其集成开发环境见图6,包括Green Hills的优化编译器、先进的分析工具和目标连接。
图5 INTEGRITY实时操作系统的分区概念
图6 Green Hills Software公司的集成开发环境
分区型内核架构是是目前人们认可的设计软件的唯一正确方法。它可用在:①需要保证CPU时间和内存的许多应用场合;②以简单的方式安全连接任何设备。同样采用分区技术的操作系统有分为:单内核分区技术和多内核分区技术。
开源嵌入式操作系统的安全性问题。由于μCOSⅡ是开源的实时操作系统,所以国内用的非常多。关于μCOSⅡ的安全认证找不到任何材料,所以无法从总体上进行评论。惟一可行的方法是谁在嵌入式系统中按自己的需求采用了经过裁剪的μCOSⅡ,在需要进行SIL等级认证时,就可以按IEC61508-3的V&V方法先自行评估,再找有资质的第三方进行V&V认证。