多级反馈队列

First, let’s take a look at the difference between concurrency and parallelism.
this is a word saying: concurrent is the fake parallel.
this sentence is reasonable in a way, but not that precise.

Multitread is based on concurrent
Only MultiCore can support can support parallel.

而多级反馈队列调度算法,就是concurrent实现的一种算法,就是利用多个prorityqueue来实现。
**多级反馈队列调度算法是一种根据先来先服务原则给就绪队列排序,为就绪队列赋予不同的优先级数,不同的时间片,按照优先级抢占CPU的调度算法。算法的实施过程如下:

按照先来先服务原则排序,设置N个就绪队列为Q1,Q2…QN,每个队列中都可以放很多作业;
为这N个就绪队列赋予不同的优先级,第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低;
设置每个就绪队列的时间片,优先权越高,算法赋予队列的时间片越小。时间片大小的设定按照实际作业(进程)的需要调整;
进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待。
首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列,只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时才会去调度Q3。
对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了时间片为N的时间后,若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成。
在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业即抢占式调度CPU。**

多级反馈队列的精妙之处在于:让每个队列不觉得自己是在等(实际上从开始处理到处理结束的时间还是延长了)
**多级反馈队列调度算法体现了计算思维的调度特点,应用了先来先服务原则、应用时间片等做法使得每个申请者都能及时使用资源,是一种很好的协调整体的解决方案。

——摘自计算思维百科**

posted @ 2020-04-28 04:13  EvanMeetTheWorld  阅读(55)  评论(0)    收藏  举报