进程切换
若一个时间片尚未用完, 正在运行的进程便已完成, 则立即激活调度程序, 将其从执行队列中删除, 在调度就绪队列的队首进程运行, 并启动一个新的时间片.
在一个时间片用完时, 计时中断处理程序被激活, 如果进程尚未运行完毕, 则调度程序将它送往就绪队列末尾, 并调度就绪队列的队首进程运行, 并启动新时间片.
注意:时间片选取过小, 则将频繁的执行进程调度和进程长下文切换, 增加系统开销; 时间片选取过长, 则RR算法退化为FCFS算法, 无法满足短作业和交互式用户需求. 时间片应选取略大于依次典型的交互所需要的时间, 是大多数进程在一个时间片内完成.
多级反馈队列调度算法(multileved feedback queue):
设置多个就绪队列, 并为每个队列赋予不同的优先级, 优先级越高的队列其时间片越小.优先级最高的队列最先进入待调度的队列
队列之间采用FCFS调度算法.只有高优先级队列中的全部进程完成时才调度下一队列
队列内的进程按照轮转算法调度.新进程进入内存后首先进入优先级最高的队列
在低优先级队列运行时, 若有新进程到达, 那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式)。
实时系统中的进程调度算法
实时系统是指系统能及时响应外部事件的请求并及时处理这些请求.基于这一特性, 实时系统在工业(武器)控制, 多媒体等系统中常见.
实时系统中通分为存在一个截止时间, 硬实时任务(HRT)要求在开始截止时间前必须执行, 在结束截止时间前必须结束. 软实时任务同上, 但并不严格.
在实时系统中有两类算法值得注意:最早截止时间优先算法(Earliest Deadline First)和最低松弛度优先算法(Least Laxity First).两类算法都可用抢占式和非抢占式调度, 但后者常用于抢占式调度.
在m个周期性的实时调度中, 每个实时任务的处理时间\(C_i\), 周期时间\(P_i\), 在但处理机的情况下, 需满足条件:$\sum_{i=1}^m\frac{C_i}{P_i} \(小于1; 多处理机条件下, 须满足条件\)\sum_{i=1}^m\frac{C_i}{P_i} $小于N, N为处理机数量.
最早截止时间优先算法(EDF)
该算法在实时系统中根据任务的截止时间确定其优先级.
非抢占式
抢占式
最低松弛度优先算法(LLF)
在该法中根据任务的紧急程度(松弛程度)赋予其优先级, 越紧急的任务优先级越高.
任务的松弛程度 = 必须完成时间 - 其本身运行时间 - 当前时间
系统的任务按照松弛度排成一个就绪队列, 松弛度低的任务排在队列前面, 即调度程序优先执行.
以上就是处理机调度的详细介绍的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《操作系统》频道 >>