实时调度
实时调度的基本条件
- 实时系统必须提供必要的调度信息
- 运行时间
- 到达之间
- 完成截止时间/开始截止时间
- 资源要求
- 优先级
- 实时系统的处理能力足够强(在有限的周期内,能够计算完成用户需要的任务)
- 计算机处理能力是一个周期内完成3个任务,但是分配了四个任务,一定完成不了
- 允许采用抢占式调度方式
- 具有快速的切换机制(为抢断提供条件)
- 对中断的快速响应
- 快速的任务分配能力
实时调度算法的分类
根据实时任务的性质
- 硬实时调度算法:所有任务确定时间内必须完成
- 软时间调度算法:大部分任务再确定时间内完成
按照调度方式
非抢占式调度算法(不允许剥夺正在执行的进程)
- 时间片转轮调度算法
- 响应时间:秒级
- 同分时操作系统,给所有的任务分配时间片,按时间片轮流执行
- 非抢占式优先权调度算法
- 响应时间:百毫秒级
- 为所有进程安排优先权,优先权高的先执行,允许后来的高优先权的程序插队,先执行
抢占式调度算法(允许剥夺正在执行的进程)
- 基于时钟中断的抢占的优先权调度算法
- 响应时间:几十毫秒级
- 每到时钟中断的时候,高优先级的程序可以剥夺正在占用CPU执行的程序的使用权。
- 相当于在非抢占式优先权中,允许进程在时钟中断的时候进行抢占
- 立即抢占优先权调度
- 响应时间:几毫秒或者几百微妙
- 一旦有优先级高于当前任务的任务出现,立即中断正在执行的任务,切换至当前优先级最高的任务
常见的调度算法——最早截止时间优先(EDF)
- 基本思想:截止时间越早,优先级越高
- 截止时间:开始截止时间和完成截止时间
- 调度方式:抢占式调度算法
- 例子
非抢占式
- 任务按照1,2,3,4的顺序到达,但是开始截止时间是按照1,3,4,2的顺序,所以真正执行的顺序是1,3,4,2
抢占式
- 任务到达的顺序是A,B,C,D,E,开始截止时间的顺序是B,C,E,D,A,再结合任务的执行时间发现在A执行完毕的情况,B一定超时,系统报错,所以允许B抢占A的执行资源。
常见的实时调度算法——最低松弛度优先(LLF)
- 基本思想:任务松弛度越低,优先级越高
- 任务松弛度:必须完成的时间 - 本身运行的时间 - 当前时间(简而言之,松弛时间就是允许在拖延的时间)
- 调度方式:抢占式调度算法
- 例子
注意:最低松弛度的计算时间点:任务开始截止时间和任务运行完成时间