一、概述
实时系统不仅要求计算结果正确,而且要求结果必须在一个特定的截止期限内产生,否则即使正确也没有意义。比如一些嵌入式系统,安全关键系统。
实时计算有两种类型:硬实时系统和软实时系统。硬实时系统有最严格的要求,保证关键实时任务在最后期限内完成。软实时系统限制较少,仅仅指关键实时任务将获得优先于其他任务的权利,并且会保留优先级直到完成。
二、系统特性
实时系统的典型特性:
1、目标单一
2、体积小
CPU、内存常常都很小,所以空间占用很小,通常用于家电设备和消费设备中。
3、批量生产成本低
常常是CPU、内存(或缓存)、存储器管理单元、USB都包含在单集成电路中
4、特定的时间要求
三、实时内核特性
实时内核的特性就是越简单越好,摒弃许多通用操作系统才有的功能。
就连虚拟内存,也要采用与实时系统不同的途径来实现:
1)CPU直接生成物理地址,优点是快,但需要程序员为程序指定物理位置
2)动态重定位寄存器,优点是可以轻松实现逻辑地址与物理地址的转换,缺点是缺少进程间的内存保护
3)采用通用操作操作系统的方法
四、实现实时操作系统
实现实时操作系统必须的特性:
1、基于优先级的抢占式调度算法
2、抢占式内核
非抢占式内核不允许在内核模式下运行的进程被抢占;内核模式的进程将一直运行,直到它退出内核模式,阻塞或自愿放弃对CPU的控制。相反,抢占式内核允许在内核模式下的任务被抢占。
有很多方法可以使内核成为可抢占。一种是在长期的系统调用中插入抢占点,到了这个点就检查有无高优先级进程需要运行,有的话就上下文切换。等高优先级进程终止,原先被中断的进程继续运行。
另一种就是内核被抢占后,内核数据有保护机制,免于被修改,则内核即使被抢占也没事。
3、延迟最小化
有两个延迟影响实时系统的性能:
1)中断延迟
2)调度延迟
必须将它们最小化。
影响中断延迟的一个关键因素是,当内核的数据结构正在更新时,屏蔽中断的时间。实时操作系统要求中断只能被屏蔽很短的时间。
而应对调度延迟的最佳方法是抢占式内核。
4、网络支持(可选)
五、实时CPU调度
软实时系统调度不能保证一个关键进程被调度,只能保证相对非关键的进程可以获得优先权。硬实时系统有更严格的要求:一项任务必须在期限内处理,否则如同根本没有服务一样。
硬实时系统中,进程具有周期性,即以固定的间隔(周期)请求CPU。每个周期性进程有一个固定的处理时间让CPU处理、一个截止期限和一个周期。调度程序要么接纳该进程,保证按时完成,否则拒绝。
其中,0 <= 处理时间 <= 截止期限 <= 请求周期。含义为,在下一个请求周期发起前,一定要处理完(截止期限),而这个过程中,可以有多次CPU处理。
1、单调速率调度
使用静态抢占式优先策略调度周期性任务。
系统中运行的进程被分配一个与周期长短相反的优先级。周期短,优先级高,否则就低。并且该进程每次获得CPU的运行持续时间都相同。高优先级发起周期请求时,可以抢占低优先级。不过,不管高低,它们都保证能在截止期限前被处理完成。
单调速率调度理论山是最理想的算法,但要综合考虑截止期限和请求周期,但有时会出现进程无法被调度。
2、最早截止期限优先调度算法(EDF)
根据截止期限动态分配优先级。截止期限越早,优先级越高;否则越低。在这个算法里面,进程的优先级可能会经常被调整。比如说,本来进程A的优先级比进程B高,当它发起周期请求时,进程B正在处理,但由于这时B的截止期限比A的短,于是B的优先级反而更高,B继续处理剩余部分。
理论上,EDF算法能让CPU使用率100%,但由于进程间上下文切换和中断处理的占用,不可能达到这个值。
3、按比例分享调度
将所有应用程序分为若干份执行,调度程序只接纳请求份额低于当前可用份额的申请。
4、Pthread调度
POSIX(Portable Operating System Interface,可移植操作系统接口) Pthread API。