您何时需要实时操作系统?
扩展实时操作系统以针对应用开发的需求
本文引用地址:https://www.eepw.com.cn/article/140324.htm尽管使用通用操作系统在确定性环境中有缺陷,但使用它们还是有一些优点的。这些优点就包括支持广泛使用的API,以Linux为例,其开源的模型。开源使得开发人员能够根据应用需求来定义操作系统的组件,在解决问题时也能节省大量的时间。实时操作系统厂商不能不重视这点。所以对POSIX API(Linux以及各种类Unix系统使用的相同的API)的支持就是重要的第一步。因此要提供文档清晰的源代码和定制工具使得能够满足嵌入式开发人员的需求和设计挑战。
实时操作系统的架构也发挥了重要作用。例如,与使用其他系统架构相比,基于微内核设计的实时操作系统能从根本上简化操作系统的定制过程。在微内核实时操作系统中,只有少数核心基本对象(如信号、计时器、调度程序)才会存在于内核中。所有其他组件——设备驱动程序、文件系统、协议栈、用户应用程序,都会作为单独、内存受保护的进程在内核外部运行(参见图 5)。因此,开发定制的驱动程序和应用程序特定的操作系统扩展组件不需要专门的内核调试工具或内核专家。实际上,作为用户空间程序,开发这种操作系统扩展组件和开发标准应用程序一样容易,因为开发人员都能使用标准、源代码级工具和技术对它们进行调试。
例如,如果设备驱动程序试图访问其进程空间之外的内存,操作系统就能识别相关进程,指出故障位置并创建可使用源代码级调试工具查看的进程转储文件。转储文件可包括调试程序确定导致故障的源代码行所需的所有信息以及诊断信息(如数据项的内容和函数调用的历史)。
这种架构还提供了绝佳的故障隔离和恢复功能:如果驱动程序、协议栈或其他系统服务出现故障,它可在不影响其他服务或或损坏操作系统内核的情况下完成这种操作。实际上,“软件监视程序”会持续监测此类事件,并能以动态方式重启出现故障的服务,无需重启整个系统或以任何方式干扰用户。同样,驱动程序和其他服务都能以动态方式停止、启动或升级,无需关闭系统。

图 5. 在微内核实时操作系统中,系统服务作为标准的用户空间进程运行,
因而简化了操作系统的定制任务。
绝不可小看这些优势——因为破坏实时性能的最大威胁就是不定期的系统重启!甚至软件更新中包含的以可控制的方式进行的预定重启都会干扰系统运行。为保证一直满足最后期限的要求,软件开发人员必须使用即使在出现软件故障或进行服务升级时,也能保持连续可用的操作系统。
战略决策
实时操作系统能使复杂的应用程序变得可预测而且可靠;实际上,实时操作系统实现的精确时间控制,就是通用操作系统无法提供的可靠功能。(如果基于通用操作系统的系统由于计时错误而无法正常运行,我们可以合理认为该系统不可靠。)选择正确的实时操作系统本身仍然是一项复杂的任务。实时操作系统的底层架构是重要标准,而其他因素也不例外。具体包括:
- 调度算法的灵活选择——实时操作系统支持调度算法选择(先入先出 [FIFO] 调度、循环调度、偶发调度等)吗?开发人员能根据每个线程分配这些算法吗?或者实时操作系统要求他针对系统中的所有线程分配一种算法吗?
- 时间分区——实时操作系统支持能为进程提供有保证的 CPU 周期预算的时间分区吗?这种保证简化了对多个开发团队或供应商的子系统进行集成的工作。它们还能确保关键任务在系统遭到拒绝服务 (DoS) 攻击和其他恶意攻击时,保持可用并满足其最后期限的要求。
- 支持多核处理器——向多核处理器迁移的功能已成为各种高性能设计的基本要求。实时操作系统是否支持多重处理模式(对称多重处理、不对称多重处理、混合多重处理)的选择,并帮助开发人员最大限度地利用多核硬件?允许开发人员诊断和优化多核系统性能的系统跟踪工具支持实时操作系统吗?如果没有能显示资源竞争、线程的过度迁移和其他多核设计常见问题的工具,那么对多核系统进行优化就会变得异常麻烦和费时。
- 远程诊断工具——由于许多嵌入式系统都不允许有故障时间,因此实时操作系统的供应商应提供能在不中断系统服务的情况下分析系统运行的诊断工具。寻找能提供运行分析工具(用于系统剖析、应用程序剖析和内存分析的)的供应商。
- 开放的开发平台——实时操作系统供应商能否提供基于开放平台(如 Eclipse)的开发环境,允许开发人员“插入”他们最喜欢的第三方工具以便进行建模、版本控制等工作?或者,开发环境是基于专有技术的吗?
- 图形用户界面——实时操作系统使用基元图形库吗?或者它提供了高级图形处理功能(如多层界面、基于 Flash 的人机界面、多目标显示、3D 加速渲染和真正的窗口系统)吗?开发人员能轻松地自定义图形用户界面的视觉效果吗?图形用户界面能同时显示和输入多种语言(中文、朝鲜语、日语、英语、俄语等)吗?2D(如 Flash)和 3D(如 OpenGL ES)应用程序能轻松共享同一屏幕吗?
- 标准应用程序接口——实时操作系统限制开发人员使用专有应用程序接口吗?或者它提供了对标准应用程序接口(如 POSIX 和 OpenGL ES)的认证支持,使各种运行环境之间的代码移植变得更容易?实时操作系统还提供对应用程序接口的综合支持吗?还是只支持一小部分已定义接口的子集?
- 源代码——实时操作系统供应商允许开发人员轻松访问源代码以简化调试过程,并帮助他们根据项目的具体需求定制实时操作系统服务吗?
- 面向数字媒体的中间件——对数字媒体的灵活支持已成为各种嵌入式系统(如车载收音机、医疗设备、工业控制系统、媒体服务器以及消费电子产品)的设计要求。系统可能需要处理多种媒体资源(如 USB 闪存、MP3 播放器、网络流媒体、蓝牙电话等),分辨多种数据格式(如 MP3、WMA、AAC、MPEG-2、MPEG-4 等)并支持各种数字版权管理 (DRM) 方案。通过为数字媒体提供设计精密的中间件,实时操作系统供应商能避免连接多媒体资源、组织数据以及初始化适当的数据处理路径所需的大量软件工作。另外,设计完善的中间件解决方案还能灵活支持新的数据源(如下一代 iPod),无需修改用户界面或其他软件组件。
选择实时操作系统是项目团队的战略性决策。如果实时系统供应商针对以上问题给出了清楚的答案,那么您离现在和将来选择到完全适用的实时操作系统又近了一步。
[1] Michael Barr“优先级反转简介”《嵌入式系统编程》(Embedded Systems Programming),第 15 卷:2002 年 4 月第 4 版。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论