1、优先级的几个问题
1.1 什么是优先级
优先级规定了占用资源的先后顺序,进程的优先级越高则可越早获得系统资源
1.2 为什么要有优先级
资源相较于申请者少,类似于僧多粥少的情形,此时需按照优先级将申请者排序,从而有序地分配资源
1.3 Linux中如何查看进程的优先级
可通过 ps -al 指令查看进程的优先级,此处我提前运行了 myproc 可执行程序,故输入 ps -al 指令后显示有 myproc
其中
PID:此进程的代号
PPID:此进程的父进程的代号
PRI与NI在下面深入剖析
2、深入理解PRI值与NI
在Linux中的NI即nice值可改变PRI值,nice取值范围是 -20-19,进程的优先级PRI值等于初始PRI值加上NI值,即 PRI(最终)=PRI(起始)+NI ,对此我们有个疑问,通过 ps -al 指令查看到的进程优先级到底是最终的优先级呢还是起始值呢?
首先,由上图可知,NI值此时为0,则无论图片中的PRI是最终值还是起始值,我们都可以知道PRI起始值是80,即Linux给每个进程的初始优先级是80
下面我们进一步研究:使用 top 指令更改进程优先级
输入 [sudo] top -> 按 r -> 输入要改的进程PID -> 输入要改的nice值,[sudo]表示sudo是可选项
操作步骤及结果拼接成下图:
由上图我们可以总结出:
- 我们看到的PRI是最终值,而不是起始值,如【4.】中NI设为10时,PRI显示为90
- 提高优先级即减少NI值需 sudo提升top指令权限
- 每次更改NI修改的都是PRI初始值,并不从现在的PRI计算,如【4.】中PRI为90,更改NI为-20,得到的PRI却是【6.】中的60,即80-20=60
- 因为nice取值范围是 -20-19,故PRI(最终)取值范围是60-99