RTOS和GPOS的区别
相似的功能
- 多任务级别
- 软件和硬件资源管理
- 为应用提供基本的OS服务
- 从软件应用抽象硬件
RTOS分离出的功能
- 更好的上下文可靠性
- 满足应用需要的剪裁能力
- 更快
- 减少内存需求
- 为实时嵌入式系统提供可剪裁的调度策略
- 支持无盘化嵌入式系统,允许从ROM或RAM上引导和运行
- 对不同硬件平台具有更好的移植性
实时操作系统(RTOS)
RTOS的特征
- 可靠性
- 可预测性、确定性
- 性能
- 可压缩性
- 可扩展性
RTOS的核心组成是任务。其中并不像常见操作系统一样有主循环,而是根据任务的优先级调度任务,其使用调度器来维护各个任务的状态与任务调度。
实时系统
实时系统是指计算的正确性不仅依赖程序逻辑,也依赖结果产生的时间。如果在不正确的时间得到结果,那么也是错误的。
实时系统的度量:
- 确定性:如果一个系统始终会为某个已知输入产生相同输出,则系统是确定性的。非确定性系统的输出具有随机变化的特征
- 截止时限:指明任务计算何时必须结束
- 服务质量(QoS):网络的整体性能,包括带宽、吞吐量、可用性、抖动、延迟和错误率等
- 到达时刻:任务实例所属任务的起始时刻
- 释放时刻:任务实例被置为就绪态的时刻
实时性分类:
- 硬实时:任务有严格截止时间,超过了就是系统失败。例如飞机传感器、自动驾驶系统等
- 软实时:如果错过了某个截止时间不会认为任务系统失败,但系统可能会降低服务质量来提高响应能力。例如音视频娱乐传输等
- 准实时:错过了截止时间的信息和计算会被丢弃,不会认为任务系统失败,但系统可能会降低服务质量。例如财务预测系统、机器人装配线等
任务的分类:
- 周期任务:一定周期达到就请求运行。每次请求称为任务的一个任务实例。
- 偶发任务:到达时刻不是严格周期到达,但相邻任务实例的到达时刻一定有一个最小间隔。因此常被当做周期任务处理。
- 非周期任务:随机到达系统的任务。
进程的执行时间Ti一般指无抢占下的执行时间,有秒、时钟周期等单位。会考虑最差和最好情况。执行时间由以下来源产生:
- 数据依赖(IO)
- 内存系统
- CPU流水线
CPU利用率:CPU进行有用工作的时间比例,一般不考虑调度开销
进程调度
进程的三个状态:执行态、就绪态、等待态
嵌入式调度和一般调度的区别:
- 一般调度会保证每个进程被执行的公平性
- 嵌入式调度需要完成所有限时,低优先级的任务可能会长时间等待。
操作系统需要维护进程优先级、调度状态、进程上下文记录,在系统启动前或执行中创建新的进程。
当下调度策略的考量:
- 抢占 vs 非抢占
- 周期性 vs 非周期性任务
- 固定优先级 vs 动态优先级
- 优先级反转问题
- 其他调度问题
调度策略的度量:
- 满足所有时限的能力
- CPU利用率
- 调度开销
- 延迟
- 完成总时间
抢占式调度
每个线程都有优先级。在任何时间,可用的最高优先级线程会被调度。当任何线程的优先级或可用状态改变,内核可以分派新的线程执行。