在Linux系统中,nice
值和静态优先级用于控制进程调度的优先级,但它们的范围和含义有所不同。让我们详细解释一下两者的区别和联系。
1. Nice值
- 范围:
nice
值的范围是从 -20 到 19。-20
:最高优先级。19
:最低优先级。
- 作用:
nice
值用于调整进程的相对优先级。nice
值越低,进程的优先级越高,调度程序会更频繁地调度该进程。 - 修改方式:可以通过命令行工具如
nice
和renice
来修改进程的nice
值。
2. 静态优先级
- 范围:静态优先级的范围是从 0 到 139。
0
到99
:实时进程的优先级。100
到139
:普通进程的优先级(由nice
值确定)。
- 关系:普通进程的静态优先级是由
nice
值计算得来的。计算公式是:
因此:静态优先级 = nice值 + 20 + 100
nice
值为 -20 的进程,静态优先级为-20 + 20 + 100 = 100
(最高优先级)。nice
值为 19 的进程,静态优先级为19 + 20 + 100 = 139
(最低优先级)。
区别与联系
- nice值:是一个用户友好的方式,用于设置和调整进程优先级。用户可以方便地通过调整
nice
值来影响进程的优先级。 - 静态优先级:是内核实际使用的优先级数值,用于调度程序决定进程的执行顺序。普通进程的静态优先级是由
nice
值换算而来的,范围在 100 到 139 之间。
示例
其中DEFAULT_PRIO的默认值为120,对应于Nice值为0。
NICE_TO_PRIO(nice) = nice + DEFAULT_PRIO
PRIO_TO_NICE(prio) = prio - DEFAULT_PRIO
- 一个进程的
nice
值为0
,它的静态优先级为:
-20 + 120 = 100
- 一个进程的
nice
值为-10
,它的静态优先级为:-10 + 120 = 110
总结一下,nice
值是用户设置的相对优先级,而静态优先级是内核使用的绝对优先级。普通进程的静态优先级是通过 nice
值计算得来的,用于确定进程的调度顺序。