什么是嵌入式实时操作系统
- 嵌入式
嵌入式可以理解为提供处理输入并给出输出的一类特定的服务或者功能的计算节点。其中:
- 它们具有特定的功能,不是泛泛实现一些功能。例如洗衣机、电视机、汽车制动系统,这些都是具有特定功能的。
- 通常地,嵌入式系统不会直接与客户端连接。这个很好理解,因为嵌入式是有特定功能的,而与客户端直接连接的产品,例如Windows操作系统,需要处理用户的输入输出,不能简单划归到嵌入式范畴里
- 一般作为大的系统里的子系统出现,例如飞机的飞行控制系统。
- 实时性
如果单纯地认为实时操作系统就是“快”,是很片面的。我们应该准确地说,这种“实时”其实是指在deadline之前(或者可控范围内)回应。没有deadline的系统,肯定不是实时系统。
拿我们熟悉的Windows操作系统举例,我们可以在听歌的同时看文档,也可以在下载资料的同时看视频,系统在读写的过程中是没有一个时间限的——文件在网速不给力的情况下我们可能下载好几个小时,视频都看完了想出去跑步了,这个文件还没下载完。所以说Windows操作系统不是实时系统(这种没有deadline限制的情况,我们又称为best effort,可以理解为尽力去做,但是也不一定能够完成hhh,如果你等的时间足够,视频就下载完了,如果关机了,那这个任务就没有完成)。然而,任务在实时系统上执行的时候,完全不一样。比如汽车制动系统,如果紧急刹车的时候,没有一个时间限,不能在多少毫秒内完成,那么驾驶员就会有生命危险,同样的情况也适用于航空航天等等生产生活产品中。
根据这个时间限的要求,又可以分为硬实时(Hard Real-Time)和软实时(Soft Real-Time)。硬实时,就是deadline就在那里,任务必须在deadline之前完成,一旦超时,这样的系统就是fail的。像火箭发射或者对安全要求极高的系统里,只许成功,不能失败,硬实时显得尤为重要。软实时,是要求在一定概率下能够在deadline内完成。比如100次里有99次能够成功,这个系统就可以用,比如投影仪之类的图像处理工具,有一两帧的误差都是可以接受的。
嵌入式实时操作系统的挑战
- 在deadline内给出正确的结果
- 多任务的并发性处理。
比如拥有多个传感器的系统,对多个数据的采集、处理、响应需要作出合理地处理 - 同上,单个任务对多个不同接口地处理
- CPU,HW coprocessor (例如FPGA, MPEG decoder),或者Software coprocessing (例如DSP, GP-GPU)这些资源地引入
- 内存、I/O 以及CPU资源的统筹
- 网络延时会影响实时性
- 内存管理,register, cache, RAM, Flash