注意:MFQ 统一为抢占式
高优先级队列中有进程进入时,会抢占低优先级队列中进程的 CPU。被抢占的进程不降级,回到原级队列中,下次仍然执行该级队列的时间片。
MFQ 调度算法
MFQ 性能
保证调度算法
保证的是绝对运行时间,即启动后在某个时间段内必须获得多少运行时间。
例如 N 个进程平均分配时间。
公平分享调度算法
按照用户数量平均分配时间,而不是进程间平均分配。
例:公平分享调度算法
用户 1 有 4 个进程 ABCD
用户 2 有 1 个进程 E
- 时间片轮转法:
ABCDEABCDEABCDEABCDE……
- 所有用户获得相同的处理机时间:
AEBECEDEAEBECEDEAEBECEDE……
- 用户 1 获得的处理机时间是用户 2 的两倍:
ABECDEABECDEABECDEABECDE……
实时任务:任务的结束时间有严格约束(Deadline),即任务执行必须在 Deadline 之前完成;具有紧迫性。
前述算法不能很好地满足实时系统对调度的特殊要求,所以引入实时调度。
实时操作系统 RTOS Real-Time Operating System 对外部输入的信息,实时操作系统能够在规定的时间内处理完毕并做出反应正确性:不仅要求计算逻辑的正确,而且要求在规定的时间内得到该结果通常给定一个开始时间或者结束时间的最后期限;多用于工业、军事等控制领域或实时信息处理方面
硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标
软实时系统的时限是柔性灵活的,它可以容忍偶然的超时错误。失败后造成的后果并不严重,例如在网络中仅仅轻微地降低了系统的吞吐量
硬实时 HRT 与软实时 SRT之间最关键的差别在于:软实时只能提供统计意义上的实时。例如,有的应用要求系统在 95%的情况下都会确保在规定的时间内完成某个动作,而不一定要求 100%
优先级倒置: 即高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。
非抢占式调度算法
抢占式调度算法
优先级确定:根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。
实时任务就绪队列:按各任务截止时间的早晚排序;具有最早截止时间的任务排在队列的最前面。
调度顺序:总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。
适用范围:既可用于抢占式调度,也可用于非抢占式调度方式中。
$Laxity = Deadline - RemainingServiceTime - CurrentTime$
松弛度=完成截止时间–剩余运行时间–当前时间 (假设从现在执行任务, 完成的时间为 t1, 则松弛度为截止时间-t1)
该算法按松弛度排序实时任务的就绪队列,松弛度值最小的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。
该算法主要用于可抢占调度方式中。
抢占方式和时机
The Processor Scheduling