最复杂的算法
多级反馈队列算法
(Multilevel Feedback Queue, MFQ)
多级反馈队列调度算法是一种CPU处理机调度算法,它 不必事先知道各种进程所需的执行时间,而且还可以满足各 种类型进程的需要,因而它是目前被公认的一种较好的进程 调度算法。 UNIX操作系统采取的便是这种调度算法。
给J2。 • 3、时刻2 J1进入Q2等待调度,J2获得CPU开始运行。
•7
5 多级反馈队列调度算法如何运作
• 4、时刻3 J3到达,由于J2的时间片未到,故J3在Q1等待调度, J1也在Q2等待调度。
• 5、时刻4 J2处理完成,由于J3,J1都在等待调度,但是J3所在的 队列比J1所在的队列的优先级要高,于是J3被调度,J1继续在 Q2等待。
• 6、时刻5 J3经过1个时间片,完成。 • 7、时刻6 由于Q1已经空闲,于是开始调度Q2中的作业,则J1得
到处理器开始运行。 J1再经过一个时间片,完成了任务。于是 整个调度过程结束。
•8
6
多级反馈队列调度算法C语言实现
•9
谢谢观看!
•10
•1
1 多级反馈队列调度算法的思想
设置多个就绪队列,并为各个队列赋予不同的优先级和不同 长度的时间片;第一个队列的优先级最高,进程所执行时间片最 小。 新创建的进程挂到第一优先级的队列后,然后按 FCFS 原则 排队等待调度。当轮到其执行时,如它能在时间片内完成,便撤 离系统;如果不能完成,便被挂入第二级队列后,……; 仅当第 一级队列空闲时,调度程序才调度第二级队列中的进程运行,依
的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列, 只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时 才会去调度Q3。 3、对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队 列的时间片为N,那么Q1中的作业在经历了N个时间片后若还没有完 成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一 直进入下一级队列,直至完成。