前提
- 本文非原创,意外巧合在一个公开课的 ppt 里看到的,感觉内容有点像大学里老师讲的,就截屏下来,编辑成文档,温故一下以前学的内容;哪个公开课,,我真的忘记了。
1:先进先出(FIFO)
- 优点:
- 1:任务切换开销小
- 2:吞吐量大
- 3: 先来先做 公平性
- 缺点:
- 响应时间高
2: 最短耗时任务优先(Shortest Job First SJF)
- 优先调度耗时时间短的
- 优点
- 响应时间比较低
- 缺点
- 1:耗时时间长的任务一直在等,形成饥饿
- 2:频繁切换线程上下文,额外开销增大
- 适用场景
-
几乎所有场景
-
3:时间片轮转(RR)Round Robin
-
每个任务都分时间片,任务完成时间顺序是以耗时时间从小到大排列
-
优点
- 1:每个任务都公平调度
- 2:哪怕耗时短的任务,在耗时长的任务后面,也可以快速调度执行耗时短的任务
-
缺点
- 1:上下文切换开销大,尤其是 cpu 缓存
- 2: 时间片如何设置?(设置时间短了。调度开销大,设置时间过长,那最极端的的情况就是和 FIFO 一样)
-
适用场景:耗时差不多的任务
-
不适用场景:任务需要大量计算。如:对 IO 读写任务
4: 最大最小公平算法 (Max-Min Fairness)
- 就是为了保证公平性
5: Multi-level Feedback Queue (MFQ)
-
这个算法兼顾 响应时间 ,低调度开销,饥饿避免,公平;