实时操作系统 (RTOS) 在工业控制、航空航天和电力系统中有大量应用。我自己接触实时操作系统已有几年时间,虽然实际的项目使用经验不多,然而耳濡目染还是积累了一些经验和知识。在这里整理和分享给大家。
实时操作系统(Real-time Operating System, RTOS)是针对有实时性要求的应用而设计的操作系统。所谓“实时性”,就是能否在确定时间内完成指定操作与响应。实时系统的应用通常包括汽车引擎控制、轨道交通、工业机器人、飞行器控制系统等。实时操作系统一般提供抢占式调度机制,重要的高优先级任务可以剥夺低优先级任务对CPU的使用权;同时,任务在等待使用资源时,RTOS可以将其CPU的使用权释放给其他就绪的任务,从而使得系统的总体响应速度更快。
1. 常见的RTOS
目前市场上常见的商用实时操作系统有:
- uCosII / uCosIII | Micrium
- FreeRTOS
- Nucleus RTOS | Mentor Graphics
- RTLinux (需要MMU支持)
- QNX (需要MMU支持)
- VxWorks | WindRiver
- eCos
- RTEMS
(国产的另有:RT-Thread和DJYOS.)
其中除了FreeRTOS, RTEMS和RTLinux是免费的之外,其余RTOS都是需要商业授权的。uCos II和FreeRTOS是平时接触比较多的RTOS,相关资料比较多。而VxWorks是安全性公认最佳的,用于航空航天、轨道交通和卫星的应用。如果系统中需要使用复杂的文件、数据库、网络等功能,那么以Linux为基础的RTLinux是比较好的选择;但是如果系统对实时性和确定性的要求非常高,那么可以使用较为简单的RTOS(如 uCosII),再根据需要开发通信协议或者软件包。总体上来说,操作系统的复杂性是与应用软件的复杂性一致的。同时,功能上更复杂的RTOS对硬件系统资源的需求也会更高。
2. RTOS的功能
一般的RTOS会提供以下全部或部分功能:
- 基于静态优先级(fixed-priority)的抢占式(preemptive)任务调度;
- 进程间通信(基于消息,消息邮箱,管道);
- 基于信号量(semaphore)的进程间同步;
- 任务的创建、暂停、删除;
- 资源访问控制(并发控制与防止互锁);
- 临界区(critical section)控制;
- 驱动程序的管理与接口;
- MMU内存管理、内存动态申请与分配;
- 其他功能:如GUI用户界面和TCP/IP相关功能。
3. 选用指标
一般来说,实时操作系统的主要参数指标有:
- 支持的优先级数量,如64、128或256;
- 使用的任务调度算法:时间片轮转调度,加权轮转调度(weighted round-robin),先入先出(FCFS),优先级调度;任务调度算法决定了任务响应时间的可分析性;
- 中断响应速度,即从中断产生到进入中断服务程序的时间;
- 上下文切换时间,即任务切换时间;
- 操作系统大小以及资源使用(footprint, ROM及RAM的占用);
- 授权费用与授权方式,是按产品型号计费、产品数量计费还是一次性授权。
其他的选择指标主要就是文档的完整程度,是否有GUI支持,团队对该OS的了解程度,所支持的CPU型号以及需求功能的规模,以及相应的技术支持。从更专业的角度上来说,还有是否支持防死锁(deadlock)和优先级反转(priority inversion)等提高系统可靠性的功能,操作系统自身服务程序占用的时间大小。对于时间关键性应用,操作系统需要具备相对确定的执行时间(deterministic execution time)。从调试的角度来说,操作系统是否具有调试功能(尤其是多线程、多核)以及支持的调试工具也是重要的指标。
4. 关于RTOS的误区
最后说一下关于实时操作系统的两个误区:
1、用了实时系统后,系统响应速度一定更快。不一定。因为实时操作系统本身引入了执行开销,所以对于小型应用来说,有RTOS的性能也许不如无操作系统的情况。实时操作系统的优势最能体现在中大型系统中,当任务间存在复杂的耦合和依赖关系,并且应用程序经常要长时间等待外部资源时。
2、用实时操作系统就可以保证实时性。不一定。相对来说,使用实时系统可以改善系统的实时性。但是实时操作系统只是作为工具存在的,如果需要提供实时性保障,还需要使用实时系统理论对任务的可调度性和响应时间进行分析,才可以得到科学、系统的响应性保障。
RTOS较好的实践包括减少不确定性API的使用(虚拟内存及分页),减少critical session的长度,以及提供实时系统调度专用的API等。
修订历史
- 2021-04-12 (v1.2): minor improvements.
- 2018-05-22 (v1.1): 修改了部分内容,为知乎专栏调整了版式
- 2015-08-17 (v1.0): 第一版,在云飞机器人实验室发表
>> 本文章版权归作者所有,如需转载请联系作者授权许可。
>> 原文来自: 云飞机器人实验室
>> 原文地址: RTOS | 实时操作系统杂谈
>> 关于我们: 关于云飞实验室
>> 支持我们: 帮助我们可持续发展