时间:2017-08-17来源:系统城装机大师作者:zhijie
假设我们能收集到这些信息,可以有如下几种调度算法:
1.最短运行时间优先
2.最短剩余时间优先
3.综合已经运行时间和剩余时间来排序
但是在真实世界中,一般这个信息是无法预测的。即使是同一个进程,之前运行的情况对当前运行的进程也不一定有参考价值。比如cat程序,不同参数对运行时间影响很大。
Feedback
这个是基于Prediction来优化的。如果说Prediction是需要预测将来进程还需要多少资源的话,Feedback算法就是基于已经消耗了的资源来判断优先级。
一般来说,也就是运行时间越长,优先级越低的调度算法。
Unix调度算法
老版调度算法
这是2.6版本之前的调度算法,该算法采用优化的RR算法,每个进程的优先级算法如下:
p(i) = base(i)+nice(i)+cpu(i)
其中base和nice值都是静态固定的,可以由用户指定的。
cpu是随着进程占用CPU时间越长权重就越低的调整因子,该因子调整逻辑如下:
cpu(i) = cpu(i-1)/2
也就是每次进程被选中调度一遍之后,下次对应的cpu因子的值都会被除以2,降低下次运行的权重。
新版调度算法
内核2.6版本之后重写了调度算法。也叫O(1)算法。
该算法针对普通进程,设置了100~139共40个优先级,进程属于哪个优先级的计算跟老版调度算法类似。系统再存储了一个位图,每个位图代表一个优先级是否有等待的进程。然后每次都选择优先级最高的且有进程的那个队列选取第一个进程来运行。
SMP的调度
对于多处理器的处理,跟上面的调度算法类似,只是在选择出进程之后,需要再判断一下给哪个CPU合适。
一般来说,考虑到CPU的本地cache,所以尽量将进程调度到之前运行的CPU上运行。当然,考虑到CPU本身的均衡性,所以肯定还是会有迁移的工作。
2023-02-28
解决linux不识别nfst格式u盘问题技巧 linux无法识别ntfs格式U盘怎么办?2023-02-28
linux扩容swap分区的技巧 linux怎么调整swap大小?2023-02-26
微软Linux资源库首次加入Edge浏览器稳定版当linux在运作时不能直接关闭电源容易将档案系统损毁,因此需要用shutdown以安全的方式关闭,那么这个操作该怎么实现呢?下面就为大家带来了详细教程。...
2022-11-07
由于linux系统和我们常用的windows系统是不一样的,所以如果是初学者,可能会不知道linux怎么强制删除文件,其实我们只要打开终端,使用命令就可以删除了。...
2022-11-03