进程排队的本质就是确定优先级
优先级是什么?得到某种资源的先后顺序。
为什么要有优先级这个概念?本质上是因为资源不足。
ps -l查看进程更详细的属性。
优先级本质上是PCB中的一个int字段,数值越小,优先级越高,Linux这个数值范围是60~99,默认进程的优先级都是80。PRI表示优先级
Linux支持动态优先级调整,但不能直接修改PRI,要修改NI(nice值)间接修改PRI。
一、如何修改nice值?
nice值是优先级的修正数据
PRI(新) = PRI(旧)+ NI
这是在我们把优先级调低的情况下,如果输入的nice值为负,调高优先级,进程会deny禁止
使用sudo命令才可以修改
sudo top
在前面的基础上修改nice值为-10,得到的PRI是80还是70?
由于优先级最低是60,最高是99
所以调整nice值最低是-20,若低于-20,统一当成-20;最高是19。
修改优先级四个方法:
1.使用top修改优先级。
2.使用nice命令在进程启动时加入选项修改nice值。
3.使用renice命令,和top一样在进程已经启动后修改nice值。
4.使用系统调用setpriority设置优先级。
二、为什么要把优先级限定在一定范围内?
OS调度的时候要较为公平,较为均衡地调度每一个进程。
如果优先级范围过大,容易导致优先级低的进程长时间得不到CPU资源,造成进程饥饿问题。