持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
今天来学习另一种带算法的知识点——实时调度
在学习之前,先来了解一下实时系统的一些例子:实验控制、过程控制设备、机器人、空中交通管制、远程通信、军事指挥与控制系统,下一代系统还包括自动驾驶汽车、具有弹性关节的机器人控制器、智能化生产中的系统查找、空间站和海底勘探
以上每种实时系统都有若干个实时进程,来反应或控制某个外部事件,他们往往带有某种程度的紧迫性,需要实时系统的调度有特殊处理,所以要引入实时调度
实现实时调度的基本条件
-
提供必要的信息
- 开始/完成截止时间
- 就绪时间
- 处理时间
- 资源要求
- 优先级
-
采用抢占式调度机制(硬实时系统)
-
具有快速切换机制
- 对外部中断的快速响应能力(要求快速硬件中断机构、允许中断的间隔短)
- 快速的任务分派能力(系统中每个运行功能单位尽量的小)
-
系统处理能力强
- 假定系统中有m个周期性的硬实时任务,处理时间为Ci,周期时间为
Pi(1<=i<=m),单处理机下必须满足Σ(i=1)Ci/Pi<=1
- 假定系统中有m个周期性的硬实时任务,处理时间为Ci,周期时间为
那么这里我们就要思考了,怎么提高实时系统处理能力呢?
答案就是为多处理机(N个)时,限制条件变为
实时调度算法的分类
- 根据实时任务性质不同可分为硬实时调度和软实时调度
- 根据调度方式不同可分为非抢占调度和抢占调度算法
- 根据调度时间不同可分为静态和动态调度算法
- 在多处理机情况下可分为集中式和分布式调度算法
那我们深入研究一下第二类
非抢占式调度算法
又可以分为
1.非抢占式轮转调度算法
- 响应时间在几秒到数十秒之间
- 应用于不太严格的实时控制系统,比如工业生产的群控系统
2.非抢占式优先调度算法
- 当实时任务到达,放在就绪队列队首,等待当前任务的自我终止或运行完成
- 响应时间为数百毫秒,适用于较为严格的实时控制系统
抢占式调度算法
又可以分为
1. 基于时钟中断的抢占式优先权调度算法
- 当优先级高于当前任务的实时任务到达,则等到下一个时钟中断,抢占当前任务的处理机
- 响应时间为几到数十毫秒之间,应用于较严格的实时系统
2. 立即抢占的优先权调度算法
- 一旦出现请求中断的紧急任务,只要当前任务未在临界区,立即抢占他的CPU
- 响应时间为100微秒到几毫秒之间
- 系统必须具有快速响应外部中断的能力
最早截止优先算法EDF
- 根据任务的开始截止时间来确定任务的优先级
- 可用于抢占式调度和非抢占式调度
最低松弛度优先算法LLF
他是根据任务的紧急(或松弛)程度确定任务的优先级(让我联想到高响应比优先调度算法)
松弛度=必须完成的时间-还需运行的时间-当前时间 注意:松弛度是动态变化的(跟之前的响应比一样),这种算法主要用于可抢占式调度方式
那么今天就认识这两个比较简单的算法就可以了,相比之前的作业调度算法我感觉难度不是很大,在每天进步一点点啦!