1.先到先服务:到达的时间先后

2.最短作业优先:按执行时间,越短的越先执行。可以证明,如果任务都是同一时间来的,那么这个算法的平均周转时间最小。因为第一个执行的任务在平均值里面的权重最大。

3.最短剩余时间:抢占式的算法,按照剩余时间

4.时间片轮转:每一个进程都运行一个时间片,然后让给下一个进程。时间片设置过长,可能会导致周转时间变长,比如都是短时间任务,可能只用了一个时间片中很小的一部分。如果时间片过短,那么会有频繁的进程上下文切换,导致cpu利用率下降。

5.优先级队列:按优先级分出多个队列,在最高级的队列中,按照时间片轮转执行所有的进程,直到最高队列的进程全部执行完,再按同样的方法执行次高级的队列,依次类推。

6.多级队列:最高级队列中的进程都运行一个时间片,然后把没有执行完的进程放入到次高级的队列中,次高级队列中的进程都运行两个时间片,没运行完的进入第三级队列,第三级的进程每一个运行四个时间片,以此类推。

7.彩票:模型为,系统每一次的调度决策都要发出一堆彩票,中奖的进程可以执行一定的时间。可以加入优先级,优先级越高的进程,可以拿到的彩票越多,中奖几率越大。


实时系统的调度:

在静态优先级系统中,RM算法是最优的,这个在一篇国外很经典的paper中有阐明,周期越短的进程优先级越高。证明使用的是交换法。

在动态优先级系统中,EDF是最优的,也就是说deadline越早有,优先级越高。